Сповіщення
Очистити все

Створення схованок


Ранг:
Майстер
Роль:
Гість
Записи:
752
Приєднався:
2 роки тому
 

Пролог

У грі часто можна запитати себе: як створити особистий ящик, схованку у вигляді труби або взагалі схованку екстравагантного зовнішнього вигляду. Ось алгоритм для ЗП. Одного разу я як конфігер вивчав у папці 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>

   
Цитата