Re: Cпавн транспорта читерами! -
AirKite - 12.12.2012
Что эта за версия собейта... Если это действительно то как вы говорите, то это действительно СЕРЬЁЗНАЯ и ГЛОБАЛЬНАЯ проблема, дырка в SAMP. Как вообще создаётся сценарий от ИНКОГНИТО... В OnVehicleDeath срочно нужно добавлять новый аргумент. OnVehicleDeath(vehicleid, killerid,
syncerid)
Stepashka, очень не пренебрежительное отношение к ситуации...
eakwarp, лучшая защита не создавать сервер. Как не пускать читеров? Проводить жёсткий отбор и иметь онлайн 50 игроков? И это при том условии что если вдруг человек всё таки начал читерить, поймать его на этом вредительстве будет невозможно (имею ввиду этот респавн машин).
Тем не менее, ТС, вы уверены в том, что OnUnoccupiedVehicleUpdate не реагирует
Re: Cпавн транспорта читерами! -
Egor123 - 12.12.2012
Quote:
Originally Posted by AirKite
Что эта за версия собейта... Если это действительно то как вы говорите, то это действительно СЕРЬЁЗНАЯ и ГЛОБАЛЬНАЯ проблема, дырка в SAMP. Как вообще создаётся сценарий от ИНКОГНИТО... В OnVehicleDeath срочно нужно добавлять новый аргумент. OnVehicleDeath(vehicleid, killerid, syncerid)
Stepashka, очень не пренебрежительное отношение к ситуации...
|
Приятно удивили. Версию собейта могу отправить в лс, если интересно конечно
Re: Cпавн транспорта читерами! -
AirKite - 12.12.2012
Quote:
Originally Posted by Egor123
Приятно удивили. Версию собейта могу отправить в лс, если интересно конечно 
|
Кидай, можно с ссылками. Правда то, что гляну не могу гарантировать, времени нехватка. В остальном допустить такое абсурдно... я лично неоднократно просил Kye сделать возможность отслежки синхронизации, объяснив ситуацию с изменением позиции автомобиля (ну реализовал он OnUnoccupiedVehicleUpdate). Теоретически OnUnoccupiedVehicleUpdate должен отображать любые синхронизирующие пакеты от игрока направленные на транспорт без водителя (ибо с водителем синхронизатор ТОЛЬКО водитель, но и тут есть возможность обхода, став на некоторое время водителем не заметно для настоящего водителя), похоже если то что ты говоришь действительность, выходит OnUnoccupiedVehicleUpdate вызывается только при изменении Pos, Velocity, Angle и QuatRot. Хотя должен как я говорил выше, при ЛЮБЫХ изменениях.
Кстати ситуация когда игрок сидит за рулём автомобиля и тут бац его машиной начинает кто то управлять (хотя он кроме себя в машине никого не видит) вполне реальна. Правда такого читера можно легко отловить скриптами.
p.s. Из последнего помнится как не серьёзно отнеслись к возможности подмены ID диалога. Писал где, почему и как легко пофиксить. Kye вшил фикс в сервер.
Re: Cпавн транспорта читерами! -
stabker - 12.12.2012
Меня тоже удивила эта функция, это что-то новое для собейта. Раньше хоть телепортировался в машину или еще чего, а тут даже никаких признаков. Лишь 5 секунд надо ждать, это настораживает.
Но все же, буду искать, что-то да должно "паранормально" при этом изменяться для читера.
Re: Cпавн транспорта читерами! -
AirKite - 12.12.2012
Да ничего вы паранормального не найдёте. Чему вы удивлены? Сервер принимает команду что машина умерла (упала в воду например). При этом сервер то конечно знает от кого он принял эту информацию. А вот при вызове OnVehicleDeath отправляется аргумент vehicleid=ид машины, killerid=убийца машины (255 вода), т.е. killerid равен тому кто убил машину а не тот кто отправил серверу информацию о том что машина была убита.
Доп инфа, для тех кто не вкурсе: (Сервер это лишь синхронизатор, связь между игроками, у него нет физики игры и сервер не может знать при каких условиях машина тонет (умирает) и т.д., поэтому приходится слушаться игроков) Мы конечно могли бы отслеживать подозрительные вещи, но тут стоит вопрос в недостатке информации а именно дополнительном аргументе, типа OnVehicleDeath(vehicleid, killerid, syncerid) где syncerid = иду игрока который отправил инфу о смерте транспорта.
Re: Cпавн транспорта читерами! -
White_116 - 12.12.2012
Багов с автомобилями достаточно, на одной машине может весь сервер ездить, правда они друг друга видеть не будут (рассинхронизация) а всего лишь достаточно пару условий, кто первый сел того и тачка, остальные идут лесом.
Re: Cпавн транспорта читерами! -
Barabashka - 12.12.2012
[ame]http://www.youtube.com/watch?v=HT6NKrg-x6U[/ame]
Re: Cпавн транспорта читерами! -
Stepashka - 12.12.2012
Киньте в ЛС сиё творение, есть одна мысля как это отследить и отловить того кто читерит.
Re: Cпавн транспорта читерами! -
Egor123 - 13.12.2012
Quote:
Originally Posted by Stepashka
Киньте в ЛС сиё творение, есть одна мысля как это отследить и отловить того кто читерит.
|
Скинул.
Re: Cпавн транспорта читерами! -
OKStyle - 14.12.2012
Quote:
Originally Posted by AirKite
А вот при вызове OnVehicleDeath отправляется аргумент vehicleid=ид машины, killerid=убийца машины (255 вода), т.е. killerid равен тому кто убил машину а не тот кто отправил серверу информацию о том что машина была убита.
|
А wiki говорит, что агрумент у функции всего один - vehicleid.
Re: Cпавн транспорта читерами! -
AirKite - 08.01.2013
Проверил 0.3х, баг остался... Вообще создал тему
https://sampforum.blast.hk/showthread.php?pid=2313220#pid2313220 мб не останется без внимания. Вообще как то тупо что killerid = 255 если машина утоплена. (Актуально лишь когда максимальное количество игроков было 200).
Re: Cпавн транспорта читерами! -
Stepashka - 08.01.2013
Quote:
Originally Posted by AirKite
|
Во-первых, давно уже создан запрос (маленько с именем переменной только просчитался, виноват).
Во-вторых, уже давно
pawn Код:
#define INVALID_PLAYER_ID (0xFFFF)
что равно 65535. Откуда ты взял 255 вообще не представляю.
Или чит присылает именно 255, а не INVALID_PLAYER_ID ?
Re: Cпавн транспорта читерами! -
AirKite - 08.01.2013
Quote:
Originally Posted by Stepashka
Во-первых, давно уже создан запрос (маленько с именем переменной только просчитался, виноват).
Во-вторых, уже давно
pawn Код:
#define INVALID_PLAYER_ID (0xFFFF)
что равно 65535. Откуда ты взял 255 вообще не представляю.
Или чит присылает именно 255, а не INVALID_PLAYER_ID ?
|
Да, ты ведь ответил в моей теме, которую снесли. Кстати лучше поддержите следующий пост
http://forum.sa-mp.com/showpost.php?...0&postcount=54
Я создал тему отдельно ибо это не только предложение но и баг как бы. Вся соль в том, что OnVehicleDeath в killerid не возвращает INVALID_PLAYER_ID, он возвращает именно 255 (т.е. старый INVALID_PLAYER_ID, когда ещё игрок не мог быть 255 идом в связи с ограничением в 200 игроков). Причём это не чит отправляет killerid (сам SAMP в принципе не принимает таких данных), а сам SAMP формирует его. т.е. без чита просто выкидываем машину в воду или взрываем её, после чего получаем
Код:
OnVehicleDeath(ид_машины, 255)
код проверки
pawn Код:
public OnVehicleDeath(vehicleid, killerid) {
new string[128]; format(string, 128, "OnVehicleDeath(%d, %d)", vehicleid, killerid);
SendClientMessageToAll(-1, string);
}
проверено и на 0.3х тоже (надеялся что пофиксят). Считаю это достаточно критичным багом
Re: Cпавн транспорта читерами! -
Stepashka - 08.01.2013
Quote:
Originally Posted by AirKite
|
спасиб, уже понял и поправил свой пост.
Re: Cпавн транспорта читерами! -
dimonml - 08.01.2013
Возможно я что-то не так понял, но в сервере 255 действительно забито константой

