What I did in my FPS was create 6 bullet objects, then just loop through them when the gun is being fired.
I dug up this source code that should help you understand what I'm talking about. It should work with either DBC or DBPro.
sync on
sync rate 30
autocam off
Dim BulletActive(5)
Dim BulletPos(6)
gosub _LoadBullets:
`Note: The following variables are to make the code work properly in this example, as this code was
`Taken from an FPS that I am making
True=1:False=0
Player_Ammo1=500
WeaponSwitch=0:Mode=1
do
gosub _CheckBullet
gosub _HandleBullets
sync
loop
_LoadBullets:
for bul = 10 to 15
make object sphere bul,3
color object bul,RGB(50,50,50)
`CollisionTypePro(bul,Type_Bullet)
`SetObjRadiusPro(bul,3.0,3.0,3.0)
hide object bul
next bul
return
_CheckBullet:
bullet_time=bullet_time+1
if Bullet_Time=5
Bullet_Fire=true
Bullet_Time=0
else
Bullet_Fire=false
endif
if Bullet_Fire = False
Bullet_time=bullet_time+1
if Bullet_Time=5
Bullet_Fire=true
Bullet_Time=0
endif
endif
return
_HandleBullets:
rem Fires Bullets
if mouseclick()>0 and mode = 1 and Player_ammo1 > 0 and Bullet_Fire = true and weaponSwitch=0
inc Bullet_Num, 1
if Bullet_Num = 7 then Bullet_Num = 1
BulletActive(Bullet_Num-1)=1
Bullet_Current = (Bullet_Num - 1) + 10
Bullet_Move = True
show object bullet_current
position object Bullet_Current, camera position x(), camera position y(), camera position z()
set object to camera orientation Bullet_Current
bulletpos(Bullet_Num) = 0
dec Player_ammo1, 1
`play sound 1
endif
rem Moves Bullets
if Bullet_Move = true
for x = 10 to 15
if BulletActive(x-10)=1
move object x, 50
BulletPos(x-9)=BulletPos(x-9)+50
endif
if bulletPos(x-9)>=1200
hide object x
BulletActive(x-10)=0
BulletPos(x-9)=0
endif
next x
endif
return