Как сделать зомби режим пока не пропал?
Разместить некоторые объекты:
-
zombie_spawn_mode - Включает режим и поведение ИИ, где он ищет и бежит к целям. Кроме этого содержит пару настроек режима и волн. Свойства:
- entity_spawner__waves = Количество волн и их наполнение.
- entity_spawner__winOnWave = Финальная волна.
- entity_spawner__nextWavePeriod = Время перерыва между волнами.
- entity_spawner__maxWaveTimeAfterLastSpawned = Время до следующей волне, если игроки не завершили волну, а все противники уже появились на поле боя.
- entity_spawner__genericWavesRepeat = Вероятно отвечает за повторение волн. Добавление врагов к текущей волне.
- entity_spawner__nextWavePoints = Награда за выживание волны. В виде Х количества очков всем игрокам.
- entity_spawner__aliveZombiesLimit = Максимальный лимит противников. Лучше сильно не редактировать.
-
zombie_spawn_zone = Точка появления для зомби.
-
zombie_tank_spawn_zone = Точка появления для танка. Стоит разместить так же…
- custom_ai_tank_objective_position = Точка назначения для техники.
- zombie_tank_spawn_zone__objectiveId = Настройки для техники. Шансы куда она поедет и т.п…
- Cвойства:
- zombie_tank_spawn_zone__objectiveId = Создает связь между zombie_tank_spawn_zone и zombie_tank_spawn_zone__objectiveId.
- ai_tank_objective__positionId = Тоже самое. Но связь с точкой назначения.
-
Разместить боевую зону. По умолчанию 3ая команда - это команда мотивированных.
В объекте уровня (level, его можно найти используя Find Entity) обязательно стоит добавить tank в свойстве level__loadExtraNavMeshes. Иначе может быть сбой в игре после появления техники на карте.
В текущий момент… Если я не ошибаюсь… Редактор не может создавать/переделывать navMesh для техники (тем не менее переделывать navMesh для пехоты рекомендуется, если карта была немного изменена). Как можно узнать есть ли на карте navMesh для техники и где он? Для этого включаем navMesh в toolbox, а затем пишем консольную команду app.debug_navmesh_index 1 (консоль открывается при нажатии на ё или ~ клавишу). Если поставить 0 вместо 1, то он будет показывать navMesh для бойцов.
Менее важное, но часть режима:
Ящик с случайными предметами можно создать разместив random_weapon_box. Cвойства:
- paid_loot__cost = Стоимость открытия ящика.
- paid_loot__weapTemplates = Список возможных предметов в ящике.
- paid_loot__weapRandomizeWeight и paid_loot__weapChanceRange = Шанс выпадения того или иного предмета.
- animchar__res = Внешний вид ящика. Можно поменять его, взяв у другого предмета.
- Примечание: Желательно использовать оружие с zombie в названии. Иначе оно будет без патрон.
Ящик с патронами - это base_fortification_build c (их нужно заранее прописать) +tutorial_ammunition_box_a+paid_ammo_box_ressuply+undestroyable_ri_extra постфиксами. Постфиксы пишем над кнопкой Close. Там будет поле Template Postfix.
Они расширяют возможности. Cвойства:
- useful_box__maxUseCount = Количество возможных использовании ящика перед опустошением.
- paid_loot__ressuplyDefCost = Количество очков за патроны (работает если у оружия не задана стоимость патрон).
- builder_info__team и team = Команда, которая может использовать ящик.
Ящик с аптечками - это tutorial_placed_medic_box_item с +placeable_item_in_world+base_ri_building+paid_medkit_box_use+undestroyable_ri_extra. Свойства:
- ri_extra__name = Внешний вид ящика с аптечками. Изначально будут мешки с песком. Обычный внешний вид ящика - это dummy_wooden_box_a.
- useful_box__maxUseCount = Количество возможных использовании ящика перед опустошением.
- paid_box__ressuplyCost и useful_box__uiPrice = Стоимость.
- medic_box__isOpen желательно должен быть включен.
- builder_info__team, placeable_item__ownerTeam и team = Команда, которая может использовать.
Покупаемый предмет - это тот же предмет оружия, но с +paid_loot_item+gun_with_initial_ammo постфиксами. Свойства:
- gun__initialAmmoHoldersCount = Количество магазинов после покупки.
- paid_loot__cost = Стоимость.
Ценность патрон для оружия указаны только у оружия с zombie в названии (например thompson_m1928a1_50_drum_gold_zombie). Иначе будет в зависимости от ящика (по умолчанию - это 5). Так же их количество тоже там указано. Если в планах использовать оружие только с zombie в названии, то постфикс +gun_with_initial_ammo не нужно добавлять. Если есть сильное желание настроить стоимость для оружия, которого не было в режиме, то для этого используется entities.blk (шестой раздел в неофициальном гайде). Приблизительно так выглядит код измененного одного золотого оружия (thompson_m1928a1_50_drum_gold):
thompson_m1928a1_50_drum_gold_zombie_gun{
_use:t="thompson_m1928a1_50_drum_gold_gun"
_use:t="paid_loot_ressuply"
item__template:t="thompson_m1928a1_50_drum_gold_zombie_gun_item"
item__weapTemplate:t="thompson_m1928a1_50_drum_gold_zombie_gun"
paid_loot__ressuplyCost:i=130
}
thompson_m1928a1_50_drum_gold_zombie_gun_item{
_use:t="thompson_m1928a1_50_drum_gold_zombie_gun"
_use:t="gun_with_initial_ammo"
collres__res:t="thompson_m1928a1_50_drum_collision"
_group{
_tags:t="server"
"gun__initialAmmoHoldersCount:list<i>"{
item:i=4
}
}
}
Cвойство paid_loot__ressuplyCost отвечает за стоимость патрон, а gun__initialAmmoHoldersCount за количество получаемых магазинов от ящика с патронами.
Про гайд о entities.blk: Если что вместо _extends уже используется _use.
Внешний вид:
-
Для добавления звука/музыки во время волн нужно разместить battle_music_with_spawn_waves объект и изменить свойства:
- Внутри battle_music__intro прописать events/z/music/z_battle_start
- battle_music__waveStartPath - events/z/music/z_wave_new
- battle_music__waveEndPath - events/z/music/z_wave_end
-
Для того, чтобы поменять погоду на ту, что используется в режиме… Нужно отключить любой шанс на генерацию погоды. Это можно сделать в объекте level. Просто в свойстве level__weatherChoice ставим 0.0 рядом с названием объектов (иногда нужно их открыть и внутри настроить свойство weight). После чего можем размесить любую свою погоду или из режима (weather_zombie_night_a).
-
Для того, чтобы поменять время на уровне нужно изменить в объекте level свойство level__timeVec (если что оно содержит только real). Иногда он может быть прописан внутри погоды, внутри level__weatherChoice.
-
Возможно стоит удалить все postfx_color_grading_tonemap объекты на карте и размесить из режима (postfx_color_grading_tonemap_zombie_night_enlisted). Немного меняет цвета.
-
Rendinst объекты режима:
- Доска с оружием - это RI firefight_post_a_board_a
- Текст GUNS * SHOP - это объект poster_guns_c
- Иконка оружия - это объекты guns_decal_a. Вместо a может быть b, c, d, e и f.
Во время создания комнаты/поста на портале Sandbox:
Советуется не ставить большое количество игроков (не более 10-16 для бойцов-одиночек или 4-8 для отрядов). Сервер может не выдержать.
Кроме этого могут быть проблемы с второй командой. В теории можно сделать отдельную зону для них, подальше от первой. А количество врагов в волнах увеличить.
Ещё можно зомби поменять id команды на 2 и игроки второй команды будут дружественны для зомби, они будут умирать и спаунится на своих респах.Если периодеть в скин зомби и выдать какую-нибудь винтовку, то будут продвинутые игроки - зомби .
Можно и так. Хотя я не уверен насчет “будут дружественны”. Ибо игроки/боты второй команды по прежнему будут целью для ИИ-зомби, а если не убрать тэг включающий огонь по своим, то зомби без оружия и убить могут союзника.
Или у тебя как-то получилось сделать так, чтобы зомби не бегали за игроками/ботами или хотя бы не пытались атаковать их?
Я через entities.blk поменял всем зомби команду и еще сделал это в самом режиме. В самом моем моде думаю использовать вторую команду как командиров или навигаторов для ИИ.
Есть такое. Можно сделать что-то в духе некоторых миссии COD, где надо защищаться в течение Х времени от кучи ботов.
Надо как-то получше этим заняться, но да у меня зомби не трогали ось, а бегали только за союзниками.