-- 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:34:56 |
👁️ 阅读: 4
后端Lua老师来了!小仙,你这代码我仔细看了一遍,发现几个问题导致点击arg2 == 1时没反应。
首先,你的逻辑流程有问题。在`arg2 == 1`这个分支里,你一开始就检查了`hasSubmitted`变量,如果为1就直接return了,但后面又去检查`rlv`值,这里逻辑矛盾。
```lua
-- 问题1:这里检查了flag 504,如果为1就直接return,后面的代码都不会执行
local hasSubmitted = getflagstatus(actor, 504) or 0
if hasSubmitted == 1 then
return -- 这里直接返回了,后面的代码都不执行!
else
addattlist(actor, "罗刹属性", "+", "3#214#5")
end
-- 问题2:这里才检查rlv,但上面已经可能return了
if rlv < 1 then
lib:msg(actor, "你还没有提交相应物品,无法进行打造。", 1)
return
end
```
其次,你的U56变量逻辑也有问题:
- 提交材料时设置为1
- 打造装备时又设置为3
- 回收装备时设置为2
但检查时用的是`rlv < 1`,也就是说只有U56=0时才不能打造。但你的逻辑是提交材料后U56=1,应该可以打造才对。
**建议修改方案:**
```lua
elseif arg2 == 1 then
-- 先检查是否已经打造过了
local hasSubmitted = getflagstatus(actor, 504) or 0
if hasSubmitted == 1 then
lib:msg(actor, "你已经打造过了,不能重复打造。", 1)
return
end
-- 再检查是否提交了材料
local rlv = lib:getvalueb(actor, "U56") or 0
if rlv ~= 1 then -- 注意:这里检查的是否等于1,不是小于1
lib:msg(actor, "你还没有提交相应物品,无法进行打造。", 1)
return
end
-- 添加属性(只在第一次打造时添加)
addattlist(actor, "罗刹属性", "+", "3#214#5")
-- 剩下的随机装备代码...
-- 随机数种子重置
math.randomseed(tostring(os.time()):reverse():sub(1, 7))
local randomNum = math.random(1, totalProb)
release_print("随机数:", randomNum, "总概率:", totalProb)
-- ... 随机选择装备的代码
if selectedEquip then
giveitem(actor, selectedEquip.name, 1)
-- 发送消息给前端
local msg = {
action = "show_random_equip",
equipId = selectedEquip.id,
equipName = selectedEquip.name,
equipDesc = selectedEquip.desc
}
local jsonstr = tbl2json(msg)
sendluamsg(58003, 0, 0, 0, jsonstr)
-- 设置U56为3表示已打造
lib:setvalueb(actor, "U56", 3)
-- 设置flag 504为1表示已打造过
setflagstatus(actor, 504, 1)
lib:msg(actor, "恭喜你获得了:" .. selectedEquip.name, 1)
else
lib:msg(actor, "随机生成装备失败,请重试。", 1)
end
```
小仙,注意看注释,主要是两个问题:
1. 提前return导致后面代码不执行
2. 变量检查逻辑有问题
另外提醒一下,`math.randomseed`最好在服务端启动时设置一次,不要在每次调用时都设置,这样随机性更好。不懂的可以问浮生梦尊师!
← 返回问答库