Система сюжетной информации (InfoPortions) — S.T.A.L.K.E.R. Inside Wiki

Система сюжетной информации (InfoPortions)

Материал из S.T.A.L.K.E.R. Inside Wiki

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

Введение

Система сюжетной информации (ССИ) нужна для обеспечения происхождения и запоминания сюжетных событий в игре. При помощи ССИ можно создавать порции сюжетной информации (info portions).

При помощи скриптовых функций можно давать или забирать информацию у объектов Inventory Owner в игре.


Функции скриптового game_object

  • give_info_portion(info_id) - получить информацию по идентификатору(строковому).
  • give_info_portion_via_pda(info_id, who) - получить информацию по идентификатору от указанного объекта.
  • disable_info_portion(info_id) - убрать информацию.
  • has_info(info_id) - есть ли информация.
  • dont_has_info(info_id) - отсутствует ли информация.

Каждая из таких порций имеет уникальный текстовый id и является просто флажком в реестре, который автоматически загружается и сохраняется.

К возможностям info portion относится:

  • запуск функции по отношению к персонажу при получении info_portion (action);
  • добавления локаций на карту (location);
  • возможность инициирования диалогов актером (dialog);
  • возможность инициирования диалогов у актера (при разговоре с персонажем, который имеет info_portion) (actor_dialog);
  • добавления статей в энциклопедию (article);
  • добавление заданий и в меню заданий (task);
  • удаление из реестра уже известных info_portions (disable).


Структура Info Portion в XML-файле

 
<info_portion id="actor_start">
 
      <!-- скриптовые функции, которые будут вызваны при получении info_portion персонажем, аргументом скриптовый объект персонажа -->
      <action>info_test1.test_task1</action>
      <action>...</action>
 
      <!-- локации, которые будут показаны на карте -->
      <location >
            <level>0</level>
            <x>-250</x>
            <y>-127</y>
            <icon name="Dealer" x="2" y="2" width="1" height="1"></icon>
            <text>Bring artefacts to the Dealer</text> 
      </location>
      <location >.....</location>
 
      <!-- список диалогов, который может инициировать Info Portion непосредственно у актера-->
      <dialog>trader_job</dialog>
      <dialog>trader_talk_about</dialog>
      <dialog>stalker_talk_about</dialog>
 
      <!-- список диалогов, который может инициировать персонаж с Info Portion у актера-->
      <actor_dialog>trader_job</actor_dialog>
      <actor_dialog>trader_job</actor_dialog>
 
      <!-- список id, деактивируемых info_portions у персонажа при получении данной-->
      <disable>actor_start01</disable>
      <disable>actor_start02</disable>
 
      <!-- список id статей в энциклопедии, которые будут добавлены -->
      <article>boar</article>
      <article>flesh</article>
 
      <!-- задание -->
      <task>
 
            <!-- первое задание в списке является основным и выделяется большим шрифтом -->
            <objective>
                  <text>test task primary</text>
 
                  <!--
                        Скриптовая функция, возвращает текущее состояние задания,используя константы
                        task.completed - задание (цель выполнена) task.in_progress - в стадии выполнения task.fail - провалено 
                  -->
                        <script_condition>info_test1.test_task1</script_condition> 
            </objective>
 
            <!-- остальные задания - второстепенные -->
            <objective>
                  <text>test task secondary 01</text>
                  <script_condition>info_test1.test_task2</script_condition> 
            </objective>
 
            <objective>
                  <text>test task secondary 01</text>
                  <script_condition>info_test1.test_task3</script_condition> 
            </objective> 
 
      </task> 
 
</info_portion>
 


Источник

GSC GW X-Wiki

Другие места
LANGUAGE