Обновление кода25 авг. 2026 г., 02:42 GMT+3

Обновление CS2 (25 авг. 2026 г.)

В CS2 добавлена экспериментальная система пользовательских HUD для `cs_script`‑карт, расширены API для бомбы и камер, и примерная карта `cs_script` (zoo) обновлена для демонстрации новых возможностей.

Кратко

  • Экспериментальная сущность `custom_hud_layout` и API `CustomHudLayout` позволяют скриптам управлять простыми HUD с кнопками, классами и переменными диалога.
  • Новые скриптовые хуки для начала/отмены/завершения закладки и обезвреживания, класс `C4`, камера `CSPlayerCamera`, `CSMoveType` и промис‑ориентированный `Instance.Delay` расширяют возможности логики карт.
  • Примерная карта `cs_script` (zoo) получила скриптовый приветственный диалог, использующий новый HUD, а шахматная мини‑игра переведена на встроенный `Instance.Delay`.
  • Движок, схемы и user message‑протокол обновлены для поддержки событий `CustomHudClicked` и сетевого состояния пользовательских HUD по игрокам.

В очередном обновлении CS2 добавлена экспериментальная система пользовательских HUD для карт на cs_script, расширены скриптовые возможности вокруг бомбы и камер, а официальная примерная карта cs_script («zoo») обновлена, чтобы продемонстрировать новые инструменты.

Экспериментальные пользовательские HUD для карт со скриптами

  • Новая сущность custom_hud_layout: в csgo.fgd в Hammer появился точечный энтити custom_hud_layout, который позволяет авторам карт указывать Panorama XML‑макет, управляемый из cs_script.
  • Поддерживаемые элементы UI: в документации скриптов указано, что макеты могут содержать базовые панели:
    • Panel с id, class, hittest
    • Label с id, class, hittest, text
    • Image с id, class, hittest, src, texturewidth, textureheight
    • Button с id, class Поддерживается стилизация через CSS; клиентский JS внутри HUD не разрешён.
  • Визуальное состояние, управляемое сервером: скрипты теперь могут:
    • Переключать CSS‑классы у панелей глобально или для отдельных игроков через CustomHudLayout.SetHasClass / SetHasClassForPlayer.
    • Устанавливать переменные диалога (текстовые токены) для отдельных панелей глобально или для игрока через SetDialogVariableString / SetDialogVariableStringForPlayer. Это даёт возможность реализовать серверно‑управляемые подсказки, таймеры или индикаторы состояния.
  • Перехват ввода из HUD: CustomHudLayout.SetInputCaptureEnabled(playerSlot, enabled) позволяет временно захватить мышь игрока для взаимодействия с UI. IsInputCaptureEnabled сообщает, захвачен ли ввод в данный момент. Пока ввод захвачен, игрок может потерять обычный контроль движения/мыши, пока все захваты не будут сняты.
  • События кликов через user message: добавлены новый user message CS_UM_CustomHudClicked и скриптовый колбек Instance.OnCustomHudClicked. Когда игрок нажимает кнопку в CustomHudLayout, сервер получает, какой макет и buttonId были нажаты — это позволяет реализовать меню, диалоги или мини‑игры целиком на серверной стороне.
  • Панорама‑файлы для бэкенда HUD: в движке появились два новых Panorama‑макета: hud/customhuds.xml и hud/infohudlayouts.xml, которые, по‑видимому, служат каркасом для внутренней стороны пользовательских макетов. Игроки, скорее всего, не увидят новый HUD по‑умолчанию, но эти файлы необходимы для работы функциональности.
  • Экспериментальный статус: API помечено как @experimental и может меняться. Разработчикам серьёзных проектов стоит ожидать возможных изменений в будущих сборках.

Обновления скриптинга для бомбы, камер и движения

Изменения в content/csgo/maps/editor/zoo/scripts/point_script.d.ts расширяют возможности cs_script для кастомных карт:

  • Асинхронный таймер на Promise:
    • Instance.Delay(delay: number): Promise<void> — встроенная асинхронная задержка. Это заменяет самописную очередь таймеров в шахматном скрипте зоопарка и упрощает длительные последовательности.
  • Более подробные события жизненного цикла бомбы:
    • Новые колбеки разделяют взаимодействия с бомбой на фазы начала/отмены/завершения:
      • OnBombPlantStart, OnBombPlantAbort, OnBombPlant
      • OnBombDefuseStart, OnBombDefuseAbort, OnBombDefuse, а также OnBombExplode
    • Введены типы BombPlantEvent и BombDefuseEvent, некоторые поля помечены как deprecated для будущей чистки. Это позволит скриптам точнее реагировать на частичные закладки/обезвреживания — например, для обучающих подсказок или пользовательских условий победы.
  • API для C4:
    • Новый скриптовый класс C4 (наследует CSWeaponBase) включает:
      • GetPlantStartTime() / GetPlantFinishTime()
      • AbortPlant()
    • У CSPlayerPawn появился GetC4() для получения C4 у игрока и GetDefuseTarget() для доступа к бомбе, которую он обезвреживает. Эти инструменты пригодятся для продвинутых тренировочных карт и режимов, связанных с бомбой.
  • Хуки состояния игрока и UI:
    • CSPlayerPawn.IsBuyMenuOpen() сообщает, открыт ли у игрока магазин.
    • CSPlayerPawn.GetCamera() возвращает CSPlayerCamera для каждого игрока.
  • Новая сущность для управления камерой:
    • CSPlayerCamera — экспериментальная скриптовая сущность, представляющая вид игрока.
    • Скрипты могут включать/отключать её и вызывать SetIsControllingAngles(controlling: boolean). Когда контроль углов не захвачен, игрок может свободно смотреть вокруг из позиции камеры. Это даёт потенциал для более качественных скриптовых камер (катсцены, повторы, обучающие ракурсы).
  • Помощники по движению и интерполяции:
    • Новый CSMoveType enum позволяет инспектировать или менять способ передвижения сущности (walk, fly, noclip, ladder и т.д.) через GetMoveType() и SetMoveType().
    • Move({...}) добавлен как сосед Teleport и описан как перемещение сущности без сброса клиентской истории интерполяции — это позволяет более плавно визуально перемещать объекты.
  • Утилиты и уточнения типов:
    • Instance.IsDedicatedServer() помогает разделять логику для listen‑ и dedicated‑серверов.
    • Несколько полей событий (например, в OnPlayerChat, OnBulletImpact, ModifyPlayerDamageEvent.inflictor и др.) сделаны опциональными (?), что повышает устойчивость скриптов, когда сущность отсутствует.

Все эти дополнения представлены в официальных type‑определениях для авторов карт, то есть предназначены для использования в пользовательском контенте, а не только во внутренних примерах Valve.

Примерная карта zoo: всплывающий диалог и упрощённая логика шахмат

Официальная примерная карта editor/zoo была расширена, чтобы показать новые HUD и таймеры.

  • Новый всплывающий приветственный UI:
    • Panorama‑макет welcome.xml и welcome.css определяют простой центрированный диалог с текстом «Welcome to the cs_script zoo map!», кнопкой Dismiss и CSS‑классом Dismissed, который плавно скрывает диалог через opacity.
    • При появлении игрока (OnPlayerActivate) вызывается ShowWelcome(playerSlot):
      • Удаляет класс Dismissed для данного игрока, чтобы диалог показался.
      • Включает перехват ввода через SetInputCaptureEnabled, чтобы игрок мог нажать кнопку.
    • Instance.OnCustomHudClicked слушает клики:
      • Если клик пришёл из welcome_layout с buttonId = dismiss_button, HideWelcome снова добавляет Dismissed и отключает перехват ввода, возвращая управление игроку.
    • Отладочная команда script_zoo_show_welcome перебирает всех игроков и заново показывает диалог — это демонстрирует, как авторы могут повторно вызывать пользовательские HUD‑потоки по требованию.
  • Шахматный скрипт переведён на Instance.Delay:
    • Ранее мини‑игра шахмат использовала собственную очередь таймеров и самописный Delay() на базе Instance.SetNextThink.
    • Самодельная очередь и реализация Delay полностью удалены.
    • Все асинхронные паузы (в RunChess, анимациях передвижения и смерти фигур, ограничении поиска минимакс у AI) теперь используют await Instance.Delay(0). Это показывает, как встроенный Delay упрощает длительную асинхронную игровую логику.

Игроки, заглянувшие на карту zoo после обновления, увидят небольшое приветственное окно при первом спавне — прямую демонстрацию того, как выглядят и работают пользовательские HUD‑макеты.

Движок и протоколы, стоящие за новыми HUD-инструментами

