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

传奇怪物不攻击排查:DB字段与AI设置完整对照表

热度:
怪物不攻击的问题集中出现在Monster.DB数据库字段配置与AI逻辑的匹配环节。当怪物刷出后站立不动或只挨打不反击,优先检查Monster.DB中几个关键字段的数值。

Race字段决定怪物的攻击类型与行为模式。不同数值对应不同的AI处理函数,Race=81代表普通主动攻击怪物,Race=83为不主动攻击但会反击的怪物,Race=51为全被动怪物。若Race字段填写错误,例如填成11或59等特殊类型,AI线程不会触发攻击判定。RaceImg字段控制怪物外观形象,该字段错误会导致模型显示异常,但不会影响攻击逻辑。

攻击参数集中在Race和字段后面的几个列。Row字段控制攻击间隔,单位毫秒。该值设置为0或过低数值时,引擎按默认值处理,部分版本设定默认最低攻击间隔为400毫秒。Row值高于3000时怪物反应迟钝,产生不攻击的错觉。Racelmg字段在部分引擎中代表攻击后摇时间,填入过高数值会延长下一次攻击的等待时间。

怪物不动的另一个常见原因在MapInfo地图配置。地图参数中如果包含NODEAL或NOATTACK等战斗限制参数,地图内所有怪物都不会主动攻击。检查目标地图在MapInfo.txt中的参数行,移除NODEAL、SAFE、NOATTACK等限制条目。安全区地图无论怪物DB如何配置都不会触发攻击,检查StartPoint.txt中是否将目标地图坐标划入安全区范围。

怪物视野通过WALK_SPD字段间接控制,该字段数值越小视野范围越小,改为0时怪物完全失去侦测目标的能力。部分引擎的Monster.DB中有独立的ViewRange列,默认值在5到8之间,该列填写0或空值则怪物无法发现玩家。如果DB中无此列,引擎读取!Setup.txt中的MonsterViewRange参数,该参数默认值被改写过低也会导致怪物不侦测。

AI脚本类怪物需要检查Appr字段与AI脚本的对应关系。Appr值用于加载MonAI文件夹下的同名脚本文件,如果脚本文件缺失或脚本内缺少攻击触发段,怪物在仇恨列表中有目标却无法执行攻击指令。查看M2Server的调试窗口,当玩家走近怪物时是否有"目标进入视野"的日志输出,有输出但无攻击动作则问题在AI脚本段,无输出则问题在视野或仇恨判定。

怪物无法攻击玩家的原因还涉及等级压制。若怪物DB中的Level字段高于玩家等级过多且引擎开启了等级压制开关,怪物可能判定目标无效从而不进行攻击。关闭等级压制或调整怪物等级到合理范围后再进行测试。

数据库字段类型错误也会导致攻击失效。Monster.DB的Race和Row字段应设置为整数类型,如果使用文本类型或浮点类型,引擎读取时转换为0导致AI处理失效。使用DBC2000打开数据库,检查字段类型是否显示为"Integer"或"Smallint",字符类型需改为整数类型。

刷怪配置Mongen.txt中的怪物名称必须与Monster.DB中的Name字段完全匹配,包括空格与符号。名称不匹配时刷出的是空的怪物对象,无法执行任何逻辑。刷怪坐标如果被地图阻挡层覆盖,怪物卡在阻挡点上无法转向目标,表现为站立不动。打开地图编辑器查看刷怪点坐标的通行标志,将刷怪坐标移至可通行格子。

攻击触发的最后一道检查在QF脚本中的@Attack和@Attacked标签。如果QF脚本中存在这些标签且包含错误代码,脚本报错会导致怪物攻击流程中断。将QF中的攻击触发段临时注释或清空内容,仅保留空标签,测试怪物是否恢复正常攻击。恢复正常后逐段放开代码排查冲突位置。
[顶部]