I started to create onther level to my game this morning, and after creating a few objects, I decided to try it out, I binded the up key to start level 2, and the downkey to start level 1. However, upon starting level 1, it gives me the error "object already exists" yet I cannot seem to find where in my code this error is originating. The objects I created for my second level, were from 300 to 316, I never used those numbers for any other objects, or did I? I don't know, but maybe somebody with a better eye for code can solve this mystery. Here is the code.
randomize timer()
set display mode 1024,768,16
sync on
sync rate 60
autocam off
Set camera range 1,10000
position mouse screen width()/2, screen height()/2
backdrop on
color backdrop rgb(0,0,0)
`ARRAYS!
dim selection(0)
dim player(0)
dim timeleft(0)
dim wavetime(0)
dim mover(120)
dim victorytimer(0)
`important variables
selection(0)=0
player(0)=1
timeleft(0)=2000
victorytimer(0)=1000
wavetime(0)=1000
rem the new mouse object to play with
make object cube 8000,10
position object 8000,100,0,100
set object collision to boxes 8000
color object 8000,RGB(128,128,0)
hide object 8000
`Camera positioning
position camera -100,100,-100
xrotate camera 90
position camera 100,300,0
`MAIN loop!!!!!!!!
do
set cursor 10,10: Print "Press Space bar to start level 1"
if downkey()=1
gosub level1
endif
if upkey()=1
gosub level2
endif
sync
loop
end
rem ============================
`Wave 1 subroutine (sends the first set of red object upwards at a constant pace)
wave:
for e=6 to 15
move object e,.1
next e
return
`Wave 2 subroutine (sends the second set of red objects upwards at a constant pace)
wave2:
for e=100 to 150
move object e,.1
next e
return
`!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
`Selection code, allows you to select objects,and move them around "IMPORTANT"!!!!
`!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
selection:
rem the new object selection code
rem -- here we move the user selection cube...
if object screen x(8000)=<mousex()
position object 8000,object position x(8000)+4,object position y(8000),object position z(8000)
endif
if object screen x(8000)=>mousex()
position object 8000,object position x(8000)-4,object position y(8000),object position z(8000)
endif
if object screen y(8000)=<mousey()
position object 8000,object position x(8000),object position y(8000),object position z(8000)-4
endif
if object screen y(8000)=>mousey()
position object 8000,object position x(8000),object position y(8000),object position z(8000)+4
endif
rem the select bit (replace with distance equation) Player 1
if player(0)=1
if mouseclick()=1
rem -- here we move any object selected by the user
if selection(0)
position object selection(0),object position x(8000),object position y(8000),object position z(8000)
else
t = object collision(8000,0)
rem -- here we test for all user movable objects...
if t > 0 and t < 6
selection(0) = t
endif
if t > 15 and t < 20
selection(0) = t
endif
if t > 199 and t < 207
selection(0) = t
endif
if t >299 and t < 317
selection(0) = t
endif
endif
else
selection(0) = 0
endif
endif
return
`Beginning of the level 1 subroutine, everything pertaining to the level goes in here!!!!!!
level1:
`makes the blue objects, that kill the red objects.
for t=1 to 5
make object cube t,10
set object collision to boxes t
color object t,RGB(0,0,150)
set object collision on t
position object t,100+rnd(50),0,100+rnd(50)
while object collision(t,0) > 0
position object t,100+rnd(50),0,100+rnd(50)
endwhile
next t
`make barriers (white)
for t=204 to 206
make object box t,30,10,10
set object collision on t
position object t, 100+rnd(50), 0,100+rnd(50)
next t
rem make machine gun nest A
m= 201
make object cube m, 10
set object collision to boxes m
color object m,RGB(90,90,40)
Position object m,100,0,100
rem make bullets
for b=207 to 208
make object sphere b,2
next b
`positions the bullets in the machine gun.
for b=207 to 208
position object b,object position x(m),object position y(m),object position z(m)
next b
`make machine gun nest target
t = 202
make object box t,30,5,10
color object t,RGB(90,90,90)
position object t,100,0,-100
`make wave one (red)
for e=6 to 15
make object cube e, 4
set object collision to boxes e
set object collision on e
color object e,RGB(255,0,0)
position object e,100+rnd(100),0,-200+rnd(100)
while object collision(e,0) > 0
position object e,100+rnd(100),0,-200+rnd(100)
endwhile
next e
`make wave two (red)
for e=100 to 120
make object cube e,4
color object e,RGB(255,0,0)
set object collision to boxes e
set object collision on e
position object e,100+rnd(200),0,-300+rnd(200)
while object collision(e,0) > 0
position object e,100+rnd(200),0,-300+rnd(200)
endwhile
next e
`make landmines (green)
for k=16 to 19
make object cube k,3
color object k,RGB(0,255,0)
set object collision to boxes k
set object collision on k
position object k,100+rnd(50),0,80+rnd(50)
while object collision(k,0) > 0
position object k,100+rnd(50),0,80+rnd(50)
endwhile
next k
do
rem print timer
set cursor 0,0
print "Player ",player(0)," Has ",timeleft(0)," Time Left ", "time to victory", victorytimer(0)
`lets you manipulate the objects if the time is above 0!
if timeleft(0) > 0
gosub selection
endif
`timer!
timeleft(0)=timeleft(0)-1
`All that timing crap!
if timeleft(0)=<0
if player(0)=1
victorytimer(0)= victorytimer(0)-1
gosub wave
wavetime(0)=wavetime(0)-1
center text 70,400, "WAVE 1 INBOUND!"
set cursor 10,10
print "A second wave of enemys has been spotted on the horizon, time untill landing " ,wavetime(0),"milliseconds"
timeleft(0)=0
endif
endif
if returnkey()=1 then cls
if wavetime(0)=<0
wavetime(0)=0
endif
for e=6 to 15
if wavetime(0)=0
hide object e
center text 70,600,"wave 2 inbound!"
gosub wave2
endif
next e
if victorytimer(0)=<0
set cursor 10,20: print "This is a great victory, without a beach-head here, the enemy will lose a valuable foot hold, you win the fight!"
endif
`Collision for the first wave of enemies
for e=6 to 15
k = object collision(e, 0)
if k > 0 and k < 20
if k <> selection(0)
hide object e
endif
endif
next e
`Collision between first wave and machine gun nest target (202)
for e=6 to 15
rem if object collision(e,202)
if object collision(e,0) = 202
hide object e
endif
next e
`collision between second wave and machine gun nest target (202)
for e=100 to 120
rem if object collision(e,202)
if object collision(e,0) = 202
hide object e
endif
next e
`collision for second wave
for e=100 to 120
k = object collision(e, 0)
if k > 0 and k < 20
if k <> selection(0)
hide object e
endif
endif
next e
`!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
`Checks for collision between wave 1, and the white barriers, and moves the red objects left or right if collision is present
For e = 6 To 15
For i = 204 To 206
If Object Collision(e,i)
`Do whatever to do when white hit's red here
if mover(e) = 0
if rnd(10) > 5
mover(e) = 5
else
mover(e) = -5
endif
endif
position object e, object position x(e)+mover(e), object position y(e), object position z(e)
else
mover(e) = 0
endif
Next i
Next e
`Same thing as above, but moves the second wave left or right if they hit the barriers
For e = 100 To 120
For i = 204 To 206
If Object Collision(e,i)
`Do whatever to do when white hit's red here
if mover(e) = 0
if rnd(10) > 5
mover(e) = 5
else
mover(e) = -5
endif
endif
position object e, object position x(e)+mover(e), object position y(e), object position z(e)
else
mover(e) = 0
endif
Next i
Next e
`Fires the bullet from the gun, towards the target.
fire=1
for b=207 to 208
t = 202
if fire=1
point object b,object position x(t),object position y(t),object position z(t)
move object b, 10
endif
rem if object collision(b,t)>0
if object collision(b,0) = t
fire=0
position object b,object position x(m),object position y(m),object position z(m)
endif
next b
sync
loop
return
`Level 2
level2:
Gosub selection
`Barriers
for b=300 to 302
make object box b,30,10,10
set object collision on b
position object b, 100+rnd(100), 0, 100+rnd(100)
next b
`landmines
For m=303 to 310
make object cube m, 3
color object m, RGB(0,255,0)
set object collision to boxes m
position object m, 100+rnd(50), 0, -100+rnd(100)
next m
`big blue killy thingys
for t=311 to 315
make object cube t, 10
color object t, RGB(0,0,255)
set object collision to boxes t
position object t, 100+rnd(50), 0, 200+rnd(50)
next t
m=316
make object box m, 30,10,10
color object m, RGB(90,90,40)
position object m, 200+rnd(50), 0, 80+rnd(50)
return
Even though it says to press the space key to begin, it is actually the downkey to start level 1, and the upkey to start level 2, and Level 2 is the one with the error.
Thank you.
Guns arnt the problem, people are the problem, shoot all the people and guns arnt a problem anymore.