在GOM引擎中,假人系统并非单一的脚本文件,而是由核心配置文件、触发逻辑脚本以及全局变量共同构成的复杂生态。要实现一个高度拟真、行为可控的假人系统,需要深入理解其底层的文件结构与脚本触发机制。
假人系统的核心文件结构
一个完整的假人脚本系统通常分布在服务端的多个目录中,各司其职:
核心配置文件(DummyConfig):通常存放在 Mir200EnvirDummyConfig 目录下。每个假人角色对应一个独立的配置文件(如 假人名称.txt)。这个文件决定了假人的基础属性,包括职业、等级、性别、装备穿戴(UseItems)、包裹物品(BagItems)、攻击模式(AttatckMode)以及使用的技能(UseSkill)等。
机器人控制脚本(Robot_def):位于 Mir200EnvirRobot_def 目录下(如 AutoRunRobot.txt)。这里的脚本主要负责控制假人的宏观行为,例如设定假人自动登录的时间间隔、定时触发攻城战传送、或者控制全局假人的刷新频率。
主控制与触发脚本(QuestDiary & QFunction):假人系统的交互入口通常以NPC脚本的形式存在于 QuestDiary 目录下。同时,假人的很多微观行为(如登录触发、死亡复活、自动捡物)需要写入 QFunction-0.txt 中,通过引擎的底层事件进行触发。
假人名称库:引擎通过读取 Mir200EnvirDummyNameList.txt(人物列表)和 DummyHeroList.txt(英雄列表)来为假人分配名称。为了防止真实玩家注册到假人的名字,通常需要将这两个文件中的名称同步复制到 MirServerDBServerDenyChrName.txt 中进行屏蔽。
核心触发逻辑与脚本编写
假人系统的灵魂在于 QFunction-0.txt 中的事件触发机制。通过特定的指令,可以精准控制假人在不同阶段的行为。
1. 假人登录与配置加载
当假人触发登录时,脚本需要为其指定配置文件并读取属性:
[@Login]
IF
ISDUMMY
ACT
;设置假人配置文件路径
SETDUMMYCONFIGFILENAME ..QuestDiary智能陪练高级战士.txt
;读取配置文件中的参数
LOADDUMMYCONFIGFILE
BREAK
2. 自动打怪与挂机控制
假人登录并加载完装备后,需要明确的指令才会开始行动。
开始打怪:使用 DUMMYSTART 命令,假人会根据配置开始自动寻找目标并攻击。
停止打怪:使用 DUMMYSTOP 命令,可以让假人停止挂机(常用于假人需要执行摆摊或特定对话时)。
3. 召唤英雄机制
如果假人需要带英雄,必须在脚本中为其分配英雄名称并触发召唤:
IF
ISDUMMY
ACT
;从英雄列表中随机获取一个名称
GETDUMMYNAME <STR(S1)> 1 1
;将获取的名称分配给假人
SETDUMMYHERONAME <STR(S1)>
;执行召唤动作
RECALLHERO
BREAK
全局变量与高级行为控制
在高级的假人系统中,通常会利用全局变量(A变量和G变量)来实现更复杂的逻辑控制。
字符型变量(A变量):常用于控制状态开关。例如,设定 A51 为假人自动登录开关,A55 为自动打怪开关,A57 为主动发言开关。通过脚本动态修改这些变量的值,可以一键控制全服假人的行为模式。
数字型变量(G变量):常用于记录具体数值。例如,G52 控制每次登录的假人数量,G56 记录全局假人总数,G58 设定假人主动发言的频率。
脚本修改与防错规范
在定制开发假人脚本时,必须严格遵守GOM引擎的脚本语法规范,否则极易导致引擎崩溃或功能失效:
严禁标签重复:在合并假人脚本到自己的 QFunction-0.txt 时,绝对不能出现重复的触发标签(如两个 [@Login] 或两个 [@Die])。正确的做法是将假人逻辑写在原有标签的下方,或者使用 #CALL 命令跳转到独立的假人脚本文件中。
严格遵循编码格式:所有修改的 .txt 脚本文件,必须使用文本编辑器(如Notepad++)保存为 ANSI 编码。如果使用UTF-8编码,会导致中文乱码,引擎将无法正确读取脚本。
重载生效机制:修改完脚本或配置文件后,需要在 M2Server 控制台中执行“重新加载脚本”或“重新加载QFunction”操作,新添加的假人逻辑才会被引擎读取并生效。

