工程参考/配置文件/Server/GMList.ini

来自天龙知识库
雪舞留言 | 贡献2026年9月9日 (三) 22:10的版本 (维护配置文件知识库:完整字段、读取范围、手工修改实例与核对状态)
(差异) ←上一版本 | 最后版本 (差异) | 下一版本→ (差异)
跳到导航跳到搜索


首页 · 配置文件索引 · 修改约定

GMList.ini 登记哪些角色可以通过游戏内指令入口执行管理命令,以及各角色的权限档位。这里使用角色的持久 GUID,不使用场景中的对象 ID、账号 ID、角色名字或背包位置。

位置与生效 · 文件格式 · 字段详解 · 修改实例

文件位置与生效

项目 说明
运行文件 ./Config/GMList.ini,相对于读取程序的工作目录。源码 resources/Server/Config 是样本位置,实际部署可能另有副本。
读取程序 Server 游戏进程
生效方法 可正常停服后重启 Server;已有权限足够的管理员也可通过现有 GM 指令入口执行 reloadgmlist(别名 debug_reloadconfig),重读当前 Server 的 GMList.ini。这不是 Lua 函数,也不重载全部配置。该命令要求旧名单中的 access=0 权限;首次配置或已失去权限时使用重启方式。多个 Server 需分别生效。
样本格式 GB18030-compatibleCRLF。保留原编码;源码读取器不会自动把中文转为 UTF-8。

所有项目位于 [gm]。count 控制读取 guid0/access0、guid1/access1 等连续条目;样本即使保留了更多 guid 行,超出 count 的部分也不参与本轮读取。

文件格式

使用 [节名] 与 Key=Value,节名和键名区分大小写,保持节标题位于行首。用单独一行分号写注释,保留原编码及 CRLF 换行;重复节或键取先匹配项,不依赖后写覆盖。缺项、空值与 0 分别按下表处理。

字段详解

模板 [n] 表示从 0 开始的序号,写入时应展开为实际数字;不是字面键名。

[gm]

字段与类型 含义与修改要点 缺项或特殊值
count
整数,0 到 256
实际启用的角色条目数,按 n=0 到 count-1 读取。0 表示本名单没有任何角色;源码的循环没有可靠上限防护,不能超过数组容量 256。 必填;负数不是受支持的关闭方式。
guid[n]
十进制整数,角色 GUID
同序号的 access[n] 属于此角色。GUID 在换场景后保持角色身份;日志中 GUID=%X 是十六进制显示,须先转换为十进制,不能把 0x 前缀直接交给 atoi 读取。GUID 重复时指令入口使用第一条匹配记录。 启用序号范围内必填;缺项会触发读取错误,不使用教学值作为默认值。
access[n]
整数,0 到 4
0 对应 ALL,允许全部已实现且列入权限表的指令;1 对应 ADMIN(含物品、经验等修改);2 对应 GMADMIN(含传送、查询等);3 对应 GM(含系统消息等);4 映射到等级 0,权限表拒绝所有指令。数值越小权限越高,具体命令仍受各自处理条件约束。 可选;缺失、负数或超过 4 都回退为 0,即最高档。空值经 atoi 也为 0。应明确填写合法值。

常用修改实例

示例为局部教学片段,先备份原运行文件,再修改对应行并保留其余配置。教学值不是程序默认值。

降低已有测试管理员的权限

修改前:

[gm]
count=1
guid0=123456
access0=0

修改后:

[gm]
count=1
guid0=123456
access0=3

123456 是教学 GUID,操作时保留目标角色原有的 guid 值与 count,只把它对应的 access 从 0 改为 3。若原文件还有其他管理员,全部保留。修改前由另一名 access=0 的管理员准备重载,或采用停服重启;降权后该角色不能再靠 reloadgmlist 自行恢复最高档。预期是该角色仅通过最低一档指令检查,具体操作仍须测试。

验证与排查

确认启动参数与共享内存模式,再核对角色 GUID、count 和每项 access。重载后检查 Server 日志的 GMAccess 与 Deny/执行结果;日志将 GUID 打印成十六进制。分别用目标角色和普通测试角色确认权限,不执行发物品、删角色等有副作用的命令来试探。失败时正常停服并恢复备份。

名单生效还有前提:正常命令开关关闭、且 Server 启用共享内存时才按此名单核对角色。Server 启动参数 -commandenable 会跳过名单并沿用 access=0;关闭共享内存的分支也把当前角色视作可执行管理命令。不能仅检查名单就认定普通玩家没有 GM 权限,也不要用这两个开关来修复名单。移除管理员时删除对应整对条目并压紧后续序号、减少 count;保留恢复路径。

关联与依据

Server/ServerInfo.ini

其他配置及整理状态 · 服务端外网设置 · Lua 接口索引

  • Common/ServerBase/Ini.cpp:实际加载、解析、字段使用或示例关联依据
  • Common/ServerBase/Ini.h:实际加载、解析、字段使用或示例关联依据
  • Common/ServerBase/FileDef.h:实际加载、解析、字段使用或示例关联依据
  • Common/GameDefine2.h:实际加载、解析、字段使用或示例关联依据
  • Server/Server/GameServer/Server/Main/GameTable.cpp:实际加载、解析、字段使用或示例关联依据
  • Server/Server/GameServer/Server/Main/GameTable.h:实际加载、解析、字段使用或示例关联依据
  • Server/Server/GameServer/Server/Packets/CGCommandHandler.cpp:实际加载、解析、字段使用或示例关联依据
  • Server/Server/GameServer/Server/Main/Server.cpp:实际加载、解析、字段使用或示例关联依据

本页核对源码读取、字段使用与样本格式,未启动游戏、服务端或数据库。解析验证不等于游戏实测;广播、权限、客户端交互等运行结果需要实测。