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

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


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

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

 

FATAL ERROR



[error]Expression : ini_file.section_exist(section)
[error]Function : CTradeParameters::process
[error]File : e:\stalker\patch_1_0004\xr_3da\xrgame\trade_parameters_inline.h
[error]Line : 111
[error]Description : cannot find section generic_buy


stack trace:

 

В тем ничего вразумительного не нашел.

Intrel Core i5 9400F, msi gtx 1660 super ventus, RAM 16g-DDR4, HD 2000g, Win 10x64, SSD 256g, SSD m2 500g.

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

"cannot find section generic_buy"

 

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

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

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

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

  • Нравится 1
Ссылка на комментарий

Хемуль36рус

У меня была такая проблема когда я добавлял НПС-у файл торговли типа ..._trader.ltx. И в этом файле должны быть разные имена у строк торговли типа

 

;какие товары торговец будет покупать

buy_condition = dd_diez_trader_generic_buy

;какие товары у торговца будут вначале

sell_condition = dd_diez_trader_after_fabric_sell

;за какую цену торговец будет продавать

buy_supplies = supplies_after_fabric

Если хоть одно название повторится в любом файле торговли, то получишь этот вылет при сохранении

 

Надо дело довести до конца!

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

@riddik121, в случае повторного имени секции получился бы вылет "Duplicate section 'имя_секции' found".

А вот вылет "cannot find section имя_секции" однозначно говорит именно об отсутствии указанной секции.

  • Нравится 1
Ссылка на комментарий

А из-за аи пака может такой вылет случится, я  же не менял торговлю, вернее я добавлял в торговлю, потом я все удалил, вернул оригинал, но вылет остался, вот не задача, придется все перебирать с начала. :(

Intrel Core i5 9400F, msi gtx 1660 super ventus, RAM 16g-DDR4, HD 2000g, Win 10x64, SSD 256g, SSD m2 500g.

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

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

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

 

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

 

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

Ссылка на комментарий
@Хемуль36рус, Скинь свои все файлы trade_....ltx , только именно те что вставлены в игру и вызывают вылет, взгляну на досуге. Желательно сюда и на rghost.

Tetris 9in1, 2 кб ОЗУ, 1kHz(одноядерный),2х цветовой широкоформатный дисплей.%C1%EE%FF%E3%F3%E7.gif

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

Парни вылет точно не из-за них, я сейчас перебрал все по новой. вылета нету, правда пока  только ставил один аи пак, и скорее возможно я что то пропустил, когда адаптировал паки, но я точно скажу что торгаши не при чем. Да и эта секция, generic_buy есть только в trade_generic, то есть у нпс.

Intrel Core i5 9400F, msi gtx 1660 super ventus, RAM 16g-DDR4, HD 2000g, Win 10x64, SSD 256g, SSD m2 500g.

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

раз:

 

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

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

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

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

Как-то уже задавал этот вопрос эдак недельку назад, жаль ничего толкового не посоветовали... Попробую еще раз, вдруг у кого родится новая идея.

 

Пытаюсь создать закодированную дверь, наподобие той, что находится в саркофаге. Таки работает, но частично: процесс декодирования стартует, но на нуле "зависает", дверь остается неюзабельной и в состоянии декодирования. Еще один интересный баг: если перед раскодированием сдеать сейв, а затем его загрузить - дверь, опять же, становиться неюзабельной. Ума не приложу, что с этим делать.

 

Все об этой двери:

 

[8978]

; cse_abstract properties
section_name = space_restrictor
name = gen_actor_has_lab_x8_key_card_restrictor
position = 171.44148254395,30.752767562866,-483.31811523438
direction = 0,0,0

; cse_alife_object properties
game_vertex_id = 3135
distance = 0
level_vertex_id = 534626
object_flags = 0xffffff3e
custom_data = <<END
[logic]
active = sr_idle

[sr_idle]
on_actor_inside = %+check_absence_lab_x8_key_card%
END

; cse_shape properties
shapes = shape0
shape0:type = box
shape0:axis_x = 1.0513414382935,0,0
shape0:axis_y = 1.0513414382935,0,0
shape0:axis_z = 1.0513414382935,0,0
shape0:offset = 0,0,0

; cse_alife_space_restrictor properties
restrictor_type = 3

 

[8979]

; cse_abstract properties
section_name = space_restrictor
name = gen_lab_x8_codedoor_decoding_restrictor
position = 171.63209533691,30.751937866211,-485.51480102539
direction = 0,0,0

; cse_alife_object properties
game_vertex_id = 3135
distance = 0
level_vertex_id = 534618
object_flags = 0xffffff3e
custom_data = <<END
[logic]
cfg = scripts\alex_mod\lab_x8_codedoor_decoding.ltx
END

; cse_shape properties
shapes = shape0
shape0:type = box
shape0:axis_x = 1.0513414382935,0,0
shape0:axis_y = 1.0513414382935,0,0
shape0:axis_z = 1.0513414382935,0,0
shape0:offset = 0,0,0

; cse_alife_space_restrictor properties
restrictor_type = 3

[8980]

; cse_abstract properties
section_name = space_restrictor
name = gen_lab_x8_codedoor_decoding_sound_restrictor
position = 171.64683532715,30.751802444458,-486.09631347656
direction = 0,0,0

; cse_alife_object properties
game_vertex_id = 3135
distance = 0
level_vertex_id = 534618
object_flags = 0xffffff3e
custom_data = <<END
[logic]
active = sr_idle

[sr_idle]
on_info = {+lab_x8_door_start_decoding} sr_sound

[sr_sound]
snd = device\decoder
play_at_actor = true
on_signal = sound_end| sr_idle
on_info = {+lab_x8_door_finish_decoding} nil
END

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

; cse_alife_space_restrictor properties
restrictor_type = 2

 

 

[logic]
active = ph_door@locked

[ph_door@locked]
locked = true
closed = true
tip_open = tip_door_coded
on_info = {+take_lab_x8_key_card_complite} ph_door@coded

[ph_door@coded]
locked = true
closed = true
tip_open = tip_door_decode
on_info = {!take_lab_x8_key_card_complite} ph_door@locked
on_use = ph_door@decoding %+lab_x8_door_start_decoding%

[ph_door@decoding]
locked = true
closed = true
tip_open = tip_door_decoding
on_info = {+lab_x8_door_finish_decoding} ph_door@unlocked

[ph_door@unlocked]
locked = false
closed = false
show_tips = false

 

 

[logic]
active = sr_idle

[sr_idle]
on_info = {+lab_x8_door_start_decoding} sr_timer

[sr_timer]
type = dec
start_value = 5000
on_value = 0| nil %+lab_x8_door_finish_decoding%

 

 

<info_portion id="lab_x8_decoding_door">
<task>lab_x8_decoding_door_task</task>
</info_portion>

<info_portion id="lab_x8_find_key_card_complite"></info_portion>
<info_portion id="lab_x8_door_open"></info_portion>
<info_portion id="lab_x8_door_start_decoding"></info_portion>
<info_portion id="lab_x8_door_finish_decoding"></info_portion>

 

<info_portion id="check_absence_lab_x8_key_card">
<action>alex_mod_tasks.check_absence_lab_x8_key_card</action>
</info_portion>

 

 

<game_task id="lab_x8_decoding_door_task" prio="455">
<title>Раскодировать дверь в лаборторию Х-8</title>

<objective>
<text>Раскодировать дверь в лаборторию Х-8</text>
<icon>ui_iconsTotal_dar_codedoor_1</icon>
<infoportion_complete>lab_x8_door_open</infoportion_complete>
<article>lab_x8_decoding_door_descr</article>
</objective>

<objective>
<text>Найти способ раскодировать дверь в лаборторию Х-8</text>
<infoportion_complete>lab_x8_find_key_card_complite</infoportion_complete>
</objective>

<objective>
<text>Открыть дверь в лабораторию</text>
<map_location_type hint="Вход в лабораторию Х-8">green_location</map_location_type>
<object_story_id>lab_x8_map_spot</object_story_id>
<infoportion_complete>lab_x8_door_open</infoportion_complete>
</objective>
</game_task>

 

 

[lab_x8_key_card]:identity_immunities
GroupControlSection = spawn_group
discovery_dependency =
$spawn = "devices\quest_items\lab_x8_key_card"
;$prefetch = 32
class = II_ATTCH
cform = skeleton
visual = equipments\item_flash_2.ogf
radius = 1
quest_item = true

description = item_lab_x8_key_card_desc

inv_name = item_lab_x8_key_card
inv_name_short = item_lab_x8_key_card
inv_weight = 0

inv_grid_width = 1
inv_grid_height = 1
inv_grid_x = 9
inv_grid_y = 40
cost = 0

 

 

function check_absence_lab_x8_key_card(task, objective)
if db.actor:object("lab_x8_key_card") == nil then
db.actor:give_info_portion("lab_x8_decoding_door")
return true
end
return false
end

 

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

aka Stalker_AleX333
 
Мои проекты  - ЯндексДиск   |   Я на Gamer-Mods.ru

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

А вот на сколько я неправильно понимаю, что полученное через 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
Ссылка на комментарий

Кто подскажет, уважаемые:

В моде на базе ОГСМ для ТЧ создал новую группировку по тутору из сети. Вроде все прописал, как надо, но при выходе из игры получаю вылет:

 

Expression : fatal error
Function : CScriptEngine::lua_error
File : E:\stalker\sources\trunk\xr_3da\xrGame\script_engine.cpp
Line : 73
Description :
Arguments : LUA error: ...publishing\s.t.a.l.k.e.r\gamedata\scripts\amk.script:110: attempt to index field 'pstor' (a nil value)

 

 

-- Старт таймера в игровом времени
function g_start_timer(name,delay_d,delay_h,delay_m,action)
local time = level.get_time_days()*60*24+level.get_time_hours()*60+level.get_time_minutes() --time in game minutes
if delay_d==nil or delay_h==nil or delay_m==nil then
return false
end

if action==nil then
action = ""
end

local a=1
while db.storage[db.actor:id()].pstor["gt"..a] do
a=a+1
if a>100 then
return false
end
end

save_variable("gt"..a, name)
save_variable("gt"..a.."d", time+delay_d*60*24+delay_h*60+delay_m)
save_variable("gt"..a.."p", action)

return true
end

 

 

 

Красным выделена 110 строка.

 

Что сие означает и как с этим бороться?

 



По вылету с созданием новой группировки вопрос снимается, ошибку нашел сам.

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

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

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

Подскажите, есть ли системный поршень для машин. ГГ за рулём/не за рулём, как к примеру поршни инвентаря, пда и т.д. И их название.

 

, Ну ты и намудрил! В первом рестрикторе ты выдаёшь поршень, который запускает ф-цию check_absence_lab_x8_key_card и если она не выполнена, то второго запуска уже не будет. Так может стоит в рестрикторе запускать ф-цию, а не выдавать поршень?

В ф-ции у тебя идёт проверка на отсутствие lab_x8_key_card, ну да хрен с ним, тебе видней. Главное поршень ты возможно получишь. :) Ну и квест.

Что такое take_lab_x8_key_card_complite даже спрашивать нет желания, хотя ты для себя опрелелись, это поршень или ф-ия. Но предположим, что у тебя всё таки получилось перевести логику двери в [ph_door@coded] и ты не получил вылет. Ты её юзнул, сработал второй рестриктор, и ты получил поршень lab_x8_door_finish_decoding и, о чудо дверь открылась.

Ты сам то видишь глубину бреда этого всего?

Офигеть, этож надо было до такого додуматься! Такой ребус ты навоял, его прочесть то не просто, а тем более понять.

 

Может перепишешь по схеме: зашёл в рестриктор, дал поршень квеста и переключился на вторую схему, в которой запустил ф-ию проверки наличия ключа. И если он есть, то преключай логику на схему [sr_timer] которая выдаст поршень открытия двери и выполнения квеста.

В логики двери оставь только 2 схемы, [ph_door@decoding] и [ph_door@unlocked], остальные тебе просто не нужны, т.к. по сути это просто дублирование.

В итоге, для всего этого тебе понадобится одна дверь, один рестриктор, 2 поршня и одна функция.

Удачи в модинге.

  • Нравится 1
Ссылка на комментарий

 

 


Такой вылет у меня часто случается когда происходит выброс.
Я точно не помню, но может это связано с динамическими аномалиями? Аномалия во время выброса попадает на место, где есть вей-поинт. А движок, как говорилось, этого не терпит. Лечилось вроде загрузкой предыдущего сохранения, тогда есть шанс, что аномалия заспавнится в другом месте.

Wo1fRam.gif
Мой канал на YouTube

Бессмысленно осмысливать смысл неосмысленными мыслями.

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

Добрый день.

Заспавнил актора на Предбаннике, пока стоишь на месте все нормально делаешь шаг в сторону и вылет:

 

Expression : I != levels().end()

Function : GameGraph::CHeader::level

File : e:\stalker\patch_1_0004\xr_3da\xrgame\game_graph_inline.h

Line : 171

Description : there is no specified level in the game graph : 100

 

Счастье всем, даром! И пусть никто обиженный не уйдет...не успеет...

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

Хотел сделать нове полоски в инвентаре..

 

В скриптах не особо разбираюсь. Пытался сделать худ только из текстуры:

function huds()


local hud = get_hud()
local cs = hud:GetCustomStatic("hud_ammo")
if cs == nil then
hud:AddCustomStatic("hud_ammo", true)
cs = hud:GetCustomStatic("hud_ammo")
end
end

 

Затем добавил ее в inventory_item.xml

<hud_ammo x="0" y="24" width="121" height="8" horz="1">

     <texture>ui_hud_frame_clock</texture>
</hud_ammo>

 

 

При запуске получаю вылет связанный с hud_ammo.

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

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

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

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

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

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

Войти

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

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

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