Перейти к контенту

[SoC] Ковыряемся в файлах


Рекомендуемые сообщения

Как сделать, чтобы задания из task_manager'а (ну которые начинаются "Мне нужна работа. Есть что на примете?") не повторялись.


По какой-то непонятной для меня причине они часто сбрасываются. К примеру Сидоровичу нужно сначала принести Медузу, потом Каменный цветок, потом Ломоть мяса, и в конце Ночную звезду. Ты выполняешь 2 из них. Уходишь временно. Потом приходишь за получением 3его, а Сидоровичу опять нужна Медуза (самое первое задание). Я пытался понять в task_manager.script, как это работает, но так и не понял.


Как убрать эту багофичу?


Ссылка на комментарий
Нужно скинуть вещи ГГ в ящик который довольно-таки далеко от него.

Обсуждалось же 5 страниц назад.

 Способ позволяет закинуть в ящик\рюкзак из оллспавна любое количество предметов вне зависимости от офф-он-лайна.

http://www.amk-team.ru/forum/topic/5525-soc-kovyriaemsia-v-fajlakh/?p=1020159

Изменено пользователем BFG

"Кругом зомби.....у меня кончаются патроны...."

Ссылка на комментарий

@Kondr48,

alife():set_switch_online(box.id, true)
alife():set_switch_offline(box.id, false)
Потом немного подождать, пока он (ящик) выйдет в онлайн, и можно трансферить предметы.

 

@IQDDD, добавь в секцию задания, которое нужно реже повторять, параметр:

idle_time = время в игровых секундах

Через это время после выполнения оно снова будет доступно. По умолчанию в чистой игре стоят одни сутки.

Изменено пользователем naxac
  • Спасибо 2
  • Нравится 1

Аддон для ОП-2.09.2: Яндекс/Google/GitHub

naxac.gif

Ссылка на комментарий

В task_manager.ltx ни у одного задания не стоит idle_time. У четырёх заданий закомментирован. Когда скрипт task_manager'а читает ltx-файл, то по дефолту действительно ставит 24*60*60. Я ещё на 90 умножил. :D

Спасибо за совет.

Ссылка на комментарий

 

 

Функция прекрасно срабатывает вблизи ящика, но не работает если мы далеко

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

 

Мне посоветовали делать так, и все прекрасно работает.

function spawn_docs()
   local sobj = alife():object("heli_seif")
   if sobj and has_alife_info("take_zver_message") then
     local obj = level.object_by_id(sobj.id)
     if obj then
       spawn_item_in_inv("access_card", obj)
       spawn_item_in_inv("journal", obj)
     end
   end
end

function spawn_item_in_inv(spawn_item,npc)
	if not npc then 
		npc = db.actor 
	end
	local item = alife():create(spawn_item, 
		npc:position(),
		npc:level_vertex_id(),  
		npc:game_vertex_id(),
		npc:id())
	
	if npc:id() ~= db.actor:id() then
		-- Фикс пропадания доспавненного предмета при сейв/лоаде
		level.client_spawn_manager():add(item.id, -1, fix_spawn_item_in_inv, npc)  -- Калбек на выход item в онлайн
	end

	return item
end

function fix_spawn_item_in_inv(npc, id, item)
    npc:transfer_item(item, npc)
end

Сталкер - наше всё!

Ссылка на комментарий

Прошу помощи.

 

Написал диалог, на первый взгляд, вроде все правильно.

    <dialog id="job_juk_dialog">
        <phrase_list>
            <phrase id="0">
                <text>job_juk_dialog_0</text>
                <next>1</next>
            </phrase>
            <phrase id="1">
                <text />
                <next>111</next>
                <next>121</next>
                <next>131</next>
            </phrase>
            <phrase id="111">
                <text />
                <precondition>zaton_dialog.bandits_death</precondition>
                <next>11</next>
            </phrase>
            <phrase id="121">
                <text />
                <precondition>zaton_dialog.killers_death</precondition>
                <next>12</next>
            </phrase>
            <phrase id="131">
                <text />
                <precondition>zaton_dialog.all_alive</precondition>
                <next>13</next>
            </phrase>
            <phrase id="11">
                <text>job_juk_dialog_11</text>
                <next>21</next>
            </phrase>
            <phrase id="12">
                <text>job_juk_dialog_12</text>
                <next>22</next>
            </phrase>
            <phrase id="13">
                <text>job_juk_dialog_13</text>
                <action>dialogs.break_dialog</action>
            </phrase>
            <phrase id="21">
                <text>job_juk_dialog_21</text>
                <next>311</next>
                <next>312</next>
            </phrase>
            <phrase id="311">
                <text>job_juk_dialog_311</text>
                <give_info>job_kill_bandits</give_info>
                <action>dialogs.break_dialog</action>
            </phrase>
            <phrase id="312">
                <text>job_juk_dialog_312</text>
                <action>dialogs.break_dialog</action>
             </phrase>
            <phrase id="22">
                <text>job_juk_dialog_22</text>
                <next>321</next>
                <next>322</next>
            </phrase>
            <phrase id="321">
                <text>job_juk_dialog_321</text>
                <give_info>job_kill_killers</give_info>
                <action>dialogs.break_dialog</action>
            </phrase>
            <phrase id="322">
                <text>job_juk_dialog_322</text>
                <action>dialogs.break_dialog</action>
            </phrase>
        </phrase_list>
    </dialog>

Но при клике на первую фразу - вылет. Что тут не так?

stack trace:



001B:0076105B xrLUA.dll
001B:02DCE637 xrGame.dll
001B:02DD20A0 xrGame.dll

 

Сталкер - наше всё!

Ссылка на комментарий

@AndrewMor, Вроде всё верно, но зачем столько лишних телодвижений со строкой <text /> ? Указал её в красном поле. Сначала ты разветвляешь диалог, потом зачем то 2 раза с помощью этой строки переводишь фразу от ГГ НПСу и обратно. Почему не поставил прекондишен сразу перед фразой (зелёным выделено) и убрать не нужную секцию ?

1fe827aecd931ac6ded37e4a60d6fb645eb4bd25

"Кругом зомби.....у меня кончаются патроны...."

Ссылка на комментарий

Йо. 1. Подскажите, где находится параметр, отвечающий за время респавна артефактов в аномалии.

2. Как добавить в ту или иную аномалию спавн артефакта? К примеру, создал на новой локе жарку, и хочу в неё добавить спавн капли и огненного шара. Спасибо заранее.

Ссылка на комментарий
@UnLoaded, хм... это ввело меня в заблуждение. На примере подземелья агропрома: каждые 1,5 суток (точный интервал не вычислил) в полночь у электры спавнится вспышка. Бывало, зачистил полностью локу от артов, а они потом в ночь снова появляются. Игра без модов, поэтому и спрашиваю. Может что-то путаю, но ещё знаю, что в ЧН и ЗП респавн артов есть 100%
Ссылка на комментарий

@Kondr48,

alife():set_switch_online(box.id, true)
alife():set_switch_offline(box.id, false)
Потом немного подождать, пока он (ящик) выйдет в онлайн, и можно трансферить предметы.

Проблема вылезла в том, чтобы узнать id ящика. У меня есть только story_id его. level_object_by_sid возвращает game_object или я не правильно понял? В любом случае когда тайник в офлайне он мне nil возвращает.

P.S. Или же ткните, где есть реализованная на базе ТЧ функция ограбления ГГ, чтобы все его шмотки перепорхнули в нужный ящик. Я с оригинала только арену вспомнил, но там ящик как раз-таки в онлайне, что мне не подходит.

Изменено пользователем Kondr48
Ссылка на комментарий

Опять. Тестил подземелья: стабильно спавнится вспышка и бенгальский огонь у электр. Есть шанс появления двух бенгальских огней сразу!

Теперь хочу найти параметр, отвечающий за респавн. Не вижу его..

Ссылка на комментарий
Теперь хочу найти параметр, отвечающий за респавн. Не вижу его..

В конфигах аномалий есть:

artefacts = af_rusty_thorn,0.7,af_rusty_kristall,0.25,af_rusty_sea-urchin,0.05
BirthProbability = 0.1

Если я не ошибаюсь, то этот респавн происходит только при выходе аномалий в он-лайн.

Изменено пользователем UnLoaded
  • Нравится 1
Ссылка на комментарий

1. Насколько я знаю, сталкеры и мутанты с определённой вероятностью могут покинуть гулаг и начать путешествие по локациям в поисках другого свободного. ( собаки уходят с агропрома на свалку, плоти идут на агропром. Сталкеры с арм.складов в бар ходят. Второстепенные персонажи, типо Фраера и Кочерги шляются из гулага в гулаг. ) Какой параметр отвечает за вероятность "желания" уйти с гулага в свободное путешествие?

P.S. Unloaded, правил конфиг аномалий, респавн артов всё равно составляет 1,5-2 суток. Разве что получилось заспавнить огненный шар в карусели)

Кстати говоря, для меня загадка, откуда при переходе из ТД на кордон позади тебя спавнятся 10-13 бандитов. Если АТП заполнено, другие гулаги тоже, то какая цель? Или это наитупейший маршрут на свалку, где они должны были остановиться?

Ссылка на комментарий

 

 

Почему не поставил прекондишен сразу перед фразой (зелёным выделено) и убрать не нужную секцию ?

Опытным путем выяснил, что вылет идет из-за precondition, если его убрать(закомментировать) - все работает. Тады вопрос: почему?

function bandits_death(actor, npc)
  if not has_alife_info("job_kill_bandits") then
        return true
  end
        return false
end

Сталкер - наше всё!

Ссылка на комментарий
Тады вопрос: почему?

Ну так что не ясно: видимо условие в прекондишене не выполняется, он возвращает false, движок соответственно не может "построить" дальше диалог -> вылет. Для диалогов с ветвлениями есть такое правило - должна быть хотя-бы одна ветка, которая будет доступна и движок сможет "построить" ее до конца.

 

Насколько я знаю, сталкеры и мутанты с определённой вероятностью могут покинуть гулаг...

Все зависит от условий. Если мобу, в его кастом-дате, однозначно прописан гулаг, он его не покинет никогда. Если моб просто подошел по параметрам и взят в гулаг - его может "вытеснить" с работы\из гулага более подходящий моб. Все это регулируется в xr_gulag.script, в скриптах гулагов и в профилях мобов.

Изменено пользователем UnLoaded
  • Нравится 1
Ссылка на комментарий

Вопрос про серверные и клиентские классы. Чтобы сделать "скриптовую обёртку" для серверного объекта ( в смысле как se_stalker.script ) нужно, чтобы этот класс был зарегистрирован в class_registrator.script, а так же, чтобы был экспортирован клиентский(?) класс ( CMosquitoBald и тому подобное) . И так как классы CNoGravityZone и CRadioactiveZone не экспортированы, такую вот "обвязочку" им не сделаешь. Я правильно всё понял?

... А наше дело маленькое - с ружьём да по болотам. (с)

Ссылка на комментарий

 

 

Ну так что не ясно: видимо условие в прекондишене не выполняется

В том-то и дело, что условие выполняется. Ну в общем, я плюнул и сделал все по другому.

Сталкер - наше всё!

Ссылка на комментарий

Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий

Комментарии могут оставлять только зарегистрированные пользователи

Создать аккаунт

Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!

Зарегистрировать новый аккаунт

Войти

Есть аккаунт? Войти.

Войти
  • Недавно просматривали   0 пользователей

    • Ни один зарегистрированный пользователь не просматривает эту страницу.
×
×
  • Создать...