Схема mob_combat, mob_death
Настройка логики (часть 2)
Секция dont_spawn_character_supplies
Если прописать эту секцию в кастом дату персонажу, то у него внутри не заспавниться стандартный набор барахла, прописанный в профиле.
[dont_spawn_character_supplies]
Секция no_smart
Если прописана эта секция, то npc не берется под смарттеррейн даже если он походит по всем параметрам. [no_smart]
Секция treshhold
Есть возможность изменять у сталкеров параметры, по которым они атакуют монстров. Этих параметра два:
max_ignore_monster_distance (в данный момент дефолт 15 метров). Сталкер будет всегда атаковать монстров, которые находятся внутри данного радиуса. ignore_monstre_threshold (в данный момент дефолт 0). Параметр от 0 до 1. Если функция оценки монстра ниже, чем этот параметр, и монстр находится за пределами вышеуказанного радиуса - он будет атакован. В данный момент все настроено так, что сталкеры вообще не атакуют монстров находящихся дальше чем 15 метров от них.В секции логики либо в текущей схеме указываете:
threshold = threshold@tratata
[threshold@tratata] max_ignore_distance = <number> ignore_monster = <number>
Второй параметр следует менять ОЧЕНЬ осторожно.
Использование danger
Настройка может задаваться только в какой-то схеме, например:
[walker] danger = danger_condition
[danger_condition] ignore_distance = 50 (расстояние указывается в метрах) ignore_ distance_grenade = ignore_ distance_corpse = ignore_ distance_hit = ignore_ distance_sound =
Можно также указывать время ожидания для денжера в зависимости от типа:
danger_inertion_time_grenade = danger_inertion_time_corpse = danger_inertion_time_hit = danger_inertion_time_sound =
Дефолтовые настройки: danger_inertion_time_grenade = 20000 danger_inertion_time_corpse = 10000 danger_inertion_time_hit = 60000 danger_inertion_time_sound = 15000
NB!!Также эти настройки теперь распространяются и на схему кемпера. То есть в настройках кемпера перестало работать поле danger_radius. Теперь данные берутся из секции денжера согласно общих правил.
Алгоритм работы такой: Сперва проверяется, что расстояние до опасности не отсекается по ignore_danger. Если опасность ближе, то тогда анализируется ее тип, и проверяется по соотвествующему данному типу расстоянию. Если опасность ближе - тогда разрешается реакция на нее.
В данный момент установлены следующие дефолты: ignore_distance = 50 ignore_distance_grenade = 15 ignore_distance_corpse = 10 ignore_distance_hit = 50 ignore_distance_sound = 50
NB: если надо, чтобы в разных случаях сталкер игнорировал разные типы данжеров, создается несколько секций данжера danger_condition@1, danger_condition@2 и так далее.
- danger_expiration_time = Через сколько времени денжер перестанет быть акутальным. Дефолт 5000 мс.
- danger_inertion_time = Через сколько времени персонаж забудет про денжер, на который он отреагировал. Дефолт 10000 мс.
Байки из склепа (Истории у костра)
Из нового: теперь лагеря автоматически рассказывать истории не будут. Для этого вы должны того или иного сталкера "научить" истории. Делается это так: в кастом дате пишется секция:
[game_info]
stories = "story_01, legend_01"
В кавычках список историй и легенд через запятую. Пока что существуют следующие истории и легенды:
story_01 - Граница зоны и граната за 1 действие.
story_02 - Про трамплин и про камешки.
story_03 - Про то как группа Вильнова вернулась.
story_04 - Про то как Костя Федорин наткнулся на артефакт и пропал на радаре.
story_05 - Про то как духманам с контролером стражаться.
story_06 - Про дверцу, водку и избушку.
legend_01 - Про эксперимент в Зоне, который производят инопланетяне.
legend_02 - Об особо засекреченных лабораториях в зоне.
legend_03 - Легенда о проводнике.
legend_04 - Легенда о темном сталкере.
legend_05 - Легенда о том что глубоко в Зоне спать нельзя.
О, том какие истории и легенды в каком лагере на каком уровня можно и нельзя юзать, узнавать о Профа.
Dont_spawn_loot
Всякого рода сюжетные персонажи которые должны быть пустыми после смерти (например раненные или пленные) оказываются не пустыми. Чтобы это исправить необходимо в кастом дате персонажа прописать секцию [dont_spawn_loot]
Оверрайды
Настройки, которые меняют поведение общих схем, в зависимости от активной в данный момент обычной схемы (все они необязательны):
- meet_enabled = true (запускает схему встречи).
- meet_talk_enabled = true (в действующую схему поведения добавляет возможность диалога).
- meet_dialog = <название диалога>, который будет запущен при юзе.
- meet_state = <название состояния> он определяет, в каком состоянии будет находиться персонаж, если открылось диалоговое окно общения и торговли.
- wounded_enabled = true (включает NPC возможность использовать схему раненого).
- combat_ignore_cond = см. выше.
- combat_ignore_keep_when_attacked = true (игрок продолжает игнорировать бой, даже если в него стреляют – только в случае стрельбы со стороны игрока!)
- combat_type = {условие} scheme - тип боя, которым будет пользоваться NPC из данной схемы.
- on_combat = см. выше.
- companion_enabled = true (cвободноходящие сталкеры могут наниматься как компаньоны (в будущем они будут брать за это деньги)).
Схемы для монстров
Схема mob_walker.
Работает аналогично схеме обычного walker. Но есть некоторые отличия
Флаги пути движения s=звуковая_схема (idle, eat, attack, attack_hit, take_damage, die, threaten, steal, panic, growling) с - идти дальше в присяде r - дальше бежать sig=signal_name - установить заданный сигнал для xr_logic Флаги пути обзора: t=время_мсек - время в миллисекундах, которое нужно ждать, смотря в точку a=anim_set - анимация (stand_idle, sit_idle, lie_idle, eat, sleep, rest, attack, look_around, turn) В customdata персонажа задайте (* отмечены обязательные поля): [walker] path_walk = путь перемещения path_look = путь обзора
- no_reset = true/false - не сбрасывать action предыдущей схемы (если нужно сохранить, например, звук). По умолчанию false.
- actor_friendly = true/false - монстр никогда первым не нападает на игрока, но если игрок хоть раз атакует монстра - этот режим навсегда отключится. По умолчанию false.
- npc_friendly = true/false - монстр никогда первым не нападет на другого монстра (даже враждебного).
- friendly = true/false - монстр не нападает ни на игрока, ни на монстров. В случае агрессии с их стороны, не запоминает их как врагов и остается дружественным ко всем. По умолчанию false.
Файл: \gamedata\scripts\mob_walker.script
У кровосососов можно управлять невидимостью: [mob_walker]
... state = vis или state = invis Задает значение по умолчанию. Также в флагах walk пути mob_walker-а можно использовать флажок b (behaviour) с теми же параметрами: wp00|b=vis wp00|b=invisСхема mob_eluder
Монстр перемещается по точкам патрульного пути (не учитывая связи между точками), держась на расстоянии от игрока, при этом придерживаясь своего пути, выходя из под схемы при слишком близком приближении к игроку, и возвращаясь обратно, когда расстояние увеличиться.
- path = ... - работает как обычно path_walk. Набор точек патрульного пути.
- Time_capture = ... (время в секундах) время, которое монстр находится под этой схемой. Default – 10.
- Time_release = ... (время в секундах) время, которое монстр находится под универсальной схемой. Default – 10.
- Min_dist = ... (расстояние в метрах, если расстояние до врага меньше этого, то он переходит под универсальную схему). Default – 5.
- Max_dist = ... (расстояние в метрах, если расстояние до врага больше этого, то он переходит под eluder). Default - 10.
Замечание – работает нестабильно. Файл: \gamedata\scripts\mob_eluder.script
Схема mob_remark
Ремарковая схема, только не для сталкеров, а для монстров.
- state = специфическое состояние данного конкретного монстра (для кровососов - невидимость)
- dialog_cond = {+info, =func, -info, !func} условия для открытия окна диалога
- anim = анимации монстра, перечисляются через запятую.
- anim.head = анимации головы монстра, через запятую перечисляются
- tip = какой значок подсветится, при наведении на него курсора
- snd = какой звук издает
- time = время проигрывания анимаций, используется только для отладки.
Файл \gamedata\scripts\mob_remark.script На этой схеме сделан торговец.
Схема mob_combat, mob_death
Работают точно также как и у сталкеров соответствующие схемы. Файлы: \gamedata\scripts\mob_combat.script, \gamedata\scripts\mob_death.script