В этой статье мы создадим новый тайник, который будет выпадать с трупов определенной локации, либо через рестриктор.
Работа в SDK
Заходим в SDK 0.6 и заходим в Spawn Element --> devices --> inventory_box и ставим в нужном нам месте inventory_box и жмем Enter
В окне даем свое название, у меня это bar_treasure_1 и убираем галочку в параметре Used AI locations.и по необходимости выбираем визуал. должно быть примерно так:
Можно компилировать спавн.
Работа в конфигах
Откроем gamedata\configs\misc\treasure_ваша_локация
и в [list_treasure_название_локаци] добавим наш схрон bar_treasure_1 в итоге должно быть
[list_treasure_название_локаци]
имя_сокровища
у меня получилось
[list_treasure_bar]
bar_treasure_1
И уже ниже добавим
[bar_treasure_1] ;рюкзак
target = bar_treasure_1
name = st_bar_nichka_0001
description = st_bar_nichka_0001_descr
items = conserva, 2, antirad, 1, wpn_mp5, 1
condlist = {=actor_on_level(l05_bar)} true, false
Давайте разберем нашу конструкцию
[bar_treasure_1] ;рюкзак --название секции
target = bar_treasure_1 --название inventory box`a (которому мы давали название в сдк)
name = st_bar_nichka_0001 --название схрона
description = st_bar_nichka_0001_descr -- описание схрона
items = conserva, 2, antirad, 1, wpn_mp5, 1 --предметы которые будут в нашем схроне писать: item, n где item название, а n число
condlist = {=actor_on_level(l05_bar)} true, false -- условие для получения информации о схроне,
в нашем случае это в любом трупе на локации l05_bar, чтобы информацию можно было получить и от нескольки уровней пишем
=actor_on_level(garbage:military)} или =actor_on_level(red_forest:military:limansk)}
Русифицируем текст
Откроем gamedata\configs\text\rus\st_treasures.xml и запишем текст
<string id="st_bar_nichka_0001">
<text>Рюкзак в трубе</text>
</string>
<string id="st_bar_nichka_0001_descr">
<text>Оставил рюкзак около заставы «Долга», Но в скоре забыл о нем, а хабар так и остался там лежать.</text>
</string>
Теперь информация о нашем тайнику появиться в трупе на указанной нами локацией, но чтобы не тратить время я воспользуюсь логикой рестриктора.
[logic]
active = sr_idle@start
[sr_idle@start]
on_actor_inside = nil %=give_treasure(bar_treasure_1)%
Внимание!
Нужно делать так, чтобы мы получали информацию только 1 раз и больше никогда, здесь логика проверяет наличие гг в нем и уходит в nil и выдает информацию, но если у нас информация о тайнике и если мы её опять получим, то произойдет вылет с жалобой на то, что мы получаем информацию о тайнике, где информация о нем уже есть так что учитывайте это.
Результат в игре
Конечный результат
И в дополнение
Если вы создаете тайник на новой локации и хотите создать отдельный treasure_* файл, то нужно подключить его в treasure_manager.ltx
Вот так
#include "treasure_bar.ltx"
и [list]:..,list_treasure_bar
где ... - прочие листы от оригинала.
и уже новый list прописать в новый файл.
На этом все, всем удачи.
Отредактировано saintsergei (2017-04-11 20:36:51)