Пролог
У грі часто можна запитати себе: як створити особистий ящик, схованку у вигляді труби або взагалі схованку екстравагантного зовнішнього вигляду. Ось алгоритм для ЗП. Одного разу я як конфігер вивчав у папці misc файл devices.ltx і натрапив на такий опис:
Конфігі
[inventory_box] GroupControlSection = spawn_group - Для ЛевелЕдитора discovery_dependency = - Параметр обмеження доступу до особистої скриньки $spawn = "devices\inventory box" - Спаун-секція в ол спаун (маловажно) class = S_INVBOX - Клас об'єкта cform = skeleton visual = dynamics\equipment_cache\equipment_box_01_case.ogf - Зовнішній вигляд meshes script_binding = bind_physic_object.init - Механізм спауна
Як задається discovery_dependency я не вивчав. Тому його можна викинути, створивши ящик із вільним доступом. Тоді я за допомогою мода «Володар Зони» (як не важливо) заспаунив подібний об'єкт. З'явилося місце, там нічого немає (мета порожня), в якому з'явився напис «Оглянути (F)» і при натисканні відповідної клавіші з'являлася можливість ознайомитися з його вмістом (вікно обшуку). Я використав наступний загальний робочий опис:
[ довільна назва нашої схованки англійською ]:inventory_box visual = dynamics\devices\dev_rukzak\dev_rukzak.ogf ;У цьому випадку модель рюкзака.
story_id = стори айді
Спаун схованки та предметів у нього
Для того, щоб спаунити схованку потрібно: Створити скрипт наприклад: personal_treasure.script в папці gamedata\scripts
До нього додати:
function spawn_treasure ( ) alife ( ) : create ( "ім'я_схованки" , vector ( ) : set ( -140.25692749023 , -29.113412857056 , -368.48748779297 100 ) схованки , де "( -140.25692749023 , -29.113412857056 , -368.48748779297),114039,1029)" - є координати спауна end local spawn_item1 = { "Ім'я предмета який спаунім(якщо кілька через кому)" } --таблиця предметів для спауна local function spawn_item_to_box ( items_table , count , inv_box_story_id ) local inv_box = alife ( ) : object ( get_story_object_id ( inv_box_story_id ) ) for i = 1 , count do alife ( ) : mat ( m it . inv_box.position, inv_box.m_level_vertex_id, inv_box.m_game_vertex_id, inv_box.id ) end end function spawn_item_to_treasure ( actor, obj, p ) spawn_item_to_box ( spawn_item1, 1 , "Сторі айді схованки" ) end
Зберігаємо...
Далле потрібно додати функції спауна наприклад в діалог, докладно пояснювати не буду так як можна подивитися статтю про це. Ось рядки, які потрібно додати в діалог:
<action>personal_treasure.spawn_treasure</action> <action>personal_treasure.spawn_item_to_treasure</action>