Renchand1998

Anti Cheat

Mar 2nd, 2013
1,595
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 5.08 KB | None | 0 0
  1. #include <a_samp>
  2.  
  3. #define Maximal_Players 500
  4. #define Cheat_Type_Money 0
  5. #define Cheat_Type_Weapons 1
  6. #define Cheat_Type_Player_Speed 2
  7. #define Cheat_Type_Vehicle_Speed 3
  8.  
  9. new AntiCheatDetectTimer;
  10. enum PlayerInfo
  11. {
  12.     PlayerMoney,
  13.     PlayerWeapon[13],
  14.     PlayerAmmunition[13]
  15. };
  16. new Player[Maximal_Players][PlayerInfo];
  17.  
  18. public OnFilterScriptInit()
  19. {
  20.     AntiCheatDetectTimer = SetTimer("AntiCheatDetect",1000,1);
  21.     return 1;
  22. }
  23.  
  24. public OnFilterScriptExit()
  25. {
  26.     KillTimer(AntiCheatDetectTimer);
  27.     return 1;
  28. }
  29.  
  30. public OnPlayerConnect(playerid)
  31. {
  32.     Player[playerid][PlayerMoney] = 0;
  33.     for(new W = 0; W < 12; W++)
  34.     {
  35.         Player[playerid][PlayerWeapon][W] = 0;
  36.         Player[playerid][PlayerAmmunition][W] = 0;
  37.     }
  38.     return 1;
  39. }
  40.  
  41. forward AntiCheat(PlayerId,Cheat_Type,WeaponId);
  42. public AntiCheat(PlayerId,Cheat_Type,WeaponId)
  43. {
  44.     if(Cheat_Type == Cheat_Type_Money) SetMoney(PlayerId,Player[PlayerId][PlayerMoney]);
  45.     if(Cheat_Type == Cheat_Type_Weapons) ResetWeapon(PlayerId,WeaponId);
  46.     if(Cheat_Type == Cheat_Type_Player_Speed) SetPlayerHealth(PlayerId,0);
  47.     if(Cheat_Type == Cheat_Type_Vehicle_Speed) DestroyVehicle(GetPlayerVehicleID(PlayerId));
  48.     return 1;
  49. }
  50.  
  51. stock GetMoney(PlayerId)
  52. {
  53.     if(!IsPlayerConnected(PlayerId)) return 0;
  54.     return Player[PlayerId][PlayerMoney];
  55. }
  56.  
  57. stock GiveMoney(PlayerId,Amount)
  58. {
  59.     if(!IsPlayerConnected(PlayerId)) return 0;
  60.     if(Amount == 0) return 0;
  61.     Player[PlayerId][PlayerMoney] += Amount;
  62.     GivePlayerMoney(PlayerId,Amount);
  63.     return 1;
  64. }
  65.  
  66. stock SetMoney(PlayerId,Amount)
  67. {
  68.     if(!IsPlayerConnected(PlayerId)) return 0;
  69.     Player[PlayerId][PlayerMoney] = Amount;
  70.     ResetPlayerMoney(PlayerId);
  71.     GivePlayerMoney(PlayerId,Player[PlayerId][PlayerMoney]);
  72.     return 1;
  73. }
  74.  
  75. stock ResetMoney(PlayerId)
  76. {
  77.     if(!IsPlayerConnected(PlayerId)) return 0;
  78.     Player[PlayerId][PlayerMoney] = 0;
  79.     ResetPlayerMoney(PlayerId);
  80.     return 1;
  81. }
  82.  
  83. stock GiveWeapon(PlayerId,WeaponId,Ammunition)
  84. {
  85.     if(!IsPlayerConnected(PlayerId)) return 0;
  86.     if(WeaponId < 0 || WeaponId == 19 || WeaponId == 20 || WeaponId == 21 || WeaponId > 46) return 0;
  87.     if(Ammunition == 0) return 0;
  88.     for(new W = 0; W < 12; W++)
  89.     {
  90.         GetPlayerWeaponData(PlayerId,W,Player[PlayerId][PlayerWeapon][W],Player[PlayerId][PlayerAmmunition][W]);
  91.     }
  92.     Player[PlayerId][PlayerWeapon][GetWeaponSlot(WeaponId)] = WeaponId;
  93.     Player[PlayerId][PlayerAmmunition][GetWeaponSlot(WeaponId)] = Ammunition;
  94.     SetPlayerAmmo(PlayerId,Player[PlayerId][PlayerWeapon][GetWeaponSlot(WeaponId)],0);
  95.     GivePlayerWeapon(PlayerId,WeaponId,Ammunition);
  96.     SetPlayerArmedWeapon(PlayerId,WeaponId);
  97.     return 1;
  98. }
  99.  
  100. stock ResetWeapon(PlayerId,WeaponId)
  101. {
  102.     if(!IsPlayerConnected(PlayerId)) return 0;
  103.     if(WeaponId < 0 || WeaponId == 19 || WeaponId == 20 || WeaponId == 21 || WeaponId > 46) return 0;
  104.     for(new W = 0; W < 12; W++)
  105.     {
  106.         GetPlayerWeaponData(PlayerId,W,Player[PlayerId][PlayerWeapon][W],Player[PlayerId][PlayerAmmunition][W]);
  107.     }
  108.     Player[PlayerId][PlayerWeapon][GetWeaponSlot(WeaponId)] = 0;
  109.     Player[PlayerId][PlayerAmmunition][GetWeaponSlot(WeaponId)] = 0;
  110.     ResetPlayerWeapons(PlayerId);
  111.     for(new W = 0; W < 12; W++)
  112.     {
  113.         GivePlayerWeapon(PlayerId,Player[PlayerId][PlayerWeapon][W],Player[PlayerId][PlayerAmmunition][W]);
  114.     }
  115.     SetPlayerArmedWeapon(PlayerId,0);
  116.     return 1;
  117. }
  118.  
  119. stock ResetWeapons(PlayerId)
  120. {
  121.     if(!IsPlayerConnected(PlayerId)) return 0;
  122.     for(new W = 0; W < 12; W++)
  123.     {
  124.         Player[PlayerId][PlayerWeapon][W] = 0;
  125.         Player[PlayerId][PlayerAmmunition][W] = 0;
  126.     }
  127.     ResetPlayerWeapons(PlayerId);
  128.     return 1;
  129. }
  130.  
  131. stock GetWeaponSlot(WeaponId)
  132. {
  133.     switch(WeaponId)
  134.     {
  135.         case 0,1: return 0;
  136.         case 2..9: return 1;
  137.         case 10..15: return 10;
  138.         case 16..18,39: return 8;
  139.         case 22..24: return 2;
  140.         case 25..27: return 3;
  141.         case 28,29,32: return 4;
  142.         case 30,31: return 5;
  143.         case 33,34: return 6;
  144.         case 35..38: return 7;
  145.         case 40: return 12;
  146.         case 41..43: return 9;
  147.         case 44..46: return 11;
  148.     }
  149.     return 0;
  150. }
  151.  
  152. forward AntiCheatDetect();
  153. public AntiCheatDetect()
  154. {
  155.     for(new P = 0; P < Maximal_Players; P++)
  156.     {
  157.         if(IsPlayerConnected(P))
  158.         {
  159.             if(GetPlayerMoney(P) != GetMoney(P)) CallLocalFunction("AntiCheat","dd",P,Cheat_Type_Money);
  160.             if(Player[P][PlayerWeapon][GetWeaponSlot(GetPlayerWeapon(P))] != GetPlayerWeapon(P)) CallLocalFunction("AntiCheat","ddd",P,Cheat_Type_Weapons,GetPlayerWeapon(P));
  161.             if(GetPlayerState(P) == PLAYER_STATE_ONFOOT)
  162.             {
  163.                 new Float:X;
  164.                 new Float:Y;
  165.                 new Float:Z;
  166.                 GetPlayerVelocity(P,X,Y,Z);
  167.                 if(floatround(X) > 1 || floatround(Y) > 1 || floatround(Z) > 1) CallLocalFunction("AntiCheat","dd",P,Cheat_Type_Player_Speed);
  168.             }
  169.             if(GetPlayerState(P) == PLAYER_STATE_DRIVER)
  170.             {
  171.                 new Float:X;
  172.                 new Float:Y;
  173.                 new Float:Z;
  174.                 GetVehicleVelocity(GetPlayerVehicleID(P),X,Y,Z);
  175.                 if(floatround(X) > 1 || floatround(Y) > 1 || floatround(Z) > 3 || floatround(X) < -1 || floatround(Y) < -1 || floatround(Z) < -3) CallLocalFunction("AntiCheat","dd",P,Cheat_Type_Vehicle_Speed);
  176.             }
  177.         }
  178.     }
  179.     return 1;
  180. }
Advertisement
Add Comment
Please, Sign In to add comment