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

[传奇GOM引擎假人脚本系统]定制开发与底层逻辑全解析

热度:
在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)>11
;将获取的名称分配给假人
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”操作,新添加的假人逻辑才会被引擎读取并生效。
[顶部]