AMX MOD X
Пятница, 19.04.2024, 01:25:41



Приветствую Вас Гость | RSS
[ Главная ] [ Использование UC_ForwardMove и UC_SideMove - AMX Mod X Форум ] [ Регистрация ] [ Вход ]
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]

Вниманию участников! Данный форум теперь является архивом и вскором времени здесь нельзя будет создавать новых тем! Просьба всем для общения и создания новых тем перейти на наш новый форум: http://amxmodx.su/

  • Страница 1 из 1
  • 1
Модератор форума: slogic, AlMod  
AMX Mod X Форум » Скриптинг » Помощь по скриптингу » Использование UC_ForwardMove и UC_SideMove (или борьба с некорректным cl_sidespeed)
Использование UC_ForwardMove и UC_SideMove
LtRATДата: Суббота, 12.09.2009, 00:59:42 | Сообщение # 1
Сержант
Группа: Пользователи
Сообщений: 33
Репутация: 1
Статус: Не в сети
Главая идея плагина в борьбе с некорректными cl_sidespeed, cl_forwardspeed и cl_backspeed значениями. Использование нестандартных значений этих команд дает преимущество (в скорости перемещения), когда при делении cl_side на cl_forward(back) получаемый коэффициент не равен 1.

Данную защиту можно реализовать двумя способами:
1) циклическая проверка кваров напрямую с помощью svc_sendcvarvalue или svc_sendcvarvalue2 (query_client_cvar), через некоторое время
2) получение значений передвижения каждый фрейм и обработка этих значений

Там и там есть плюсы и минусы, но пойдем по второму пути :)
Использование этого пути осложняется тем, что команда +speed (хотьба) реализованна в клиенте (а не через UC_Buttons как +duck итп) и тем самым меняет UC_ForwardMove и UC_SideMove на заведомо непредсказуемые значения, так как сам игрок может менять скорость хотьбы при помощи cl_movespeedkey :)

Так же во время изменения клавиш, движок ставит не точные значения (0 или maxspeed), а в зависимости от того как мы нажимали кнопки, те за 1 фрейм мы можем нажать кнопку и отжать ее, при этом будут внесены изменения в параметры движения (в данном случае с коэффициентом 0,25)... (а вобще в данном случае надо смотреть CL_KeyState итп в input.cpp)

Может я что-то упускаю, но по исходникам получается, что изменение UC_ForwardMove и UC_SideMove должно стабилизироваться довольно быстро...
Стабилизирование выражается в коэффициенте 1 при делении их друг на друга... Но проблема в том, что при нормальных установках, есть моменты когда UC_ForwardMove и UC_SideMove при делении не дают 1 и при этом их значения несколько фреймов подряд остаются неизменными...

Code

оснавная часть: "cl_side %f %f %f cheat",(UC_SideMove/UC_ForwardMove), UC_SideMove, UC_ForwardMove
L 09/11/2009 - 21:56:19: [FpsSideCheck.amxx] Cheat: "HaMMa<1368><><>" cl_side 0.497757 111.000000 223.000000 cheat "VALVE_ID_LAN"
L 09/11/2009 - 22:09:49: [FpsSideCheck.amxx] Cheat: "secas<1411><><>" cl_side 0.500000 116.000000 232.000000 cheat "VALVE_ID_LAN"
L 09/11/2009 - 22:14:28: [FpsSideCheck.amxx] Cheat: "San'ek<1424><><>" cl_side 0.497757 111.000000 223.000000 cheat "VALVE_ID_LAN"
L 09/11/2009 - 22:14:29: [FpsSideCheck.amxx] Cheat: "LEON ' L1stik<1430><><>" cl_side 0.497757 111.000000 223.000000 cheat "VALVE_ID_LAN"
L 09/11/2009 - 22:23:09: [FpsSideCheck.amxx] Cheat: "LeDJJ-hns#stake!<1432><><>" cl_side 3.000000 6.000000 2.000000 cheat "VALVE_ID_LAN"

Вообщето в этих логах заведомо неизвестно, нет ли значений читерных, но "cl_side 0.497757 111.000000 223.000000" не является читерным точно. А "cl_side 3.000000 6.000000 2.000000" вообще неизвестно как получить...

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

