22.07.2010, 15:59
подключение необходимых инклудов для работы анти чита
создаём новую переменную
создаём новые функции
функция анти чита
анти чит готов, теперь осталось подключить его в ваш мод и настроить.
в налало мода для замены всех стандартных функций на новые из анти чита.
cоздаём новый секундный, повторяющийся таймер в OnGameModeInit для работы анти чита
создаём новый public который запускается таймером, в него потом вы можете добавлять другие анти читы.
теперь анти чит полностью работоспособен осталось настроить,
в игре есть такой момент, когда игрок садится в полицейский фургон (енфорсер) на место водителя ему даётся броне жилет, чтобы анти чит не посчитал это за чит вам необходимо использовать данный код:
теперь о пиках брони.
как создавать пикапы чтобы анти чит не считал их читом.
новая переменная(массив, если пикап не 1) для пикапов....
подбор пикапов игроком
ну вот вроде и всё =)
pawn Code:
#include <a_samp>
#include <a_players>
#include <time>
pawn Code:
new Float: PlayerArmour[MAX_PLAYERS]; // переменная в которой хранится бронь
pawn Code:
stock SetPlayerArmourAC(playerid, Float:armour)
{
PlayerArmour[playerid] = armour;
SetPlayerArmour(playerid, armour);
return 1;
}
stock GetPlayerArmourAC(playerid, &Float:armour)
{
armour = PlayerArmour[playerid];
return 1;
}
pawn Code:
stock AntiArmourCheat()
{
for (new i = 0; i < MAX_PLAYERS; i++)
{
if (IsPlayerConnected(i) && !IsPlayerNPC(i))
{
new Float: arm;
GetPlayerArmour(i, arm);
if (arm < PlayerArmour[i]) return SetPlayerArmourAC(i, arm);
if (arm > PlayerArmour[i])
{
new string[256];
new year, month,day;
getdate(year, month, day);
new hour, minuite, second;
gettime(hour, minuite, second);
new name[MAX_PLAYER_NAME];
GetPlayerName(playerid, name, sizeof(name));
format(string, sizeof(string), "SERVER: %s был вышвырнут с сервера! Причина: Использование Читов: Armour! | [%d/%d/%d | %d:%d]", name, day, month, year, hour, minuite);
SendClientMessageToAll(0xFF0000FF, string);
Kick(i);
}
}
}
return 1;
}
в налало мода для замены всех стандартных функций на новые из анти чита.
pawn Code:
#define SetPlayerArmour SetPlayerArmourAC
#define GetPlayerArmour GetPlayerArmourAC
pawn Code:
SetTimer("AntiCheat", 1000, 1);
pawn Code:
forward AntiCheat();
public AntiCheat()
{
AntiArmourCheat();
}
в игре есть такой момент, когда игрок садится в полицейский фургон (енфорсер) на место водителя ему даётся броне жилет, чтобы анти чит не посчитал это за чит вам необходимо использовать данный код:
pawn Code:
public OnPlayerStateChange(playerid, newstate, oldstate)
{
if (newstate == PLAYER_STATE_DRIVER)
{
if (GetVehicleModel(GetPlayerVehicleID(playerid)) == 427)
{
SetPlayerArmour(playerid, 100.0);
}
}
...
как создавать пикапы чтобы анти чит не считал их читом.
новая переменная(массив, если пикап не 1) для пикапов....
pawn Code:
new ArmourPickup[3];
pawn Code:
ArmourPickup[0] = CreatePickup(1242, 19, PosX, PosY, PosZ, -1); // обязательно 2й параметр должен быть 19
ArmourPickup[1] = CreatePickup(1242, 19, PosX, PosY, PosZ, -1);
ArmourPickup[2] = CreatePickup(1242, 19, PosX, PosY, PosZ, -1);
pawn Code:
public OnPlayerPickUpPickup(playerid, pickupid)
{
if (pickupid >= ArmourPickup[0] && pickupid <= ArmourPickup[2])
{
SetPlayerArmour(playerid, 100.0);
}
...