Hi
When compiling, press the upkey for level 2, and the downkey for level 1, level 1 works, so no need messing with that.
I am trying to allow the player to turn certain objects while they are selected, when an object is clicked, a flag is raised to show that something has been selected, and the variable Selection will equal to t to show a selection, so using this I decided to try and turn objects 300 to 302 using the right and left arrow keys to do this I tried the following code...
For b=300 to 302
if selection(0)=t and rightkey()=1
turn object right b, 1
endif
next b
for b=300 to 302
if selection(0)=1 and leftkey()=1
turn object left b, 1
endif
next b
and here is the rest of 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 < 320
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:
cls
timeleft(0)=timeleft(0)-1
set cursor 0,0
print "Player ",player(0)," Has ",timeleft(0)," Time Left "
`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, 100+rnd(50)
next t
`make machine gun nest A
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)
`make machine gun nest Target A
m=317
make object box m,30,10,10
color object m,RGB(50,50,50)
position object m,200+rnd(50),0,90+rnd(50)
set object collision to boxes m
`make machine gun nest B
t=318
make object box t, 30, 10,10
color object t, RGB(90,90,40)
position object t, 200+rnd(50), 0, 100+rnd(50)
`make machine gun nest target B
p=319
make object box t, 30,10,10
color object t, RGB(50,50,50)
position object t, 200+rnd(50), 0, 100+rnd(100)
set object collision to boxes t
`make bullets A
for b=3000 to 3005
make object sphere b, 2
next b
`Position the bullets in the machine gun nest.
for b=3000 to 3005
m=316
position object b, object position x(m), object position y(m), object position z(m)
next b
`make bullets for nest B!
for b=3006 to 3011
make object sphere b, 2
next b
`Position bullets in nest B.
for b=3006 to 3011
t=318
position object b, object position x(t), object position y(t), object position z(t)
next b
do
if timeleft(0)>0
gosub selection
endif
`timer
timeleft(0)=timeleft(0)-1
set cursor 0,0
print "Player ",player(0)," Has ",timeleft(0)," Time Left "
if timeleft(0)<0
timeleft(0)=0
endif
`TURN OBJECTS Barriers!!!!!!!
for e=300 to 302
if selection(0)=t and rightkey()=1
turn object right e,1
endif
next e
for e=300 to 302
if selection(0)=t and leftkey()=1
turn object left e,1
endif
next e
`Fires the bullet from the gun, towards the target.
fire=1
for b=3000 to 3005
p = 317
if fire=1
point object b,object position x(p),object position y(p),object position z(p)
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
`Fires the bullet from the gun, towards the target.
fire=1
for b=3006 to 3011
t = 319
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
The problem is, that when I click on the objects I want to turn, they do not turn, but when I click on another object and press the right and left arrow keys, it will not turn, but the objects I wanted to turn now turn. Oh and by the way, is there anyway to allow me to turn them individualy, because when they turn now, they all do it at the same time, and not by themselves.
thanks.
Guns arnt the problem, people are the problem, shoot all the people and guns arnt a problem anymore.