对怪物施放的技能有自己的剧本:捕捉宠物的驯服判定、对 BOSS 施毒的仇恨加成、狩猎任务的计数——magmonfunc(X) 在对目标怪物使用技能时触发,人怪之间的技能交互全挂在这里。
---magmonfunc(X): 对目标怪物使用技能触发
---以驯服术(技能 ID 50)为例
function magmonfunc50(self, monObject)
local player = class(self)
if not player then return end
-- 只可驯服可捕捉类怪物
if not monObject.capturable then
sendmsg(self, 1, "该怪物无法被驯服")
return
end
-- 捕捉的成功率与怪物残血相关
local hpRate = monObject:GetHp() / monObject:GetMaxHp()
local rate = math.floor((1 - hpRate) * 60) + 20
if math.random(1, 100) <= rate then
Pet.tame(self, monObject)
sendmsg(self, 1, "驯服成功!新伙伴入列")
else
sendmsg(self, 1, "驯服失败,把它打到残血再试")
end
end
驯服的判定与怪物的残血挂钩:血量越低成功率越高(满血 20%、空血 80%),打残再捉的玩法让驯服有操作的空间。monObject 的可捕捉标记按怪物的配置分组:普通怪可捉、精英与 BOSS 不可捉——捕捉的边界在配置层划清,祖玛教主不可能成为宠物。驯服的数量上限与已有的宠物数联动(上限 2 只),宠物的仓库与出战的分账清晰。
---狩猎任务:对特定怪的技能计数
function MagicHunt.count(self, monObject, MagicId)
local player = class(self)
if not player then return end
local questId = getplayvar(self, 2, "HuntQuest")
if not questId or questId == "" then return end
local target = MagicHunt.targetOf(questId)
if monObject.name == target
and MagicId == MagicHunt.skillId then
local n = tonumber(getplayvar(self, 2,
"Hunt_" .. questId)) or 0
setplayvar(self, 2, "Hunt_" .. questId, n + 1, 0)
if n + 1 >= 10 then
sendmsg(self, 1, "狩猎完成!回去交付吧")
end
end
end
狩猎的计数按技能限定:必须用指定的技能(比如用冰咆哮冻结 10 只沃玛战士)才算进度——技能的定向使用让任务的完成方式有讲究。monObject 的参数带怪物的名称与状态,狩猎的校验按名字与技能的双条件匹配。触发与 killmon 的分工:magmonfunc 管技能的交互(驯服、标记、计数),killmon 管击杀的结算,两个钩子的职责不重叠。
驯服的成功率与设计曲线的偏差监控,捕捉率的数据验证残血公式的手感;狩猎任务的完成率统计,定向技能的要求是否被玩家接受看完成率。
残血的概率曾经可以打至 1 血后百分百捕捉,BOSS 级的怪物因此被量产,可捕捉的分组与上限封住。monObject 曾经被直接当对象调方法,字符串的转换补上 getplayerbyname 同族的修正。狩猎的计数曾经不限定技能,普攻也计进度,定向的要求失去意义。
可捕捉的怪物清单进配置,捕捉的难度曲线按宠物档位设计。狩猎的任务模板进任务系统,定向技能的要求写明在任务描述。驯服的宠物资质随机区间公示,捕捉的期望管理靠透明。
本文由 996 技术组基于 996 引擎官方知识库与浮生梦老师课程体系整理。团队长期从事传奇类引擎 Lua 后端逻辑、客户端界面与商业版本交付,内容以官方知识库与真实项目为出处,按版本持续修订。
全站技术干货持续更新:996 引擎 / Lua 实战帖,语法、参数与示例一篇讲透。进入文章地图 · 查看全部 →
实战应用:用在哪里 版本更新上线后突然下架了某件热销商品,但更新公告里没有提到这件事。玩家发现后截图传播,两小时内贴吧帖子超…
实战应用:用在哪里 技能升级后缺少视觉与听觉反馈,玩家不确定升级是否成功。技能升级反馈在升级成功的瞬间展示金色光效、播放升级…
实战应用:用在哪里 点击其他玩家的角色时默认弹出查看面板,但在战斗中玩家希望点击即攻击。双击检测在单击查看的基础上增加双击攻…
实战应用:用在哪里 灵宠在战斗中作用有限,玩家养了宠物但缺少日常互动。灵宠派遣让宠物成为玩家的探索伙伴:派遣灵宠外出探索获取…
实战应用:用在哪里 宠物养成线只有喂食和升级,缺少宠物之间的对抗玩法。宠物竞技让两只宠物在专属竞技场进行自动对战,玩家通过调…
实战应用:用在哪里 测试环境直接复制生产库会把真实玩家数据暴露给开发和测试人员,存在隐私泄露风险。脱敏测试库的搭建分三步:从…