Для реализации этой функции можно использовать следующий подход:
1. Определите предметы, которые должны быть доступны только после получения определенного инфопоршня.
2. Напишите скрипт-декоратор или используйте существующую систему проверки для этих предметов.
3. В скрипте-декораторе добавьте логику, которая будет проверять наличие нужного инфопоршня перед тем, как игрок сможет поднять предмет с земли.
4. Если инфопоршень отсутствует, удаляйте предмет из инвентаря игрока и спавните его снова на том же месте после того, как игрок получит нужный инфопоршень.
Пример кода для декоратора:
```lua
actor_on_take_from_ground = actor_on_take_from_ground or {}
local on_use_callback = on_use_callback or actor.on_use
actor_on_take_from_ground[db.id] = function(actor)
local player = game.player_actor()
if not utils.check_infoporshey(player, required_infoporshey) then
player:take_item(db.id)
return false
end
end
actor.on_use = on_use_callback