В текущей версии сервера (0.3x RC1, ну и в предыдущих также) от игрока приходит пакет, в котором просто прописан ид машинки. После проверок что валидный игрок и машинка (что-то там не похоже, что проверяются какие машинки у игрока в зоне стриминга) у машинки прописывается флаг на респавн. Потом в отдельном цикле проверяются все машинки и вызывается событие OnVehicleDeath.
Re: Cпавн транспорта читерами! -
Stepashka - 08.01.2013
Quote:
Originally Posted by dimonml
Возможно я что-то не так понял, но в сервере 255 действительно забито константой 
В текущей версии сервера (0.3x RC1, ну и в предыдущих также) от игрока приходит пакет, в котором просто прописан ид машинки. После проверок что валидный игрок и машинка (что-то там не похоже, что проверяются какие машинки у игрока в зоне стриминга) у машинки прописывается флаг на респавн. Потом в отдельном цикле проверяются все машинки и вызывается событие OnVehicleDeath.
|
Я думаю на это стоит обратить внимание того же
******, личным сообщением, а то насколько я помню
Kalcor редко читает ЛС, в виду их большого числа, хотя можно и ему продублировать.
Я думаю к тебе как к разработчику адаптаций они прислушаются.
Re: Cпавн транспорта читерами! -
DartfoL - 08.01.2013
dimonml прав, аппдейт с 0.2 на 0.3 в некоторых местах прошел не полностью и до сих пор не обновлен до конца
еще один пример этому: в 0.2x лимит авто был 700, а в 0.3 поднялся уже до 2000. Но если в одной позиции стрима поставить 700 авто, то самп войдет в бесконечный цикл, и останется только убивать процесс
P.S. и не надо тут говорить, что игра виснет от большого кол-ва тачек в одном месте. Я ставил 699 авто и фпс было около 7, а одно авто не прибавит столько груза
Re: Cпавн транспорта читерами! -
AirKite - 08.01.2013
Quote:
Originally Posted by dimonml
Возможно я что-то не так понял, но в сервере 255 действительно забито константой 
В текущей версии сервера (0.3x RC1, ну и в предыдущих также) от игрока приходит пакет, в котором просто прописан ид машинки. После проверок что валидный игрок и машинка (что-то там не похоже, что проверяются какие машинки у игрока в зоне стриминга) у машинки прописывается флаг на респавн. Потом в отдельном цикле проверяются все машинки и вызывается событие OnVehicleDeath.
|
Скорее всего так: Приходит пакет, после чего ставится флаг машинке что она мертва и сразу же вызывается OnVehicleDeath. Затем в цикле или по таймеру срабатывает проверка на занятость автомобиля, если игрок не находится в авто, то его респавнит и сразу же вызывает OnVehicleSpawn (который кстати вызывается только в GM) - хм... уже вызывается и в FS =)
Quote:
Originally Posted by Stepashka
Я думаю на это стоит обратить внимание того же ******, личным сообщением, а то насколько я помню Kalcor редко читает ЛС, в виду их большого числа, хотя можно и ему продублировать.
Я думаю к тебе как к разработчику адаптаций они прислушаются. 
|
Re: Cпавн транспорта читерами! -
dimonml - 09.01.2013
>сразу же вызывается OnVehicleDeath
Нет, не так. Сразу же ничего не вызывается. В обработчике события от клиента только ставиться флаг.
PS: кстати, есть еще забавная штука в цикле, который пробегается по всем машинкам сервера и вызывает OnVehicleDeath. Там стоит условие типа if (rand() % 20) - то есть в одном из 20 случаем мы машинку не респавним
Re: Cпавн транспорта читерами! -
Mutha_X - 09.01.2013
Теперь понятно почему исходники сампа закрыты: код, как видно, петросянский xD