• Valve випустила технічне оновлення CS2 для авторів scripted maps. Цього разу фокус зробили не на змінах зброї, economy чи маппулу, а на нових інструментах для UI, керування видом та роботи зі сценаріями, зокрема пов'язаними з бомбою.

Оновлення CS2 розширює можливості scripted maps

Для маперів це практична технічна добавка. Valve додала entity custom_hud_layout, яка стала основою для створення власного UI в scripted maps. Тепер інтерфейс можна відображати без обхідних рішень через стандартні елементи.

Підтримуються такі компоненти:

  • Panel
  • Label
  • Image
  • Button

Оформлення працює через CSS, тож тим, хто вже збирав інтерфейси в Source 2 інструментах, буде легше адаптуватися. Водночас є чіткі обмеження: Valve вказала, що events і client-side scripting не підтримуються. Тобто це не безмежний UI-конструктор, а контрольований набір можливостей.

Крім цього, custom HUD зберігає стан під час reload у tools mode. Для тих, хто часто тестує мапу, це зменшує кількість перезапусків і прискорює перевірку змін.

Оновлення також додає методи для керування HUD:

  • CustomHudLayout.SetHasClass
  • CustomHudLayout.SetHasClassForPlayer
  • CustomHudLayout.SetDialogVariableString
  • CustomHudLayout.SetDialogVariableStringForPlayer
  • CustomHudLayout.SetInputCaptureEnabled
  • CustomHudLayout.IsInputCaptureEnabled

На практиці це дозволяє автору мапи змінювати класи елементів, підставляти текстові змінні для конкретного гравця та керувати захопленням вводу. UI стає не лише декоративним, а функціональним.

Камера гравця: контроль виду та робота з bomb-сценаріями

Друга помітна новинка - entity cs_player_camera. Вона дає контроль над тим, що бачить гравець, без потреби переміщувати його pawn. Саме тому такі сценарії тепер реалізуються пряміше, а не через складні трюки.

Камеру можна налаштувати так, щоб гравець:

  • дивився з заданої scripted-позиції
  • міг або не міг крутити огляд
  • лишався прив'язаним до свого pawn без фізичного зсуву

Для цього передбачені такі методи:

  • CSPlayerCamera.IsEnabled
  • CSPlayerCamera.SetEnabled
  • CSPlayerCamera.SetIsControllingAngles
  • CSPlayerPawn.GetCamera

Це корисно для вступних сцен, puzzle-механік, локальних cutscene-вставок або навчальних секцій на кастомних мапах. Такі оновлення частіше цікавлять авторів workshop-контенту, але саме вони відкривають шлях до більш "дивних" і водночас керованих режимів.

Valve також розширила bomb-related API. В оновлення CS2 додали:

  • Instance.OnBombPlantStart
  • Instance.OnBombPlantAbort
  • Instance.OnBombDefuseStart
  • Instance.OnBombDefuseAbort
  • C4.GetPlantStartTime
  • C4.GetPlantFinishTime
  • C4.AbortPlant
  • CSPlayerPawn.GetC4
  • CSPlayerPawn.GetDefuseTarget

Це вже не косметичні зміни. Тепер скрипти можуть реагувати не лише на сам факт plant або defuse, а й на початок дії, скасування та часові межі. Якщо мапа працює через таймери, окремі фази раунду або умовні тригери, такий контроль дає більше свободи в реалізації логіки.

Окремо вказано, що параметр planter в Instance.OnBombPlant і defuser в Instance.OnBombDefuse тепер deprecated. Автору мапи варто переглянути попередні схеми обробки подій, якщо вони спиралися на стару логіку.

Більше контролю над entity та зручніше налагодження скриптів

Крім UI та камер, апдейт торкнувся й загальних scripted-систем. Valve додала:

  • Instance.Delay
  • Instance.OnCustomHudClicked
  • Instance.IsDedicatedServer
  • Entity.Move
  • Entity.GetMoveType
  • Entity.SetMoveType
  • CSPlayerPawn.IsBuyMenuOpen
  • enum CSMoveType

