• Страница 1 из 1
  • 1
Модератор форума: [east_side]_trane, drifter-dron, valych, admin  
pawno урок на анти-чит
adminДата: Воскресенье, 25.09.2011, 00:46:33 | Сообщение # 1

Группа: Администраторы
Сообщений: 3869
В этом уроке мы сделаем анти-чит на
1.анти-дб
2.анти-жизни
3.анти брони
4.анти денег
Верху мода:
Code
#define Anticheat                       true
#define function%1(%2)     forward%1(%2);public%1(%2)
#define ConnectionCheck(%1);   if(!IsPlayerConnected(%1)) { return 1; }
#define ConnectionBreakCheck(%1);  if(!IsPlayerConnected(%1)) { break; }
#define PlayerName(%1,%2);              new %2[MAX_PLAYER_NAME]; GetPlayerName(%1, %2, sizeof(%2));
#define Log(%1,%2);      { new _string[128]; format(_string, 128, %1, %2); _ANTICHEAT_Log(_string); }
#define KickPlayer(%1,%2,%3);       { new _string[128]; format(_string, 128, %1, %2); SendClientMessageToAll(0xFFFF00AA, _string); Kick(%3); }
#define WarnPlayer(%1,%2,%3);       { new _string[128]; format(_string, 128, %2, %3); SendClientMessage(%1, 0xFFFF00AA, _string); }
new timer;

enum PlayerInfos
{
  bool: GatMoney,
  pMoney,
  bool: GatHealth,
  Float: pHealth,
  bool: GatArmour,
  Float: pArmour,
  bool: PlayerLooseMoney,
  pDriveBys
}

new Player[MAX_PLAYERS][PlayerInfos];

enum AnticheatInfos
{
  aName[128],
  aValue
}

new AnticheatInfo[4][AnticheatInfos] = {
  {"Moneycheat",  1},
  {"Healhack",  1},
  {"Armourhack",  1},
  {"DriveBy",   1}
};

enum PickupInfos
{
  bool: pUsed,
  pID,
     pModel,
  pType,
  Float:pX,
  Float:pY,
  Float:pZ,
  pVirtualworld
}

new PickupInfo[MAX_PICKUPS][PickupInfos];

После этого ищем public OnGameModeInit() и туда вставляем:
Code
timer = SetTimer("_ANTICHEAT_Main", 2000, true);

Примерно так должен быть public:
Code
public OnGameModeInit()
{
  timer = SetTimer("_ANTICHEAT_Main", 2000, true);
  return true;
}

После этого ищем public OnGameModeExit() и туда вставляем:
Code
KillTimer(timer);

Примерно так должен быть public:
Code
public OnGameModeExit()
{
  KillTimer(timer);
  return true;
}

После этого ищем public OnPlayerDeath и туда вставляем:
Code
    new vehicleid;
  new vehiclemodel;
  if(GetPlayerState(killerid) == PLAYER_STATE_DRIVER)
  {
   vehicleid = GetPlayerVehicleID(killerid);
   vehiclemodel = GetVehicleModel(vehicleid);
   if(IsPlayerInAnyVehicle(playerid)) { return true; }
   if(vehiclemodel == 425) { return true; }  
   if(vehiclemodel == 432) { return true; }  
   if(vehiclemodel == 447) { return true; }  
   if(vehiclemodel == 472) { return true; }  
   if(vehiclemodel == 520) { return true; }  
   if(AnticheatInfo[3][aValue] == 1)             
   {
    Player[killerid][pDriveBys]++;
    if(Player[killerid][pDriveBys] > 3)
    {
        PlayerName(killerid, Name);
        KickPlayer("Анти-чит: %s обнаружен дб. Кик", Name, killerid);
        Player[killerid][pDriveBys] = 0;
    }
    else
    {
        WarnPlayer(killerid, "Анти-чит: дб предопреждения - %d", Player[killerid][pDriveBys]);
    }
   }
  }

