Данная статья описывает работу KZ-Rush LJ статистики, используемой на наших серверах и включённой в нашу сборку LAN сервера (нажмите
здесь, чтобы скачать сборку). Приведённые далее значения для максимального престрейфа подразумевают прыжок с ножом, usp или другим оружием со скоростью 250 юнитов/с.
Основная и стрейфовая статистики
В качестве примера рассмотрим успешный countjump на блоке 250:
В первой строчке основной статы указано название техники. В случае HighJump в скобочках указывается также количество
FF (Friction Frames), то есть фреймов, в течение которых при приближении к краю блока на вас действовало замедление edgefriction. Также число FF для HighJump можно увидеть в момент прыжка, если включить
ShowPre.
Во второй строчке указывается дистанция
Distance, и далее идут все элементы престрейфа (начиная с последнего), которые и определяют название техники. В нашем случае сначала был duck престрейф, а затем престрейф bhop типа. В скобках у bhop престрейфа указано количество
FOG (frames on the ground), то есть сколько фреймов прошло с момента приземления до прыжка (подробнее о FOG см. в разделе
ShowPre). В последней строчке пишет количество стрейфов.
В столбцах стрейфовой статы дана информация по каждому сделанному стрейфу. В первом столбце пишется клавиша стрейфа, во втором разница gain (прирост скорости) и loss (потери скорости), а в третьем loss. В четвёртом столбце указано количество фреймов, которое длился стрейф. Последний столбец показывает эффективность стрейфов, то есть отношение количества стрейфов, которые давали прирост скорости, к общему количеству фреймов для каждого стрейфа в процентах. Можно изменить настройки статы (см. далее раздел
Меню настроек) так, что вместо клавиши стрейфа в первом столбце будет его номер. Также в последнем столбце вместо эффективности (
Efficiency) можно выбрать перекрытия (
Overlaps) или рассинхрон (
Desync). Остановимся подробнее на этих понятиях.
Overlaps - количество фреймов в конце стрейфа, в течение которых помимо основной была нажата ещё какая-то клавиша. Например, если при переключении стрейфа с
A на
D вы нажали
D когда
A ещё не была отпущена, то это считается перекрытием. Значения
Overlaps больше 1 приводят к снижению
Efficiency.
Desync показывает количество фреймов, когда движение мыши происходило в сторону, противоположную стрейфу. Как известно, мышь должна чуть запаздывать по сравнению с нажатиями клавиш, однако слишком сильное запаздывание несёт в себе опасность. Если
Desync будет больше 2, то
Efficiency с большой вероятностью пострадает. Таким образом,
Overlaps и
Desync помогают выяснить конкретную причину потерь скорости при стрейфах. Если вам этого мало, то есть специальная команда
/dt (или
/detailed), которая помимо самой стрейфовой статы выведет в консоль подробную информацию по каждому фрейму - gain-loss, зажатые клавиши, направление движения мыши.
Внизу стрейфовой статы указаны
jof (jumpoff, то есть какой запас до края блока у нас был в момент прыжка),
land (landing, то есть с каким запасом мы приземлились в конце) и
block (дистанция блока, отображаемая при условии наличия jof и land):
Если бы блок взять не удалось, то вместо land написало бы
last, то есть расстояние, которого не хватило, чтобы взять блок при данном jof:
Параллельно информация по прыжку выводится в консоль, причём там она более подробная. Например, в основной стате там можно найти
maxspeed, то есть максимальную горизонтальную скорость в течение прыжка, а в стрейфовой стате выводятся и номер стрейфа, и клавиша, и все три варианта для последнего столбца.
ShowPre
Отображение скорости в момент прыжка может работать в двух режимах (см. раздел
Меню настроек).
В режиме
Pre + Post Speed в момент прыжка в HUD отображаются тип прейстрейфа, количество
FOG, скорость до прыжка (перед попаданием на землю) и скорость после (это касается не только bhop, но также и double duck):
В режиме
Speed + Difference отображаются округлённое значение скорости до прыжка и потери скорости после:
По умолчанию bhop престрейф может быть окрашен в три цвета. Выбор цвета определяется следующим образом:
- зелёный - bhop 1 FOG без потерь скорости (скорость перед прыжком была меньше 299.973 юнита/с)
- синий - bhop 2 и больше FOG с минимальными потерями скорости (скорость перед прыжком была больше 299.973 юнита/с)
- красный - bhop с потерей скорости (все остальные случаи)
Для double duck всё проще - 2 FOG даёт зелёный престрейф, 3 и больше красный (1 FOG быть не может). Другие типы престрейфа имеют белый цвет. Выводится прейстрейф в том же HUD канале, что и
/speed и
/keys, поэтому если отображаются скорость или клавиши, то престрейф начинает обновляться с их частотой, из-за чего можно заметить его мерцание. Цвет скорости и клавиш по умолчанию белый, но если отображается цветной престрейф, то цвет перенимается у него.
JumpOff
Jumpoff можно увидеть не только в стрейфовой стате, но и непосредственно в момент прыжка (команда
/jumpoff или
/jof). Причём с помощью настроек (см. далее
Меню настроек) можно также включить отображение jumpoff для duck или просто при падении с блока. Если jumpoff не больше 5, то его цвет в HUD будет красным, а если он при этом ещё и окажется минимальным, то цвет будет зелёным. Заметьте, что минимальный здесь означает наименьший возможный в данной ситуации, то есть при другом разбеге минимальный jumpoff может оказаться меньше. Например, пусть мы бежим навстречу краю lj блока. Наша скорость равна 250 юнитов/с, то есть каждый фрейм мы преодолеваем 2.5 юнита. При падении с lj блока jumpoff конечно же будет минимальным, но при этом его значение может варьироваться от 0 до 2.5 юнитов.
Fuser2 и Height
Никогда не задумывались, почему bhop и countjump дают настолько разные дистанции? Ведь в обоих случаях мы делаем прыжок скроллом, и в обоих случаях максимальный престрейф, позволяющий не потерять скорость, равен 299.973 юнита/с. Оказывается, дело в высоте прыжка, которая в свою очередь зависит от специального параметра под названием
fuser2. В момент прыжка fuser2 становится равным 1315, и затем каждый фрейм уменьшается на 10, то есть через 1.31 секунды обнуляется. Когда мы делаем бхоп на обычном блоке, то с момента прыжка перед бхопом ещё не успевает пройти 1.31 секунды, fuser2 не успевает обнулиться, и высота полёта становится меньше. В случае же countjump такого не происходит, так как duck никак на fuser2 не влияет. Теперь становится понятно и то, что дистанция upbhop и dropbhop зависит от разницы высот между начальной платформой и уровнем прыжка, и что на одном и том же бхоп блоке sbj выше обычного бхопа.
В консольном логе каждый прейстрейф сопровождается информацией о fuser2. Также с помощью команды
/fuser2 можно включить отображение fuser2 для HUD в момент прыжка и в основной стате.
Вместо fuser2 можно смотреть непосредственно на высоту полёта, прописав в чате команду
/height. В момент прыжка отображается оценочная высота, реальная же будет показана в основной стате (она может оказаться меньше, если полёту помешал потолок).
JumpBug Trainer
Успешный jumpbug происходит тогда, когда игрок при падении на землю одновременно встаёт и прыгает, причём его центр находится в этот момент на высоте 36-38 юнитов от земли (то есть между ногами стоячей модельки и землёй меньше 2 юнитов). В таком случае, если в KZ-Rush LJ стате включена статистика jumpbug (см. Enable Menu в разделе
Меню настроек), вы увидите сообщение следующего вида:
Здесь указана высота
dist, показывающая разницу между уровнями стартовой и финишной платформ, а также расстояние
left от ног до земли в момент выполнения jumpbug. Если при этом заглянуть в консоль, то там можно обнаружить следующее:
[MAIN] JumpBug
Distance: 512.00 units
Left: 1.031250 units
Your Z: -666.968750
Required Z: -668.000000 (+ 2.0)
Помимо dist и left в консоль выведена вертикальная координата Z центра модельки в момент выполнения jumpbug (
Your Z), а также диапазон высотой в 2 юнита, в который нужно было попасть для успешного выполнения (
Required Z).
Но что если мы смогли одновременно встать и прыгнуть, но сделали это слишком рано или слишком поздно? Тут нам поможет jumpbug trainer. Включить его можно либо в Enable Menu (см.
Меню настроек), либо поставив
ljs_enable_jumpbug 2. Вот пример неудачного jumpbug при включённом trainer:
Как подсказывает стата, мы одновременно встали и прыгнули на 4 фрейма раньше, чем нужно, на высоте 37.19 юнита от нужной. В консоли же можно увидеть и нашу координату Z, и необходимый диапазон, и ту координату, на которой мы могли бы сделать успешный jumpbug (
Possible Z):
[MAIN] Failed Jumpbug
Distance: 512.00
4 frames earlier
Higher by: 37.19
Your Z: -630.808776
Required Z: -668.000000 (+ 2.0)
Possible Z: -666.968750 (4 frames later)
В примерах выше jumpbug был возможен потому, что на стартовой платформе был выполнен scroll duck. Если же на ней сделать обычный прыжок, то окажется, что выполнить jumpbug на данной высоте невозможно, и в HUD мы увидим следующее:
В консоли опять же информации больше:
[MAIN] Impossible Jumpbug
Distance: 512.00
Lower by: 13.78
Your Z: -681.786621
Required Z: -668.000000 (+ 2.0)
Nearest Z1: -662.833190 (2 frames earlier)
Nearest Z2: -672.269897 (1 frame earlier)
Помимо знакомых нам Your Z и Required Z здесь есть также две высоты, ближайшие к необходимому диапазону:
Nearest Z1 находится выше диапазона, а
Nearest Z2 ниже, и ни в один из этих фреймов успешного jumpbug у нас не получилось бы.
Команды чата
/lj,
/ljstats - вкл/выкл основную и стрейфовую стату
/ljs,
/ljmenu,
/ljsettings - меню с настройками LJ статы
/savelj,
/saveljsettings - сохранить LJ настройки
/pre,
/showpre - показывать престрейф в момент прыжка
/jof,
/jumpoff - показывать jumpoff в момент прыжка
/colorchat - вкл/выкл цветные сообщения статы в чате
/ljsound - вкл/выкл звуки LJ статы
/beam,
/ljbeam - отрисовывать траекторию полёта
/speed - отображать текущую скорость
/ljpre - при включённом showpre показывать престрейф longjump
/multibhop - при включённом showpre показывать престрейф каждого бхопа
/duck,
/ducks,
/duckpre,
/duckspre - при включённом showpre показывать престрейф каждого дака
/fuser2 - показывать fuser2 в момент прыжка и в основной стате
/height - показывать высоту в момент прыжка и в основной стате
/ljtop - показать MOTD с top10 (при условии
ljs_top_enable 1)
/weapontop - меню с выбором скорости оружия для top10 (при условии
ljs_top_weapon_enable 1)
/dt,
/detailed - вместе с обычной стрейфовой статой выводить в консоль подробную информацию по каждому фрейму
/ljversion - версия LJ статы
Меню настроек
Меню вызывается командой чата
/ljs.
Первая страница настроек:
1. Stats Mode (по умолчанию:
Simple)
Режим работы основной и стрейфовой статы.
Advanced - к обычному режиму добавляется отображение статы для случаев, когда начальная и конечная позиция находятся на разной высоте, а также когда полёт заканчивается касанием телепорта, слайда или воды (
ljs_mode 2)
Simple - обычный режим работы (
ljs_mode 1)
Off - отключить (
ljs_mode 0)
2. ShowPre (по умолчанию:
Off)
Режим отображения скорости в момент прыжка.
Speed + Difference - скорость перед прыжком и потери скорости после прыжка (
ljs_showpre 2)
Pre + Post Speed - FOG, скорость до и после прыжка (
ljs_showpre 1)
Off - выкл (
ljs_showpre 0)
3. JumpOff (по умолчанию:
Off)
Режим отображения расстояния до края блока.
for Jump + Duck + Fall - для прыжка, duck и при падении с блока (
ljs_jumpoff 3)
for Jump + Duck - для прыжка и duck (
ljs_jumpoff 2)
for Jump - для прыжка (
ljs_jumpoff 1)
Off - выкл (
ljs_jumpoff 0)
4. ColorChat (по умолчанию:
On)
Цветные сообщения LJ статы в чате.
On - показывать прыжки всех игроков (
ljs_colorchat 2)
Only Your Stats - показывать только своих прыжков (
ljs_colorchat 1)
Off - выкл (
ljs_colorchat 0)
5. Speed (по умолчанию:
Off)
Отображение текущей скорости в HUD.
On - вкл (
ljs_speed 1)
Off - выкл (
ljs_speed 0)
6. LJ Beam (по умолчанию:
Off)
Отрисовка траектории движения в прыжке.
On - вкл (
ljs_beam 1)
Off - выкл (
ljs_beam 0)
Вторая страница настроек:
1. Pre Menu
Меню, в котором настраивается, какие престрейфы будут отображаться при включённом
ShowPre:
Заметьте, что если перед duck вы находились на земле больше 10 фреймов, то это
duck pre, а если меньше, то
dd pre. А вот
cj pre, как подсказывает надпись в меню, отвечает не за duck, а за прыжок.
2. Enable Menu
Меню, которое задаёт, для каких техник включена LJ стата:
3. LJ Sound (по умолчанию:
Off)
Проигрывание звуков LJ статы.
On - вкл (
ljs_sound 1)
Off - выкл (
ljs_sound 0)
4. Always show Strafe Stats (по умолчанию:
Off)
В каком случае показывать стрейфовую стату?
On - при любом прыжке независимо от основной статы (
ljs_speed 1)
Off - только вместе с основной статой (
ljs_speed 0)
5. Total gain and efficiency in Strafe Stats (по умолчанию:
Off)
Добавление в стрейфовую стату информации о суммарном gain и средней efficiency.
On - вкл (
ljs_strafes_total_gaineff 1)
Off - выкл (
ljs_strafes_total_gaineff 0)
6. Last column of Strafes Stats (по умолчанию:
Efficiency)
Какую информацию выводить в последнем столбце стрейфовой статы?
Desync - количество фреймов c асинхронным нажатием клавиш и движением мыши (
ljs_strafes_last_column 2)
Overlaps - количество фреймов с перекрытиями по нажатиям клавиш (
ljs_strafes_last_column 1)
Efficiency - эффективность стрейфов (
ljs_strafes_last_column 1)
Топы
По умолчанию LJ топы в сборке отключены (
ljs_top_enable 0), в том числе и топы по оружию (
ljs_top_weapon_enable 0). Если же их включить, то появится возможность вызова меню
/ljtop:
При включённых топах по оружию с помощью пункта
7. Choose Speed (или команды чата
/weapontop) можно также вызвать меню с выбором скорости оружия:
Конфиг статистики
Помимо упомянутых в этой статье KZ-Rush LJ стата имеет ещё множество кваров для настройки, найти которые можно в файле
...\cstrike\addons\amxmodx\configs\kz_jump_stats.cfg. В той же папке configs есть их краткое описание в файле
kz_jump_stats_info[RU].txt.
На этом всё, удачных прыжков!