Guest User

Skydive v0.1

a guest
Jun 15th, 2013
279
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. /*
  2.     By [DOG]irinel1996, special thanks to RyDeR` for Map Andreas include version.
  3.     Official thread: http://forum.sa-mp.com/showthread.php?t=356826
  4. */
  5. #include <mapandreas>
  6.  
  7. #define TOTAL_ANIMS                     (10)
  8.  
  9. forward OnPlayerOpenParachute(playerid, altitude);
  10.  
  11. new
  12.     gAnims_Skydive[TOTAL_ANIMS] = {
  13.     958, 959, 961, 962,
  14.     963, 965, 971, 976,
  15.     978, 1134
  16. };
  17.  
  18. new
  19.     bool:gLock_Callback[MAX_PLAYERS];
  20.  
  21. stock IsPlayerSkyDiving(playerid)
  22. {
  23.     for (new idx = 0; idx < TOTAL_ANIMS; idx++) {
  24.         if (GetPlayerAnimationIndex(playerid) == gAnims_Skydive[idx]) {
  25.             return 1;
  26.         }
  27.     }
  28.     return 0;
  29. }
  30.  
  31. stock GetPlayerParachuteState(playerid)
  32. {
  33.     new
  34.         idx = GetPlayerAnimationIndex(playerid);
  35.  
  36.     if (idx == gAnims_Skydive[4] || idx == gAnims_Skydive[5] || idx == gAnims_Skydive[7] || idx == gAnims_Skydive[8]) {
  37.         return 1;
  38.     } else if (idx == gAnims_Skydive[6]) {
  39.         return 2;
  40.     } else {
  41.         return 0;
  42.     }
  43. }
  44.  
  45. stock GetPlayerAltitude(playerid)
  46. {
  47.     new Float:Pos[3];
  48.     GetPlayerPos(playerid, Pos[0], Pos[1], Pos[2]);
  49.    
  50.     new
  51.         Float:ground = GetPointZPos(Pos[0], Pos[1]),
  52.         Float:altitude = (Pos[2] - ground)
  53.     ;
  54.  
  55.     return floatround(altitude, floatround_round);
  56. }
  57.  
  58. public OnPlayerUpdate(playerid)
  59. {
  60.     if (gLock_Callback[playerid]) {
  61.         if (GetPlayerParachuteState(playerid) != 0 && IsPlayerSkyDiving(playerid))
  62.             gLock_Callback[playerid] = false;
  63.     }
  64.     #if defined khJGcUybTx
  65.         return khJGcUybTx(playerid);
  66.     #else
  67.         return true;
  68.     #endif
  69. }
  70.  
  71. #define OnPlayerUpdate khJGcUybTx
  72.  
  73. #if defined khJGcUybTx
  74.     forward  OnPlayerUpdate(playerid);
  75. #endif
  76.  
  77. //---------------------------------------------------//
  78.  
  79. public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
  80. {
  81.     if(GetPlayerState(playerid) == PLAYER_STATE_ONFOOT)
  82.     {
  83.         if(GetPlayerWeapon(playerid) == 46)
  84.         {
  85.             if(newkeys & KEY_FIRE)
  86.             {
  87.                 if(GetPlayerParachuteState(playerid) == 0) {
  88.                     if (!gLock_Callback[playerid]) {
  89.                         gLock_Callback[playerid] = true;
  90.                         CallLocalFunction("OnPlayerOpenParachute", "dd", playerid, GetPlayerAltitude(playerid));
  91.                     }
  92.                 }
  93.             }
  94.         }
  95.     }
  96.    
  97.     #if defined YxTcODfbXm
  98.         return YxTcODfbXm(playerid, newkeys, oldkeys);
  99.     #else
  100.         return true;
  101.     #endif
  102. }
  103.  
  104. #define OnPlayerKeyStateChange YxTcODfbXm
  105.  
  106. #if defined YxTcODfbXm
  107.     forward  OnPlayerKeyStateChange(playerid, newkeys, oldkeys);
  108. #endif
Advertisement
Add Comment
Please, Sign In to add comment