Примерно так должен быть public:
Code
public OnPlayerDeath(playerid, killerid, reason)
{
  new vehicleid;
  new vehiclemodel;
  if(GetPlayerState(killerid) == PLAYER_STATE_DRIVER)
  {
   vehicleid = GetPlayerVehicleID(killerid);
   vehiclemodel = GetVehicleModel(vehicleid);
   if(IsPlayerInAnyVehicle(playerid)) { return true; }
   if(vehiclemodel == 425) { return true; }  
   if(vehiclemodel == 432) { return true; }  
   if(vehiclemodel == 447) { return true; }  
   if(vehiclemodel == 472) { return true; }  
   if(vehiclemodel == 520) { return true; }  
   if(AnticheatInfo[3][aValue] == 1)             
   {
    Player[killerid][pDriveBys]++;
    if(Player[killerid][pDriveBys] > 3)
    {
        PlayerName(killerid, Name);
        KickPlayer("Анти-чит: %s обнаружен дб. Кик", Name, killerid);
        Player[killerid][pDriveBys] = 0;
    }
    else
    {
        WarnPlayer(killerid, "Анти-чит: дб предопреждения - %d", Player[killerid][pDriveBys]);
    }
   }
  }
  return 1;
}

После этого ищем public OnPlayerConnect и туда вставляем:
Code
    Player[playerid][GatMoney]   = false;
  Player[playerid][pMoney]   = 10000;
  Player[playerid][GatHealth]   = false;
  Player[playerid][pHealth]   = 100;
  Player[playerid][GatArmour]   = false;
  Player[playerid][pArmour]   = 0;
  Player[playerid][PlayerLooseMoney]    = false;
  Player[playerid][pDriveBys]   = 0;

Примерно так должен быть public:
Code
public OnPlayerConnect(playerid)
{
  Player[playerid][GatMoney]   = false;
  Player[playerid][pMoney]   = 10000;
  Player[playerid][GatHealth]   = false;
  Player[playerid][pHealth]   = 100;
  Player[playerid][GatArmour]   = false;
  Player[playerid][pArmour]   = 0;
  Player[playerid][PlayerLooseMoney]    = false;
  Player[playerid][pDriveBys]   = 0;
  return true;
}

После этого ищем public OnPlayerPickUpPickup и туда вставляем:
Code
    for(new i = 0; i < MAX_PICKUPS; i++)
  {
      if((PickupInfo[i][pUsed] == true) && (pickupid == PickupInfo[i][pID]))
      {
          if(PickupInfo[i][pModel] == 1240) { Player[playerid][GatHealth] = true; _ANTICHEAT_SetPlayerHealth(playerid, 100); }  
          if(PickupInfo[i][pModel] == 1242) { Player[playerid][GatArmour] = true; _ANTICHEAT_SetPlayerArmour(playerid, 100); }
      }
  }

Примерно так должен быть public:
Code
public OnPlayerPickUpPickup(playerid, pickupid)
{
  for(new i = 0; i < MAX_PICKUPS; i++)
  {
      if((PickupInfo[i][pUsed] == true) && (pickupid == PickupInfo[i][pID]))
      {
          if(PickupInfo[i][pModel] == 1240) { Player[playerid][GatHealth] = true; _ANTICHEAT_SetPlayerHealth(playerid, 100); }  
          if(PickupInfo[i][pModel] == 1242) { Player[playerid][GatArmour] = true; _ANTICHEAT_SetPlayerArmour(playerid, 100); }
      }
  }
}

И после этого все добавляем сами функции анти-чита в любое место!
Code

function _ANTICHEAT_GivePlayerMoney(playerid, money)
{
  ConnectionCheck(playerid);
  Player[playerid][GatMoney] = true;
  Player[playerid][pMoney] += money;
  GivePlayerMoney(playerid, money);
  return true;
}

function _ANTICHEAT_ResetPlayerMoney(playerid)
{
  ConnectionCheck(playerid);
  Player[playerid][pMoney] = 0;
  ResetPlayerMoney(playerid);
  return true;
}

function _ANTICHEAT_GetPlayerMoney(playerid)
{
  ConnectionCheck(playerid);
  return Player[playerid][pMoney];
}

function _ANTICHEAT_SetPlayerHealth(playerid, Float: health)
{
     Player[playerid][GatHealth] = true;
     Player[playerid][pHealth] = health;
     SetPlayerHealth(playerid, health);
     return true;
}

function _ANTICHEAT_GetPlayerHealth(playerid, &Float: health)
{
     health = Player[playerid][pHealth];
     return true;
}

function _ANTICHEAT_SetPlayerArmour(playerid, Float: armour)
{
     Player[playerid][GatArmour] = true;
     Player[playerid][pArmour] = armour;
     SetPlayerArmour(playerid, armour);
     return true;
}

