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

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


Halford

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

Капрал Хикс, для квестов на уники они должны регистрироваться. se_item.script

Поделиться этим сообщением


Ссылка на сообщение

2 странных вопроса:

 

1. После серии массивных правок получил вылет 0023:0640F45E xrGame.dll после связки npc:stop_talk(); actor:stop_talk() в диалоге у Сидоровича. Причем только у Сидоровича - неписи нормально заканчивают разговор, и идут заниматься своими делами.

Может, у кого встречалось ? Куда копать ? Откатывать до рабочего момента сильно не хочется - обнаружил достаточно поздно.

 

2. У физобъетов после смены активной секции логики нужно переустанавливать коллбэки, как минимум, на использование. Как минимум, у дверей. Это только у них так ?

Поделиться этим сообщением


Ссылка на сообщение

Кстати, а ни кто не экспериментировал тупо выставля/дисейбля соответствующие info из tasks_* ?

Поделиться этим сообщением


Ссылка на сообщение

"cannot find section generic_buy"

 

Нет соответствующей секции в файле торговли, который пытался прочитать какой-то непись.

А уж какой именно непись какой именно файл решил читать - это другой вопрос.

Воткнуть в trade_manager что-то типа ini:section_exist( "generic_buy" ) и лог с именем непися (точнее, профиля), если нету.

Вариант: лог в мотиватор в нетспавн, и потом смотреть заспавнившихся перед вылетом.

  • Нравится 1

Поделиться этим сообщением


Ссылка на сообщение

Или грохнул какой-то файл, или секцию в нем.

Возможно, покорежил условие, по которому она выбирается.

 

Или перебирать заново, да, либо вставлять логи, и отлавливать.

 

P.S. Вот мне бы кто с вылетающим сидоровичем помог... Вот это - действительно проблема. 8(

Поделиться этим сообщением


Ссылка на сообщение

раз:

 

function trade_init(npc, cfg)
	trade_manager[npc:id()] = {}
	trade_manager[npc:id()].cfg_ltx = cfg
	trade_manager[npc:id()].config = ini_file(cfg)
	
	-- коэфициенты покупки
	local str = utils.cfg_get_string(trade_manager[npc:id()].config, "trader", "buy_condition", npc, true, "")
	if str == nil then
		abort("Incorrect trader settings. Cannot find buy_condition. [%s]->[%s]", npc:name(), cfg)
	end
	trade_manager[npc:id()].buy_condition = xr_logic.parse_condlist(npc, "trade_manager", "buy_condition", str)

вызывается каждым неписем при нетспавне и сидоровичем из спавна монстров.

Два:

function update(npc)
	local tt = trade_manager[npc:id()]
	if tt == nil then return end
	if tt.update_time ~= nil and tt.update_time < time_global() then return end
	tt.update_time = time_global() + 3600000
	local str = xr_logic.pick_section_from_condlist(db.actor, npc, tt.buy_condition)
	if tt.current_buy_condition ~= str then
		npc:buy_condition(tt.config, str)
		tt.current_buy_condition = str
	end

- в апдейте. Вот если здесь выбраласб секция, а ее в файле нет - будет вылет.

Ну или иначе поиском по файлам эту же вылетающую секцию.

Поделиться этим сообщением


Ссылка на сообщение
(изменено)

А вот на сколько я неправильно понимаю, что полученное через get_hud():GetCustomStatic() через какое-то время (при каком-то условии) протухает ?

 

делаем в цикле:

for i = 1, n do
dot = t[i]
if dot[2] then dot[2]:wnd():SetWndPos( x, y )
else dot[2] = hud:GetCustomStatic( dot[1] )
end
n == 1 - работает. n == 2 - работает. n == 3 - на t[1][2]:wnd():SetWndPos( x, y )- глухо вешается.

Имена в dot[1] уникальны, в xml все прописаны.

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

Поделиться этим сообщением


Ссылка на сообщение
(изменено)

Artos, "поэтому придется постоянно "переотключать" командою: level.hide_indicators(), поставив куда-нибудь на апдейт актору" - это - вредный совет.

Заодно станет недоступен и инвентарь.

 

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

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

Поделиться этим сообщением


Ссылка на сообщение

Парни никто случайно не знает, что вот  это в логе может значить .

! Unknown command:  :LAST INTO ID for [%s] = [%s], max [%s]

* Log file has been saved successfully!

Очевидно, в консоль была введена команда ":LAST INTO ID for [%s] = [%s], max [%s]" ;)

Например, при помощи get_console():execute( ":LAST INTO ID for [%s] = [%s], max [%s]" )

А потом также выведена команда "flush".

Поделиться этим сообщением


Ссылка на сообщение

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

local cover = enemy and npc:best_cover( npc:position(), enemy:position(), 20, 15, 100 ),

