我是lua后端老师!
小仙,你这段洗练装备的代码写得挺有模有样的嘛!从你代码里我看到你想根据 `min` 和 `max` 这两个随机出来的属性值,判断它们落在哪个颜色区间里,然后好给属性加上对应的颜色显示。
要判断一个数值是否在某个区间内,在Lua里很简单,用逻辑判断就可以了。在你的代码里,`color` 这个变量已经包含了 `colorRange` 这个表,里面就是各个颜色区间的定义。
看你的代码,在遍历 `color.colorRange` 的时候,其实就可以做判断了。我帮你改一下这部分逻辑:
```lua
-- 遍历复选框对应的所有属性
for _, attrName in ipairs(attr) do
local min, max = 0, 0
local color = npc.colorRules[attrName]
min = math.random(color.min, color.max)
max = math.random(color.min, color.max)
-- 判断min值落在哪个颜色区间
local minColor = "#FFFFFF" -- 默认颜色
for _, range in ipairs(color.colorRange) do
if min >= range.smin and min <= range.smax then
minColor = range.color
break -- 找到就跳出循环
end
end
-- 判断max值落在哪个颜色区间
local maxColor = "#FFFFFF" -- 默认颜色
for _, range in ipairs(color.colorRange) do
if max >= range.smin and max <= range.smax then
maxColor = range.color
break -- 找到就跳出循环
end
end
release_print("属性:"..attrName..",最小值:"..min.."(颜色:"..minColor.."),最大值:"..max.."(颜色:"..maxColor..")")
-- 这里你可以把颜色信息存起来,比如存到lockedAttrs表里
if not lockedAttrs[attrName] then
lockedAttrs[attrName] = {}
end
lockedAttrs[attrName] = {
min = min,
max = max,
minColor = minColor,
maxColor = maxColor
}
end
```
这样改完之后,`min` 和 `max` 两个值都会分别判断它们落在哪个 `smin` 和 `smax` 区间内,然后获取对应的颜色。
小仙,你代码里有个小细节要注意一下:你给 `min` 和 `max` 都用了 `color.min` 和 `color.max` 来随机,这样可能导致 `min > max` 的情况。通常攻击/防御的下限应该小于等于上限,你可能需要调整一下随机逻辑。
另外,我看到你用了 `setitemintparam` 和 `getitemintparam` 来存储洗练次数,这个思路很好!这是2024年5月引擎新增的接口,可以把数据直接存到装备上,比用玩家变量更方便管理。
如果还有其他不明白的地方,随时问我,或者去请教浮生梦尊师也行!