[FilterScript] Anti OnFoot Crasher
#1

Актуально для версий серверов ниже 0.3x R2

Многие искали защитку от: читер бьёт кулаком и все вокруг него вылетают.
Решил поделиться.
Вот простой скриптиг.
pawn Код:
#include <a_samp>

new FirstKick[MAX_PLAYERS char];
public OnPlayerConnect(playerid)
{
    FirstKick{playerid}=0;
    return 1;
}

public OnPlayerUpdate(playerid)
{
    new Float:x,Float:y,Float:z;
    GetPlayerCameraFrontVector(playerid,x,y,z);
    if(floatcmp(1.0, floatabs(x))==-1 || floatcmp(1.0, floatabs(y))==-1 || floatcmp(1.0, floatabs(z))==-1)
    {
        if(FirstKick{playerid})
        {
            Kick(playerid);
        }
        else
        {
            FirstKick{playerid}=1;//ложный вызов из-за старых данных.
        }
        return 0;
    }
    return 1;
}
Второй вариант, для тех у кого проблемы с числами. Более мягкий, минимум ложных/случайных киков. Предпочтительный.
pawn Код:
#include <a_samp>

new AOFCT[MAX_PLAYERS];
new AOFCW[MAX_PLAYERS char];
public OnPlayerUpdate(playerid)
{
    new Float:x,Float:y,Float:z;
    GetPlayerCameraFrontVector(playerid,x,y,z);
    if(floatcmp(1.0, floatabs(x))==-1 || floatcmp(1.0, floatabs(y))==-1 || floatcmp(1.0, floatabs(z))==-1)
    {
        if(AOFCT[playerid] < GetTickCount())AOFCW{playerid}=0; else AOFCW{playerid}++;
        if(AOFCW{playerid} < 2) AOFCT[playerid]=GetTickCount()+1000; else
        {
            Kick(playerid);
        }
        return 0;
    }
    return 1;
}
Reply
#2

А о "//ложный вызов из-за старых данных." конкретнее можно? Зачем это?
Reply
#3

Quote:
Originally Posted by stabker
Посмотреть сообщение
А о "//ложный вызов из-за старых данных." конкретнее можно? Зачем это?
При первом апдейте числа зашкаливают после того, как кто-то попытался пошатать а игрок зашёл под этот ид.
Можно не бояться если даже ложного вызова не было, так как игрок рассинхронизирован будет.
Reply
#4

Я конечно "стар" для написания античитов, но разве не правильней будет проверить факт того, что сумма квадратов (x,y,z) больше еденицы, т.е. длина вектора больше еденицы? Или хотя бы поставить за место && - || ?
Reply
#5

Quote:
Originally Posted by Mutha_X
Посмотреть сообщение
Я конечно "стар" для написания античитов, но разве не правильней будет проверить факт того, что сумма квадратов (x,y,z) больше еденицы, т.е. длина вектора больше еденицы?
На if я предположил что быстрее будет, но длина действительно не должна быть больше Единицы.
Quote:
Originally Posted by Mutha_X
Посмотреть сообщение
Или хотя бы поставить за место && - || ?
-Логику не доглядел Пересмотри.
Reply
#6

из-за движения головы что ли крэш получается?
а если в таймер секундный поставить это дело, нормально будет?
Reply
#7

Не движение головы, удар руками, там где нет пули. Ну а дальше из-за больших значений двиг ГТА входит в ступор.
Секундный таймер пропустит атаку. Нужно действовать на уровне синхронизации.
Reply
#8

при спавне стабильно 1 координата имеет значение более 10к. лучше просто ретурн 0 делать без кика
===
а у тебя со 2 раза кикает, тогда ок
Reply
#9

Я видимо тоже уже стар... Причём тут значения полученные в GetPlayerCameraFrontVector? Краш выходит засчёт неверных данных в PlayerCameraFrontVector? Удары рукой тут не причём. По всей видимости просто чит подсовывает эти данные в момент удара, т.е. просто вызов чита, подмены этих крешовых данных в PlayerCameraFrontVector
Reply
#10

