ResetPlayerWeapons не отбирает оружее)
#1

Добрый день, давным давно столкнулся с такой проблемой: во время проведения соревнований на моем сервере античит отключается, а после проведения включается, соревнование напоминают десматчи из мода GTO, там пользователям разрешено использовать оружее типа базук, миниганов, а античит работает по следующему принципу: если замечает у игрока миниган то отнимает его (ResetPlayerWeapons) а если заметит еще раз то банит. И вот такая получается ерундовина: миниган отобран с помощью этой функции, у игрока руки пустые а античит все равно определяет наличие минигана! проверял на себе, даже после смерти все равно у меня какбы есть миниган.
НО когда я прописываю миниган админкой, античит его детектит и корректно отнимает. Глюк с пустыми руками почемуто остается только после окончания соревнования.
Кстати когда соревнование заканчивается выполняется ResetPlayerWeapons всегда и все равно виртуальный миниган остается в руках)
Reply
#2

Попробуй проверять на наличие патронов, после ResetPlayerWeapons у тебя должно быть к примеру -345 патронов, тобишь минус
Reply
#3

serafim, проверь мод на наличие правильных значений переменных, для отьёмки минигана и прочей хни.
Reply
#4

Не надо бананы давать за миник, всего лишь при обнуружении в руках миника в OnPlayerUpdate, надо делать return 0; Это простое, но действенное решение.

Античит должен сравнивать только кол-во патронов и выявлять появление нового оружия в обход мода. Причем, запрещенное для игрока оружие проверять не нужно на патроны и его появление, т.к. в OnPlayerUpdate синхр игрока отключается, если он это запрещенное оружие держит в руках. И пускай это оружие у него есть в кармане, главное, что он им не сможет пользоваться.
Reply
#5

Quote:
Originally Posted by MX_Master
при обнуружении в руках миника в OnPlayerUpdate, надо делать return 0;
А ты видел как это потом всё выглядит?
Нет?! Советую посмотреть.
Reply
#6

Я прекрасно все видел, и знаю все минусы, но автор античита не должен делать в точности как я советую. Он может добавить или изменить этот способ в зависимости от своего режима. Я подсказал только базовую часть механизма.

Что, к примеру, мешает при обнаружении миника в OnPlayerUpdate - просто убить игрока. Ведь можно же это сделать. И вот как раз после смерти все оружие прекрасно сбрасывается на 0.

Так что всё в руках конечного скриптера, а моё дело дать совет или подать идею, которую человек должен додумать сам. В конце концов, у кого есть возможность, надо на двух своих компах запускать игру и тестировать все на месте и только потом улучшать механизмы мода.
Reply
#7

А я бы не советовал использовать это в OnPlayerUpdate,
так как ты MX_Master, должен знать, как часто там могут происходить "движения".
Просто классическим методом, через "Таймер" обнаруживать Миниган.
Reply
#8

Спасибо, ребят за уделенное внимание, но я еще помимо этого могу рассказать некоторые детали.
По-первых, конечно же я проверяю количество патронов, спасибо, pen_†ĥęGun.
Во-вторых, ищет миниган у меня таймер, раз в 5 секунд, все просто.
В-третьих, миниган "обнаружается" даже после смерти, спасибо, MX_Master.
Но есть одна деталь которую я упустил в первом сообщении - миниган игрок получает миниган подбирая пикап. Скрипт дает ему нужное оружее, тип пикапа указан - 1, т.е. никакого действия, модель пикапа - соответственно миниган.
И главное в большинстве случаев все срабатывает верно, миниган отнимается и все довольны, но в некоторых случаях происходит такая вот мистика...
Reply
#9

нда уж мистика,
насколько известно мне что после "ResetPlayerWeapons", миниган как бы остаётся,
но вот после смерти игрока, его уж точно не должно быть...
Reply
#10

Оружие в сампе, в особенности в 0,3 лагает очень сильно. У меня на сервере в режиме слежки за игроком, выводится список всего его оружия и по наблюдениям за этим я сделал ряд неутешительных выводов:

1. Оружие может не исчезнуть после смерти. И может спонтанно появиться в списке оружия. Но если у игрока такого оружия нет, то он его никогда не сделает активным. Таким образом, проверять на оружие можно только оружие в руках игрока. Просто в слотах может быть чушь;
2. При переключении (даже скролла не нужно, просто медленно переключится на другое оружие) количество патронов может перескакивать со слота на слот. И только если игрок оружие не переключает оружие в течении какого-то времени, то в текущем оружии количество патронов будут адекватны;
3. Когда игрок содится в транспорт и у него есть узи или смг, но когда он содился был выбран другой слот, то слот не переключается на смг, а просто к текущему слоту приписываются патроны, которые в данный момент в смг игрока (это еще со времен 0.2х так). Например, у игрока было: дигл: 10 патронов, тек: 300 патронов, дигл в руках. Игрок садится в тачу, у него активным оружием остается дилг, но патронов становится в нем 300.
4. Видимо для оптимизации в текущей версии сампа используются не очень большие числа, для синхронизации количества патронов. Это ведет к тому, что если игрок начитил себе очень много патронов, то самп может показать какое то отрицательное число (обычное переполнение разрядной сетки). После какого числа происходит переполнение я не искал. Но с жизнью переполнение происходит после 255 (правда там беззнаково, то есть если у игрока жизнь 257, то самп сообщит, что жизнь 1)

В общем совет тут такой: каким либо образом выведете на экран показание функций работы с оружием и на основании наблюдений пишите свою логику работы античита.

PS: я не знаю как это в 0.3, но в сампе 0.2.2 могли быть лаги из-за которых менялся ид оружия. То есть у игрока был, например, М4, а все остальные видели у него миниган. Такое бывало редко (реже чем замена ид модели транспорта), но точно бывало.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)