当前位置 : 145z游戏站 | 热血传奇 | 技术教程 | 

热血传奇Monster.DB参数实战:Race与Racelmg怪物行为解析及配置指南

热度:
一、Monster.DB字段结构概览

Monster.DB是DBC2000格式的角色/怪物数据表,每条记录包含Name、Race、Racelmg、Appr、Lv、HP、MP、AC、MAC、DC、MC、SC、Speed、Hit、WalkSpd、ViewRange、Exp、DropGold等字段。其中Race和Racelmg是决定怪物行为模式与外观表现的核心参数,引擎在M2启动时将其加载进内存,运行时按怪物类型执行对应的行为逻辑分支。

二、Race字段:行为分类编号

Race是一个整数值,引擎内部通过switch(Race)分发到不同的怪物行为类。常见取值与对应行为:

•Race=0:普通近战怪物。站立、巡逻、追击、物理攻击。无特殊技能,血量低于阈值不会逃跑,仇恨目标固定后不切换。

•Race=1:远程魔法怪物(掷斧骷髅类)。保持距离在射程外移动,周期性发射投射物。射程由AttackRange字段控制,默认7格。

•Race=2:自爆型怪物(挖矿区的钉耙猫王类)。接近目标到近身后触发自爆,对自身及周围单位造成伤害。引擎在距离≤1时调用Explode()分支。

•Race=3:分裂型怪物。死亡时在尸体位置生成N个小型怪物(如祖玛雕像死后出祖玛卫兵)。分裂数量由引擎内部常量或扩展字段SplitCount控制。

•Race=4:召唤型怪物。战斗开始后周期性在周围召唤低等级小怪(如虹魔猪卫召唤虹魔蝎卫)。召唤间隔由AttackSpd间接控制。

•Race=5:治疗型怪物。定期对自己或周围友军释放治疗术,回复量基于MC字段。

•Race=6:石化/定身型。攻击命中后概率触发目标石化状态,持续秒数由技能参数表决定。

•Race=7:中毒型。攻击附带持续毒伤,每秒扣血基于SC字段,持续5-10秒。

•Race=8:双头/多形态型(如双头金刚)。根据血量百分比切换形态,切换后Race值不变但引擎内部状态机跳转,攻击模式从近战变为远程。

•Race=9:BOSS级标记。不是独立行为类,而是给Race=0的怪物附加BOSS属性——免疫麻痹、死亡不消失、刷新间隔更长、掉落表独立。

•Race=10+:各引擎扩展类型(GOM/GEE/Hero商业版新增)。包括全屏火墙型、追踪冰咆哮型、反伤型、吸血型等,具体编号各版本不同,需查对应引擎的MonsterRace.txt或源码注释。

三、Racelmg字段:外观码映射

Racelmg决定怪物在客户端显示的图形资源索引。引擎读取流程:Racelmg值→除以10得到MonX.wil的序号→余数作为该文件内的帧起始偏移。例如Racelmg=25→Mon2.wil第5套帧(25÷10=2余5)。客户端Data\Mon1.wil~Mon18.wil中,每10个Racelmg对应一个wil文件,每个文件内按10组动作帧排列(站、走、攻、死亡等)。

标准资源对照示例:
•Racelmg=0~9→Mon1.wil(鸡、鹿、稻草人等新手村怪)

•Racelmg=10~19→Mon2.wil(多钩猫、毒蜘蛛)

•Racelmg=20~29→Mon3.wil(半兽人、森林雪人)

•Racelmg=30~39→Mon4.wil(僵尸系列)

•Racelmg=40~49→Mon5.wil(沃玛教主系列)

•Racelmg=50~59→Mon6.wil(祖玛怪物)

•Racelmg=60~69→Mon7.wil(虹魔系列)

•Racelmg=70~79→Mon8.wil(赤月怪物)

•Racelmg=80~89→Mon9.wil(牛魔王系列)

•Racelmg=90~99→Mon10.wil(魔龙怪物)

自定义怪物时Racelmg可以超出99,但需要对应的MonX.wil文件存在且帧格式正确,否则客户端显示红问号或空白方块。

四、Race与Racelmg的关联与独立

