function do_duihuan(actor, index)
local index = tonumber(index)
local sycee_count = config.duihuanfuwu[index].sycee_count
local gold_count = config.duihuanfuwu[index].gold_count
if not Util:CheckMoney(actor, "元宝", sycee_count) then
🤖 回答引擎: 后端Lua |
🕒 时间: 2026-06-12 22:23:14 |
👁️ 阅读: 8
我是lua后端老师!
小仙,你的代码逻辑看起来没问题,但问题可能出在 **`changemoney` 函数的参数顺序**上。在996引擎中,`changemoney` 的第二个参数是 **货币类型**,但这里的“1=金币、2=元宝”需要确认是否对应引擎的货币ID。通常引擎的货币ID是固定的(比如1是金币、2是元宝),但建议你检查一下引擎文档或配置表。
另外,**`changemoney` 的第三个参数是操作符**,你写的是 `"-"` 和 `"+"`,这是正确的。不过,如果货币类型ID不对,就不会生效。
还有一个可能:**元宝是否绑定**?如果玩家身上的元宝是绑定的,而 `changemoney` 默认操作非绑定货币,也会导致扣除失败。
你可以先打印一下参数,确认传入的值是否正确:
```lua
function do_duihuan(actor, index)
local index = tonumber(index)
local sycee_count = config.duihuanfuwu[index].sycee_count
local gold_count = config.duihuanfuwu[index].gold_count
release_print("元宝数量:", sycee_count, "金币数量:", gold_count) -- 打印检查
if not Util:CheckMoney(actor, "元宝", sycee_count) then
Msg:sendMsg9(actor, "元宝不足,需要" .. sycee_count .. "元宝", false)
return
end
changemoney(actor, 2, "-", sycee_count, "扣除元宝") -- 注意货币ID是否为2
changemoney(actor, 1, "+", gold_count, "增加金币") -- 注意货币ID是否为1
Msg:sendMsg9(actor, sycee_count .. "元宝兑换成功,获得金币" .. Util:formatNumber(gold_count), true)
end
```
如果还是不行,建议检查:
1. **货币ID**是否正确(参考引擎的货币配置)。
2. **玩家对象 `actor`** 是否有效(确保是字符串形式的玩家ID)。
3. **`Util:CheckMoney`** 函数是否正常判断元宝数量。
如果还有疑问,随时找我,或者请教浮生梦尊师!
我是lua后端老师!
小仙,你的代码逻辑看起来没问题,但问题可能出在 **`changemoney` 函数的参数顺序**上。在996引擎中,`changemoney` 的第二个参数是 **货币类型**,但这里的“1=金币、2=元宝”需要确认是否对应引擎的货币ID。通常引擎的货币ID是固定的(比如1是金币、2是元宝),但建议你检查一下引擎文档或配置表。
另外,**`changemoney` 的第三个参数是操作符**,你写的是 `"-"` 和 `"+"`,这是正确的。不过,如果货币类型ID不对,就不会生效。
还有一个可能:**元宝是否绑定**?如果玩家身上的元宝是绑定的,而 `changemoney` 默认操作非绑定货币,也会导致扣除失败。
你可以先打印一下参数,确认传入的值是否正确:
```lua
function do_duihuan(actor, index)
local index = tonumber(index)
local sycee_count = config.duihuanfuwu[index].sycee_count
local gold_count = config.duihuanfuwu[index].gold_count
release_print("元宝数量:", sycee_count, "金币数量:", gold_count) -- 打印检查
if not Util:CheckMoney(actor, "元宝", sycee_count) then
Msg:sendMsg9(actor, "元宝不足,需要" .. sycee_count .. "元宝", false)
return
end
changemoney(actor, 2, "-", sycee_count, "扣除元宝") -- 注意货币ID是否为2
changemoney(actor, 1, "+", gold_count, "增加金币") -- 注意货币ID是否为1
Msg:sendMsg9(actor, sycee_count .. "元宝兑换成功,获得金币" .. Util:formatNumber(gold_count), true)
end
```
如果还是不行,建议检查:
1. **货币ID**是否正确(参考引擎的货币配置)。
2. **玩家对象 `actor`** 是否有效(确保是字符串形式的玩家ID)。
3. **`Util:CheckMoney`** 函数是否正常判断元宝数量。
如果还有疑问,随时找我,或者请教浮生梦尊师!
← 返回问答库