Главная часть патча посвящена режиму с заложниками. Заложник теперь отдельный объект CSHostage, и карта видит каждый его шаг: от первой попытки поднять до спасения или гибели.
Если вы играете только в матчмейкинг, в игре для вас ничего не изменилось: в списке изменений от 22 октября один раздел, MAP SCRIPTING. Новые возможности появятся в картах мастерской и пользовательских режимах, когда их авторы обновят скрипты.
Заложник перестал быть немой моделью
У CSHostage появились методы IsBeingPickedUp, IsBeingCarried и IsRescued. Скрипт узнаёт, поднимают ли заложника, несут ли его и довели ли до точки. GetRescuer называет спасителя, а GetPickUpStartTime и GetPickUpFinishTime дают время начала и конца подъёма. С другой стороны тянется CSPlayerPawn.GetHostage, так что связь можно проверить и от игрока.
Вместе с методами пришли события, на которые карта может реагировать сразу.
- OnHostagePickUpStart срабатывает, когда игрок начал поднимать заложника.
- OnHostagePickUpAbort ловит сорванный подъём.
- OnHostagePickUp приходит, когда заложника подняли.
- OnHostageDrop означает, что заложника бросили.
- OnHostageRescue отмечает спасение.
- OnHostageKill срабатывает при гибели заложника.
Автор карты может, например, начислить очки за спасение или включить тревогу на базе террористов в момент, когда спецназ схватил заложника.
Console и GameRules забрали часть работы у Instance
Valve вынесла в верхний уровень два новых раздела. В Console собрали всё, что касается консольных переменных. Значение можно прочитать нужного типа (GetConvarBoolean, GetConvarNumber, GetConvarString, GetConvarVector, GetConvarQAngle, GetConvarColor) и записать через SetConvar. Последний метод не ограничен sv_cheats и выполняется синхронно, то есть новое значение действует уже на следующей строке скрипта.
| Было | Стало |
|---|---|
| Instance.Msg | Console.Log |
| Instance.ClientCommand, ServerCommand, RegisterCheatCommand | те же методы в Console |
| Instance.IsWarmupPeriod, IsFreezePeriod, IsTeamIntroPeriod | те же методы в GameRules |
| Instance.GetRoundsPlayed, GetRoundRemainingTime, SetRoundRemainingTime | те же методы в GameRules |
| Instance.AddTeamMoney | GameRules.AddTeamMoney |
GameRules получил и собственные новые методы. StartWarmup и EndWarmup включают и выключают разминку, GetTeamScore и AddTeamScore читают и меняют счёт команды, а TerminateRound завершает раунд. Скрипт карты теперь может сам решить, когда раунд окончен.
Старые имена пока работают, но помечены как устаревшие. Переименование механическое, так что вызовы проще перенести заранее, пока их в проекте немного.
Скрипт видит, загрузились ли ресурсы у всех игроков
Instance.Precache возвращает объект CSPrecache. Через IsServerLoading и IsServerLoaded он сообщает, грузится ли ресурс на сервере, а через IsClientLoading и IsClientLoaded то же самое у клиента. IsLoadedForAll отвечает, готово ли всё у каждого участника. Когда ресурс больше не нужен, Release его освобождает.
Интерфейс, радар и исправления
Остальное в патче — мелкие доработки и исправления. В пользовательской раскладке интерфейса (custom_hud_layout) появились два класса верхнего уровня, HUD_TEAMMENU_VISIBLE и HUD_CHAT_VISIBLE: по ним раскладка может меняться, когда открыто меню выбора команды или чат. Элемент radar_element теперь показывается на радаре в любом режиме, а не только в Rush.
- GameRules.AddTeamMoney больше не роняет игру, если передать причину CSTeamMoneyReason.NONE.
- Значения перечислений CSTeamMoneyReason и CSWeaponAttackType приведены в соответствие с описанием типов point_script.d.ts.
- CSRadarPoint.IsVisibleToTeam и CSObservablePoint.IsObservableForTeam теперь возвращают логическое значение, а не число.
- Предупреждения в журнале показывают стек вызовов JavaScript и подробности о неверных аргументах, а аргументы нумеруются с 0, а не с 1.
- Convar
- Консольная переменная игры, например настройка сервера или клиента, которую можно прочитать и изменить.
- sv_cheats
- Серверная настройка, без которой часть команд консоли заблокирована.
- Precache
- Предварительная загрузка моделей, звуков и других ресурсов до того, как они понадобятся в игре.
Гайды