и потом руками же загонять туда непися, типа

if cover then send_to_nearest_vertex( npc, cover:level_vertex_id() ) end

и проверять, дошел/не дошел, либо есть что-то более интеллектуальное, "спрятаться наилучшим образом", и чтобы сам дальше "соображал" ? ТЧ интересует.

  • Нравится 1

Поделиться этим сообщением


Ссылка на сообщение

Romann, поскольку все молчат, так я подскажу:

 

"Скрипты с оригинала" иногда обращаются к другим скриптам. Что, разумеется, плохо, но так уж есть.

А те, в свою очередь, используют конфиги.

 

Лог в данном случае намекает, что пара других скриптов не совладали с изменениями в конфигах, и, скорее всего, повисли.

Поделиться этим сообщением


Ссылка на сообщение

В диалогах в абсолютном большинстве случаев вылет без лога.

Если не трогал код, то скорее всего не хватает собственно диалогов  в профиле этого непися.

Поделиться этим сообщением


Ссылка на сообщение

Разница в собственно диалогах есть ? Те, которые "не вылетают" - не вылетают ни с НИ, ни с сэйвов после НИ, при любом наборе ?

 

Значит намудрил с адаптацией.

У 1.0004 все id диалогов - цифра. У 1.0006 - строки.

Поделиться этим сообщением


Ссылка на сообщение

Хемуль36рус, при чем здесь мотиватор ?

Диалоги - dialog_manager.script

Квесты - task_manager.script

 

В них что-то трогал ?

 

И проверь сначала просто со стандартным диалогом.

Поделиться этим сообщением


Ссылка на сообщение

когда self.npc_script_version передается в dialog_manager - предполагается, что там по этому поводу что-то сделают.

И, да, брать его из alife():object(self.object:id()).script_version - очень странная идея.

Поделиться этим сообщением


Ссылка на сообщение

Первоначально за основу взят Сидор ?

 

Часом, не как непися пытаешься создать ?

Поделиться этим сообщением


Ссылка на сообщение

Как бы Сидор - он даже не монстр, а недомонстр. Соответственно, ни какой state_manager для него вызываться не должен. И ни каких анимаций задаваться тоже ни где не должно.

 

То есть, секция - m_trader (и ничего в ней не менять), визуал - сидора, флаги - сидора. Ничего неписевого вызываться не должно.

  • Нравится 1

Поделиться этим сообщением


Ссылка на сообщение
(изменено)

С прицелами работать точно не будет. Только со стволами, и только (на начально этапе, пока не разберешься), с fn2000 и грозой.

 

Обновиться с 1.0003 на 1.0004 - а почему бы, все-таки, не попробовать ? Если уж вообще возник интерес что-то поменять ?

 

Да, возникло смутное сомнение: речь вообще о ТЧ идет, или о чем-то другом ?

 

 

По поводу пытаться самостоятельно - гм, поясню (хотя все есть в шапках, и я, да, по тому и ворчу, что меня пытаются заставить "делать за кого-то свою работу, да еще и бесплатно" © ).

http://www.amk-team.ru/forum/index.php?showtopic=6458 и http://stalkerin.gameru.net/wiki/index.php?title=Заглавная_страница - есть в первом посте темы. Вот это надо изучить и осознать.

 

Иначе даже и вопрос нормально задать не получится: я на последнее-то ответил только по тому, что еще раньше BFG как-то догадался, о чем речь, и расшифровал для менее догадливых.

 

Ну а кроме того, именно внимательно разобравшись, как писать/менять конфиги вообще: то есть, что, зачем, почему, и что ожидать в результате - большинство вопросов типа этого уже и сами по себе отпадут.

Здесь все именно так и начинали, а спрашивали уже "сделал вот так, получил вот такое, почему - не понимаю, поскольку должно было получиться совсем иначе."

Те же, кто постоянно хотел "а вот сделайте мне" - даже если и в форме как бы вопроса... В общем, грустно все в итоге выходило.

 

Читать, и пробовать. Снова читать, и опять пробовать.

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

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

Поделиться этим сообщением


Ссылка на сообщение

Жуть. Ну, торговля - понятно (оно там на самом деле не надо, но и мешать не должно).

Диалог - понятно.

unique_items.ltx и mp_ranks.ltx трогались ? Если трогались - открываем блокнотом и ищем в них. В каждом должно быть в одном экземпляре.

 

Вообще надо было искать сразу в квадратных скобках - то есть, вот так: [hunters_toz]

 

Если все ok - это странно. Ну, не знаю, повторить поиск по всей gamedata, что-ли. Или вспоминать, после чего появилось, и искать в этом "чего".

Поделиться этим сообщением


Ссылка на сообщение

AMK-Team.ru

×
×
  • Создать...