В этой статье мы создадим новый тайник, который будет выпадать с трупов  определенной локации, либо через рестриктор.

Работа в SDK

Заходим в SDK 0.6 и заходим в Spawn Element --> devices --> inventory_box и ставим в нужном нам месте inventory_box и жмем Enter

В окне даем свое название, у меня это bar_treasure_1 и убираем галочку в параметре Used AI locations.и по необходимости выбираем визуал. должно быть примерно так:

http://s2.uploads.ru/bL1zy.png

Можно компилировать спавн.

Работа в конфигах

Откроем 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 и выдает информацию, но если у нас информация о тайнике и если мы её опять получим, то произойдет вылет с жалобой на то, что мы получаем информацию о тайнике, где информация о нем уже есть так что учитывайте это.

Результат в игре

Конечный результат

http://s6.uploads.ru/pDBW9.jpg
http://s8.uploads.ru/NmFzw.jpg
http://s1.uploads.ru/aQE78.jpg
http://sd.uploads.ru/f9vCj.jpg

И в дополнение
Если вы создаете тайник на новой локации и хотите создать отдельный treasure_* файл, то нужно подключить его в treasure_manager.ltx 
Вот так
#include "treasure_bar.ltx"
и [list]:..,list_treasure_bar       
где ... - прочие листы от оригинала.
и уже новый list прописать в новый файл.
На этом все, всем удачи.

Отредактировано saintsergei (2017-04-11 20:36:51)