沙巴克攻城打到一半掉线,重连回来战斗结束奖励没份,玩家积怨比掉线本身更大。掉线托管给攻城参战者一张保护网:断线期间角色由系统代管并保底结算,重连登录即解除托管,托管超 300 秒按缺席处理,奖励通过邮件补发。
断线后托管标记置位并记录时间戳,重连登录触发里第一时间解除托管,两段状态以玩家变量为唯一事实源。
local function trusteeOn(actor)
setplayvar(actor, "HUMAN", "TRUSTEE", 1)
setplayvar(actor, "HUMAN", "TRUSTEE_TS", os.time())
end
function login(actor)
setplayvar(actor, "HUMAN", "TRUSTEE", 0)
sendmsg(actor, 0, "欢迎回到战场,托管已解除")
end
托管期间攻城奖励照常结算改为邮件补发,托管时长超过 300 秒记缺席档,奖励减半发放,判定有据可查。
local function settleTrustee(actor)
if getplayvar(actor, "HUMAN", "TRUSTEE") ~= 1 then return end
local ts = tonumber(getplayvar(actor, "HUMAN", "TRUSTEE_TS") or "0")
local over = os.time() - ts > 300
local mail = "#" .. class(actor):GetName()
if over then
sendmail(mail, 932, "攻城奖励补发", "您离线超过 300 秒,按缺席档发放减半奖励", "金币25000")
else
sendmail(mail, 932, "攻城奖励补发", "您离线期间的攻城奖励照常发放", "金币50000")
end
end
断线实测验证托管置位、重连解除、300 秒缺席三分支;托管期间奖励走邮件不重复入包;缺席档金额为正常档一半。托管标记只对攻城报名名单生效,野外普通掉线不进托管流程,边界在判定入口收紧。托管角色的位置信息保持断线前坐标,重连回到原坐标继续战斗,不做任何位移补偿。监控每场攻城的托管人数与缺席比例,缺席超过一成要查网关稳定性而不是玩家网络。
托管标记只写不清,重连解除依赖 login 触发,重连后标记清零的顺序早于结算读取,出现了结算读到已清除标记的竞态,结算与标记读取在同一函数内完成。缺席档的 300 秒从断线时刻起算,网关感知断线有延迟,起算点改用末次活跃时间戳。奖励邮件的附件在邮箱满时投递失败,失败名单进入二次投递队列,投递成功率纳入监控。托管期间角色站桩被击杀,死亡责任归属引发争论,规则写明托管角色照常可被攻击。
全站技术干货持续更新:996 引擎 / Lua 实战帖,语法、参数与示例一篇讲透。进入文章地图 · 查看全部 →
实战应用:用在哪里 装备回收商 NPC 每天按评分收购玩家的装备,裁决之杖、骨玉权杖按攻击、持久加权打分,榜上只要前五名。数…
实战应用:用在哪里 沙巴克攻城是全服行会战的最高舞台:攻方砸开城门、抢占皇宫,守方依托城墙与复活点反打。规则设计的关键是节奏…
实战应用:用在哪里 影分身玩法给法师职业补上生存短板:危急时刻召唤四个影分身分担仇恨,敌人需要在六格范围内分辨真身,猜错就浪…
实战应用:用在哪里 组队邀请、行会宣战这类关键信令丢了没有兜底,玩家只能反复手点,高峰期体验很差。重试机制给信令加确认回执:…
实战应用:用在哪里 新资料片上线首日预约量常是日常十倍,一口气全开会让数据库与登录网关同时过载。滚动开区把开区动作排成队列:…
实战应用:用在哪里 百人同屏的沙巴克外围战场,每个玩家每秒跑动会触发数次位置更新,全部即时下发时广播量随人数平方增长,网关先…