Mr Green
Новичок
Приветствую пользователей pawno-info.ru
Представляю вам, античит на антизаморозку в собейте и любых других читах.
Теоретически он должен работать, я не проверял честно говоря, ввиду отсутствия сервера.
Первый этап, ко всем new (глобальным переменным) добавим:
Второй этап, в public OnPlayerConnect инициализируем переменные:
Третий этап, создадим новую функцию заморозки/разморозки:
Заключительный этап, добавим проверочный код в односекундный паблик, например Fresh если у вас rls мод, или любой другой если у вас другой мод:
Использование функции:
Функция используется точно также как стандартная, она лишь немного имеет другой вид:
Теперь можете по желанию, либо заменить вручную/автозаменой все стандарные функции на защищенные, либо написать макрос через #define;
Пожалуйста отпишитесь, если у вас возникнут проблемы при работе с данной функцией, я её не проверял, или же если функция отлично работает.
UPD: v.1.0.1
- Если игрок в наблюдении его нельзя заморозить, введено чтобы небыло недразумений
- Теперь если игрок в машине, его будет замораживать обычной функцией, иначе защищенной
- Если игрока заспавнили в "замороженном" состоянии, то его античит обойдет
Возможны ошибки, т.к. я пишу данный античит без сервера/игры, у меня нет возможности проверить, если у Вас есть желание помочь в проверке пишите буду рад!
Спасибо за внимание!
Автор: Mr.Green
Представляю вам, античит на антизаморозку в собейте и любых других читах.
Теоретически он должен работать, я не проверял честно говоря, ввиду отсутствия сервера.
Первый этап, ко всем new (глобальным переменным) добавим:
PHP:
new Float: togX[MAX_PLAYERS], Float:togY[MAX_PLAYERS], togZ[MAX_PLAYERS];
new bool: togglePlayer[MAX_PLAYERS];
PHP:
togX[playerid] = 0;
togY[playerid] = 0;
togZ[playerid] = 0;
togglePlayer[playerid] = true;
PHP:
forward TogglePlayerControllableEx(playerid, bool:toggle); // Добавьте ко всем forward если вы соблюдаете чистоту кода :D
public TogglePlayerControllableEx(playerid, bool:toggle) {
switch(GetPlayerState(playerid))
{
case PLAYER_STATE_DRIVER,PLAYER_STATE_PASSENGER: TogglePlayerControllable(playerid,toggle), return toggle; // если игрок в машите то замораживаем его обычным способом
case PLAYER_STATE_NONE, PLAYER_STATE_SPECTATING: return toggle; // если игрок находится в наблюдении его нельзя заморозить
}
// если игрок стоит на земле/воздухе то замораживаем его защищенной функцией
TogglePlayerControllable(playerid,toggle);
GetPlayerPos(playerid, togX[playerid],togY[playerid],togZ[playerid]);
togglePlayer[playerid] = toggle;
return toggle;
}
PHP:
public Fresh()
{
if(!togglePlayer[playerid]) {
new Float: X, Float: Y, Float: Z;
GetPlayerPos(playerid,X,Y,Z);
if(X != togX[playerid] && Y != togY[playerid]) {
switch(GetPlayerState(playerid))
{
case PLAYER_STATE_SPAWNED,PLAYER_STATE_WASTED: togglePlayer[playerid] = true, break; // если игрока заспавнит админ, в состоянии замороженности
case PLAYER_STATE_ONFOOT: {
// Ваши действия при обнаружении читера
SendAdminMessage(-1,"Сообщение админам"); // Отправляем сообщение админа
Kick(playerid); // Ну или можно кикнуть игрока
}
}
}
}
}
Функция используется точно также как стандартная, она лишь немного имеет другой вид:
PHP:
TogglePlayerControllable(playerid,0); // Стандартная функция
TogglePlayerControllableEx(playerid,0); // Защищенная функция
Пожалуйста отпишитесь, если у вас возникнут проблемы при работе с данной функцией, я её не проверял, или же если функция отлично работает.
UPD: v.1.0.1
- Если игрок в наблюдении его нельзя заморозить, введено чтобы небыло недразумений
- Теперь если игрок в машине, его будет замораживать обычной функцией, иначе защищенной
- Если игрока заспавнили в "замороженном" состоянии, то его античит обойдет
Возможны ошибки, т.к. я пишу данный античит без сервера/игры, у меня нет возможности проверить, если у Вас есть желание помочь в проверке пишите буду рад!
Спасибо за внимание!
Автор: Mr.Green
Последнее редактирование:
