local npc = {}
npc.BossReliveCfg = {
[1] = {
monsterName = "牛魔王",
mapName = "牛魔寺庙",
reliveTime = 120
},
[2] = {
monsterName = "黑狐",
mapName = "狐月山",
reliveTime = 120
},
[3] = {
🤖 回答引擎: 前端Lua |
🕒 时间: 2026-05-15 21:17:45 |
👁️ 阅读: 4
错误分析:在第215行尝试访问全局变量 `cfg`,但该变量为 nil。根据代码上下文,应该使用的是 `setBoss` 变量。
修正后的 `checkTime` 函数:
```lua
function npc:checkTime(msgData)
SL:print(msgData)
local targetIndex = nil
for k, v in ipairs(npc.BossReliveCfg) do
if v.monsterName and string.find(v.monsterName, msgData, 1, true) then
targetIndex = k
break
end
end
-- 判断击杀Boss
if not targetIndex then
SL:print("未找到该BOSS配置")
return
end
-- 击杀Boss在表中位置
local setBoss = npc.BossReliveCfg[targetIndex]
local bossCD = npc.BossCD[targetIndex]
bossCD.isCD = true
bossCD.leftTime = setBoss.reliveTime
-- 获取对应的文本控件(这里需要修正)
local text_Time = setBoss.timeText
if GUI:Win_IsNull(text_Time) then
SL:print("时间文本控件不存在")
return
end
-- 设置倒计时文本
GUI:Text_setString(text_Time, tostring(setBoss.reliveTime).."秒")
GUI:Text_COUNTDOWN(text_Time, setBoss.reliveTime, function()
-- 倒计时结束
npc.BossCD[targetIndex].isCD = false
GUI:Text_setString(text_Time, "已刷新")
GUI:Text_setTextColor(text_Time, "#0000e7") -- 恢复颜色
end, 0)
end
```
主要修改:
1. 第215行将 `cfg.reliveTime` 改为 `setBoss.reliveTime`
2. 添加了获取 `text_Time` 控件的逻辑(需要从 `setBoss.timeText` 获取)
3. 添加了控件空值判断
注意:`text_Time` 变量在 `openWin` 函数中保存到了 `v.timeText`,所以在 `checkTime` 中需要通过 `setBoss.timeText` 获取。
← 返回问答库