Q2PRO-X 1.5 — Таймеры предметов Q2PRO-X 1.5
Полная локальная HTML-версия принятого документа. Оригинал DOCX доступен в карточке документации.
Q2PRO-X 1.5
Таймеры предметов Q2PRO-X 1.5
Отслеживание респауна предметов в живой игре: разрешения, панель и звук
Русская редакция • Q2PRO-X 1.5 • 25 августа 2026 года
Содержание
Пункты кликабельны: щелчок переходит к разделу.
4. Как запускается автоматический таймер
5. Где разрешены автоматические таймеры
5.2. Удалённый сервер с явным решением
5.3. Удалённый сервер без параметра
6. Полный порядок принятия решения
8. Каталог предметов и значения по умолчанию
9. Приоритет источников интервала
12. Наблюдение за миром и одинаковые предметы
14. Основные консольные переменные
15. Настройка игрового сервера
16. Управление разрешающим списком через API
Автотаймер не запускается, ручной работает
Подобранное выброшенное оружие не создало таймер
После смены наблюдаемого игрока всё очистилось
Ручной секундомер без автоматизации
Наблюдение за матчем с раздельными экземплярами
1. Назначение системы
Живые таймеры предметов Q2PRO-X показывают обратный отсчёт до предполагаемого возрождения предмета в текущей сетевой игре. Система рассчитана на обычную игру, локальную тренировку, наблюдение за матчем и ручной хронометраж.
Таймеры бывают двух типов:
Главный переключатель cl_it по умолчанию выключен. Пока пользователь сам не включит живые таймеры, система не запускает отсчёты и не обращается к службе авторизации.
| Отдельная тема. Таймеры предметов в записях демо — это другая система с собственными настройками. Она описана в руководстве по обозревателю и проигрывателю демок. |
|---|
2. Короткий запуск для игрока
1. Откройте [[GEN:menu_path:q2prox_live_item_timers]].
2. Включите «Живые таймеры предметов».
3. При необходимости оставьте включённым «Автостарт по своему подбору».
4. Настройте HUD, звуки и список нужных предметов в дочерних разделах.
5. Подключитесь к серверу и посмотрите результат проверки командой it_info.
В упрощённом профиле меню для мультиплеера ссылка «Таймеры предметов» доступна непосредственно среди сетевых настроек.
Для быстрого ручного теста можно выполнить:
cl_it 1; it_start rl 30; it_info active
На HUD появится таймер ракетницы на 30 секунд. Ручной таймер работает на любом сервере и не зависит от разрешения автоматических таймеров.
3. Почему это не чит
Система специально ограничена данными, которыми обычный клиент уже законно располагает во время игры.
Ручной таймер является обычным локальным секундомером: пользователь сам решает, что и когда засечь. Поэтому серверная и сайтная политика ограничивает только автоматический запуск, но никогда не блокирует it_start, ручные бинды, HUD или звуки уже запущенных вручную таймеров.
Важно понимать границу защиты: модифицированный сторонний клиент может удалить любую клиентскую проверку. Механизм Q2PRO-X предназначен для прозрачной политики честной игры в официальном клиенте, а не заменяет серверный античит.
4. Как запускается автоматический таймер
Для автоматического запуска одновременно должны выполняться все условия:
1. cl_it установлен в 1.
2. cl_it_auto_own установлен в 1.
3. Текущий предмет разрешён его параметром cl_it_<id>_show.
4. Для текущего подключения получено разрешение на автоматические таймеры.
5. Клиент получил подтверждение собственного подбора.
6. Рядом найдена постоянная BSP-точка того же типа предмета.
Если постоянная точка не найдена, автоматический таймер не создаётся. Это намеренное безопасное поведение для оружия, которое игрок выбросил вручную, и для предметов, выпавших из погибшего игрока.
Координата сущности в BSP является исходной точкой редактора карты: некоторые предметы во время запуска уровня штатно падают из неё на пол. Q2PRO-X повторяет этот стандартный расчёт и сопоставляет подбор уже с фактической точкой на поверхности. Когда предмет был виден в snapshot, его последняя серверная позиция уточняет эту точку. Радиус доверия при этом не расширяется, поэтому исправление не разрешает автотаймеры для обычного выброшенного оружия.
У каждого автоматического таймера хранится источник AUTO. У ручного таймера источник MANUAL. Ручной таймер имеет приоритет: отказ авторизации удаляет только автоматические таймеры и не может стереть или перезаписать ручной.
5. Где разрешены автоматические таймеры
5.1. Локальная игра
На локальном сервере, включая loopback-подключение, автоматические таймеры разрешены сразу как при deathmatch 0, так и при deathmatch 1. Запрос к сайту не выполняется.
5.2. Удалённый сервер с явным решением
Клиент сначала читает sv_allow_timers из serverinfo удалённого сервера:
Явный запрет сервера нельзя отменить списком сайта. Явное разрешение сервера также не отменяется глобальным режимом сайта.
5.3. Удалённый сервер без параметра
Если сервер не передал sv_allow_timers, клиент асинхронно обращается к:
https://q2pro-x.com/api/q2prox/v1/live-item-timers/authorization
https://quake2.pro/api/q2prox/v1/live-item-timers/authorization
Второй адрес является зеркалом и используется при недоступности первого. Подключение к игровому серверу при этом продолжается без ожидания HTTP-ответа. До получения валидного разрешения автоматический запуск остаётся выключенным.
5.4. Ручные таймеры
Ручные таймеры работают во всех случаях:
6. Полный порядок принятия решения
| Приоритет | Условие | Автоматический запуск |
|---|---|---|
| 1 | cl_it 0 | Выключен пользователем |
| 2 | cl_it_auto_own 0 | Не запрошен, сеть не используется |
| 3 | Локальный сервер | Разрешён |
| 4 | sv_allow_timers 1 | Разрешён окончательно |
| 5 | sv_allow_timers 0 | Запрещён окончательно |
| 6 | Некорректное значение sv_allow_timers | Запрещён |
| 7 | Параметр отсутствует | Проверяется политика сайта |
| 8 | Политика force:-1 | Запрещён |
| 9 | Политика force:1 | Разрешён |
| 10 | force:0, IP:порт есть в списке | Разрешён |
| 11 | force:0, совпадения нет | Запрещён |
| 12 | Нет валидного подписанного ответа | Запрещён безопасно |
Проверка повторяется для каждого нового подключения и переподключения. Решение от предыдущего сервера не переносится на следующий.
7. Разделы меню таймеров
7.1. Основное
Живые таймеры предметов
| Тип | Раздел | Пункт | Переменная или переход | Что делает |
|---|---|---|---|---|
| Раздел | Основное | Основное | ||
| Переключатель | Основное | Живые таймеры предметов | cl_it | Главный выключатель живых таймеров возрождения предметов (ручные + по своему подбору). Применяется сразу. [Выкл. / Вкл.] |
| Переключатель | Основное | Автостарт по своему подбору | cl_it_auto_own | Автостарт только для ваших подборов у постоянных BSP-точек карты. Выпавшие предметы и оружие с трупов игнорируются (без wallhack и скрытого состояния). Применяется сразу. [Нет / Да] |
| Переключатель | Основное | Показывать HUD-панель | cl_it_hud | Рисовать экранную панель обратного отсчёта. Применяется сразу. [Нет / Да] |
| Переключатель | Основное | Сброс при смене POV | cl_it_reset_on_pov_change | При наблюдении сбрасывать все таймеры после переключения на POV другого игрока, перехода в свободного наблюдателя или возвращения в игру. Применяется сразу. [Нет / Да] |
| Раздел | Разделы | Разделы | ||
| Переход | Разделы | HUD-панель... | q2prox_lit_hud | Позиция, масштаб, прозрачность панели, окно предупреждения, политика неизвестных предметов. |
| Переход | Разделы | Звуковое предупреждение... | q2prox_lit_sound | Необязательный локальный звук-предупреждение (только код; тишина, если файла нет). |
| Переход | Разделы | Отслеживаемые предметы... | q2prox_lit_items | Выбор предметов, которые отслеживаются и показываются. |
| Переход | Разделы | Интервалы возрождения... | q2prox_lit_intervals | Резервные интервалы возрождения по предметам + общие значения по умолчанию. |
| Переход | Разделы | Экземпляры и локации... | q2prox_lit_world | Таймеры по экземплярам и BSP-локации: номера + наблюдение за миром (только в зоне видимости). |
| Переход | Разделы | По предметам: HUD/звук/цвет... | q2prox_lit_advanced | Окно показа HUD, звук и цвет по каждому предмету, по классам. |
| Переход | Разделы | Ручные таймеры и бинды... | q2prox_lit_binds | Назначение клавиш для ручных таймеров (it_start / it_cancel / модификатор). |
| Переход | Разделы | Инфо о таймерах в консоль | it_info | Печатает каталог и активные таймеры в консоль. |
Отдельно стоит отметить «Сброс при смене POV»: он очищает таймеры при смене наблюдаемого игрока, переходе в свободного наблюдателя и возвращении в игру. По умолчанию включён.
7.2. HUD-панель
Живые таймеры — HUD
| Тип | Раздел | Пункт | Переменная или переход | Что делает |
|---|---|---|---|---|
| Раздел | Панель | Панель | ||
| Переключатель | Панель | Показывать HUD-панель | cl_it_hud | Рисовать экранную панель обратного отсчёта. Применяется сразу. [Нет / Да] |
| Переключатель | Панель | Показывать под меню | cl_it_hud_in_menu | Оставлять HUD таймеров видимым под открытым меню. Прозрачность меню учитывается; полностью непрозрачное меню его перекрывает. Применяется сразу. [Нет / Да] |
| Ползунок | Панель | Масштаб панели | cl_it_hud_scale | Множитель размера HUD-панели. Применяется сразу. |
| Ползунок | Панель | Прозрачность панели | cl_it_hud_alpha | Прозрачность HUD-панели. Применяется сразу. |
| Ползунок | Панель | Максимум ячеек | cl_it_hud_max | Максимум одновременно показываемых ячеек таймеров (на каждую панель). Применяется сразу. |
| Переключатель | Панель | Подписи под иконками | cl_it_hud_labels | Показывать короткий английский код предмета (RL, RG, RA, Q...) под каждой иконкой. Применяется сразу. [Нет / Да] |
| Раздел | Позиция (общая панель) | Позиция (общая панель) | ||
| Ползунок | Позиция (общая панель) | Позиция X (-1 = авто) | cl_it_hud_x | Горизонтальная позиция в пикселях HUD; -1 = авто (справа сверху). Применяется сразу. |
| Ползунок | Позиция (общая панель) | Позиция Y (-1 = авто) | cl_it_hud_y | Вертикальная позиция в пикселях HUD; -1 = авто (верхний отступ). Применяется сразу. |
| Раздел | Разделение по классам | Разделение по классам | ||
| Переключатель | Разделение по классам | Разделить по классам | cl_it_hud_split | Разделить панель на четыре отдельных HUD по классам (Броня / Усиления / Оружие / Прочие). Выкл = одна общая панель (по умолчанию). Масштаб, прозрачность и максимум ячеек остаются общими. Применяется сразу. [Нет (общий) / Да (4 панели)] |
| Ползунок | Разделение по классам | Броня: X (-1 = авто) | cl_it_hud_armor_x | HUD Брони: X (-1 = авто: складывается справа сверху под панелью выше). Применяется сразу. |
| Ползунок | Разделение по классам | Броня: Y (-1 = авто) | cl_it_hud_armor_y | HUD Брони: Y (-1 = авто-стек). Применяется сразу. |
| Ползунок | Разделение по классам | Усиления: X (-1 = авто) | cl_it_hud_pow_x | HUD Усилений: X (-1 = авто-стек). Применяется сразу. |
| Ползунок | Разделение по классам | Усиления: Y (-1 = авто) | cl_it_hud_pow_y | HUD Усилений: Y (-1 = авто-стек). Применяется сразу. |
| Ползунок | Разделение по классам | Оружие: X (-1 = авто) | cl_it_hud_wpn_x | HUD Оружия: X (-1 = авто-стек). Применяется сразу. |
| Ползунок | Разделение по классам | Оружие: Y (-1 = авто) | cl_it_hud_wpn_y | HUD Оружия: Y (-1 = авто-стек). Применяется сразу. |
| Ползунок | Разделение по классам | Прочие: X (-1 = авто) | cl_it_hud_misc_x | HUD Прочих: X (-1 = авто-стек). Применяется сразу. |
| Ползунок | Разделение по классам | Прочие: Y (-1 = авто) | cl_it_hud_misc_y | HUD Прочих: Y (-1 = авто-стек). Применяется сразу. |
| Раздел | Поведение | Поведение | ||
| Ползунок | Поведение | Окно предупреждения, с | cl_it_warn_s | Окно предупреждения: за сколько секунд до возрождения ячейка краснеет (и играет звук). Применяется сразу. |
| Переключатель | Поведение | Показывать все таймеры | cl_it_hud_show_all | Показывать все таймеры с начала, игнорируя окна показа по предмету. Выкл = ячейка появляется только в своём окне HUD. Применяется сразу. [Только в окне / Все] |
| Переключатель | Поведение | Мерцание рамки | cl_it_hud_blink | Плавно пульсировать рамкой плитки (как диммером) в окне предупреждения, быстрее ближе к возрождению (5 Гц при готовности), с bloom-свечением. Общее для всех плиток. Применяется сразу. [Нет / Да] |
| Переключатель | Поведение | Мерцание иконки | cl_it_hud_icon_pulse | Независимо: плавно пульсировать иконкой предмета (как диммером) с bloom-свечением в окне предупреждения. Общее для всех плиток. Применяется сразу. [Нет / Да] |
| Переключатель | Поведение | Бегущая рамка | cl_it_hud_border_run | Независимо: яркая «комета» бежит по часовой стрелке по рамке плитки в окне предупреждения, быстрее ближе к возрождению. Общее для всех плиток. Применяется сразу. [Нет / Да] |
| Список | Поведение | Неизвестный интервал | cl_it_unknown_policy | Что делать с предметом без известного интервала возрождения. Динамический автотаймер Меги обрабатывается отдельно. Применяется сразу. [Скрывать / Показывать «?»] |
cl_it_hud_in_menu 1 по умолчанию оставляет таймеры видимыми под открытым меню. Прозрачность меню продолжает действовать: полностью непрозрачное меню естественно перекроет HUD.
HUD можно оставить одной общей полосой либо разделить на четыре панели: броня, усиления, оружие и прочие предметы. Для каждой панели доступны отдельные координаты, а масштаб, прозрачность, окно предупреждения и лимит ячеек остаются общими.
Дополнительные эффекты предупреждения независимы друг от друга:
7.3. Звуковое предупреждение
Живые таймеры — Звук
| Тип | Раздел | Пункт | Переменная или переход | Что делает |
|---|---|---|---|---|
| Раздел | Предупреждение | Предупреждение | ||
| Переключатель | Предупреждение | Звук предупреждения | cl_it_sound | Играть локальный звук-предупреждение при входе таймера в окно предупреждения. Необязательный файл (sound/q2prox/it/warn.wav); тишина, если его нет. Применяется сразу. [Нет / Да] |
| Ползунок | Предупреждение | Громкость | cl_it_sound_vol | Громкость звука-предупреждения. Применяется сразу. |
| Раздел | Режим и события | Режим и события | ||
| Список | Режим и события | Режим звука | cl_it_sound_mode | Режим звука: выкл / общие звуки / богатый голос по предмету с откатом. Все звуковые файлы необязательны; отсутствующие молча пропускаются. Применяется сразу. [Выкл. / Общий / Богатый] |
| Переключатель | Режим и события | Отсчёт числами | cl_it_sound_countdown | Посекундные звуки чисел внутри звукового окна (необязательные файлы). Применяется сразу. [Нет / Да] |
| Переключатель | Режим и события | Звук появления | cl_it_sound_up | Звук появления предмета при возрождении (необязательный файл). Применяется сразу. [Нет / Да] |
Поддерживаются общий звук предупреждения, посекундный отсчёт и отдельный сигнал возрождения предмета. В богатом режиме могут использоваться фразы для конкретных предметов. Все WAV-файлы необязательны: отсутствующий файл молча пропускается и не ломает игру.
7.4. Отслеживаемые предметы
Этот раздел определяет, какие типы предметов вообще участвуют в системе. Отключённый тип не создаёт автоматический таймер и не показывается в HUD.
7.5. Интервалы возрождения
Живые таймеры — интервалы
| Тип | Раздел | Пункт | Переменная или переход | Что делает |
|---|---|---|---|---|
| Раздел | Общее | Общее | ||
| Ползунок | Общее | Интервал по умолчанию, с | cl_it_default_s | Общий резервный интервал возрождения (сек), когда интервал предмета = 0 (кроме Меги). Применяется сразу. |
| Ползунок | Общее | Фиксированный резерв Меги, с | cl_it_mh_fb_s | Фиксированный резерв Меги. 0 = Штатный автотаймер: ждать не менее 5 с до достижения здоровьем 100, затем использовать задержку после распада ниже. Применяется сразу. |
| Ползунок | Общее | Мега после распада, с | cl_it_mh_post_decay_s | Автоматический штатный отсчёт Меги после того, как избыточное здоровье достигло 100. В baseq2 используется 20 секунд. Применяется сразу. |
| Ползунок | Общее | Удержание «ГОТОВ», с | cl_it_ready_hold_s | Держать ячейку «ГОТОВ» на экране столько секунд после конца отсчёта. Применяется сразу. |
| Раздел | Броня | Броня | ||
| Ползунок | Броня | Зелёная броня, с | cl_it_ga_s | Резервный интервал зелёной брони (сек). Применяется сразу. |
| Ползунок | Броня | Жёлтая броня, с | cl_it_ya_s | Резервный интервал жёлтой брони (сек). Применяется сразу. |
| Ползунок | Броня | Красная броня, с | cl_it_ra_s | Резервный интервал красной брони (сек). Применяется сразу. |
| Ползунок | Броня | Силовой экран, с | cl_it_pws_s | Резервный интервал силового экрана (сек). Применяется сразу. |
| Ползунок | Броня | Пауер-шилд, с | cl_it_pwh_s | Резервный интервал Пауер-шилда (сек). Применяется сразу. |
| Раздел | Усиления | Усиления | ||
| Ползунок | Усиления | Квад, с | cl_it_quad_s | Резервный интервал Квада (сек). Применяется сразу. |
| Ползунок | Усиления | Пента, с | cl_it_inv_s | Резервный интервал Пенты (сек). Применяется сразу. |
| Раздел | Оружие | Оружие | ||
| Ползунок | Оружие | Ракетница, с | cl_it_rl_s | Резервный интервал ракетницы (сек). Применяется сразу. |
| Ползунок | Оружие | Рейлган, с | cl_it_rail_s | Резервный интервал рейлгана (сек). Применяется сразу. |
| Ползунок | Оружие | BFG10K, с | cl_it_bfg_s | Резервный интервал BFG10K (сек). Применяется сразу. |
| Ползунок | Оружие | Гранатомёт, с | cl_it_gl_s | Резервный интервал гранатомёта (сек). Применяется сразу. |
| Ползунок | Оружие | Гипербластер, с | cl_it_hb_s | Резервный интервал гипербластера (сек). Применяется сразу. |
| Ползунок | Оружие | Чейнган, с | cl_it_cg_s | Резервный интервал чейнгана (сек). Применяется сразу. |
| Ползунок | Оружие | Дробовик, с | cl_it_sg_s | Резервный интервал дробовика (сек). Применяется сразу. |
| Ползунок | Оружие | Супердробовик, с | cl_it_ssg_s | Резервный интервал супердробовика (сек). Применяется сразу. |
| Ползунок | Оружие | Пулемёт, с | cl_it_mg_s | Резервный интервал пулемёта (сек). Применяется сразу. |
| Ползунок | Оружие | Ручные гранаты, с | cl_it_hg_s | Резервный интервал ручных гранат (сек). Применяется сразу. |
| Раздел | Прочие | Прочие | ||
| Ползунок | Прочие | Мега: фиксированный, с | cl_it_mh_s | Фиксированный интервал Меги для предмета; 0 = резерв выше, а когда оба равны 0. Динамический таймер по распаду здоровья. Применяется сразу. |
В разделе задаются резервные интервалы по типам предметов, общий резерв и специальная логика Mega Health. Реальное правило конкретного мода или сервера может отличаться, поэтому значения можно менять отдельно для каждого локального профиля Q2PRO-X.
7.6. Экземпляры и локации
Живые таймеры — экземпляры
| Тип | Раздел | Пункт | Переменная или переход | Что делает |
|---|---|---|---|---|
| Раздел | Как это работает — без скрытых данных | Как это работает — без скрытых данных | ||
| Раздел | Наблюдение за миром (PVS) | Наблюдение за миром (PVS) | ||
| Переключатель | Наблюдение за миром (PVS) | Наблюдение за миром | cl_it_world_observe | Использует только предметы из обычного snapshot/PVS текущего POV и статические BSP-точки карты. Не показывает скрытые предметы и не запускает таймер от одного появления/исчезновения в PVS. Автостарт требует подтверждённого подбора текущим POV у постоянной точки карты. Применяется сразу. [Выкл. / Вкл.] |
| Переключатель | Наблюдение за миром (PVS) | Номера экземпляров | cl_it_ordinals | Показывать BSP-номер (1,2,...) на HUD, когда на карте больше одного такого предмета. Применяется сразу. [Нет / Да] |
| Раздел | Обучение и радиусы | Обучение и радиусы | ||
| Переключатель | Обучение и радиусы | Обучение по экземплярам | cl_it_learn | Обучать интервал только за сессию по исчезновению/появлению одной BSP-точки. Динамическая Mega исключена без фиксированного интервала. Применяется сразу. [Нет / Да] |
| Ползунок | Обучение и радиусы | Радиус сопоставления BSP | cl_it_bsp_match_radius | Радиус сопоставления видимого предмета с его BSP-точкой. Применяется сразу. |
| Ползунок | Обучение и радиусы | Радиус объединения точек | cl_it_instance_cluster_radius | Радиус объединения близких BSP-точек одного предмета. Применяется сразу. |
| Ползунок | Обучение и радиусы | Радиус своего подбора | cl_it_own_touch_radius | Насколько близко должен быть исчезающий предмет, чтобы это был ВАШ подбор именно этого экземпляра (два одинаковых считаются раздельно). Применяется сразу. |
| Ползунок | Обучение и радиусы | Радиус привязки ручного | cl_it_pickup_attach_radius | Ручной it_start <id> <секунды>: насколько близко должна быть BSP-точка, чтобы привязать ручной таймер к ближайшему экземпляру. Применяется сразу. |
| Раздел | Диагностика | Диагностика | ||
| Переключатель | Диагностика | Отладка наблюдения | cl_it_world_debug | Подробный вывод наблюдения за миром в консоль (разбор BSP, игнорируемые кандидаты). Применяется сразу. [Нет / Да] |
| Переход | Диагностика | Инфо о мире в консоль | it_info | Печатает каталог BSP-точек и наблюдаемые экземпляры в консоль. |
Здесь включаются PVS-наблюдение, номера одинаковых экземпляров, обучение интервалов и радиусы сопоставления с BSP-точками. Режим не открывает скрытые данные: он лишь помогает различать, например, две разные ракетницы на карте.
7.7. Настройки по предметам
Для каждого типа отдельно задаются:
Настройки оружия разделены на три дочерних меню, чтобы длинный список оставался удобным:
В каждой группе для каждого предмета доступны все пять настроек из списка выше.
7.8. Ручные таймеры и бинды
Живые таймеры — бинды
| Тип | Раздел | Пункт | Переменная или переход | Что делает |
|---|---|---|---|---|
| Раздел | Модификатор | Модификатор | ||
| Клавиша | Модификатор | Модификатор отмены (удерживать) | +it_mod | Удерживайте эту клавишу, чтобы ручной it_start работал как it_cancel для того же предмета. |
| Раздел | Ручной старт таймера | Ручной старт таймера | ||
| Клавиша | Ручной старт таймера | Старт: красная броня | it_start | Старт / обновление таймера красной брони (удерживайте модификатор для отмены). |
| Клавиша | Ручной старт таймера | Старт: жёлтая броня | it_start | Старт / обновление таймера жёлтой брони (удерживайте модификатор для отмены). |
| Клавиша | Ручной старт таймера | Старт: зелёная броня | it_start | Старт / обновление таймера зелёной брони (удерживайте модификатор для отмены). |
| Клавиша | Ручной старт таймера | Старт: Мега | it_start | Старт / обновление таймера Меги (нужен резервный интервал; см. Интервалы). |
| Клавиша | Ручной старт таймера | Старт: Квад | it_start | Старт / обновление таймера Квада (удерживайте модификатор для отмены). |
| Клавиша | Ручной старт таймера | Старт: Пента | it_start | Старт / обновление таймера Пенты (удерживайте модификатор для отмены). |
| Клавиша | Ручной старт таймера | Старт: Пауер-шилд | it_start | Старт / обновление таймера Пауер-шилда (удерживайте модификатор для отмены). |
| Клавиша | Ручной старт таймера | Старт: ракетница | it_start | Старт / обновление таймера ракетницы (удерживайте модификатор для отмены). |
| Клавиша | Ручной старт таймера | Старт: Рейлган | it_start | Старт / обновление таймера рейлгана (удерживайте модификатор для отмены). |
| Клавиша | Ручной старт таймера | Старт: BFG10K | it_start | Старт / обновление таймера BFG10K (удерживайте модификатор для отмены). |
| Раздел | Прочее | Прочее | ||
| Клавиша | Прочее | Открыть меню таймеров | it_menu | Открыть это меню живых таймеров предметов. |
| Переход | Прочее | Сбросить таймеры | it_reset | Сбросить все активные таймеры и выученные за сессию интервалы по экземплярам. |
Раздел назначает клавиши на it_start, it_cancel и модификатор +it_mod. Ручные бинды не проходят серверную или сайтную авторизацию.
8. Каталог предметов и значения по умолчанию
| ID | Предмет | Резервный интервал | Отслеживание по умолчанию |
|---|---|---|---|
| ga | Зелёная броня | 20 с | Да |
| ya | Жёлтая броня | 20 с | Да |
| ra | Красная броня | 20 с | Да |
| mh | Mega Health | Динамический | Да |
| quad | Квад | 60 с | Да |
| inv | Неуязвимость | 300 с | Да |
| pws | Силовой экран | 60 с | Да |
| pwh | Силовой щит | 60 с | Да |
| rl | Ракетница | 30 с | Да |
| rail | Рейлган | 30 с | Да |
| bfg | BFG10K | 30 с | Да |
| sil | Глушитель | 60 с | Нет |
| reb | Акваланг | 60 с | Нет |
| env | Защитный костюм | 60 с | Нет |
| adr | Адреналин | 60 с | Нет |
| gl | Гранатомёт | 30 с | Нет |
| hb | Гипербластер | 30 с | Нет |
| cg | Чейнган | 30 с | Нет |
| band | Патронташ | 60 с | Нет |
| pack | Рюкзак | 180 с | Нет |
| sg | Дробовик | 30 с | Нет |
| ssg | Супердробовик | 30 с | Нет |
| mg | Пулемёт | 30 с | Нет |
| hg | Ручные гранаты | 30 с | Нет |
Значения являются честными резервами, а не обещанием правил любого мода. Администратор или пользователь должен скорректировать интервалы, если сервер использует другие правила.
9. Приоритет источников интервала
Для обычного предмета интервал выбирается в следующем порядке:
1. Число секунд, явно переданное в ручной команде.
2. Интервал конкретной BSP-точки, изученный в текущей сессии, если обучение включено.
3. Значение cl_it_<id>_s для типа предмета.
4. Общий резерв cl_it_default_s.
Любой интервал безопасно ограничивается диапазоном до 3600 секунд, чтобы ошибочная огромная переменная не вызвала переполнение времени.
Mega Health не наследует общий резерв. Для неё применяется отдельная логика, описанная далее.
10. Особая логика Mega Health
Стандартная Mega Health в baseq2 не имеет простого фиксированного интервала от момента подбора. После подбора игра ждёт минимум пять секунд, затем уменьшает избыточное здоровье к 100 и только после этого планирует возвращение предмета.
Поэтому штатный автоматический режим Q2PRO-X работает так:
1. Подтверждается собственный подбор Mega у постоянной BSP-точки.
2. Клиент ждёт не менее пяти секунд.
3. Когда здоровье текущего POV становится не больше 100, запускается отсчёт cl_it_mh_post_decay_s, по умолчанию 20 секунд.
cl_it_mh_fb_s 0 оставляет этот динамический режим. Ненулевое значение задаёт фиксированный резерв для серверов или модов с иными правилами. Также можно явно установить cl_it_mh_s или передать секунды в ручной it_start.
11. Ручные команды
11.1. Запуск
it_start <id> [секунды|номер|nearest]
Примеры:
it_start rl
it_start quad 60
it_start rail nearest
it_start ra 2
11.2. Отмена
it_cancel <id|all> [номер]
Примеры:
it_cancel rl
it_cancel rl 2
it_cancel all
Если удерживать назначенный модификатор +it_mod, команда it_start отменяет разрешённый ею таймер вместо запуска.
11.3. Сброс и информация
it_reset
it_info
it_info active
it_info world
it_menu
11.4. Примеры биндов
bind F5 "it_start rl 30"
bind F6 "it_start rail 30"
bind F7 "it_start quad 60"
bind F8 "it_cancel all"
bind ALT "+it_mod"
12. Наблюдение за миром и одинаковые предметы
cl_it_world_observe по умолчанию выключен. После включения система сопоставляет видимые сущности из текущего snapshot/PVS со статическими BSP-точками карты.
Это даёт три возможности:
Наблюдение не запускает таймер только из-за исчезновения объекта. Исчезновение может означать выход предмета из PVS, закрытие дверью или поворот камеры, поэтому такое событие недостаточно надёжно.
Обученный интервал живёт только до конца сессии и не записывается в конфиг. Он принимается лишь в разумном диапазоне рядом с настроенным резервом. Для динамической Mega обучение выключено, пока не задан фиксированный интервал.
13. Поведение наблюдателя
При cl_it_reset_on_pov_change 1, что является значением по умолчанию, все таймеры очищаются при:
Даже если пользователь отключил сброс таймеров, внутренние детекторы подбора и PVS всё равно перебазируются при смене POV. Это предотвращает ложный автостарт по событию, которое относилось к предыдущему наблюдаемому игроку.
14. Основные консольные переменные
| Переменная | Допустимые значения | Описание |
|---|---|---|
| cl_it | 0=выкл (по умолчанию) / 1=вкл | Главный выключатель живых таймеров возрождения предметов Q2PRO-X (ручные + по своему подбору, отсчёт на HUD-панели). Честная реализация: без wallhack, скрытого состояния сервера и предсканирования демок. Ручные таймеры it_start/bind работают на ЛЮБОМ сервере; авторизуется только АВТОзапуск по своему подбору (см. cl_it_auto_own). Локально для мода. |
| cl_it_auto_own | 0=выкл / 1=вкл (по умолчанию) | Автостарт таймера при подборе ПОСТОЯННОГО предмета карты текущим локальным/наблюдаемым POV. STAT_PICKUP_STRING только с типом должен находиться в cl_it_own_touch_radius от BSP-точки того же типа; подтверждённые касания мира используют тот же каталог. Выпавшие предметы и оружие с трупов без близкой точки карты игнорируются. Автозапуск авторизуется на каждое подключение: локальный сервер всегда разрешает; serverinfo sv_allow_timers 1/0 окончателен; иначе решает подписанная политика q2pro-x.com/quake2.pro. Ручные it_start/bind это НИКОГДА не ограничивает. |
| cl_it_hud | 0=выкл / 1=вкл (по умолчанию) | Рисовать экранную панель обратного отсчёта живых таймеров. Учитывает scr_draw2d, масштаб HUD и общую прозрачность. Видимость при открытом меню отдельно задаёт cl_it_hud_in_menu. |
| cl_it_hud_in_menu | 0=скрывать в меню / 1=показывать под меню (по умолчанию) | Оставлять HUD-панели живых таймеров отрисованными под открытым меню. Слой таймеров компонуется перед меню, поэтому cl_menu_alpha естественно действует, а полностью непрозрачное меню перекрывает HUD. |
| cl_it_reset_on_pov_change | 0=сохранять таймеры / 1=сбрасывать (по умолчанию) | Сбрасывать все живые таймеры предметов при смене spectator POV: другой chase-игрок, переход из chase в свободного наблюдателя, возврат наблюдателя в игру или обратный переход. Детекторы границ pickup/PVS при смене POV перебазируются всегда, даже когда опция выключена, чтобы старое сообщение подбора другого игрока не создало ложный таймер. |
| cl_it_hud_x | -1=авто (по умолчанию) / 0..ширина HUD | Горизонтальная позиция панели таймеров в пикселях HUD. -1 = авто (справа сверху, отступ 8 px), с ограничением по видимой области HUD. |
| cl_it_hud_y | -1=авто (по умолчанию) / 0..высота HUD | Вертикальная позиция панели таймеров в пикселях HUD. -1 = авто (отступ сверху 8 px), с ограничением по видимой области HUD. |
| cl_it_hud_scale | 0.3..4.0 / по умолчанию 1.0 | Множитель размера панели живых таймеров. |
| cl_it_hud_alpha | 0..1 / по умолчанию 1.0 | Прозрачность панели живых таймеров. |
| cl_it_hud_max | 1..20 / по умолчанию 8 | Максимум одновременно рисуемых ячеек таймеров (сначала ближайшие). |
| cl_it_hud_labels | 0=выкл (по умолчанию) / 1=вкл | Показывать короткий английский код предмета (RL, RG, RA, Q, MH, ...) под каждой иконкой HUD. |
| cl_it_hud_split | 0=общая (по умолчанию) / 1=разделить по классам | Разделить HUD таймеров на четыре отдельные панели по классам: Броня, Усиления, Оружие, Прочие. Выкл = одна общая панель (по умолчанию). Масштаб, прозрачность, окно предупреждения и максимум ячеек общие для всех панелей; у каждой панели свои cvar позиции (авто или фиксированная). |
| cl_it_hud_show_all | 0=только в окне / 1=показывать все (по умолчанию) | Показывать все отслеживаемые таймеры на HUD с момента старта, игнорируя окно показа каждого предмета. Выкл = ячейка появляется только когда остаток попадает в окно cl_it_<id>_hud_s этого предмета. |
| cl_it_hud_blink | 0=выкл (по умолчанию) / 1=вкл | Плавно пульсировать (как диммером) цветной рамкой плитки, когда её таймер входит в окно предупреждения, ускоряясь ближе к возрождению (1 Гц у края окна и до 5 Гц при готовности), с bloom-свечением, растущим по мере затухания рамки. Общее для всех плиток. |
| cl_it_hud_icon_pulse | 0=выкл (по умолчанию) / 1=вкл | Независимо от мерцания рамки: плавно пульсировать иконкой предмета (как диммером, до 5 Гц ближе к возрождению) с bloom-свечением за ней, растущим по мере затухания иконки. Общее для всех плиток. |
| cl_it_hud_border_run | 0=выкл (по умолчанию) / 1=вкл | Независимо от мерцания: яркая «комета» из блоков бежит по часовой стрелке по рамке плитки в окне предупреждения, быстрее ближе к возрождению. Общее для всех плиток. |
| cl_it_warn_s | 0..60 секунд / по умолчанию 3 | Окно предупреждения: за сколько секунд до возрождения ячейка краснеет и играет необязательный звук. |
| cl_it_ready_hold_s | 0..60 секунд / по умолчанию 5 | Держать ячейку «ГОТОВ» на экране столько секунд после достижения нуля отсчётом. |
| cl_it_unknown_policy | 0=скрывать (по умолчанию) / 1=показывать «?» | Что делать с предметом без известного интервала: 0 скрывать, 1 показывать ячейку «?». Автоматический подбор Меги по умолчанию вместо ложной неизвестной ячейки ожидает переход распада здоровья. |
| cl_it_default_s | 0=нет / 1..300 секунд / по умолчанию 30 | Общий резервный интервал возрождения (сек), когда интервал предмета = 0. Мега-аптечка исключена, чтобы не создавать ложный фиксированный отсчёт. |
| cl_it_mh_fb_s | 0=штатный динамический таймер (по умолчанию) / 1..300 секунд фиксировано | Фиксированный резервный интервал мега-аптечки. 0 сохраняет штатный динамический автопуть: после доверенного подбора ждать не менее пяти секунд и достижения здоровьем POV значения 100, затем запустить cl_it_mh_post_decay_s. Положительное значение перекрывает это поведение для модов с фиксированным интервалом Меги. |
| cl_it_mh_post_decay_s | 1..300 секунд / по умолчанию 20 | Автоматический отсчёт возрождения Меги после распада избыточного здоровья до 100. Штатный baseq2 назначает скрытой Меге 20 секунд после этого перехода. Используется только динамическим автопутём; фиксированные значения предмета/резерва и ручной it_start остаются фиксированными таймерами. |
| cl_it_sound | 0=выкл (по умолчанию) / 1=вкл | Играть необязательный локальный звук-предупреждение при входе таймера в окно предупреждения. Только код: файл (sound/q2prox/it/warn.wav) необязателен, при его отсутствии воспроизведение молча пропускается. |
| cl_it_sound_vol | 0..1 / по умолчанию 1.0 | Громкость звука-предупреждения. |
| cl_it_sound_mode | 0=выкл / 1=общий (по умолчанию) / 2=богатый | Режим звука: 0 выкл, 1 общий (общие звуки «скоро»/«готов»/числа), 2 богатый (голос по предмету с откатом на общий). Все звуки — необязательные внешние WAV в sound/q2x/tm/; отсутствующие файлы молча пропускаются. |
| cl_it_sound_countdown | 0=выкл / 1=вкл (по умолчанию) | Проигрывать посекундный звук числа (q2x/tm/num/<n>.wav) на каждую оставшуюся секунду внутри звукового окна предмета. Необязательные файлы; тишина, если их нет. |
| cl_it_sound_up | 0=выкл / 1=вкл (по умолчанию) | Проигрывать звук «предмет появился» (q2x/tm/sys/up.wav) при достижении таймером возрождения. Необязательный файл; тишина, если его нет. |
| cl_it_world_observe | 0=выкл (по умолчанию) / 1=вкл | Использует только предметы, уже полученные в обычном snapshot/PVS текущего POV, и статический каталог BSP-точек карты, чтобы считать одинаковые экземпляры отдельно. Режим не ищет предметы, не показывает их за стенами, не читает скрытое состояние сервера и не предсканирует будущее/демо. Простое появление или исчезновение предмета таймер не запускает: автостарт по-прежнему требует подтверждённого подбора текущим POV у постоянной точки карты и обычного разрешения автотаймеров. Обучение по экземплярам, если его включить отдельно, может уточнить интервал только после возврата той же подтверждённой точки. По желанию. |
| cl_it_ordinals | 0=выкл / 1=вкл (по умолчанию) | Показывать BSP-номер (1, 2, ...) на HUD, когда на карте больше одного такого предмета, чтобы различать одинаковые предметы. |
| cl_it_learn | 0=выкл (по умолчанию) / 1=вкл (нужен cl_it_world_observe) | Использовать интервалы возрождения, выученные при наблюдении за миром: когда одна и та же BSP-точка исчезает и снова появляется, это её реальное время респавна (только сессия, в пределах 5-300 с). Требует cl_it_world_observe. Никогда не учится по подбору только по типу предмета. Динамическая Mega исключена, пока фиксированный override не задаст эталон. По умолчанию выкл. |
| cl_it_bsp_match_radius | 8..512 / по умолчанию 64 | Радиус сопоставления (юниты мира) видимого предмета с его BSP-точкой. Видимый предмет должен быть в этом радиусе от BSP-точки того же типа, чтобы стать доверенным экземпляром; несопоставленные (дроп/с трупа) игнорируются. |
| cl_it_instance_cluster_radius | 8..512 / по умолчанию 64 | Радиус объединения (юниты мира) близких BSP-точек одного типа предмета при построении каталога. Каталог строится на карту; изменение действует после карты/перезагрузки. |
| cl_it_pickup_attach_radius | 16..2048 / по умолчанию 200 | Для ручного «it_start <id> <секунды>»: насколько близко должна быть BSP-точка, чтобы ручной таймер привязался к ближайшему экземпляру. Дальше — таймер уровня типа (без номера). |
| cl_it_own_touch_radius | 16..128 / по умолчанию 64 | Радиус доверия автоматическому своему подбору. STAT_PICKUP_STRING только с типом должен появиться настолько близко к BSP-точке карты того же типа, что отбрасывает обычные выпавшие предметы и оружие с трупов. При cl_it_world_observe тот же радиус определяет, взял ли исчезнувший видимый экземпляр текущий POV. Это также позволяет отдельно считать одинаковые предметы карты. |
Для каждого ID из каталога автоматически создаются семейства:
| Шаблон | Назначение |
|---|---|
| cl_it_<id>_show | Участвует ли тип предмета в системе |
| cl_it_<id>_s | Резервный интервал типа |
| cl_it_<id>_hud | Разрешён ли вывод этого типа на HUD |
| cl_it_<id>_hud_s | За сколько секунд показывать ячейку |
| cl_it_<id>_snd | Разрешён ли звук для типа |
| cl_it_<id>_snd_s | За сколько секунд начинать звук |
| cl_it_<id>_color | Цвет акцента ячейки |
Две переменные, cl_it_debug и cl_it_world_debug, относятся к диагностике и действуют только в текущем сеансе: они не сохраняются в конфиг и при следующем запуске снова равны нулю.
15. Настройка игрового сервера
Для R1Q2 и Q2PRO рекомендуется задавать решение в serverinfo. Флаг s обязателен, иначе клиент не увидит параметр через стандартный запрос статуса.
Разрешить автоматические таймеры:
set sv_allow_timers "1" s
Запретить автоматические таймеры:
set sv_allow_timers "0" s
Если параметр отсутствует, официальный клиент Q2PRO-X обращается к политике сайта. Если сервер скрывает стандартный status, прочитать параметр также не получится, и будет использована политика сайта.
Эта переменная не отключает ручной секундомер пользователя.
16. Управление разрешающим списком через API
Сайт читает текстовый файл политики заново при каждом запросе, поэтому изменение списка не требует перезапуска Node-процесса.
Формат:
force:0
q2.playground.ru:27910;ПГ ДМ
203.0.113.10:27910;Пример IPv4
[2001:db8::10]:27910;Пример IPv6
Правила файла:
Режимы force:
force не переопределяет явное решение sv_allow_timers игрового сервера.
В принятой production-схеме конфигурация и приватный ключ хранятся вне публичного каталога сайта. Рекомендуемые переменные окружения:
Q2PROX_TIMER_AUTH_PRIVATE_KEY_FILE=C:/nodejs/Q2PRO-X-private/timer-auth-private-key-1.pem
Q2PROX_TIMER_AUTH_CONFIG=C:/nodejs/Q2PRO-X-private/timer-authorization-servers.txt
Приватный ключ нельзя помещать в репозиторий, публичную директорию, архив клиента или журнал.
17. Защита ответа API
Протокол использует несколько независимых уровней защиты:
Поэтому два разрешающих ответа не повторяются побайтово, а перехваченный старый ответ нельзя штатно применить к новому запросу или другому серверу.
При любой ошибке подписи, nonce, адреса, порта, времени, формата или TLS автоматический запуск запрещается. Подключение к игре и ручные таймеры при этом продолжают работать.
18. Диагностика
Начните с одной команды:
it_info
Она показывает:
Дополнительные команды:
it_info active; it_info world
Для подробного журнала можно временно включить cl_it_debug 1 и cl_it_world_debug 1. Обе переменные действуют только до конца сеанса и в конфиг не попадают; чтобы прекратить вывод раньше, верните их в 0.
19. Типичные ситуации
Автотаймер не запускается, ручной работает
Это нормальный признак отсутствия разрешения, неподтверждённой постоянной BSP-точки или отключённого типа предмета. Выполните it_info и проверьте источник решения, cl_it_auto_own и cl_it_<id>_show.
Подобранное выброшенное оружие не создало таймер
Так и задумано. Автоматический режим принимает только подбор у постоянной точки карты. Для выброшенного оружия используйте ручной it_start, если отсчёт нужен.
HUD не виден
Проверьте cl_it 1, cl_it_hud 1, лимит ячеек, координаты и индивидуальный cl_it_<id>_hud. При открытом меню нужен cl_it_hud_in_menu 1 и достаточно прозрачное меню.
Нет звука
Проверьте режим, громкость и индивидуальный выключатель предмета. Все звуковые файлы необязательны; отсутствие файла является допустимым тихим режимом.
Mega не начала отсчёт сразу
В динамическом режиме это правильно. После собственного подбора клиент ждёт перехода здоровья к 100 и только затем запускает 20-секундный этап.
После смены наблюдаемого игрока всё очистилось
Это значение по умолчанию cl_it_reset_on_pov_change 1, защищающее от смешения событий разных POV. При необходимости его можно отключить в меню.
Сайт недоступен
Игровое подключение не блокируется. Автоматический запуск остаётся запрещённым, ручные таймеры продолжают работать. Администратор может избежать зависимости от сайта явным sv_allow_timers 1 или 0 в serverinfo.
20. Рекомендуемые профили
Обычная онлайн-игра
cl_it 1
cl_it_auto_own 1
cl_it_hud 1
cl_it_reset_on_pov_change 1
cl_it_world_observe 0
Ручной секундомер без автоматизации
cl_it 1
cl_it_auto_own 0
cl_it_hud 1
Наблюдение за матчем с раздельными экземплярами
cl_it 1
cl_it_auto_own 1
cl_it_world_observe 1
cl_it_ordinals 1
cl_it_reset_on_pov_change 1
21. Итог
Живые таймеры Q2PRO-X совмещают удобный HUD и ручной секундомер с жёсткими границами автоматизации. Ручной режим остаётся доступным везде, автоматический режим работает только по собственному подтверждённому подбору и только после разрешения локального сервера, serverinfo или подписанной политики сайта.
Для пользователя главным диагностическим инструментом является it_info, а для администратора самым простым и однозначным управлением остаётся set sv_allow_timers "1|0" s.