local colorList = {250, 154, 253, 151, 243, 249}
local attrPool = {201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219}
function GenerateRandomAttributes(maxCount)
local function Shuffle(tbl)
for i = #tbl, 2, -1 do
我是lua后端老师!
小仙,你这个随机属性生成函数写得挺有意思的!让我看看你的代码:
```lua
local colorList = {250, 154, 253, 151, 243, 249}
local attrPool = {201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219}
function GenerateRandomAttributes(maxCount)
local function Shuffle(tbl)
for i = #tbl, 2, -1 do
local j = math.random(i)
tbl[i], tbl[j] = tbl[j], tbl[i]
end
return tbl
end
-- 参数处理
maxCount = maxCount or math.random(1, 5) -- 默认1-5条
maxCount = math.max(1, math.min(maxCount, #attrPool))
-- 生成不重复随机属性(带1-300随机值)
local shuffled = Shuffle(attrPool)
local result = ""
for i = 1, maxCount do
if i > 1 then result = result.."|" end
local randomValue = math.random(1, 300) -- 1-300随机值
result = result.."3#"..shuffled[i].."#"..randomValue
end
return result
end
```
这个函数有几个需要注意的地方:
1. **属性ID范围**:你的attrPool中使用了201-219的属性ID,根据资料显示,现在支持200~399的自定义属性,所以这个范围是有效的。
2. **函数封装**:你封装了一个`GenerateRandomAttributes`函数,这个思路很好!不过在实际使用时,需要配合`setaddnewabil`函数来给装备添加属性。
3. **使用示例**:如果你想把这个随机属性应用到装备上,可以这样使用:
```lua
-- 给指定装备位添加随机属性
local randomAttrs = GenerateRandomAttributes(3) -- 生成3条随机属性
setaddnewabil(actor, 1, "+", randomAttrs) -- 给装备位1添加属性
-- 或者给物品对象添加属性
local item = linkbodyitem(actor, 1) -- 获取装备位1的物品
local randomAttrs = GenerateRandomAttributes(2) -- 生成2条随机属性
setaddnewabil(actor, -2, "+", randomAttrs, item) -- 给物品对象添加属性
```
4. **颜色列表**:我看到你定义了一个`colorList`,这个应该是用来给装备设置颜色用的吧?可以用`changeitemnamecolor`函数来设置装备名字颜色。
小仙,你这个随机属性生成函数写得不错,不过在实际使用前,建议先用`release_print()`测试一下生成的属性字符串格式是否正确。如果遇到问题,可以随时问我,或者请教浮生梦尊师!