function _ANTICHEAT_GetPlayerArmour(playerid, &Float: armour)
{
     armour = Player[playerid][pArmour];
     return true;
}

function _ANTICHEAT_CreatePickup(model, type, Float:X, Float:Y, Float:Z, Virtualworld)
{
  for(new i = 0; i < MAX_PICKUPS; i++)
  {
      if(PickupInfo[i][pUsed] == false)
      {
          PickupInfo[i][pUsed] = true;
          PickupInfo[i][pType] = type;
          PickupInfo[i][pX] = X;
          PickupInfo[i][pY] = X;
          PickupInfo[i][pZ] = Z;
          PickupInfo[i][pVirtualworld] = Virtualworld;
          PickupInfo[i][pID] = CreatePickup(model, type, X, Y, Z, Virtualworld);
          return PickupInfo[i][pID];
      }
  }
  return -1;
}

function _ANTICHEAT_AddStaticPickup(model, type, Float:X, Float:Y, Float:Z, Virtualworld)
{
  for(new i = 0; i < MAX_PICKUPS; i++)
  {
      if(PickupInfo[i][pUsed] == false)
      {
          PickupInfo[i][pUsed] = true;
          PickupInfo[i][pType] = type;
          PickupInfo[i][pX] = X;
          PickupInfo[i][pY] = X;
          PickupInfo[i][pZ] = Z;
          PickupInfo[i][pVirtualworld] = Virtualworld;
          PickupInfo[i][pID] = CreatePickup(model, type, X, Y, Z, Virtualworld);
          return true;
      }
  }
  return false;
}

function _ANTICHEAT_DestroyPickup(pickup)
{
  for(new i = 0; i < MAX_PICKUPS; i++)
  {
      if(pickup == PickupInfo[i][pID])
      {
          DestroyPickup(PickupInfo[i][pID]);
          PickupInfo[i][pUsed] = false;
          return true;
      }
  }
  return false;
}

function _ANTICHEAT_Main()
{
  new Float: PlayerHealth, Float: PlayerArmour;
  for(new i = 0; i < MAX_PLAYERS; i++)
  {
      ConnectionBreakCheck(i);
      PlayerName(i, Name);
      // анти-хак
      if(AnticheatInfo[0][aValue] == 1)
   {
       if(Player[i][GatMoney] == false)
       {
        if(GetPlayerMoney(i) > Player[i][pMoney]) { ResetPlayerMoney(i); GivePlayerMoney(i, Player[i][pMoney]); Log("%s Moneycheat", Name); }
        if(GetPlayerMoney(i) < Player[i][pMoney]) { _ANTICHEAT_GivePlayerMoney(i, -(Player[i][pMoney] - GetPlayerMoney(i))); Player[i][PlayerLooseMoney] = true; }
    }
    Player[i][GatMoney] = false;
   }
   else { _ANTICHEAT_ResetPlayerMoney(i); _ANTICHEAT_GivePlayerMoney(i, GetPlayerMoney(i)); }
   // анти жизни
   if(AnticheatInfo[1][aValue] == 1)
   {
       if(Player[i][GatHealth] == false)
       {
           GetPlayerHealth(i, PlayerHealth);
        if(PlayerHealth > Player[i][pHealth] && Player[i][PlayerLooseMoney] == false) { Log("%s heal", Name); KickPlayer("Анти-чит: %s обнаружен чит на жизни, кик", Name, i); }
        if(PlayerHealth > Player[i][pHealth] && Player[i][PlayerLooseMoney] == true)  { _ANTICHEAT_SetPlayerHealth(i, PlayerHealth); }
        if(PlayerHealth < Player[i][pHealth])  { _ANTICHEAT_SetPlayerHealth(i, PlayerHealth); }
    }
    Player[i][PlayerLooseMoney] = false;
    Player[i][GatHealth] = false;
   }
   else { GetPlayerHealth(i, PlayerHealth); _ANTICHEAT_SetPlayerHealth(i, PlayerHealth); }
   // анти брони
   if(AnticheatInfo[2][aValue] == 1)
   {
       if(Player[i][GatArmour] == false)
       {
           GetPlayerArmour(i, PlayerArmour);
        if(PlayerArmour > Player[i][pArmour]) { Log("%s armor", Name); KickPlayer("Анти-чит: %s обнаружен чит на броню, кик", Name, i); }
        if(PlayerArmour < Player[i][pArmour]) { _ANTICHEAT_SetPlayerArmour(i, PlayerArmour); }
    }
    Player[i][GatArmour] = false;
   }
   else { GetPlayerArmour(i, PlayerArmour); _ANTICHEAT_SetPlayerArmour(i, PlayerArmour); }
  }
  return true;
}

