|
|
@@ -0,0 +1,625 @@
|
|
|
+# GM系统API文档
|
|
|
+
|
|
|
+> 本文档梳理了游戏服务器中所有GM相关的API接口及用途,涵盖管理后台HTTP接口和游戏内GM命令两大部分。
|
|
|
+
|
|
|
+---
|
|
|
+
|
|
|
+## 目录
|
|
|
+
|
|
|
+- [一、GM系统架构概述](#一gm系统架构概述)
|
|
|
+- [二、管理后台 HTTP API](#二管理后台-http-api)
|
|
|
+ - [2.1 邮件管理](#21-邮件管理)
|
|
|
+ - [2.2 玩家管理](#22-玩家管理)
|
|
|
+ - [2.3 服务器管理](#23-服务器管理)
|
|
|
+ - [2.4 数据查询与修改](#24-数据查询与修改)
|
|
|
+ - [2.5 运营工具](#25-运营工具)
|
|
|
+ - [2.6 版本与配置管理](#26-版本与配置管理)
|
|
|
+- [三、游戏内GM命令](#三游戏内gm命令)
|
|
|
+ - [3.1 道具/背包命令](#31-道具背包命令)
|
|
|
+ - [3.2 英雄命令](#32-英雄命令)
|
|
|
+ - [3.3 召唤/抽卡命令](#33-召唤抽卡命令)
|
|
|
+ - [3.4 竞技场命令](#34-竞技场命令)
|
|
|
+ - [3.5 活动命令](#35-活动命令)
|
|
|
+ - [3.6 邮件/好友/公会命令](#36-邮件好友公会命令)
|
|
|
+ - [3.7 皮肤/图鉴/标记命令](#37-皮肤图鉴标记命令)
|
|
|
+ - [3.8 账号服务器命令](#38-账号服务器命令)
|
|
|
+ - [3.9 服务端调试命令](#39-服务端调试命令)
|
|
|
+- [四、GM权限管理](#四gm权限管理)
|
|
|
+- [五、GM命令路由流程](#五gm命令路由流程)
|
|
|
+
|
|
|
+---
|
|
|
+
|
|
|
+## 一、GM系统架构概述
|
|
|
+
|
|
|
+GM系统分为两层:
|
|
|
+
|
|
|
+| 层级 | 入口 | 说明 |
|
|
|
+|------|------|------|
|
|
|
+| **管理后台 (Admin Web)** | `OpenCards.Service.Admin` HTTP服务 | 面向运营/管理人员的Web后台,提供HTTP API进行玩家管理、服务器管理等操作 |
|
|
|
+| **游戏内控制台 (Client Console)** | 客户端发送 `ClientHandleGMRequest` 协议 | 面向测试/开发人员,在游戏内输入GM命令,由Logic服处理 |
|
|
|
+
|
|
|
+### 核心代码文件
|
|
|
+
|
|
|
+| 文件 | 作用 |
|
|
|
+|------|------|
|
|
|
+| `OpenCards.Server.Core/ConstantDefines/CmdDefines.cs` | GM命令字符串常量定义 |
|
|
|
+| `OpenCards.Server.Common/ServerUtils.cs` | 通用GM命令处理(数据查询、反射调用等) |
|
|
|
+| `OpenCards.Server.Logic/Module/GMCommandModule.cs` | Logic服GM命令注册与路由 |
|
|
|
+| `OpenCards.Server.Account/Modules/AccountServer.GMCommand.cs` | 账号服GM命令处理 |
|
|
|
+| `OpenCards.Service.Admin/Core/ModuleFactory.cs` | Admin后台命令路由工厂 |
|
|
|
+| `OpenCards.Service.Admin/Core/Modules/GmModule.cs` | Admin后台执行GM命令模块 |
|
|
|
+| `OpenCards.Service.Admin/Core/Modules/ServerCmdModule.cs` | Admin后台服务命令模块 |
|
|
|
+| `OpenCards.Core/Protocol/Client/0x35300.Logic.Role.cs` | 客户端GM协议定义 |
|
|
|
+
|
|
|
+---
|
|
|
+
|
|
|
+## 二、管理后台 HTTP API
|
|
|
+
|
|
|
+管理后台通过 `ModuleFactory` 根据 `key` 参数路由到不同的处理模块。所有接口均通过 HTTP POST 请求,参数为 JSON 格式。
|
|
|
+
|
|
|
+### 2.1 邮件管理
|
|
|
+
|
|
|
+#### `server_mail` — 发送邮件
|
|
|
+
|
|
|
+- **处理模块**: `SendMailModule`
|
|
|
+- **参数**:
|
|
|
+ - `usertype`: 用户类型(1=在线用户, 2=所有用户, 3=指定用户UUID, 4=指定用户编号)
|
|
|
+ - `mail`: 邮件数据对象(含MailID, Title, Content, Items等)
|
|
|
+ - `server_list`: 目标服务器ID列表(`|`分隔)
|
|
|
+ - `role_list`: 目标角色UUID列表(`|`分隔,指定用户时使用)
|
|
|
+- **用途**: 向指定范围的玩家发送系统邮件,可携带附件道具
|
|
|
+
|
|
|
+---
|
|
|
+
|
|
|
+### 2.2 玩家管理
|
|
|
+
|
|
|
+#### `query_server_role_info` — 查询玩家数据
|
|
|
+
|
|
|
+- **处理模块**: `QueryRoleInfoModule`
|
|
|
+- **用途**: 查询单个玩家的详细数据
|
|
|
+
|
|
|
+#### `query_server_role_info_List` — 批量获取玩家数据
|
|
|
+
|
|
|
+- **处理模块**: `QueryRoleInfoListModule`
|
|
|
+- **用途**: 批量查询多个玩家的数据
|
|
|
+
|
|
|
+#### `modify_server_role_info` — 修改玩家数据
|
|
|
+
|
|
|
+- **处理模块**: `ModifyRoleInfoModule`
|
|
|
+- **用途**: 直接修改玩家角色数据(如等级、货币等)
|
|
|
+
|
|
|
+#### `server_mute_role` — 禁言玩家
|
|
|
+
|
|
|
+- **处理模块**: `MuteRoleModule`
|
|
|
+- **用途**: 对指定玩家进行禁言处理
|
|
|
+
|
|
|
+#### `server_block_role` — 封禁玩家
|
|
|
+
|
|
|
+- **处理模块**: `BankRoleModule`
|
|
|
+- **用途**: 对指定玩家进行封号处理
|
|
|
+
|
|
|
+#### `modity_server_login_white_list` — 登录白名单管理
|
|
|
+
|
|
|
+- **处理模块**: `ModifyLoginWhiteListModule`
|
|
|
+- **操作类型**:
|
|
|
+ - `AddMulti`: 批量添加白名单
|
|
|
+ - `DeleteMulti`: 批量删除白名单
|
|
|
+ - `EmptyAll`: 清空白名单
|
|
|
+- **用途**: 管理服务器登录白名单,控制哪些账号可以登录
|
|
|
+
|
|
|
+---
|
|
|
+
|
|
|
+### 2.3 服务器管理
|
|
|
+
|
|
|
+#### `server_list_refresh` — 刷新服务器列表
|
|
|
+
|
|
|
+- **处理模块**: `RefreshServerListModule`
|
|
|
+- **用途**: 通知Admin服务刷新服务器列表数据
|
|
|
+
|
|
|
+#### `query_server_state_action` — 查询在线玩家数
|
|
|
+
|
|
|
+- **处理模块**: `QueryServerUserCount`
|
|
|
+- **用途**: 查询各服务器的在线玩家数量
|
|
|
+
|
|
|
+#### `notify_open_server` — 通知开服
|
|
|
+
|
|
|
+- **处理模块**: `NotifyOpenServerGMModule`
|
|
|
+- **参数**:
|
|
|
+ - `is_notify_game_server`: 是否通知游戏服开服
|
|
|
+ - `is_notify_public_server`: 是否通知公共服开服
|
|
|
+ - `operate_server_ids`: 目标服务器ID列表(`|`分隔)
|
|
|
+- **用途**: 通知指定服务器执行开服逻辑(发送 `ServerOpenNotify`)
|
|
|
+
|
|
|
+#### `notify_stop_server` — 通知停服
|
|
|
+
|
|
|
+- **处理模块**: `NotifyStopServerGMModule`
|
|
|
+- **参数**:
|
|
|
+ - `is_kick_game_player`: 是否踢出在线玩家
|
|
|
+ - `is_notify_game_server`: 是否通知游戏服停服
|
|
|
+ - `is_notify_public_server`: 是否通知公共服停服
|
|
|
+ - `operate_server_ids`: 目标服务器ID列表(`|`分隔)
|
|
|
+- **用途**: 通知指定服务器执行停服逻辑,可选踢出在线玩家(发送 `ServerShutdownNotify` / `StopServerKickRequest`)
|
|
|
+
|
|
|
+#### `stop_server_change_data` — 停服数据刷新
|
|
|
+
|
|
|
+- **处理模块**: `RefreshStopServerDataModule`
|
|
|
+- **用途**: 刷新停服相关数据
|
|
|
+
|
|
|
+#### `check_login_flow` — 检查登录流程
|
|
|
+
|
|
|
+- **处理模块**: `CheckLoginFlowModule`
|
|
|
+- **用途**: 获取登录流程未走通的服务器列表数据
|
|
|
+
|
|
|
+---
|
|
|
+
|
|
|
+### 2.4 数据查询与修改
|
|
|
+
|
|
|
+#### `server_gm` — 执行GM命令
|
|
|
+
|
|
|
+- **处理模块**: `GmModule`
|
|
|
+- **参数**:
|
|
|
+ - `gmType`: 用户类型(1=在线用户, 2=所有用户, 3=指定用户UUID)
|
|
|
+ - `server_list`: 目标服务器ID列表(`|`分隔)
|
|
|
+ - `role_list`: 目标角色UUID列表(`|`分隔)
|
|
|
+ - `content`: GM命令内容(与游戏内GM命令格式一致)
|
|
|
+- **用途**: 通过管理后台向指定玩家/服务器发送GM命令(底层发送 `HandleGMNotify` 协议)
|
|
|
+
|
|
|
+#### `server_cmd` — 服务命令
|
|
|
+
|
|
|
+- **处理模块**: `ServerCmdModule`
|
|
|
+- **参数**:
|
|
|
+ - `serviceAddr`: 目标服务地址
|
|
|
+ - `operationType`: 操作类型(`notify` 发送通知 / `request` 发送请求并等待响应)
|
|
|
+ - `notify` / `request`: 具体的协议数据(格式: `FullTypeName:{json}`)
|
|
|
+- **用途**: 向指定服务进程直接发送协议消息,用于底层调试
|
|
|
+
|
|
|
+#### `set_server_time` — 设置服务器时间
|
|
|
+
|
|
|
+- **处理模块**: `SetServerTimeModule`
|
|
|
+- **用途**: 修改服务器时间偏移(用于活动测试等场景)
|
|
|
+
|
|
|
+---
|
|
|
+
|
|
|
+### 2.5 运营工具
|
|
|
+
|
|
|
+#### `cdk_opt` — CDK操作
|
|
|
+
|
|
|
+- **处理模块**: `CdkModule`
|
|
|
+- **用途**: CDK(礼包兑换码)的生成、查询、管理等操作
|
|
|
+
|
|
|
+#### `send_pay_gift` — 发送充值礼包
|
|
|
+
|
|
|
+- **处理模块**: `SendPayGiftModule`
|
|
|
+- **用途**: 向玩家发送充值相关礼包
|
|
|
+
|
|
|
+#### `change_pay_order_state` — 修改支付订单状态
|
|
|
+
|
|
|
+- **处理模块**: `ChangePayOrderStateModule`
|
|
|
+- **用途**: 修改玩家的支付订单状态
|
|
|
+
|
|
|
+---
|
|
|
+
|
|
|
+### 2.6 版本与配置管理
|
|
|
+
|
|
|
+#### `operate_client_accept_version` — 客户端版本管理
|
|
|
+
|
|
|
+- **处理模块**: `ModifyOrQueryClientAcceptVersionModule`
|
|
|
+- **用途**: 修改或查询客户端可接受的版本号
|
|
|
+
|
|
|
+#### `operate_update_server_config` — 更新服务器配置
|
|
|
+
|
|
|
+- **处理模块**: `OperateUpdateServerConfigModule`
|
|
|
+- **用途**: 在线更新服务器配置
|
|
|
+
|
|
|
+#### `operate_client_version_zip_config` — 客户端版本包配置
|
|
|
+
|
|
|
+- **处理模块**: `OperateClientVersionAndZipConfigModule`
|
|
|
+- **用途**: 管理客户端版本更新包配置
|
|
|
+
|
|
|
+#### `server_protocol_switch` — 服务器协议开关
|
|
|
+
|
|
|
+- **处理模块**: `ServerProtocolModule`
|
|
|
+- **用途**: 控制服务器各类协议功能的开关状态
|
|
|
+
|
|
|
+---
|
|
|
+
|
|
|
+## 三、游戏内GM命令
|
|
|
+
|
|
|
+游戏内GM命令通过客户端发送 `ClientHandleGMRequest` 协议,命令格式为空格分隔的字符串,由 `LogicService` 分发给各模块处理。
|
|
|
+
|
|
|
+### 3.1 道具/背包命令
|
|
|
+
|
|
|
+> **处理模块**: `PackageModule`
|
|
|
+
|
|
|
+| 命令 | 参数 | 用途 |
|
|
|
+|------|------|------|
|
|
|
+| `additem` | `<itemId> <count> [type]` | 添加指定ID的道具,可指定道具类型(默认Tool类型) |
|
|
|
+| `addallitem` | `<count> [type]` | 添加配置表中该类型的所有道具各count个 |
|
|
|
+| `addgold` | 无 | 添加1亿金币(CoinItemId) |
|
|
|
+| `adddiam` | 无 | 添加1亿钻石(DiamondItemId) |
|
|
|
+| `addexp` | 无 | 添加1亿英雄经验(HeroExpItemId) |
|
|
|
+| `listitems` | 无 | 列出背包中所有道具(uuid, itemId, count, type) |
|
|
|
+| `useitem` | `<itemId> <count> [selectedItemId]` | 使用指定ID的道具 |
|
|
|
+| `sellitem` | `<itemId> <count>` | 出售指定ID的道具 |
|
|
|
+| `removeitem` | `<itemId> <count>` | 删除指定ID的道具 |
|
|
|
+| `drop` | `<dropId>` | 按掉落表ID执行掉落 |
|
|
|
+| `clearpackage` | 无 | 清空整个背包(包括道具、金币、钻石、VIP经验) |
|
|
|
+
|
|
|
+---
|
|
|
+
|
|
|
+### 3.2 英雄命令
|
|
|
+
|
|
|
+> **处理模块**: `HeroModule`
|
|
|
+
|
|
|
+| 命令 | 参数 | 用途 |
|
|
|
+|------|------|------|
|
|
|
+| `addhero` | `<heroId> <count> <level> <rank>` | 添加指定英雄,可指定数量、等级、品阶 |
|
|
|
+| `listhero` | `[level]` | 列出所有英雄,可选设置统一等级 |
|
|
|
+| `herouuid` | 无 | 列出所有英雄的UUID |
|
|
|
+| `addAllHero` | `<count>` | 添加配置表中所有启用的英雄(IsUsing=1)各count个 |
|
|
|
+| `addAllHero2` | `<count> <level> <quality>` | 添加所有可用英雄(IsUsing=1 或 IsAvailable=1),可指定等级和品阶 |
|
|
|
+| `setHeroPackCount` | `<count>` | 设置英雄背包容量(受 `BuyHeroBagMaxCount` 限制) |
|
|
|
+
|
|
|
+---
|
|
|
+
|
|
|
+### 3.3 召唤/抽卡命令
|
|
|
+
|
|
|
+> **处理模块**: `SummonModule`
|
|
|
+
|
|
|
+召唤类型(type)对应 `SyncClientSummonType` 枚举:
|
|
|
+- 钻石抽卡 (Diamond)
|
|
|
+- 友情抽卡 (Friend)
|
|
|
+- 占星抽卡 (Astrology)
|
|
|
+- 限时抽卡 (TimeLimited)
|
|
|
+
|
|
|
+| 命令 | 参数 | 用途 |
|
|
|
+|------|------|------|
|
|
|
+| `summonsingle` | `<type>` | 单次抽卡 |
|
|
|
+| `summonten` | `<type>` | 十连抽卡 |
|
|
|
+| `addsummon` | `<type> <count>` | 批量抽卡(count上限10000) |
|
|
|
+| `adddrawpoints` | `<count>` | 添加抽卡积分(DrawPoints) |
|
|
|
+| `testWishSummon` | `<count>` | 测试心愿召唤(上限10000次),在 `AtlantisActivityModule` 中处理 |
|
|
|
+
|
|
|
+---
|
|
|
+
|
|
|
+### 3.4 竞技场命令
|
|
|
+
|
|
|
+> **处理模块**: `ArenaModule`
|
|
|
+
|
|
|
+#### 斗技场 (Arena Valor) 相关
|
|
|
+
|
|
|
+| 命令 | 参数 | 用途 |
|
|
|
+|------|------|------|
|
|
|
+| `enterArenaValor` | 无 | 进入斗技场(自动执行进竞技场+获取数据) |
|
|
|
+| `enterArenaValor1` | 无 | 一键进入斗技场(自动解锁关卡5-1、添加所有英雄、设置随机分数2000-2900) |
|
|
|
+| `setArenaScore` | `<score>` | 设置斗技场积分 |
|
|
|
+| `fillarenavalorgroup` | 无 | 填充斗技场分组(转发到ArenaManagerService处理) |
|
|
|
+| `initarenavalorrobotrank` | 无 | 初始化斗技场机器人排名(转发到ArenaValorService处理) |
|
|
|
+
|
|
|
+#### 血战斗技场 (Arena Highend) 相关
|
|
|
+
|
|
|
+| 命令 | 参数 | 用途 |
|
|
|
+|------|------|------|
|
|
|
+| `enterArenaHighend` | 无 | 进入血战斗技场(自动执行进竞技场+获取数据) |
|
|
|
+| `setArenaHighendTier` | `<tier>` | 设置血战斗技场段位 |
|
|
|
+| `addRoleInArenaHighendScoreRank` | 无 | 将当前角色加入血战斗技场积分排行榜 |
|
|
|
+
|
|
|
+#### 巅峰竞技场 (Arena Pinnacle) 相关
|
|
|
+
|
|
|
+| 命令 | 参数 | 用途 |
|
|
|
+|------|------|------|
|
|
|
+| `nextArenaPinnacleStage` | 无 | 推进巅峰竞技场到下一阶段(修改时间偏移) |
|
|
|
+| `backArenaPinnacleStage` | 无 | 回退巅峰竞技场到上一阶段(修改时间偏移) |
|
|
|
+| `updateArenaPinnacleRegionConfig` | `<isAutoDistributeRegion> <...>` | 更新巅峰竞技场赛区配置 |
|
|
|
+| `preparePinnacleFakeData` | 无 | 准备巅峰竞技场假数据(代码已注释,暂不可用) |
|
|
|
+
|
|
|
+#### 竞技场通用调试命令
|
|
|
+
|
|
|
+| 命令 | 参数 | 用途 |
|
|
|
+|------|------|------|
|
|
|
+| `initarenarobotdatamapping` | 无 | 初始化竞技场机器人数据映射(转发到ArenaManagerService处理) |
|
|
|
+| `matchArenaRealPlayer` | `<state>` | 设置竞技场匹配真人开关(0=关闭/非0=开启,遍历所有Valor+Highend服务) |
|
|
|
+| `setNewArenaSeason` | `<flag> <count>` | 设置新竞技场赛季(flag=3为巅峰竞技场,代码已注释) |
|
|
|
+| `setTimeOffset` | `<cmd1> <cmd2>` | 设置服务器时间偏移(需 `IsGMTime` 开关开启) |
|
|
|
+| `printiostatistics` | 无 | 打印IO统计信息到桌面文件(仅Windows) |
|
|
|
+
|
|
|
+#### 账号相关
|
|
|
+
|
|
|
+| 命令 | 参数 | 用途 |
|
|
|
+|------|------|------|
|
|
|
+| `cleanUpAccount` | 无 | 清理账号数据(转发clearaccount到AccountService) |
|
|
|
+
|
|
|
+---
|
|
|
+
|
|
|
+### 3.5 活动命令
|
|
|
+
|
|
|
+> **处理模块**: `ActivityModule`
|
|
|
+
|
|
|
+| 命令 | 参数 | 用途 |
|
|
|
+|------|------|------|
|
|
|
+| `targettask` | `<taskId> <count>` | 推进指定目标任务的进度(达到目标后自动设为可领取状态) |
|
|
|
+| `activitytask` | `<taskId> <count>` | 推进指定活动任务的进度(达到目标后自动设为可领取状态) |
|
|
|
+| `setthirtyperiod` | `<period>` | 设置30日签到活动周期(只能向后推进) |
|
|
|
+
|
|
|
+---
|
|
|
+
|
|
|
+### 3.6 邮件/好友/公会命令
|
|
|
+
|
|
|
+#### 邮件
|
|
|
+
|
|
|
+> **处理模块**: `MailModule`
|
|
|
+
|
|
|
+| 命令 | 参数 | 用途 |
|
|
|
+|------|------|------|
|
|
|
+| `sendmail` | `<mailId> <param2> <param3>` | 根据邮件模板ID发送邮件给当前角色 |
|
|
|
+
|
|
|
+#### 好友
|
|
|
+
|
|
|
+> **处理模块**: `FriendModule`
|
|
|
+
|
|
|
+| 命令 | 参数 | 用途 |
|
|
|
+|------|------|------|
|
|
|
+| `addmercenary` | `<heroId> <heroRank>` | 添加好友佣兵英雄 |
|
|
|
+| `resetmercenaryuse` | 无 | 重置佣兵使用次数记录 |
|
|
|
+
|
|
|
+#### 公会
|
|
|
+
|
|
|
+> **处理模块**: `GuildWarriorTreasureModule`
|
|
|
+
|
|
|
+| 命令 | 参数 | 用途 |
|
|
|
+|------|------|------|
|
|
|
+| `addguildwarriortreasure` | `<configId> <args>` | 添加公会勇者宝藏(args为逗号分隔的参数) |
|
|
|
+| `addgwt` | `<configId> <args>` | `addguildwarriortreasure` 的缩写别名(通过GMCommandModule路由) |
|
|
|
+
|
|
|
+#### 新公会Boss
|
|
|
+
|
|
|
+> **处理模块**: `NewGuildBossModule`
|
|
|
+
|
|
|
+| 命令 | 参数 | 用途 |
|
|
|
+|------|------|------|
|
|
|
+| `SetNewGuildBossStage` | `<stageNum>` | 设置新公会Boss的关卡阶段 |
|
|
|
+
|
|
|
+---
|
|
|
+
|
|
|
+### 3.7 皮肤/图鉴/标记命令
|
|
|
+
|
|
|
+#### 皮肤
|
|
|
+
|
|
|
+> **处理模块**: `SkinModule`
|
|
|
+
|
|
|
+| 命令 | 参数 | 用途 |
|
|
|
+|------|------|------|
|
|
|
+| `unlockAllSkin` | 无 | 解锁所有皮肤(遍历Item表中ItemType=Skin的所有道具添加) |
|
|
|
+
|
|
|
+#### 角色标记
|
|
|
+
|
|
|
+> **处理模块**: `TLRoleFlagModule`(通过 `GMCommandModule` 路由)
|
|
|
+
|
|
|
+| 命令 | 参数 | 用途 |
|
|
|
+|------|------|------|
|
|
|
+| `addflag` | `<key> <value> <type>` | 添加角色标记(累加模式),type=1表示1日标记,其他表示永久标记 |
|
|
|
+| `setflag` | `<key> <value> <type>` | 设置角色标记(覆盖模式),type=1表示1日标记,其他表示永久标记 |
|
|
|
+
|
|
|
+#### 新手引导
|
|
|
+
|
|
|
+> **处理模块**: `NewerGuideModule`(通过 `GMCommandModule` 路由)
|
|
|
+
|
|
|
+| 命令 | 参数 | 用途 |
|
|
|
+|------|------|------|
|
|
|
+| `guide` | `<id> <step>` | 设置新手引导进度到指定步骤 |
|
|
|
+
|
|
|
+---
|
|
|
+
|
|
|
+### 3.8 账号服务器命令
|
|
|
+
|
|
|
+> **处理模块**: `AccountServer`(通过 `HandleGMRequest` RPC调用)
|
|
|
+
|
|
|
+这些命令在AccountServer层直接拦截处理,不会转发到Logic服:
|
|
|
+
|
|
|
+| 命令 | 参数 | 用途 |
|
|
|
+|------|------|------|
|
|
|
+| `clearaccount` | `<accountID>` | 清除指定账号的数据(清理AccountDataMapping,踢出在线玩家) |
|
|
|
+| `resettimers` | 无 | 重置账号数据保存定时器 |
|
|
|
+| `relinkrole` | `<roleId> <account> <serverId>` | 重新绑定角色到指定账号(创建新AccountData并关联角色) |
|
|
|
+
|
|
|
+---
|
|
|
+
|
|
|
+### 3.9 服务端调试命令
|
|
|
+
|
|
|
+> **处理模块**: `ServerUtils.HandleGMRequest()` — 这些命令可在任何服务进程中执行
|
|
|
+
|
|
|
+#### 数据查询与修改
|
|
|
+
|
|
|
+| 命令 | 参数 | 用途 |
|
|
|
+|------|------|------|
|
|
|
+| `queryData` | `<prefix> <typeName> [fieldName]` | 查询ORM映射数据。prefix为数据前缀,typeName为ORM类型全名,可选fieldName查询指定字段 |
|
|
|
+| `saveData` | `<prefix> <typeName> <jsonData>` | 保存ORM映射数据。将JSON数据合并到现有数据中 |
|
|
|
+| `saveFieldData` | `<prefix> <typeName> <fieldName> <jsonData>` | 保存ORM数据的指定字段。当typeName为RoleData/RoleExtData时,路由到在线Logic服处理 |
|
|
|
+| `queryfield` | `<fieldName>` | 通过反射查询当前Service对象的字段值 |
|
|
|
+| `savefield` | `<fieldName> <jsonValue>` | 通过反射设置当前Service对象的字段值 |
|
|
|
+| `queryproperty` | `<propertyName>` | 通过反射查询当前Service对象的属性值 |
|
|
|
+| `saveproperty` | `<propertyName> <jsonValue>` | 通过反射设置当前Service对象的属性值 |
|
|
|
+| `InvokeMethod` | `<methodName> [params...]` | 通过反射调用当前Service对象的指定方法,参数以JSON格式传递 |
|
|
|
+
|
|
|
+#### Redis操作
|
|
|
+
|
|
|
+| 命令 | 参数 | 用途 |
|
|
|
+|------|------|------|
|
|
|
+| `redisexecute` | `<cmd> [args...]` | 直接执行Redis命令(不返回结果) |
|
|
|
+| `redisexecute1` | `<cmd> [args...]` | 执行Redis命令并返回字符串结果 |
|
|
|
+| `redisquery` | `<cmd> [args...]` | 查询Redis,返回数组格式结果 |
|
|
|
+| `redisquery2` | `<cmd> [args...]` | 查询Redis,返回字典格式结果 |
|
|
|
+
|
|
|
+#### 系统工具
|
|
|
+
|
|
|
+| 命令 | 参数 | 用途 |
|
|
|
+|------|------|------|
|
|
|
+| `ping` | 无 | 连通性测试,返回"success" |
|
|
|
+| `errorstatistic` | 无 | 打印错误统计信息到文件 |
|
|
|
+| `setconstantvalue` | `<key> <field> <value>` | 动态修改常量表(Table_ConstantManager)的值 |
|
|
|
+| `exesh` | `<command>` | 在服务器上执行Shell命令(仅Linux环境) |
|
|
|
+
|
|
|
+---
|
|
|
+
|
|
|
+## 四、GM权限管理
|
|
|
+
|
|
|
+### 数据库结构
|
|
|
+
|
|
|
+GM权限数据存储在 `afk_gm` 数据库中,包含以下表:
|
|
|
+
|
|
|
+#### `permissions` — 权限组表
|
|
|
+
|
|
|
+| 字段 | 类型 | 说明 |
|
|
|
+|------|------|------|
|
|
|
+| Id | INTEGER | 主键自增 |
|
|
|
+| Name | VARCHAR(255) | 权限组名称(唯一) |
|
|
|
+| Permissions | TEXT | 权限字符串(`|`和`-`分隔的层级权限编码) |
|
|
|
+| Status | BOOLEAN | 状态(0=未启用, 1=已启用) |
|
|
|
+
|
|
|
+默认数据:
|
|
|
+- **超级管理员**: Permissions=`1|1-1|1-2|2|2-1|2-2|2-3|3|3-1|4|4-1|4-2|4-3`,Status=启用
|
|
|
+
|
|
|
+#### `users` — 用户表
|
|
|
+
|
|
|
+| 字段 | 类型 | 说明 |
|
|
|
+|------|------|------|
|
|
|
+| Id | INTEGER | 主键自增 |
|
|
|
+| Account | VARCHAR(255) | 账号(唯一) |
|
|
|
+| Password | VARCHAR(255) | 密码(MD5加密) |
|
|
|
+| Name | VARCHAR(255) | 用户名称 |
|
|
|
+| Pid | INTEGER | 关联权限组ID(外键→permissions.Id) |
|
|
|
+| Status | BOOLEAN | 状态(0=未启用, 1=已启用) |
|
|
|
+
|
|
|
+默认数据:
|
|
|
+- **超管**: Account=`root`, Password=`4DCBE8484EA8AFBB1BB67450C5C08503`(MD5加密), Pid=1
|
|
|
+
|
|
|
+#### `server_group` — 服务器组表
|
|
|
+
|
|
|
+| 字段 | 类型 | 说明 |
|
|
|
+|------|------|------|
|
|
|
+| Id | INTEGER | 主键自增 |
|
|
|
+| GroupName | VARCHAR(255) | 组名 |
|
|
|
+| Address | VARCHAR(255) | 服务器地址 |
|
|
|
+| AccountPort | INTEGER | 账号服端口 |
|
|
|
+| AdminPort | INTEGER | 管理后台端口 |
|
|
|
+
|
|
|
+#### `logs` — 操作日志表
|
|
|
+
|
|
|
+| 字段 | 类型 | 说明 |
|
|
|
+|------|------|------|
|
|
|
+| Id | INTEGER | 主键自增 |
|
|
|
+| Type | VARCHAR(255) | 操作类型 |
|
|
|
+| Args | TEXT | 操作参数 |
|
|
|
+| Success | BOOLEAN | 是否成功 |
|
|
|
+| Reason | VARCHAR(255) | 失败原因 |
|
|
|
+| Operator | VARCHAR(255) | 操作者 |
|
|
|
+| CreateAt | DATETIME | 操作时间 |
|
|
|
+
|
|
|
+#### `mails` — 邮件记录表
|
|
|
+
|
|
|
+| 字段 | 类型 | 说明 |
|
|
|
+|------|------|------|
|
|
|
+| Id | INTEGER | 主键自增(起始值10000) |
|
|
|
+| Type | INTEGER | 邮件类型 |
|
|
|
+| ServerList | VARCHAR(255) | 目标服务器列表 |
|
|
|
+| RoleList | VARCHAR(255) | 目标角色列表 |
|
|
|
+| Title | VARCHAR(255) | 邮件标题 |
|
|
|
+| Content | TEXT | 邮件内容 |
|
|
|
+| Items | TEXT | 邮件附件 |
|
|
|
+| Success | BOOLEAN | 是否发送成功 |
|
|
|
+| CreateAt | INTEGER | 创建时间 |
|
|
|
+
|
|
|
+---
|
|
|
+
|
|
|
+## 五、GM命令路由流程
|
|
|
+
|
|
|
+### 游戏内GM命令执行流程
|
|
|
+
|
|
|
+```
|
|
|
+客户端输入GM命令
|
|
|
+ │
|
|
|
+ ▼
|
|
|
+ClientHandleGMRequest (协议: LOGIC_ROLE_START+1)
|
|
|
+ │
|
|
|
+ ▼
|
|
|
+RoleModule.HandleMsgClientHandleGMRequest()
|
|
|
+ │
|
|
|
+ ├─► 检查是否是AccountServer命令 (clearaccount/resettimers/relinkrole)
|
|
|
+ │ └─► 是 → 转发到 AccountServer.rpc_Handle()
|
|
|
+ │
|
|
|
+ └─► 否 → 触发 EventDefines.EventHandleCmd 事件
|
|
|
+ │
|
|
|
+ ├─► GMCommandModule.OnEventHandleCmd()
|
|
|
+ │ ├─ addflag → TLRoleFlagModule.OnGmAddFlag()
|
|
|
+ │ ├─ setflag → TLRoleFlagModule.OnGmSetFlag()
|
|
|
+ │ ├─ addgwt → GuildWarriorTreasureModule.OnGmAddGuildWarriorTreasure()
|
|
|
+ │ └─ guide → NewerGuideModule.OnGmGuide()
|
|
|
+ │
|
|
|
+ ├─► PackageModule.OnEventHandleCmd()
|
|
|
+ │ └─ additem/addgold/adddiam/... 等道具命令
|
|
|
+ │
|
|
|
+ ├─► HeroModule.OnEventHandleCmd()
|
|
|
+ │ └─ addhero/listhero/addAllHero/... 等英雄命令
|
|
|
+ │
|
|
|
+ ├─► SummonModule.OnEventHandleCmd()
|
|
|
+ │ └─ summonsingle/summonten/addsummon/... 等召唤命令
|
|
|
+ │
|
|
|
+ ├─► ArenaModule.OnEventHandleCmd()
|
|
|
+ │ └─ setArenaScore/enterArenaValor/... 等竞技场命令
|
|
|
+ │
|
|
|
+ ├─► ActivityModule.OnEventHandleCmd()
|
|
|
+ │ └─ targettask/activitytask/setthirtyperiod 等活动命令
|
|
|
+ │
|
|
|
+ ├─► MailModule.OnEventHandleCmd()
|
|
|
+ │ └─ sendmail
|
|
|
+ │
|
|
|
+ ├─► FriendModule.OnEventHandleCmd()
|
|
|
+ │ └─ addmercenary/resetmercenaryuse
|
|
|
+ │
|
|
|
+ ├─► SkinModule.OnEventHandleCmd()
|
|
|
+ │ └─ unlockAllSkin
|
|
|
+ │
|
|
|
+ ├─► NewGuildBossModule.OnEventHandleCmd()
|
|
|
+ │ └─ SetNewGuildBossStage
|
|
|
+ │
|
|
|
+ ├─► GuildWarriorTreasureModule.OnEventHandleCmd()
|
|
|
+ │ └─ addguildwarriortreasure
|
|
|
+ │
|
|
|
+ └─► 其他模块的 OnEventHandleCmd()...
|
|
|
+ └─ 未处理 → ServerUtils.HandleGMRequest() 兜底处理
|
|
|
+ └─ queryData/saveData/redisquery/... 等通用命令
|
|
|
+```
|
|
|
+
|
|
|
+### 管理后台GM命令执行流程
|
|
|
+
|
|
|
+```
|
|
|
+Admin HTTP请求
|
|
|
+ │
|
|
|
+ ▼
|
|
|
+ModuleFactory.GetModuleByStr(key)
|
|
|
+ │
|
|
|
+ ├─► server_gm → GmModule.OnHandle()
|
|
|
+ │ └─► 根据 gmType 发送 HandleGMNotify 到指定服务器
|
|
|
+ │ ├─ OnlineUser → ConnectorService (ConnectorBroadcastNotify)
|
|
|
+ │ ├─ AllUser → CenterService (HandleGMNotify)
|
|
|
+ │ └─ SpecificUserUuids → CenterService (HandleGMNotify)
|
|
|
+ │
|
|
|
+ ├─► server_cmd → ServerCmdModule.OnHandle()
|
|
|
+ │ └─► 根据 operationType 发送协议到指定服务
|
|
|
+ │
|
|
|
+ ├─► server_mail → SendMailModule.OnHandle()
|
|
|
+ │ └─► 根据 usertype 发送 SendMailNotify
|
|
|
+ │
|
|
|
+ ├─► notify_open_server → NotifyOpenServerGMModule.OnHandle()
|
|
|
+ │ └─► 发送 ServerOpenNotify
|
|
|
+ │
|
|
|
+ ├─► notify_stop_server → NotifyStopServerGMModule.OnHandle()
|
|
|
+ │ └─► 发送 StopServerKickRequest / ServerShutdownNotify
|
|
|
+ │
|
|
|
+ └─► 其他模块...
|
|
|
+```
|
|
|
+
|
|
|
+---
|
|
|
+
|
|
|
+> 文档生成时间:2026年6月11日
|
|
|
+> 基于代码分支:dev
|