diff --git a/common/constant.go b/common/constant.go index 7da0e49..9ab1bd8 100644 --- a/common/constant.go +++ b/common/constant.go @@ -314,6 +314,7 @@ const ( GainWay_Interact = 63 //63.房间内互动效果 GainWay_Collect = 64 //64.集卡活动 GainWay_WeekCardAward = 65 //65.周卡每日奖励 + GainWay_PigrankTakeCoin = 66 //66.存钱罐领取耗费钻石 ) // 后台选择 金币变化类型 的充值 类型id号起始 @@ -605,18 +606,18 @@ const ( // 道具ID const ( - ItemIDCoin = 100001 // 金币对应的itemId - ItemIDDiamond = 100002 // 钻石对应的itemId - ItemIDMoneyPond = 100003 // 玩家金币池对应物品Id - ItemIDVipExp = 100005 // VIP经验对应的物品Id - ItemIDPhoneScore = 100006 // 手机抽奖积分 - ItemIDWeekScore = 100004 // 周活跃积分 - ItemIDGiftBox = 50001 // 碎片礼盒 - ItemIDCollectBox = 50002 // 集卡礼盒 - ItemIDLike = 100007 // 点赞 - ItemIDCoffee = 100008 // 咖啡 - ItemIDBucket = 100009 // 水桶 - ItemIDSlippers = 100010 // 拖鞋 + ItemIDCoin = 100001 // 金币对应的itemId + ItemIDDiamond = 100002 // 钻石对应的itemId + ItemIDMoneyPond = 100003 // 玩家金币池对应物品Id + ItemIDVipExp = 100005 // VIP经验对应的物品Id + ItemIDPhoneScore = 100006 // 手机抽奖积分 + ItemIDWeekScore = 100004 // 周活跃积分 + ItemIDGiftBox = 50001 // 碎片礼盒 + ItemIDCollectBox = 50002 // 集卡礼盒 + ItemIDLike = 100007 // 点赞 + ItemIDCoffee = 100008 // 咖啡 + ItemIDBucket = 100009 // 水桶 + ItemIDSlippers = 100010 // 拖鞋 ItemTienlenRecord = 60001 // tienlen记牌器 ) diff --git a/data/DB_Pigbank_Prop.dat b/data/DB_Pigbank_Prop.dat index 608885b..3e9c7d1 100644 --- a/data/DB_Pigbank_Prop.dat +++ b/data/DB_Pigbank_Prop.dat @@ -1,4 +1,4 @@ - BankMaxCoin - WinCointRate + BankMaxCoinÓ + WinCoinRate  LoseCoinRate diff --git a/data/DB_Pigbank_Prop.json b/data/DB_Pigbank_Prop.json index 58ad0ed..dc77318 100644 --- a/data/DB_Pigbank_Prop.json +++ b/data/DB_Pigbank_Prop.json @@ -3,11 +3,11 @@ { "Id": 1, "PorpName": "BankMaxCoin", - "PropValue": 150000 + "PropValue": 15000000 }, { "Id": 2, - "PorpName": "WinCointRate", + "PorpName": "WinCoinRate", "PropValue": 5 }, { diff --git a/gamesrv/tienlen/playerdata_tienlen.go b/gamesrv/tienlen/playerdata_tienlen.go index f9f75b9..e7c26ac 100644 --- a/gamesrv/tienlen/playerdata_tienlen.go +++ b/gamesrv/tienlen/playerdata_tienlen.go @@ -1,8 +1,10 @@ package tienlen import ( + "math" "math/rand" "mongo.games.com/game/common" + "mongo.games.com/game/protocol/player" "strconv" "time" @@ -225,3 +227,55 @@ func (this *TienLenPlayerData) CanUseRecordItem() bool { return false } + +// 更新玩家存钱罐 +func (this *TienLenPlayerData) UpdatePigbankCoin(gainTexCoin int64) { + if this.IsRobot() { + return + } + + if this.PlayerData.WelfData == nil || this.PlayerData.WelfData.PigBank == nil { + return + } + + fGetPropValue := func(propName string) int64 { + pool := srvdata.PBDB_Pigbank_PropMgr.Datas.GetArr() + for _, PropItem := range pool { + if PropItem.PorpName == propName { + return int64(PropItem.PropValue) + } + } + return 0 + } + + BankCoinMax := fGetPropValue("BankMaxCoin") + + pack := &player.SCPigBankCoin{} + + if gainTexCoin < 0 { + LoseCoinRate := fGetPropValue("LoseCoinRate") + + pack.AddBankCoin = int64(math.Ceil(float64(gainTexCoin) * float64(LoseCoinRate) / 100.0)) + this.WelfData.PigBank.BankCoin += pack.AddBankCoin + if this.WelfData.PigBank.BankCoin < 0 { + this.WelfData.PigBank.BankCoin = 0 + } + } + + if gainTexCoin > 0 { + WinCoinRate := fGetPropValue("WinCoinRate") + + pack.AddBankCoin = int64(math.Ceil(float64(gainTexCoin) * float64(WinCoinRate) / 100.0)) + this.WelfData.PigBank.BankCoin += pack.AddBankCoin + if this.WelfData.PigBank.BankCoin > BankCoinMax { + this.WelfData.PigBank.BankCoin = BankCoinMax + } + } + + pack.BankCoinMax = BankCoinMax + pack.BankCoin = this.WelfData.PigBank.BankCoin + + proto.SetDefaults(pack) + + this.SendToClient(int(player.PlayerPacketID_PACKET_SCPigBankCoin), pack) +} diff --git a/gamesrv/tienlen/scenepolicy_tienlen.go b/gamesrv/tienlen/scenepolicy_tienlen.go index 7cb8648..00f0e35 100644 --- a/gamesrv/tienlen/scenepolicy_tienlen.go +++ b/gamesrv/tienlen/scenepolicy_tienlen.go @@ -384,6 +384,10 @@ func TienLenCreatePlayerData(p *base.Player, rankScore int64) *tienlen.TienLenPl if len(p.MatchParams) > 1 { pd.Lv = p.MatchParams[1] } + if p.WelfData != nil && p.WelfData.PigBank != nil { + pd.PigBankCoin = p.WelfData.PigBank.BankCoin + } + logger.Logger.Trace("TienLenCreatePlayerData pd : ", pd) return pd @@ -2575,6 +2579,12 @@ func (this *SceneBilledStateTienLen) OnEnter(s *base.Scene) { totalout += (o_player.BombCoin + o_player.BombTaxCoin) } + // 刷新存钱罐 + playerEx, _ := s.GetPlayer(o_player.UserId).GetExtraData().(*TienLenPlayerData) + if playerEx != nil && (s.IsRankMatch() || s.IsCoinScene()) { + playerEx.UpdatePigbankCoin(o_player.GainTaxCoin) + } + validFlow := totalin + totalout validBet := common.AbsI64(totalin - totalout) sceneEx.SaveFriendRecord(o_player.UserId, o_player.IsWin, o_player.BillCoin, sceneEx.GetBaseScore()) diff --git a/model/player.go b/model/player.go index f0fd117..f899d8c 100644 --- a/model/player.go +++ b/model/player.go @@ -472,6 +472,11 @@ type TaskData struct { Ts int64 // 任务完成时间戳 } +type PigBankData struct { + TakeTimes int32 + BankCoin int64 +} + type WelfareData struct { ReliefFundTimes int32 //救济金领取次数 Sign7 *NewSignData //七日签到 @@ -484,6 +489,7 @@ type WelfareData struct { VIPBag map[int32]map[int32]int32 //VIP充值礼包 key1-vipLevel key2 - shopId value- shopType (每日礼包 shopId的写死为0 value = 1) Task map[int32]*TaskData // 任务 PhoneLotteryTask map[int32]*TaskData // 抽手机任务 + PigBank *PigBankData // 存钱罐 } func NewWelfareData() *WelfareData { @@ -492,6 +498,7 @@ func NewWelfareData() *WelfareData { VIPBag: make(map[int32]map[int32]int32), Task: make(map[int32]*TaskData), PhoneLotteryTask: make(map[int32]*TaskData), + PigBank: &PigBankData{}, } } diff --git a/protocol/bag/bag.pb.go b/protocol/bag/bag.pb.go index f6b1dff..a1e8637 100644 --- a/protocol/bag/bag.pb.go +++ b/protocol/bag/bag.pb.go @@ -20,7 +20,7 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) -// 操作结果 +//操作结果 type OpResultCode int32 const ( @@ -145,7 +145,7 @@ func (SPacketID) EnumDescriptor() ([]byte, []int) { return file_bag_proto_rawDescGZIP(), []int{1} } -// 物品信息 后续精简 +//物品信息 后续精简 type ItemInfo struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -231,7 +231,7 @@ func (x *ItemInfo) GetExpireTime() int64 { return 0 } -// PACKET_ALL_BAG_INFO +//PACKET_ALL_BAG_INFO type CSBagInfo struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -287,7 +287,7 @@ func (x *CSBagInfo) GetTp() int32 { return 0 } -// PACKET_ALL_BAG_INFO +//PACKET_ALL_BAG_INFO type SCBagInfo struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -351,7 +351,7 @@ func (x *SCBagInfo) GetBagNumMax() int32 { return 0 } -// PACKET_ALL_BAG_USE +//PACKET_ALL_BAG_USE type CSUpBagInfo struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -439,7 +439,7 @@ func (x *CSUpBagInfo) GetShowId() int64 { return 0 } -// PACKET_ALL_BAG_USE +//PACKET_ALL_BAG_USE type SCUpBagInfo struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -529,7 +529,7 @@ func (x *SCUpBagInfo) GetInfos() []*ItemInfo { return nil } -// PACKET_SC_SYNCBAGDATA +//PACKET_SC_SYNCBAGDATA type SCSyncBagData struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache diff --git a/protocol/player/player.pb.go b/protocol/player/player.pb.go index 4f30323..47cfe6b 100644 --- a/protocol/player/player.pb.go +++ b/protocol/player/player.pb.go @@ -374,6 +374,7 @@ const ( PlayerPacketID_PACKET_CSADV PlayerPacketID = 2821 // 看广告 PlayerPacketID_PACKET_SCADV PlayerPacketID = 2822 // 看广告 PlayerPacketID_PACKET_SCGetWeekCardAwary PlayerPacketID = 2823 //领取周卡每日奖励返回 + PlayerPacketID_PACKET_SCPigBankCoin PlayerPacketID = 2824 //存钱罐金币数量 ) // Enum value maps for PlayerPacketID. @@ -501,6 +502,7 @@ var ( 2821: "PACKET_CSADV", 2822: "PACKET_SCADV", 2823: "PACKET_SCGetWeekCardAwary", + 2824: "PACKET_SCPigBankCoin", } PlayerPacketID_value = map[string]int32{ "PACKET_PLAYERPACKET_ZERO": 0, @@ -625,6 +627,7 @@ var ( "PACKET_CSADV": 2821, "PACKET_SCADV": 2822, "PACKET_SCGetWeekCardAwary": 2823, + "PACKET_SCPigBankCoin": 2824, } ) @@ -9321,6 +9324,71 @@ func (x *SCGetWeekCardAwary) GetWeekCard() *WeekInfo { return nil } +//存钱罐金币数量 +// PACKET_SCPigBankCoin +type SCPigBankCoin struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + BankCoin int64 `protobuf:"varint,1,opt,name=BankCoin,proto3" json:"BankCoin,omitempty"` + BankCoinMax int64 `protobuf:"varint,2,opt,name=BankCoinMax,proto3" json:"BankCoinMax,omitempty"` + AddBankCoin int64 `protobuf:"varint,3,opt,name=AddBankCoin,proto3" json:"AddBankCoin,omitempty"` +} + +func (x *SCPigBankCoin) Reset() { + *x = SCPigBankCoin{} + if protoimpl.UnsafeEnabled { + mi := &file_player_proto_msgTypes[131] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SCPigBankCoin) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SCPigBankCoin) ProtoMessage() {} + +func (x *SCPigBankCoin) ProtoReflect() protoreflect.Message { + mi := &file_player_proto_msgTypes[131] + 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 SCPigBankCoin.ProtoReflect.Descriptor instead. +func (*SCPigBankCoin) Descriptor() ([]byte, []int) { + return file_player_proto_rawDescGZIP(), []int{131} +} + +func (x *SCPigBankCoin) GetBankCoin() int64 { + if x != nil { + return x.BankCoin + } + return 0 +} + +func (x *SCPigBankCoin) GetBankCoinMax() int64 { + if x != nil { + return x.BankCoinMax + } + return 0 +} + +func (x *SCPigBankCoin) GetAddBankCoin() int64 { + if x != nil { + return x.AddBankCoin + } + return 0 +} + var File_player_proto protoreflect.FileDescriptor var file_player_proto_rawDesc = []byte{ @@ -10274,344 +10342,353 @@ var file_player_proto_rawDesc = []byte{ 0x77, 0x65, 0x65, 0x6b, 0x43, 0x61, 0x72, 0x64, 0x41, 0x77, 0x61, 0x72, 0x64, 0x12, 0x2c, 0x0a, 0x08, 0x57, 0x65, 0x65, 0x6b, 0x43, 0x61, 0x72, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x2e, 0x57, 0x65, 0x65, 0x6b, 0x49, 0x6e, 0x66, - 0x6f, 0x52, 0x08, 0x57, 0x65, 0x65, 0x6b, 0x43, 0x61, 0x72, 0x64, 0x2a, 0xef, 0x0d, 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, 0x15, 0x0a, - 0x10, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x46, 0x61, 0x69, 0x6c, 0x65, - 0x64, 0x10, 0xe8, 0x07, 0x12, 0x18, 0x0a, 0x13, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x4c, 0x6f, 0x67, - 0x69, 0x6e, 0x5f, 0x4e, 0x61, 0x6d, 0x65, 0x53, 0x61, 0x6d, 0x65, 0x10, 0xef, 0x07, 0x12, 0x1c, - 0x0a, 0x17, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x5f, 0x43, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x10, 0xf1, 0x07, 0x12, 0x12, 0x0a, 0x0d, - 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x4e, 0x6f, 0x74, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x10, 0xf5, 0x07, - 0x12, 0x19, 0x0a, 0x14, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x59, 0x6f, 0x75, 0x72, 0x52, 0x65, 0x73, - 0x56, 0x65, 0x72, 0x49, 0x73, 0x4c, 0x6f, 0x77, 0x10, 0x94, 0x08, 0x12, 0x19, 0x0a, 0x14, 0x4f, - 0x50, 0x52, 0x43, 0x5f, 0x59, 0x6f, 0x75, 0x72, 0x41, 0x70, 0x70, 0x56, 0x65, 0x72, 0x49, 0x73, - 0x4c, 0x6f, 0x77, 0x10, 0x95, 0x08, 0x12, 0x17, 0x0a, 0x12, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x43, - 0x6f, 0x69, 0x6e, 0x4e, 0x6f, 0x74, 0x45, 0x6e, 0x6f, 0x75, 0x67, 0x68, 0x10, 0xa0, 0x08, 0x12, - 0x14, 0x0a, 0x0f, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x4e, 0x69, 0x63, 0x6b, 0x49, 0x73, 0x4e, 0x75, - 0x6c, 0x6c, 0x10, 0xa4, 0x08, 0x12, 0x15, 0x0a, 0x10, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x4e, 0x69, - 0x63, 0x6b, 0x49, 0x73, 0x45, 0x78, 0x69, 0x73, 0x74, 0x10, 0xa5, 0x08, 0x12, 0x14, 0x0a, 0x0f, - 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x46, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x74, 0x6c, 0x79, 0x10, - 0xa6, 0x08, 0x12, 0x13, 0x0a, 0x0e, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x49, 0x63, 0x6f, 0x6e, 0x45, - 0x72, 0x72, 0x6f, 0x72, 0x10, 0xa7, 0x08, 0x12, 0x12, 0x0a, 0x0d, 0x4f, 0x50, 0x52, 0x43, 0x5f, - 0x53, 0x65, 0x78, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x10, 0xa8, 0x08, 0x12, 0x12, 0x0a, 0x0d, 0x4f, - 0x50, 0x52, 0x43, 0x5f, 0x54, 0x65, 0x6c, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x10, 0xa9, 0x08, 0x12, - 0x17, 0x0a, 0x12, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x55, 0x73, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, - 0x45, 0x72, 0x72, 0x6f, 0x72, 0x10, 0xaa, 0x08, 0x12, 0x1f, 0x0a, 0x1a, 0x4f, 0x50, 0x52, 0x43, - 0x5f, 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x64, - 0x65, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x10, 0xab, 0x08, 0x12, 0x14, 0x0a, 0x0f, 0x4f, 0x50, 0x52, - 0x43, 0x5f, 0x54, 0x65, 0x6c, 0x49, 0x73, 0x45, 0x78, 0x69, 0x73, 0x74, 0x10, 0xac, 0x08, 0x12, - 0x1e, 0x0a, 0x19, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x53, 0x61, 0x66, 0x65, 0x42, 0x6f, 0x78, 0x50, - 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x10, 0xae, 0x08, 0x12, - 0x17, 0x0a, 0x12, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x54, 0x65, 0x6c, 0x49, 0x73, 0x52, 0x65, 0x67, - 0x69, 0x73, 0x74, 0x65, 0x72, 0x10, 0xaf, 0x08, 0x12, 0x15, 0x0a, 0x10, 0x4f, 0x50, 0x52, 0x43, - 0x5f, 0x49, 0x6e, 0x42, 0x6c, 0x61, 0x63, 0x6b, 0x4c, 0x69, 0x73, 0x74, 0x10, 0xb0, 0x08, 0x12, - 0x16, 0x0a, 0x11, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x4e, 0x69, 0x63, 0x6b, 0x49, 0x73, 0x54, 0x6f, - 0x6f, 0x4c, 0x65, 0x6e, 0x10, 0xb1, 0x08, 0x12, 0x17, 0x0a, 0x12, 0x4f, 0x50, 0x52, 0x43, 0x5f, - 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x45, 0x71, 0x75, 0x61, 0x6c, 0x10, 0xb2, 0x08, - 0x12, 0x17, 0x0a, 0x12, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x4e, 0x69, 0x63, 0x6b, 0x49, 0x73, 0x49, - 0x6c, 0x6c, 0x65, 0x67, 0x61, 0x6c, 0x10, 0xbb, 0x08, 0x12, 0x16, 0x0a, 0x11, 0x4f, 0x50, 0x52, - 0x43, 0x5f, 0x53, 0x4d, 0x53, 0x43, 0x6f, 0x64, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x10, 0xbc, - 0x08, 0x12, 0x1c, 0x0a, 0x17, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x48, 0x61, 0x64, 0x53, 0x70, 0x72, - 0x65, 0x61, 0x64, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x72, 0x49, 0x64, 0x10, 0xc2, 0x08, 0x12, - 0x1b, 0x0a, 0x16, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x72, 0x49, - 0x64, 0x4e, 0x6f, 0x74, 0x45, 0x78, 0x69, 0x73, 0x74, 0x10, 0xc3, 0x08, 0x12, 0x1a, 0x0a, 0x15, - 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x53, 0x70, 0x72, 0x65, 0x61, 0x64, 0x42, 0x69, 0x6e, 0x64, 0x46, - 0x61, 0x69, 0x6c, 0x65, 0x64, 0x10, 0xc4, 0x08, 0x12, 0x17, 0x0a, 0x12, 0x4f, 0x50, 0x52, 0x43, - 0x5f, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x72, 0x4e, 0x6f, 0x42, 0x69, 0x6e, 0x64, 0x10, 0xc5, - 0x08, 0x12, 0x1e, 0x0a, 0x19, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x53, 0x70, 0x72, 0x65, 0x61, 0x64, - 0x42, 0x69, 0x6e, 0x64, 0x43, 0x6c, 0x6f, 0x73, 0x65, 0x64, 0x4c, 0x6f, 0x6f, 0x70, 0x10, 0xc6, - 0x08, 0x12, 0x1f, 0x0a, 0x1a, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x56, - 0x65, 0x72, 0x69, 0x66, 0x79, 0x43, 0x6f, 0x64, 0x65, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x10, - 0xc7, 0x08, 0x12, 0x1a, 0x0a, 0x15, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x4e, 0x69, 0x63, 0x6b, 0x49, - 0x73, 0x43, 0x61, 0x6e, 0x74, 0x52, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x10, 0xd0, 0x08, 0x12, 0x14, - 0x0a, 0x0f, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x4e, 0x6f, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x6f, - 0x72, 0x10, 0xd4, 0x08, 0x12, 0x14, 0x0a, 0x0f, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x4e, 0x6f, 0x50, - 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x10, 0xd5, 0x08, 0x12, 0x16, 0x0a, 0x11, 0x4f, 0x50, - 0x52, 0x43, 0x5f, 0x43, 0x61, 0x6e, 0x74, 0x55, 0x73, 0x65, 0x72, 0x42, 0x69, 0x6e, 0x64, 0x10, - 0xd6, 0x08, 0x12, 0x19, 0x0a, 0x14, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x50, 0x72, 0x6f, 0x6d, 0x6f, - 0x74, 0x65, 0x72, 0x48, 0x61, 0x73, 0x42, 0x69, 0x6e, 0x64, 0x10, 0xd7, 0x08, 0x12, 0x1c, 0x0a, - 0x17, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x4e, 0x6f, - 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x65, 0x72, 0x10, 0xd8, 0x08, 0x12, 0x28, 0x0a, 0x23, 0x4f, - 0x50, 0x52, 0x43, 0x5f, 0x55, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, - 0x6e, 0x74, 0x5f, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x49, 0x6c, 0x6c, 0x65, 0x67, - 0x61, 0x6c, 0x10, 0xd3, 0x0f, 0x12, 0x21, 0x0a, 0x1c, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x42, 0x69, - 0x6e, 0x64, 0x41, 0x6c, 0x69, 0x70, 0x61, 0x79, 0x5f, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, - 0x45, 0x6d, 0x70, 0x74, 0x79, 0x10, 0xd5, 0x0f, 0x12, 0x21, 0x0a, 0x1c, 0x4f, 0x50, 0x52, 0x43, - 0x5f, 0x42, 0x69, 0x6e, 0x64, 0x41, 0x6c, 0x69, 0x70, 0x61, 0x79, 0x5f, 0x41, 0x63, 0x63, 0x4e, - 0x61, 0x6d, 0x65, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x10, 0xd6, 0x0f, 0x12, 0x21, 0x0a, 0x1c, 0x4f, - 0x50, 0x52, 0x43, 0x5f, 0x53, 0x61, 0x66, 0x65, 0x62, 0x6f, 0x78, 0x5f, 0x50, 0x61, 0x73, 0x73, - 0x77, 0x6f, 0x72, 0x64, 0x49, 0x6c, 0x6c, 0x65, 0x67, 0x61, 0x6c, 0x10, 0xd7, 0x0f, 0x12, 0x1c, - 0x0a, 0x17, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x42, 0x69, 0x6e, 0x64, 0x42, 0x61, 0x6e, 0x6b, 0x5f, - 0x4e, 0x61, 0x6d, 0x65, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x10, 0xd8, 0x0f, 0x12, 0x1f, 0x0a, 0x1a, - 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x42, 0x69, 0x6e, 0x64, 0x42, 0x61, 0x6e, 0x6b, 0x5f, 0x41, 0x63, - 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x10, 0xd9, 0x0f, 0x12, 0x1f, 0x0a, - 0x1a, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x42, 0x69, 0x6e, 0x64, 0x42, 0x61, 0x6e, 0x6b, 0x5f, 0x41, - 0x63, 0x63, 0x4e, 0x61, 0x6d, 0x65, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x10, 0xda, 0x0f, 0x12, 0x1e, - 0x0a, 0x19, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x42, 0x69, 0x6e, 0x64, 0x42, 0x61, 0x6e, 0x6b, 0x5f, - 0x4e, 0x61, 0x6d, 0x65, 0x49, 0x6c, 0x6c, 0x65, 0x67, 0x61, 0x6c, 0x10, 0xdb, 0x0f, 0x12, 0x21, - 0x0a, 0x1c, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x42, 0x69, 0x6e, 0x64, 0x42, 0x61, 0x6e, 0x6b, 0x5f, - 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x6c, 0x6c, 0x65, 0x67, 0x61, 0x6c, 0x10, 0xdc, - 0x0f, 0x12, 0x21, 0x0a, 0x1c, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x42, 0x69, 0x6e, 0x64, 0x42, 0x61, - 0x6e, 0x6b, 0x5f, 0x41, 0x63, 0x63, 0x4e, 0x61, 0x6d, 0x65, 0x49, 0x6c, 0x6c, 0x65, 0x67, 0x61, - 0x6c, 0x10, 0xdd, 0x0f, 0x12, 0x23, 0x0a, 0x1e, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x42, 0x69, 0x6e, - 0x64, 0x41, 0x6c, 0x69, 0x70, 0x61, 0x79, 0x5f, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, - 0x6c, 0x6c, 0x65, 0x67, 0x61, 0x6c, 0x10, 0xde, 0x0f, 0x12, 0x23, 0x0a, 0x1e, 0x4f, 0x50, 0x52, + 0x6f, 0x52, 0x08, 0x57, 0x65, 0x65, 0x6b, 0x43, 0x61, 0x72, 0x64, 0x22, 0x6f, 0x0a, 0x0d, 0x53, + 0x43, 0x50, 0x69, 0x67, 0x42, 0x61, 0x6e, 0x6b, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x1a, 0x0a, 0x08, + 0x42, 0x61, 0x6e, 0x6b, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, + 0x42, 0x61, 0x6e, 0x6b, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x20, 0x0a, 0x0b, 0x42, 0x61, 0x6e, 0x6b, + 0x43, 0x6f, 0x69, 0x6e, 0x4d, 0x61, 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x42, + 0x61, 0x6e, 0x6b, 0x43, 0x6f, 0x69, 0x6e, 0x4d, 0x61, 0x78, 0x12, 0x20, 0x0a, 0x0b, 0x41, 0x64, + 0x64, 0x42, 0x61, 0x6e, 0x6b, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, + 0x0b, 0x41, 0x64, 0x64, 0x42, 0x61, 0x6e, 0x6b, 0x43, 0x6f, 0x69, 0x6e, 0x2a, 0xef, 0x0d, 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, 0x15, + 0x0a, 0x10, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x46, 0x61, 0x69, 0x6c, + 0x65, 0x64, 0x10, 0xe8, 0x07, 0x12, 0x18, 0x0a, 0x13, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x4c, 0x6f, + 0x67, 0x69, 0x6e, 0x5f, 0x4e, 0x61, 0x6d, 0x65, 0x53, 0x61, 0x6d, 0x65, 0x10, 0xef, 0x07, 0x12, + 0x1c, 0x0a, 0x17, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x5f, 0x43, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x10, 0xf1, 0x07, 0x12, 0x12, 0x0a, + 0x0d, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x4e, 0x6f, 0x74, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x10, 0xf5, + 0x07, 0x12, 0x19, 0x0a, 0x14, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x59, 0x6f, 0x75, 0x72, 0x52, 0x65, + 0x73, 0x56, 0x65, 0x72, 0x49, 0x73, 0x4c, 0x6f, 0x77, 0x10, 0x94, 0x08, 0x12, 0x19, 0x0a, 0x14, + 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x59, 0x6f, 0x75, 0x72, 0x41, 0x70, 0x70, 0x56, 0x65, 0x72, 0x49, + 0x73, 0x4c, 0x6f, 0x77, 0x10, 0x95, 0x08, 0x12, 0x17, 0x0a, 0x12, 0x4f, 0x50, 0x52, 0x43, 0x5f, + 0x43, 0x6f, 0x69, 0x6e, 0x4e, 0x6f, 0x74, 0x45, 0x6e, 0x6f, 0x75, 0x67, 0x68, 0x10, 0xa0, 0x08, + 0x12, 0x14, 0x0a, 0x0f, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x4e, 0x69, 0x63, 0x6b, 0x49, 0x73, 0x4e, + 0x75, 0x6c, 0x6c, 0x10, 0xa4, 0x08, 0x12, 0x15, 0x0a, 0x10, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x4e, + 0x69, 0x63, 0x6b, 0x49, 0x73, 0x45, 0x78, 0x69, 0x73, 0x74, 0x10, 0xa5, 0x08, 0x12, 0x14, 0x0a, + 0x0f, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x46, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x74, 0x6c, 0x79, + 0x10, 0xa6, 0x08, 0x12, 0x13, 0x0a, 0x0e, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x49, 0x63, 0x6f, 0x6e, + 0x45, 0x72, 0x72, 0x6f, 0x72, 0x10, 0xa7, 0x08, 0x12, 0x12, 0x0a, 0x0d, 0x4f, 0x50, 0x52, 0x43, + 0x5f, 0x53, 0x65, 0x78, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x10, 0xa8, 0x08, 0x12, 0x12, 0x0a, 0x0d, + 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x54, 0x65, 0x6c, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x10, 0xa9, 0x08, + 0x12, 0x17, 0x0a, 0x12, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x55, 0x73, 0x65, 0x72, 0x4e, 0x61, 0x6d, + 0x65, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x10, 0xaa, 0x08, 0x12, 0x1f, 0x0a, 0x1a, 0x4f, 0x50, 0x52, + 0x43, 0x5f, 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, + 0x64, 0x65, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x10, 0xab, 0x08, 0x12, 0x14, 0x0a, 0x0f, 0x4f, 0x50, + 0x52, 0x43, 0x5f, 0x54, 0x65, 0x6c, 0x49, 0x73, 0x45, 0x78, 0x69, 0x73, 0x74, 0x10, 0xac, 0x08, + 0x12, 0x1e, 0x0a, 0x19, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x53, 0x61, 0x66, 0x65, 0x42, 0x6f, 0x78, + 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x10, 0xae, 0x08, + 0x12, 0x17, 0x0a, 0x12, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x54, 0x65, 0x6c, 0x49, 0x73, 0x52, 0x65, + 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x10, 0xaf, 0x08, 0x12, 0x15, 0x0a, 0x10, 0x4f, 0x50, 0x52, + 0x43, 0x5f, 0x49, 0x6e, 0x42, 0x6c, 0x61, 0x63, 0x6b, 0x4c, 0x69, 0x73, 0x74, 0x10, 0xb0, 0x08, + 0x12, 0x16, 0x0a, 0x11, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x4e, 0x69, 0x63, 0x6b, 0x49, 0x73, 0x54, + 0x6f, 0x6f, 0x4c, 0x65, 0x6e, 0x10, 0xb1, 0x08, 0x12, 0x17, 0x0a, 0x12, 0x4f, 0x50, 0x52, 0x43, + 0x5f, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x45, 0x71, 0x75, 0x61, 0x6c, 0x10, 0xb2, + 0x08, 0x12, 0x17, 0x0a, 0x12, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x4e, 0x69, 0x63, 0x6b, 0x49, 0x73, + 0x49, 0x6c, 0x6c, 0x65, 0x67, 0x61, 0x6c, 0x10, 0xbb, 0x08, 0x12, 0x16, 0x0a, 0x11, 0x4f, 0x50, + 0x52, 0x43, 0x5f, 0x53, 0x4d, 0x53, 0x43, 0x6f, 0x64, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x10, + 0xbc, 0x08, 0x12, 0x1c, 0x0a, 0x17, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x48, 0x61, 0x64, 0x53, 0x70, + 0x72, 0x65, 0x61, 0x64, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x72, 0x49, 0x64, 0x10, 0xc2, 0x08, + 0x12, 0x1b, 0x0a, 0x16, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x72, + 0x49, 0x64, 0x4e, 0x6f, 0x74, 0x45, 0x78, 0x69, 0x73, 0x74, 0x10, 0xc3, 0x08, 0x12, 0x1a, 0x0a, + 0x15, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x53, 0x70, 0x72, 0x65, 0x61, 0x64, 0x42, 0x69, 0x6e, 0x64, + 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x10, 0xc4, 0x08, 0x12, 0x17, 0x0a, 0x12, 0x4f, 0x50, 0x52, + 0x43, 0x5f, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x72, 0x4e, 0x6f, 0x42, 0x69, 0x6e, 0x64, 0x10, + 0xc5, 0x08, 0x12, 0x1e, 0x0a, 0x19, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x53, 0x70, 0x72, 0x65, 0x61, + 0x64, 0x42, 0x69, 0x6e, 0x64, 0x43, 0x6c, 0x6f, 0x73, 0x65, 0x64, 0x4c, 0x6f, 0x6f, 0x70, 0x10, + 0xc6, 0x08, 0x12, 0x1f, 0x0a, 0x1a, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x49, 0x6d, 0x61, 0x67, 0x65, + 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x43, 0x6f, 0x64, 0x65, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, + 0x10, 0xc7, 0x08, 0x12, 0x1a, 0x0a, 0x15, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x4e, 0x69, 0x63, 0x6b, + 0x49, 0x73, 0x43, 0x61, 0x6e, 0x74, 0x52, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x10, 0xd0, 0x08, 0x12, + 0x14, 0x0a, 0x0f, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x4e, 0x6f, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, + 0x6f, 0x72, 0x10, 0xd4, 0x08, 0x12, 0x14, 0x0a, 0x0f, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x4e, 0x6f, + 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x10, 0xd5, 0x08, 0x12, 0x16, 0x0a, 0x11, 0x4f, + 0x50, 0x52, 0x43, 0x5f, 0x43, 0x61, 0x6e, 0x74, 0x55, 0x73, 0x65, 0x72, 0x42, 0x69, 0x6e, 0x64, + 0x10, 0xd6, 0x08, 0x12, 0x19, 0x0a, 0x14, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x50, 0x72, 0x6f, 0x6d, + 0x6f, 0x74, 0x65, 0x72, 0x48, 0x61, 0x73, 0x42, 0x69, 0x6e, 0x64, 0x10, 0xd7, 0x08, 0x12, 0x1c, + 0x0a, 0x17, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x4e, + 0x6f, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x65, 0x72, 0x10, 0xd8, 0x08, 0x12, 0x28, 0x0a, 0x23, + 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x55, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x41, 0x63, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x5f, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x49, 0x6c, 0x6c, 0x65, + 0x67, 0x61, 0x6c, 0x10, 0xd3, 0x0f, 0x12, 0x21, 0x0a, 0x1c, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x42, + 0x69, 0x6e, 0x64, 0x41, 0x6c, 0x69, 0x70, 0x61, 0x79, 0x5f, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x10, 0xd5, 0x0f, 0x12, 0x21, 0x0a, 0x1c, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x42, 0x69, 0x6e, 0x64, 0x41, 0x6c, 0x69, 0x70, 0x61, 0x79, 0x5f, 0x41, 0x63, 0x63, - 0x4e, 0x61, 0x6d, 0x65, 0x49, 0x6c, 0x6c, 0x65, 0x67, 0x61, 0x6c, 0x10, 0xdf, 0x0f, 0x12, 0x22, - 0x0a, 0x1d, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x42, 0x69, 0x6e, 0x64, 0x41, 0x6c, 0x69, 0x70, 0x61, - 0x79, 0x5f, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x10, - 0xe0, 0x0f, 0x12, 0x20, 0x0a, 0x1b, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x42, 0x69, 0x6e, 0x64, 0x42, - 0x61, 0x6e, 0x6b, 0x5f, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x45, 0x72, 0x72, 0x6f, - 0x72, 0x10, 0xe1, 0x0f, 0x12, 0x1f, 0x0a, 0x1a, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x41, 0x63, 0x63, - 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x49, 0x50, 0x5f, 0x54, 0x6f, 0x6f, 0x4d, 0x61, 0x6e, 0x79, 0x52, - 0x65, 0x67, 0x10, 0xe2, 0x0f, 0x12, 0x1d, 0x0a, 0x18, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x42, 0x69, - 0x6e, 0x64, 0x42, 0x61, 0x6e, 0x6b, 0x5f, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x4c, 0x69, 0x6d, 0x69, - 0x74, 0x10, 0xe3, 0x0f, 0x12, 0x1f, 0x0a, 0x1a, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x42, 0x69, 0x6e, - 0x64, 0x41, 0x6c, 0x69, 0x70, 0x61, 0x79, 0x5f, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x4c, 0x69, 0x6d, - 0x69, 0x74, 0x10, 0xe4, 0x0f, 0x12, 0x1c, 0x0a, 0x17, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x42, 0x61, - 0x6e, 0x6b, 0x41, 0x6e, 0x64, 0x41, 0x6c, 0x69, 0x5f, 0x4e, 0x6f, 0x74, 0x53, 0x61, 0x6d, 0x65, - 0x10, 0xe5, 0x0f, 0x12, 0x27, 0x0a, 0x22, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x42, 0x69, 0x6e, 0x64, - 0x42, 0x61, 0x6e, 0x6b, 0x41, 0x6c, 0x69, 0x70, 0x61, 0x79, 0x5f, 0x4e, 0x61, 0x6d, 0x65, 0x43, - 0x6f, 0x75, 0x6e, 0x74, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x10, 0xe6, 0x0f, 0x12, 0x15, 0x0a, 0x10, - 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x4a, 0x79, 0x62, 0x5f, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, - 0x10, 0xb4, 0x10, 0x12, 0x17, 0x0a, 0x12, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x4a, 0x79, 0x62, 0x5f, - 0x43, 0x6f, 0x64, 0x65, 0x45, 0x78, 0x69, 0x73, 0x74, 0x10, 0xb5, 0x10, 0x12, 0x15, 0x0a, 0x10, - 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x4a, 0x79, 0x62, 0x5f, 0x54, 0x69, 0x6d, 0x65, 0x45, 0x72, 0x72, - 0x10, 0xb6, 0x10, 0x12, 0x15, 0x0a, 0x10, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x4a, 0x79, 0x62, 0x5f, - 0x43, 0x6f, 0x64, 0x65, 0x45, 0x72, 0x72, 0x10, 0xb7, 0x10, 0x12, 0x26, 0x0a, 0x21, 0x4f, 0x50, - 0x52, 0x43, 0x5f, 0x48, 0x75, 0x6e, 0x64, 0x72, 0x65, 0x64, 0x5f, 0x59, 0x6f, 0x75, 0x48, 0x61, - 0x64, 0x42, 0x65, 0x74, 0x43, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x4c, 0x65, 0x61, 0x76, 0x65, 0x10, - 0xd9, 0x36, 0x12, 0x29, 0x0a, 0x24, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x48, 0x75, 0x6e, 0x64, 0x72, - 0x65, 0x64, 0x5f, 0x59, 0x6f, 0x75, 0x48, 0x61, 0x64, 0x42, 0x61, 0x6e, 0x6b, 0x65, 0x72, 0x43, - 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x4c, 0x65, 0x61, 0x76, 0x65, 0x10, 0xda, 0x36, 0x2a, 0xed, 0x1b, - 0x0a, 0x0e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x49, 0x44, - 0x12, 0x1c, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x50, 0x4c, 0x41, 0x59, 0x45, - 0x52, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x5a, 0x45, 0x52, 0x4f, 0x10, 0x00, 0x12, 0x19, - 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x50, 0x4c, 0x41, 0x59, - 0x45, 0x52, 0x44, 0x41, 0x54, 0x41, 0x10, 0xb4, 0x10, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, - 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x44, 0x41, 0x54, - 0x41, 0x10, 0xb5, 0x10, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, - 0x43, 0x5f, 0x44, 0x41, 0x59, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x10, 0xb6, 0x10, 0x12, 0x1e, - 0x0a, 0x19, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x54, 0x48, 0x49, 0x52, - 0x44, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x44, 0x41, 0x54, 0x41, 0x10, 0xb7, 0x10, 0x12, 0x1e, - 0x0a, 0x19, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x54, 0x48, 0x49, 0x52, - 0x44, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x44, 0x41, 0x54, 0x41, 0x10, 0xb8, 0x10, 0x12, 0x1f, - 0x0a, 0x1a, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x50, 0x4c, 0x41, 0x59, - 0x45, 0x52, 0x44, 0x41, 0x54, 0x41, 0x55, 0x50, 0x44, 0x41, 0x54, 0x45, 0x10, 0xb9, 0x10, 0x12, + 0x4e, 0x61, 0x6d, 0x65, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x10, 0xd6, 0x0f, 0x12, 0x21, 0x0a, 0x1c, + 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x53, 0x61, 0x66, 0x65, 0x62, 0x6f, 0x78, 0x5f, 0x50, 0x61, 0x73, + 0x73, 0x77, 0x6f, 0x72, 0x64, 0x49, 0x6c, 0x6c, 0x65, 0x67, 0x61, 0x6c, 0x10, 0xd7, 0x0f, 0x12, + 0x1c, 0x0a, 0x17, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x42, 0x69, 0x6e, 0x64, 0x42, 0x61, 0x6e, 0x6b, + 0x5f, 0x4e, 0x61, 0x6d, 0x65, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x10, 0xd8, 0x0f, 0x12, 0x1f, 0x0a, + 0x1a, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x42, 0x69, 0x6e, 0x64, 0x42, 0x61, 0x6e, 0x6b, 0x5f, 0x41, + 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x10, 0xd9, 0x0f, 0x12, 0x1f, + 0x0a, 0x1a, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x42, 0x69, 0x6e, 0x64, 0x42, 0x61, 0x6e, 0x6b, 0x5f, + 0x41, 0x63, 0x63, 0x4e, 0x61, 0x6d, 0x65, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x10, 0xda, 0x0f, 0x12, + 0x1e, 0x0a, 0x19, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x42, 0x69, 0x6e, 0x64, 0x42, 0x61, 0x6e, 0x6b, + 0x5f, 0x4e, 0x61, 0x6d, 0x65, 0x49, 0x6c, 0x6c, 0x65, 0x67, 0x61, 0x6c, 0x10, 0xdb, 0x0f, 0x12, + 0x21, 0x0a, 0x1c, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x42, 0x69, 0x6e, 0x64, 0x42, 0x61, 0x6e, 0x6b, + 0x5f, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x6c, 0x6c, 0x65, 0x67, 0x61, 0x6c, 0x10, + 0xdc, 0x0f, 0x12, 0x21, 0x0a, 0x1c, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x42, 0x69, 0x6e, 0x64, 0x42, + 0x61, 0x6e, 0x6b, 0x5f, 0x41, 0x63, 0x63, 0x4e, 0x61, 0x6d, 0x65, 0x49, 0x6c, 0x6c, 0x65, 0x67, + 0x61, 0x6c, 0x10, 0xdd, 0x0f, 0x12, 0x23, 0x0a, 0x1e, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x42, 0x69, + 0x6e, 0x64, 0x41, 0x6c, 0x69, 0x70, 0x61, 0x79, 0x5f, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x49, 0x6c, 0x6c, 0x65, 0x67, 0x61, 0x6c, 0x10, 0xde, 0x0f, 0x12, 0x23, 0x0a, 0x1e, 0x4f, 0x50, + 0x52, 0x43, 0x5f, 0x42, 0x69, 0x6e, 0x64, 0x41, 0x6c, 0x69, 0x70, 0x61, 0x79, 0x5f, 0x41, 0x63, + 0x63, 0x4e, 0x61, 0x6d, 0x65, 0x49, 0x6c, 0x6c, 0x65, 0x67, 0x61, 0x6c, 0x10, 0xdf, 0x0f, 0x12, + 0x22, 0x0a, 0x1d, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x42, 0x69, 0x6e, 0x64, 0x41, 0x6c, 0x69, 0x70, + 0x61, 0x79, 0x5f, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x45, 0x72, 0x72, 0x6f, 0x72, + 0x10, 0xe0, 0x0f, 0x12, 0x20, 0x0a, 0x1b, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x42, 0x69, 0x6e, 0x64, + 0x42, 0x61, 0x6e, 0x6b, 0x5f, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x45, 0x72, 0x72, + 0x6f, 0x72, 0x10, 0xe1, 0x0f, 0x12, 0x1f, 0x0a, 0x1a, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x41, 0x63, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x49, 0x50, 0x5f, 0x54, 0x6f, 0x6f, 0x4d, 0x61, 0x6e, 0x79, + 0x52, 0x65, 0x67, 0x10, 0xe2, 0x0f, 0x12, 0x1d, 0x0a, 0x18, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x42, + 0x69, 0x6e, 0x64, 0x42, 0x61, 0x6e, 0x6b, 0x5f, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x4c, 0x69, 0x6d, + 0x69, 0x74, 0x10, 0xe3, 0x0f, 0x12, 0x1f, 0x0a, 0x1a, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x42, 0x69, + 0x6e, 0x64, 0x41, 0x6c, 0x69, 0x70, 0x61, 0x79, 0x5f, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x4c, 0x69, + 0x6d, 0x69, 0x74, 0x10, 0xe4, 0x0f, 0x12, 0x1c, 0x0a, 0x17, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x42, + 0x61, 0x6e, 0x6b, 0x41, 0x6e, 0x64, 0x41, 0x6c, 0x69, 0x5f, 0x4e, 0x6f, 0x74, 0x53, 0x61, 0x6d, + 0x65, 0x10, 0xe5, 0x0f, 0x12, 0x27, 0x0a, 0x22, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x42, 0x69, 0x6e, + 0x64, 0x42, 0x61, 0x6e, 0x6b, 0x41, 0x6c, 0x69, 0x70, 0x61, 0x79, 0x5f, 0x4e, 0x61, 0x6d, 0x65, + 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x10, 0xe6, 0x0f, 0x12, 0x15, 0x0a, + 0x10, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x4a, 0x79, 0x62, 0x5f, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, + 0x65, 0x10, 0xb4, 0x10, 0x12, 0x17, 0x0a, 0x12, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x4a, 0x79, 0x62, + 0x5f, 0x43, 0x6f, 0x64, 0x65, 0x45, 0x78, 0x69, 0x73, 0x74, 0x10, 0xb5, 0x10, 0x12, 0x15, 0x0a, + 0x10, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x4a, 0x79, 0x62, 0x5f, 0x54, 0x69, 0x6d, 0x65, 0x45, 0x72, + 0x72, 0x10, 0xb6, 0x10, 0x12, 0x15, 0x0a, 0x10, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x4a, 0x79, 0x62, + 0x5f, 0x43, 0x6f, 0x64, 0x65, 0x45, 0x72, 0x72, 0x10, 0xb7, 0x10, 0x12, 0x26, 0x0a, 0x21, 0x4f, + 0x50, 0x52, 0x43, 0x5f, 0x48, 0x75, 0x6e, 0x64, 0x72, 0x65, 0x64, 0x5f, 0x59, 0x6f, 0x75, 0x48, + 0x61, 0x64, 0x42, 0x65, 0x74, 0x43, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x4c, 0x65, 0x61, 0x76, 0x65, + 0x10, 0xd9, 0x36, 0x12, 0x29, 0x0a, 0x24, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x48, 0x75, 0x6e, 0x64, + 0x72, 0x65, 0x64, 0x5f, 0x59, 0x6f, 0x75, 0x48, 0x61, 0x64, 0x42, 0x61, 0x6e, 0x6b, 0x65, 0x72, + 0x43, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x4c, 0x65, 0x61, 0x76, 0x65, 0x10, 0xda, 0x36, 0x2a, 0x88, + 0x1c, 0x0a, 0x0e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x49, + 0x44, 0x12, 0x1c, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x50, 0x4c, 0x41, 0x59, + 0x45, 0x52, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x5a, 0x45, 0x52, 0x4f, 0x10, 0x00, 0x12, + 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x50, 0x4c, 0x41, + 0x59, 0x45, 0x52, 0x44, 0x41, 0x54, 0x41, 0x10, 0xb4, 0x10, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, + 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x44, 0x41, + 0x54, 0x41, 0x10, 0xb5, 0x10, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, + 0x53, 0x43, 0x5f, 0x44, 0x41, 0x59, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x10, 0xb6, 0x10, 0x12, + 0x1e, 0x0a, 0x19, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x54, 0x48, 0x49, + 0x52, 0x44, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x44, 0x41, 0x54, 0x41, 0x10, 0xb7, 0x10, 0x12, + 0x1e, 0x0a, 0x19, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x54, 0x48, 0x49, + 0x52, 0x44, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x44, 0x41, 0x54, 0x41, 0x10, 0xb8, 0x10, 0x12, + 0x1f, 0x0a, 0x1a, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x50, 0x4c, 0x41, + 0x59, 0x45, 0x52, 0x44, 0x41, 0x54, 0x41, 0x55, 0x50, 0x44, 0x41, 0x54, 0x45, 0x10, 0xb9, 0x10, + 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x50, 0x4c, + 0x41, 0x59, 0x45, 0x52, 0x44, 0x41, 0x54, 0x41, 0x45, 0x58, 0x10, 0xba, 0x10, 0x12, 0x14, 0x0a, + 0x0f, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x50, 0x4d, 0x43, 0x4d, 0x44, + 0x10, 0xbb, 0x10, 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, + 0x5f, 0x52, 0x4f, 0x42, 0x4f, 0x54, 0x43, 0x48, 0x47, 0x44, 0x41, 0x54, 0x41, 0x10, 0xbc, 0x10, + 0x12, 0x21, 0x0a, 0x1c, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x43, 0x48, + 0x41, 0x4e, 0x47, 0x45, 0x57, 0x45, 0x43, 0x48, 0x41, 0x54, 0x4e, 0x55, 0x4d, 0x42, 0x45, 0x52, + 0x10, 0xbd, 0x10, 0x12, 0x21, 0x0a, 0x1c, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, + 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x57, 0x45, 0x43, 0x48, 0x41, 0x54, 0x4e, 0x55, 0x4d, + 0x42, 0x45, 0x52, 0x10, 0xbe, 0x10, 0x12, 0x17, 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, + 0x5f, 0x43, 0x53, 0x5f, 0x41, 0x55, 0x54, 0x48, 0x45, 0x4e, 0x49, 0x44, 0x10, 0xbf, 0x10, 0x12, + 0x17, 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x41, 0x55, 0x54, + 0x48, 0x45, 0x4e, 0x49, 0x44, 0x10, 0xc0, 0x10, 0x12, 0x17, 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, + 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x4a, 0x4f, 0x49, 0x4e, 0x47, 0x41, 0x4d, 0x45, 0x10, 0xc1, + 0x10, 0x12, 0x17, 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x4a, + 0x4f, 0x49, 0x4e, 0x47, 0x41, 0x4d, 0x45, 0x10, 0xc2, 0x10, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, + 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x53, 0x50, 0x52, 0x45, 0x41, 0x44, 0x42, 0x49, + 0x4e, 0x44, 0x10, 0xc3, 0x10, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, + 0x53, 0x43, 0x5f, 0x53, 0x50, 0x52, 0x45, 0x41, 0x44, 0x42, 0x49, 0x4e, 0x44, 0x10, 0xc4, 0x10, + 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x47, 0x45, + 0x4e, 0x43, 0x55, 0x53, 0x54, 0x4f, 0x4d, 0x54, 0x4f, 0x4b, 0x45, 0x4e, 0x10, 0xc7, 0x10, 0x12, + 0x1d, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x47, 0x45, 0x4e, + 0x43, 0x55, 0x53, 0x54, 0x4f, 0x4d, 0x54, 0x4f, 0x4b, 0x45, 0x4e, 0x10, 0xc8, 0x10, 0x12, 0x1b, + 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x43, 0x55, 0x53, 0x54, + 0x4f, 0x4d, 0x4e, 0x45, 0x57, 0x4d, 0x53, 0x47, 0x10, 0xc9, 0x10, 0x12, 0x1e, 0x0a, 0x19, 0x50, + 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x43, 0x55, 0x53, 0x54, 0x4f, 0x4d, 0x4e, + 0x45, 0x57, 0x4d, 0x53, 0x47, 0x41, 0x43, 0x4b, 0x10, 0xca, 0x10, 0x12, 0x15, 0x0a, 0x10, 0x50, + 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x53, 0x52, 0x56, 0x4d, 0x53, 0x47, 0x10, + 0xcb, 0x10, 0x12, 0x1e, 0x0a, 0x19, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, + 0x46, 0x49, 0x53, 0x48, 0x4a, 0x41, 0x43, 0x4b, 0x50, 0x4f, 0x54, 0x43, 0x4f, 0x49, 0x4e, 0x10, + 0xcc, 0x10, 0x12, 0x1e, 0x0a, 0x19, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, + 0x46, 0x49, 0x53, 0x48, 0x4a, 0x41, 0x43, 0x4b, 0x50, 0x4f, 0x54, 0x43, 0x4f, 0x49, 0x4e, 0x10, + 0xcd, 0x10, 0x12, 0x1e, 0x0a, 0x19, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, + 0x46, 0x49, 0x53, 0x48, 0x4a, 0x41, 0x43, 0x4b, 0x50, 0x4f, 0x54, 0x44, 0x41, 0x54, 0x41, 0x10, + 0xce, 0x10, 0x12, 0x1e, 0x0a, 0x19, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, + 0x46, 0x49, 0x53, 0x48, 0x4a, 0x41, 0x43, 0x4b, 0x50, 0x4f, 0x54, 0x44, 0x41, 0x54, 0x41, 0x10, + 0xcf, 0x10, 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, + 0x4e, 0x49, 0x43, 0x45, 0x49, 0x44, 0x52, 0x45, 0x42, 0x49, 0x4e, 0x44, 0x10, 0xd0, 0x10, 0x12, + 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x42, 0x49, 0x4e, + 0x44, 0x50, 0x52, 0x4f, 0x4d, 0x4f, 0x54, 0x45, 0x52, 0x10, 0xd1, 0x10, 0x12, 0x1b, 0x0a, 0x16, + 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x42, 0x49, 0x4e, 0x44, 0x50, 0x52, + 0x4f, 0x4d, 0x4f, 0x54, 0x45, 0x52, 0x10, 0xd2, 0x10, 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x41, 0x43, + 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x42, 0x49, 0x4e, 0x44, 0x50, 0x52, 0x4f, 0x4d, 0x4f, + 0x54, 0x45, 0x52, 0x53, 0x54, 0x41, 0x54, 0x45, 0x10, 0xd3, 0x10, 0x12, 0x20, 0x0a, 0x1b, 0x50, + 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x47, 0x65, 0x74, 0x53, 0x70, 0x72, 0x65, + 0x61, 0x64, 0x4c, 0x57, 0x49, 0x73, 0x4f, 0x70, 0x65, 0x6e, 0x10, 0xd4, 0x10, 0x12, 0x20, 0x0a, + 0x1b, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x47, 0x65, 0x74, 0x53, 0x70, + 0x72, 0x65, 0x61, 0x64, 0x4c, 0x57, 0x49, 0x73, 0x4f, 0x70, 0x65, 0x6e, 0x10, 0xd5, 0x10, 0x12, + 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x50, 0x61, 0x79, + 0x41, 0x63, 0x74, 0x5f, 0x53, 0x74, 0x61, 0x74, 0x65, 0x10, 0xd6, 0x10, 0x12, 0x19, 0x0a, 0x14, + 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, + 0x4e, 0x49, 0x43, 0x4b, 0x10, 0xdc, 0x10, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, + 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x4e, 0x49, 0x43, 0x4b, 0x10, + 0xdd, 0x10, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, + 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x49, 0x43, 0x4f, 0x4e, 0x10, 0xde, 0x10, 0x12, 0x19, 0x0a, + 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x47, + 0x45, 0x49, 0x43, 0x4f, 0x4e, 0x10, 0xdf, 0x10, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, + 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x53, 0x45, 0x58, 0x10, + 0xe0, 0x10, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, + 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x53, 0x45, 0x58, 0x10, 0xe1, 0x10, 0x12, 0x1d, 0x0a, 0x18, + 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x55, 0x50, 0x47, 0x52, 0x41, 0x44, + 0x45, 0x41, 0x43, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x10, 0xe2, 0x10, 0x12, 0x1d, 0x0a, 0x18, 0x50, + 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x55, 0x50, 0x47, 0x52, 0x41, 0x44, 0x45, + 0x41, 0x43, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x10, 0xe3, 0x10, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, + 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x42, 0x49, 0x4e, 0x44, 0x41, 0x4c, 0x49, 0x50, + 0x41, 0x59, 0x10, 0xe4, 0x10, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, + 0x53, 0x43, 0x5f, 0x42, 0x49, 0x4e, 0x44, 0x41, 0x4c, 0x49, 0x50, 0x41, 0x59, 0x10, 0xe5, 0x10, + 0x12, 0x17, 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x42, 0x49, + 0x4e, 0x44, 0x42, 0x41, 0x4e, 0x4b, 0x10, 0xe6, 0x10, 0x12, 0x17, 0x0a, 0x12, 0x50, 0x41, 0x43, + 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x42, 0x49, 0x4e, 0x44, 0x42, 0x41, 0x4e, 0x4b, 0x10, + 0xe7, 0x10, 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, + 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x4f, 0x50, 0x43, 0x4f, 0x49, 0x4e, 0x10, 0xe8, 0x10, 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x50, 0x4c, 0x41, - 0x59, 0x45, 0x52, 0x44, 0x41, 0x54, 0x41, 0x45, 0x58, 0x10, 0xba, 0x10, 0x12, 0x14, 0x0a, 0x0f, - 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x50, 0x4d, 0x43, 0x4d, 0x44, 0x10, - 0xbb, 0x10, 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, - 0x52, 0x4f, 0x42, 0x4f, 0x54, 0x43, 0x48, 0x47, 0x44, 0x41, 0x54, 0x41, 0x10, 0xbc, 0x10, 0x12, - 0x21, 0x0a, 0x1c, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x43, 0x48, 0x41, - 0x4e, 0x47, 0x45, 0x57, 0x45, 0x43, 0x48, 0x41, 0x54, 0x4e, 0x55, 0x4d, 0x42, 0x45, 0x52, 0x10, - 0xbd, 0x10, 0x12, 0x21, 0x0a, 0x1c, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, - 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x57, 0x45, 0x43, 0x48, 0x41, 0x54, 0x4e, 0x55, 0x4d, 0x42, - 0x45, 0x52, 0x10, 0xbe, 0x10, 0x12, 0x17, 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, - 0x43, 0x53, 0x5f, 0x41, 0x55, 0x54, 0x48, 0x45, 0x4e, 0x49, 0x44, 0x10, 0xbf, 0x10, 0x12, 0x17, - 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x41, 0x55, 0x54, 0x48, - 0x45, 0x4e, 0x49, 0x44, 0x10, 0xc0, 0x10, 0x12, 0x17, 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, - 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x4a, 0x4f, 0x49, 0x4e, 0x47, 0x41, 0x4d, 0x45, 0x10, 0xc1, 0x10, - 0x12, 0x17, 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x4a, 0x4f, - 0x49, 0x4e, 0x47, 0x41, 0x4d, 0x45, 0x10, 0xc2, 0x10, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, - 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x53, 0x50, 0x52, 0x45, 0x41, 0x44, 0x42, 0x49, 0x4e, - 0x44, 0x10, 0xc3, 0x10, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, - 0x43, 0x5f, 0x53, 0x50, 0x52, 0x45, 0x41, 0x44, 0x42, 0x49, 0x4e, 0x44, 0x10, 0xc4, 0x10, 0x12, - 0x1d, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x47, 0x45, 0x4e, - 0x43, 0x55, 0x53, 0x54, 0x4f, 0x4d, 0x54, 0x4f, 0x4b, 0x45, 0x4e, 0x10, 0xc7, 0x10, 0x12, 0x1d, - 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x47, 0x45, 0x4e, 0x43, - 0x55, 0x53, 0x54, 0x4f, 0x4d, 0x54, 0x4f, 0x4b, 0x45, 0x4e, 0x10, 0xc8, 0x10, 0x12, 0x1b, 0x0a, - 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x43, 0x55, 0x53, 0x54, 0x4f, - 0x4d, 0x4e, 0x45, 0x57, 0x4d, 0x53, 0x47, 0x10, 0xc9, 0x10, 0x12, 0x1e, 0x0a, 0x19, 0x50, 0x41, - 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x43, 0x55, 0x53, 0x54, 0x4f, 0x4d, 0x4e, 0x45, - 0x57, 0x4d, 0x53, 0x47, 0x41, 0x43, 0x4b, 0x10, 0xca, 0x10, 0x12, 0x15, 0x0a, 0x10, 0x50, 0x41, - 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x53, 0x52, 0x56, 0x4d, 0x53, 0x47, 0x10, 0xcb, - 0x10, 0x12, 0x1e, 0x0a, 0x19, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x46, - 0x49, 0x53, 0x48, 0x4a, 0x41, 0x43, 0x4b, 0x50, 0x4f, 0x54, 0x43, 0x4f, 0x49, 0x4e, 0x10, 0xcc, - 0x10, 0x12, 0x1e, 0x0a, 0x19, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x46, - 0x49, 0x53, 0x48, 0x4a, 0x41, 0x43, 0x4b, 0x50, 0x4f, 0x54, 0x43, 0x4f, 0x49, 0x4e, 0x10, 0xcd, - 0x10, 0x12, 0x1e, 0x0a, 0x19, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x46, - 0x49, 0x53, 0x48, 0x4a, 0x41, 0x43, 0x4b, 0x50, 0x4f, 0x54, 0x44, 0x41, 0x54, 0x41, 0x10, 0xce, - 0x10, 0x12, 0x1e, 0x0a, 0x19, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x46, - 0x49, 0x53, 0x48, 0x4a, 0x41, 0x43, 0x4b, 0x50, 0x4f, 0x54, 0x44, 0x41, 0x54, 0x41, 0x10, 0xcf, - 0x10, 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x4e, - 0x49, 0x43, 0x45, 0x49, 0x44, 0x52, 0x45, 0x42, 0x49, 0x4e, 0x44, 0x10, 0xd0, 0x10, 0x12, 0x1b, - 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x42, 0x49, 0x4e, 0x44, - 0x50, 0x52, 0x4f, 0x4d, 0x4f, 0x54, 0x45, 0x52, 0x10, 0xd1, 0x10, 0x12, 0x1b, 0x0a, 0x16, 0x50, - 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x42, 0x49, 0x4e, 0x44, 0x50, 0x52, 0x4f, - 0x4d, 0x4f, 0x54, 0x45, 0x52, 0x10, 0xd2, 0x10, 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x41, 0x43, 0x4b, - 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x42, 0x49, 0x4e, 0x44, 0x50, 0x52, 0x4f, 0x4d, 0x4f, 0x54, - 0x45, 0x52, 0x53, 0x54, 0x41, 0x54, 0x45, 0x10, 0xd3, 0x10, 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x41, - 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x47, 0x65, 0x74, 0x53, 0x70, 0x72, 0x65, 0x61, - 0x64, 0x4c, 0x57, 0x49, 0x73, 0x4f, 0x70, 0x65, 0x6e, 0x10, 0xd4, 0x10, 0x12, 0x20, 0x0a, 0x1b, - 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x47, 0x65, 0x74, 0x53, 0x70, 0x72, - 0x65, 0x61, 0x64, 0x4c, 0x57, 0x49, 0x73, 0x4f, 0x70, 0x65, 0x6e, 0x10, 0xd5, 0x10, 0x12, 0x1b, - 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x50, 0x61, 0x79, 0x41, - 0x63, 0x74, 0x5f, 0x53, 0x74, 0x61, 0x74, 0x65, 0x10, 0xd6, 0x10, 0x12, 0x19, 0x0a, 0x14, 0x50, - 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x4e, - 0x49, 0x43, 0x4b, 0x10, 0xdc, 0x10, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, - 0x5f, 0x53, 0x43, 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x4e, 0x49, 0x43, 0x4b, 0x10, 0xdd, - 0x10, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x43, - 0x48, 0x41, 0x4e, 0x47, 0x45, 0x49, 0x43, 0x4f, 0x4e, 0x10, 0xde, 0x10, 0x12, 0x19, 0x0a, 0x14, - 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, - 0x49, 0x43, 0x4f, 0x4e, 0x10, 0xdf, 0x10, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, - 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x53, 0x45, 0x58, 0x10, 0xe0, - 0x10, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x43, - 0x48, 0x41, 0x4e, 0x47, 0x45, 0x53, 0x45, 0x58, 0x10, 0xe1, 0x10, 0x12, 0x1d, 0x0a, 0x18, 0x50, - 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x55, 0x50, 0x47, 0x52, 0x41, 0x44, 0x45, - 0x41, 0x43, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x10, 0xe2, 0x10, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, - 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x55, 0x50, 0x47, 0x52, 0x41, 0x44, 0x45, 0x41, - 0x43, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x10, 0xe3, 0x10, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, - 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x42, 0x49, 0x4e, 0x44, 0x41, 0x4c, 0x49, 0x50, 0x41, - 0x59, 0x10, 0xe4, 0x10, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, - 0x43, 0x5f, 0x42, 0x49, 0x4e, 0x44, 0x41, 0x4c, 0x49, 0x50, 0x41, 0x59, 0x10, 0xe5, 0x10, 0x12, - 0x17, 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x42, 0x49, 0x4e, - 0x44, 0x42, 0x41, 0x4e, 0x4b, 0x10, 0xe6, 0x10, 0x12, 0x17, 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, - 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x42, 0x49, 0x4e, 0x44, 0x42, 0x41, 0x4e, 0x4b, 0x10, 0xe7, - 0x10, 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x50, - 0x4c, 0x41, 0x59, 0x45, 0x52, 0x4f, 0x50, 0x43, 0x4f, 0x49, 0x4e, 0x10, 0xe8, 0x10, 0x12, 0x1b, - 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x50, 0x4c, 0x41, 0x59, - 0x45, 0x52, 0x4f, 0x50, 0x43, 0x4f, 0x49, 0x4e, 0x10, 0xe9, 0x10, 0x12, 0x1d, 0x0a, 0x18, 0x50, - 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x50, - 0x41, 0x53, 0x53, 0x57, 0x4f, 0x52, 0x44, 0x10, 0xea, 0x10, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, - 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x50, 0x41, - 0x53, 0x53, 0x57, 0x4f, 0x52, 0x44, 0x10, 0xeb, 0x10, 0x12, 0x1f, 0x0a, 0x1a, 0x50, 0x41, 0x43, - 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x56, 0x45, 0x52, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, - 0x49, 0x4f, 0x4e, 0x43, 0x4f, 0x44, 0x45, 0x10, 0xec, 0x10, 0x12, 0x1f, 0x0a, 0x1a, 0x50, 0x41, - 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x56, 0x45, 0x52, 0x49, 0x46, 0x49, 0x43, 0x41, - 0x54, 0x49, 0x4f, 0x4e, 0x43, 0x4f, 0x44, 0x45, 0x10, 0xed, 0x10, 0x12, 0x1d, 0x0a, 0x18, 0x50, - 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x47, 0x45, 0x54, 0x47, 0x41, 0x4d, 0x45, - 0x43, 0x4f, 0x49, 0x4e, 0x4c, 0x4f, 0x47, 0x10, 0xee, 0x10, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, - 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x47, 0x45, 0x54, 0x47, 0x41, 0x4d, 0x45, 0x43, - 0x4f, 0x49, 0x4e, 0x4c, 0x4f, 0x47, 0x10, 0xef, 0x10, 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x41, 0x43, - 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x47, 0x45, 0x54, 0x53, 0x41, 0x46, 0x45, 0x42, 0x4f, - 0x58, 0x43, 0x4f, 0x49, 0x4e, 0x4c, 0x4f, 0x47, 0x10, 0xf0, 0x10, 0x12, 0x20, 0x0a, 0x1b, 0x50, - 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x47, 0x45, 0x54, 0x53, 0x41, 0x46, 0x45, - 0x42, 0x4f, 0x58, 0x43, 0x4f, 0x49, 0x4e, 0x4c, 0x4f, 0x47, 0x10, 0xf1, 0x10, 0x12, 0x17, 0x0a, - 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x52, 0x45, 0x47, 0x49, 0x53, - 0x54, 0x45, 0x52, 0x10, 0xf2, 0x10, 0x12, 0x17, 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, - 0x5f, 0x53, 0x43, 0x5f, 0x52, 0x45, 0x47, 0x49, 0x53, 0x54, 0x45, 0x52, 0x10, 0xf3, 0x10, 0x12, - 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x48, 0x45, 0x41, - 0x44, 0x4f, 0x55, 0x54, 0x4c, 0x49, 0x4e, 0x45, 0x10, 0xf4, 0x10, 0x12, 0x1a, 0x0a, 0x15, 0x50, - 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x48, 0x45, 0x41, 0x44, 0x4f, 0x55, 0x54, - 0x4c, 0x49, 0x4e, 0x45, 0x10, 0xf5, 0x10, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, - 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x49, 0x4e, 0x56, 0x49, 0x54, 0x45, 0x43, 0x4f, 0x44, 0x45, 0x10, - 0xf6, 0x10, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, - 0x49, 0x4e, 0x56, 0x49, 0x54, 0x45, 0x43, 0x4f, 0x44, 0x45, 0x10, 0xf7, 0x10, 0x12, 0x20, 0x0a, - 0x1b, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x57, 0x45, 0x42, 0x41, 0x50, - 0x49, 0x5f, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x50, 0x41, 0x53, 0x53, 0x10, 0xf8, 0x10, 0x12, - 0x20, 0x0a, 0x1b, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x57, 0x45, 0x42, - 0x41, 0x50, 0x49, 0x5f, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x50, 0x41, 0x53, 0x53, 0x10, 0xf9, - 0x10, 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x57, - 0x45, 0x42, 0x41, 0x50, 0x49, 0x5f, 0x53, 0x59, 0x53, 0x54, 0x45, 0x4d, 0x50, 0x41, 0x53, 0x53, - 0x10, 0xfa, 0x10, 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, - 0x5f, 0x57, 0x45, 0x42, 0x41, 0x50, 0x49, 0x5f, 0x53, 0x59, 0x53, 0x54, 0x45, 0x4d, 0x50, 0x41, - 0x53, 0x53, 0x10, 0xfb, 0x10, 0x12, 0x21, 0x0a, 0x1c, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, - 0x43, 0x53, 0x5f, 0x47, 0x45, 0x54, 0x49, 0x4d, 0x41, 0x47, 0x45, 0x56, 0x45, 0x52, 0x49, 0x46, - 0x59, 0x43, 0x4f, 0x44, 0x45, 0x10, 0xfc, 0x10, 0x12, 0x21, 0x0a, 0x1c, 0x50, 0x41, 0x43, 0x4b, - 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x47, 0x45, 0x54, 0x49, 0x4d, 0x41, 0x47, 0x45, 0x56, 0x45, - 0x52, 0x49, 0x46, 0x59, 0x43, 0x4f, 0x44, 0x45, 0x10, 0xfd, 0x10, 0x12, 0x22, 0x0a, 0x1d, 0x50, - 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x47, 0x45, 0x54, 0x53, 0x4c, 0x49, 0x44, - 0x45, 0x52, 0x56, 0x45, 0x52, 0x49, 0x46, 0x59, 0x43, 0x4f, 0x44, 0x45, 0x10, 0xfe, 0x10, 0x12, - 0x22, 0x0a, 0x1d, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x47, 0x45, 0x54, - 0x53, 0x4c, 0x49, 0x44, 0x45, 0x52, 0x56, 0x45, 0x52, 0x49, 0x46, 0x59, 0x43, 0x4f, 0x44, 0x45, - 0x10, 0xff, 0x10, 0x12, 0x1f, 0x0a, 0x1a, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, - 0x5f, 0x49, 0x4f, 0x53, 0x49, 0x4e, 0x53, 0x54, 0x41, 0x4c, 0x4c, 0x53, 0x54, 0x41, 0x42, 0x4c, - 0x45, 0x10, 0x80, 0x11, 0x12, 0x1f, 0x0a, 0x1a, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, - 0x43, 0x5f, 0x49, 0x4f, 0x53, 0x49, 0x4e, 0x53, 0x54, 0x41, 0x4c, 0x4c, 0x53, 0x54, 0x41, 0x42, - 0x4c, 0x45, 0x10, 0x81, 0x11, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, - 0x43, 0x53, 0x5f, 0x51, 0x55, 0x45, 0x52, 0x59, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x10, 0x82, - 0x11, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x51, - 0x55, 0x45, 0x52, 0x59, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x10, 0x83, 0x11, 0x12, 0x19, 0x0a, - 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x47, 0x45, 0x54, 0x44, 0x41, - 0x54, 0x41, 0x4c, 0x4f, 0x47, 0x10, 0x84, 0x11, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, - 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x47, 0x45, 0x54, 0x44, 0x41, 0x54, 0x41, 0x4c, 0x4f, 0x47, - 0x10, 0x85, 0x11, 0x12, 0x23, 0x0a, 0x1e, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, - 0x5f, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x52, 0x45, 0x43, 0x48, 0x41, 0x52, 0x47, 0x45, 0x41, - 0x4e, 0x53, 0x57, 0x45, 0x52, 0x10, 0x86, 0x11, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, - 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x46, 0x4c, 0x41, 0x47, - 0x10, 0x87, 0x11, 0x12, 0x1f, 0x0a, 0x1a, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, - 0x5f, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x43, 0x4f, 0x49, 0x4e, 0x43, 0x48, 0x41, 0x4e, 0x47, - 0x45, 0x10, 0x88, 0x11, 0x12, 0x1e, 0x0a, 0x19, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, - 0x43, 0x5f, 0x54, 0x52, 0x55, 0x53, 0x54, 0x45, 0x45, 0x53, 0x48, 0x49, 0x50, 0x54, 0x49, 0x50, - 0x53, 0x10, 0x89, 0x11, 0x12, 0x17, 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x41, - 0x4c, 0x4c, 0x5f, 0x53, 0x45, 0x54, 0x54, 0x49, 0x4e, 0x47, 0x10, 0x8a, 0x11, 0x12, 0x1d, 0x0a, - 0x18, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x47, 0x41, 0x4d, 0x45, 0x45, 0x58, - 0x44, 0x52, 0x4f, 0x50, 0x49, 0x54, 0x45, 0x4d, 0x53, 0x10, 0x8b, 0x11, 0x12, 0x15, 0x0a, 0x10, - 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x56, 0x49, 0x50, 0x42, 0x55, 0x59, - 0x10, 0x8c, 0x11, 0x12, 0x15, 0x0a, 0x10, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, - 0x5f, 0x56, 0x49, 0x50, 0x42, 0x55, 0x59, 0x10, 0x8d, 0x11, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, - 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x44, 0x52, 0x41, 0x57, 0x56, 0x49, 0x50, 0x47, - 0x49, 0x46, 0x54, 0x10, 0x8e, 0x11, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, - 0x5f, 0x53, 0x43, 0x5f, 0x44, 0x52, 0x41, 0x57, 0x56, 0x49, 0x50, 0x47, 0x49, 0x46, 0x54, 0x10, - 0x8f, 0x11, 0x12, 0x16, 0x0a, 0x11, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, - 0x56, 0x49, 0x50, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0x90, 0x11, 0x12, 0x16, 0x0a, 0x11, 0x50, 0x41, - 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x56, 0x49, 0x50, 0x49, 0x4e, 0x46, 0x4f, 0x10, - 0x91, 0x11, 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, - 0x53, 0x57, 0x45, 0x4c, 0x46, 0x41, 0x52, 0x45, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0x92, 0x11, 0x12, - 0x1f, 0x0a, 0x1a, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x56, 0x49, 0x50, - 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x10, 0x93, 0x11, - 0x12, 0x1f, 0x0a, 0x1a, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x56, 0x49, - 0x50, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x10, 0x94, - 0x11, 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x50, - 0x41, 0x59, 0x47, 0x4f, 0x4f, 0x44, 0x53, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0x95, 0x11, 0x12, 0x17, - 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x52, 0x45, 0x53, 0x4f, - 0x55, 0x52, 0x43, 0x45, 0x10, 0x96, 0x11, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, - 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x43, 0x4c, 0x49, 0x45, 0x4e, 0x54, 0x5f, 0x4c, 0x4f, 0x47, 0x10, - 0x97, 0x11, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, - 0x43, 0x4c, 0x49, 0x45, 0x4e, 0x54, 0x5f, 0x4c, 0x4f, 0x47, 0x10, 0x98, 0x11, 0x12, 0x18, 0x0a, - 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x48, 0x54, 0x54, 0x50, 0x5f, - 0x50, 0x41, 0x53, 0x53, 0x10, 0x99, 0x11, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, - 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x48, 0x54, 0x54, 0x50, 0x5f, 0x50, 0x41, 0x53, 0x53, 0x10, 0x9a, - 0x11, 0x12, 0x1e, 0x0a, 0x19, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x49, - 0x6d, 0x61, 0x67, 0x65, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x43, 0x6f, 0x64, 0x65, 0x10, 0x9b, - 0x11, 0x12, 0x1e, 0x0a, 0x19, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x49, - 0x6d, 0x61, 0x67, 0x65, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x43, 0x6f, 0x64, 0x65, 0x10, 0x9c, - 0x11, 0x12, 0x16, 0x0a, 0x11, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x48, - 0x65, 0x61, 0x64, 0x55, 0x72, 0x6c, 0x10, 0xf1, 0x15, 0x12, 0x16, 0x0a, 0x11, 0x50, 0x41, 0x43, - 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x48, 0x65, 0x61, 0x64, 0x55, 0x72, 0x6c, 0x10, 0xf2, - 0x15, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x50, - 0x6c, 0x61, 0x79, 0x65, 0x72, 0x55, 0x6e, 0x50, 0x6f, 0x77, 0x65, 0x72, 0x10, 0xf3, 0x15, 0x12, - 0x20, 0x0a, 0x1b, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x50, 0x6c, 0x61, - 0x79, 0x65, 0x72, 0x55, 0x6e, 0x50, 0x6f, 0x77, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x10, 0xf4, - 0x15, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x50, - 0x6c, 0x61, 0x79, 0x65, 0x72, 0x55, 0x70, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x10, 0xf5, 0x15, 0x12, - 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x50, 0x6c, 0x61, 0x79, - 0x65, 0x72, 0x53, 0x4d, 0x53, 0x43, 0x6f, 0x64, 0x65, 0x10, 0xf6, 0x15, 0x12, 0x1b, 0x0a, 0x16, - 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x53, - 0x4d, 0x53, 0x43, 0x6f, 0x64, 0x65, 0x10, 0xf7, 0x15, 0x12, 0x15, 0x0a, 0x10, 0x50, 0x41, 0x43, - 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x42, 0x69, 0x6e, 0x64, 0x54, 0x65, 0x6c, 0x10, 0xf8, 0x15, - 0x12, 0x15, 0x0a, 0x10, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x42, 0x69, 0x6e, - 0x64, 0x54, 0x65, 0x6c, 0x10, 0xf9, 0x15, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, - 0x54, 0x5f, 0x43, 0x53, 0x42, 0x69, 0x6e, 0x64, 0x54, 0x65, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x10, - 0xfa, 0x15, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x42, - 0x69, 0x6e, 0x64, 0x54, 0x65, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x10, 0xfb, 0x15, 0x12, 0x16, 0x0a, - 0x11, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x42, 0x69, 0x6c, 0x6c, 0x4c, 0x69, - 0x73, 0x74, 0x10, 0xfc, 0x15, 0x12, 0x16, 0x0a, 0x11, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, - 0x53, 0x43, 0x42, 0x69, 0x6c, 0x6c, 0x4c, 0x69, 0x73, 0x74, 0x10, 0xfd, 0x15, 0x12, 0x1c, 0x0a, - 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x53, 0x61, 0x76, 0x65, 0x50, 0x6c, - 0x61, 0x79, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x10, 0xfe, 0x15, 0x12, 0x1c, 0x0a, 0x17, 0x50, - 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x53, 0x61, 0x76, 0x65, 0x50, 0x6c, 0x61, 0x79, - 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x10, 0xff, 0x15, 0x12, 0x1f, 0x0a, 0x1a, 0x50, 0x41, 0x43, - 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x4c, 0x6f, 0x74, 0x74, - 0x65, 0x72, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x10, 0x80, 0x16, 0x12, 0x1f, 0x0a, 0x1a, 0x50, 0x41, - 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x4c, 0x6f, 0x74, - 0x74, 0x65, 0x72, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x10, 0x81, 0x16, 0x12, 0x1b, 0x0a, 0x16, 0x50, - 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x4c, 0x6f, - 0x74, 0x74, 0x65, 0x72, 0x79, 0x10, 0x82, 0x16, 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, - 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x4c, 0x6f, 0x74, 0x74, 0x65, - 0x72, 0x79, 0x10, 0x83, 0x16, 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, - 0x53, 0x43, 0x5f, 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x43, - 0x6f, 0x75, 0x6e, 0x74, 0x10, 0x84, 0x16, 0x12, 0x11, 0x0a, 0x0c, 0x50, 0x41, 0x43, 0x4b, 0x45, - 0x54, 0x5f, 0x43, 0x53, 0x41, 0x44, 0x56, 0x10, 0x85, 0x16, 0x12, 0x11, 0x0a, 0x0c, 0x50, 0x41, - 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x41, 0x44, 0x56, 0x10, 0x86, 0x16, 0x12, 0x1e, 0x0a, - 0x19, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x47, 0x65, 0x74, 0x57, 0x65, 0x65, - 0x6b, 0x43, 0x61, 0x72, 0x64, 0x41, 0x77, 0x61, 0x72, 0x79, 0x10, 0x87, 0x16, 0x42, 0x26, 0x5a, - 0x24, 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, 0x70, - 0x6c, 0x61, 0x79, 0x65, 0x72, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x59, 0x45, 0x52, 0x4f, 0x50, 0x43, 0x4f, 0x49, 0x4e, 0x10, 0xe9, 0x10, 0x12, 0x1d, 0x0a, 0x18, + 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, + 0x50, 0x41, 0x53, 0x53, 0x57, 0x4f, 0x52, 0x44, 0x10, 0xea, 0x10, 0x12, 0x1d, 0x0a, 0x18, 0x50, + 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x50, + 0x41, 0x53, 0x53, 0x57, 0x4f, 0x52, 0x44, 0x10, 0xeb, 0x10, 0x12, 0x1f, 0x0a, 0x1a, 0x50, 0x41, + 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x56, 0x45, 0x52, 0x49, 0x46, 0x49, 0x43, 0x41, + 0x54, 0x49, 0x4f, 0x4e, 0x43, 0x4f, 0x44, 0x45, 0x10, 0xec, 0x10, 0x12, 0x1f, 0x0a, 0x1a, 0x50, + 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x56, 0x45, 0x52, 0x49, 0x46, 0x49, 0x43, + 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x43, 0x4f, 0x44, 0x45, 0x10, 0xed, 0x10, 0x12, 0x1d, 0x0a, 0x18, + 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x47, 0x45, 0x54, 0x47, 0x41, 0x4d, + 0x45, 0x43, 0x4f, 0x49, 0x4e, 0x4c, 0x4f, 0x47, 0x10, 0xee, 0x10, 0x12, 0x1d, 0x0a, 0x18, 0x50, + 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x47, 0x45, 0x54, 0x47, 0x41, 0x4d, 0x45, + 0x43, 0x4f, 0x49, 0x4e, 0x4c, 0x4f, 0x47, 0x10, 0xef, 0x10, 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x41, + 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x47, 0x45, 0x54, 0x53, 0x41, 0x46, 0x45, 0x42, + 0x4f, 0x58, 0x43, 0x4f, 0x49, 0x4e, 0x4c, 0x4f, 0x47, 0x10, 0xf0, 0x10, 0x12, 0x20, 0x0a, 0x1b, + 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x47, 0x45, 0x54, 0x53, 0x41, 0x46, + 0x45, 0x42, 0x4f, 0x58, 0x43, 0x4f, 0x49, 0x4e, 0x4c, 0x4f, 0x47, 0x10, 0xf1, 0x10, 0x12, 0x17, + 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x52, 0x45, 0x47, 0x49, + 0x53, 0x54, 0x45, 0x52, 0x10, 0xf2, 0x10, 0x12, 0x17, 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, + 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x52, 0x45, 0x47, 0x49, 0x53, 0x54, 0x45, 0x52, 0x10, 0xf3, 0x10, + 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x48, 0x45, + 0x41, 0x44, 0x4f, 0x55, 0x54, 0x4c, 0x49, 0x4e, 0x45, 0x10, 0xf4, 0x10, 0x12, 0x1a, 0x0a, 0x15, + 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x48, 0x45, 0x41, 0x44, 0x4f, 0x55, + 0x54, 0x4c, 0x49, 0x4e, 0x45, 0x10, 0xf5, 0x10, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, + 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x49, 0x4e, 0x56, 0x49, 0x54, 0x45, 0x43, 0x4f, 0x44, 0x45, + 0x10, 0xf6, 0x10, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, + 0x5f, 0x49, 0x4e, 0x56, 0x49, 0x54, 0x45, 0x43, 0x4f, 0x44, 0x45, 0x10, 0xf7, 0x10, 0x12, 0x20, + 0x0a, 0x1b, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x57, 0x45, 0x42, 0x41, + 0x50, 0x49, 0x5f, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x50, 0x41, 0x53, 0x53, 0x10, 0xf8, 0x10, + 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x57, 0x45, + 0x42, 0x41, 0x50, 0x49, 0x5f, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x50, 0x41, 0x53, 0x53, 0x10, + 0xf9, 0x10, 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, + 0x57, 0x45, 0x42, 0x41, 0x50, 0x49, 0x5f, 0x53, 0x59, 0x53, 0x54, 0x45, 0x4d, 0x50, 0x41, 0x53, + 0x53, 0x10, 0xfa, 0x10, 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, + 0x43, 0x5f, 0x57, 0x45, 0x42, 0x41, 0x50, 0x49, 0x5f, 0x53, 0x59, 0x53, 0x54, 0x45, 0x4d, 0x50, + 0x41, 0x53, 0x53, 0x10, 0xfb, 0x10, 0x12, 0x21, 0x0a, 0x1c, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, + 0x5f, 0x43, 0x53, 0x5f, 0x47, 0x45, 0x54, 0x49, 0x4d, 0x41, 0x47, 0x45, 0x56, 0x45, 0x52, 0x49, + 0x46, 0x59, 0x43, 0x4f, 0x44, 0x45, 0x10, 0xfc, 0x10, 0x12, 0x21, 0x0a, 0x1c, 0x50, 0x41, 0x43, + 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x47, 0x45, 0x54, 0x49, 0x4d, 0x41, 0x47, 0x45, 0x56, + 0x45, 0x52, 0x49, 0x46, 0x59, 0x43, 0x4f, 0x44, 0x45, 0x10, 0xfd, 0x10, 0x12, 0x22, 0x0a, 0x1d, + 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x47, 0x45, 0x54, 0x53, 0x4c, 0x49, + 0x44, 0x45, 0x52, 0x56, 0x45, 0x52, 0x49, 0x46, 0x59, 0x43, 0x4f, 0x44, 0x45, 0x10, 0xfe, 0x10, + 0x12, 0x22, 0x0a, 0x1d, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x47, 0x45, + 0x54, 0x53, 0x4c, 0x49, 0x44, 0x45, 0x52, 0x56, 0x45, 0x52, 0x49, 0x46, 0x59, 0x43, 0x4f, 0x44, + 0x45, 0x10, 0xff, 0x10, 0x12, 0x1f, 0x0a, 0x1a, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, + 0x53, 0x5f, 0x49, 0x4f, 0x53, 0x49, 0x4e, 0x53, 0x54, 0x41, 0x4c, 0x4c, 0x53, 0x54, 0x41, 0x42, + 0x4c, 0x45, 0x10, 0x80, 0x11, 0x12, 0x1f, 0x0a, 0x1a, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, + 0x53, 0x43, 0x5f, 0x49, 0x4f, 0x53, 0x49, 0x4e, 0x53, 0x54, 0x41, 0x4c, 0x4c, 0x53, 0x54, 0x41, + 0x42, 0x4c, 0x45, 0x10, 0x81, 0x11, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, + 0x5f, 0x43, 0x53, 0x5f, 0x51, 0x55, 0x45, 0x52, 0x59, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x10, + 0x82, 0x11, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, + 0x51, 0x55, 0x45, 0x52, 0x59, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x10, 0x83, 0x11, 0x12, 0x19, + 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x47, 0x45, 0x54, 0x44, + 0x41, 0x54, 0x41, 0x4c, 0x4f, 0x47, 0x10, 0x84, 0x11, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, + 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x47, 0x45, 0x54, 0x44, 0x41, 0x54, 0x41, 0x4c, 0x4f, + 0x47, 0x10, 0x85, 0x11, 0x12, 0x23, 0x0a, 0x1e, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, + 0x43, 0x5f, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x52, 0x45, 0x43, 0x48, 0x41, 0x52, 0x47, 0x45, + 0x41, 0x4e, 0x53, 0x57, 0x45, 0x52, 0x10, 0x86, 0x11, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, + 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x46, 0x4c, 0x41, + 0x47, 0x10, 0x87, 0x11, 0x12, 0x1f, 0x0a, 0x1a, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, + 0x43, 0x5f, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x43, 0x4f, 0x49, 0x4e, 0x43, 0x48, 0x41, 0x4e, + 0x47, 0x45, 0x10, 0x88, 0x11, 0x12, 0x1e, 0x0a, 0x19, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, + 0x53, 0x43, 0x5f, 0x54, 0x52, 0x55, 0x53, 0x54, 0x45, 0x45, 0x53, 0x48, 0x49, 0x50, 0x54, 0x49, + 0x50, 0x53, 0x10, 0x89, 0x11, 0x12, 0x17, 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, + 0x41, 0x4c, 0x4c, 0x5f, 0x53, 0x45, 0x54, 0x54, 0x49, 0x4e, 0x47, 0x10, 0x8a, 0x11, 0x12, 0x1d, + 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x47, 0x41, 0x4d, 0x45, 0x45, + 0x58, 0x44, 0x52, 0x4f, 0x50, 0x49, 0x54, 0x45, 0x4d, 0x53, 0x10, 0x8b, 0x11, 0x12, 0x15, 0x0a, + 0x10, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x56, 0x49, 0x50, 0x42, 0x55, + 0x59, 0x10, 0x8c, 0x11, 0x12, 0x15, 0x0a, 0x10, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, + 0x43, 0x5f, 0x56, 0x49, 0x50, 0x42, 0x55, 0x59, 0x10, 0x8d, 0x11, 0x12, 0x1a, 0x0a, 0x15, 0x50, + 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x44, 0x52, 0x41, 0x57, 0x56, 0x49, 0x50, + 0x47, 0x49, 0x46, 0x54, 0x10, 0x8e, 0x11, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, + 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x44, 0x52, 0x41, 0x57, 0x56, 0x49, 0x50, 0x47, 0x49, 0x46, 0x54, + 0x10, 0x8f, 0x11, 0x12, 0x16, 0x0a, 0x11, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, + 0x5f, 0x56, 0x49, 0x50, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0x90, 0x11, 0x12, 0x16, 0x0a, 0x11, 0x50, + 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x56, 0x49, 0x50, 0x49, 0x4e, 0x46, 0x4f, + 0x10, 0x91, 0x11, 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, + 0x5f, 0x53, 0x57, 0x45, 0x4c, 0x46, 0x41, 0x52, 0x45, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0x92, 0x11, + 0x12, 0x1f, 0x0a, 0x1a, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x56, 0x49, + 0x50, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x10, 0x93, + 0x11, 0x12, 0x1f, 0x0a, 0x1a, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x56, + 0x49, 0x50, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x10, + 0x94, 0x11, 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, + 0x50, 0x41, 0x59, 0x47, 0x4f, 0x4f, 0x44, 0x53, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0x95, 0x11, 0x12, + 0x17, 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x52, 0x45, 0x53, + 0x4f, 0x55, 0x52, 0x43, 0x45, 0x10, 0x96, 0x11, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, + 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x43, 0x4c, 0x49, 0x45, 0x4e, 0x54, 0x5f, 0x4c, 0x4f, 0x47, + 0x10, 0x97, 0x11, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, + 0x5f, 0x43, 0x4c, 0x49, 0x45, 0x4e, 0x54, 0x5f, 0x4c, 0x4f, 0x47, 0x10, 0x98, 0x11, 0x12, 0x18, + 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x48, 0x54, 0x54, 0x50, + 0x5f, 0x50, 0x41, 0x53, 0x53, 0x10, 0x99, 0x11, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, + 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x48, 0x54, 0x54, 0x50, 0x5f, 0x50, 0x41, 0x53, 0x53, 0x10, + 0x9a, 0x11, 0x12, 0x1e, 0x0a, 0x19, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, + 0x49, 0x6d, 0x61, 0x67, 0x65, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x43, 0x6f, 0x64, 0x65, 0x10, + 0x9b, 0x11, 0x12, 0x1e, 0x0a, 0x19, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, + 0x49, 0x6d, 0x61, 0x67, 0x65, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x43, 0x6f, 0x64, 0x65, 0x10, + 0x9c, 0x11, 0x12, 0x16, 0x0a, 0x11, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, + 0x48, 0x65, 0x61, 0x64, 0x55, 0x72, 0x6c, 0x10, 0xf1, 0x15, 0x12, 0x16, 0x0a, 0x11, 0x50, 0x41, + 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x48, 0x65, 0x61, 0x64, 0x55, 0x72, 0x6c, 0x10, + 0xf2, 0x15, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, + 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x55, 0x6e, 0x50, 0x6f, 0x77, 0x65, 0x72, 0x10, 0xf3, 0x15, + 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x50, 0x6c, + 0x61, 0x79, 0x65, 0x72, 0x55, 0x6e, 0x50, 0x6f, 0x77, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x10, + 0xf4, 0x15, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, + 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x55, 0x70, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x10, 0xf5, 0x15, + 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x50, 0x6c, 0x61, + 0x79, 0x65, 0x72, 0x53, 0x4d, 0x53, 0x43, 0x6f, 0x64, 0x65, 0x10, 0xf6, 0x15, 0x12, 0x1b, 0x0a, + 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, + 0x53, 0x4d, 0x53, 0x43, 0x6f, 0x64, 0x65, 0x10, 0xf7, 0x15, 0x12, 0x15, 0x0a, 0x10, 0x50, 0x41, + 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x42, 0x69, 0x6e, 0x64, 0x54, 0x65, 0x6c, 0x10, 0xf8, + 0x15, 0x12, 0x15, 0x0a, 0x10, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x42, 0x69, + 0x6e, 0x64, 0x54, 0x65, 0x6c, 0x10, 0xf9, 0x15, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, + 0x45, 0x54, 0x5f, 0x43, 0x53, 0x42, 0x69, 0x6e, 0x64, 0x54, 0x65, 0x6c, 0x49, 0x6e, 0x66, 0x6f, + 0x10, 0xfa, 0x15, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, + 0x42, 0x69, 0x6e, 0x64, 0x54, 0x65, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x10, 0xfb, 0x15, 0x12, 0x16, + 0x0a, 0x11, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x42, 0x69, 0x6c, 0x6c, 0x4c, + 0x69, 0x73, 0x74, 0x10, 0xfc, 0x15, 0x12, 0x16, 0x0a, 0x11, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, + 0x5f, 0x53, 0x43, 0x42, 0x69, 0x6c, 0x6c, 0x4c, 0x69, 0x73, 0x74, 0x10, 0xfd, 0x15, 0x12, 0x1c, + 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x53, 0x61, 0x76, 0x65, 0x50, + 0x6c, 0x61, 0x79, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x10, 0xfe, 0x15, 0x12, 0x1c, 0x0a, 0x17, + 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x53, 0x61, 0x76, 0x65, 0x50, 0x6c, 0x61, + 0x79, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x10, 0xff, 0x15, 0x12, 0x1f, 0x0a, 0x1a, 0x50, 0x41, + 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x4c, 0x6f, 0x74, + 0x74, 0x65, 0x72, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x10, 0x80, 0x16, 0x12, 0x1f, 0x0a, 0x1a, 0x50, + 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x4c, 0x6f, + 0x74, 0x74, 0x65, 0x72, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x10, 0x81, 0x16, 0x12, 0x1b, 0x0a, 0x16, + 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x4c, + 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x10, 0x82, 0x16, 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, + 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x4c, 0x6f, 0x74, 0x74, + 0x65, 0x72, 0x79, 0x10, 0x83, 0x16, 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, + 0x5f, 0x53, 0x43, 0x5f, 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, + 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x10, 0x84, 0x16, 0x12, 0x11, 0x0a, 0x0c, 0x50, 0x41, 0x43, 0x4b, + 0x45, 0x54, 0x5f, 0x43, 0x53, 0x41, 0x44, 0x56, 0x10, 0x85, 0x16, 0x12, 0x11, 0x0a, 0x0c, 0x50, + 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x41, 0x44, 0x56, 0x10, 0x86, 0x16, 0x12, 0x1e, + 0x0a, 0x19, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x47, 0x65, 0x74, 0x57, 0x65, + 0x65, 0x6b, 0x43, 0x61, 0x72, 0x64, 0x41, 0x77, 0x61, 0x72, 0x79, 0x10, 0x87, 0x16, 0x12, 0x19, + 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x50, 0x69, 0x67, 0x42, 0x61, + 0x6e, 0x6b, 0x43, 0x6f, 0x69, 0x6e, 0x10, 0x88, 0x16, 0x42, 0x26, 0x5a, 0x24, 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, 0x70, 0x6c, 0x61, 0x79, 0x65, + 0x72, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -10627,7 +10704,7 @@ func file_player_proto_rawDescGZIP() []byte { } var file_player_proto_enumTypes = make([]protoimpl.EnumInfo, 2) -var file_player_proto_msgTypes = make([]protoimpl.MessageInfo, 135) +var file_player_proto_msgTypes = make([]protoimpl.MessageInfo, 136) var file_player_proto_goTypes = []interface{}{ (OpResultCode)(0), // 0: player.OpResultCode (PlayerPacketID)(0), // 1: player.PlayerPacketID @@ -10762,20 +10839,21 @@ var file_player_proto_goTypes = []interface{}{ (*CSADV)(nil), // 130: player.CSADV (*SCADV)(nil), // 131: player.SCADV (*SCGetWeekCardAwary)(nil), // 132: player.SCGetWeekCardAwary - nil, // 133: player.PlayerData.RankScoreEntry - nil, // 134: player.SCPlayerDataUpdate.RankScoreEntry - nil, // 135: player.SCGameExDropItems.ItemsEntry - nil, // 136: player.SCBindTelInfo.BindTelRewardEntry + (*SCPigBankCoin)(nil), // 133: player.SCPigBankCoin + nil, // 134: player.PlayerData.RankScoreEntry + nil, // 135: player.SCPlayerDataUpdate.RankScoreEntry + nil, // 136: player.SCGameExDropItems.ItemsEntry + nil, // 137: player.SCBindTelInfo.BindTelRewardEntry } var file_player_proto_depIdxs = []int32{ 4, // 0: player.SCBillList.Items:type_name -> player.BillItem 0, // 1: player.SCSavePlayerInfo.OpRetCode:type_name -> player.OpResultCode - 133, // 2: player.PlayerData.RankScore:type_name -> player.PlayerData.RankScoreEntry + 134, // 2: player.PlayerData.RankScore:type_name -> player.PlayerData.RankScoreEntry 9, // 3: player.PlayerData.WeekCard:type_name -> player.WeekInfo 0, // 4: player.SCPlayerData.OpRetCode:type_name -> player.OpResultCode 8, // 5: player.SCPlayerData.Data:type_name -> player.PlayerData 10, // 6: player.SCPlayerData.MiniGameArr:type_name -> player.MiniGameInfo - 134, // 7: player.SCPlayerDataUpdate.RankScore:type_name -> player.SCPlayerDataUpdate.RankScoreEntry + 135, // 7: player.SCPlayerDataUpdate.RankScore:type_name -> player.SCPlayerDataUpdate.RankScoreEntry 8, // 8: player.SCThirdPlayerData.Data:type_name -> player.PlayerData 0, // 9: player.SCChangeNick.OpRetCode:type_name -> player.OpResultCode 0, // 10: player.SCChangePassword.OpRetCode:type_name -> player.OpResultCode @@ -10812,7 +10890,7 @@ var file_player_proto_depIdxs = []int32{ 93, // 41: player.JybInfoAward.ItemId:type_name -> player.ItemInfo 0, // 42: player.SCPlayerSetting.OpRetCode:type_name -> player.OpResultCode 94, // 43: player.SCPlayerSetting.GainItem:type_name -> player.JybInfoAward - 135, // 44: player.SCGameExDropItems.Items:type_name -> player.SCGameExDropItems.ItemsEntry + 136, // 44: player.SCGameExDropItems.Items:type_name -> player.SCGameExDropItems.ItemsEntry 0, // 45: player.SCVIPBuy.OpRetCode:type_name -> player.OpResultCode 0, // 46: player.SCVIPDraw.OpRetCode:type_name -> player.OpResultCode 93, // 47: player.VIPcfg.Item:type_name -> player.ItemInfo @@ -10821,7 +10899,7 @@ var file_player_proto_depIdxs = []int32{ 103, // 50: player.SCVIPInfo.List:type_name -> player.VIPcfg 108, // 51: player.SCPayGoodsInfo.Item:type_name -> player.PayItem 0, // 52: player.SCClientLog.OpRetCode:type_name -> player.OpResultCode - 136, // 53: player.SCBindTelInfo.BindTelReward:type_name -> player.SCBindTelInfo.BindTelRewardEntry + 137, // 53: player.SCBindTelInfo.BindTelReward:type_name -> player.SCBindTelInfo.BindTelRewardEntry 0, // 54: player.SCPlayerSMSCode.Code:type_name -> player.OpResultCode 0, // 55: player.SCBindTel.Code:type_name -> player.OpResultCode 0, // 56: player.SCHttpPass.OpRetCode:type_name -> player.OpResultCode @@ -12414,6 +12492,18 @@ func file_player_proto_init() { return nil } } + file_player_proto_msgTypes[131].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SCPigBankCoin); 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{ @@ -12421,7 +12511,7 @@ func file_player_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_player_proto_rawDesc, NumEnums: 2, - NumMessages: 135, + NumMessages: 136, NumExtensions: 0, NumServices: 0, }, diff --git a/protocol/player/player.proto b/protocol/player/player.proto index 958569d..5ce93ab 100644 --- a/protocol/player/player.proto +++ b/protocol/player/player.proto @@ -204,7 +204,7 @@ enum PlayerPacketID { PACKET_CSADV = 2821; // 看广告 PACKET_SCADV = 2822; // 看广告 PACKET_SCGetWeekCardAwary = 2823;//领取周卡每日奖励返回 - + PACKET_SCPigBankCoin = 2824;//存钱罐金币数量 } // 账变记录 @@ -1168,4 +1168,12 @@ message SCGetWeekCardAwary{ repeated PayItem Items =2; bool weekCardAward = 3; WeekInfo WeekCard = 4;//周卡 -} \ No newline at end of file +} + +//存钱罐金币数量 +// PACKET_SCPigBankCoin +message SCPigBankCoin { + int64 BankCoin = 1; + int64 BankCoinMax = 2; + int64 AddBankCoin = 3; +} diff --git a/protocol/tienlen/tienlen.pb.go b/protocol/tienlen/tienlen.pb.go index ba0e6c1..39d78f4 100644 --- a/protocol/tienlen/tienlen.pb.go +++ b/protocol/tienlen/tienlen.pb.go @@ -196,6 +196,7 @@ type TienLenPlayerData struct { 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"` //存钱罐金币 } func (x *TienLenPlayerData) Reset() { @@ -426,6 +427,13 @@ func (x *TienLenPlayerData) GetExp() int64 { return 0 } +func (x *TienLenPlayerData) GetPigBankCoin() int64 { + if x != nil { + return x.PigBankCoin + } + return 0 +} + type LastDelCard struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -2017,7 +2025,7 @@ var File_tienlen_proto protoreflect.FileDescriptor var file_tienlen_proto_rawDesc = []byte{ 0x0a, 0x0d, 0x74, 0x69, 0x65, 0x6e, 0x6c, 0x65, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, - 0x07, 0x74, 0x69, 0x65, 0x6e, 0x6c, 0x65, 0x6e, 0x22, 0xaa, 0x06, 0x0a, 0x11, 0x54, 0x69, 0x65, + 0x07, 0x74, 0x69, 0x65, 0x6e, 0x6c, 0x65, 0x6e, 0x22, 0xcc, 0x06, 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, @@ -2064,285 +2072,287 @@ var file_tienlen_proto_rawDesc = []byte{ 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, 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, 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, 0x06, 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, 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, + 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, 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, 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, 0x06, 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, 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, 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, 0x47, 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, 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, + 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, 0x47, 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, + 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, 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, 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, 0xb6, 0x04, 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, + 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, 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, 0xb6, 0x04, 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, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x10, 0xfa, 0x29, 0x12, 0x1e, 0x0a, 0x19, + 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, - 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, 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, - 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, 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, + 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, 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 ( diff --git a/protocol/tienlen/tienlen.proto b/protocol/tienlen/tienlen.proto index 2ac8cf7..ecad4c1 100644 --- a/protocol/tienlen/tienlen.proto +++ b/protocol/tienlen/tienlen.proto @@ -59,8 +59,9 @@ message TienLenPlayerData { int32 CopyRoleId = 24;//比赛场机器人假角色 int64 RankScore = 25; // 排位积分 int32 ThinkLongCnt = 26; // 长考次数 - int64 Level = 27; //玩家等级 - int64 Exp = 28; //玩家经验 + int64 Level = 27; //玩家等级 + int64 Exp = 28; //玩家经验 + int64 PigBankCoin = 29; //存钱罐金币 } message LastDelCard { diff --git a/protocol/welfare/welfare.pb.go b/protocol/welfare/welfare.pb.go index 09f34d2..54ab5f6 100644 --- a/protocol/welfare/welfare.pb.go +++ b/protocol/welfare/welfare.pb.go @@ -20,44 +20,50 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) -// 操作结果 +//操作结果 type OpResultCode int32 const ( - OpResultCode_OPRC_Sucess OpResultCode = 0 //成功 - OpResultCode_OPRC_Error OpResultCode = 1 //失败 - OpResultCode_OPRC_NoTimes OpResultCode = 2 //没有领取次数 - OpResultCode_OPRC_CoinTooMore OpResultCode = 3 // 金币过多不符合领取 - OpResultCode_OPRC_ErrCoin OpResultCode = 4 // 钻石不足 - OpResultCode_OPRC_AlreadyBind OpResultCode = 5 // 已经绑定过邀请人 - OpResultCode_OPRC_BindSelf OpResultCode = 6 // 邀请人不能是自己 - OpResultCode_OPRC_MyInvite OpResultCode = 7 // 邀请人不能是我邀请的人 - OpResultCode_OPRC_NotExist OpResultCode = 8 // 邀请人不存在 + OpResultCode_OPRC_Sucess OpResultCode = 0 //成功 + OpResultCode_OPRC_Error OpResultCode = 1 //失败 + OpResultCode_OPRC_NoTimes OpResultCode = 2 //没有领取次数 + OpResultCode_OPRC_CoinTooMore OpResultCode = 3 // 金币过多不符合领取 + OpResultCode_OPRC_ErrCoin OpResultCode = 4 // 钻石不足 + OpResultCode_OPRC_AlreadyBind OpResultCode = 5 // 已经绑定过邀请人 + OpResultCode_OPRC_BindSelf OpResultCode = 6 // 邀请人不能是自己 + OpResultCode_OPRC_MyInvite OpResultCode = 7 // 邀请人不能是我邀请的人 + OpResultCode_OPRC_NotExist OpResultCode = 8 // 邀请人不存在 + OpResultCode_OPRC_DiamondLess OpResultCode = 9 // 钻石不足 + OpResultCode_OPRC_PigbankNotFull OpResultCode = 10 // 存钱罐未满 ) // Enum value maps for OpResultCode. var ( OpResultCode_name = map[int32]string{ - 0: "OPRC_Sucess", - 1: "OPRC_Error", - 2: "OPRC_NoTimes", - 3: "OPRC_CoinTooMore", - 4: "OPRC_ErrCoin", - 5: "OPRC_AlreadyBind", - 6: "OPRC_BindSelf", - 7: "OPRC_MyInvite", - 8: "OPRC_NotExist", + 0: "OPRC_Sucess", + 1: "OPRC_Error", + 2: "OPRC_NoTimes", + 3: "OPRC_CoinTooMore", + 4: "OPRC_ErrCoin", + 5: "OPRC_AlreadyBind", + 6: "OPRC_BindSelf", + 7: "OPRC_MyInvite", + 8: "OPRC_NotExist", + 9: "OPRC_DiamondLess", + 10: "OPRC_PigbankNotFull", } OpResultCode_value = map[string]int32{ - "OPRC_Sucess": 0, - "OPRC_Error": 1, - "OPRC_NoTimes": 2, - "OPRC_CoinTooMore": 3, - "OPRC_ErrCoin": 4, - "OPRC_AlreadyBind": 5, - "OPRC_BindSelf": 6, - "OPRC_MyInvite": 7, - "OPRC_NotExist": 8, + "OPRC_Sucess": 0, + "OPRC_Error": 1, + "OPRC_NoTimes": 2, + "OPRC_CoinTooMore": 3, + "OPRC_ErrCoin": 4, + "OPRC_AlreadyBind": 5, + "OPRC_BindSelf": 6, + "OPRC_MyInvite": 7, + "OPRC_NotExist": 8, + "OPRC_DiamondLess": 9, + "OPRC_PigbankNotFull": 10, } ) @@ -224,8 +230,8 @@ func (SPacketID) EnumDescriptor() ([]byte, []int) { return file_welfare_proto_rawDescGZIP(), []int{1} } -// 救济金领取 -// PACKET_CS_WELF_GETRELIEFFUND +//救济金领取 +//PACKET_CS_WELF_GETRELIEFFUND type CSGetReliefFund struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -273,7 +279,7 @@ func (x *CSGetReliefFund) GetIsVideo() bool { return false } -// PACKET_SC_WELF_GETRELIEFFUND +//PACKET_SC_WELF_GETRELIEFFUND type SCGetReliefFund struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -408,8 +414,8 @@ func (x *WelfareDate) GetItem_Id() int32 { return 0 } -// 转动转盘 -// PACKET_CS_WELF_GETTURNPLATE +//转动转盘 +//PACKET_CS_WELF_GETTURNPLATE type CSGetTurnplate struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -457,7 +463,7 @@ func (x *CSGetTurnplate) GetIsVideo() bool { return false } -// PACKET_SC_WELF_GETTURNPLATE +//PACKET_SC_WELF_GETTURNPLATE type SCGetTurnplate struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -592,8 +598,8 @@ func (x *AddUpWelfareDate) GetAddUpDate() []*WelfareDate { return nil } -// 累计签到 -// PACKET_CS_WELF_GETADDUPSIGN +//累计签到 +//PACKET_CS_WELF_GETADDUPSIGN type CSGetAddupSign struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -641,7 +647,7 @@ func (x *CSGetAddupSign) GetAddUpDay() int32 { return 0 } -// PACKET_SC_WELF_GETADDUPSIGN +//PACKET_SC_WELF_GETADDUPSIGN type SCGetAddupSign struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -705,8 +711,8 @@ func (x *SCGetAddupSign) GetAddUpSignDay() []int32 { return nil } -// 福利信息 -// PACKET_CS_WELF_WELFAREINFO +//福利信息 +//PACKET_CS_WELF_WELFAREINFO type CSWelfaredInfo struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -863,7 +869,7 @@ func (x *Welfare7SignDate) GetAddUpDate() []*AddUpWelfareDate { return nil } -// PACKET_SC_WELF_WELFAREINFO +//PACKET_SC_WELF_WELFAREINFO type SCWelfaredInfo struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -1070,8 +1076,8 @@ func (x *BlindBoxData) GetItem_Id() int32 { return 0 } -// 查看盲盒 -// PACKET_CS_WELF_BLINBOXINFO +//查看盲盒 +//PACKET_CS_WELF_BLINBOXINFO type CSBlindBoxInfo struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -1119,7 +1125,7 @@ func (x *CSBlindBoxInfo) GetId() int32 { return 0 } -// PACKET_SC_WELF_BLINBOXINFO +//PACKET_SC_WELF_BLINBOXINFO type SCBlindBoxInfo struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -1199,8 +1205,8 @@ func (x *SCBlindBoxInfo) GetCycle() int32 { return 0 } -// 领取盲盒 -// PACKET_CS_WELF_GETBLINBOX +//领取盲盒 +//PACKET_CS_WELF_GETBLINBOX type CSGetBlindBox struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -1248,7 +1254,7 @@ func (x *CSGetBlindBox) GetId() int32 { return 0 } -// PACKET_SC_WELF_GETBLINBOX +//PACKET_SC_WELF_GETBLINBOX type SCGetBlindBox struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -1391,7 +1397,7 @@ func (x *WelfareSpree) GetDiscount() float64 { return 0 } -// PACKET_CS_WELF_FIRSTPAYINFO +//PACKET_CS_WELF_FIRSTPAYINFO type CSWelfareFirstPayData struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -1430,7 +1436,7 @@ func (*CSWelfareFirstPayData) Descriptor() ([]byte, []int) { return file_welfare_proto_rawDescGZIP(), []int{18} } -// PACKET_SC_WELF_FIRSTPAYINFO +//PACKET_SC_WELF_FIRSTPAYINFO type SCWelfareFirstPayData struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -1510,7 +1516,7 @@ func (x *SCWelfareFirstPayData) GetDraw() int32 { return 0 } -// PACKET_CS_WELF_FIRSTPAY +//PACKET_CS_WELF_FIRSTPAY type CSWelfareFirstPay struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -1549,7 +1555,7 @@ func (*CSWelfareFirstPay) Descriptor() ([]byte, []int) { return file_welfare_proto_rawDescGZIP(), []int{20} } -// PACKET_SC_WELF_FIRSTPAY +//PACKET_SC_WELF_FIRSTPAY type SCWelfareFirstPay struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -1597,7 +1603,7 @@ func (x *SCWelfareFirstPay) GetOpRetCode() OpResultCode { return OpResultCode_OPRC_Sucess } -// PACKET_CS_WELF_CONTINPAYINFO +//PACKET_CS_WELF_CONTINPAYINFO type CSWelfareContinuousPayData struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -1636,7 +1642,7 @@ func (*CSWelfareContinuousPayData) Descriptor() ([]byte, []int) { return file_welfare_proto_rawDescGZIP(), []int{22} } -// PACKET_SC_WELF_CONTINPAYINFO +//PACKET_SC_WELF_CONTINPAYINFO type SCWelfareContinuousPayData struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -1724,7 +1730,7 @@ func (x *SCWelfareContinuousPayData) GetDay() int32 { return 0 } -// PACKET_CS_WELF_CONTINPAY +//PACKET_CS_WELF_CONTINPAY type CSWelfareContinuousPay struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -1763,7 +1769,7 @@ func (*CSWelfareContinuousPay) Descriptor() ([]byte, []int) { return file_welfare_proto_rawDescGZIP(), []int{24} } -// PACKET_SC_WELF_CONTINPAY +//PACKET_SC_WELF_CONTINPAY type SCWelfareContinuousPay struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -2132,6 +2138,248 @@ func (x *SCBindInvite) GetOpRetCode() OpResultCode { return OpResultCode_OPRC_Sucess } +// 存钱罐信息 +//PACKET_CSPigbankGetInfo +type CSPigbankGetInfo struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *CSPigbankGetInfo) Reset() { + *x = CSPigbankGetInfo{} + if protoimpl.UnsafeEnabled { + mi := &file_welfare_proto_msgTypes[32] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CSPigbankGetInfo) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CSPigbankGetInfo) ProtoMessage() {} + +func (x *CSPigbankGetInfo) ProtoReflect() protoreflect.Message { + mi := &file_welfare_proto_msgTypes[32] + 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 CSPigbankGetInfo.ProtoReflect.Descriptor instead. +func (*CSPigbankGetInfo) Descriptor() ([]byte, []int) { + return file_welfare_proto_rawDescGZIP(), []int{32} +} + +// 存钱罐信息 +//PACKET_SCPigbankGetInfo +type SCPigbankGetInfo struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + OpRetCode OpResultCode `protobuf:"varint,1,opt,name=OpRetCode,proto3,enum=welfare.OpResultCode" json:"OpRetCode,omitempty"` //结果 + BankCoin int64 `protobuf:"varint,2,opt,name=BankCoin,proto3" json:"BankCoin,omitempty"` // 当前已存金额 + TakeTimes int32 `protobuf:"varint,3,opt,name=TakeTimes,proto3" json:"TakeTimes,omitempty"` // 领取次数 + CostDiamond int64 `protobuf:"varint,4,opt,name=CostDiamond,proto3" json:"CostDiamond,omitempty"` // 耗费钻石 + BankMaxCoin int64 `protobuf:"varint,5,opt,name=BankMaxCoin,proto3" json:"BankMaxCoin,omitempty"` // 存钱罐最储存值 +} + +func (x *SCPigbankGetInfo) Reset() { + *x = SCPigbankGetInfo{} + if protoimpl.UnsafeEnabled { + mi := &file_welfare_proto_msgTypes[33] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SCPigbankGetInfo) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SCPigbankGetInfo) ProtoMessage() {} + +func (x *SCPigbankGetInfo) ProtoReflect() protoreflect.Message { + mi := &file_welfare_proto_msgTypes[33] + 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 SCPigbankGetInfo.ProtoReflect.Descriptor instead. +func (*SCPigbankGetInfo) Descriptor() ([]byte, []int) { + return file_welfare_proto_rawDescGZIP(), []int{33} +} + +func (x *SCPigbankGetInfo) GetOpRetCode() OpResultCode { + if x != nil { + return x.OpRetCode + } + return OpResultCode_OPRC_Sucess +} + +func (x *SCPigbankGetInfo) GetBankCoin() int64 { + if x != nil { + return x.BankCoin + } + return 0 +} + +func (x *SCPigbankGetInfo) GetTakeTimes() int32 { + if x != nil { + return x.TakeTimes + } + return 0 +} + +func (x *SCPigbankGetInfo) GetCostDiamond() int64 { + if x != nil { + return x.CostDiamond + } + return 0 +} + +func (x *SCPigbankGetInfo) GetBankMaxCoin() int64 { + if x != nil { + return x.BankMaxCoin + } + return 0 +} + +// 存钱罐领取金币 +//PACKET_CSPigbankTakeCoin +type CSPigbankTakeCoin struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *CSPigbankTakeCoin) Reset() { + *x = CSPigbankTakeCoin{} + if protoimpl.UnsafeEnabled { + mi := &file_welfare_proto_msgTypes[34] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CSPigbankTakeCoin) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CSPigbankTakeCoin) ProtoMessage() {} + +func (x *CSPigbankTakeCoin) ProtoReflect() protoreflect.Message { + mi := &file_welfare_proto_msgTypes[34] + 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 CSPigbankTakeCoin.ProtoReflect.Descriptor instead. +func (*CSPigbankTakeCoin) Descriptor() ([]byte, []int) { + return file_welfare_proto_rawDescGZIP(), []int{34} +} + +// 存钱罐领取金币 +//PACKET_SCPigbankTakeCoin +type SCPigbankTakeCoin struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + OpRetCode OpResultCode `protobuf:"varint,1,opt,name=OpRetCode,proto3,enum=welfare.OpResultCode" json:"OpRetCode,omitempty"` // 结果 + TakeCoinNum int64 `protobuf:"varint,2,opt,name=TakeCoinNum,proto3" json:"TakeCoinNum,omitempty"` // 领取金币数量 + TakeTimes int32 `protobuf:"varint,3,opt,name=TakeTimes,proto3" json:"TakeTimes,omitempty"` // 领取次数 + CostDiamond int64 `protobuf:"varint,4,opt,name=CostDiamond,proto3" json:"CostDiamond,omitempty"` // 耗费钻石 + BankMaxCoin int64 `protobuf:"varint,5,opt,name=BankMaxCoin,proto3" json:"BankMaxCoin,omitempty"` // 存钱罐最储存值 +} + +func (x *SCPigbankTakeCoin) Reset() { + *x = SCPigbankTakeCoin{} + if protoimpl.UnsafeEnabled { + mi := &file_welfare_proto_msgTypes[35] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SCPigbankTakeCoin) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SCPigbankTakeCoin) ProtoMessage() {} + +func (x *SCPigbankTakeCoin) ProtoReflect() protoreflect.Message { + mi := &file_welfare_proto_msgTypes[35] + 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 SCPigbankTakeCoin.ProtoReflect.Descriptor instead. +func (*SCPigbankTakeCoin) Descriptor() ([]byte, []int) { + return file_welfare_proto_rawDescGZIP(), []int{35} +} + +func (x *SCPigbankTakeCoin) GetOpRetCode() OpResultCode { + if x != nil { + return x.OpRetCode + } + return OpResultCode_OPRC_Sucess +} + +func (x *SCPigbankTakeCoin) GetTakeCoinNum() int64 { + if x != nil { + return x.TakeCoinNum + } + return 0 +} + +func (x *SCPigbankTakeCoin) GetTakeTimes() int32 { + if x != nil { + return x.TakeTimes + } + return 0 +} + +func (x *SCPigbankTakeCoin) GetCostDiamond() int64 { + if x != nil { + return x.CostDiamond + } + return 0 +} + +func (x *SCPigbankTakeCoin) GetBankMaxCoin() int64 { + if x != nil { + return x.BankMaxCoin + } + return 0 +} + var File_welfare_proto protoreflect.FileDescriptor var file_welfare_proto_rawDesc = []byte{ @@ -2328,7 +2576,35 @@ var file_welfare_proto_rawDesc = []byte{ 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x77, 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, 0x2e, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, - 0x64, 0x65, 0x2a, 0xb8, 0x01, 0x0a, 0x0c, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, + 0x64, 0x65, 0x22, 0x12, 0x0a, 0x10, 0x43, 0x53, 0x50, 0x69, 0x67, 0x62, 0x61, 0x6e, 0x6b, 0x47, + 0x65, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0xc5, 0x01, 0x0a, 0x10, 0x53, 0x43, 0x50, 0x69, 0x67, + 0x62, 0x61, 0x6e, 0x6b, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x33, 0x0a, 0x09, 0x4f, + 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x15, + 0x2e, 0x77, 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, 0x2e, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, + 0x74, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, + 0x12, 0x1a, 0x0a, 0x08, 0x42, 0x61, 0x6e, 0x6b, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x03, 0x52, 0x08, 0x42, 0x61, 0x6e, 0x6b, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x1c, 0x0a, 0x09, + 0x54, 0x61, 0x6b, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x09, 0x54, 0x61, 0x6b, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x43, 0x6f, + 0x73, 0x74, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, + 0x0b, 0x43, 0x6f, 0x73, 0x74, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x12, 0x20, 0x0a, 0x0b, + 0x42, 0x61, 0x6e, 0x6b, 0x4d, 0x61, 0x78, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x03, 0x52, 0x0b, 0x42, 0x61, 0x6e, 0x6b, 0x4d, 0x61, 0x78, 0x43, 0x6f, 0x69, 0x6e, 0x22, 0x13, + 0x0a, 0x11, 0x43, 0x53, 0x50, 0x69, 0x67, 0x62, 0x61, 0x6e, 0x6b, 0x54, 0x61, 0x6b, 0x65, 0x43, + 0x6f, 0x69, 0x6e, 0x22, 0xcc, 0x01, 0x0a, 0x11, 0x53, 0x43, 0x50, 0x69, 0x67, 0x62, 0x61, 0x6e, + 0x6b, 0x54, 0x61, 0x6b, 0x65, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x33, 0x0a, 0x09, 0x4f, 0x70, 0x52, + 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x77, + 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, 0x2e, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, + 0x6f, 0x64, 0x65, 0x52, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x20, + 0x0a, 0x0b, 0x54, 0x61, 0x6b, 0x65, 0x43, 0x6f, 0x69, 0x6e, 0x4e, 0x75, 0x6d, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x03, 0x52, 0x0b, 0x54, 0x61, 0x6b, 0x65, 0x43, 0x6f, 0x69, 0x6e, 0x4e, 0x75, 0x6d, + 0x12, 0x1c, 0x0a, 0x09, 0x54, 0x61, 0x6b, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x09, 0x54, 0x61, 0x6b, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x12, 0x20, + 0x0a, 0x0b, 0x43, 0x6f, 0x73, 0x74, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x03, 0x52, 0x0b, 0x43, 0x6f, 0x73, 0x74, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, + 0x12, 0x20, 0x0a, 0x0b, 0x42, 0x61, 0x6e, 0x6b, 0x4d, 0x61, 0x78, 0x43, 0x6f, 0x69, 0x6e, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x42, 0x61, 0x6e, 0x6b, 0x4d, 0x61, 0x78, 0x43, 0x6f, + 0x69, 0x6e, 0x2a, 0xe7, 0x01, 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, 0x10, 0x0a, 0x0c, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x4e, 0x6f, 0x54, @@ -2339,71 +2615,74 @@ var file_welfare_proto_rawDesc = []byte{ 0x6e, 0x64, 0x10, 0x05, 0x12, 0x11, 0x0a, 0x0d, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x42, 0x69, 0x6e, 0x64, 0x53, 0x65, 0x6c, 0x66, 0x10, 0x06, 0x12, 0x11, 0x0a, 0x0d, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x4d, 0x79, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x10, 0x07, 0x12, 0x11, 0x0a, 0x0d, 0x4f, 0x50, - 0x52, 0x43, 0x5f, 0x4e, 0x6f, 0x74, 0x45, 0x78, 0x69, 0x73, 0x74, 0x10, 0x08, 0x2a, 0xcd, 0x07, - 0x0a, 0x09, 0x53, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x49, 0x44, 0x12, 0x14, 0x0a, 0x10, 0x50, - 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x48, 0x4f, 0x50, 0x5f, 0x5a, 0x45, 0x52, 0x4f, 0x10, - 0x00, 0x12, 0x21, 0x0a, 0x1c, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x57, - 0x45, 0x4c, 0x46, 0x5f, 0x47, 0x45, 0x54, 0x52, 0x45, 0x4c, 0x49, 0x45, 0x46, 0x46, 0x55, 0x4e, - 0x44, 0x10, 0x94, 0x14, 0x12, 0x21, 0x0a, 0x1c, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, - 0x43, 0x5f, 0x57, 0x45, 0x4c, 0x46, 0x5f, 0x47, 0x45, 0x54, 0x52, 0x45, 0x4c, 0x49, 0x45, 0x46, - 0x46, 0x55, 0x4e, 0x44, 0x10, 0x95, 0x14, 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x41, 0x43, 0x4b, 0x45, - 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x57, 0x45, 0x4c, 0x46, 0x5f, 0x47, 0x45, 0x54, 0x54, 0x55, 0x52, - 0x4e, 0x50, 0x4c, 0x41, 0x54, 0x45, 0x10, 0x96, 0x14, 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x41, 0x43, - 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x57, 0x45, 0x4c, 0x46, 0x5f, 0x47, 0x45, 0x54, 0x54, - 0x55, 0x52, 0x4e, 0x50, 0x4c, 0x41, 0x54, 0x45, 0x10, 0x97, 0x14, 0x12, 0x20, 0x0a, 0x1b, 0x50, - 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x57, 0x45, 0x4c, 0x46, 0x5f, 0x47, 0x45, - 0x54, 0x41, 0x44, 0x44, 0x55, 0x50, 0x53, 0x49, 0x47, 0x4e, 0x10, 0x98, 0x14, 0x12, 0x20, 0x0a, - 0x1b, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x57, 0x45, 0x4c, 0x46, 0x5f, - 0x47, 0x45, 0x54, 0x41, 0x44, 0x44, 0x55, 0x50, 0x53, 0x49, 0x47, 0x4e, 0x10, 0x99, 0x14, 0x12, - 0x1f, 0x0a, 0x1a, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x57, 0x45, 0x4c, - 0x46, 0x5f, 0x57, 0x45, 0x4c, 0x46, 0x41, 0x52, 0x45, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0x9a, 0x14, - 0x12, 0x1f, 0x0a, 0x1a, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x57, 0x45, - 0x4c, 0x46, 0x5f, 0x57, 0x45, 0x4c, 0x46, 0x41, 0x52, 0x45, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0x9b, - 0x14, 0x12, 0x1f, 0x0a, 0x1a, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x57, + 0x52, 0x43, 0x5f, 0x4e, 0x6f, 0x74, 0x45, 0x78, 0x69, 0x73, 0x74, 0x10, 0x08, 0x12, 0x14, 0x0a, + 0x10, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x4c, 0x65, 0x73, + 0x73, 0x10, 0x09, 0x12, 0x17, 0x0a, 0x13, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x50, 0x69, 0x67, 0x62, + 0x61, 0x6e, 0x6b, 0x4e, 0x6f, 0x74, 0x46, 0x75, 0x6c, 0x6c, 0x10, 0x0a, 0x2a, 0xcd, 0x07, 0x0a, + 0x09, 0x53, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x49, 0x44, 0x12, 0x14, 0x0a, 0x10, 0x50, 0x41, + 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x48, 0x4f, 0x50, 0x5f, 0x5a, 0x45, 0x52, 0x4f, 0x10, 0x00, + 0x12, 0x21, 0x0a, 0x1c, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x57, 0x45, + 0x4c, 0x46, 0x5f, 0x47, 0x45, 0x54, 0x52, 0x45, 0x4c, 0x49, 0x45, 0x46, 0x46, 0x55, 0x4e, 0x44, + 0x10, 0x94, 0x14, 0x12, 0x21, 0x0a, 0x1c, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, + 0x5f, 0x57, 0x45, 0x4c, 0x46, 0x5f, 0x47, 0x45, 0x54, 0x52, 0x45, 0x4c, 0x49, 0x45, 0x46, 0x46, + 0x55, 0x4e, 0x44, 0x10, 0x95, 0x14, 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, + 0x5f, 0x43, 0x53, 0x5f, 0x57, 0x45, 0x4c, 0x46, 0x5f, 0x47, 0x45, 0x54, 0x54, 0x55, 0x52, 0x4e, + 0x50, 0x4c, 0x41, 0x54, 0x45, 0x10, 0x96, 0x14, 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x41, 0x43, 0x4b, + 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x57, 0x45, 0x4c, 0x46, 0x5f, 0x47, 0x45, 0x54, 0x54, 0x55, + 0x52, 0x4e, 0x50, 0x4c, 0x41, 0x54, 0x45, 0x10, 0x97, 0x14, 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x41, + 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x57, 0x45, 0x4c, 0x46, 0x5f, 0x47, 0x45, 0x54, + 0x41, 0x44, 0x44, 0x55, 0x50, 0x53, 0x49, 0x47, 0x4e, 0x10, 0x98, 0x14, 0x12, 0x20, 0x0a, 0x1b, + 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x57, 0x45, 0x4c, 0x46, 0x5f, 0x47, + 0x45, 0x54, 0x41, 0x44, 0x44, 0x55, 0x50, 0x53, 0x49, 0x47, 0x4e, 0x10, 0x99, 0x14, 0x12, 0x1f, + 0x0a, 0x1a, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x57, 0x45, 0x4c, 0x46, + 0x5f, 0x57, 0x45, 0x4c, 0x46, 0x41, 0x52, 0x45, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0x9a, 0x14, 0x12, + 0x1f, 0x0a, 0x1a, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x57, 0x45, 0x4c, + 0x46, 0x5f, 0x57, 0x45, 0x4c, 0x46, 0x41, 0x52, 0x45, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0x9b, 0x14, + 0x12, 0x1f, 0x0a, 0x1a, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x57, 0x45, + 0x4c, 0x46, 0x5f, 0x42, 0x4c, 0x49, 0x4e, 0x42, 0x4f, 0x58, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0x9c, + 0x14, 0x12, 0x1f, 0x0a, 0x1a, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x57, 0x45, 0x4c, 0x46, 0x5f, 0x42, 0x4c, 0x49, 0x4e, 0x42, 0x4f, 0x58, 0x49, 0x4e, 0x46, 0x4f, 0x10, - 0x9c, 0x14, 0x12, 0x1f, 0x0a, 0x1a, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, - 0x57, 0x45, 0x4c, 0x46, 0x5f, 0x42, 0x4c, 0x49, 0x4e, 0x42, 0x4f, 0x58, 0x49, 0x4e, 0x46, 0x4f, - 0x10, 0x9d, 0x14, 0x12, 0x1e, 0x0a, 0x19, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, - 0x5f, 0x57, 0x45, 0x4c, 0x46, 0x5f, 0x47, 0x45, 0x54, 0x42, 0x4c, 0x49, 0x4e, 0x42, 0x4f, 0x58, - 0x10, 0x9e, 0x14, 0x12, 0x1e, 0x0a, 0x19, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, - 0x5f, 0x57, 0x45, 0x4c, 0x46, 0x5f, 0x47, 0x45, 0x54, 0x42, 0x4c, 0x49, 0x4e, 0x42, 0x4f, 0x58, - 0x10, 0x9f, 0x14, 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, - 0x5f, 0x57, 0x45, 0x4c, 0x46, 0x5f, 0x46, 0x49, 0x52, 0x53, 0x54, 0x50, 0x41, 0x59, 0x49, 0x4e, - 0x46, 0x4f, 0x10, 0xa0, 0x14, 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, - 0x53, 0x43, 0x5f, 0x57, 0x45, 0x4c, 0x46, 0x5f, 0x46, 0x49, 0x52, 0x53, 0x54, 0x50, 0x41, 0x59, - 0x49, 0x4e, 0x46, 0x4f, 0x10, 0xa1, 0x14, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, - 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x57, 0x45, 0x4c, 0x46, 0x5f, 0x46, 0x49, 0x52, 0x53, 0x54, 0x50, - 0x41, 0x59, 0x10, 0xa2, 0x14, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, - 0x53, 0x43, 0x5f, 0x57, 0x45, 0x4c, 0x46, 0x5f, 0x46, 0x49, 0x52, 0x53, 0x54, 0x50, 0x41, 0x59, - 0x10, 0xa3, 0x14, 0x12, 0x21, 0x0a, 0x1c, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, - 0x5f, 0x57, 0x45, 0x4c, 0x46, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x49, 0x4e, 0x50, 0x41, 0x59, 0x49, - 0x4e, 0x46, 0x4f, 0x10, 0xa4, 0x14, 0x12, 0x21, 0x0a, 0x1c, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, - 0x5f, 0x53, 0x43, 0x5f, 0x57, 0x45, 0x4c, 0x46, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x49, 0x4e, 0x50, - 0x41, 0x59, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0xa5, 0x14, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, 0x43, - 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x57, 0x45, 0x4c, 0x46, 0x5f, 0x43, 0x4f, 0x4e, 0x54, - 0x49, 0x4e, 0x50, 0x41, 0x59, 0x10, 0xa6, 0x14, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, - 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x57, 0x45, 0x4c, 0x46, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x49, - 0x4e, 0x50, 0x41, 0x59, 0x10, 0xa7, 0x14, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, - 0x54, 0x5f, 0x43, 0x53, 0x57, 0x65, 0x6c, 0x66, 0x52, 0x65, 0x6c, 0x69, 0x65, 0x66, 0x10, 0xd4, - 0x16, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x57, 0x65, - 0x6c, 0x66, 0x52, 0x65, 0x6c, 0x69, 0x65, 0x66, 0x10, 0xd5, 0x16, 0x12, 0x18, 0x0a, 0x13, 0x50, - 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x49, 0x6e, - 0x66, 0x6f, 0x10, 0xd6, 0x16, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, - 0x53, 0x43, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x10, 0xd7, 0x16, 0x12, - 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x42, 0x69, 0x6e, 0x64, - 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x10, 0xd8, 0x16, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, - 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x42, 0x69, 0x6e, 0x64, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, - 0x10, 0xd9, 0x16, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, - 0x50, 0x69, 0x67, 0x62, 0x61, 0x6e, 0x6b, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x10, 0xde, - 0x16, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x50, 0x69, - 0x67, 0x62, 0x61, 0x6e, 0x6b, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x10, 0xdf, 0x16, 0x12, - 0x1d, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x50, 0x69, 0x67, 0x62, - 0x61, 0x6e, 0x6b, 0x54, 0x61, 0x6b, 0x65, 0x43, 0x6f, 0x69, 0x6e, 0x10, 0xe0, 0x16, 0x12, 0x1d, - 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x50, 0x69, 0x67, 0x62, 0x61, - 0x6e, 0x6b, 0x54, 0x61, 0x6b, 0x65, 0x43, 0x6f, 0x69, 0x6e, 0x10, 0xe1, 0x16, 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, 0x77, - 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x9d, 0x14, 0x12, 0x1e, 0x0a, 0x19, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, + 0x57, 0x45, 0x4c, 0x46, 0x5f, 0x47, 0x45, 0x54, 0x42, 0x4c, 0x49, 0x4e, 0x42, 0x4f, 0x58, 0x10, + 0x9e, 0x14, 0x12, 0x1e, 0x0a, 0x19, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, + 0x57, 0x45, 0x4c, 0x46, 0x5f, 0x47, 0x45, 0x54, 0x42, 0x4c, 0x49, 0x4e, 0x42, 0x4f, 0x58, 0x10, + 0x9f, 0x14, 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, + 0x57, 0x45, 0x4c, 0x46, 0x5f, 0x46, 0x49, 0x52, 0x53, 0x54, 0x50, 0x41, 0x59, 0x49, 0x4e, 0x46, + 0x4f, 0x10, 0xa0, 0x14, 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, + 0x43, 0x5f, 0x57, 0x45, 0x4c, 0x46, 0x5f, 0x46, 0x49, 0x52, 0x53, 0x54, 0x50, 0x41, 0x59, 0x49, + 0x4e, 0x46, 0x4f, 0x10, 0xa1, 0x14, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, + 0x5f, 0x43, 0x53, 0x5f, 0x57, 0x45, 0x4c, 0x46, 0x5f, 0x46, 0x49, 0x52, 0x53, 0x54, 0x50, 0x41, + 0x59, 0x10, 0xa2, 0x14, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, + 0x43, 0x5f, 0x57, 0x45, 0x4c, 0x46, 0x5f, 0x46, 0x49, 0x52, 0x53, 0x54, 0x50, 0x41, 0x59, 0x10, + 0xa3, 0x14, 0x12, 0x21, 0x0a, 0x1c, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, + 0x57, 0x45, 0x4c, 0x46, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x49, 0x4e, 0x50, 0x41, 0x59, 0x49, 0x4e, + 0x46, 0x4f, 0x10, 0xa4, 0x14, 0x12, 0x21, 0x0a, 0x1c, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, + 0x53, 0x43, 0x5f, 0x57, 0x45, 0x4c, 0x46, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x49, 0x4e, 0x50, 0x41, + 0x59, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0xa5, 0x14, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, + 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x57, 0x45, 0x4c, 0x46, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x49, + 0x4e, 0x50, 0x41, 0x59, 0x10, 0xa6, 0x14, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, 0x45, + 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x57, 0x45, 0x4c, 0x46, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x49, 0x4e, + 0x50, 0x41, 0x59, 0x10, 0xa7, 0x14, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, + 0x5f, 0x43, 0x53, 0x57, 0x65, 0x6c, 0x66, 0x52, 0x65, 0x6c, 0x69, 0x65, 0x66, 0x10, 0xd4, 0x16, + 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x57, 0x65, 0x6c, + 0x66, 0x52, 0x65, 0x6c, 0x69, 0x65, 0x66, 0x10, 0xd5, 0x16, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, + 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x49, 0x6e, 0x66, + 0x6f, 0x10, 0xd6, 0x16, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, + 0x43, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x10, 0xd7, 0x16, 0x12, 0x18, + 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x42, 0x69, 0x6e, 0x64, 0x49, + 0x6e, 0x76, 0x69, 0x74, 0x65, 0x10, 0xd8, 0x16, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, + 0x45, 0x54, 0x5f, 0x53, 0x43, 0x42, 0x69, 0x6e, 0x64, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x10, + 0xd9, 0x16, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x50, + 0x69, 0x67, 0x62, 0x61, 0x6e, 0x6b, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x10, 0xde, 0x16, + 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x50, 0x69, 0x67, + 0x62, 0x61, 0x6e, 0x6b, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x10, 0xdf, 0x16, 0x12, 0x1d, + 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x50, 0x69, 0x67, 0x62, 0x61, + 0x6e, 0x6b, 0x54, 0x61, 0x6b, 0x65, 0x43, 0x6f, 0x69, 0x6e, 0x10, 0xe0, 0x16, 0x12, 0x1d, 0x0a, + 0x18, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x50, 0x69, 0x67, 0x62, 0x61, 0x6e, + 0x6b, 0x54, 0x61, 0x6b, 0x65, 0x43, 0x6f, 0x69, 0x6e, 0x10, 0xe1, 0x16, 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, 0x77, 0x65, + 0x6c, 0x66, 0x61, 0x72, 0x65, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -2419,7 +2698,7 @@ func file_welfare_proto_rawDescGZIP() []byte { } var file_welfare_proto_enumTypes = make([]protoimpl.EnumInfo, 2) -var file_welfare_proto_msgTypes = make([]protoimpl.MessageInfo, 32) +var file_welfare_proto_msgTypes = make([]protoimpl.MessageInfo, 36) var file_welfare_proto_goTypes = []interface{}{ (OpResultCode)(0), // 0: welfare.OpResultCode (SPacketID)(0), // 1: welfare.SPacketID @@ -2455,6 +2734,10 @@ var file_welfare_proto_goTypes = []interface{}{ (*SCInviteInfo)(nil), // 31: welfare.SCInviteInfo (*CSBindInvite)(nil), // 32: welfare.CSBindInvite (*SCBindInvite)(nil), // 33: welfare.SCBindInvite + (*CSPigbankGetInfo)(nil), // 34: welfare.CSPigbankGetInfo + (*SCPigbankGetInfo)(nil), // 35: welfare.SCPigbankGetInfo + (*CSPigbankTakeCoin)(nil), // 36: welfare.CSPigbankTakeCoin + (*SCPigbankTakeCoin)(nil), // 37: welfare.SCPigbankTakeCoin } var file_welfare_proto_depIdxs = []int32{ 0, // 0: welfare.SCGetReliefFund.OpRetCode:type_name -> welfare.OpResultCode @@ -2479,11 +2762,13 @@ var file_welfare_proto_depIdxs = []int32{ 19, // 19: welfare.SCWelfareContinuousPayData.List:type_name -> welfare.WelfareSpree 0, // 20: welfare.SCWelfareContinuousPay.OpRetCode:type_name -> welfare.OpResultCode 0, // 21: welfare.SCBindInvite.OpRetCode:type_name -> welfare.OpResultCode - 22, // [22:22] is the sub-list for method output_type - 22, // [22:22] is the sub-list for method input_type - 22, // [22:22] is the sub-list for extension type_name - 22, // [22:22] is the sub-list for extension extendee - 0, // [0:22] is the sub-list for field type_name + 0, // 22: welfare.SCPigbankGetInfo.OpRetCode:type_name -> welfare.OpResultCode + 0, // 23: welfare.SCPigbankTakeCoin.OpRetCode:type_name -> welfare.OpResultCode + 24, // [24:24] is the sub-list for method output_type + 24, // [24:24] is the sub-list for method input_type + 24, // [24:24] is the sub-list for extension type_name + 24, // [24:24] is the sub-list for extension extendee + 0, // [0:24] is the sub-list for field type_name } func init() { file_welfare_proto_init() } @@ -2876,6 +3161,54 @@ func file_welfare_proto_init() { return nil } } + file_welfare_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CSPigbankGetInfo); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_welfare_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SCPigbankGetInfo); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_welfare_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CSPigbankTakeCoin); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_welfare_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SCPigbankTakeCoin); 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{ @@ -2883,7 +3216,7 @@ func file_welfare_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_welfare_proto_rawDesc, NumEnums: 2, - NumMessages: 32, + NumMessages: 36, NumExtensions: 0, NumServices: 0, }, diff --git a/protocol/welfare/welfare.proto b/protocol/welfare/welfare.proto index fd0f274..5566e52 100644 --- a/protocol/welfare/welfare.proto +++ b/protocol/welfare/welfare.proto @@ -12,6 +12,9 @@ enum OpResultCode { OPRC_BindSelf = 6; // 邀请人不能是自己 OPRC_MyInvite = 7; // 邀请人不能是我邀请的人 OPRC_NotExist = 8; // 邀请人不存在 + OPRC_DiamondLess = 9; // 钻石不足 + OPRC_PigbankNotFull = 10; // 存钱罐未满 + } // 福利大厅 enum SPacketID { @@ -259,4 +262,35 @@ message CSBindInvite{ // PACKET_SCBindInvite message SCBindInvite{ OpResultCode OpRetCode = 1; //结果 +} + +// 存钱罐信息 +//PACKET_CSPigbankGetInfo +message CSPigbankGetInfo{ +} + +// 存钱罐信息 +//PACKET_SCPigbankGetInfo +message SCPigbankGetInfo{ + OpResultCode OpRetCode = 1; //结果 + int64 BankCoin = 2; // 当前已存金额 + int32 TakeTimes = 3; // 领取次数 + int64 CostDiamond = 4; // 耗费钻石 + int64 BankMaxCoin = 5; // 存钱罐最储存值 +} + + +// 存钱罐领取金币 +//PACKET_CSPigbankTakeCoin +message CSPigbankTakeCoin{ +} + +// 存钱罐领取金币 +//PACKET_SCPigbankTakeCoin +message SCPigbankTakeCoin{ + OpResultCode OpRetCode = 1; // 结果 + int64 TakeCoinNum = 2; // 领取金币数量 + int32 TakeTimes = 3; // 领取次数 + int64 CostDiamond = 4; // 耗费钻石 + int64 BankMaxCoin = 5; // 存钱罐最储存值 } \ No newline at end of file diff --git a/tools/xlsx2binary/agc.go b/tools/xlsx2binary/agc.go index 7190348..c0e14de 100644 --- a/tools/xlsx2binary/agc.go +++ b/tools/xlsx2binary/agc.go @@ -1,8 +1,8 @@ + // Code generated by xlsx2proto. // DO NOT EDIT! package main - import ( "encoding/json" "fmt" @@ -12,14 +12,15 @@ import ( "strings" "github.com/tealeg/xlsx" - "google.golang.org/protobuf/proto" + "google.golang.org/protobuf/proto" "mongo.games.com/game/protocol/server" ) var _ = strings.Split -func AgcConvertDB_ActSign(fi, fo string) { + +func AgcConvertDB_ActSign(fi,fo string) { xlsxFile, err := xlsx.OpenFile(fi) if err != nil { fmt.Println("excel file open error:", err, "filename:", fi) @@ -33,19 +34,19 @@ func AgcConvertDB_ActSign(fi, fo string) { fmt.Println("stack--->", string(buf[:lens])) } for _, sheet := range xlsxFile.Sheets { - arr := &server.DB_ActSignArray{ - Arr: make([]*server.DB_ActSign, 0, len(sheet.Rows)), + arr:=&server.DB_ActSignArray{ + Arr:make([]*server.DB_ActSign, 0, len(sheet.Rows)), } for i, row := range sheet.Rows { if i <= 1 { continue } - + if len(row.Cells) == 0 { break } - + temp := int64(0) var arrInt []int32 var arrInt64 []int64 @@ -53,46 +54,82 @@ func AgcConvertDB_ActSign(fi, fo string) { var _ = arrInt var _ = arrStr var _ = arrInt64 - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data := &server.DB_ActSign{} for { - - if len(row.Cells) < 0+1 { + + if len(row.Cells)<0+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data.Id = int32(temp) - - if len(row.Cells) < 1+1 { + + + + + + + + + if len(row.Cells)<1+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[1].String(), 10, 32) data.Type = int32(temp) - - if len(row.Cells) < 2+1 { + + + + + + + + + if len(row.Cells)<2+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[2].String(), 10, 32) data.Name = int32(temp) - - if len(row.Cells) < 3+1 { + + + + + + + + + if len(row.Cells)<3+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[3].String(), 10, 32) data.Item_Id = int32(temp) - - if len(row.Cells) < 4+1 { + + + + + + + + + if len(row.Cells)<4+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[4].String(), 10, 32) data.Grade = int32(temp) + + + + + + + + break } @@ -100,26 +137,26 @@ func AgcConvertDB_ActSign(fi, fo string) { } byteData, err := proto.Marshal(arr) - if err == nil { + if err == nil{ err := os.WriteFile(fo, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } + fmt.Println(err) + } } - + byteData, err = json.MarshalIndent(arr, "", "\t") if err == nil { foJson := strings.Replace(fo, ".dat", ".json", -1) err := os.WriteFile(foJson, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } - } + fmt.Println(err) + } + } break //only fetch first sheet } } - -func AgcConvertDB_Activity1(fi, fo string) { + +func AgcConvertDB_Activity1(fi,fo string) { xlsxFile, err := xlsx.OpenFile(fi) if err != nil { fmt.Println("excel file open error:", err, "filename:", fi) @@ -133,19 +170,19 @@ func AgcConvertDB_Activity1(fi, fo string) { fmt.Println("stack--->", string(buf[:lens])) } for _, sheet := range xlsxFile.Sheets { - arr := &server.DB_Activity1Array{ - Arr: make([]*server.DB_Activity1, 0, len(sheet.Rows)), + arr:=&server.DB_Activity1Array{ + Arr:make([]*server.DB_Activity1, 0, len(sheet.Rows)), } for i, row := range sheet.Rows { if i <= 1 { continue } - + if len(row.Cells) == 0 { break } - + temp := int64(0) var arrInt []int32 var arrInt64 []int64 @@ -153,87 +190,165 @@ func AgcConvertDB_Activity1(fi, fo string) { var _ = arrInt var _ = arrStr var _ = arrInt64 - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data := &server.DB_Activity1{} for { - - if len(row.Cells) < 0+1 { + + if len(row.Cells)<0+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data.Id = int32(temp) - - if len(row.Cells) < 1+1 { + + + + + + + + + if len(row.Cells)<1+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[1].String(), 10, 32) data.Parameter = int32(temp) - - if len(row.Cells) < 2+1 { + + + + + + + + + if len(row.Cells)<2+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[2].String(), 10, 32) data.Turn = int32(temp) - - if len(row.Cells) < 3+1 { + + + + + + + + + if len(row.Cells)<3+1{ break } - + + + data.Title = row.Cells[3].String() - - if len(row.Cells) < 4+1 { + + + + + + + if len(row.Cells)<4+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[4].String(), 10, 32) data.Costype = int32(temp) - - if len(row.Cells) < 5+1 { + + + + + + + + + if len(row.Cells)<5+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[5].String(), 10, 32) data.Costp = int32(temp) - - if len(row.Cells) < 6+1 { + + + + + + + + + if len(row.Cells)<6+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[6].String(), 10, 32) data.Cost = int32(temp) - - if len(row.Cells) < 7+1 { + + + + + + + + + if len(row.Cells)<7+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[7].String(), 10, 32) data.Typee = int32(temp) - - if len(row.Cells) < 8+1 { + + + + + + + + + if len(row.Cells)<8+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[8].String(), 10, 32) data.Propid = int32(temp) - - if len(row.Cells) < 9+1 { + + + + + + + + + if len(row.Cells)<9+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[9].String(), 10, 32) data.Value = int32(temp) - - if len(row.Cells) < 10+1 { + + + + + + + + + if len(row.Cells)<10+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[10].String(), 10, 32) data.Getype = int32(temp) + + + + + + + + break } @@ -241,26 +356,26 @@ func AgcConvertDB_Activity1(fi, fo string) { } byteData, err := proto.Marshal(arr) - if err == nil { + if err == nil{ err := os.WriteFile(fo, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } + fmt.Println(err) + } } - + byteData, err = json.MarshalIndent(arr, "", "\t") if err == nil { foJson := strings.Replace(fo, ".dat", ".json", -1) err := os.WriteFile(foJson, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } - } + fmt.Println(err) + } + } break //only fetch first sheet } } - -func AgcConvertDB_AnimalColor(fi, fo string) { + +func AgcConvertDB_AnimalColor(fi,fo string) { xlsxFile, err := xlsx.OpenFile(fi) if err != nil { fmt.Println("excel file open error:", err, "filename:", fi) @@ -274,19 +389,19 @@ func AgcConvertDB_AnimalColor(fi, fo string) { fmt.Println("stack--->", string(buf[:lens])) } for _, sheet := range xlsxFile.Sheets { - arr := &server.DB_AnimalColorArray{ - Arr: make([]*server.DB_AnimalColor, 0, len(sheet.Rows)), + arr:=&server.DB_AnimalColorArray{ + Arr:make([]*server.DB_AnimalColor, 0, len(sheet.Rows)), } for i, row := range sheet.Rows { if i <= 1 { continue } - + if len(row.Cells) == 0 { break } - + temp := int64(0) var arrInt []int32 var arrInt64 []int64 @@ -294,29 +409,46 @@ func AgcConvertDB_AnimalColor(fi, fo string) { var _ = arrInt var _ = arrStr var _ = arrInt64 - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data := &server.DB_AnimalColor{} for { - - if len(row.Cells) < 0+1 { + + if len(row.Cells)<0+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data.Id = int32(temp) - - if len(row.Cells) < 1+1 { + + + + + + + + + if len(row.Cells)<1+1{ break } - + + + data.Desc = row.Cells[1].String() - - if len(row.Cells) < 2+1 { + + + + + + + if len(row.Cells)<2+1{ break } - + + + + arrStr = strings.Split(row.Cells[2].String(), "|") arrInt = nil if len(arrStr) > 0 && row.Cells[2].String() != "" { @@ -327,6 +459,11 @@ func AgcConvertDB_AnimalColor(fi, fo string) { } } data.ColorChance = arrInt + + + + + break } @@ -334,26 +471,26 @@ func AgcConvertDB_AnimalColor(fi, fo string) { } byteData, err := proto.Marshal(arr) - if err == nil { + if err == nil{ err := os.WriteFile(fo, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } + fmt.Println(err) + } } - + byteData, err = json.MarshalIndent(arr, "", "\t") if err == nil { foJson := strings.Replace(fo, ".dat", ".json", -1) err := os.WriteFile(foJson, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } - } + fmt.Println(err) + } + } break //only fetch first sheet } } - -func AgcConvertDB_ArtilleryRate(fi, fo string) { + +func AgcConvertDB_ArtilleryRate(fi,fo string) { xlsxFile, err := xlsx.OpenFile(fi) if err != nil { fmt.Println("excel file open error:", err, "filename:", fi) @@ -367,19 +504,19 @@ func AgcConvertDB_ArtilleryRate(fi, fo string) { fmt.Println("stack--->", string(buf[:lens])) } for _, sheet := range xlsxFile.Sheets { - arr := &server.DB_ArtilleryRateArray{ - Arr: make([]*server.DB_ArtilleryRate, 0, len(sheet.Rows)), + arr:=&server.DB_ArtilleryRateArray{ + Arr:make([]*server.DB_ArtilleryRate, 0, len(sheet.Rows)), } for i, row := range sheet.Rows { if i <= 1 { continue } - + if len(row.Cells) == 0 { break } - + temp := int64(0) var arrInt []int32 var arrInt64 []int64 @@ -387,38 +524,67 @@ func AgcConvertDB_ArtilleryRate(fi, fo string) { var _ = arrInt var _ = arrStr var _ = arrInt64 - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data := &server.DB_ArtilleryRate{} for { - - if len(row.Cells) < 0+1 { + + if len(row.Cells)<0+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data.Id = int32(temp) - - if len(row.Cells) < 1+1 { + + + + + + + + + if len(row.Cells)<1+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[1].String(), 10, 32) data.Shell = int32(temp) - - if len(row.Cells) < 2+1 { + + + + + + + + + if len(row.Cells)<2+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[2].String(), 10, 32) data.Level = int32(temp) - - if len(row.Cells) < 3+1 { + + + + + + + + + if len(row.Cells)<3+1{ break } - + + + data.Desc = row.Cells[3].String() + + + + + + break } @@ -426,26 +592,26 @@ func AgcConvertDB_ArtilleryRate(fi, fo string) { } byteData, err := proto.Marshal(arr) - if err == nil { + if err == nil{ err := os.WriteFile(fo, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } + fmt.Println(err) + } } - + byteData, err = json.MarshalIndent(arr, "", "\t") if err == nil { foJson := strings.Replace(fo, ".dat", ".json", -1) err := os.WriteFile(foJson, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } - } + fmt.Println(err) + } + } break //only fetch first sheet } } - -func AgcConvertDB_ArtillerySkin(fi, fo string) { + +func AgcConvertDB_ArtillerySkin(fi,fo string) { xlsxFile, err := xlsx.OpenFile(fi) if err != nil { fmt.Println("excel file open error:", err, "filename:", fi) @@ -459,19 +625,19 @@ func AgcConvertDB_ArtillerySkin(fi, fo string) { fmt.Println("stack--->", string(buf[:lens])) } for _, sheet := range xlsxFile.Sheets { - arr := &server.DB_ArtillerySkinArray{ - Arr: make([]*server.DB_ArtillerySkin, 0, len(sheet.Rows)), + arr:=&server.DB_ArtillerySkinArray{ + Arr:make([]*server.DB_ArtillerySkin, 0, len(sheet.Rows)), } for i, row := range sheet.Rows { if i <= 1 { continue } - + if len(row.Cells) == 0 { break } - + temp := int64(0) var arrInt []int32 var arrInt64 []int64 @@ -479,94 +645,181 @@ func AgcConvertDB_ArtillerySkin(fi, fo string) { var _ = arrInt var _ = arrStr var _ = arrInt64 - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data := &server.DB_ArtillerySkin{} for { - - if len(row.Cells) < 0+1 { + + if len(row.Cells)<0+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data.Id = int32(temp) - - if len(row.Cells) < 1+1 { + + + + + + + + + if len(row.Cells)<1+1{ break } - + + + data.Name = row.Cells[1].String() - - if len(row.Cells) < 2+1 { + + + + + + + if len(row.Cells)<2+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[2].String(), 10, 32) data.CannonId = int32(temp) - - if len(row.Cells) < 3+1 { + + + + + + + + + if len(row.Cells)<3+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[3].String(), 10, 32) data.Type = int32(temp) - - if len(row.Cells) < 4+1 { + + + + + + + + + if len(row.Cells)<4+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[4].String(), 10, 32) data.ExprieTime = int32(temp) - - if len(row.Cells) < 5+1 { + + + + + + + + + if len(row.Cells)<5+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[5].String(), 10, 32) data.Show = int32(temp) - - if len(row.Cells) < 6+1 { + + + + + + + + + if len(row.Cells)<6+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[6].String(), 10, 32) data.Order = int32(temp) - - if len(row.Cells) < 7+1 { + + + + + + + + + if len(row.Cells)<7+1{ break } - + + + data.NameIcon = row.Cells[7].String() - - if len(row.Cells) < 8+1 { + + + + + + + if len(row.Cells)<8+1{ break } - + + + data.PicIcon = row.Cells[8].String() - - if len(row.Cells) < 9+1 { + + + + + + + if len(row.Cells)<9+1{ break } - + + + data.BaseIcon = row.Cells[9].String() - - if len(row.Cells) < 10+1 { + + + + + + + if len(row.Cells)<10+1{ break } - + + + data.ShellIcon = row.Cells[10].String() - - if len(row.Cells) < 11+1 { + + + + + + + if len(row.Cells)<11+1{ break } - + + + data.NetIcon = row.Cells[11].String() - - if len(row.Cells) < 12+1 { + + + + + + + if len(row.Cells)<12+1{ break } - + + + + arrStr = strings.Split(row.Cells[12].String(), "|") arrInt = nil if len(arrStr) > 0 && row.Cells[12].String() != "" { @@ -577,54 +830,108 @@ func AgcConvertDB_ArtillerySkin(fi, fo string) { } } data.Vip = arrInt - - if len(row.Cells) < 13+1 { + + + + + + if len(row.Cells)<13+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[13].String(), 10, 32) data.Gold = int32(temp) - - if len(row.Cells) < 14+1 { + + + + + + + + + if len(row.Cells)<14+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[14].String(), 10, 32) data.Diamond = int32(temp) - - if len(row.Cells) < 15+1 { + + + + + + + + + if len(row.Cells)<15+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[15].String(), 10, 32) data.Income = int32(temp) - - if len(row.Cells) < 16+1 { + + + + + + + + + if len(row.Cells)<16+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[16].String(), 10, 32) data.Speed = int32(temp) - - if len(row.Cells) < 17+1 { + + + + + + + + + if len(row.Cells)<17+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[17].String(), 10, 32) data.Caught = int32(temp) - - if len(row.Cells) < 18+1 { + + + + + + + + + if len(row.Cells)<18+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[18].String(), 10, 32) data.Introduce = int32(temp) - - if len(row.Cells) < 19+1 { + + + + + + + + + if len(row.Cells)<19+1{ break } - + + + data.Source = row.Cells[19].String() + + + + + + break } @@ -632,26 +939,26 @@ func AgcConvertDB_ArtillerySkin(fi, fo string) { } byteData, err := proto.Marshal(arr) - if err == nil { + if err == nil{ err := os.WriteFile(fo, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } + fmt.Println(err) + } } - + byteData, err = json.MarshalIndent(arr, "", "\t") if err == nil { foJson := strings.Replace(fo, ".dat", ".json", -1) err := os.WriteFile(foJson, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } - } + fmt.Println(err) + } + } break //only fetch first sheet } } - -func AgcConvertDB_BlackWhite(fi, fo string) { + +func AgcConvertDB_BlackWhite(fi,fo string) { xlsxFile, err := xlsx.OpenFile(fi) if err != nil { fmt.Println("excel file open error:", err, "filename:", fi) @@ -665,19 +972,19 @@ func AgcConvertDB_BlackWhite(fi, fo string) { fmt.Println("stack--->", string(buf[:lens])) } for _, sheet := range xlsxFile.Sheets { - arr := &server.DB_BlackWhiteArray{ - Arr: make([]*server.DB_BlackWhite, 0, len(sheet.Rows)), + arr:=&server.DB_BlackWhiteArray{ + Arr:make([]*server.DB_BlackWhite, 0, len(sheet.Rows)), } for i, row := range sheet.Rows { if i <= 1 { continue } - + if len(row.Cells) == 0 { break } - + temp := int64(0) var arrInt []int32 var arrInt64 []int64 @@ -685,23 +992,33 @@ func AgcConvertDB_BlackWhite(fi, fo string) { var _ = arrInt var _ = arrStr var _ = arrInt64 - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data := &server.DB_BlackWhite{} for { - - if len(row.Cells) < 0+1 { + + if len(row.Cells)<0+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data.Id = int32(temp) - - if len(row.Cells) < 2+1 { + + + + + + + + + if len(row.Cells)<2+1{ break } - + + + + arrStr = strings.Split(row.Cells[2].String(), "|") arrInt = nil if len(arrStr) > 0 && row.Cells[2].String() != "" { @@ -712,11 +1029,18 @@ func AgcConvertDB_BlackWhite(fi, fo string) { } } data.BlackOdds = arrInt - - if len(row.Cells) < 3+1 { + + + + + + if len(row.Cells)<3+1{ break } - + + + + arrStr = strings.Split(row.Cells[3].String(), "|") arrInt = nil if len(arrStr) > 0 && row.Cells[3].String() != "" { @@ -727,6 +1051,11 @@ func AgcConvertDB_BlackWhite(fi, fo string) { } } data.WhiteOdds = arrInt + + + + + break } @@ -734,26 +1063,26 @@ func AgcConvertDB_BlackWhite(fi, fo string) { } byteData, err := proto.Marshal(arr) - if err == nil { + if err == nil{ err := os.WriteFile(fo, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } + fmt.Println(err) + } } - + byteData, err = json.MarshalIndent(arr, "", "\t") if err == nil { foJson := strings.Replace(fo, ".dat", ".json", -1) err := os.WriteFile(foJson, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } - } + fmt.Println(err) + } + } break //only fetch first sheet } } - -func AgcConvertDB_CardsJD(fi, fo string) { + +func AgcConvertDB_CardsJD(fi,fo string) { xlsxFile, err := xlsx.OpenFile(fi) if err != nil { fmt.Println("excel file open error:", err, "filename:", fi) @@ -767,19 +1096,19 @@ func AgcConvertDB_CardsJD(fi, fo string) { fmt.Println("stack--->", string(buf[:lens])) } for _, sheet := range xlsxFile.Sheets { - arr := &server.DB_CardsJDArray{ - Arr: make([]*server.DB_CardsJD, 0, len(sheet.Rows)), + arr:=&server.DB_CardsJDArray{ + Arr:make([]*server.DB_CardsJD, 0, len(sheet.Rows)), } for i, row := range sheet.Rows { if i <= 1 { continue } - + if len(row.Cells) == 0 { break } - + temp := int64(0) var arrInt []int32 var arrInt64 []int64 @@ -787,122 +1116,242 @@ func AgcConvertDB_CardsJD(fi, fo string) { var _ = arrInt var _ = arrStr var _ = arrInt64 - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data := &server.DB_CardsJD{} for { - - if len(row.Cells) < 0+1 { + + if len(row.Cells)<0+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data.Id = int32(temp) - - if len(row.Cells) < 1+1 { + + + + + + + + + if len(row.Cells)<1+1{ break } - + + + data.Card1 = row.Cells[1].String() - - if len(row.Cells) < 2+1 { + + + + + + + if len(row.Cells)<2+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[2].String(), 10, 32) data.Card1Score = int32(temp) - - if len(row.Cells) < 3+1 { + + + + + + + + + if len(row.Cells)<3+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[3].String(), 10, 32) data.Card1HandNum = int32(temp) - - if len(row.Cells) < 4+1 { + + + + + + + + + if len(row.Cells)<4+1{ break } - + + + data.Change1Cards = row.Cells[4].String() - - if len(row.Cells) < 5+1 { + + + + + + + if len(row.Cells)<5+1{ break } - + + + data.Card2 = row.Cells[5].String() - - if len(row.Cells) < 6+1 { + + + + + + + if len(row.Cells)<6+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[6].String(), 10, 32) data.Card2Score = int32(temp) - - if len(row.Cells) < 7+1 { + + + + + + + + + if len(row.Cells)<7+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[7].String(), 10, 32) data.Card2HandNum = int32(temp) - - if len(row.Cells) < 8+1 { + + + + + + + + + if len(row.Cells)<8+1{ break } - + + + data.Change2Cards = row.Cells[8].String() - - if len(row.Cells) < 9+1 { + + + + + + + if len(row.Cells)<9+1{ break } - + + + data.Card3 = row.Cells[9].String() - - if len(row.Cells) < 10+1 { + + + + + + + if len(row.Cells)<10+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[10].String(), 10, 32) data.Card3Score = int32(temp) - - if len(row.Cells) < 11+1 { + + + + + + + + + if len(row.Cells)<11+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[11].String(), 10, 32) data.Card3HandNum = int32(temp) - - if len(row.Cells) < 12+1 { + + + + + + + + + if len(row.Cells)<12+1{ break } - + + + data.Change3Cards = row.Cells[12].String() - - if len(row.Cells) < 13+1 { + + + + + + + if len(row.Cells)<13+1{ break } - + + + data.Card4 = row.Cells[13].String() - - if len(row.Cells) < 14+1 { + + + + + + + if len(row.Cells)<14+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[14].String(), 10, 32) data.Card4Score = int32(temp) - - if len(row.Cells) < 15+1 { + + + + + + + + + if len(row.Cells)<15+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[15].String(), 10, 32) data.Card4HandNum = int32(temp) - - if len(row.Cells) < 16+1 { + + + + + + + + + if len(row.Cells)<16+1{ break } - + + + data.Change4Cards = row.Cells[16].String() + + + + + + break } @@ -910,26 +1359,26 @@ func AgcConvertDB_CardsJD(fi, fo string) { } byteData, err := proto.Marshal(arr) - if err == nil { + if err == nil{ err := os.WriteFile(fo, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } + fmt.Println(err) + } } - + byteData, err = json.MarshalIndent(arr, "", "\t") if err == nil { foJson := strings.Replace(fo, ".dat", ".json", -1) err := os.WriteFile(foJson, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } - } + fmt.Println(err) + } + } break //only fetch first sheet } } - -func AgcConvertDB_CardsYuLe(fi, fo string) { + +func AgcConvertDB_CardsYuLe(fi,fo string) { xlsxFile, err := xlsx.OpenFile(fi) if err != nil { fmt.Println("excel file open error:", err, "filename:", fi) @@ -943,19 +1392,19 @@ func AgcConvertDB_CardsYuLe(fi, fo string) { fmt.Println("stack--->", string(buf[:lens])) } for _, sheet := range xlsxFile.Sheets { - arr := &server.DB_CardsYuLeArray{ - Arr: make([]*server.DB_CardsYuLe, 0, len(sheet.Rows)), + arr:=&server.DB_CardsYuLeArray{ + Arr:make([]*server.DB_CardsYuLe, 0, len(sheet.Rows)), } for i, row := range sheet.Rows { if i <= 1 { continue } - + if len(row.Cells) == 0 { break } - + temp := int64(0) var arrInt []int32 var arrInt64 []int64 @@ -963,122 +1412,242 @@ func AgcConvertDB_CardsYuLe(fi, fo string) { var _ = arrInt var _ = arrStr var _ = arrInt64 - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data := &server.DB_CardsYuLe{} for { - - if len(row.Cells) < 0+1 { + + if len(row.Cells)<0+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data.Id = int32(temp) - - if len(row.Cells) < 1+1 { + + + + + + + + + if len(row.Cells)<1+1{ break } - + + + data.Card1 = row.Cells[1].String() - - if len(row.Cells) < 2+1 { + + + + + + + if len(row.Cells)<2+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[2].String(), 10, 32) data.Card1Score = int32(temp) - - if len(row.Cells) < 3+1 { + + + + + + + + + if len(row.Cells)<3+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[3].String(), 10, 32) data.Card1HandNum = int32(temp) - - if len(row.Cells) < 4+1 { + + + + + + + + + if len(row.Cells)<4+1{ break } - + + + data.Change1Cards = row.Cells[4].String() - - if len(row.Cells) < 5+1 { + + + + + + + if len(row.Cells)<5+1{ break } - + + + data.Card2 = row.Cells[5].String() - - if len(row.Cells) < 6+1 { + + + + + + + if len(row.Cells)<6+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[6].String(), 10, 32) data.Card2Score = int32(temp) - - if len(row.Cells) < 7+1 { + + + + + + + + + if len(row.Cells)<7+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[7].String(), 10, 32) data.Card2HandNum = int32(temp) - - if len(row.Cells) < 8+1 { + + + + + + + + + if len(row.Cells)<8+1{ break } - + + + data.Change2Cards = row.Cells[8].String() - - if len(row.Cells) < 9+1 { + + + + + + + if len(row.Cells)<9+1{ break } - + + + data.Card3 = row.Cells[9].String() - - if len(row.Cells) < 10+1 { + + + + + + + if len(row.Cells)<10+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[10].String(), 10, 32) data.Card3Score = int32(temp) - - if len(row.Cells) < 11+1 { + + + + + + + + + if len(row.Cells)<11+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[11].String(), 10, 32) data.Card3HandNum = int32(temp) - - if len(row.Cells) < 12+1 { + + + + + + + + + if len(row.Cells)<12+1{ break } - + + + data.Change3Cards = row.Cells[12].String() - - if len(row.Cells) < 13+1 { + + + + + + + if len(row.Cells)<13+1{ break } - + + + data.Card4 = row.Cells[13].String() - - if len(row.Cells) < 14+1 { + + + + + + + if len(row.Cells)<14+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[14].String(), 10, 32) data.Card4Score = int32(temp) - - if len(row.Cells) < 15+1 { + + + + + + + + + if len(row.Cells)<15+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[15].String(), 10, 32) data.Card4HandNum = int32(temp) - - if len(row.Cells) < 16+1 { + + + + + + + + + if len(row.Cells)<16+1{ break } - + + + data.Change4Cards = row.Cells[16].String() + + + + + + break } @@ -1086,26 +1655,26 @@ func AgcConvertDB_CardsYuLe(fi, fo string) { } byteData, err := proto.Marshal(arr) - if err == nil { + if err == nil{ err := os.WriteFile(fo, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } + fmt.Println(err) + } } - + byteData, err = json.MarshalIndent(arr, "", "\t") if err == nil { foJson := strings.Replace(fo, ".dat", ".json", -1) err := os.WriteFile(foJson, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } - } + fmt.Println(err) + } + } break //only fetch first sheet } } - -func AgcConvertDB_ChessBilledRules(fi, fo string) { + +func AgcConvertDB_ChessBilledRules(fi,fo string) { xlsxFile, err := xlsx.OpenFile(fi) if err != nil { fmt.Println("excel file open error:", err, "filename:", fi) @@ -1119,19 +1688,19 @@ func AgcConvertDB_ChessBilledRules(fi, fo string) { fmt.Println("stack--->", string(buf[:lens])) } for _, sheet := range xlsxFile.Sheets { - arr := &server.DB_ChessBilledRulesArray{ - Arr: make([]*server.DB_ChessBilledRules, 0, len(sheet.Rows)), + arr:=&server.DB_ChessBilledRulesArray{ + Arr:make([]*server.DB_ChessBilledRules, 0, len(sheet.Rows)), } for i, row := range sheet.Rows { if i <= 1 { continue } - + if len(row.Cells) == 0 { break } - + temp := int64(0) var arrInt []int32 var arrInt64 []int64 @@ -1139,60 +1708,110 @@ func AgcConvertDB_ChessBilledRules(fi, fo string) { var _ = arrInt var _ = arrStr var _ = arrInt64 - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data := &server.DB_ChessBilledRules{} for { - - if len(row.Cells) < 0+1 { + + if len(row.Cells)<0+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data.Id = int32(temp) - - if len(row.Cells) < 1+1 { + + + + + + + + + if len(row.Cells)<1+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[1].String(), 10, 32) data.TypeId = int32(temp) - - if len(row.Cells) < 2+1 { + + + + + + + + + if len(row.Cells)<2+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[2].String(), 10, 32) data.WinScore = int32(temp) - - if len(row.Cells) < 3+1 { + + + + + + + + + if len(row.Cells)<3+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[3].String(), 10, 32) data.LoseScore = int32(temp) - - if len(row.Cells) < 4+1 { + + + + + + + + + if len(row.Cells)<4+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[4].String(), 10, 32) data.DrawScore = int32(temp) - - if len(row.Cells) < 5+1 { + + + + + + + + + if len(row.Cells)<5+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[5].String(), 10, 32) data.WinTimes = int32(temp) - - if len(row.Cells) < 6+1 { + + + + + + + + + if len(row.Cells)<6+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[6].String(), 10, 32) data.OtherScore = int32(temp) + + + + + + + + break } @@ -1200,26 +1819,26 @@ func AgcConvertDB_ChessBilledRules(fi, fo string) { } byteData, err := proto.Marshal(arr) - if err == nil { + if err == nil{ err := os.WriteFile(fo, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } + fmt.Println(err) + } } - + byteData, err = json.MarshalIndent(arr, "", "\t") if err == nil { foJson := strings.Replace(fo, ".dat", ".json", -1) err := os.WriteFile(foJson, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } - } + fmt.Println(err) + } + } break //only fetch first sheet } } - -func AgcConvertDB_ChessMatchRules(fi, fo string) { + +func AgcConvertDB_ChessMatchRules(fi,fo string) { xlsxFile, err := xlsx.OpenFile(fi) if err != nil { fmt.Println("excel file open error:", err, "filename:", fi) @@ -1233,19 +1852,19 @@ func AgcConvertDB_ChessMatchRules(fi, fo string) { fmt.Println("stack--->", string(buf[:lens])) } for _, sheet := range xlsxFile.Sheets { - arr := &server.DB_ChessMatchRulesArray{ - Arr: make([]*server.DB_ChessMatchRules, 0, len(sheet.Rows)), + arr:=&server.DB_ChessMatchRulesArray{ + Arr:make([]*server.DB_ChessMatchRules, 0, len(sheet.Rows)), } for i, row := range sheet.Rows { if i <= 1 { continue } - + if len(row.Cells) == 0 { break } - + temp := int64(0) var arrInt []int32 var arrInt64 []int64 @@ -1253,51 +1872,89 @@ func AgcConvertDB_ChessMatchRules(fi, fo string) { var _ = arrInt var _ = arrStr var _ = arrInt64 - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data := &server.DB_ChessMatchRules{} for { - - if len(row.Cells) < 0+1 { + + if len(row.Cells)<0+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data.Id = int32(temp) - - if len(row.Cells) < 1+1 { + + + + + + + + + if len(row.Cells)<1+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[1].String(), 10, 32) data.ScoreMin = int32(temp) - - if len(row.Cells) < 2+1 { + + + + + + + + + if len(row.Cells)<2+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[2].String(), 10, 32) data.ScoreMax = int32(temp) - - if len(row.Cells) < 3+1 { + + + + + + + + + if len(row.Cells)<3+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[3].String(), 10, 32) data.MatchScoreMin = int32(temp) - - if len(row.Cells) < 4+1 { + + + + + + + + + if len(row.Cells)<4+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[4].String(), 10, 32) data.MatchScoreMax = int32(temp) - - if len(row.Cells) < 5+1 { + + + + + + + + + if len(row.Cells)<5+1{ break } - + + + + arrStr = strings.Split(row.Cells[5].String(), "|") arrInt = nil if len(arrStr) > 0 && row.Cells[5].String() != "" { @@ -1308,11 +1965,18 @@ func AgcConvertDB_ChessMatchRules(fi, fo string) { } } data.MatchScoreLowStep = arrInt - - if len(row.Cells) < 6+1 { + + + + + + if len(row.Cells)<6+1{ break } - + + + + arrStr = strings.Split(row.Cells[6].String(), "|") arrInt = nil if len(arrStr) > 0 && row.Cells[6].String() != "" { @@ -1323,6 +1987,11 @@ func AgcConvertDB_ChessMatchRules(fi, fo string) { } } data.MatchScoreHightStep = arrInt + + + + + break } @@ -1330,26 +1999,26 @@ func AgcConvertDB_ChessMatchRules(fi, fo string) { } byteData, err := proto.Marshal(arr) - if err == nil { + if err == nil{ err := os.WriteFile(fo, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } + fmt.Println(err) + } } - + byteData, err = json.MarshalIndent(arr, "", "\t") if err == nil { foJson := strings.Replace(fo, ".dat", ".json", -1) err := os.WriteFile(foJson, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } - } + fmt.Println(err) + } + } break //only fetch first sheet } } - -func AgcConvertDB_ChessRank(fi, fo string) { + +func AgcConvertDB_ChessRank(fi,fo string) { xlsxFile, err := xlsx.OpenFile(fi) if err != nil { fmt.Println("excel file open error:", err, "filename:", fi) @@ -1363,19 +2032,19 @@ func AgcConvertDB_ChessRank(fi, fo string) { fmt.Println("stack--->", string(buf[:lens])) } for _, sheet := range xlsxFile.Sheets { - arr := &server.DB_ChessRankArray{ - Arr: make([]*server.DB_ChessRank, 0, len(sheet.Rows)), + arr:=&server.DB_ChessRankArray{ + Arr:make([]*server.DB_ChessRank, 0, len(sheet.Rows)), } for i, row := range sheet.Rows { if i <= 1 { continue } - + if len(row.Cells) == 0 { break } - + temp := int64(0) var arrInt []int32 var arrInt64 []int64 @@ -1383,31 +2052,53 @@ func AgcConvertDB_ChessRank(fi, fo string) { var _ = arrInt var _ = arrStr var _ = arrInt64 - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data := &server.DB_ChessRank{} for { - - if len(row.Cells) < 0+1 { + + if len(row.Cells)<0+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data.Id = int32(temp) - - if len(row.Cells) < 1+1 { + + + + + + + + + if len(row.Cells)<1+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[1].String(), 10, 32) data.Score = int32(temp) - - if len(row.Cells) < 2+1 { + + + + + + + + + if len(row.Cells)<2+1{ break } - + + + data.Name = row.Cells[2].String() + + + + + + break } @@ -1415,26 +2106,26 @@ func AgcConvertDB_ChessRank(fi, fo string) { } byteData, err := proto.Marshal(arr) - if err == nil { + if err == nil{ err := os.WriteFile(fo, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } + fmt.Println(err) + } } - + byteData, err = json.MarshalIndent(arr, "", "\t") if err == nil { foJson := strings.Replace(fo, ".dat", ".json", -1) err := os.WriteFile(foJson, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } - } + fmt.Println(err) + } + } break //only fetch first sheet } } - -func AgcConvertDB_ClientVer(fi, fo string) { + +func AgcConvertDB_ClientVer(fi,fo string) { xlsxFile, err := xlsx.OpenFile(fi) if err != nil { fmt.Println("excel file open error:", err, "filename:", fi) @@ -1448,19 +2139,19 @@ func AgcConvertDB_ClientVer(fi, fo string) { fmt.Println("stack--->", string(buf[:lens])) } for _, sheet := range xlsxFile.Sheets { - arr := &server.DB_ClientVerArray{ - Arr: make([]*server.DB_ClientVer, 0, len(sheet.Rows)), + arr:=&server.DB_ClientVerArray{ + Arr:make([]*server.DB_ClientVer, 0, len(sheet.Rows)), } for i, row := range sheet.Rows { if i <= 1 { continue } - + if len(row.Cells) == 0 { break } - + temp := int64(0) var arrInt []int32 var arrInt64 []int64 @@ -1468,36 +2159,65 @@ func AgcConvertDB_ClientVer(fi, fo string) { var _ = arrInt var _ = arrStr var _ = arrInt64 - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data := &server.DB_ClientVer{} for { - - if len(row.Cells) < 0+1 { + + if len(row.Cells)<0+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data.Id = int32(temp) - - if len(row.Cells) < 1+1 { + + + + + + + + + if len(row.Cells)<1+1{ break } - + + + data.PackageFlag = row.Cells[1].String() - - if len(row.Cells) < 2+1 { + + + + + + + if len(row.Cells)<2+1{ break } - + + + data.PackVers = row.Cells[2].String() - - if len(row.Cells) < 3+1 { + + + + + + + if len(row.Cells)<3+1{ break } - + + + data.GameVers = row.Cells[3].String() + + + + + + break } @@ -1505,26 +2225,26 @@ func AgcConvertDB_ClientVer(fi, fo string) { } byteData, err := proto.Marshal(arr) - if err == nil { + if err == nil{ err := os.WriteFile(fo, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } + fmt.Println(err) + } } - + byteData, err = json.MarshalIndent(arr, "", "\t") if err == nil { foJson := strings.Replace(fo, ".dat", ".json", -1) err := os.WriteFile(foJson, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } - } + fmt.Println(err) + } + } break //only fetch first sheet } } - -func AgcConvertDB_CollectBox(fi, fo string) { + +func AgcConvertDB_CollectBox(fi,fo string) { xlsxFile, err := xlsx.OpenFile(fi) if err != nil { fmt.Println("excel file open error:", err, "filename:", fi) @@ -1538,19 +2258,19 @@ func AgcConvertDB_CollectBox(fi, fo string) { fmt.Println("stack--->", string(buf[:lens])) } for _, sheet := range xlsxFile.Sheets { - arr := &server.DB_CollectBoxArray{ - Arr: make([]*server.DB_CollectBox, 0, len(sheet.Rows)), + arr:=&server.DB_CollectBoxArray{ + Arr:make([]*server.DB_CollectBox, 0, len(sheet.Rows)), } for i, row := range sheet.Rows { if i <= 1 { continue } - + if len(row.Cells) == 0 { break } - + temp := int64(0) var arrInt []int32 var arrInt64 []int64 @@ -1558,51 +2278,73 @@ func AgcConvertDB_CollectBox(fi, fo string) { var _ = arrInt var _ = arrStr var _ = arrInt64 - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data := &server.DB_CollectBox{} for { - - if len(row.Cells) < 0+1 { + + if len(row.Cells)<0+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data.Id = int32(temp) - - if len(row.Cells) < 1+1 { + + + + + + + + + if len(row.Cells)<1+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[1].String(), 10, 32) data.Rate = int32(temp) - - if len(row.Cells) < 2+1 { + + + + + + + + + if len(row.Cells)<2+1{ break } - - if row.Cells[2].String() != "" { - pairs := strings.Split(row.Cells[2].String(), ";") - resultMap := make(map[int64]int64) - for _, pair := range pairs { - kv := strings.Split(pair, ",") - key, err := strconv.ParseInt(kv[0], 10, 64) - if err != nil { - // 错误处理 - fmt.Println("无法转换为int64:", kv[0]) - continue + + + + + + + + if row.Cells[2].String() != ""{ + pairs := strings.Split(row.Cells[2].String(), ";") + resultMap := make(map[int64]int64) + for _, pair := range pairs { + kv := strings.Split(pair, ",") + key, err := strconv.ParseInt(kv[0], 10, 64) + if err != nil { + // 错误处理 + fmt.Println("无法转换为int64:", kv[0]) + continue + } + value, err := strconv.ParseInt(kv[1], 10, 64) + if err != nil { + // 错误处理 + fmt.Println("无法转换为int64:", kv[1]) + continue + } + resultMap[key] = value } - value, err := strconv.ParseInt(kv[1], 10, 64) - if err != nil { - // 错误处理 - fmt.Println("无法转换为int64:", kv[1]) - continue - } - resultMap[key] = value + data.ItemID = resultMap } - data.ItemID = resultMap - } + + break } @@ -1610,26 +2352,26 @@ func AgcConvertDB_CollectBox(fi, fo string) { } byteData, err := proto.Marshal(arr) - if err == nil { + if err == nil{ err := os.WriteFile(fo, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } + fmt.Println(err) + } } - + byteData, err = json.MarshalIndent(arr, "", "\t") if err == nil { foJson := strings.Replace(fo, ".dat", ".json", -1) err := os.WriteFile(foJson, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } - } + fmt.Println(err) + } + } break //only fetch first sheet } } - -func AgcConvertDB_CollectBoxGain(fi, fo string) { + +func AgcConvertDB_CollectBoxGain(fi,fo string) { xlsxFile, err := xlsx.OpenFile(fi) if err != nil { fmt.Println("excel file open error:", err, "filename:", fi) @@ -1643,19 +2385,19 @@ func AgcConvertDB_CollectBoxGain(fi, fo string) { fmt.Println("stack--->", string(buf[:lens])) } for _, sheet := range xlsxFile.Sheets { - arr := &server.DB_CollectBoxGainArray{ - Arr: make([]*server.DB_CollectBoxGain, 0, len(sheet.Rows)), + arr:=&server.DB_CollectBoxGainArray{ + Arr:make([]*server.DB_CollectBoxGain, 0, len(sheet.Rows)), } for i, row := range sheet.Rows { if i <= 1 { continue } - + if len(row.Cells) == 0 { break } - + temp := int64(0) var arrInt []int32 var arrInt64 []int64 @@ -1663,25 +2405,40 @@ func AgcConvertDB_CollectBoxGain(fi, fo string) { var _ = arrInt var _ = arrStr var _ = arrInt64 - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data := &server.DB_CollectBoxGain{} for { - - if len(row.Cells) < 0+1 { + + if len(row.Cells)<0+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data.Id = int32(temp) - - if len(row.Cells) < 1+1 { + + + + + + + + + if len(row.Cells)<1+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[1].String(), 10, 32) data.Rate = int32(temp) + + + + + + + + break } @@ -1689,26 +2446,26 @@ func AgcConvertDB_CollectBoxGain(fi, fo string) { } byteData, err := proto.Marshal(arr) - if err == nil { + if err == nil{ err := os.WriteFile(fo, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } + fmt.Println(err) + } } - + byteData, err = json.MarshalIndent(arr, "", "\t") if err == nil { foJson := strings.Replace(fo, ".dat", ".json", -1) err := os.WriteFile(foJson, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } - } + fmt.Println(err) + } + } break //only fetch first sheet } } - -func AgcConvertDB_CrashSearch(fi, fo string) { + +func AgcConvertDB_CrashSearch(fi,fo string) { xlsxFile, err := xlsx.OpenFile(fi) if err != nil { fmt.Println("excel file open error:", err, "filename:", fi) @@ -1722,19 +2479,19 @@ func AgcConvertDB_CrashSearch(fi, fo string) { fmt.Println("stack--->", string(buf[:lens])) } for _, sheet := range xlsxFile.Sheets { - arr := &server.DB_CrashSearchArray{ - Arr: make([]*server.DB_CrashSearch, 0, len(sheet.Rows)), + arr:=&server.DB_CrashSearchArray{ + Arr:make([]*server.DB_CrashSearch, 0, len(sheet.Rows)), } for i, row := range sheet.Rows { if i <= 1 { continue } - + if len(row.Cells) == 0 { break } - + temp := int64(0) var arrInt []int32 var arrInt64 []int64 @@ -1742,32 +2499,54 @@ func AgcConvertDB_CrashSearch(fi, fo string) { var _ = arrInt var _ = arrStr var _ = arrInt64 - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data := &server.DB_CrashSearch{} for { - - if len(row.Cells) < 0+1 { + + if len(row.Cells)<0+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data.Id = int32(temp) - - if len(row.Cells) < 1+1 { + + + + + + + + + if len(row.Cells)<1+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[1].String(), 10, 32) data.Time = int32(temp) - - if len(row.Cells) < 2+1 { + + + + + + + + + if len(row.Cells)<2+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[2].String(), 10, 32) data.Price = int32(temp) + + + + + + + + break } @@ -1775,26 +2554,26 @@ func AgcConvertDB_CrashSearch(fi, fo string) { } byteData, err := proto.Marshal(arr) - if err == nil { + if err == nil{ err := os.WriteFile(fo, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } + fmt.Println(err) + } } - + byteData, err = json.MarshalIndent(arr, "", "\t") if err == nil { foJson := strings.Replace(fo, ".dat", ".json", -1) err := os.WriteFile(foJson, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } - } + fmt.Println(err) + } + } break //only fetch first sheet } } - -func AgcConvertDB_Createroom(fi, fo string) { + +func AgcConvertDB_Createroom(fi,fo string) { xlsxFile, err := xlsx.OpenFile(fi) if err != nil { fmt.Println("excel file open error:", err, "filename:", fi) @@ -1808,19 +2587,19 @@ func AgcConvertDB_Createroom(fi, fo string) { fmt.Println("stack--->", string(buf[:lens])) } for _, sheet := range xlsxFile.Sheets { - arr := &server.DB_CreateroomArray{ - Arr: make([]*server.DB_Createroom, 0, len(sheet.Rows)), + arr:=&server.DB_CreateroomArray{ + Arr:make([]*server.DB_Createroom, 0, len(sheet.Rows)), } for i, row := range sheet.Rows { if i <= 1 { continue } - + if len(row.Cells) == 0 { break } - + temp := int64(0) var arrInt []int32 var arrInt64 []int64 @@ -1828,37 +2607,61 @@ func AgcConvertDB_Createroom(fi, fo string) { var _ = arrInt var _ = arrStr var _ = arrInt64 - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data := &server.DB_Createroom{} for { - - if len(row.Cells) < 0+1 { + + if len(row.Cells)<0+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data.Id = int32(temp) - - if len(row.Cells) < 1+1 { + + + + + + + + + if len(row.Cells)<1+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[1].String(), 10, 32) data.GameId = int32(temp) - - if len(row.Cells) < 2+1 { + + + + + + + + + if len(row.Cells)<2+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[2].String(), 10, 32) data.GameSite = int32(temp) - - if len(row.Cells) < 3+1 { + + + + + + + + + if len(row.Cells)<3+1{ break } - + + + + arrStr = strings.Split(row.Cells[3].String(), "|") arrInt = nil if len(arrStr) > 0 && row.Cells[3].String() != "" { @@ -1869,11 +2672,18 @@ func AgcConvertDB_Createroom(fi, fo string) { } } data.GoldRange = arrInt - - if len(row.Cells) < 4+1 { + + + + + + if len(row.Cells)<4+1{ break } - + + + + arrStr = strings.Split(row.Cells[4].String(), "|") arrInt = nil if len(arrStr) > 0 && row.Cells[4].String() != "" { @@ -1884,6 +2694,11 @@ func AgcConvertDB_Createroom(fi, fo string) { } } data.BetRange = arrInt + + + + + break } @@ -1891,26 +2706,26 @@ func AgcConvertDB_Createroom(fi, fo string) { } byteData, err := proto.Marshal(arr) - if err == nil { + if err == nil{ err := os.WriteFile(fo, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } + fmt.Println(err) + } } - + byteData, err = json.MarshalIndent(arr, "", "\t") if err == nil { foJson := strings.Replace(fo, ".dat", ".json", -1) err := os.WriteFile(foJson, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } - } + fmt.Println(err) + } + } break //only fetch first sheet } } - -func AgcConvertDB_Fish(fi, fo string) { + +func AgcConvertDB_Fish(fi,fo string) { xlsxFile, err := xlsx.OpenFile(fi) if err != nil { fmt.Println("excel file open error:", err, "filename:", fi) @@ -1924,19 +2739,19 @@ func AgcConvertDB_Fish(fi, fo string) { fmt.Println("stack--->", string(buf[:lens])) } for _, sheet := range xlsxFile.Sheets { - arr := &server.DB_FishArray{ - Arr: make([]*server.DB_Fish, 0, len(sheet.Rows)), + arr:=&server.DB_FishArray{ + Arr:make([]*server.DB_Fish, 0, len(sheet.Rows)), } for i, row := range sheet.Rows { if i <= 1 { continue } - + if len(row.Cells) == 0 { break } - + temp := int64(0) var arrInt []int32 var arrInt64 []int64 @@ -1944,35 +2759,59 @@ func AgcConvertDB_Fish(fi, fo string) { var _ = arrInt var _ = arrStr var _ = arrInt64 - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data := &server.DB_Fish{} for { - - if len(row.Cells) < 0+1 { + + if len(row.Cells)<0+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data.Id = int32(temp) - - if len(row.Cells) < 1+1 { + + + + + + + + + if len(row.Cells)<1+1{ break } - + + + data.Name = row.Cells[1].String() - - if len(row.Cells) < 2+1 { + + + + + + + if len(row.Cells)<2+1{ break } - + + + data.NameE = row.Cells[2].String() - - if len(row.Cells) < 3+1 { + + + + + + + if len(row.Cells)<3+1{ break } - + + + + arrStr = strings.Split(row.Cells[3].String(), "|") arrInt = nil if len(arrStr) > 0 && row.Cells[3].String() != "" { @@ -1983,73 +2822,143 @@ func AgcConvertDB_Fish(fi, fo string) { } } data.Gold = arrInt - - if len(row.Cells) < 4+1 { + + + + + + if len(row.Cells)<4+1{ break } - + + + data.Icon = row.Cells[4].String() - - if len(row.Cells) < 5+1 { + + + + + + + if len(row.Cells)<5+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[5].String(), 10, 32) data.Speed = int32(temp) - - if len(row.Cells) < 6+1 { + + + + + + + + + if len(row.Cells)<6+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[6].String(), 10, 32) data.Exp = int32(temp) - - if len(row.Cells) < 7+1 { + + + + + + + + + if len(row.Cells)<7+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[7].String(), 10, 32) data.FrameCnt = int32(temp) - - if len(row.Cells) < 8+1 { + + + + + + + + + if len(row.Cells)<8+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[8].String(), 10, 32) data.FrameDelay = int32(temp) - - if len(row.Cells) < 9+1 { + + + + + + + + + if len(row.Cells)<9+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[9].String(), 10, 32) data.Rate = int32(temp) - - if len(row.Cells) < 10+1 { + + + + + + + + + if len(row.Cells)<10+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[10].String(), 10, 32) data.ShowType = int32(temp) - - if len(row.Cells) < 11+1 { + + + + + + + + + if len(row.Cells)<11+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[11].String(), 10, 32) data.Show = int32(temp) - - if len(row.Cells) < 12+1 { + + + + + + + + + if len(row.Cells)<12+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[12].String(), 10, 32) data.ShowScale = int32(temp) - - if len(row.Cells) < 13+1 { + + + + + + + + + if len(row.Cells)<13+1{ break } - + + + + arrStr = strings.Split(row.Cells[13].String(), "|") arrInt = nil if len(arrStr) > 0 && row.Cells[13].String() != "" { @@ -2060,85 +2969,169 @@ func AgcConvertDB_Fish(fi, fo string) { } } data.ShowPos = arrInt - - if len(row.Cells) < 14+1 { + + + + + + if len(row.Cells)<14+1{ break } - + + + data.DieSound = row.Cells[14].String() - - if len(row.Cells) < 15+1 { + + + + + + + if len(row.Cells)<15+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[15].String(), 10, 32) data.DieFrame = int32(temp) - - if len(row.Cells) < 16+1 { + + + + + + + + + if len(row.Cells)<16+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[16].String(), 10, 32) data.DieRotate = int32(temp) - - if len(row.Cells) < 17+1 { + + + + + + + + + if len(row.Cells)<17+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[17].String(), 10, 32) data.DieEffect = int32(temp) - - if len(row.Cells) < 18+1 { + + + + + + + + + if len(row.Cells)<18+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[18].String(), 10, 32) data.DieShake = int32(temp) - - if len(row.Cells) < 19+1 { + + + + + + + + + if len(row.Cells)<19+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[19].String(), 10, 32) data.ShakeRange = int32(temp) - - if len(row.Cells) < 20+1 { + + + + + + + + + if len(row.Cells)<20+1{ break } - + + + data.Shape = row.Cells[20].String() - - if len(row.Cells) < 21+1 { + + + + + + + if len(row.Cells)<21+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[21].String(), 10, 32) data.IsBoss = int32(temp) - - if len(row.Cells) < 22+1 { + + + + + + + + + if len(row.Cells)<22+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[22].String(), 10, 32) data.ResId = int32(temp) - - if len(row.Cells) < 23+1 { + + + + + + + + + if len(row.Cells)<23+1{ break } - + + + data.DieParticle = row.Cells[23].String() - - if len(row.Cells) < 24+1 { + + + + + + + if len(row.Cells)<24+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[24].String(), 10, 32) data.GroupShape = int32(temp) - - if len(row.Cells) < 25+1 { + + + + + + + + + if len(row.Cells)<25+1{ break } - + + + + arrStr = strings.Split(row.Cells[25].String(), "|") arrInt = nil if len(arrStr) > 0 && row.Cells[25].String() != "" { @@ -2149,64 +3142,132 @@ func AgcConvertDB_Fish(fi, fo string) { } } data.GroupFishes = arrInt - - if len(row.Cells) < 26+1 { + + + + + + if len(row.Cells)<26+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[26].String(), 10, 32) data.Zorder = int32(temp) - - if len(row.Cells) < 27+1 { + + + + + + + + + if len(row.Cells)<27+1{ break } - + + + data.ResPng = row.Cells[27].String() - - if len(row.Cells) < 28+1 { + + + + + + + if len(row.Cells)<28+1{ break } - + + + data.ResPlist = row.Cells[28].String() - - if len(row.Cells) < 29+1 { + + + + + + + if len(row.Cells)<29+1{ break } - + + + data.ExportJson = row.Cells[29].String() - - if len(row.Cells) < 30+1 { + + + + + + + if len(row.Cells)<30+1{ break } - + + + data.AimIcon = row.Cells[30].String() - - if len(row.Cells) < 31+1 { + + + + + + + if len(row.Cells)<31+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[31].String(), 10, 32) data.GameId = int32(temp) - - if len(row.Cells) < 32+1 { + + + + + + + + + if len(row.Cells)<32+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[32].String(), 10, 32) data.Sort = int32(temp) - - if len(row.Cells) < 33+1 { + + + + + + + + + if len(row.Cells)<33+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[33].String(), 10, 32) data.FishType = int32(temp) - - if len(row.Cells) < 34+1 { + + + + + + + + + if len(row.Cells)<34+1{ break } - + + + data.RandomCoin = row.Cells[34].String() + + + + + + break } @@ -2214,26 +3275,26 @@ func AgcConvertDB_Fish(fi, fo string) { } byteData, err := proto.Marshal(arr) - if err == nil { + if err == nil{ err := os.WriteFile(fo, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } + fmt.Println(err) + } } - + byteData, err = json.MarshalIndent(arr, "", "\t") if err == nil { foJson := strings.Replace(fo, ".dat", ".json", -1) err := os.WriteFile(foJson, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } - } + fmt.Println(err) + } + } break //only fetch first sheet } } - -func AgcConvertDB_FishOut(fi, fo string) { + +func AgcConvertDB_FishOut(fi,fo string) { xlsxFile, err := xlsx.OpenFile(fi) if err != nil { fmt.Println("excel file open error:", err, "filename:", fi) @@ -2247,19 +3308,19 @@ func AgcConvertDB_FishOut(fi, fo string) { fmt.Println("stack--->", string(buf[:lens])) } for _, sheet := range xlsxFile.Sheets { - arr := &server.DB_FishOutArray{ - Arr: make([]*server.DB_FishOut, 0, len(sheet.Rows)), + arr:=&server.DB_FishOutArray{ + Arr:make([]*server.DB_FishOut, 0, len(sheet.Rows)), } for i, row := range sheet.Rows { if i <= 1 { continue } - + if len(row.Cells) == 0 { break } - + temp := int64(0) var arrInt []int32 var arrInt64 []int64 @@ -2267,43 +3328,74 @@ func AgcConvertDB_FishOut(fi, fo string) { var _ = arrInt var _ = arrStr var _ = arrInt64 - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data := &server.DB_FishOut{} for { - - if len(row.Cells) < 0+1 { + + if len(row.Cells)<0+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data.Id = int32(temp) - - if len(row.Cells) < 1+1 { + + + + + + + + + if len(row.Cells)<1+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[1].String(), 10, 32) data.SceneType = int32(temp) - - if len(row.Cells) < 2+1 { + + + + + + + + + if len(row.Cells)<2+1{ break } - + + + data.Name = row.Cells[2].String() - - if len(row.Cells) < 3+1 { + + + + + + + if len(row.Cells)<3+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[3].String(), 10, 32) data.Exp = int32(temp) - - if len(row.Cells) < 4+1 { + + + + + + + + + if len(row.Cells)<4+1{ break } - + + + + arrStr = strings.Split(row.Cells[4].String(), "|") arrInt = nil if len(arrStr) > 0 && row.Cells[4].String() != "" { @@ -2314,11 +3406,18 @@ func AgcConvertDB_FishOut(fi, fo string) { } } data.Multiple = arrInt - - if len(row.Cells) < 5+1 { + + + + + + if len(row.Cells)<5+1{ break } - + + + + arrStr = strings.Split(row.Cells[5].String(), "|") arrInt = nil if len(arrStr) > 0 && row.Cells[5].String() != "" { @@ -2329,11 +3428,18 @@ func AgcConvertDB_FishOut(fi, fo string) { } } data.Path = arrInt - - if len(row.Cells) < 6+1 { + + + + + + if len(row.Cells)<6+1{ break } - + + + + arrStr = strings.Split(row.Cells[6].String(), "|") arrInt = nil if len(arrStr) > 0 && row.Cells[6].String() != "" { @@ -2344,27 +3450,53 @@ func AgcConvertDB_FishOut(fi, fo string) { } } data.Count = arrInt - - if len(row.Cells) < 7+1 { + + + + + + if len(row.Cells)<7+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[7].String(), 10, 32) data.RefreshInterval = int32(temp) - - if len(row.Cells) < 8+1 { + + + + + + + + + if len(row.Cells)<8+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[8].String(), 10, 32) data.Speed = int32(temp) - - if len(row.Cells) < 9+1 { + + + + + + + + + if len(row.Cells)<9+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[9].String(), 10, 32) data.Event = int32(temp) + + + + + + + + break } @@ -2372,26 +3504,26 @@ func AgcConvertDB_FishOut(fi, fo string) { } byteData, err := proto.Marshal(arr) - if err == nil { + if err == nil{ err := os.WriteFile(fo, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } + fmt.Println(err) + } } - + byteData, err = json.MarshalIndent(arr, "", "\t") if err == nil { foJson := strings.Replace(fo, ".dat", ".json", -1) err := os.WriteFile(foJson, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } - } + fmt.Println(err) + } + } break //only fetch first sheet } } - -func AgcConvertDB_FishPath(fi, fo string) { + +func AgcConvertDB_FishPath(fi,fo string) { xlsxFile, err := xlsx.OpenFile(fi) if err != nil { fmt.Println("excel file open error:", err, "filename:", fi) @@ -2405,19 +3537,19 @@ func AgcConvertDB_FishPath(fi, fo string) { fmt.Println("stack--->", string(buf[:lens])) } for _, sheet := range xlsxFile.Sheets { - arr := &server.DB_FishPathArray{ - Arr: make([]*server.DB_FishPath, 0, len(sheet.Rows)), + arr:=&server.DB_FishPathArray{ + Arr:make([]*server.DB_FishPath, 0, len(sheet.Rows)), } for i, row := range sheet.Rows { if i <= 1 { continue } - + if len(row.Cells) == 0 { break } - + temp := int64(0) var arrInt []int32 var arrInt64 []int64 @@ -2425,32 +3557,54 @@ func AgcConvertDB_FishPath(fi, fo string) { var _ = arrInt var _ = arrStr var _ = arrInt64 - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data := &server.DB_FishPath{} for { - - if len(row.Cells) < 0+1 { + + if len(row.Cells)<0+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data.Id = int32(temp) - - if len(row.Cells) < 1+1 { + + + + + + + + + if len(row.Cells)<1+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[1].String(), 10, 32) data.AppearTime = int32(temp) - - if len(row.Cells) < 2+1 { + + + + + + + + + if len(row.Cells)<2+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[2].String(), 10, 32) data.DisappearTime = int32(temp) + + + + + + + + break } @@ -2458,26 +3612,26 @@ func AgcConvertDB_FishPath(fi, fo string) { } byteData, err := proto.Marshal(arr) - if err == nil { + if err == nil{ err := os.WriteFile(fo, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } + fmt.Println(err) + } } - + byteData, err = json.MarshalIndent(arr, "", "\t") if err == nil { foJson := strings.Replace(fo, ".dat", ".json", -1) err := os.WriteFile(foJson, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } - } + fmt.Println(err) + } + } break //only fetch first sheet } } - -func AgcConvertDB_FishRoom(fi, fo string) { + +func AgcConvertDB_FishRoom(fi,fo string) { xlsxFile, err := xlsx.OpenFile(fi) if err != nil { fmt.Println("excel file open error:", err, "filename:", fi) @@ -2491,19 +3645,19 @@ func AgcConvertDB_FishRoom(fi, fo string) { fmt.Println("stack--->", string(buf[:lens])) } for _, sheet := range xlsxFile.Sheets { - arr := &server.DB_FishRoomArray{ - Arr: make([]*server.DB_FishRoom, 0, len(sheet.Rows)), + arr:=&server.DB_FishRoomArray{ + Arr:make([]*server.DB_FishRoom, 0, len(sheet.Rows)), } for i, row := range sheet.Rows { if i <= 1 { continue } - + if len(row.Cells) == 0 { break } - + temp := int64(0) var arrInt []int32 var arrInt64 []int64 @@ -2511,87 +3665,172 @@ func AgcConvertDB_FishRoom(fi, fo string) { var _ = arrInt var _ = arrStr var _ = arrInt64 - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data := &server.DB_FishRoom{} for { - - if len(row.Cells) < 0+1 { + + if len(row.Cells)<0+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data.Id = int32(temp) - - if len(row.Cells) < 1+1 { + + + + + + + + + if len(row.Cells)<1+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[1].String(), 10, 32) data.RoomId = int32(temp) - - if len(row.Cells) < 2+1 { + + + + + + + + + if len(row.Cells)<2+1{ break } - + + + data.Name = row.Cells[2].String() - - if len(row.Cells) < 3+1 { + + + + + + + if len(row.Cells)<3+1{ break } - + + + data.SumGold1 = row.Cells[3].String() - - if len(row.Cells) < 4+1 { + + + + + + + if len(row.Cells)<4+1{ break } - + + + data.SumGold2 = row.Cells[4].String() - - if len(row.Cells) < 5+1 { + + + + + + + if len(row.Cells)<5+1{ break } - + + + data.SumGold3 = row.Cells[5].String() - - if len(row.Cells) < 6+1 { + + + + + + + if len(row.Cells)<6+1{ break } - + + + data.SumGold4 = row.Cells[6].String() - - if len(row.Cells) < 7+1 { + + + + + + + if len(row.Cells)<7+1{ break } - + + + data.SumGold5 = row.Cells[7].String() - - if len(row.Cells) < 8+1 { + + + + + + + if len(row.Cells)<8+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[8].String(), 10, 32) data.BossCDTime = int32(temp) - - if len(row.Cells) < 9+1 { + + + + + + + + + if len(row.Cells)<9+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[9].String(), 10, 32) data.LittleBossCDTime = int32(temp) - - if len(row.Cells) < 10+1 { + + + + + + + + + if len(row.Cells)<10+1{ break } - + + + data.EnableBoss = row.Cells[10].String() - - if len(row.Cells) < 11+1 { + + + + + + + if len(row.Cells)<11+1{ break } - + + + data.EnableLittleBoss = row.Cells[11].String() + + + + + + break } @@ -2599,26 +3838,26 @@ func AgcConvertDB_FishRoom(fi, fo string) { } byteData, err := proto.Marshal(arr) - if err == nil { + if err == nil{ err := os.WriteFile(fo, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } + fmt.Println(err) + } } - + byteData, err = json.MarshalIndent(arr, "", "\t") if err == nil { foJson := strings.Replace(fo, ".dat", ".json", -1) err := os.WriteFile(foJson, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } - } + fmt.Println(err) + } + } break //only fetch first sheet } } - -func AgcConvertDB_FishSkill(fi, fo string) { + +func AgcConvertDB_FishSkill(fi,fo string) { xlsxFile, err := xlsx.OpenFile(fi) if err != nil { fmt.Println("excel file open error:", err, "filename:", fi) @@ -2632,19 +3871,19 @@ func AgcConvertDB_FishSkill(fi, fo string) { fmt.Println("stack--->", string(buf[:lens])) } for _, sheet := range xlsxFile.Sheets { - arr := &server.DB_FishSkillArray{ - Arr: make([]*server.DB_FishSkill, 0, len(sheet.Rows)), + arr:=&server.DB_FishSkillArray{ + Arr:make([]*server.DB_FishSkill, 0, len(sheet.Rows)), } for i, row := range sheet.Rows { if i <= 1 { continue } - + if len(row.Cells) == 0 { break } - + temp := int64(0) var arrInt []int32 var arrInt64 []int64 @@ -2652,43 +3891,74 @@ func AgcConvertDB_FishSkill(fi, fo string) { var _ = arrInt var _ = arrStr var _ = arrInt64 - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data := &server.DB_FishSkill{} for { - - if len(row.Cells) < 0+1 { + + if len(row.Cells)<0+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data.Id = int32(temp) - - if len(row.Cells) < 1+1 { + + + + + + + + + if len(row.Cells)<1+1{ break } - + + + data.Name = row.Cells[1].String() - - if len(row.Cells) < 2+1 { + + + + + + + if len(row.Cells)<2+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[2].String(), 10, 32) data.Vip = int32(temp) - - if len(row.Cells) < 3+1 { + + + + + + + + + if len(row.Cells)<3+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[3].String(), 10, 32) data.Consume = int32(temp) - - if len(row.Cells) < 4+1 { + + + + + + + + + if len(row.Cells)<4+1{ break } - + + + + arrStr = strings.Split(row.Cells[4].String(), "|") arrInt = nil if len(arrStr) > 0 && row.Cells[4].String() != "" { @@ -2699,11 +3969,18 @@ func AgcConvertDB_FishSkill(fi, fo string) { } } data.Item = arrInt - - if len(row.Cells) < 5+1 { + + + + + + if len(row.Cells)<5+1{ break } - + + + + arrStr = strings.Split(row.Cells[5].String(), "|") arrInt = nil if len(arrStr) > 0 && row.Cells[5].String() != "" { @@ -2714,94 +3991,190 @@ func AgcConvertDB_FishSkill(fi, fo string) { } } data.OtherConsumer = arrInt - - if len(row.Cells) < 6+1 { + + + + + + if len(row.Cells)<6+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[6].String(), 10, 32) data.Multiple = int32(temp) - - if len(row.Cells) < 7+1 { + + + + + + + + + if len(row.Cells)<7+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[7].String(), 10, 32) data.Duration = int32(temp) - - if len(row.Cells) < 8+1 { + + + + + + + + + if len(row.Cells)<8+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[8].String(), 10, 32) data.SkillGroups = int32(temp) - - if len(row.Cells) < 9+1 { + + + + + + + + + if len(row.Cells)<9+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[9].String(), 10, 32) data.GCD = int32(temp) - - if len(row.Cells) < 10+1 { + + + + + + + + + if len(row.Cells)<10+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[10].String(), 10, 32) data.Cooldown = int32(temp) - - if len(row.Cells) < 11+1 { + + + + + + + + + if len(row.Cells)<11+1{ break } - + + + data.Hidden = row.Cells[11].String() - - if len(row.Cells) < 12+1 { + + + + + + + if len(row.Cells)<12+1{ break } - + + + data.Describe = row.Cells[12].String() - - if len(row.Cells) < 13+1 { + + + + + + + if len(row.Cells)<13+1{ break } - + + + data.Boss = row.Cells[13].String() - - if len(row.Cells) < 14+1 { + + + + + + + if len(row.Cells)<14+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[14].String(), 10, 32) data.Type = int32(temp) - - if len(row.Cells) < 15+1 { + + + + + + + + + if len(row.Cells)<15+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[15].String(), 10, 32) data.Limit = int32(temp) - - if len(row.Cells) < 16+1 { + + + + + + + + + if len(row.Cells)<16+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[16].String(), 10, 32) data.Mutex = int32(temp) - - if len(row.Cells) < 17+1 { + + + + + + + + + if len(row.Cells)<17+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[17].String(), 10, 32) data.MutexTime = int32(temp) - - if len(row.Cells) < 18+1 { + + + + + + + + + if len(row.Cells)<18+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[18].String(), 10, 32) data.Fury = int32(temp) + + + + + + + + break } @@ -2809,26 +4182,26 @@ func AgcConvertDB_FishSkill(fi, fo string) { } byteData, err := proto.Marshal(arr) - if err == nil { + if err == nil{ err := os.WriteFile(fo, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } + fmt.Println(err) + } } - + byteData, err = json.MarshalIndent(arr, "", "\t") if err == nil { foJson := strings.Replace(fo, ".dat", ".json", -1) err := os.WriteFile(foJson, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } - } + fmt.Println(err) + } + } break //only fetch first sheet } } - -func AgcConvertDB_FortuneGod_Odds(fi, fo string) { + +func AgcConvertDB_FortuneGod_Odds(fi,fo string) { xlsxFile, err := xlsx.OpenFile(fi) if err != nil { fmt.Println("excel file open error:", err, "filename:", fi) @@ -2842,19 +4215,19 @@ func AgcConvertDB_FortuneGod_Odds(fi, fo string) { fmt.Println("stack--->", string(buf[:lens])) } for _, sheet := range xlsxFile.Sheets { - arr := &server.DB_FortuneGod_OddsArray{ - Arr: make([]*server.DB_FortuneGod_Odds, 0, len(sheet.Rows)), + arr:=&server.DB_FortuneGod_OddsArray{ + Arr:make([]*server.DB_FortuneGod_Odds, 0, len(sheet.Rows)), } for i, row := range sheet.Rows { if i <= 1 { continue } - + if len(row.Cells) == 0 { break } - + temp := int64(0) var arrInt []int32 var arrInt64 []int64 @@ -2862,45 +4235,81 @@ func AgcConvertDB_FortuneGod_Odds(fi, fo string) { var _ = arrInt var _ = arrStr var _ = arrInt64 - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data := &server.DB_FortuneGod_Odds{} for { - - if len(row.Cells) < 0+1 { + + if len(row.Cells)<0+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data.Id = int32(temp) - - if len(row.Cells) < 1+1 { + + + + + + + + + if len(row.Cells)<1+1{ break } - + + + data.Name = row.Cells[1].String() - - if len(row.Cells) < 2+1 { + + + + + + + if len(row.Cells)<2+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[2].String(), 10, 32) data.Rateodds3 = int32(temp) - - if len(row.Cells) < 3+1 { + + + + + + + + + if len(row.Cells)<3+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[3].String(), 10, 32) data.Rateodds4 = int32(temp) - - if len(row.Cells) < 4+1 { + + + + + + + + + if len(row.Cells)<4+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[4].String(), 10, 32) data.Rateodds5 = int32(temp) + + + + + + + + break } @@ -2908,26 +4317,26 @@ func AgcConvertDB_FortuneGod_Odds(fi, fo string) { } byteData, err := proto.Marshal(arr) - if err == nil { + if err == nil{ err := os.WriteFile(fo, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } + fmt.Println(err) + } } - + byteData, err = json.MarshalIndent(arr, "", "\t") if err == nil { foJson := strings.Replace(fo, ".dat", ".json", -1) err := os.WriteFile(foJson, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } - } + fmt.Println(err) + } + } break //only fetch first sheet } } - -func AgcConvertDB_FortuneGod_TurnRate(fi, fo string) { + +func AgcConvertDB_FortuneGod_TurnRate(fi,fo string) { xlsxFile, err := xlsx.OpenFile(fi) if err != nil { fmt.Println("excel file open error:", err, "filename:", fi) @@ -2941,19 +4350,19 @@ func AgcConvertDB_FortuneGod_TurnRate(fi, fo string) { fmt.Println("stack--->", string(buf[:lens])) } for _, sheet := range xlsxFile.Sheets { - arr := &server.DB_FortuneGod_TurnRateArray{ - Arr: make([]*server.DB_FortuneGod_TurnRate, 0, len(sheet.Rows)), + arr:=&server.DB_FortuneGod_TurnRateArray{ + Arr:make([]*server.DB_FortuneGod_TurnRate, 0, len(sheet.Rows)), } for i, row := range sheet.Rows { if i <= 1 { continue } - + if len(row.Cells) == 0 { break } - + temp := int64(0) var arrInt []int32 var arrInt64 []int64 @@ -2961,37 +4370,61 @@ func AgcConvertDB_FortuneGod_TurnRate(fi, fo string) { var _ = arrInt var _ = arrStr var _ = arrInt64 - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data := &server.DB_FortuneGod_TurnRate{} for { - - if len(row.Cells) < 0+1 { + + if len(row.Cells)<0+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data.Id = int32(temp) - - if len(row.Cells) < 1+1 { + + + + + + + + + if len(row.Cells)<1+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[1].String(), 10, 32) data.ReturnRateMin = int32(temp) - - if len(row.Cells) < 2+1 { + + + + + + + + + if len(row.Cells)<2+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[2].String(), 10, 32) data.ReturnRateMax = int32(temp) - - if len(row.Cells) < 3+1 { + + + + + + + + + if len(row.Cells)<3+1{ break } - + + + + arrStr = strings.Split(row.Cells[3].String(), "|") arrInt = nil if len(arrStr) > 0 && row.Cells[3].String() != "" { @@ -3002,6 +4435,11 @@ func AgcConvertDB_FortuneGod_TurnRate(fi, fo string) { } } data.Chance = arrInt + + + + + break } @@ -3009,26 +4447,26 @@ func AgcConvertDB_FortuneGod_TurnRate(fi, fo string) { } byteData, err := proto.Marshal(arr) - if err == nil { + if err == nil{ err := os.WriteFile(fo, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } + fmt.Println(err) + } } - + byteData, err = json.MarshalIndent(arr, "", "\t") if err == nil { foJson := strings.Replace(fo, ".dat", ".json", -1) err := os.WriteFile(foJson, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } - } + fmt.Println(err) + } + } break //only fetch first sheet } } - -func AgcConvertDB_FortuneGod_Weight(fi, fo string) { + +func AgcConvertDB_FortuneGod_Weight(fi,fo string) { xlsxFile, err := xlsx.OpenFile(fi) if err != nil { fmt.Println("excel file open error:", err, "filename:", fi) @@ -3042,19 +4480,19 @@ func AgcConvertDB_FortuneGod_Weight(fi, fo string) { fmt.Println("stack--->", string(buf[:lens])) } for _, sheet := range xlsxFile.Sheets { - arr := &server.DB_FortuneGod_WeightArray{ - Arr: make([]*server.DB_FortuneGod_Weight, 0, len(sheet.Rows)), + arr:=&server.DB_FortuneGod_WeightArray{ + Arr:make([]*server.DB_FortuneGod_Weight, 0, len(sheet.Rows)), } for i, row := range sheet.Rows { if i <= 1 { continue } - + if len(row.Cells) == 0 { break } - + temp := int64(0) var arrInt []int32 var arrInt64 []int64 @@ -3062,29 +4500,46 @@ func AgcConvertDB_FortuneGod_Weight(fi, fo string) { var _ = arrInt var _ = arrStr var _ = arrInt64 - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data := &server.DB_FortuneGod_Weight{} for { - - if len(row.Cells) < 0+1 { + + if len(row.Cells)<0+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data.Id = int32(temp) - - if len(row.Cells) < 1+1 { + + + + + + + + + if len(row.Cells)<1+1{ break } - + + + data.Name = row.Cells[1].String() - - if len(row.Cells) < 2+1 { + + + + + + + if len(row.Cells)<2+1{ break } - + + + + arrStr = strings.Split(row.Cells[2].String(), "|") arrInt = nil if len(arrStr) > 0 && row.Cells[2].String() != "" { @@ -3095,6 +4550,11 @@ func AgcConvertDB_FortuneGod_Weight(fi, fo string) { } } data.Weight = arrInt + + + + + break } @@ -3102,26 +4562,26 @@ func AgcConvertDB_FortuneGod_Weight(fi, fo string) { } byteData, err := proto.Marshal(arr) - if err == nil { + if err == nil{ err := os.WriteFile(fo, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } + fmt.Println(err) + } } - + byteData, err = json.MarshalIndent(arr, "", "\t") if err == nil { foJson := strings.Replace(fo, ".dat", ".json", -1) err := os.WriteFile(foJson, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } - } + fmt.Println(err) + } + } break //only fetch first sheet } } - -func AgcConvertDB_FortuneGod_WeightCondition(fi, fo string) { + +func AgcConvertDB_FortuneGod_WeightCondition(fi,fo string) { xlsxFile, err := xlsx.OpenFile(fi) if err != nil { fmt.Println("excel file open error:", err, "filename:", fi) @@ -3135,19 +4595,19 @@ func AgcConvertDB_FortuneGod_WeightCondition(fi, fo string) { fmt.Println("stack--->", string(buf[:lens])) } for _, sheet := range xlsxFile.Sheets { - arr := &server.DB_FortuneGod_WeightConditionArray{ - Arr: make([]*server.DB_FortuneGod_WeightCondition, 0, len(sheet.Rows)), + arr:=&server.DB_FortuneGod_WeightConditionArray{ + Arr:make([]*server.DB_FortuneGod_WeightCondition, 0, len(sheet.Rows)), } for i, row := range sheet.Rows { if i <= 1 { continue } - + if len(row.Cells) == 0 { break } - + temp := int64(0) var arrInt []int32 var arrInt64 []int64 @@ -3155,30 +4615,47 @@ func AgcConvertDB_FortuneGod_WeightCondition(fi, fo string) { var _ = arrInt var _ = arrStr var _ = arrInt64 - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data := &server.DB_FortuneGod_WeightCondition{} for { - - if len(row.Cells) < 0+1 { + + if len(row.Cells)<0+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data.Id = int32(temp) - - if len(row.Cells) < 1+1 { + + + + + + + + + if len(row.Cells)<1+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[1].String(), 10, 32) data.IsNew = int32(temp) - - if len(row.Cells) < 2+1 { + + + + + + + + + if len(row.Cells)<2+1{ break } - + + + + arrStr = strings.Split(row.Cells[2].String(), "|") arrInt = nil if len(arrStr) > 0 && row.Cells[2].String() != "" { @@ -3189,11 +4666,18 @@ func AgcConvertDB_FortuneGod_WeightCondition(fi, fo string) { } } data.BetScope = arrInt - - if len(row.Cells) < 3+1 { + + + + + + if len(row.Cells)<3+1{ break } - + + + + arrStr = strings.Split(row.Cells[3].String(), "|") arrInt = nil if len(arrStr) > 0 && row.Cells[3].String() != "" { @@ -3204,13 +4688,25 @@ func AgcConvertDB_FortuneGod_WeightCondition(fi, fo string) { } } data.TrueCalcRate = arrInt - - if len(row.Cells) < 4+1 { + + + + + + if len(row.Cells)<4+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[4].String(), 10, 32) data.WeightId = int32(temp) + + + + + + + + break } @@ -3218,26 +4714,26 @@ func AgcConvertDB_FortuneGod_WeightCondition(fi, fo string) { } byteData, err := proto.Marshal(arr) - if err == nil { + if err == nil{ err := os.WriteFile(fo, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } + fmt.Println(err) + } } - + byteData, err = json.MarshalIndent(arr, "", "\t") if err == nil { foJson := strings.Replace(fo, ".dat", ".json", -1) err := os.WriteFile(foJson, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } - } + fmt.Println(err) + } + } break //only fetch first sheet } } - -func AgcConvertDB_GamMatchLV(fi, fo string) { + +func AgcConvertDB_GamMatchLV(fi,fo string) { xlsxFile, err := xlsx.OpenFile(fi) if err != nil { fmt.Println("excel file open error:", err, "filename:", fi) @@ -3251,19 +4747,19 @@ func AgcConvertDB_GamMatchLV(fi, fo string) { fmt.Println("stack--->", string(buf[:lens])) } for _, sheet := range xlsxFile.Sheets { - arr := &server.DB_GamMatchLVArray{ - Arr: make([]*server.DB_GamMatchLV, 0, len(sheet.Rows)), + arr:=&server.DB_GamMatchLVArray{ + Arr:make([]*server.DB_GamMatchLV, 0, len(sheet.Rows)), } for i, row := range sheet.Rows { if i <= 1 { continue } - + if len(row.Cells) == 0 { break } - + temp := int64(0) var arrInt []int32 var arrInt64 []int64 @@ -3271,23 +4767,33 @@ func AgcConvertDB_GamMatchLV(fi, fo string) { var _ = arrInt var _ = arrStr var _ = arrInt64 - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data := &server.DB_GamMatchLV{} for { - - if len(row.Cells) < 0+1 { + + if len(row.Cells)<0+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data.Id = int32(temp) - - if len(row.Cells) < 1+1 { + + + + + + + + + if len(row.Cells)<1+1{ break } - + + + + arrStr = strings.Split(row.Cells[1].String(), "|") arrInt = nil if len(arrStr) > 0 && row.Cells[1].String() != "" { @@ -3298,82 +4804,164 @@ func AgcConvertDB_GamMatchLV(fi, fo string) { } } data.Star = arrInt - - if len(row.Cells) < 2+1 { + + + + + + if len(row.Cells)<2+1{ break } - + + + data.Name = row.Cells[2].String() - - if len(row.Cells) < 3+1 { + + + + + + + if len(row.Cells)<3+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[3].String(), 10, 32) data.Star2 = int32(temp) - - if len(row.Cells) < 4+1 { + + + + + + + + + if len(row.Cells)<4+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[4].String(), 10, 32) data.AwardType1 = int32(temp) - - if len(row.Cells) < 5+1 { + + + + + + + + + if len(row.Cells)<5+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[5].String(), 10, 32) data.AwardId1 = int32(temp) - - if len(row.Cells) < 6+1 { + + + + + + + + + if len(row.Cells)<6+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[6].String(), 10, 32) data.Number1 = int32(temp) - - if len(row.Cells) < 7+1 { + + + + + + + + + if len(row.Cells)<7+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[7].String(), 10, 32) data.AwardType2 = int32(temp) - - if len(row.Cells) < 8+1 { + + + + + + + + + if len(row.Cells)<8+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[8].String(), 10, 32) data.AwardId2 = int32(temp) - - if len(row.Cells) < 9+1 { + + + + + + + + + if len(row.Cells)<9+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[9].String(), 10, 32) data.Number2 = int32(temp) - - if len(row.Cells) < 10+1 { + + + + + + + + + if len(row.Cells)<10+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[10].String(), 10, 32) data.AwardType3 = int32(temp) - - if len(row.Cells) < 11+1 { + + + + + + + + + if len(row.Cells)<11+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[11].String(), 10, 32) data.AwardId3 = int32(temp) - - if len(row.Cells) < 12+1 { + + + + + + + + + if len(row.Cells)<12+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[12].String(), 10, 32) data.Number3 = int32(temp) + + + + + + + + break } @@ -3381,26 +4969,26 @@ func AgcConvertDB_GamMatchLV(fi, fo string) { } byteData, err := proto.Marshal(arr) - if err == nil { + if err == nil{ err := os.WriteFile(fo, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } + fmt.Println(err) + } } - + byteData, err = json.MarshalIndent(arr, "", "\t") if err == nil { foJson := strings.Replace(fo, ".dat", ".json", -1) err := os.WriteFile(foJson, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } - } + fmt.Println(err) + } + } break //only fetch first sheet } } - -func AgcConvertDB_GameCoinPool(fi, fo string) { + +func AgcConvertDB_GameCoinPool(fi,fo string) { xlsxFile, err := xlsx.OpenFile(fi) if err != nil { fmt.Println("excel file open error:", err, "filename:", fi) @@ -3414,19 +5002,19 @@ func AgcConvertDB_GameCoinPool(fi, fo string) { fmt.Println("stack--->", string(buf[:lens])) } for _, sheet := range xlsxFile.Sheets { - arr := &server.DB_GameCoinPoolArray{ - Arr: make([]*server.DB_GameCoinPool, 0, len(sheet.Rows)), + arr:=&server.DB_GameCoinPoolArray{ + Arr:make([]*server.DB_GameCoinPool, 0, len(sheet.Rows)), } for i, row := range sheet.Rows { if i <= 1 { continue } - + if len(row.Cells) == 0 { break } - + temp := int64(0) var arrInt []int32 var arrInt64 []int64 @@ -3434,95 +5022,180 @@ func AgcConvertDB_GameCoinPool(fi, fo string) { var _ = arrInt var _ = arrStr var _ = arrInt64 - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data := &server.DB_GameCoinPool{} for { - - if len(row.Cells) < 0+1 { + + if len(row.Cells)<0+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data.Id = int32(temp) - - if len(row.Cells) < 3+1 { + + + + + + + + + if len(row.Cells)<3+1{ break } - + + temp, _ = strconv.ParseInt(row.Cells[3].String(), 10, 64) data.InitValue = int64(temp) - - if len(row.Cells) < 4+1 { + + + + + + + + if len(row.Cells)<4+1{ break } - + + temp, _ = strconv.ParseInt(row.Cells[4].String(), 10, 64) data.LowerLimit = int64(temp) - - if len(row.Cells) < 5+1 { + + + + + + + + if len(row.Cells)<5+1{ break } - + + temp, _ = strconv.ParseInt(row.Cells[5].String(), 10, 64) data.UpperLimit = int64(temp) - - if len(row.Cells) < 6+1 { + + + + + + + + if len(row.Cells)<6+1{ break } - + + temp, _ = strconv.ParseInt(row.Cells[6].String(), 10, 64) data.QuDu = int64(temp) - - if len(row.Cells) < 7+1 { + + + + + + + + if len(row.Cells)<7+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[7].String(), 10, 32) data.UpperOdds = int32(temp) - - if len(row.Cells) < 8+1 { + + + + + + + + + if len(row.Cells)<8+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[8].String(), 10, 32) data.UpperOddsMax = int32(temp) - - if len(row.Cells) < 9+1 { + + + + + + + + + if len(row.Cells)<9+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[9].String(), 10, 32) data.LowerOdds = int32(temp) - - if len(row.Cells) < 10+1 { + + + + + + + + + if len(row.Cells)<10+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[10].String(), 10, 32) data.LowerOddsMax = int32(temp) - - if len(row.Cells) < 11+1 { + + + + + + + + + if len(row.Cells)<11+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[11].String(), 10, 32) data.ProfitRate = int32(temp) - - if len(row.Cells) < 12+1 { + + + + + + + + + if len(row.Cells)<12+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[12].String(), 10, 32) data.CtrlRate = int32(temp) - - if len(row.Cells) < 13+1 { + + + + + + + + + if len(row.Cells)<13+1{ break } - + + temp, _ = strconv.ParseInt(row.Cells[13].String(), 10, 64) data.InitNovicValue = int64(temp) + + + + + + + break } @@ -3530,26 +5203,26 @@ func AgcConvertDB_GameCoinPool(fi, fo string) { } byteData, err := proto.Marshal(arr) - if err == nil { + if err == nil{ err := os.WriteFile(fo, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } + fmt.Println(err) + } } - + byteData, err = json.MarshalIndent(arr, "", "\t") if err == nil { foJson := strings.Replace(fo, ".dat", ".json", -1) err := os.WriteFile(foJson, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } - } + fmt.Println(err) + } + } break //only fetch first sheet } } - -func AgcConvertDB_GameFree(fi, fo string) { + +func AgcConvertDB_GameFree(fi,fo string) { xlsxFile, err := xlsx.OpenFile(fi) if err != nil { fmt.Println("excel file open error:", err, "filename:", fi) @@ -3563,19 +5236,19 @@ func AgcConvertDB_GameFree(fi, fo string) { fmt.Println("stack--->", string(buf[:lens])) } for _, sheet := range xlsxFile.Sheets { - arr := &server.DB_GameFreeArray{ - Arr: make([]*server.DB_GameFree, 0, len(sheet.Rows)), + arr:=&server.DB_GameFreeArray{ + Arr:make([]*server.DB_GameFree, 0, len(sheet.Rows)), } for i, row := range sheet.Rows { if i <= 1 { continue } - + if len(row.Cells) == 0 { break } - + temp := int64(0) var arrInt []int32 var arrInt64 []int64 @@ -3583,187 +5256,365 @@ func AgcConvertDB_GameFree(fi, fo string) { var _ = arrInt var _ = arrStr var _ = arrInt64 - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data := &server.DB_GameFree{} for { - - if len(row.Cells) < 0+1 { + + if len(row.Cells)<0+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data.Id = int32(temp) - - if len(row.Cells) < 1+1 { + + + + + + + + + if len(row.Cells)<1+1{ break } - + + + data.Name = row.Cells[1].String() - - if len(row.Cells) < 2+1 { + + + + + + + if len(row.Cells)<2+1{ break } - + + + data.Title = row.Cells[2].String() - - if len(row.Cells) < 3+1 { + + + + + + + if len(row.Cells)<3+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[3].String(), 10, 32) data.GameId = int32(temp) - - if len(row.Cells) < 4+1 { + + + + + + + + + if len(row.Cells)<4+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[4].String(), 10, 32) data.GameMode = int32(temp) - - if len(row.Cells) < 5+1 { + + + + + + + + + if len(row.Cells)<5+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[5].String(), 10, 32) data.FreeMode = int32(temp) - - if len(row.Cells) < 6+1 { + + + + + + + + + if len(row.Cells)<6+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[6].String(), 10, 32) data.GameRule = int32(temp) - - if len(row.Cells) < 7+1 { + + + + + + + + + if len(row.Cells)<7+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[7].String(), 10, 32) data.GameType = int32(temp) - - if len(row.Cells) < 8+1 { + + + + + + + + + if len(row.Cells)<8+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[8].String(), 10, 32) data.SceneType = int32(temp) - - if len(row.Cells) < 9+1 { + + + + + + + + + if len(row.Cells)<9+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[9].String(), 10, 32) data.RankType = int32(temp) - - if len(row.Cells) < 10+1 { + + + + + + + + + if len(row.Cells)<10+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[10].String(), 10, 32) data.SceneAdd = int32(temp) - - if len(row.Cells) < 11+1 { + + + + + + + + + if len(row.Cells)<11+1{ break } - + + + data.Desc = row.Cells[11].String() - - if len(row.Cells) < 12+1 { + + + + + + + if len(row.Cells)<12+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[12].String(), 10, 32) data.ShowType = int32(temp) - - if len(row.Cells) < 13+1 { + + + + + + + + + if len(row.Cells)<13+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[13].String(), 10, 32) data.SubShowType = int32(temp) - - if len(row.Cells) < 14+1 { + + + + + + + + + if len(row.Cells)<14+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[14].String(), 10, 32) data.Flag = int32(temp) - - if len(row.Cells) < 15+1 { + + + + + + + + + if len(row.Cells)<15+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[15].String(), 10, 32) data.TestTakeCoin = int32(temp) - - if len(row.Cells) < 16+1 { + + + + + + + + + if len(row.Cells)<16+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[16].String(), 10, 32) data.ShowId = int32(temp) - - if len(row.Cells) < 17+1 { + + + + + + + + + if len(row.Cells)<17+1{ break } - + + temp, _ = strconv.ParseInt(row.Cells[17].String(), 10, 64) data.LimitCoin = int64(temp) - - if len(row.Cells) < 18+1 { + + + + + + + + if len(row.Cells)<18+1{ break } - + + temp, _ = strconv.ParseInt(row.Cells[18].String(), 10, 64) data.MaxCoinLimit = int64(temp) - - if len(row.Cells) < 19+1 { + + + + + + + + if len(row.Cells)<19+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[19].String(), 10, 32) data.ServiceFee = int32(temp) - - if len(row.Cells) < 20+1 { + + + + + + + + + if len(row.Cells)<20+1{ break } - + + temp, _ = strconv.ParseInt(row.Cells[20].String(), 10, 64) data.LowerThanKick = int64(temp) - - if len(row.Cells) < 21+1 { + + + + + + + + if len(row.Cells)<21+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[21].String(), 10, 32) data.BaseScore = int32(temp) - - if len(row.Cells) < 22+1 { + + + + + + + + + if len(row.Cells)<22+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[22].String(), 10, 32) data.Turn = int32(temp) - - if len(row.Cells) < 23+1 { + + + + + + + + + if len(row.Cells)<23+1{ break } - + + + data.BetDec = row.Cells[23].String() - - if len(row.Cells) < 24+1 { + + + + + + + if len(row.Cells)<24+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[24].String(), 10, 32) data.Bot = int32(temp) - - if len(row.Cells) < 25+1 { + + + + + + + + + if len(row.Cells)<25+1{ break } - + + + + arrStr = strings.Split(row.Cells[25].String(), "|") arrInt = nil if len(arrStr) > 0 && row.Cells[25].String() != "" { @@ -3774,25 +5625,48 @@ func AgcConvertDB_GameFree(fi, fo string) { } } data.Ai = arrInt - - if len(row.Cells) < 26+1 { + + + + + + if len(row.Cells)<26+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[26].String(), 10, 32) data.Banker = int32(temp) - - if len(row.Cells) < 27+1 { + + + + + + + + + if len(row.Cells)<27+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[27].String(), 10, 32) data.MaxChip = int32(temp) - - if len(row.Cells) < 28+1 { + + + + + + + + + if len(row.Cells)<28+1{ break } - + + + + + + arrStr = strings.Split(row.Cells[28].String(), "|") arrInt64 = nil if len(arrStr) > 0 && row.Cells[28].String() != "" { @@ -3803,11 +5677,18 @@ func AgcConvertDB_GameFree(fi, fo string) { } } data.OtherIntParams = arrInt64 - - if len(row.Cells) < 29+1 { + + + + if len(row.Cells)<29+1{ break } - + + + + + + arrStr = strings.Split(row.Cells[29].String(), "|") arrInt64 = nil if len(arrStr) > 0 && row.Cells[29].String() != "" { @@ -3818,11 +5699,18 @@ func AgcConvertDB_GameFree(fi, fo string) { } } data.ChessScoreParams = arrInt64 - - if len(row.Cells) < 30+1 { + + + + if len(row.Cells)<30+1{ break } - + + + + + + arrStr = strings.Split(row.Cells[30].String(), "|") arrInt64 = nil if len(arrStr) > 0 && row.Cells[30].String() != "" { @@ -3833,11 +5721,16 @@ func AgcConvertDB_GameFree(fi, fo string) { } } data.RankScoreParams = arrInt64 - - if len(row.Cells) < 31+1 { + + + + if len(row.Cells)<31+1{ break } - + + + + arrStr = strings.Split(row.Cells[31].String(), "|") arrInt = nil if len(arrStr) > 0 && row.Cells[31].String() != "" { @@ -3848,11 +5741,18 @@ func AgcConvertDB_GameFree(fi, fo string) { } } data.Jackpot = arrInt - - if len(row.Cells) < 32+1 { + + + + + + if len(row.Cells)<32+1{ break } - + + + + arrStr = strings.Split(row.Cells[32].String(), "|") arrInt = nil if len(arrStr) > 0 && row.Cells[32].String() != "" { @@ -3863,11 +5763,20 @@ func AgcConvertDB_GameFree(fi, fo string) { } } data.RobotNumRng = arrInt - - if len(row.Cells) < 33+1 { + + + + + + if len(row.Cells)<33+1{ break } - + + + + + + arrStr = strings.Split(row.Cells[33].String(), "|") arrInt64 = nil if len(arrStr) > 0 && row.Cells[33].String() != "" { @@ -3878,11 +5787,18 @@ func AgcConvertDB_GameFree(fi, fo string) { } } data.RobotTakeCoin = arrInt64 - - if len(row.Cells) < 34+1 { + + + + if len(row.Cells)<34+1{ break } - + + + + + + arrStr = strings.Split(row.Cells[34].String(), "|") arrInt64 = nil if len(arrStr) > 0 && row.Cells[34].String() != "" { @@ -3893,58 +5809,112 @@ func AgcConvertDB_GameFree(fi, fo string) { } } data.RobotLimitCoin = arrInt64 - - if len(row.Cells) < 35+1 { + + + + if len(row.Cells)<35+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[35].String(), 10, 32) data.BetLimit = int32(temp) - - if len(row.Cells) < 36+1 { + + + + + + + + + if len(row.Cells)<36+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[36].String(), 10, 32) data.TaxRate = int32(temp) - - if len(row.Cells) < 37+1 { + + + + + + + + + if len(row.Cells)<37+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[37].String(), 10, 32) data.SameIpLimit = int32(temp) - - if len(row.Cells) < 38+1 { + + + + + + + + + if len(row.Cells)<38+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[38].String(), 10, 32) data.SamePlaceLimit = int32(temp) - - if len(row.Cells) < 39+1 { + + + + + + + + + if len(row.Cells)<39+1{ break } - + + + data.GameDif = row.Cells[39].String() - - if len(row.Cells) < 40+1 { + + + + + + + if len(row.Cells)<40+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[40].String(), 10, 32) data.GameClass = int32(temp) - - if len(row.Cells) < 41+1 { + + + + + + + + + if len(row.Cells)<41+1{ break } - + + + data.PlatformName = row.Cells[41].String() - - if len(row.Cells) < 42+1 { + + + + + + + if len(row.Cells)<42+1{ break } - + + + + arrStr = strings.Split(row.Cells[42].String(), "|") arrInt = nil if len(arrStr) > 0 && row.Cells[42].String() != "" { @@ -3955,73 +5925,143 @@ func AgcConvertDB_GameFree(fi, fo string) { } } data.MaxBetCoin = arrInt - - if len(row.Cells) < 43+1 { + + + + + + if len(row.Cells)<43+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[43].String(), 10, 32) data.PlayNumLimit = int32(temp) - - if len(row.Cells) < 44+1 { + + + + + + + + + if len(row.Cells)<44+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[44].String(), 10, 32) data.CreateRoomNum = int32(temp) - - if len(row.Cells) < 45+1 { + + + + + + + + + if len(row.Cells)<45+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[45].String(), 10, 32) data.MatchTrueMan = int32(temp) - - if len(row.Cells) < 46+1 { + + + + + + + + + if len(row.Cells)<46+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[46].String(), 10, 32) data.PlayerWaterRate = int32(temp) - - if len(row.Cells) < 47+1 { + + + + + + + + + if len(row.Cells)<47+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[47].String(), 10, 32) data.MatchMode = int32(temp) - - if len(row.Cells) < 48+1 { + + + + + + + + + if len(row.Cells)<48+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[48].String(), 10, 32) data.KillingRate = int32(temp) - - if len(row.Cells) < 49+1 { + + + + + + + + + if len(row.Cells)<49+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[49].String(), 10, 32) data.BetWaterRate = int32(temp) - - if len(row.Cells) < 50+1 { + + + + + + + + + if len(row.Cells)<50+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[50].String(), 10, 32) data.Lottery = int32(temp) - - if len(row.Cells) < 51+1 { + + + + + + + + + if len(row.Cells)<51+1{ break } - + + + data.LotteryConfig = row.Cells[51].String() - - if len(row.Cells) < 52+1 { + + + + + + + if len(row.Cells)<52+1{ break } - + + + + arrStr = strings.Split(row.Cells[52].String(), "|") arrInt = nil if len(arrStr) > 0 && row.Cells[52].String() != "" { @@ -4032,25 +6072,46 @@ func AgcConvertDB_GameFree(fi, fo string) { } } data.BalanceLine = arrInt - - if len(row.Cells) < 53+1 { + + + + + + if len(row.Cells)<53+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[53].String(), 10, 32) data.JackpotRatio = int32(temp) - - if len(row.Cells) < 54+1 { + + + + + + + + + if len(row.Cells)<54+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[54].String(), 10, 32) data.JackpotMin = int32(temp) - - if len(row.Cells) < 55+1 { + + + + + + + + + if len(row.Cells)<55+1{ break } - + + + + arrStr = strings.Split(row.Cells[55].String(), "|") arrInt = nil if len(arrStr) > 0 && row.Cells[55].String() != "" { @@ -4061,110 +6122,220 @@ func AgcConvertDB_GameFree(fi, fo string) { } } data.ChessGradeLimit = arrInt - - if len(row.Cells) < 56+1 { + + + + + + if len(row.Cells)<56+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[56].String(), 10, 32) data.LeaveDeduct = int32(temp) - - if len(row.Cells) < 57+1 { + + + + + + + + + if len(row.Cells)<57+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[57].String(), 10, 32) data.LeaveCombat = int32(temp) - - if len(row.Cells) < 58+1 { + + + + + + + + + if len(row.Cells)<58+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[58].String(), 10, 32) data.IntuseCannonMin = int32(temp) - - if len(row.Cells) < 59+1 { + + + + + + + + + if len(row.Cells)<59+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[59].String(), 10, 32) data.IntuseCannonMax = int32(temp) - - if len(row.Cells) < 60+1 { + + + + + + + + + if len(row.Cells)<60+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[60].String(), 10, 32) data.BossDrainageBet = int32(temp) - - if len(row.Cells) < 61+1 { + + + + + + + + + if len(row.Cells)<61+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[61].String(), 10, 32) data.Draw = int32(temp) - - if len(row.Cells) < 62+1 { + + + + + + + + + if len(row.Cells)<62+1{ break } - + + temp, _ = strconv.ParseInt(row.Cells[62].String(), 10, 64) data.Fluctuate = int64(temp) - - if len(row.Cells) < 63+1 { + + + + + + + + if len(row.Cells)<63+1{ break } - + + + data.FluctuateMax = row.Cells[63].String() - - if len(row.Cells) < 64+1 { + + + + + + + if len(row.Cells)<64+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[64].String(), 10, 32) data.Ratio = int32(temp) - - if len(row.Cells) < 65+1 { + + + + + + + + + if len(row.Cells)<65+1{ break } - + + temp, _ = strconv.ParseInt(row.Cells[65].String(), 10, 64) data.MinValue = int64(temp) - - if len(row.Cells) < 66+1 { + + + + + + + + if len(row.Cells)<66+1{ break } - + + temp, _ = strconv.ParseInt(row.Cells[66].String(), 10, 64) data.MaxValue = int64(temp) - - if len(row.Cells) < 67+1 { + + + + + + + + if len(row.Cells)<67+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[67].String(), 10, 32) data.DrainageBet = int32(temp) - - if len(row.Cells) < 68+1 { + + + + + + + + + if len(row.Cells)<68+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[68].String(), 10, 32) data.DiamondDrop = int32(temp) - - if len(row.Cells) < 69+1 { + + + + + + + + + if len(row.Cells)<69+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[69].String(), 10, 32) data.NegativeMax = int32(temp) - - if len(row.Cells) < 70+1 { + + + + + + + + + if len(row.Cells)<70+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[70].String(), 10, 32) data.RatioMax = int32(temp) + + + + + + + + break } @@ -4172,26 +6343,26 @@ func AgcConvertDB_GameFree(fi, fo string) { } byteData, err := proto.Marshal(arr) - if err == nil { + if err == nil{ err := os.WriteFile(fo, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } + fmt.Println(err) + } } - + byteData, err = json.MarshalIndent(arr, "", "\t") if err == nil { foJson := strings.Replace(fo, ".dat", ".json", -1) err := os.WriteFile(foJson, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } - } + fmt.Println(err) + } + } break //only fetch first sheet } } - -func AgcConvertDB_GameItem(fi, fo string) { + +func AgcConvertDB_GameItem(fi,fo string) { xlsxFile, err := xlsx.OpenFile(fi) if err != nil { fmt.Println("excel file open error:", err, "filename:", fi) @@ -4205,19 +6376,19 @@ func AgcConvertDB_GameItem(fi, fo string) { fmt.Println("stack--->", string(buf[:lens])) } for _, sheet := range xlsxFile.Sheets { - arr := &server.DB_GameItemArray{ - Arr: make([]*server.DB_GameItem, 0, len(sheet.Rows)), + arr:=&server.DB_GameItemArray{ + Arr:make([]*server.DB_GameItem, 0, len(sheet.Rows)), } for i, row := range sheet.Rows { if i <= 1 { continue } - + if len(row.Cells) == 0 { break } - + temp := int64(0) var arrInt []int32 var arrInt64 []int64 @@ -4225,29 +6396,46 @@ func AgcConvertDB_GameItem(fi, fo string) { var _ = arrInt var _ = arrStr var _ = arrInt64 - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data := &server.DB_GameItem{} for { - - if len(row.Cells) < 0+1 { + + if len(row.Cells)<0+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data.Id = int32(temp) - - if len(row.Cells) < 1+1 { + + + + + + + + + if len(row.Cells)<1+1{ break } - + + + data.Name = row.Cells[1].String() - - if len(row.Cells) < 2+1 { + + + + + + + if len(row.Cells)<2+1{ break } - + + + + arrStr = strings.Split(row.Cells[2].String(), "|") arrInt = nil if len(arrStr) > 0 && row.Cells[2].String() != "" { @@ -4258,11 +6446,18 @@ func AgcConvertDB_GameItem(fi, fo string) { } } data.ShowLocation = arrInt - - if len(row.Cells) < 3+1 { + + + + + + if len(row.Cells)<3+1{ break } - + + + + arrStr = strings.Split(row.Cells[3].String(), "|") arrInt = nil if len(arrStr) > 0 && row.Cells[3].String() != "" { @@ -4273,18 +6468,32 @@ func AgcConvertDB_GameItem(fi, fo string) { } } data.Classify = arrInt - - if len(row.Cells) < 4+1 { + + + + + + if len(row.Cells)<4+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[4].String(), 10, 32) data.Type = int32(temp) - - if len(row.Cells) < 5+1 { + + + + + + + + + if len(row.Cells)<5+1{ break } - + + + + arrStr = strings.Split(row.Cells[5].String(), "|") arrInt = nil if len(arrStr) > 0 && row.Cells[5].String() != "" { @@ -4295,11 +6504,18 @@ func AgcConvertDB_GameItem(fi, fo string) { } } data.Effect0 = arrInt - - if len(row.Cells) < 6+1 { + + + + + + if len(row.Cells)<6+1{ break } - + + + + arrStr = strings.Split(row.Cells[6].String(), "|") arrInt = nil if len(arrStr) > 0 && row.Cells[6].String() != "" { @@ -4310,66 +6526,134 @@ func AgcConvertDB_GameItem(fi, fo string) { } } data.Effect = arrInt - - if len(row.Cells) < 7+1 { + + + + + + if len(row.Cells)<7+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[7].String(), 10, 32) data.SaleType = int32(temp) - - if len(row.Cells) < 8+1 { + + + + + + + + + if len(row.Cells)<8+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[8].String(), 10, 32) data.SaleGold = int32(temp) - - if len(row.Cells) < 9+1 { + + + + + + + + + if len(row.Cells)<9+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[9].String(), 10, 32) data.Composition = int32(temp) - - if len(row.Cells) < 10+1 { + + + + + + + + + if len(row.Cells)<10+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[10].String(), 10, 32) data.CompositionMax = int32(temp) - - if len(row.Cells) < 11+1 { + + + + + + + + + if len(row.Cells)<11+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[11].String(), 10, 32) data.Time = int32(temp) - - if len(row.Cells) < 12+1 { + + + + + + + + + if len(row.Cells)<12+1{ break } - + + + data.Location = row.Cells[12].String() - - if len(row.Cells) < 13+1 { + + + + + + + if len(row.Cells)<13+1{ break } - + + + data.Describe = row.Cells[13].String() - - if len(row.Cells) < 14+1 { + + + + + + + if len(row.Cells)<14+1{ break } - + + temp, _ = strconv.ParseInt(row.Cells[14].String(), 10, 64) data.Num = int64(temp) - - if len(row.Cells) < 15+1 { + + + + + + + + if len(row.Cells)<15+1{ break } - + + + data.Value = row.Cells[15].String() + + + + + + break } @@ -4377,26 +6661,26 @@ func AgcConvertDB_GameItem(fi, fo string) { } byteData, err := proto.Marshal(arr) - if err == nil { + if err == nil{ err := os.WriteFile(fo, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } + fmt.Println(err) + } } - + byteData, err = json.MarshalIndent(arr, "", "\t") if err == nil { foJson := strings.Replace(fo, ".dat", ".json", -1) err := os.WriteFile(foJson, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } - } + fmt.Println(err) + } + } break //only fetch first sheet } } - -func AgcConvertDB_GameMatchLevel(fi, fo string) { + +func AgcConvertDB_GameMatchLevel(fi,fo string) { xlsxFile, err := xlsx.OpenFile(fi) if err != nil { fmt.Println("excel file open error:", err, "filename:", fi) @@ -4410,19 +6694,19 @@ func AgcConvertDB_GameMatchLevel(fi, fo string) { fmt.Println("stack--->", string(buf[:lens])) } for _, sheet := range xlsxFile.Sheets { - arr := &server.DB_GameMatchLevelArray{ - Arr: make([]*server.DB_GameMatchLevel, 0, len(sheet.Rows)), + arr:=&server.DB_GameMatchLevelArray{ + Arr:make([]*server.DB_GameMatchLevel, 0, len(sheet.Rows)), } for i, row := range sheet.Rows { if i <= 1 { continue } - + if len(row.Cells) == 0 { break } - + temp := int64(0) var arrInt []int32 var arrInt64 []int64 @@ -4430,44 +6714,75 @@ func AgcConvertDB_GameMatchLevel(fi, fo string) { var _ = arrInt var _ = arrStr var _ = arrInt64 - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data := &server.DB_GameMatchLevel{} for { - - if len(row.Cells) < 0+1 { + + if len(row.Cells)<0+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data.Id = int32(temp) - - if len(row.Cells) < 1+1 { + + + + + + + + + if len(row.Cells)<1+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[1].String(), 10, 32) data.GameFreeId = int32(temp) - - if len(row.Cells) < 2+1 { + + + + + + + + + if len(row.Cells)<2+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[2].String(), 10, 32) data.MatchLevel = int32(temp) - - if len(row.Cells) < 3+1 { + + + + + + + + + if len(row.Cells)<3+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[3].String(), 10, 32) data.RobotUpRatio = int32(temp) - - if len(row.Cells) < 4+1 { + + + + + + + + + if len(row.Cells)<4+1{ break } - + + + + arrStr = strings.Split(row.Cells[4].String(), "|") arrInt = nil if len(arrStr) > 0 && row.Cells[4].String() != "" { @@ -4478,11 +6793,18 @@ func AgcConvertDB_GameMatchLevel(fi, fo string) { } } data.UpGrade = arrInt - - if len(row.Cells) < 5+1 { + + + + + + if len(row.Cells)<5+1{ break } - + + + + arrStr = strings.Split(row.Cells[5].String(), "|") arrInt = nil if len(arrStr) > 0 && row.Cells[5].String() != "" { @@ -4493,11 +6815,18 @@ func AgcConvertDB_GameMatchLevel(fi, fo string) { } } data.UpGradeOdds = arrInt - - if len(row.Cells) < 6+1 { + + + + + + if len(row.Cells)<6+1{ break } - + + + + arrStr = strings.Split(row.Cells[6].String(), "|") arrInt = nil if len(arrStr) > 0 && row.Cells[6].String() != "" { @@ -4508,11 +6837,18 @@ func AgcConvertDB_GameMatchLevel(fi, fo string) { } } data.DownGrade = arrInt - - if len(row.Cells) < 7+1 { + + + + + + if len(row.Cells)<7+1{ break } - + + + + arrStr = strings.Split(row.Cells[7].String(), "|") arrInt = nil if len(arrStr) > 0 && row.Cells[7].String() != "" { @@ -4523,6 +6859,11 @@ func AgcConvertDB_GameMatchLevel(fi, fo string) { } } data.DownGradeOdds = arrInt + + + + + break } @@ -4530,26 +6871,26 @@ func AgcConvertDB_GameMatchLevel(fi, fo string) { } byteData, err := proto.Marshal(arr) - if err == nil { + if err == nil{ err := os.WriteFile(fo, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } + fmt.Println(err) + } } - + byteData, err = json.MarshalIndent(arr, "", "\t") if err == nil { foJson := strings.Replace(fo, ".dat", ".json", -1) err := os.WriteFile(foJson, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } - } + fmt.Println(err) + } + } break //only fetch first sheet } } - -func AgcConvertDB_GameRule(fi, fo string) { + +func AgcConvertDB_GameRule(fi,fo string) { xlsxFile, err := xlsx.OpenFile(fi) if err != nil { fmt.Println("excel file open error:", err, "filename:", fi) @@ -4563,19 +6904,19 @@ func AgcConvertDB_GameRule(fi, fo string) { fmt.Println("stack--->", string(buf[:lens])) } for _, sheet := range xlsxFile.Sheets { - arr := &server.DB_GameRuleArray{ - Arr: make([]*server.DB_GameRule, 0, len(sheet.Rows)), + arr:=&server.DB_GameRuleArray{ + Arr:make([]*server.DB_GameRule, 0, len(sheet.Rows)), } for i, row := range sheet.Rows { if i <= 1 { continue } - + if len(row.Cells) == 0 { break } - + temp := int64(0) var arrInt []int32 var arrInt64 []int64 @@ -4583,43 +6924,74 @@ func AgcConvertDB_GameRule(fi, fo string) { var _ = arrInt var _ = arrStr var _ = arrInt64 - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data := &server.DB_GameRule{} for { - - if len(row.Cells) < 0+1 { + + if len(row.Cells)<0+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data.Id = int32(temp) - - if len(row.Cells) < 1+1 { + + + + + + + + + if len(row.Cells)<1+1{ break } - + + + data.Name = row.Cells[1].String() - - if len(row.Cells) < 2+1 { + + + + + + + if len(row.Cells)<2+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[2].String(), 10, 32) data.GameId = int32(temp) - - if len(row.Cells) < 3+1 { + + + + + + + + + if len(row.Cells)<3+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[3].String(), 10, 32) data.GameMode = int32(temp) - - if len(row.Cells) < 4+1 { + + + + + + + + + if len(row.Cells)<4+1{ break } - + + + + arrStr = strings.Split(row.Cells[4].String(), "|") arrInt = nil if len(arrStr) > 0 && row.Cells[4].String() != "" { @@ -4630,18 +7002,37 @@ func AgcConvertDB_GameRule(fi, fo string) { } } data.Params = arrInt - - if len(row.Cells) < 5+1 { + + + + + + if len(row.Cells)<5+1{ break } - + + + data.RuleDesc = row.Cells[5].String() - - if len(row.Cells) < 6+1 { + + + + + + + if len(row.Cells)<6+1{ break } - + + + data.GameDif = row.Cells[6].String() + + + + + + break } @@ -4649,26 +7040,26 @@ func AgcConvertDB_GameRule(fi, fo string) { } byteData, err := proto.Marshal(arr) - if err == nil { + if err == nil{ err := os.WriteFile(fo, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } + fmt.Println(err) + } } - + byteData, err = json.MarshalIndent(arr, "", "\t") if err == nil { foJson := strings.Replace(fo, ".dat", ".json", -1) err := os.WriteFile(foJson, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } - } + fmt.Println(err) + } + } break //only fetch first sheet } } - -func AgcConvertDB_GameSubsidy(fi, fo string) { + +func AgcConvertDB_GameSubsidy(fi,fo string) { xlsxFile, err := xlsx.OpenFile(fi) if err != nil { fmt.Println("excel file open error:", err, "filename:", fi) @@ -4682,19 +7073,19 @@ func AgcConvertDB_GameSubsidy(fi, fo string) { fmt.Println("stack--->", string(buf[:lens])) } for _, sheet := range xlsxFile.Sheets { - arr := &server.DB_GameSubsidyArray{ - Arr: make([]*server.DB_GameSubsidy, 0, len(sheet.Rows)), + arr:=&server.DB_GameSubsidyArray{ + Arr:make([]*server.DB_GameSubsidy, 0, len(sheet.Rows)), } for i, row := range sheet.Rows { if i <= 1 { continue } - + if len(row.Cells) == 0 { break } - + temp := int64(0) var arrInt []int32 var arrInt64 []int64 @@ -4702,39 +7093,68 @@ func AgcConvertDB_GameSubsidy(fi, fo string) { var _ = arrInt var _ = arrStr var _ = arrInt64 - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data := &server.DB_GameSubsidy{} for { - - if len(row.Cells) < 0+1 { + + if len(row.Cells)<0+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data.Id = int32(temp) - - if len(row.Cells) < 1+1 { + + + + + + + + + if len(row.Cells)<1+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[1].String(), 10, 32) data.LimitNum = int32(temp) - - if len(row.Cells) < 2+1 { + + + + + + + + + if len(row.Cells)<2+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[2].String(), 10, 32) data.Get = int32(temp) - - if len(row.Cells) < 3+1 { + + + + + + + + + if len(row.Cells)<3+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[3].String(), 10, 32) data.Times = int32(temp) + + + + + + + + break } @@ -4742,26 +7162,26 @@ func AgcConvertDB_GameSubsidy(fi, fo string) { } byteData, err := proto.Marshal(arr) - if err == nil { + if err == nil{ err := os.WriteFile(fo, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } + fmt.Println(err) + } } - + byteData, err = json.MarshalIndent(arr, "", "\t") if err == nil { foJson := strings.Replace(fo, ".dat", ".json", -1) err := os.WriteFile(foJson, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } - } + fmt.Println(err) + } + } break //only fetch first sheet } } - -func AgcConvertDB_Game_Drop(fi, fo string) { + +func AgcConvertDB_Game_Drop(fi,fo string) { xlsxFile, err := xlsx.OpenFile(fi) if err != nil { fmt.Println("excel file open error:", err, "filename:", fi) @@ -4775,19 +7195,19 @@ func AgcConvertDB_Game_Drop(fi, fo string) { fmt.Println("stack--->", string(buf[:lens])) } for _, sheet := range xlsxFile.Sheets { - arr := &server.DB_Game_DropArray{ - Arr: make([]*server.DB_Game_Drop, 0, len(sheet.Rows)), + arr:=&server.DB_Game_DropArray{ + Arr:make([]*server.DB_Game_Drop, 0, len(sheet.Rows)), } for i, row := range sheet.Rows { if i <= 1 { continue } - + if len(row.Cells) == 0 { break } - + temp := int64(0) var arrInt []int32 var arrInt64 []int64 @@ -4795,58 +7215,103 @@ func AgcConvertDB_Game_Drop(fi, fo string) { var _ = arrInt var _ = arrStr var _ = arrInt64 - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data := &server.DB_Game_Drop{} for { - - if len(row.Cells) < 0+1 { + + if len(row.Cells)<0+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data.Id = int32(temp) - - if len(row.Cells) < 1+1 { + + + + + + + + + if len(row.Cells)<1+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[1].String(), 10, 32) data.GameId = int32(temp) - - if len(row.Cells) < 2+1 { + + + + + + + + + if len(row.Cells)<2+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[2].String(), 10, 32) data.Bet = int32(temp) - - if len(row.Cells) < 3+1 { + + + + + + + + + if len(row.Cells)<3+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[3].String(), 10, 32) data.ItemName1 = int32(temp) - - if len(row.Cells) < 4+1 { + + + + + + + + + if len(row.Cells)<4+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[4].String(), 10, 32) data.ItemId1 = int32(temp) - - if len(row.Cells) < 5+1 { + + + + + + + + + if len(row.Cells)<5+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[5].String(), 10, 32) data.Rate1 = int32(temp) - - if len(row.Cells) < 6+1 { + + + + + + + + + if len(row.Cells)<6+1{ break } - + + + + arrStr = strings.Split(row.Cells[6].String(), "|") arrInt = nil if len(arrStr) > 0 && row.Cells[6].String() != "" { @@ -4857,6 +7322,11 @@ func AgcConvertDB_Game_Drop(fi, fo string) { } } data.Amount1 = arrInt + + + + + break } @@ -4864,26 +7334,26 @@ func AgcConvertDB_Game_Drop(fi, fo string) { } byteData, err := proto.Marshal(arr) - if err == nil { + if err == nil{ err := os.WriteFile(fo, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } + fmt.Println(err) + } } - + byteData, err = json.MarshalIndent(arr, "", "\t") if err == nil { foJson := strings.Replace(fo, ".dat", ".json", -1) err := os.WriteFile(foJson, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } - } + fmt.Println(err) + } + } break //only fetch first sheet } } - -func AgcConvertDB_Game_Introduction(fi, fo string) { + +func AgcConvertDB_Game_Introduction(fi,fo string) { xlsxFile, err := xlsx.OpenFile(fi) if err != nil { fmt.Println("excel file open error:", err, "filename:", fi) @@ -4897,19 +7367,19 @@ func AgcConvertDB_Game_Introduction(fi, fo string) { fmt.Println("stack--->", string(buf[:lens])) } for _, sheet := range xlsxFile.Sheets { - arr := &server.DB_Game_IntroductionArray{ - Arr: make([]*server.DB_Game_Introduction, 0, len(sheet.Rows)), + arr:=&server.DB_Game_IntroductionArray{ + Arr:make([]*server.DB_Game_Introduction, 0, len(sheet.Rows)), } for i, row := range sheet.Rows { if i <= 1 { continue } - + if len(row.Cells) == 0 { break } - + temp := int64(0) var arrInt []int32 var arrInt64 []int64 @@ -4917,50 +7387,93 @@ func AgcConvertDB_Game_Introduction(fi, fo string) { var _ = arrInt var _ = arrStr var _ = arrInt64 - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data := &server.DB_Game_Introduction{} for { - - if len(row.Cells) < 0+1 { + + if len(row.Cells)<0+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data.Id = int32(temp) - - if len(row.Cells) < 1+1 { + + + + + + + + + if len(row.Cells)<1+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[1].String(), 10, 32) data.Type = int32(temp) - - if len(row.Cells) < 2+1 { + + + + + + + + + if len(row.Cells)<2+1{ break } - + + + data.Name = row.Cells[2].String() - - if len(row.Cells) < 3+1 { + + + + + + + if len(row.Cells)<3+1{ break } - + + + data.Story = row.Cells[3].String() - - if len(row.Cells) < 4+1 { + + + + + + + if len(row.Cells)<4+1{ break } - + + + data.AwardTitle = row.Cells[4].String() - - if len(row.Cells) < 5+1 { + + + + + + + if len(row.Cells)<5+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[5].String(), 10, 32) data.LevelMax = int32(temp) + + + + + + + + break } @@ -4968,26 +7481,26 @@ func AgcConvertDB_Game_Introduction(fi, fo string) { } byteData, err := proto.Marshal(arr) - if err == nil { + if err == nil{ err := os.WriteFile(fo, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } + fmt.Println(err) + } } - + byteData, err = json.MarshalIndent(arr, "", "\t") if err == nil { foJson := strings.Replace(fo, ".dat", ".json", -1) err := os.WriteFile(foJson, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } - } + fmt.Println(err) + } + } break //only fetch first sheet } } - -func AgcConvertDB_Game_Pet(fi, fo string) { + +func AgcConvertDB_Game_Pet(fi,fo string) { xlsxFile, err := xlsx.OpenFile(fi) if err != nil { fmt.Println("excel file open error:", err, "filename:", fi) @@ -5001,19 +7514,19 @@ func AgcConvertDB_Game_Pet(fi, fo string) { fmt.Println("stack--->", string(buf[:lens])) } for _, sheet := range xlsxFile.Sheets { - arr := &server.DB_Game_PetArray{ - Arr: make([]*server.DB_Game_Pet, 0, len(sheet.Rows)), + arr:=&server.DB_Game_PetArray{ + Arr:make([]*server.DB_Game_Pet, 0, len(sheet.Rows)), } for i, row := range sheet.Rows { if i <= 1 { continue } - + if len(row.Cells) == 0 { break } - + temp := int64(0) var arrInt []int32 var arrInt64 []int64 @@ -5021,80 +7534,151 @@ func AgcConvertDB_Game_Pet(fi, fo string) { var _ = arrInt var _ = arrStr var _ = arrInt64 - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data := &server.DB_Game_Pet{} for { - - if len(row.Cells) < 0+1 { + + if len(row.Cells)<0+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data.Id = int32(temp) - - if len(row.Cells) < 1+1 { + + + + + + + + + if len(row.Cells)<1+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[1].String(), 10, 32) data.PetId = int32(temp) - - if len(row.Cells) < 2+1 { + + + + + + + + + if len(row.Cells)<2+1{ break } - + + + data.Name = row.Cells[2].String() - - if len(row.Cells) < 3+1 { + + + + + + + if len(row.Cells)<3+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[3].String(), 10, 32) data.Grade = int32(temp) - - if len(row.Cells) < 4+1 { + + + + + + + + + if len(row.Cells)<4+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[4].String(), 10, 32) data.Level = int32(temp) - - if len(row.Cells) < 5+1 { + + + + + + + + + if len(row.Cells)<5+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[5].String(), 10, 32) data.Fragment = int32(temp) - - if len(row.Cells) < 6+1 { + + + + + + + + + if len(row.Cells)<6+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[6].String(), 10, 32) data.Amount = int32(temp) - - if len(row.Cells) < 7+1 { + + + + + + + + + if len(row.Cells)<7+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[7].String(), 10, 32) data.AwardType = int32(temp) - - if len(row.Cells) < 8+1 { + + + + + + + + + if len(row.Cells)<8+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[8].String(), 10, 32) data.Award = int32(temp) - - if len(row.Cells) < 9+1 { + + + + + + + + + if len(row.Cells)<9+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[9].String(), 10, 32) data.AwardRate = int32(temp) + + + + + + + + break } @@ -5102,26 +7686,26 @@ func AgcConvertDB_Game_Pet(fi, fo string) { } byteData, err := proto.Marshal(arr) - if err == nil { + if err == nil{ err := os.WriteFile(fo, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } + fmt.Println(err) + } } - + byteData, err = json.MarshalIndent(arr, "", "\t") if err == nil { foJson := strings.Replace(fo, ".dat", ".json", -1) err := os.WriteFile(foJson, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } - } + fmt.Println(err) + } + } break //only fetch first sheet } } - -func AgcConvertDB_Game_Role(fi, fo string) { + +func AgcConvertDB_Game_Role(fi,fo string) { xlsxFile, err := xlsx.OpenFile(fi) if err != nil { fmt.Println("excel file open error:", err, "filename:", fi) @@ -5135,19 +7719,19 @@ func AgcConvertDB_Game_Role(fi, fo string) { fmt.Println("stack--->", string(buf[:lens])) } for _, sheet := range xlsxFile.Sheets { - arr := &server.DB_Game_RoleArray{ - Arr: make([]*server.DB_Game_Role, 0, len(sheet.Rows)), + arr:=&server.DB_Game_RoleArray{ + Arr:make([]*server.DB_Game_Role, 0, len(sheet.Rows)), } for i, row := range sheet.Rows { if i <= 1 { continue } - + if len(row.Cells) == 0 { break } - + temp := int64(0) var arrInt []int32 var arrInt64 []int64 @@ -5155,80 +7739,151 @@ func AgcConvertDB_Game_Role(fi, fo string) { var _ = arrInt var _ = arrStr var _ = arrInt64 - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data := &server.DB_Game_Role{} for { - - if len(row.Cells) < 0+1 { + + if len(row.Cells)<0+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data.Id = int32(temp) - - if len(row.Cells) < 1+1 { + + + + + + + + + if len(row.Cells)<1+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[1].String(), 10, 32) data.RoleId = int32(temp) - - if len(row.Cells) < 2+1 { + + + + + + + + + if len(row.Cells)<2+1{ break } - + + + data.Name = row.Cells[2].String() - - if len(row.Cells) < 3+1 { + + + + + + + if len(row.Cells)<3+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[3].String(), 10, 32) data.Grade = int32(temp) - - if len(row.Cells) < 4+1 { + + + + + + + + + if len(row.Cells)<4+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[4].String(), 10, 32) data.Level = int32(temp) - - if len(row.Cells) < 5+1 { + + + + + + + + + if len(row.Cells)<5+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[5].String(), 10, 32) data.Fragment = int32(temp) - - if len(row.Cells) < 6+1 { + + + + + + + + + if len(row.Cells)<6+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[6].String(), 10, 32) data.Amount = int32(temp) - - if len(row.Cells) < 7+1 { + + + + + + + + + if len(row.Cells)<7+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[7].String(), 10, 32) data.AwardType = int32(temp) - - if len(row.Cells) < 8+1 { + + + + + + + + + if len(row.Cells)<8+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[8].String(), 10, 32) data.Award = int32(temp) - - if len(row.Cells) < 9+1 { + + + + + + + + + if len(row.Cells)<9+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[9].String(), 10, 32) data.AwardRate = int32(temp) + + + + + + + + break } @@ -5236,26 +7891,26 @@ func AgcConvertDB_Game_Role(fi, fo string) { } byteData, err := proto.Marshal(arr) - if err == nil { + if err == nil{ err := os.WriteFile(fo, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } + fmt.Println(err) + } } - + byteData, err = json.MarshalIndent(arr, "", "\t") if err == nil { foJson := strings.Replace(fo, ".dat", ".json", -1) err := os.WriteFile(foJson, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } - } + fmt.Println(err) + } + } break //only fetch first sheet } } - -func AgcConvertDB_GiftBox(fi, fo string) { + +func AgcConvertDB_GiftBox(fi,fo string) { xlsxFile, err := xlsx.OpenFile(fi) if err != nil { fmt.Println("excel file open error:", err, "filename:", fi) @@ -5269,19 +7924,19 @@ func AgcConvertDB_GiftBox(fi, fo string) { fmt.Println("stack--->", string(buf[:lens])) } for _, sheet := range xlsxFile.Sheets { - arr := &server.DB_GiftBoxArray{ - Arr: make([]*server.DB_GiftBox, 0, len(sheet.Rows)), + arr:=&server.DB_GiftBoxArray{ + Arr:make([]*server.DB_GiftBox, 0, len(sheet.Rows)), } for i, row := range sheet.Rows { if i <= 1 { continue } - + if len(row.Cells) == 0 { break } - + temp := int64(0) var arrInt []int32 var arrInt64 []int64 @@ -5289,51 +7944,73 @@ func AgcConvertDB_GiftBox(fi, fo string) { var _ = arrInt var _ = arrStr var _ = arrInt64 - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data := &server.DB_GiftBox{} for { - - if len(row.Cells) < 0+1 { + + if len(row.Cells)<0+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data.Id = int32(temp) - - if len(row.Cells) < 1+1 { + + + + + + + + + if len(row.Cells)<1+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[1].String(), 10, 32) data.Rate = int32(temp) - - if len(row.Cells) < 2+1 { + + + + + + + + + if len(row.Cells)<2+1{ break } - - if row.Cells[2].String() != "" { - pairs := strings.Split(row.Cells[2].String(), ";") - resultMap := make(map[int64]int64) - for _, pair := range pairs { - kv := strings.Split(pair, ",") - key, err := strconv.ParseInt(kv[0], 10, 64) - if err != nil { - // 错误处理 - fmt.Println("无法转换为int64:", kv[0]) - continue + + + + + + + + if row.Cells[2].String() != ""{ + pairs := strings.Split(row.Cells[2].String(), ";") + resultMap := make(map[int64]int64) + for _, pair := range pairs { + kv := strings.Split(pair, ",") + key, err := strconv.ParseInt(kv[0], 10, 64) + if err != nil { + // 错误处理 + fmt.Println("无法转换为int64:", kv[0]) + continue + } + value, err := strconv.ParseInt(kv[1], 10, 64) + if err != nil { + // 错误处理 + fmt.Println("无法转换为int64:", kv[1]) + continue + } + resultMap[key] = value } - value, err := strconv.ParseInt(kv[1], 10, 64) - if err != nil { - // 错误处理 - fmt.Println("无法转换为int64:", kv[1]) - continue - } - resultMap[key] = value + data.ItemID = resultMap } - data.ItemID = resultMap - } + + break } @@ -5341,26 +8018,26 @@ func AgcConvertDB_GiftBox(fi, fo string) { } byteData, err := proto.Marshal(arr) - if err == nil { + if err == nil{ err := os.WriteFile(fo, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } + fmt.Println(err) + } } - + byteData, err = json.MarshalIndent(arr, "", "\t") if err == nil { foJson := strings.Replace(fo, ".dat", ".json", -1) err := os.WriteFile(foJson, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } - } + fmt.Println(err) + } + } break //only fetch first sheet } } - -func AgcConvertDB_GiftCard(fi, fo string) { + +func AgcConvertDB_GiftCard(fi,fo string) { xlsxFile, err := xlsx.OpenFile(fi) if err != nil { fmt.Println("excel file open error:", err, "filename:", fi) @@ -5374,19 +8051,19 @@ func AgcConvertDB_GiftCard(fi, fo string) { fmt.Println("stack--->", string(buf[:lens])) } for _, sheet := range xlsxFile.Sheets { - arr := &server.DB_GiftCardArray{ - Arr: make([]*server.DB_GiftCard, 0, len(sheet.Rows)), + arr:=&server.DB_GiftCardArray{ + Arr:make([]*server.DB_GiftCard, 0, len(sheet.Rows)), } for i, row := range sheet.Rows { if i <= 1 { continue } - + if len(row.Cells) == 0 { break } - + temp := int64(0) var arrInt []int32 var arrInt64 []int64 @@ -5394,95 +8071,140 @@ func AgcConvertDB_GiftCard(fi, fo string) { var _ = arrInt var _ = arrStr var _ = arrInt64 - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data := &server.DB_GiftCard{} for { - - if len(row.Cells) < 0+1 { + + if len(row.Cells)<0+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data.Id = int32(temp) - - if len(row.Cells) < 1+1 { + + + + + + + + + if len(row.Cells)<1+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[1].String(), 10, 32) data.ShopID = int32(temp) - - if len(row.Cells) < 2+1 { + + + + + + + + + if len(row.Cells)<2+1{ break } - + + + data.Name = row.Cells[2].String() - - if len(row.Cells) < 3+1 { + + + + + + + if len(row.Cells)<3+1{ break } - - if row.Cells[3].String() != "" { - pairs := strings.Split(row.Cells[3].String(), ";") - resultMap := make(map[int64]int64) - for _, pair := range pairs { - kv := strings.Split(pair, ",") - key, err := strconv.ParseInt(kv[0], 10, 64) - if err != nil { - // 错误处理 - fmt.Println("无法转换为int64:", kv[0]) - continue + + + + + + + + if row.Cells[3].String() != ""{ + pairs := strings.Split(row.Cells[3].String(), ";") + resultMap := make(map[int64]int64) + for _, pair := range pairs { + kv := strings.Split(pair, ",") + key, err := strconv.ParseInt(kv[0], 10, 64) + if err != nil { + // 错误处理 + fmt.Println("无法转换为int64:", kv[0]) + continue + } + value, err := strconv.ParseInt(kv[1], 10, 64) + if err != nil { + // 错误处理 + fmt.Println("无法转换为int64:", kv[1]) + continue + } + resultMap[key] = value } - value, err := strconv.ParseInt(kv[1], 10, 64) - if err != nil { - // 错误处理 - fmt.Println("无法转换为int64:", kv[1]) - continue - } - resultMap[key] = value + data.Rewards = resultMap } - data.Rewards = resultMap - } - - if len(row.Cells) < 4+1 { + + + if len(row.Cells)<4+1{ break } - - if row.Cells[4].String() != "" { - pairs := strings.Split(row.Cells[4].String(), ";") - resultMap := make(map[int64]int64) - for _, pair := range pairs { - kv := strings.Split(pair, ",") - key, err := strconv.ParseInt(kv[0], 10, 64) - if err != nil { - // 错误处理 - fmt.Println("无法转换为int64:", kv[0]) - continue + + + + + + + + if row.Cells[4].String() != ""{ + pairs := strings.Split(row.Cells[4].String(), ";") + resultMap := make(map[int64]int64) + for _, pair := range pairs { + kv := strings.Split(pair, ",") + key, err := strconv.ParseInt(kv[0], 10, 64) + if err != nil { + // 错误处理 + fmt.Println("无法转换为int64:", kv[0]) + continue + } + value, err := strconv.ParseInt(kv[1], 10, 64) + if err != nil { + // 错误处理 + fmt.Println("无法转换为int64:", kv[1]) + continue + } + resultMap[key] = value } - value, err := strconv.ParseInt(kv[1], 10, 64) - if err != nil { - // 错误处理 - fmt.Println("无法转换为int64:", kv[1]) - continue - } - resultMap[key] = value + data.DayRewards = resultMap } - data.DayRewards = resultMap - } - - if len(row.Cells) < 5+1 { + + + if len(row.Cells)<5+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[5].String(), 10, 32) data.Time = int32(temp) - - if len(row.Cells) < 6+1 { + + + + + + + + + if len(row.Cells)<6+1{ break } - + + + + arrStr = strings.Split(row.Cells[6].String(), "|") arrInt = nil if len(arrStr) > 0 && row.Cells[6].String() != "" { @@ -5493,6 +8215,11 @@ func AgcConvertDB_GiftCard(fi, fo string) { } } data.Equity = arrInt + + + + + break } @@ -5500,26 +8227,26 @@ func AgcConvertDB_GiftCard(fi, fo string) { } byteData, err := proto.Marshal(arr) - if err == nil { + if err == nil{ err := os.WriteFile(fo, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } + fmt.Println(err) + } } - + byteData, err = json.MarshalIndent(arr, "", "\t") if err == nil { foJson := strings.Replace(fo, ".dat", ".json", -1) err := os.WriteFile(foJson, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } - } + fmt.Println(err) + } + } break //only fetch first sheet } } - -func AgcConvertDB_IceAgeElementRate(fi, fo string) { + +func AgcConvertDB_IceAgeElementRate(fi,fo string) { xlsxFile, err := xlsx.OpenFile(fi) if err != nil { fmt.Println("excel file open error:", err, "filename:", fi) @@ -5533,19 +8260,19 @@ func AgcConvertDB_IceAgeElementRate(fi, fo string) { fmt.Println("stack--->", string(buf[:lens])) } for _, sheet := range xlsxFile.Sheets { - arr := &server.DB_IceAgeElementRateArray{ - Arr: make([]*server.DB_IceAgeElementRate, 0, len(sheet.Rows)), + arr:=&server.DB_IceAgeElementRateArray{ + Arr:make([]*server.DB_IceAgeElementRate, 0, len(sheet.Rows)), } for i, row := range sheet.Rows { if i <= 1 { continue } - + if len(row.Cells) == 0 { break } - + temp := int64(0) var arrInt []int32 var arrInt64 []int64 @@ -5553,36 +8280,60 @@ func AgcConvertDB_IceAgeElementRate(fi, fo string) { var _ = arrInt var _ = arrStr var _ = arrInt64 - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data := &server.DB_IceAgeElementRate{} for { - - if len(row.Cells) < 0+1 { + + if len(row.Cells)<0+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data.Id = int32(temp) - - if len(row.Cells) < 1+1 { + + + + + + + + + if len(row.Cells)<1+1{ break } - + + + data.ModeName = row.Cells[1].String() - - if len(row.Cells) < 2+1 { + + + + + + + if len(row.Cells)<2+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[2].String(), 10, 32) data.ModeType = int32(temp) - - if len(row.Cells) < 3+1 { + + + + + + + + + if len(row.Cells)<3+1{ break } - + + + + arrStr = strings.Split(row.Cells[3].String(), "|") arrInt = nil if len(arrStr) > 0 && row.Cells[3].String() != "" { @@ -5593,6 +8344,11 @@ func AgcConvertDB_IceAgeElementRate(fi, fo string) { } } data.Params = arrInt + + + + + break } @@ -5600,26 +8356,26 @@ func AgcConvertDB_IceAgeElementRate(fi, fo string) { } byteData, err := proto.Marshal(arr) - if err == nil { + if err == nil{ err := os.WriteFile(fo, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } + fmt.Println(err) + } } - + byteData, err = json.MarshalIndent(arr, "", "\t") if err == nil { foJson := strings.Replace(fo, ".dat", ".json", -1) err := os.WriteFile(foJson, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } - } + fmt.Println(err) + } + } break //only fetch first sheet } } - -func AgcConvertDB_Legend_Odds(fi, fo string) { + +func AgcConvertDB_Legend_Odds(fi,fo string) { xlsxFile, err := xlsx.OpenFile(fi) if err != nil { fmt.Println("excel file open error:", err, "filename:", fi) @@ -5633,19 +8389,19 @@ func AgcConvertDB_Legend_Odds(fi, fo string) { fmt.Println("stack--->", string(buf[:lens])) } for _, sheet := range xlsxFile.Sheets { - arr := &server.DB_Legend_OddsArray{ - Arr: make([]*server.DB_Legend_Odds, 0, len(sheet.Rows)), + arr:=&server.DB_Legend_OddsArray{ + Arr:make([]*server.DB_Legend_Odds, 0, len(sheet.Rows)), } for i, row := range sheet.Rows { if i <= 1 { continue } - + if len(row.Cells) == 0 { break } - + temp := int64(0) var arrInt []int32 var arrInt64 []int64 @@ -5653,45 +8409,81 @@ func AgcConvertDB_Legend_Odds(fi, fo string) { var _ = arrInt var _ = arrStr var _ = arrInt64 - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data := &server.DB_Legend_Odds{} for { - - if len(row.Cells) < 0+1 { + + if len(row.Cells)<0+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data.Id = int32(temp) - - if len(row.Cells) < 1+1 { + + + + + + + + + if len(row.Cells)<1+1{ break } - + + + data.Name = row.Cells[1].String() - - if len(row.Cells) < 2+1 { + + + + + + + if len(row.Cells)<2+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[2].String(), 10, 32) data.Rateodds3 = int32(temp) - - if len(row.Cells) < 3+1 { + + + + + + + + + if len(row.Cells)<3+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[3].String(), 10, 32) data.Rateodds4 = int32(temp) - - if len(row.Cells) < 4+1 { + + + + + + + + + if len(row.Cells)<4+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[4].String(), 10, 32) data.Rateodds5 = int32(temp) + + + + + + + + break } @@ -5699,26 +8491,26 @@ func AgcConvertDB_Legend_Odds(fi, fo string) { } byteData, err := proto.Marshal(arr) - if err == nil { + if err == nil{ err := os.WriteFile(fo, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } + fmt.Println(err) + } } - + byteData, err = json.MarshalIndent(arr, "", "\t") if err == nil { foJson := strings.Replace(fo, ".dat", ".json", -1) err := os.WriteFile(foJson, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } - } + fmt.Println(err) + } + } break //only fetch first sheet } } - -func AgcConvertDB_Legend_TurnRate(fi, fo string) { + +func AgcConvertDB_Legend_TurnRate(fi,fo string) { xlsxFile, err := xlsx.OpenFile(fi) if err != nil { fmt.Println("excel file open error:", err, "filename:", fi) @@ -5732,19 +8524,19 @@ func AgcConvertDB_Legend_TurnRate(fi, fo string) { fmt.Println("stack--->", string(buf[:lens])) } for _, sheet := range xlsxFile.Sheets { - arr := &server.DB_Legend_TurnRateArray{ - Arr: make([]*server.DB_Legend_TurnRate, 0, len(sheet.Rows)), + arr:=&server.DB_Legend_TurnRateArray{ + Arr:make([]*server.DB_Legend_TurnRate, 0, len(sheet.Rows)), } for i, row := range sheet.Rows { if i <= 1 { continue } - + if len(row.Cells) == 0 { break } - + temp := int64(0) var arrInt []int32 var arrInt64 []int64 @@ -5752,37 +8544,61 @@ func AgcConvertDB_Legend_TurnRate(fi, fo string) { var _ = arrInt var _ = arrStr var _ = arrInt64 - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data := &server.DB_Legend_TurnRate{} for { - - if len(row.Cells) < 0+1 { + + if len(row.Cells)<0+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data.Id = int32(temp) - - if len(row.Cells) < 1+1 { + + + + + + + + + if len(row.Cells)<1+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[1].String(), 10, 32) data.ReturnRateMin = int32(temp) - - if len(row.Cells) < 2+1 { + + + + + + + + + if len(row.Cells)<2+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[2].String(), 10, 32) data.ReturnRateMax = int32(temp) - - if len(row.Cells) < 3+1 { + + + + + + + + + if len(row.Cells)<3+1{ break } - + + + + arrStr = strings.Split(row.Cells[3].String(), "|") arrInt = nil if len(arrStr) > 0 && row.Cells[3].String() != "" { @@ -5793,6 +8609,11 @@ func AgcConvertDB_Legend_TurnRate(fi, fo string) { } } data.Chance = arrInt + + + + + break } @@ -5800,26 +8621,26 @@ func AgcConvertDB_Legend_TurnRate(fi, fo string) { } byteData, err := proto.Marshal(arr) - if err == nil { + if err == nil{ err := os.WriteFile(fo, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } + fmt.Println(err) + } } - + byteData, err = json.MarshalIndent(arr, "", "\t") if err == nil { foJson := strings.Replace(fo, ".dat", ".json", -1) err := os.WriteFile(foJson, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } - } + fmt.Println(err) + } + } break //only fetch first sheet } } - -func AgcConvertDB_Legend_Weight(fi, fo string) { + +func AgcConvertDB_Legend_Weight(fi,fo string) { xlsxFile, err := xlsx.OpenFile(fi) if err != nil { fmt.Println("excel file open error:", err, "filename:", fi) @@ -5833,19 +8654,19 @@ func AgcConvertDB_Legend_Weight(fi, fo string) { fmt.Println("stack--->", string(buf[:lens])) } for _, sheet := range xlsxFile.Sheets { - arr := &server.DB_Legend_WeightArray{ - Arr: make([]*server.DB_Legend_Weight, 0, len(sheet.Rows)), + arr:=&server.DB_Legend_WeightArray{ + Arr:make([]*server.DB_Legend_Weight, 0, len(sheet.Rows)), } for i, row := range sheet.Rows { if i <= 1 { continue } - + if len(row.Cells) == 0 { break } - + temp := int64(0) var arrInt []int32 var arrInt64 []int64 @@ -5853,29 +8674,46 @@ func AgcConvertDB_Legend_Weight(fi, fo string) { var _ = arrInt var _ = arrStr var _ = arrInt64 - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data := &server.DB_Legend_Weight{} for { - - if len(row.Cells) < 0+1 { + + if len(row.Cells)<0+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data.Id = int32(temp) - - if len(row.Cells) < 1+1 { + + + + + + + + + if len(row.Cells)<1+1{ break } - + + + data.Name = row.Cells[1].String() - - if len(row.Cells) < 2+1 { + + + + + + + if len(row.Cells)<2+1{ break } - + + + + arrStr = strings.Split(row.Cells[2].String(), "|") arrInt = nil if len(arrStr) > 0 && row.Cells[2].String() != "" { @@ -5886,6 +8724,11 @@ func AgcConvertDB_Legend_Weight(fi, fo string) { } } data.Weight = arrInt + + + + + break } @@ -5893,26 +8736,26 @@ func AgcConvertDB_Legend_Weight(fi, fo string) { } byteData, err := proto.Marshal(arr) - if err == nil { + if err == nil{ err := os.WriteFile(fo, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } + fmt.Println(err) + } } - + byteData, err = json.MarshalIndent(arr, "", "\t") if err == nil { foJson := strings.Replace(fo, ".dat", ".json", -1) err := os.WriteFile(foJson, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } - } + fmt.Println(err) + } + } break //only fetch first sheet } } - -func AgcConvertDB_Legend_WeightCondition(fi, fo string) { + +func AgcConvertDB_Legend_WeightCondition(fi,fo string) { xlsxFile, err := xlsx.OpenFile(fi) if err != nil { fmt.Println("excel file open error:", err, "filename:", fi) @@ -5926,19 +8769,19 @@ func AgcConvertDB_Legend_WeightCondition(fi, fo string) { fmt.Println("stack--->", string(buf[:lens])) } for _, sheet := range xlsxFile.Sheets { - arr := &server.DB_Legend_WeightConditionArray{ - Arr: make([]*server.DB_Legend_WeightCondition, 0, len(sheet.Rows)), + arr:=&server.DB_Legend_WeightConditionArray{ + Arr:make([]*server.DB_Legend_WeightCondition, 0, len(sheet.Rows)), } for i, row := range sheet.Rows { if i <= 1 { continue } - + if len(row.Cells) == 0 { break } - + temp := int64(0) var arrInt []int32 var arrInt64 []int64 @@ -5946,30 +8789,47 @@ func AgcConvertDB_Legend_WeightCondition(fi, fo string) { var _ = arrInt var _ = arrStr var _ = arrInt64 - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data := &server.DB_Legend_WeightCondition{} for { - - if len(row.Cells) < 0+1 { + + if len(row.Cells)<0+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data.Id = int32(temp) - - if len(row.Cells) < 1+1 { + + + + + + + + + if len(row.Cells)<1+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[1].String(), 10, 32) data.IsNew = int32(temp) - - if len(row.Cells) < 2+1 { + + + + + + + + + if len(row.Cells)<2+1{ break } - + + + + arrStr = strings.Split(row.Cells[2].String(), "|") arrInt = nil if len(arrStr) > 0 && row.Cells[2].String() != "" { @@ -5980,11 +8840,18 @@ func AgcConvertDB_Legend_WeightCondition(fi, fo string) { } } data.BetScope = arrInt - - if len(row.Cells) < 3+1 { + + + + + + if len(row.Cells)<3+1{ break } - + + + + arrStr = strings.Split(row.Cells[3].String(), "|") arrInt = nil if len(arrStr) > 0 && row.Cells[3].String() != "" { @@ -5995,13 +8862,25 @@ func AgcConvertDB_Legend_WeightCondition(fi, fo string) { } } data.TrueCalcRate = arrInt - - if len(row.Cells) < 4+1 { + + + + + + if len(row.Cells)<4+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[4].String(), 10, 32) data.WeightId = int32(temp) + + + + + + + + break } @@ -6009,26 +8888,26 @@ func AgcConvertDB_Legend_WeightCondition(fi, fo string) { } byteData, err := proto.Marshal(arr) - if err == nil { + if err == nil{ err := os.WriteFile(fo, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } + fmt.Println(err) + } } - + byteData, err = json.MarshalIndent(arr, "", "\t") if err == nil { foJson := strings.Replace(fo, ".dat", ".json", -1) err := os.WriteFile(foJson, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } - } + fmt.Println(err) + } + } break //only fetch first sheet } } - -func AgcConvertDB_MatchRank(fi, fo string) { + +func AgcConvertDB_MatchRank(fi,fo string) { xlsxFile, err := xlsx.OpenFile(fi) if err != nil { fmt.Println("excel file open error:", err, "filename:", fi) @@ -6042,19 +8921,19 @@ func AgcConvertDB_MatchRank(fi, fo string) { fmt.Println("stack--->", string(buf[:lens])) } for _, sheet := range xlsxFile.Sheets { - arr := &server.DB_MatchRankArray{ - Arr: make([]*server.DB_MatchRank, 0, len(sheet.Rows)), + arr:=&server.DB_MatchRankArray{ + Arr:make([]*server.DB_MatchRank, 0, len(sheet.Rows)), } for i, row := range sheet.Rows { if i <= 1 { continue } - + if len(row.Cells) == 0 { break } - + temp := int64(0) var arrInt []int32 var arrInt64 []int64 @@ -6062,23 +8941,33 @@ func AgcConvertDB_MatchRank(fi, fo string) { var _ = arrInt var _ = arrStr var _ = arrInt64 - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data := &server.DB_MatchRank{} for { - - if len(row.Cells) < 0+1 { + + if len(row.Cells)<0+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data.Id = int32(temp) - - if len(row.Cells) < 1+1 { + + + + + + + + + if len(row.Cells)<1+1{ break } - + + + + arrStr = strings.Split(row.Cells[1].String(), "|") arrInt = nil if len(arrStr) > 0 && row.Cells[1].String() != "" { @@ -6089,6 +8978,11 @@ func AgcConvertDB_MatchRank(fi, fo string) { } } data.RankStar = arrInt + + + + + break } @@ -6096,26 +8990,26 @@ func AgcConvertDB_MatchRank(fi, fo string) { } byteData, err := proto.Marshal(arr) - if err == nil { + if err == nil{ err := os.WriteFile(fo, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } + fmt.Println(err) + } } - + byteData, err = json.MarshalIndent(arr, "", "\t") if err == nil { foJson := strings.Replace(fo, ".dat", ".json", -1) err := os.WriteFile(foJson, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } - } + fmt.Println(err) + } + } break //only fetch first sheet } } - -func AgcConvertDB_Name(fi, fo string) { + +func AgcConvertDB_Name(fi,fo string) { xlsxFile, err := xlsx.OpenFile(fi) if err != nil { fmt.Println("excel file open error:", err, "filename:", fi) @@ -6129,19 +9023,19 @@ func AgcConvertDB_Name(fi, fo string) { fmt.Println("stack--->", string(buf[:lens])) } for _, sheet := range xlsxFile.Sheets { - arr := &server.DB_NameArray{ - Arr: make([]*server.DB_Name, 0, len(sheet.Rows)), + arr:=&server.DB_NameArray{ + Arr:make([]*server.DB_Name, 0, len(sheet.Rows)), } for i, row := range sheet.Rows { if i <= 1 { continue } - + if len(row.Cells) == 0 { break } - + temp := int64(0) var arrInt []int32 var arrInt64 []int64 @@ -6149,24 +9043,39 @@ func AgcConvertDB_Name(fi, fo string) { var _ = arrInt var _ = arrStr var _ = arrInt64 - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data := &server.DB_Name{} for { - - if len(row.Cells) < 0+1 { + + if len(row.Cells)<0+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data.Id = int32(temp) - - if len(row.Cells) < 1+1 { + + + + + + + + + if len(row.Cells)<1+1{ break } - + + + data.Name = row.Cells[1].String() + + + + + + break } @@ -6174,26 +9083,26 @@ func AgcConvertDB_Name(fi, fo string) { } byteData, err := proto.Marshal(arr) - if err == nil { + if err == nil{ err := os.WriteFile(fo, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } + fmt.Println(err) + } } - + byteData, err = json.MarshalIndent(arr, "", "\t") if err == nil { foJson := strings.Replace(fo, ".dat", ".json", -1) err := os.WriteFile(foJson, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } - } + fmt.Println(err) + } + } break //only fetch first sheet } } - -func AgcConvertDB_NameBoy(fi, fo string) { + +func AgcConvertDB_NameBoy(fi,fo string) { xlsxFile, err := xlsx.OpenFile(fi) if err != nil { fmt.Println("excel file open error:", err, "filename:", fi) @@ -6207,19 +9116,19 @@ func AgcConvertDB_NameBoy(fi, fo string) { fmt.Println("stack--->", string(buf[:lens])) } for _, sheet := range xlsxFile.Sheets { - arr := &server.DB_NameBoyArray{ - Arr: make([]*server.DB_NameBoy, 0, len(sheet.Rows)), + arr:=&server.DB_NameBoyArray{ + Arr:make([]*server.DB_NameBoy, 0, len(sheet.Rows)), } for i, row := range sheet.Rows { if i <= 1 { continue } - + if len(row.Cells) == 0 { break } - + temp := int64(0) var arrInt []int32 var arrInt64 []int64 @@ -6227,24 +9136,39 @@ func AgcConvertDB_NameBoy(fi, fo string) { var _ = arrInt var _ = arrStr var _ = arrInt64 - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data := &server.DB_NameBoy{} for { - - if len(row.Cells) < 0+1 { + + if len(row.Cells)<0+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data.Id = int32(temp) - - if len(row.Cells) < 1+1 { + + + + + + + + + if len(row.Cells)<1+1{ break } - + + + data.Name = row.Cells[1].String() + + + + + + break } @@ -6252,26 +9176,26 @@ func AgcConvertDB_NameBoy(fi, fo string) { } byteData, err := proto.Marshal(arr) - if err == nil { + if err == nil{ err := os.WriteFile(fo, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } + fmt.Println(err) + } } - + byteData, err = json.MarshalIndent(arr, "", "\t") if err == nil { foJson := strings.Replace(fo, ".dat", ".json", -1) err := os.WriteFile(foJson, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } - } + fmt.Println(err) + } + } break //only fetch first sheet } } - -func AgcConvertDB_NameGirl(fi, fo string) { + +func AgcConvertDB_NameGirl(fi,fo string) { xlsxFile, err := xlsx.OpenFile(fi) if err != nil { fmt.Println("excel file open error:", err, "filename:", fi) @@ -6285,19 +9209,19 @@ func AgcConvertDB_NameGirl(fi, fo string) { fmt.Println("stack--->", string(buf[:lens])) } for _, sheet := range xlsxFile.Sheets { - arr := &server.DB_NameGirlArray{ - Arr: make([]*server.DB_NameGirl, 0, len(sheet.Rows)), + arr:=&server.DB_NameGirlArray{ + Arr:make([]*server.DB_NameGirl, 0, len(sheet.Rows)), } for i, row := range sheet.Rows { if i <= 1 { continue } - + if len(row.Cells) == 0 { break } - + temp := int64(0) var arrInt []int32 var arrInt64 []int64 @@ -6305,24 +9229,39 @@ func AgcConvertDB_NameGirl(fi, fo string) { var _ = arrInt var _ = arrStr var _ = arrInt64 - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data := &server.DB_NameGirl{} for { - - if len(row.Cells) < 0+1 { + + if len(row.Cells)<0+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data.Id = int32(temp) - - if len(row.Cells) < 1+1 { + + + + + + + + + if len(row.Cells)<1+1{ break } - + + + data.Name = row.Cells[1].String() + + + + + + break } @@ -6330,26 +9269,26 @@ func AgcConvertDB_NameGirl(fi, fo string) { } byteData, err := proto.Marshal(arr) - if err == nil { + if err == nil{ err := os.WriteFile(fo, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } + fmt.Println(err) + } } - + byteData, err = json.MarshalIndent(arr, "", "\t") if err == nil { foJson := strings.Replace(fo, ".dat", ".json", -1) err := os.WriteFile(foJson, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } - } + fmt.Println(err) + } + } break //only fetch first sheet } } - -func AgcConvertDB_NewPlayer(fi, fo string) { + +func AgcConvertDB_NewPlayer(fi,fo string) { xlsxFile, err := xlsx.OpenFile(fi) if err != nil { fmt.Println("excel file open error:", err, "filename:", fi) @@ -6363,19 +9302,19 @@ func AgcConvertDB_NewPlayer(fi, fo string) { fmt.Println("stack--->", string(buf[:lens])) } for _, sheet := range xlsxFile.Sheets { - arr := &server.DB_NewPlayerArray{ - Arr: make([]*server.DB_NewPlayer, 0, len(sheet.Rows)), + arr:=&server.DB_NewPlayerArray{ + Arr:make([]*server.DB_NewPlayer, 0, len(sheet.Rows)), } for i, row := range sheet.Rows { if i <= 1 { continue } - + if len(row.Cells) == 0 { break } - + temp := int64(0) var arrInt []int32 var arrInt64 []int64 @@ -6383,81 +9322,152 @@ func AgcConvertDB_NewPlayer(fi, fo string) { var _ = arrInt var _ = arrStr var _ = arrInt64 - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data := &server.DB_NewPlayer{} for { - - if len(row.Cells) < 0+1 { + + if len(row.Cells)<0+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data.Id = int32(temp) - - if len(row.Cells) < 2+1 { + + + + + + + + + if len(row.Cells)<2+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[2].String(), 10, 32) data.Condition1 = int32(temp) - - if len(row.Cells) < 3+1 { + + + + + + + + + if len(row.Cells)<3+1{ break } - + + temp, _ = strconv.ParseInt(row.Cells[3].String(), 10, 64) data.ConditionValue1 = int64(temp) - - if len(row.Cells) < 4+1 { + + + + + + + + if len(row.Cells)<4+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[4].String(), 10, 32) data.Condition2 = int32(temp) - - if len(row.Cells) < 5+1 { + + + + + + + + + if len(row.Cells)<5+1{ break } - + + temp, _ = strconv.ParseInt(row.Cells[5].String(), 10, 64) data.ConditionValue2 = int64(temp) - - if len(row.Cells) < 6+1 { + + + + + + + + if len(row.Cells)<6+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[6].String(), 10, 32) data.Bond = int32(temp) - - if len(row.Cells) < 7+1 { + + + + + + + + + if len(row.Cells)<7+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[7].String(), 10, 32) data.AddType = int32(temp) - - if len(row.Cells) < 8+1 { + + + + + + + + + if len(row.Cells)<8+1{ break } - + + temp, _ = strconv.ParseInt(row.Cells[8].String(), 10, 64) data.AddMax = int64(temp) - - if len(row.Cells) < 9+1 { + + + + + + + + if len(row.Cells)<9+1{ break } - + + temp, _ = strconv.ParseInt(row.Cells[9].String(), 10, 64) data.AddMin = int64(temp) - - if len(row.Cells) < 10+1 { + + + + + + + + if len(row.Cells)<10+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[10].String(), 10, 32) data.TianHuRate = int32(temp) + + + + + + + + break } @@ -6465,26 +9475,26 @@ func AgcConvertDB_NewPlayer(fi, fo string) { } byteData, err := proto.Marshal(arr) - if err == nil { + if err == nil{ err := os.WriteFile(fo, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } + fmt.Println(err) + } } - + byteData, err = json.MarshalIndent(arr, "", "\t") if err == nil { foJson := strings.Replace(fo, ".dat", ".json", -1) err := os.WriteFile(foJson, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } - } + fmt.Println(err) + } + } break //only fetch first sheet } } - -func AgcConvertDB_PhoneLottery(fi, fo string) { + +func AgcConvertDB_PhoneLottery(fi,fo string) { xlsxFile, err := xlsx.OpenFile(fi) if err != nil { fmt.Println("excel file open error:", err, "filename:", fi) @@ -6498,19 +9508,19 @@ func AgcConvertDB_PhoneLottery(fi, fo string) { fmt.Println("stack--->", string(buf[:lens])) } for _, sheet := range xlsxFile.Sheets { - arr := &server.DB_PhoneLotteryArray{ - Arr: make([]*server.DB_PhoneLottery, 0, len(sheet.Rows)), + arr:=&server.DB_PhoneLotteryArray{ + Arr:make([]*server.DB_PhoneLottery, 0, len(sheet.Rows)), } for i, row := range sheet.Rows { if i <= 1 { continue } - + if len(row.Cells) == 0 { break } - + temp := int64(0) var arrInt []int32 var arrInt64 []int64 @@ -6518,95 +9528,180 @@ func AgcConvertDB_PhoneLottery(fi, fo string) { var _ = arrInt var _ = arrStr var _ = arrInt64 - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data := &server.DB_PhoneLottery{} for { - - if len(row.Cells) < 0+1 { + + if len(row.Cells)<0+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data.Id = int32(temp) - - if len(row.Cells) < 1+1 { + + + + + + + + + if len(row.Cells)<1+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[1].String(), 10, 32) data.Type = int32(temp) - - if len(row.Cells) < 2+1 { + + + + + + + + + if len(row.Cells)<2+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[2].String(), 10, 32) data.Name = int32(temp) - - if len(row.Cells) < 3+1 { + + + + + + + + + if len(row.Cells)<3+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[3].String(), 10, 32) data.Item_Id = int32(temp) - - if len(row.Cells) < 4+1 { + + + + + + + + + if len(row.Cells)<4+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[4].String(), 10, 32) data.Grade = int32(temp) - - if len(row.Cells) < 5+1 { + + + + + + + + + if len(row.Cells)<5+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[5].String(), 10, 32) data.Odd = int32(temp) - - if len(row.Cells) < 6+1 { + + + + + + + + + if len(row.Cells)<6+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[6].String(), 10, 32) data.Oddrate1 = int32(temp) - - if len(row.Cells) < 7+1 { + + + + + + + + + if len(row.Cells)<7+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[7].String(), 10, 32) data.Odd2 = int32(temp) - - if len(row.Cells) < 8+1 { + + + + + + + + + if len(row.Cells)<8+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[8].String(), 10, 32) data.Oddrate2 = int32(temp) - - if len(row.Cells) < 9+1 { + + + + + + + + + if len(row.Cells)<9+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[9].String(), 10, 32) data.Odd3 = int32(temp) - - if len(row.Cells) < 10+1 { + + + + + + + + + if len(row.Cells)<10+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[10].String(), 10, 32) data.Oddrate3 = int32(temp) - - if len(row.Cells) < 11+1 { + + + + + + + + + if len(row.Cells)<11+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[11].String(), 10, 32) data.Oddrate4 = int32(temp) + + + + + + + + break } @@ -6614,26 +9709,26 @@ func AgcConvertDB_PhoneLottery(fi, fo string) { } byteData, err := proto.Marshal(arr) - if err == nil { + if err == nil{ err := os.WriteFile(fo, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } + fmt.Println(err) + } } - + byteData, err = json.MarshalIndent(arr, "", "\t") if err == nil { foJson := strings.Replace(fo, ".dat", ".json", -1) err := os.WriteFile(foJson, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } - } + fmt.Println(err) + } + } break //only fetch first sheet } } - -func AgcConvertDB_PigBank_Diamond(fi, fo string) { + +func AgcConvertDB_PigBank_Diamond(fi,fo string) { xlsxFile, err := xlsx.OpenFile(fi) if err != nil { fmt.Println("excel file open error:", err, "filename:", fi) @@ -6647,19 +9742,19 @@ func AgcConvertDB_PigBank_Diamond(fi, fo string) { fmt.Println("stack--->", string(buf[:lens])) } for _, sheet := range xlsxFile.Sheets { - arr := &server.DB_PigBank_DiamondArray{ - Arr: make([]*server.DB_PigBank_Diamond, 0, len(sheet.Rows)), + arr:=&server.DB_PigBank_DiamondArray{ + Arr:make([]*server.DB_PigBank_Diamond, 0, len(sheet.Rows)), } for i, row := range sheet.Rows { if i <= 1 { continue } - + if len(row.Cells) == 0 { break } - + temp := int64(0) var arrInt []int32 var arrInt64 []int64 @@ -6667,39 +9762,68 @@ func AgcConvertDB_PigBank_Diamond(fi, fo string) { var _ = arrInt var _ = arrStr var _ = arrInt64 - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data := &server.DB_PigBank_Diamond{} for { - - if len(row.Cells) < 0+1 { + + if len(row.Cells)<0+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data.Id = int32(temp) - - if len(row.Cells) < 1+1 { + + + + + + + + + if len(row.Cells)<1+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[1].String(), 10, 32) data.BuyCountMin = int32(temp) - - if len(row.Cells) < 2+1 { + + + + + + + + + if len(row.Cells)<2+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[2].String(), 10, 32) data.BuyCountMax = int32(temp) - - if len(row.Cells) < 3+1 { + + + + + + + + + if len(row.Cells)<3+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[3].String(), 10, 32) data.CostDiamond = int32(temp) + + + + + + + + break } @@ -6707,26 +9831,26 @@ func AgcConvertDB_PigBank_Diamond(fi, fo string) { } byteData, err := proto.Marshal(arr) - if err == nil { + if err == nil{ err := os.WriteFile(fo, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } + fmt.Println(err) + } } - + byteData, err = json.MarshalIndent(arr, "", "\t") if err == nil { foJson := strings.Replace(fo, ".dat", ".json", -1) err := os.WriteFile(foJson, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } - } + fmt.Println(err) + } + } break //only fetch first sheet } } - -func AgcConvertDB_Pigbank_Prop(fi, fo string) { + +func AgcConvertDB_Pigbank_Prop(fi,fo string) { xlsxFile, err := xlsx.OpenFile(fi) if err != nil { fmt.Println("excel file open error:", err, "filename:", fi) @@ -6740,19 +9864,19 @@ func AgcConvertDB_Pigbank_Prop(fi, fo string) { fmt.Println("stack--->", string(buf[:lens])) } for _, sheet := range xlsxFile.Sheets { - arr := &server.DB_Pigbank_PropArray{ - Arr: make([]*server.DB_Pigbank_Prop, 0, len(sheet.Rows)), + arr:=&server.DB_Pigbank_PropArray{ + Arr:make([]*server.DB_Pigbank_Prop, 0, len(sheet.Rows)), } for i, row := range sheet.Rows { if i <= 1 { continue } - + if len(row.Cells) == 0 { break } - + temp := int64(0) var arrInt []int32 var arrInt64 []int64 @@ -6760,31 +9884,53 @@ func AgcConvertDB_Pigbank_Prop(fi, fo string) { var _ = arrInt var _ = arrStr var _ = arrInt64 - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data := &server.DB_Pigbank_Prop{} for { - - if len(row.Cells) < 0+1 { + + if len(row.Cells)<0+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data.Id = int32(temp) - - if len(row.Cells) < 1+1 { + + + + + + + + + if len(row.Cells)<1+1{ break } - + + + data.PorpName = row.Cells[1].String() - - if len(row.Cells) < 2+1 { + + + + + + + if len(row.Cells)<2+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[2].String(), 10, 32) data.PropValue = int32(temp) + + + + + + + + break } @@ -6792,26 +9938,26 @@ func AgcConvertDB_Pigbank_Prop(fi, fo string) { } byteData, err := proto.Marshal(arr) - if err == nil { + if err == nil{ err := os.WriteFile(fo, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } + fmt.Println(err) + } } - + byteData, err = json.MarshalIndent(arr, "", "\t") if err == nil { foJson := strings.Replace(fo, ".dat", ".json", -1) err := os.WriteFile(foJson, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } - } + fmt.Println(err) + } + } break //only fetch first sheet } } - -func AgcConvertDB_PlayerExp(fi, fo string) { + +func AgcConvertDB_PlayerExp(fi,fo string) { xlsxFile, err := xlsx.OpenFile(fi) if err != nil { fmt.Println("excel file open error:", err, "filename:", fi) @@ -6825,19 +9971,19 @@ func AgcConvertDB_PlayerExp(fi, fo string) { fmt.Println("stack--->", string(buf[:lens])) } for _, sheet := range xlsxFile.Sheets { - arr := &server.DB_PlayerExpArray{ - Arr: make([]*server.DB_PlayerExp, 0, len(sheet.Rows)), + arr:=&server.DB_PlayerExpArray{ + Arr:make([]*server.DB_PlayerExp, 0, len(sheet.Rows)), } for i, row := range sheet.Rows { if i <= 1 { continue } - + if len(row.Cells) == 0 { break } - + temp := int64(0) var arrInt []int32 var arrInt64 []int64 @@ -6845,25 +9991,40 @@ func AgcConvertDB_PlayerExp(fi, fo string) { var _ = arrInt var _ = arrStr var _ = arrInt64 - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data := &server.DB_PlayerExp{} for { - - if len(row.Cells) < 0+1 { + + if len(row.Cells)<0+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data.Id = int32(temp) - - if len(row.Cells) < 1+1 { + + + + + + + + + if len(row.Cells)<1+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[1].String(), 10, 32) data.Exp = int32(temp) + + + + + + + + break } @@ -6871,26 +10032,26 @@ func AgcConvertDB_PlayerExp(fi, fo string) { } byteData, err := proto.Marshal(arr) - if err == nil { + if err == nil{ err := os.WriteFile(fo, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } + fmt.Println(err) + } } - + byteData, err = json.MarshalIndent(arr, "", "\t") if err == nil { foJson := strings.Replace(fo, ".dat", ".json", -1) err := os.WriteFile(foJson, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } - } + fmt.Println(err) + } + } break //only fetch first sheet } } - -func AgcConvertDB_PlayerInfo(fi, fo string) { + +func AgcConvertDB_PlayerInfo(fi,fo string) { xlsxFile, err := xlsx.OpenFile(fi) if err != nil { fmt.Println("excel file open error:", err, "filename:", fi) @@ -6904,19 +10065,19 @@ func AgcConvertDB_PlayerInfo(fi, fo string) { fmt.Println("stack--->", string(buf[:lens])) } for _, sheet := range xlsxFile.Sheets { - arr := &server.DB_PlayerInfoArray{ - Arr: make([]*server.DB_PlayerInfo, 0, len(sheet.Rows)), + arr:=&server.DB_PlayerInfoArray{ + Arr:make([]*server.DB_PlayerInfo, 0, len(sheet.Rows)), } for i, row := range sheet.Rows { if i <= 1 { continue } - + if len(row.Cells) == 0 { break } - + temp := int64(0) var arrInt []int32 var arrInt64 []int64 @@ -6924,44 +10085,80 @@ func AgcConvertDB_PlayerInfo(fi, fo string) { var _ = arrInt var _ = arrStr var _ = arrInt64 - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data := &server.DB_PlayerInfo{} for { - - if len(row.Cells) < 0+1 { + + if len(row.Cells)<0+1{ break } - + + + data.City = row.Cells[0].String() - - if len(row.Cells) < 1+1 { + + + + + + + if len(row.Cells)<1+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[1].String(), 10, 32) data.Head = int32(temp) - - if len(row.Cells) < 2+1 { + + + + + + + + + if len(row.Cells)<2+1{ break } - + + + data.Name = row.Cells[2].String() - - if len(row.Cells) < 3+1 { + + + + + + + if len(row.Cells)<3+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[3].String(), 10, 32) data.Sex = int32(temp) - - if len(row.Cells) < 4+1 { + + + + + + + + + if len(row.Cells)<4+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[4].String(), 10, 32) data.Id = int32(temp) + + + + + + + + break } @@ -6969,26 +10166,26 @@ func AgcConvertDB_PlayerInfo(fi, fo string) { } byteData, err := proto.Marshal(arr) - if err == nil { + if err == nil{ err := os.WriteFile(fo, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } + fmt.Println(err) + } } - + byteData, err = json.MarshalIndent(arr, "", "\t") if err == nil { foJson := strings.Replace(fo, ".dat", ".json", -1) err := os.WriteFile(foJson, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } - } + fmt.Println(err) + } + } break //only fetch first sheet } } - -func AgcConvertDB_PlayerType(fi, fo string) { + +func AgcConvertDB_PlayerType(fi,fo string) { xlsxFile, err := xlsx.OpenFile(fi) if err != nil { fmt.Println("excel file open error:", err, "filename:", fi) @@ -7002,19 +10199,19 @@ func AgcConvertDB_PlayerType(fi, fo string) { fmt.Println("stack--->", string(buf[:lens])) } for _, sheet := range xlsxFile.Sheets { - arr := &server.DB_PlayerTypeArray{ - Arr: make([]*server.DB_PlayerType, 0, len(sheet.Rows)), + arr:=&server.DB_PlayerTypeArray{ + Arr:make([]*server.DB_PlayerType, 0, len(sheet.Rows)), } for i, row := range sheet.Rows { if i <= 1 { continue } - + if len(row.Cells) == 0 { break } - + temp := int64(0) var arrInt []int32 var arrInt64 []int64 @@ -7022,106 +10219,200 @@ func AgcConvertDB_PlayerType(fi, fo string) { var _ = arrInt var _ = arrStr var _ = arrInt64 - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data := &server.DB_PlayerType{} for { - - if len(row.Cells) < 0+1 { + + if len(row.Cells)<0+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data.Id = int32(temp) - - if len(row.Cells) < 1+1 { + + + + + + + + + if len(row.Cells)<1+1{ break } - + + + data.Name = row.Cells[1].String() - - if len(row.Cells) < 2+1 { + + + + + + + if len(row.Cells)<2+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[2].String(), 10, 32) data.GameFreeId = int32(temp) - - if len(row.Cells) < 3+1 { + + + + + + + + + if len(row.Cells)<3+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[3].String(), 10, 32) data.PayLowerLimit = int32(temp) - - if len(row.Cells) < 4+1 { + + + + + + + + + if len(row.Cells)<4+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[4].String(), 10, 32) data.PayUpperLimit = int32(temp) - - if len(row.Cells) < 5+1 { + + + + + + + + + if len(row.Cells)<5+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[5].String(), 10, 32) data.GameTimeLowerLimit = int32(temp) - - if len(row.Cells) < 6+1 { + + + + + + + + + if len(row.Cells)<6+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[6].String(), 10, 32) data.GameTimeUpperLimit = int32(temp) - - if len(row.Cells) < 7+1 { + + + + + + + + + if len(row.Cells)<7+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[7].String(), 10, 32) data.TotalInLowerLimit = int32(temp) - - if len(row.Cells) < 8+1 { + + + + + + + + + if len(row.Cells)<8+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[8].String(), 10, 32) data.TotalInUpperLimit = int32(temp) - - if len(row.Cells) < 9+1 { + + + + + + + + + if len(row.Cells)<9+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[9].String(), 10, 32) data.OddsLowerLimit = int32(temp) - - if len(row.Cells) < 10+1 { + + + + + + + + + if len(row.Cells)<10+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[10].String(), 10, 32) data.OddsUpperLimit = int32(temp) - - if len(row.Cells) < 11+1 { + + + + + + + + + if len(row.Cells)<11+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[11].String(), 10, 32) data.LuckyRate = int32(temp) - - if len(row.Cells) < 12+1 { + + + + + + + + + if len(row.Cells)<12+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[12].String(), 10, 32) data.ChangeCardRate = int32(temp) - - if len(row.Cells) < 13+1 { + + + + + + + + + if len(row.Cells)<13+1{ break } - + + + + arrStr = strings.Split(row.Cells[13].String(), "|") arrInt = nil if len(arrStr) > 0 && row.Cells[13].String() != "" { @@ -7132,11 +10423,18 @@ func AgcConvertDB_PlayerType(fi, fo string) { } } data.CardValueRange = arrInt - - if len(row.Cells) < 14+1 { + + + + + + if len(row.Cells)<14+1{ break } - + + + + arrStr = strings.Split(row.Cells[14].String(), "|") arrInt = nil if len(arrStr) > 0 && row.Cells[14].String() != "" { @@ -7147,11 +10445,18 @@ func AgcConvertDB_PlayerType(fi, fo string) { } } data.MatchPriority = arrInt - - if len(row.Cells) < 15+1 { + + + + + + if len(row.Cells)<15+1{ break } - + + + + arrStr = strings.Split(row.Cells[15].String(), "|") arrInt = nil if len(arrStr) > 0 && row.Cells[15].String() != "" { @@ -7162,18 +10467,32 @@ func AgcConvertDB_PlayerType(fi, fo string) { } } data.ExcludeMatch = arrInt - - if len(row.Cells) < 16+1 { + + + + + + if len(row.Cells)<16+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[16].String(), 10, 32) data.CardLibRate = int32(temp) - - if len(row.Cells) < 17+1 { + + + + + + + + + if len(row.Cells)<17+1{ break } - + + + + arrStr = strings.Split(row.Cells[17].String(), "|") arrInt = nil if len(arrStr) > 0 && row.Cells[17].String() != "" { @@ -7184,6 +10503,11 @@ func AgcConvertDB_PlayerType(fi, fo string) { } } data.CardLibArr = arrInt + + + + + break } @@ -7191,26 +10515,26 @@ func AgcConvertDB_PlayerType(fi, fo string) { } byteData, err := proto.Marshal(arr) - if err == nil { + if err == nil{ err := os.WriteFile(fo, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } + fmt.Println(err) + } } - + byteData, err = json.MarshalIndent(arr, "", "\t") if err == nil { foJson := strings.Replace(fo, ".dat", ".json", -1) err := os.WriteFile(foJson, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } - } + fmt.Println(err) + } + } break //only fetch first sheet } } - -func AgcConvertDB_PotOdd(fi, fo string) { + +func AgcConvertDB_PotOdd(fi,fo string) { xlsxFile, err := xlsx.OpenFile(fi) if err != nil { fmt.Println("excel file open error:", err, "filename:", fi) @@ -7224,19 +10548,19 @@ func AgcConvertDB_PotOdd(fi, fo string) { fmt.Println("stack--->", string(buf[:lens])) } for _, sheet := range xlsxFile.Sheets { - arr := &server.DB_PotOddArray{ - Arr: make([]*server.DB_PotOdd, 0, len(sheet.Rows)), + arr:=&server.DB_PotOddArray{ + Arr:make([]*server.DB_PotOdd, 0, len(sheet.Rows)), } for i, row := range sheet.Rows { if i <= 1 { continue } - + if len(row.Cells) == 0 { break } - + temp := int64(0) var arrInt []int32 var arrInt64 []int64 @@ -7244,35 +10568,59 @@ func AgcConvertDB_PotOdd(fi, fo string) { var _ = arrInt var _ = arrStr var _ = arrInt64 - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data := &server.DB_PotOdd{} for { - - if len(row.Cells) < 0+1 { + + if len(row.Cells)<0+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data.Id = int32(temp) - - if len(row.Cells) < 1+1 { + + + + + + + + + if len(row.Cells)<1+1{ break } - + + + data.Name = row.Cells[1].String() - - if len(row.Cells) < 2+1 { + + + + + + + if len(row.Cells)<2+1{ break } - + + + data.Title = row.Cells[2].String() - - if len(row.Cells) < 3+1 { + + + + + + + if len(row.Cells)<3+1{ break } - + + + + arrStr = strings.Split(row.Cells[3].String(), "|") arrInt = nil if len(arrStr) > 0 && row.Cells[3].String() != "" { @@ -7283,6 +10631,11 @@ func AgcConvertDB_PotOdd(fi, fo string) { } } data.VipOdd = arrInt + + + + + break } @@ -7290,26 +10643,26 @@ func AgcConvertDB_PotOdd(fi, fo string) { } byteData, err := proto.Marshal(arr) - if err == nil { + if err == nil{ err := os.WriteFile(fo, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } + fmt.Println(err) + } } - + byteData, err = json.MarshalIndent(arr, "", "\t") if err == nil { foJson := strings.Replace(fo, ".dat", ".json", -1) err := os.WriteFile(foJson, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } - } + fmt.Println(err) + } + } break //only fetch first sheet } } - -func AgcConvertDB_PropExchange(fi, fo string) { + +func AgcConvertDB_PropExchange(fi,fo string) { xlsxFile, err := xlsx.OpenFile(fi) if err != nil { fmt.Println("excel file open error:", err, "filename:", fi) @@ -7323,19 +10676,19 @@ func AgcConvertDB_PropExchange(fi, fo string) { fmt.Println("stack--->", string(buf[:lens])) } for _, sheet := range xlsxFile.Sheets { - arr := &server.DB_PropExchangeArray{ - Arr: make([]*server.DB_PropExchange, 0, len(sheet.Rows)), + arr:=&server.DB_PropExchangeArray{ + Arr:make([]*server.DB_PropExchange, 0, len(sheet.Rows)), } for i, row := range sheet.Rows { if i <= 1 { continue } - + if len(row.Cells) == 0 { break } - + temp := int64(0) var arrInt []int32 var arrInt64 []int64 @@ -7343,77 +10696,106 @@ func AgcConvertDB_PropExchange(fi, fo string) { var _ = arrInt var _ = arrStr var _ = arrInt64 - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data := &server.DB_PropExchange{} for { - - if len(row.Cells) < 0+1 { + + if len(row.Cells)<0+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data.Id = int32(temp) - - if len(row.Cells) < 1+1 { + + + + + + + + + if len(row.Cells)<1+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[1].String(), 10, 32) data.Group = int32(temp) - - if len(row.Cells) < 2+1 { + + + + + + + + + if len(row.Cells)<2+1{ break } - - if row.Cells[2].String() != "" { - pairs := strings.Split(row.Cells[2].String(), ";") - resultMap := make(map[int64]int64) - for _, pair := range pairs { - kv := strings.Split(pair, ",") - key, err := strconv.ParseInt(kv[0], 10, 64) - if err != nil { - // 错误处理 - fmt.Println("无法转换为int64:", kv[0]) - continue + + + + + + + + if row.Cells[2].String() != ""{ + pairs := strings.Split(row.Cells[2].String(), ";") + resultMap := make(map[int64]int64) + for _, pair := range pairs { + kv := strings.Split(pair, ",") + key, err := strconv.ParseInt(kv[0], 10, 64) + if err != nil { + // 错误处理 + fmt.Println("无法转换为int64:", kv[0]) + continue + } + value, err := strconv.ParseInt(kv[1], 10, 64) + if err != nil { + // 错误处理 + fmt.Println("无法转换为int64:", kv[1]) + continue + } + resultMap[key] = value } - value, err := strconv.ParseInt(kv[1], 10, 64) - if err != nil { - // 错误处理 - fmt.Println("无法转换为int64:", kv[1]) - continue - } - resultMap[key] = value + data.Cost = resultMap } - data.Cost = resultMap - } - - if len(row.Cells) < 3+1 { + + + if len(row.Cells)<3+1{ break } - - if row.Cells[3].String() != "" { - pairs := strings.Split(row.Cells[3].String(), ";") - resultMap := make(map[int64]int64) - for _, pair := range pairs { - kv := strings.Split(pair, ",") - key, err := strconv.ParseInt(kv[0], 10, 64) - if err != nil { - // 错误处理 - fmt.Println("无法转换为int64:", kv[0]) - continue + + + + + + + + if row.Cells[3].String() != ""{ + pairs := strings.Split(row.Cells[3].String(), ";") + resultMap := make(map[int64]int64) + for _, pair := range pairs { + kv := strings.Split(pair, ",") + key, err := strconv.ParseInt(kv[0], 10, 64) + if err != nil { + // 错误处理 + fmt.Println("无法转换为int64:", kv[0]) + continue + } + value, err := strconv.ParseInt(kv[1], 10, 64) + if err != nil { + // 错误处理 + fmt.Println("无法转换为int64:", kv[1]) + continue + } + resultMap[key] = value } - value, err := strconv.ParseInt(kv[1], 10, 64) - if err != nil { - // 错误处理 - fmt.Println("无法转换为int64:", kv[1]) - continue - } - resultMap[key] = value + data.Gain = resultMap } - data.Gain = resultMap - } + + break } @@ -7421,26 +10803,26 @@ func AgcConvertDB_PropExchange(fi, fo string) { } byteData, err := proto.Marshal(arr) - if err == nil { + if err == nil{ err := os.WriteFile(fo, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } + fmt.Println(err) + } } - + byteData, err = json.MarshalIndent(arr, "", "\t") if err == nil { foJson := strings.Replace(fo, ".dat", ".json", -1) err := os.WriteFile(foJson, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } - } + fmt.Println(err) + } + } break //only fetch first sheet } } - -func AgcConvertDB_RankCycle(fi, fo string) { + +func AgcConvertDB_RankCycle(fi,fo string) { xlsxFile, err := xlsx.OpenFile(fi) if err != nil { fmt.Println("excel file open error:", err, "filename:", fi) @@ -7454,19 +10836,19 @@ func AgcConvertDB_RankCycle(fi, fo string) { fmt.Println("stack--->", string(buf[:lens])) } for _, sheet := range xlsxFile.Sheets { - arr := &server.DB_RankCycleArray{ - Arr: make([]*server.DB_RankCycle, 0, len(sheet.Rows)), + arr:=&server.DB_RankCycleArray{ + Arr:make([]*server.DB_RankCycle, 0, len(sheet.Rows)), } for i, row := range sheet.Rows { if i <= 1 { continue } - + if len(row.Cells) == 0 { break } - + temp := int64(0) var arrInt []int32 var arrInt64 []int64 @@ -7474,30 +10856,52 @@ func AgcConvertDB_RankCycle(fi, fo string) { var _ = arrInt var _ = arrStr var _ = arrInt64 - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data := &server.DB_RankCycle{} for { - - if len(row.Cells) < 0+1 { + + if len(row.Cells)<0+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data.Id = int32(temp) - - if len(row.Cells) < 1+1 { + + + + + + + + + if len(row.Cells)<1+1{ break } - + + + data.Start = row.Cells[1].String() - - if len(row.Cells) < 2+1 { + + + + + + + if len(row.Cells)<2+1{ break } - + + + data.End = row.Cells[2].String() + + + + + + break } @@ -7505,26 +10909,26 @@ func AgcConvertDB_RankCycle(fi, fo string) { } byteData, err := proto.Marshal(arr) - if err == nil { + if err == nil{ err := os.WriteFile(fo, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } + fmt.Println(err) + } } - + byteData, err = json.MarshalIndent(arr, "", "\t") if err == nil { foJson := strings.Replace(fo, ".dat", ".json", -1) err := os.WriteFile(foJson, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } - } + fmt.Println(err) + } + } break //only fetch first sheet } } - -func AgcConvertDB_RankLevel(fi, fo string) { + +func AgcConvertDB_RankLevel(fi,fo string) { xlsxFile, err := xlsx.OpenFile(fi) if err != nil { fmt.Println("excel file open error:", err, "filename:", fi) @@ -7538,19 +10942,19 @@ func AgcConvertDB_RankLevel(fi, fo string) { fmt.Println("stack--->", string(buf[:lens])) } for _, sheet := range xlsxFile.Sheets { - arr := &server.DB_RankLevelArray{ - Arr: make([]*server.DB_RankLevel, 0, len(sheet.Rows)), + arr:=&server.DB_RankLevelArray{ + Arr:make([]*server.DB_RankLevel, 0, len(sheet.Rows)), } for i, row := range sheet.Rows { if i <= 1 { continue } - + if len(row.Cells) == 0 { break } - + temp := int64(0) var arrInt []int32 var arrInt64 []int64 @@ -7558,45 +10962,81 @@ func AgcConvertDB_RankLevel(fi, fo string) { var _ = arrInt var _ = arrStr var _ = arrInt64 - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data := &server.DB_RankLevel{} for { - - if len(row.Cells) < 0+1 { + + if len(row.Cells)<0+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data.Id = int32(temp) - - if len(row.Cells) < 1+1 { + + + + + + + + + if len(row.Cells)<1+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[1].String(), 10, 32) data.RankType = int32(temp) - - if len(row.Cells) < 2+1 { + + + + + + + + + if len(row.Cells)<2+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[2].String(), 10, 32) data.Level = int32(temp) - - if len(row.Cells) < 3+1 { + + + + + + + + + if len(row.Cells)<3+1{ break } - + + + data.Name = row.Cells[3].String() - - if len(row.Cells) < 4+1 { + + + + + + + if len(row.Cells)<4+1{ break } - + + temp, _ = strconv.ParseInt(row.Cells[4].String(), 10, 64) data.Score = int64(temp) + + + + + + + break } @@ -7604,26 +11044,26 @@ func AgcConvertDB_RankLevel(fi, fo string) { } byteData, err := proto.Marshal(arr) - if err == nil { + if err == nil{ err := os.WriteFile(fo, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } + fmt.Println(err) + } } - + byteData, err = json.MarshalIndent(arr, "", "\t") if err == nil { foJson := strings.Replace(fo, ".dat", ".json", -1) err := os.WriteFile(foJson, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } - } + fmt.Println(err) + } + } break //only fetch first sheet } } - -func AgcConvertDB_RankReward(fi, fo string) { + +func AgcConvertDB_RankReward(fi,fo string) { xlsxFile, err := xlsx.OpenFile(fi) if err != nil { fmt.Println("excel file open error:", err, "filename:", fi) @@ -7637,19 +11077,19 @@ func AgcConvertDB_RankReward(fi, fo string) { fmt.Println("stack--->", string(buf[:lens])) } for _, sheet := range xlsxFile.Sheets { - arr := &server.DB_RankRewardArray{ - Arr: make([]*server.DB_RankReward, 0, len(sheet.Rows)), + arr:=&server.DB_RankRewardArray{ + Arr:make([]*server.DB_RankReward, 0, len(sheet.Rows)), } for i, row := range sheet.Rows { if i <= 1 { continue } - + if len(row.Cells) == 0 { break } - + temp := int64(0) var arrInt []int32 var arrInt64 []int64 @@ -7657,74 +11097,138 @@ func AgcConvertDB_RankReward(fi, fo string) { var _ = arrInt var _ = arrStr var _ = arrInt64 - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data := &server.DB_RankReward{} for { - - if len(row.Cells) < 0+1 { + + if len(row.Cells)<0+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data.Id = int32(temp) - - if len(row.Cells) < 1+1 { + + + + + + + + + if len(row.Cells)<1+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[1].String(), 10, 32) data.RankType = int32(temp) - - if len(row.Cells) < 2+1 { + + + + + + + + + if len(row.Cells)<2+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[2].String(), 10, 32) data.Level = int32(temp) - - if len(row.Cells) < 3+1 { + + + + + + + + + if len(row.Cells)<3+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[3].String(), 10, 32) data.Award1Id = int32(temp) - - if len(row.Cells) < 4+1 { + + + + + + + + + if len(row.Cells)<4+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[4].String(), 10, 32) data.Award1Num = int32(temp) - - if len(row.Cells) < 5+1 { + + + + + + + + + if len(row.Cells)<5+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[5].String(), 10, 32) data.Award2Id = int32(temp) - - if len(row.Cells) < 6+1 { + + + + + + + + + if len(row.Cells)<6+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[6].String(), 10, 32) data.Award2Num = int32(temp) - - if len(row.Cells) < 7+1 { + + + + + + + + + if len(row.Cells)<7+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[7].String(), 10, 32) data.Award3Id = int32(temp) - - if len(row.Cells) < 8+1 { + + + + + + + + + if len(row.Cells)<8+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[8].String(), 10, 32) data.Award3Num = int32(temp) + + + + + + + + break } @@ -7732,26 +11236,26 @@ func AgcConvertDB_RankReward(fi, fo string) { } byteData, err := proto.Marshal(arr) - if err == nil { + if err == nil{ err := os.WriteFile(fo, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } + fmt.Println(err) + } } - + byteData, err = json.MarshalIndent(arr, "", "\t") if err == nil { foJson := strings.Replace(fo, ".dat", ".json", -1) err := os.WriteFile(foJson, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } - } + fmt.Println(err) + } + } break //only fetch first sheet } } - -func AgcConvertDB_Sensitive_Words(fi, fo string) { + +func AgcConvertDB_Sensitive_Words(fi,fo string) { xlsxFile, err := xlsx.OpenFile(fi) if err != nil { fmt.Println("excel file open error:", err, "filename:", fi) @@ -7765,19 +11269,19 @@ func AgcConvertDB_Sensitive_Words(fi, fo string) { fmt.Println("stack--->", string(buf[:lens])) } for _, sheet := range xlsxFile.Sheets { - arr := &server.DB_Sensitive_WordsArray{ - Arr: make([]*server.DB_Sensitive_Words, 0, len(sheet.Rows)), + arr:=&server.DB_Sensitive_WordsArray{ + Arr:make([]*server.DB_Sensitive_Words, 0, len(sheet.Rows)), } for i, row := range sheet.Rows { if i <= 1 { continue } - + if len(row.Cells) == 0 { break } - + temp := int64(0) var arrInt []int32 var arrInt64 []int64 @@ -7785,24 +11289,39 @@ func AgcConvertDB_Sensitive_Words(fi, fo string) { var _ = arrInt var _ = arrStr var _ = arrInt64 - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data := &server.DB_Sensitive_Words{} for { - - if len(row.Cells) < 0+1 { + + if len(row.Cells)<0+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data.Id = int32(temp) - - if len(row.Cells) < 1+1 { + + + + + + + + + if len(row.Cells)<1+1{ break } - + + + data.Sensitive_Words = row.Cells[1].String() + + + + + + break } @@ -7810,26 +11329,26 @@ func AgcConvertDB_Sensitive_Words(fi, fo string) { } byteData, err := proto.Marshal(arr) - if err == nil { + if err == nil{ err := os.WriteFile(fo, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } + fmt.Println(err) + } } - + byteData, err = json.MarshalIndent(arr, "", "\t") if err == nil { foJson := strings.Replace(fo, ".dat", ".json", -1) err := os.WriteFile(foJson, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } - } + fmt.Println(err) + } + } break //only fetch first sheet } } - -func AgcConvertDB_SlotRateWeight(fi, fo string) { + +func AgcConvertDB_SlotRateWeight(fi,fo string) { xlsxFile, err := xlsx.OpenFile(fi) if err != nil { fmt.Println("excel file open error:", err, "filename:", fi) @@ -7843,19 +11362,19 @@ func AgcConvertDB_SlotRateWeight(fi, fo string) { fmt.Println("stack--->", string(buf[:lens])) } for _, sheet := range xlsxFile.Sheets { - arr := &server.DB_SlotRateWeightArray{ - Arr: make([]*server.DB_SlotRateWeight, 0, len(sheet.Rows)), + arr:=&server.DB_SlotRateWeightArray{ + Arr:make([]*server.DB_SlotRateWeight, 0, len(sheet.Rows)), } for i, row := range sheet.Rows { if i <= 1 { continue } - + if len(row.Cells) == 0 { break } - + temp := int64(0) var arrInt []int32 var arrInt64 []int64 @@ -7863,37 +11382,61 @@ func AgcConvertDB_SlotRateWeight(fi, fo string) { var _ = arrInt var _ = arrStr var _ = arrInt64 - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data := &server.DB_SlotRateWeight{} for { - - if len(row.Cells) < 0+1 { + + if len(row.Cells)<0+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data.Id = int32(temp) - - if len(row.Cells) < 1+1 { + + + + + + + + + if len(row.Cells)<1+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[1].String(), 10, 32) data.GameFreeId = int32(temp) - - if len(row.Cells) < 2+1 { + + + + + + + + + if len(row.Cells)<2+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[2].String(), 10, 32) data.Pos = int32(temp) - - if len(row.Cells) < 3+1 { + + + + + + + + + if len(row.Cells)<3+1{ break } - + + + + arrStr = strings.Split(row.Cells[3].String(), "|") arrInt = nil if len(arrStr) > 0 && row.Cells[3].String() != "" { @@ -7904,11 +11447,18 @@ func AgcConvertDB_SlotRateWeight(fi, fo string) { } } data.NormCol1 = arrInt - - if len(row.Cells) < 4+1 { + + + + + + if len(row.Cells)<4+1{ break } - + + + + arrStr = strings.Split(row.Cells[4].String(), "|") arrInt = nil if len(arrStr) > 0 && row.Cells[4].String() != "" { @@ -7919,11 +11469,18 @@ func AgcConvertDB_SlotRateWeight(fi, fo string) { } } data.NormCol2 = arrInt - - if len(row.Cells) < 5+1 { + + + + + + if len(row.Cells)<5+1{ break } - + + + + arrStr = strings.Split(row.Cells[5].String(), "|") arrInt = nil if len(arrStr) > 0 && row.Cells[5].String() != "" { @@ -7934,11 +11491,18 @@ func AgcConvertDB_SlotRateWeight(fi, fo string) { } } data.NormCol3 = arrInt - - if len(row.Cells) < 6+1 { + + + + + + if len(row.Cells)<6+1{ break } - + + + + arrStr = strings.Split(row.Cells[6].String(), "|") arrInt = nil if len(arrStr) > 0 && row.Cells[6].String() != "" { @@ -7949,11 +11513,18 @@ func AgcConvertDB_SlotRateWeight(fi, fo string) { } } data.NormCol4 = arrInt - - if len(row.Cells) < 7+1 { + + + + + + if len(row.Cells)<7+1{ break } - + + + + arrStr = strings.Split(row.Cells[7].String(), "|") arrInt = nil if len(arrStr) > 0 && row.Cells[7].String() != "" { @@ -7964,11 +11535,18 @@ func AgcConvertDB_SlotRateWeight(fi, fo string) { } } data.NormCol5 = arrInt - - if len(row.Cells) < 8+1 { + + + + + + if len(row.Cells)<8+1{ break } - + + + + arrStr = strings.Split(row.Cells[8].String(), "|") arrInt = nil if len(arrStr) > 0 && row.Cells[8].String() != "" { @@ -7979,11 +11557,18 @@ func AgcConvertDB_SlotRateWeight(fi, fo string) { } } data.FreeCol1 = arrInt - - if len(row.Cells) < 9+1 { + + + + + + if len(row.Cells)<9+1{ break } - + + + + arrStr = strings.Split(row.Cells[9].String(), "|") arrInt = nil if len(arrStr) > 0 && row.Cells[9].String() != "" { @@ -7994,11 +11579,18 @@ func AgcConvertDB_SlotRateWeight(fi, fo string) { } } data.FreeCol2 = arrInt - - if len(row.Cells) < 10+1 { + + + + + + if len(row.Cells)<10+1{ break } - + + + + arrStr = strings.Split(row.Cells[10].String(), "|") arrInt = nil if len(arrStr) > 0 && row.Cells[10].String() != "" { @@ -8009,11 +11601,18 @@ func AgcConvertDB_SlotRateWeight(fi, fo string) { } } data.FreeCol3 = arrInt - - if len(row.Cells) < 11+1 { + + + + + + if len(row.Cells)<11+1{ break } - + + + + arrStr = strings.Split(row.Cells[11].String(), "|") arrInt = nil if len(arrStr) > 0 && row.Cells[11].String() != "" { @@ -8024,11 +11623,18 @@ func AgcConvertDB_SlotRateWeight(fi, fo string) { } } data.FreeCol4 = arrInt - - if len(row.Cells) < 12+1 { + + + + + + if len(row.Cells)<12+1{ break } - + + + + arrStr = strings.Split(row.Cells[12].String(), "|") arrInt = nil if len(arrStr) > 0 && row.Cells[12].String() != "" { @@ -8039,11 +11645,18 @@ func AgcConvertDB_SlotRateWeight(fi, fo string) { } } data.FreeCol5 = arrInt - - if len(row.Cells) < 13+1 { + + + + + + if len(row.Cells)<13+1{ break } - + + + + arrStr = strings.Split(row.Cells[13].String(), "|") arrInt = nil if len(arrStr) > 0 && row.Cells[13].String() != "" { @@ -8054,11 +11667,18 @@ func AgcConvertDB_SlotRateWeight(fi, fo string) { } } data.MaryOut = arrInt - - if len(row.Cells) < 14+1 { + + + + + + if len(row.Cells)<14+1{ break } - + + + + arrStr = strings.Split(row.Cells[14].String(), "|") arrInt = nil if len(arrStr) > 0 && row.Cells[14].String() != "" { @@ -8069,11 +11689,18 @@ func AgcConvertDB_SlotRateWeight(fi, fo string) { } } data.MaryMid = arrInt - - if len(row.Cells) < 15+1 { + + + + + + if len(row.Cells)<15+1{ break } - + + + + arrStr = strings.Split(row.Cells[15].String(), "|") arrInt = nil if len(arrStr) > 0 && row.Cells[15].String() != "" { @@ -8084,6 +11711,11 @@ func AgcConvertDB_SlotRateWeight(fi, fo string) { } } data.JackPot = arrInt + + + + + break } @@ -8091,26 +11723,26 @@ func AgcConvertDB_SlotRateWeight(fi, fo string) { } byteData, err := proto.Marshal(arr) - if err == nil { + if err == nil{ err := os.WriteFile(fo, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } + fmt.Println(err) + } } - + byteData, err = json.MarshalIndent(arr, "", "\t") if err == nil { foJson := strings.Replace(fo, ".dat", ".json", -1) err := os.WriteFile(foJson, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } - } + fmt.Println(err) + } + } break //only fetch first sheet } } - -func AgcConvertDB_SystemChance(fi, fo string) { + +func AgcConvertDB_SystemChance(fi,fo string) { xlsxFile, err := xlsx.OpenFile(fi) if err != nil { fmt.Println("excel file open error:", err, "filename:", fi) @@ -8124,19 +11756,19 @@ func AgcConvertDB_SystemChance(fi, fo string) { fmt.Println("stack--->", string(buf[:lens])) } for _, sheet := range xlsxFile.Sheets { - arr := &server.DB_SystemChanceArray{ - Arr: make([]*server.DB_SystemChance, 0, len(sheet.Rows)), + arr:=&server.DB_SystemChanceArray{ + Arr:make([]*server.DB_SystemChance, 0, len(sheet.Rows)), } for i, row := range sheet.Rows { if i <= 1 { continue } - + if len(row.Cells) == 0 { break } - + temp := int64(0) var arrInt []int32 var arrInt64 []int64 @@ -8144,45 +11776,81 @@ func AgcConvertDB_SystemChance(fi, fo string) { var _ = arrInt var _ = arrStr var _ = arrInt64 - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data := &server.DB_SystemChance{} for { - - if len(row.Cells) < 0+1 { + + if len(row.Cells)<0+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data.Id = int32(temp) - - if len(row.Cells) < 1+1 { + + + + + + + + + if len(row.Cells)<1+1{ break } - + + + data.Desc = row.Cells[1].String() - - if len(row.Cells) < 2+1 { + + + + + + + if len(row.Cells)<2+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[2].String(), 10, 32) data.ChanceType = int32(temp) - - if len(row.Cells) < 3+1 { + + + + + + + + + if len(row.Cells)<3+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[3].String(), 10, 32) data.Coin = int32(temp) - - if len(row.Cells) < 4+1 { + + + + + + + + + if len(row.Cells)<4+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[4].String(), 10, 32) data.Rate = int32(temp) + + + + + + + + break } @@ -8190,26 +11858,26 @@ func AgcConvertDB_SystemChance(fi, fo string) { } byteData, err := proto.Marshal(arr) - if err == nil { + if err == nil{ err := os.WriteFile(fo, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } + fmt.Println(err) + } } - + byteData, err = json.MarshalIndent(arr, "", "\t") if err == nil { foJson := strings.Replace(fo, ".dat", ".json", -1) err := os.WriteFile(foJson, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } - } + fmt.Println(err) + } + } break //only fetch first sheet } } - -func AgcConvertDB_Task(fi, fo string) { + +func AgcConvertDB_Task(fi,fo string) { xlsxFile, err := xlsx.OpenFile(fi) if err != nil { fmt.Println("excel file open error:", err, "filename:", fi) @@ -8223,19 +11891,19 @@ func AgcConvertDB_Task(fi, fo string) { fmt.Println("stack--->", string(buf[:lens])) } for _, sheet := range xlsxFile.Sheets { - arr := &server.DB_TaskArray{ - Arr: make([]*server.DB_Task, 0, len(sheet.Rows)), + arr:=&server.DB_TaskArray{ + Arr:make([]*server.DB_Task, 0, len(sheet.Rows)), } for i, row := range sheet.Rows { if i <= 1 { continue } - + if len(row.Cells) == 0 { break } - + temp := int64(0) var arrInt []int32 var arrInt64 []int64 @@ -8243,91 +11911,150 @@ func AgcConvertDB_Task(fi, fo string) { var _ = arrInt var _ = arrStr var _ = arrInt64 - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data := &server.DB_Task{} for { - - if len(row.Cells) < 0+1 { + + if len(row.Cells)<0+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data.Id = int32(temp) - - if len(row.Cells) < 1+1 { + + + + + + + + + if len(row.Cells)<1+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[1].String(), 10, 32) data.Order = int32(temp) - - if len(row.Cells) < 4+1 { + + + + + + + + + if len(row.Cells)<4+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[4].String(), 10, 32) data.ActivityType = int32(temp) - - if len(row.Cells) < 5+1 { + + + + + + + + + if len(row.Cells)<5+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[5].String(), 10, 32) data.TaskType = int32(temp) - - if len(row.Cells) < 6+1 { + + + + + + + + + if len(row.Cells)<6+1{ break } - + + temp, _ = strconv.ParseInt(row.Cells[6].String(), 10, 64) data.TargetTimes = int64(temp) - - if len(row.Cells) < 7+1 { + + + + + + + + if len(row.Cells)<7+1{ break } - + + temp, _ = strconv.ParseInt(row.Cells[7].String(), 10, 64) data.FinishTimes = int64(temp) - - if len(row.Cells) < 8+1 { + + + + + + + + if len(row.Cells)<8+1{ break } - - if row.Cells[8].String() != "" { - pairs := strings.Split(row.Cells[8].String(), ";") - resultMap := make(map[int64]int64) - for _, pair := range pairs { - kv := strings.Split(pair, ",") - key, err := strconv.ParseInt(kv[0], 10, 64) - if err != nil { - // 错误处理 - fmt.Println("无法转换为int64:", kv[0]) - continue + + + + + + + + if row.Cells[8].String() != ""{ + pairs := strings.Split(row.Cells[8].String(), ";") + resultMap := make(map[int64]int64) + for _, pair := range pairs { + kv := strings.Split(pair, ",") + key, err := strconv.ParseInt(kv[0], 10, 64) + if err != nil { + // 错误处理 + fmt.Println("无法转换为int64:", kv[0]) + continue + } + value, err := strconv.ParseInt(kv[1], 10, 64) + if err != nil { + // 错误处理 + fmt.Println("无法转换为int64:", kv[1]) + continue + } + resultMap[key] = value } - value, err := strconv.ParseInt(kv[1], 10, 64) - if err != nil { - // 错误处理 - fmt.Println("无法转换为int64:", kv[1]) - continue - } - resultMap[key] = value + data.Award = resultMap } - data.Award = resultMap - } - - if len(row.Cells) < 9+1 { + + + if len(row.Cells)<9+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[9].String(), 10, 32) data.GameType = int32(temp) - - if len(row.Cells) < 10+1 { + + + + + + + + + if len(row.Cells)<10+1{ break } - + + + + arrStr = strings.Split(row.Cells[10].String(), "|") arrInt = nil if len(arrStr) > 0 && row.Cells[10].String() != "" { @@ -8338,6 +12065,11 @@ func AgcConvertDB_Task(fi, fo string) { } } data.Position = arrInt + + + + + break } @@ -8345,26 +12077,26 @@ func AgcConvertDB_Task(fi, fo string) { } byteData, err := proto.Marshal(arr) - if err == nil { + if err == nil{ err := os.WriteFile(fo, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } + fmt.Println(err) + } } - + byteData, err = json.MarshalIndent(arr, "", "\t") if err == nil { foJson := strings.Replace(fo, ".dat", ".json", -1) err := os.WriteFile(foJson, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } - } + fmt.Println(err) + } + } break //only fetch first sheet } } - -func AgcConvertDB_ThirdPlatformGameMapping(fi, fo string) { + +func AgcConvertDB_ThirdPlatformGameMapping(fi,fo string) { xlsxFile, err := xlsx.OpenFile(fi) if err != nil { fmt.Println("excel file open error:", err, "filename:", fi) @@ -8378,19 +12110,19 @@ func AgcConvertDB_ThirdPlatformGameMapping(fi, fo string) { fmt.Println("stack--->", string(buf[:lens])) } for _, sheet := range xlsxFile.Sheets { - arr := &server.DB_ThirdPlatformGameMappingArray{ - Arr: make([]*server.DB_ThirdPlatformGameMapping, 0, len(sheet.Rows)), + arr:=&server.DB_ThirdPlatformGameMappingArray{ + Arr:make([]*server.DB_ThirdPlatformGameMapping, 0, len(sheet.Rows)), } for i, row := range sheet.Rows { if i <= 1 { continue } - + if len(row.Cells) == 0 { break } - + temp := int64(0) var arrInt []int32 var arrInt64 []int64 @@ -8398,57 +12130,107 @@ func AgcConvertDB_ThirdPlatformGameMapping(fi, fo string) { var _ = arrInt var _ = arrStr var _ = arrInt64 - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data := &server.DB_ThirdPlatformGameMapping{} for { - - if len(row.Cells) < 0+1 { + + if len(row.Cells)<0+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data.Id = int32(temp) - - if len(row.Cells) < 1+1 { + + + + + + + + + if len(row.Cells)<1+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[1].String(), 10, 32) data.SystemGameID = int32(temp) - - if len(row.Cells) < 2+1 { + + + + + + + + + if len(row.Cells)<2+1{ break } - + + + data.ThirdPlatformName = row.Cells[2].String() - - if len(row.Cells) < 3+1 { + + + + + + + if len(row.Cells)<3+1{ break } - + + + data.ThirdGameID = row.Cells[3].String() - - if len(row.Cells) < 4+1 { + + + + + + + if len(row.Cells)<4+1{ break } - + + + data.Desc = row.Cells[4].String() - - if len(row.Cells) < 5+1 { + + + + + + + if len(row.Cells)<5+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[5].String(), 10, 32) data.ScreenOrientationType = int32(temp) - - if len(row.Cells) < 6+1 { + + + + + + + + + if len(row.Cells)<6+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[6].String(), 10, 32) data.ThirdID = int32(temp) + + + + + + + + break } @@ -8456,26 +12238,26 @@ func AgcConvertDB_ThirdPlatformGameMapping(fi, fo string) { } byteData, err := proto.Marshal(arr) - if err == nil { + if err == nil{ err := os.WriteFile(fo, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } + fmt.Println(err) + } } - + byteData, err = json.MarshalIndent(arr, "", "\t") if err == nil { foJson := strings.Replace(fo, ".dat", ".json", -1) err := os.WriteFile(foJson, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } - } + fmt.Println(err) + } + } break //only fetch first sheet } } - -func AgcConvertDB_Tips(fi, fo string) { + +func AgcConvertDB_Tips(fi,fo string) { xlsxFile, err := xlsx.OpenFile(fi) if err != nil { fmt.Println("excel file open error:", err, "filename:", fi) @@ -8489,19 +12271,19 @@ func AgcConvertDB_Tips(fi, fo string) { fmt.Println("stack--->", string(buf[:lens])) } for _, sheet := range xlsxFile.Sheets { - arr := &server.DB_TipsArray{ - Arr: make([]*server.DB_Tips, 0, len(sheet.Rows)), + arr:=&server.DB_TipsArray{ + Arr:make([]*server.DB_Tips, 0, len(sheet.Rows)), } for i, row := range sheet.Rows { if i <= 1 { continue } - + if len(row.Cells) == 0 { break } - + temp := int64(0) var arrInt []int32 var arrInt64 []int64 @@ -8509,23 +12291,33 @@ func AgcConvertDB_Tips(fi, fo string) { var _ = arrInt var _ = arrStr var _ = arrInt64 - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data := &server.DB_Tips{} for { - - if len(row.Cells) < 0+1 { + + if len(row.Cells)<0+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data.Id = int32(temp) - - if len(row.Cells) < 1+1 { + + + + + + + + + if len(row.Cells)<1+1{ break } - + + + + arrStr = strings.Split(row.Cells[1].String(), "|") arrInt = nil if len(arrStr) > 0 && row.Cells[1].String() != "" { @@ -8536,12 +12328,24 @@ func AgcConvertDB_Tips(fi, fo string) { } } data.GameId = arrInt - - if len(row.Cells) < 2+1 { + + + + + + if len(row.Cells)<2+1{ break } - + + + data.Des = row.Cells[2].String() + + + + + + break } @@ -8549,26 +12353,26 @@ func AgcConvertDB_Tips(fi, fo string) { } byteData, err := proto.Marshal(arr) - if err == nil { + if err == nil{ err := os.WriteFile(fo, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } + fmt.Println(err) + } } - + byteData, err = json.MarshalIndent(arr, "", "\t") if err == nil { foJson := strings.Replace(fo, ".dat", ".json", -1) err := os.WriteFile(foJson, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } - } + fmt.Println(err) + } + } break //only fetch first sheet } } - -func AgcConvertDB_VIP(fi, fo string) { + +func AgcConvertDB_VIP(fi,fo string) { xlsxFile, err := xlsx.OpenFile(fi) if err != nil { fmt.Println("excel file open error:", err, "filename:", fi) @@ -8582,19 +12386,19 @@ func AgcConvertDB_VIP(fi, fo string) { fmt.Println("stack--->", string(buf[:lens])) } for _, sheet := range xlsxFile.Sheets { - arr := &server.DB_VIPArray{ - Arr: make([]*server.DB_VIP, 0, len(sheet.Rows)), + arr:=&server.DB_VIPArray{ + Arr:make([]*server.DB_VIP, 0, len(sheet.Rows)), } for i, row := range sheet.Rows { if i <= 1 { continue } - + if len(row.Cells) == 0 { break } - + temp := int64(0) var arrInt []int32 var arrInt64 []int64 @@ -8602,43 +12406,74 @@ func AgcConvertDB_VIP(fi, fo string) { var _ = arrInt var _ = arrStr var _ = arrInt64 - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data := &server.DB_VIP{} for { - - if len(row.Cells) < 0+1 { + + if len(row.Cells)<0+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data.Id = int32(temp) - - if len(row.Cells) < 1+1 { + + + + + + + + + if len(row.Cells)<1+1{ break } - + + + data.Name = row.Cells[1].String() - - if len(row.Cells) < 2+1 { + + + + + + + if len(row.Cells)<2+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[2].String(), 10, 32) data.Count = int32(temp) - - if len(row.Cells) < 3+1 { + + + + + + + + + if len(row.Cells)<3+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[3].String(), 10, 32) data.VipExp = int32(temp) - - if len(row.Cells) < 4+1 { + + + + + + + + + if len(row.Cells)<4+1{ break } - + + + + arrStr = strings.Split(row.Cells[4].String(), "|") arrInt = nil if len(arrStr) > 0 && row.Cells[4].String() != "" { @@ -8649,11 +12484,18 @@ func AgcConvertDB_VIP(fi, fo string) { } } data.Privilege1 = arrInt - - if len(row.Cells) < 5+1 { + + + + + + if len(row.Cells)<5+1{ break } - + + + + arrStr = strings.Split(row.Cells[5].String(), "|") arrInt = nil if len(arrStr) > 0 && row.Cells[5].String() != "" { @@ -8664,18 +12506,32 @@ func AgcConvertDB_VIP(fi, fo string) { } } data.Privilege2 = arrInt - - if len(row.Cells) < 6+1 { + + + + + + if len(row.Cells)<6+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[6].String(), 10, 32) data.ShopId2 = int32(temp) - - if len(row.Cells) < 7+1 { + + + + + + + + + if len(row.Cells)<7+1{ break } - + + + + arrStr = strings.Split(row.Cells[7].String(), "|") arrInt = nil if len(arrStr) > 0 && row.Cells[7].String() != "" { @@ -8686,79 +12542,135 @@ func AgcConvertDB_VIP(fi, fo string) { } } data.Privilege3 = arrInt - - if len(row.Cells) < 8+1 { + + + + + + if len(row.Cells)<8+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[8].String(), 10, 32) data.Privilege4 = int32(temp) - - if len(row.Cells) < 9+1 { + + + + + + + + + if len(row.Cells)<9+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[9].String(), 10, 32) data.Privilege5 = int32(temp) - - if len(row.Cells) < 10+1 { + + + + + + + + + if len(row.Cells)<10+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[10].String(), 10, 32) data.Privilege6 = int32(temp) - - if len(row.Cells) < 11+1 { + + + + + + + + + if len(row.Cells)<11+1{ break } - - if row.Cells[11].String() != "" { - pairs := strings.Split(row.Cells[11].String(), ";") - resultMap := make(map[int64]int64) - for _, pair := range pairs { - kv := strings.Split(pair, ",") - key, err := strconv.ParseInt(kv[0], 10, 64) - if err != nil { - // 错误处理 - fmt.Println("无法转换为int64:", kv[0]) - continue + + + + + + + + if row.Cells[11].String() != ""{ + pairs := strings.Split(row.Cells[11].String(), ";") + resultMap := make(map[int64]int64) + for _, pair := range pairs { + kv := strings.Split(pair, ",") + key, err := strconv.ParseInt(kv[0], 10, 64) + if err != nil { + // 错误处理 + fmt.Println("无法转换为int64:", kv[0]) + continue + } + value, err := strconv.ParseInt(kv[1], 10, 64) + if err != nil { + // 错误处理 + fmt.Println("无法转换为int64:", kv[1]) + continue + } + resultMap[key] = value } - value, err := strconv.ParseInt(kv[1], 10, 64) - if err != nil { - // 错误处理 - fmt.Println("无法转换为int64:", kv[1]) - continue - } - resultMap[key] = value + data.Privilege7 = resultMap } - data.Privilege7 = resultMap - } - - if len(row.Cells) < 12+1 { + + + if len(row.Cells)<12+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[12].String(), 10, 32) data.Privilege7Price = int32(temp) - - if len(row.Cells) < 13+1 { + + + + + + + + + if len(row.Cells)<13+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[13].String(), 10, 32) data.ShopId7 = int32(temp) - - if len(row.Cells) < 14+1 { + + + + + + + + + if len(row.Cells)<14+1{ break } - + temp, _ = strconv.ParseInt(row.Cells[14].String(), 10, 32) data.Privilege8 = int32(temp) - - if len(row.Cells) < 15+1 { + + + + + + + + + if len(row.Cells)<15+1{ break } - + + + + arrStr = strings.Split(row.Cells[15].String(), "|") arrInt = nil if len(arrStr) > 0 && row.Cells[15].String() != "" { @@ -8769,11 +12681,18 @@ func AgcConvertDB_VIP(fi, fo string) { } } data.Param = arrInt - - if len(row.Cells) < 16+1 { + + + + + + if len(row.Cells)<16+1{ break } - + + + + arrStr = strings.Split(row.Cells[16].String(), "|") arrInt = nil if len(arrStr) > 0 && row.Cells[16].String() != "" { @@ -8784,41 +12703,60 @@ func AgcConvertDB_VIP(fi, fo string) { } } data.RewardOutlineID = arrInt - - if len(row.Cells) < 17+1 { + + + + + + if len(row.Cells)<17+1{ break } - - if row.Cells[17].String() != "" { - pairs := strings.Split(row.Cells[17].String(), ";") - resultMap := make(map[int64]int64) - for _, pair := range pairs { - kv := strings.Split(pair, ",") - key, err := strconv.ParseInt(kv[0], 10, 64) - if err != nil { - // 错误处理 - fmt.Println("无法转换为int64:", kv[0]) - continue + + + + + + + + if row.Cells[17].String() != ""{ + pairs := strings.Split(row.Cells[17].String(), ";") + resultMap := make(map[int64]int64) + for _, pair := range pairs { + kv := strings.Split(pair, ",") + key, err := strconv.ParseInt(kv[0], 10, 64) + if err != nil { + // 错误处理 + fmt.Println("无法转换为int64:", kv[0]) + continue + } + value, err := strconv.ParseInt(kv[1], 10, 64) + if err != nil { + // 错误处理 + fmt.Println("无法转换为int64:", kv[1]) + continue + } + resultMap[key] = value } - value, err := strconv.ParseInt(kv[1], 10, 64) - if err != nil { - // 错误处理 - fmt.Println("无法转换为int64:", kv[1]) - continue - } - resultMap[key] = value + data.Award = resultMap } - data.Award = resultMap - } - - if len(row.Cells) < 18+1 { + + + if len(row.Cells)<18+1{ break } - + + + + + if row.Cells[18].String() != "" { arrStr = strings.Split(row.Cells[18].String(), "|") data.ParamName = arrStr } + + + + break } @@ -8826,157 +12764,158 @@ func AgcConvertDB_VIP(fi, fo string) { } byteData, err := proto.Marshal(arr) - if err == nil { + if err == nil{ err := os.WriteFile(fo, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } + fmt.Println(err) + } } - + byteData, err = json.MarshalIndent(arr, "", "\t") if err == nil { foJson := strings.Replace(fo, ".dat", ".json", -1) err := os.WriteFile(foJson, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } - } + fmt.Println(err) + } + } break //only fetch first sheet } } + -func main() { +func main(){ - AgcConvertDB_ActSign(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_ActSign.xlsx`, `..\..\data\DB_ActSign.dat`) + AgcConvertDB_ActSign(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_ActSign.xlsx`,`..\..\data\DB_ActSign.dat`) - AgcConvertDB_Activity1(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_Activity1.xlsx`, `..\..\data\DB_Activity1.dat`) + AgcConvertDB_Activity1(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_Activity1.xlsx`,`..\..\data\DB_Activity1.dat`) - AgcConvertDB_AnimalColor(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_AnimalColor.xlsx`, `..\..\data\DB_AnimalColor.dat`) + AgcConvertDB_AnimalColor(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_AnimalColor.xlsx`,`..\..\data\DB_AnimalColor.dat`) - AgcConvertDB_ArtilleryRate(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_ArtilleryRate.xlsx`, `..\..\data\DB_ArtilleryRate.dat`) + AgcConvertDB_ArtilleryRate(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_ArtilleryRate.xlsx`,`..\..\data\DB_ArtilleryRate.dat`) - AgcConvertDB_ArtillerySkin(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_ArtillerySkin.xlsx`, `..\..\data\DB_ArtillerySkin.dat`) + AgcConvertDB_ArtillerySkin(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_ArtillerySkin.xlsx`,`..\..\data\DB_ArtillerySkin.dat`) - AgcConvertDB_BlackWhite(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_BlackWhite.xlsx`, `..\..\data\DB_BlackWhite.dat`) + AgcConvertDB_BlackWhite(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_BlackWhite.xlsx`,`..\..\data\DB_BlackWhite.dat`) - AgcConvertDB_CardsJD(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_CardsJD.xlsx`, `..\..\data\DB_CardsJD.dat`) + AgcConvertDB_CardsJD(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_CardsJD.xlsx`,`..\..\data\DB_CardsJD.dat`) - AgcConvertDB_CardsYuLe(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_CardsYuLe.xlsx`, `..\..\data\DB_CardsYuLe.dat`) + AgcConvertDB_CardsYuLe(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_CardsYuLe.xlsx`,`..\..\data\DB_CardsYuLe.dat`) - AgcConvertDB_ChessBilledRules(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_ChessBilledRules.xlsx`, `..\..\data\DB_ChessBilledRules.dat`) + AgcConvertDB_ChessBilledRules(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_ChessBilledRules.xlsx`,`..\..\data\DB_ChessBilledRules.dat`) - AgcConvertDB_ChessMatchRules(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_ChessMatchRules.xlsx`, `..\..\data\DB_ChessMatchRules.dat`) + AgcConvertDB_ChessMatchRules(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_ChessMatchRules.xlsx`,`..\..\data\DB_ChessMatchRules.dat`) - AgcConvertDB_ChessRank(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_ChessRank.xlsx`, `..\..\data\DB_ChessRank.dat`) + AgcConvertDB_ChessRank(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_ChessRank.xlsx`,`..\..\data\DB_ChessRank.dat`) - AgcConvertDB_ClientVer(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_ClientVer.xlsx`, `..\..\data\DB_ClientVer.dat`) + AgcConvertDB_ClientVer(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_ClientVer.xlsx`,`..\..\data\DB_ClientVer.dat`) - AgcConvertDB_CollectBox(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_CollectBox.xlsx`, `..\..\data\DB_CollectBox.dat`) + AgcConvertDB_CollectBox(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_CollectBox.xlsx`,`..\..\data\DB_CollectBox.dat`) - AgcConvertDB_CollectBoxGain(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_CollectBoxGain.xlsx`, `..\..\data\DB_CollectBoxGain.dat`) + AgcConvertDB_CollectBoxGain(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_CollectBoxGain.xlsx`,`..\..\data\DB_CollectBoxGain.dat`) - AgcConvertDB_CrashSearch(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_CrashSearch.xlsx`, `..\..\data\DB_CrashSearch.dat`) + AgcConvertDB_CrashSearch(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_CrashSearch.xlsx`,`..\..\data\DB_CrashSearch.dat`) - AgcConvertDB_Createroom(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_Createroom.xlsx`, `..\..\data\DB_Createroom.dat`) + AgcConvertDB_Createroom(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_Createroom.xlsx`,`..\..\data\DB_Createroom.dat`) - AgcConvertDB_Fish(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_Fish.xlsx`, `..\..\data\DB_Fish.dat`) + AgcConvertDB_Fish(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_Fish.xlsx`,`..\..\data\DB_Fish.dat`) - AgcConvertDB_FishOut(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_FishOut.xlsx`, `..\..\data\DB_FishOut.dat`) + AgcConvertDB_FishOut(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_FishOut.xlsx`,`..\..\data\DB_FishOut.dat`) - AgcConvertDB_FishPath(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_FishPath.xlsx`, `..\..\data\DB_FishPath.dat`) + AgcConvertDB_FishPath(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_FishPath.xlsx`,`..\..\data\DB_FishPath.dat`) - AgcConvertDB_FishRoom(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_FishRoom.xlsx`, `..\..\data\DB_FishRoom.dat`) + AgcConvertDB_FishRoom(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_FishRoom.xlsx`,`..\..\data\DB_FishRoom.dat`) - AgcConvertDB_FishSkill(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_FishSkill.xlsx`, `..\..\data\DB_FishSkill.dat`) + AgcConvertDB_FishSkill(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_FishSkill.xlsx`,`..\..\data\DB_FishSkill.dat`) - AgcConvertDB_FortuneGod_Odds(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_FortuneGod_Odds.xlsx`, `..\..\data\DB_FortuneGod_Odds.dat`) + AgcConvertDB_FortuneGod_Odds(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_FortuneGod_Odds.xlsx`,`..\..\data\DB_FortuneGod_Odds.dat`) - AgcConvertDB_FortuneGod_TurnRate(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_FortuneGod_TurnRate.xlsx`, `..\..\data\DB_FortuneGod_TurnRate.dat`) + AgcConvertDB_FortuneGod_TurnRate(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_FortuneGod_TurnRate.xlsx`,`..\..\data\DB_FortuneGod_TurnRate.dat`) - AgcConvertDB_FortuneGod_Weight(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_FortuneGod_Weight.xlsx`, `..\..\data\DB_FortuneGod_Weight.dat`) + AgcConvertDB_FortuneGod_Weight(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_FortuneGod_Weight.xlsx`,`..\..\data\DB_FortuneGod_Weight.dat`) - AgcConvertDB_FortuneGod_WeightCondition(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_FortuneGod_WeightCondition.xlsx`, `..\..\data\DB_FortuneGod_WeightCondition.dat`) + AgcConvertDB_FortuneGod_WeightCondition(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_FortuneGod_WeightCondition.xlsx`,`..\..\data\DB_FortuneGod_WeightCondition.dat`) - AgcConvertDB_GamMatchLV(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_GamMatchLV.xlsx`, `..\..\data\DB_GamMatchLV.dat`) + AgcConvertDB_GamMatchLV(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_GamMatchLV.xlsx`,`..\..\data\DB_GamMatchLV.dat`) - AgcConvertDB_GameCoinPool(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_GameCoinPool.xlsx`, `..\..\data\DB_GameCoinPool.dat`) + AgcConvertDB_GameCoinPool(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_GameCoinPool.xlsx`,`..\..\data\DB_GameCoinPool.dat`) - AgcConvertDB_GameFree(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_GameFree.xlsx`, `..\..\data\DB_GameFree.dat`) + AgcConvertDB_GameFree(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_GameFree.xlsx`,`..\..\data\DB_GameFree.dat`) - AgcConvertDB_GameItem(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_GameItem.xlsx`, `..\..\data\DB_GameItem.dat`) + AgcConvertDB_GameItem(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_GameItem.xlsx`,`..\..\data\DB_GameItem.dat`) - AgcConvertDB_GameMatchLevel(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_GameMatchLevel.xlsx`, `..\..\data\DB_GameMatchLevel.dat`) + AgcConvertDB_GameMatchLevel(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_GameMatchLevel.xlsx`,`..\..\data\DB_GameMatchLevel.dat`) - AgcConvertDB_GameRule(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_GameRule.xlsx`, `..\..\data\DB_GameRule.dat`) + AgcConvertDB_GameRule(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_GameRule.xlsx`,`..\..\data\DB_GameRule.dat`) - AgcConvertDB_GameSubsidy(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_GameSubsidy.xlsx`, `..\..\data\DB_GameSubsidy.dat`) + AgcConvertDB_GameSubsidy(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_GameSubsidy.xlsx`,`..\..\data\DB_GameSubsidy.dat`) - AgcConvertDB_Game_Drop(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_Game_Drop.xlsx`, `..\..\data\DB_Game_Drop.dat`) + AgcConvertDB_Game_Drop(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_Game_Drop.xlsx`,`..\..\data\DB_Game_Drop.dat`) - AgcConvertDB_Game_Introduction(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_Game_Introduction.xlsx`, `..\..\data\DB_Game_Introduction.dat`) + AgcConvertDB_Game_Introduction(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_Game_Introduction.xlsx`,`..\..\data\DB_Game_Introduction.dat`) - AgcConvertDB_Game_Pet(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_Game_Pet.xlsx`, `..\..\data\DB_Game_Pet.dat`) + AgcConvertDB_Game_Pet(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_Game_Pet.xlsx`,`..\..\data\DB_Game_Pet.dat`) - AgcConvertDB_Game_Role(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_Game_Role.xlsx`, `..\..\data\DB_Game_Role.dat`) + AgcConvertDB_Game_Role(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_Game_Role.xlsx`,`..\..\data\DB_Game_Role.dat`) - AgcConvertDB_GiftBox(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_GiftBox.xlsx`, `..\..\data\DB_GiftBox.dat`) + AgcConvertDB_GiftBox(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_GiftBox.xlsx`,`..\..\data\DB_GiftBox.dat`) - AgcConvertDB_GiftCard(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_GiftCard.xlsx`, `..\..\data\DB_GiftCard.dat`) + AgcConvertDB_GiftCard(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_GiftCard.xlsx`,`..\..\data\DB_GiftCard.dat`) - AgcConvertDB_IceAgeElementRate(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_IceAgeElementRate.xlsx`, `..\..\data\DB_IceAgeElementRate.dat`) + AgcConvertDB_IceAgeElementRate(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_IceAgeElementRate.xlsx`,`..\..\data\DB_IceAgeElementRate.dat`) - AgcConvertDB_Legend_Odds(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_Legend_Odds.xlsx`, `..\..\data\DB_Legend_Odds.dat`) + AgcConvertDB_Legend_Odds(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_Legend_Odds.xlsx`,`..\..\data\DB_Legend_Odds.dat`) - AgcConvertDB_Legend_TurnRate(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_Legend_TurnRate.xlsx`, `..\..\data\DB_Legend_TurnRate.dat`) + AgcConvertDB_Legend_TurnRate(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_Legend_TurnRate.xlsx`,`..\..\data\DB_Legend_TurnRate.dat`) - AgcConvertDB_Legend_Weight(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_Legend_Weight.xlsx`, `..\..\data\DB_Legend_Weight.dat`) + AgcConvertDB_Legend_Weight(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_Legend_Weight.xlsx`,`..\..\data\DB_Legend_Weight.dat`) - AgcConvertDB_Legend_WeightCondition(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_Legend_WeightCondition.xlsx`, `..\..\data\DB_Legend_WeightCondition.dat`) + AgcConvertDB_Legend_WeightCondition(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_Legend_WeightCondition.xlsx`,`..\..\data\DB_Legend_WeightCondition.dat`) - AgcConvertDB_MatchRank(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_MatchRank.xlsx`, `..\..\data\DB_MatchRank.dat`) + AgcConvertDB_MatchRank(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_MatchRank.xlsx`,`..\..\data\DB_MatchRank.dat`) - AgcConvertDB_Name(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_Name.xlsx`, `..\..\data\DB_Name.dat`) + AgcConvertDB_Name(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_Name.xlsx`,`..\..\data\DB_Name.dat`) - AgcConvertDB_NameBoy(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_NameBoy.xlsx`, `..\..\data\DB_NameBoy.dat`) + AgcConvertDB_NameBoy(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_NameBoy.xlsx`,`..\..\data\DB_NameBoy.dat`) - AgcConvertDB_NameGirl(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_NameGirl.xlsx`, `..\..\data\DB_NameGirl.dat`) + AgcConvertDB_NameGirl(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_NameGirl.xlsx`,`..\..\data\DB_NameGirl.dat`) - AgcConvertDB_NewPlayer(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_NewPlayer.xlsx`, `..\..\data\DB_NewPlayer.dat`) + AgcConvertDB_NewPlayer(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_NewPlayer.xlsx`,`..\..\data\DB_NewPlayer.dat`) - AgcConvertDB_PhoneLottery(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_PhoneLottery.xlsx`, `..\..\data\DB_PhoneLottery.dat`) + AgcConvertDB_PhoneLottery(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_PhoneLottery.xlsx`,`..\..\data\DB_PhoneLottery.dat`) - AgcConvertDB_PigBank_Diamond(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_PigBank_Diamond.xlsx`, `..\..\data\DB_PigBank_Diamond.dat`) + AgcConvertDB_PigBank_Diamond(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_PigBank_Diamond.xlsx`,`..\..\data\DB_PigBank_Diamond.dat`) - AgcConvertDB_Pigbank_Prop(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_Pigbank_Prop.xlsx`, `..\..\data\DB_Pigbank_Prop.dat`) + AgcConvertDB_Pigbank_Prop(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_Pigbank_Prop.xlsx`,`..\..\data\DB_Pigbank_Prop.dat`) - AgcConvertDB_PlayerExp(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_PlayerExp.xlsx`, `..\..\data\DB_PlayerExp.dat`) + AgcConvertDB_PlayerExp(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_PlayerExp.xlsx`,`..\..\data\DB_PlayerExp.dat`) - AgcConvertDB_PlayerInfo(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_PlayerInfo.xlsx`, `..\..\data\DB_PlayerInfo.dat`) + AgcConvertDB_PlayerInfo(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_PlayerInfo.xlsx`,`..\..\data\DB_PlayerInfo.dat`) - AgcConvertDB_PlayerType(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_PlayerType.xlsx`, `..\..\data\DB_PlayerType.dat`) + AgcConvertDB_PlayerType(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_PlayerType.xlsx`,`..\..\data\DB_PlayerType.dat`) - AgcConvertDB_PotOdd(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_PotOdd.xlsx`, `..\..\data\DB_PotOdd.dat`) + AgcConvertDB_PotOdd(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_PotOdd.xlsx`,`..\..\data\DB_PotOdd.dat`) - AgcConvertDB_PropExchange(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_PropExchange.xlsx`, `..\..\data\DB_PropExchange.dat`) + AgcConvertDB_PropExchange(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_PropExchange.xlsx`,`..\..\data\DB_PropExchange.dat`) - AgcConvertDB_RankCycle(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_RankCycle.xlsx`, `..\..\data\DB_RankCycle.dat`) + AgcConvertDB_RankCycle(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_RankCycle.xlsx`,`..\..\data\DB_RankCycle.dat`) - AgcConvertDB_RankLevel(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_RankLevel.xlsx`, `..\..\data\DB_RankLevel.dat`) + AgcConvertDB_RankLevel(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_RankLevel.xlsx`,`..\..\data\DB_RankLevel.dat`) - AgcConvertDB_RankReward(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_RankReward.xlsx`, `..\..\data\DB_RankReward.dat`) + AgcConvertDB_RankReward(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_RankReward.xlsx`,`..\..\data\DB_RankReward.dat`) - AgcConvertDB_Sensitive_Words(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_Sensitive_Words.xlsx`, `..\..\data\DB_Sensitive_Words.dat`) + AgcConvertDB_Sensitive_Words(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_Sensitive_Words.xlsx`,`..\..\data\DB_Sensitive_Words.dat`) - AgcConvertDB_SlotRateWeight(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_SlotRateWeight.xlsx`, `..\..\data\DB_SlotRateWeight.dat`) + AgcConvertDB_SlotRateWeight(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_SlotRateWeight.xlsx`,`..\..\data\DB_SlotRateWeight.dat`) - AgcConvertDB_SystemChance(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_SystemChance.xlsx`, `..\..\data\DB_SystemChance.dat`) + AgcConvertDB_SystemChance(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_SystemChance.xlsx`,`..\..\data\DB_SystemChance.dat`) - AgcConvertDB_Task(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_Task.xlsx`, `..\..\data\DB_Task.dat`) + AgcConvertDB_Task(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_Task.xlsx`,`..\..\data\DB_Task.dat`) - AgcConvertDB_ThirdPlatformGameMapping(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_ThirdPlatformGameMapping.xlsx`, `..\..\data\DB_ThirdPlatformGameMapping.dat`) + AgcConvertDB_ThirdPlatformGameMapping(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_ThirdPlatformGameMapping.xlsx`,`..\..\data\DB_ThirdPlatformGameMapping.dat`) - AgcConvertDB_Tips(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_Tips.xlsx`, `..\..\data\DB_Tips.dat`) + AgcConvertDB_Tips(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_Tips.xlsx`,`..\..\data\DB_Tips.dat`) - AgcConvertDB_VIP(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_VIP.xlsx`, `..\..\data\DB_VIP.dat`) + AgcConvertDB_VIP(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_VIP.xlsx`,`..\..\data\DB_VIP.dat`) } diff --git a/worldsrv/action_welfare.go b/worldsrv/action_welfare.go index 554ac89..6565640 100644 --- a/worldsrv/action_welfare.go +++ b/worldsrv/action_welfare.go @@ -423,12 +423,20 @@ type CSPigBankGetInfoHandler struct { } func (this *CSPigBankGetInfoPacketFactory) CreatePacket() interface{} { - - return nil + pack := &welfare.CSPigbankGetInfo{} + return pack } func (this *CSPigBankGetInfoHandler) Process(s *netlib.Session, packetid int, data interface{}, sid int64) error { - + logger.Logger.Trace("CSPigbankGetInfo Process recv ", data) + if _, ok := data.(*welfare.CSPigbankGetInfo); ok { + p := PlayerMgrSington.GetPlayer(sid) + if p == nil { + logger.Logger.Warnf("CSPigBankGetInfoHandler p == nil p.SnId = %v", p.SnId) + return nil + } + WelfareMgrSington.PigbankGetInfo(p) + } return nil } @@ -440,12 +448,20 @@ type CSPigBankTakeCoinHandler struct { } func (this *CSPigBankTakeCoinPacketFactory) CreatePacket() interface{} { - - return nil + pack := &welfare.CSPigbankTakeCoin{} + return pack } func (this *CSPigBankTakeCoinHandler) Process(s *netlib.Session, packetid int, data interface{}, sid int64) error { - + logger.Logger.Trace("CSPigbankTakeCoin Process recv ", data) + if _, ok := data.(*welfare.CSPigbankGetInfo); ok { + p := PlayerMgrSington.GetPlayer(sid) + if p == nil { + logger.Logger.Warnf("CSPigBankTakeCoinHandler p == nil p.SnId = %v", p.SnId) + return nil + } + WelfareMgrSington.PigbankGetInfo(p) + } return nil } diff --git a/worldsrv/player.go b/worldsrv/player.go index 2cc09b5..7048093 100644 --- a/worldsrv/player.go +++ b/worldsrv/player.go @@ -1713,6 +1713,9 @@ func (this *Player) UnmarshalData(data []byte, scene *Scene) { this.PlayerData.PowerList = pd.PowerList this.PlayerData.PlayerTax = pd.PlayerTax this.PlayerData.TotalFlow = pd.TotalFlow + if this.WelfData != nil && this.WelfData.PigBank != nil && pd.WelfData != nil && pd.WelfData.PigBank != nil { + this.WelfData.PigBank.BankCoin = pd.WelfData.PigBank.BankCoin + } this.dirty = true } diff --git a/worldsrv/welfmgr.go b/worldsrv/welfmgr.go index af6f5ef..da77019 100644 --- a/worldsrv/welfmgr.go +++ b/worldsrv/welfmgr.go @@ -289,7 +289,10 @@ func (this *WelfareMgr) MonitorWelfData(player *Player) { player.WelfData.Sign7 = &model.NewSignData{} } else if player.WelfData.VIPBag == nil { player.WelfData.VIPBag = make(map[int32]map[int32]int32) + } else if player.WelfData.PigBank == nil { + player.WelfData.PigBank = &model.PigBankData{} } + } // GetTurnplate 获取转盘奖励 @@ -1478,6 +1481,111 @@ func (this *WelfareMgr) BuyContinuousPay(p *Player, ConfigPayId int32) { //}), "API_CreateOrder_BuyContinuousPay").Start() } +// PigbankGetInfo 存钱罐信息 +func (this *WelfareMgr) PigbankGetInfo(p *Player) { + pack := &welfare.SCPigbankGetInfo{ + OpRetCode: welfare.OpResultCode_OPRC_Error, + } + + fGetPropValue := func(propName string) int32 { + pool := srvdata.PBDB_Pigbank_PropMgr.Datas.GetArr() + for _, PropItem := range pool { + if PropItem.PorpName == propName { + return PropItem.PropValue + } + } + return 0 + } + + fGetCostDiamond := func(taketimes int32) int64 { + pool := srvdata.PBDB_PigBank_DiamondMgr.Datas.GetArr() + for _, data := range pool { + if taketimes >= data.BuyCountMin && taketimes <= data.BuyCountMax { + return int64(data.CostDiamond) + } + } + return 0 + } + + if p.WelfData != nil && p.WelfData.PigBank != nil { + pack.OpRetCode = welfare.OpResultCode_OPRC_Sucess + pack.BankCoin = p.WelfData.PigBank.BankCoin + pack.TakeTimes = p.WelfData.PigBank.TakeTimes + pack.CostDiamond = fGetCostDiamond(p.WelfData.PigBank.TakeTimes + 1) + pack.BankMaxCoin = int64(fGetPropValue("BankMaxCoin")) + } + + logger.Logger.Tracef("PigbankGetInfo snid: %v pack: %v", p.SnId, pack) + p.SendToClient(int(welfare.SPacketID_PACKET_SCPigbankGetInfo), pack) +} + +// PigbankTakeCoin 存钱罐领取金币 +func (this *WelfareMgr) PigbankTakeCoin(p *Player) { + pack := &welfare.SCPigbankTakeCoin{ + OpRetCode: welfare.OpResultCode_OPRC_Error, + } + + fGetPropValue := func(propName string) int32 { + pool := srvdata.PBDB_Pigbank_PropMgr.Datas.GetArr() + for _, PropItem := range pool { + if PropItem.PorpName == propName { + return PropItem.PropValue + } + } + return 0 + } + + fGetCostDiamond := func(taketimes int32) int64 { + pool := srvdata.PBDB_PigBank_DiamondMgr.Datas.GetArr() + for _, data := range pool { + if taketimes >= data.BuyCountMin && taketimes <= data.BuyCountMax { + return int64(data.CostDiamond) + } + } + return 0 + } + + if p.WelfData != nil && p.WelfData.PigBank != nil { + + pack.CostDiamond = fGetCostDiamond(p.WelfData.PigBank.TakeTimes + 1) + pack.BankMaxCoin = int64(fGetPropValue("BankMaxCoin")) + + if p.WelfData.PigBank.BankCoin < int64(fGetPropValue("BankMaxCoin")) { + pack.OpRetCode = welfare.OpResultCode_OPRC_PigbankNotFull + logger.Logger.Trace("存钱罐没有满") + p.SendToClient(int(welfare.SPacketID_PACKET_SCPigbankTakeCoin), pack) + return + } + + // 先扣钻石 + costDiamond := fGetCostDiamond(p.WelfData.PigBank.TakeTimes + 1) + if costDiamond >= p.Diamond { + logger.Logger.Trace("开存钱罐消耗钻石", costDiamond) + p.AddDiamond(-costDiamond, 0, common.GainWay_PigrankTakeCoin, "system", "-开存钱罐消耗钻石") + } else { + pack.OpRetCode = welfare.OpResultCode_OPRC_DiamondLess + logger.Logger.Trace("钻石不足") + p.SendToClient(int(welfare.SPacketID_PACKET_SCPigbankTakeCoin), pack) + return + } + + if p.WelfData.PigBank.BankCoin == int64(fGetPropValue("BankMaxCoin")) { + pack.OpRetCode = welfare.OpResultCode_OPRC_Sucess + pack.TakeCoinNum = p.WelfData.PigBank.BankCoin + pack.TakeTimes = p.WelfData.PigBank.TakeTimes + + // 领取完之后 设置为0 + p.WelfData.PigBank.BankCoin = 0 + p.WelfData.PigBank.TakeTimes++ + + pack.CostDiamond = fGetCostDiamond(p.WelfData.PigBank.TakeTimes + 1) + + logger.Logger.Tracef("PigbankTakeCoin snid: %v pack: %v", p.SnId, pack) + p.SendToClient(int(welfare.SPacketID_PACKET_SCPigbankTakeCoin), pack) + } + } +} + func (this *WelfareMgr) Update() { } diff --git a/xlsx/DB_PigBank_Diamond.xlsx b/xlsx/DB_PigBank_Diamond.xlsx index 70eb7e1..51aeee2 100644 Binary files a/xlsx/DB_PigBank_Diamond.xlsx and b/xlsx/DB_PigBank_Diamond.xlsx differ diff --git a/xlsx/DB_Pigbank_Prop.xlsx b/xlsx/DB_Pigbank_Prop.xlsx index b798909..644612c 100644 Binary files a/xlsx/DB_Pigbank_Prop.xlsx and b/xlsx/DB_Pigbank_Prop.xlsx differ