传奇单机设置怪物只打怪不打人脚本与参数

来源: 作者: 点击:
一、 核心原理:Race代码与仇恨列表

传奇引擎的怪物攻击目标由数据库 Race 字段决定。默认代码(如81)会攻击视野内所有对象。要实现“怪物互殴、无视玩家”,需修改怪物属性为只攻击特定阵营(如红名或怪物),或通过脚本清空对玩家的仇恨。

二、 方案一:修改怪物数据库(最彻底)

适用于想让特定怪物(如宝宝、活动怪)永久不攻击玩家。

1. 定位文件:打开 DBC2000 或数据库工具,加载 Monster.DB。
2. 修改 Race 字段:找到目标怪物,修改 Race(攻击模式)字段。不同引擎代码略有差异,常用代码如下:
- 只攻击红名/怪物:设为 112。此代码通常代表“只主动攻击红名玩家”,对白名玩家和怪物无仇恨。需测试版本兼容性。
- 被动模式:设为 51 或 52。怪物被攻击后才还手,且只攻击打它的目标,不会主动攻击路过玩家。
3. 生效测试:保存数据库,重启服务端(M2Server),刷新怪物。怪物应无视白名玩家,仅攻击红名或其他怪物。

三、 方案二:脚本清空仇恨(动态控制)

适用于特定地图或活动,需临时改变怪物行为。在 QFunction-0.txt 或地图触发脚本中写入:
; 怪物受到攻击或看到玩家时触发
[@OnKillMob]
#ACT
; 清除该怪物对当前玩家的仇恨目标
CLEARMISSION <$CURRRTARGETNAME>
; 或强制怪物攻击附近的其他怪物/红名
; 需配合引擎支持的攻击转移命令


部分引擎支持 MOBATTACKMOB 类命令,可强制怪物将攻击目标切换为附近其他怪物。

四、 方案三:GM隐身与无敌状态(测试用)

单机测试时最快捷的方法,非脚本修改,但效果一致。

1. GM隐身:在游戏中输入 @GameMaster 开启GM模式,再输入 @Observer 进入隐身。绝大多数怪物AI无法侦测隐身GM,即使站在怪物堆中也不会被攻击。
2. 无敌模式:输入 @Superman 开启无敌。怪物虽会攻击你,但你不掉血,可观察怪物是否转向攻击其他目标。

五、 常见问题与排查

• 代码不生效:部分老引擎(如HERO)对112代码支持不佳,需替换为 11(主动攻击MOB和红人)并配合地图红名设置。

- 怪物发呆:若设为51(被动),怪物被玩家攻击后仍会反击。若想完全“不打人”,必须使用112或脚本清仇恨。
- 宝宝处理:道士召唤物(Race=100/113/114)默认攻击主人的目标。若想宝宝只打怪不打人,需修改召唤物数据库的Race,或使用脚本控制攻击对象。

推荐:单机测试建议直接使用 GM隐身模式;若制作“怪物攻城”或“怪物互殴”玩法,优先修改数据库 Race 字段为 112 或 11。