GUI:addOnClickEvent(npc.ui.Button_1, function()
local data = SL:GetMetaValue("EQUIP_DATA", 3) or {}
SL:dump(data)
local luck = data.ExAbil.abilex
local luckHas = 0
for k, v in string.gmatch(luck, "%d = %d") do
你的代码中字符串匹配方式有问题,导致无法正确解析属性值。
问题出在这一行:
```lua
for k, v in string.gmatch(luck, "%d = %d") do
```
正确的匹配模式应该是:
```lua
for k, v in string.gmatch(luck, "(%d+) = (%d+)") do
```
修改后的完整代码:
```lua
GUI:addOnClickEvent(npc.ui.Button_1, function()
local data = SL:GetMetaValue("EQUIP_DATA", 3) or {}
SL:dump(data)
local luck = data.ExAbil.abilex
local luckHas = 0
-- 使用正确的匹配模式
for k, v in string.gmatch(luck, "(%d+) = (%d+)") do
if tonumber(k) == 39 then
luckHas = tonumber(v)
end
end
SL:print(luckHas)
end)
```
**原因分析:**
- `%d`只匹配单个数字,而属性ID可能是两位数
- 没有用括号`()`捕获匹配结果
- `string.gmatch`返回的是迭代器,需要括号捕获分组
**建议:**
下次处理字符串匹配时,记得使用`(%d+)`来匹配多位数字,并用括号捕获分组值。