师徒历练把师徒关系从挂名变成真实陪伴:师徒组队共同完成任务累计历练次数,历练档位决定出师奖励的丰厚程度。共同任务的进度判定要点是双人在场校验与双向计数,防单边刷进度是设计的关键。
---共同任务完成:四重校验后双向累加
function Mentor.taskDone(actor, masterName)
local myMaster = getplayvar(actor, 2, "MasterName")
if myMaster ~= masterName then return false end
local members = getgroupmember(actor) or {}
local together = false
for _, mate in ipairs(members) do
if mate:GetName() == masterName then together = true end
end
if not together then return false end
-- 每日历练上限 5 次
local dayKey = "MentorDaily_" .. os.date("%Y%m%d")
local today = tonumber(getplayvar(actor, 2, dayKey)) or 0
if today >= 5 then return false end
setplayvar(actor, 2, dayKey, today + 1, 0)
Mentor.bumpExp(actor, masterName)
return true
end
历练判定四重校验:徒弟有师父、师父在徒弟的组队名单里、当日历练未满 5 次。getgroupmember 的成员名比对确认双人在队,distance 的在场要求另在任务接取侧校验 10 格。每日上限的防刷保护让历练值是真实的陪伴时长而非任务数量的堆砌,工作室的自拜自刷在这里被计数器挡住。
---历练值 10/30/60 三档勋章
local TIERS = { [10] = "历练铜章", [30] = "历练银章", [60] = "历练金章" }
function Mentor.bumpExp(actor, masterName)
local exp = tonumber(getplayvar(actor, 2, "MentorExp")) or 0
exp = exp + 1
setplayvar(actor, "HUMAN", "MentorExp", exp, 1)
for tier, medal in pairs(TIERS) do
if exp == tier then
giveitem(actor, medal, 1)
sendmsg(actor, 1, "获得师徒勋章:" .. medal)
end
end
if exp == 60 then
QF_Broadcast(actor:GetName() .. " 与师父 " .. masterName .. " 的历练达满档金章!")
end
end
历练值落库持久,10、30、60 三档勋章由 giveitem 发放,勋章是出师奖励档位的判定依据:金章徒弟的出师礼包翻倍,金章师父的名师礼盒追加稀有材料。历练的覆盖面宽:主线、日常、副本首通都计入,师徒一起玩什么都算数,陪伴本身就是被奖励的行为。金章的全服播报是师徒情的公共认证,收徒的师父在招募频道的说服力因此加成。
历练的每日分布统计,单日打满 5 次上限的师徒占比反映活跃师徒的投入程度;勋章的发放数与历练值的对账。
在场校验曾经用坐标瞬读,瞬移药水让师父瞬移到场边打卡即走,改为组队期间的时间加权在场(组队时长占比过半才计历练)。历练值的双向累加在师徒解绑后出现归属争议,解绑时冻结双方历练值并公示规则,事前透明优于事后扯皮。计数器的日期键曾经用天索引没带月份,跨月后键冲突,日期串带年月日。
历练的档位值与每日上限进配置,档位的勋章名可按赛季换皮。师徒历练的进度在师徒面板双向可见,目标的透明是陪伴的驱动。历练任务的定义开放给运营配置,每季度的历练主题轮换保持新鲜。
本文由 996 技术组基于 996 引擎官方知识库与浮生梦老师课程体系整理。团队长期从事传奇类引擎 Lua 后端逻辑、客户端界面与商业版本交付,内容以官方知识库与真实项目为出处,按版本持续修订。
全站技术干货持续更新:996 引擎 / Lua 实战帖,语法、参数与示例一篇讲透。进入文章地图 · 查看全部 →
实战应用:用在哪里 盟重矿洞挖出的黑曜石除了堆仓库没有去向,矿工玩法缺一条消耗链。黑市商人每 4 小时换一批限时货架,6 个…
实战应用:用在哪里 盟重码头到沙巴克水路要 20 分钟,商船运货收益高但会被半兽海盗打劫,单人押船九死一生。码头护航做成对抗…
实战应用:用在哪里 拍卖行竞拍高峰,一件屠龙刀 1 秒能产生 60 条竞价事件,逐条 sendluamsg 下发,竞拍面板每…
实战应用:用在哪里 金盒转盘 8 格奖池,普通奖越来越疲,大奖既要概率递增又不能失控。动态权重轮盘:每抽一次普通奖权重缩减 …
实战应用:用在哪里 周年庆礼包开领 30 分钟,3000 名玩家多领了一份礼盒,回收与舆情处理耗掉两天。事故根因简单得刺眼:…
实战应用:用在哪里 一次回档让玩家的裁决之杖从强化 7 退回 5,口头承诺补偿却没有账可查。强化流水把每次强化的时间、道具、…