function _ANTICHEAT_ChangeAnticheatTimer(interval)
{
     KillTimer(timer);
     timer = SetTimer("_ANTICHEAT_Main", interval * 1000, true);
     return true;
}

{
  new log[256];
  new _ANTICHEAT_Year, _ANTICHEAT_Month, _ANTICHEAT_Day;
  getdate(_ANTICHEAT_Year, _ANTICHEAT_Month, _ANTICHEAT_Day);
  format(log, sizeof(log), "%d.%d.%d: %s\n", _ANTICHEAT_Day, _ANTICHEAT_Month, _ANTICHEAT_Year, string);
  new File:_ANTICHEAT_file = fopen("Anticheat.log", io_append);
  fwrite(_ANTICHEAT_file, log);
  fclose(_ANTICHEAT_file);
}

урок by - 26_RUSSS


zm-jail.ru

Разработка сайта samp-pawno.ru


 
СообщениеВ этом уроке мы сделаем анти-чит на
1.анти-дб
2.анти-жизни
3.анти брони
4.анти денег
Верху мода:
Code
#define Anticheat                       true
#define function%1(%2)     forward%1(%2);public%1(%2)
#define ConnectionCheck(%1);   if(!IsPlayerConnected(%1)) { return 1; }
#define ConnectionBreakCheck(%1);  if(!IsPlayerConnected(%1)) { break; }
#define PlayerName(%1,%2);              new %2[MAX_PLAYER_NAME]; GetPlayerName(%1, %2, sizeof(%2));
#define Log(%1,%2);      { new _string[128]; format(_string, 128, %1, %2); _ANTICHEAT_Log(_string); }
#define KickPlayer(%1,%2,%3);       { new _string[128]; format(_string, 128, %1, %2); SendClientMessageToAll(0xFFFF00AA, _string); Kick(%3); }
#define WarnPlayer(%1,%2,%3);       { new _string[128]; format(_string, 128, %2, %3); SendClientMessage(%1, 0xFFFF00AA, _string); }
new timer;

enum PlayerInfos
{
  bool: GatMoney,
  pMoney,
  bool: GatHealth,
  Float: pHealth,
  bool: GatArmour,
  Float: pArmour,
  bool: PlayerLooseMoney,
  pDriveBys
}

new Player[MAX_PLAYERS][PlayerInfos];

enum AnticheatInfos
{
  aName[128],
  aValue
}

new AnticheatInfo[4][AnticheatInfos] = {
  {"Moneycheat",  1},
  {"Healhack",  1},
  {"Armourhack",  1},
  {"DriveBy",   1}
};

enum PickupInfos
{
  bool: pUsed,
  pID,
     pModel,
  pType,
  Float:pX,
  Float:pY,
  Float:pZ,
  pVirtualworld
}

new PickupInfo[MAX_PICKUPS][PickupInfos];

После этого ищем public OnGameModeInit() и туда вставляем:
Code
timer = SetTimer("_ANTICHEAT_Main", 2000, true);

Примерно так должен быть public:
Code
public OnGameModeInit()
{
  timer = SetTimer("_ANTICHEAT_Main", 2000, true);
  return true;
}

После этого ищем public OnGameModeExit() и туда вставляем:
Code
KillTimer(timer);

Примерно так должен быть public:
Code
public OnGameModeExit()
{
  KillTimer(timer);
  return true;
}

После этого ищем public OnPlayerDeath и туда вставляем:
Code
    new vehicleid;
  new vehiclemodel;
  if(GetPlayerState(killerid) == PLAYER_STATE_DRIVER)
  {
   vehicleid = GetPlayerVehicleID(killerid);
   vehiclemodel = GetVehicleModel(vehicleid);
   if(IsPlayerInAnyVehicle(playerid)) { return true; }
   if(vehiclemodel == 425) { return true; }  
   if(vehiclemodel == 432) { return true; }  
   if(vehiclemodel == 447) { return true; }  
   if(vehiclemodel == 472) { return true; }  
   if(vehiclemodel == 520) { return true; }  
   if(AnticheatInfo[3][aValue] == 1)             
   {
    Player[killerid][pDriveBys]++;
    if(Player[killerid][pDriveBys] > 3)
    {
        PlayerName(killerid, Name);
        KickPlayer("Анти-чит: %s обнаружен дб. Кик", Name, killerid);
        Player[killerid][pDriveBys] = 0;
    }
    else
    {
        WarnPlayer(killerid, "Анти-чит: дб предопреждения - %d", Player[killerid][pDriveBys]);
    }
   }
  }

