//============================================================================== #include //============================================================================== forward MoveGates ( ); //============================================================================== new Gates [ 999 ]; new Float: GatePositions [ 999 ] [ 6 ]; new Float: MoveDistance [ 999 ]; new Float: MoveSpeed [ 999 ]; new MAX_GATES = 0; //============================================================================== stock GetDistanceToPoint ( playerid , Float: x2 ,Float: y2 , Float:z2 ) { new Float: dis; new Float: x1, Float: y1 ,Float: z1; GetPlayerPos ( playerid , x1 , y1 , z1 ); dis = floatsqroot((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1)+(z2-z1)*(z2-z1)); return floatround ( dis ); } //============================================================================== stock CreateGate ( modelid , Float: X , Float: Y , Float: Z , Float: XR , Float: YR , Float: ZR , Float: MoveX , Float: MoveY , Float: MoveZ , Float: Move_Distance , Float: Move_Speed ) { GatePositions [ MAX_GATES ] [ 0 ] = X; GatePositions [ MAX_GATES ] [ 1 ] = Y; GatePositions [ MAX_GATES ] [ 2 ] = Z; GatePositions [ MAX_GATES ] [ 3 ] = MoveX; GatePositions [ MAX_GATES ] [ 4 ] = MoveY; GatePositions [ MAX_GATES ] [ 5 ] = MoveZ; MoveSpeed [ MAX_GATES ] = Move_Speed; MoveDistance [ MAX_GATES ] = Move_Distance; Gates [ MAX_GATES ] = CreateObject ( modelid , X , Y , Z , XR , YR , ZR ); MAX_GATES = MAX_GATES += 1; return MAX_GATES - 1; } //============================================================================== public MoveGates ( ) { for ( new gateid = 0; gateid < MAX_GATES; gateid ++ ) { new IsPlayerCloseToGate = 0; for ( new playerid = 0; playerid < MAX_PLAYERS; playerid ++ ) { if ( IsPlayerConnected ( playerid ) ) { if ( GetDistanceToPoint ( playerid ,GatePositions [ gateid ] [ 0 ] , GatePositions [ gateid ] [ 1 ] , GatePositions [ gateid ] [ 2 ] ) < MoveDistance [ gateid ] ) { IsPlayerCloseToGate = 1; } } } if ( IsPlayerCloseToGate == 1 ) { MoveObject ( Gates [ gateid ] , GatePositions [ gateid ] [ 3 ] , GatePositions [ gateid ] [ 4 ] , GatePositions [ gateid ] [ 5 ] , MoveSpeed [ gateid ] ); } else { MoveObject ( Gates [ gateid ] , GatePositions [ gateid ] [ 0 ] , GatePositions [ gateid ] [ 1 ] , GatePositions [ gateid ] [ 2 ] , MoveSpeed [ gateid ] ); } } } //============================================================================== stock BeginGateTimer ( ) { SetTimer ( "MoveGates" , 1 , true ); } //==============================================================================