GM 命令完整文档
概述
GM(Game Master)命令通过游戏内聊天频道以 // 前缀触发,例如 //help、//levelup num=5。
核心代码文件:
- 命令定义与注册:
ScenesServer/Chat.h/Chat.cpp - 网络协议定义:
base/SessionCommand.h - GM 工具协议:
base/GmToolCommand.h - 配置文件:
gm_conf.xml、config.xml
权限级别
| 权限值 | 常量 | 说明 |
|---|---|---|
| 0x00 | none_mode | 无权限 |
| 0x01 | normal_mode | 普通玩家模式 |
| 0x02 | gm_mode | GM 模式 |
| 0x04 | captain_mode | 队长模式 |
| 0x08 | super_mode | 超级 GM 模式 |
| 0x10 | debug_mode | 调试模式 |
| 0x1F | all_mode | 所有权限 |
注意: 当前代码中权限检查条件块为空,实际上所有有 GM 权限的角色可以执行所有标记为
gm_mode的命令。SUPER_GM_ID定义为1。
命令使用格式
//命令名 [参数名=参数值] [参数名=参数值] ...
示例:
//levelup num=5
//gomap name=王城 ignoreUserLevel=true
//setpriv name=玩家名 priv=2
//tong t1=帮会A t2=帮会B
完整命令列表
一、基础/通用命令
| 命令 | 权限 | 说明 | 参数 |
|---|---|---|---|
help | gm_mode | 显示指令帮助(列出所有可用命令) | 无 |
levelup | gm_mode | 升级 | num=等级数 |
goto | gm_mode | 跳转到指定位置 | 支持坐标或地图名+坐标 |
gomap | gm_mode | 跳转到指定地图 | name=地图名 ignoreUserLevel=true |
finduser | gm_mode | 寻找玩家位置(支持跨服查找) | 玩家名 |
gotouser | gm_mode | 传送/跟踪到指定玩家(支持跨服传送) | 玩家名 |
catchuser | gm_mode | 召唤指定玩家到自己身边(支持跨服召唤) | 玩家名 |
bczone | gm_mode | 发送区域广播 | 广播内容 |
bcworld | gm_mode | 发送世界广播 | 广播内容 |
bcwgamemsg | gm_mode | 发送游戏性世界广播 | 广播内容 |
kick | gm_mode | 将指定玩家踢下线 | 玩家名 |
donttalk | gm_mode | 禁言指定玩家 | 玩家名 |
talk | gm_mode | 解除指定玩家的禁言 | 玩家名 |
gohome | gm_mode | 传送回主城 | 无 |
hideme | gm_mode | 隐身(隐藏自己) | 无 |
showme | gm_mode | 取消隐身(恢复可见状态) | 无 |
god | gm_mode | 无敌模式 | 无 |
normal | gm_mode | 恢复普通模式 | 无 |
clearpoint | gm_mode | 清除人物属性点 | 无 |
clearskillpoint | gm_mode | 清除技能点 | 无 |
studyskill | gm_mode | 学习新技能 | 技能相关参数 |
settire | gm_mode | 设置疲劳时间 | 时间参数 |
checkcountryinfo | gm_mode | 检查国家信息 | 无 |
loadprocess | gm_mode | 重新加载外挂特征码文件 | 无 |
cleararea | gm_mode | 驱散周围玩家 | 无 |
embar | gm_mode | 囚禁指定玩家 | 玩家名 |
refreshgeneral | gm_mode | 手动刷新各国大将军 | 无 |
二、热加载/配置重载命令
这些命令用于在不重启服务器的情况下重新加载配置文件。
| 命令 | 权限 | 说明 | 加载内容 |
|---|---|---|---|
loadmessage | gm_mode | 重新加载 Message 配置 | 消息配置文件 |
loadquest | gm_mode | 加载任务脚本 | 任务配置 |
loadnewquest | gm_mode | 加载 Lua 任务脚本 | Lua 脚本 |
loadgiftBox | gm_mode | 加载宝盒配置 | 宝箱/宝盒配置 |
loadnpctrade | gm_mode | 重新加载 NPC 交易脚本 | NPC 商店配置 |
loadtbl | gm_mode | 重新加载 TBL 数据表 | 物品/技能/NPC 等数据 |
loadgameconfig | gm_mode | 加载游戏配置脚本 | 温泉等游戏功能配置 |
loadfuben | gm_mode | 加载副本配置脚本 | 副本相关配置 |
loadact | gm_mode | 加载活动配置脚本 | 活动系统配置 |
loadmall | gm_mode | 加载商城配置脚本 | 商城物品配置 |
loadgift | gm_mode | 重新加载礼官数据 | 礼官/赠品数据 |
三、GM 特殊操作命令
| 命令 | 权限 | 说明 | 参数/备注 |
|---|---|---|---|
closenpc | gm_mode | 关闭功能 NPC | NPC 相关参数 |
countrypower | gm_mode | 处理国家强弱 | 国家相关参数 |
summon | gm_mode | GM 召唤 NPC | id=NPC编号 或 NPC 名称 |
usleep | gm_mode | 线程休眠 | 毫秒数 |
createrush | gm_mode | 引发一次怪物攻城 | 无 |
fetch | gm_mode | GM 制造物品 | id=物品编号 或物品名称 |
gzfetch | gm_mode | GM 改造物品 | id=物品编号 color=品质颜色 |
getgive | gm_mode | 获取赠品 | 无(+10金币赠品、+2材料、+10道具卡) |
四、服务器管理命令
| 命令 | 权限 | 说明 | 参数/备注 |
|---|---|---|---|
kickgateuser | gm_mode | 踢掉网关上的玩家 | 在 Gateway 层踢人 |
enableregister | gm_mode | 允许/禁止注册 | 开关参数 |
enablelogin | gm_mode | 允许/禁止登录 | 开关参数 |
setservice | gm_mode | 设置游戏功能 | 功能开关参数 |
setfylevel | gm_mode | 设置游戏(未转生)封印等级 | 等级数值 |
setmaxlevel | gm_mode | 设置游戏(未转生)最大等级 | 等级数值 |
settrunfylevel | gm_mode | 设置游戏(转生)封印等级 | 等级数值 |
settrunmaxlevel | gm_mode | 设置游戏(转生)最大等级 | 等级数值 |
setpriv | gm_mode | 设置角色权限 | name=玩家名 priv=权限值 |
newzone | gm_mode | 设置运行参数/配置重生点 | 参数配置 |
shutdown | gm_mode | 停机维护 | 无 |
systime | gm_mode | 获取系统当前时间 | 无 |
userdistribute | gm_mode | 获取本组服务器的人数分布 | 无 |
version | gm_mode | 动态设置服务器版本号 | 版本号参数 |
五、PVP/战争相关命令
| 命令 | 权限 | 说明 | 参数/备注 |
|---|---|---|---|
decitydare | gm_mode | 启动/停止帮会夺城战 | 开关参数 |
deempdare | gm_mode | 启动/停止皇城争夺战 | 开关参数 |
tong | gm_mode | 激活帮会战 | t1=帮会名A t2=帮会名B |
viewcountrydare | gm_mode | 查看国战记录 | 无 |
npcdare | gm_mode | 立即触发 NPC 争夺战 | 无 |
changecountry | gm_mode | 开启/停止叛国功能 | 开关参数 |
killer | gm_mode | 必杀模式 | 无 |
clearworld | super_mode + gm_mode | 清除范围内的怪物 | 需要超级 GM 权限 |
六、帮会/家族/门派管理命令
| 命令 | 权限 | 说明 | 参数 |
|---|---|---|---|
createunion | gm_mode | 创建一个帮会 | 帮会相关参数 |
createfamily | gm_mode | 创建一个家族 | 家族相关参数 |
createschool | gm_mode | 创建一个门派 | 门派相关参数 |
addsepexp | gm_mode | 领取家族经验 | 家族相关参数 |
setrepute | gm_mode | 设置家族声望 | 数值参数 |
setseptlevel | gm_mode | 设置家族等级 | 等级参数 |
setallyfd | gm_mode | 设置联盟友好度 | 数值参数 |
svote | gm_mode | 家族投票 | name=家族名 |
uvote | gm_mode | 帮会投票 | name=帮会名 |
debugvote | gm_mode | 启动/停止投票 | 开关参数 |
clearseptunion | gm_mode | 清除老版帮会和家族数据 | 无 |
七、经济系统命令
| 命令 | 权限 | 说明 | 参数 |
|---|---|---|---|
givegold | gm_mode | 金币补偿 | 金币数量 |
givemoney | gm_mode | 银币补偿 | 银币数量 |
givestock | gm_mode | 股票补偿 | 股票数量 |
goldsystem | gm_mode | 金币系统 | 操作参数 |
stocksystem | gm_mode | 股票系统 | 操作参数 |
stockconsign | gm_mode | 股票委托管理 | 操作参数 |
stockuser | gm_mode | 股票用户管理 | 操作参数 |
stocktransfer | gm_mode | 股票资金管理 | 操作参数 |
redeemgold | gm_mode | 兑换金币 | 数量参数 |
querygold | gm_mode | 查询金币余额 | 无 |
redeemmonthcard | normal_mode | 兑换月卡 | 数量参数 |
contribute | gm_mode | 捐献国库 | 数量参数 |
bank | gm_mode | 设置仓库相关 | 操作参数 |
注意:
redeemmonthcard权限为normal_mode,所有玩家均可使用。
八、角色/属性调试命令
| 命令 | 权限 | 说明 | 参数 |
|---|---|---|---|
value | gm_mode | 设置 HP/MP/SP | hp=数值 mp=数值 sp=数值 |
goodness | gm_mode | 查看当前善恶度 | 无 |
getvalue | gm_mode | 获取某个数值(目前只有魅力) | 属性名 |
setvalue | gm_mode | 设置某个数值 | 属性名+数值 |
addexp | gm_mode | 增加经验值 | 经验数值 |
querypoint | gm_mode | 查询点数 | 无 |
qaccount | gm_mode | 查询账号信息 | 账号/角色名 |
getsize | gm_mode | 查看角色所占空间 | 无 |
clearcolddown | gm_mode | 清除技能冷却时间 | 无 |
九、技能/任务调试命令
| 命令 | 权限 | 说明 | 参数 |
|---|---|---|---|
upskill | gm_mode | 学习/升级魔法技能 | 技能参数 |
skill | gm_mode | 技能测试指令 | 技能参数 |
clearskill | gm_mode | 清除指定技能 | 技能参数 |
setquest | gm_mode | 更改任务变量 | 任务ID+变量 |
checkquest | gm_mode | 检查可以接的任务 | 无 |
abandon | gm_mode | 清除任务 | 任务参数 |
十、地图/场景调试命令
| 命令 | 权限 | 说明 | 参数 |
|---|---|---|---|
loadmap | gm_mode | 加载指定地图 | 地图参数 |
unloadmap | gm_mode | 卸载指定地图 | 地图参数 |
showmaps | gm_mode | 查看已加载的地图列表 | 无 |
showentries | gm_mode | 查看周围的 NPC 和玩家 | 无 |
setblock | gm_mode | 设置地图阻挡 | 坐标参数 |
checkblock | gm_mode | 检查地图阻挡 | 坐标参数 |
showspecialnpc | gm_mode | 查看当前的特殊 NPC | 无 |
十一、宠物调试命令
| 命令 | 权限 | 说明 | 参数 |
|---|---|---|---|
callpet | gm_mode | 召唤宠物 | 宠物参数 |
showpets | gm_mode | 查看当前的宠物 | 无 |
killpets | gm_mode | 杀掉当前的宠物 | 无 |
setpetai | gm_mode | 设置宠物行为模式 | AI 参数 |
setpetaif | gm_mode | 设置宠物 AIF | AIF 参数 |
showaddexp | gm_mode | 显示替身/宠物附加的经验 | 无 |
changehorse | gm_mode | 换马 | 坐骑参数 |
十二、其他调试命令
| 命令 | 权限 | 说明 | 参数 |
|---|---|---|---|
createquiz | gm_mode | 发起一次全区智力竞赛 | 无 |
debuggem | gm_mode | 启动/停止护宝任务 | 开关参数 |
team | gm_mode | 组队操作 | 操作参数 |
throwobject | gm_mode | 扔东西 | 物品参数 |
leechdom | gm_mode | 使用药品 | 药品参数 |
backoff | gm_mode | 后退操作 | 无 |
lockvalue | gm_mode | 锁定消耗 | 数值参数 |
queryincmap | gm_mode | 请求增值地图列表 | 无 |
跨服 GM 命令协议
以下命令支持通过 Session 服务器跨服执行,即使目标玩家不在当前场景服务器上也能生效:
| 协议 ID | 常量名 | 对应 GM 命令 | 说明 |
|---|---|---|---|
| 1 | GM_COMMAND_FINDUSER | finduser | 查找玩家 |
| 2 | GM_COMMAND_GOTOUSER | gotouser | 传送至玩家 |
| 3 | GM_COMMAND_CATCHUSER | catchuser | 召唤玩家 |
| 4 | GM_COMMAND_DONTTALK | donttalk | 禁言 |
| 5 | GM_COMMAND_TALK | talk | 解除禁言 |
| 6 | GM_COMMAND_KICK | kick | 踢人 |
| 7 | GM_COMMAND_SETPRIV | setpriv | 设置权限 |
| 8 | GM_COMMAND_LOCKVALUE | lockvalue | 锁定消耗 |
| 9 | GM_COMMAND_LEVELUP | levelup | 升级 |
| 12 | GM_COMMAND_EMBAR | embar | 囚禁玩家 |
| 14 | GM_COMMAND_REFRESH_GENERAL | refreshgeneral | 刷新大将军 |
| 16 | GM_COMMAND_LOADQUEST | loadquest | 加载任务 |
| 17 | GM_COMMAND_LOADNPCTRADE | loadnpctrade | 加载 NPC 交易 |
| 18 | GM_COMMAND_LOADTBL | loadtbl | 加载 TBL |
| 19 | GM_COMMAND_LOADSYSTEM | - | 刷新系统公告 |
| 20 | GM_COMMAND_LOAD_GAME_CONFIG | loadgameconfig | 加载游戏配置 |
| 21 | GM_COMMAND_LOADNEWQUEST | loadnewquest | 刷新 Lua 脚本 |
| 22 | GM_COMMAND_LOADGIFTBOX | loadgiftBox | 刷新宝盒配置 |
| 23 | GM_COMMAND_LOAD_FUBEN_CONFIG | loadfuben | 刷新副本配置 |
| 24 | GM_COMMAND_LOAD_ACTIVITY_CONFIG | loadact | 刷新活动配置 |
| 25 | GM_COMMAND_LOAD_MALL_CONFIG | loadmall | 刷新商城配置 |
跨服命令错误码
| 错误码 | 常量名 | 说明 |
|---|---|---|
| 0 | GM_COMMAND_ERR_NOERR | 执行成功 |
| 1 | GM_COMMAND_ERR_NOUSER | 玩家不在线 |
| 2 | GM_COMMAND_ERR_PRIV | 权限不足 |
| 3 | GM_COMMAND_ERR_PARAM | 参数错误 |
| 4 | GM_COMMAND_ERR_FAIL | 执行失败 |
GM 工具通信协议
GM 工具(外部 GM 客户端)通过以下协议与服务器通信,定义在 base/GmToolCommand.h 中:
| 协议 ID | 常量名 | 说明 |
|---|---|---|
| 128 | CMD_GMTOOL | GM 工具主命令 ID |
| 1 | PARA_CHAT_GMTOOL | GM 聊天消息 |
| 2 | PARA_MSG_GMTOOL | GM 工单(Scene->Super->Info) |
| 3 | PARA_MSG_REPLY_GMTOOL | GM 工单回复 |
| 4 | PARA_PUNISH_GMTOOL | GM 处罚 |
| 5 | PARA_BROADCAST_GMTOOL | GM 公告 |
| 6 | PARA_NEW_MSG_GMTOOL | 新 GM 工单 |
| 7 | PARA_LOG_GMTOOL | GM 操作日志 |
命令执行流程
1. GM 在聊天频道输入 "//命令名 参数"
│
2. 聊天系统检测到 "//" 前缀
│
3. 调用 Gm::exec(pUser, cmd)
│
4. 在 GmCmds[] 数组中查找匹配的命令名(大小写不敏感)
│
5. 检查权限:pUser->getPriv() & GmCmds[i].priv
│
6. 调用对应的 Gm::静态函数 执行命令
│
7. 记录 GM 操作日志(Gm::sendLog)
│
8. 对于跨服命令:
通过 t_gmCommand_SceneSession 发送到 Session 服务器
│
9. Session 服务器中转到目标场景服务器执行
GM 配置
config.xml 中的 GM 相关配置
| 配置项 | 说明 |
|---|---|
gm_mode | GM 模式全局开关 |
gm_ip | GM 允许的 IP 网段配置文件路径 |
gm_logfile | GM 操作日志文件路径 |
gm_conf.xml 配置
配置允许使用 GM 命令的 IP 网段和例外角色 ID。
快速参考
常用命令速查
| 场景 | 命令 |
|---|---|
| 查看帮助 | //help |
| 升级 | //levelup num=10 |
| 传送到地图 | //gomap name=王城 |
| 查找玩家 | //finduser 玩家名 |
| 传送到玩家 | //gotouser 玩家名 |
| 召唤玩家 | //catchuser 玩家名 |
| 世界广播 | //bcworld 公告内容 |
| 禁言玩家 | //donttalk 玩家名 |
| 踢玩家下线 | //kick 玩家名 |
| 无敌模式 | //god |
| 恢复正常 | //normal |
| 制造物品 | //fetch id=物品编号 |
| 增加经验 | //addexp 数值 |
| 设置 HP/MP | //value hp=1000 mp=500 |
| 充值金币 | //givegold 数值 |
| 清除技能冷却 | //clearcolddown |
| 停机维护 | //shutdown |