Ok, so, my program runs fine and dandy, however, when I add sparky's commands, its just crashes. about 75% of the time, and gives me a bull**** line number, which points to code I know for a fact isnt the problem. Anyway, here is the code... (as a side note, I have 14 relatively complex models stashed in the "Models()" array)
Settings up world models:
_WORLD_LOAD:
for i = 1 to INI_models_amount
load object Models(i).Obj , Models(i).ID
if Models(i).Texture = "null"
else
load image Models(i).Texture , Models(i).ID
texture object Models(i).ID , Models(i).ID
endif
if Models(i).Xrot = 0
else
xrotate object Models(i).ID , Models(i).Xrot
endif
SC_Setupcomplexobject Models(i).ID , 1 , 2
next i
return
Character collision+movement+animation:
//Character control
_CONTROL_CHARACTER:
oldx# = object position x(Player)
oldy# = object position y(Player)
oldz# = object position z(Player)
CONTROL_KEY_W = 0
CONTROL_KEY_A = 0
CONTROL_KEY_D = 0
CONTROL_SHIFT = 0
CONTROL_CRTL = 0
if keystate ( 17 ) = 1 or upkey ( ) = 1 //"W" - Up arrow
CONTROL_KEY_W = 1
endif
if keystate ( 30 ) = 1 or leftkey ( ) = 1 //"A" - Left arrow
CONTROL_KEY_A = 1
endif
if keystate ( 32 ) = 1 or rightkey ( ) = 1 //"D" - Right arrow
CONTROL_KEY_D = 1
endif
if shiftkey ( ) = 1 then CONTROL_SHIFT = 1
if controlkey ( ) = 1 then CONTROL_CTRL = 1
if CONTROL_SHIFT = 0
CONTROL_PLAYER_ANIM = 0
if CONTROL_KEY_W = 1
CONTROL_PLAYER_ANIM = 1
move object Player , - 5
endif
if CONTROL_KEY_A = 1
yrotate object player , object angle y ( Player ) - 3
if CONTROL_KEY_W = 1 : CONTROL_PLAYER_ANIM = 1 : else : CONTROL_PLAYER_ANIM = 0 : endif
endif
if CONTROL_KEY_D = 1
yrotate object player , object angle y ( Player ) + 3
if CONTROL_KEY_W = 1 : CONTROL_PLAYER_ANIM = 1 : else : CONTROL_PLAYER_ANIM = 0 : endif
endif
else
if CONTROL_KEY_W = 1
CONTROL_PLAYER_ANIM = 2
move object Player, - 20
endif
if CONTROL_KEY_A = 1
yrotate object player , object angle y ( Player ) - 1.5
if CONTROL_KEY_W = 1 : CONTROL_PLAYER_ANIM = 2 : else : CONTROL_PLAYER_ANIM = 0 : endif
endif
if CONTROL_KEY_D = 1
yrotate object player , object angle y ( Player ) + 1.5
if CONTROL_KEY_W = 1 : CONTROL_PLAYER_ANIM = 2 : else : CONTROL_PLAYER_ANIM = 0 : endif
endif
endif
//Collision
X# = object position x(Player)
Y# = object position y(Player)
Z# = object position z(Player)
coll = sc_sphereslide(Player,oldx#,oldy#,oldz#,X#,Y#,Z#,5,0)
if coll>0
rem get sliding collision position
newX# = sc_getcollisionslideX()
newY# = sc_getcollisionslideY()
newZ# = sc_getcollisionslideZ()
position object Player,newX#,newY#,newZ#
endif
return
Thanks in advance!