# TSRPC API 接口文档 ## 通用说明 - 所有请求方法均为 `POST` - 所有请求均需加入以下 Header : - `Content-Type: application/json` ## 目录 - chat - [SendChat](#/chat/SendChat) - gomoku - [PlacePiece](#/gomoku/PlacePiece) - kingtd - [KingTDAttack](#/kingtd/KingTDAttack) - [KingTDAttackSkill](#/kingtd/KingTDAttackSkill) - [KingTDCardChanged](#/kingtd/KingTDCardChanged) - [KingTDCardMoving](#/kingtd/KingTDCardMoving) - [KingTDChangeBuff](#/kingtd/KingTDChangeBuff) - [KingTDChangeBullet](#/kingtd/KingTDChangeBullet) - [KingTDChangeCoin](#/kingtd/KingTDChangeCoin) - [KingTDChangeHp](#/kingtd/KingTDChangeHp) - [KingTDChangeSkill](#/kingtd/KingTDChangeSkill) - [KingTDDeleteCard](#/kingtd/KingTDDeleteCard) - [KingTDGetCards](#/kingtd/KingTDGetCards) - [KingTDLevelUpMorale](#/kingtd/KingTDLevelUpMorale) - [KingTDStartGame](#/kingtd/KingTDStartGame) - lobby - mail - [ClearAllMails](#/lobby/mail/ClearAllMails) - [DeleteMail](#/lobby/mail/DeleteMail) - [GetMails](#/lobby/mail/GetMails) - [MarkAllAsRead](#/lobby/mail/MarkAllAsRead) - [MarkAsRead](#/lobby/mail/MarkAsRead) - [CancelMatch](#/lobby/CancelMatch) - [CreateRoom](#/lobby/CreateRoom) - [GetAnnouncement](#/lobby/GetAnnouncement) - [GetNotice](#/lobby/GetNotice) - [GetRoomList](#/lobby/GetRoomList) - [GetUserInfo](#/lobby/GetUserInfo) - [ModifyUserInfo](#/lobby/ModifyUserInfo) - [StartMatch](#/lobby/StartMatch) - [TryEnterRoom](#/lobby/TryEnterRoom) - login - [AuthClient](#/login/AuthClient) - [CreateRole](#/login/CreateRole) - [Login](#/login/Login) - [Register](#/login/Register) - [EnterRoom](#/EnterRoom) - [ExitRoom](#/ExitRoom) - [GetBasicConfig](#/GetBasicConfig) - [JoinGame](#/JoinGame) - [Ready](#/Ready) --- ## chat ### SendChat **路径** - POST `/chat/SendChat` **请求** ```ts interface ReqSendChat { /** * @en whether to notify all users. * @zh 是否是全局聊天 */ channel?: string, content: string } ``` **响应** ```ts interface ResSendChat { } ``` --- ## gomoku ### PlacePiece **路径** - POST `/gomoku/PlacePiece` **请求** ```ts interface ReqPlacePiece { gridX: number, gridY: number } ``` **响应** ```ts interface ResPlacePiece { } ``` --- ## kingtd ### KingTDAttack **路径** - POST `/kingtd/KingTDAttack` **请求** ```ts interface ReqKingTDAttack { /** 攻击者 */ attackerId: number, /** 被攻击列表 */ targets: number[] } ``` **响应** ```ts interface ResKingTDAttack { /** 攻击者 */ attackerId: number, /** 攻击者位置 */ attackerPos?: number, /** 被攻击者位置 */ targetPos?: number, /** * @en id of be attacked * @zh 被攻击者 id */ targets: { /** @zh 被攻击方id */ targetId: number, /** * @en damage value * @zh 伤害数值 */ damage: number }[], /** 攻击者子弹 */ bullet?: number } ``` --- ### KingTDAttackSkill **路径** - POST `/kingtd/KingTDAttackSkill` **请求** ```ts interface ReqKingTDAttackSkill { } ``` **响应** ```ts interface ResKingTDAttackSkill { /** * @en attacker id * @zh 攻击者 id */ attackerId?: number, /** @zh 技能 id */ skillId: number } ``` --- ### KingTDCardChanged **路径** - POST `/kingtd/KingTDCardChanged` **请求** ```ts interface ReqKingTDCardChanged { /** 卡牌数据更新 */ cardData: { /** @zh 卡片唯一id */ id: number, /** @zh 卡片 */ cardId: number, /** @zh 卡片属性 */ cardData?: { /** ID */ id: number, /** 名字 */ name: string, /** 守方描述 */ defendDesc: string, /** 星级 */ starLevel: number, /** 攻方描述 */ attackDesc: string, /** 品质 */ rare: number, /** 阵营 */ camp: number, /** 兵种 */ type: number, /** 职业 */ job: number, /** 基础血量 */ hp: number, /** 基础攻击 */ attack: number, /** 攻击速度 */ attackSpeed: number, /** 移动速度 */ moveSpeed: number, /** 魔法最大值 */ manaMax: number, /** 体力最大值 */ energyMax: number, /** 防守技能组 */ defendSkills: number[], /** 进攻技能组 */ attackSkills: number[], /** 标签 */ tips: number[], /** 子弹 */ bullet: number, /** 资源 */ res: string, /** 头像 */ headIcon: string }, /** @zh x坐标 */ x: number, /** @zh Y坐标 */ y: number, /** @zh Z抽坐标 */ z: number, /** @zh 朝向 */ rotation: number, /** @zh 当前血量 */ hp: number, /** @zh 最大血量 */ maxHp: number, /** @zh 当前星级 */ startLevel: number, /** @zh 当前技能列表 */ skillList: { /** @zh 技能唯一id */ id: number, /** 技能主人 */ master: number, /** 技能触发事件 */ triggerEvent: number, /** 技能触发值 */ skillConditionValue: number }[], /** @zh 攻击力 */ attack: number, /** @zh 攻击间隔 */ attackInterval: number, /** @zh 当前BUFF列表 */ buffList: { /** buff唯一id */ id: number, /** buff主人 */ master: number, /** buff类型 */ buffType: number, /** buff值 */ buffValue: number, /** buff持续计数器 */ curDuration: number }[], /** @zh 射程 */ shootingRadius: number[], /** @zh 子弹 */ bullet: { /** @zh 子弹id */ id: number, /** @zh 移动速度 */ speed: number, /** @zh 方向 */ direction: number, x: number, y: number, /** @zh 目标 */ target: number, /** @zh 主人 */ master: number, /** @zh 是否摧毁 */ destroyed: boolean, /** @zh 弹射 */ catapult: number, /** @zh 穿透 */ penetrate: number, /** @zh 分裂 */ fission: number, /** @zh 溅射 */ spatter: number, /** @zh 爆炸 */ explore: number, /** @zh 上个目标 */ lastTarget: number, /** @zh 目标距离 */ distance: number, /** @zh 范围 */ range: number }[], /** @zh 攻击冷却计时器 */ attackTimer: number, /** @zh 座位号 */ seat: number, /** @zh 当前状态 */ currentState: number, /** @zh 战斗状态 */ battleState: number, /** @zh 出生路线 */ rebornLineIndex: number }, /** 卡片id 0表示新增 */ cardId: number, /** 卡片类型 0 防御, 1 攻击 */ cardType: number } ``` **响应** ```ts interface ResKingTDCardChanged { /** 卡牌数据更新 */ cardData: { /** @zh 卡片唯一id */ id: number, /** @zh 卡片 */ cardId: number, /** @zh 卡片属性 */ cardData?: { /** ID */ id: number, /** 名字 */ name: string, /** 守方描述 */ defendDesc: string, /** 星级 */ starLevel: number, /** 攻方描述 */ attackDesc: string, /** 品质 */ rare: number, /** 阵营 */ camp: number, /** 兵种 */ type: number, /** 职业 */ job: number, /** 基础血量 */ hp: number, /** 基础攻击 */ attack: number, /** 攻击速度 */ attackSpeed: number, /** 移动速度 */ moveSpeed: number, /** 魔法最大值 */ manaMax: number, /** 体力最大值 */ energyMax: number, /** 防守技能组 */ defendSkills: number[], /** 进攻技能组 */ attackSkills: number[], /** 标签 */ tips: number[], /** 子弹 */ bullet: number, /** 资源 */ res: string, /** 头像 */ headIcon: string }, /** @zh x坐标 */ x: number, /** @zh Y坐标 */ y: number, /** @zh Z抽坐标 */ z: number, /** @zh 朝向 */ rotation: number, /** @zh 当前血量 */ hp: number, /** @zh 最大血量 */ maxHp: number, /** @zh 当前星级 */ startLevel: number, /** @zh 当前技能列表 */ skillList: { /** @zh 技能唯一id */ id: number, /** 技能主人 */ master: number, /** 技能触发事件 */ triggerEvent: number, /** 技能触发值 */ skillConditionValue: number }[], /** @zh 攻击力 */ attack: number, /** @zh 攻击间隔 */ attackInterval: number, /** @zh 当前BUFF列表 */ buffList: { /** buff唯一id */ id: number, /** buff主人 */ master: number, /** buff类型 */ buffType: number, /** buff值 */ buffValue: number, /** buff持续计数器 */ curDuration: number }[], /** @zh 射程 */ shootingRadius: number[], /** @zh 子弹 */ bullet: { /** @zh 子弹id */ id: number, /** @zh 移动速度 */ speed: number, /** @zh 方向 */ direction: number, x: number, y: number, /** @zh 目标 */ target: number, /** @zh 主人 */ master: number, /** @zh 是否摧毁 */ destroyed: boolean, /** @zh 弹射 */ catapult: number, /** @zh 穿透 */ penetrate: number, /** @zh 分裂 */ fission: number, /** @zh 溅射 */ spatter: number, /** @zh 爆炸 */ explore: number, /** @zh 上个目标 */ lastTarget: number, /** @zh 目标距离 */ distance: number, /** @zh 范围 */ range: number }[], /** @zh 攻击冷却计时器 */ attackTimer: number, /** @zh 座位号 */ seat: number, /** @zh 当前状态 */ currentState: number, /** @zh 战斗状态 */ battleState: number, /** @zh 出生路线 */ rebornLineIndex: number }, /** 卡片类型 0 防御, 1 攻击 */ cardType: number } ``` --- ### KingTDCardMoving **路径** - POST `/kingtd/KingTDCardMoving` **请求** ```ts interface ReqKingTDCardMoving { /** 卡片id */ cardId: number, /** 卡片类型 0 防御, 1 攻击 */ cardType: number, /** @zh x坐标 */ x: number, /** @zh Y坐标 */ y: number, /** @zh Z抽坐标 */ z: number, /** @zh 朝向 */ rotation: number } ``` **响应** ```ts interface ResKingTDCardMoving { /** 卡片id */ cardId: number, /** 卡片类型 0 防御, 1 攻击 */ cardType: number, /** @zh x坐标 */ x: number, /** @zh Y坐标 */ y: number, /** @zh Z抽坐标 */ z: number, /** @zh 朝向 */ rotation: number } ``` --- ### KingTDChangeBuff **路径** - POST `/kingtd/KingTDChangeBuff` **请求** ```ts interface ReqKingTDChangeBuff { /** 操作类型 1修改, 2删除 */ actionType: number, /** buff数据 */ buffData: { /** buff唯一id */ id: number, /** buff主人 */ master: number, /** buff类型 */ buffType: number, /** buff值 */ buffValue: number, /** buff持续计数器 */ curDuration: number }, /** 卡片id */ cardId: number, /** 卡片类型 0 防御, 1 攻击 */ cardType: number } ``` **响应** ```ts interface ResKingTDChangeBuff { /** 卡片id */ cardId: number, /** 操作类型 1修改, 2删除 */ actionType: number, /** buff数据 */ buffData: { /** buff唯一id */ id: number, /** buff主人 */ master: number, /** buff类型 */ buffType: number, /** buff值 */ buffValue: number, /** buff持续计数器 */ curDuration: number }, /** 卡片类型 0 防御, 1 攻击 */ cardType: number } ``` --- ### KingTDChangeBullet **路径** - POST `/kingtd/KingTDChangeBullet` **请求** ```ts interface ReqKingTDChangeBullet { /** 卡片id */ cardId: number, /** 操作类型 1修改, 2删除 */ actionType: number, /** 子弹数据 */ bulletData: { /** @zh 子弹id */ id: number, /** @zh 移动速度 */ speed: number, /** @zh 方向 */ direction: number, x: number, y: number, /** @zh 目标 */ target: number, /** @zh 主人 */ master: number, /** @zh 是否摧毁 */ destroyed: boolean, /** @zh 弹射 */ catapult: number, /** @zh 穿透 */ penetrate: number, /** @zh 分裂 */ fission: number, /** @zh 溅射 */ spatter: number, /** @zh 爆炸 */ explore: number, /** @zh 上个目标 */ lastTarget: number, /** @zh 目标距离 */ distance: number, /** @zh 范围 */ range: number }, /** 卡片类型 0 防御, 1 攻击 */ cardType: number } ``` **响应** ```ts interface ResKingTDChangeBullet { /** 卡片id */ cardId: number, /** 操作类型 1修改, 2删除 */ actionType: number, /** 子弹数据 */ bulletData: { /** @zh 子弹id */ id: number, /** @zh 移动速度 */ speed: number, /** @zh 方向 */ direction: number, x: number, y: number, /** @zh 目标 */ target: number, /** @zh 主人 */ master: number, /** @zh 是否摧毁 */ destroyed: boolean, /** @zh 弹射 */ catapult: number, /** @zh 穿透 */ penetrate: number, /** @zh 分裂 */ fission: number, /** @zh 溅射 */ spatter: number, /** @zh 爆炸 */ explore: number, /** @zh 上个目标 */ lastTarget: number, /** @zh 目标距离 */ distance: number, /** @zh 范围 */ range: number }, /** 卡片类型 0 防御, 1 攻击 */ cardType: number } ``` --- ### KingTDChangeCoin **路径** - POST `/kingtd/KingTDChangeCoin` **请求** ```ts interface ReqKingTDChangeCoin { changeCoin: number } ``` **响应** ```ts interface ResKingTDChangeCoin { coin: number } ``` --- ### KingTDChangeHp **路径** - POST `/kingtd/KingTDChangeHp` **请求** ```ts interface ReqKingTDChangeHp { changeHp: number } ``` **响应** ```ts interface ResKingTDChangeHp { hp: number } ``` --- ### KingTDChangeSkill **路径** - POST `/kingtd/KingTDChangeSkill` **请求** ```ts interface ReqKingTDChangeSkill { /** 操作类型 1修改, 2删除 */ actionType: number, /** 技能数据 */ skillData: { /** @zh 技能唯一id */ id: number, /** 技能主人 */ master: number, /** 技能触发事件 */ triggerEvent: number, /** 技能触发值 */ skillConditionValue: number }, /** 卡片id */ cardId: number, /** 卡片类型 0 防御, 1 攻击 */ cardType: number } ``` **响应** ```ts interface ResKingTDChangeSkill { /** 操作类型 1修改, 2删除 */ actionType: number, /** 技能数据 */ skillData: { /** @zh 技能唯一id */ id: number, /** 技能主人 */ master: number, /** 技能触发事件 */ triggerEvent: number, /** 技能触发值 */ skillConditionValue: number }, /** 卡片id */ cardId: number, /** 卡片类型 0 防御, 1 攻击 */ cardType: number } ``` --- ### KingTDDeleteCard **路径** - POST `/kingtd/KingTDDeleteCard` **请求** ```ts interface ReqKingTDDeleteCard { /** 卡片唯一Id */ cardId: number, /** 卡片类型 */ cardType: number } ``` **响应** ```ts interface ResKingTDDeleteCard { /** 卡片唯一Id */ cardId: number, /** 卡片类型 */ cardType: number } ``` --- ### KingTDGetCards **路径** - POST `/kingtd/KingTDGetCards` **请求** ```ts interface ReqKingTDGetCards { cardCount: number, tips: number[], poolId: number } ``` **响应** ```ts interface ResKingTDGetCards { /** 牌组 */ cards: number[] } ``` --- ### KingTDLevelUpMorale **路径** - POST `/kingtd/KingTDLevelUpMorale` **请求** ```ts interface ReqKingTDLevelUpMorale { } ``` **响应** ```ts interface ResKingTDLevelUpMorale { moraleLevel: number } ``` --- ### KingTDStartGame **路径** - POST `/kingtd/KingTDStartGame` **请求** ```ts interface ReqKingTDStartGame { isReady: boolean } ``` **响应** ```ts interface ResKingTDStartGame { isReady: boolean } ``` --- ## lobby ### mail #### ClearAllMails **路径** - POST `/lobby/mail/ClearAllMails` **请求** ```ts interface ReqClearAllMails { } ``` **响应** ```ts interface ResClearAllMails { } ``` --- #### DeleteMail **路径** - POST `/lobby/mail/DeleteMail` **请求** ```ts interface ReqDeleteMail { mailId: string } ``` **响应** ```ts interface ResDeleteMail { } ``` --- #### GetMails **路径** - POST `/lobby/mail/GetMails` **请求** ```ts interface ReqGetMails { } ``` **响应** ```ts interface ResGetMails { mails: { mailId: string, uid: string, from: string, time: number, title: string, content: string, state: string }[] } ``` --- #### MarkAllAsRead **路径** - POST `/lobby/mail/MarkAllAsRead` **请求** ```ts interface ReqMarkAllAsRead { } ``` **响应** ```ts interface ResMarkAllAsRead { } ``` --- #### MarkAsRead **路径** - POST `/lobby/mail/MarkAsRead` **请求** ```ts interface ReqMarkAsRead { mailId: string } ``` **响应** ```ts interface ResMarkAsRead { } ``` --- ### CancelMatch **路径** - POST `/lobby/CancelMatch` **请求** ```ts interface ReqCancelMatch { } ``` **响应** ```ts interface ResCancelMatch { } ``` --- ### CreateRoom **路径** - POST `/lobby/CreateRoom` **请求** ```ts interface ReqCreateRoom { roomName: string, gameType: string, password: string } ``` **响应** ```ts interface ResCreateRoom { enterRoomParams: { roomId: string, gameType: string, token: string, time: number, serverUrl: string } } ``` --- ### GetAnnouncement **路径** - POST `/lobby/GetAnnouncement` **请求** ```ts interface ReqGetAnnouncement { type: string } ``` **响应** ```ts interface ResGetAnnouncement { content: string } ``` --- ### GetNotice **路径** - POST `/lobby/GetNotice` **请求** ```ts interface ReqGetNotice { } ``` **响应** ```ts interface ResGetNotice { noticeList: { title: string, content: string, contentType: string }[] } ``` --- ### GetRoomList **路径** - POST `/lobby/GetRoomList` **请求** ```ts interface ReqGetRoomList { type: string, curPage: number, pageItemNum: number } ``` **响应** ```ts interface ResGetRoomList { curPage: number, pageNum: number, rooms: { roomId: string, displayId: string, gameType: string, name: string, userNum: /*uint*/ number, maxUserNum: /*uint*/ number, playerNum: /*uint*/ number, maxPlayerNum: /*uint*/ number, needPassword: boolean }[] } ``` --- ### GetUserInfo **路径** - POST `/lobby/GetUserInfo` **请求** ```ts interface ReqGetUserInfo { uid?: string, uids?: string[] } ``` **响应** ```ts interface ResGetUserInfo { infos: { uid: string, name?: string, visualId?: number, gender?: number, introduction?: string, coin?: number }[] } ``` --- ### ModifyUserInfo **路径** - POST `/lobby/ModifyUserInfo` **请求** ```ts interface ReqModifyUserInfo { gender?: number, introduction?: string } ``` **响应** ```ts interface ResModifyUserInfo { gender?: number, introduction?: string } ``` --- ### StartMatch **路径** - POST `/lobby/StartMatch` **请求** ```ts interface ReqStartMatch { type: string, immediate?: boolean } ``` **响应** ```ts interface ResStartMatch { roomId: string, gameType: string, token: string, time: number, serverUrl: string } ``` --- ### TryEnterRoom **路径** - POST `/lobby/TryEnterRoom` **请求** ```ts interface ReqTryEnterRoom { /** * @en id and displayId both can be used * @zh 可以使用 id 和 displayId */ id: string, password?: string } ``` **响应** ```ts interface ResTryEnterRoom { roomId: string, gameType: string, token: string, time: number, serverUrl: string } ``` --- ## login ### AuthClient **路径** - POST `/login/AuthClient` **请求** ```ts interface ReqAuthClient { token: string, uid: string, time: number } ``` **响应** ```ts interface ResAuthClient { } ``` --- ### CreateRole **路径** - POST `/login/CreateRole` **请求** ```ts interface ReqCreateRole { name: string, visualId: number } ``` **响应** ```ts interface ResCreateRole { name: string, visualId: number } ``` --- ### Login **路径** - POST `/login/Login` **请求** ```ts interface ReqLogin { account: string, password: string } ``` **响应** ```ts interface ResLogin { userInfo: { uid: string, name?: string, visualId?: number, gender?: number, introduction?: string, coin?: number }, gameServerInfo?: { roomId: string, gameType: string, token: string, time: number, serverUrl: string } } ``` --- ### Register **路径** - POST `/login/Register` **请求** ```ts interface ReqRegister { account: string, password: string } ``` **响应** ```ts interface ResRegister { } ``` --- ## EnterRoom **路径** - POST `/EnterRoom` **请求** ```ts interface ReqEnterRoom { token: string, uid: string, time: number, roomId: string } ``` **响应** ```ts interface ResEnterRoom { currentUser: { uid: string, name?: string, visualId?: number, gender?: number, introduction?: string, coin?: number } } ``` --- ## ExitRoom **路径** - POST `/ExitRoom` **请求** ```ts interface ReqExitRoom { roomId?: string, gameType?: string } ``` **响应** ```ts interface ResExitRoom { } ``` --- ## GetBasicConfig **路径** - POST `/GetBasicConfig` **请求** ```ts interface ReqGetBasicConfig { } ``` **响应** ```ts interface ResGetBasicConfig { /** * @en user infomation modify cost * @zh 用户修改信息消耗 */ userInfoModifyCost: number } ``` --- ## JoinGame **路径** - POST `/JoinGame` **请求** ```ts interface ReqJoinGame { } ``` **响应** ```ts interface ResJoinGame { } ``` --- ## Ready **路径** - POST `/Ready` **请求** ```ts interface ReqReady { } ``` **响应** ```ts interface ResReady { } ```