// Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.27.1-devel // protoc v3.19.4 // source: protocol/tienlen/tienlen.proto package tienlen import ( protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" reflect "reflect" sync "sync" ) const ( // Verify that this generated code is sufficiently up-to-date. _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) // Verify that runtime/protoimpl is sufficiently up-to-date. _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) //操作结果 type OpResultCode int32 const ( OpResultCode_OPRC_Sucess OpResultCode = 0 //成功 OpResultCode_OPRC_Error OpResultCode = 1 //失败 OpResultCode_OPRC_Hint OpResultCode = 2 //提示 ) // Enum value maps for OpResultCode. var ( OpResultCode_name = map[int32]string{ 0: "OPRC_Sucess", 1: "OPRC_Error", 2: "OPRC_Hint", } OpResultCode_value = map[string]int32{ "OPRC_Sucess": 0, "OPRC_Error": 1, "OPRC_Hint": 2, } ) func (x OpResultCode) Enum() *OpResultCode { p := new(OpResultCode) *p = x return p } func (x OpResultCode) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } func (OpResultCode) Descriptor() protoreflect.EnumDescriptor { return file_protocol_tienlen_tienlen_proto_enumTypes[0].Descriptor() } func (OpResultCode) Type() protoreflect.EnumType { return &file_protocol_tienlen_tienlen_proto_enumTypes[0] } func (x OpResultCode) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } // Deprecated: Use OpResultCode.Descriptor instead. func (OpResultCode) EnumDescriptor() ([]byte, []int) { return file_protocol_tienlen_tienlen_proto_rawDescGZIP(), []int{0} } //tienlen type TienLenPacketID int32 const ( TienLenPacketID_PACKET_TienLenZERO TienLenPacketID = 0 // 弃用消息号 TienLenPacketID_PACKET_SCTienLenRoomInfo TienLenPacketID = 5370 //房间信息 TienLenPacketID_PACKET_SCTienLenRoomState TienLenPacketID = 5371 //房间状态 TienLenPacketID_PACKET_CSTienLenPlayerOp TienLenPacketID = 5372 //玩家操作 TienLenPacketID_PACKET_SCTienLenPlayerOp TienLenPacketID = 5373 //玩家操作 TienLenPacketID_PACKET_SCTienLenPlayerEnter TienLenPacketID = 5374 //玩家进入 TienLenPacketID_PACKET_SCTienLenPlayerLeave TienLenPacketID = 5375 //玩家离开 TienLenPacketID_PACKET_SCTienLenCard TienLenPacketID = 5376 //发牌 TienLenPacketID_PACKET_SCTienLenGameBilled TienLenPacketID = 5377 //结算 TienLenPacketID_PACKET_SCTienLenCurOpPos TienLenPacketID = 5378 //当前操作的玩家位置 TienLenPacketID_PACKET_SCTienLenSmallGameBilled TienLenPacketID = 5379 //小结算 TienLenPacketID_PACKET_SCTienLenUpdateMasterSnid TienLenPacketID = 5380 //房主更换 TienLenPacketID_PACKET_SCTienLenUpdateAudienceNum TienLenPacketID = 5381 //推送观众人数 TienLenPacketID_PACKET_SCTienLenAI TienLenPacketID = 5382 //AI消息 TienLenPacketID_PACKET_SCTienLenFirstOpPos TienLenPacketID = 5383 //首出玩家 TienLenPacketID_PACKET_SCTienLenCardTest TienLenPacketID = 5384 //测试数据 TienLenPacketID_PACKET_SCTienLenThinkLongCnt TienLenPacketID = 5385 // 长考次数 TienLenPacketID_PACKET_SCTienLenFirstGiveItemItem TienLenPacketID = 5386 // 第一次赠送记牌器道具 TienLenPacketID_PACKET_SCTienLenPetSkillRes TienLenPacketID = 5387 //宠物技能 TienLenPacketID_PACKET_SCTienLenCycleBilled TienLenPacketID = 5388 // 大结算 ) // Enum value maps for TienLenPacketID. var ( TienLenPacketID_name = map[int32]string{ 0: "PACKET_TienLenZERO", 5370: "PACKET_SCTienLenRoomInfo", 5371: "PACKET_SCTienLenRoomState", 5372: "PACKET_CSTienLenPlayerOp", 5373: "PACKET_SCTienLenPlayerOp", 5374: "PACKET_SCTienLenPlayerEnter", 5375: "PACKET_SCTienLenPlayerLeave", 5376: "PACKET_SCTienLenCard", 5377: "PACKET_SCTienLenGameBilled", 5378: "PACKET_SCTienLenCurOpPos", 5379: "PACKET_SCTienLenSmallGameBilled", 5380: "PACKET_SCTienLenUpdateMasterSnid", 5381: "PACKET_SCTienLenUpdateAudienceNum", 5382: "PACKET_SCTienLenAI", 5383: "PACKET_SCTienLenFirstOpPos", 5384: "PACKET_SCTienLenCardTest", 5385: "PACKET_SCTienLenThinkLongCnt", 5386: "PACKET_SCTienLenFirstGiveItemItem", 5387: "PACKET_SCTienLenPetSkillRes", 5388: "PACKET_SCTienLenCycleBilled", } TienLenPacketID_value = map[string]int32{ "PACKET_TienLenZERO": 0, "PACKET_SCTienLenRoomInfo": 5370, "PACKET_SCTienLenRoomState": 5371, "PACKET_CSTienLenPlayerOp": 5372, "PACKET_SCTienLenPlayerOp": 5373, "PACKET_SCTienLenPlayerEnter": 5374, "PACKET_SCTienLenPlayerLeave": 5375, "PACKET_SCTienLenCard": 5376, "PACKET_SCTienLenGameBilled": 5377, "PACKET_SCTienLenCurOpPos": 5378, "PACKET_SCTienLenSmallGameBilled": 5379, "PACKET_SCTienLenUpdateMasterSnid": 5380, "PACKET_SCTienLenUpdateAudienceNum": 5381, "PACKET_SCTienLenAI": 5382, "PACKET_SCTienLenFirstOpPos": 5383, "PACKET_SCTienLenCardTest": 5384, "PACKET_SCTienLenThinkLongCnt": 5385, "PACKET_SCTienLenFirstGiveItemItem": 5386, "PACKET_SCTienLenPetSkillRes": 5387, "PACKET_SCTienLenCycleBilled": 5388, } ) func (x TienLenPacketID) Enum() *TienLenPacketID { p := new(TienLenPacketID) *p = x return p } func (x TienLenPacketID) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } func (TienLenPacketID) Descriptor() protoreflect.EnumDescriptor { return file_protocol_tienlen_tienlen_proto_enumTypes[1].Descriptor() } func (TienLenPacketID) Type() protoreflect.EnumType { return &file_protocol_tienlen_tienlen_proto_enumTypes[1] } func (x TienLenPacketID) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } // Deprecated: Use TienLenPacketID.Descriptor instead. func (TienLenPacketID) EnumDescriptor() ([]byte, []int) { return file_protocol_tienlen_tienlen_proto_rawDescGZIP(), []int{1} } //玩家信息 type TienLenPlayerData struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Name string `protobuf:"bytes,1,opt,name=Name,proto3" json:"Name,omitempty"` //名字 SnId int32 `protobuf:"varint,2,opt,name=SnId,proto3" json:"SnId,omitempty"` //账号 Head int32 `protobuf:"varint,3,opt,name=Head,proto3" json:"Head,omitempty"` //头像 Sex int32 `protobuf:"varint,4,opt,name=Sex,proto3" json:"Sex,omitempty"` //性别 Params []string `protobuf:"bytes,5,rep,name=Params,proto3" json:"Params,omitempty"` //其他数据 如:昵称 头像 性别 ip 等 Coin int64 `protobuf:"varint,6,opt,name=Coin,proto3" json:"Coin,omitempty"` //金币 Pos int32 `protobuf:"varint,7,opt,name=Pos,proto3" json:"Pos,omitempty"` //座位位置 Flag int32 `protobuf:"varint,8,opt,name=Flag,proto3" json:"Flag,omitempty"` //二进制标记 详见:数据字典 Longitude int32 `protobuf:"varint,9,opt,name=Longitude,proto3" json:"Longitude,omitempty"` //经度 Latitude int32 `protobuf:"varint,10,opt,name=Latitude,proto3" json:"Latitude,omitempty"` //纬度 City string `protobuf:"bytes,11,opt,name=City,proto3" json:"City,omitempty"` //城市 例:伦敦 LastOp int32 `protobuf:"varint,12,opt,name=LastOp,proto3" json:"LastOp,omitempty"` //如上:玩家操作 VIP int32 `protobuf:"varint,13,opt,name=VIP,proto3" json:"VIP,omitempty"` //玩家VIP等级 HeadOutLine int32 `protobuf:"varint,14,opt,name=HeadOutLine,proto3" json:"HeadOutLine,omitempty"` //头像框 NiceId int32 `protobuf:"varint,15,opt,name=NiceId,proto3" json:"NiceId,omitempty"` //靓号[机器人用] Cards []int32 `protobuf:"varint,16,rep,packed,name=Cards,proto3" json:"Cards,omitempty"` //手牌 CurRoundTotalBet int64 `protobuf:"varint,17,opt,name=CurRoundTotalBet,proto3" json:"CurRoundTotalBet,omitempty"` //本轮押注已押的金币 GameCoin int64 `protobuf:"varint,18,opt,name=GameCoin,proto3" json:"GameCoin,omitempty"` //游戏内带入的金币 RoleId int32 `protobuf:"varint,19,opt,name=RoleId,proto3" json:"RoleId,omitempty"` //使用中的角色id Items map[int32]int32 `protobuf:"bytes,20,rep,name=Items,proto3" json:"Items,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"` MatchRankId int32 `protobuf:"varint,21,opt,name=MatchRankId,proto3" json:"MatchRankId,omitempty"` Lv int32 `protobuf:"varint,22,opt,name=Lv,proto3" json:"Lv,omitempty"` CopySnid int32 `protobuf:"varint,23,opt,name=CopySnid,proto3" json:"CopySnid,omitempty"` //比赛场机器人假snid CopyRoleId int32 `protobuf:"varint,24,opt,name=CopyRoleId,proto3" json:"CopyRoleId,omitempty"` //比赛场机器人假角色 RankScore int64 `protobuf:"varint,25,opt,name=RankScore,proto3" json:"RankScore,omitempty"` // 排位积分 ThinkLongCnt int32 `protobuf:"varint,26,opt,name=ThinkLongCnt,proto3" json:"ThinkLongCnt,omitempty"` // 长考次数 Level int64 `protobuf:"varint,27,opt,name=Level,proto3" json:"Level,omitempty"` //玩家等级 Exp int64 `protobuf:"varint,28,opt,name=Exp,proto3" json:"Exp,omitempty"` //玩家经验 PigBankCoin int64 `protobuf:"varint,29,opt,name=PigBankCoin,proto3" json:"PigBankCoin,omitempty"` //存钱罐金币 SkillInfo []*PetSkillInfo `protobuf:"bytes,30,rep,name=SkillInfo,proto3" json:"SkillInfo,omitempty"` //宠物技能信息 SkinId int32 `protobuf:"varint,31,opt,name=SkinId,proto3" json:"SkinId,omitempty"` //皮肤id } func (x *TienLenPlayerData) Reset() { *x = TienLenPlayerData{} if protoimpl.UnsafeEnabled { mi := &file_protocol_tienlen_tienlen_proto_msgTypes[0] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *TienLenPlayerData) String() string { return protoimpl.X.MessageStringOf(x) } func (*TienLenPlayerData) ProtoMessage() {} func (x *TienLenPlayerData) ProtoReflect() protoreflect.Message { mi := &file_protocol_tienlen_tienlen_proto_msgTypes[0] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use TienLenPlayerData.ProtoReflect.Descriptor instead. func (*TienLenPlayerData) Descriptor() ([]byte, []int) { return file_protocol_tienlen_tienlen_proto_rawDescGZIP(), []int{0} } func (x *TienLenPlayerData) GetName() string { if x != nil { return x.Name } return "" } func (x *TienLenPlayerData) GetSnId() int32 { if x != nil { return x.SnId } return 0 } func (x *TienLenPlayerData) GetHead() int32 { if x != nil { return x.Head } return 0 } func (x *TienLenPlayerData) GetSex() int32 { if x != nil { return x.Sex } return 0 } func (x *TienLenPlayerData) GetParams() []string { if x != nil { return x.Params } return nil } func (x *TienLenPlayerData) GetCoin() int64 { if x != nil { return x.Coin } return 0 } func (x *TienLenPlayerData) GetPos() int32 { if x != nil { return x.Pos } return 0 } func (x *TienLenPlayerData) GetFlag() int32 { if x != nil { return x.Flag } return 0 } func (x *TienLenPlayerData) GetLongitude() int32 { if x != nil { return x.Longitude } return 0 } func (x *TienLenPlayerData) GetLatitude() int32 { if x != nil { return x.Latitude } return 0 } func (x *TienLenPlayerData) GetCity() string { if x != nil { return x.City } return "" } func (x *TienLenPlayerData) GetLastOp() int32 { if x != nil { return x.LastOp } return 0 } func (x *TienLenPlayerData) GetVIP() int32 { if x != nil { return x.VIP } return 0 } func (x *TienLenPlayerData) GetHeadOutLine() int32 { if x != nil { return x.HeadOutLine } return 0 } func (x *TienLenPlayerData) GetNiceId() int32 { if x != nil { return x.NiceId } return 0 } func (x *TienLenPlayerData) GetCards() []int32 { if x != nil { return x.Cards } return nil } func (x *TienLenPlayerData) GetCurRoundTotalBet() int64 { if x != nil { return x.CurRoundTotalBet } return 0 } func (x *TienLenPlayerData) GetGameCoin() int64 { if x != nil { return x.GameCoin } return 0 } func (x *TienLenPlayerData) GetRoleId() int32 { if x != nil { return x.RoleId } return 0 } func (x *TienLenPlayerData) GetItems() map[int32]int32 { if x != nil { return x.Items } return nil } func (x *TienLenPlayerData) GetMatchRankId() int32 { if x != nil { return x.MatchRankId } return 0 } func (x *TienLenPlayerData) GetLv() int32 { if x != nil { return x.Lv } return 0 } func (x *TienLenPlayerData) GetCopySnid() int32 { if x != nil { return x.CopySnid } return 0 } func (x *TienLenPlayerData) GetCopyRoleId() int32 { if x != nil { return x.CopyRoleId } return 0 } func (x *TienLenPlayerData) GetRankScore() int64 { if x != nil { return x.RankScore } return 0 } func (x *TienLenPlayerData) GetThinkLongCnt() int32 { if x != nil { return x.ThinkLongCnt } return 0 } func (x *TienLenPlayerData) GetLevel() int64 { if x != nil { return x.Level } return 0 } func (x *TienLenPlayerData) GetExp() int64 { if x != nil { return x.Exp } return 0 } func (x *TienLenPlayerData) GetPigBankCoin() int64 { if x != nil { return x.PigBankCoin } return 0 } func (x *TienLenPlayerData) GetSkillInfo() []*PetSkillInfo { if x != nil { return x.SkillInfo } return nil } func (x *TienLenPlayerData) GetSkinId() int32 { if x != nil { return x.SkinId } return 0 } //宠物技能 type PetSkillInfo struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields PetId int32 `protobuf:"varint,1,opt,name=PetId,proto3" json:"PetId,omitempty"` SkillData []*SkillInfo `protobuf:"bytes,2,rep,name=SkillData,proto3" json:"SkillData,omitempty"` } func (x *PetSkillInfo) Reset() { *x = PetSkillInfo{} if protoimpl.UnsafeEnabled { mi := &file_protocol_tienlen_tienlen_proto_msgTypes[1] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *PetSkillInfo) String() string { return protoimpl.X.MessageStringOf(x) } func (*PetSkillInfo) ProtoMessage() {} func (x *PetSkillInfo) ProtoReflect() protoreflect.Message { mi := &file_protocol_tienlen_tienlen_proto_msgTypes[1] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use PetSkillInfo.ProtoReflect.Descriptor instead. func (*PetSkillInfo) Descriptor() ([]byte, []int) { return file_protocol_tienlen_tienlen_proto_rawDescGZIP(), []int{1} } func (x *PetSkillInfo) GetPetId() int32 { if x != nil { return x.PetId } return 0 } func (x *PetSkillInfo) GetSkillData() []*SkillInfo { if x != nil { return x.SkillData } return nil } type SkillInfo struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields SkillId int32 `protobuf:"varint,1,opt,name=SkillId,proto3" json:"SkillId,omitempty"` SkillLevel int32 `protobuf:"varint,2,opt,name=SkillLevel,proto3" json:"SkillLevel,omitempty"` } func (x *SkillInfo) Reset() { *x = SkillInfo{} if protoimpl.UnsafeEnabled { mi := &file_protocol_tienlen_tienlen_proto_msgTypes[2] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *SkillInfo) String() string { return protoimpl.X.MessageStringOf(x) } func (*SkillInfo) ProtoMessage() {} func (x *SkillInfo) ProtoReflect() protoreflect.Message { mi := &file_protocol_tienlen_tienlen_proto_msgTypes[2] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use SkillInfo.ProtoReflect.Descriptor instead. func (*SkillInfo) Descriptor() ([]byte, []int) { return file_protocol_tienlen_tienlen_proto_rawDescGZIP(), []int{2} } func (x *SkillInfo) GetSkillId() int32 { if x != nil { return x.SkillId } return 0 } func (x *SkillInfo) GetSkillLevel() int32 { if x != nil { return x.SkillLevel } return 0 } type LastDelCard struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Cards []int32 `protobuf:"varint,1,rep,packed,name=Cards,proto3" json:"Cards,omitempty"` } func (x *LastDelCard) Reset() { *x = LastDelCard{} if protoimpl.UnsafeEnabled { mi := &file_protocol_tienlen_tienlen_proto_msgTypes[3] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *LastDelCard) String() string { return protoimpl.X.MessageStringOf(x) } func (*LastDelCard) ProtoMessage() {} func (x *LastDelCard) ProtoReflect() protoreflect.Message { mi := &file_protocol_tienlen_tienlen_proto_msgTypes[3] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use LastDelCard.ProtoReflect.Descriptor instead. func (*LastDelCard) Descriptor() ([]byte, []int) { return file_protocol_tienlen_tienlen_proto_rawDescGZIP(), []int{3} } func (x *LastDelCard) GetCards() []int32 { if x != nil { return x.Cards } return nil } //房间信息 type SCTienLenRoomInfo struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields RoomId int32 `protobuf:"varint,1,opt,name=RoomId,proto3" json:"RoomId,omitempty"` //房间id Creator int32 `protobuf:"varint,2,opt,name=Creator,proto3" json:"Creator,omitempty"` //创建者SnId GameId int32 `protobuf:"varint,3,opt,name=GameId,proto3" json:"GameId,omitempty"` //游戏id RoomMode int32 `protobuf:"varint,4,opt,name=RoomMode,proto3" json:"RoomMode,omitempty"` //游戏模式 Params []int32 `protobuf:"varint,5,rep,packed,name=Params,proto3" json:"Params,omitempty"` //规则参数 BankerPos int32 `protobuf:"varint,6,opt,name=BankerPos,proto3" json:"BankerPos,omitempty"` //庄家位置 State int32 `protobuf:"varint,7,opt,name=State,proto3" json:"State,omitempty"` //房间当前状态,如上 TimeOut int32 `protobuf:"varint,8,opt,name=TimeOut,proto3" json:"TimeOut,omitempty"` //等待剩余时间 单位:秒 Players []*TienLenPlayerData `protobuf:"bytes,9,rep,name=Players,proto3" json:"Players,omitempty"` //房间内的玩家信息 AudienceNum int32 `protobuf:"varint,11,opt,name=AudienceNum,proto3" json:"AudienceNum,omitempty"` //当前观战人数 CurOpIdx int32 `protobuf:"varint,12,opt,name=CurOpIdx,proto3" json:"CurOpIdx,omitempty"` //当前等待操作的玩家 LastDelCards []*LastDelCard `protobuf:"bytes,13,rep,name=LastDelCards,proto3" json:"LastDelCards,omitempty"` //上两手出的牌 NumOfGames int32 `protobuf:"varint,14,opt,name=NumOfGames,proto3" json:"NumOfGames,omitempty"` //当前局数 TotalOfGames int32 `protobuf:"varint,15,opt,name=TotalOfGames,proto3" json:"TotalOfGames,omitempty"` //总局数 MasterSnid int32 `protobuf:"varint,16,opt,name=MasterSnid,proto3" json:"MasterSnid,omitempty"` //房主 BaseScore int32 `protobuf:"varint,17,opt,name=BaseScore,proto3" json:"BaseScore,omitempty"` //游戏底分 MaxPlayerNum int32 `protobuf:"varint,18,opt,name=MaxPlayerNum,proto3" json:"MaxPlayerNum,omitempty"` //最大游戏人数 WinSnids []int32 `protobuf:"varint,19,rep,packed,name=WinSnids,proto3" json:"WinSnids,omitempty"` //已出完牌的玩家 // 比赛场相关 IsMatch int32 `protobuf:"varint,20,opt,name=IsMatch,proto3" json:"IsMatch,omitempty"` //0普通场 1锦标赛 2冠军赛 Round int32 `protobuf:"varint,22,opt,name=Round,proto3" json:"Round,omitempty"` //比赛当前轮数 CurPlayerNum int32 `protobuf:"varint,24,opt,name=CurPlayerNum,proto3" json:"CurPlayerNum,omitempty"` //当前游戏人数 NextNeed int32 `protobuf:"varint,25,opt,name=NextNeed,proto3" json:"NextNeed,omitempty"` //前多少名可以晋级下一轮 MatchFinals int32 `protobuf:"varint,26,opt,name=MatchFinals,proto3" json:"MatchFinals,omitempty"` //0晋级赛 1半决赛 2是总决赛 // 比赛场相关 RankType int32 `protobuf:"varint,27,opt,name=RankType,proto3" json:"RankType,omitempty"` // 排位类型 SceneAdd int32 `protobuf:"varint,28,opt,name=SceneAdd,proto3" json:"SceneAdd,omitempty"` // 场次加成(百分比) RecordId string `protobuf:"bytes,29,opt,name=RecordId,proto3" json:"RecordId,omitempty"` // 牌局ID OutCardRecord []int32 `protobuf:"varint,30,rep,packed,name=OutCardRecord,proto3" json:"OutCardRecord,omitempty"` //已打出去的牌 IsOutRecord bool `protobuf:"varint,31,opt,name=IsOutRecord,proto3" json:"IsOutRecord,omitempty"` //是否能用记牌器 ItemRecExpireTime int64 `protobuf:"varint,32,opt,name=ItemRecExpireTime,proto3" json:"ItemRecExpireTime,omitempty"` //记牌器到期时间 TMInfoId int32 `protobuf:"varint,33,opt,name=TMInfoId,proto3" json:"TMInfoId,omitempty"` //比赛配置ID // 房卡场配置 RoomTypeId int32 `protobuf:"varint,34,opt,name=RoomTypeId,proto3" json:"RoomTypeId,omitempty"` //房间类型id RoomConfigId int32 `protobuf:"varint,35,opt,name=RoomConfigId,proto3" json:"RoomConfigId,omitempty"` //房间配置id NeedPassword int32 `protobuf:"varint,36,opt,name=NeedPassword,proto3" json:"NeedPassword,omitempty"` //是否需要密码 1需要 CostType int32 `protobuf:"varint,37,opt,name=CostType,proto3" json:"CostType,omitempty"` //房卡支付方式 1AA 2房主 Voice int32 `protobuf:"varint,38,opt,name=Voice,proto3" json:"Voice,omitempty"` //是否开启语音 1开启 Password string `protobuf:"bytes,39,opt,name=Password,proto3" json:"Password,omitempty"` //房间密码 } func (x *SCTienLenRoomInfo) Reset() { *x = SCTienLenRoomInfo{} if protoimpl.UnsafeEnabled { mi := &file_protocol_tienlen_tienlen_proto_msgTypes[4] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *SCTienLenRoomInfo) String() string { return protoimpl.X.MessageStringOf(x) } func (*SCTienLenRoomInfo) ProtoMessage() {} func (x *SCTienLenRoomInfo) ProtoReflect() protoreflect.Message { mi := &file_protocol_tienlen_tienlen_proto_msgTypes[4] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use SCTienLenRoomInfo.ProtoReflect.Descriptor instead. func (*SCTienLenRoomInfo) Descriptor() ([]byte, []int) { return file_protocol_tienlen_tienlen_proto_rawDescGZIP(), []int{4} } func (x *SCTienLenRoomInfo) GetRoomId() int32 { if x != nil { return x.RoomId } return 0 } func (x *SCTienLenRoomInfo) GetCreator() int32 { if x != nil { return x.Creator } return 0 } func (x *SCTienLenRoomInfo) GetGameId() int32 { if x != nil { return x.GameId } return 0 } func (x *SCTienLenRoomInfo) GetRoomMode() int32 { if x != nil { return x.RoomMode } return 0 } func (x *SCTienLenRoomInfo) GetParams() []int32 { if x != nil { return x.Params } return nil } func (x *SCTienLenRoomInfo) GetBankerPos() int32 { if x != nil { return x.BankerPos } return 0 } func (x *SCTienLenRoomInfo) GetState() int32 { if x != nil { return x.State } return 0 } func (x *SCTienLenRoomInfo) GetTimeOut() int32 { if x != nil { return x.TimeOut } return 0 } func (x *SCTienLenRoomInfo) GetPlayers() []*TienLenPlayerData { if x != nil { return x.Players } return nil } func (x *SCTienLenRoomInfo) GetAudienceNum() int32 { if x != nil { return x.AudienceNum } return 0 } func (x *SCTienLenRoomInfo) GetCurOpIdx() int32 { if x != nil { return x.CurOpIdx } return 0 } func (x *SCTienLenRoomInfo) GetLastDelCards() []*LastDelCard { if x != nil { return x.LastDelCards } return nil } func (x *SCTienLenRoomInfo) GetNumOfGames() int32 { if x != nil { return x.NumOfGames } return 0 } func (x *SCTienLenRoomInfo) GetTotalOfGames() int32 { if x != nil { return x.TotalOfGames } return 0 } func (x *SCTienLenRoomInfo) GetMasterSnid() int32 { if x != nil { return x.MasterSnid } return 0 } func (x *SCTienLenRoomInfo) GetBaseScore() int32 { if x != nil { return x.BaseScore } return 0 } func (x *SCTienLenRoomInfo) GetMaxPlayerNum() int32 { if x != nil { return x.MaxPlayerNum } return 0 } func (x *SCTienLenRoomInfo) GetWinSnids() []int32 { if x != nil { return x.WinSnids } return nil } func (x *SCTienLenRoomInfo) GetIsMatch() int32 { if x != nil { return x.IsMatch } return 0 } func (x *SCTienLenRoomInfo) GetRound() int32 { if x != nil { return x.Round } return 0 } func (x *SCTienLenRoomInfo) GetCurPlayerNum() int32 { if x != nil { return x.CurPlayerNum } return 0 } func (x *SCTienLenRoomInfo) GetNextNeed() int32 { if x != nil { return x.NextNeed } return 0 } func (x *SCTienLenRoomInfo) GetMatchFinals() int32 { if x != nil { return x.MatchFinals } return 0 } func (x *SCTienLenRoomInfo) GetRankType() int32 { if x != nil { return x.RankType } return 0 } func (x *SCTienLenRoomInfo) GetSceneAdd() int32 { if x != nil { return x.SceneAdd } return 0 } func (x *SCTienLenRoomInfo) GetRecordId() string { if x != nil { return x.RecordId } return "" } func (x *SCTienLenRoomInfo) GetOutCardRecord() []int32 { if x != nil { return x.OutCardRecord } return nil } func (x *SCTienLenRoomInfo) GetIsOutRecord() bool { if x != nil { return x.IsOutRecord } return false } func (x *SCTienLenRoomInfo) GetItemRecExpireTime() int64 { if x != nil { return x.ItemRecExpireTime } return 0 } func (x *SCTienLenRoomInfo) GetTMInfoId() int32 { if x != nil { return x.TMInfoId } return 0 } func (x *SCTienLenRoomInfo) GetRoomTypeId() int32 { if x != nil { return x.RoomTypeId } return 0 } func (x *SCTienLenRoomInfo) GetRoomConfigId() int32 { if x != nil { return x.RoomConfigId } return 0 } func (x *SCTienLenRoomInfo) GetNeedPassword() int32 { if x != nil { return x.NeedPassword } return 0 } func (x *SCTienLenRoomInfo) GetCostType() int32 { if x != nil { return x.CostType } return 0 } func (x *SCTienLenRoomInfo) GetVoice() int32 { if x != nil { return x.Voice } return 0 } func (x *SCTienLenRoomInfo) GetPassword() string { if x != nil { return x.Password } return "" } //房间状态更新 type SCTienLenRoomState struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields State int32 `protobuf:"varint,1,opt,name=State,proto3" json:"State,omitempty"` //房间当前状态 Params []int64 `protobuf:"varint,2,rep,packed,name=Params,proto3" json:"Params,omitempty"` //参数 } func (x *SCTienLenRoomState) Reset() { *x = SCTienLenRoomState{} if protoimpl.UnsafeEnabled { mi := &file_protocol_tienlen_tienlen_proto_msgTypes[5] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *SCTienLenRoomState) String() string { return protoimpl.X.MessageStringOf(x) } func (*SCTienLenRoomState) ProtoMessage() {} func (x *SCTienLenRoomState) ProtoReflect() protoreflect.Message { mi := &file_protocol_tienlen_tienlen_proto_msgTypes[5] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use SCTienLenRoomState.ProtoReflect.Descriptor instead. func (*SCTienLenRoomState) Descriptor() ([]byte, []int) { return file_protocol_tienlen_tienlen_proto_rawDescGZIP(), []int{5} } func (x *SCTienLenRoomState) GetState() int32 { if x != nil { return x.State } return 0 } func (x *SCTienLenRoomState) GetParams() []int64 { if x != nil { return x.Params } return nil } //玩家操作 type CSTienLenPlayerOp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields OpCode int32 `protobuf:"varint,1,opt,name=OpCode,proto3" json:"OpCode,omitempty"` //1出牌 2过牌 3开始游戏 4调试发牌 OpParam []int64 `protobuf:"varint,2,rep,packed,name=OpParam,proto3" json:"OpParam,omitempty"` } func (x *CSTienLenPlayerOp) Reset() { *x = CSTienLenPlayerOp{} if protoimpl.UnsafeEnabled { mi := &file_protocol_tienlen_tienlen_proto_msgTypes[6] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CSTienLenPlayerOp) String() string { return protoimpl.X.MessageStringOf(x) } func (*CSTienLenPlayerOp) ProtoMessage() {} func (x *CSTienLenPlayerOp) ProtoReflect() protoreflect.Message { mi := &file_protocol_tienlen_tienlen_proto_msgTypes[6] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CSTienLenPlayerOp.ProtoReflect.Descriptor instead. func (*CSTienLenPlayerOp) Descriptor() ([]byte, []int) { return file_protocol_tienlen_tienlen_proto_rawDescGZIP(), []int{6} } func (x *CSTienLenPlayerOp) GetOpCode() int32 { if x != nil { return x.OpCode } return 0 } func (x *CSTienLenPlayerOp) GetOpParam() []int64 { if x != nil { return x.OpParam } return nil } type SCTienLenPlayerOp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields OpCode int32 `protobuf:"varint,1,opt,name=OpCode,proto3" json:"OpCode,omitempty"` //1出牌 2过牌 3开始游戏 OpParam []int64 `protobuf:"varint,2,rep,packed,name=OpParam,proto3" json:"OpParam,omitempty"` //参数 SnId int32 `protobuf:"varint,3,opt,name=SnId,proto3" json:"SnId,omitempty"` //玩家位置 OpRetCode OpResultCode `protobuf:"varint,4,opt,name=OpRetCode,proto3,enum=tienlen.OpResultCode" json:"OpRetCode,omitempty"` //返回错误码,详见:enums.proto } func (x *SCTienLenPlayerOp) Reset() { *x = SCTienLenPlayerOp{} if protoimpl.UnsafeEnabled { mi := &file_protocol_tienlen_tienlen_proto_msgTypes[7] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *SCTienLenPlayerOp) String() string { return protoimpl.X.MessageStringOf(x) } func (*SCTienLenPlayerOp) ProtoMessage() {} func (x *SCTienLenPlayerOp) ProtoReflect() protoreflect.Message { mi := &file_protocol_tienlen_tienlen_proto_msgTypes[7] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use SCTienLenPlayerOp.ProtoReflect.Descriptor instead. func (*SCTienLenPlayerOp) Descriptor() ([]byte, []int) { return file_protocol_tienlen_tienlen_proto_rawDescGZIP(), []int{7} } func (x *SCTienLenPlayerOp) GetOpCode() int32 { if x != nil { return x.OpCode } return 0 } func (x *SCTienLenPlayerOp) GetOpParam() []int64 { if x != nil { return x.OpParam } return nil } func (x *SCTienLenPlayerOp) GetSnId() int32 { if x != nil { return x.SnId } return 0 } func (x *SCTienLenPlayerOp) GetOpRetCode() OpResultCode { if x != nil { return x.OpRetCode } return OpResultCode_OPRC_Sucess } //玩家进入 type SCTienLenPlayerEnter struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Data *TienLenPlayerData `protobuf:"bytes,1,opt,name=Data,proto3" json:"Data,omitempty"` //玩家数据 } func (x *SCTienLenPlayerEnter) Reset() { *x = SCTienLenPlayerEnter{} if protoimpl.UnsafeEnabled { mi := &file_protocol_tienlen_tienlen_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *SCTienLenPlayerEnter) String() string { return protoimpl.X.MessageStringOf(x) } func (*SCTienLenPlayerEnter) ProtoMessage() {} func (x *SCTienLenPlayerEnter) ProtoReflect() protoreflect.Message { mi := &file_protocol_tienlen_tienlen_proto_msgTypes[8] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use SCTienLenPlayerEnter.ProtoReflect.Descriptor instead. func (*SCTienLenPlayerEnter) Descriptor() ([]byte, []int) { return file_protocol_tienlen_tienlen_proto_rawDescGZIP(), []int{8} } func (x *SCTienLenPlayerEnter) GetData() *TienLenPlayerData { if x != nil { return x.Data } return nil } //玩家离开 type SCTienLenPlayerLeave struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Pos int32 `protobuf:"varint,1,opt,name=Pos,proto3" json:"Pos,omitempty"` //玩家位置 } func (x *SCTienLenPlayerLeave) Reset() { *x = SCTienLenPlayerLeave{} if protoimpl.UnsafeEnabled { mi := &file_protocol_tienlen_tienlen_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *SCTienLenPlayerLeave) String() string { return protoimpl.X.MessageStringOf(x) } func (*SCTienLenPlayerLeave) ProtoMessage() {} func (x *SCTienLenPlayerLeave) ProtoReflect() protoreflect.Message { mi := &file_protocol_tienlen_tienlen_proto_msgTypes[9] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use SCTienLenPlayerLeave.ProtoReflect.Descriptor instead. func (*SCTienLenPlayerLeave) Descriptor() ([]byte, []int) { return file_protocol_tienlen_tienlen_proto_rawDescGZIP(), []int{9} } func (x *SCTienLenPlayerLeave) GetPos() int32 { if x != nil { return x.Pos } return 0 } type AddItem struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields ItemType int32 `protobuf:"varint,1,opt,name=ItemType,proto3" json:"ItemType,omitempty"` // 类型; 1场次加成 2道具 3宠物 4角色 5vip加成 6周卡加成 ItemId int32 `protobuf:"varint,2,opt,name=ItemId,proto3" json:"ItemId,omitempty"` // ID Addition int32 `protobuf:"varint,3,opt,name=Addition,proto3" json:"Addition,omitempty"` // 加成(百分比) Score int64 `protobuf:"varint,4,opt,name=Score,proto3" json:"Score,omitempty"` // 加成分数 } func (x *AddItem) Reset() { *x = AddItem{} if protoimpl.UnsafeEnabled { mi := &file_protocol_tienlen_tienlen_proto_msgTypes[10] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *AddItem) String() string { return protoimpl.X.MessageStringOf(x) } func (*AddItem) ProtoMessage() {} func (x *AddItem) ProtoReflect() protoreflect.Message { mi := &file_protocol_tienlen_tienlen_proto_msgTypes[10] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use AddItem.ProtoReflect.Descriptor instead. func (*AddItem) Descriptor() ([]byte, []int) { return file_protocol_tienlen_tienlen_proto_rawDescGZIP(), []int{10} } func (x *AddItem) GetItemType() int32 { if x != nil { return x.ItemType } return 0 } func (x *AddItem) GetItemId() int32 { if x != nil { return x.ItemId } return 0 } func (x *AddItem) GetAddition() int32 { if x != nil { return x.Addition } return 0 } func (x *AddItem) GetScore() int64 { if x != nil { return x.Score } return 0 } //结算结果 type TienLenPlayerGameBilled struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields SnId int32 `protobuf:"varint,1,opt,name=SnId,proto3" json:"SnId,omitempty"` //玩家 Cards []int32 `protobuf:"varint,2,rep,packed,name=Cards,proto3" json:"Cards,omitempty"` // 手牌 WinCoin int64 `protobuf:"varint,3,opt,name=WinCoin,proto3" json:"WinCoin,omitempty"` //输赢金额 GameCoin int64 `protobuf:"varint,4,opt,name=GameCoin,proto3" json:"GameCoin,omitempty"` //结算后身上余额 IsWin int32 `protobuf:"varint,5,opt,name=IsWin,proto3" json:"IsWin,omitempty"` //输赢 赢1 输2 平0 WinRankScore int64 `protobuf:"varint,6,opt,name=WinRankScore,proto3" json:"WinRankScore,omitempty"` // 排位积分变化(包含额外加分) RankScore int64 `protobuf:"varint,7,opt,name=RankScore,proto3" json:"RankScore,omitempty"` // 结算后排位积分 AddScore int64 `protobuf:"varint,8,opt,name=AddScore,proto3" json:"AddScore,omitempty"` // 额外加分 AddItems []*AddItem `protobuf:"bytes,9,rep,name=AddItems,proto3" json:"AddItems,omitempty"` // 加成 TianHu int32 `protobuf:"varint,10,opt,name=TianHu,proto3" json:"TianHu,omitempty"` // 天胡类型 1:4个2 2:6连对 3:3-A } func (x *TienLenPlayerGameBilled) Reset() { *x = TienLenPlayerGameBilled{} if protoimpl.UnsafeEnabled { mi := &file_protocol_tienlen_tienlen_proto_msgTypes[11] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *TienLenPlayerGameBilled) String() string { return protoimpl.X.MessageStringOf(x) } func (*TienLenPlayerGameBilled) ProtoMessage() {} func (x *TienLenPlayerGameBilled) ProtoReflect() protoreflect.Message { mi := &file_protocol_tienlen_tienlen_proto_msgTypes[11] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use TienLenPlayerGameBilled.ProtoReflect.Descriptor instead. func (*TienLenPlayerGameBilled) Descriptor() ([]byte, []int) { return file_protocol_tienlen_tienlen_proto_rawDescGZIP(), []int{11} } func (x *TienLenPlayerGameBilled) GetSnId() int32 { if x != nil { return x.SnId } return 0 } func (x *TienLenPlayerGameBilled) GetCards() []int32 { if x != nil { return x.Cards } return nil } func (x *TienLenPlayerGameBilled) GetWinCoin() int64 { if x != nil { return x.WinCoin } return 0 } func (x *TienLenPlayerGameBilled) GetGameCoin() int64 { if x != nil { return x.GameCoin } return 0 } func (x *TienLenPlayerGameBilled) GetIsWin() int32 { if x != nil { return x.IsWin } return 0 } func (x *TienLenPlayerGameBilled) GetWinRankScore() int64 { if x != nil { return x.WinRankScore } return 0 } func (x *TienLenPlayerGameBilled) GetRankScore() int64 { if x != nil { return x.RankScore } return 0 } func (x *TienLenPlayerGameBilled) GetAddScore() int64 { if x != nil { return x.AddScore } return 0 } func (x *TienLenPlayerGameBilled) GetAddItems() []*AddItem { if x != nil { return x.AddItems } return nil } func (x *TienLenPlayerGameBilled) GetTianHu() int32 { if x != nil { return x.TianHu } return 0 } type SCTienLenGameBilled struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Datas []*TienLenPlayerGameBilled `protobuf:"bytes,1,rep,name=Datas,proto3" json:"Datas,omitempty"` } func (x *SCTienLenGameBilled) Reset() { *x = SCTienLenGameBilled{} if protoimpl.UnsafeEnabled { mi := &file_protocol_tienlen_tienlen_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *SCTienLenGameBilled) String() string { return protoimpl.X.MessageStringOf(x) } func (*SCTienLenGameBilled) ProtoMessage() {} func (x *SCTienLenGameBilled) ProtoReflect() protoreflect.Message { mi := &file_protocol_tienlen_tienlen_proto_msgTypes[12] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use SCTienLenGameBilled.ProtoReflect.Descriptor instead. func (*SCTienLenGameBilled) Descriptor() ([]byte, []int) { return file_protocol_tienlen_tienlen_proto_rawDescGZIP(), []int{12} } func (x *SCTienLenGameBilled) GetDatas() []*TienLenPlayerGameBilled { if x != nil { return x.Datas } return nil } //小结算结果(炸的分) type SCTienLenSmallGameBilled struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields WinPos int32 `protobuf:"varint,1,opt,name=WinPos,proto3" json:"WinPos,omitempty"` //赢家 WinPosCoin int64 `protobuf:"varint,2,opt,name=WinPosCoin,proto3" json:"WinPosCoin,omitempty"` //结算后赢家身上余额 LosePos int32 `protobuf:"varint,3,opt,name=LosePos,proto3" json:"LosePos,omitempty"` //输家 LosePosCoin int64 `protobuf:"varint,4,opt,name=LosePosCoin,proto3" json:"LosePosCoin,omitempty"` //结算后输家身上余额 WinCoin int64 `protobuf:"varint,5,opt,name=WinCoin,proto3" json:"WinCoin,omitempty"` //赢金额 LoseCoin int64 `protobuf:"varint,6,opt,name=LoseCoin,proto3" json:"LoseCoin,omitempty"` //输金额 } func (x *SCTienLenSmallGameBilled) Reset() { *x = SCTienLenSmallGameBilled{} if protoimpl.UnsafeEnabled { mi := &file_protocol_tienlen_tienlen_proto_msgTypes[13] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *SCTienLenSmallGameBilled) String() string { return protoimpl.X.MessageStringOf(x) } func (*SCTienLenSmallGameBilled) ProtoMessage() {} func (x *SCTienLenSmallGameBilled) ProtoReflect() protoreflect.Message { mi := &file_protocol_tienlen_tienlen_proto_msgTypes[13] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use SCTienLenSmallGameBilled.ProtoReflect.Descriptor instead. func (*SCTienLenSmallGameBilled) Descriptor() ([]byte, []int) { return file_protocol_tienlen_tienlen_proto_rawDescGZIP(), []int{13} } func (x *SCTienLenSmallGameBilled) GetWinPos() int32 { if x != nil { return x.WinPos } return 0 } func (x *SCTienLenSmallGameBilled) GetWinPosCoin() int64 { if x != nil { return x.WinPosCoin } return 0 } func (x *SCTienLenSmallGameBilled) GetLosePos() int32 { if x != nil { return x.LosePos } return 0 } func (x *SCTienLenSmallGameBilled) GetLosePosCoin() int64 { if x != nil { return x.LosePosCoin } return 0 } func (x *SCTienLenSmallGameBilled) GetWinCoin() int64 { if x != nil { return x.WinCoin } return 0 } func (x *SCTienLenSmallGameBilled) GetLoseCoin() int64 { if x != nil { return x.LoseCoin } return 0 } //发牌 type SCTienLenCard struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Cards []int32 `protobuf:"varint,1,rep,packed,name=Cards,proto3" json:"Cards,omitempty"` //手牌 IsOutRecord bool `protobuf:"varint,2,opt,name=IsOutRecord,proto3" json:"IsOutRecord,omitempty"` // 是否有出牌记录 SnId int32 `protobuf:"varint,3,opt,name=SnId,proto3" json:"SnId,omitempty"` //玩家id } func (x *SCTienLenCard) Reset() { *x = SCTienLenCard{} if protoimpl.UnsafeEnabled { mi := &file_protocol_tienlen_tienlen_proto_msgTypes[14] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *SCTienLenCard) String() string { return protoimpl.X.MessageStringOf(x) } func (*SCTienLenCard) ProtoMessage() {} func (x *SCTienLenCard) ProtoReflect() protoreflect.Message { mi := &file_protocol_tienlen_tienlen_proto_msgTypes[14] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use SCTienLenCard.ProtoReflect.Descriptor instead. func (*SCTienLenCard) Descriptor() ([]byte, []int) { return file_protocol_tienlen_tienlen_proto_rawDescGZIP(), []int{14} } func (x *SCTienLenCard) GetCards() []int32 { if x != nil { return x.Cards } return nil } func (x *SCTienLenCard) GetIsOutRecord() bool { if x != nil { return x.IsOutRecord } return false } func (x *SCTienLenCard) GetSnId() int32 { if x != nil { return x.SnId } return 0 } //测试数据 type SCTienLenCardTest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Grades map[int32]int32 `protobuf:"bytes,1,rep,name=Grades,proto3" json:"Grades,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"` // 牌评分 Type int32 `protobuf:"varint,2,opt,name=Type,proto3" json:"Type,omitempty"` //1最小 2随机 3最大 Totalin int64 `protobuf:"varint,3,opt,name=Totalin,proto3" json:"Totalin,omitempty"` //投入 Totalout int64 `protobuf:"varint,4,opt,name=Totalout,proto3" json:"Totalout,omitempty"` //产出 LoseRate float64 `protobuf:"fixed64,5,opt,name=LoseRate,proto3" json:"LoseRate,omitempty"` //赔率 Data string `protobuf:"bytes,6,opt,name=Data,proto3" json:"Data,omitempty"` } func (x *SCTienLenCardTest) Reset() { *x = SCTienLenCardTest{} if protoimpl.UnsafeEnabled { mi := &file_protocol_tienlen_tienlen_proto_msgTypes[15] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *SCTienLenCardTest) String() string { return protoimpl.X.MessageStringOf(x) } func (*SCTienLenCardTest) ProtoMessage() {} func (x *SCTienLenCardTest) ProtoReflect() protoreflect.Message { mi := &file_protocol_tienlen_tienlen_proto_msgTypes[15] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use SCTienLenCardTest.ProtoReflect.Descriptor instead. func (*SCTienLenCardTest) Descriptor() ([]byte, []int) { return file_protocol_tienlen_tienlen_proto_rawDescGZIP(), []int{15} } func (x *SCTienLenCardTest) GetGrades() map[int32]int32 { if x != nil { return x.Grades } return nil } func (x *SCTienLenCardTest) GetType() int32 { if x != nil { return x.Type } return 0 } func (x *SCTienLenCardTest) GetTotalin() int64 { if x != nil { return x.Totalin } return 0 } func (x *SCTienLenCardTest) GetTotalout() int64 { if x != nil { return x.Totalout } return 0 } func (x *SCTienLenCardTest) GetLoseRate() float64 { if x != nil { return x.LoseRate } return 0 } func (x *SCTienLenCardTest) GetData() string { if x != nil { return x.Data } return "" } type SCTienLenCurOpPos struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Pos int32 `protobuf:"varint,1,opt,name=Pos,proto3" json:"Pos,omitempty"` //座位位置 IsNew bool `protobuf:"varint,2,opt,name=IsNew,proto3" json:"IsNew,omitempty"` //新一轮开始出牌 Cards []int32 `protobuf:"varint,3,rep,packed,name=Cards,proto3" json:"Cards,omitempty"` //上家出的牌 ExDelay int32 `protobuf:"varint,4,opt,name=ExDelay,proto3" json:"ExDelay,omitempty"` //出牌额外延迟时间(s) Flag int32 `protobuf:"varint,5,opt,name=flag,proto3" json:"flag,omitempty"` //玩家状态标记 } func (x *SCTienLenCurOpPos) Reset() { *x = SCTienLenCurOpPos{} if protoimpl.UnsafeEnabled { mi := &file_protocol_tienlen_tienlen_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *SCTienLenCurOpPos) String() string { return protoimpl.X.MessageStringOf(x) } func (*SCTienLenCurOpPos) ProtoMessage() {} func (x *SCTienLenCurOpPos) ProtoReflect() protoreflect.Message { mi := &file_protocol_tienlen_tienlen_proto_msgTypes[16] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use SCTienLenCurOpPos.ProtoReflect.Descriptor instead. func (*SCTienLenCurOpPos) Descriptor() ([]byte, []int) { return file_protocol_tienlen_tienlen_proto_rawDescGZIP(), []int{16} } func (x *SCTienLenCurOpPos) GetPos() int32 { if x != nil { return x.Pos } return 0 } func (x *SCTienLenCurOpPos) GetIsNew() bool { if x != nil { return x.IsNew } return false } func (x *SCTienLenCurOpPos) GetCards() []int32 { if x != nil { return x.Cards } return nil } func (x *SCTienLenCurOpPos) GetExDelay() int32 { if x != nil { return x.ExDelay } return 0 } func (x *SCTienLenCurOpPos) GetFlag() int32 { if x != nil { return x.Flag } return 0 } type SCTienLenUpdateMasterSnid struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields MasterSnid int32 `protobuf:"varint,1,opt,name=MasterSnid,proto3" json:"MasterSnid,omitempty"` //房主 } func (x *SCTienLenUpdateMasterSnid) Reset() { *x = SCTienLenUpdateMasterSnid{} if protoimpl.UnsafeEnabled { mi := &file_protocol_tienlen_tienlen_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *SCTienLenUpdateMasterSnid) String() string { return protoimpl.X.MessageStringOf(x) } func (*SCTienLenUpdateMasterSnid) ProtoMessage() {} func (x *SCTienLenUpdateMasterSnid) ProtoReflect() protoreflect.Message { mi := &file_protocol_tienlen_tienlen_proto_msgTypes[17] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use SCTienLenUpdateMasterSnid.ProtoReflect.Descriptor instead. func (*SCTienLenUpdateMasterSnid) Descriptor() ([]byte, []int) { return file_protocol_tienlen_tienlen_proto_rawDescGZIP(), []int{17} } func (x *SCTienLenUpdateMasterSnid) GetMasterSnid() int32 { if x != nil { return x.MasterSnid } return 0 } //PACKET_SCTienLenUpdateAudienceNum type SCTienLenUpdateAudienceNum struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields AudienceNum int32 `protobuf:"varint,1,opt,name=AudienceNum,proto3" json:"AudienceNum,omitempty"` //当前观战人数 } func (x *SCTienLenUpdateAudienceNum) Reset() { *x = SCTienLenUpdateAudienceNum{} if protoimpl.UnsafeEnabled { mi := &file_protocol_tienlen_tienlen_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *SCTienLenUpdateAudienceNum) String() string { return protoimpl.X.MessageStringOf(x) } func (*SCTienLenUpdateAudienceNum) ProtoMessage() {} func (x *SCTienLenUpdateAudienceNum) ProtoReflect() protoreflect.Message { mi := &file_protocol_tienlen_tienlen_proto_msgTypes[18] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use SCTienLenUpdateAudienceNum.ProtoReflect.Descriptor instead. func (*SCTienLenUpdateAudienceNum) Descriptor() ([]byte, []int) { return file_protocol_tienlen_tienlen_proto_rawDescGZIP(), []int{18} } func (x *SCTienLenUpdateAudienceNum) GetAudienceNum() int32 { if x != nil { return x.AudienceNum } return 0 } type SCTienLenAIData struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields BombNum int32 `protobuf:"varint,1,opt,name=Bomb_num,json=BombNum,proto3" json:"Bomb_num,omitempty"` //炸弹数量 CardPlayActionSeq string `protobuf:"bytes,2,opt,name=Card_play_action_seq,json=CardPlayActionSeq,proto3" json:"Card_play_action_seq,omitempty"` //出牌历史记录 LastMove_0 string `protobuf:"bytes,3,opt,name=Last_move_0,json=LastMove0,proto3" json:"Last_move_0,omitempty"` //最后出牌 LastMove_1 string `protobuf:"bytes,4,opt,name=Last_move_1,json=LastMove1,proto3" json:"Last_move_1,omitempty"` //最后出牌 LastMove_2 string `protobuf:"bytes,5,opt,name=Last_move_2,json=LastMove2,proto3" json:"Last_move_2,omitempty"` //最后出牌 LastMove_3 string `protobuf:"bytes,6,opt,name=Last_move_3,json=LastMove3,proto3" json:"Last_move_3,omitempty"` //最后出牌 NumCardsLeft_0 int32 `protobuf:"varint,7,opt,name=Num_cards_left_0,json=NumCardsLeft0,proto3" json:"Num_cards_left_0,omitempty"` //剩余牌数 NumCardsLeft_1 int32 `protobuf:"varint,8,opt,name=Num_cards_left_1,json=NumCardsLeft1,proto3" json:"Num_cards_left_1,omitempty"` //剩余牌数 NumCardsLeft_2 int32 `protobuf:"varint,9,opt,name=Num_cards_left_2,json=NumCardsLeft2,proto3" json:"Num_cards_left_2,omitempty"` //剩余牌数 NumCardsLeft_3 int32 `protobuf:"varint,10,opt,name=Num_cards_left_3,json=NumCardsLeft3,proto3" json:"Num_cards_left_3,omitempty"` //剩余牌数 OtherHandCards string `protobuf:"bytes,11,opt,name=Other_hand_cards,json=OtherHandCards,proto3" json:"Other_hand_cards,omitempty"` //其它人手牌 PlayedCards_0 string `protobuf:"bytes,12,opt,name=Played_cards_0,json=PlayedCards0,proto3" json:"Played_cards_0,omitempty"` //出过的牌 PlayedCards_1 string `protobuf:"bytes,13,opt,name=Played_cards_1,json=PlayedCards1,proto3" json:"Played_cards_1,omitempty"` //出过的牌 PlayedCards_2 string `protobuf:"bytes,14,opt,name=Played_cards_2,json=PlayedCards2,proto3" json:"Played_cards_2,omitempty"` //出过的牌 PlayedCards_3 string `protobuf:"bytes,15,opt,name=Played_cards_3,json=PlayedCards3,proto3" json:"Played_cards_3,omitempty"` //出过的牌 PlayerHandCards string `protobuf:"bytes,16,opt,name=Player_hand_cards,json=PlayerHandCards,proto3" json:"Player_hand_cards,omitempty"` //手牌 PlayerPosition int32 `protobuf:"varint,17,opt,name=Player_position,json=PlayerPosition,proto3" json:"Player_position,omitempty"` //当前操作数置 IsTienLenYule bool `protobuf:"varint,18,opt,name=IsTienLenYule,proto3" json:"IsTienLenYule,omitempty"` //是否娱乐场 IsFirstHand bool `protobuf:"varint,19,opt,name=IsFirstHand,proto3" json:"IsFirstHand,omitempty"` //是否出首牌 CardsLeft_0 []int32 `protobuf:"varint,20,rep,packed,name=Cards_left_0,json=CardsLeft0,proto3" json:"Cards_left_0,omitempty"` //剩余牌 CardsLeft_1 []int32 `protobuf:"varint,21,rep,packed,name=Cards_left_1,json=CardsLeft1,proto3" json:"Cards_left_1,omitempty"` //剩余牌 CardsLeft_2 []int32 `protobuf:"varint,22,rep,packed,name=Cards_left_2,json=CardsLeft2,proto3" json:"Cards_left_2,omitempty"` //剩余牌 CardsLeft_3 []int32 `protobuf:"varint,23,rep,packed,name=Cards_left_3,json=CardsLeft3,proto3" json:"Cards_left_3,omitempty"` //剩余牌 LastPos int32 `protobuf:"varint,24,opt,name=Last_pos,json=LastPos,proto3" json:"Last_pos,omitempty"` //上一家出牌人的位置 IsEnd bool `protobuf:"varint,25,opt,name=IsEnd,proto3" json:"IsEnd,omitempty"` //是否是打到底 WinSnids []int32 `protobuf:"varint,26,rep,packed,name=WinSnids,proto3" json:"WinSnids,omitempty"` //赢家id IsWin bool `protobuf:"varint,27,opt,name=IsWin,proto3" json:"IsWin,omitempty"` //输赢控制 } func (x *SCTienLenAIData) Reset() { *x = SCTienLenAIData{} if protoimpl.UnsafeEnabled { mi := &file_protocol_tienlen_tienlen_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *SCTienLenAIData) String() string { return protoimpl.X.MessageStringOf(x) } func (*SCTienLenAIData) ProtoMessage() {} func (x *SCTienLenAIData) ProtoReflect() protoreflect.Message { mi := &file_protocol_tienlen_tienlen_proto_msgTypes[19] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use SCTienLenAIData.ProtoReflect.Descriptor instead. func (*SCTienLenAIData) Descriptor() ([]byte, []int) { return file_protocol_tienlen_tienlen_proto_rawDescGZIP(), []int{19} } func (x *SCTienLenAIData) GetBombNum() int32 { if x != nil { return x.BombNum } return 0 } func (x *SCTienLenAIData) GetCardPlayActionSeq() string { if x != nil { return x.CardPlayActionSeq } return "" } func (x *SCTienLenAIData) GetLastMove_0() string { if x != nil { return x.LastMove_0 } return "" } func (x *SCTienLenAIData) GetLastMove_1() string { if x != nil { return x.LastMove_1 } return "" } func (x *SCTienLenAIData) GetLastMove_2() string { if x != nil { return x.LastMove_2 } return "" } func (x *SCTienLenAIData) GetLastMove_3() string { if x != nil { return x.LastMove_3 } return "" } func (x *SCTienLenAIData) GetNumCardsLeft_0() int32 { if x != nil { return x.NumCardsLeft_0 } return 0 } func (x *SCTienLenAIData) GetNumCardsLeft_1() int32 { if x != nil { return x.NumCardsLeft_1 } return 0 } func (x *SCTienLenAIData) GetNumCardsLeft_2() int32 { if x != nil { return x.NumCardsLeft_2 } return 0 } func (x *SCTienLenAIData) GetNumCardsLeft_3() int32 { if x != nil { return x.NumCardsLeft_3 } return 0 } func (x *SCTienLenAIData) GetOtherHandCards() string { if x != nil { return x.OtherHandCards } return "" } func (x *SCTienLenAIData) GetPlayedCards_0() string { if x != nil { return x.PlayedCards_0 } return "" } func (x *SCTienLenAIData) GetPlayedCards_1() string { if x != nil { return x.PlayedCards_1 } return "" } func (x *SCTienLenAIData) GetPlayedCards_2() string { if x != nil { return x.PlayedCards_2 } return "" } func (x *SCTienLenAIData) GetPlayedCards_3() string { if x != nil { return x.PlayedCards_3 } return "" } func (x *SCTienLenAIData) GetPlayerHandCards() string { if x != nil { return x.PlayerHandCards } return "" } func (x *SCTienLenAIData) GetPlayerPosition() int32 { if x != nil { return x.PlayerPosition } return 0 } func (x *SCTienLenAIData) GetIsTienLenYule() bool { if x != nil { return x.IsTienLenYule } return false } func (x *SCTienLenAIData) GetIsFirstHand() bool { if x != nil { return x.IsFirstHand } return false } func (x *SCTienLenAIData) GetCardsLeft_0() []int32 { if x != nil { return x.CardsLeft_0 } return nil } func (x *SCTienLenAIData) GetCardsLeft_1() []int32 { if x != nil { return x.CardsLeft_1 } return nil } func (x *SCTienLenAIData) GetCardsLeft_2() []int32 { if x != nil { return x.CardsLeft_2 } return nil } func (x *SCTienLenAIData) GetCardsLeft_3() []int32 { if x != nil { return x.CardsLeft_3 } return nil } func (x *SCTienLenAIData) GetLastPos() int32 { if x != nil { return x.LastPos } return 0 } func (x *SCTienLenAIData) GetIsEnd() bool { if x != nil { return x.IsEnd } return false } func (x *SCTienLenAIData) GetWinSnids() []int32 { if x != nil { return x.WinSnids } return nil } func (x *SCTienLenAIData) GetIsWin() bool { if x != nil { return x.IsWin } return false } //PACKET_SCTienLenFirstOpPos type SCTienLenFirstOpPos struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Pos int32 `protobuf:"varint,1,opt,name=Pos,proto3" json:"Pos,omitempty"` //座位位置 } func (x *SCTienLenFirstOpPos) Reset() { *x = SCTienLenFirstOpPos{} if protoimpl.UnsafeEnabled { mi := &file_protocol_tienlen_tienlen_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *SCTienLenFirstOpPos) String() string { return protoimpl.X.MessageStringOf(x) } func (*SCTienLenFirstOpPos) ProtoMessage() {} func (x *SCTienLenFirstOpPos) ProtoReflect() protoreflect.Message { mi := &file_protocol_tienlen_tienlen_proto_msgTypes[20] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use SCTienLenFirstOpPos.ProtoReflect.Descriptor instead. func (*SCTienLenFirstOpPos) Descriptor() ([]byte, []int) { return file_protocol_tienlen_tienlen_proto_rawDescGZIP(), []int{20} } func (x *SCTienLenFirstOpPos) GetPos() int32 { if x != nil { return x.Pos } return 0 } //PACKET_SCTienLenThinkLongCnt type SCTienLenPlayerThinkLongCnt struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields ThinkLongCnt int32 `protobuf:"varint,1,opt,name=ThinkLongCnt,proto3" json:"ThinkLongCnt,omitempty"` //玩家长考次数 } func (x *SCTienLenPlayerThinkLongCnt) Reset() { *x = SCTienLenPlayerThinkLongCnt{} if protoimpl.UnsafeEnabled { mi := &file_protocol_tienlen_tienlen_proto_msgTypes[21] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *SCTienLenPlayerThinkLongCnt) String() string { return protoimpl.X.MessageStringOf(x) } func (*SCTienLenPlayerThinkLongCnt) ProtoMessage() {} func (x *SCTienLenPlayerThinkLongCnt) ProtoReflect() protoreflect.Message { mi := &file_protocol_tienlen_tienlen_proto_msgTypes[21] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use SCTienLenPlayerThinkLongCnt.ProtoReflect.Descriptor instead. func (*SCTienLenPlayerThinkLongCnt) Descriptor() ([]byte, []int) { return file_protocol_tienlen_tienlen_proto_rawDescGZIP(), []int{21} } func (x *SCTienLenPlayerThinkLongCnt) GetThinkLongCnt() int32 { if x != nil { return x.ThinkLongCnt } return 0 } //PACKET_SCTienLenFirstGiveItemItem type SCTienLenPlayerFirstGiveItemItem struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields ItemId int32 `protobuf:"varint,1,opt,name=ItemId,proto3" json:"ItemId,omitempty"` // 赠送的道具ID ItemRecExpireTime int64 `protobuf:"varint,2,opt,name=ItemRecExpireTime,proto3" json:"ItemRecExpireTime,omitempty"` // 道具到期时间 } func (x *SCTienLenPlayerFirstGiveItemItem) Reset() { *x = SCTienLenPlayerFirstGiveItemItem{} if protoimpl.UnsafeEnabled { mi := &file_protocol_tienlen_tienlen_proto_msgTypes[22] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *SCTienLenPlayerFirstGiveItemItem) String() string { return protoimpl.X.MessageStringOf(x) } func (*SCTienLenPlayerFirstGiveItemItem) ProtoMessage() {} func (x *SCTienLenPlayerFirstGiveItemItem) ProtoReflect() protoreflect.Message { mi := &file_protocol_tienlen_tienlen_proto_msgTypes[22] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use SCTienLenPlayerFirstGiveItemItem.ProtoReflect.Descriptor instead. func (*SCTienLenPlayerFirstGiveItemItem) Descriptor() ([]byte, []int) { return file_protocol_tienlen_tienlen_proto_rawDescGZIP(), []int{22} } func (x *SCTienLenPlayerFirstGiveItemItem) GetItemId() int32 { if x != nil { return x.ItemId } return 0 } func (x *SCTienLenPlayerFirstGiveItemItem) GetItemRecExpireTime() int64 { if x != nil { return x.ItemRecExpireTime } return 0 } //通知宠物技能生效 炸弹不扣分 //PACKET_SCTienLenPetSkillRes type SCTienLenPetSkillRes struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Snid int32 `protobuf:"varint,1,opt,name=Snid,proto3" json:"Snid,omitempty"` Pos int32 `protobuf:"varint,2,opt,name=Pos,proto3" json:"Pos,omitempty"` PetSkillRes bool `protobuf:"varint,3,opt,name=PetSkillRes,proto3" json:"PetSkillRes,omitempty"` //true生效 } func (x *SCTienLenPetSkillRes) Reset() { *x = SCTienLenPetSkillRes{} if protoimpl.UnsafeEnabled { mi := &file_protocol_tienlen_tienlen_proto_msgTypes[23] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *SCTienLenPetSkillRes) String() string { return protoimpl.X.MessageStringOf(x) } func (*SCTienLenPetSkillRes) ProtoMessage() {} func (x *SCTienLenPetSkillRes) ProtoReflect() protoreflect.Message { mi := &file_protocol_tienlen_tienlen_proto_msgTypes[23] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use SCTienLenPetSkillRes.ProtoReflect.Descriptor instead. func (*SCTienLenPetSkillRes) Descriptor() ([]byte, []int) { return file_protocol_tienlen_tienlen_proto_rawDescGZIP(), []int{23} } func (x *SCTienLenPetSkillRes) GetSnid() int32 { if x != nil { return x.Snid } return 0 } func (x *SCTienLenPetSkillRes) GetPos() int32 { if x != nil { return x.Pos } return 0 } func (x *SCTienLenPetSkillRes) GetPetSkillRes() bool { if x != nil { return x.PetSkillRes } return false } type ItemInfo struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Id int32 `protobuf:"varint,1,opt,name=Id,proto3" json:"Id,omitempty"` // 道具ID Num int64 `protobuf:"varint,2,opt,name=Num,proto3" json:"Num,omitempty"` // 道具数量 } func (x *ItemInfo) Reset() { *x = ItemInfo{} if protoimpl.UnsafeEnabled { mi := &file_protocol_tienlen_tienlen_proto_msgTypes[24] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ItemInfo) String() string { return protoimpl.X.MessageStringOf(x) } func (*ItemInfo) ProtoMessage() {} func (x *ItemInfo) ProtoReflect() protoreflect.Message { mi := &file_protocol_tienlen_tienlen_proto_msgTypes[24] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use ItemInfo.ProtoReflect.Descriptor instead. func (*ItemInfo) Descriptor() ([]byte, []int) { return file_protocol_tienlen_tienlen_proto_rawDescGZIP(), []int{24} } func (x *ItemInfo) GetId() int32 { if x != nil { return x.Id } return 0 } func (x *ItemInfo) GetNum() int64 { if x != nil { return x.Num } return 0 } type TienLenCycleBilledInfo struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields SnId int32 `protobuf:"varint,1,opt,name=SnId,proto3" json:"SnId,omitempty"` // 玩家ID RoundScore []int64 `protobuf:"varint,2,rep,packed,name=RoundScore,proto3" json:"RoundScore,omitempty"` // 每轮得分 Score int64 `protobuf:"varint,3,opt,name=Score,proto3" json:"Score,omitempty"` // 基础分 Award []*ItemInfo `protobuf:"bytes,4,rep,name=Award,proto3" json:"Award,omitempty"` // 奖励道具 TotalScore int64 `protobuf:"varint,5,opt,name=TotalScore,proto3" json:"TotalScore,omitempty"` // 总分 } func (x *TienLenCycleBilledInfo) Reset() { *x = TienLenCycleBilledInfo{} if protoimpl.UnsafeEnabled { mi := &file_protocol_tienlen_tienlen_proto_msgTypes[25] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *TienLenCycleBilledInfo) String() string { return protoimpl.X.MessageStringOf(x) } func (*TienLenCycleBilledInfo) ProtoMessage() {} func (x *TienLenCycleBilledInfo) ProtoReflect() protoreflect.Message { mi := &file_protocol_tienlen_tienlen_proto_msgTypes[25] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use TienLenCycleBilledInfo.ProtoReflect.Descriptor instead. func (*TienLenCycleBilledInfo) Descriptor() ([]byte, []int) { return file_protocol_tienlen_tienlen_proto_rawDescGZIP(), []int{25} } func (x *TienLenCycleBilledInfo) GetSnId() int32 { if x != nil { return x.SnId } return 0 } func (x *TienLenCycleBilledInfo) GetRoundScore() []int64 { if x != nil { return x.RoundScore } return nil } func (x *TienLenCycleBilledInfo) GetScore() int64 { if x != nil { return x.Score } return 0 } func (x *TienLenCycleBilledInfo) GetAward() []*ItemInfo { if x != nil { return x.Award } return nil } func (x *TienLenCycleBilledInfo) GetTotalScore() int64 { if x != nil { return x.TotalScore } return 0 } // PACKET_SCTienLenCycleBilled type SCTienLenCycleBilled struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields List []*TienLenCycleBilledInfo `protobuf:"bytes,1,rep,name=List,proto3" json:"List,omitempty"` } func (x *SCTienLenCycleBilled) Reset() { *x = SCTienLenCycleBilled{} if protoimpl.UnsafeEnabled { mi := &file_protocol_tienlen_tienlen_proto_msgTypes[26] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *SCTienLenCycleBilled) String() string { return protoimpl.X.MessageStringOf(x) } func (*SCTienLenCycleBilled) ProtoMessage() {} func (x *SCTienLenCycleBilled) ProtoReflect() protoreflect.Message { mi := &file_protocol_tienlen_tienlen_proto_msgTypes[26] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use SCTienLenCycleBilled.ProtoReflect.Descriptor instead. func (*SCTienLenCycleBilled) Descriptor() ([]byte, []int) { return file_protocol_tienlen_tienlen_proto_rawDescGZIP(), []int{26} } func (x *SCTienLenCycleBilled) GetList() []*TienLenCycleBilledInfo { if x != nil { return x.List } return nil } var File_protocol_tienlen_tienlen_proto protoreflect.FileDescriptor var file_protocol_tienlen_tienlen_proto_rawDesc = []byte{ 0x0a, 0x1e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2f, 0x74, 0x69, 0x65, 0x6e, 0x6c, 0x65, 0x6e, 0x2f, 0x74, 0x69, 0x65, 0x6e, 0x6c, 0x65, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x07, 0x74, 0x69, 0x65, 0x6e, 0x6c, 0x65, 0x6e, 0x22, 0x99, 0x07, 0x0a, 0x11, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x48, 0x65, 0x61, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x48, 0x65, 0x61, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x53, 0x65, 0x78, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x53, 0x65, 0x78, 0x12, 0x16, 0x0a, 0x06, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x10, 0x0a, 0x03, 0x50, 0x6f, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x50, 0x6f, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x46, 0x6c, 0x61, 0x67, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x46, 0x6c, 0x61, 0x67, 0x12, 0x1c, 0x0a, 0x09, 0x4c, 0x6f, 0x6e, 0x67, 0x69, 0x74, 0x75, 0x64, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x4c, 0x6f, 0x6e, 0x67, 0x69, 0x74, 0x75, 0x64, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x4c, 0x61, 0x74, 0x69, 0x74, 0x75, 0x64, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x4c, 0x61, 0x74, 0x69, 0x74, 0x75, 0x64, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x43, 0x69, 0x74, 0x79, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x43, 0x69, 0x74, 0x79, 0x12, 0x16, 0x0a, 0x06, 0x4c, 0x61, 0x73, 0x74, 0x4f, 0x70, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x4c, 0x61, 0x73, 0x74, 0x4f, 0x70, 0x12, 0x10, 0x0a, 0x03, 0x56, 0x49, 0x50, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x56, 0x49, 0x50, 0x12, 0x20, 0x0a, 0x0b, 0x48, 0x65, 0x61, 0x64, 0x4f, 0x75, 0x74, 0x4c, 0x69, 0x6e, 0x65, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x48, 0x65, 0x61, 0x64, 0x4f, 0x75, 0x74, 0x4c, 0x69, 0x6e, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x4e, 0x69, 0x63, 0x65, 0x49, 0x64, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x4e, 0x69, 0x63, 0x65, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x43, 0x61, 0x72, 0x64, 0x73, 0x18, 0x10, 0x20, 0x03, 0x28, 0x05, 0x52, 0x05, 0x43, 0x61, 0x72, 0x64, 0x73, 0x12, 0x2a, 0x0a, 0x10, 0x43, 0x75, 0x72, 0x52, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x42, 0x65, 0x74, 0x18, 0x11, 0x20, 0x01, 0x28, 0x03, 0x52, 0x10, 0x43, 0x75, 0x72, 0x52, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x42, 0x65, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x47, 0x61, 0x6d, 0x65, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x12, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x47, 0x61, 0x6d, 0x65, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x6f, 0x6c, 0x65, 0x49, 0x64, 0x18, 0x13, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x52, 0x6f, 0x6c, 0x65, 0x49, 0x64, 0x12, 0x3b, 0x0a, 0x05, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x14, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x74, 0x69, 0x65, 0x6e, 0x6c, 0x65, 0x6e, 0x2e, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x05, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, 0x61, 0x6e, 0x6b, 0x49, 0x64, 0x18, 0x15, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, 0x61, 0x6e, 0x6b, 0x49, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x4c, 0x76, 0x18, 0x16, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x4c, 0x76, 0x12, 0x1a, 0x0a, 0x08, 0x43, 0x6f, 0x70, 0x79, 0x53, 0x6e, 0x69, 0x64, 0x18, 0x17, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x43, 0x6f, 0x70, 0x79, 0x53, 0x6e, 0x69, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x43, 0x6f, 0x70, 0x79, 0x52, 0x6f, 0x6c, 0x65, 0x49, 0x64, 0x18, 0x18, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x43, 0x6f, 0x70, 0x79, 0x52, 0x6f, 0x6c, 0x65, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x52, 0x61, 0x6e, 0x6b, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x19, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x52, 0x61, 0x6e, 0x6b, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x54, 0x68, 0x69, 0x6e, 0x6b, 0x4c, 0x6f, 0x6e, 0x67, 0x43, 0x6e, 0x74, 0x18, 0x1a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x54, 0x68, 0x69, 0x6e, 0x6b, 0x4c, 0x6f, 0x6e, 0x67, 0x43, 0x6e, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x1b, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x10, 0x0a, 0x03, 0x45, 0x78, 0x70, 0x18, 0x1c, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x45, 0x78, 0x70, 0x12, 0x20, 0x0a, 0x0b, 0x50, 0x69, 0x67, 0x42, 0x61, 0x6e, 0x6b, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x1d, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x50, 0x69, 0x67, 0x42, 0x61, 0x6e, 0x6b, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x33, 0x0a, 0x09, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x1e, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x74, 0x69, 0x65, 0x6e, 0x6c, 0x65, 0x6e, 0x2e, 0x50, 0x65, 0x74, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x09, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x16, 0x0a, 0x06, 0x53, 0x6b, 0x69, 0x6e, 0x49, 0x64, 0x18, 0x1f, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x53, 0x6b, 0x69, 0x6e, 0x49, 0x64, 0x1a, 0x38, 0x0a, 0x0a, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x56, 0x0a, 0x0c, 0x50, 0x65, 0x74, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x14, 0x0a, 0x05, 0x50, 0x65, 0x74, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x50, 0x65, 0x74, 0x49, 0x64, 0x12, 0x30, 0x0a, 0x09, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x44, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x74, 0x69, 0x65, 0x6e, 0x6c, 0x65, 0x6e, 0x2e, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x09, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x44, 0x61, 0x74, 0x61, 0x22, 0x45, 0x0a, 0x09, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x18, 0x0a, 0x07, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x22, 0x23, 0x0a, 0x0b, 0x4c, 0x61, 0x73, 0x74, 0x44, 0x65, 0x6c, 0x43, 0x61, 0x72, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x43, 0x61, 0x72, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x05, 0x52, 0x05, 0x43, 0x61, 0x72, 0x64, 0x73, 0x22, 0xfd, 0x08, 0x0a, 0x11, 0x53, 0x43, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x43, 0x72, 0x65, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x43, 0x72, 0x65, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x52, 0x6f, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x52, 0x6f, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x05, 0x52, 0x06, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x42, 0x61, 0x6e, 0x6b, 0x65, 0x72, 0x50, 0x6f, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x42, 0x61, 0x6e, 0x6b, 0x65, 0x72, 0x50, 0x6f, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x53, 0x74, 0x61, 0x74, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x54, 0x69, 0x6d, 0x65, 0x4f, 0x75, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x54, 0x69, 0x6d, 0x65, 0x4f, 0x75, 0x74, 0x12, 0x34, 0x0a, 0x07, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x74, 0x69, 0x65, 0x6e, 0x6c, 0x65, 0x6e, 0x2e, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x52, 0x07, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x41, 0x75, 0x64, 0x69, 0x65, 0x6e, 0x63, 0x65, 0x4e, 0x75, 0x6d, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x41, 0x75, 0x64, 0x69, 0x65, 0x6e, 0x63, 0x65, 0x4e, 0x75, 0x6d, 0x12, 0x1a, 0x0a, 0x08, 0x43, 0x75, 0x72, 0x4f, 0x70, 0x49, 0x64, 0x78, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x43, 0x75, 0x72, 0x4f, 0x70, 0x49, 0x64, 0x78, 0x12, 0x38, 0x0a, 0x0c, 0x4c, 0x61, 0x73, 0x74, 0x44, 0x65, 0x6c, 0x43, 0x61, 0x72, 0x64, 0x73, 0x18, 0x0d, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x74, 0x69, 0x65, 0x6e, 0x6c, 0x65, 0x6e, 0x2e, 0x4c, 0x61, 0x73, 0x74, 0x44, 0x65, 0x6c, 0x43, 0x61, 0x72, 0x64, 0x52, 0x0c, 0x4c, 0x61, 0x73, 0x74, 0x44, 0x65, 0x6c, 0x43, 0x61, 0x72, 0x64, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x4e, 0x75, 0x6d, 0x4f, 0x66, 0x47, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x4e, 0x75, 0x6d, 0x4f, 0x66, 0x47, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x22, 0x0a, 0x0c, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x4f, 0x66, 0x47, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x4f, 0x66, 0x47, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x4d, 0x61, 0x73, 0x74, 0x65, 0x72, 0x53, 0x6e, 0x69, 0x64, 0x18, 0x10, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x4d, 0x61, 0x73, 0x74, 0x65, 0x72, 0x53, 0x6e, 0x69, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x42, 0x61, 0x73, 0x65, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x11, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x42, 0x61, 0x73, 0x65, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x4d, 0x61, 0x78, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4e, 0x75, 0x6d, 0x18, 0x12, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x4d, 0x61, 0x78, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4e, 0x75, 0x6d, 0x12, 0x1a, 0x0a, 0x08, 0x57, 0x69, 0x6e, 0x53, 0x6e, 0x69, 0x64, 0x73, 0x18, 0x13, 0x20, 0x03, 0x28, 0x05, 0x52, 0x08, 0x57, 0x69, 0x6e, 0x53, 0x6e, 0x69, 0x64, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x49, 0x73, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x14, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x49, 0x73, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x12, 0x14, 0x0a, 0x05, 0x52, 0x6f, 0x75, 0x6e, 0x64, 0x18, 0x16, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x52, 0x6f, 0x75, 0x6e, 0x64, 0x12, 0x22, 0x0a, 0x0c, 0x43, 0x75, 0x72, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4e, 0x75, 0x6d, 0x18, 0x18, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x43, 0x75, 0x72, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4e, 0x75, 0x6d, 0x12, 0x1a, 0x0a, 0x08, 0x4e, 0x65, 0x78, 0x74, 0x4e, 0x65, 0x65, 0x64, 0x18, 0x19, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x4e, 0x65, 0x78, 0x74, 0x4e, 0x65, 0x65, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x46, 0x69, 0x6e, 0x61, 0x6c, 0x73, 0x18, 0x1a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x46, 0x69, 0x6e, 0x61, 0x6c, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x52, 0x61, 0x6e, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x18, 0x1b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x52, 0x61, 0x6e, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x41, 0x64, 0x64, 0x18, 0x1c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x41, 0x64, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x49, 0x64, 0x18, 0x1d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x49, 0x64, 0x12, 0x24, 0x0a, 0x0d, 0x4f, 0x75, 0x74, 0x43, 0x61, 0x72, 0x64, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x18, 0x1e, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0d, 0x4f, 0x75, 0x74, 0x43, 0x61, 0x72, 0x64, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x49, 0x73, 0x4f, 0x75, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x18, 0x1f, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x49, 0x73, 0x4f, 0x75, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x12, 0x2c, 0x0a, 0x11, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x65, 0x63, 0x45, 0x78, 0x70, 0x69, 0x72, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x20, 0x20, 0x01, 0x28, 0x03, 0x52, 0x11, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x65, 0x63, 0x45, 0x78, 0x70, 0x69, 0x72, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x54, 0x4d, 0x49, 0x6e, 0x66, 0x6f, 0x49, 0x64, 0x18, 0x21, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x54, 0x4d, 0x49, 0x6e, 0x66, 0x6f, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x52, 0x6f, 0x6f, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x49, 0x64, 0x18, 0x22, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x52, 0x6f, 0x6f, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x49, 0x64, 0x12, 0x22, 0x0a, 0x0c, 0x52, 0x6f, 0x6f, 0x6d, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x49, 0x64, 0x18, 0x23, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x52, 0x6f, 0x6f, 0x6d, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x49, 0x64, 0x12, 0x22, 0x0a, 0x0c, 0x4e, 0x65, 0x65, 0x64, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x24, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x4e, 0x65, 0x65, 0x64, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x43, 0x6f, 0x73, 0x74, 0x54, 0x79, 0x70, 0x65, 0x18, 0x25, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x43, 0x6f, 0x73, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x56, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x26, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x56, 0x6f, 0x69, 0x63, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x27, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x22, 0x42, 0x0a, 0x12, 0x53, 0x43, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x52, 0x6f, 0x6f, 0x6d, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x53, 0x74, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x03, 0x52, 0x06, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x22, 0x45, 0x0a, 0x11, 0x43, 0x53, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4f, 0x70, 0x12, 0x16, 0x0a, 0x06, 0x4f, 0x70, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x4f, 0x70, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x4f, 0x70, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x18, 0x02, 0x20, 0x03, 0x28, 0x03, 0x52, 0x07, 0x4f, 0x70, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x22, 0x8e, 0x01, 0x0a, 0x11, 0x53, 0x43, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4f, 0x70, 0x12, 0x16, 0x0a, 0x06, 0x4f, 0x70, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x4f, 0x70, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x4f, 0x70, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x18, 0x02, 0x20, 0x03, 0x28, 0x03, 0x52, 0x07, 0x4f, 0x70, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x12, 0x33, 0x0a, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x74, 0x69, 0x65, 0x6e, 0x6c, 0x65, 0x6e, 0x2e, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x22, 0x46, 0x0a, 0x14, 0x53, 0x43, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x45, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x2e, 0x0a, 0x04, 0x44, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x74, 0x69, 0x65, 0x6e, 0x6c, 0x65, 0x6e, 0x2e, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x52, 0x04, 0x44, 0x61, 0x74, 0x61, 0x22, 0x28, 0x0a, 0x14, 0x53, 0x43, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4c, 0x65, 0x61, 0x76, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x50, 0x6f, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x50, 0x6f, 0x73, 0x22, 0x6f, 0x0a, 0x07, 0x41, 0x64, 0x64, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x1a, 0x0a, 0x08, 0x49, 0x74, 0x65, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x49, 0x74, 0x65, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x22, 0xb3, 0x02, 0x0a, 0x17, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x47, 0x61, 0x6d, 0x65, 0x42, 0x69, 0x6c, 0x6c, 0x65, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x43, 0x61, 0x72, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x05, 0x52, 0x05, 0x43, 0x61, 0x72, 0x64, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x57, 0x69, 0x6e, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x57, 0x69, 0x6e, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x47, 0x61, 0x6d, 0x65, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x47, 0x61, 0x6d, 0x65, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x49, 0x73, 0x57, 0x69, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x49, 0x73, 0x57, 0x69, 0x6e, 0x12, 0x22, 0x0a, 0x0c, 0x57, 0x69, 0x6e, 0x52, 0x61, 0x6e, 0x6b, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x57, 0x69, 0x6e, 0x52, 0x61, 0x6e, 0x6b, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x52, 0x61, 0x6e, 0x6b, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x52, 0x61, 0x6e, 0x6b, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x41, 0x64, 0x64, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x41, 0x64, 0x64, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x2c, 0x0a, 0x08, 0x41, 0x64, 0x64, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x74, 0x69, 0x65, 0x6e, 0x6c, 0x65, 0x6e, 0x2e, 0x41, 0x64, 0x64, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x08, 0x41, 0x64, 0x64, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x54, 0x69, 0x61, 0x6e, 0x48, 0x75, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x54, 0x69, 0x61, 0x6e, 0x48, 0x75, 0x22, 0x4d, 0x0a, 0x13, 0x53, 0x43, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x47, 0x61, 0x6d, 0x65, 0x42, 0x69, 0x6c, 0x6c, 0x65, 0x64, 0x12, 0x36, 0x0a, 0x05, 0x44, 0x61, 0x74, 0x61, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x74, 0x69, 0x65, 0x6e, 0x6c, 0x65, 0x6e, 0x2e, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x47, 0x61, 0x6d, 0x65, 0x42, 0x69, 0x6c, 0x6c, 0x65, 0x64, 0x52, 0x05, 0x44, 0x61, 0x74, 0x61, 0x73, 0x22, 0xc4, 0x01, 0x0a, 0x18, 0x53, 0x43, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x53, 0x6d, 0x61, 0x6c, 0x6c, 0x47, 0x61, 0x6d, 0x65, 0x42, 0x69, 0x6c, 0x6c, 0x65, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x57, 0x69, 0x6e, 0x50, 0x6f, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x57, 0x69, 0x6e, 0x50, 0x6f, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x57, 0x69, 0x6e, 0x50, 0x6f, 0x73, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x57, 0x69, 0x6e, 0x50, 0x6f, 0x73, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x4c, 0x6f, 0x73, 0x65, 0x50, 0x6f, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x4c, 0x6f, 0x73, 0x65, 0x50, 0x6f, 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x4c, 0x6f, 0x73, 0x65, 0x50, 0x6f, 0x73, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x4c, 0x6f, 0x73, 0x65, 0x50, 0x6f, 0x73, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x57, 0x69, 0x6e, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x57, 0x69, 0x6e, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x4c, 0x6f, 0x73, 0x65, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x4c, 0x6f, 0x73, 0x65, 0x43, 0x6f, 0x69, 0x6e, 0x22, 0x5b, 0x0a, 0x0d, 0x53, 0x43, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x43, 0x61, 0x72, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x43, 0x61, 0x72, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x05, 0x52, 0x05, 0x43, 0x61, 0x72, 0x64, 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x49, 0x73, 0x4f, 0x75, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x49, 0x73, 0x4f, 0x75, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x22, 0x88, 0x02, 0x0a, 0x11, 0x53, 0x43, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x43, 0x61, 0x72, 0x64, 0x54, 0x65, 0x73, 0x74, 0x12, 0x3e, 0x0a, 0x06, 0x47, 0x72, 0x61, 0x64, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x74, 0x69, 0x65, 0x6e, 0x6c, 0x65, 0x6e, 0x2e, 0x53, 0x43, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x43, 0x61, 0x72, 0x64, 0x54, 0x65, 0x73, 0x74, 0x2e, 0x47, 0x72, 0x61, 0x64, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x47, 0x72, 0x61, 0x64, 0x65, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x69, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x69, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x6f, 0x75, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x6f, 0x75, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x4c, 0x6f, 0x73, 0x65, 0x52, 0x61, 0x74, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x01, 0x52, 0x08, 0x4c, 0x6f, 0x73, 0x65, 0x52, 0x61, 0x74, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x44, 0x61, 0x74, 0x61, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x44, 0x61, 0x74, 0x61, 0x1a, 0x39, 0x0a, 0x0b, 0x47, 0x72, 0x61, 0x64, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x7f, 0x0a, 0x11, 0x53, 0x43, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x43, 0x75, 0x72, 0x4f, 0x70, 0x50, 0x6f, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x50, 0x6f, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x50, 0x6f, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x49, 0x73, 0x4e, 0x65, 0x77, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x49, 0x73, 0x4e, 0x65, 0x77, 0x12, 0x14, 0x0a, 0x05, 0x43, 0x61, 0x72, 0x64, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x05, 0x52, 0x05, 0x43, 0x61, 0x72, 0x64, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x45, 0x78, 0x44, 0x65, 0x6c, 0x61, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x45, 0x78, 0x44, 0x65, 0x6c, 0x61, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x66, 0x6c, 0x61, 0x67, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x66, 0x6c, 0x61, 0x67, 0x22, 0x3b, 0x0a, 0x19, 0x53, 0x43, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x73, 0x74, 0x65, 0x72, 0x53, 0x6e, 0x69, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x4d, 0x61, 0x73, 0x74, 0x65, 0x72, 0x53, 0x6e, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x4d, 0x61, 0x73, 0x74, 0x65, 0x72, 0x53, 0x6e, 0x69, 0x64, 0x22, 0x3e, 0x0a, 0x1a, 0x53, 0x43, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x75, 0x64, 0x69, 0x65, 0x6e, 0x63, 0x65, 0x4e, 0x75, 0x6d, 0x12, 0x20, 0x0a, 0x0b, 0x41, 0x75, 0x64, 0x69, 0x65, 0x6e, 0x63, 0x65, 0x4e, 0x75, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x41, 0x75, 0x64, 0x69, 0x65, 0x6e, 0x63, 0x65, 0x4e, 0x75, 0x6d, 0x22, 0xcb, 0x07, 0x0a, 0x0f, 0x53, 0x43, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x41, 0x49, 0x44, 0x61, 0x74, 0x61, 0x12, 0x19, 0x0a, 0x08, 0x42, 0x6f, 0x6d, 0x62, 0x5f, 0x6e, 0x75, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x42, 0x6f, 0x6d, 0x62, 0x4e, 0x75, 0x6d, 0x12, 0x2f, 0x0a, 0x14, 0x43, 0x61, 0x72, 0x64, 0x5f, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x71, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x43, 0x61, 0x72, 0x64, 0x50, 0x6c, 0x61, 0x79, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x71, 0x12, 0x1e, 0x0a, 0x0b, 0x4c, 0x61, 0x73, 0x74, 0x5f, 0x6d, 0x6f, 0x76, 0x65, 0x5f, 0x30, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x4c, 0x61, 0x73, 0x74, 0x4d, 0x6f, 0x76, 0x65, 0x30, 0x12, 0x1e, 0x0a, 0x0b, 0x4c, 0x61, 0x73, 0x74, 0x5f, 0x6d, 0x6f, 0x76, 0x65, 0x5f, 0x31, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x4c, 0x61, 0x73, 0x74, 0x4d, 0x6f, 0x76, 0x65, 0x31, 0x12, 0x1e, 0x0a, 0x0b, 0x4c, 0x61, 0x73, 0x74, 0x5f, 0x6d, 0x6f, 0x76, 0x65, 0x5f, 0x32, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x4c, 0x61, 0x73, 0x74, 0x4d, 0x6f, 0x76, 0x65, 0x32, 0x12, 0x1e, 0x0a, 0x0b, 0x4c, 0x61, 0x73, 0x74, 0x5f, 0x6d, 0x6f, 0x76, 0x65, 0x5f, 0x33, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x4c, 0x61, 0x73, 0x74, 0x4d, 0x6f, 0x76, 0x65, 0x33, 0x12, 0x27, 0x0a, 0x10, 0x4e, 0x75, 0x6d, 0x5f, 0x63, 0x61, 0x72, 0x64, 0x73, 0x5f, 0x6c, 0x65, 0x66, 0x74, 0x5f, 0x30, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x4e, 0x75, 0x6d, 0x43, 0x61, 0x72, 0x64, 0x73, 0x4c, 0x65, 0x66, 0x74, 0x30, 0x12, 0x27, 0x0a, 0x10, 0x4e, 0x75, 0x6d, 0x5f, 0x63, 0x61, 0x72, 0x64, 0x73, 0x5f, 0x6c, 0x65, 0x66, 0x74, 0x5f, 0x31, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x4e, 0x75, 0x6d, 0x43, 0x61, 0x72, 0x64, 0x73, 0x4c, 0x65, 0x66, 0x74, 0x31, 0x12, 0x27, 0x0a, 0x10, 0x4e, 0x75, 0x6d, 0x5f, 0x63, 0x61, 0x72, 0x64, 0x73, 0x5f, 0x6c, 0x65, 0x66, 0x74, 0x5f, 0x32, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x4e, 0x75, 0x6d, 0x43, 0x61, 0x72, 0x64, 0x73, 0x4c, 0x65, 0x66, 0x74, 0x32, 0x12, 0x27, 0x0a, 0x10, 0x4e, 0x75, 0x6d, 0x5f, 0x63, 0x61, 0x72, 0x64, 0x73, 0x5f, 0x6c, 0x65, 0x66, 0x74, 0x5f, 0x33, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x4e, 0x75, 0x6d, 0x43, 0x61, 0x72, 0x64, 0x73, 0x4c, 0x65, 0x66, 0x74, 0x33, 0x12, 0x28, 0x0a, 0x10, 0x4f, 0x74, 0x68, 0x65, 0x72, 0x5f, 0x68, 0x61, 0x6e, 0x64, 0x5f, 0x63, 0x61, 0x72, 0x64, 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x4f, 0x74, 0x68, 0x65, 0x72, 0x48, 0x61, 0x6e, 0x64, 0x43, 0x61, 0x72, 0x64, 0x73, 0x12, 0x24, 0x0a, 0x0e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x64, 0x5f, 0x63, 0x61, 0x72, 0x64, 0x73, 0x5f, 0x30, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x64, 0x43, 0x61, 0x72, 0x64, 0x73, 0x30, 0x12, 0x24, 0x0a, 0x0e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x64, 0x5f, 0x63, 0x61, 0x72, 0x64, 0x73, 0x5f, 0x31, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x64, 0x43, 0x61, 0x72, 0x64, 0x73, 0x31, 0x12, 0x24, 0x0a, 0x0e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x64, 0x5f, 0x63, 0x61, 0x72, 0x64, 0x73, 0x5f, 0x32, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x64, 0x43, 0x61, 0x72, 0x64, 0x73, 0x32, 0x12, 0x24, 0x0a, 0x0e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x64, 0x5f, 0x63, 0x61, 0x72, 0x64, 0x73, 0x5f, 0x33, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x64, 0x43, 0x61, 0x72, 0x64, 0x73, 0x33, 0x12, 0x2a, 0x0a, 0x11, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x5f, 0x68, 0x61, 0x6e, 0x64, 0x5f, 0x63, 0x61, 0x72, 0x64, 0x73, 0x18, 0x10, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x48, 0x61, 0x6e, 0x64, 0x43, 0x61, 0x72, 0x64, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x11, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x24, 0x0a, 0x0d, 0x49, 0x73, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x59, 0x75, 0x6c, 0x65, 0x18, 0x12, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x49, 0x73, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x59, 0x75, 0x6c, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x49, 0x73, 0x46, 0x69, 0x72, 0x73, 0x74, 0x48, 0x61, 0x6e, 0x64, 0x18, 0x13, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x49, 0x73, 0x46, 0x69, 0x72, 0x73, 0x74, 0x48, 0x61, 0x6e, 0x64, 0x12, 0x20, 0x0a, 0x0c, 0x43, 0x61, 0x72, 0x64, 0x73, 0x5f, 0x6c, 0x65, 0x66, 0x74, 0x5f, 0x30, 0x18, 0x14, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0a, 0x43, 0x61, 0x72, 0x64, 0x73, 0x4c, 0x65, 0x66, 0x74, 0x30, 0x12, 0x20, 0x0a, 0x0c, 0x43, 0x61, 0x72, 0x64, 0x73, 0x5f, 0x6c, 0x65, 0x66, 0x74, 0x5f, 0x31, 0x18, 0x15, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0a, 0x43, 0x61, 0x72, 0x64, 0x73, 0x4c, 0x65, 0x66, 0x74, 0x31, 0x12, 0x20, 0x0a, 0x0c, 0x43, 0x61, 0x72, 0x64, 0x73, 0x5f, 0x6c, 0x65, 0x66, 0x74, 0x5f, 0x32, 0x18, 0x16, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0a, 0x43, 0x61, 0x72, 0x64, 0x73, 0x4c, 0x65, 0x66, 0x74, 0x32, 0x12, 0x20, 0x0a, 0x0c, 0x43, 0x61, 0x72, 0x64, 0x73, 0x5f, 0x6c, 0x65, 0x66, 0x74, 0x5f, 0x33, 0x18, 0x17, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0a, 0x43, 0x61, 0x72, 0x64, 0x73, 0x4c, 0x65, 0x66, 0x74, 0x33, 0x12, 0x19, 0x0a, 0x08, 0x4c, 0x61, 0x73, 0x74, 0x5f, 0x70, 0x6f, 0x73, 0x18, 0x18, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x4c, 0x61, 0x73, 0x74, 0x50, 0x6f, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x49, 0x73, 0x45, 0x6e, 0x64, 0x18, 0x19, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x49, 0x73, 0x45, 0x6e, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x57, 0x69, 0x6e, 0x53, 0x6e, 0x69, 0x64, 0x73, 0x18, 0x1a, 0x20, 0x03, 0x28, 0x05, 0x52, 0x08, 0x57, 0x69, 0x6e, 0x53, 0x6e, 0x69, 0x64, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x49, 0x73, 0x57, 0x69, 0x6e, 0x18, 0x1b, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x49, 0x73, 0x57, 0x69, 0x6e, 0x22, 0x27, 0x0a, 0x13, 0x53, 0x43, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x46, 0x69, 0x72, 0x73, 0x74, 0x4f, 0x70, 0x50, 0x6f, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x50, 0x6f, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x50, 0x6f, 0x73, 0x22, 0x41, 0x0a, 0x1b, 0x53, 0x43, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x54, 0x68, 0x69, 0x6e, 0x6b, 0x4c, 0x6f, 0x6e, 0x67, 0x43, 0x6e, 0x74, 0x12, 0x22, 0x0a, 0x0c, 0x54, 0x68, 0x69, 0x6e, 0x6b, 0x4c, 0x6f, 0x6e, 0x67, 0x43, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x54, 0x68, 0x69, 0x6e, 0x6b, 0x4c, 0x6f, 0x6e, 0x67, 0x43, 0x6e, 0x74, 0x22, 0x68, 0x0a, 0x20, 0x53, 0x43, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x46, 0x69, 0x72, 0x73, 0x74, 0x47, 0x69, 0x76, 0x65, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x16, 0x0a, 0x06, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x12, 0x2c, 0x0a, 0x11, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x65, 0x63, 0x45, 0x78, 0x70, 0x69, 0x72, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x11, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x65, 0x63, 0x45, 0x78, 0x70, 0x69, 0x72, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x22, 0x5e, 0x0a, 0x14, 0x53, 0x43, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x50, 0x65, 0x74, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x52, 0x65, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6e, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e, 0x69, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x50, 0x6f, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x50, 0x6f, 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x50, 0x65, 0x74, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x52, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x50, 0x65, 0x74, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x52, 0x65, 0x73, 0x22, 0x2c, 0x0a, 0x08, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x4e, 0x75, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x4e, 0x75, 0x6d, 0x22, 0xab, 0x01, 0x0a, 0x16, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x43, 0x79, 0x63, 0x6c, 0x65, 0x42, 0x69, 0x6c, 0x6c, 0x65, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x52, 0x6f, 0x75, 0x6e, 0x64, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x02, 0x20, 0x03, 0x28, 0x03, 0x52, 0x0a, 0x52, 0x6f, 0x75, 0x6e, 0x64, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x27, 0x0a, 0x05, 0x41, 0x77, 0x61, 0x72, 0x64, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x74, 0x69, 0x65, 0x6e, 0x6c, 0x65, 0x6e, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x41, 0x77, 0x61, 0x72, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x22, 0x4b, 0x0a, 0x14, 0x53, 0x43, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x43, 0x79, 0x63, 0x6c, 0x65, 0x42, 0x69, 0x6c, 0x6c, 0x65, 0x64, 0x12, 0x33, 0x0a, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x74, 0x69, 0x65, 0x6e, 0x6c, 0x65, 0x6e, 0x2e, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x43, 0x79, 0x63, 0x6c, 0x65, 0x42, 0x69, 0x6c, 0x6c, 0x65, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x2a, 0x3e, 0x0a, 0x0c, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x0f, 0x0a, 0x0b, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x53, 0x75, 0x63, 0x65, 0x73, 0x73, 0x10, 0x00, 0x12, 0x0e, 0x0a, 0x0a, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x10, 0x01, 0x12, 0x0d, 0x0a, 0x09, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x48, 0x69, 0x6e, 0x74, 0x10, 0x02, 0x2a, 0xa2, 0x05, 0x0a, 0x0f, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x49, 0x44, 0x12, 0x16, 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x5a, 0x45, 0x52, 0x4f, 0x10, 0x00, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x10, 0xfa, 0x29, 0x12, 0x1e, 0x0a, 0x19, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x52, 0x6f, 0x6f, 0x6d, 0x53, 0x74, 0x61, 0x74, 0x65, 0x10, 0xfb, 0x29, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4f, 0x70, 0x10, 0xfc, 0x29, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4f, 0x70, 0x10, 0xfd, 0x29, 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x45, 0x6e, 0x74, 0x65, 0x72, 0x10, 0xfe, 0x29, 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4c, 0x65, 0x61, 0x76, 0x65, 0x10, 0xff, 0x29, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x43, 0x61, 0x72, 0x64, 0x10, 0x80, 0x2a, 0x12, 0x1f, 0x0a, 0x1a, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x47, 0x61, 0x6d, 0x65, 0x42, 0x69, 0x6c, 0x6c, 0x65, 0x64, 0x10, 0x81, 0x2a, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x43, 0x75, 0x72, 0x4f, 0x70, 0x50, 0x6f, 0x73, 0x10, 0x82, 0x2a, 0x12, 0x24, 0x0a, 0x1f, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x53, 0x6d, 0x61, 0x6c, 0x6c, 0x47, 0x61, 0x6d, 0x65, 0x42, 0x69, 0x6c, 0x6c, 0x65, 0x64, 0x10, 0x83, 0x2a, 0x12, 0x25, 0x0a, 0x20, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x73, 0x74, 0x65, 0x72, 0x53, 0x6e, 0x69, 0x64, 0x10, 0x84, 0x2a, 0x12, 0x26, 0x0a, 0x21, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x75, 0x64, 0x69, 0x65, 0x6e, 0x63, 0x65, 0x4e, 0x75, 0x6d, 0x10, 0x85, 0x2a, 0x12, 0x17, 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x41, 0x49, 0x10, 0x86, 0x2a, 0x12, 0x1f, 0x0a, 0x1a, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x46, 0x69, 0x72, 0x73, 0x74, 0x4f, 0x70, 0x50, 0x6f, 0x73, 0x10, 0x87, 0x2a, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x43, 0x61, 0x72, 0x64, 0x54, 0x65, 0x73, 0x74, 0x10, 0x88, 0x2a, 0x12, 0x21, 0x0a, 0x1c, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x54, 0x68, 0x69, 0x6e, 0x6b, 0x4c, 0x6f, 0x6e, 0x67, 0x43, 0x6e, 0x74, 0x10, 0x89, 0x2a, 0x12, 0x26, 0x0a, 0x21, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x46, 0x69, 0x72, 0x73, 0x74, 0x47, 0x69, 0x76, 0x65, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x74, 0x65, 0x6d, 0x10, 0x8a, 0x2a, 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x50, 0x65, 0x74, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x52, 0x65, 0x73, 0x10, 0x8b, 0x2a, 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x43, 0x79, 0x63, 0x6c, 0x65, 0x42, 0x69, 0x6c, 0x6c, 0x65, 0x64, 0x10, 0x8c, 0x2a, 0x42, 0x27, 0x5a, 0x25, 0x6d, 0x6f, 0x6e, 0x67, 0x6f, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x61, 0x6d, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2f, 0x74, 0x69, 0x65, 0x6e, 0x6c, 0x65, 0x6e, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( file_protocol_tienlen_tienlen_proto_rawDescOnce sync.Once file_protocol_tienlen_tienlen_proto_rawDescData = file_protocol_tienlen_tienlen_proto_rawDesc ) func file_protocol_tienlen_tienlen_proto_rawDescGZIP() []byte { file_protocol_tienlen_tienlen_proto_rawDescOnce.Do(func() { file_protocol_tienlen_tienlen_proto_rawDescData = protoimpl.X.CompressGZIP(file_protocol_tienlen_tienlen_proto_rawDescData) }) return file_protocol_tienlen_tienlen_proto_rawDescData } var file_protocol_tienlen_tienlen_proto_enumTypes = make([]protoimpl.EnumInfo, 2) var file_protocol_tienlen_tienlen_proto_msgTypes = make([]protoimpl.MessageInfo, 29) var file_protocol_tienlen_tienlen_proto_goTypes = []interface{}{ (OpResultCode)(0), // 0: tienlen.OpResultCode (TienLenPacketID)(0), // 1: tienlen.TienLenPacketID (*TienLenPlayerData)(nil), // 2: tienlen.TienLenPlayerData (*PetSkillInfo)(nil), // 3: tienlen.PetSkillInfo (*SkillInfo)(nil), // 4: tienlen.SkillInfo (*LastDelCard)(nil), // 5: tienlen.LastDelCard (*SCTienLenRoomInfo)(nil), // 6: tienlen.SCTienLenRoomInfo (*SCTienLenRoomState)(nil), // 7: tienlen.SCTienLenRoomState (*CSTienLenPlayerOp)(nil), // 8: tienlen.CSTienLenPlayerOp (*SCTienLenPlayerOp)(nil), // 9: tienlen.SCTienLenPlayerOp (*SCTienLenPlayerEnter)(nil), // 10: tienlen.SCTienLenPlayerEnter (*SCTienLenPlayerLeave)(nil), // 11: tienlen.SCTienLenPlayerLeave (*AddItem)(nil), // 12: tienlen.AddItem (*TienLenPlayerGameBilled)(nil), // 13: tienlen.TienLenPlayerGameBilled (*SCTienLenGameBilled)(nil), // 14: tienlen.SCTienLenGameBilled (*SCTienLenSmallGameBilled)(nil), // 15: tienlen.SCTienLenSmallGameBilled (*SCTienLenCard)(nil), // 16: tienlen.SCTienLenCard (*SCTienLenCardTest)(nil), // 17: tienlen.SCTienLenCardTest (*SCTienLenCurOpPos)(nil), // 18: tienlen.SCTienLenCurOpPos (*SCTienLenUpdateMasterSnid)(nil), // 19: tienlen.SCTienLenUpdateMasterSnid (*SCTienLenUpdateAudienceNum)(nil), // 20: tienlen.SCTienLenUpdateAudienceNum (*SCTienLenAIData)(nil), // 21: tienlen.SCTienLenAIData (*SCTienLenFirstOpPos)(nil), // 22: tienlen.SCTienLenFirstOpPos (*SCTienLenPlayerThinkLongCnt)(nil), // 23: tienlen.SCTienLenPlayerThinkLongCnt (*SCTienLenPlayerFirstGiveItemItem)(nil), // 24: tienlen.SCTienLenPlayerFirstGiveItemItem (*SCTienLenPetSkillRes)(nil), // 25: tienlen.SCTienLenPetSkillRes (*ItemInfo)(nil), // 26: tienlen.ItemInfo (*TienLenCycleBilledInfo)(nil), // 27: tienlen.TienLenCycleBilledInfo (*SCTienLenCycleBilled)(nil), // 28: tienlen.SCTienLenCycleBilled nil, // 29: tienlen.TienLenPlayerData.ItemsEntry nil, // 30: tienlen.SCTienLenCardTest.GradesEntry } var file_protocol_tienlen_tienlen_proto_depIdxs = []int32{ 29, // 0: tienlen.TienLenPlayerData.Items:type_name -> tienlen.TienLenPlayerData.ItemsEntry 3, // 1: tienlen.TienLenPlayerData.SkillInfo:type_name -> tienlen.PetSkillInfo 4, // 2: tienlen.PetSkillInfo.SkillData:type_name -> tienlen.SkillInfo 2, // 3: tienlen.SCTienLenRoomInfo.Players:type_name -> tienlen.TienLenPlayerData 5, // 4: tienlen.SCTienLenRoomInfo.LastDelCards:type_name -> tienlen.LastDelCard 0, // 5: tienlen.SCTienLenPlayerOp.OpRetCode:type_name -> tienlen.OpResultCode 2, // 6: tienlen.SCTienLenPlayerEnter.Data:type_name -> tienlen.TienLenPlayerData 12, // 7: tienlen.TienLenPlayerGameBilled.AddItems:type_name -> tienlen.AddItem 13, // 8: tienlen.SCTienLenGameBilled.Datas:type_name -> tienlen.TienLenPlayerGameBilled 30, // 9: tienlen.SCTienLenCardTest.Grades:type_name -> tienlen.SCTienLenCardTest.GradesEntry 26, // 10: tienlen.TienLenCycleBilledInfo.Award:type_name -> tienlen.ItemInfo 27, // 11: tienlen.SCTienLenCycleBilled.List:type_name -> tienlen.TienLenCycleBilledInfo 12, // [12:12] is the sub-list for method output_type 12, // [12:12] is the sub-list for method input_type 12, // [12:12] is the sub-list for extension type_name 12, // [12:12] is the sub-list for extension extendee 0, // [0:12] is the sub-list for field type_name } func init() { file_protocol_tienlen_tienlen_proto_init() } func file_protocol_tienlen_tienlen_proto_init() { if File_protocol_tienlen_tienlen_proto != nil { return } if !protoimpl.UnsafeEnabled { file_protocol_tienlen_tienlen_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*TienLenPlayerData); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_protocol_tienlen_tienlen_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*PetSkillInfo); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_protocol_tienlen_tienlen_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SkillInfo); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_protocol_tienlen_tienlen_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*LastDelCard); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_protocol_tienlen_tienlen_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SCTienLenRoomInfo); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_protocol_tienlen_tienlen_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SCTienLenRoomState); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_protocol_tienlen_tienlen_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CSTienLenPlayerOp); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_protocol_tienlen_tienlen_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SCTienLenPlayerOp); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_protocol_tienlen_tienlen_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SCTienLenPlayerEnter); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_protocol_tienlen_tienlen_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SCTienLenPlayerLeave); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_protocol_tienlen_tienlen_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*AddItem); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_protocol_tienlen_tienlen_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*TienLenPlayerGameBilled); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_protocol_tienlen_tienlen_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SCTienLenGameBilled); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_protocol_tienlen_tienlen_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SCTienLenSmallGameBilled); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_protocol_tienlen_tienlen_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SCTienLenCard); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_protocol_tienlen_tienlen_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SCTienLenCardTest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_protocol_tienlen_tienlen_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SCTienLenCurOpPos); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_protocol_tienlen_tienlen_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SCTienLenUpdateMasterSnid); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_protocol_tienlen_tienlen_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SCTienLenUpdateAudienceNum); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_protocol_tienlen_tienlen_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SCTienLenAIData); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_protocol_tienlen_tienlen_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SCTienLenFirstOpPos); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_protocol_tienlen_tienlen_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SCTienLenPlayerThinkLongCnt); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_protocol_tienlen_tienlen_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SCTienLenPlayerFirstGiveItemItem); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_protocol_tienlen_tienlen_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SCTienLenPetSkillRes); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_protocol_tienlen_tienlen_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ItemInfo); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_protocol_tienlen_tienlen_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*TienLenCycleBilledInfo); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_protocol_tienlen_tienlen_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SCTienLenCycleBilled); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_protocol_tienlen_tienlen_proto_rawDesc, NumEnums: 2, NumMessages: 29, NumExtensions: 0, NumServices: 0, }, GoTypes: file_protocol_tienlen_tienlen_proto_goTypes, DependencyIndexes: file_protocol_tienlen_tienlen_proto_depIdxs, EnumInfos: file_protocol_tienlen_tienlen_proto_enumTypes, MessageInfos: file_protocol_tienlen_tienlen_proto_msgTypes, }.Build() File_protocol_tienlen_tienlen_proto = out.File file_protocol_tienlen_tienlen_proto_rawDesc = nil file_protocol_tienlen_tienlen_proto_goTypes = nil file_protocol_tienlen_tienlen_proto_depIdxs = nil }