Advertisement
Tion

Anticheat Verion 1.1 - Filterscript

May 28th, 2011
1,541
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 9.16 KB | None | 0 0
  1. #include <a_samp>
  2.  
  3. #define Anticheat                       true
  4. #define function%1(%2)                  forward%1(%2);public%1(%2)
  5. #define ConnectionCheck(%1);            if(!IsPlayerConnected(%1)) { return 1; }
  6. #define ConnectionBreakCheck(%1);       if(!IsPlayerConnected(%1)) { break; }
  7. #define PlayerName(%1,%2);              new %2[MAX_PLAYER_NAME]; GetPlayerName(%1, %2, sizeof(%2));
  8. #define Log(%1,%2);                     { new _string[128]; format(_string, 128, %1, %2); _ANTICHEAT_Log(_string); }
  9. #define KickPlayer(%1,%2,%3);           { new _string[128]; format(_string, 128, %1, %2); SendClientMessageToAll(0xFFFF00AA, _string); Kick(%3); }
  10. #define WarnPlayer(%1,%2,%3);           { new _string[128]; format(_string, 128, %2, %3); SendClientMessage(%1, 0xFFFF00AA, _string); }
  11.  
  12. new timer;
  13.  
  14. enum PlayerInfos
  15. {
  16.     bool: GatMoney,
  17.     pMoney,
  18.     bool: GatHealth,
  19.     Float: pHealth,
  20.     bool: GatArmour,
  21.     Float: pArmour,
  22.     bool: PlayerLooseMoney,
  23.     pDriveBys
  24. }
  25.  
  26. new Player[MAX_PLAYERS][PlayerInfos];
  27.  
  28. enum AnticheatInfos
  29. {
  30.     aName[128],
  31.     aValue      // Why not using bool's ? You will see later ;)
  32. }
  33.  
  34. new AnticheatInfo[4][AnticheatInfos] = {
  35.     {"Moneycheat",      1},
  36.     {"Healhack",        1},
  37.     {"Armourhack",      1},
  38.     {"DriveBy",         1}
  39. };
  40.  
  41. enum PickupInfos
  42. {
  43.     bool: pUsed,
  44.     pID,
  45.     pModel,
  46.     pType,
  47.     Float:pX,
  48.     Float:pY,
  49.     Float:pZ,
  50.     pVirtualworld
  51. }
  52.  
  53. new PickupInfo[MAX_PICKUPS][PickupInfos];
  54.  
  55. public OnFilterScriptInit()
  56. {
  57.     printf("* Anticheat ( Beta ) by Tion loadet");
  58.     timer = SetTimer("_ANTICHEAT_Main", 2000, true);
  59.     return true;
  60. }
  61.  
  62. public OnFilterScriptExit()
  63. {
  64.     printf("* Anticheat ( Beta ) by Tion unloadet");
  65.     KillTimer(timer);
  66.     return true;
  67. }
  68.  
  69. public OnPlayerDeath(playerid, killerid, reason)
  70. {
  71.     new vehicleid;
  72.     new vehiclemodel;
  73.     if(GetPlayerState(killerid) == PLAYER_STATE_DRIVER)
  74.     {
  75.         vehicleid = GetPlayerVehicleID(killerid);
  76.         vehiclemodel = GetVehicleModel(vehicleid);
  77.         if(IsPlayerInAnyVehicle(playerid)) { return true; }
  78.         if(vehiclemodel == 425) { return true; } // Hunter
  79.         if(vehiclemodel == 432) { return true; } // Rhino
  80.         if(vehiclemodel == 447) { return true; } // Seasparrow
  81.         if(vehiclemodel == 472) { return true; } // Not shure, I think Coastguard can shoot ?!?
  82.         if(vehiclemodel == 520) { return true; } // Hydra
  83.         if(AnticheatInfo[3][aValue] == 1)            // Testing vor DrivyBy - if activatet
  84.         {
  85.             Player[killerid][pDriveBys]++;
  86.             if(Player[killerid][pDriveBys] > 3)
  87.             {
  88.                 PlayerName(killerid, Name);
  89.                 KickPlayer("Anticheat: %s wurde wegen DrivyBy gekickt", Name, killerid);
  90.                 Player[killerid][pDriveBys] = 0;
  91.             }
  92.             else
  93.             {
  94.                 WarnPlayer(killerid, "Anticheat: DriveBy ist auf diesem Server verboten, Warnung %d", Player[killerid][pDriveBys]);
  95.             }
  96.         }
  97.     }
  98.     return 1;
  99. }
  100.  
  101. public OnPlayerConnect(playerid)
  102. {
  103.     Player[playerid][GatMoney]          = false;
  104.     Player[playerid][pMoney]            = 10000;   // I dont know why but while connection on a Server i always have $10.000 on my hand ?!?
  105.     Player[playerid][GatHealth]         = false;
  106.     Player[playerid][pHealth]           = 100;
  107.     Player[playerid][GatArmour]         = false;
  108.     Player[playerid][pArmour]           = 0;
  109.     Player[playerid][PlayerLooseMoney]  = false;
  110.     Player[playerid][pDriveBys]         = 0;
  111.     return true;
  112. }
  113.  
  114. public OnPlayerPickUpPickup(playerid, pickupid)
  115. {
  116.     for(new i = 0; i < MAX_PICKUPS; i++)
  117.     {
  118.         if((PickupInfo[i][pUsed] == true) && (pickupid == PickupInfo[i][pID]))
  119.         {
  120.             if(PickupInfo[i][pModel] == 1240) { Player[playerid][GatHealth] = true; _ANTICHEAT_SetPlayerHealth(playerid, 100); } // Heal Pickup
  121.             if(PickupInfo[i][pModel] == 1242) { Player[playerid][GatArmour] = true; _ANTICHEAT_SetPlayerArmour(playerid, 100); } // Armour Pickup
  122.         }
  123.     }
  124. }
  125.  
  126. // Das AntiMoney-System | The AntiMoney-System
  127.  
  128. function _ANTICHEAT_GivePlayerMoney(playerid, money)
  129. {
  130.     ConnectionCheck(playerid);
  131.     Player[playerid][GatMoney] = true;
  132.     Player[playerid][pMoney] += money;
  133.     GivePlayerMoney(playerid, money);
  134.     return true;
  135. }
  136.  
  137. function _ANTICHEAT_ResetPlayerMoney(playerid)
  138. {
  139.     ConnectionCheck(playerid);
  140.     Player[playerid][pMoney] = 0;
  141.     ResetPlayerMoney(playerid);
  142.     return true;
  143. }
  144.  
  145. function _ANTICHEAT_GetPlayerMoney(playerid)
  146. {
  147.     ConnectionCheck(playerid);
  148.     return Player[playerid][pMoney];
  149. }
  150.  
  151. // Das Anti-Healhack-System | The Antihealhacksystem
  152.  
  153. function _ANTICHEAT_SetPlayerHealth(playerid, Float: health)
  154. {
  155.     Player[playerid][GatHealth] = true;
  156.     Player[playerid][pHealth] = health;
  157.     SetPlayerHealth(playerid, health);
  158.     return true;
  159. }
  160.  
  161. function _ANTICHEAT_GetPlayerHealth(playerid, &Float: health)
  162. {
  163.     health = Player[playerid][pHealth];
  164.     return true;
  165. }
  166.  
  167. // Das Anti-Armourhack-System | The Anti-Armourhack-System
  168.  
  169. function _ANTICHEAT_SetPlayerArmour(playerid, Float: armour)
  170. {
  171.     Player[playerid][GatArmour] = true;
  172.     Player[playerid][pArmour] = armour;
  173.     SetPlayerArmour(playerid, armour);
  174.     return true;
  175. }
  176.  
  177. function _ANTICHEAT_GetPlayerArmour(playerid, &Float: armour)
  178. {
  179.     armour = Player[playerid][pArmour];
  180.     return true;
  181. }
  182.  
  183. function _ANTICHEAT_CreatePickup(model, type, Float:X, Float:Y, Float:Z, Virtualworld)
  184. {
  185.     for(new i = 0; i < MAX_PICKUPS; i++)
  186.     {
  187.         if(PickupInfo[i][pUsed] == false)
  188.         {
  189.             PickupInfo[i][pUsed] = true;
  190.             PickupInfo[i][pType] = type;
  191.             PickupInfo[i][pX] = X;
  192.             PickupInfo[i][pY] = X;
  193.             PickupInfo[i][pZ] = Z;
  194.             PickupInfo[i][pVirtualworld] = Virtualworld;
  195.             PickupInfo[i][pID] = CreatePickup(model, type, X, Y, Z, Virtualworld);
  196.             return PickupInfo[i][pID];
  197.         }
  198.     }
  199.     return -1;
  200. }
  201.  
  202. function _ANTICHEAT_AddStaticPickup(model, type, Float:X, Float:Y, Float:Z, Virtualworld)
  203. {
  204.     for(new i = 0; i < MAX_PICKUPS; i++)
  205.     {
  206.         if(PickupInfo[i][pUsed] == false)
  207.         {
  208.             PickupInfo[i][pUsed] = true;
  209.             PickupInfo[i][pType] = type;
  210.             PickupInfo[i][pX] = X;
  211.             PickupInfo[i][pY] = X;
  212.             PickupInfo[i][pZ] = Z;
  213.             PickupInfo[i][pVirtualworld] = Virtualworld;
  214.             PickupInfo[i][pID] = CreatePickup(model, type, X, Y, Z, Virtualworld);
  215.             return true;
  216.         }
  217.     }
  218.     return false;
  219. }
  220.  
  221. function _ANTICHEAT_DestroyPickup(pickup)
  222. {
  223.     for(new i = 0; i < MAX_PICKUPS; i++)
  224.     {
  225.         if(pickup == PickupInfo[i][pID])
  226.         {
  227.             DestroyPickup(PickupInfo[i][pID]);
  228.             PickupInfo[i][pUsed] = false;
  229.             return true;
  230.         }
  231.     }
  232.     return false;
  233. }
  234.  
  235. function _ANTICHEAT_Main()
  236. {
  237.     new Float: PlayerHealth, Float: PlayerArmour;
  238.     for(new i = 0; i < MAX_PLAYERS; i++)
  239.     {
  240.         // Vorbereitung durch Onlinecheck und herausfinden des Namens | Preparing with Onlinechack and finding out the name
  241.         ConnectionBreakCheck(i);
  242.         PlayerName(i, Name);
  243.         // Antimoneyhack | Antimoneyhack
  244.         if(AnticheatInfo[0][aValue] == 1)
  245.         {
  246.             if(Player[i][GatMoney] == false)
  247.             {
  248.                 if(GetPlayerMoney(i) > Player[i][pMoney]) { ResetPlayerMoney(i); GivePlayerMoney(i, Player[i][pMoney]); Log("%s Moneycheat", Name); }
  249.                 if(GetPlayerMoney(i) < Player[i][pMoney]) { _ANTICHEAT_GivePlayerMoney(i, -(Player[i][pMoney] - GetPlayerMoney(i))); Player[i][PlayerLooseMoney] = true; }
  250.             }
  251.             Player[i][GatMoney] = false;
  252.         }
  253.         else { _ANTICHEAT_ResetPlayerMoney(i); _ANTICHEAT_GivePlayerMoney(i, GetPlayerMoney(i)); }
  254.         // Anti Healhack | Anti Healhack
  255.         if(AnticheatInfo[1][aValue] == 1)
  256.         {
  257.             if(Player[i][GatHealth] == false)
  258.             {
  259.                 GetPlayerHealth(i, PlayerHealth);
  260.                 if(PlayerHealth > Player[i][pHealth] && Player[i][PlayerLooseMoney] == false) { Log("%s Healhack", Name); KickPlayer("Anticheat: %s wird wegen Healhacks gekickt", Name, i); }
  261.                 if(PlayerHealth > Player[i][pHealth] && Player[i][PlayerLooseMoney] == true)  { _ANTICHEAT_SetPlayerHealth(i, PlayerHealth); }
  262.                 if(PlayerHealth < Player[i][pHealth])  { _ANTICHEAT_SetPlayerHealth(i, PlayerHealth); }
  263.             }
  264.             Player[i][PlayerLooseMoney] = false;
  265.             Player[i][GatHealth] = false;
  266.         }
  267.         else { GetPlayerHealth(i, PlayerHealth); _ANTICHEAT_SetPlayerHealth(i, PlayerHealth); }
  268.         // Anti Armorhack | Anti Armourhack
  269.         if(AnticheatInfo[2][aValue] == 1)
  270.         {
  271.             if(Player[i][GatArmour] == false)
  272.             {
  273.                 GetPlayerArmour(i, PlayerArmour);
  274.                 if(PlayerArmour > Player[i][pArmour]) { Log("%s Armorhack", Name); KickPlayer("Anticheat: %s wird wegen Armourhacks gekickt", Name, i); }
  275.                 if(PlayerArmour < Player[i][pArmour]) { _ANTICHEAT_SetPlayerArmour(i, PlayerArmour); }
  276.             }
  277.             Player[i][GatArmour] = false;
  278.         }
  279.         else { GetPlayerArmour(i, PlayerArmour); _ANTICHEAT_SetPlayerArmour(i, PlayerArmour); }
  280.     }
  281.     return true;
  282. }
  283.  
  284. // Nur mal so, zum Spaß ;) | Just for Fun ;)
  285. function _ANTICHEAT_ChangeAnticheatTimer(interval)
  286. {
  287.     KillTimer(timer);
  288.     timer = SetTimer("_ANTICHEAT_Main", interval * 1000, true);
  289.     return true;
  290. }
  291.  
  292. // Bitte aufrufen mit "Log(string[], params,... );" | Please call with "Log(string[], params,... );"
  293. function _ANTICHEAT_Log(string[])
  294. {
  295.     new log[256];
  296.     new _ANTICHEAT_Year, _ANTICHEAT_Month, _ANTICHEAT_Day;
  297.     getdate(_ANTICHEAT_Year, _ANTICHEAT_Month, _ANTICHEAT_Day);
  298.     format(log, sizeof(log), "%d.%d.%d: %s\n", _ANTICHEAT_Day, _ANTICHEAT_Month, _ANTICHEAT_Year, string);
  299.     new File:_ANTICHEAT_file = fopen("Anticheat.log", io_append);
  300.     fwrite(_ANTICHEAT_file, log);
  301.     fclose(_ANTICHEAT_file);
  302. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement