Мегаобучалка Главная | О нас | Обратная связь


Схема wounded (раненый)



2015-12-07 415 Обсуждений (0)
Схема wounded (раненый) 0.00 из 5.00 0 оценок




[logic]wounded = wounded [walker]wounded = wounded [wounded]hp_state = HP|condstate@condsound|HP|condstate@condsoundhp_state_see = HP|condstate@condsound|HP|condstate@condsoundpsy_state = PSY|condstate@condsound|PSY|condstate@condsoundhp_victim = HP|condvictim|HP|condvictimhp_cover = HP|condbool|HP|condboolhp_fight = HP|condbool|HP|condboolsyndata = state@sound|state@soundhelp_dialog = story_id help_start_dialog = story_id

Где:

  • condstate – кондлист, возвращающий состояние персонажа, либо true. Если он возвращает true – нпс обидится на игрока
  • condsound – кондлист, возвращающий саунд тему.
  • HP – пороговые значение здоровья персонажа
  • PSY – пороговые значения пси здоровья персонажа
  • condvictim – кондлист, возвращающий направление куда смотреть. Возможные значения: nil, actor, number. В случае числа – будет смотреть на персонажа с указанными стори айди.
  • condbool – кондлист, возвращаюзий true либо false.

Значения полей:

  • hp_state – поведение персонажа когда он не видит игрока
  • hp_state_see – поведение персонажа, когда он видит игрока
  • psy_state – поведение персонажа при псиатаках
  • hp_victim – куда смотреть, в зависимости от ХП
  • hp_cover – идти в укрытие или нет, в зависимости от ХП
  • hp_fight – разрешено воевать или нет, в зависимости от ХП
  • syndata – синхропары для красоты.
  • help_dialog – story_id диалога вместо дефолтного actor_help_wounded. Если вам по сюжету необходимо заменить диалог другим, то вы в этом поле прописываете id другого диалога.

Также мы вставляем стартовый диалог раненого. Если мы его прописываем, то все актёрские диалоги для раненых должны иметь такой precondition: dialogs.allow_wounded_dialog.

Пример. В качестве примера взята дефолтная настройка.

hp_state = 30|help_me@help|10|wounded_heavy@help_heavyhp_state_see = 30|wounded@help_see|10|wounded_heavy@help_heavypsy_state = 50|{=best_pistol}psy_armed,psy_pain@wounded_psy|20|{=best_pistol}psy_shoot,psy_pain@{=best_pistol}wounded_psy_shoot,wounded_psyhp_victim = 30|actor|10|nilhp_cover = 30|true|10|falsehp_fight = 30|true|10|falsesyndata = wounded@help

Где:

  • best_pistol – проверка на то, что лучшее оружие НПС является пистолетом.


Файл: \gamedata\scripts\xr_wounded.script

Схема rest

Чувак гуляет, хавает, спит. Пока нормально не работает.

Файл: \gamedata\scripts\xr_rest.script

Схема heli_hunter

Может стрелять, либо не стрелять по вертолету в зависимости от условий. Делается это так:

[camper@bar_freedom_attack_sniper_1] path_walk = camper_1_walkpath_look = camper_1_lookon_info = {+bar_freedom_attack_ecolog} camper1@bar_freedom_attack_sniper_1 %=bar_freedom_angry_actor%meet_talk_enabled = truemeet_dialog = bar_svoboda_dialogheli_hunter = {-bar_ecolog_crush_heli_down} true, false

Если раньше оверрайд хелихантера понимал только значения true либо false, то сейчас он понимает кондлист, который если возвращает true - то стрельба по вертолету в данной схеме разрешена.

Patrol

Итак, есть предварительная система патруля. Представляет собой вариацию kamp только в состоянии ходьбы. Для ее работы прописываем в кустовой дате следующее:

[patrol] path_walk = path_walkpath_look = path_lookformation = backcommander = truemove_type = ...
  • formation - описывет способ построения и не является обязательным. Возможны следующие варианты:
    • back - мужики идут чуть позади командира в два ряда (по умолчанию)
    • line - шеренга
    • around - вокруг командира
  • commander = true - типа назначат командиром, желательно, чтобы такой красивый он был один.
  • move_type = ... - задает изначальный режим перемещения, по умолчанию patrol. Вообще, значение этого поля есть название ходячей анимации из state_mgr_lib.

При остановке командора в meet мужики останавливаются.

Если командор помирает, то автоматически будет выбран другой. Командиром становится тот, кто первый попал под схему. Способы построения задаются в вейпоинтах следующим образом:

ret=0...2

  • 0 - линия
  • 1 – вокруг старшего
  • 2 – по бокам

При движении командор работает как обычный walker и сопровождающие его кадры повторяют его действия. То есть, если в параметрах вейпоинта прописано a = assault, то командор помчится с орудием убийства на перевес, а остальные его откопируют.

Что еще не сделано или глючит:

  • нет возможности автоматически перестроить команду (нужно от Шурика то, что записано в todo листе)
  • все идут молча (когда будет манагер баек, то сделаем)
  • командор пока не отдает команд (нет озвучки)
  • не рекомендуется включать спринт (глючит)

Секции.

Секция combat

Показывает, что происходит, когда NPC срывается в бой.

on_combat = combat

[combat]

  • on_info = %+info -info =func% - эффекты, которые вызываются на каждом раунде боя.

Для задания различных типов скриптовых боёв для различных ситуаций используется параметр combat_type.

В следующем примере сталкер сражается:

  • по-кемперски, если враг = актёр и он дальше Х метров
  • по-монолитовски, если любой враг дальше Y метров
  • иначе - движковый бой
[logic]active = walkeron_combat = combat [walker]path_walk = ... [combat]combat_type = {=fighting_actor =fighting_ge_X_meters} camper, {=fighting_ge_Y_meters} monolith

Пример такой функции: нам надо чтобы на расстоянии свыше 20 метров NPC переходил бы в кемперский комбат.

function fighting_dist_ge_20(actor, npc) return db.storage[npc:id()].enemy:position():distance_to ( npc:position() ) >= 400 end

Примечание – мы пишем квадрат нужного нам расстояния, для экономии системных ресурсов.

Ещё один пример. Сталкер ходит под симуляцией, но у него бой не движковый, а всегда зомбированый:

[logic]active = nilon_combat = combat [combat]combat_type = zombied

Если в разных секциях для персонажа требуются разные типы боя или разные условия, то можно воспользоваться оверрайдом combat_type. Помните: оверрайд всегда будет перекрывать настройку в секции combat. Т.е., если у вас логика на 5 секций и в четырёх нужен кемперский комбат, а в пятой монолитовский, то можно задать так:

[logic]active = walker1on_combat = combat [walker1]...[walker2]...[walker3]...[walker4]...[walker5]...combat_type = monolith [combat]combat_type = camper
  • scheme - задает тип боя (monolith, camper, zombied), иначе - универсальный бой)
  • disable_combat_handler – функция отключающая секцию combat.


Файл: \gamedata\scripts\xr_combat.script

Секция death

Схема показывает, что происходит при смерти NPC.

on_death = death

[death]on_info = %+info -info =func%


Файл: \gamedata\scripts\xr_death.script

Cекция hit

Схема показывает, что происходит при нанесении повреждения NPC.

Причем on_hit не срабатывает на звук выстрела, только на попадание по сталкеру! Это сделано, потому что выстрел в воздух в общем случае не должен восприниматься как агрессия (игрок отстреливает, скажем, собак, а на него срывается охрана).

on_hit = hit

[hit]on_info = %+info -info =func%


Файл: \gamedata\scripts\xr_hit.script

Секция actor_dialogs

Показывает, какие диалоги будут доступны или недоступны игроку при разговоре с этим NPC. Пишется практически в любой схеме.

actor_dialogs = actor_dialogs

[actor_dialogs]

  • id = ... - доступные диалоги через запятую.
  • disable = ... - запрещенные диалоги, тоже через запятую.


Файл: \gamedata\scripts\xr_meet.script

Секция use

Схема показывает, что произойдет, если игрок юзнет NPC.

on_use = use

[use]on_info = %+info -info =func%


Файл: \gamedata\scripts\xr_use.script

Секция combat_ignore

Если NPC в этой схеме то он не переходит в боевой режим. В любой другой схеме:

[walker]

  • combat_ignore_cond = {+info –info =func !func} – условия для игнорирования боя (если написать always, то в данной схеме игрок будет игнорировать бой всегда, пока не перейдет в схему, где бой не игнорируется).

В схеме нет дополнительных полей.

[walker]combat_ignore = combat_ignore [combat_ignore]

Функции, используемые для работы с кондлистом комбат игнора:

  • fighting_dist_ge_20 - текущий враг на расстоянии больше или равном 20 м.
  • fighting_dist_ge (х) – (х - расстояние в метрах)универсальная функция для combat_ignore, проверка расстояния для игрока.
  • fighting_actor - текущий враг - актёр?
  • check_fighting - проверка (по story_id) того, что нашим врагом есть хотя бы кото-то один из списка.


Файл: \gamedata\scripts\xr_combat_ignore.script

Авторы

Статья создана:

  • GSC Game World


2015-12-07 415 Обсуждений (0)
Схема wounded (раненый) 0.00 из 5.00 0 оценок









Обсуждение в статье: Схема wounded (раненый)

Обсуждений еще не было, будьте первым... ↓↓↓

Отправить сообщение

Популярное:
Как распознать напряжение: Говоря о мышечном напряжении, мы в первую очередь имеем в виду мускулы, прикрепленные к костям ...
Организация как механизм и форма жизни коллектива: Организация не сможет достичь поставленных целей без соответствующей внутренней...



©2015-2024 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (415)

Почему 1285321 студент выбрали МегаОбучалку...

Система поиска информации

Мобильная версия сайта

Удобная навигация

Нет шокирующей рекламы



(0.006 сек.)