Примерно так должен быть public:
Code
public OnPlayerDeath(playerid, killerid, reason)
{
  new vehicleid;
  new vehiclemodel;
  if(GetPlayerState(killerid) == PLAYER_STATE_DRIVER)
  {
   vehicleid = GetPlayerVehicleID(killerid);
   vehiclemodel = GetVehicleModel(vehicleid);
   if(IsPlayerInAnyVehicle(playerid)) { return true; }
   if(vehiclemodel == 425) { return true; }  
   if(vehiclemodel == 432) { return true; }  
   if(vehiclemodel == 447) { return true; }  
   if(vehiclemodel == 472) { return true; }  
   if(vehiclemodel == 520) { return true; }  
   if(AnticheatInfo[3][aValue] == 1)             
   {
    Player[killerid][pDriveBys]++;
    if(Player[killerid][pDriveBys] > 3)
    {
        PlayerName(killerid, Name);
        KickPlayer("Анти-чит: %s обнаружен дб. Кик", Name, killerid);
        Player[killerid][pDriveBys] = 0;
    }
    else
    {
        WarnPlayer(killerid, "Анти-чит: дб предопреждения - %d", Player[killerid][pDriveBys]);
    }
   }
  }
  return 1;
}

После этого ищем public OnPlayerConnect и туда вставляем:
Code
    Player[playerid][GatMoney]   = false;
  Player[playerid][pMoney]   = 10000;
  Player[playerid][GatHealth]   = false;
  Player[playerid][pHealth]   = 100;
  Player[playerid][GatArmour]   = false;
  Player[playerid][pArmour]   = 0;
  Player[playerid][PlayerLooseMoney]    = false;
  Player[playerid][pDriveBys]   = 0;

Примерно так должен быть public:
Code
public OnPlayerConnect(playerid)
{
  Player[playerid][GatMoney]   = false;
  Player[playerid][pMoney]   = 10000;
  Player[playerid][GatHealth]   = false;
  Player[playerid][pHealth]   = 100;
  Player[playerid][GatArmour]   = false;
  Player[playerid][pArmour]   = 0;
  Player[playerid][PlayerLooseMoney]    = false;
  Player[playerid][pDriveBys]   = 0;
  return true;
}

После этого ищем public OnPlayerPickUpPickup и туда вставляем:
Code
    for(new i = 0; i < MAX_PICKUPS; i++)
  {
      if((PickupInfo[i][pUsed] == true) && (pickupid == PickupInfo[i][pID]))
      {
          if(PickupInfo[i][pModel] == 1240) { Player[playerid][GatHealth] = true; _ANTICHEAT_SetPlayerHealth(playerid, 100); }  
          if(PickupInfo[i][pModel] == 1242) { Player[playerid][GatArmour] = true; _ANTICHEAT_SetPlayerArmour(playerid, 100); }
      }
  }

Примерно так должен быть public:
Code
public OnPlayerPickUpPickup(playerid, pickupid)
{
  for(new i = 0; i < MAX_PICKUPS; i++)
  {
      if((PickupInfo[i][pUsed] == true) && (pickupid == PickupInfo[i][pID]))
      {
          if(PickupInfo[i][pModel] == 1240) { Player[playerid][GatHealth] = true; _ANTICHEAT_SetPlayerHealth(playerid, 100); }  
          if(PickupInfo[i][pModel] == 1242) { Player[playerid][GatArmour] = true; _ANTICHEAT_SetPlayerArmour(playerid, 100); }
      }
  }
}

И после этого все добавляем сами функции анти-чита в любое место!
Code

function _ANTICHEAT_GivePlayerMoney(playerid, money)
{
  ConnectionCheck(playerid);
  Player[playerid][GatMoney] = true;
  Player[playerid][pMoney] += money;
  GivePlayerMoney(playerid, money);
  return true;
}