Race和Racelmg在引擎中是独立读取的,没有强制绑定关系。你可以给一只鸡(Racelmg=0)配上Race=4让它变成召唤型,也可以给祖玛卫士(Racelmg=55)配Race=0让它变成纯近战不召唤。实际配置中通常保持Race与外观行为匹配,否则会出现"看起来是鸡但会放火墙"的违和感。但有些特殊设计就是故意反差——比如外观是新手村鹿、实际是BOSS级属性,用于隐藏地图的陷阱怪。

五、MonsterSet.txt中的刷怪配置

定义好Monster.DB后,在Mir200\Envir\MonsterSet.txt中配置刷怪点:

;格式:地图号怪物名XY数量刷新时间(秒)是否走动
3祖玛卫士3303205301
3祖玛雕像3353253301

怪物名必须与Monster.DB的Name字段完全一致。刷新时间0表示不自动刷新(手动用GM命令刷)。是否走动1=可移动,0=固定位置(适合BOSS站位)。

六、MonGen.txt与定时刷新

Mir200\Envir\MonGen.txt控制全局刷怪调度:

祖玛卫士333032053010
;含义:怪物名地图号XY数量间隔秒最大同时存在数

当地图上已有数量达到"最大同时存在数"时,引擎不再生成新怪。这个机制防止刷怪点堆积过多导致卡服。

七、Race行为的高级参数联动

Race决定的行为模式会读取Monster.DB中多个字段作为参数:

•远程型(Race=1):射程由AttackRange决定,投射物速度由Speed字段间接影响,伤害基于DC。

•自爆型(Race=2):爆炸半径2格,伤害公式=DC+(HP×0.1),爆炸后自身死亡。

•召唤型(Race=4):召唤物必须在Monster.DB中存在,召唤数量上限由引擎常量(通常3-5个)控制,召唤间隔=AttackSpd×2秒。

•分裂型(Race=3):分裂数量2-4个,分裂出的怪物在Monster.DB中需有对应记录,通常比母体等级低。

•治疗型(Race=5):治疗量=MC×2+50,治疗间隔=AttackSpd×3秒,治疗范围5格内友军。

八、常见配置错误与排查

•怪物不攻击:Race=0但Speed=0或AttackSpd=0,引擎判定为不可攻击状态。

•远程怪不射:Race=1但AttackRange=0或ViewRange<AttackRange,怪物看不到射程外的目标。

•自爆不触发:Race=2但HP过低时引擎优先执行死亡动画而非爆炸逻辑,需确保HP在爆炸阈值以上。

•召唤物不出现:Race=4但召唤物名称在Monster.DB中不存在,或地图已满怪物上限。

•客户端红问号:Racelmg对应的MonX.wil文件缺失,或wil文件内帧数不足(每组动作至少需要10帧站立+8帧行走+6帧攻击+10帧死亡)。

•怪物穿墙:MonsterSet.txt坐标对应的.map文件中该点阻挡标记未设,或引擎PathFinding未正确读取地图阻挡层。

•刷新时间不生效:MonGen.txt中间隔秒设为0但期望自动刷新,0代表仅手动刷。

九、自定义怪物完整流程

1.打开DBC2000→Monster.DB→新增记录
2.Name填唯一名称(如"暗之祖玛卫士")
3.Race填0(近战)或需要的行为类型
4.Racelmg填55(复用祖玛卫士外观)
5.HP/DC/AC/EXP按等级填
6.保存(DBC2000自动写盘)
7.MonsterSet.txt或MonGen.txt添加刷怪行
8.M2重载怪物数据库(控制→重新加载→怪物信息)
9.进游戏到对应地图验证

如需全新外观而非复用现有资源,则需制作MonX.wil文件放入客户端Data\目录,Racelmg按wil序号×10+帧偏移计算。

十、Race扩展与引擎差异

GOM/GEE/Hero商业版在Race=11~30区间定义了更多行为类型:反伤型(受击反弹百分比伤害)、吸血型(攻击回复自身HP%)、全屏技能型(定期释放全屏火墙/冰咆哮)、瞬移型(战斗中随机闪现到目标背后)、狂暴型(HP<30%时攻速翻倍伤害加倍)、沉默型(攻击概率禁止目标使用技能)等。具体Race编号与行为对照需查阅所用引擎版本的MonsterRace.txt或官方文档,各版本编号不统一,不能直接跨版本套用。

Race决定怪物"怎么动",Racelmg决定怪物"长什么样",两者配合加上MonsterSet.txt的刷点配置,构成传奇服务端怪物系统的完整骨架。
[顶部]