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

Использование предметов актором


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

local sect = item:section()
-- log( "info", "on_item_lost: %s", sect )

local id = item:id()
if inv_used[id] then inv_used[id] = nil -- использован
-- log( "info", "on_item_lost: %s, used", sect )
else
local obj = sim:object( id )
if obj then
if ( obj.parent_id or 65535 ) == 65535 then -- выброшен
-- log( "info", "on_item_lost: %s, drop", sect )
for i = 1, on_drop_n do on_drop_t.any[i]( item ) end
if on_drop_t[sect] then
for i, f in ipairs( on_drop_t[sect] ) do f( item ) end
end
-- else log( "info", "on_item_lost: %s, new parent: %s", sect, obj.parent_id )
end
-- else log( "info", "on_item_lost: %s, deleted", sect )
end end
Код все же лучше давать в псевдо-коде. Тогда предыдущий кусок будет гораздо понятней

if item_used(item) then return end
if item_released(item) then
  signals.on_item_release(item)
elseif item_has_parent(item) then
  signals.on_transfer_item(item)
else
  signals.on_drop_item_to_ground(item)
end
Еще в примере описка походу: on_drop_t.any( item ) end

И в одном случае:

for i, f in ipairs( on_drop_t[sect] ) do f( item ) end
а в другом:

local t = on_take_t[item:section()]
if t then
for i = 1, #t do t[i]( item ) end

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


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

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