CHUAN2 DEV ENGINE
996 正版授权研发中心 · 360 授权合作教学中心 · 抖音传奇直播合作授权 · 快手推广运营商授权
OFFICIAL LICENSED ACADEMY 查验官方授权证书 →
// 威海旷世互娱教学基地 · 技术文章
框架设计

【框架设计】NPC 仇恨系统:仇恨值表与嘲讽逻辑的实现

2026-09-23 16:56 作者:996 技术组 0 阅读 996引擎Lua教程传奇脚本

实战应用:用在哪里

多人战斗里"怪打谁"由仇恨系统决定:输出职业拉走 Boss、坦克嘲讽稳怪、治疗仇恨失控被追杀——仇恨的合理性直接影响战斗体验。仇恨系统核心是一张按怪物维护的仇恨值表,伤害、治疗、嘲讽、距离衰减都会修改表内容。

仇恨值表与事件加权

每只怪物维护一张目标 → 仇恨值 的表,事件按权重累加:

lua

local THREAT_WEIGHT = { damage = 1.0, heal = 0.5, taunt = 999999, assist = 0.5 }

function Threat.add(monster, targetId, kind, amount)
    monster.threat[targetId] = (monster.threat[targetId] or 0) + amount * THREAT_WEIGHT[kind]
end

function Threat.top(monster)
    local best, bestVal = nil, -1
    for targetId, val in pairs(monster.threat) do
        if val > bestVal then best, bestVal = targetId, val end
    end
    return best
end

伤害按数值加权、治疗按治疗量的一半加权(治疗失控是仇恨事故的经典来源)、嘲讽直接写入一个超大值并在持续期内锁定目标。

归还与衰减两条规则

脱战衰减:目标离开视野或死亡时,其仇恨条目按每秒 10% 衰减直至清除,防止死玩家的仇恨占位导致怪物原地发呆。嘲讽到期回落:嘲讽结束时把嘲讽值衰减到当前第二大仇恨的水平(而不是立即清零),怪物平滑回到原目标,不出现突然掉头。

数值与表现的一致性

仇恨目标切换时给客户端发一条目标变更消息,前端同步调整朝向与攻击对象,避免服务端已切目标、客户端还打旧目标的两秒错位。仇恨表的调试入口:GM 命令打印指定怪物的完整仇恨表(目标、数值、来源事件),团本 Boss 仇恨混乱的问题十有八九在这份表里一眼可见。仇恨系统的参数(各事件权重、衰减速率)放配置表,不同 Boss 可配不同的仇恨敏感度,为战术设计留出空间。

仇恨表的内存规模按怪物并发量预估:单怪平均 5 个仇恨条目、500 只活跃怪,整表不超过 10M。清理时机与怪物销毁绑定,World 销毁流程里把 threat 表一并清空,防止怪物重生后继承上一世的仇恨。

本文由 996 技术组基于 996 引擎官方知识库与浮生梦老师课程体系整理。团队长期从事传奇类引擎 Lua 后端逻辑、客户端界面与商业版本交付,内容以官方知识库与真实项目为出处,按版本持续修订。

作者履历与出处

本文由 996 技术组基于 996 引擎官方知识库与浮生梦老师课程体系整理。团队长期从事传奇类引擎 Lua 后端逻辑、客户端界面与商业版本交付,内容以官方知识库与真实项目为出处,按版本持续修订。

← 返回文章地图返回研学路径

最新技术文章 · 实战干货

LATEST ARTICLES

全站技术干货持续更新:996 引擎 / Lua 实战帖,语法、参数与示例一篇讲透。进入文章地图 · 查看全部 →

后端接口成就属性加成

【后端接口】成就点数兑换:全局属性加成的结算接口设计

实战应用:用在哪里 成就点数不该只是数字摆设:点数商店兑换永久属性加成,50分换百分之一攻击,上限百分之五。兑换接口管三件事…

2026-09-23 17:04 996 技术组 · 0 阅读
界面UI

【界面UI】UI 合图自动化:纹理打包流水线与命名规范

实战应用:用在哪里 UI 合图(把零散小图打包成图集)是 DrawCall 合批的前提(合批原理参考前篇)。手工打包的问题:…

2026-09-23 17:04 996 技术组 · 0 阅读
数据存储

【数据存储】SQLite WAL 模式:读写并发实测与开启方法

实战应用:用在哪里 SQLite 默认的回滚日志模式在写入时会阻塞读取(写锁独占),游戏服务端“边写日志边查配置”的场景会出…

2026-09-23 17:04 996 技术组 · 0 阅读
框架设计

【框架设计】PK 模式:攻击范围的开关与误伤保护

实战应用:用在哪里 烈火剑法甩出去的瞬间最怕砍到队友:PK 模式是攻击的准星开关——和平、组队、行会、全体四种模式决定谁的技…

2026-09-23 17:04 996 技术组 · 0 阅读
玩法策划大逃杀缩圈

【玩法策划】大逃杀缩圈:借鉴吃鸡玩法的安全区收缩设计

实战应用:用在哪里 把大逃杀的缩圈机制搬进沙巴克野区:五十人无阵营乱斗,安全区每六十秒收缩一圈,圈外持续掉血,终局幸存者独享…

2026-09-23 17:04 996 技术组 · 0 阅读
运维发布停服维护运营

【运维发布】发布窗口选择:用在线人数曲线定停服时机

停服更新最怕撞上在线高峰,踢掉几百人换来一片抱怨。选对发布窗口,同样的更新内容,玩家体验是两回事。本文讲如何用996引擎的在…

2026-09-23 17:04 996 技术组 · 0 阅读