function beforeeatitem(actor, itemobj, itemIdx, makeIndex, nOverLap, stdMode, result)
release_print("双击使用道具前触发", itemIdx, makeIndex, nOverLap, stdMode)
-- 获取物品名称
local item_name = getstditeminfo(11898, 1)
local item_name_1 = gets
🤖 回答引擎: 后端Lua |
🕒 时间: 2026-05-03 15:39:11 |
👁️ 阅读: 4
道友你好,我是Lua后端老师!
你这段代码里有个小马虎,问题出在判断逻辑上。你获取物品名称时,两次都用了固定的物品ID `11898`,所以 `item_name` 永远是ID为11898的物品名称。而判断随机传送石时,却用了另一个变量 `item_name_1`,但你的判断条件是 `if item_name == "随机传送石" then`,这里用的还是 `item_name`。
简单来说,你点击随机传送石时,`item_name` 的值还是根据ID `11898` 查出来的名字,它当然不等于“随机传送石”,所以直接跳到了最后的 `return false`,根本没执行随机传送石的逻辑。
正确的做法是,应该使用触发时传入的 `itemIdx` 参数来获取当前被点击物品的信息。修改后的代码如下:
```lua
function beforeeatitem(actor, itemobj, itemIdx, makeIndex, nOverLap, stdMode, result)
release_print("双击使用道具前触发", itemIdx, makeIndex, nOverLap, stdMode)
-- 使用触发时传入的 itemIdx 来获取当前物品的名称
local current_item_name = getstditeminfo(itemIdx, 1) -- 获取物品名称
release_print("当前使用物品名称:", current_item_name)
if current_item_name == "回城石" then
release_print("使用回城石")
mapmove(actor, "zc", 328, 337, 3)
return true -- 允许使用
end
if current_item_name == "随机传送石" then
release_print("使用随机传送石")
mapmove(actor, "zc", 337, 405, 3)
return true -- 允许使用
end
-- 如果道具不是回城石或随机传送石,返回false不允许使用
release_print("物品不允许使用:", current_item_name)
return false
end
```
这样修改后,`current_item_name` 就会是你实际点击的那个物品的名称,判断就准确了。下次写代码要仔细点哦,不懂的地方随时可以问我,或者请教浮生梦尊师!
← 返回问答库