ive used data statements, they hold the info, the first item is how many doors there are. Got the code reduced by a huge amount, then one door caused loads of probs as it was a double one that slid. ended up being way too much code so it got changed:p
Even now its about as much code as the rest of the door function.
waiting to see what suggestions i get from a question i posted, will post the type setup after i see if it is going to change or not.
Even now its about as much code as the rest of the door function.
waiting to see what suggestions i get from a question i posted, will post the type setup after i see if it is going to change or not.
function DoorActions() for more.doors = each doors if MouseLeft And CameraPick( Camera , MouseX(), MouseY() ) = more\doorgfx If more\opening = False And more\open = False And more\closing = False And EntityDistance( playerbox , more\doorgfx ) < more\distance# more\delaytime = Millisecs() : more\opening = true : more\open = False : more\closing = False EndIf endIf if MouseLeft And CameraPick( Camera , MouseX(), MouseY() ) = more\doorgfx If more\opening = False And more\open = True And more\closing = False And EntityDistance( playerbox , more\doorgfx ) < more\distance# more\open = False : more\opening = False : more\closing = True EndIf endIf ;makes sure animation has finished before allowing another action if more\doortype = 1 or more\doortype = 2 ; open if more\open = False And more\opening = True And more\closing = False more\moveup = more\moveup + more\moveamount if more\moveup > more\stopmax then more\moveup = more\stopmax : more\opening = False : more\open = True : more\closing = False if more\doortype = 1 RotateEntity more\doorgfx, EntityPitch(more\doorgfx), EntityYaw(more\doorgfx) + more\moveamount, 0 else ;if more\doortype = 2 PositionEntity more\doorgfx, more\posx#, more\posy# + more\moveup, more\posz# endif endif ; close if more\opening = False And more\open = False And more\closing = True more\moveup = more\moveup - more\moveamount if more\moveup < 0 then more\moveup = 0 : more\opening = False : more\open = False : more\closing = False if more\doortype = 1 RotateEntity more\doorgfx, EntityPitch(more\doorgfx), EntityYaw(more\doorgfx) - more\moveamount, 0 else ;if more\doortype = 2 PositionEntity more\doorgfx, more\posx#, more\posy# + more\moveup, more\posz# endif endIf ; timed close if more\opening = False And more\open = True And more\closing = False And Millisecs() > (more\delaytime + dooropenfor) more\moveup = more\moveup - more\moveamount if more\moveup < 0 then more\moveup = 0 : more\opening = False : more\open = False : more\closing = False if more\doortype = 1 RotateEntity more\doorgfx, EntityPitch(more\doorgfx), EntityYaw(more\doorgfx) - more\moveamount, 0 else ;if more\doortype = 2 PositionEntity more\doorgfx, more\posx#, more\posy# + more\moveup, more\posz# endif endIf elseif more\name$ = "stonegateL" and more\doortype = 3 ; for Stone Gates ; open if more\open = False And more\opening = True And more\closing = False more\moveup = more\moveup - more\moveamount : more = after more more\moveup = more\moveup + more\moveamount : more = before more if more\moveup < more\stopmax more\moveup = more\stopmax : more\opening = False : more\open = True : more\closing = False more = after more more\moveup = more\stopmax : more\opening = False : more\open = True : more\closing = False more = before more endif PositionEntity more\doorgfx, more\posx# + more\moveup, more\posy#, more\posz# more = after more PositionEntity more\doorgfx, more\posx# + more\moveup, more\posy#, more\posz# more = before more endif ; close if more\opening = False And more\open = False And more\closing = True more\moveup = more\moveup + more\moveamount : more = after more more\moveup = more\moveup - more\moveamount : more = before more if more\moveup > 0 more\moveup = 0 : more\opening = False : more\open = False : more\closing = False more = after more more\moveup = 0 : more\opening = False : more\open = False : more\closing = False more = before more endif PositionEntity more\doorgfx, more\posx# + more\moveup, more\posy#, more\posz# more = after more PositionEntity more\doorgfx, more\posx# + more\moveup, more\posy#, more\posz# more = before more endIf ; timed close if more\opening = False And more\open = True And more\closing = False And Millisecs() > (more\delaytime + dooropenfor) more\moveup = more\moveup + more\moveamount : more = after more more\moveup = more\moveup - more\moveamount : more = before more if more\moveup > 0 more\moveup = 0 : more\opening = False : more\open = False : more\closing = False more = after more more\moveup = 0 : more\opening = False : more\open = False : more\closing = False more = before more endif PositionEntity more\doorgfx, more\posx# + more\moveup, more\posy#, more\posz# more = after more PositionEntity more\doorgfx, more\posx# + more\moveup, more\posy#, more\posz# more = before more endIf endif next end function