Advertisement
Ranko_

Anti-Bot System By: Ranko

Oct 14th, 2018
833
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.14 KB | None | 0 0
  1. //==============================================================================
  2. // SYSTEM Anti-Bot
  3. // SCRIPTED BY Ranko
  4. // VERSION v1.0
  5. //==============================================================================
  6.  
  7. #include "a_samp.inc"
  8. new var[MAX_PLAYERS] = {-1,...}, warns[MAX_PLAYERS] = {0,...}, bool:npc[MAX_PLAYERS] = {false,...}, MAX_PLAYERS_ = MAX_PLAYERS;
  9. public OnFilterScriptInit()
  10. {
  11. SendRconCommand("reloadbans");
  12. print("Anti-bot sistem ukljucen");
  13. return 1;
  14. }
  15. public OnPlayerConnect(playerid)
  16. {
  17. if(CountIP(GetIP(playerid)) >= 6) return BanAll(playerid), 0;
  18. MAX_PLAYERS_ = playerid > MAX_PLAYERS_ ? playerid : GetHighestID(),
  19. npc[playerid] = bool:IsPlayerNPC(playerid),
  20. var[playerid] = SetTimerEx("BSS",2500,false,"i",playerid),
  21. warns[playerid] = 0;
  22. return 1;
  23. }
  24. public OnPlayerDisconnect(playerid, reason)
  25. {
  26. MAX_PLAYERS_ = GetHighestID(playerid);
  27. if(npc[playerid]) npc[playerid] = false;
  28. if(var[playerid] != -1)
  29. {
  30. KillTimer(var[playerid]);
  31. var[playerid] = -1;
  32. }
  33. warns[playerid] = 0;
  34. return 1;
  35. }
  36. stock CountIP(ip[])
  37. {
  38. new c = 0;
  39. for(new i = 0; i < MAX_PLAYERS; i++) if(IsPlayerConnected(i) && !strcmp(GetIP(i),ip)) c++;
  40. return c;
  41. }
  42. forward BSS(playerid);
  43. public BSS(playerid)
  44. {
  45. new i = GetPlayerPing(playerid);
  46. if(i <= 0 || i >= 50000)
  47. {
  48. if(warns[playerid] >= 1) BanAll(playerid);
  49. else warns[playerid]++, var[playerid] = SetTimerEx("BSS",1500,false,"i",playerid);
  50. }
  51. return 0;
  52. }
  53. stock GetIP(playerid)
  54. {
  55. new ip[16];
  56. GetPlayerIp(playerid,ip,sizeof(ip));
  57. return ip;
  58. }
  59. stock BanAll(playerid)
  60. {
  61. new ip[32];
  62. GetPlayerIp(playerid,ip,sizeof(ip));
  63. for(new i = 0, p = 0; i < MAX_PLAYERS; i++) if(IsPlayerConnected(i) && !npc[i])
  64. {
  65. p = GetPlayerPing(i);
  66. if(i == playerid || !strcmp(ip,GetIP(i)) || p <= 0 || p >= 50000)
  67. {
  68. BanEx(i,"Bot");
  69. if(var[i] != -1)
  70. {
  71. KillTimer(var[i]);
  72. var[i] = -1;
  73. }
  74. }
  75. }
  76. format(ip,sizeof(ip),"banip %s",ip);
  77. return SendRconCommand(ip);
  78. }
  79. stock GetHighestID(exceptof = INVALID_PLAYER_ID)
  80. {
  81. new h = 0;
  82. for(new i = 0; i < MAX_PLAYERS; i++) if(IsPlayerConnected(i) && i != exceptof && i > h) h = i;
  83. return h;
  84. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement