Войти на сайт Регистрация Лента форума Пользователи Правила сайта Поиск по форуму
Модератор форума: denis2000, FantomICW  
Модостроение. Спавн и логика
denis2000Дата: Пн, 10.10.2011, 21:20 | Сообщение # 1
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
Награды: 35
Репутация: [ 1918 ]

Спавн и логика

Создание объектов на локации и логика поведения этих объектов

Если у вас появились вопросы по созданию динамических объектов в игре (НПС, монстры, аномалии, и т.п.) и настройке их "поведения". Задавайте их в этой теме - умные головы,
модосторители и просто разбирающиеся в программировании люди вам ответят.


Много интересного материала здесь (wiki), Lua_help.script, Help из SDK 0.7

Сборник модостроения ЗП v10.10.11 (автор: XOBAH): *.CHM, *.HTML
[cut noguest=Если у вас не открывается файл CHM]Если у вас не открывается файл:
1. Запустите [Пуск]=>[Выполнить] (либо хот-кей [WIN]+[R])
2. Введите команду (без кавычек) "regsvr32 %windir%\system32\hhctrl.ocx"
3. Если вылезло окно об успешном завершении вы все сделали правильно и можете перезагружать компьютер (а может и не надо)
Также: файлы МОГУТ не открываться если в пути к файлу есть: символы кириллицы, "_", "#"
Также: есть не стандартные программы-просмоторщики CHM файлов. Например: FBReader[/cut]

[cut=Где найти лог игры после вылета]Что такое LOG ошибки, и как мне его найти?
Это система отладки происходивших вылетов, которая подается игрой в форме текста, хотя не всегда.
Для того чтоб найти LOG необходимо зайти вот сюда:

В Win хр лог находится:

C:\Documents and Settings\All Users\Документы\S.T.A.L.K.E.R. - Зов Припяти\logs

Затем открываете первый файл в формате TXT, и в нем отбираете с низу 25 строчек. После кидаете эти 25 строчек в сообщение на форум.

В Win7 лог находится C:\Users\Public\Documents\S.T.A.L.K.E.R. - Зов Припяти\logs

Путь к папке с логом можно найти открыв файл fsgame.ltx который находится в корневой директории ЗП, за это отвечает строка:
...
$app_data_root$ = true | false| $fs_root$| users\
(тут мы указываем что папка пользователя, будет хранится рядом с Fsgame.ltx)
...
$logs$ = true| false| $app_data_root$| logs\
(а тут мы указываем что в папке пользователя, в подпапке Logs будут храниться наши логи)
...
[/cut][cut=Получение более подробной информации о вылете (ХОВАН)]
Открываем файл _g.script и ищем такую функцию: function abort(fmt, ...)
Там есть заккомментированная строчка "--error_log(reason)", ее и надо расскомментировать, должно получиться вот так:
Code
function abort(fmt, ...)
                    local reason = string.format(fmt, ...)
                    error_log(reason)
end

Вот для примера два одинаковых вылета, первый с функцией по умолчанию, второй - с поправленной функцией

Первый:
Code
Expression    : !m_error_code
Function      : raii_guard::~raii_guard
File          : D:\prog_repository\sources\trunk\xrServerEntities\script_storage.cpp
Line          : 748
Description   : ....a.l.k.e.r. - Зов Припяти\gamedata\scripts\_g.script:478: bad argument #2 to 'format' (string expected, got nil)

Второй:
Code
Expression    : 0
Function      : ErrorLog
File          : D:\prog_repository\sources\trunk\xrServerEntities\script_engine_script.cpp
Line          : 49
Description   : 'Attempt to read a non-existant string field 'path_walk' in section 'walker@mechanic'

[/cut]


Перед тем, как задать вопрос в этой теме, прочтите все предыдущие страницы,
статьи в wiki по ссылке из шапки и соседнюю тему "Курс молодого бойца",
возможно Ваш вопрос уже рассматривался.


Если произошел вылет - выкладываем лог! Вопрос ставим четко, не забываем указывать версию игры, установленные моды их версии, установленные фиксы модов и подробно ваши правки.
Помните чем подробнее вопрос, тем точнее ответ.


"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..."
(Чугунный всадник)
 
denis2000Дата: Вс, 24.11.2013, 15:36 | Сообщение # 691
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
Награды: 35
Репутация: [ 1918 ]

Цитата sergej5500 ()
Будет ли функция враждебности сквадов ... нормально работать, если один из сквадов в оффлайне?

Нет, она не сможет посорить НПС которые в офлайне.

Цитата sergej5500 ()
Для нормальной работы функции, предложенной denis2000, нужен онлайн-радиус 250-270 метров.

За основу предложенной функции я как раз и взял функцию set_squads_enemies
Там либо get_story_object(***) возвращает nil или :set_relation() не работает для обектов в офлайне.

Цитата sergej5500 ()
Еще один вопрос. Можно ли схему, описанную тут, применить для сквада НПС?

Нет, для сквадов она не применима.
Для реализации скорее всего потребуется существенно переписать скрипт sim_squad_scripted.script


"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..."
(Чугунный всадник)
 
sergej5500Дата: Вт, 26.11.2013, 10:49 | Сообщение # 692
Полевой Исследователь
Ученые сталкеры
Сообщений: 3793
Награды: 29
Репутация: [ 1355 ]

Доброй ночи. Интересует такой вопрос. В логике работ смартов имеется такой код.
prior = 100

Будет ли он работать, если его добавить в логику несквадовых НПС из СГМ?

Зачем этот параметр несквадовым НПС? denis2000

Добавлено (26.11.2013, 10:49)
---------------------------------------------

Цитата sergej5500 ()
Зачем этот параметр несквадовым НПС? denis2000


Иногда на базе Рассвета, где все НПС несквадовые после квеста на защиту базы от зверья наблюдал такую картину. Мутанты уничтожены, почти все НПС разошлись по своим местам. Один или 2 остаются на огневом рубеже, оружие на изготовку и кричат "Быть наготове". "Всем осмотреться" и т.д.
 
makdmДата: Вт, 26.11.2013, 15:55 | Сообщение # 693
Рожденный в СССР
Разработчики
Сообщений: 1294
Награды: 29
Репутация: [ 1909 ]

Цитата sergej5500 ()
Один или 2 остаются на огневом рубеже, оружие на изготовку и кричат "Быть наготове"

sergej5500, используйте оверрайд post_combat_time

Пропишите, если это работа на смарте, то в логику работы, а если это логика НПС, то в активную схему.

post_combat_time = 0,0

После этого, action_post_combat_wait не будет работать и НПС сразу после боя начнут выполнять работу, прописанную в логике.


Терпение......
И все получится!


Сообщение отредактировал makdm - Вт, 26.11.2013, 16:03
 
АзазельДата: Вт, 26.11.2013, 23:43 | Сообщение # 694
Новичок
Пользователи
Сообщений: 77
Награды: 0
Репутация: [ 0 ]

Всем здрасте. Снова я и снова с тупым вопросом biggrin А что поделать. Другие сами решаются.
В косяк в чн. Сменил логику Каланче. Вместо смарт ковера. Поставил обычный валкер. (не знаю почему но отчаянно гробится meet логика. Именно та часть что отвечает за поворот на актора) И нпс спавнится. Все отлично. Вот только стоит этот чудак в углу рядом с той точкой что должен стоять. (оригинал, координаты не менял как и спавн) При этом к актору он не поворачивается. Но! Если с разбегу в него втемяшиться. Или попрыгать по предметам забрашись тем самым в этот угол. Одним словом попробовать сдвинуть нпс. Он просыпается и встает в точку пребывания. И реагирует на актора и все дела. Данный баг был и в зп. Не всегда. Но подезреваю что связан он с тем что НПС. Не может нормально повернутся в аи сетке.. Бред конечно. Но баг действительно возникает в таких проблематичных местах.
Вопрос по сей лекции: а исправить то как ?
 
makdmДата: Ср, 27.11.2013, 13:37 | Сообщение # 695
Рожденный в СССР
Разработчики
Сообщений: 1294
Награды: 29
Репутация: [ 1909 ]

Цитата Азазель ()
оригинал, координаты не менял как и спавн


Азазель, это и есть ответ на Ваш вопрос.

В Вашем случае для поворота НПС относительно оси Y, необходимо установить path_look.
Но и этого мало. Точки path_walk и path_look, должны быть связаны флагом.
Так что, разбирайте all.spawn и приводите всё в соответствие.
Также немного нужно переделать секцию [meet], чтобы НПС поворачивался в сторону ГГ, при диалоге с ним.

Если нет желания ковырять all.spawn, тогда используйте переход с walker на схему remark при приближении ГГ к НПС.


Терпение......
И все получится!


Сообщение отредактировал makdm - Ср, 27.11.2013, 14:03
 
FantomICWДата: Ср, 27.11.2013, 17:13 | Сообщение # 696
Лидер «Свободы»
Свобода
Сообщений: 4438
Награды: 44
Репутация: [ 1340 ]

Азазель, как сказал makdm, или через ремарк, или через meet. Дополнлишь, что для meet можно использовать следующее:
Код
victim = расстояние_в_цифрах | actor
close_victim  = actor  ;В зависимости от параметра close_distance
far_victim   = actor  ;В зависимости от far_distance

По умолчанию close_distance - 3, far_distance - 5.
Для remark:
Код
target = story | actor





Сообщение отредактировал FantomICW - Ср, 27.11.2013, 17:13
 
АзазельДата: Ср, 27.11.2013, 20:02 | Сообщение # 697
Новичок
Пользователи
Сообщений: 77
Награды: 0
Репутация: [ 0 ]

FantomICW, Ну я конечно слаб в логике но не настолько. Логика meet данная еще у пыс есть. Не то что у меня. А суть проблемы именно в застревании нпса. Данный баг часто встречал если нпсу надо встать рядом со стеной. Он останавливался лицом к стене и не реагировал пока в него со всей дури не втемяшишься.
 
NIVДата: Сб, 30.11.2013, 20:25 | Сообщение # 698
Полевой исследователь
Ученые сталкеры
Сообщений: 167
Награды: 4
Репутация: [ 180 ]

Подскажите, пожалуйста, как заспанить оружие с установленными апгрейтами?

В файле w_toz34.ltx дописал новый ствол:

Код
[wpn_toz34_kardan]:wpn_toz34
$spawn                      = "weapons\wpn_toz34_kardan"
description             = st_wpn_sig550_strelok_descr
inv_name                = st_wpn_sig550_strelok

upgrades                = up_gr_firstab_toz34, up_gr_firstcd_toz34, up_gr_firstef_toz34, up_gr_seconab_toz34, up_gr_seconcd_toz34, up_gr_thirdab_toz34, up_gr_thirdcd_toz34, up_gr_thirdef_toz34
installed_upgrades      = up_firsta_toz34, up_firstc_toz34, up_seconc_toz34, up_thirda_toz34, up_thirdc_toz34
upgrade_scheme          = upgrade_scheme_toz34


Оружие спанится через all.spawn в ящике. Текстовое описание оружия соответствует st_wpn_sig550_strelok_descr, но само оружие апгрейтов не имеет, и дерево апгрейтов для него не открывается. Что нужно исправить?


Изменяем реальность S.T.A.L.K.E.R. CoP: "Цена Новых Исследований" / "New Investigations' Value"

Сообщение отредактировал NIV - Сб, 30.11.2013, 20:39
 
denis2000Дата: Сб, 30.11.2013, 21:46 | Сообщение # 699
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
Награды: 35
Репутация: [ 1918 ]

NIV, В файл inventory_upgrades.ltx добавляли ствол?

"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..."
(Чугунный всадник)
 
sergej5500Дата: Вс, 01.12.2013, 01:32 | Сообщение # 700
Полевой Исследователь
Ученые сталкеры
Сообщений: 3793
Награды: 29
Репутация: [ 1355 ]

Доброй ночи. Такой вопрос. Каким образом на тайники Стрелка вешаются метки тайников?

Пытался сделать метку на "персональный" рюкзак в чистом ЗП. Мои правки.

[cut=Рестриктор спавна рюкзака.][logic]
active = sr_idle@start

[sr_idle@start]
on_info = {=zat_1001_test_dist -zat_1001_test_spawn} sr_idle@spot %+zat_1001_test_spawn =zat_1001_test_spawn%

[sr_idle@spot]
on_info = {-zat_1001_test_spot} sr_idle@nil %+zat_1001_test_spot =give_treasure(personal_inventory_box_1_mapspot)%

[sr_idle@nil]
[/cut]

[cut=секрет Затон][list_zaton]
personal_inventory_box_1_mapspot

zat_hiding_place_1
zat_hiding_place_2
zat_hiding_place_3
zat_hiding_place_4
zat_hiding_place_5
zat_hiding_place_6
zat_hiding_place_7
zat_hiding_place_8
zat_hiding_place_9
zat_hiding_place_10
zat_hiding_place_11
zat_hiding_place_12
zat_hiding_place_13
zat_hiding_place_14
zat_hiding_place_15
zat_hiding_place_16
zat_hiding_place_17
zat_hiding_place_18
zat_hiding_place_19
zat_hiding_place_20
zat_hiding_place_21
zat_hiding_place_22
zat_hiding_place_23
zat_hiding_place_24
zat_hiding_place_25
zat_hiding_place_26
zat_hiding_place_27
zat_hiding_place_28
zat_hiding_place_29
zat_hiding_place_30
zat_hiding_place_31
zat_hiding_place_32
zat_hiding_place_33
zat_hiding_place_34
zat_hiding_place_35
zat_hiding_place_36
zat_hiding_place_37
zat_hiding_place_38
zat_hiding_place_39
zat_hiding_place_40
zat_hiding_place_41
zat_hiding_place_42
zat_hiding_place_43
zat_hiding_place_44
zat_hiding_place_45
zat_hiding_place_46
zat_hiding_place_47
zat_hiding_place_48
zat_hiding_place_49
zat_hiding_place_50
zat_hiding_place_51
zat_hiding_place_52
zat_hiding_place_53
zat_hiding_place_54
zat_hiding_place_55

[personal_inventory_box_1_mapspot]
empty = true

[zat_hiding_place_1]
wpn_pm = 1, 1
ammo_9x18_fmj = 2, 1

[zat_hiding_place_2]
medkit = 1, 1
drug_radioprotector = 2, 1

[zat_hiding_place_3]
ammo_9x18_fmj = 3, 1
ammo_9x19_fmj = 2, 1

[zat_hiding_place_4]
wpn_ak74 = 1, 1
ammo_5.45x39_fmj = 3, 1

[zat_hiding_place_5]
conserva = 3, 1

[zat_hiding_place_6]
ammo_gauss = 1, 1
medkit_army = 3, 1

[zat_hiding_place_7]
wpn_spas12 = 1, 1
ammo_12x70_buck = 2, 1

[zat_hiding_place_8]
antirad = 2, 1
bandage = 3, 1

[zat_hiding_place_9]
antirad = 1, 1
medkit_scientic = 1, 1

[zat_hiding_place_10]
medkit = 1, 1
bandage = 2, 1

[zat_hiding_place_11]
medkit = 1, 1
bandage = 1, 1
ammo_5.45x39_fmj = 2, 1

[zat_hiding_place_12]
medkit = 2, 1

[zat_hiding_place_13]
ammo_9x19_fmj = 2, 1
ammo_5.56x45_ss190 = 3, 1

[zat_hiding_place_14]
bandage = 3, 1
medkit_army = 2, 1
drug_coagulant = 1, 1
drug_booster = 1, 1

[zat_hiding_place_15]
stalker_outfit = 1, 1
vodka = 1, 1

[zat_hiding_place_16]
wpn_mp5 = 1, 1
ammo_9x19_fmj = 3, 1
grenade_rgd5 = 2, 1

[zat_hiding_place_17]
grenade_rgd5 = 2, 1
medkit = 1, 1
bandage = 1, 1

[zat_hiding_place_18]
wpn_svd = 1, 1
ammo_7.62x54_7h1 = 1, 1

[zat_hiding_place_19]
grenade_f1 = 3, 1
medkit = 2, 1

[zat_hiding_place_20]
ammo_5.45x39_fmj = 2, 1
wpn_ak74 = 1, 1
ammo_vog-25 = 2, 1
wpn_addon_grenade_launcher = 1, 1

[zat_hiding_place_21]
ammo_5.56x45_ss190 = 2, 1
ammo_9x39_pab9 = 3, 1

