function fentian.upmain()
if not fentian.parent or not fentian.parent._ui then
return
end
local ui = fentian.parent._ui
local cfg = fentian.parent.cfg
if not cfg then
return
end
local var = tonum
我看到你的代码了。问题在于你的 `next_level` 查找逻辑有问题,导致总是找到等级9的配置,而不是等级18的配置。
让我分析一下你的代码:
```lua
-- 这里你获取了当前等级 var
local var = tonumber(lib:getstr("U13") or 0)
-- 然后查找下一个等级
local next_level = nil
for level, _ in pairs(cfg) do
if level > var then
if not next_level or level < next_level then
next_level = level
end
end
end
```
**问题分析:**
如果你的 `var` 是9,那么 `level > var` 的条件会让循环找到所有大于9的等级(18, 27, 36...)。
但是 `level < next_level` 这个比较条件会让 `next_level` 总是取最小的一个,也就是18。
**但是!** 你的配置表显示,等级9的 `cur_attr_5` 是5,等级18的 `cur_attr_5` 是10。
如果显示的是5,说明 `next_level` 实际上找到了9,而不是18。
**可能的原因:**
1. `var` 的值可能不是9,而是小于9
2. `cfg` 配置表可能不是你上面显示的那个
**调试建议:**
```lua
-- 在查找next_level之前添加调试信息
SL:Print("当前等级 var =", var)
SL:Print("cfg中的所有等级:")
for level, _ in pairs(cfg) do
SL:Print("等级:", level)
end
-- 查找下一个等级
local next_level = nil
for level, _ in pairs(cfg) do
if level > var then
SL:Print("找到大于var的等级:", level)
if not next_level or level < next_level then
next_level = level
SL:Print("更新next_level为:", next_level)
end
end
end
SL:Print("最终确定的next_level =", next_level)
```
**另外,检查一下你的配置表是否正确加载:**
```lua
-- 在函数开头添加
SL:Print("cfg配置表内容:")
for level, config in pairs(cfg) do
SL:Print("等级", level, "的cur_attr_5 =", config.cur_attr_5 or "nil")
end
```
**临时解决方案:**
如果你确定要显示等级18的属性,可以直接指定:
```lua
-- 替换查找逻辑,直接使用18
local next_level = 18
local next_cfg = cfg[next_level]
if not next_cfg then
SL:Print("错误:找不到等级18的配置")
return
end
```
先添加调试信息看看问题到底出在哪里,这样就能找到根本原因了。