Описание: Расширенная клиентская библиотека для Half-Life. Главная задача разработки - обеспечить максимально удобную и приятную игру в HLDM, насколько это позволяет довольно скудный SDK (разумеется, не давая преимущества над соперниками). Все изменения косметические, оповестительно-информационные или направленные на производительность.
Испытана на следующих версиях HL: - HL 1.1.1.0 (WON) - NGHL (Build 3248) - Steam HL (Build 6153)
Начиная с версии 2.3 библиотека научилась самообновляться. При запуске HL, если найдено обновление, открывается консоль, где отображается ход скачивания. Затем игра закрывается и пакетный файл завершает апдейт. На всё это уходит лишь 10-40 секунд.
client.dll CRC32: A7D2D3F5
Список нововведений (зелёным - нововведения последней версии): + 2.51: исправлена зависимость физики от ФПС (по умолчанию фикс НЕ применяется) + 2.51: возможность отключить светящуюся оболочку вокруг w_ моделей, например, на AIMaster.ru (улучшит ФПС, если используются модели предметов, либо исправит цвета спрайтов предметов, если установлен спрайт-пак; по умолчанию применяется) + 2.51: возможность отключить фонари игроков (по умолчанию НЕ применяется) + 2.5: мышь через direct input (по умолчанию выкл.) + 2.5: отключение динамического света у ракет и взрывов (по умолчанию свет включен) + 2.5: улучшенная реакция отображения имени игрока под прицелом (подробности ниже, см. hud_centerid_fix; по умолчанию выкл.) + 2.45: новый, расширенный счётчик fps + 2.44: возможность выбирать звуковой файл для передачи через voiceinput (infinite trolling!) + 2.44: блокировка cvar'ов во время коннекта + 2.44: эффект запаздывания оружия в руках при развороте (как в Source) + 2.44: убитые, но не появившиеся игроки более не материальны и за них не цепляет + 2.44: перебор адресов для проверки обновления (страховка от недавней проблемы с .tk) + 2.43: новый стиль покачивания оружием при беге (как в Source; сделано по туториалу с hlfx.ru) + 2.42: добавлен столбец с моделями игроков в таблице + 2.42: "замаскироваться" под другого игрока: клик правой кнопкой мыши по строке с его именем в таблице (устанавливает модель и цвета) + 2.42: сменить команду в ТДМ стало проще - достаточно кликнуть по любому игроку из противоположной команды (тоже в таблице) + 2.41: возможность установить координаты статусбара (имя игрока под прицелом) + 2.41: оповещение в чате при заходе кем-либо в спек + 2.41: недостающие ресурсы РЦД (например, спрайт спидометра) автоматически скачиваются с сайта + 2.41: сброс отображаемого меню слева при заходе на сервер (т.е. голосование больше не остаётся висеть) + 2.41: возможность отменить проверку обновлений с помощью файла (по просьбе линуксоидов-вайнщиков; читать ниже) + 2.4: Объединившись с RaubTieR, нам-таки удалось реализовать скриншоты в формате JPEG! Выражаю респект и благодарность Рау. + 2.4: корректный предикт передвижения сидя на лестнице + 2.4: предикт смены оружия на клиенте + 2.4: команда для переключения значений кваров (см. ниже) + 2.4: команда для быстрого присоединения к последнему посещённому серверу + 2.3: звук перезарядки при спрятанной модели оружия (9mmhandgun, 9mmAR, 357) + 2.3: опционально спрайт оружия в HUD'е (идея из AG) + 2.3: проверка обновлений и их автоматическая установка + 2.22: улучшена совместимость с синглом + 2.22: новый стиль чата (ближе к Source) + 2.22: несколько новых комманд и переменных + эффективность в таблице очков (по формуле K / (K + D) ) + цветные ники в таблице + фильтр чата + улучшенная поддержа скинов худа + улучшенный чат с возможностью набора кириллицей и использования буфера обмена. Tab - смена языка; выделение и перемещение курсора как в обычных текстовых формах + автозапись демки при заходе в игру + отключаемые чёрные полосы в режиме спектатора + плавная прокрутка чата и детлога + отключаемые трупы (2 режима) + краткая запись HP/AP в ТДМ при наведении на игрока + спидометр + индикатор расстояния прыжка + индикатор скорости прыжка + звуковое оповещение при входе/выходе игрока + настраиваемый цветной худ (3 режима раскраски) + отключаемый звук чата (2 режима) + оповещение в чате при заходе нового игрока + отображение "лосса" в таблице (потеря пакетов) + таймер + лог чата в valve/chatlog.txt (2 режима) + время сообщений чата в консоли и чатлоге + увеличена длина имени сервера в таблице и МОТД (с 31 и 32 до 53 и 41 символов соответственно) + оптимизация точек прострелов (+фпс) и зависимость их размера от урона + отключаемые шарики от попаданий гауссом (точки от прострелов горят всегда; +фпс) + мгновенное логирование чата в консоль - теперь последние сообщения не исчезают при выходе с сервера + цветной чат, детлог и ники при наведении (как в аг и ку3) + фильтрация ключей цвета на панели спектатора + правильный предикт распрыга на клиенте, режим автоопределения * 2.51: исправлена потенциальная причина вылетов, связанная с длинной пути до каталога игры * 2.501: исправлен ещё один вылет, связанный с отображением имён игроков (но уже с centerid_fix) * 2.5: исправлен вылет, связанный с отображением имён игроков * 2.5: исправлены стоячие трупы игроков * 2.5: исправлен небольшой глюк нового счётчика фпс (в режиме "2"; связан с раскраской) * 2.5: PlayLastDemo и ViewLastDemo без параметров проигрывают последнюю записанную демку * 2.5: cl_weaponturnlag и cl_newbob выключены по умолчанию * 2.45: удалена функция CVAR Lock (не удалось исправить баги) * 2.44: исправлено неадекватное покачивание оружием * 2.44: различные мелкие исправления * 2.43: исправлены исчезающие ники в таблице при hud_colortext 2 * 2.43: исправлен WeaponList (новое оружие правильно отображается в HUD'е) * 2.43: исправлена исчезающая точка в конце сообщений * 2.43: исправлен адрес закачки по умолчанию * 2.42: нажатие кнопок мыши в таблице больше не вызывает забинденные на них команды * 2.41: исправлено окрашивание значков повреждений (радиации, огня) в соответствии с hud_color * 2.41: исправлена возможность недобросовестных серверов перезаписи меню и загрузочных окон пользователя, используя папки типа valve_russian (только для NGHL) * 2.41: исправлен вылет при выборе оружия, когда в инвентаре нет ни одного * 2.41: исправлен вылет вследствие получения времени таймером (проблема rsun.ru) * 2.3: немного улучшена окраска элементов HUD'а при использовании градиента (на средних значениях не тускнеют) * 2.22: исправлен вылет, связанный с командой autorecord * 2.22: исправлено засорение консоли строками типа "[PNP]Jackal 11" при наборе текста (издержки дебага) * 2.21: исправлены небольшие баги (несуществующие валаны и ввод текста поверх выделения) * hud_color теперь влияет на все элементы худа (например, на текст, таблицы и меню) * исправлено обнуление патронов в начале записи демо * исправлен вылет при нажатии y + u * лог чата сохраняется в читаемой кодировке * изменён формат команд hud_pos_... и добавлены новые * исправлен вылет HL при игре на MiniAG серверах * улучшена автозапись демо (формат имён демок и возможность записи демки с определённым именем) * исправлено отсутствие реакции вида на очень медленное движение мыши * исправлена красная полоса, выделяющая в таблице у жертвы убившего игрока
Параметры командной строки: -norcdupdate > отключить проверку обновлений (хотя она не замедляет загрузку игры, т.к. выполняется в отдельном потоке) Линуксоиды теперь могут отключить проверку и с помощью файла valve\cl_dlls\rcdurl.txt - нужно просто стереть его содержимое (оставив сам файл, иначе заново скачает с сайта). Файл создан на будущее, если понадобится сменить адрес файлового хранилища RCD.
-norcdautodownload > отключить только скачивание обновлений, оставив оповещение
Консольные переменные (со значением по умолчанию):
cf_enabled 1 - включить/выключить фильтр чата, без изменения его содержимого
cf_add "word or phrase" - добавить ключевое слово или фразу в чат-фильтр. Сообщения, содержащие их, будут полностью игнорироваться. Например: cf_add "[HET]Crack". Перечень ключевых слов сохраняется при выходе
cf_remove "word or phrase or #N" - удалить из чат-фильтра все ключевые слова или фразы, содержащие указанное слово. Параметр #N удаляет пункт под номером N. cf_remove "" полностью очистит чат-фильтр
cl_autorecord 5 - Автозапись демо при заходе в игру. Демки именуются в формате "temp_DATE_TIME_MAP.dem". Переменная указывает количество демок, при записи новых старые удаляются. Нулевое значение отключает автозапись. При нечисловом значении, например cl_autorecord asdf, всегда будет записываться демка asdf.
cl_bhop_mode 2 - Режим предикта распрыга: 0 = ограничение скорости в 1.7х (HLDM) 1 = нет ограничения скорости (AG) 2 = автоопределение (режим определится при первом пересечении лимита в 1.7х, то есть дёрнет только один раз и только на сервере без распрыга)
cl_bhop_delay 300 - временной интервал для автоопределения распрыга на сервере. Значение в миллисекундах выставляется исходя из среднего пинга до ваших любимых серверов, умноженного на 3.5. Слишком большой или маленький интервал гарантирует ошибочное определение.
cl_chatlog 2 - Логирование чата и системных серверных сообщений (опционально) в valve\chatlog.txt. 0 = выкл. 1 = игнорировать серверные сообщения (Например, Next map is...) 2 = логировать всё
cl_fix_dead_standing 1 - Исправляет стоячие трупы игроков путём установки последнего кадра анимации.
cl_gauss_balls 1 - Маленькие прыгающие шарики от попаданий гауссом. Выключение сэкономит немного фпс. Яркие точки от прострелов не отключаются. 0 = выкл. 1 = вкл.
cl_gauss_hits 1 - Большой светящийся спрайт от попаданий гауссом. Вблизи хавает фпс довольно ощутимо. 0 = выкл. 1 = вкл.
cl_newbob 0 - Новый стиль покачивания оружием (как в HL2) (1|0)
cl_predictweaponchange 1 - Использовать код предсказания смены оружия на клиенте (1|0)
cl_remove_dead 0 - Отображение трупов игроков: 0 = отображать 1 = скрывать 2 = выключать и трупы, и только что убитых игроков, не успевших появиться (давало преимущество)
cl_show_eff 1 - показывать эффективность в таблице 0 = выкл. 1 = показывать, окрашивая значения 2 = показывать без цвета
cl_show_loss 1 - показывать потерю пакетов в таблице (после пинга) (1|0)
cl_show_mdl 1 - показывать модели игроков в таблице: 0 = не показывать 1 = показывать, окрашивая название в top/bottom color (пополам) 2 = показывать, не окрашивая
cl_show_mdl_s 1.0 - saturation для цвета моделей в таблице (по системе HSL) (0.0-1.0)
cl_show_mdl_l 0.67 - lightness для цвета моделей в таблице (по системе HSL). Самые насыщенные цвета при 0.5 (0.0-1.0)
cl_solid_deadplayers 0 - Осязаемость убитых непоявившихся игроков 0 = свежие трупы неосязаемы, за них не цепляет 1 = свежие трупы осязаемы, игрока цепляет при прохождении через них
cl_weaponturnlag 0.0 - Степень запаздывания оружия в руках при развороте (как в HL2). Значение "0" отключает эффект. Нормально смотрится при 0.5.
cl_show_mdl_colwid 34 - Ширина столбца моделей в таблице (не абсолютная - масштабируется)
cl_wmdl_glowing_shell 0 - Отключить свечение вокруг w_ моделей на некоторых серверах (напр. AIMaster.ru), что даст повышение фпс (либо исправит неправильную окраску спрайтов предметов при использовании спрайтпака)
fps_physics_fix 0 - Применить патч против зависимости физики (скорости игры, в частности) от ФПС. По умолчанию отключен, как и другие патчи памяти, из соображений безопасности (гарантирована совместимость с NGHL; именно этот патч бесполезен на стим-версии, т.к. в ней данная проблема уже исправлена). И да, спасибо Льву за подсказку на его форуме о том, что проблему следует искать в сетевом протоколе. Иначе, скорее всего, я не нашёл бы решение
hud_alpha 200 - Яркость HUD'а в пределах 0..255.
hud_centerid_fix 0 - Быстрое отображение и скрытие имён игроков (под прицелом). По умолчанию HL имя не отобразится, пока не придёт соответствующая команда от сервера (он проверяет, попал ли кто-нибудь на линию прицела игрока). При включении переменной проверка будет производиться на клиенте.
hud_centerid_fix_displaytime 0.1 - Время отображения имени игрока при включении соответствующей переменной. По умолчанию HL имя показывается одну секунду.
hud_chatsound 1 - Режим звукового оповещения сообщения в чате (звук valve\sound\misc\talk.wav): 0 = выкл. 1 = озвучивать только сообщения игроков 2 = озвучивать все сообщения
hud_color auto - Режим окраски худа: auto = окрашивать элементы в зависимости от значения (режим прежней версии): 0..25hp, 0..20% ammo - красный; 26..50hp, 0..50ap, 21..50% ammo - оранжевый; 51..90hp, 51..90ap, 51..90% ammo - жёлтый; 91..100hp, 91..100ap, 91..100% ammo - зелёный. "R G B" = статичный цвет всех элементов худа. R, G и B указывать в пределах 0..255. Обязательно поставить кавычки. Например, "255 160 0" - стандартный жёлто-оранжевый цвет HUD'а халфы. "R1 G1 B1 R2 G2 B2" = режим градиента, в котором при 100% значения элемент окрашивается в цвет 1, а при приближении к 0% - в цвет 2. Также необходимы кавычки.
hud_colortext 1 - Цветной чат и ники (везде, кроме панели спектатора и таблицы): 0 = выкл. 1 = окрашивать в зависимости от ключа ^n (n = 0..9). ^1 - красный, ^2 - зелёный, и т. д. 2 = фильтровать ключи цвета, но не окрашивать текст
hud_health_divider 1 - Отображать полоску-разделитель после здоровья 0 = выкл. 1 = вкл.
hud_join_leave_sound 1 - Звуковое оповещение при заходе или выходе игроков 0 = выкл. 1 = вкл.
hud_jumpspeed 0 - Индикатор скорости в момент прыжка. Мигает зелёным, если скорость на текущем прыжка больше, чем на предыдущем, и красным наоборот. Хорош для задрачивания circle-jump. 0 = выкл. 1 = вкл. 2 = включен, но не мигает.
hud_jumplength 0 - Индикатор расстояния последнего прыжка. Мигает зелёным, если последний прыжок был дальше предыдущего, и красным наоборот. Пригодится на KZ и тренировочных картах. 0 = выкл. 1 = вкл. 2 = включен, но не мигает.
hud_lists_glide 1 - Плавное скольжение строк чата и детлога (лога убийств). 0 = выкл. 1 = вкл.
hud_markme 0 - Выделять цветом свой ник в чате и логе убийств (1|0)
hud_oldchat 0 - Устанавливает стиль чата 0 = Стиль, близкий к Source 1 = Стиль HL1
hud_oldchatinput 0 - Устанавливает способ ввода сообщений чата как в обычном хл (вверху, без курсора и кириллицы) 0 = новый ввод, появившийся в RCD 2.2 1 = старый ввод
Далее идут команды для тонкой настройки положения элементов HUD'а. Значение auto означает положение по умолчанию. Значение в формате "X Y" определяет абсолютное положение на экране, в пикселях. Отрицательное значение означает, что отсчёт идёт от противоположного края экрана. Пример полноценного скина для HUD'a приведён в конце мануала. hud_pos_health auto hud_pos_suit auto hud_pos_flashlight auto hud_pos_ammo auto hud_pos_chat auto hud_pos_deathlog auto hud_pos_speedo auto hud_pos_jmpspd auto hud_pos_jmplen auto hud_pos_ammobg auto (новый опциональный спрайт rcd_ammo_bg, изучаем скин ниже) hud_pos_weapon (спрайт оружия при включенном hud_weapon) hud_pos_statusbar
Формат следующих команд такой же, но они изменяют смещение текста (цифр) элементов относительно первоначальной позиции. Дефное значение - "auto" или "0 0" hud_shift_ammo auto hud_shift_health auto hud_shift_suit auto hud_shift_speedo auto hud_shift_jmpspd auto hud_shift_jmplen auto
hud_pos_items_left 0 - Отображать подобранные предметы слева или справа. 0 = справа 1 = слева
hud_showfps 1 - Расширенный счётчик fps. Режим hud_showfps 2 показывает минимальное и максимальное значение на некотором промежутке времени.
hud_showfps_precision 0 - Количество знаков после точки.
hud_showfps_colormode 0 - Режим цвета: 0 = трёхцветный (зелёный, жёлтый и красный; границы уровней изменяемы - см. ниже) 1 = двухцветный (основной - цвет HUD'а, красный цвет - для низких значений) 2 = одноцветный (цвет HUD'а)
hud_showfps_minmaxupdateinterval 10 - Временной интервал для измерения Min/Max значений.
hud_showfps_yellowfloor 21 - Нижняя граница жёлтого диапазона (всё, что ниже - красное).
hud_showfps_greenfloor 60 - Нижняя граница зелёного диапазона (всё, что ниже - жёлтое).
hud_showfps_pos auto - Позиция счётчика на экране (см. правила настройки hud_pos_).
hud_spec_bars 0 - Показывать чёрные полосы сверху и снизу экрана в режиме спектатора. 0 = не показывать 1 = показывать
hud_spec_enter_notify 1 - Оповещение в чате при заходе кем-либо в спектаторы (1|0)
hud_speedo 1 - Отображать спидометр. Показывает горизонтальную скорость перемещения. Работает в демках и спектаторе. 0 = выкл. 1 = вкл.
hud_speedo_require_suit 1 - требовать наличие костюма для отображения спидометров (отключение может пригодиться при скоростном прохождении). Кроме того, игра устроена так, что при смерти костюм "выключается". 0 = скорость видна всегда 1 = скорость видна только при наличии костюма и живого игрока
hud_timer 1 - Отображать время до перехода. Запрос идёт через чат, значение таймера берётся из ответа сервера на timeleft с погрешностью +- 1сек. На сервере должен стоять AMX и таймлимит, не равный нулю. 0 = выкл. 1 = отображать таймер, при этом автоматически отправлять запрос (say timeleft) при заходе на сервер. В стандартном ДМ игроки не увидят автоматический запрос, т.к. команда выглядит так: "say_team timeleft;say timeleft". Таймер корректируется при каждом ответе сервера на подобный запрос, ручной или автоматический. Например, вследствие продолжительных лагов таймер может значительно отклониться от серверного и повторный запрос скорректирует его. 2 = аналогично первому режиму, но без автоматического запроса (остаётся реакция на ответ сервера команде timeleft)
hud_timer_pre_timeleft 3600 - Интервал перед автоматическим запросом при hud_timer 1. При слишком низких значениях автозапрос почему-то не срабатывает. На каждом сервере по-своему. При 3600 запрос происходит через 0.1 - 1 секунду.
hud_weapon 0 - Отображать спрайт оружия в HUD'е (помогает при r_drawviewmodel 0) 0 = выкл. 1 = отображать 2 = отображать, но не окрашивать спрайт в серый цвет при перезарядке
jpeg_divider "." - Разделитель между числами в дате ($d) и времени ($t). Строго один символ. Для отключения разделителя установить "". Нельзя использовать следующие символы (зарезервированы системой): \ / : * ? \" < > |
jpeg_format "screenshots/$m/$d-$t" - Формат записи скриншотов. Можно использовать подпапки. Ключи-переменные: $m :: вставить имя карты $d :: дата (обязательный ключ) $t :: время (обязательный ключ) Наличие последних двух переменных необходимо во избежание записи скринов с одинаковыми именами, т.к. проверка существования файла не производится. Абсолютные пути допустимы. Вот ещё примеры: "MyScreens/Shot_$m_$d_$t" "c:/somefolder/somesubfolder/$d$t" Запрещены следующие символы: \ * ? \" < > |
jpeg_quality 90 - Качество скриншота в интервале 0-100. Влияет на размер.
m_directinput 0 - Direct input для мыши. В этом режиме не учитываются настройки ОС, такие как ускорение и множитель. Может служить заменой для небезглючной m_rawinput в последних обновлениях стимовской версии.
r_dynamic_expl_light 1 - Динамическое освещение местности вокруг взрывов. По умолчанию включено. Рекомендуется отключить, т.к. этот свет вызывает сильные просадки фпс на компе любой мощности (но только в режиме OpenGL).
r_dynamic_plr_light 1 - То же, что и предыдущий пункт, но для "фонарей" игроков (когда при включении фонаря местность вокруг игроков начинает подсвечиваться, что приблизительно вдвое сажает ФПС)
r_dynamic_rckt_light 1 - То же, что и предыдущий пункт, но для ракет.
vi_snd "" - Имя звукового файла для воспроизведения через voiceinput (команда +vi). Следует помнить, что файл должен быть в формате .wav со следующими параметрами: Wave PCM signed 16 bit, 8000 Hz, 128 kpbs, mono. Установка не требуется при использовании команд vi++/vi--.
vi_notify_type 1 - Способ оповещения при выборе звука командами vi++/vi-- 0 = отключено 1 = в консоли 2 = в чате
vi_hardlink 1 - Использовать жёсткую ссылку в качестве файла valve/voice_input.wav (который и проигрывается) 1 = создаётся жёсткая ссылка (быстрее, не занимает места) 0 = создаётся копия (если первый вариант не работает)
Консольные команды:
_toggle {cvar} [val1] [val2] [valN] - Переключение значений кваров. Если указан только квар, переключает между 1 и 0. Иначе можно указать сколько угодно значений. Чтобы переключение не шло по кругу, последнее значение нужно повторить дважды. Примеры: _toggle r_drawviewmodel _toggle fps_max 60 100 200 250 _toggle volume 0 0.25 0.5 0.75 1 1 _toggle name Vasya unnamed SuperMegaPlayer
autorecord - Начать запись демки в формате, как при cl_autorecord, и с добавлением в список автодемок (полезно, если автозапись была прервана).
FixFontsInScoreTable - Если игра запущена на нестандартном разрешении (обычно, widescreen), текст в таблице очков будет отображаться очень мелким шрифтом. Данная команда поможет справиться с этим. Выполняется единожды; делает перезаход в ХЛ.
joinlast - Присоединиться к последнему посещённому серверу. Удобно использовать в качестве пункта главного меню (будет в новой версии NGHL)
jpeg - Сделать скриншот в формате jpg. Сохраняется по правилам jpeg_format и jpeg_divider. Качество задаёт jpeg_quality. Т.к. обработка идёт в отдельном потоке, в это время нельзя сделать новый скрин (но визуально это никак не заметно, в отличие от snapshot). На моём компе получается делать до 4-5 скринов в секунду, этого должно хватить. Субсэмплинг отключен, так что чёткие линии не размываются и палитра не портится.
PlayLastDemo [index] [speed (optional)] / ViewLastDemo [index] - Проиграть одну из последних демок по индексу, который можно посмотреть, используя ShowLastDemos. Команды различаются методом воспроизведения (playdemo/viewdemo), а также для первой можно указать скорость проигрывания. Если индекс не указан, проигрывается последняя записанная демка.
resetbh - Сброс некорректно определённого бхопа.
ShowLastDemos - Отобразить список последних автодемок.
+vi - Отправить выбранный звуковой файл через голосовой интерфейс.
vi++, vi-- - Выбрать соответственно следующий или предыдущий файл из папки valve/voiceinput.
rcd_about - Показать версию длл-ки и список последних нововведений.
Установка: Извлечь содержимое архива в HL\valve\. Для стима установить "только чтение" на "cl_dlls\client.dll". Скачать RCD!
Образец скина для HUD'a. Стиль UT'99. Извлечь содержимое архива в valve и прописать в консоли или добавить в userconfig.cfg строку "exec ut99hud.cfg". Скачать скин
Жду сообщений по поводу багов, вылетов и недочётов. Также всегда готов выслушать предложения о нововведениях.