Can u guys help with jumping on a matrix. I've tried various coding but i still can't get it to work.
My code so far is
`character
MAKE OBJECT SPHERE 5,50:COLOR OBJECT 5,RGB(000,255,000):POSITION OBJECT 5,0,0,-400
`Load Gun
set dir "J:\Final Game\Weapons\1911"
load object "HUD_no accessory.x",10
XRotate Object 10,5
YRotate Object 10,180
Fix object pivot 10
set object texture 10,1,1
position object 10,4,2.5,7
set object speed 10,2
loop object 10,10,38
Scale object 10,80,110,70
Lock object on 10
`Load weapon sounds
Load Sound "fire.wav",4
Load Sound "reload.wav",5
Load Sound "cock.wav",6
set dir "J:\Final Game"
`Setup for performance
sync on
sync rate 0
hide mouse
set camera range 1,999999999
randomize timer()
`A large wall
load image "brickwall01a.png",1
MAKE OBJECT BOX 3 ,500,900,10:POSITION OBJECT 3,0,0,150
texture object 3,1
scale object texture 3,5,3
`An ammo crate
MAKE OBJECT BOX 4,15,20,50:COLOR OBJECT 4,RGB(000,255,255):POSITION OBJECT 4,-40,0,0
`Amount of enemies - change to how many enemies you want
enemies=10
Dim enemy_state(enemies)
`Initial state for the enemies
for e=1 to enemies
enemy_state(e)=1
next e
Dim enemy_dist#(enemies)
`Types: I'll explain after I've done it
Type enemy
x as float
y as float
z as float
endtype
Dim enemy_position(enemies) as enemy
`Randomise positions
for e=1 to enemies
enemy_position(e).x=rnd(10000)
enemy_position(e).z=rnd(10000)
next e
Dim enemy_angle(enemies) :`Array for the enemies' angles
Rem make matrix
Make matrix 1,10000,10000,10,10
Rem texture matrix
Load image "GRASS09.bmp",1
Prepare matrix texture 1,1,1,1
Fill matrix 1,0,1
rem Randomize the matrix
randomize matrix 1,115
X#=5000
Z#=5000
Rem Update the changes to the matrix
update matrix 1
`Create the enemies
for e=1 to enemies
make object cube 10+e,100
color object 10+e,rgb(255,0,0)
next e
`Load sounds
Load Sound "footstep.wav",3
`Add limb for intersection checks
MAKE OBJECT SPHERE 9999,10
MAKE MESH FROM OBJECT 1,9999
DELETE OBJECT 9999
`Bullet Intersection Limb
ADD LIMB 5,1,1
OFFSET LIMB 5,1,0,0,500
HIDE LIMB 5,1
`Front Intersection Limb
ADD LIMB 5,2,1
OFFSET LIMB 5,2,0,0,OBJECT SIZE Z(5)/2
HIDE LIMB 5,2
`Back Intersection Limb
ADD LIMB 5,3,1
OFFSET LIMB 5,3,0,0,-OBJECT SIZE Z(5)/2
HIDE LIMB 5,3
`Right Intersection Limb
ADD LIMB 5,4,1
OFFSET LIMB 5,4,OBJECT SIZE X(5)/2,0,0
HIDE LIMB 5,4
`Left Intersection Limb
ADD LIMB 5,5,1
OFFSET LIMB 5,5, -OBJECT SIZE X(5)/2,0,0
HIDE LIMB 5,5
`Define the main variables needed
EnemyHP=5000` Enemy's Health
Ammo=1000` Starting Ammo
MaxAmmo=1000` Maximum amount of Ammo
Clips=3` Starting Clips
MaxClips=3` Maximum amount of Clips
Jumping=0
ScreenWidth#=SCREEN WIDTH()
ScreenHeight#=SCREEN HEIGHT()
`Main Loop
Do
`Camera Positioning
POSITION CAMERA X#,Y#,Z#
`Aim down sights
IF Mouseclick()=1 then ZOOM=1
IF Mouseclick()=2 then ZOOM=2
IF ZOOM=2
position object 10,4,4,7
else
ZOOM=1
ENDIF
IF ZOOM=1
position object 10,4,2.5,7
ENDIF
`Weapon Settings
IF Mouseclick()=1 then FIR=1
IF Mouseclick()=0 then FIR=0
IF FIR=1
set object speed 10,15
play object 10,61,70
PLAY SOUND 4
else
FIR=0
ENDIF
IF FIR=0 And object frame (10) = 70
STOP SOUND 5
STOP OBJECT 10
ENDIF
`Reload Settings
IF KEYSTATE(19)=1 then REL=1
IF KEYSTATE(19)=0 then REL=0
IF REL=1
set object speed 10,20
play object 10,74,142
PLAY SOUND 5
else
REL=0
ENDIF
oldcAY# = cAY#
oldcAX# = cAX#
oldX#=X#
oldY#=Y#
oldZ#=Z#
cAY# = WrapValue(cAY#+MousemoveX()*0.2)
cAX# = WrapValue(cAX#+MousemoveY()*0.2)
caZ# = Camera angle Z()
Rem Control input for camera
If Keystate(17)=1
XTest# = Newxvalue(X#,cAY#,10)
ZTest# = Newzvalue(Z#,cAY#,10)
If XTest#>0 and XTest#<10000 and ZTest#>0 and ZTest#<10000
XAngle#=OBJECT ANGLE X(5)
XROTATE OBJECT 5,0
MOVE OBJECT 5,.4
XROTATE OBJECT 5,XAngle#
X#=XTest#
Z#=ZTest#
Endif
Endif
If Keystate(31)=1
XTest# = Newxvalue(X#,Wrapvalue(cAY#-180),10)
ZTest# = Newzvalue(Z#,Wrapvalue(cAY#-180),10)
If XTest#>0 and XTest#<10000 and ZTest#>0 and ZTest#<10000
XAngle#=OBJECT ANGLE X(5)
XROTATE OBJECT 5,0
MOVE OBJECT 5,-.4
XROTATE OBJECT 5,XAngle#
X#=XTest#
Z#=ZTest#
Endif
Endif
If Keystate(30)=1
XTest# = Newxvalue(X#,Wrapvalue(cAY#-90),10)
ZTest# = Newzvalue(Z#,Wrapvalue(cAY#-90),10)
If XTest#>0 and XTest#<10000 and ZTest#>0 and ZTest#<10000
MOVE OBJECT RIGHT 5,.4
X#=XTest#
Z#=ZTest#
Endif
Endif
If Keystate(32)=1
XTest# = Newxvalue(X#,Wrapvalue(cAY#+90),10)
ZTest# = Newzvalue(Z#,Wrapvalue(cAY#+90),10)
If XTest#>0 and XTest#<10000 and ZTest#>0 and ZTest#<10000
MOVE OBJECT RIGHT 5,.4
X#=XTest#
Z#=ZTest#
Endif
Endif
Rem Rotate camera
cTestX#=WrapValue(cAX#-180)
if cTestX# > 225 then cAX#=45
YRotate camera CurveAngle(cAY#,oldcAY#,24)
XRotate camera CurveAngle(cAX#,oldcAX#,24)
Y# = Get ground height(1,X#,Z#)+35
Rem Position Camera
Position Camera X#,Y#,Z#
Rem Position Listener
Position Listener X#,Y#,Z#
Rotate Listener 0,cAY#,0
`**********AI**********
`Select all enemies
for e=1 to enemies
`Check the distance between you and the enmies
enemy_dist#(e)=sqrt((x#-enemy_position(e).x)^2+(y#-enemy_position(e).y)^2+(z#-enemy_position(e).z)^2)
`If enemy state is 1 then make the angle change (so the enemy can wander)
if enemy_state(e)=1
enemy_angle(e)=wrapvalue(enemy_angle(e)+rnd(3))
endif
`If the enemy state is 2 then point to player
if enemy_state(e)=2
enemy_angle(e)=atanfull(x#-enemy_position(e).x,z#-enemy_position(e).z)
endif
`Always move enemy
enemy_position(e).x=newxvalue(enemy_position(e).x,enemy_angle(e),8.0)
enemy_position(e).z=newzvalue(enemy_position(e).z,enemy_angle(e),8.0)
`Change state depending on distance
if enemy_dist#(e)<500 then enemy_state(e)=2 else enemy_state(e)=1
`Update enemies
enemy_position(e).y=get ground height(1,enemy_position(e).x,enemy_position(e).z)+50
position object 10+e,enemy_position(e).x,enemy_position(e).y,enemy_position(e).z
yrotate object 10+e,enemy_angle(e)
`If you get hit then respawn
if enemy_dist#(e)<140 then x#=rnd(10000) : z#=rnd(10000)
`deselect enemies
next e
`Mouseclick Shooting
IF KEYSTATE(19)=0 AND MOUSECLICK()=1
IF Ammo>0 THEN DEC Ammo,1
IF OBJECT EXIST(2)=1
IF Ammo>0 AND INTERSECT OBJECT (2, LIMB POSITION X(5,1), LIMB POSITION Y(5,1), LIMB POSITION Z(5,1), X#,Y#,Z#)>0 THEN DEC EnemyHP,1
ENDIF
ENDIF
`Check if the enemy should die, if so delete it
IF EnemyHP=0 AND OBJECT EXIST(2)=1 THEN DELETE OBJECT 2
`Reloading (press R)
IF MOUSECLICK()=0 AND KEYSTATE(19)=1 AND Ammo<MaxAmmo AND Clips>0
Reload=1
ENDIF
`Reloading Part 2 (delay)
IF Reload=1 THEN INC Time#,.003
IF Time#>=1 THEN Ammo=MaxAmmo:DEC Clips,1:Time#=0:Reload=0
`Ammo Crate code (obtain ammo from ground)
IF OBJECT EXIST(4)=1
IF Ammo<MaxAmmo AND INTERSECT OBJECT (4, X#,Y#-50,Z#, X#,Y#,Z#)>0
INC Clips,(MaxClips-Clips)
INC Ammo,(MaxAmmo-Ammo)
DELETE OBJECT 4
ENDIF
ENDIF
`Display text above enemy and crate object
IF OBJECT EXIST(2)=1 THEN CENTER TEXT OBJECT SCREEN X(2),OBJECT SCREEN Y(2)-70,"Enemy Health: "+str$(EnemyHP)
IF OBJECT EXIST(4)=1 THEN CENTER TEXT OBJECT SCREEN X(4),OBJECT SCREEN Y(4)-20,"Ammo Crate"
`Display our Ammo and Clips on-screen
TEXT 0,ScreenHeight#-50,"Ammo: "+str$(Ammo)
TEXT 0,ScreenHeight#-40,"Clips: "+str$(Clips)
`Show that we're reloading
IF Reload=1 THEN CENTER TEXT ScreenWidth#/2,ScreenHeight#/2,"Reloading..."
`Add a target reticule to the screen
CIRCLE ScreenWidth#/2,ScreenHeight#/2,5
`Front Intersection Check
IF INTERSECT OBJECT (3,LIMB POSITION X(5,2),LIMB POSITION Y(5,2),LIMB POSITION Z(5,2),X#,Y#,Z#)
`If intersection infront, move the user backwards
MOVE OBJECT 5,-1
ENDIF
`Back Intersection Check
IF INTERSECT OBJECT (3,LIMB POSITION X(5,3),LIMB POSITION Y(5,3),LIMB POSITION Z(5,3),X#,Y#,Z#)
`If intersection behind, move user forwards
MOVE OBJECT 5,1
ENDIF
`Right Intersection Check
IF INTERSECT OBJECT (3,LIMB POSITION X(5,4),LIMB POSITION Y(5,4),LIMB POSITION Z(5,4),X#,Y#,Z#)
`If intersection to the right, move the user left
MOVE OBJECT LEFT 5,1
ENDIF
`Left Intersection Check
IF INTERSECT OBJECT (3,LIMB POSITION X(5,5),LIMB POSITION Y(5,5),LIMB POSITION Z(5,5),X#,Y#,Z#)
`If intersection to the left, move user right
MOVE OBJECT RIGHT 5,1
ENDIF
`End Loop
Sync
Loop