PDA

Просмотр полной версии : [Вопрос] Pawn.RakNet



Skipter
06.06.2019, 22:28
Здравствуйте.

Захотелось мне попробовать написать античит на пакетах. Прочитал официальные темы по поводу работы плагина и вроде простенькие примеры получается реализовать. Но как обрабатывать это все в виде античита пока не понимаю.

Моя примерная схема работы:

IRPC -> записываем данные в массив -> [здесь по логике нужно обрабатывать их, но где?]

Код я не прошу, но не отказался бы от объяснений как это правильно реализовать. Заранее спасибо.

p.s: rakcheat видел.

DeimoS
06.06.2019, 23:31
Эмм, так же, как и в обычном античите?
Вся суть античита на пакетах в том, что данные обрабатываются не раз в секунду (или в каком там таймере оно будет), а как только игрок присылает эти самые данные. Всё. Больше отличий от обычного античита нет.

Skipter
08.06.2019, 18:40
Да это все понятно, что как и в обычном античите нужно учитывать множество аспектов. Но непонятно, где это все проверять? Например, в nex-ac подобные вещи проверяются в OnPlayerUpdate и там же происходит кик игрока, если он читер.

Nexius_Tailer
08.06.2019, 23:36
Да это все понятно, что как и в обычном античите нужно учитывать множество аспектов. Но непонятно, где это все проверять? Например, в nex-ac подобные вещи проверяются в OnPlayerUpdate и там же происходит кик игрока, если он читер.
Так OnPlayerUpdate это и есть тот же самый античит "на пакетах", только паблик объединяет под собой вообще любую синхронизацию от игрока, а в Pawn.Raknet идёт их разделение на конкретные виды (пешком, в тачке, стрельба, прицеливание и т.д.). IRPC, ORPC, IPacket и OPacket это также просто макросы под обычные паблики этих отдельных синхр и событий. Соответственно это те же паблики как и Update, просто вызываются чуть в иных (более конкретных) условиях. А значит и действия в этих пабликах абсолютно такие же, как и в любых других стандартных самповских: кик/рассинхрон/перезапись пакета в качестве наказания сразу при обработке и удовлетворении любой из античит-проверок прямо внутри этого паблика.

И раз видел rakcheat, вот оттуда кусок конкретного ач, который работает именно через один из вызываемых плагином пабликов: клик (https://github.com/f0Re3t/rakcheat/blob/master/rakcheat.inc#L340-L353).

Skipter
17.06.2019, 21:00
Спасибо большое за информацию. Немного начинаю понимать.

Еще маленький вопрос. Допустим, я отловил читера. Вызываю паблик, где форматирую нужную мне информацию, вызываю таймер(200 млс) и кикаю игрока. Но сообщения о кике отправляется в чат несколько раз. Есть возможность это исправить так, чтобы читер не успел "наделать дел"?

DeimoS
17.06.2019, 22:47
Если боишься, что читер успеет наделать дел до кика - отрубаешь для него синхронизацию, возвращая 0 в OnPlayerUpdate или игнорируя входящие от него пакеты, в случае с RakNet.
Если вопрос заключается в том, что отправляется несколько сообщений с одинаковым текстом - тут проблема в твоей реализации уже.