Как бы вам по проще объяснить. Читер ставит значения вектора 353543.56, 74357.4, -723493.0 | Позиция камеры тоже меняется но отследить по ней нельзя, остаётся только вектор направления камеры.
В момент удара рукой, ногой, ножичком ГТА паникует и падает в обморок. Точка удара смещается чтоле, нужно саму ГТА ковырять, чтобы понять.
Reply
#11

Измени

pawn Code:
(-1.0< x <1.0)
на

pawn Code:
(-1.0<= x <1.0)
Reply
#12

Quote:
Originally Posted by x_O
View Post
Измени

pawn Code:
(-1.0< x <1.0)
на

pawn Code:
(-2.0< x <1.0)
чтобы ник свой скрывать читом? ниже -1 и выше 1 не изменяются координаты, у меня не получалось по крайней мере
Reply
#13

Quote:
Originally Posted by Jon_De
View Post
чтобы ник свой скрывать читом? ниже -1 и выше 1 не изменяются координаты, у меня не получалось по крайней мере
Ваше дело. Когда получится, тогда поймешь и поменяешь.

Точнее лучше так:

pawn Code:
(-1.0<= x <1.0)
Reply
#14

Quote:
Originally Posted by White_116
View Post
Как бы вам по проще объяснить. Читер ставит значения вектора 353543.56, 74357.4, -723493.0 | Позиция камеры тоже меняется но отследить по ней нельзя, остаётся только вектор направления камеры.
В момент удара рукой, ногой, ножичком ГТА паникует и падает в обморок. Точка удара смещается чтоле, нужно саму ГТА ковырять, чтобы понять.
Если так, то происходит некоторая ошибка при расчёте точки пересечения вектора удара с поверхностью. Определяет что пересечение было и выясняет эту точку так, как будто вектор был нормирован и недалеко уходит от игрока. А поверхность не найдена!
Reply
#15

Тут еще проверку на state нужно добавить

P.S. Это оно ? И да, еще вопрос. При краше этим читом, "жертвы" не вылетают, как обычно, а просто зависают?
Reply
#16

Quote:
Originally Posted by stabker
View Post
Тут еще проверку на state нужно добавить

P.S. Это оно ? И да, еще вопрос. При краше этим читом, "жертвы" не вылетают, как обычно, а просто зависают?
да..
Reply
#17

Прикольный бэд на самом деле ) Только проще проверить статус клавиши, оружие и вектор камеры, потом просто return 0 ну и варн. А вообще спасибо за инфу =) Отписывали уже kalcor-у?
Reply
#18

Мне сегодня игрок жаловался, мол, что такое, что кикает просто так (условие против этого крашера). Координаты примерно такие-же, как я выложил ранее
Reply
#19

Quote:
Originally Posted by AirKite
View Post
Отписывали уже kalcor-у?
словно он что-то предпримет, тем более что решение уже есть. Большая беда для сампа это-то, что он не фильтрует (свой базар) данные. Принимает всё, что ему отправят и посылает другим то, что принял.
Quote:
Originally Posted by stabker
View Post
Мне сегодня игрок жаловался, мол, что такое, что кикает просто так (условие против этого крашера)
Т.е. Вы хотите сказать что защита даёт сбои? (не совсем вас понял)
Reply
#20

Quote:
Originally Posted by White_116
View Post
словно он что-то предпримет, тем более что решение уже есть.
Ну я сколько раз до него достукивался, в ходе переписки обещал фиксы, потом они выходили (ВСЕГДА).

Quote:
Originally Posted by White_116
View Post
Большая беда для сампа это-то, что он не фильтрует (свой базар) данные. Принимает всё, что ему отправят и посылает другим то, что принял.
Подумай объективно. Можно ли написать фильтр на всё (принимать\не принимать)? Благо в данный момент фильтровать МОЖНО самому.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)