Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- +--------------------------+
- | _ |
- | (_) |
- | _ ___ _ __ __ _ |
- | | |/ __| '__/ _` | |
- | | | (__| | | (_| | |
- | |_|\___|_| \__,_| |
- | |
- +--------------------------+
- [!] Automatic Cheats Detector R1.0
- [!] Developed by icra
- [!] Please, keep credits!
- */
- #include <a_samp>
- #define SCRIPT_BUILD "1.0"
- // Stores player positions at spawn so it can be restored after cheat check.
- new
- Float:pSpawn[MAX_PLAYERS][4],
- pInterior[MAX_PLAYERS];
- // Amount of banned/kicked players (resets every gamemode restart)
- new BannedPlayers = 0,
- KickedPlayers = 0;
- // Main configuration, type "true" or "false" to enable/disable something.
- new
- bool:ACDToggled = true, // Enable or disables the cheat check. Console / RCON (in game) command: togacd
- bool:LOGToggled = true, // Stores when a player get kicked/banned for mod detected. Console / RCON (in game) command: togacdlogs
- bool:BANToggled = false; // Bans player IP Address if mod is detected, else kicks him. Console / RCON (in game) command: togacdban
- public OnFilterScriptInit() {
- print("Automatic Cheats Detector "SCRIPT_BUILD" loaded!");
- print("For a command list type: \"acdhelp\"");
- return true;
- }
- public OnPlayerSpawn(playerid) {
- if(ACDToggled) {
- SetCameraBehindPlayer(playerid); // Stops possible camera moving
- TogglePlayerControllable(playerid, false); // Freezes the player
- GetPlayerPos(playerid, pSpawn[playerid][0], pSpawn[playerid][1], pSpawn[playerid][2]); // Stores current player position
- GetPlayerFacingAngle(playerid, pSpawn[playerid][3]); // Stores current player facing angle
- pInterior[playerid] = GetPlayerInterior(playerid); // Stores current player interior
- SetPlayerPos(playerid,-1155.2751,29.5401,14.1484); // Sets players pos to a random one (different by the stored)
- SetPlayerFacingAngle(playerid,134.4939); // Sets player facing angle to a random one (different by the stored)
- SetPlayerInterior(playerid,pInterior[playerid]+random(15)+playerid); // Sets player interior to a random one (different by the stored)
- // Note: pInterior[playerid]+random(15)+playerid is an algorithm that sets player in a unique interior and a different from its.
- SetTimerEx("HackShieldTimer", 2000, false, "i", playerid); // Starts timer to check if player is hacking or not
- }
- return true;
- }
- public OnRconCommand(cmd[]) {
- // Toggle commands
- if(!strcmp(cmd,"togacd",true)) {
- if(ACDToggled) {
- print("Automatic Cheats Detector disabled");
- ACDToggled = false;
- } else {
- print("Automatic Cheats Detector enabled");
- ACDToggled = true;
- }
- } else if(!strcmp(cmd,"togacdlogs",true)) {
- if(LOGToggled) {
- print("Automatic Cheats Detector Logs disabled");
- LOGToggled = false;
- } else {
- print("Automatic Cheats Detector Logs enabled");
- LOGToggled = true;
- }
- } else if(!strcmp(cmd,"togacdban",true)) {
- if(BANToggled) {
- print("Automatic Cheats Detector Ban disabled");
- BANToggled = false;
- } else {
- print("Automatic Cheats Detector Ban enabled");
- BANToggled = true;
- }
- } else if(!strcmp(cmd,"acdstatus",true)) {
- print("ACD Status:");
- printf("Banned %i players, Kicked %i players, Avoided %i possible cheaters.",BannedPlayers,KickedPlayers,KickedPlayers+BannedPlayers);
- if(ACDToggled) print("ACD currently enabled"); else print("ACD currently disabled");
- if(LOGToggled) print("LOGS currently enabled"); else print("LOGS currently disabled");
- if(BANToggled) print("BAN currently enabled"); else print("BAN currently disabled");
- } else if(!strcmp(cmd,"acdhelp",true)) {
- print("ACD Filterscript developed by icra:");
- print("(/)togacd: Enable or disables the cheat check.");
- print("(/)togacdlogs: Stores when a player get kicked/banned for mod detected.");
- print("(/)togacdban: Bans player IP Address if mod is detected, else kicks him.");
- print("(/)acdstatus: Check ACD status.");
- print("[!] Note: Commands settings aren't permanent. Please, edit acd.pwn to configure permanently the filterscript.");
- }
- return true;
- }
- forward HackShieldTimer(playerid);
- public HackShieldTimer(playerid) {
- new Float:pVector[3], playeraddress[14], playername[MAX_PLAYER_NAME];
- GetPlayerCameraPos(playerid, pVector[0], pVector[1], pVector[2]); // Stores into pVector player's camera to detect if he's cheating.
- if(pVector[2] > 15.3) { // Checks if player camera has moved. If true, there is an unallowed mod installed.
- GetPlayerIp(playerid, playeraddress, sizeof(playeraddress)); // Stores player IP Address to report it in logs.
- GetPlayerName(playerid, playername, sizeof(playername));
- if(LOGToggled) printf("[!ACD!] Kicked player %s (%i), hacks detected. IP: %s",playername,playerid,playeraddress); // Sends a log to admin console.
- GameTextForPlayer(playerid, "~r~UNALLOWED GAME MODIFICATION", 2, 5000); // Notificate user.
- if(BANToggled) Kick(playerid), KickedPlayers++; else Ban(playerid), BannedPlayers++; // Kick / Ban the player (depends on your config)
- } else {
- SetPlayerPos(playerid, pSpawn[playerid][0], pSpawn[playerid][1], pSpawn[playerid][2]); // Stores back player position
- SetPlayerFacingAngle(playerid, pSpawn[playerid][3]); // Stores back player facing angle
- SetPlayerInterior(playerid, pInterior[playerid]); // Stores back player interior
- TogglePlayerControllable(playerid, true); // Allows players move again
- }
- return true;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement