Обновление CS2 (25 авг. 2026 г.)
Valve выпустила официальный `cs_script` демонстрационный аддон, полный справочник JavaScript API и поддержку пользовательских Panorama HUD-лейаутов, управляемых скриптами — мощные инструменты для авторов карт.
Кратко
- Новый официальный аддон `cs_script_demo` с примерной картой, скриптами и кастомным UI.
- Полный TypeScript‑декларационный файл документирует JavaScript API `cs_script` для сущностей `point_script`.
- Несколько примеров скриптов демонстрируют трассировки, тренировку гранат, смену моделей, отладку ввода и кастомный приветственный UI.
- Разрешены кастомные Panorama UI и добавлены поисковые пути для пользовательских HUD‑лейаутов и стилей.
- Подсказки редактора и приветственный экран zoo обновлены и перенаправляют создателей на новый аддон `cs_script_demo`.
- Клиентская и серверная сборки увеличены с небольшими внутренними корректировками схем и движка.
В новом сборке Counter-Strike 2 основной упор сделан на скрипты и пользовательский UI: Valve выпустила официальный демонстрационный аддон cs_script_demo, полный справочник JavaScript API для скриптов карт и поддержку пользовательских Panorama HUD-лейаутов, управляемых из скриптов. Обновление ориентировано в первую очередь на маперов, моддеров и авторов Workshop — для обычных игроков видимых изменений немного.
Официальный демонстрационный аддон cs_script и примерная карта
- Новый демонстрационный аддон: Теперь в
csgo_addonsопределён аддонcs_script_demo, а вaddoninfo.txtуказывают картуcs_script_demo. Похоже, это официальный примерный пакет, который будет идти вместе с инструментами. - Содержимое демонстрации: Манифест аддона перечисляет карту
cs_script_demo.vmap, несколько скомпилированных скриптов (.vjs) и собственные Panorama-лейаут и стиль. Судя по всему, демонстрационная карта показывает возможностиcs_scriptот начала до конца: логику геймплея, утилиты трассировки, кастомный HUD и скриптовые взаимодействия. - Способ доступа: Текст приветствия явно сообщает, что «cs_script demo has moved to csgo_addons/cs_script_demo» и инструктирует «launch with workshop tools». Это сильно намекает, что демо рассчитано на открытие из окружения Workshop/Tools, а не через стандартный матчмейкинг.
Игроки, которые не пользуются инструментами, могут не встретить этот контент в обычной игре, но авторам он упростит изучение системы скриптов и создание качественных кастомных карт.
Полный JavaScript API-справочник для cs_script
-
Новые TypeScript-декларации для
point_script: Вcs_script_demo/maps/scriptsдобавлен большой файлpoint_script.d.ts, документирующий JavaScript API, доступный скриптам, прикреплённым к сущностямpoint_script. Модуль экспортируется какcs_script/point_script. -
Интеграция с редакторами: В комментариях объясняется, что размещение
point_script.d.tsи сопутствующегоtsconfig.jsonрядом со скриптами позволяет редакторам предоставлять IntelliSense, проверку типов и инструменты для JavaScript, нацеленного на текущий runtime CS2. Это должно заметно улучшить рабочий поток авторов скриптов. -
Основная поверхность API: Декларации открывают центральный объект
Instanceс колбэками и хелперами для:- Жизненного цикла игры:
OnActivate,OnPlayerConnect,OnPlayerActivate,OnPlayerDisconnect,OnRoundStart,OnRoundEnd, хуки перезапуска раунда, события установки/разминирования бомбы и прочие. - Боя и урона:
OnModifyPlayerDamage(с возможностью изменять величину урона, флаги или отменять попадания),OnPlayerDamage,OnPlayerKill,OnGunFire,OnGunReload,OnBulletImpact, атаки ножом, броски и отскоки гранат. - Взаимодействия с игроком: чат (
OnPlayerChat), пинги (OnPlayerPing), прыжки и приземления, подбор/сброс оружия. - Трассировки и физические запросы:
TraceLine,TraceSphere,TraceBox,TracePlayer,TraceBulletс структурированными типами результатов. - Взаимодействие с миром: отправка входов сущностям (
EntFireAtName,EntFireAtTarget), подписка на выходы черезConnectOutput/DisconnectOutput, и хелперы поиска сущностей (FindEntityByName,FindEntitiesByClassи т. п.). - Тайминги: система think (
SetThink,SetNextThink), промисыDelayиQueueAfterThinksдля безопасных модификаций после физики. - Запросы состояния игры: оставшееся время раунда, warmup/freeze-статусы, тип/режим игры, имя карты и счётчик раундов, а также управление оставшимся временем раунда.
- Команды:
ClientCommand,ServerCommandиRegisterCheatCommandдля консольных утилит, управляемых скриптами. - Персистентные данные:
SetSaveDataиGetSaveDataдля сохранения строк, связанных с аддоном.
- Жизненного цикла игры:
-
Классы сущностей и игроков: Декларации содержат классы вроде
Entity,BaseModelEntity,CSWeaponBase,CSPlantedC4,CSGrenadeProjectileBase,CSPlayerPawn,CSPlayerController,CSObserverPawn,CustomHudLayout,CSPlayerCameraиPointTemplateс API для движения, моделей, здоровья, оружия, брони, денег, управления камерой и поведения пользовательского HUD. -
Перечисления и структуры данных: Формально задокументирован ряд enum-ов (типы движения, тип оружия, типы урона и флаги, хитгруппы, флаги ввода, тип гранаты, слоты загрузки и т. д.) и интерфейсов данных (трэйсы пуль, трэйсы игроков, события урона, отскоки гранат, события бомбы).
-
Отмеченные устаревания: Несколько методов и перегрузок помечены как
@deprecatedс пометкой об удалении в будущих обновлениях. Это даёт авторам скриптов раннее предупреждение о необходимости миграции от устаревших хелперов, таких какOnBeforePlayerDamage, старые перегрузки отладочной отрисовки и некоторые специфические помощники по урону.
В целом файл формализует ту поверхность cs_script, с которой многие маперы уже экспериментировали, и должен сделать работу со скриптами менее догадочной и более стабильной для серьёзных проектов Workshop.
Примеры скриптов: трассы, вводы, гранаты, модели и UI
В cs_script_demo теперь включено несколько конкретных JavaScript-примеров, которые демонстрируют использование API в реальной логике карт и будут полезны как справочные материалы.
Трассировка и визуализация пуль (trace.js)
- Чит-команда для отладки трасс: Команда
script_zoo_traceпереключает режимы трасс:line,sphere,box,playerилиbullet. - Линейные/сферические/блочные трассы: Скрипт:
- Берёт позицию взгляда первого игрока и направление взгляда.
- Выполняет разные типы трасс в зависимости от режима (линия, сфера или осесимметричный бокс), игнорируя игрока при необходимости.
- Использует
DebugSphere,DebugBoxиDebugLineдля отрисовки точек попаданий и нормалей поверхности.
- Трассировка столкновений игрока: Пример
TracePlayerпоказывает поведение столкновений при движении игрока, используя приседшую высоту pawn-а для размеров бокса. - Симуляция пули: Пример
TraceBulletиспользует дальность активного оружия, урон, модификатор дальности и параметры пробиваемости для симуляции траектории и пробиваемости пули. Он:- Разноцветно помечает попадания по миру, малый урон, обычный урон и очень большой урон.
- Отмечает хэдшоты маленькой сферой, а остальные попадания — маленьким боксом.
Этот скрипт показывает, как строить визуализаторы движения, коллизий и поведения пуль — полезно для тренировочных карт и отладки кастомной механики.
Мини‑режим тренировки гранат (grenadetraining.js)
- Поворотный выбор целей: Скрипт отслеживает раунды, попадания и текущий индекс цели, затем:
- Случайным образом выбирает из множества целей с простой анти‑повторной логикой.
- Регулирует сложность в зависимости от номера раунда.
- Использует входы сущностей (
cover.*,tele.*и world text entities) для отображения следующей цели и сброса игрока.
- Поток тренировки: Кастомные входы скрипта управляют конечным автоматом:
ResetAndCleanUpсбрасывает триггеры, таймеры, текст, звуки и объекты cover, отключает бесконечные боеприпасы, уничтожает оружие игрока и принуждает слот гранаты.StartTrainingвключает режим: включает бесконечные боеприпасы, даёт игроку HE-гранату, запускает отсчёты и таймеры, сбрасывает счётчики раундов/попаданий.GrenadeHitувеличивает счётчик попаданий, воспроизводит звук, обновляет UI-текст и удаляет отслеживаемый снаряд, если он есть.SetNextTargetзапускается по таймеру, переключаясь на новую цель до 10 раундов, затем очищает состояние и проигрывает финальный звук.
- Рисование траектории гранаты в реальном времени: Через
OnGrenadeThrowскрипт отслеживает брошенный снаряд и каждое тике рисует позади него непрерывную отладочную линию, пока он не исчезнет, помогая визуализировать траекторию.
Это демонстрирует, как создать полностью скриптовый тренажёр с UI, реагирующий на действия игрока и сущности мира без опоры только на традиционные цепочки логики в Hammer.
Изменение моделей и эффекты свечения (mdlchange.js)
- Динамические модели: Скрипт находит проп с именем
mdlchange.prop_dynи показывает, как:- Менять его модель в рантайме через
SetModelна несколько примерных моделей. - Масштабировать проп со временем с помощью
SetModelScaleи простого множителя.
- Менять его модель в рантайме через
- Переключение свечения: Вход
GlowToggleиспользуетGlow,UnglowиIsGlowingчтобы выделять проп, иллюстрируя, как кастомные карты могут подчёркивать интерактивные объекты или мишени.
Инспекция ввода игрока (input.js)
- Команда для отладки ввода: Чит‑команда
script_zoo_showinputпереключает отслеживаемый pawn игрока (pawn первого контроллера). - Отображение статуса ввода на экране: Каждый тик скрипт выводит три строки отладочного HUD-текста для отслеживаемого pawn-а:
- Нажатые в данный момент действия (
IsInputPressed). - Действия, только что нажаты в этом тике (
WasInputJustPressed). - Действия, только что отпущены в этом тике (
WasInputJustReleased).
- Нажатые в данный момент действия (
Этот пример показывает, как в реальном времени инспектировать и визуализировать флаги ввода игрока, что полезно для анализа движения и обучающих карт.
Приветственная логика, боты и модификации урона (setup.js)
- Серверные настройки по загрузке: При загрузке скрипта демо включает
sv_cheats, офлайн warmup и приостановку таймера warmup, что делает окружение безопасным для экспериментов. - Автоконфиг первого игрока: При первом событии
OnPlayerActivateскрипт:- Принудительно ставит игрока в команду
2. - Останавливает ботов и добавляет одного бота, вероятно, как тренировочную мишень.
- Показывает приветственный UI этому игроку.
- Принудительно ставит игрока в команду
- Изменения урона: С помощью
OnModifyPlayerDamageиOnPlayerDamage:- Урон по ботам помечается флагом
CSDamageFlags.PREVENT_DEATH, что фактически делает ботов бессмертными целями. - Колющий урон (например, от ножа) даёт игровый эффект: после урона скрипт планирует изменение скорости, которое подбрасывает жертву вверх через
Teleportс модифицированным вектором скорости.
- Урон по ботам помечается флагом
- Кастомный приветственный диалог: Скрипт подключает сущность
CustomHudLayoutс именемwelcome_layoutчтобы:- Показать диалог подключившемуся игроку через
SetHasClassForPlayerиSetInputCaptureEnabled. - Скрыть его при нажатии игроком на кнопку с id
dismiss_button, детектируемую черезOnCustomHudClicked.
- Показать диалог подключившемуся игроку через
- Команда для повторного показа: Чит‑команда
script_zoo_show_welcomeповторно отображает приветственный диалог для всех подключённых контроллеров.
Этот пример объединяет события жизненного цикла игроков, хуки урона, движение сущностей, ботов и управление пользовательским HUD в единый учебный сценарий.
Минимальный hello-world (hello.js)
- Простейший вывод: Самый простой пример просто импортирует
Instanceи пишет в консоль «Hello cs_script!». Это удобная отправная точка для авторов, проверяющих настройку.
Поддержка пользовательского HUD и игрового UI
-
Кастомный game UI разрешён: В конфигурации игры теперь
AllowCustomGameUIустановлено в1. Это означает, что движок позволяет активировать кастомный Panorama UI для карт/игр, где ранее он был отключён. -
Поисковые пути для кастомных лейаутов: Главная конфигурация game info теперь включает пути поиска ресурсов:
"panorama/layout/custom_game""panorama/styles/custom_game"
Это позволяет загружать лейауты и стили, помещённые в эти каталоги.
-
Документация сущности custom HUD: Определение
custom_hud_layoutвcsgo.fgdпо‑прежнему описывает сущность как «Panorama UI that can be controlled by cs_script.» Небольшое изменение убирает справочную ссылку в редакторе на командуdev_report_info_hud_layout, упростив подсказку. Сущность продолжает использовать полеlayout(resource:xml)для указания Panorama-лейаута. -
Обновление содержимого welcome screen: Файлы
welcome.xmlиwelcome.cssкарты редактора zoo были подправлены:- Диалог стал шире и чуть выше (520x220 вместо 350x200), чтобы уместить больше текста.
- Текст теперь информирует: «The cs_script demo has moved to csgo_addons/cs_script_demo. Launch with workshop tools to view.» Это явно перенаправляет маперов к новому аддону и от старой встроенной карты.
Создатели карт теперь, вероятно, смогут проектировать более выразительные HUD и диалоги, управляемые напрямую из скриптов, используя класс CustomHudLayout вместе с пользовательскими Panorama-лейаутами и CSS в новых директориях.
Изменения редактора и инструментов для скриптовых ассетов
- Видимость типов ассетов: Общая конфигурация типов ассетов больше не скрывает некоторые типы ассетов, связанные со скриптами, от розничной среды CS:GO/CS2. В частности, ссылки на
m_HideForRetailMods = [ "csgo" ]удалены для некоторых ресурсов на базе KV3 (Panorama layout/style). Это может позволить этим ассетам быть более распознаваемыми в инструментах и пайплайне, а не быть строго редакторными. - Обновлённые файлы редактора zoo: Скомпилированные ресурсы welcome (
welcome.vxml_c/welcome.vcss_c) снова перечислены в манифесте пакета карты zoo, что указывает на их участие в наборе инструментов и обновление вместе с новым текстом и размерами. - Очистка enum-ов движения в заглушках редактора: Редакторская версия
point_script.d.ts, используемая в картеzoo, лишилась двух записей движения (FLY,PUSH) вCSMoveType, что приводит её в соответствие с новой канонической версией демонстрационного API. Это должно снизить несоответствия между заглушкой в редакторе и официальной версией аддона.
Эти правки в основном влияют на видимость и поведение ассетов в инструментах, а не на обычный геймплей, но помогают поддерживать консистентность пайплайнов скриптинга и UI.
Под капотом и версия сборки
- Бамп клиентской и серверной сборки: В
steam.infвидно изменение версий клиента и сервера с2000888на2000891, с обновлённой информацией о исходной ревизии и времени сборки. Это сигнализирует о новом релизе сборки, хотя поведение геймплея вне области скриптов/интерфейса очевидно не менялось. - Небольшие изменения движка и схем: Есть мелкие правки в таблицах строк движка и пара внутренних заголовков схем, связанных с динамическим питч/громкостью (
dynpitchvol_*). Это, похоже, фундаментальные корректировки, а не новые пользовательские функции.
Итоговое влияние
Для повседневных игроков это обновление почти незаметно: серьёзных изменений в геймплее или балансе ожидать не стоит. Самое заметное для обычного пользователя — что старый приветственный панель редактора zoo теперь перенаправляет к новому аддону cs_script_demo.
Для маперов, моддеров и авторов Workshop сборка важна:
- Появился официальный, строго типизированный справочник по API
cs_script, что делает написание и поддержку JavaScript-логики для карт значительно проще. - Вышел полноценный демонстрационный аддон с множеством примеров, показывающих работу с хук‑ами урона, трассировками, пулями, гранатами, ботами, кастомными HUD, моделями сущностей и вводом игроков.
- Движок теперь явно поддерживает кастомные Panorama HUD-лейауты, управляемые из
cs_script, что открывает дорогу более насыщенным тренировочным картам, сценариям и пользовательским интерфейсам.
В совокупности это переводит cs_script из экспериментальной фичи в нечто гораздо ближе к полноценной среде скриптинга для кастомного контента CS2 и, вероятно, подготовит почву для более сложных работ сообщества.
