Advertisement
EdoKing

EDWARD ROSE ™️

Jan 14th, 2020
161
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.57 KB | None | 0 0
  1. /*
  2. ANTI FAKE KILL
  3. ----------------
  4. Callbacks:
  5. ----------
  6. OnPlayerFakeKill(playerid, spoofedid, spoofedreason, faketype);
  7. -------------
  8. playerid = the cheater who did a fake kill action
  9. spoofedid = the player alleged to have killed the cheater
  10. spoofedreason = the weapon used in the process (spoofed by the cheater)
  11. faketype 1 = normal fake kill (one time)
  12. faketype 2 = spammed fake kill (must kick or ban instantly)
  13. -=-=-=-=-=--=-=-=
  14. */
  15.  
  16. #if !defined FILTERSCRIPT
  17.  
  18. #if defined _rAntiFakeKill_Included
  19. #endinput
  20. #endif
  21.  
  22. #define _rAntiFakeKill_Included
  23. #define FKI_MAX_ERROR_WARNS 3
  24.  
  25. #include <a_samp>
  26.  
  27. #if defined OnPlayerFakeKill
  28. forward OnPlayerFakeKill(playerid, spoofedid, spoofedreason, faketype);
  29. #endif
  30.  
  31. #if defined FKI_OnPlayerDisconnect
  32. forward FKI_OnPlayerDisconnect(playerid, reason);
  33. #endif
  34.  
  35. #if defined FKI_OnPlayerTakeDamage
  36. forward FKI_OnPlayerTakeDamage(playerid, issuerid, Float:amount, weaponid, bodypart);
  37. #endif
  38.  
  39. #if defined FKI_OnPlayerGiveDamage
  40. forward FKI_OnPlayerGiveDamage(playerid, damagedid, Float:amount, weaponid, bodypart);
  41. #endif
  42.  
  43. #if defined FKI_OnPlayerWeaponShot
  44. forward FKI_OnPlayerWeaponShot(playerid, weaponid, hittype, hitid, Float:fX, Float:fY, Float:fZ);
  45. #endif
  46.  
  47. #if defined FKI_OnPlayerDeath
  48. forward FKI_OnPlayerDeath(playerid, killerid, reason);
  49. #endif
  50.  
  51. #if defined FKI_OnPlayerSpawn
  52. forward FKI_OnPlayerSpawn(playerid);
  53. #endif
  54.  
  55. enum FKI_PLAYER_DATA
  56. {
  57. bool:FkiDmgChk,
  58. bool:FkiSpwnChk,
  59. bool:FkiJustDied,
  60.  
  61. FkiWTicks,
  62.  
  63. FkiDeTimer
  64. }
  65.  
  66. static
  67. FKI_Player[MAX_PLAYERS][FKI_PLAYER_DATA];
  68.  
  69. forward FKI_RJDead(playerid);
  70. public FKI_RJDead(playerid) return FKI_Player[playerid][FkiJustDied] = false;
  71.  
  72. public OnPlayerDisconnect(playerid, reason)
  73. {
  74. FKI_Player[playerid][FkiSpwnChk]= false;
  75. FKI_Player[playerid][FkiDmgChk] = false;
  76. FKI_Player[playerid][FkiWTicks] = 0;
  77. #if defined FKI_OnPlayerDisconnect
  78. return FKI_OnPlayerDisconnect(playerid, reason);
  79. #else
  80. return 1;
  81. #endif
  82. }
  83.  
  84. public OnPlayerDeath(playerid, killerid, reason)
  85. {
  86. if(!FKI_Player[playerid][FkiSpwnChk] || FKI_Player[playerid][FkiJustDied])
  87. {
  88. CallLocalFunction("OnPlayerFakeKill", "iiii", playerid, killerid, reason, 2);
  89. return 0;
  90. }
  91. if(!FKI_Player[playerid][FkiDmgChk] && killerid != INVALID_PLAYER_ID && IsPlayerConnected(killerid))
  92. {
  93. if(!IsKillFalse(reason))
  94. {
  95. #if defined FKI_OnPlayerDeath
  96. return FKI_OnPlayerDeath(playerid, killerid, reason);
  97. #else
  98. return 1;
  99. #endif
  100. }
  101. if(GetPlayerState(killerid) == 2 && !FKI_IsAPlane(GetPlayerVehicleID(playerid)))
  102. {
  103. static Float:TPX, Float:TPY, Float:TPZ;
  104. GetPlayerPos(killerid, TPX, TPY, TPZ);
  105. if(!IsPlayerInRangeOfPoint(playerid, 5.0, TPX, TPY, TPZ))
  106. {
  107. CallLocalFunction("OnPlayerFakeKill", "iiii", playerid, killerid, reason, 1);
  108. return 0;
  109. }
  110. }
  111. else if(!FKI_IsWeaponValid(reason) || reason == 0)
  112. {
  113. FKI_Player[playerid][FkiWTicks]++;
  114. if(FKI_Player[playerid][FkiWTicks] == FKI_MAX_ERROR_WARNS)
  115. {
  116. FKI_Player[playerid][FkiWTicks] = 0;
  117. CallLocalFunction("OnPlayerFakeKill", "iiii", playerid, killerid, reason, 1);
  118. }
  119. }
  120. else CallLocalFunction("OnPlayerFakeKill", "iiii", playerid, killerid, reason, 1);
  121. }
  122. KillTimer(FKI_Player[playerid][FkiDeTimer]);
  123. FKI_Player[playerid][FkiDeTimer] = SetTimerEx("FKI_RJDead", 5000, false, "i", playerid);
  124.  
  125. FKI_Player[playerid][FkiJustDied] = true;
  126. FKI_Player[playerid][FkiSpwnChk] = false;
  127. FKI_Player[playerid][FkiDmgChk] = false;
  128. #if defined FKI_OnPlayerDeath
  129. return FKI_OnPlayerDeath(playerid, killerid, reason);
  130. #else
  131. return 1;
  132. #endif
  133. }
  134.  
  135. public OnPlayerGiveDamage(playerid, damagedid, Float:amount, weaponid, bodypart)
  136. {
  137. if(damagedid != INVALID_PLAYER_ID && IsPlayerConnected(damagedid))
  138. {
  139. FKI_Player[damagedid][FkiDmgChk] = true;
  140. }
  141. #if defined FKI_OnPlayerGiveDamage
  142. return FKI_OnPlayerGiveDamage(playerid, damagedid, Float:amount, weaponid, bodypart);
  143. #else
  144. return 1;
  145. #endif
  146. }
  147.  
  148. public OnPlayerTakeDamage(playerid, issuerid, Float:amount, weaponid, bodypart)
  149. {
  150. if(issuerid != INVALID_PLAYER_ID && IsPlayerConnected(issuerid))
  151. {
  152. FKI_Player[playerid][FkiDmgChk] = true;
  153. }
  154. #if defined FKI_OnPlayerTakeDamage
  155. return FKI_OnPlayerTakeDamage(playerid, issuerid, Float:amount, weaponid, bodypart);
  156. #else
  157. return 1;
  158. #endif
  159. }
  160.  
  161. public OnPlayerWeaponShot(playerid, weaponid, hittype, hitid, Float:fX, Float:fY, Float:fZ)
  162. {
  163. switch(hittype)
  164. {
  165. case BULLET_HIT_TYPE_PLAYER:
  166. {
  167. FKI_Player[hitid][FkiDmgChk] = true;
  168. }
  169. case BULLET_HIT_TYPE_VEHICLE:
  170. {
  171. #if defined foreach
  172. foreach(new i: Player)
  173. {
  174. if(GetPlayerVehicleID(i) == hitid) FKI_Player[i][FkiDmgChk] = true;
  175. }
  176. #else
  177. for(new i, j = GetPlayerPoolSize(); i <= j; i++)
  178. {
  179. if(GetPlayerVehicleID(i) == hitid) FKI_Player[i][FkiDmgChk] = true;
  180. }
  181. #endif
  182. }
  183. }
  184. #if defined FKI_OnPlayerWeaponShot
  185. return FKI_OnPlayerWeaponShot(playerid, weaponid, hittype, hitid, Float:fX, Float:fY, Float:fZ);
  186. #else
  187. return 1;
  188. #endif
  189. }
  190.  
  191. public OnPlayerSpawn(playerid)
  192. {
  193. FKI_Player[playerid][FkiSpwnChk] = true;
  194. #if defined FKI_OnPlayerSpawn
  195. return FKI_OnPlayerSpawn(playerid);
  196. #else
  197. return 1;
  198. #endif
  199. }
  200.  
  201. static FKI_IsWeaponValid(Weapon)
  202. return ( 0 <= Weapon <= 18 || 22 <= Weapon <= 46 );
  203.  
  204. static FKI_IsAPlane(vehicleid)
  205. {
  206. switch(GetVehicleModel(vehicleid))
  207. {
  208. case 592, 577, 511, 512, 593, 520, 553, 476, 519, 460, 513, 464: return 1;
  209. case 548, 425, 417, 487, 488, 497, 563, 447, 469, 465, 501: return 1;
  210. }
  211. return 0;
  212. }
  213.  
  214. static IsKillFalse(killid)
  215. {
  216. switch(killid)
  217. {
  218. case 54, 255, 53, 51, 47: return 1;
  219. }
  220. return 0;
  221. }
  222. #if defined _ALS_OnPlayerSpawn
  223. #undef OnPlayerSpawn
  224. #else
  225. #define _ALS_OnPlayerSpawn
  226. #endif
  227.  
  228. #define OnPlayerSpawn FKI_OnPlayerSpawn
  229.  
  230. #if defined _ALS_OnPlayerDeath
  231. #undef OnPlayerDeath
  232. #else
  233. #define _ALS_OnPlayerDeath
  234. #endif
  235.  
  236. #define OnPlayerDeath FKI_OnPlayerDeath
  237.  
  238. #if defined _ALS_OnPlayerTakeDamage
  239. #undef OnPlayerTakeDamage
  240. #else
  241. #define _ALS_OnPlayerTakeDamage
  242. #endif
  243.  
  244. #define OnPlayerTakeDamage FKI_OnPlayerTakeDamage
  245.  
  246. #if defined _ALS_OnPlayerGiveDamage
  247. #undef OnPlayerGiveDamage
  248. #else
  249. #define _ALS_OnPlayerGiveDamage
  250. #endif
  251.  
  252. #define OnPlayerGiveDamage FKI_OnPlayerGiveDamage
  253.  
  254. #if defined _ALS_OnPlayerWeaponShot
  255. #undef OnPlayerWeaponShot
  256. #else
  257. #define _ALS_OnPlayerWeaponShot
  258. #endif
  259.  
  260. #define OnPlayerWeaponShot FKI_OnPlayerWeaponShot
  261.  
  262. #if defined _ALS_OnPlayerDisconnect
  263. #undef OnPlayerDisconnect
  264. #else
  265. #define _ALS_OnPlayerDisconnect
  266. #endif
  267.  
  268. #define OnPlayerDisconnect FKI_OnPlayerDisconnect
  269.  
  270. #endif
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement