道士的宝宝是半个自己:召唤麒麟、指挥跟随、下令攻击,宝宝的行为全部由玩家的指令驱动。宝宝指令的协议要点是召唤的权威校验、指令的下发与宝宝状态的回传——人宠合一的手感靠协议的顺畅。
---召唤:校验后引擎生成宝宝
function Pet.summon(actor)
local player = class(actor)
if not player then return false end
-- 召唤兽数量上限:道士 2 只
local cnt = Pet.countOf(actor)
if cnt >= 2 then
sendmsg(actor, 1, "召唤兽数量已达上限")
return false
end
if not checkitemw(actor, "魔法药", 5) then
sendmsg(actor, 1, "蓝量不足,无法召唤")
return false
end
takeitem(actor, "魔法药", 5, 0, "召唤消耗")
recallmob(actor, "麒麟", 1)
sendmsg(actor, 1, "麒麟已听候差遣")
return true
end
召唤的校验三件事:数量上限(道士同时 2 只)、蓝耗的支付、职业的资格。recallmob 按名字生成宝宝,宝宝的属性随主人的等级与技能等级成长——召唤神兽的等级是道士的看家功夫。宝宝的归属绑定主人,转赠与拾取的宝宝归属不可转移,宝宝的所有权清晰。
---指令协议:跟随、攻击、停留
function Pet.command(actor, petIdx, cmd, targetId)
local player = class(actor)
if not player then return false end
-- 归属校验:只能指挥自己的宝宝
if not Pet.ownedBy(actor, petIdx) then
sendmsg(actor, 1, "宝宝归属不符")
return false
end
local pet = Pet.of(actor, petIdx)
if cmd == "follow" then
pet.mode = "follow"
sendmsg(actor, 1, "宝宝已切换为跟随")
elseif cmd == "attack" then
pet.target = targetId
pet.mode = "attack"
sendmsg(actor, 1, "宝宝出击!")
elseif cmd == "stay" then
pet.mode = "stay"
sendmsg(actor, 1, "宝宝原地待命")
end
return true
end
指令的协议三要素:宝宝的索引、指令字、目标(攻击指令才带)。归属的校验在指令的入口——指挥别人的宝宝是协议层的越权,改包的指令在归属的比对处被拒。宝宝的 AI 三态:跟随(贴身半格的随行)、攻击(锁定目标追击)、停留(原地警戒),状态的切换由指令驱动、被打的反击自动触发。状态的回传按需推送:宝宝的位置变化走同屏的移动同步,血量与状态的变化走独立的小包,宝宝的存活状态在主人的面板常驻显示。
指令的频控监控,单玩家每秒的宝宝指令超过 5 次按宏处理;宝宝与主人的距离衰减统计,跟随的断联距离调参有数据可依。
归属的校验曾经只在召唤时做,拾取别人遗落的宝宝后指令错乱,每次指令的归属复查修复。攻击的目标曾经不校验敌我,宝宝打了同队的队友,目标合法性加阵营过滤。跟随的寻路曾经逐帧计算,宝宝多时的寻路开销拖累帧率,路径的缓存与节流让三只宝宝轻装上阵。
宝宝的属性成长曲线与主人的等级挂钩的公式进配置,宝宝的上限按职业定档。指令的快捷键默认位与技能栏互补,人宠的协同不抢键位。宝宝的死亡与复活规则公示:战死的宝宝回栏冷却 60 秒,道士的召唤是可持续的资源。
本文由 996 技术组基于 996 引擎官方知识库与浮生梦老师课程体系整理。团队长期从事传奇类引擎 Lua 后端逻辑、客户端界面与商业版本交付,内容以官方知识库与真实项目为出处,按版本持续修订。
全站技术干货持续更新:996 引擎 / Lua 实战帖,语法、参数与示例一篇讲透。进入文章地图 · 查看全部 →
实战应用:用在哪里 付费玩家的付费点集中在商城,成长线里缺一个长期投入的钩子。成长基金让玩家在低等级时一次性买入,随等级提升…
实战应用:用在哪里 行会联赛打得不热闹,观战人数不到参赛人数的一半。联赛竞猜给观战者一张入场券:用竞猜币押注胜负,赔率随投注…
实战应用:用在哪里 七夕限时活动原计划七天,上线第二天下午整点活动面板突然关闭,奖励领了一半,玩家以为被砍了福利,两小时内工…
实战应用:用在哪里 HTTPS 证书过期一次,全服登录白屏了半个多小时,值班才发现证书没人管。证书续期机制把到期日写进系统变…
实战应用:用在哪里 从行会面板点进成员列表再点开个人名片,连按返回键直接退回了主城,中间两层界面全部跳过。界面堆栈管理用一张…
实战应用:用在哪里 限时商城的稀缺商品上架即被抢,玩家错过窗口感觉被区别对待。商城橱窗把每件限时商品的下架时间做成可视化倒计…