- - - Updated - - -
Это проблема двух пакетов:
MSG_MOVE_START_FORWARD 0xB5,
MSG_MOVE_STOP 0xB7.
В этих пакетах имеется:
Флаг перемещения (Movement Flags), может быть 0 или 1.
Флаг для маунтов и анимаций (Extra Movement Flags), может быть 0 или 1.
Значение временной метки (Timestamp), когда был совершен шаг.
X, Y, Z конечные координаты в конце совершенного шага.
Направление лица в радианах (Facing).
Суть проблемы:
Любой игрок в любое время может отправить пакеты MSG_MOVE_START_FORWARD и MSG_MOVE_STOP, и сервер их схавает.
Пример: совершение первого шага в Шторме, второй шаг через секунду в Стальгорне (разные читы на телепорт).
Поломка или модификация осей X, Y: если отправить пакет в любое время, например в сапе, стане, сетке, корнях и всех других модифицирующих скорость способностях, тогда сервер обрабатывает пакеты корректно, и игрок получает преимущества (это база для разнообразных читов на антистан, анрут, антиоткидки, притяжки и т.д.).
Решение:
MSG_MOVE_START_FORWARD и MSG_MOVE_STOP никак не проверяются, их можно отправить когда угодно, и клиент может написать свою позицию самостоятельно в любое время под любой модификацией скорости, под любым бафом, дебафом.
Пакетам необходимы дополнительные проверки:
Проверка на таймштамп: если не совпадает, телепортация на последнее корректное место.
Проверка по формуле на замедление и дальность ярдов: игрок не может пройти 5 ярдов с замедлением -50%, все ярды разделить на 2, перемещение игрока на 2.5 ярда, а не на 5, как заявил игрок в своем пакете.
Проверка по формуле на позиционирование вверх-вниз (Y, Z), положение фейса, проверка бафов, дебафов, замедление или стан, назначение штрафов, минус ярды, минус поворот лица в соответствии с таймштампами.
Щадящий режим проверки на особые механики боссов, квестов, профессий (например, нитроускорители).
Стандартный режим проверки на PvP.
Особый режим проверки на спам пакетов от меток по репортам, большому ДПС (например, реальные игроки за 5 минут физически не нажмут 1000 раз W, чтобы пройти 0.1 ярда, ибо на руке тогда отвалятся пальцы. Проверка Facing: реальный человек не будет крутиться 0.1-0.2 1000 раз в 5 минут. Проверка на постоянные совпадение, например реальный человек не будет 100 раз в 5 минут повторять положение Facing ровно на 0.30 Градусов).
P. S.: ТЗ есть, где искать есть, почему бы не сделать?





Ответить с цитированием
