UPD покопал еще, глобальная переменная belt_size выствыляется в 0 зачем то, видимо как то, где чекается обновляется. Видимо баг, что это делается не вовремя, скрипт конечно подзагажен, тяжело распутать.
Сделал так, норм?
if z ~= belt then вместо >
и закомментил belt_size = 0 в следующей функе. Так по идее должно всегда сверять с текущим размером пояса, не обнуляя его.
function on_item_take( obj, internal )
local belt = belt_size + 1
local class = 0
local sc = 'nil'
local id = -1
if obj then
id = obj:id()
class = obj:clsid()
sc = obj:section()
end
if class == CLID_ART and sc ~= "af_full_akkum" then
-- wprintf(" checking~C0F %s~C07", obj:name())
reg_artefact( obj )
elseif strpos( sc, "belt_[1-9]_art" ) then
-- wprintf( " handling take~C0F %s~C07 ", sc )
local z = tonumber( sc:sub( 6, 6 ) )
if z ~= belt then
belt = z
belt_size = z - 1
end
if not internal then
schedule.add( "check_art", script_name()..".check_artefact()", 100 )
end
end -- if
get_item( obj )
end
function check_artefact()
consumable_artefacts = {}
--belt_size = 0
Сообщение отредактировал Serduko: 29 June 2024 - 08:18 PM
_________________________________________________________________________________________________________