Here is the collision code you wanted it also drops a bonus and the collision works. The problem was you were pasteing sprite 1. I have a rem statment that shows the error. Hope this help, let me know if you need other help.
Ves
Rem Project: 3dgame
Rem Created: 01.08.2003 02:27:19
Rem ***** Main Source File *****
Rem <Initialisation>
Set Display Mode 1024,768,32
Sync On
Sync Rate 100
randomize timer()
Rem <Global Variable Definitions>
Rem <Colors>
yellow = rgb(0,255,255)
green = rgb(0,255,0)
blue = rgb(0,0,255)
red = rgb(255,0,0)
Ammo = 10
MaxBulletsAllowed = 15 : `Max bullets allows at once
Rem <Game Startup sub callings>
gosub _NewGameDefinitions
gosub _LoadTheGraphics
gosub _LoadTheSounds
gosub _LoadTheLevel
gosub _CreateThePlayer
gosub _CreateTheEnemies
Rem <Main Game Loop>
Do
set text size 20
set cursor 20,20
print "Ammo:"
set cursor 80,20
print ammo
set cursor 140,20
print "Reload Time:"
set cursor 240,20
print reload
if cool > 0 then cool = cool - 1
if ammo < 0 then ammo = 0
if ammo = 0 and reload = 0 then reload = 300
if reload > 0 then reload = reload - 1
if reload = 0 and ammo = 0 then ammo = 10
gosub _ControlPlayerMovement
gosub _CheckCollisions
sync
Loop
Rem <Sub Routines>
_LoadTheGraphics:
Rem <Sprites>
sprite 1,PlayerPositionX,PlayerPositionY,1
sprite 2,EnemyPositionX,EnemyPositionY,2
clone sprite 2,100
Box 0,0,5,30,red,red,red,red
get image 3,0,0,5,30
RETURN
_LoadTheSounds:
RETURN
_LoadTheLevel:
EnemyPositionX = 100
EnemyPositionY = 100
RETURN
_CreateThePlayer:
Box 0,0,25,60,green,yellow,blue,red
get image 1,0,0,25,60
paste sprite 1,PlayerPositionX,PlayerPositionY
RETURN
_ControlPlayerMovement:
Rem <Keypress Checking>
uparrow = upkey()
downarrow = downkey()
leftarrow = leftkey()
rightarrow = rightkey()
space = spacekey()
strng = controlkey()
if downarrow = 1
PlayerPositionY = PlayerPositionY + PlayerSpeed
endif
if uparrow = 1
PlayerPositionY = PlayerPositionY - PlayerSpeed
endif
if leftarrow = 1
PlayerPositionX = PlayerPositionX - PlayerSpeed
endif
if rightarrow = 1
PlayerPositionX = PlayerPositionX + PlayerSpeed
endif
if space = 1 and Ammo > 0 and cool = 0 then goSub FireBullet: dec Ammo
`Move the bullets
goSub MoveBullets
sprite 1,PlayerPositionX,PlayerPositionY,1 :rem <------------------------<<<< This was your problem I remove paste sprite
RETURN
FireBullet:
cool = 50
`Now use a FOR loop to go throgh each "bullet slot" and find the first one which does not contain a sprite
for b = 1 to MaxBulletsAllowed
if sprite exist(b)=0 then gosub _CreateTheAmmunition : return
next b
return
MoveBullets:
` Move any bullet that exists - in this example bullets live forever
for b = 3 to MaxBulletsAllowed
if bonus = 1
move sprite 100,-0.2
if sprite collision(100,1) = 1 then bonus=0:hide sprite 100:inc ammo,5: rem <--------------------------<<< Bonus 5 ammo
endif
if sprite y(100) >768 and bonus=1 then hide sprite 100:bonus=0
if sprite exist(b)=1
move sprite b,2.0
rem collision for enemy number 2 <<<-----------------------------------------------------------<<<<<
if sprite collision(2,b) = 1
sprite 100,sprite x(b),sprite y(b),1
delete sprite b
delete sprite 2
sprite 2,rnd(800),rnd(300),2
show sprite 100
bonus = 1
exit
endif
if sprite y(b) < 0 then delete sprite b
endif
next b
return
_CreateTheEnemies:
Box 0,0,100,25,red,yellow,blue,green
get image 2,0,0,100,25
sprite 2,EnemyPositionX,EnemyPositionY,2
RETURN
_CreateTheBonuses:
If Bonus = 1
set sprite image 2,4
endif
RETURN
_CreateTheAmmunition:
sprite b,PlayerPositionX+10,PlayerPositionY-15,3
RETURN
_CheckCollisions:
If PlayerPositionX < 0 then PlayerPositionX = 0
If PlayerPositionX > 999 then PlayerPositionX = 999
If PlayerPositionY < 0 then PlayerPositionY = 0
If PlayerPositionY > 708 then PlayerPositionY = 708
RETURN
_NewGameDefinitions:
PlayerPositionX =462
PlayerPositionY =668
Score = 0
PlayerSpeed = 3
RETURN
Rem <Functions>