传奇3K引擎自定义全局变量查看方法完整教程 GM命令与脚本引用及文件路径三种途径详解

来源: 作者: 点击:
3K引擎的自定义全局变量存储在服务器端,对所有玩家生效,查看方式根据使用者身份分为三种。GM在游戏内用命令实时查询,脚本编写者在代码中直接引用变量值,服务器管理者通过文件查看持久化数据。三种途径得到的数据来源不同,命令查询读取的是内存中的瞬时值,文件查看读到的是最后一次保存到硬盘的数据,两者之间可能存在延迟。下面按这三种途径拆解具体的查看步骤。

## 全局变量与个人变量的区分

3K引擎的变量体系按作用域分为个人变量和全局变量两类。个人变量仅对单个角色生效,包括P0-P9、M0-M99、D0-D9、N0-N99、S0-S99这些区间。全局变量对所有玩家生效,包括G0-G99数字型可保存变量、I0-I99数字型不可保存变量、A0-A99字符型可保存变量。G变量和A变量在服务器重启后依然保留,I变量重启后归零。

自定义全局变量不能以P、G、M、I、D、N、S、A这些字母开头来命名,否则会与引擎内置变量产生冲突。命名时建议使用有明确含义的英文单词或缩写,比如DoubleExp、BossAlive、WorldEventStep这类名称,便于后续维护和排查。

## 通过GM命令在游戏内查看

游戏内GM命令是最直接的查看方式。以GM权限账号登录游戏,打开聊天输入框,输入查询命令后回车,系统会在聊天框或弹出窗口中返回变量信息。

基础查询命令是@ViewGVar或@查看全局变量。输入后系统会列出所有已定义的全局变量名和当前值。如果变量数量较多,使用精确查询命令@ViewGVar变量名,直接查看指定变量的值,比如输入@ViewGVar BOSS_IS_ALIVE来查看BOSS存活状态。

这种方式的优点是实时性最高,获取的是变量在服务器内存中的瞬时值,不受文件写入延迟影响。缺点是需要GM权限,普通玩家无法使用。不同3K引擎版本的命令格式可能略有差异,以当前服务端说明书中的实际命令为准。

## 在脚本中引用并查看全局变量值

脚本中引用全局变量使用`<$GLOBAL(变量名)>`格式,引用个人变量使用`<$HUMAN(变量名)>`格式。这两种引用格式在#SAY对话文本和SENDMSG消息命令中都可以直接使用。

以下是一个在NPC脚本中查看全局变量的示例:

```
[@main]
#SAY
当前全服双倍经验状态:<$GLOBAL(DoubleExp)>\
世界BOSS存活状态:<$GLOBAL(BossAlive)>\
全服活动进度:<$GLOBAL(WorldEventStep)>\
<关闭/@exit>
```

脚本执行后,`<$GLOBAL(DoubleExp)>`会被替换为变量DoubleExp的实际数值。变量值为1时显示1,值为0时显示0。如果需要同时显示变量名和值,在文本中直接书写变量名即可,引用格式只负责输出值。

字符型全局变量A0-A99的引用方式与数字型G变量相同,`<$GLOBAL(变量名)>`同样适用。字符变量的值在脚本中默认按文本处理,如果需要参与数值运算,先用`<$STR()>`转换格式。

`<$GLOBAL()>`引用格式的优势在于可以在任何NPC脚本中直接使用,不需要额外编写查询命令。需要给玩家展示全服活动状态、在线人数统计、世界BOSS击杀进度这类全局信息时,直接在对话文本中嵌入变量引用即可。

## 通过服务器文件查看持久化数据

全局G变量和A变量持久化保存在服务端的`Mir200\Envir\GlobalVal.ini`文件中。部分引擎版本中文件路径为`MirServer\Mir200\Global.ini`。使用记事本或Notepad++打开该文件,可以看到以变量名=值格式存储的数据。

文件中的内容格式通常如下:

