Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Script entirely scripted and concepted by Luís Gustavo Miki (pGibson)
- // * Credits removing is a stupid reason to die.
- #include <a_samp>
- #include <a_players>
- #include <float>
- #include <foreach>
- #define PRESSED(%0) \
- (((newkeys & (%0)) == (%0)) && ((oldkeys & (%0)) != (%0)))
- #define RELEASED(%0) \
- (((newkeys & (%0)) != (%0)) && ((oldkeys & (%0)) == (%0)))
- /* SCRIPT CONFIGURATION */
- #define METERS 15.0 // How long you go each n time
- #define TIME 300 // ms each key update
- /* END OF SCRIPT CONFIGURATION */
- new Iterator:Airbreak<MAX_PLAYERS>;
- enum gxy_mode
- {
- gxy_before,
- gxy_behind,
- gxy_right,
- gxy_left
- }
- public OnFilterScriptInit()
- {
- print( "----------------------------------------------" );
- print( "| Pawn AirBreaker Script by Luís Miki loaded! |" );
- print( "----------------------------------------------" );
- SetTimer( "AirBreakKeyCheck", TIME, true );
- return 1;
- }
- /* GetPVarInt( playerid, "pAb" );
- GetPVarInt( playerid, "pAbTimer" ); */
- stock
- StartAirBreakForPlayer( playerid )
- {
- if( !GetPVarInt( playerid, "pAb" ) )
- {
- Iter_Add(Airbreak, playerid);
- SetPVarInt( playerid, "pAb", 1 );
- //TogglePlayerControllable( playerid, 0 );
- printf("| Pawn AirBreaker: Script Warning @ \"StartAirBreakForPlayer\"\n Player%d has just been set AitBreak status ON |",playerid );
- return
- true;
- }
- else
- {
- print( "| Pawn AirBreaker: Script Error @ \"StartAirBreakForPlayer\"\nOnce you set AirBreak status for a player on, you can't do it again\nUse \"GetAirBreakStatusForPlayer(playerid)\" |" );
- return
- false;
- }
- }
- stock
- StopAirBreakForPlayer( playerid )
- {
- if( GetPVarInt( playerid, "pAb" ) )
- {
- Iter_Remove(Airbreak, playerid);
- SetPVarInt( playerid, "pAb", 0 );
- //TogglePlayerControllable( playerid, 1 );
- printf("| Pawn AirBreaker: Script Warning @ \"StartAirBreakForPlayer\"\n Player%d has just been set AitBreak status OFF |",playerid );
- return
- true;
- }
- else
- {
- print( "| Pawn AirBreaker: Script Error @ \"StartAirBreakForPlayer\"\nOnce you set AirBreak status for a player on, you can't do it again\nUse \"GetAirBreakStatusForPlayer(playerid)\" |" );
- return
- false;
- }
- }
- stock
- GetAirBreakStatusForPlayer( playerid )
- {
- return
- GetPVarInt( playerid, "pAb" );
- }
- forward
- AirBreakKeyCheck();
- public
- AirBreakKeyCheck()
- {
- foreach(Airbreak, playerid)
- {
- new ud, lr, k;
- GetPlayerKeys( playerid, k, ud, lr );
- ///////////////////////////////////
- new Float:X, Float:Y, Float:Z;
- if( ud < 0 ) // KEY_UP
- {
- GetPlayerPos( playerid, X, Y, Z );
- GetXYFromPlayer(playerid, X, Y, METERS );
- SetPlayerPos( playerid, X, Y, Z );
- }
- else if( ud > 0 ) // KEY_DOWN
- {
- GetPlayerPos( playerid, X, Y, Z );
- GetXYFromPlayer(playerid, X, Y, METERS, gxy_behind );
- SetPlayerPos( playerid, X, Y, Z );
- }
- //
- if( lr > 0 ) // RIGHT
- {
- GetPlayerPos( playerid, X, Y, Z );
- GetXYFromPlayer(playerid, X, Y, METERS, gxy_right );
- SetPlayerPos( playerid, X, Y, Z );
- }
- else if( lr < 0 ) // LEFT
- {
- GetPlayerPos( playerid, X, Y, Z );
- GetXYFromPlayer(playerid, X, Y, METERS, gxy_left );
- SetPlayerPos( playerid, X, Y, Z );
- }
- /////////////
- if( k & KEY_JUMP )
- {
- GetPlayerPos( playerid, X, Y, Z );
- SetPlayerPos( playerid, X, Y, Z + METERS );
- }
- else if( k & KEY_CROUCH )
- {
- GetPlayerPos( playerid, X, Y, Z );
- SetPlayerPos( playerid, X, Y, Z - METERS );
- }
- ////////////
- }
- }
- stock GetXYFromPlayer(playerid, &Float:x, &Float:y, Float:distance, gxy_mode:mode = gxy_before)
- {
- new
- Float:a;
- if(GetPlayerPos(playerid, x, y, a))
- {
- GetPlayerFacingAngle(playerid, a);
- switch(mode)
- {
- case gxy_behind: if((a += 180) > 360) a -= 360;
- case gxy_right: if((a += 90) > 360) a -= 360;
- case gxy_left: if((a -= 90) < 0) a += 360;
- }
- x += distance * floatsin(-a, degrees);
- y += distance * floatcos(-a, degrees);
- return 1;
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement