1
0

OPJV.inc 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121
  1. /*
  2. OPJV - OnPlayerJackVehicle by Gamer931215
  3. Inspired by OnPlayerShootPlayer and OnPlayerDamageVehicle by Wups
  4. Free to use/distribute as long you keep these credits on top!
  5. */
  6. #include <a_samp>
  7. #if defined OPJV_INC
  8. #endinput
  9. #endif
  10. #define OPJV_INC
  11. #define HOLDING(%0) \
  12. ((newkeys & (%0)) == (%0))
  13. #define RELEASED(%0) \
  14. (((newkeys & (%0)) != (%0)) && ((oldkeys & (%0)) == (%0)))
  15. #define PRESSED(%0) \
  16. (((newkeys & (%0)) == (%0)) && ((oldkeys & (%0)) != (%0)))
  17. #tryinclude <foreach>
  18. #if !defined foreach
  19. #define foreach(%1,%2) for (new %2 = 0; %2 < MAX_PLAYERS; %2++) if (IsPlayerConnected(%2))
  20. #define __SSCANF_FOREACH__
  21. #endif
  22. enum _pInfo
  23. {
  24. bool:IsPlayerHoldingNinjaKeys,
  25. PlayerJackingPlayerid
  26. }
  27. new JackDetails[MAX_PLAYERS][_pInfo];
  28. forward OnPlayerJackVehicle(playerid,victimid,vehicleid,bool:ninjajack);
  29. forward OnPlayerGotJacked(playerid,jackerid,vehicleid);
  30. public OnPlayerConnect(playerid)
  31. {
  32. JackDetails[playerid][PlayerJackingPlayerid] = -1;
  33. JackDetails[playerid][IsPlayerHoldingNinjaKeys] = false;
  34. return CallLocalFunction("OPJV_OnPlayerConnect","i",playerid);
  35. }
  36. #if defined _ALS_OnPlayerConnect
  37. #undef OnPlayerConnect
  38. #else
  39. #define _ALS_OnPlayerConnect
  40. #endif
  41. #define OnPlayerConnect OPJV_OnPlayerConnect
  42. forward OPJV_OnPlayerConnect(playerid);
  43. public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
  44. {
  45. if(!ispassenger)
  46. {
  47. foreach(Player,i)
  48. {
  49. if(!IsPlayerConnected(i) || !IsPlayerInAnyVehicle(i)) continue;
  50. if(playerid != i && GetPlayerVehicleID(i) == vehicleid && GetPlayerState(i) == PLAYER_STATE_DRIVER)
  51. {
  52. JackDetails[i][PlayerJackingPlayerid] = playerid;
  53. CallLocalFunction("OnPlayerJackVehicle","iiib",playerid,i,vehicleid,JackDetails[playerid][IsPlayerHoldingNinjaKeys]);
  54. SetTimerEx("OPJV_ResetPlayerJack",15000,false,"i",i);
  55. }
  56. }
  57. }
  58. return CallLocalFunction("OPJV_OnPlayerEnterVehicle","iii",playerid,vehicleid,ispassenger);
  59. }
  60. #if defined _ALS_OnPlayerEnterVehicle
  61. #undef OnPlayerEnterVehicle
  62. #else
  63. #define _ALS_OnPlayerEnterVehicle
  64. #endif
  65. #define OnPlayerEnterVehicle OPJV_OnPlayerEnterVehicle
  66. forward OPJV_OnPlayerEnterVehicle(playerid,vehicleid,ispassenger);
  67. public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
  68. {
  69. if (HOLDING(KEY_SPRINT) || PRESSED(KEY_SPRINT) || RELEASED(KEY_SPRINT))
  70. {
  71. if(JackDetails[playerid][IsPlayerHoldingNinjaKeys] == false)
  72. {
  73. JackDetails[playerid][IsPlayerHoldingNinjaKeys] = true;
  74. SetTimerEx("OPJV_ResetPlayerKeys",2000,false,"i",playerid);
  75. }
  76. }
  77. return CallLocalFunction("OPJV_OnPlayerKeyStateChange","iii",playerid,newkeys,oldkeys);
  78. }
  79. #if defined _ALS_OnPlayerKeyStateChange
  80. #undef OnPlayerKeyStateChange
  81. #else
  82. #define _ALS_OnPlayerKeyStateChange
  83. #endif
  84. #define OnPlayerKeyStateChange OPJV_OnPlayerKeyStateChange
  85. forward OPJV_OnPlayerKeyStateChange(playerid,newkeys,oldkeys);
  86. public OnPlayerStateChange(playerid,newstate,oldstate)
  87. {
  88. if(oldstate == PLAYER_STATE_DRIVER && JackDetails[playerid][PlayerJackingPlayerid] > -1 && GetPlayerVehicleID(JackDetails[playerid][PlayerJackingPlayerid]) == GetPlayerVehicleID(playerid))
  89. {
  90. CallLocalFunction("OnPlayerGotJacked","iii",playerid,JackDetails[playerid][PlayerJackingPlayerid],GetPlayerVehicleID(playerid));
  91. }
  92. return CallLocalFunction("OPJV_OnPlayerStateChange","iii",playerid,newstate,oldstate);
  93. }
  94. #if defined _ALS_OnPlayerStateChange
  95. #undef OnPlayerStateChange
  96. #else
  97. #define _ALS_OnPlayerStateChange
  98. #endif
  99. #define OnPlayerStateChange OPJV_OnPlayerStateChange
  100. forward OPJV_OnPlayerStateChange(playerid,newstate,oldstate);
  101. forward OPJV_ResetPlayerJack(playerid);
  102. public OPJV_ResetPlayerJack(playerid)
  103. {
  104. JackDetails[playerid][PlayerJackingPlayerid] = -1;
  105. }
  106. forward OPJV_ResetPlayerKeys(playerid);
  107. public OPJV_ResetPlayerKeys(playerid)
  108. {
  109. JackDetails[playerid][IsPlayerHoldingNinjaKeys] = false;
  110. }