Advertisement
icra

Filterscript acd.pwn

Jul 23rd, 2014
467
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 5.54 KB | None | 0 0
  1. /*
  2.     +--------------------------+
  3.     |    _                 |
  4.     |   (_)                |
  5.     |    _  ___ _ __ __ _  |
  6.     |   | |/ __| '__/ _` | |
  7.     |   | | (__| | | (_| | |
  8.     |   |_|\___|_|  \__,_| |
  9.     |                          |
  10.     +--------------------------+
  11.    
  12.     [!] Automatic Cheats Detector R1.0
  13.         [!] Developed by icra
  14.     [!] Please, keep credits!
  15. */
  16.  
  17.  
  18. #include <a_samp>
  19.  
  20. #define SCRIPT_BUILD    "1.0"
  21.  
  22. // Stores player positions at spawn so it can be restored after cheat check.
  23. new
  24.     Float:pSpawn[MAX_PLAYERS][4],
  25.     pInterior[MAX_PLAYERS];
  26.  
  27. // Amount of banned/kicked players (resets every gamemode restart)
  28. new BannedPlayers = 0,
  29.     KickedPlayers = 0;
  30.  
  31. // Main configuration, type "true" or "false" to enable/disable something.
  32. new
  33.     bool:ACDToggled = true, // Enable or disables the cheat check. Console / RCON (in game) command: togacd
  34.     bool:LOGToggled = true, // Stores when a player get kicked/banned for mod detected. Console / RCON (in game) command: togacdlogs
  35.     bool:BANToggled = false; // Bans player IP Address if mod is detected, else kicks him. Console / RCON (in game) command: togacdban
  36.  
  37. public OnFilterScriptInit() {
  38.     print("Automatic Cheats Detector "SCRIPT_BUILD" loaded!");
  39.     print("For a command list type: \"acdhelp\"");
  40.     return true;
  41. }
  42.  
  43. public OnPlayerSpawn(playerid) {
  44.     if(ACDToggled) {
  45.         SetCameraBehindPlayer(playerid); // Stops possible camera moving
  46.         TogglePlayerControllable(playerid, false); // Freezes the player
  47.        
  48.         GetPlayerPos(playerid, pSpawn[playerid][0], pSpawn[playerid][1], pSpawn[playerid][2]); // Stores current player position
  49.         GetPlayerFacingAngle(playerid, pSpawn[playerid][3]); // Stores current player facing angle
  50.         pInterior[playerid] = GetPlayerInterior(playerid); // Stores current player interior
  51.        
  52.         SetPlayerPos(playerid,-1155.2751,29.5401,14.1484); // Sets players pos to a random one (different by the stored)
  53.         SetPlayerFacingAngle(playerid,134.4939); // Sets player facing angle to a random one (different by the stored)
  54.         SetPlayerInterior(playerid,pInterior[playerid]+random(15)+playerid); // Sets player interior to a random one (different by the stored)
  55.        
  56.         // Note: pInterior[playerid]+random(15)+playerid is an algorithm that sets player in a unique interior and a different from its.
  57.        
  58.         SetTimerEx("HackShieldTimer", 2000, false, "i", playerid); // Starts timer to check if player is hacking or not
  59.     }
  60.     return true;
  61. }
  62.  
  63. public OnRconCommand(cmd[]) {
  64.     // Toggle commands
  65.     if(!strcmp(cmd,"togacd",true)) {
  66.         if(ACDToggled) {
  67.             print("Automatic Cheats Detector disabled");
  68.             ACDToggled = false;
  69.         } else {
  70.             print("Automatic Cheats Detector enabled");
  71.             ACDToggled = true;
  72.         }
  73.     } else if(!strcmp(cmd,"togacdlogs",true)) {
  74.         if(LOGToggled) {
  75.             print("Automatic Cheats Detector Logs disabled");
  76.             LOGToggled = false;
  77.         } else {
  78.             print("Automatic Cheats Detector Logs enabled");
  79.             LOGToggled = true;
  80.         }
  81.     } else if(!strcmp(cmd,"togacdban",true)) {
  82.         if(BANToggled) {
  83.             print("Automatic Cheats Detector Ban disabled");
  84.             BANToggled = false;
  85.         } else {
  86.             print("Automatic Cheats Detector Ban enabled");
  87.             BANToggled = true;
  88.         }
  89.     } else if(!strcmp(cmd,"acdstatus",true)) {
  90.         print("ACD Status:");
  91.         printf("Banned %i players, Kicked %i players, Avoided %i possible cheaters.",BannedPlayers,KickedPlayers,KickedPlayers+BannedPlayers);
  92.         if(ACDToggled) print("ACD currently enabled"); else print("ACD currently disabled");
  93.         if(LOGToggled) print("LOGS currently enabled"); else print("LOGS currently disabled");
  94.         if(BANToggled) print("BAN currently enabled"); else print("BAN currently disabled");
  95.     } else if(!strcmp(cmd,"acdhelp",true)) {
  96.         print("ACD Filterscript developed by icra:");
  97.         print("(/)togacd: Enable or disables the cheat check.");
  98.         print("(/)togacdlogs: Stores when a player get kicked/banned for mod detected.");
  99.         print("(/)togacdban: Bans player IP Address if mod is detected, else kicks him.");
  100.         print("(/)acdstatus: Check ACD status.");
  101.         print("[!] Note: Commands settings aren't permanent. Please, edit acd.pwn to configure permanently the filterscript.");
  102.     }
  103.     return true;
  104. }
  105.  
  106. forward HackShieldTimer(playerid);
  107. public HackShieldTimer(playerid) {
  108.     new Float:pVector[3], playeraddress[14], playername[MAX_PLAYER_NAME];
  109.    
  110.     GetPlayerCameraPos(playerid, pVector[0], pVector[1], pVector[2]); // Stores into pVector player's camera to detect if he's cheating.
  111.    
  112.     if(pVector[2] > 15.3) { // Checks if player camera has moved. If true, there is an unallowed mod installed.
  113.         GetPlayerIp(playerid, playeraddress, sizeof(playeraddress)); // Stores player IP Address to report it in logs.
  114.         GetPlayerName(playerid, playername, sizeof(playername));
  115.        
  116.         if(LOGToggled) printf("[!ACD!] Kicked player %s (%i), hacks detected. IP: %s",playername,playerid,playeraddress); // Sends a log to admin console.
  117.         GameTextForPlayer(playerid, "~r~UNALLOWED GAME MODIFICATION", 2, 5000); // Notificate user.
  118.        
  119.         if(BANToggled) Kick(playerid), KickedPlayers++; else Ban(playerid), BannedPlayers++; // Kick / Ban the player (depends on your config)
  120.     } else {
  121.         SetPlayerPos(playerid, pSpawn[playerid][0], pSpawn[playerid][1], pSpawn[playerid][2]); // Stores back player position
  122.         SetPlayerFacingAngle(playerid, pSpawn[playerid][3]); // Stores back player facing angle
  123.         SetPlayerInterior(playerid, pInterior[playerid]); // Stores back player interior
  124.        
  125.         TogglePlayerControllable(playerid, true); // Allows players move again
  126.     }
  127.     return true;
  128. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement