你的代码中金币检查逻辑有问题。主要问题在于:
1. **检查条件判断错误**:`if next_data and lib and lib.checkitem then` - `next_data` 变量在你的代码中从未定义,所以这个条件始终为 `false`,导致检查逻辑被跳过
2. **检查数据结构不匹配**:即使条件成立,你使用的 `checkitem` 函数参数格式也不正确
根据浮生梦老师前端课程内容,正确的金币检查应该这样写:
```lua
-- 普通转动按钮点击事件
local btnNormal = ui.btn_normal -- 普通转动按钮
if btnNormal and not GUI:Win_IsNull(btnNormal) then
GUI:addOnClickEvent(btnNormal, function()
if isSpinning then
lib:msg("正在转动中,请稍候!")
return
end
-- 正确的金币检查方式
local currentGold = tonumber(SL:GetMetaValue("MONEY", 1)) or 0
local requiredGold = 250000
if currentGold < requiredGold then
lib:msg("金币不足,需要" .. requiredGold .. "金币")
return
end
SL:Print("点击普通转动按钮,金币足够")
xingyunzhuanlun.spin(false) -- 普通转动
-- 发送消息给服务器
local msg = {}
msg.Script = xingyunzhuanlun.param1
local jsonstr = SL:JsonEncode(msg)
SL:SendLuaNetMsg(58003, xingyunzhuanlun.param2, 0, 0, jsonstr)
end)
end
-- 高级转动按钮点击事件
local btnAdvanced = ui.btn_advanced -- 高级转动按钮
if btnAdvanced and not GUI:Win_IsNull(btnAdvanced) then
GUI:addOnClickEvent(btnAdvanced, function()
if isSpinning then
lib:msg("正在转动中,请稍候!")
return
end
-- 正确的金币和元宝检查
local currentGold = tonumber(SL:GetMetaValue("MONEY", 1)) or 0
local currentYuanbao = tonumber(SL:GetMetaValue("MONEY", 2)) or 0
local requiredGold = 250000
local requiredYuanbao = 20000
if currentGold < requiredGold then
lib:msg("金币不足,需要" .. requiredGold .. "金币")
return
end
if currentYuanbao < requiredYuanbao then
lib:msg("元宝不足,需要" .. requiredYuanbao .. "元宝")
return
end
xingyunzhuanlun.spin(true) -- 高级转动
-- 发送消息给服务器
local msg = {}
msg.Script = xingyunzhuanlun.param1
local jsonstr = SL:JsonEncode(msg)
SL:SendLuaNetMsg(58003, xingyunzhuanlun.param2, 1, 0, jsonstr)
end)
end
```
**问题分析:**
1. `next_data` 变量在你的代码中从未定义,所以 `if next_data and lib and lib.checkitem then` 这个条件永远为 `false`
2. 即使条件成立,你使用的 `checkitem` 函数参数格式也不正确
3. 应该直接使用 `SL:GetMetaValue("MONEY", 1)` 获取金币数量进行判断
**建议:**
1. 删除 `next_data` 相关的检查逻辑
2. 使用 `SL:GetMetaValue` 直接获取货币数量进行判断
3. 在检查失败时使用 `return` 提前结束函数执行,避免继续发送消息给服务器
这样修改后,当金币不足时,前端就会直接提示并阻止按钮点击,不会发送消息给服务器,后端也就不会收到金币不足的请求了。