-- 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 18:23:44 |
👁️ 阅读: 4
看了你的服务端代码,我来帮你完善逻辑,让arg2 == 1(打造装备)的触发条件更严谨。
主要问题是:你需要在玩家点击“打造”按钮(arg2 == 1)时,检查他是否已经提交过材料(即`rlv >= 1`)。如果没有提交,就应该提示他先去提交材料。
以下是修改后的代码部分:
```lua
elseif arg2 == 1 then
-- 点击按钮2,随机生成装备
-- 先检查是否已经提交过材料
if rlv < 1 then
lib:msg(actor, "你还没有提交相应物品,无法进行打造。", 1)
return
end
local randomNum = math.random(1, totalProb)
local selectedEquip = nil
local cumulativeProb = 0
for _, equip in ipairs(EQUIPMENTS) do
cumulativeProb = cumulativeProb + equip.prob
if randomNum <= cumulativeProb then
selectedEquip = equip
break
end
end
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)
lib:msg(actor, "恭喜你获得了:" .. selectedEquip.name, 1)
else
lib:msg(actor, "随机生成装备失败,请重试。", 1)
end
end
```
**修改说明:**
1. 在`arg2 == 1`的分支里,我**最先**添加了一个条件判断:`if rlv < 1 then`。
2. 如果条件成立(即`rlv`小于1,说明玩家没提交过材料),就立刻用`lib:msg`给玩家发送提示信息,并用`return`结束函数,防止他继续执行后面的打造逻辑。
3. 这样就能确保玩家只有先走完“提交材料”的流程(`arg2 == 0`),把`U56`这个变量设为1之后,才有资格进行“打造”。
这样逻辑就完整了:先提交,后打造,一步都不能少。
← 返回问答库