Цей набір більше схожий на утилітарні "будівельні блоки", які допомагають керувати рухом entity, станом сервера та діями, пов'язаними з гравцем. Особливо важливий Instance.OnCustomHudClicked: без нього custom_hud_layout залишався б радше декоративною частиною. Тепер кнопки в HUD можуть запускати логіку мапи.

CSPlayerPawn.IsBuyMenuOpen не звучить гучно, але для сценарних режимів це зручний тригер. Наприклад, коли логіка мапи не повинна конфліктувати з buy phase або коли інтерфейс потрібно показувати лише за певного стану гравця.

Також є покращення для тих, хто регулярно натрапляє на власні помилки в коді. Valve покращила логування:

  • помилки під час initial script run тепер пишуться в консоль
  • unhandled promise rejections також логуються в консоль
  • помилки на етапі CompileModule тепер показують номер колонки
  • для частини event-викликів Valve виправила типи параметрів, де раніше вони могли бути maybe undefined

З практичної точки зору подібні зміни часто економлять найбільше часу. Не тому, що вони "ефектні", а тому, що швидше стає зрозуміло, де саме все зламалося. Один зрозумілий лог у консолі інколи корисніший за ще одну нову entity.

У підсумку: оновлення CS2 майже не впливає на звичайний ranked матч, але для спільноти маперів це помітний крок уперед. Valve додала кастомний HUD, окрему камеру, точнішу bomb-логіку та інструменти, які допомагають налагоджувати скрипти. Для гравця це не про чергову зміну smoke на Mirage. Для автора мап це вже база, з якої можна реалізувати щось помітно цікавіше, ніж раніше.


Повний список змін (Valve)

[ MAP SCRIPTING ]

  • Додано сутність custom_hud_layout:

  • custom_hud_layouts є точкою входу для скриптованих карт, щоб надати користувацький інтерфейс.

  • Підтримуються типи панелей: Panel, Label, Image та Button.

  • Підтримується стилізація за допомогою css.

  • Події та скриптування на стороні клієнта не підтримуються.

  • Зберігає стан під час перезавантаження режиму інструментів.

  • Додано сутність cs_player_camera:

  • Дозволяє контролювати вид гравця без переміщення його фігури.

  • Може бути налаштовано, щоб дозволити гравцеві оглядати навколишнє середовище з заданої позиції.

  • Додано Instance.Delay

  • Додано Instance.OnBombPlantStart

  • Додано Instance.OnBombPlantAbort

  • Додано Instance.OnBombDefuseStart

  • Додано Instance.OnBombDefuseAbort

  • Додано Instance.OnCustomHudClicked

  • Додано Instance.IsDedicatedServer

  • Додано Entity.Move

  • Додано Entity.GetMoveType

  • Додано Entity.SetMoveType

  • Додано CSPlayerPawn.GetC4

  • Додано CSPlayerPawn.GetDefuseTarget

  • Додано CSPlayerPawn.IsBuyMenuOpen

  • Додано CSPlayerPawn.GetCamera

  • Додано C4.GetPlantStartTime

  • Додано C4.GetPlantFinishTime

  • Додано C4.AbortPlant

  • Додано CustomHudLayout.SetHasClass

  • Додано CustomHudLayout.SetHasClassForPlayer

  • Додано CustomHudLayout.SetDialogVariableString

  • Додано CustomHudLayout.SetDialogVariableStringForPlayer

  • Додано CustomHudLayout.SetInputCaptureEnabled

  • Додано CustomHudLayout.IsInputCaptureEnabled

  • Додано CSPlayerCamera.IsEnabled

  • Додано CSPlayerCamera.SetEnabled

  • Додано CSPlayerCamera.SetIsControllingAngles

  • Додано enum CSMoveType

  • Виправлено типи для деяких подій, де параметри могли бути невизначеними.

  • Помилки, що виникають під час початкового виконання скрипта, тепер записуються в консоль.

  • Невирішені відхилення обіцянок тепер записуються в консоль.

  • Додано номер стовпця до помилок, виявлених під час етапу CompileModule завантаження скрипта.

  • Відмова від планувальника з події Instance.OnBombPlant

  • Відмова від розмінувальника з події Instance.OnBombDefuse