За видимыми изменениями стоит набор движковых и схемных обновлений, обеспечивающих работу новых функций:

  • Сетевые структуры пользовательских HUD:
    • Появились новые схемные типы (CCSCustomHudLayout, CCSCustomHudLayoutState, HUDPanelHasClass_t, HUDPanelDialogVariableString_t, EHudPanelClassStatus_t) на клиенте и сервере. Они покрывают:
      • Имя ресурса макета.
      • Глобальное и per‑player состояние макета (какие классы и диалоговые переменные применены к панелям).
      • Захват ввода для конкретного игрока.
  • Сущность камеры игрока:
    • CCSPlayerCamera добавлен на клиенте и сервере с полями, ссылающимися на pawn handle и флагами включения и контроля прицела.
  • User message и enum‑интеграция:
    • В ECstrike15UserMessages добавлен CS_UM_CustomHudClicked = 390, что встраивает уведомление о клике HUD в существующий pipeline user messages.
    • Соответствующее протокольное сообщение CCSUsrMsg_CustomHudClicked передаёт идентификатор макета и buttonId на сервер.
  • Инструменты и строковые таблицы:
    • Обновлены внутренние инструменты и таблицы строк (сервер, клиент, Panorama, VScript, resource compiler и т.д.). Среди них — новые структуры строк, связанные с HUD (HUDPanelHasClass_t, вектора переменных диалога) и обновлённая поддержка V8‑скриптинга. Эти изменения в основном «под капотом» и вряд ли напрямую заметны игрокам, но необходимы для надёжной работы новых скриптовых функций.

Общее влияние

Обновление ориентировано прежде всего на создателей контента и скриптеров, а не на базовую соревновательную механику:

  • Авторы карт получают экспериментальный, официально поддерживаемый способ создавать простые интерактивные HUD, управляемые из cs_script, с per‑player состоянием, обработкой кликов и перехватом ввода.
  • Скриптовые хуки, связанные с бомбой, стали заметно богаче — это может быть полезно для тренировочных карт, туториалов и пользовательских режимов.
  • CSPlayerCamera, инструменты для движения и Promise‑ориентированный Instance.Delay упростят реализацию продвинутых скриптовых сцен (камеры, мини‑игры, плавные перемещения).

Для большинства игроков в обычном матчмейкинге изменения будут малозаметны. Со временем же эти инструменты могут привести к более качественным пользовательским картам, удобным тренировочным утилитам и новым творческим режимам сообщества на базе скриптов CS2.

Назад к обновлениям

Недавние обновления

Обновление кода9 окт. 2026 г., 01:39 GMT+3

Обновление CS2 (9 окт. 2026 г.)

В обновлении: чуть более быстрая перезарядка у конкретного оружия, смягчённые серверные сетевые лимиты, улучшенный микс звука оружия, очистка протоколов econ, исправления шейдеров и инструментов, а также полировка интерфейса фотобудки питомца.

  • После перезарядки сокращено окно запрета атаки для конкретного оружия — перезарядки ощущаются чуть быстрее.
  • Серверные защитные лимиты по CPU и recv‑буферу ослаблены и переведены в `release`, чтобы снизить число ложных откидываний игроков.
  • Модификаторы аудиомикса оружия обновлены — выстрелы могут лучше «прорезать» звуковую картину.
  • Крупная очистка сообщений и схем Game Coordinator econ: многие устаревшие операции помечены deprecated, добавлены более общие операции для предметов.
  • В сетевые данные игровых пауков игроков добавлено новое поле `m_flModifier0`, вероятно для синхронизируемого игрового или визуального модификатора.
  • Тултип фотобудки питомца переведён на систему локализации, а ряд языковых и ресурсов Pet Book перепакованы.
  • Много Vulkan‑шейдеров обновлены ради согласованных имён и корректных привязок параметров, что повышает устойчивость VFX и инструментов создания контента.
  • ModelDoc получил операцию Strip Morphs для удаления морф‑таргетов, а Asset Browser — ярлык для перехода к выделённому ассету на диске.
  • Пакет карты `rush_001` и её миниатюры были пересобраны — вероятно мелкие визуальные или упаковочные правки, без изменения планировки.
  • Клиентские, серверные, матчмейкинг и движковые бинарники пересобраны с версией `1.41.9.0` — общее обновление стабильности и протоколов.
Подробнее
Официальное обновление9 окт. 2026 г., 01:36 GMT+3

Обновление Counter-Strike 2 (9 окт. 2026 г.)

Краткий обзор: значок пинга для упавших комплектов для обезвреживания, изменение перезарядки `AUG`, исправления звука, коллизий, локализации и стабильности.

  • Добавлен значок пинга для упавших комплектов для обезвреживания
  • Сокращено время перезарядки `AUG` на полсекунды
  • Исправлено звуковое событие при тихой перезарядке для `Desert Eagle`
  • Исправлен случай жужжащих звуковых эффектов во время воспроизведения демо
  • Исправлены проблемы с коллизиями на картах серии `Rush`
  • Обновления локализации
  • Обновления стабильности
Подробнее