```
[Global]
DoubleExp=1
BossAlive=0
WorldEventStep=3
DonationTotal=580000
```

等号左边是变量名,右边是当前值。数字型变量直接显示数值,字符型变量显示文本内容。用文本编辑器打开时注意不要修改任何内容,GlobalVal.ini中的数据直接对应引擎运行时的内存状态,手动改动可能导致数据错位或服务器异常。

文件查看的优势是可以一次性看到所有全局变量的完整列表,适合排查变量冲突和统计变量占用情况。缺点是文件中的值是服务器最后一次保存到硬盘的数据,服务器运行期间内存中的值可能已经更新但尚未写入文件,因此文件中的数值可能落后于游戏内的实时值。

## 通过M2控制台查看内置货币变量

M2Server控制台中可以查看引擎内置的货币类变量。打开M2Server程序,依次点击菜单栏的“查看”进入“游戏点设置”或“变量控制”或“功能设置-货币”,在弹出的窗口中可以看到GameGold、GamePoint、CreditPoint、Diamond等英文变量名及其当前值。这部分变量属于引擎内置的全局变量,不需要在脚本中声明,由引擎自动管理。

M2控制台的变量界面主要用于查看和调整内置货币变量,自定义的G变量和A变量不在这个界面中显示。查看自定义变量需要回到脚本引用或文件查看的方式。

## 变量占用查询工具的使用

当服务端中全局变量数量较多时,逐个查看容易遗漏冲突。使用专门的变量占用查询工具可以快速扫描所有脚本文件中的变量使用情况。

传奇端变量占用秒查工具V1013的使用方式:将版本文件夹或版本目录下的任意文件拖入工具主窗口,工具会自动识别版本路径。如果路径中包含`Mir200\Envir`文件夹则自动搜索,不包含时手动点击查询按钮。工具支持关键词搜索,输入格式如G1、G10-20、A1、A3、A5-8,其中G10-20表示搜索G10到G20之间的所有变量,多个关键词用空格隔开。

3K引擎的G和A变量数量上限为0-999个,在工具中会自动识别引擎类型并调整搜索范围。搜索结果会列出每个变量的出现次数和所在文件位置,便于定位变量的定义和引用位置。

## 常见问题与排查

GM命令输入后无反应,先确认当前账号是否具有GM权限。3K引擎的GM权限在M2控制台的“选项-功能设置-管理员权限”中配置,权限不足的账号无法使用@ViewGVar命令。确认权限配置正确后,检查命令拼写是否与当前引擎版本一致,不同版本的3K引擎命令前缀可能不同。

脚本中引用全局变量后显示为空或0,检查变量是否已经在脚本中声明过。全局变量的声明需要在服务端的全局脚本中单独设置,不能在玩家登录脚本中动态创建。未声明的全局变量在脚本中引用时返回空值或默认值0。全局变量的声明写在QManage.txt或QFunction-0.txt等全局脚本文件中,使用VAR命令创建。

GlobalVal.ini中找不到期望的变量,检查变量类型是否为G或A。只有可保存的G变量和A变量会写入GlobalVal.ini文件,I变量和私人变量不在这个文件中保存。同时确认服务器是否已经执行过保存操作,引擎在特定时间点或特定命令触发时才会将内存中的变量值写入文件。

变量占用查询工具搜索不到结果,检查拖入的路径是否正确。工具需要识别到`Mir200\Envir`文件夹才能自动搜索,如果版本文件夹的目录结构不同,手动点击查询按钮并指定正确的搜索路径。

修改脚本后变量值没有更新,检查脚本是否已保存并重新加载。修改NPC脚本后重启M2Server,或在控制台执行@ReloadManage重新加载Market_Def目录下的脚本文件。修改GlobalVal.ini后需要重启M2Server才能让文件中的修改生效。所有脚本文件保存为ANSI编码,UTF-8编码下中文字符串乱码,虽然英文变量名本身不受影响,但脚本中的中文提示和变量名称如果包含中文会出现解析错误。