[zat_hiding_place_22]
wpn_l85 = 1, 1
ammo_5.56x45_ss190 = 2, 15

[zat_hiding_place_23]
bread = 1, 1
kolbasa = 1, 1
conserva = 1, 1
vodka = 2, 1
energy_drink = 2, 1

[zat_hiding_place_24]
energy_drink = 2, 1
ammo_5.56x45_ss190 = 3, 1
ammo_5.45x39_fmj = 3, 1
medkit = 2, 1

[zat_hiding_place_25]
wpn_addon_scope = 1, 1
wpn_addon_grenade_launcher = 1, 1
ammo_vog-25 = 3, 1

[zat_hiding_place_26]
ammo_11.43x23_fmj = 2, 1
wpn_colt1911 = 1, 1

[zat_hiding_place_27]
wpn_toz34 = 1, 1
ammo_12x70_buck = 2, 1

[zat_hiding_place_28]
vodka = 1, 1
wpn_pm = 1, 1

[zat_hiding_place_29]
wpn_lr300 = 1, 1
ammo_5.56x45_ss190 = 2, 1
bandage = 1, 1

[zat_hiding_place_30]
wpn_desert_eagle = 1, 1
ammo_11.43x23_fmj = 2, 1
ammo_11.43x23_fmj = 1, 1

[zat_hiding_place_31]
drug_antidot = 2, 1
drug_radioprotector = 1, 1
drug_coagulant = 1, 1
bandage = 2, 1

[zat_hiding_place_32]
ammo_pkm_100 = 1, 1
ammo_pkm_100 = 1, 1

[zat_hiding_place_33]
bandage = 3, 1
medkit = 2, 1

[zat_hiding_place_34]
wpn_beretta = 1, 1
ammo_9x19_fmj = 3, 1

[zat_hiding_place_35]
grenade_f1 = 3, 1

[zat_hiding_place_36]
ammo_m209 = 3, 1
wpn_addon_grenade_launcher_m203 = 1, 1

[zat_hiding_place_37]
ammo_5.45x39_fmj = 3, 1

[zat_hiding_place_38]
ammo_7.62x54_7h1 = 2, 1

[zat_hiding_place_39]
medkit = 2, 1
drug_anabiotic = 2, 1
drug_antidot = 1, 1
bandage = 2, 1

[zat_hiding_place_40]
ammo_vog-25 = 3, 1
medkit_scientic = 1, 1
energy_drink = 1, 1
energy_drink = 1, 1

[zat_hiding_place_41]
wpn_wincheaster1300 = 1, 1
ammo_12x70_buck = 2, 1

[zat_hiding_place_42]
ammo_5.45x39_fmj = 2, 1
medkit = 1, 1

[zat_hiding_place_43]
ammo_9x39_pab9 = 4, 1
ammo_11.43x23_fmj = 2, 1

[zat_hiding_place_44]
bandage = 3, 1
vodka = 1, 1
energy_drink = 2, 1

[zat_hiding_place_45]
wpn_lr300 = 1, 1
ammo_5.56x45_ss190 = 2, 1
ammo_m209 = 4, 1

[zat_hiding_place_46]
ammo_gauss = 1, 1
medkit_army = 3, 1

[zat_hiding_place_47]
grenade_rgd5 = 3, 1

[zat_hiding_place_48]
conserva = 1, 1
vodka = 1, 1

[zat_hiding_place_49]
wpn_vintorez = 1, 1

[zat_hiding_place_50]
drug_coagulant = 2, 1
medkit = 2, 1
energy_drink = 3, 1
ammo_5.45x39_fmj = 2, 1

[zat_hiding_place_51]
ammo_gauss = 1, 1
medkit_army = 3, 1

[zat_hiding_place_52]
bandage = 2, 1
medkit= 1, 1

[zat_hiding_place_53]
vodka = 3, 1

[zat_hiding_place_54]
;helm_respirator = 1, 1
ammo_11.43x23_fmj = 3, 1
wpn_sig220 = 1, 1
bandage = 3
medkit = 3
antirad = 2
conserva = 2
energy_drink = 3, 1

[zat_hiding_place_55]
wpn_ak74 = 1, 1
[/cut]

