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

Как правильно проверить наличие метки на объекте и удалить её из логики?

Вопрос

Как правильно проверить наличие метки на объекте и удалить её из логики?

Ответ

Для правильной проверки наличия метки и удаления её нужно использовать следующий подход:

1. Проверьте наличие метки с помощью функции `level.map_has_object_spot`.
2. Если метка присутствует, вызовите функцию `level.map_remove_object_spot` для её удаления.

Пример функции на основе предоставленного кода:
```lua
function on_use_box(box)
local box_name = box:section()
if (box_name == "deserve_rukzak" or box_name == "reward_rukzak" or box_name == "treasure_rukzak") then
local name = box:name()
if not has_alife_info(name) then
give_info(name)
xr_statistic.inc_founded_secrets_counter()
news_manager.send_treasure(1)
end
-- Проверка и удаление метки
if level.map_has_object_spot(box:id(), "treasure") ~= nil then
level.map_remove_object_spot(box:id(), "treasure")
end
if level.map_has_object_spot(box:id(), "treasure_npc") ~= nil then
level.map_remove_object_spot(box:id(), "treasure_npc")
end
end
end```

В этом примере функция проверяет наличие меток и удаляет их, если они присутствуют.