Сповіщення
Очистити все
15.10.2023 23:36
Вступ
Система сюжетної інформації (ССІ) потрібна для забезпечення походження та запам'ятовування сюжетних подій у грі. З допомогою ССИ можна створювати порції сюжетної інформації (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 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 >