怪物透视功能指在客户端界面中显示地图内所有怪物的位置、名称或血量,通常通过服务端脚本配合客户端修改实现。该功能多用于测试或特定玩法场景,需依赖GOM、GEE等支持脚本扩展的引擎。
编写脚本前,确认服务端已启用相关接口。以GOM引擎为例,在QFunction.txt中添加触发逻辑。当玩家使用指定命令(如@showmon)时,调用系统函数获取当前地图怪物列表,并向客户端推送信息。示例如下:
[@showmon]
IF
CHECKLEVELEX > 0
ACT
SENDMSG 7 当前地图怪物列表:
MONLIST
其中MONLIST为引擎内置命令,可遍历当前地图所有怪物并返回名称与坐标。部分版本需配合自定义变量循环读取,例如:
ACT
MOV S0 0
CALL [GET_MON_INFO]
[GET_MON_INFO]
IF
SMALL S0 100
ACT
GETMONNAME S0 M0
GETMONX S0 M1
GETMONY S0 M2
SENDMSG 7 M0 (M1,$M2)
INC S0 1
JUMP [GET_MON_INFO]
此脚本最多读取100个怪物信息,逐条发送至玩家聊天框。实际效果取决于引擎是否开放GETMONNAME等函数。
若需在小地图或主界面直接高亮显示怪物,则必须修改客户端文件。定位到MapMap.wil或MapMiniMap目录,替换或新增透明图层资源,使怪物图标常显。同时修改Mir2Client.dll中的渲染逻辑,强制开启“始终显示目标”标志位。此操作需使用十六进制编辑器或专用DLL修改工具,非脚本范畴。
使用时,玩家在游戏内输入@showmon(或其他自定义命令),即可在聊天窗口看到当前地图全部怪物名称及坐标。部分服务端支持将信息写入NPC对话框,提升可读性。例如:
ACT
CREATEITEM 脚本卷轴 1 1
SET [SCRIPT_ITEM] @SHOW_MONSTER_LIST
点击卷轴后弹出完整列表。
注意事项:怪物透视功能可能影响游戏平衡,仅建议在测试服或单机环境中使用。正式部署前需确认所用引擎版本支持相关指令,避免因函数缺失导致脚本报错。脚本文件修改后需重载或重启M2Server生效。

