Реакция NPC на встречу с актором
meet_manager[править]
Синтаксис:
[logic]
active = walker
[walker]
meet = meet
[meet]
meet_state = 30| state@sound| 20| state@sound| 10| state@sound
meet_state_wpn = 30| state@sound| 20| state@sound| 10| state@sound
victim = 30| nil| 20| actor
victim_wpn = 30| nil| 20| actor
sound_start = nil ; Стартовая озвучка, если видит игрока
sound_start_wpn = nil ; Стартовая озвучка, если видит игрока с оружием
sound_stop = nil ; Озвучка, когда игрок стоит на месте
use = self
use_wpn = false
zone = name| state@sound
meet_dialog = dialog_id
synpairs = state@sound|state@sound
precond = visibility/usability
abuse = true/false
trade_enable = true/false ;По умолчанию true. Можно ли торговать с NPC
allow_break = true/false ; По умолчанию false. Можно ли выйти из диалога
quest_npc = true/false ; По умолчанию false. Квестовый ли NPC
Вся настройка встречи отныне будет производится в отдельной секции. В секции logic или в текущей схеме можно будет указать, какую именно секцию с настройкой нужно использовать. Секция, которая указана в секции logic, будет влиять на обработку встречи свободногуляющим сталкером.
Перечень полей:
- meet_state, meet_state_wpn
Задает анимацию и озвучку персонажа в зависимости от расстояния до актера. Для случая, когда актер безоружен либо вооружен соответственно. - victim, victim_wpn
Задает объект, на который должен будет смотреть персонаж. Возможные параметры:- nil — никуда не смотрит;
- actor — смотрит на игрока;
- story_id — номер SID-а персонажа, на которого нужно будет смотреть.
- use, use_wpn
Настройки юзабельности персонажа. Возможны три варианта:- true — с NPC можно говорить и торговать;
- false — с NPC нельзя говорить и торговать;
- self — NPC сам юзнет игрока, как только сможет дотянуться.
- zone
Содержит набор имен рестрикторов, а также анимаций и озвучки, которую NPC будет отыгрывать, если игрок будет замечен в рестрикторе. - meet_dialog
Стартовый диалог NPC. - synpairs
Содержит набор пар состояние_тела@звуковая_тема. Если при каком-то наборе условий встреча будет отыгрывать именно это состояние и эту звуковую тему, то они будут синхронизироваться по рандомным анимациям состояния тела. - аbuse
Может ли NPC обижаться на actor-а. По умолчанию true, если false, то неюзающийся противник не будет обижаться.
Любую строку(в общей схеме они написаны строчными буквами) можно задавать кондлистом.
( {+info1 –info2} ward %+info% ) quest_npc – по умолчанию
Для облегчения настройки встречи сделана возможность упрощенного задания дефолта:
[walker]
meet = default_meet
Саму секцию [default_meet] задавать не надо. Все настройки и так возьмутся из дефолта.
Теперь о том, как с помощью этого конструктора собрать ту реакцию на актера, которая вам нужна.
(Во всех примерах зеленым цветом выделены состояния state_manager, синим – звуковые темы)
Ситуация 1
Игрок вдалеке подзывает нас рукой, при приближении просит убрать оружие, потом согласен говорить.
[meet]
meet_state = 50| hello@talk_hello| 20| wait@wait| 10| ward@wait
meet_state_wpn = 50| hello@talk_hello| 20| threat@threat_weap
victim = 50| actor
victim_wpn = 50| actor
use = true
use_wpn = false
Ситуация 2
Сталкер, завидя нас просит убрать оружие. После этого подходит и заговаривает с нами. Если мы начинаем уходить от него или достаем оружие — начинает в нас стрелять.
[meet]
meet_state = 50| {+info} threat_fire %=killactor%, walk@ {+info} talk_abuse, wait | 10 | walk %+info%; wait | 2 | threat;state ;WTF???
meet_state_wpn = 50| {+info} threat_fire %=killactor%, threat@ {+info} talk_abuse, wait
victim = 50| actor
victim_wpn = 50| actor
use = {-info2} self, false
use_wpn = false
- info – инфоропшн, который указывает что мы уже опустили оружие и были достаточно близко
к НПС
- info2 – инфопоршн, который устанавливается в диалоге и говорит что персонаж уже сказал нам все, что хотел.
- killactor - функция в xr_effects, которая обижает NPC на игрока.
Ситуация 3
Персонаж ходит по патрульному пути на заставе лагеря. Если игрок имеет допуск в лагерь — пропускает его и здоровается, иначе сперва отпугивает, а если игрок пробрался в лагерь, то обижается на него. При этом диалог зависит от того, имеет игрок допуск в лагерь или нет.
[camper]
path_walk = path_walk
path_look = path_look
meet = meet
[meet]
meet_state = 30| {+info} wait, threat@ {+info} talk_hello, threat_back
meet_state_wpn = 30| {+info} wait, threat@ {+info} talk_hello, threat_back
victim = 30| actor
victim_wpn = 30| actor
use = true
use_wpn = true
zone = warnzone| {-info} threat@ {-info} threat_back|kampzone| {-info} true@ {-info} talk_abuse
meet_dialog = {+info} dialog1, dialog2
- true – вместо анимации, атаковать игрока.
- info – Инфопоршн, который говорит что мы имеем допуск к лагерю
- warnzone – рестриктор, в котором нас предупреждают
- kampzone – рестриктор, в котором нас убивают
- dialog1 – стартовый диалог НПС, если мы имеем допуск в лагерь
- dialog2 – стартовый диалог НПС, если мы не имеем допуск в лагерь.
По умолчанию встреча настроена со следующими параметрами:
meet_state = 30|hello@hail|20|wait@wait
meet_state_wpn = 30|backoff@threat_weap
victim = 30|actor
victim_wpn = 30|actor
use = true
use_wpn = false
syndata = hello@hail|backoff@threat_weap
Заметка
Если нужно, чтобы сталкер не разговаривал с игроком в данной секции, необходимо прописать ему:
|