From f7ae511332c136874de40709a1a74ca4509c889b Mon Sep 17 00:00:00 2001 From: lihailiang <1z@X3c$V> Date: Mon, 29 Apr 2024 11:33:53 +0800 Subject: [PATCH 1/4] =?UTF-8?q?=E5=AD=98=E9=92=B1=E7=BD=90=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E6=B7=BB=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- data/DB_Pigbank_Prop.dat | Bin 2114 -> 61 bytes data/DB_Pigbank_Prop.json | 574 +- protocol/server/pbdata.pb.go | 856 ++- protocol/server/pbdata.proto | 36 +- protocol/welfare/welfare.pb.go | 91 +- protocol/welfare/welfare.proto | 5 + tools/xlsx2binary/agc.go | 9897 +++++++++----------------------- worldsrv/action_welfare.go | 41 + xlsx/DB_Pigbank_Prop.xlsx | Bin 20105 -> 13909 bytes 9 files changed, 3278 insertions(+), 8222 deletions(-) diff --git a/data/DB_Pigbank_Prop.dat b/data/DB_Pigbank_Prop.dat index 49848a8c5cfa4f37d88dc0fa66391dd11def2967..608885b511ccf2fb1163fc2f58cd70e82b1d1afc 100644 GIT binary patch literal 61 zcmd-Q=3o@!c1q04_D!sC&dh$lQV4(7UJ>AFHQvs Hg2lK1X#+9Q zLY1v(#G)6g7AozbmJmF6Gk8%%M5PmhLg}F(c=Fkon*9K~hyQcfh5Y!>Gug~l%iP_n zwC}&Xd}&h9dPTV}%Fwja;C$cjGy zIrBnQU%9Biy|STJUHDN|e$<(L(_VX`c5bO{M^*1+t{KRp@M@TK(!7)Q*{Og<*w$ne z#&N>a2KM0sYvp+>FSPw7a~b`YO-Uk^W0r|8kFbRSzAzxPhMRpC${5=@Nh30ew=?zS zQC6GawF#kpduILZ%15M@lw2}2Umj!i2Z%$2=DcRl!wUwjk4rsb(>Pm~4BfYjtTj(K zL}>Nq$*+etvHN8@IXms!XBhmQI0Ux+{#1O@0(_V`izN<$jn9pLI>f16kl6^Hiu0!5FtPz&V2$N<%)J2zzgQ}3VRveum${_) zn?^3+N0_trgK}>Oy;0dj+o4aXeNpx%=l2HwD04o)HMuv0?%X{ server.DB_ActSign @@ -11831,34 +11659,32 @@ var file_pbdata_proto_depIdxs = []int32{ 94, // 51: server.DB_NewPlayerArray.Arr:type_name -> server.DB_NewPlayer 96, // 52: server.DB_PhoneLotteryArray.Arr:type_name -> server.DB_PhoneLottery 98, // 53: server.DB_PigBank_DiamondArray.Arr:type_name -> server.DB_PigBank_Diamond - 136, // 54: server.DB_Pigbank_Prop.Privilege7:type_name -> server.DB_Pigbank_Prop.Privilege7Entry - 137, // 55: server.DB_Pigbank_Prop.Award:type_name -> server.DB_Pigbank_Prop.AwardEntry - 100, // 56: server.DB_Pigbank_PropArray.Arr:type_name -> server.DB_Pigbank_Prop - 102, // 57: server.DB_PlayerExpArray.Arr:type_name -> server.DB_PlayerExp - 104, // 58: server.DB_PlayerInfoArray.Arr:type_name -> server.DB_PlayerInfo - 106, // 59: server.DB_PlayerTypeArray.Arr:type_name -> server.DB_PlayerType - 108, // 60: server.DB_PotOddArray.Arr:type_name -> server.DB_PotOdd - 138, // 61: server.DB_PropExchange.Cost:type_name -> server.DB_PropExchange.CostEntry - 139, // 62: server.DB_PropExchange.Gain:type_name -> server.DB_PropExchange.GainEntry - 110, // 63: server.DB_PropExchangeArray.Arr:type_name -> server.DB_PropExchange - 112, // 64: server.DB_RankCycleArray.Arr:type_name -> server.DB_RankCycle - 114, // 65: server.DB_RankLevelArray.Arr:type_name -> server.DB_RankLevel - 116, // 66: server.DB_RankRewardArray.Arr:type_name -> server.DB_RankReward - 118, // 67: server.DB_Sensitive_WordsArray.Arr:type_name -> server.DB_Sensitive_Words - 120, // 68: server.DB_SlotRateWeightArray.Arr:type_name -> server.DB_SlotRateWeight - 122, // 69: server.DB_SystemChanceArray.Arr:type_name -> server.DB_SystemChance - 140, // 70: server.DB_Task.Award:type_name -> server.DB_Task.AwardEntry - 124, // 71: server.DB_TaskArray.Arr:type_name -> server.DB_Task - 126, // 72: server.DB_ThirdPlatformGameMappingArray.Arr:type_name -> server.DB_ThirdPlatformGameMapping - 128, // 73: server.DB_TipsArray.Arr:type_name -> server.DB_Tips - 141, // 74: server.DB_VIP.Privilege7:type_name -> server.DB_VIP.Privilege7Entry - 142, // 75: server.DB_VIP.Award:type_name -> server.DB_VIP.AwardEntry - 130, // 76: server.DB_VIPArray.Arr:type_name -> server.DB_VIP - 77, // [77:77] is the sub-list for method output_type - 77, // [77:77] is the sub-list for method input_type - 77, // [77:77] is the sub-list for extension type_name - 77, // [77:77] is the sub-list for extension extendee - 0, // [0:77] is the sub-list for field type_name + 100, // 54: server.DB_Pigbank_PropArray.Arr:type_name -> server.DB_Pigbank_Prop + 102, // 55: server.DB_PlayerExpArray.Arr:type_name -> server.DB_PlayerExp + 104, // 56: server.DB_PlayerInfoArray.Arr:type_name -> server.DB_PlayerInfo + 106, // 57: server.DB_PlayerTypeArray.Arr:type_name -> server.DB_PlayerType + 108, // 58: server.DB_PotOddArray.Arr:type_name -> server.DB_PotOdd + 136, // 59: server.DB_PropExchange.Cost:type_name -> server.DB_PropExchange.CostEntry + 137, // 60: server.DB_PropExchange.Gain:type_name -> server.DB_PropExchange.GainEntry + 110, // 61: server.DB_PropExchangeArray.Arr:type_name -> server.DB_PropExchange + 112, // 62: server.DB_RankCycleArray.Arr:type_name -> server.DB_RankCycle + 114, // 63: server.DB_RankLevelArray.Arr:type_name -> server.DB_RankLevel + 116, // 64: server.DB_RankRewardArray.Arr:type_name -> server.DB_RankReward + 118, // 65: server.DB_Sensitive_WordsArray.Arr:type_name -> server.DB_Sensitive_Words + 120, // 66: server.DB_SlotRateWeightArray.Arr:type_name -> server.DB_SlotRateWeight + 122, // 67: server.DB_SystemChanceArray.Arr:type_name -> server.DB_SystemChance + 138, // 68: server.DB_Task.Award:type_name -> server.DB_Task.AwardEntry + 124, // 69: server.DB_TaskArray.Arr:type_name -> server.DB_Task + 126, // 70: server.DB_ThirdPlatformGameMappingArray.Arr:type_name -> server.DB_ThirdPlatformGameMapping + 128, // 71: server.DB_TipsArray.Arr:type_name -> server.DB_Tips + 139, // 72: server.DB_VIP.Privilege7:type_name -> server.DB_VIP.Privilege7Entry + 140, // 73: server.DB_VIP.Award:type_name -> server.DB_VIP.AwardEntry + 130, // 74: server.DB_VIPArray.Arr:type_name -> server.DB_VIP + 75, // [75:75] is the sub-list for method output_type + 75, // [75:75] is the sub-list for method input_type + 75, // [75:75] is the sub-list for extension type_name + 75, // [75:75] is the sub-list for extension extendee + 0, // [0:75] is the sub-list for field type_name } func init() { file_pbdata_proto_init() } @@ -13458,7 +13284,7 @@ func file_pbdata_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_pbdata_proto_rawDesc, NumEnums: 0, - NumMessages: 143, + NumMessages: 141, NumExtensions: 0, NumServices: 0, }, diff --git a/protocol/server/pbdata.proto b/protocol/server/pbdata.proto index 0150a56..71a7cf1 100644 --- a/protocol/server/pbdata.proto +++ b/protocol/server/pbdata.proto @@ -1287,41 +1287,9 @@ message DB_Pigbank_Prop { int32 Id = 1; - string Name = 2; + string PorpName = 2; - int32 Count = 3; - - int32 VipExp = 4; - - repeated int32 Privilege1 = 5; - - repeated int32 Privilege2 = 6; - - int32 ShopId2 = 7; - - repeated int32 Privilege3 = 8; - - int32 Privilege4 = 9; - - int32 Privilege5 = 10; - - int32 Privilege6 = 11; - - map Privilege7 = 12; - - int32 Privilege7Price = 13; - - int32 ShopId7 = 14; - - int32 Privilege8 = 15; - - repeated int32 Param = 16; - - repeated int32 RewardOutlineID = 17; - - map Award = 18; - - repeated string ParamName = 19; + int32 PropValue = 3; } diff --git a/protocol/welfare/welfare.pb.go b/protocol/welfare/welfare.pb.go index 36ac51a..09f34d2 100644 --- a/protocol/welfare/welfare.pb.go +++ b/protocol/welfare/welfare.pb.go @@ -20,7 +20,7 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) -//操作结果 +// 操作结果 type OpResultCode int32 const ( @@ -117,10 +117,14 @@ const ( SPacketID_PACKET_CSWelfRelief SPacketID = 2900 //救济金信息 SPacketID_PACKET_SCWelfRelief SPacketID = 2901 //救济金信息 // 邀请活动 - SPacketID_PACKET_CSInviteInfo SPacketID = 2902 //邀请信息 - SPacketID_PACKET_SCInviteInfo SPacketID = 2903 //邀请信息 - SPacketID_PACKET_CSBindInvite SPacketID = 2904 //绑定邀请人 - SPacketID_PACKET_SCBindInvite SPacketID = 2905 //绑定邀请人 + SPacketID_PACKET_CSInviteInfo SPacketID = 2902 //邀请信息 + SPacketID_PACKET_SCInviteInfo SPacketID = 2903 //邀请信息 + SPacketID_PACKET_CSBindInvite SPacketID = 2904 //绑定邀请人 + SPacketID_PACKET_SCBindInvite SPacketID = 2905 //绑定邀请人 + SPacketID_PACKET_CSPigbankGetInfo SPacketID = 2910 // 存钱罐信息获取 + SPacketID_PACKET_SCPigbankGetInfo SPacketID = 2911 // 存钱罐信息获取 + SPacketID_PACKET_CSPigbankTakeCoin SPacketID = 2912 // 存钱罐领取金币 + SPacketID_PACKET_SCPigbankTakeCoin SPacketID = 2913 // 存钱罐领取金币 ) // Enum value maps for SPacketID. @@ -153,6 +157,10 @@ var ( 2903: "PACKET_SCInviteInfo", 2904: "PACKET_CSBindInvite", 2905: "PACKET_SCBindInvite", + 2910: "PACKET_CSPigbankGetInfo", + 2911: "PACKET_SCPigbankGetInfo", + 2912: "PACKET_CSPigbankTakeCoin", + 2913: "PACKET_SCPigbankTakeCoin", } SPacketID_value = map[string]int32{ "PACKET_SHOP_ZERO": 0, @@ -182,6 +190,10 @@ var ( "PACKET_SCInviteInfo": 2903, "PACKET_CSBindInvite": 2904, "PACKET_SCBindInvite": 2905, + "PACKET_CSPigbankGetInfo": 2910, + "PACKET_SCPigbankGetInfo": 2911, + "PACKET_CSPigbankTakeCoin": 2912, + "PACKET_SCPigbankTakeCoin": 2913, } ) @@ -212,8 +224,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 @@ -261,7 +273,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 @@ -396,8 +408,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 @@ -445,7 +457,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 @@ -580,8 +592,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 @@ -629,7 +641,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 @@ -693,8 +705,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 @@ -851,7 +863,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 @@ -1058,8 +1070,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 @@ -1107,7 +1119,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 @@ -1187,8 +1199,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 @@ -1236,7 +1248,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 @@ -1379,7 +1391,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 @@ -1418,7 +1430,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 @@ -1498,7 +1510,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 @@ -1537,7 +1549,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 @@ -1585,7 +1597,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 @@ -1624,7 +1636,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 @@ -1712,7 +1724,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 @@ -1751,7 +1763,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 @@ -2327,7 +2339,7 @@ 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, 0xd3, 0x06, + 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, @@ -2381,10 +2393,17 @@ var file_welfare_proto_rawDesc = []byte{ 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, 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, + 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 ( diff --git a/protocol/welfare/welfare.proto b/protocol/welfare/welfare.proto index cd25574..fd0f274 100644 --- a/protocol/welfare/welfare.proto +++ b/protocol/welfare/welfare.proto @@ -45,6 +45,11 @@ enum SPacketID { PACKET_SCInviteInfo = 2903;//邀请信息 PACKET_CSBindInvite = 2904;//绑定邀请人 PACKET_SCBindInvite = 2905;//绑定邀请人 + + PACKET_CSPigbankGetInfo = 2910;// 存钱罐信息获取 + PACKET_SCPigbankGetInfo = 2911;// 存钱罐信息获取 + PACKET_CSPigbankTakeCoin = 2912;// 存钱罐领取金币 + PACKET_SCPigbankTakeCoin = 2913;// 存钱罐领取金币 } //救济金领取 diff --git a/tools/xlsx2binary/agc.go b/tools/xlsx2binary/agc.go index 254792a..7190348 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,15 +12,14 @@ 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) @@ -34,19 +33,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 @@ -54,82 +53,46 @@ 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 } @@ -137,26 +100,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) @@ -170,19 +133,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 @@ -190,165 +153,87 @@ 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 } @@ -356,26 +241,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) @@ -389,19 +274,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 @@ -409,46 +294,29 @@ 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() != "" { @@ -459,11 +327,6 @@ func AgcConvertDB_AnimalColor(fi,fo string) { } } data.ColorChance = arrInt - - - - - break } @@ -471,26 +334,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) @@ -504,19 +367,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 @@ -524,67 +387,38 @@ 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 } @@ -592,26 +426,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) @@ -625,19 +459,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 @@ -645,181 +479,94 @@ 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() != "" { @@ -830,108 +577,54 @@ 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 } @@ -939,26 +632,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) @@ -972,19 +665,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 @@ -992,33 +685,23 @@ 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() != "" { @@ -1029,18 +712,11 @@ 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() != "" { @@ -1051,11 +727,6 @@ func AgcConvertDB_BlackWhite(fi,fo string) { } } data.WhiteOdds = arrInt - - - - - break } @@ -1063,26 +734,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) @@ -1096,19 +767,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 @@ -1116,242 +787,122 @@ 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 } @@ -1359,26 +910,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) @@ -1392,19 +943,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 @@ -1412,242 +963,122 @@ 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 } @@ -1655,26 +1086,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) @@ -1688,19 +1119,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 @@ -1708,110 +1139,60 @@ 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 } @@ -1819,26 +1200,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) @@ -1852,19 +1233,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 @@ -1872,89 +1253,51 @@ 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() != "" { @@ -1965,18 +1308,11 @@ 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() != "" { @@ -1987,11 +1323,6 @@ func AgcConvertDB_ChessMatchRules(fi,fo string) { } } data.MatchScoreHightStep = arrInt - - - - - break } @@ -1999,26 +1330,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) @@ -2032,19 +1363,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 @@ -2052,53 +1383,31 @@ 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 } @@ -2106,26 +1415,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) @@ -2139,19 +1448,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 @@ -2159,65 +1468,36 @@ 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 } @@ -2225,26 +1505,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) @@ -2258,19 +1538,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 @@ -2278,73 +1558,51 @@ 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 - } - value, err := strconv.ParseInt(kv[1], 10, 64) - if err != nil { - // 错误处理 - fmt.Println("无法转换为int64:", kv[1]) - continue - } - resultMap[key] = value + + 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 } - data.ItemID = resultMap + value, err := strconv.ParseInt(kv[1], 10, 64) + if err != nil { + // 错误处理 + fmt.Println("无法转换为int64:", kv[1]) + continue + } + resultMap[key] = value } - - + data.ItemID = resultMap + } break } @@ -2352,26 +1610,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) @@ -2385,19 +1643,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 @@ -2405,40 +1663,25 @@ 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 } @@ -2446,26 +1689,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) @@ -2479,19 +1722,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 @@ -2499,54 +1742,32 @@ 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 } @@ -2554,26 +1775,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) @@ -2587,19 +1808,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 @@ -2607,61 +1828,37 @@ 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() != "" { @@ -2672,18 +1869,11 @@ 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() != "" { @@ -2694,11 +1884,6 @@ func AgcConvertDB_Createroom(fi,fo string) { } } data.BetRange = arrInt - - - - - break } @@ -2706,26 +1891,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) @@ -2739,19 +1924,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 @@ -2759,59 +1944,35 @@ 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() != "" { @@ -2822,143 +1983,73 @@ 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() != "" { @@ -2969,169 +2060,85 @@ 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() != "" { @@ -3142,132 +2149,64 @@ 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 } @@ -3275,26 +2214,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) @@ -3308,19 +2247,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 @@ -3328,74 +2267,43 @@ 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() != "" { @@ -3406,18 +2314,11 @@ 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() != "" { @@ -3428,18 +2329,11 @@ 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() != "" { @@ -3450,53 +2344,27 @@ 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 } @@ -3504,26 +2372,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) @@ -3537,19 +2405,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 @@ -3557,54 +2425,32 @@ 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 } @@ -3612,26 +2458,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) @@ -3645,19 +2491,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 @@ -3665,172 +2511,87 @@ 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 } @@ -3838,26 +2599,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) @@ -3871,19 +2632,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 @@ -3891,74 +2652,43 @@ 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() != "" { @@ -3969,18 +2699,11 @@ 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() != "" { @@ -3991,190 +2714,94 @@ 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 } @@ -4182,26 +2809,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) @@ -4215,19 +2842,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 @@ -4235,81 +2862,45 @@ 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 } @@ -4317,26 +2908,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) @@ -4350,19 +2941,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 @@ -4370,61 +2961,37 @@ 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() != "" { @@ -4435,11 +3002,6 @@ func AgcConvertDB_FortuneGod_TurnRate(fi,fo string) { } } data.Chance = arrInt - - - - - break } @@ -4447,26 +3009,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) @@ -4480,19 +3042,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 @@ -4500,46 +3062,29 @@ 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() != "" { @@ -4550,11 +3095,6 @@ func AgcConvertDB_FortuneGod_Weight(fi,fo string) { } } data.Weight = arrInt - - - - - break } @@ -4562,26 +3102,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) @@ -4595,19 +3135,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 @@ -4615,47 +3155,30 @@ 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() != "" { @@ -4666,18 +3189,11 @@ 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() != "" { @@ -4688,25 +3204,13 @@ 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 } @@ -4714,26 +3218,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) @@ -4747,19 +3251,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 @@ -4767,33 +3271,23 @@ 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() != "" { @@ -4804,164 +3298,82 @@ 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 } @@ -4969,26 +3381,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) @@ -5002,19 +3414,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 @@ -5022,180 +3434,95 @@ 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 } @@ -5203,26 +3530,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) @@ -5236,19 +3563,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 @@ -5256,365 +3583,187 @@ 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() != "" { @@ -5625,48 +3774,25 @@ 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() != "" { @@ -5677,18 +3803,11 @@ 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() != "" { @@ -5699,18 +3818,11 @@ 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() != "" { @@ -5721,16 +3833,11 @@ 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() != "" { @@ -5741,18 +3848,11 @@ 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() != "" { @@ -5763,20 +3863,11 @@ 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() != "" { @@ -5787,18 +3878,11 @@ 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() != "" { @@ -5809,112 +3893,58 @@ 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() != "" { @@ -5925,143 +3955,73 @@ 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() != "" { @@ -6072,46 +4032,25 @@ 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() != "" { @@ -6122,220 +4061,110 @@ 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 } @@ -6343,26 +4172,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) @@ -6376,19 +4205,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 @@ -6396,46 +4225,29 @@ 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() != "" { @@ -6446,18 +4258,11 @@ 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() != "" { @@ -6468,32 +4273,18 @@ 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() != "" { @@ -6504,18 +4295,11 @@ 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() != "" { @@ -6526,134 +4310,66 @@ 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 } @@ -6661,26 +4377,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) @@ -6694,19 +4410,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 @@ -6714,75 +4430,44 @@ 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() != "" { @@ -6793,18 +4478,11 @@ 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() != "" { @@ -6815,18 +4493,11 @@ 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() != "" { @@ -6837,18 +4508,11 @@ 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() != "" { @@ -6859,11 +4523,6 @@ func AgcConvertDB_GameMatchLevel(fi,fo string) { } } data.DownGradeOdds = arrInt - - - - - break } @@ -6871,26 +4530,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) @@ -6904,19 +4563,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 @@ -6924,74 +4583,43 @@ 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() != "" { @@ -7002,37 +4630,18 @@ 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 } @@ -7040,26 +4649,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) @@ -7073,19 +4682,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 @@ -7093,68 +4702,39 @@ 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 } @@ -7162,26 +4742,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) @@ -7195,19 +4775,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 @@ -7215,103 +4795,58 @@ 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() != "" { @@ -7322,11 +4857,6 @@ func AgcConvertDB_Game_Drop(fi,fo string) { } } data.Amount1 = arrInt - - - - - break } @@ -7334,26 +4864,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) @@ -7367,19 +4897,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 @@ -7387,93 +4917,50 @@ 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 } @@ -7481,26 +4968,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) @@ -7514,19 +5001,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 @@ -7534,151 +5021,80 @@ 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 } @@ -7686,26 +5102,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) @@ -7719,19 +5135,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 @@ -7739,151 +5155,80 @@ 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 } @@ -7891,26 +5236,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) @@ -7924,19 +5269,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 @@ -7944,73 +5289,51 @@ 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 - } - value, err := strconv.ParseInt(kv[1], 10, 64) - if err != nil { - // 错误处理 - fmt.Println("无法转换为int64:", kv[1]) - continue - } - resultMap[key] = value + + 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 } - data.ItemID = resultMap + value, err := strconv.ParseInt(kv[1], 10, 64) + if err != nil { + // 错误处理 + fmt.Println("无法转换为int64:", kv[1]) + continue + } + resultMap[key] = value } - - + data.ItemID = resultMap + } break } @@ -8018,26 +5341,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) @@ -8051,19 +5374,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 @@ -8071,140 +5394,95 @@ 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 - } - value, err := strconv.ParseInt(kv[1], 10, 64) - if err != nil { - // 错误处理 - fmt.Println("无法转换为int64:", kv[1]) - continue - } - resultMap[key] = value + + 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 } - data.Rewards = resultMap - } - - - 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 - } - 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 } - data.DayRewards = resultMap + resultMap[key] = value } - - - if len(row.Cells)<5+1{ + data.Rewards = resultMap + } + + 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 + } + value, err := strconv.ParseInt(kv[1], 10, 64) + if err != nil { + // 错误处理 + fmt.Println("无法转换为int64:", kv[1]) + continue + } + resultMap[key] = value + } + data.DayRewards = resultMap + } + + 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() != "" { @@ -8215,11 +5493,6 @@ func AgcConvertDB_GiftCard(fi,fo string) { } } data.Equity = arrInt - - - - - break } @@ -8227,26 +5500,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) @@ -8260,19 +5533,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 @@ -8280,60 +5553,36 @@ 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() != "" { @@ -8344,11 +5593,6 @@ func AgcConvertDB_IceAgeElementRate(fi,fo string) { } } data.Params = arrInt - - - - - break } @@ -8356,26 +5600,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) @@ -8389,19 +5633,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 @@ -8409,81 +5653,45 @@ 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 } @@ -8491,26 +5699,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) @@ -8524,19 +5732,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 @@ -8544,61 +5752,37 @@ 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() != "" { @@ -8609,11 +5793,6 @@ func AgcConvertDB_Legend_TurnRate(fi,fo string) { } } data.Chance = arrInt - - - - - break } @@ -8621,26 +5800,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) @@ -8654,19 +5833,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 @@ -8674,46 +5853,29 @@ 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() != "" { @@ -8724,11 +5886,6 @@ func AgcConvertDB_Legend_Weight(fi,fo string) { } } data.Weight = arrInt - - - - - break } @@ -8736,26 +5893,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) @@ -8769,19 +5926,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 @@ -8789,47 +5946,30 @@ 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() != "" { @@ -8840,18 +5980,11 @@ 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() != "" { @@ -8862,25 +5995,13 @@ 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 } @@ -8888,26 +6009,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) @@ -8921,19 +6042,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 @@ -8941,33 +6062,23 @@ 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() != "" { @@ -8978,11 +6089,6 @@ func AgcConvertDB_MatchRank(fi,fo string) { } } data.RankStar = arrInt - - - - - break } @@ -8990,26 +6096,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) @@ -9023,19 +6129,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 @@ -9043,39 +6149,24 @@ 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 } @@ -9083,26 +6174,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) @@ -9116,19 +6207,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 @@ -9136,39 +6227,24 @@ 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 } @@ -9176,26 +6252,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) @@ -9209,19 +6285,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 @@ -9229,39 +6305,24 @@ 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 } @@ -9269,26 +6330,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) @@ -9302,19 +6363,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 @@ -9322,152 +6383,81 @@ 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 } @@ -9475,26 +6465,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) @@ -9508,19 +6498,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 @@ -9528,180 +6518,95 @@ 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 } @@ -9709,26 +6614,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) @@ -9742,19 +6647,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 @@ -9762,68 +6667,39 @@ 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 } @@ -9831,26 +6707,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) @@ -9864,19 +6740,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 @@ -9884,357 +6760,31 @@ 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.Name = row.Cells[1].String() - - - - - - - if len(row.Cells)<2+1{ + + data.PorpName = row.Cells[1].String() + + 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{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[3].String(), 10, 32) - data.VipExp = int32(temp) - - - - - - - - - if len(row.Cells)<4+1{ - break - } - - - - - arrStr = strings.Split(row.Cells[4].String(), "|") - arrInt = nil - if len(arrStr) > 0 && row.Cells[4].String() != "" { - arrInt = make([]int32, len(arrStr), len(arrStr)) - for i, v := range arrStr { - temp, _ = strconv.ParseInt(strings.TrimSpace(v), 10, 32) - arrInt[i] = int32(temp) - } - } - data.Privilege1 = arrInt - - - - - - if len(row.Cells)<5+1{ - break - } - - - - - arrStr = strings.Split(row.Cells[5].String(), "|") - arrInt = nil - if len(arrStr) > 0 && row.Cells[5].String() != "" { - arrInt = make([]int32, len(arrStr), len(arrStr)) - for i, v := range arrStr { - temp, _ = strconv.ParseInt(strings.TrimSpace(v), 10, 32) - arrInt[i] = int32(temp) - } - } - data.Privilege2 = arrInt - - - - - - 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{ - break - } - - - - - arrStr = strings.Split(row.Cells[7].String(), "|") - arrInt = nil - if len(arrStr) > 0 && row.Cells[7].String() != "" { - arrInt = make([]int32, len(arrStr), len(arrStr)) - for i, v := range arrStr { - temp, _ = strconv.ParseInt(strings.TrimSpace(v), 10, 32) - arrInt[i] = int32(temp) - } - } - data.Privilege3 = arrInt - - - - - - 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{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[9].String(), 10, 32) - data.Privilege5 = int32(temp) - - - - - - - - - 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{ - 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 - } - value, err := strconv.ParseInt(kv[1], 10, 64) - if err != nil { - // 错误处理 - fmt.Println("无法转换为int64:", kv[1]) - continue - } - resultMap[key] = value - } - data.Privilege7 = resultMap - } - - - 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{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[13].String(), 10, 32) - data.ShopId7 = int32(temp) - - - - - - - - - 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{ - break - } - - - - - arrStr = strings.Split(row.Cells[15].String(), "|") - arrInt = nil - if len(arrStr) > 0 && row.Cells[15].String() != "" { - arrInt = make([]int32, len(arrStr), len(arrStr)) - for i, v := range arrStr { - temp, _ = strconv.ParseInt(strings.TrimSpace(v), 10, 32) - arrInt[i] = int32(temp) - } - } - data.Param = arrInt - - - - - - if len(row.Cells)<16+1{ - break - } - - - - - arrStr = strings.Split(row.Cells[16].String(), "|") - arrInt = nil - if len(arrStr) > 0 && row.Cells[16].String() != "" { - arrInt = make([]int32, len(arrStr), len(arrStr)) - for i, v := range arrStr { - temp, _ = strconv.ParseInt(strings.TrimSpace(v), 10, 32) - arrInt[i] = int32(temp) - } - } - data.RewardOutlineID = arrInt - - - - - - 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 - } - value, err := strconv.ParseInt(kv[1], 10, 64) - if err != nil { - // 错误处理 - fmt.Println("无法转换为int64:", kv[1]) - continue - } - resultMap[key] = value - } - data.Award = resultMap - } - - - if len(row.Cells)<18+1{ - break - } - - - - - - if row.Cells[18].String() != "" { - arrStr = strings.Split(row.Cells[18].String(), "|") - data.ParamName = arrStr - } - - - - + data.PropValue = int32(temp) break } @@ -10242,26 +6792,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) @@ -10275,19 +6825,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 @@ -10295,40 +6845,25 @@ 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 } @@ -10336,26 +6871,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) @@ -10369,19 +6904,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 @@ -10389,80 +6924,44 @@ 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 } @@ -10470,26 +6969,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) @@ -10503,19 +7002,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 @@ -10523,200 +7022,106 @@ 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() != "" { @@ -10727,18 +7132,11 @@ 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() != "" { @@ -10749,18 +7147,11 @@ 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() != "" { @@ -10771,32 +7162,18 @@ 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() != "" { @@ -10807,11 +7184,6 @@ func AgcConvertDB_PlayerType(fi,fo string) { } } data.CardLibArr = arrInt - - - - - break } @@ -10819,26 +7191,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) @@ -10852,19 +7224,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 @@ -10872,59 +7244,35 @@ 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() != "" { @@ -10935,11 +7283,6 @@ func AgcConvertDB_PotOdd(fi,fo string) { } } data.VipOdd = arrInt - - - - - break } @@ -10947,26 +7290,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) @@ -10980,19 +7323,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 @@ -11000,106 +7343,77 @@ 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 - } - value, err := strconv.ParseInt(kv[1], 10, 64) - if err != nil { - // 错误处理 - fmt.Println("无法转换为int64:", kv[1]) - continue - } - resultMap[key] = value + + 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 } - data.Cost = resultMap + value, err := strconv.ParseInt(kv[1], 10, 64) + if err != nil { + // 错误处理 + fmt.Println("无法转换为int64:", kv[1]) + continue + } + resultMap[key] = value } - - - if len(row.Cells)<3+1{ + data.Cost = resultMap + } + + 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 - } - value, err := strconv.ParseInt(kv[1], 10, 64) - if err != nil { - // 错误处理 - fmt.Println("无法转换为int64:", kv[1]) - continue - } - resultMap[key] = value + + 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 } - data.Gain = resultMap + value, err := strconv.ParseInt(kv[1], 10, 64) + if err != nil { + // 错误处理 + fmt.Println("无法转换为int64:", kv[1]) + continue + } + resultMap[key] = value } - - + data.Gain = resultMap + } break } @@ -11107,26 +7421,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) @@ -11140,19 +7454,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 @@ -11160,52 +7474,30 @@ 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 } @@ -11213,26 +7505,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) @@ -11246,19 +7538,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 @@ -11266,81 +7558,45 @@ 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 } @@ -11348,26 +7604,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) @@ -11381,19 +7637,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 @@ -11401,138 +7657,74 @@ 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 } @@ -11540,26 +7732,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) @@ -11573,19 +7765,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 @@ -11593,39 +7785,24 @@ 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 } @@ -11633,26 +7810,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) @@ -11666,19 +7843,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 @@ -11686,61 +7863,37 @@ 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() != "" { @@ -11751,18 +7904,11 @@ 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() != "" { @@ -11773,18 +7919,11 @@ 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() != "" { @@ -11795,18 +7934,11 @@ 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() != "" { @@ -11817,18 +7949,11 @@ 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() != "" { @@ -11839,18 +7964,11 @@ 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() != "" { @@ -11861,18 +7979,11 @@ 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() != "" { @@ -11883,18 +7994,11 @@ 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() != "" { @@ -11905,18 +8009,11 @@ 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() != "" { @@ -11927,18 +8024,11 @@ 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() != "" { @@ -11949,18 +8039,11 @@ 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() != "" { @@ -11971,18 +8054,11 @@ 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() != "" { @@ -11993,18 +8069,11 @@ 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() != "" { @@ -12015,11 +8084,6 @@ func AgcConvertDB_SlotRateWeight(fi,fo string) { } } data.JackPot = arrInt - - - - - break } @@ -12027,26 +8091,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) @@ -12060,19 +8124,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 @@ -12080,81 +8144,45 @@ 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 } @@ -12162,26 +8190,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) @@ -12195,19 +8223,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 @@ -12215,150 +8243,91 @@ 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 - } - value, err := strconv.ParseInt(kv[1], 10, 64) - if err != nil { - // 错误处理 - fmt.Println("无法转换为int64:", kv[1]) - continue - } - resultMap[key] = value + + 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 } - data.Award = resultMap + value, err := strconv.ParseInt(kv[1], 10, 64) + if err != nil { + // 错误处理 + fmt.Println("无法转换为int64:", kv[1]) + continue + } + resultMap[key] = value } - - - if len(row.Cells)<9+1{ + data.Award = resultMap + } + + 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() != "" { @@ -12369,11 +8338,6 @@ func AgcConvertDB_Task(fi,fo string) { } } data.Position = arrInt - - - - - break } @@ -12381,26 +8345,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) @@ -12414,19 +8378,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 @@ -12434,107 +8398,57 @@ 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 } @@ -12542,26 +8456,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) @@ -12575,19 +8489,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 @@ -12595,33 +8509,23 @@ 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() != "" { @@ -12632,24 +8536,12 @@ 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 } @@ -12657,26 +8549,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) @@ -12690,19 +8582,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 @@ -12710,74 +8602,43 @@ 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() != "" { @@ -12788,18 +8649,11 @@ 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() != "" { @@ -12810,32 +8664,18 @@ 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() != "" { @@ -12846,135 +8686,79 @@ 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 - } - value, err := strconv.ParseInt(kv[1], 10, 64) - if err != nil { - // 错误处理 - fmt.Println("无法转换为int64:", kv[1]) - continue - } - resultMap[key] = value + + 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 } - data.Privilege7 = resultMap + value, err := strconv.ParseInt(kv[1], 10, 64) + if err != nil { + // 错误处理 + fmt.Println("无法转换为int64:", kv[1]) + continue + } + resultMap[key] = value } - - - if len(row.Cells)<12+1{ + data.Privilege7 = resultMap + } + + 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() != "" { @@ -12985,18 +8769,11 @@ 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() != "" { @@ -13007,60 +8784,41 @@ 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 - } - value, err := strconv.ParseInt(kv[1], 10, 64) - if err != nil { - // 错误处理 - fmt.Println("无法转换为int64:", kv[1]) - continue - } - resultMap[key] = value + + 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 } - data.Award = resultMap + value, err := strconv.ParseInt(kv[1], 10, 64) + if err != nil { + // 错误处理 + fmt.Println("无法转换为int64:", kv[1]) + continue + } + resultMap[key] = value } - - - if len(row.Cells)<18+1{ + data.Award = resultMap + } + + if len(row.Cells) < 18+1 { break } - - - - - + if row.Cells[18].String() != "" { arrStr = strings.Split(row.Cells[18].String(), "|") data.ParamName = arrStr } - - - - break } @@ -13068,158 +8826,157 @@ 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 2a05db7..554ac89 100644 --- a/worldsrv/action_welfare.go +++ b/worldsrv/action_welfare.go @@ -415,6 +415,40 @@ func CSBindInvite(s *netlib.Session, packetid int, data interface{}, sid int64) return nil } +// ------------------------------------------------ +type CSPigBankGetInfoPacketFactory struct { +} + +type CSPigBankGetInfoHandler struct { +} + +func (this *CSPigBankGetInfoPacketFactory) CreatePacket() interface{} { + + return nil +} + +func (this *CSPigBankGetInfoHandler) Process(s *netlib.Session, packetid int, data interface{}, sid int64) error { + + return nil +} + +// ------------------------------------------------ +type CSPigBankTakeCoinPacketFactory struct { +} + +type CSPigBankTakeCoinHandler struct { +} + +func (this *CSPigBankTakeCoinPacketFactory) CreatePacket() interface{} { + + return nil +} + +func (this *CSPigBankTakeCoinHandler) Process(s *netlib.Session, packetid int, data interface{}, sid int64) error { + + return nil +} + func init() { // 领取救济金 common.RegisterHandler(int(welfare.SPacketID_PACKET_CS_WELF_GETRELIEFFUND), &CSGetReliefFundHandler{}) @@ -452,4 +486,11 @@ func init() { common.Register(int(welfare.SPacketID_PACKET_CSInviteInfo), welfare.CSInviteInfo{}, CSInviteInfo) // 绑定信息 common.Register(int(welfare.SPacketID_PACKET_CSBindInvite), welfare.CSBindInvite{}, CSBindInvite) + + //获取存钱罐数据 + common.RegisterHandler(int(welfare.SPacketID_PACKET_CSPigbankGetInfo), &CSPigBankGetInfoHandler{}) + netlib.RegisterFactory(int(welfare.SPacketID_PACKET_CSPigbankGetInfo), &CSPigBankGetInfoPacketFactory{}) + //领取存钱罐金币 + common.RegisterHandler(int(welfare.SPacketID_PACKET_CSPigbankTakeCoin), &CSPigBankTakeCoinHandler{}) + netlib.RegisterFactory(int(welfare.SPacketID_PACKET_CSPigbankTakeCoin), &CSPigBankTakeCoinPacketFactory{}) } diff --git a/xlsx/DB_Pigbank_Prop.xlsx b/xlsx/DB_Pigbank_Prop.xlsx index 65f038c1edd73d72637fa640b5b9eacf173c61f1..b7989090a04a0b591af11b03e12a0f8e2f05d5b6 100644 GIT binary patch literal 13909 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 Q7l{Cn1$z4>%OC&!f54X*vH$=8 literal 20105 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 From c2d7c1bfb5855a7015ee071791a9b92e0b38b710 Mon Sep 17 00:00:00 2001 From: kxdd <39694055+shaojiayao@users.noreply.github.com> Date: Tue, 30 Apr 2024 09:45:40 +0800 Subject: [PATCH 2/4] =?UTF-8?q?=E5=AD=98=E9=92=B1=E7=BD=90=E5=8A=9F?= =?UTF-8?q?=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- common/constant.go | 25 +- data/DB_Pigbank_Prop.dat | 4 +- data/DB_Pigbank_Prop.json | 4 +- gamesrv/tienlen/playerdata_tienlen.go | 54 + gamesrv/tienlen/scenepolicy_tienlen.go | 10 + model/player.go | 7 + protocol/bag/bag.pb.go | 14 +- protocol/player/player.pb.go | 782 +- protocol/player/player.proto | 12 +- protocol/tienlen/tienlen.pb.go | 560 +- protocol/tienlen/tienlen.proto | 5 +- protocol/welfare/welfare.pb.go | 585 +- protocol/welfare/welfare.proto | 34 + tools/xlsx2binary/agc.go | 9583 +++++++++++++++++------- worldsrv/action_welfare.go | 28 +- worldsrv/player.go | 3 + worldsrv/welfmgr.go | 108 + xlsx/DB_PigBank_Diamond.xlsx | Bin 11065 -> 10532 bytes xlsx/DB_Pigbank_Prop.xlsx | Bin 13909 -> 13595 bytes 19 files changed, 8216 insertions(+), 3602 deletions(-) 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 70eb7e1a88fbcd1559746ccae711962acf7006ac..51aeee2e1b6e00614cd176a349f0164959eb1da5 100644 GIT binary patch literal 10532 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 CSjP+i diff --git a/xlsx/DB_Pigbank_Prop.xlsx b/xlsx/DB_Pigbank_Prop.xlsx index b7989090a04a0b591af11b03e12a0f8e2f05d5b6..644612c1911b3bf8a9b1756b5c364e97f05df358 100644 GIT binary patch literal 13595 zcma)jWmsKF)-~=P+#Q0u2ZC#GcXxLW4ncyuy9IZ5F7Cmd;O-6|NzY7oXL{b}s~_BR zFI%eiKDAEmQ>$bpLBU{vezsug&5u7n|J|V9E(~o9WbJKi9q47>#8BUUfchnN59{{I z4GaWi0|Equ^j9%GTU$C;E6enlQ3+5+)WBQ6Q>5yO{m78GWK{mX2-V8w$YgFSU2^EA zx$JATI&EOx%+uJe)~34m6A*1Ma0q;joHxCUYI7RpwXyMVn`7n| z)CJ?ev?pu%m;=V+p($&E3gAuceY4#{E&*vP?*r=Db|YX!)IzVVXz;kS-0}$dv@_S% z@cA;enUJ3y=LWrND@L=^9DOOB{jK;nL;C49x@Ey#mBy5^bbKhh*1r;Mkf$A@0YyA` zYD|q`zgm$^y_B4!6R#l>pFb=7!1#NhC&Z`Vjo$)o^%iL4zXsaC#@^^>q`hKVqa!^o&3E75ut!VWrs^P8JN%8%lzXYNwqpw0JouPB=2PzYa z?7lv4bBjthE5w60=zbeW-32szrBW8K^md**ks z+*v#b%OLFs&m*oe6o!D!ts)yvOW?0xzk{ufzP+a(r(`e3$Ay0-d+@BTH-i9;73GBu zUh~%*&^8)L=YVGgNTDOdM@?%6*)%&^v zm%iB*hEK2t*!5cVSU3=dU#BcPj2I*O!U!hMUT}QP8!V%NOiO6nK5O*>lh(mC2BAFk zu=J=aMNWN95)wq91sA`SAQ7r*hfwKw6X`I@vA<+7c16=@M?ca<~dw4^2*LoG4fb<+*4QJ1ROX^vu2Pjt-t{8BIOGnIV-;&*!Txr6&L zZ2?f&tdBD#QbN9E7H2E+sT^j3hWX_Za2yP6(jQuY6mL$sHEwtZxPNr1k=_@rA+Cml zi5R>aTD+n9`l&rfJxQ!?rc<6u3pT979V=BimeNyJtItH7>8k}14nAu6l?IEV+EALc zVtaXU6~B-I8O`0OM16sZ2i0nxis@wbY=#NqIk_rC+tp@BMM9IZNIct+5*}pj7FFT- zRn{06ABuavTHQqC;SFej2I?&#wOOWD(+8x5bm=)Kxw#Zdn|f3acnNxg>ae=1l6GX} zv-^?L&h)RlH3B(d)`!UjOk0^#rF|g=D;`fVGs$fx#(g~>l;Sj~Y!x{iMA!L?MR)JO zC829ICXqbaZG2PDna94FcgUMzC@M|x?MnSnw%$Xq#`-Lat~hprnA|5{{9VVK$6p4V z4KU5eT=*Fi6HL(W5EknBylx%Y_gr@H#X;wL8DE-93Yuc5lMzPA11)UJ&|TcE#hTJ> z@(=q!`>C)!%id)5B?-2xcs9kZ6g$!t9sf{jyafj(BD8ij+7(AT<*>qu<|y({IfG=R z4jmtsmiO6Mz_NpRp*mLBOtJI7ZV4eh9QmIuL4M+CsTxOnNEA5c;6Z3@H##XAF;RDd zGXS&IdF2pL_owY_EL7Q@KUq%Z>-vgT3;c;mb!8-0t(6~eSq8YS5_R9Jg2I0v0vTP? zMFuhO5%eaOrLrT7lOTZS^tuYrmkl6x#hnO;NCd?O%FOd!nQkm^ExK=RIF`Ui6zAC| zcJ=8AjzoFI@;~3Vd2Im zI1I&Co4^K)jaCZe`h3Nqo6igfbh{rGoWgKQ$h_!Z^+#;OC~40#E-DJc8zeMn^PE8O zd#&3-TZ)2i_n!#<4tk>XA7T5UfPh}e|L1&S`Z=G{Q`8(b#ZUli6#5;Y*|)#}quUG_ zA?OhZUwx2|cuV=~(cnX(e-wD|J{uOFj4Z+f9=hiFo~cVOs3fv>`MkBq(h1y@Ft(j` z?pNC91}gv;ikfT2t9l)GUYkw_bRF~ZcmLr=7MmFFC1n&9}aIfl_f3sWHPH=N~*c+%QaxPQrJK6qpCda;Ql);*Od$DY+t8uNJApX8cyXDmhApu2MD`6Kc`&2e?1lE2evxZIIbGo; z#Vai}i|4hFgY}fz=0N<$#4Yk-^SI4d0MAJy7jOZGzV5OsU-@v&m3Xu}g5#Rrg002g zF(%u@s}Ug23q{rnlh3!0FrSm(>|kj?uB;d7jhZWJ&hkw@f@K#AmaH|@tv@pp!o9)? zQahh}WwHW#>E&A(?-AIs?G50Sv4!4YqbJ<{=`(Z;qTLUNeV=-)S;l9b zg)^h5=gA&0`K^pHfJJ_pz$_H~xRTpxCpj>g>>5*j;C*hPFCwd#q3f`#hPjVM) z^zJGmswMzxDrRJ?!Onc2e*%LiKlH;{H%8HgYf9n5;X zbI2RwdW1oL+6Cw@8#GKYT;V*6A~y(w6A8F^LY$?ARcS_nBh$v5!wmM$hT}-~&_~Er zRWI`iLh{|}$!LN!zKq8Dk>YtmUl;6wys~z?&`3!|WaZ`+%ng002Z-Ljl2H}8V^bGR zd?qe3$n_HlI?h6HR9*xU*1VXg2Wdv<4m!MF+V~>qXKr#Bm9_ZR3uI|SQYTFQ?J5^B zS+}=N1S-fF1ioV!&Y5%t>s;WUT@;^$WI<18Fu(+%X)lna?8G^M_~dBC(Gc8L>Zn&W#zvO1zd5d z5@cx1hB)WuzMxI_^dPdR)mh%a)qgfx;!9O3yj=9L7Pg`wWWF52ezIjS;b-gMdGMud zBB~xd?gXZY4WtXsc$8@(MGKEa2(%@Bvp7L_@+BgU&_+Ccj3~h(ZI|{5)8I2`=3hc} z9*H6tsB3ERB3yW!JXmBg$X3ksO;D-eZMiaa^wzsyLT1$Uf=3_s=8YFdu@!Njltp8aOAbGp z{or?@8z^e)F$Qc`1kgZ1Lw|w#0xb@uhEh#z_-P<0s*G@_r6yg@u-C_iIxjEp;?*?v%_*cM;DNeCXP630fY;XPKicN%O&vL>%YEcj$VfKWhh z0BHaXv>I|XxuM{IG7@!@>F~UGM6{;jV{sfNBVKOSi57M(1#X-Onaa2!MIxSw*5Eck zli9&w}N6l?X?m-Y;nZ@6adI zDoM1*b@x`zrI3zUtj5Jm)`K8U#7IS>s%BWaul(p@n(0Zoj9cVUaGjea&!wq_I#()je9 z^4&xR5(kUIjGaR^V-J9~$BqBkKw(A~mWk@O=)}%%OgET0U!QX`FncQ03W9+KL$Kay znvR^E%PHT<4$}`5MMZ@~B}D~9kr7b~%m!FW=?BZKp)PK0-3Gk5K|q7U#hzLJKlUGiVU`XMnQ<} z8`T|Gs!@7GM94&pM9@T%0?Gm3pcj&QzY?^h+qYiV>l7}gW=3}O!=@3>Y&j4ykqp>u z96{yO>->`r;oU|!;TDIVX(|i^9kTgl6H+qrkDm1gchK|4qDu@zRWUIkF)1;DftV;X zA`1aF@+y)6Ykp1E0h>=F_&1NHg+J8}uKrMa^Rn~LUU~E1~UZAa*+O%

5ULPd>TuWxNRsji1mL@}rR@>{{T6Lt>hdn@>Y-s*|}QA;rY zswHAS*(@=@1)YN45P+>%a9YKV1s>~*Az20k_cce>=ug)piO-N0Sl=E}EIFkReVD-r z%elVu5~u3$U`qMmhX`ZUg&{tKH4kH9wB+~tRMmFZt43&MQ9LQol}U8ga?6N@rn<@7Ez+> z|Gmp6A9|BtGW0>PP&3I)=DNkTF460X>yR_LF_}qpb@M?gQ!XCh15bvA%_z?8lKka} zFSCFPv`vnN7xI&Yu6|ac5^#Oz5b>`-|GOsr`9kciCUrD5 zvNHPZg_r{#R+0k*5D+iUAFl-dBlb)9SD|^V_Q?iE7_*(^oIu3G#)`rjThys!z6!^5 zTBJ&2X3O=%YP!3#2`jVo0gid3m{^FPJHLP?2Vs^xwXe`U>wDpRv1iy;=9-q(FLR{t zk)etZzqs5a-#%LOCsr(nVR8`)$m2J(F7}lKiyd7eNBAeWSWL83o)8t=@^ps-^0r4q zuF5UjAIFSZvjtF)!5$5od^NO-6szTm#Rw9rS_j^t^t3Qyyp@5JenVpGf>}6KLlSk( z%3l~FKA>(v4Xolu7RyXr5`1>Q|4w4VoV#k&NvteSevBgDYZ-01*UF*0*dcOHFtb)i#4HzbVNj&9sf4MB&{y31;Bt*~q`RQ;PK#%YB zbdefNc1G(PEPUr9B9w#k1L^n@%8@z9j*LRkt{%@HNx=jX!PgmjzZ?c{Jp#+vsFBSs z!bRibIVGre`l^%Raj<@gDfF&|-VY!bP7^CS33%I2msF~*3=#hJJNoLq#|ECV{Vo0m zfVvek5G7_<3BXNy6o>u^BQ7;=R1#(0+Bq~4+2Ts}Ow}RXHF%=uw+Xz^#iWE3!;itz zgrn@o6Hre~)YDj+$MeRwY~~Ki1=nnxw$V{YN%2s8gd>bwN<2y&R3x08$kf-#yp0R`6l@4yS*upgPWF6&2F1dDELzZ`9r9*P_ z;Fb#QRD0VgD3Ee6kL{Eo*0!yK_Ds$|za}<6vXOmlk)Z=?FkKH}K}32srmCgSmgT-? z&pFRTGZ4wfUcz+M2-jFeuPvyKo99&aOWb$~40OSf+4=xd)jsdKI=j-~H1{|@w_?=f zxoFN!Un%QxeWtss&rBvN8T^CM=v#$xxMrfUbixFU$OqM##}Vl0AHfBr0TpI;F1Eg% z#)v4IULTd_5$!;jokypIK$2q+NF^ErYSPu{^2^Q{3aLGqEcclG%OFuowRo$COWirS zv40p!4MUIIGaJ;FK&K@v9OTDQ7Cn=Xn5!2lIFw>dN)nZW;0T+$X69Hr|$Zd85iz-I$a{BN9wov7l<^IsgzK#_6d-Zx?}f z)jH@xtO246_9U~M&rBL2AKqQHG!AVNm-SDDvA6{fOy`P%Dz2}BvocLmF@vg9b*R3m zVCnp}o9`2G#U7>agy*+G5DRj&*PIXz=v5Im!BDO}J~B|3xK~7;L=+7+9VpNz@PBkF z^5Z3;+Hmex1bYTjF=4QDDd-4lqovr zE-xrCzW*#;g4%QUxghj}!d9!2YYP8tgGxm=@3L;&E?WRWi4wYa?HvP0(jxFA$XwMK zwjT^#+~{Y1gsab~4hccx797{bUf6{E*#yP1NY#)=gFg08X#|gc zj9uWvsLCr{d^Yx&^#}{y!?=nM`z5V0CU>5xfQ+l)! zqDFPKS^}BFd{xWrStZ%$*P!;vsQhRPxE7H${1n>z8Qeh?m-d&s<7kgX_6maJ0&3u} zjUqCFrjv8!VwMBkWKe@zGlEpXy8;t#(4N4^F+DTKqa+a*p%94Y7q0KRRq@!~ef}IM z41lh?Hm%?B;>h#nDmIL7t?h2JtxvV^fSdDm^s?}FD`|@ESc9!H%YPKh4oLY+>lQA4 zts$QG(3xOSQkb@qAtl|AiyVDKtP@4bp*#6XG5P+O1oAwPZ$y#Y=A9ubW;4u&?)iWr zYCnHA|5LwHoCLWHmA0t(ZGJp%YqPXB^A}I7%M!O#7oXAG^5N;^G?oA~K7f|}9*V5m zB(-~6g2sH5nKwHj2=)Djp>~#cS$iTQNjn?^IEXlUyCUqn%?6&s-fi}Rdc!M2KRpIR zB|3IX=O zZIn~b6wFvG%xkja-XDT?RIwhVP>@Thny)6IVnr)$VBR~CcOY!yNR&;QvebnNfN#?i zEOcnzZzM^~Em@)5;#$EQ)h&(g#26NHJ<*BI)=}MSef{QarDJnSFN#i>+s>o**fQE` zw`a1r?Q#s0m*8HvSVZ+nN#WuIq&?YIQXa} zW(8vopCB* zb=yBpIKWGrgc?R&i+ZlEME%k;L&;ee5>j+c!?KXj0t#8U9*Nj5oJa^YQIAApd(509 zXTX?*c)*k-M|GyZ{6kRs3sR&vDY78HyZ9S8F~QgIa z@8s^jwGHI~Gq*NvwUa_oypf1dB!pM9)*&s?kLa$)IW^D~7K_gX4Q!$~Fw4nl$xo;E z{d>oiMC2{-(MAZ1yM0$KF~$2{#TYx!Wxnse+}p=qeg#Lz@G5 zqhBRuW}?*1!9ES}JI#cC@mxkKsGDh76mA%*5}$KwyH!4{fd<&CQs zg*Fp^TOf5VIgNmXEXbYS(*5?hH+-TgW}xb=${Zm_0P0fX2zhH(5_-;-<1>=D&^}dfvP)-_zuF$@{GmzOUPzBlPvn}P}3xhUgD8`l| zm=|+tV*nBQkSYuo=EDj!704x(;XGKpg9r&0$b$sGgpq`AP^kh;ysLC^ygQ7No!It> zLe|Cs51I-De-BvxmC;U1V>9IUd`hYu0mwv}+QC6X_E#)y2?DC78xN}Y4&dKWl-T9> zVM@qK@L@DD6eSfI2tQ%y3~suk0B~B>WmWWP=ZM!~*g0tw>xH~TH$*f7r%*)GaQ0D^ zC9U@qC~56_!!-J$6Y_E}_}&#;$n|~SoW)1AYosyljE*t4s}tHs$w;6np|47?kR$xQ zi7pmCTt^vYZU;-+zpaisAn|t5ZDd3XV`#JuULC-`(njlA`-m`pB;;I3bk~(Y-*lD8 zn-j&c|D|CAnN>X|B=<%+r}fy?RC+FdqPw))s+?fq>ouFDQ}nTu{h2>LAZ1BYCk90P z@zGFin6D#h0rDwBdOgg@1L6mSFIu4SoQ@mp%rI&RsZ6%+2F;gX%=c7ok|n+Z6*;>7 zJvjRD^x*3Y(vgJVokv-p?fn5yUiGH08iDR%kSt@F>lb;}T?Pyag;_5en*53{%KjX+ zR(+qqE=1EZMbK}t_UYdXTl#iiPMH&0+GR_gYw}`6e1+CU^^yK@zI)!y=r5G9X+0QA zA!8i5%D=L%Yk9qqk>c^9t8qaV(7Q11Qn7i~teoGz0bnk4~JipW~z6J;0X*#8gC_069$F{eTFYY21+I z$}N{O<#n~K@zwHSDcBd6>Ck{>6-SZSI?3~9|LCbS404x#^|J|jKE)-Yh)m{C$WYqL z<0*#8DFn#iObBu(IeJ=pxcmtItJTG7%QRowC%!w;kD}z%A!8o9LPFE~!6q04&x~1F zIEEoYdoK&Qk^D{j$D*w)%~pM;r2?L=n|YPf6I!GqV3K1XOP<6ZV-x!ZzW`Y#F<9~< zvs{01b*1cXyce37q1Zg%_|V6-`(ScQ;Uefbq2yqUOrs1#lL9=ru$zsFk6dX_NzD0r z7;UAFbQ=vjCbACk(AW2=I-( z*YZEcemd&po2MkQ2iFD;xz`3(PVz;n`Iq~^f4ispw|k{f&H7nLL65{%@_1gWcVCZz zb+l?s!XHl}&W004$~zEnrp9HA4H#-iddiF+!3Xb+>)+WCe&-p4EGB_$o-W4;ix@r=_`ADaW5Yw~Hc_L*2 zGs;Eg`@eCUcLyI(untU&iol zOCP{Jc1DgOZjd?S|K>kpR$F*6_p?0j?RN#Nv zkkq@0CLUD1PA643pYx;B|Bev~5nt`}gkRPsaJ6L4r+ewu*evKrqjJrTNlq;Sl=D0nTbd78Z$`F^YMee|C+5`| zThqqiu+61QG_0_pTa?>wXq_4^@jx$+zG&OK8DD0jxG?*pRh{7`+GmdL%#$f45^4+~ z9j7>{`d&Ps8h?jvdu~E3xRQ~tRULlnCFPF3~piz!n<+~>Q_>YFFlj#r3D$1(Q4{DZC$f1TO;TnMJ)v0%)S)0 zNj$+FkBjG&8fbkv(KL#S0?DDNRJvJu0x~?#y2w5Uu;oSiY|ZWPgO(H?n(N%2aqMY-=o5X$6m$V#b_a>H zNtGpeN<`~{!bFrwB$=hflf!`97E{quEdoO-$eWgsN`z~FS8g-6BHOI#Pov-Vv zx17&0dw+*nWo*>+Kq|a5K@5Vy%eWa{6HXJdCUp8lEMBg5V1TOx=C#pX|D=sg!v-X; zO$A$)yj3Qeq- zhg2qCOf|H3!_xFc@Ef_aVJbiC@tR9I&~Y!z_Wlk&0YRom#n#|xHr1p|d4w!eckQWO zuTcpTQ3LWzv$Q)&c(@UhL4FKRx6Sf;>i(`wY}-@?y+j)^QWSZ2VBK{RQY?C_enEvf zogSG=vp%|f8(G0@no+^}vNGBEhtp6+DY0d$a3>7-_+8>{hxijJIxFfNw?UeD_P`?e z3~770i%%NJ`cBWCRA*k4j8w^0VN$9Y!W=$|$M@U}y<(>at`rig@Sx)WLwC9hIl;}6 z6{vRh(?-cj?E$IdOkv|Ns7K&@!teSzjq~W}iwD7TKE6&hbaJkgSaPO6J z*Y$n}!=OT_BwnuRxUhuyxR;&|5ii=9-Nd`2{_ky(w`~s~9eX3o-x+uw9L}w;Z~t3+qe;HKcKVkL-A~D~m~n|-2BiMe zH-7L=`zIGPZW||=*lkay@*E|hda8?Ml84JF) z`Z>w@eY6>HZkIdrbX8sP6Z_Wo9n?+Hwi~SF;6nc~z<-A)Zjp{OTFX;@f+?8$eXQB! zzM|~MOm0@;LQXyd5`VTfYgy}|3z7azeA!PteXCR<9xV`d9D%L(HZ~=PW9uK1a|Oql zsedR&r#o3jp@sW<=FWE@T?<1%aE{wM@eZH5NCbZ?Gp2+vm&GjE%a*l(Y23z0v>{yHgtMYk<>*t~}UN%%JK#Xrf5cF9Z-I=be4pykpPXut<= zBn_sN{hrTjU15zu>()|ie#!i|8I!_~Ju-78^l&q-CWK$~W%ulLSjw5s?A*OvA%rcp z^fXQyp@9X95Hzct1MZ~VY>ERA#>ZkI z{5rvI>S#g1%GwS&n1^JK0M=tQrtU#6nrl~bNw`#2tadLBg@}Q7fPCSY1SvL2hW!Y= zDYB#={S1joS4Z^59e+nK8#i!bhc^Vnd%Hz{5_L5MZLA%QtQ~a}-E55|xKOjaopfSo8mr#L(@g~s9??X1;1PJvay1@l@oc4YsLjs?g_(TfG@Ho-rgUHP< zj{$e3DH~L!KduG~uPtGj4)>DM=DMZnA`C}~XN{^tBgBEPsDOx#2bC&X)a?&NS_a*v zgq;9UIP9E|vTj574e}mJk78y7Up;j`ZLB5tflimTsN7hGwr8vmxM#DyOxQ!~xKCa@f)C zVH!$<)=|cV-QaJ7l%YV;n4WY)f`RqPDs>d~@K8kP(|&|1g`u-149y^fY*y^tYMA5l zp>zPbGkQLnUR1M~_g;*1FA+8yTL;hzEP9ogtzDN#H+N7jPl&#D`#yaK9DjaXKer?B z29=cr20{I`mj2@~!S7jmOB4_=5aHY3F}i=u*&hb}nHKyLjQ(gp&m~aO{2O+DcltXx z{nYuxsnmaTeodzT%h}J_`bYce>}UJSd5OOd^7j)HKZXDBNAXv+f1RKBy|=#~1Nc)r z>h1RakJEo23iw_9cf$Ig>SS+V@~8TL=uquHhD86D!r!ChNc$J) z`n{vSW864hq>nmvFyZ_*2(|>*pc5r z=s(PW-#z|LA^6iH$6wX{BozE^;P>^~p9bKle);`t*#56h|D@Lc(SBw)Rx~g1bZT;O-6qf)m``9p1Hb&hPHMbN2lJ z?{iQ8(JY>4*68lpRW(P=8m%A$296GZ1V94-0Aj#8b)$|G2mn9;2>_r0pg}*1+Sxjr z*gET}xZ9gJ=`gt2SQF)egHq)HK!M}`d;A}sfw4p#s~#rw;4`QvB=W}mC?0GhjrN7X z9g49R-wN(;-JWr1nXgZo5(Gxh;Z)X~2sVyC?+&Cc5eI4W>&U@XCXy@kt~DSV9F-O| zhkq8yKhTdd!O{k~VoEna8gG5y>9=pW^~F*BNT-RG-?@cf4jI|i<6h0C+^R2DFweB5 ztK!5ACa`~F>$YPJj(4?SS^fPS#Ik0J*+cvL9)c7gimr8y&bnQiqHVqmHBRzjdgL9$ z!(498NIfLp&P6yA_L;M}nK$RcT)Tpme|)U0SmqgJ>YO{NdUO~Y0k8fo{ zEtUo)U=WW05koNKD28bb?A+sMj~E}VNIrxY)`0rAFM%=J*w1LuM}nK7&aZyOdj}um zjS;N@1K%L|?wCL1g=FBN2z3kyNjbRso-I9b?GwuSUrC0cuHQ2pljMJ$;D-?oh3yc@ zKf3hdR>I9(aW%h^^XHpu)zWv~HGYcv5W+3LA@B$e0KC0{0Tligt7y6%CZNDrT?2+9 z957b(98Ij97#aRJ|2Ibe4+rL79=#%7RtAh2Irz-~jd-k`cbSG{+L}>(U)J~qggNy^ zpEEVKpylOGLfARCf$(!i)u$}?)Em>CMc8yM~SFo z$sRuv>$0Qr8`dbAo!o^Rf$)mWyg&x>H(zX*_iFwA{LR`HTpCG^*jm@pNM+>ONjn6= zYq$#IZ2c3G(7aAyc>?!s4{aQrvQ-wNpY4VVNoiw?#3o`j?_(E54zJkr)N%{Sx~siM z4njwsNQ}S;DYag*_s^`pD=A5k2c>~!?mirILDaVuh&!SAtfWeK?lHBoAQfxaG7jh6 zG1u@LO{hpI`ZweUelkSjsgm40AetxY19wB zNh5crh%d|0ZX}A|6$A51s!?(=7r(@8@*fH*t4C8z1k@OE&&VTC)rOO4TQ|iTCy6ew z6KZ@5ln3Y?_pG~6`W(J9)y(nxx@t{RUKq`H-%~-{SRnok-sX)LU{UVnr^RVY zP^}(>Mbuw-VZw#9VAp~nc0UutJ8pJ2_v|p`Znr74imQDVhE*=b*W_0GoW&wL1C3xn z-EdvaERq@jr1tR@fjGuvG4W_7HTHgpF{JAzn6WS`*`=6rM6 zmU=B&G5`6y9Pgh|l@|0*E&g}1&z}_6$U>`+&1X9|Cm{_3EglRHQXl!yww?#GO zKdecuYF6W^(eY2YxqgbV+3gITxHSaj__Rcy|IuYCP*dxMV5@XNVrYO6{KmO$g=2s> z`4C>rW%qG?`qZn?IswFp4?AtmqPB&j5d*n@p>G{04~2(>%L+!f+bDe_H0LVZz$q1U z#P&`k*7UUxa#8_fI@L|s*fZ2meNizL9|6^m?0M{fb7{z zaH{xaqxh^33(_)EHI|$jy1uYnYnkevt6hLEfM~8^IDU|PS5+JVp}W0v7M%?Jngz{PzIVT4b%k>&Y^uVE2&bdtY)1qYE_K+MFO zRcni_jHknnSxj=3#*iJ>gfTLA_~8^0ZHgAz;4np4A5m5BHfQkg7yVkiUSk=iWp;z1 zecvCvAt@p)6_#_l{_a{B!66L6-mvgdH}Nl9X}9?DFpQ^0)PtXvLNZnjFW~+uSw3lv z^Q8g3rvX?RU;|y_-^tR++{DD$iSgGT=0CD#Mxu`0G7*pnQl1DBof_eB9>i10u@@ey zSz!HWiLvsJF+yh|jIEM=IpbaDIzYDw$L03*yW`&5>8)#RS2Kp2lbS(KB*!72f>s_e zRh>FpBZM@P&e)S3PO`|!fwI50eSKZEHalMW0mvfCb%6NVZdYt^D29;M+E+idE@@J+ zOQ?53fdMbQtE$psEp_9?f;TnJB~1&&`Cbw<098Cq@zr>I#RVOPKf>hCP|5 z1m}212NIpfPT1by(x9*Kcy1Cqb~0g6auv_;t?s19x8QK2CdGJ~nAh^I&j{6~xkD4; zg0~`jbxNCvQ0jdms#7u6E!f|k1tRwLLIN{Aeo$mFW()hB`!ZvbZ@4i;X@-QwEF=-v z>>$MUIz^;wD_rl%K0(lQ0t#bexE(ikFthBngue`Ub?{K!uB+#r= zwy}u`do0|WpeWDPa+b-EY62CZ2jb0fY&i)nJI<1e18V7Te1v=#xY#@*`=Y1i0*}ze zHO`{*qSA_I z8>2aecpn!;4VM)=%hTCWHn3mRYl1RBt*o>>yEp(F41$lXO^_7psS5clK zTJpW?k4$tHx;}CI_&sRsdiI-s1JFY`3!me3EM1C zVkZK>-oWqm0?Ke%Unnq^p=kcscxL%mJb$!HXF?xbqdegy>Vz_ip8^k3(JHs}N-z56 z;Tj2}W<6%TS7fo~HMkN_oe=I1J?OW!_O_ybtN}BiNSjBOx1uU6<*w34gjfQHQ0rbeo`q{dv7Px-rGaitBJJ(Bb3Z@ie3> zpqus1=k@;SbZ^G8uEpc+Xy@r^hUOtH<;SX^>C@%o&7@CV8>(6;4!_%9bCX`90fuftT$8C( z6prJ_eyc|cRS^p)iT;)&Wjgk$N;2*Ge3;pMwgOs-Z3kI-$E8Zg4?lRT~2)aoi@^E#Zp| zXu_Q$JAbL*$4tAAA4}R);)HN8)JW3TFh5WM2Pxh>QQe&7!-s>9>{^qP7@bQoNW+(8 zmXr7`HIJia*O;Ue8HJQY%32O#s~C^O6L8Sb#^Ed*WGj&=;3kpyO_zM_6Uf_z!{(;~ z$+4eMBZ-GtY@=e~bhjX{8(-+> z>HY7IGC@%8E5%CEBRoNMRkE?$V*m9xTO-#U-3p>*`VjrbO zn7!(!-WIJJY^*Hmp0AuAD@NxHDvnIYf?wOdJFm{jl*mA(grtX^eNmkeQeA5s$aY+$ z<};a{Wy0>LINPw`<^^5_5kd>SQr*1gc-!c9is+yxXtx3EVCzZ5J7z)8pKGLUT-UCjkX{h zJYDk_%K1IdwI9-X@Q{V7Z~>VTN@*CIm=*~^T-MOKqyqTtp@TjvS2eX_^z5O#F|Shj zV5;mfI;QZ-l<9FSNd#a?sZ6rE-9(Nwq6;!v+&<7YZl=s%QmTMN3C$w3UW|vNoy@OP zYBtdIF;VbqLFv?>vbaA2nG>!-8Rck#OQ7>kec9jUl2OXsa#qMK%{v+UJ-G#q^NLE` zI#?=q6x$C-L>i3gr2jzAEmgeQqpqndWW(UmD3gS5%VQ~yD_ZLED~+wpP{Rd*gK7Wt&#P<6`>f+i>XhG=!40pz-dkltgXnGL|Ei{pJUz zd;u$24ogBF7cMDVKs=3l5PBUSSTrCz8Ak9ORC!o+j*Ls7m23KkyQi-1+ZN-|Mkar; z$=}^VO621f#cW@+@U+@937aY#OmvAHsZA!7k_D|X=|2rF>gq$p^muF6mL_u&(=t_$ zdV55ftho3rKl4E67d+QxbhO*oc{~T9zUCY#FzYwgdyB&s+*}5VYCBkr3$M^n+ zs@JA@@%A^Z_;*68!G3(*+ae9i~xA(@)pS;ybT@|hG zVt3qIX6{B=6^$4w<*8)hct0IFV3A?{9UcWM|;=wy@J;$IK*7ED$P~q zQ#&BYIkYa$ff=Yog(g)L2sS84CrTz;+0f~!rrZ(ZItU|TW@A59JIz$y@lpR#hn$1N zFH-M%KcaCMXlF>hJXiIIk(wG%ri1D#T-XqcZ?V#LbOm$v5KdI@Hd)suxl45Rc5-xm znuXsW5~HuLo46G%wqU5~kyYyxiThq0T5GWszNg&t^Cdk&B7)Y4Bg!C5pvRQ<=tQSp z%kvvqh`$}}n{^pu>Jv*o+S1qd)EBrRmxBwINPo9TKh7li%Pss2p)#I<1 zR!co0DNFAlMJF}e2&^3ce@T-=DIb|_fD~T^?~fMPud>(K+{DI&@z?oR#e1wNZ-@3C zy;J@06ZQ##A!S1tDLy(chlMDSG(5)O#pgC&H&-)uR=M-9{ziq;suul)N46TnmKAq_dSkX|x2v-XxSv8^bNt;;7$gl*O&@o;{ z7M$C5iTh*lg`1Z$o)b^WE=)U?s(h4Yk_AiL1Rwf|4R0< z&OmR_^U~`f_|<;#99_|Fq<*DzmeEG;01u#i)#Tc`YWb!38XgcrY;I{nJze3fHaZS7 z4m#wWS-eW4DuaQgm($5Y>D0bxt#;H*ms|p}Se3;6Y+0(dsNs4JX?*d6+q1CwyX6o3 zHV{ou8^pC{l`2*3Hjw_vqF(NLSM%Zo){2a)2KF&N&Wjo&l~-TEB0xrD6s7 zJt7tXz?`Tzyht*Nm8FX~&;gE;U%1B9cOIIdtwts{%)Wmd=L5P(-&vwx7Y9O@962xwlL-LHwV6~dEf4-zsnaS^m)1L#`12X+w^(b zNHFX4K7|s294Gtyx|6?_&G-5BdA(Upblm~Nfay)~heX?M>hiU1!JM%dKze!ROdW^5< z6O7ZC8%7MeoF`c;mw|YIUN6lpOtT=S0m^(bEFS^NfMTnB!SzWqvCx|TOe6CwZPoIp z1ulm;k?*-NyX<4`D9ytmU$H4u)lJg|#E+pIp^3x4GpGyPBYt8P6AXA~-!iq@Nae8N z7_?3dqONZGMz3igZkdHf)W8M6+uy3vgwGH}?k*+P>E%6jJ z^yVR8PiNIj{Zqi3=c-QPXz|yEI#4*-%L+yg9mm>gDME#T+aD=$R@2wRsE85XP?)k{ zc12AGQ;GfO?2M;~45$mo!v5tkCE<5Q8Nx9-9He?=PSbH>IA55SQ%zXC;*ILZxukN( zIT8$1C*d0iB`aLr))=bL&3dVESg9pUUo)7rzJtq+TJKCRGt+)7#Y`Jl{c0`7S~#I- zQ^s;{ugk8Hp@r6h4Bif>(G1Djl1yNVHYTaJygD(C)@VMrcSwS>B{1w&aFcbXxX5LJ zN}IrRc`rHXPI+I_^|f-i1EO(;t8}Qc)_1kf!)~i^*q-+)eq!0^U})OVu@;?x!~e5O zGj0yDS(HA&h~86{<-BD!>YXWyHe!(ULbV`ss%+Clo911J363pI#p)iq>!A=u!BQVf zL#~1D4sn+fYargkmva5NE2S=pM?A@zTG;OMMkx?iXB`Mlk(nyL2}Jad;S!Ee2#(me9{9r-79+zLUfH-nO9Rz>;3VK|kD zXnyF8_LX5!<|Wcv=fTt!Rp<_?ePA5&d$n_#m}as-P|jY;M?poOAjNpx6+r*J^=|Qo|R=E9`)@eh!MQwp3KoLNYC)G+%rme zs5tREMYN7Exy!D_Dn$?X-k>V+m=u^%mL2W3LcC=q{MKMNZqcUAf1{Y*U5GU8v;Le< zV%!&4BcRagiDXIZzlLk=5kyqRxG(^A0BSL6goI1kY91h!P>Ue*b2ZBY4}x>ry_k0g zPV^AsnF-)2JFRgR&f(1iI zVWgcy4N+3KmD@*^>1Q9M#FoDQ9qMVD45e*7l@F{LbCM-~J;Yv=wq9Xc8gzJ2%F%Pw z_3S`5oRr)>xvNnubrL^@Wy08i%yZb-7!gpCr+@E%@lLZs*DvTub4&4Jx=9>e0)GZK z234+^i7W*%Wrh@frzy=LV3+Ux=Q;c^P&!@uV-L$QrF6BAp8}U!1Ao5U-1a^R3Us{g zY-M*6P<#fyz{bwkm)AQRk#9b8X*=L;JASCjQQPpWdA zRmf^Z+NOt|_z1oSAhL%PMh?_nyWo>O>WsWtRLqb% zcNaEwx?y|(^)A+yhECa1l%9%Y6;l;5S94YuLG|-QNp(cL=z!rgr*p(F1|?r^Fc z$RR$?fMvo<1DM8!MrzVV$;a=2Ev= za7b0zGEK9nQ}a{NF^c7*T{S`y7=SZhtBPaFP*|PDjtWn;y*P19Bf32I0-9aNXad3= zMp;!tv1pdEZA>7S+}dIhud8v?GhDo4G!%0vzvocH3XcxkPGhxiR4h9k%w5{|y>?+X z)CU)$<``?5l3OyV#N1o(sf_|V+^tZ|M$#MDEOQ%xlvbW^xrH2m=_u!cVdq#H; zD{o|kh{)!iv+MRuqOnW3fT?Fj{z?JV5T_!1$12~JFB{Rp7Z98CQcwW%qoTf1r#Iovw@FptBT}${=1id~9m6&0-!Sp3-Wv zi*Vgfh{*U&c>2;d&CbZNh8G06VU`eM-O0!36~|I>G1F!5N*Zyq92yYqkv)jSPv>@Y z5Mg84l@xm$JF3UGpdP5#Z34F*xq{8d4?p|2FIf<6<~#12oy-I`1}X)ag@`xZdi{Ia zb!SKB)~l9lhK`+S?pvZk7Icntd8@M@qgNxI8fLB_srDfPI@Th*2HWx75@-c)c^6(t z?QR=(xPEYgLi~Iu9d9J9VN^aKvZ~00>MWQa_(P+|vU4r+4cI6A&&K*9w$#8FFfEZI z0|4m%PD|znjwZ&+&W;wgX1}sifx3u4;I_s`=7_ zSwxe5)IzEa4b6_In-sK_NQ;P2-a(6kE)O{P2#1Ks1MBFwE&1o5Oshfad);FC?F6T6 zk4bJ|CyD#+=YD(YY~op5PDvhJKlUlZ=smcFwp{qMSmeXO;8Os~K(S?8;&!pIR48){ zL{c->+jT-onWcaRZ7H*<(#*8p!^`1)LG0#_R!6N^fIAf}wQfM?NT8l9Eoin1C4{hy z>;o7b-es|yqM_&3WqpC49>dUm5&6Zug+U+AMv9vX#+D*|mLy_m{H^}-X zoY~m2WUFL(#pFhJq1fX)3b!jOo_=Y(;A&cIX{|ci~Kv{9r~hW{(l>6KF7Q zB%)c8Q)oE1Vj@|R3us|YD7Gozym6vUVBksp7(2*NG`6!=%84w!gRL2@A+I+!f+MDg zC)=Aqt~5v8+(jZ8UZZjAPQT~W*+7qxW(lQ$DstGKR^&e8_1K)Ev(p3~2uHVX5yEq? zfb$#S_;a6{bdfPrpyHZ0>bh7~DGG!jPEviylO}A}rs#pM4v0l0nXc}|4T3Crr%jil zK{D;VBQg`Gt9SBzg|C`UrGEJARdhCg4V!DEK=ODZ-+rDL`Z}TS8>v(E<>tmFK?^}) zqXC+V?b99m2Ps4bOL-h*9ig=p(Ga|P%bz^&`|&k{5Etut>W2{(%RYrB<7w00f4P{# zCS&-ZNO7F10_Cc|n0Fn-pot>Qnu`%UC}#z`ykhtVTD4$tln;stp6 z@ztnJLgBQ0ai|}#JlF98>A6ZaW;hYqW!{EU-zn2`gY3m~Rl-mMqUnHx{b_r0_Ilbi zRk#kdwVe-_2f9%+YD>I>)5-@1KwBJ%^s=y)zb1DmoFYzip5V_#_PWTsRO48}{yYeX zj2eid<)}+LIUe)o$n_%Vz2Nx*5;_qL$4{Gc8gncb=$_Pz*E z@=e|7rpb!T2UHfYi@eQe2RdcTb|PS+!4LA>Exqq00k=XYRMkuR^mHQ8u)0w9v32$P zdeL-HT0i0J8DT)>Q{7jEHrw6}wP&iT)iF(YP!N5bQ>`z15L<>gJG;z5h0;$pFc_C# z_GGfy)=zCSW#9FH&}1B1y}xC4NP@IBFu}ZM#TvDhzxU;KGdZ3kM%E6TQv`*Qf7%T5 zDAT3SQ5w(C5pGuIJ<)05z}$zkhP}S=xuAEl`da4+TWF{!--Y2Nd-jTc+oE@;6nyo# zabvI=ZjCsE+N@e@AC1U)V+nKY*yLO;bKbvM#mRmzdhT|Ko4DF493pI3qCKBok+TI$ z2d+CcflmgiVw`}m*^Q7J7c`qkuP~TZbB$%3Sd?vwlO#_cb0Fn5Zn1e^vgtu3qeX&a z6pWL7%Y`7%Cq)=nc$yG`7UEo`qSMzI@TkD)=h+kEF~e zmZMZ2m=_I!`%@@Dt%b3jk%FV0y%VF6oukPg#0;p%`>(_TICY-!I`X}LNCjk{kr3|a z>(gyXZLkDuX}_dsk4S#FQ5~@wp#_^PD(mKg;W#I=p{`=Bcd9JH{@4N5 zZ@rDT6p}tdwfj76?J#~%xeO`?-P{k0k2c1<0^0kTC=X5P97OX>b`b=8P{AMcgf2QC z`^}jE+vJUJiaft4{#4_MGt+s{y8FrA{9Ofpxa^GBc)`s1E3>zrAh3srP-tt`53*Cb zo`|Pk$?}k?pd@qjp;h{V%A#0<&nHRa5UwZHR@zxwK|lnB&L%;U}JlEdAN zPL1kL=_;14hl^noM;29j=)K2D|HEAMnnLmD8#%>H?1x@s#n?bOvujfhk}MGSJ+BAa zOS^yc!nLr^%^5&1WCiZLA^+724eagz>x955`}dIn)cN2sBM+Pfwe{w;e*LB+!mJe( z&vrkB8bGk7dQzdTl8k9lyWo|q?FfC1;5f3(7CX3q%-}lr;B;VP+Oe_4$r{hKY-_C~ z8amJ#85K+|(`Av3*Eq3obLn^CWe!UG~{4 zwA^QPt6py_L5}R50-K!mrW)pbE=ev5ZQOd~s_(wT`ix#a%xS(pidj~~2X$+!bJOV^Vs!*I0o`r$!HWgchhmO6k zQ+zS1cTn5=&M9(AEuK{r_oG%{-hl7sKUw9^uO1e(K#xWQ=2hU=2!F||E>6yNHve_% z|L4*GKtbH3OfOKh0aW^m4)Kr2RDR@Lie}dl=A+{J#Awrkkyb!<;2iqaio+8E#rWCN z^Ii6x`&nVRI=62=Q^Pz>02>i9^pE`p^(S}%J6d#6eVwmMpQoga&&lYtcN#el^1tUZ zRbpYf1=iy5ad9#*H;fApEkO#X2^`eNeY+}LG+K4>B9&hKphOjdL+rHjVa_6Kzz+X; zn?B~WYDkUKjJI_;OQI^hSnnKdzu;&Yz9R{RaWqsc)CM)0Di=b!$JkHu12ipmRs78^ zf&azI7?Hxa>+&^0em84g_R5sU+*O#Z@9!J&2e6JlOi1=2oA`Aa2<@@9NM5jixai-= z=Gf@pjXv{^+%piy$qsVpPtZjF?$SdmUCu(&n@7`o$cg9aW&HX-l?w=roR`$f0}Yp{LA$BviNs| zzmv&7?EwG|S^(fbsO9hGe`f)IHE*N;i}}Af!SB|8&$xfJj%NCcwbB3NUj-QmpsW6| Q7l{Cn1$z4>%OC&!f54X*vH$=8 From b10cf493b597d99a441311eee2494af1544fccf4 Mon Sep 17 00:00:00 2001 From: kxdd <39694055+shaojiayao@users.noreply.github.com> Date: Tue, 30 Apr 2024 14:05:36 +0800 Subject: [PATCH 3/4] =?UTF-8?q?=E5=AD=98=E9=92=B1=E7=BD=90=E6=B7=BB?= =?UTF-8?q?=E5=8A=A0=E6=97=A5=E5=BF=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- gamesrv/tienlen/playerdata_tienlen.go | 3 +++ 1 file changed, 3 insertions(+) diff --git a/gamesrv/tienlen/playerdata_tienlen.go b/gamesrv/tienlen/playerdata_tienlen.go index e7c26ac..27165b0 100644 --- a/gamesrv/tienlen/playerdata_tienlen.go +++ b/gamesrv/tienlen/playerdata_tienlen.go @@ -13,6 +13,7 @@ import ( "mongo.games.com/game/proto" "mongo.games.com/game/protocol/tienlen" "mongo.games.com/game/srvdata" + "mongo.games.com/goserver/core/logger" ) // 玩家身上的额外数据 @@ -277,5 +278,7 @@ func (this *TienLenPlayerData) UpdatePigbankCoin(gainTexCoin int64) { proto.SetDefaults(pack) + logger.Logger.Trace("-------(this *TienLenPlayerData) UpdatePigbankCoin player SnId:", this.SnId, ";pack: ", pack) + this.SendToClient(int(player.PlayerPacketID_PACKET_SCPigBankCoin), pack) } From 72b5f14b6249cd399eb8532210783006dc44fa22 Mon Sep 17 00:00:00 2001 From: kxdd <39694055+shaojiayao@users.noreply.github.com> Date: Tue, 30 Apr 2024 17:32:57 +0800 Subject: [PATCH 4/4] =?UTF-8?q?=E5=AD=98=E9=92=B1=E7=BD=90=E4=BF=AE?= =?UTF-8?q?=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- common/constant.go | 1 + worldsrv/action_welfare.go | 4 ++-- worldsrv/welfmgr.go | 6 ++++-- 3 files changed, 7 insertions(+), 4 deletions(-) diff --git a/common/constant.go b/common/constant.go index 9ab1bd8..603f456 100644 --- a/common/constant.go +++ b/common/constant.go @@ -315,6 +315,7 @@ const ( GainWay_Collect = 64 //64.集卡活动 GainWay_WeekCardAward = 65 //65.周卡每日奖励 GainWay_PigrankTakeCoin = 66 //66.存钱罐领取耗费钻石 + GainWay_PigrankGainCoin = 67 //66.存钱罐打开获取金币 ) // 后台选择 金币变化类型 的充值 类型id号起始 diff --git a/worldsrv/action_welfare.go b/worldsrv/action_welfare.go index 6565640..b9631d4 100644 --- a/worldsrv/action_welfare.go +++ b/worldsrv/action_welfare.go @@ -454,13 +454,13 @@ func (this *CSPigBankTakeCoinPacketFactory) CreatePacket() interface{} { 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 { + if _, ok := data.(*welfare.CSPigbankTakeCoin); ok { p := PlayerMgrSington.GetPlayer(sid) if p == nil { logger.Logger.Warnf("CSPigBankTakeCoinHandler p == nil p.SnId = %v", p.SnId) return nil } - WelfareMgrSington.PigbankGetInfo(p) + WelfareMgrSington.PigbankTakeCoin(p) } return nil } diff --git a/worldsrv/welfmgr.go b/worldsrv/welfmgr.go index da77019..6813700 100644 --- a/worldsrv/welfmgr.go +++ b/worldsrv/welfmgr.go @@ -1559,7 +1559,7 @@ func (this *WelfareMgr) PigbankTakeCoin(p *Player) { // 先扣钻石 costDiamond := fGetCostDiamond(p.WelfData.PigBank.TakeTimes + 1) - if costDiamond >= p.Diamond { + if p.Diamond >= costDiamond { logger.Logger.Trace("开存钱罐消耗钻石", costDiamond) p.AddDiamond(-costDiamond, 0, common.GainWay_PigrankTakeCoin, "system", "-开存钱罐消耗钻石") } else { @@ -1572,14 +1572,16 @@ func (this *WelfareMgr) PigbankTakeCoin(p *Player) { 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.TakeTimes = p.WelfData.PigBank.TakeTimes pack.CostDiamond = fGetCostDiamond(p.WelfData.PigBank.TakeTimes + 1) + p.AddCoin(p.WelfData.PigBank.BankCoin, 0, common.GainWay_PigrankGainCoin, "sys", "存钱罐领取") + logger.Logger.Tracef("PigbankTakeCoin snid: %v pack: %v", p.SnId, pack) p.SendToClient(int(welfare.SPacketID_PACKET_SCPigbankTakeCoin), pack) }