function _ANTICHEAT_ResetPlayerMoney(playerid)
{
  ConnectionCheck(playerid);
  Player[playerid][pMoney] = 0;
  ResetPlayerMoney(playerid);
  return true;
}

function _ANTICHEAT_GetPlayerMoney(playerid)
{
  ConnectionCheck(playerid);
  return Player[playerid][pMoney];
}

function _ANTICHEAT_SetPlayerHealth(playerid, Float: health)
{
     Player[playerid][GatHealth] = true;
     Player[playerid][pHealth] = health;
     SetPlayerHealth(playerid, health);
     return true;
}

function _ANTICHEAT_GetPlayerHealth(playerid, &Float: health)
{
     health = Player[playerid][pHealth];
     return true;
}

function _ANTICHEAT_SetPlayerArmour(playerid, Float: armour)
{
     Player[playerid][GatArmour] = true;
     Player[playerid][pArmour] = armour;
     SetPlayerArmour(playerid, armour);
     return true;
}

function _ANTICHEAT_GetPlayerArmour(playerid, &Float: armour)
{
     armour = Player[playerid][pArmour];
     return true;
}

function _ANTICHEAT_CreatePickup(model, type, Float:X, Float:Y, Float:Z, Virtualworld)
{
  for(new i = 0; i < MAX_PICKUPS; i++)
  {
      if(PickupInfo[i][pUsed] == false)
      {
          PickupInfo[i][pUsed] = true;
          PickupInfo[i][pType] = type;
          PickupInfo[i][pX] = X;
          PickupInfo[i][pY] = X;
          PickupInfo[i][pZ] = Z;
          PickupInfo[i][pVirtualworld] = Virtualworld;
          PickupInfo[i][pID] = CreatePickup(model, type, X, Y, Z, Virtualworld);
          return PickupInfo[i][pID];
      }
  }
  return -1;
}

function _ANTICHEAT_AddStaticPickup(model, type, Float:X, Float:Y, Float:Z, Virtualworld)
{
  for(new i = 0; i < MAX_PICKUPS; i++)
  {
      if(PickupInfo[i][pUsed] == false)
      {
          PickupInfo[i][pUsed] = true;
          PickupInfo[i][pType] = type;
          PickupInfo[i][pX] = X;
          PickupInfo[i][pY] = X;
          PickupInfo[i][pZ] = Z;
          PickupInfo[i][pVirtualworld] = Virtualworld;
          PickupInfo[i][pID] = CreatePickup(model, type, X, Y, Z, Virtualworld);
          return true;
      }
  }
  return false;
}

function _ANTICHEAT_DestroyPickup(pickup)
{
  for(new i = 0; i < MAX_PICKUPS; i++)
  {
      if(pickup == PickupInfo[i][pID])
      {
          DestroyPickup(PickupInfo[i][pID]);
          PickupInfo[i][pUsed] = false;
          return true;
      }
  }
  return false;
}

function _ANTICHEAT_Main()
{
  new Float: PlayerHealth, Float: PlayerArmour;
  for(new i = 0; i < MAX_PLAYERS; i++)
  {
      ConnectionBreakCheck(i);
      PlayerName(i, Name);
      // анти-хак
      if(AnticheatInfo[0][aValue] == 1)
   {
       if(Player[i][GatMoney] == false)
       {
        if(GetPlayerMoney(i) > Player[i][pMoney]) { ResetPlayerMoney(i); GivePlayerMoney(i, Player[i][pMoney]); Log("%s Moneycheat", Name); }
        if(GetPlayerMoney(i) < Player[i][pMoney]) { _ANTICHEAT_GivePlayerMoney(i, -(Player[i][pMoney] - GetPlayerMoney(i))); Player[i][PlayerLooseMoney] = true; }
    }
    Player[i][GatMoney] = false;
   }
   else { _ANTICHEAT_ResetPlayerMoney(i); _ANTICHEAT_GivePlayerMoney(i, GetPlayerMoney(i)); }
   // анти жизни
   if(AnticheatInfo[1][aValue] == 1)
   {
       if(Player[i][GatHealth] == false)
       {
           GetPlayerHealth(i, PlayerHealth);
        if(PlayerHealth > Player[i][pHealth] && Player[i][PlayerLooseMoney] == false) { Log("%s heal", Name); KickPlayer("Анти-чит: %s обнаружен чит на жизни, кик", Name, i); }
        if(PlayerHealth > Player[i][pHealth] && Player[i][PlayerLooseMoney] == true)  { _ANTICHEAT_SetPlayerHealth(i, PlayerHealth); }
        if(PlayerHealth < Player[i][pHealth])  { _ANTICHEAT_SetPlayerHealth(i, PlayerHealth); }
    }
    Player[i][PlayerLooseMoney] = false;
    Player[i][GatHealth] = false;
   }
   else { GetPlayerHealth(i, PlayerHealth); _ANTICHEAT_SetPlayerHealth(i, PlayerHealth); }
   // анти брони
   if(AnticheatInfo[2][aValue] == 1)
   {
       if(Player[i][GatArmour] == false)
       {
           GetPlayerArmour(i, PlayerArmour);
        if(PlayerArmour > Player[i][pArmour]) { Log("%s armor", Name); KickPlayer("Анти-чит: %s обнаружен чит на броню, кик", Name, i); }
        if(PlayerArmour < Player[i][pArmour]) { _ANTICHEAT_SetPlayerArmour(i, PlayerArmour); }
    }
    Player[i][GatArmour] = false;
   }
   else { GetPlayerArmour(i, PlayerArmour); _ANTICHEAT_SetPlayerArmour(i, PlayerArmour); }
  }
  return true;
}