Плагин текущей версии прикладываю... А вообще такие "некорректные" значения довольно редко проскакивают... (поэтому и проблематично установить их причину)

ЗЫ плагин одновременно еще "палит" fps_max без блокирования developer режима (коим я пользуюсь), через клиентский fps (а не серверный), но я думаю проблем не будет в исходниках отделить одно от другого

Прикрепления: FpsSideCheck.sma (4.5 Kb)
 
KokaДата: Суббота, 12.09.2009, 02:08:53 | Сообщение # 2
Полковник
Группа: Пользователи
Сообщений: 169
Репутация: 1
Статус: Не в сети
при клиентском фсп = 100 будет максимальная скорость игрока, соответственно если фпс 400 - скорость сильно падает. достаточно при 1 спауне игрока с помощью prethink посчитать кол-во фрэймов в секунду, определить отклонения + - и если они > или < положенного, то кик игрока. если все норм - то блокировать смену fps_max, fps_modem...

а по клиентским командам я не знаю как можно быстрее бегать/летать при 100 fps =/

> Проблема - разобраться откуда получаются такие значения
исходников кс ни у кого нету :)


стал ощущать рефлексы тоньше, оставаясь как всегда с идеей той же...
 
LtRATДата: Суббота, 12.09.2009, 02:57:10 | Сообщение # 3
Сержант
Группа: Пользователи
Сообщений: 33
Репутация: 1
Статус: Не в сети
Ну начнем с того, что фпс вроде как не оказывает влияния на UC_ForwardMove и UC_SideMove... поэтому демагогию про большую низкую скорость лучше не разводить... И кол-во фреймов в секунду идут лесом тоже, как совершенно неправильный и нестабильный вариант, тк теоретически требуется блокировать большой фпс в 1-2х фреймах за 1 секунду... Ибо в лжстатс встроенно автоматическое выставление "fps_max 100" раз в 0.н секунд, но пытаются прыгать с помощью "bind mwheelup "fps_max 500" " т.е. если брать большое окно времени, то из-за автоматического выставления кваров сторонними плагинами - совершенно нельзя определить "чит". И полнуюстью блокировать квар имхо не дело... (Да и вроде уже невозможно, а вот биндами будут выставлятьи читерить, хотя это у меня желание не блокировать developer, тем кто советует на него...)
Насчет наказаний - это в данном плагине стоит кик, но в сторонних плагинах может использоваться совершенно подругому.

>>а по клиентским командам я не знаю как можно быстрее бегать/летать при 100 fps =/
Ну вот что такое быстрее бегать/летать... у нас есть перемещения по осям x/y, итоговая скорость всеравно стремится к maxspeed (т.е скорость не больше), но можно увеличить перемещение по одной из осей, засчет другой... если клиент шлет такие значения - то можно ведь как-то

>>исходников кс ни у кого нету
думаю что исходников ХЛ в данном случае будет достаточно, не думаю что это менялось в КСе... скорей всего я что-то из ХЛСДК упускаю...

 
liverpoolДата: Вторник, 15.09.2009, 02:31:10 | Сообщение # 4
Рядовой
Группа: Пользователи
Сообщений: 11
Репутация: 0
Статус: Не в сети
LtRAT
Очень интересный плагин. Когда полностью до конца напишешь. Выложишь в паблик?
 
LtRATДата: Вторник, 15.09.2009, 03:03:50 | Сообщение # 5
Сержант
Группа: Пользователи
Сообщений: 33
Репутация: 1
Статус: Не в сети
liverpool
Хотелось бы, но для этого надо сначала дописать :) Он у меня давненько уже в разработке, но нету времени сильно копать по этой тематике :( Собственно поэтому помощи и попросил :) Будет решение этой проблемы - будет плагин :)
И почему-то мне кажется, что решение там простое :)

ЗЫ у меня пока стоят оповещения для админов с выводом всякой инфы... Они пытаются проанализировать свои действия, когда у них такое получается, но пока безуспешно...

 
AMX Mod X Форум » Скриптинг » Помощь по скриптингу » Использование UC_ForwardMove и UC_SideMove (или борьба с некорректным cl_sidespeed)
  • Страница 1 из 1
  • 1
Поиск:

AMX Mod X Russian Community © 2006-2024