Перейти к основному содержимому

Почему скрипт remove_random_item не удаляет всех предметов, если их количество б...

Вопрос

Почему скрипт remove_random_item не удаляет всех предметов, если их количество больше 10?

Ответ

Скрипт remove_random_item может не удалять все предметы, так как вы добавили несколько вызовов для удаления случайного объекта вместо использования цикла. Рекомендуется использовать цикл for, чтобы гарантировать удаление определенного количества предметов. Вот исправленный код:

```lua
function remove_random_item()
local important_objects = {
["bolt"] = true,
["device_pda"] = true,
}
local tbl = {}
local cnt = 0
db.actor:iterate_inventory(
function(dummy, obj)
if obj and not important_objects[obj:section()] then
cnt = cnt + 1
table.insert(tbl, obj:id())
end
end
)
if cnt < 10 then return end
for i = 1, 10 do
local rnd = tbl[math.random(table.getn(tbl))]
local sobj = alife():object(rnd)
if sobj then
news_manager.relocate_item(db.actor, "out", sobj:section_name())
alife():release(sobj, true)
end
end
end```
Этот код будет удалять ровно 10 предметов из инвентаря, исключая важные объекты.