热血传奇开发实战:怪物Race与RaceImg行为AI及Appr外观配置详解

来源: 作者: 点击:
一、Monster.DB核心三字段分工
怪物数据库(DBC2000打开 Mir200\Envir\Monster.DB 或 Mud2\DB\Monster.DB)里决定“怪物怎么动、怎么打、长啥样”的三个关键列:
- Race:行动模式代码,绑定服务端AI逻辑(追不追人、会不会瞬移、死法动画、是否反隐)
• RaceImg:攻击动作/特效代码,绑定客户端播放哪套攻击动画(近战挥砍、喷火、电火花、地刺、射箭)

- Appr:外观形象代码,指向客户端 MonXX.wil / MonXX.pak 里的具体贴图组

三者关系:Race管“脑子”,RaceImg管“出手动作”,Appr管“皮囊”。任意一项错配都会出怪象——行为痴呆、攻击无动画、透明不显、动作错位。

二、Race常用枚举与行为对照(GOM/GEE/Hero/Blue通用基底)
51 被动生物(鸡鹿钉耙猫),不主动攻击,被击可能逃跑,死亡后需挖取(食人花类)
52 被动但小概率逃跑,不掉落挖取物
53 主动攻击,死亡不掉挖取物
81 标准主动怪,进入范围自动追击,普通近战(半兽人/祖玛卫士基底)
82 远程毒液攻击,射程2格
85 地下钻出原地攻击,固定点植物系(食人花)
87 主动攻击,射程5
90 贴身石化/麻痹攻击(弱)
92 目标出范围则瞬移贴近
93 边攻边走位躲避
94 直线攻击
95 范围内从地下爬出
96 死亡自动复活(僵尸系,每次复活经验减半)
100 召唤骷髅基底
101 石像状态,进范围激活
102 攻击同时召唤 setup.txt 中 zuma1~4 指定怪
105/106 强/弱麻痹石化
107 全屏攻击+麻痹+中毒
112 只打红名玩家(哨兵/惩罚者)
115 自身不动,全屏地刺(赤月恶魔)
116 自身不动,释放 spider 指定怪
117 无攻击力,自爆
150 人形怪AI,可持武器放技能(假人/强化战士)
151 GOM/GEE 自定义MonXX.wil外观挂载基底(配合M2自定义怪物)
156 HXM2/部分GOM自定义怪物挂载码,Race=RaceImg=156,Appr按算法或留空由M2指定wil
500+ 各引擎扩展自定义Race段

M2里还有全局开关:“怪物主动攻击”是否开启、主动范围(默认10~20格)、攻击反应时间(1000~2000ms),Race正常但不追人先查这两项 。

三、RaceImg攻击动画代码对照
1 普通近身物理(裸男/半兽人挥砍)
15 抛斧头(沃玛战士类)
16 贴身喷毒
19 沃玛战士近战动作
20 火焰喷射(火焰沃玛)
21 电火花(沃玛教主)
22 喷针
33 大范围喷毒(触龙神)
34 全屏地刺(赤月恶魔)
40 击电
45 射箭(弓箭手/月魔蜘蛛)
47 祖玛卫士近战动作
49 火球(祖玛教主)
52/53 高/低空喷毒特效
55 神兽喷火带击退

错配后果:Race=81但RaceImg=20,怪会追人却播喷火动画且伤害类型可能判成魔法;物理怪填49会出火球弹道但DC仍算物伤,表现异常 。

四、Appr外观代码算法(MonXX.wil / MonXX.pak)
标准公式(GOM/GEE/Blue/翎风通用):
Appr = (Mon文件编号 − 1) × 10 + 文件内怪物序号(从0起)

例:
Mon30.wil第3个怪 → (30−1)×10+3 = 293
Mon18.wil第9个怪 → 179
Mon5.wil第0个怪 → 40
Mon61.pak第8个怪 → (61−1)×10+8 = 608
Mon100.wil第1个怪 → 990,第2个 → 991

老版大图集算法(前50个mon文件按720张/组,50~54按360张/组):
图片全局序号 ÷ 每组张数 = 文件内序号,再反推 Appr
例 mon36.wil 第11031张 → 11031÷720≈15 → (36−1)×10+15 = 365

客户端校验:用 WilEditor / WIL编辑器 打开 Data\MonXX.wil,确认内部怪物序数、每怪帧数(通常280或360张/套动作),否则Appr算对也黑屏 。

五、自定义怪物完整挂载流程(GOM引擎示例)
1. 客户端:把素材导入 Data\MonXX.pak / MonXX.wil,记文件编号XX与内部序号。
2. Monster.DB 新增行:Name=自定义名,Race=156,RaceImg=156,Appr=(XX−1)×10+序号,其余HP/DC/AC/EXP/SPEED按需求填。Race=151也可走另一套自定义绑定 。
3. M2Server → 选项 → 怪物设置 → 自定义怪物 → 选该怪 → 填基本动作(站立/行走/受击/死亡 开始帧、张数、空张、速度、八方向)→ 填攻击动作1~5对应RaceImg特效 → 保存 。
4. 若Appr留空,则在自定义怪物界面选“指定Wil文件/快速计算”,引擎按资源自动拆动作帧;填了Appr就选“根据Appr计算” 。
5. M2控制台“重新加载怪物数据库” → 地图 MonGen.txt 加一行:地图号 X Y 范围 怪物名 数量 刷新秒 → @ReloadMonGen 或重启网关生效。

六、MonGen.txt刷怪行格式
格式:MapNo X Y Range MonsterName Count Interval
例:0 330 330 8 半兽人 10 30
含义:比奇城(0)坐标330,330周围8格内,刷10只半兽人,死亡后30秒重生。
配合 Monster.DB 里 CoolEye>0 可反隐身戒指;Undead=1 标不死系(不可被法师召唤),0为死系(可召骷髅/僵尸) 。

七、典型配置对照表
鸡:Race=51 RaceImg=11 Appr=160
半兽人:Race=83 RaceImg=1 Appr 对应 mon 文件计算值 Lvl=1
祖玛卫士:Race=81 RaceImg=47 Appr 对应祖玛mon Lvl=35 DC=12~18
火焰沃玛:Race=81 RaceImg=20 Appr 对应 mon31 Lvl=45
沃玛教主:Race=81 RaceImg=21 Appr 对应 mon34 Lvl=50
触龙神:Race=85 RaceImg=33 Appr 对应指定mon Lvl=55
赤月恶魔:Race=115 RaceImg=34 Appr=340(Mon35.wil第0个)八方向不勾
祖玛教主:Race=81 RaceImg=49 Appr 对应 mon63 Lvl=60
魔龙教主:Race=81 RaceImg=49 Appr=402(Mon41.wil第2个)

八、排错清单
• 不追人:查M2全局主动攻击开关、Race是否51/52、CoolEye与反隐逻辑

- 攻击无动画:RaceImg错配或非攻击码(0)
• 透明/黑屏:Appr算错、MonXX.wil缺失、PAK密码未进登录器、Race未设151/156

• 动作错位:Wil内部每怪帧数非标准280/360,M2自定义动作帧没改

- @Mob 提示不存在:Monster.DB无该行或Name不一致,非Race/Appr问题
• DC>DCMax:伤害跳变,必须 DC≤DCMax

• WalkSpd/AttackSpd<300:攻速异常卡手,普通怪建议≥300~800

按 Race定脑、RaceImg定手、Appr定皮 三段对齐,Monster.DB + MonGen.txt + 客户端MonXX资源 + M2自定义动作 四条链打通,怪物行为与外显即完整闭环。