iWors
Эксперт
Доброго времени суток уважаемые гости данной темы.
Сегодня специально для Pawno-Info сделал небольшой анти-чит, в котором на данный момент нуждаются очень многие популярные проекты жанра DeathMatch, да и РП тоже
Итак, начнём.
Для начала, нам потребуется паблик, с которым мы и будем работать, а именно:
Информация о функции OnPlayerWeaponShot:
Параметры:
[HIDE-POSTS]ID игрока который выстрелил(weaponid)
ID оружия с которого выстрелил игрок(hittype)
Тип попадания пули (пустота, игрок, машина, объект) (hitid)
ID игрока, машины или объекта по которому попала пуля(fX)
Координата X куда попала пуля(fY)
Координата Y куда попала пуля(fZ)
Координата Z куда попала пуля(Возвращает)
0 - Запрещает причинения ущерба от пули. 1 - Разрешает причинение ущерба.[/HIDE-POSTS]
Для начала создадим переменную, которая нам в дальнейшем понадобится
Далее, нам потребуется public OnPlayerDisconnect. Объясню для чего, мы сделаем чтобы игрока кикало, за употребление данного ввида Aim'a, и при кике мы обновляем переменную до нуля, то есть в OnPlayerDisconnect'e у нас должен быть ноль:
В
вставляем:
Собственно, всё. Приятного использования 
Некоторая информация было взята с оффициального сайта SA:MP.
Сегодня специально для Pawno-Info сделал небольшой анти-чит, в котором на данный момент нуждаются очень многие популярные проекты жанра DeathMatch, да и РП тоже
Итак, начнём.
PHP:
#define C_RED 0xFF0000FF
#define C_GREY 0xAFAFAFFF
PHP:
OnPlayerWeaponShot
PHP:
Вызывается когда игрок совершает выстрел.
PHP:
Примечание: Поддерживается только огнестрельное оружие!
PHP:
Примечание: Поддерживается только пассажирский драйв-бай (не водительский)!
Параметры:
PHP:
OnPlayerWeaponShot(playerid, weaponid, hittype, hitid, Float:fX, Float:fY, Float:fZ)
playerid
ID оружия с которого выстрелил игрок(hittype)
Тип попадания пули (пустота, игрок, машина, объект) (hitid)
ID игрока, машины или объекта по которому попала пуля(fX)
Координата X куда попала пуля(fY)
Координата Y куда попала пуля(fZ)
Координата Z куда попала пуля(Возвращает)
0 - Запрещает причинения ущерба от пули. 1 - Разрешает причинение ущерба.[/HIDE-POSTS]
Для начала создадим переменную, которая нам в дальнейшем понадобится
PHP:
new AimOff[MAX_PLAYERS] = { 0, ... }; // оптимизирование переменной
PHP:
AimOff[playerid] = 0;// Очищаем
В
PHP:
public OnPlayerWeaponShot(playerid, weaponid, hittype, hitid, Float:fX, Float:fY, Float:fZ)
PHP:
if(hitid != INVALID_PLAYER_ID)
{
if(hittype == 1)
{
if(IsPlayerInAnyVehicle(playerid)) return false;
if(fX == 0.000000 || fY == 0.000000 || fZ == 0.000000)
{
if(hitid != 65535)
{
if(AimOff[playerid] == 2)
{
SendClientMessage(playerid,C_RED,"Вы были кикнуты по подозрению в читерстве. Код античита: 001#]"), Kick(playerid); // C_RED (цвет можете посмотреть в начале темы)
return 0;
}
else if(AimOff[playerid] == 1)
{
if(GetPVarInt(playerid,"KickFlood") == 0)
{
// Если будет ошибка "nsa", то добавьте следующее:
// new nsa[
format(nsa, sizeof(nsa), "[Информация] %s[%d] возможно использует новый вид Aim'a (Perfect aim)", PlayerInfo[playerid][pNames],playerid); // PlayerInfo[playerid][pNames] - функция отвечает за ник игрока, используйте свою.
SendAdminMessage(C_GREY, nsa); // Сообщение в административный чат.
SetPVarInt(playerid,"KickFlood",1);
}
}
AimOff[playerid]++;
}
}
Некоторая информация было взята с оффициального сайта SA:MP.
Последнее редактирование:
