Advertisement
Julian90

gCheat v0.2 - [J]ulian

Dec 15th, 2012
291
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 10.98 KB | None | 0 0
  1. /*
  2.  
  3.         [J]ulian (c) 2013 - Julián Agüero.
  4.                         sa-mp
  5.         Sistema básico de anti cheat.
  6.  
  7. */
  8.  
  9. #include <a_samp>
  10.  
  11. #define CHEAT_HEALTH            0
  12. #define ACTIVE_HEALTH           true
  13. #define CHEAT_ARMOUR            1
  14. #define ACTIVE_ARMOUR           true
  15. #define CHEAT_CASH              2
  16. #define ACTIVE_CASH             true
  17. #define CHEAT_FAKE_KILL         3
  18. #define ACTIVE_FAKE_KILL        true
  19. #define CHEAT_INTERIOR          4
  20. #define ACTIVE_INTERIOR         true
  21. #define CHEAT_VIRTUAL_WORLD     5
  22. #define ACTIVE_VIRTUAL_WORLD    true
  23. #define CHEAT_WEAPON            6
  24. #define CHEAT_AMMO              7
  25. #define ACTIVE_WEAPON           true
  26. #define PLAYER_FLOOD_TEXT       8
  27. #define FLOOD_TYPE              3
  28. #define FLOOD_TIME              3000
  29. #define ACTIVE_FLOOD_TEXT       true
  30.  
  31. enum PLAYER_CHEAT
  32. {
  33.     bool:SPAWNED,
  34.     NAME[MAX_PLAYER_NAME + 1],
  35.     Float:HEALTH[2],
  36.     Float:ARMOUR[2],
  37.     CASH,
  38.     FAKE_KILL[3],
  39.     INTERIOR,
  40.     VIRTUAL_WORLD,
  41.     WEAPONS[13],
  42.     WEAPONS_[13],
  43.     AMMO[13],
  44.     AMMO_[13],
  45.     FLOOD[2],
  46.     FLOOD_TEXT[128]
  47. };
  48. new
  49.     PlayerCheat[MAX_PLAYERS][PLAYER_CHEAT],
  50.     gString[256];
  51.  
  52. new tAntiCheat;
  53.  
  54. forward gOnGameModeInit();
  55. forward gOnGameModeExit();
  56. forward gOnPlayerConnect(playerid);
  57. forward gOnPlayerDisconnect(playerid, reason);
  58. forward gOnPlayerSpawn(playerid);
  59. forward gOnPlayerDeath(playerid, killerid, reason);
  60. forward gOnPlayerText(playerid, text[]);
  61.  
  62. forward gAntiCheat();
  63. forward gOnPlayerCheat(playerid, cheatid);
  64.  
  65. public OnGameModeInit()
  66. {
  67.     tAntiCheat = SetTimer("gAntiCheat", 1000, true);
  68.     return CallLocalFunction("gOnGameModeInit", "");
  69. }
  70.  
  71. public OnGameModeExit()
  72. {
  73.     KillTimer(tAntiCheat);
  74.     return CallLocalFunction("gOnGameModeExit", "");
  75. }
  76.  
  77. public OnPlayerConnect(playerid)
  78. {
  79.     PlayerCheat[playerid][SPAWNED] = false;
  80.     GetPlayerName(playerid, PlayerCheat[playerid][NAME], MAX_PLAYER_NAME);
  81.     PlayerCheat[playerid][HEALTH][0] = -1;
  82.     PlayerCheat[playerid][ARMOUR][0] = -1;
  83.     PlayerCheat[playerid][CASH] = -1;
  84.     PlayerCheat[playerid][INTERIOR] = -1;
  85.     PlayerCheat[playerid][VIRTUAL_WORLD] = -1;
  86.     return CallLocalFunction("gOnPlayerConnect", "i", playerid);
  87. }
  88.  
  89. public OnPlayerDisconnect(playerid, reason)
  90. {
  91.     PlayerCheat[playerid][SPAWNED] = false;
  92.     for(new slot5 = 0; slot5 < 13; slot5++)
  93.     {
  94.         PlayerCheat[playerid][WEAPONS][slot5] = 0;
  95.         PlayerCheat[playerid][AMMO][slot5] = 0;
  96.     }
  97.     return CallLocalFunction("gOnPlayerDisconnect", "ii", playerid, reason);
  98. }
  99.  
  100. public OnPlayerSpawn(playerid)
  101. {
  102.     SetPlayerHealth(playerid, 100);
  103.     CallLocalFunction("gOnPlayerSpawn", "i", playerid);
  104.     return PlayerCheat[playerid][SPAWNED] = true;
  105. }
  106.  
  107. public OnPlayerDeath(playerid, killerid, reason)
  108. {
  109.     PlayerCheat[playerid][SPAWNED] = false;
  110.     new tick = gettime() - PlayerCheat[playerid][FAKE_KILL][0];
  111.     switch(tick)
  112.     {
  113.         case 0 .. 3:
  114.         {
  115.             PlayerCheat[playerid][FAKE_KILL][1]++;
  116.             if(PlayerCheat[playerid][FAKE_KILL][1] >= 3) return PlayerCheat[playerid][FAKE_KILL][2]++;
  117.         }
  118.         default: PlayerCheat[playerid][FAKE_KILL][1] = 0;
  119.     }
  120.     PlayerCheat[playerid][FAKE_KILL][0] = gettime();
  121.     return CallLocalFunction("gOnPlayerDeath", "iii", playerid, killerid, reason);
  122. }
  123.  
  124. public OnPlayerText(playerid, text[])
  125. {
  126.     #if FLOOD_TYPE == 1
  127.     if(PlayerCheat[playerid][FLOOD][0] >= gettime() || (strlen(PlayerCheat[playerid][FLOOD_TEXT]) > 0 && !strcmp(text, PlayerCheat[playerid][FLOOD_TEXT], true)))
  128.     #elseif FLOOD_TYPE == 2
  129.     if(PlayerCheat[playerid][FLOOD][0] >= gettime())
  130.     #elseif FLOOD_TYPE == 3
  131.     if(strlen(PlayerCheat[playerid][FLOOD_TEXT]) > 0 && !strcmp(text, PlayerCheat[playerid][FLOOD_TEXT], true))
  132.     #endif
  133.     {
  134.         PlayerCheat[playerid][FLOOD][1] = 1;
  135.     }
  136.     else
  137.     {
  138.         CallLocalFunction("gOnPlayerText", "is", playerid, text);
  139.         PlayerCheat[playerid][FLOOD][0] = gettime() + FLOOD_TIME;
  140.         format(PlayerCheat[playerid][FLOOD_TEXT], 128, "%s", text);
  141.     }
  142.     return 0;
  143. }
  144.  
  145. stock gGetPlayerHealth(playerid, &Float:health)
  146. {
  147.     health = PlayerCheat[playerid][HEALTH][0];
  148. }
  149.  
  150. stock gSetPlayerHealth(playerid, Float:health)
  151. {
  152.     PlayerCheat[playerid][HEALTH][0] = health;
  153.     return SetPlayerHealth(playerid, health);
  154. }
  155.  
  156. stock gGetPlayerArmour(playerid, &Float:armour)
  157. {
  158.     armour = PlayerCheat[playerid][ARMOUR][0];
  159. }
  160.  
  161. stock gSetPlayerArmour(playerid, Float:armour)
  162. {
  163.     PlayerCheat[playerid][ARMOUR][0] = armour;
  164.     return SetPlayerArmour(playerid, armour);
  165. }
  166.  
  167. stock gGivePlayerMoney(playerid, money)
  168. {
  169.     PlayerCheat[playerid][CASH] += money;
  170.     return PlayerCheat[playerid][CASH];
  171. }
  172.  
  173. stock gResetPlayerMoney(playerid)
  174. {
  175.     PlayerCheat[playerid][CASH] = 0;
  176.     return GivePlayerMoney(playerid, -GetPlayerMoney(playerid));
  177. }
  178.  
  179. stock gGetPlayerMoney(playerid)
  180. {
  181.     return PlayerCheat[playerid][CASH];
  182. }
  183.  
  184. stock gSetPlayerInterior(playerid, interiorid)
  185. {
  186.     PlayerCheat[playerid][INTERIOR] = interiorid;
  187.     return SetPlayerInterior(playerid, PlayerCheat[playerid][INTERIOR]);
  188. }
  189.  
  190. stock gGetPlayerInterior(playerid)
  191. {
  192.     return PlayerCheat[playerid][INTERIOR];
  193. }
  194.  
  195. stock gSetPlayerVirtualWorld(playerid, interiorid)
  196. {
  197.     PlayerCheat[playerid][VIRTUAL_WORLD] = interiorid;
  198.     return SetPlayerVirtualWorld(playerid, PlayerCheat[playerid][VIRTUAL_WORLD]);
  199. }
  200.  
  201. stock gGetPlayerVirtualWorld(playerid)
  202. {
  203.     return PlayerCheat[playerid][VIRTUAL_WORLD];
  204. }
  205.  
  206. stock gGivePlayerWeapon(playerid, weaponid, ammo)
  207. {
  208.     new slot = gGetWeaponSlot(weaponid);
  209.     if(PlayerCheat[playerid][WEAPONS][slot] == weaponid) PlayerCheat[playerid][AMMO][slot] += ammo;
  210.     else PlayerCheat[playerid][AMMO][slot] = ammo;
  211.     PlayerCheat[playerid][WEAPONS][slot] = weaponid;
  212.     return GivePlayerWeapon(playerid, weaponid, ammo);
  213. }
  214.  
  215. stock gGetWeaponSlot(wid)
  216. {
  217.     switch(wid)
  218.     {
  219.         case 0, 1: return 0;
  220.         case 2..9: return 1;
  221.         case 22..24: return 2;
  222.         case 25..27: return 3;
  223.         case 28, 29, 32: return 4;
  224.         case 30, 31: return 5;
  225.         case 33, 34: return 6;
  226.         case 35..38: return 7;
  227.         case 16..19, 39: return 8;
  228.         case 41..43: return 9;
  229.         case 10..15: return 10;
  230.         case 44..46: return 11;
  231.         case 40: return 12;
  232.         default: return -1;
  233.     }
  234.     return -1;
  235. }
  236.  
  237. public gAntiCheat()
  238. {
  239. //  new tick = GetTickCount();
  240.     for(new playerid = 0, cantidad = GetMaxPlayers(); playerid != cantidad; playerid++)
  241.     {
  242.         if(PlayerCheat[playerid][SPAWNED] == true)
  243.         {
  244.             #if ACTIVE_HEALTH == true
  245.                 GetPlayerHealth(playerid, PlayerCheat[playerid][HEALTH][1]);
  246.                 if(PlayerCheat[playerid][HEALTH][1] > PlayerCheat[playerid][HEALTH][0] && PlayerCheat[playerid][HEALTH][0] != -1)
  247.                 {
  248.                     SetPlayerHealth(playerid, PlayerCheat[playerid][HEALTH][0]);
  249.                     CallLocalFunction("gOnPlayerCheat", "ii", playerid, CHEAT_HEALTH);
  250.                 }
  251.                 else
  252.                 {
  253.                     PlayerCheat[playerid][HEALTH][0] = PlayerCheat[playerid][HEALTH][1];
  254.                 }
  255.             #endif
  256.             #if ACTIVE_ARMOUR == true
  257.             GetPlayerArmour(playerid, PlayerCheat[playerid][ARMOUR][1]);
  258.             if(PlayerCheat[playerid][ARMOUR][1] > PlayerCheat[playerid][ARMOUR][0] && PlayerCheat[playerid][ARMOUR][0] != -1)
  259.             {
  260.                 SetPlayerArmour(playerid, PlayerCheat[playerid][ARMOUR][0]);
  261.                 CallLocalFunction("gOnPlayerCheat", "ii", playerid, CHEAT_ARMOUR);
  262.             }
  263.             else
  264.             {
  265.                 PlayerCheat[playerid][ARMOUR][0] = PlayerCheat[playerid][ARMOUR][1];
  266.             }
  267.             #endif
  268.             #if ACTIVE_CASH == true
  269.             if(GetPlayerMoney(playerid) != PlayerCheat[playerid][CASH] && PlayerCheat[playerid][CASH] != -1)
  270.             {
  271.                 ResetPlayerMoney(playerid);
  272.                 GivePlayerMoney(playerid, PlayerCheat[playerid][CASH]);
  273.                 CallLocalFunction("gOnPlayerCheat", "ii", playerid, CHEAT_CASH);
  274.             }
  275.             #endif
  276.             #if ACTIVE_FAKE_KILL == true
  277.             if(PlayerCheat[playerid][FAKE_KILL][2])
  278.             {
  279.                 PlayerCheat[playerid][FAKE_KILL][2] = 0;
  280.                 CallLocalFunction("gOnPlayerCheat", "ii", playerid, CHEAT_FAKE_KILL);
  281.             }
  282.             #endif
  283.             #if ACTIVE_INTERIOR == true
  284.             if(GetPlayerInterior(playerid) != PlayerCheat[playerid][INTERIOR] && PlayerCheat[playerid][INTERIOR] != -1)
  285.             {
  286.                 SetPlayerInterior(playerid, PlayerCheat[playerid][INTERIOR]);
  287.                 CallLocalFunction("gOnPlayerCheat", "ii", playerid, CHEAT_INTERIOR);
  288.             }
  289.             #endif
  290.             #if ACTIVE_VIRTUAL_WORLD == true
  291.             if(GetPlayerVirtualWorld(playerid) != PlayerCheat[playerid][VIRTUAL_WORLD] && PlayerCheat[playerid][VIRTUAL_WORLD] != -1)
  292.             {
  293.                 SetPlayerVirtualWorld(playerid, PlayerCheat[playerid][VIRTUAL_WORLD]);
  294.                 CallLocalFunction("gOnPlayerCheat", "ii", playerid, CHEAT_VIRTUAL_WORLD);
  295.             }
  296.             #endif
  297.             #if ACTIVE_WEAPON == true
  298.             new detected[2] = {0, 0};
  299.             for(new slot = 0; slot < 13; slot++)
  300.             {
  301.                 GetPlayerWeaponData(playerid, slot, PlayerCheat[playerid][WEAPONS_][slot], PlayerCheat[playerid][AMMO_][slot]);
  302.                 if(PlayerCheat[playerid][WEAPONS_][slot] != PlayerCheat[playerid][WEAPONS][slot])
  303.                 {
  304.                     ResetPlayerWeapons(playerid);
  305.                     for(new slot2 = 0; slot2 < 13; slot2++)
  306.                     {
  307.                         if(PlayerCheat[playerid][WEAPONS][slot2] != 0)
  308.                         {
  309.                             GivePlayerWeapon(playerid, PlayerCheat[playerid][WEAPONS][slot2], PlayerCheat[playerid][AMMO][slot2]);
  310.                         }
  311.                     }
  312.                     detected[0]++;
  313.                 }
  314.                 if(PlayerCheat[playerid][AMMO_][slot] > PlayerCheat[playerid][AMMO][slot])
  315.                 {
  316.                     ResetPlayerWeapons(playerid);
  317.                     for(new slot2 = 0; slot2 < 13; slot2++)
  318.                     {
  319.                         if(PlayerCheat[playerid][WEAPONS][slot2] != 0)
  320.                         {
  321.                             GivePlayerWeapon(playerid, PlayerCheat[playerid][WEAPONS][slot2], PlayerCheat[playerid][AMMO][slot2]);
  322.                         }
  323.                     }
  324.                     detected[1]++;
  325.                 }
  326.             }
  327.             if(detected[0]) CallLocalFunction("gOnPlayerCheat", "ii", playerid, CHEAT_WEAPON), detected[0] = 0;
  328.             if(detected[1]) CallLocalFunction("gOnPlayerCheat", "ii", playerid, CHEAT_AMMO), detected[1] = 0;
  329.             #endif
  330.             #if ACTIVE_FLOOD_TEXT == true
  331.             if(PlayerCheat[playerid][FLOOD][1])
  332.             {
  333.                 CallLocalFunction("gOnPlayerCheat", "ii", playerid, PLAYER_FLOOD_TEXT);
  334.                 PlayerCheat[playerid][FLOOD][0] = 0;
  335.                 PlayerCheat[playerid][FLOOD][1] = 0;
  336.             }
  337.             #endif
  338.         }
  339.     }
  340. //  printf("[CHEAT tick]: %i", GetTickCount()-tick);
  341.     return 1;
  342. }
  343.  
  344.  
  345. #if defined _ALS_OnGameModeInit
  346.     #undef OnGameModeInit
  347. #endif
  348. #if defined _ALS_OnGameModeExit
  349.     #undef OnGameModeExit
  350. #endif
  351. #if defined _ALS_OnPlayerSpawn
  352.     #undef OnPlayerSpawn
  353. #endif
  354. #if defined _ALS_OnPlayerConnect
  355.     #undef OnPlayerConnect
  356. #endif
  357. #if defined _ALS_OnPlayerDisconnect
  358.     #undef OnPlayerDisconnect
  359. #endif
  360. #if defined _ALS_OnPlayerDeath
  361.     #undef OnPlayerDeath
  362. #endif
  363. #if defined _ALS_OnPlayerText
  364.     #undef OnPlayerText
  365. #endif
  366.  
  367. #define SetPlayerHealth         gSetPlayerHealth
  368. #define GetPlayerHealth         gGetPlayerHealth
  369.  
  370. #define SetPlayerArmour         gSetPlayerArmour
  371. #define GetPlayerArmour         gGetPlayerArmour
  372.  
  373. #define GivePlayerMoney         gGivePlayerMoney
  374. #define ResetPlayerMoney        gResetPlayerMoney
  375. #define GetPlayerMoney          gGetPlayerMoney
  376.  
  377. #define SetPlayerInterior       gSetPlayerInterior
  378. #define GetPlayerInterior       gGetPlayerInterior
  379.  
  380. #define SetPlayerVirtualWorld   gSetPlayerVirtualWorld
  381. #define GetPlayerVirtualWorld   gGetPlayerVirtualWorld
  382.  
  383. #define GivePlayerWeapon        gGivePlayerWeapon
  384.  
  385. #define OnGameModeInit          gOnGameModeInit
  386. #define OnGameModeExit          gOnGameModeExit
  387. #define OnPlayerSpawn           gOnPlayerSpawn
  388. #define OnPlayerConnect         gOnPlayerConnect
  389. #define OnPlayerDisconnect      gOnPlayerDisconnect
  390. #define OnPlayerDeath           gOnPlayerDeath
  391. #define OnPlayerText            gOnPlayerText
  392.  
  393. #define OnPlayerCheat           gOnPlayerCheat
  394.  
  395. #pragma unused gString
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement