С новым годом! Вот несколько обновлений, в основном предназначенных для картографов и моддеров.
Изменения карты
- Исправлена проблема с навигацией возле дополнительной комнаты снабжения в Ридберге.
- Огнетушитель в конце Ридберга теперь использует новую временную механику пикапа.
Статистика
- Исправлена ошибка, из-за которой параметр статистики в брифинге переходил на устаревший веб-сайт.
- Исправлена ошибка, из-за которой статистика не записывалась для тяжелой штурмовой винтовки 22A5, медицинского пистолета-пулемета IAF и газовых гранат TG-05.
Лобби
- Удаление первоначального лидера лобби больше не мешает ему создавать лобби в течение 5 минут.
- Пользовательский интерфейс создания лобби запомнит, было ли последнее созданное вами лобби общедоступным или только для друзей.
- Исправлена задержка при перезапуске миссии, если игрок отключился во время голосования.
- Параметр «Сделать перерыв» в меню ESC теперь отключен, если сервер не позволяет его использовать.
Выделенный сервер
- Добавлен rd_adjust_mod_dont_load_vertices, который устанавливает mod_dont_load_vertices на выделенных серверах. Это не позволяет выделенному серверу загружать вершины для моделей, уменьшая использование памяти.
- Включены переменные rm_welcome_message и rm_welcome_message_delay.
- Теперь сервер выполняет более чистое завершение работы, когда установлено значение rd_server_shutdown_after_num_secs.
- Исправлено ограничение сервера 64 FPS в Windows 10 build 2004 и новее.
- Исправлены проблемы с симуляцией физики при изменении частоты тиков по умолчанию.
- Выделенные серверы теперь обновляют предметы мастерской асинхронно при запуске.
Разное
- Исправлено первое исцеляющее маяк, считывающее неинициализированную память.
- Исправлен эксплойт дублирования часового.
- Инструктор игры больше не будет предлагать взаимодействие с отключенными кнопками и областями компьютера.
- Исправлена ошибка, из-за которой только что взломанные компьютеры не позволяли выбирать другие параметры, кроме загрузки данных и удаленных турелей, пока пользователь не выйдет из системы.
- Добавлен rd_prediction_strategy. Установите для этой переменной значение 1, чтобы протестировать новую обработку ошибок прогнозирования, которая лучше работает на движущихся платформах, но может содержать ошибки.
- Морские пехотинцы-боты теперь могут использовать вторичный огонь из медицинского пистолета-пулемета IAF.
- Исправлены некоторые случаи, когда игра пыталась писать в файлы распакованного аддона, а не в свой собственный базовый каталог.
- Если на уровне нет env_tonemap_controller, он будет автоматически создан и отправлен на вход SetBloomScale 0.25.
- Директор только один раз предупредит об уровне без графа узлов.
- Исправлена ошибка, из-за которой возникала ранняя болтовня о побеге, если цель побега не была последней в списке.
- Явный провал дополнительной цели больше не приводит к провалу миссии.
- «Держать мышь внутри окна» можно использовать в эксклюзивном полноэкранном режиме для установок с несколькими мониторами.
Вызов ConVars
- Добавлен rd_biomass_damage_from_explosions для испытаний; если установлено на 1, то биомасса получит полный урон от взрывов.
- asw_marine_friction, asw_marine_gravity и asw_sv_maxspeed теперь являются чит-переменными.
- Добавлен asw_turret_dmg_override для изменения урона за выстрел удаленной турели.
- Добавлены asw_sentry_top_machinegun_dmg_override и asw_sentry_top_flamer_dmg_override.
- Добавлены asw_sentry_top_machinegun_fire_rate и asw_sentry_top_cannon_fire_rate.
- Добавлен asw_sentry_top_cannon_dmg_override. Это влияет на базовый урон. Фактический урон определяется навыком взрывчатки десантника.
Моддинг / SDK
- Оружие может быть установлено как «временное», что заставляет его использовать новый слот для оружия и вынуждает его бросать, а не убирать.
- Добавлен rd_weapon_generic_object, который можно использовать для обычных переносимых объектов.
- Добавлен rd_tilegen_instance для дальнейшей рандомизации плиток tilegen.
- Добавлен trigger_asw_marine_melee для обнаружения атаки в ближнем бою, направленной на цель.
- Добавлен asw_filter_marine_class.
- Добавлен rd_boss_bar. См.
- Реорганизована функция trigger_asw_computer_area, чтобы сблизить связанные поля в Hammer.
- До 3 камер и удаленных турелей могут быть назначены на trigger_asw_computer_area. Пользовательский интерфейс компьютера по-прежнему имеет ограничение в 6 опций в меню.
- Исправлена ошибка, из-за которой trigger_asw_door_area не использовала поле Start Disabled.
- Добавлено поле в trigger_asw_button_area, которое позволяет картографам требовать удержания кнопки в течение определенного времени.
- Добавлено «Can Player Weld» в asw_door.
- Добавлен вход Extinguish для asw_alien_goo.
- В asw_director_control добавлены входные данные ResetMarineIntensity и SpawnHordeSoon.
- Добавлены выходные данные OnStartedUsing и OnStoppedUsing в asw_remote_turret.
- Добавлены выходные данные для неудачных быстрых взломов в trigger_asw_button_area и trigger_asw_computer_area.
- Поправлены скины для многих пикапов в Хаммере.
- VRAD теперь работает с автоматическим количеством потоков по умолчанию (ранее 4).
- Добавлено несколько функций VScript в CDirector и множество функций для узлов.
- Добавлена поддержка многослойных миникарт.
- Добавлена функция JumpUp VScript для asw_parasite.
- В asw_stylincam добавлено поле, позволяющее изменить спрайт лица командира.
Новые функции VScriptGlobal
- Vector GetHullMins(int hullType) — возвращает вектор для минут корпуса (hullType)
- Vector GetHullMaxs(int hullType) — возвращает вектор для максимальных значений корпуса (hullType)
директор
- void SpawnHordeSoon() - Поставить в очередь орду для скорого появления (та же логика, что и
при запуске хака) - float GetTimeToNextHorde() - Получить текущее количество секунд, пока
директор не попытается создать орду - void SetTimeToNextHorde (с плавающей запятой) - принудительно установить таймер обратного отсчета орды
на это количество секунд. - Vector FindHordePosition (bool north) — получить случайную позицию, где
может появиться орда (возвращает ноль при ошибке) - int IsSpawningHorde() — Получить количество инопланетян, оставшихся для появления в
текущей орде
Инфоузлы
- CAI_Node GetNearestNodeToPoint (CBaseEntity npc, Vector position) — возвращает ближайший к источнику узел с необязательным параметром npc.
- int GetAllNearestNodes (CBaseEntity npc, Vector position, int maxNodes, table) — заполняет переданную таблицу x узлов, ближайших к источнику, необязательным параметром npc.
- void GetAllNodes(table) - заполняет переданную таблицу всех узлов
- CAI_Link CreateLink(int srcID, int destID) — создает новую ссылку из srcID в destID и возвращает ссылку
CAI_узел
- int GetId() - Получить идентификатор узла
- Vector GetOrigin() - Получить начало узла
- Vector GetPosition(int hullType) — специфическая для корпуса позиция узла
- float GetYaw() - Получить узел Yaw
- int GetZone() - Получить зону узла
- void SetZone(int zone) - Установить зону узла
- int GetType() - Получить тип узла
- void SetType(int type) - Установить тип узла
- bool IsLocked() — возвращает true, если узел заблокирован
- void Lock (длительность с плавающей запятой) — блокирует узел на x секунд.
- void Unlock() - Разблокирует узел
- int NumLinks() - Количество ссылок для узла
- void ClearLinks() - очищает все ссылки от узла
- CAI_Link GetLink(int nodeID) — Получить ссылку на ID конечного узла
- CAI_Link GetLinkByIndex(int index) — Получить ссылку по индексу
- int GetInfo() - Получить информацию об узле
- void SetInfo(int info) - Установить информацию об узле
- void AddLink(CAI_Link newLink) — добавляет ссылку на этот узел
- void RemoveLink(CAI_Link link) — удаляет ссылку с этого узла
- void DebugDrawNode(int r, int g, int b, float duration) — рисовать узел в виде прямоугольника заданного цвета в течение x секунд
CAI_Link
- int GetSrcNodeID() - Получить идентификатор узла, который «владеет» этой ссылкой
- int GetDestNodeID() - Получить идентификатор узла на другом конце ссылки
- int GetAcceptedMoveTypes(int hullType) - Получить Capability_T движений, приемлемых для переданного типа корпуса
- int GetLinkInfo() - Получить другую информацию об этой ссылке
- float GetTimeStaleExpires() — возвращает количество времени, по истечении которого эта ссылка снова станет доступной.
- int GetDangerCount() - Возвращает количество опасных предметов рядом с этой ссылкой
- void SetLinkInfo(int info) - Устанавливает информацию об этой ссылке
- void SetTimeStaleExpires (плавающая продолжительность) — устанавливает количество времени, по истечении которого эта ссылка снова станет доступной.
- void SetDangerCount(int count) - Устанавливает, сколько опасных вещей находится рядом с этой ссылкой
- void SetAcceptedMoveTypes(int hullType, int moveType) — установить Capability_T движений, приемлемых для переданного типа корпуса
- CAI_DynamicLink GetDynamicLink() — возвращает объект info_node_link для этой ссылки или ноль, если он не существует.
CAI_DynamicLink
- bool IsLinkValid() — возвращает true, если динамическая ссылка имеет соответствующую ссылку узла
- void TurnOn() - Включает соединения узловых ссылок
- void TurnOff() - Отключает соединения узловых ссылок
- CAI_Link FindLink() — возвращает ссылку на узел или ноль, если он не найден.
- CAI_Node GetSrcNode() — возвращает узел, которому принадлежит эта ссылка.
- CAI_Node GetDestNode() — возвращает узел на другом конце ссылки.
В скрипт добавлены следующие перечисления:
- AI_NODE_ZONE_UNKNOWN
- AI_NODE_ZONE_SOLO
- AI_NODE_ZONE_UNIVERSAL
- AI_NODE_FIRST_ZONE
- биты_LINK_STALE_SUGGESTED
- биты_LINK_OFF
- биты_LINK_PRECISE_MOVEMENT
- биты_PREFER_AVOID
- биты_LINK_ASW_BASHABLE
Многослойные мини-картыВерсия AS:RD работает аналогично версии CS:GO , за исключением следующих изменений:
- Мы используем файлы vmt и vtf как обычно, а не dds.
- Раздел «по умолчанию» можно опустить, а ранее существовавшее поле «материал» используется для любого пространства, которому не назначен вертикальный раздел.
- Вместо того, чтобы «ниже» и «выше» в примере были частью имени материала, они представляют собой полное имя материала.
- Если значение высоты опущено, оно принимает наибольшее значение (положительное или отрицательное), которое может иметь координата в Hammer.
Детали реализации:
- Значения высоты соответствуют положению ног игрока.
- Существует максимум 64 «фрагмента», что может быть от 32 до 64 фактических слоев в зависимости от того, соответствует ли максимальное значение следующему минимальному.
- Это НЕ влияет на брифинг или внутриигровые карты, а только на мини-карту.