[cut=Функция спавна рюкзака через скрипт]function mod_distanse(actor, npc)
if dont_has_alife_info("zat_test_quest_spawn_items") then
local actor_pos=db.actor:position()
local zat_test1=actor_pos:distance_to(vector():set(-318.35098266602,14.892880439758,516.04516601563),312637,124)<12.0
if zat_test1 then give_info("zat_test_quest_spawn_items") end
end
if has_alife_info("zat_test_quest_spawn_items") and dont_has_alife_info("zat_test_quest_spawn_items_spawn") then
alife():create("personal_inventory_box_1",vector():set(-318.35098266602,14.892880439758,516.04516601563),312637,124)
give_info("zat_test_quest_spawn_items_spawn") end
if has_alife_info("zat_test_quest_spawn_items_spawn") and dont_has_alife_info("zat_test_quest_spawn_items_spawn1") then
xr_effects.spawn_object_in(actor, npc, {"wpn_ak74","personal_inventory_box_1"})
give_info("zat_test_quest_spawn_items_spawn1") end
end[/cut]

[cut=Секция в алл.спавн][1867]

; cse_abstract properties
section_name = space_restrictor
name = personal_inventory_box_1_mapspot
position = -318.350982666016, 14.8928804397583, 516.045166015625
direction = 0, 0, 0
version = 128
script_version = 12

; cse_alife_object properties
game_vertex_id = 124
distance = 0
level_vertex_id = 312637
object_flags = 0xffffff3e
custom_data = [secret]

; cse_shape properties
shapes = shape0
shape0:type = sphere
shape0:offset = 0,0,0
shape0:radius = 0.863488972187042

; cse_alife_space_restrictor properties
restrictor_type = 3

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;[/cut]

Рюкзак спавнится. Автомат в нем тоже. Метка на карте не появляется. Что еще нужно прописать и где?
 
FantomICWДата: Вс, 01.12.2013, 02:15 | Сообщение # 701
Лидер «Свободы»
Свобода
Сообщений: 4438
Награды: 44
Репутация: [ 1340 ]

sergej5500, попробуй подправить секцию тайника:
Код
[personal_inventory_box_1_mapspot]   
empty = {-zat_test_quest_spawn_items} true, false

Добавлено (01.12.2013, 02:15)
---------------------------------------------
Кстати, спавн предметов в тайник также можно проделать через рестриктор.





Сообщение отредактировал FantomICW - Вс, 01.12.2013, 02:14
 
sergej5500Дата: Вс, 01.12.2013, 11:06 | Сообщение # 702
Полевой Исследователь
Ученые сталкеры
Сообщений: 3793
Награды: 29
Репутация: [ 1355 ]

Цитата FantomICW ()
sergej5500, попробуй подправить секцию тайника:


Спасибо, но не помогает. Спавн предметов - это уже частность. Нужна метка на тайнике.
 
NIVДата: Вс, 01.12.2013, 17:14 | Сообщение # 703
Полевой исследователь
Ученые сталкеры
Сообщений: 167
Награды: 4
Репутация: [ 180 ]

Цитата denis2000 ()
В файл inventory_upgrades.ltx добавляли ствол?

Спасибо, получилось заспанить оружие с апргрейдами! Только дерево апгрейдов пока недоступно, разбираюсь с этим.


Изменяем реальность S.T.A.L.K.E.R. CoP: "Цена Новых Исследований" / "New Investigations' Value"

Сообщение отредактировал NIV - Вс, 01.12.2013, 17:18
 
denis2000Дата: Вс, 01.12.2013, 17:34 | Сообщение # 704
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
Награды: 35
Репутация: [ 1918 ]

sergej5500, А разве на пустой тайник метка становиться?

Цитата NIV ()
Только дерево апгрейдов пока недоступно, разбираюсь с этим.

Дерево не доступно потому, что ствол не прописан данному механику в апгрейды.


"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..."
(Чугунный всадник)
 
sergej5500Дата: Вс, 01.12.2013, 17:44 | Сообщение # 705
Полевой Исследователь
Ученые сталкеры
Сообщений: 3793
Награды: 29
Репутация: [ 1355 ]

denis2000,
Возникла мысль прописать в конфиг тайника level_spot. Можно ли отследить, когда ящик станет пуст (игрок все забрал), затем метку убрать?
 
Поиск: