Активный
- Тема Автор
- #1
Идея и назначение
Идея в том, чтобы отслеживать слишком быстрое перемещение игрока по карте.
Если за один апдейт игрок перемещается аномально далеко, можно считать это читом скорости.
Подходит для базовой античит защиты.
Суть реализации
1. Храним последнюю позицию игрока.
2. В OnPlayerUpdate считаем расстояние между старой и новой позицией.
3. При слишком большом расстоянии отправляем предупреждение или применяем наказание.
Реализация
Дополнительные идеи
1. Учитывать состояние в машине и увеличивать лимиты.
2. Считать количество срабатываний и кикать при частых нарушениях.
3. Игнорировать телепорты, вызванные админскими командами.
Идея в том, чтобы отслеживать слишком быстрое перемещение игрока по карте.
Если за один апдейт игрок перемещается аномально далеко, можно считать это читом скорости.
Подходит для базовой античит защиты.
Суть реализации
1. Храним последнюю позицию игрока.
2. В OnPlayerUpdate считаем расстояние между старой и новой позицией.
3. При слишком большом расстоянии отправляем предупреждение или применяем наказание.
Реализация
Код:
new Float:LastX[MAX_PLAYERS], Float:LastY[MAX_PLAYERS], Float:LastZ[MAX_PLAYERS];
public OnPlayerUpdate(playerid)
{
new Float:x, Float:y, Float:z;
GetPlayerPos(playerid, x, y, z);
if(LastX[playerid] != 0.0 || LastY[playerid] != 0.0)
{
new Float:dx = x - LastX[playerid];
new Float:dy = y - LastY[playerid];
new Float:dist = floatsqroot(dx * dx + dy * dy);
if(dist > 5.0)
{
SendClientMessage(playerid, -1, "Подозрительное быстрое перемещение.");
}
}
LastX[playerid] = x;
LastY[playerid] = y;
LastZ[playerid] = z;
return 1;
}
Дополнительные идеи
1. Учитывать состояние в машине и увеличивать лимиты.
2. Считать количество срабатываний и кикать при частых нарушениях.
3. Игнорировать телепорты, вызванные админскими командами.