function _ANTICHEAT_ChangeAnticheatTimer(interval)
{
     KillTimer(timer);
     timer = SetTimer("_ANTICHEAT_Main", interval * 1000, true);
     return true;
}

{
  new log[256];
  new _ANTICHEAT_Year, _ANTICHEAT_Month, _ANTICHEAT_Day;
  getdate(_ANTICHEAT_Year, _ANTICHEAT_Month, _ANTICHEAT_Day);
  format(log, sizeof(log), "%d.%d.%d: %s\n", _ANTICHEAT_Day, _ANTICHEAT_Month, _ANTICHEAT_Year, string);
  new File:_ANTICHEAT_file = fopen("Anticheat.log", io_append);
  fwrite(_ANTICHEAT_file, log);
  fclose(_ANTICHEAT_file);
}

урок by - 26_RUSSS

Автор - admin
Дата добавления - 25.09.2011 в 00:46:33
  • Страница 1 из 1
  • 1
Поиск:
Загрузка страницы, займет меньше минуты...
Загрузка...

Статистика Форума
Последнии темы Читаемые темы Лучшие пользователи Новые пользователи
Система телефонов поломалась
Не в себе
фильм скалайн
Трансформеры 3
форсаж 6
Ищу [FS]Для админок на сервер
нужны координаты карты для отметки зон...
Помогите найти мод
pawno урок автоматические ворота
обращение к скриптерам.
Вопросы по скриптингу
Ваши ошибки при компиляции GM/FS

Вопросы по скриптингу

(1081)

Считаем до 1000

(274)

Ваши ошибки при компиляция gm

(260)

Набор в команду

(80)

Ваши ошибки при компиляции GM/FS

(71)

вопроосы по скриптингу от 22.04.2013

(64)

Баннеробмен

(64)

несколько команд на samp 0.3 c

(64)

Оценки сайта samp-pawno.ru

(55)

Заказ хостинга

(51)

Набор в команду(форум)

(45)

Урок №61 по созданию системы авто для GodFather

(45)

admin

(3869)

[east_side]_trane

(443)

TWiX

(316)

valych

(501)

drifter-dron

(477)

danik_rok

(317)

Dimka_71rus

(360)

Drifter96

(300)

MaNb9K

(220)

[MTA]MaPeR5518

(181)

Dima_Tkach

(107)

Nik_Ull

(184)

system32xzxz

(Четверг 09:25:24)

torbin169

(Суббота 23:09:29)

kuchuk_00

(Суббота 17:10:14)

artem_boyko_3

(Суббота 15:57:37)

greggelbak

(Среда 18:29:37)

vladisvlavs

(Среда 13:51:57)

add02102002

(Понедельник 22:37:15)

Диман221

(Понедельник 18:12:45)

almas051004

(Воскресенье 11:05:32)

megasuccessms

(Суббота 14:15:36)

nawe

(Пятница 22:25:23)

swoysb

(Пятница 14:55:29)

Вверх
03:18:11
ОбновитьСмайлыУправление мини-чатом
ЧАТ-PAWNO
2010-2025

vkontakte :samp-pawno.ru: