Создание тайников — различия между версиями
Материал из S.T.A.L.K.E.R. Inside Wiki
ToNiSe (обсуждение | вклад) (Новая страница: «Вы игре часто можно задаться вопросом как создать, личный ящик, тайник в виде трубы или воо...») |
|||
| (не показаны 14 промежуточные версии 5 участников) | |||
| Строка 1: | Строка 1: | ||
| − | + | ==Пролог== | |
| + | В игре часто можно задаться вопросом: как создать личный ящик, тайник в виде трубы или вообще тайник экстравагантного внешнего вида. Вот алгоритм для ЗП. Однажды я как конфигер изучал в папке misc файл devices.ltx и наткнулся на следующее описание: | ||
| + | |||
| + | ==Конфиги== | ||
[inventory_box] | [inventory_box] | ||
| − | GroupControlSection = spawn_group | + | GroupControlSection = spawn_group - ''Для ЛевелЭдитора'' |
| − | discovery_dependency = | + | discovery_dependency = - ''Параметр ограничения доступа к личному ящику'' |
| − | $spawn = "devices\inventory box" | + | $spawn = "devices\inventory box" - ''Спаун-секция в ол спаун (маловажно)'' |
| − | class = S_INVBOX | + | class = S_INVBOX - ''Класс объекта'' |
| − | cform = skeleton | + | cform = skeleton |
| − | visual = dynamics\equipment_cache\equipment_box_01_case.ogf | + | visual = dynamics\equipment_cache\equipment_box_01_case.ogf - ''Внешний вид из meshes'' |
| − | script_binding = bind_physic_object.init | + | 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 | ||
| + | |||
| + | В него добавить: | ||
| + | <lua> | ||
| + | function spawn_treasure() | ||
| + | alife():create("имя_тайника",vector():set(-140.25692749023,-29.113412857056,-368.48748779297),114039,1029) -- Функция спауна самого тайника, где "(-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():create(items_table[math.random(#items_table)], | ||
| + | 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 | ||
| + | </lua> | ||
| + | Сохраняем... | ||
| + | |||
| + | Далле нужно добавить функции спауна например в диалог, подробно обьяснять небуду так как можно посмотреть статью об этом. Вот строки которые нужно добавить в диалог: | ||
| + | <action>personal_treasure.spawn_treasure</action> | ||
| + | <action>personal_treasure.spawn_item_to_treasure</action> | ||
| + | Все... | ||
| + | |||
| + | == На остаток == | ||
| + | Так реально можно заспаунить тайник, но у него есть два минуса: | ||
| + | <br />''1. Нет значка на карте(Можно исправить(полазте по этому сайте полюбом найдете как))'' | ||
| + | <br />''2. Незащитывается в "Найденые тайники" в ПДА(Тоже можно исправить)'' | ||
| + | |||
| + | Использую разные меши я создал рабочии тайники с внешним видом трупа пседогиганта, балона, бочки, бидона, холодильника, газовой плиты и даже БТР и вертолёта. Прописать описание нового тайника лучше всего в extracontent.ltx создан для добавления новых объектов. | ||
| + | <br />Переработал: Mesnik | ||
| + | Функция спауна предметов в тайник Пысовская. Переименовал для удобства | ||
| + | Тутор сделал на основе инфы с моего мода. | ||
| + | |||
| + | [[Category:Конфигурационные файлы]] | ||
Текущая версия на 00:17, 5 января 2017
Пролог
В игре часто можно задаться вопросом: как создать личный ящик, тайник в виде трубы или вообще тайник экстравагантного внешнего вида. Вот алгоритм для ЗП. Однажды я как конфигер изучал в папке 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),114039,1029) -- Функция спауна самого тайника, где "(-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():create(items_table[math.random(#items_table)], 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>
Все...
На остаток
Так реально можно заспаунить тайник, но у него есть два минуса:
1. Нет значка на карте(Можно исправить(полазте по этому сайте полюбом найдете как))
2. Незащитывается в "Найденые тайники" в ПДА(Тоже можно исправить)
Использую разные меши я создал рабочии тайники с внешним видом трупа пседогиганта, балона, бочки, бидона, холодильника, газовой плиты и даже БТР и вертолёта. Прописать описание нового тайника лучше всего в extracontent.ltx создан для добавления новых объектов.
Переработал: Mesnik
Функция спауна предметов в тайник Пысовская. Переименовал для удобства
Тутор сделал на основе инфы с моего мода.