# 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 {
}
```