PDA

Просмотр полной версии : [Античит] Fast Respawn



whale
06.06.2017, 01:24
Доброго времени суток, уважаемые пользователи портала Pro-Pawn.

Сегодня была необходимость написать анти-чит на быстрый респаун игрока, что я и сделал, собственно говоря, но, полазив по форуму - так и не обнаружил ни одной подобной темы (возможно я плохо искал :beee:).

Суть чита: игрок умирает -> пропускается "камера смерти" -> игрок уже на спавне.
Ведь, суть чита в том, чтобы максимально быстро зареспаунить игрока - от этого мы и будем отталкиваться :)

Анти-чит пишется достаточно просто, ничего заумного в нём нет.
Анти-чит представлен в виде инклуда, так что можно просто подключить его в мод и забыть о данной проблеме.

Так же, существует функция, которая вызывается при срабатывании анти-чита:
(Данный паблик поместите в свой игровой мод)

public OnFastRespawnCheatDetected(playerid, spawned_time)
// playerid - игрок, на которого сработал анти-чит
// spawned_time - время, за которое игрок "зареспавнился.
{
// Ваши наказания
return 1;
}



Update v1.1: Теперь, при срабатывании анти-чита вызывается функция OnFastRespawnCheatDetected.
Update v1.2: В функцию OnFastRespawnCheatDetected добавлен аргумент 'spawned_time' - время, за которое игрок "зареспавнился".
Update v1.3: FIX двойного вызова функции OnFastRespawnCheatDetected.
// v1.3: Данный чит 2 раза вызывает функцию OnPlayerSpawn - соответственно и функция, срабатывающая на читера, вызывалась 2 раза.


Текущая версия: 1.3
Исходный код: https://pastebin.com/6zZJcUTN
Download (Yandex Disk): https://yadi.sk/d/jSmKv75R3Jwo3J

Nexius_Tailer
06.06.2017, 20:09
Проверь ситуацию что будет, если игрок умрёт при утоплении под водой. В последнее время много людей пишут (хотя я пока не смог у себя воспроизвести), что таким образом они без читов спавнятся быстро самой игрой и как следствие с этим есть ложные.

vovandolg
06.06.2017, 23:09
Если умереть взрывом в авто или как то там по другому то камера либо быстрее пролетит, либо там её не будет.

DeimoS
07.06.2017, 03:40
Делать инклуд и заставлять, при этом, вносить в него изменения - странная затея. Для наказания можно было написать отдельную функцию, которая бы вызывалась в инклуде и которую каждый мог бы создать в своём моде, чтоб прописать нужные наказания

whale
07.06.2017, 15:47
Проверь ситуацию что будет, если игрок умрёт при утоплении под водой. В последнее время много людей пишут (хотя я пока не смог у себя воспроизвести), что таким образом они без читов спавнятся быстро самой игрой и как следствие с этим есть ложные.

Пытался несколько раз воспроизвести подобное у себя - ничего подобного не заметил.

- - - Добавлено - - -


Если умереть взрывом в авто или как то там по другому то камера либо быстрее пролетит, либо там её не будет.

Так же пытался умереть от взрыва в авто/рядом с авто - ничего подобного так же не было.

P.S Если действительно будет что-либо подобное - будьте добры отписать в тему.

- - - Добавлено - - -


Делать инклуд и заставлять, при этом, вносить в него изменения - странная затея. Для наказания можно было написать отдельную функцию, которая бы вызывалась в инклуде и которую каждый мог бы создать в своём моде, чтоб прописать нужные наказания

Да, думаю, что Вы правы. В скором времени реализую.

- - - Добавлено - - -

Update v1.1: Теперь, при срабатывании анти-чита вызывается функция OnFastRespawnCheatDetected.
Добавьте данную функцию к себе в мод, дабы анти-чит работал корректно.

public OnFastRespawnCheatDetected(playerid)
{
// Ваши наказания
return 1;
}

Ссылка на скачивание обновлена.

Fallen A.
07.06.2017, 16:50
Сильно в тему не вдавался, да и инклуд не смотрел, но, что мешает переводить игрока в спектры после смерти и, скажем, через 5 сек оттуда выводить и спавнить?

Nexius_Tailer
07.06.2017, 17:45
Update: Теперь, при срабатывании анти-чита вызывается функция OnFastRespawnCheatDetected.
Добавьте данную функцию к себе в мод, дабы анти-чит работал корректно.

public OnFastRespawnCheatDetected(playerid)
{
// Ваши наказания
return 1;
}
Было бы также неплохо, если бы присутствовал аргумент со временем, за которое игрок заспавнился


Сильно в тему не вдавался, да и инклуд не смотрел, но, что мешает переводить игрока в спектры после смерти и, скажем, через 5 сек оттуда выводить и спавнить?
Если не изменяет память, то при установке обычного спека при смерти оно не переводит камеру куда тебе нужно (если не указывать игрока, за которым следить, что сделать и не получится).

- - - Добавлено - - -

Да и если это даже и можно как-то обойти, то без эффекта отдаления камеры это вряд ли будет выглядеть играбельно

whale
07.06.2017, 20:40
Было бы также неплохо, если бы присутствовал аргумент со временем, за которое игрок заспавнился


Если не изменяет память, то при установке обычного спека при смерти оно не переводит камеру куда тебе нужно (если не указывать игрока, за которым следить, что сделать и не получится).

- - - Добавлено - - -

Да и если это даже и можно как-то обойти, то без эффекта отдаления камеры это вряд ли будет выглядеть играбельно

Аргумент со временем добавлю. Благодарю.

- - - Добавлено - - -

Update v1.2: В функцию OnFastRespawnCheatDetected добавлен аргумент 'spawned_time' - время, за которое игрок "зареспавнился".
Первый пост обновлён (код функции, ссылка на исходный код, ссылка на скачивание).

whale
08.06.2017, 20:19
Update v1.3:
FIX двойного вызова функции OnFastRespawnCheatDetected.

// Данный чит 2 раза вызывает функцию OnPlayerSpawn - соответственно и функция, срабатывающая на читера, вызывалась 2 раза.

DeimoS
09.06.2017, 00:28
Update v1.3:
FIX двойного вызова функции OnFastRespawnCheatDetected.

// Данный чит 2 раза вызывает функцию OnPlayerSpawn - соответственно и функция, срабатывающая на читера, вызывалась 2 раза.

Ну так за счёт этого и можно попробовать отлавливать данный античит без всяких временных замеров, не?
Ну если все подобные читы работают одним и тем же методом.
То бишь, если не вызывалось OnPlayerDeath и SpawnPlayer + больше раза вызвался OnPlayerSpawn - читер

Nexius_Tailer
09.06.2017, 15:38
Ну так за счёт этого и можно попробовать отлавливать данный античит без всяких временных замеров, не?
Ну если все подобные читы работают одним и тем же методом.
То бишь, если не вызывалось OnPlayerDeath и SpawnPlayer + больше раза вызвался OnPlayerSpawn - читер
Это лишь одна из разновидностей чита, и называется она fake spawn (т.е. когда спавн вообще произошёл без ведома сервера).
А то, от чего спасает данный античит это как раз fast spawn, что и написано в названии темы (когда спавн происходит после смерти, просто без задержки)