Advertisement
Julian90

AntiCheat - Tutorial.

Oct 7th, 2011
474
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 4.26 KB | None | 0 0
  1. // forum.sa-mp.com/showthread.php?p=1448018
  2. #include <a_samp>
  3.  
  4. #define COLOR_GREEN 0x33AA33AA
  5. #define COLOR_RED 0xAA3333AA
  6. #define CREMA_ADMIN 0xFFFFD4D4
  7.  
  8. static
  9.     Armas[MAX_PLAYERS][13],
  10.     Municion[MAX_PLAYERS][13],
  11.     temp_arm[13][2],
  12.     w_nombre[MAX_PLAYER_NAME],
  13.     w_str[128],
  14.     Timer_Armas[MAX_PLAYERS];
  15.  
  16. public OnPlayerConnect(playerid)
  17. {
  18.     Timer_Armas[playerid] = SetTimerEx("Comprobar_Cheat", 10000, 1, "i", playerid);
  19.     return 1;
  20. }
  21.    
  22. public OnPlayerDisconnect(playerid)
  23. {
  24.     for(new slot = 0; slot < 13; slot++)
  25.     {
  26.         Armas[playerid][slot] = 0;
  27.         Municion[playerid][slot] = 0;
  28.     }
  29.     KillTimer(Timer_Armas[playerid]);
  30.     return 1;
  31. }
  32.  
  33. public OnPlayerCommandText(playerid, cmdtext[])
  34. {
  35.     if(!strcmp(cmdtext, "/test", true))
  36.     {
  37.         EntregarArma(playerid, 29, 999);
  38.         EntregarArma(playerid, 30, 999);
  39.         EntregarArma(playerid, 31, 999);
  40.         return 1;
  41.     }
  42.     if(!strcmp(cmdtext, "/armas", true))
  43.     {
  44.         if(IsPlayerAdmin(playerid))
  45.         {
  46.             new tienen = 0;
  47.             for(new i = 0; i < GetMaxPlayers(); i++)
  48.             {
  49.                 if(IsPlayerConnected(i))
  50.                 {
  51.                     for (new W = 0; W < 13; W++)
  52.                     {
  53.                         GetPlayerWeaponData(playerid, W, temp_arm[W][0], temp_arm[W][1]);
  54.                         if(temp_arm[W][0] != Armas[playerid][W] || temp_arm[W][1] != Municion[playerid][W])
  55.                         {
  56.                             GetPlayerName(playerid, w_nombre, sizeof(w_nombre));
  57.                             format(w_str, sizeof(w_str), "Armas - %s.", w_nombre);
  58.                             SendClientMessage(playerid, CREMA_ADMIN, w_str);
  59.                             GetWeaponName(temp_arm[W][0], w_nombre,sizeof(w_nombre));
  60.                             format(w_str, sizeof(w_str), "%s - Municion: %i. ( cheat )", w_nombre, temp_arm[W][1]);
  61.                             SendClientMessage(playerid, COLOR_RED, w_str);
  62.                             tienen += 1;
  63.                         }
  64.                         if((temp_arm[W][0] == Armas[playerid][W] && temp_arm[W][1] == Municion[playerid][W]) && (Municion[playerid][W] != 0 && Armas[playerid][W] != 0))
  65.                         {
  66.                             GetPlayerName(playerid, w_nombre, sizeof(w_nombre));
  67.                             format(w_str, sizeof(w_str), "Armas - %s.", w_nombre);
  68.                             SendClientMessage(playerid, CREMA_ADMIN, w_str);
  69.                             GetWeaponName(temp_arm[W][0], w_nombre,sizeof(w_nombre));
  70.                             format(w_str, sizeof(w_str), "%s - Municion: %i.", w_nombre, temp_arm[W][1]);
  71.                             SendClientMessage(playerid, COLOR_GREEN, w_str);
  72.                             tienen += 1;
  73.                         }
  74.                     }
  75.                 }
  76.             }
  77.             if(tienen == 0)
  78.             {
  79.                 SendClientMessage(playerid, CREMA_ADMIN, "* No hay usuarios con armas.");
  80.                 return 1;
  81.             }
  82.         }
  83.         return 1;
  84.     }
  85.     return 0;
  86. }
  87.  
  88. stock EntregarArma(playerid, arma, municion)
  89. {
  90.     new slot = GetWeaponSlot(arma);
  91.     if(Armas[playerid][slot] == arma) Municion[playerid][slot] += municion;
  92.     else if(Armas[playerid][slot] != arma) Municion[playerid][slot] = municion;
  93.     Armas[playerid][slot] = arma;
  94.     GivePlayerWeapon(playerid, arma, municion);
  95.     return 1;
  96. }
  97.  
  98. forward Comprobar_Cheat(playerid);
  99. public Comprobar_Cheat(playerid)
  100. {
  101.     if(IsPlayerConnected(playerid))
  102.     {
  103.         for (new W = 0; W < 13; W++)
  104.         {
  105.             GetPlayerWeaponData(playerid, W, temp_arm[W][0], temp_arm[W][1]);
  106.             if(temp_arm[W][0] != Armas[playerid][W])
  107.             {
  108.                 GetPlayerName(playerid, w_nombre, sizeof(w_nombre));
  109.                 format(w_str, sizeof(w_str), "**[AVISO]: - Revisá a %s(%i), posible cheat de armas ( /armas ). - **", w_nombre, playerid);
  110.                 for(new i = 0; i < GetMaxPlayers(); i++)
  111.                 {
  112.                     if(IsPlayerAdmin(i) && IsPlayerConnected(i))
  113.                     {
  114.                         SendClientMessage(i, COLOR_RED, w_str);
  115.                     }
  116.                 }
  117.             }
  118.             if(temp_arm[W][1] != Municion[playerid][W])
  119.             {
  120.                 GetPlayerName(playerid, w_nombre, sizeof(w_nombre));
  121.                 format(w_str, sizeof(w_str), "**[AVISO]: - Revisá a %s(%i), posible cheat de municion ( /armas ). - **", w_nombre, playerid);
  122.                 for(new i = 0; i < GetMaxPlayers(); i++)
  123.                 {
  124.                     if(IsPlayerAdmin(i))
  125.                     {
  126.                         SendClientMessage(i, COLOR_RED, w_str);
  127.                     }
  128.                 }
  129.             }
  130.         }
  131.     }
  132.     return 1;
  133. }
  134.  
  135. stock GetWeaponSlot(weaponid)
  136. {
  137.     new slot;
  138.     switch(weaponid)
  139.     {
  140.         case 0,1: slot = 0;
  141.         case 2 .. 9: slot = 1;
  142.         case 10 .. 15: slot = 10;
  143.         case 16 .. 18, 39: slot = 8;
  144.         case 22 .. 24: slot =2;
  145.         case 25 .. 27: slot = 3;
  146.         case 28, 29, 32: slot = 4;
  147.         case 30, 31: slot = 5;
  148.         case 33, 34: slot = 6;
  149.         case 35 .. 38: slot = 7;
  150.         case 40: slot = 12;
  151.         case 41 .. 43: slot = 9;
  152.         case 44 .. 46: slot = 11;
  153.     }
  154.     return slot;
  155. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement