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

Ошибки 1.4.1


Stalker_Zip

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

Нашел ошибку в логике в функции amk_offline_alife.on_inv_boxes_found:

цикл "for a=1,table.getn(items[v_obj.id]) do" нужно заменить на цикл типа "while" c инкрементацией перменной цикла только если не вызывается

функция pick_item в этом цикле. Проблема в том что функция pick_item удаляет элемент из массива items[v_obj.id] в результате чего код перебирает

не все предметы в нычке. Т.е. цикл должен выглядеть так:

 

 

Скрытый текст --Смотреть--

local a = 1

while a <= table.getn(items[v_obj.id]) do

local v_itA = items[v_obj.id][a]

if (v_itA) then

local itA = alife():object(v_itA.id)

if (itA and itA:name()==v_itA.name and itA.parent_id == v_obj.id) then

--news_main.trace("on_inv_boxes_found - found "..itA:section_name().." in "..object:name())

-- Решим, подбираем или нет?

local bTake = is_valuable(itA)

if bTake then

local l_objA = pick_item(victim, itA)

a=a-1

end

else

if(itA) then

local mm = itA.parent_id

if mm == nil then mm = "nil" end

amk.mylog("В контейнере "..object:name().." странная вещичка - "..itA:name().." parent_id="..mm)

end

end

end

a=a+1

end

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


Ссылка на сообщение
  • Недавно просматривали   0 пользователей

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