Guest User

Zezombia

a guest
Jan 1st, 2009
878
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.96 KB | None | 0 0
  1. #include <a_samp>
  2.  
  3. #define yellow 0xFFFF00AA
  4. #define red 0xFF0000AA
  5.  
  6. new AirBreakVar[MAX_PLAYERS];
  7. new SetDistance[MAX_PLAYERS];
  8.  
  9. forward AfterPlayerConnect(playerid);
  10. forward OnGetPlayerKeys();
  11.  
  12. public OnFilterScriptInit()
  13. {
  14.     SetTimer("OnGetPlayerKeys", 250, 1);
  15.  
  16.     for(new i = 0; i < MAX_PLAYERS; i++)
  17.     {
  18.         SetDistance[i] = 5;
  19.     }
  20.     return 1;
  21. }
  22.  
  23. public OnFilterScriptExit()
  24. {
  25.     for(new i = 0; i < MAX_PLAYERS; i++)
  26.     {
  27.         TogglePlayerControllable(i, 1);
  28.     }
  29.     return 1;
  30. }
  31.  
  32. public OnPlayerConnect(playerid)
  33. {
  34.     SetTimerEx("AfterPlayerConnect", 1000, 0, "i", playerid);
  35.     return 1;
  36. }
  37.  
  38. public AfterPlayerConnect(playerid)
  39. {
  40.     AirBreakVar[playerid] = 0;
  41.     SetDistance[playerid] = 5;
  42.     return 1;
  43. }
  44.  
  45. public OnPlayerCommandText(playerid, cmdtext[])
  46. {
  47.     if(strcmp("/abon", cmdtext, true, 12) == 0)
  48.     {
  49.         if(AirBreakVar[playerid] == 0)
  50.         {
  51.             if(IsPlayerInAnyVehicle(playerid) == 0)
  52.             {
  53.                 AirBreakVar[playerid] = 1;
  54.                 SetCameraBehindPlayer(playerid);
  55.  
  56.                 TogglePlayerControllable(playerid, 0);
  57.                 SendClientMessage(playerid, yellow, "Air Break on, /abset to change the move distance, /aboff to turn off");
  58.             }
  59.             else
  60.             {
  61.                 SendClientMessage(playerid, red, "You can not activate Air Break when in a vehicle");
  62.             }
  63.         }
  64.         else
  65.         {
  66.             SendClientMessage(playerid, red, "Your Air Break is already on");
  67.         }
  68.         return 1;
  69.     }
  70.    
  71.     if(strcmp("/aboff", cmdtext, true, 12) == 0)
  72.     {
  73.         if(AirBreakVar[playerid] == 1)
  74.         {
  75.             AirBreakVar[playerid] = 0;
  76.             TogglePlayerControllable(playerid, 1);
  77.             SendClientMessage(playerid, yellow, "Air Break off, /abon to turn on");
  78.         }
  79.         else
  80.         {
  81.             SendClientMessage(playerid, red, "Your Air Break is already off");
  82.         }
  83.         return 1;
  84.     }
  85.  
  86.     if(strcmp("/abset", cmdtext, true, 6) == 0)
  87.     {
  88.         if(AirBreakVar[playerid] == 1)
  89.         {
  90.             new string[128], pos = strfind(cmdtext, " ", true);
  91.             strdel(cmdtext, 0, pos + 1);
  92.  
  93.             SetDistance[playerid] = strval(cmdtext);
  94.  
  95.             format(string, sizeof(string), "You have set your Air Break distance to %d", strval(cmdtext));
  96.             SendClientMessage(playerid, yellow, string);
  97.         }
  98.         else
  99.         {
  100.             SendClientMessage(playerid, red, "Your Air Break is currently off");
  101.         }
  102.         return 1;
  103.     }
  104.    
  105.     if(strcmp("/abhelp", cmdtext, true, 6) == 0)
  106.     {
  107.         SendClientMessage(playerid, yellow, "** Air Break Help **");
  108.         SendClientMessage(playerid, yellow, "/abon to turn Air Break on - /aboff to turn Air Break off");
  109.         SendClientMessage(playerid, yellow, "Forwards button to go forward - Backwards button to go backwards");
  110.         SendClientMessage(playerid, yellow, "Left button to go left - Right button to go right");
  111.         SendClientMessage(playerid, yellow, "Jump button to go up - Sprint button to go down");
  112.         SendClientMessage(playerid, yellow, "Special Ctrl Left to turn left - Special Ctrl Right to turn right");
  113.         SendClientMessage(playerid, yellow, "** **");
  114.         return 1;
  115.     }
  116.     return 0;
  117. }
  118.  
  119. public OnGetPlayerKeys()
  120. {
  121.     for(new i = 0; i < MAX_PLAYERS; i++)
  122.     {
  123.         new Keys, UpDown, LeftRight;
  124.         GetPlayerKeys(i, Keys, UpDown, LeftRight);
  125.    
  126.         if(IsPlayerInAnyVehicle(i) == 1)
  127.         {
  128.             if(AirBreakVar[i] == 1)
  129.             {
  130.                 AirBreakVar[i] = 0;
  131.                 TogglePlayerControllable(i, 1);
  132.             }
  133.         }
  134.        
  135.         if(AirBreakVar[i] == 1)
  136.         {
  137.             new Float:X, Float:Y, Float:Z, Float:A;
  138.             GetPlayerPos(i, X, Y, Z);
  139.             GetPlayerFacingAngle(i, A);
  140.  
  141.             if(UpDown == KEY_UP)
  142.             {
  143.                 X += (SetDistance[i] * floatsin(-A, degrees)); //Made by Y_Less
  144.                 Y += (SetDistance[i] * floatcos(-A, degrees)); //Made by Y_Less
  145.                
  146.                 SetPlayerPos(i, X, Y, Z);
  147.                 SetCameraBehindPlayer(i);
  148.                 return 1;
  149.             }
  150.  
  151.             if(UpDown == KEY_DOWN)
  152.             {
  153.                 X -= (SetDistance[i] * floatsin(-A, degrees)); //Made by Y_Less
  154.                 Y -= (SetDistance[i] * floatcos(-A, degrees)); //Made by Y_Less
  155.                
  156.                 SetPlayerPos(i, X, Y, Z);
  157.                 SetCameraBehindPlayer(i);
  158.                 return 1;
  159.             }
  160.  
  161.             if(LeftRight == KEY_RIGHT)
  162.             {  
  163.                 A += -90;
  164.                 X += floatmul(floatsin(-A, degrees), SetDistance[i]); // Made by Nero_3D
  165.                 Y += floatmul(floatcos(-A, degrees), SetDistance[i]); // Made by Nero_3D
  166.                
  167.                 SetPlayerPos(i, X, Y, Z);
  168.                 SetCameraBehindPlayer(i);
  169.                 return 1;
  170.             }
  171.  
  172.             if(LeftRight == KEY_LEFT)
  173.             {
  174.                 A += 90;
  175.                 X += floatmul(floatsin(-A, degrees), SetDistance[i]); // Made by Nero_3D
  176.                 Y += floatmul(floatcos(-A, degrees), SetDistance[i]); // Made by Nero_3D
  177.                
  178.                 SetPlayerPos(i, X, Y, Z);
  179.                 SetCameraBehindPlayer(i);
  180.                 return 1;
  181.             }
  182.            
  183.             if(Keys == KEY_JUMP)
  184.             {
  185.                 SetPlayerPos(i, X, Y, Z + SetDistance[i]);
  186.                 SetCameraBehindPlayer(i);
  187.                 return 1;
  188.             }
  189.  
  190.             if(Keys == KEY_SPRINT)
  191.             {
  192.                 SetPlayerPos(i, X, Y, Z - SetDistance[i]);
  193.                 SetCameraBehindPlayer(i);
  194.                 return 1;
  195.             }
  196.            
  197.             if(Keys == KEY_ANALOG_RIGHT)
  198.             {
  199.                 SetPlayerFacingAngle(i, A - (SetDistance[i] * 4));
  200.                 SetCameraBehindPlayer(i);
  201.                 return 1;
  202.             }
  203.            
  204.             if(Keys == KEY_ANALOG_LEFT)
  205.             {
  206.                 SetPlayerFacingAngle(i, A + (SetDistance[i] * 4));
  207.                 SetCameraBehindPlayer(i);
  208.                 return 1;
  209.             }
  210.         }
  211.     }
  212.     return 1;
  213. }
Advertisement
Add Comment
Please, Sign In to add comment