Kreedz Jumping

Game mode when you racing with other players to finish a maps as fast as possible. Its comes from Counter-Strike 1.6 and was named in honor of creator
Our community will help you with passing the maps with your friends, set new records, participate and win in tournaments.

Last server records
Pro Nub

Измерение дистанции

Posted by Kpoluk 13 Mar 2016 in 16:16
Данная статья описывает работу плагина, позволяющего измерять дистанцию между двумя точками в CS 1.6. Плагин присутствует на наших серверах и включён в сборку LAN сервера (нажмите здесь, чтобы скачать её). Все расстояния далее измеряются в юнитах (units).

Меню для измерения расстояния вызывается командой /dist (или /distance, /measure):


Чтобы понять, как работает это меню, проведём несколько показательных замеров.

Первые два пункта позволяют задать точки для замера, при этом для каждой отображаются её координаты X, Y и Z. Если в пункте 4. Method выбрано Aim at Point, то для выбора точки достаточно посмотреть на неё и нажать 1 или 2, а если выбрано Stand on Point, то в качестве точки будет выбираться позиция, на которой Вы стоите (если же Вы в этом момент в воздухе, будет выбрана точка у Вас под ногами). Результат замера будет показан ниже: Height это высота между точками, а Distance это расстояние между ними. Работу остальных пунктов объясним на примерах.

Зайдём на карту kz_longjumps3 и найдём там LJ блок номиналом в 240 юнитов. Поставим первую точку на боковой стенке блока, а вторую примерно напротив, пункт 7. Extra beams пока что поставим в Off:


Выбранные точки соединяет красная линия, её длина указана в Distance и равна 240.841 юнитам. Если поставить пункт 5. Detailed info в On, то помимо Distance мы увидим также смещения между точками dX, dY, dZ по каждой оси, а также смещение dXY по горизонтали (Estimated LJ обсудим чуть ниже). Здесь можно заметить, что расстояние между блоками как раз равно смещению dX:


Этот же результат можно получить и не прибегая к помощи Detailed info. Поставим пункт 3. Autoset the other Point в On и ещё раз выберем первую точку. Вторая точка будет найдена автоматически (для этого из первой точки плагин проводит нормаль до пересечения с какой-либо поверхностью), и в Distance Вы сразу увидите ровно 240.000:


Если теперь поставить пункт 6. Epsilon в On, то дистанция уменьшится до 239.938 юнитов. Дело в том, что движок CS 1.6 не даёт модельке игрока приблизиться к любой поверхности карты ближе, чем на 0.03125 юнита. Это очень небольшое расстояние, которое мы и называем Epsilon. Таким образом, с точки зрения модельки расстояние между блоками меньше на 2 * 0.03125 = 0.0625 юнита, то есть равно 240 - 0.0625 = 239.9375 юнита. Именно это расстояние с округлением и отображается теперь в Distance.

А теперь разберёмся с Estimated LJ. Для начала нужно понять, что моделька игрока представляет собой бокс (box), то есть параллелепипед высотой 72 юнита, в основании которого лежит квадрат со стороной 32 юнита. Грани этого бокса всегда параллельны осям X, Y, Z карты. То есть если мы стоя на месте начинаем вращаться с помощью мышки, то наш бокс при этом остаётся неподвижным. Таким бразом, чтобы перелететь блок 240, нам достаточно, чтобы центр бокса преодолел расстояние в 208 юнитов, а оставшиеся 32 юнита мы добираем за счёт ширины бокса:


Но что если делать прыжок по диагонали? Выставим в меню 4. Method: Aim at Point, 5. Detailed info: On, 6. Epsilon: Off, 7. Extra beams: On и поставим первую точку на самом уголке блока 240, а вторую на противоположном уголке соседнего блока 242:


Помимо красной линии мы видим два квадрата (их размеры соответствуют ширине нашего бокса) и жёлтую линию, соединяющую их центры. Эти квадраты плагин выбирает таким образом, что расстояние между их центрами (длина жёлтой линии) минимально. Чтобы нам было удобнее оценивать свои возможности, плагин прибавляет к этому расстоянию 32 юнита и записывает результат как Estimated LJ. Если судить по Distance: 250.684, то может показаться, что для прыжка с одного уголка на другой нужно cуметь cделать больше чем 250 lj, однако Estimated LJ: 244.733 подсказывает нам, что этот прыжок намного проще, чем кажется.

На этом всё, удачных замеров!