samba/proto/truco.go

346 lines
12 KiB
Go
Raw Normal View History

2025-06-04 09:51:39 +08:00
package proto
const (
NtfMaintainId = "NtfMaintainId" // 系统维护,解散房间
ReqMatchRoomId = "ReqMatchRoomId" // 匹配游戏
RspMatchRoomId = "RspMatchRoomId"
ReqCancelMatchRoomId = "ReqCancelMatchRoomId" // 取消匹配
RspCancelMatchRoomId = "RspCancelMatchRoomId"
ReqEnterRoomId = "ReqEnterRoomId" // 进入房间
RspEnterRoomId = "RspEnterRoomId"
ReqLeaveRoomId = "ReqLeaveRoomId" // 离开房间
RspLeaveRoomId = "RspLeaveRoomId"
NtfLeaveRoomId = "NtfLeaveRoomId"
NtfRoomInfoId = "NtfRoomInfoId" // 房间信息(包含底注,加注,第几回合等桌面数据)
NtfPlayerInfoId = "NtfPlayerInfoId" // 玩家信息(有新玩家进入房间时,房间内玩家会收到该消息)
NtfFakeLeaveId = "NtfFakeLeaveId" // 玩家假离开广播
ReqReadyGameId = "ReqReadyGameId" // 进入房间
NtfStartGameId = "NtfStartGameId" // 游戏开始
NtfDealPokersId = "NtfDealCardsId" // 发牌
NtfDecidingGameId = "NtfDecidingCardsId" // 决胜局提示
ReqEmoteId = "ReqEmoteId" // 玩家在发牌后,出牌前可以发暗号,其它时候只能发表情
NtfEmoteId = "NtfEmoteId" // 广播表情
NtfPlayerActId = "NtfPlayerActId" // 通知玩家行动(包含叫分,投降)
ReqPlayerActId = "ReqPlayerActId" // 玩家行动(包含叫分,投降)
RspPlayerActId = "RspPlayerActId" //
NtfTeammateActId = "NtfTeammateActId" // 同步队友操作
NtfPlayerRspRaiseId = "NtfPlayerRspRaiseId" // 通知队伍回应玩家操作
ReqHostingId = "ReqHostingId" // 托管请求
NtfHostingId = "NtfHostingId" // 通知托管变更
ReqPlayerOutPokerId = "ReqOutCardsActId" // 玩家出牌
RspPlayerOutPokerId = "RspOutCardsActId" //
NtfPlayerOutPokerId = "NtfPlayerOutPokerId" //
ReqSetDarkPokerId = "ReqSetDarkPokerId" // 设置暗牌
RspSetDarkPokerId = "RspSetDarkPokerId" //
NtfRoundSettleId = "NtfRoundSettleId" // 一轮结束,结算本轮输赢(一局游戏三轮)
NtfGameSettleId = "NtfGameSettleId" // 游戏结束,结算本局输赢
NtfGameBigSettleId = "NtfGameBigSettleId" // 游戏结束,结算本局输赢
ReqShowPokerId = "ReqShowPokerId" // 游戏结束,展示手牌
RspShowPokerId = "RspShowPokerId" //
NtfShowPokerId = "NtfShowPokerId" // 展示玩家手牌
ReqReconnectId = "ReqReconnectId" // 重连
RspReconnectId = "RspReconnectId"
)
// 匹配
type ReqMatchRoom struct {
RoomType int `json:"r"` // 房间类型
}
type RspMatchRoom struct {
Code ErrorCode `json:"c"`
RoomType int `json:"rt"` // 房间类型
Player *Player `json:"p"` // 玩家信息
}
// 取消匹配
type ReqCancelMatchRoom struct {
RoomType int `json:"r"` // 房间类型
}
type RspCancelMatchRoom struct {
Code ErrorCode `json:"c"`
RoomType int `json:"rt"` // 房间类型
}
type ReqEnterRoom struct {
RoomId int `json:"r"` // 房间id
}
type RspEnterRoom struct {
Code ErrorCode `json:"c"`
RoomId int `json:"r"`
PlayType int `json:"p"` // 玩法id
RoomType int `json:"rt"` // 房间类型
ClubId int `json:"cl"` // 俱乐部id
GameInfo *ClubPlayGameInfo `json:"g"` // 玩法信息,只有俱乐部房间有该字段
IsReentry int `json:"i"` // 是否重连 0:新进玩家 1:重连玩家
}
type ReqLeaveRoom struct {
RoomId int `json:"r"`
}
type RspLeaveRoom struct {
Code ErrorCode `json:"c"`
CurrentSeat int `json:"s"` // 当前行动的座位号
RoomId int `json:"r"`
}
type NtfLeaveRoom struct {
CurrentSeat int `json:"s"` // 当前行动的座位号
RoomId int `json:"r"`
}
// 上下线广播
type NtfFakeLeave struct {
RoomId int `json:"r"`
CurrentSeat int `json:"s"` // 假离开的座位号
FakeLeave int `json:"f"` // 0:离线 1:在线
}
// 用户数据
type Player struct {
UserId int64 `json:"u"` // 玩家id
ClubId int `json:"cl"` // 俱乐部id
Mnick string `json:"n"` // 玩家昵称
HeadUrl string `json:"h"` // 头像
IconId int `json:"i"` // 系统头像
AvatarFrame int `json:"a"` // 边框
Sex int `json:"s"` // 性别
Coin int64 `json:"c"` // 金币
TakeCoin int64 `json:"t"` // 携带金币
Poker []int `json:"p"` // 玩家手牌
Seat int `json:"se"` // 座位号(0-3)
IsRed int `json:"is"` // 0:红队1:绿队
State int `json:"st"` // 0:离线 1:在线
OutPoker int `json:"o"` // 最近出的一张牌
ClubCoin int64 `json:"cc"` // 俱乐部币
ClubTakeCoin int64 `json:"tc"` // 携带俱乐部币
}
// 房间信息
type NtfRoomInfo struct {
RoomId int `json:"r"`
RoomType int `json:"roo"` // 房间类型策划room表的id
ClubId int `json:"cl"` // 俱乐部id
Blind int64 `json:"b"` // 游戏底注
CuttingPoker int `json:"c"` // 切牌
Point int `json:"a"` // point
RedScore int `json:"re"` // 红队分数
GreenScore int `json:"gr"` // 绿队分数
RoundSettle []int `json:"ro"` // 输赢(0:红灯 1:绿灯 2:黄灯)
State int `json:"s"` // 房间状态
GameCount int `json:"g"` // 第几小局
Star int `json:"st"` // 星星数,俱乐部房间不展示
}
// 玩家信息
type NtfPlayerInfo struct {
Players []*Player `json:"p"` // 玩家信息
}
// 准备按钮
type ReqReadyGame struct {
}
// 游戏开始
type NtfGameStart struct {
Time int64 `json:"t"` // 当前时间戳
}
// 发牌
type NtfDealPokers struct {
Seat int `json:"s"` // 当前行动的座位号
Time int64 `json:"t"` // 当前时间戳
CuttingPoker int `json:"c"` // 切牌
Poker [][]int `json:"p"` // 玩家手牌,二维数组,[座位号][3张手牌]
Dealer int `json:"d"` // 庄家位置
GameCount int `json:"g"` // 第几小局
}
type SeatPoker struct {
Seat int `json:"s"` // 座位号
Poker []int `json:"p"` // 该玩家手牌
}
// ReqHosting 托管请求
type ReqHosting struct {
Enable bool `json:"e"` // 开启/关闭托管
}
// NtfHosting 通知托管状态变更
type NtfHosting struct {
Seat int `json:"s"` // 对应的座位号
Enable bool `json:"e"` // 开启/关闭托管
}
// 决胜局广播
type NtfDecidingGame struct {
//Seat int `json:"s"` // 当前行动的座位号
TeamColor int `json:"t"` // 决胜方队伍颜色
Poker []*SeatPoker `json:"p"` // 决胜方的明牌
Countdown int `json:"c"` // 行动时间5秒
CountdownEx int `json:"co"` // 额外的倒计时
CanGiveUp int `json:"cg"` // 0:无弃牌按钮 1:有弃牌按钮
CanAgree int `json:"ca"` // 0:无同意按钮 2:有同意按钮
}
// 通知玩家进入操作回合,申请加注或放弃或出牌
type NtfPlayerAct struct {
RoomId int `json:"r"` // 当前房间id
Seat int `json:"s"` // 当前行动的座位号
Countdown int `json:"c"` // 行动时间5秒
CountdownEx int `json:"co"` // 额外的倒计时
CanCall int `json:"ca"` // 0:不能叫分只能出牌 30:truco3 60:truc6 90:truc9 120:truc12
CanGiveUp int `json:"cg"` // 0:不能弃牌 1:可以弃牌
}
type ReqPlayerAct struct {
IsTruco bool `json:"i"` // 0:回应加注 1:主动truco
Raise int `json:"r"` // 放弃:-1 同意:2 30:truco 60:同意并加注到p6或truc6 90:同意并加注到p9或truc9 120:同意并加注到p12或truc12
}
// 同步队友操作
type NtfTeammateAct struct {
CurrentSeat int `json:"c"` // 当前行动的座位号
Act int `json:"a"` // 同步队友操作 放弃:1 同意:2 30:truco 60:同意并加注到p6 90:同意并加注到p9 120:同意并加注到p12
}
type RspPlayerAct struct {
Code ErrorCode `json:"c"`
CurrentSeat int `json:"cu"` // 当前行动的座位号
NotOptSeat int `json:"no"` // 还没有做出回应的座位号(2v2),默认值为-1
IsTruco int `json:"i"` // 0:回应加注 1:主动truco 2:主动投降
Raise int `json:"r"` // 放弃:1 同意:2 30:truco 60:同意并加注到p6 90:同意并加注到p9 120:同意并加注到p12
Point int `json:"p"` // 当前point
Star int `json:"s"` // 星星数,非俱乐部房间展示
}
// 通知玩家回应加注
type NtfPlayerRspRaise struct {
TeamColor int `json:"t"` // [0]:红队操作 [1]:绿队操作
Countdown int `json:"c"` // 行动时间5秒
CountdownEx int `json:"co"` // 额外的倒计时
Enemy int `json:"e"` // 敌方最近操作放弃1同意2加注3
Ally []int `json:"a"` // 重连高亮显示队友操作0:不能加分只能同意或放弃 60:同意并加注到p6 90:同意并加注到p9 120:同意并加注到p12
CanRaise int `json:"ca"` // 0:不能加分只能同意或放弃 60:同意并加注到p6 90:同意并加注到p9 120:同意并加注到p12
}
// NtfRoundSettle 每轮小结算
type NtfRoundSettle struct {
Settle int `json:"s"` // 输赢(0:红灯 1:绿灯 2:黄灯)
MaxSeat []int `json:"m"` // 该轮最大牌玩家
}
// NtfGameSettle 一局结算
type NtfGameSettle struct {
Settle []int `json:"s"` // [0]:红队得分 [1]:绿队得分
NextGame int `json:"n"` // 是否有下一局 0:没有下一局 1:有下一局
}
type TeamMember struct {
Seat int `json:"s"` // 座位号
WinCoin int64 `json:"w"` // 净胜分
Color int `json:"c"` // 本玩家所在队伍 0:红队 1:绿队
Fee int64 `json:"f"` // 服务费
}
type NtfGameBigSettle struct {
Team []*TeamMember `json:"t"` // 本队净胜分
Seat int `json:"st"` // 本玩家座位号,回放专用 [2024-11-01新增]
Color int `json:"c"` // 本玩家所在队伍 0:红队 1:绿队
Star int `json:"sta"` // 星星数
Blind int64 `json:"b"` // 底注 [2024-12-09新增]
Points [2]int `json:"p"` // 队伍分数 0:红队 1:绿队
Rate int `json:"r"` // 服务费比例
Win int `json:"w"` // 输赢标记 0:输 1:赢
}
type ReqPlayerOutPoker struct {
Poker int `json:"p"` // 出牌, 加注时该值为0
}
// 出牌错误时回传给玩家
type RspPlayerOutPoker struct {
Code ErrorCode `json:"c"`
Poker []int `json:"p"` // 手牌
OutPoker int `json:"o"` // 最近出的牌
}
// 出牌成功广播给大家
type NtfPlayerOutPoker struct {
CurrentSeat int `json:"cu"` // 当前行动的座位号
Poker int `json:"p"` // 出牌, 加注时该值为0
}
// 设置暗牌或者恢复成明牌
type ReqSetDarkPoker struct {
Poker int `json:"p"` // 要设置的牌
}
type RspSetDarkPoker struct {
Code ErrorCode `json:"c"`
Poker int `json:"p"` // 设置成功后的牌
}
// 游戏结束申请展示手牌
type ReqShowPoker struct {
}
type RspShowPoker struct {
Code ErrorCode `json:"c"`
}
// 展示手牌广播
type NtfShowPoker struct {
CurrentSeat int `json:"c"` // 当前行动的座位号
Poker []int `json:"p"` // 剩余手牌
}
// ReqReconnect 断线重连
type ReqReconnect struct {
RoomId int `json:"r"` // 房间id
}
// RspReconnect 断线重连
type RspReconnect struct {
Code ErrorCode `json:"c"` // 房间已结束:12
RoomInfo *NtfRoomInfo `json:"s"` // 桌面数据
Players []*Player `json:"p"` // 玩家数据
Dealer int `json:"d"` // 庄家位置
}
type NtfMaintain struct {
Code ErrorCode `json:"c"`
}
// 玩家在发牌后,出牌前可以发暗号,其它时候只能发表情
type ReqEmote struct {
EmoteId int `json:"e"`
DestSeat int `json:"d"` // 目标座位,暗号等无目标的表情,该值为-1
}
type NtfEmote struct {
Code ErrorCode `json:"c"`
EmoteId int `json:"e"`
Seat int `json:"s"` // 发表情的座位号
DestSeat int `json:"d"` // 目标座位,暗号等无目标的表情,该值为-1
ResType int `json:"r"` // 消耗资源类型 1000:金币 1001:钻石
CostValue int64 `json:"cv"` // 消耗资源数量
ResVal int64 `json:"v"` // 剩余资源数量
}