Реакция NPC на встречу с актором

Материал из xrWiki
Перейти к: навигация, поиск

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
Заметка

Если нужно, чтобы сталкер не разговаривал с игроком в данной секции, необходимо прописать ему:

  • meet = no_meet