-- server.lua
local luosha_server = {}
-- 装备定义
local EQUIPMENTS = {
{id = 51433, name = "【禁忌ミ魂器】·罗刹骨", prob = 50, desc = "略有聪慧,但威力不俗。"},
{id = 51434, name = "【神级ミ魂器】·罗刹骨", prob = 30, desc = "锻造精良,蕴含修罗战意。"},
{id = 51435, name = "【至尊ミ魂器】·罗
🤖 回答引擎: 后端Lua |
🕒 时间: 2026-03-26 19:37:38 |
👁️ 阅读: 9
我是lua后端老师!
小仙,我来帮你分析一下这段代码的问题。首先让我看看你的逻辑:
```lua
elseif arg2 == 1 then
local hasSubmitted = getflagstatus(actor, 504) or 0
if hasSubmitted == 1 then
return
else
addattlist(actor, "罗刹属性", "+", "3#214#5")
end
if rlv < 1 then
lib:msg(actor, "你还没有提交相应物品,无法进行打造。", 1)
return
end
```
问题很明显了!**你的逻辑顺序有问题**。当 `hasSubmitted == 1` 时,你直接 `return` 了,这意味着如果玩家已经打造过一次(flag 504为1),点击arg2==1时整个函数就直接结束了,后面的打造逻辑都不会执行!
你需要的是:**检查是否为第一次打造,如果是就加属性,然后继续执行打造逻辑**。而不是直接返回。
修改后的代码应该是这样:
```lua
elseif arg2 == 1 then
local hasSubmitted = getflagstatus(actor, 504) or 0
-- 如果是第一次打造,先给属性
if hasSubmitted == 0 then
addattlist(actor, "罗刹属性", "+", "3#214#5")
setflagstatus(actor, 504, 1) -- 标记为已打造过
end
if rlv < 1 then
lib:msg(actor, "你还没有提交相应物品,无法进行打造。", 1)
return
end
-- 重置随机数种子
math.randomseed(tostring(os.time()):reverse():sub(1, 7))
local randomNum = math.random(1, totalProb)
release_print("随机数:", randomNum, "总概率:", totalProb)
-- ... 后面的打造逻辑保持不变
```
注意我做了几个关键修改:
1. 把 `setflagstatus(actor, 504, 1)` 移到了给属性之后
2. 去掉了错误的 `return`
3. 逻辑变成了:检查是否第一次 → 给属性 → 标记已打造 → 继续执行打造
另外还有一个问题,你在代码后面又设置了一次 `setflagstatus(actor, 504, 1)`,这是重复的,可以去掉。
小仙,这种逻辑顺序错误在编程中很常见,下次写代码时要仔细梳理一下执行流程。记得先想清楚:**每一步应该在什么条件下执行,执行后会不会影响后续步骤**。
还有不懂的可以问浮生梦尊师!
← 返回问答库