From 52d2cc9b8eb66e454b25590b00bf93cd7465b68b Mon Sep 17 00:00:00 2001 From: sk <123456@qq.com> Date: Sat, 4 Jan 2025 09:44:53 +0800 Subject: [PATCH] update --- data/DB_NewYearActivity.dat | 3 +- data/DB_NewYearActivity.json | 6 + data/DB_NewYearRankReward.dat | 46 +-- data/DB_PigBank_Diamond.dat | 2 +- data/DB_PropExchange.dat | Bin 384 -> 384 bytes data/DB_Task.dat | Bin 6587 -> 7589 bytes data/DB_Task.json | 356 ++++++++++++++----- protocol/activity/nian.pb.go | 635 +++++++++++++++++++++------------- protocol/activity/nian.proto | 46 ++- protocol/task/task.pb.go | 127 +++---- protocol/task/task.proto | 11 +- protocol/webapi/common.pb.go | 479 ++++++++++++++++++++----- protocol/webapi/common.proto | 22 ++ xlsx/DB_NewYearActivity.xlsx | Bin 11837 -> 11947 bytes xlsx/DB_Task.xlsx | Bin 23910 -> 25364 bytes 15 files changed, 1229 insertions(+), 504 deletions(-) diff --git a/data/DB_NewYearActivity.dat b/data/DB_NewYearActivity.dat index e1daacd..8a9c732 100644 --- a/data/DB_NewYearActivity.dat +++ b/data/DB_NewYearActivity.dat @@ -24,4 +24,5 @@ ALittleGuaranteedReward100002,5"小爆竹保底掉落物品 GiftShopID991001,991002,991003"礼包ID @ GiftShopLimit3,0,0"&礼包每日限购次数,0为不限购 4 BossExcLimit30"年兽死亡额外掉落要求 -" BuffCount1"Buff生效次数 \ No newline at end of file +" BuffCount1"Buff生效次数 +oExchangeDiamond 30,5,1000000"L单次兑换爆竹所需要消耗的钻石,获得数量,获得金币数量 \ No newline at end of file diff --git a/data/DB_NewYearActivity.json b/data/DB_NewYearActivity.json index 2268940..e4df27e 100644 --- a/data/DB_NewYearActivity.json +++ b/data/DB_NewYearActivity.json @@ -119,6 +119,12 @@ "PorpName": "BuffCount", "PropValue": "1", "PropDec": "Buff生效次数" + }, + { + "Id": 21, + "PorpName": "ExchangeDiamond", + "PropValue": "30,5,1000000", + "PropDec": "单次兑换爆竹所需要消耗的钻石,获得数量,获得金币数量" } ] } \ No newline at end of file diff --git a/data/DB_NewYearRankReward.dat b/data/DB_NewYearRankReward.dat index 2b3cb98..d2486ff 100644 --- a/data/DB_NewYearRankReward.dat +++ b/data/DB_NewYearRankReward.dat @@ -1,10 +1,10 @@ -"""d -"d"" +""d" +""d" ""d" ""d ""c -""b +"b" ""a ""`   ""_ @@ -15,70 +15,70 @@   ""\   ""[ ""Z -""Y +"Y" ""X ""W ""V -""U -"T" +"U" +""T ""S -""R +"R" ""Q ""P ""O ""N -"M" +""M ""L ""K ""J ""I   ""H -!!"G" -""""F +!!""G +"""F" ##""E $$""D -%%""C -&&"B" +%%"C" +&&""B ''""A ((""@ -)"""d +)"d"" *""d" -+"""d ++"d"" ,""d -""c .""b /""a -0""` +0"`" 1 ""_ 2 ""^ 3 ""] 4 ""\ 5 ""[ -6"Z" +6""Z 7""Y 8""X -9"W" +9""W :""V ;""U <""T -=""S +="S" >""R -?"Q" +?""Q @""P A""O B""N C"M" D""L -E"K" +E""K F""J G""I -H "H" +H ""H I!""G J"""F K#""E L$""D M%""C N&""B -O'""A -P("@" \ No newline at end of file +O'"A" +P(""@ \ No newline at end of file diff --git a/data/DB_PigBank_Diamond.dat b/data/DB_PigBank_Diamond.dat index 3a06af9..735a0e1 100644 --- a/data/DB_PigBank_Diamond.dat +++ b/data/DB_PigBank_Diamond.dat @@ -1,4 +1,4 @@  (8@;PdX`c -< ((22Ÿ8@;JƸJPdX` +< ((2Ÿ28@;JƸJPdX` ?/ 2(2Ÿ28@;JƸJPdX` \ No newline at end of file diff --git a/data/DB_PropExchange.dat b/data/DB_PropExchange.dat index cc7f1961579ffb3a487a7ae7441980a203308cf4..25efbb46b252e46cd63aa3eb9e556b278650c6bd 100644 GIT binary patch literal 384 zcmd-w<6snElw#w!+{O&1uR!UmQ2H8_z7C?5I5-yevI!h$vE|a^U;?YZ0hPZArEfv$ z+i2>;IUweP%>mknRXq{z0Nba;33f-r+D9y0u^cR5hrkTHgUumC7z}e5!~%AXML>^! KVdi3>Ed&5(YCJUn literal 384 zcmd-w<6snElw#w!(#8y?uR`f-Q2IKQz6_$3I5-yevI!h$vE|a^U;?YZ0hPZArEfv$ z+i2>;IUweP%|WscWx~fEfU@0PHZJ17Hq;IRIwC T9k9dMITisu`h}T`fwm9;VzN9n diff --git a/data/DB_Task.dat b/data/DB_Task.dat index 0bbbaa0ab05e8dafb8ad3e2199d1ec359f12da08..f7ef517aea95dd8dce766a5b4e2d00985da3fe4b 100644 GIT binary patch delta 1920 zcmaKt+iw#`6vnl7?2H!&kJF8BNELyEA}S)U!HONXftE`}RH7j9A5`;DsYc=v`mj!v zkPs<2WU4>~C>Ie?RSmIOhbDDE5Jlo4+$y17D3<`9we!>mc<5tiJ)3xE3HFPn(f9k# zoHOT~&F`5?WX1%q6I>l~La76Q3Htx|j2&l$Q^sk;I8B{Bt+v_T*y!=^XY9~s91l-; z)E0+VsCSjw@#Tv`2UAG+n6s6tC#mI{dVI*K{^-0Scv+;CYxPvD3+(DwpxKW9aQW1p zO|l+DKNXE2cX~g^OLgDlUbh!_ZQhNs%d4K-yn6$gdLORT_{e;Y^xY~>-zEbYGBrvD zvpYd}J6>!!qO^l$1nnU=lW4g-8T@Hmu#}rF%x7fnmx)3?ul1(M^u^VYZ1L7G<$N(= zzn;?znzbl?0q!GMW8p*E+?+O$KK?B_@f|v$&HPZBy+khm7NvgFAZRjB#4bThfCmUV zEFKc`AVb}SxwBd(Cx;pBh>4Z(T{e1whX^_?aHx=FomPWsgrqX=3 z#NOFCk2?XW*~`)+eSIXgAh*QhO;lMMyT=~)Ww|cxBS8s234E%24gN&XV~N+S4GfdP zF)}mHnrAgNPEQI8SIKo%4wrw$o_XrJZN1*iwiEn?AhfvcsN$v=cHuR@_3|;pR`551 zUW=iZy*^7YUQWZJ9YGtheQ8C@S|#Iv=a2+7E}FW z;2DBaH8Nfy)18!5)}}21o+H>`L48K$`t#bAluXh;v*(~!ZZu7rNSo#bg1%~SgooFg zS)qfT051{rSEKjvw7KOHU`&_po3-XM~Tf2o3wb`7&MU%+Bf*Fry+6(+(<&31v2&tgZ6UNTRR?h zNs4#~s7ZYpbHO++&T-{le(%#E9tOFjzLPl{pZU%*?^AAUaFBhm7C$z=K@Ms(o75Nc hhm9h<(XW1-sgw3n@Mcn9${z-40nByl{{*Kz(*FsRNm&2@ delta 740 zcmZvY%WD%+6o ziDchZ?h~fKBjJ`Soo<^?G`kGL@_*v#z%dE;0y=&em=Xep)zGMmNpAJqdqMj~X!I|} z>}9&yha)T^gURsS;FtR-0E6g=pzmK4^w$9f9ZIrV$cY~)Y` z%!Jp98?h8lMJN_xloT;;mI1TnX(&_ES!p^H29%jbDoHPF{>o=L@>n<;j z_?goITrmnt5x#I5!sqd1Dw7|}=LPGtwma~z&ecVmW@h{!wi<3byI2Xn ZaY}oq!5_LY=r;q_%*Tbf;ch{d`~k)g?e+iw diff --git a/data/DB_Task.json b/data/DB_Task.json index 1d61204..8aef01a 100644 --- a/data/DB_Task.json +++ b/data/DB_Task.json @@ -1239,9 +1239,9 @@ "Id": 13001, "Order": 1, "Name": "年兽活动", - "Des": "领取转盘签到奖励", + "Des": "领取年兽签到奖励", "ActivityType": 8, - "TaskType": 17, + "TaskType": 35, "TargetTimes": 1, "FinishTimes": 1, "Award": { @@ -1265,24 +1265,7 @@ "Id": 13003, "Order": 3, "Name": "年兽活动", - "Des": "购买任意金币1次", - "ActivityType": 8, - "TaskType": 2, - "TargetTimes": 1, - "FinishTimes": 1, - "Award": { - "50014": 10 - }, - "Position": [ - 0, - 1 - ] - }, - { - "Id": 13004, - "Order": 4, - "Name": "年兽活动", - "Des": "购买任意存钱罐1次", + "Des": "购买1次任意存钱罐", "ActivityType": 8, "TaskType": 22, "TargetTimes": 1, @@ -1292,83 +1275,93 @@ } }, { - "Id": 13005, - "Order": 5, + "Id": 13004, + "Order": 4, "Name": "年兽活动", - "Des": "参与大众场对局获得胜利3次", + "Des": "游戏Tienlen比赛场5次", "ActivityType": 8, - "TaskType": 23, - "TargetTimes": 3, + "TaskType": 25, + "TargetTimes": 1, "FinishTimes": 1, "Award": { "50014": 10 }, "GameType": 1 }, + { + "Id": 13005, + "Order": 5, + "Name": "年兽活动", + "Des": "游戏十三水10次", + "ActivityType": 8, + "TaskType": 5, + "TargetTimes": 10, + "FinishTimes": 1, + "Award": { + "50014": 10 + }, + "GameType": 2 + }, { "Id": 13006, "Order": 6, "Name": "年兽活动", - "Des": "参与排位赛获得胜利3次", + "Des": "今日累计赢取1M金币", "ActivityType": 8, - "TaskType": 30, - "TargetTimes": 3, + "TaskType": 8, + "TargetTimes": 1000000, "FinishTimes": 1, "Award": { "50014": 10 - }, - "GameType": 1 + } }, { "Id": 13007, "Order": 7, "Name": "年兽活动", - "Des": "邀请好友进行私人桌对局1次", + "Des": "今日消耗100钻石", "ActivityType": 8, - "TaskType": 24, - "TargetTimes": 1, + "TaskType": 27, + "TargetTimes": 100, "FinishTimes": 1, "Award": { "50014": 10 - }, - "GameType": 1 + } }, { "Id": 13008, "Order": 8, "Name": "年兽活动", - "Des": "成功参与比赛场3次", + "Des": "今日累计赢取5M金币", "ActivityType": 8, - "TaskType": 25, - "TargetTimes": 3, + "TaskType": 8, + "TargetTimes": 5000000, "FinishTimes": 1, "Award": { "50014": 10 - }, - "GameType": 1 + } }, { "Id": 13009, "Order": 9, "Name": "年兽活动", - "Des": "比赛场获得前十名1次", + "Des": "今日累计赢取10M金币", "ActivityType": 8, - "TaskType": 26, - "TargetTimes": 1, + "TaskType": 8, + "TargetTimes": 10000000, "FinishTimes": 1, "Award": { "50014": 10 - }, - "GameType": 1 + } }, { "Id": 13010, "Order": 10, "Name": "年兽活动", - "Des": "今日累计消耗100钻石", + "Des": "今日累计赢取20M金币", "ActivityType": 8, - "TaskType": 27, - "TargetTimes": 100, + "TaskType": 8, + "TargetTimes": 20000000, "FinishTimes": 1, "Award": { "50014": 10 @@ -1385,20 +1378,16 @@ "FinishTimes": 1, "Award": { "50014": 10 - }, - "Position": [ - 1, - 1 - ] + } }, { "Id": 13012, "Order": 12, "Name": "年兽活动", - "Des": "累计领取转盘签到奖励7天", - "ActivityType": 9, - "TaskType": 17, - "TargetTimes": 7, + "Des": "今日消耗500钻石", + "ActivityType": 8, + "TaskType": 27, + "TargetTimes": 500, "FinishTimes": 1, "Award": { "50014": 10 @@ -1408,6 +1397,19 @@ "Id": 13013, "Order": 13, "Name": "年兽活动", + "Des": "今日充值1.99$", + "ActivityType": 8, + "TaskType": 7, + "TargetTimes": 199, + "FinishTimes": 1, + "Award": { + "50015": 10 + } + }, + { + "Id": 13014, + "Order": 14, + "Name": "年兽活动", "Des": "参与红包雨活动1次", "ActivityType": 8, "TaskType": 32, @@ -1418,52 +1420,244 @@ } }, { - "Id": 13014, - "Order": 14, + "Id": 13015, + "Order": 15, "Name": "年兽活动", - "Des": "累计充值$9.99", + "Des": "成功对年兽造成伤害1000000点", + "ActivityType": 8, + "TaskType": 34, + "TargetTimes": 1000000, + "FinishTimes": 1, + "Award": { + "50015": 10 + } + }, + { + "Id": 13016, + "Order": 16, + "Name": "年兽活动", + "Des": "成功对年兽造成伤害10000000点", + "ActivityType": 8, + "TaskType": 34, + "TargetTimes": 10000000, + "FinishTimes": 1, + "Award": { + "50015": 10 + } + }, + { + "Id": 13017, + "Order": 17, + "Name": "年兽活动", + "Des": "累计充值9.99$", "ActivityType": 9, "TaskType": 7, "TargetTimes": 999, "FinishTimes": 1, "Award": { "50015": 10 - }, - "Position": [ - 1, - 1 - ] + } }, { - "Id": 13015, - "Order": 15, + "Id": 13018, + "Order": 18, "Name": "年兽活动", - "Des": "累计充值$19.99", + "Des": "累计充值19.99$", "ActivityType": 9, "TaskType": 7, "TargetTimes": 1999, "FinishTimes": 1, "Award": { "50015": 10 - }, - "Position": [ - 1, - 1 - ] + } }, { - "Id": 13016, - "Order": 16, + "Id": 13019, + "Order": 19, "Name": "年兽活动", - "Des": "累计赚取10B金币", + "Des": "累计充值59.99$", "ActivityType": 9, - "TaskType": 11, - "TargetTimes": 10000000000, + "TaskType": 7, + "TargetTimes": 5999, "FinishTimes": 1, "Award": { - "50015": 10 - }, - "GameType": 1 + "50014": 10 + } + }, + { + "Id": 13020, + "Order": 20, + "Name": "年兽活动", + "Des": "累计充值99.99$", + "ActivityType": 9, + "TaskType": 7, + "TargetTimes": 9999, + "FinishTimes": 1, + "Award": { + "50014": 10 + } + }, + { + "Id": 13021, + "Order": 21, + "Name": "年兽活动", + "Des": "成功击杀1只年兽", + "ActivityType": 9, + "TaskType": 33, + "TargetTimes": 1, + "FinishTimes": 1, + "Award": { + "50014": 10 + } + }, + { + "Id": 13022, + "Order": 22, + "Name": "年兽活动", + "Des": "成功击杀2只年兽", + "ActivityType": 9, + "TaskType": 33, + "TargetTimes": 2, + "FinishTimes": 1, + "Award": { + "50014": 10 + } + }, + { + "Id": 13023, + "Order": 23, + "Name": "年兽活动", + "Des": "成功击杀3只年兽", + "ActivityType": 9, + "TaskType": 33, + "TargetTimes": 3, + "FinishTimes": 1, + "Award": { + "50014": 10 + } + }, + { + "Id": 13024, + "Order": 24, + "Name": "年兽活动", + "Des": "成功击杀5只年兽", + "ActivityType": 9, + "TaskType": 33, + "TargetTimes": 5, + "FinishTimes": 1, + "Award": { + "50014": 10 + } + }, + { + "Id": 13025, + "Order": 25, + "Name": "年兽活动", + "Des": "成功击杀8只年兽", + "ActivityType": 9, + "TaskType": 33, + "TargetTimes": 8, + "FinishTimes": 1, + "Award": { + "50014": 10 + } + }, + { + "Id": 13026, + "Order": 26, + "Name": "年兽活动", + "Des": "成功击杀10只年兽", + "ActivityType": 9, + "TaskType": 33, + "TargetTimes": 10, + "FinishTimes": 1, + "Award": { + "50014": 10 + } + }, + { + "Id": 14001, + "Order": 1, + "Name": "累消活动", + "Des": "今日消耗99钻石", + "ActivityType": 10, + "TaskType": 27, + "TargetTimes": 99, + "FinishTimes": 1, + "Award": { + "100001": 100000, + "100002": 1 + } + }, + { + "Id": 14002, + "Order": 2, + "Name": "累消活动", + "Des": "今日消耗499钻石", + "ActivityType": 10, + "TaskType": 27, + "TargetTimes": 499, + "FinishTimes": 1, + "Award": { + "100001": 200000, + "100002": 2 + } + }, + { + "Id": 14003, + "Order": 3, + "Name": "累消活动", + "Des": "今日消耗999钻石", + "ActivityType": 10, + "TaskType": 27, + "TargetTimes": 999, + "FinishTimes": 1, + "Award": { + "100001": 300000, + "100002": 3 + } + }, + { + "Id": 14004, + "Order": 4, + "Name": "累消活动", + "Des": "今日消耗1999钻石", + "ActivityType": 10, + "TaskType": 27, + "TargetTimes": 1999, + "FinishTimes": 1, + "Award": { + "100001": 500000, + "100002": 5 + } + }, + { + "Id": 14005, + "Order": 5, + "Name": "累消活动", + "Des": "今日消耗2999钻石", + "ActivityType": 10, + "TaskType": 27, + "TargetTimes": 2999, + "FinishTimes": 1, + "Award": { + "100001": 1000000, + "100002": 10 + } + }, + { + "Id": 14006, + "Order": 6, + "Name": "累消活动", + "Des": "今日消耗4999钻石", + "ActivityType": 10, + "TaskType": 27, + "TargetTimes": 4999, + "FinishTimes": 1, + "Award": { + "100001": 2000000, + "100002": 20 + } } ] } \ No newline at end of file diff --git a/protocol/activity/nian.pb.go b/protocol/activity/nian.pb.go index cc51864..a58715e 100644 --- a/protocol/activity/nian.pb.go +++ b/protocol/activity/nian.pb.go @@ -34,6 +34,8 @@ const ( NianPacketID_PACKET_SCNianAttackData NianPacketID = 2667 //返回攻击年兽信息 NianPacketID_PACKET_CSNianSignAward NianPacketID = 2668 //请求签到 NianPacketID_PACKET_SCNianSignAward NianPacketID = 2669 //签到返回 + NianPacketID_PACKET_CSNianChange NianPacketID = 2670 //请求兑换小爆竹 + NianPacketID_PACKET_SCNianChange NianPacketID = 2671 //返回兑换道具 ) // Enum value maps for NianPacketID. @@ -50,6 +52,8 @@ var ( 2667: "PACKET_SCNianAttackData", 2668: "PACKET_CSNianSignAward", 2669: "PACKET_SCNianSignAward", + 2670: "PACKET_CSNianChange", + 2671: "PACKET_SCNianChange", } NianPacketID_value = map[string]int32{ "PACKET_Nian_ZERO": 0, @@ -63,6 +67,8 @@ var ( "PACKET_SCNianAttackData": 2667, "PACKET_CSNianSignAward": 2668, "PACKET_SCNianSignAward": 2669, + "PACKET_CSNianChange": 2670, + "PACKET_SCNianChange": 2671, } ) @@ -139,16 +145,18 @@ type SCNianData struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - ActivityStartTime int64 `protobuf:"varint,1,opt,name=ActivityStartTime,proto3" json:"ActivityStartTime,omitempty"` //活动开始时间 - ActivityEndTime int64 `protobuf:"varint,2,opt,name=ActivityEndTime,proto3" json:"ActivityEndTime,omitempty"` //活动结束时间 - BossMaxHp int64 `protobuf:"varint,3,opt,name=BossMaxHp,proto3" json:"BossMaxHp,omitempty"` //Boss最大血量 - BossHp int64 `protobuf:"varint,4,opt,name=BossHp,proto3" json:"BossHp,omitempty"` //Boss当前血量 - LuckData []*RankData `protobuf:"bytes,5,rep,name=LuckData,proto3" json:"LuckData,omitempty"` //幸运榜 - AwardTime int64 `protobuf:"varint,6,opt,name=AwardTime,proto3" json:"AwardTime,omitempty"` //每日签到领取时间 - BuffCount int64 `protobuf:"varint,7,opt,name=BuffCount,proto3" json:"BuffCount,omitempty"` //Buff剩余次数 - BuffStatus bool `protobuf:"varint,8,opt,name=BuffStatus,proto3" json:"BuffStatus,omitempty"` //Buff领取状态 - On int32 `protobuf:"varint,9,opt,name=On,proto3" json:"On,omitempty"` //活动开关 1开启 2关闭 - SignAwardTime int64 `protobuf:"varint,10,opt,name=SignAwardTime,proto3" json:"SignAwardTime,omitempty"` //签到领取时间 0-未领取 + ActivityStartTime int64 `protobuf:"varint,1,opt,name=ActivityStartTime,proto3" json:"ActivityStartTime,omitempty"` //活动开始时间 + ActivityEndTime int64 `protobuf:"varint,2,opt,name=ActivityEndTime,proto3" json:"ActivityEndTime,omitempty"` //活动结束时间 + BossMaxHp int64 `protobuf:"varint,3,opt,name=BossMaxHp,proto3" json:"BossMaxHp,omitempty"` //Boss最大血量 + BossHp int64 `protobuf:"varint,4,opt,name=BossHp,proto3" json:"BossHp,omitempty"` //Boss当前血量 + RankData []*NianRankData `protobuf:"bytes,5,rep,name=RankData,proto3" json:"RankData,omitempty"` //排行榜奖励配置 + AwardTime int64 `protobuf:"varint,6,opt,name=AwardTime,proto3" json:"AwardTime,omitempty"` //每日签到领取时间 + BuffCount int64 `protobuf:"varint,7,opt,name=BuffCount,proto3" json:"BuffCount,omitempty"` //Buff剩余次数 + BuffStatus bool `protobuf:"varint,8,opt,name=BuffStatus,proto3" json:"BuffStatus,omitempty"` //Buff领取状态 + SignAwardTime int64 `protobuf:"varint,9,opt,name=SignAwardTime,proto3" json:"SignAwardTime,omitempty"` //签到领取时间 0-未领取 + BuffStartTime int64 `protobuf:"varint,10,opt,name=BuffStartTime,proto3" json:"BuffStartTime,omitempty"` //Buff开始领取时间 + BuffEndTime int64 `protobuf:"varint,11,opt,name=BuffEndTime,proto3" json:"BuffEndTime,omitempty"` //Buff结束领取时间 + ShopData []*ShopData `protobuf:"bytes,12,rep,name=shopData,proto3" json:"shopData,omitempty"` //购买礼包数量 } func (x *SCNianData) Reset() { @@ -211,9 +219,9 @@ func (x *SCNianData) GetBossHp() int64 { return 0 } -func (x *SCNianData) GetLuckData() []*RankData { +func (x *SCNianData) GetRankData() []*NianRankData { if x != nil { - return x.LuckData + return x.RankData } return nil } @@ -239,16 +247,93 @@ func (x *SCNianData) GetBuffStatus() bool { return false } -func (x *SCNianData) GetOn() int32 { +func (x *SCNianData) GetSignAwardTime() int64 { if x != nil { - return x.On + return x.SignAwardTime } return 0 } -func (x *SCNianData) GetSignAwardTime() int64 { +func (x *SCNianData) GetBuffStartTime() int64 { if x != nil { - return x.SignAwardTime + return x.BuffStartTime + } + return 0 +} + +func (x *SCNianData) GetBuffEndTime() int64 { + if x != nil { + return x.BuffEndTime + } + return 0 +} + +func (x *SCNianData) GetShopData() []*ShopData { + if x != nil { + return x.ShopData + } + return nil +} + +type ShopData struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + ShopId int32 `protobuf:"varint,1,opt,name=ShopId,proto3" json:"ShopId,omitempty"` //shopId + ShopNum int32 `protobuf:"varint,2,opt,name=ShopNum,proto3" json:"ShopNum,omitempty"` //已购买次数 只保存有购买限制的礼包的数量 + MaxShopNum int32 `protobuf:"varint,3,opt,name=MaxShopNum,proto3" json:"MaxShopNum,omitempty"` //最大购买次数 0-无限制 +} + +func (x *ShopData) Reset() { + *x = ShopData{} + if protoimpl.UnsafeEnabled { + mi := &file_protocol_activity_nian_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ShopData) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ShopData) ProtoMessage() {} + +func (x *ShopData) ProtoReflect() protoreflect.Message { + mi := &file_protocol_activity_nian_proto_msgTypes[2] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ShopData.ProtoReflect.Descriptor instead. +func (*ShopData) Descriptor() ([]byte, []int) { + return file_protocol_activity_nian_proto_rawDescGZIP(), []int{2} +} + +func (x *ShopData) GetShopId() int32 { + if x != nil { + return x.ShopId + } + return 0 +} + +func (x *ShopData) GetShopNum() int32 { + if x != nil { + return x.ShopNum + } + return 0 +} + +func (x *ShopData) GetMaxShopNum() int32 { + if x != nil { + return x.MaxShopNum } return 0 } @@ -265,7 +350,7 @@ type CSNianBuff struct { func (x *CSNianBuff) Reset() { *x = CSNianBuff{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_activity_nian_proto_msgTypes[2] + mi := &file_protocol_activity_nian_proto_msgTypes[3] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -278,7 +363,7 @@ func (x *CSNianBuff) String() string { func (*CSNianBuff) ProtoMessage() {} func (x *CSNianBuff) ProtoReflect() protoreflect.Message { - mi := &file_protocol_activity_nian_proto_msgTypes[2] + mi := &file_protocol_activity_nian_proto_msgTypes[3] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -291,7 +376,7 @@ func (x *CSNianBuff) ProtoReflect() protoreflect.Message { // Deprecated: Use CSNianBuff.ProtoReflect.Descriptor instead. func (*CSNianBuff) Descriptor() ([]byte, []int) { - return file_protocol_activity_nian_proto_rawDescGZIP(), []int{2} + return file_protocol_activity_nian_proto_rawDescGZIP(), []int{3} } //PACKET_SCNianBuff @@ -306,7 +391,7 @@ type SCNianBuff struct { func (x *SCNianBuff) Reset() { *x = SCNianBuff{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_activity_nian_proto_msgTypes[3] + mi := &file_protocol_activity_nian_proto_msgTypes[4] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -319,7 +404,7 @@ func (x *SCNianBuff) String() string { func (*SCNianBuff) ProtoMessage() {} func (x *SCNianBuff) ProtoReflect() protoreflect.Message { - mi := &file_protocol_activity_nian_proto_msgTypes[3] + mi := &file_protocol_activity_nian_proto_msgTypes[4] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -332,7 +417,7 @@ func (x *SCNianBuff) ProtoReflect() protoreflect.Message { // Deprecated: Use SCNianBuff.ProtoReflect.Descriptor instead. func (*SCNianBuff) Descriptor() ([]byte, []int) { - return file_protocol_activity_nian_proto_rawDescGZIP(), []int{3} + return file_protocol_activity_nian_proto_rawDescGZIP(), []int{4} } func (x *SCNianBuff) GetBuffCount() int64 { @@ -342,67 +427,17 @@ func (x *SCNianBuff) GetBuffCount() int64 { return 0 } -//排行榜数据 -//PACKET_CSNianRankData -type CSNianRankData struct { +type NianRankData struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - TypeId int32 `protobuf:"varint,1,opt,name=TypeId,proto3" json:"TypeId,omitempty"` //1-幸运榜 2-总伤害榜 + TypeId int32 `protobuf:"varint,1,opt,name=TypeId,proto3" json:"TypeId,omitempty"` //1-幸运榜 2-总榜 + Data []*NianRankInfo `protobuf:"bytes,2,rep,name=Data,proto3" json:"Data,omitempty"` } -func (x *CSNianRankData) Reset() { - *x = CSNianRankData{} - if protoimpl.UnsafeEnabled { - mi := &file_protocol_activity_nian_proto_msgTypes[4] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *CSNianRankData) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*CSNianRankData) ProtoMessage() {} - -func (x *CSNianRankData) ProtoReflect() protoreflect.Message { - mi := &file_protocol_activity_nian_proto_msgTypes[4] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use CSNianRankData.ProtoReflect.Descriptor instead. -func (*CSNianRankData) Descriptor() ([]byte, []int) { - return file_protocol_activity_nian_proto_rawDescGZIP(), []int{4} -} - -func (x *CSNianRankData) GetTypeId() int32 { - if x != nil { - return x.TypeId - } - return 0 -} - -//PACKET_SCNianRankData -type SCNianRankData struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - TypeId int32 `protobuf:"varint,1,opt,name=TypeId,proto3" json:"TypeId,omitempty"` - Data []*RankData `protobuf:"bytes,2,rep,name=Data,proto3" json:"Data,omitempty"` -} - -func (x *SCNianRankData) Reset() { - *x = SCNianRankData{} +func (x *NianRankData) Reset() { + *x = NianRankData{} if protoimpl.UnsafeEnabled { mi := &file_protocol_activity_nian_proto_msgTypes[5] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -410,13 +445,13 @@ func (x *SCNianRankData) Reset() { } } -func (x *SCNianRankData) String() string { +func (x *NianRankData) String() string { return protoimpl.X.MessageStringOf(x) } -func (*SCNianRankData) ProtoMessage() {} +func (*NianRankData) ProtoMessage() {} -func (x *SCNianRankData) ProtoReflect() protoreflect.Message { +func (x *NianRankData) ProtoReflect() protoreflect.Message { mi := &file_protocol_activity_nian_proto_msgTypes[5] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -428,39 +463,36 @@ func (x *SCNianRankData) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use SCNianRankData.ProtoReflect.Descriptor instead. -func (*SCNianRankData) Descriptor() ([]byte, []int) { +// Deprecated: Use NianRankData.ProtoReflect.Descriptor instead. +func (*NianRankData) Descriptor() ([]byte, []int) { return file_protocol_activity_nian_proto_rawDescGZIP(), []int{5} } -func (x *SCNianRankData) GetTypeId() int32 { +func (x *NianRankData) GetTypeId() int32 { if x != nil { return x.TypeId } return 0 } -func (x *SCNianRankData) GetData() []*RankData { +func (x *NianRankData) GetData() []*NianRankInfo { if x != nil { return x.Data } return nil } -type RankData struct { +type NianRankInfo struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields RankId int32 `protobuf:"varint,1,opt,name=RankId,proto3" json:"RankId,omitempty"` - Name string `protobuf:"bytes,2,opt,name=Name,proto3" json:"Name,omitempty"` - Icon int32 `protobuf:"varint,3,opt,name=Icon,proto3" json:"Icon,omitempty"` - Score int64 `protobuf:"varint,4,opt,name=Score,proto3" json:"Score,omitempty"` - Award []*RankAwardData `protobuf:"bytes,5,rep,name=Award,proto3" json:"Award,omitempty"` + Award []*RankAwardData `protobuf:"bytes,2,rep,name=Award,proto3" json:"Award,omitempty"` } -func (x *RankData) Reset() { - *x = RankData{} +func (x *NianRankInfo) Reset() { + *x = NianRankInfo{} if protoimpl.UnsafeEnabled { mi := &file_protocol_activity_nian_proto_msgTypes[6] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -468,13 +500,13 @@ func (x *RankData) Reset() { } } -func (x *RankData) String() string { +func (x *NianRankInfo) String() string { return protoimpl.X.MessageStringOf(x) } -func (*RankData) ProtoMessage() {} +func (*NianRankInfo) ProtoMessage() {} -func (x *RankData) ProtoReflect() protoreflect.Message { +func (x *NianRankInfo) ProtoReflect() protoreflect.Message { mi := &file_protocol_activity_nian_proto_msgTypes[6] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -486,40 +518,19 @@ func (x *RankData) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use RankData.ProtoReflect.Descriptor instead. -func (*RankData) Descriptor() ([]byte, []int) { +// Deprecated: Use NianRankInfo.ProtoReflect.Descriptor instead. +func (*NianRankInfo) Descriptor() ([]byte, []int) { return file_protocol_activity_nian_proto_rawDescGZIP(), []int{6} } -func (x *RankData) GetRankId() int32 { +func (x *NianRankInfo) GetRankId() int32 { if x != nil { return x.RankId } return 0 } -func (x *RankData) GetName() string { - if x != nil { - return x.Name - } - return "" -} - -func (x *RankData) GetIcon() int32 { - if x != nil { - return x.Icon - } - return 0 -} - -func (x *RankData) GetScore() int64 { - if x != nil { - return x.Score - } - return 0 -} - -func (x *RankData) GetAward() []*RankAwardData { +func (x *NianRankInfo) GetAward() []*RankAwardData { if x != nil { return x.Award } @@ -838,13 +849,118 @@ func (x *SCNianSignAward) GetSignAward() []*RankAwardData { return nil } +//兑换 +//PACKET_CSNianChange +type CSNianChange struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Num int32 `protobuf:"varint,1,opt,name=Num,proto3" json:"Num,omitempty"` +} + +func (x *CSNianChange) Reset() { + *x = CSNianChange{} + if protoimpl.UnsafeEnabled { + mi := &file_protocol_activity_nian_proto_msgTypes[12] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CSNianChange) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CSNianChange) ProtoMessage() {} + +func (x *CSNianChange) ProtoReflect() protoreflect.Message { + mi := &file_protocol_activity_nian_proto_msgTypes[12] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CSNianChange.ProtoReflect.Descriptor instead. +func (*CSNianChange) Descriptor() ([]byte, []int) { + return file_protocol_activity_nian_proto_rawDescGZIP(), []int{12} +} + +func (x *CSNianChange) GetNum() int32 { + if x != nil { + return x.Num + } + return 0 +} + +//PACKET_SCNianChange +type SCNianChange struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Num int32 `protobuf:"varint,1,opt,name=Num,proto3" json:"Num,omitempty"` + Award []*RankAwardData `protobuf:"bytes,2,rep,name=Award,proto3" json:"Award,omitempty"` +} + +func (x *SCNianChange) Reset() { + *x = SCNianChange{} + if protoimpl.UnsafeEnabled { + mi := &file_protocol_activity_nian_proto_msgTypes[13] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SCNianChange) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SCNianChange) ProtoMessage() {} + +func (x *SCNianChange) ProtoReflect() protoreflect.Message { + mi := &file_protocol_activity_nian_proto_msgTypes[13] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SCNianChange.ProtoReflect.Descriptor instead. +func (*SCNianChange) Descriptor() ([]byte, []int) { + return file_protocol_activity_nian_proto_rawDescGZIP(), []int{13} +} + +func (x *SCNianChange) GetNum() int32 { + if x != nil { + return x.Num + } + return 0 +} + +func (x *SCNianChange) GetAward() []*RankAwardData { + if x != nil { + return x.Award + } + return nil +} + var File_protocol_activity_nian_proto protoreflect.FileDescriptor var file_protocol_activity_nian_proto_rawDesc = []byte{ 0x0a, 0x1c, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2f, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x2f, 0x6e, 0x69, 0x61, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x08, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x22, 0x0c, 0x0a, 0x0a, 0x43, 0x53, 0x4e, 0x69, - 0x61, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x22, 0xdc, 0x02, 0x0a, 0x0a, 0x53, 0x43, 0x4e, 0x69, 0x61, + 0x61, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x22, 0xc8, 0x03, 0x0a, 0x0a, 0x53, 0x43, 0x4e, 0x69, 0x61, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x12, 0x2c, 0x0a, 0x11, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x53, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x11, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x53, 0x74, 0x61, 0x72, 0x74, 0x54, @@ -854,99 +970,116 @@ var file_protocol_activity_nian_proto_rawDesc = []byte{ 0x09, 0x42, 0x6f, 0x73, 0x73, 0x4d, 0x61, 0x78, 0x48, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x42, 0x6f, 0x73, 0x73, 0x4d, 0x61, 0x78, 0x48, 0x70, 0x12, 0x16, 0x0a, 0x06, 0x42, 0x6f, 0x73, 0x73, 0x48, 0x70, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x42, 0x6f, 0x73, - 0x73, 0x48, 0x70, 0x12, 0x2e, 0x0a, 0x08, 0x4c, 0x75, 0x63, 0x6b, 0x44, 0x61, 0x74, 0x61, 0x18, - 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, - 0x2e, 0x52, 0x61, 0x6e, 0x6b, 0x44, 0x61, 0x74, 0x61, 0x52, 0x08, 0x4c, 0x75, 0x63, 0x6b, 0x44, - 0x61, 0x74, 0x61, 0x12, 0x1c, 0x0a, 0x09, 0x41, 0x77, 0x61, 0x72, 0x64, 0x54, 0x69, 0x6d, 0x65, - 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x41, 0x77, 0x61, 0x72, 0x64, 0x54, 0x69, 0x6d, - 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x42, 0x75, 0x66, 0x66, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x07, - 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x42, 0x75, 0x66, 0x66, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, - 0x1e, 0x0a, 0x0a, 0x42, 0x75, 0x66, 0x66, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x08, 0x20, - 0x01, 0x28, 0x08, 0x52, 0x0a, 0x42, 0x75, 0x66, 0x66, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, - 0x0e, 0x0a, 0x02, 0x4f, 0x6e, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x4f, 0x6e, 0x12, - 0x24, 0x0a, 0x0d, 0x53, 0x69, 0x67, 0x6e, 0x41, 0x77, 0x61, 0x72, 0x64, 0x54, 0x69, 0x6d, 0x65, - 0x18, 0x0a, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, 0x53, 0x69, 0x67, 0x6e, 0x41, 0x77, 0x61, 0x72, - 0x64, 0x54, 0x69, 0x6d, 0x65, 0x22, 0x0c, 0x0a, 0x0a, 0x43, 0x53, 0x4e, 0x69, 0x61, 0x6e, 0x42, - 0x75, 0x66, 0x66, 0x22, 0x2a, 0x0a, 0x0a, 0x53, 0x43, 0x4e, 0x69, 0x61, 0x6e, 0x42, 0x75, 0x66, - 0x66, 0x12, 0x1c, 0x0a, 0x09, 0x42, 0x75, 0x66, 0x66, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x42, 0x75, 0x66, 0x66, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x22, - 0x28, 0x0a, 0x0e, 0x43, 0x53, 0x4e, 0x69, 0x61, 0x6e, 0x52, 0x61, 0x6e, 0x6b, 0x44, 0x61, 0x74, - 0x61, 0x12, 0x16, 0x0a, 0x06, 0x54, 0x79, 0x70, 0x65, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x06, 0x54, 0x79, 0x70, 0x65, 0x49, 0x64, 0x22, 0x50, 0x0a, 0x0e, 0x53, 0x43, 0x4e, - 0x69, 0x61, 0x6e, 0x52, 0x61, 0x6e, 0x6b, 0x44, 0x61, 0x74, 0x61, 0x12, 0x16, 0x0a, 0x06, 0x54, - 0x79, 0x70, 0x65, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x54, 0x79, 0x70, - 0x65, 0x49, 0x64, 0x12, 0x26, 0x0a, 0x04, 0x44, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x12, 0x2e, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x2e, 0x52, 0x61, 0x6e, - 0x6b, 0x44, 0x61, 0x74, 0x61, 0x52, 0x04, 0x44, 0x61, 0x74, 0x61, 0x22, 0x8f, 0x01, 0x0a, 0x08, - 0x52, 0x61, 0x6e, 0x6b, 0x44, 0x61, 0x74, 0x61, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x61, 0x6e, 0x6b, - 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x52, 0x61, 0x6e, 0x6b, 0x49, 0x64, - 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, - 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x49, 0x63, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x04, 0x49, 0x63, 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x53, 0x63, 0x6f, 0x72, - 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x2d, - 0x0a, 0x05, 0x41, 0x77, 0x61, 0x72, 0x64, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, - 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x2e, 0x52, 0x61, 0x6e, 0x6b, 0x41, 0x77, 0x61, - 0x72, 0x64, 0x44, 0x61, 0x74, 0x61, 0x52, 0x05, 0x41, 0x77, 0x61, 0x72, 0x64, 0x22, 0x41, 0x0a, - 0x0d, 0x52, 0x61, 0x6e, 0x6b, 0x41, 0x77, 0x61, 0x72, 0x64, 0x44, 0x61, 0x74, 0x61, 0x12, 0x16, - 0x0a, 0x06, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, - 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x49, 0x74, 0x65, 0x6d, 0x4e, 0x75, - 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x49, 0x74, 0x65, 0x6d, 0x4e, 0x75, 0x6d, - 0x22, 0x26, 0x0a, 0x0c, 0x43, 0x53, 0x4e, 0x69, 0x61, 0x6e, 0x41, 0x74, 0x74, 0x61, 0x63, 0x6b, - 0x12, 0x16, 0x0a, 0x06, 0x54, 0x79, 0x70, 0x65, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x06, 0x54, 0x79, 0x70, 0x65, 0x49, 0x64, 0x22, 0xe8, 0x02, 0x0a, 0x10, 0x53, 0x43, 0x4e, - 0x69, 0x61, 0x6e, 0x41, 0x74, 0x74, 0x61, 0x63, 0x6b, 0x44, 0x61, 0x74, 0x61, 0x12, 0x16, 0x0a, - 0x06, 0x54, 0x79, 0x70, 0x65, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x54, - 0x79, 0x70, 0x65, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x42, 0x6f, 0x73, 0x73, 0x48, 0x70, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x42, 0x6f, 0x73, 0x73, 0x48, 0x70, 0x12, 0x2d, 0x0a, - 0x05, 0x41, 0x77, 0x61, 0x72, 0x64, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x61, - 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x2e, 0x52, 0x61, 0x6e, 0x6b, 0x41, 0x77, 0x61, 0x72, - 0x64, 0x44, 0x61, 0x74, 0x61, 0x52, 0x05, 0x41, 0x77, 0x61, 0x72, 0x64, 0x12, 0x1a, 0x0a, 0x08, - 0x41, 0x74, 0x74, 0x61, 0x63, 0x6b, 0x48, 0x70, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, - 0x41, 0x74, 0x74, 0x61, 0x63, 0x6b, 0x48, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x49, 0x73, 0x44, 0x69, - 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x49, 0x73, 0x44, 0x69, 0x65, 0x12, 0x33, - 0x0a, 0x08, 0x44, 0x69, 0x65, 0x41, 0x77, 0x61, 0x72, 0x64, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x17, 0x2e, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x2e, 0x52, 0x61, 0x6e, 0x6b, - 0x41, 0x77, 0x61, 0x72, 0x64, 0x44, 0x61, 0x74, 0x61, 0x52, 0x08, 0x44, 0x69, 0x65, 0x41, 0x77, - 0x61, 0x72, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x42, 0x75, 0x66, 0x66, 0x43, 0x6f, 0x75, 0x6e, 0x74, - 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x42, 0x75, 0x66, 0x66, 0x43, 0x6f, 0x75, 0x6e, - 0x74, 0x12, 0x35, 0x0a, 0x09, 0x45, 0x78, 0x74, 0x72, 0x61, 0x44, 0x72, 0x6f, 0x70, 0x18, 0x08, + 0x73, 0x48, 0x70, 0x12, 0x32, 0x0a, 0x08, 0x52, 0x61, 0x6e, 0x6b, 0x44, 0x61, 0x74, 0x61, 0x18, + 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, + 0x2e, 0x4e, 0x69, 0x61, 0x6e, 0x52, 0x61, 0x6e, 0x6b, 0x44, 0x61, 0x74, 0x61, 0x52, 0x08, 0x52, + 0x61, 0x6e, 0x6b, 0x44, 0x61, 0x74, 0x61, 0x12, 0x1c, 0x0a, 0x09, 0x41, 0x77, 0x61, 0x72, 0x64, + 0x54, 0x69, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x41, 0x77, 0x61, 0x72, + 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x42, 0x75, 0x66, 0x66, 0x43, 0x6f, 0x75, + 0x6e, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x42, 0x75, 0x66, 0x66, 0x43, 0x6f, + 0x75, 0x6e, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x42, 0x75, 0x66, 0x66, 0x53, 0x74, 0x61, 0x74, 0x75, + 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x42, 0x75, 0x66, 0x66, 0x53, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x12, 0x24, 0x0a, 0x0d, 0x53, 0x69, 0x67, 0x6e, 0x41, 0x77, 0x61, 0x72, 0x64, + 0x54, 0x69, 0x6d, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, 0x53, 0x69, 0x67, 0x6e, + 0x41, 0x77, 0x61, 0x72, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x42, 0x75, 0x66, + 0x66, 0x53, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x03, + 0x52, 0x0d, 0x42, 0x75, 0x66, 0x66, 0x53, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, + 0x20, 0x0a, 0x0b, 0x42, 0x75, 0x66, 0x66, 0x45, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x0b, + 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x42, 0x75, 0x66, 0x66, 0x45, 0x6e, 0x64, 0x54, 0x69, 0x6d, + 0x65, 0x12, 0x2e, 0x0a, 0x08, 0x73, 0x68, 0x6f, 0x70, 0x44, 0x61, 0x74, 0x61, 0x18, 0x0c, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x2e, 0x53, + 0x68, 0x6f, 0x70, 0x44, 0x61, 0x74, 0x61, 0x52, 0x08, 0x73, 0x68, 0x6f, 0x70, 0x44, 0x61, 0x74, + 0x61, 0x22, 0x5c, 0x0a, 0x08, 0x53, 0x68, 0x6f, 0x70, 0x44, 0x61, 0x74, 0x61, 0x12, 0x16, 0x0a, + 0x06, 0x53, 0x68, 0x6f, 0x70, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x53, + 0x68, 0x6f, 0x70, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x53, 0x68, 0x6f, 0x70, 0x4e, 0x75, 0x6d, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x53, 0x68, 0x6f, 0x70, 0x4e, 0x75, 0x6d, 0x12, + 0x1e, 0x0a, 0x0a, 0x4d, 0x61, 0x78, 0x53, 0x68, 0x6f, 0x70, 0x4e, 0x75, 0x6d, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x0a, 0x4d, 0x61, 0x78, 0x53, 0x68, 0x6f, 0x70, 0x4e, 0x75, 0x6d, 0x22, + 0x0c, 0x0a, 0x0a, 0x43, 0x53, 0x4e, 0x69, 0x61, 0x6e, 0x42, 0x75, 0x66, 0x66, 0x22, 0x2a, 0x0a, + 0x0a, 0x53, 0x43, 0x4e, 0x69, 0x61, 0x6e, 0x42, 0x75, 0x66, 0x66, 0x12, 0x1c, 0x0a, 0x09, 0x42, + 0x75, 0x66, 0x66, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, + 0x42, 0x75, 0x66, 0x66, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x52, 0x0a, 0x0c, 0x4e, 0x69, 0x61, + 0x6e, 0x52, 0x61, 0x6e, 0x6b, 0x44, 0x61, 0x74, 0x61, 0x12, 0x16, 0x0a, 0x06, 0x54, 0x79, 0x70, + 0x65, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x54, 0x79, 0x70, 0x65, 0x49, + 0x64, 0x12, 0x2a, 0x0a, 0x04, 0x44, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x16, 0x2e, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x2e, 0x4e, 0x69, 0x61, 0x6e, 0x52, + 0x61, 0x6e, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x44, 0x61, 0x74, 0x61, 0x22, 0x55, 0x0a, + 0x0c, 0x4e, 0x69, 0x61, 0x6e, 0x52, 0x61, 0x6e, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x16, 0x0a, + 0x06, 0x52, 0x61, 0x6e, 0x6b, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x52, + 0x61, 0x6e, 0x6b, 0x49, 0x64, 0x12, 0x2d, 0x0a, 0x05, 0x41, 0x77, 0x61, 0x72, 0x64, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x2e, - 0x52, 0x61, 0x6e, 0x6b, 0x41, 0x77, 0x61, 0x72, 0x64, 0x44, 0x61, 0x74, 0x61, 0x52, 0x09, 0x45, - 0x78, 0x74, 0x72, 0x61, 0x44, 0x72, 0x6f, 0x70, 0x12, 0x39, 0x0a, 0x0b, 0x46, 0x6c, 0x6f, 0x6f, - 0x72, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, - 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x2e, 0x52, 0x61, 0x6e, 0x6b, 0x41, 0x77, 0x61, - 0x72, 0x64, 0x44, 0x61, 0x74, 0x61, 0x52, 0x0b, 0x46, 0x6c, 0x6f, 0x6f, 0x72, 0x52, 0x65, 0x77, - 0x61, 0x72, 0x64, 0x22, 0x11, 0x0a, 0x0f, 0x43, 0x53, 0x4e, 0x69, 0x61, 0x6e, 0x53, 0x69, 0x67, - 0x6e, 0x41, 0x77, 0x61, 0x72, 0x64, 0x22, 0x6e, 0x0a, 0x0f, 0x53, 0x43, 0x4e, 0x69, 0x61, 0x6e, - 0x53, 0x69, 0x67, 0x6e, 0x41, 0x77, 0x61, 0x72, 0x64, 0x12, 0x24, 0x0a, 0x0d, 0x53, 0x69, 0x67, - 0x6e, 0x41, 0x77, 0x61, 0x72, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, - 0x52, 0x0d, 0x53, 0x69, 0x67, 0x6e, 0x41, 0x77, 0x61, 0x72, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, - 0x35, 0x0a, 0x09, 0x53, 0x69, 0x67, 0x6e, 0x41, 0x77, 0x61, 0x72, 0x64, 0x18, 0x02, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x2e, 0x52, 0x61, - 0x6e, 0x6b, 0x41, 0x77, 0x61, 0x72, 0x64, 0x44, 0x61, 0x74, 0x61, 0x52, 0x09, 0x53, 0x69, 0x67, - 0x6e, 0x41, 0x77, 0x61, 0x72, 0x64, 0x2a, 0xae, 0x02, 0x0a, 0x0c, 0x4e, 0x69, 0x61, 0x6e, 0x50, - 0x61, 0x63, 0x6b, 0x65, 0x74, 0x49, 0x44, 0x12, 0x14, 0x0a, 0x10, 0x50, 0x41, 0x43, 0x4b, 0x45, - 0x54, 0x5f, 0x4e, 0x69, 0x61, 0x6e, 0x5f, 0x5a, 0x45, 0x52, 0x4f, 0x10, 0x00, 0x12, 0x16, 0x0a, - 0x11, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x4e, 0x69, 0x61, 0x6e, 0x44, 0x61, - 0x74, 0x61, 0x10, 0xe4, 0x14, 0x12, 0x16, 0x0a, 0x11, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, - 0x53, 0x43, 0x4e, 0x69, 0x61, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x10, 0xe5, 0x14, 0x12, 0x16, 0x0a, - 0x11, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x4e, 0x69, 0x61, 0x6e, 0x42, 0x75, - 0x66, 0x66, 0x10, 0xe6, 0x14, 0x12, 0x16, 0x0a, 0x11, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, - 0x53, 0x43, 0x4e, 0x69, 0x61, 0x6e, 0x42, 0x75, 0x66, 0x66, 0x10, 0xe7, 0x14, 0x12, 0x1a, 0x0a, - 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x4e, 0x69, 0x61, 0x6e, 0x52, 0x61, - 0x6e, 0x6b, 0x44, 0x61, 0x74, 0x61, 0x10, 0xe8, 0x14, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, - 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x4e, 0x69, 0x61, 0x6e, 0x52, 0x61, 0x6e, 0x6b, 0x44, 0x61, - 0x74, 0x61, 0x10, 0xe9, 0x14, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, - 0x43, 0x53, 0x4e, 0x69, 0x61, 0x6e, 0x41, 0x74, 0x74, 0x61, 0x63, 0x6b, 0x10, 0xea, 0x14, 0x12, - 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x4e, 0x69, 0x61, 0x6e, - 0x41, 0x74, 0x74, 0x61, 0x63, 0x6b, 0x44, 0x61, 0x74, 0x61, 0x10, 0xeb, 0x14, 0x12, 0x1b, 0x0a, - 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x4e, 0x69, 0x61, 0x6e, 0x53, 0x69, - 0x67, 0x6e, 0x41, 0x77, 0x61, 0x72, 0x64, 0x10, 0xec, 0x14, 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, - 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x4e, 0x69, 0x61, 0x6e, 0x53, 0x69, 0x67, 0x6e, 0x41, - 0x77, 0x61, 0x72, 0x64, 0x10, 0xed, 0x14, 0x42, 0x28, 0x5a, 0x26, 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, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, - 0x79, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x52, 0x61, 0x6e, 0x6b, 0x41, 0x77, 0x61, 0x72, 0x64, 0x44, 0x61, 0x74, 0x61, 0x52, 0x05, 0x41, + 0x77, 0x61, 0x72, 0x64, 0x22, 0x41, 0x0a, 0x0d, 0x52, 0x61, 0x6e, 0x6b, 0x41, 0x77, 0x61, 0x72, + 0x64, 0x44, 0x61, 0x74, 0x61, 0x12, 0x16, 0x0a, 0x06, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x12, 0x18, 0x0a, + 0x07, 0x49, 0x74, 0x65, 0x6d, 0x4e, 0x75, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, + 0x49, 0x74, 0x65, 0x6d, 0x4e, 0x75, 0x6d, 0x22, 0x26, 0x0a, 0x0c, 0x43, 0x53, 0x4e, 0x69, 0x61, + 0x6e, 0x41, 0x74, 0x74, 0x61, 0x63, 0x6b, 0x12, 0x16, 0x0a, 0x06, 0x54, 0x79, 0x70, 0x65, 0x49, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x54, 0x79, 0x70, 0x65, 0x49, 0x64, 0x22, + 0xe8, 0x02, 0x0a, 0x10, 0x53, 0x43, 0x4e, 0x69, 0x61, 0x6e, 0x41, 0x74, 0x74, 0x61, 0x63, 0x6b, + 0x44, 0x61, 0x74, 0x61, 0x12, 0x16, 0x0a, 0x06, 0x54, 0x79, 0x70, 0x65, 0x49, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x54, 0x79, 0x70, 0x65, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, + 0x42, 0x6f, 0x73, 0x73, 0x48, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x42, 0x6f, + 0x73, 0x73, 0x48, 0x70, 0x12, 0x2d, 0x0a, 0x05, 0x41, 0x77, 0x61, 0x72, 0x64, 0x18, 0x03, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x2e, 0x52, + 0x61, 0x6e, 0x6b, 0x41, 0x77, 0x61, 0x72, 0x64, 0x44, 0x61, 0x74, 0x61, 0x52, 0x05, 0x41, 0x77, + 0x61, 0x72, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x41, 0x74, 0x74, 0x61, 0x63, 0x6b, 0x48, 0x70, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x41, 0x74, 0x74, 0x61, 0x63, 0x6b, 0x48, 0x70, 0x12, + 0x14, 0x0a, 0x05, 0x49, 0x73, 0x44, 0x69, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, + 0x49, 0x73, 0x44, 0x69, 0x65, 0x12, 0x33, 0x0a, 0x08, 0x44, 0x69, 0x65, 0x41, 0x77, 0x61, 0x72, + 0x64, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, + 0x74, 0x79, 0x2e, 0x52, 0x61, 0x6e, 0x6b, 0x41, 0x77, 0x61, 0x72, 0x64, 0x44, 0x61, 0x74, 0x61, + 0x52, 0x08, 0x44, 0x69, 0x65, 0x41, 0x77, 0x61, 0x72, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x42, 0x75, + 0x66, 0x66, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x42, + 0x75, 0x66, 0x66, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x35, 0x0a, 0x09, 0x45, 0x78, 0x74, 0x72, + 0x61, 0x44, 0x72, 0x6f, 0x70, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x61, 0x63, + 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x2e, 0x52, 0x61, 0x6e, 0x6b, 0x41, 0x77, 0x61, 0x72, 0x64, + 0x44, 0x61, 0x74, 0x61, 0x52, 0x09, 0x45, 0x78, 0x74, 0x72, 0x61, 0x44, 0x72, 0x6f, 0x70, 0x12, + 0x39, 0x0a, 0x0b, 0x46, 0x6c, 0x6f, 0x6f, 0x72, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x18, 0x09, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x2e, + 0x52, 0x61, 0x6e, 0x6b, 0x41, 0x77, 0x61, 0x72, 0x64, 0x44, 0x61, 0x74, 0x61, 0x52, 0x0b, 0x46, + 0x6c, 0x6f, 0x6f, 0x72, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x22, 0x11, 0x0a, 0x0f, 0x43, 0x53, + 0x4e, 0x69, 0x61, 0x6e, 0x53, 0x69, 0x67, 0x6e, 0x41, 0x77, 0x61, 0x72, 0x64, 0x22, 0x6e, 0x0a, + 0x0f, 0x53, 0x43, 0x4e, 0x69, 0x61, 0x6e, 0x53, 0x69, 0x67, 0x6e, 0x41, 0x77, 0x61, 0x72, 0x64, + 0x12, 0x24, 0x0a, 0x0d, 0x53, 0x69, 0x67, 0x6e, 0x41, 0x77, 0x61, 0x72, 0x64, 0x54, 0x69, 0x6d, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, 0x53, 0x69, 0x67, 0x6e, 0x41, 0x77, 0x61, + 0x72, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x35, 0x0a, 0x09, 0x53, 0x69, 0x67, 0x6e, 0x41, 0x77, + 0x61, 0x72, 0x64, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x61, 0x63, 0x74, 0x69, + 0x76, 0x69, 0x74, 0x79, 0x2e, 0x52, 0x61, 0x6e, 0x6b, 0x41, 0x77, 0x61, 0x72, 0x64, 0x44, 0x61, + 0x74, 0x61, 0x52, 0x09, 0x53, 0x69, 0x67, 0x6e, 0x41, 0x77, 0x61, 0x72, 0x64, 0x22, 0x20, 0x0a, + 0x0c, 0x43, 0x53, 0x4e, 0x69, 0x61, 0x6e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x10, 0x0a, + 0x03, 0x4e, 0x75, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x4e, 0x75, 0x6d, 0x22, + 0x4f, 0x0a, 0x0c, 0x53, 0x43, 0x4e, 0x69, 0x61, 0x6e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, + 0x10, 0x0a, 0x03, 0x4e, 0x75, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x4e, 0x75, + 0x6d, 0x12, 0x2d, 0x0a, 0x05, 0x41, 0x77, 0x61, 0x72, 0x64, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x17, 0x2e, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x2e, 0x52, 0x61, 0x6e, 0x6b, + 0x41, 0x77, 0x61, 0x72, 0x64, 0x44, 0x61, 0x74, 0x61, 0x52, 0x05, 0x41, 0x77, 0x61, 0x72, 0x64, + 0x2a, 0xe2, 0x02, 0x0a, 0x0c, 0x4e, 0x69, 0x61, 0x6e, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x49, + 0x44, 0x12, 0x14, 0x0a, 0x10, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x4e, 0x69, 0x61, 0x6e, + 0x5f, 0x5a, 0x45, 0x52, 0x4f, 0x10, 0x00, 0x12, 0x16, 0x0a, 0x11, 0x50, 0x41, 0x43, 0x4b, 0x45, + 0x54, 0x5f, 0x43, 0x53, 0x4e, 0x69, 0x61, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x10, 0xe4, 0x14, 0x12, + 0x16, 0x0a, 0x11, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x4e, 0x69, 0x61, 0x6e, + 0x44, 0x61, 0x74, 0x61, 0x10, 0xe5, 0x14, 0x12, 0x16, 0x0a, 0x11, 0x50, 0x41, 0x43, 0x4b, 0x45, + 0x54, 0x5f, 0x43, 0x53, 0x4e, 0x69, 0x61, 0x6e, 0x42, 0x75, 0x66, 0x66, 0x10, 0xe6, 0x14, 0x12, + 0x16, 0x0a, 0x11, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x4e, 0x69, 0x61, 0x6e, + 0x42, 0x75, 0x66, 0x66, 0x10, 0xe7, 0x14, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, + 0x54, 0x5f, 0x43, 0x53, 0x4e, 0x69, 0x61, 0x6e, 0x52, 0x61, 0x6e, 0x6b, 0x44, 0x61, 0x74, 0x61, + 0x10, 0xe8, 0x14, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, + 0x4e, 0x69, 0x61, 0x6e, 0x52, 0x61, 0x6e, 0x6b, 0x44, 0x61, 0x74, 0x61, 0x10, 0xe9, 0x14, 0x12, + 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x4e, 0x69, 0x61, 0x6e, + 0x41, 0x74, 0x74, 0x61, 0x63, 0x6b, 0x10, 0xea, 0x14, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, + 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x4e, 0x69, 0x61, 0x6e, 0x41, 0x74, 0x74, 0x61, 0x63, 0x6b, + 0x44, 0x61, 0x74, 0x61, 0x10, 0xeb, 0x14, 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, + 0x54, 0x5f, 0x43, 0x53, 0x4e, 0x69, 0x61, 0x6e, 0x53, 0x69, 0x67, 0x6e, 0x41, 0x77, 0x61, 0x72, + 0x64, 0x10, 0xec, 0x14, 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, + 0x43, 0x4e, 0x69, 0x61, 0x6e, 0x53, 0x69, 0x67, 0x6e, 0x41, 0x77, 0x61, 0x72, 0x64, 0x10, 0xed, + 0x14, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x4e, 0x69, + 0x61, 0x6e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x10, 0xee, 0x14, 0x12, 0x18, 0x0a, 0x13, 0x50, + 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x4e, 0x69, 0x61, 0x6e, 0x43, 0x68, 0x61, 0x6e, + 0x67, 0x65, 0x10, 0xef, 0x14, 0x42, 0x28, 0x5a, 0x26, 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, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x62, + 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -962,36 +1095,40 @@ func file_protocol_activity_nian_proto_rawDescGZIP() []byte { } var file_protocol_activity_nian_proto_enumTypes = make([]protoimpl.EnumInfo, 1) -var file_protocol_activity_nian_proto_msgTypes = make([]protoimpl.MessageInfo, 12) +var file_protocol_activity_nian_proto_msgTypes = make([]protoimpl.MessageInfo, 14) var file_protocol_activity_nian_proto_goTypes = []interface{}{ (NianPacketID)(0), // 0: activity.NianPacketID (*CSNianData)(nil), // 1: activity.CSNianData (*SCNianData)(nil), // 2: activity.SCNianData - (*CSNianBuff)(nil), // 3: activity.CSNianBuff - (*SCNianBuff)(nil), // 4: activity.SCNianBuff - (*CSNianRankData)(nil), // 5: activity.CSNianRankData - (*SCNianRankData)(nil), // 6: activity.SCNianRankData - (*RankData)(nil), // 7: activity.RankData + (*ShopData)(nil), // 3: activity.ShopData + (*CSNianBuff)(nil), // 4: activity.CSNianBuff + (*SCNianBuff)(nil), // 5: activity.SCNianBuff + (*NianRankData)(nil), // 6: activity.NianRankData + (*NianRankInfo)(nil), // 7: activity.NianRankInfo (*RankAwardData)(nil), // 8: activity.RankAwardData (*CSNianAttack)(nil), // 9: activity.CSNianAttack (*SCNianAttackData)(nil), // 10: activity.SCNianAttackData (*CSNianSignAward)(nil), // 11: activity.CSNianSignAward (*SCNianSignAward)(nil), // 12: activity.SCNianSignAward + (*CSNianChange)(nil), // 13: activity.CSNianChange + (*SCNianChange)(nil), // 14: activity.SCNianChange } var file_protocol_activity_nian_proto_depIdxs = []int32{ - 7, // 0: activity.SCNianData.LuckData:type_name -> activity.RankData - 7, // 1: activity.SCNianRankData.Data:type_name -> activity.RankData - 8, // 2: activity.RankData.Award:type_name -> activity.RankAwardData - 8, // 3: activity.SCNianAttackData.Award:type_name -> activity.RankAwardData - 8, // 4: activity.SCNianAttackData.DieAward:type_name -> activity.RankAwardData - 8, // 5: activity.SCNianAttackData.ExtraDrop:type_name -> activity.RankAwardData - 8, // 6: activity.SCNianAttackData.FloorReward:type_name -> activity.RankAwardData - 8, // 7: activity.SCNianSignAward.SignAward:type_name -> activity.RankAwardData - 8, // [8:8] is the sub-list for method output_type - 8, // [8:8] is the sub-list for method input_type - 8, // [8:8] is the sub-list for extension type_name - 8, // [8:8] is the sub-list for extension extendee - 0, // [0:8] is the sub-list for field type_name + 6, // 0: activity.SCNianData.RankData:type_name -> activity.NianRankData + 3, // 1: activity.SCNianData.shopData:type_name -> activity.ShopData + 7, // 2: activity.NianRankData.Data:type_name -> activity.NianRankInfo + 8, // 3: activity.NianRankInfo.Award:type_name -> activity.RankAwardData + 8, // 4: activity.SCNianAttackData.Award:type_name -> activity.RankAwardData + 8, // 5: activity.SCNianAttackData.DieAward:type_name -> activity.RankAwardData + 8, // 6: activity.SCNianAttackData.ExtraDrop:type_name -> activity.RankAwardData + 8, // 7: activity.SCNianAttackData.FloorReward:type_name -> activity.RankAwardData + 8, // 8: activity.SCNianSignAward.SignAward:type_name -> activity.RankAwardData + 8, // 9: activity.SCNianChange.Award:type_name -> activity.RankAwardData + 10, // [10:10] is the sub-list for method output_type + 10, // [10:10] is the sub-list for method input_type + 10, // [10:10] is the sub-list for extension type_name + 10, // [10:10] is the sub-list for extension extendee + 0, // [0:10] is the sub-list for field type_name } func init() { file_protocol_activity_nian_proto_init() } @@ -1025,7 +1162,7 @@ func file_protocol_activity_nian_proto_init() { } } file_protocol_activity_nian_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CSNianBuff); i { + switch v := v.(*ShopData); i { case 0: return &v.state case 1: @@ -1037,7 +1174,7 @@ func file_protocol_activity_nian_proto_init() { } } file_protocol_activity_nian_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SCNianBuff); i { + switch v := v.(*CSNianBuff); i { case 0: return &v.state case 1: @@ -1049,7 +1186,7 @@ func file_protocol_activity_nian_proto_init() { } } file_protocol_activity_nian_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CSNianRankData); i { + switch v := v.(*SCNianBuff); i { case 0: return &v.state case 1: @@ -1061,7 +1198,7 @@ func file_protocol_activity_nian_proto_init() { } } file_protocol_activity_nian_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SCNianRankData); i { + switch v := v.(*NianRankData); i { case 0: return &v.state case 1: @@ -1073,7 +1210,7 @@ func file_protocol_activity_nian_proto_init() { } } file_protocol_activity_nian_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RankData); i { + switch v := v.(*NianRankInfo); i { case 0: return &v.state case 1: @@ -1144,6 +1281,30 @@ func file_protocol_activity_nian_proto_init() { return nil } } + file_protocol_activity_nian_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CSNianChange); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_protocol_activity_nian_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SCNianChange); 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{ @@ -1151,7 +1312,7 @@ func file_protocol_activity_nian_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_protocol_activity_nian_proto_rawDesc, NumEnums: 1, - NumMessages: 12, + NumMessages: 14, NumExtensions: 0, NumServices: 0, }, diff --git a/protocol/activity/nian.proto b/protocol/activity/nian.proto index 12f2b76..db207b9 100644 --- a/protocol/activity/nian.proto +++ b/protocol/activity/nian.proto @@ -14,6 +14,8 @@ enum NianPacketID { PACKET_SCNianAttackData = 2667; //返回攻击年兽信息 PACKET_CSNianSignAward = 2668; //请求签到 PACKET_SCNianSignAward = 2669; //签到返回 + PACKET_CSNianChange = 2670;//请求兑换小爆竹 + PACKET_SCNianChange = 2671;//返回兑换道具 } //获取年兽活动信息 @@ -26,12 +28,20 @@ message SCNianData{ int64 ActivityEndTime = 2; //活动结束时间 int64 BossMaxHp = 3; //Boss最大血量 int64 BossHp = 4; //Boss当前血量 - repeated RankData LuckData = 5;//幸运榜 + repeated NianRankData RankData = 5;//排行榜奖励配置 int64 AwardTime = 6;//每日签到领取时间 int64 BuffCount = 7;//Buff剩余次数 bool BuffStatus = 8;//Buff领取状态 - int32 On = 9;//活动开关 1开启 2关闭 - int64 SignAwardTime = 10;//签到领取时间 0-未领取 + int64 SignAwardTime = 9;//签到领取时间 0-未领取 + int64 BuffStartTime = 10; //Buff开始领取时间 + int64 BuffEndTime = 11; //Buff结束领取时间 + repeated ShopData shopData = 12;//购买礼包数量 +} + +message ShopData{ + int32 ShopId =1; //shopId + int32 ShopNum = 2; //已购买次数 + int32 MaxShopNum = 3; //最大购买次数 } //贺春 @@ -43,22 +53,14 @@ message CSNianBuff{ message SCNianBuff{ int64 BuffCount = 1; //BUFF剩余次数 } -//排行榜数据 -//PACKET_CSNianRankData -message CSNianRankData{ - int32 TypeId = 1;//1-幸运榜 2-总伤害榜 + +message NianRankData{ + int32 TypeId = 1; //1-幸运榜 2-总榜 + repeated NianRankInfo Data = 2; } -//PACKET_SCNianRankData -message SCNianRankData{ - int32 TypeId = 1; - repeated RankData Data = 2; -} -message RankData{ +message NianRankInfo{ int32 RankId =1; - string Name = 2; - int32 Icon = 3; - int64 Score = 4; - repeated RankAwardData Award = 5; + repeated RankAwardData Award = 2; } message RankAwardData{ @@ -90,4 +92,14 @@ message CSNianSignAward{ message SCNianSignAward{ int64 SignAwardTime = 1; repeated RankAwardData SignAward = 2;//签到奖励 +} +//兑换 +//PACKET_CSNianChange +message CSNianChange{ + int32 Num = 1; +} +//PACKET_SCNianChange +message SCNianChange{ + int32 Num = 1; + repeated RankAwardData Award =2; } \ No newline at end of file diff --git a/protocol/task/task.pb.go b/protocol/task/task.pb.go index 0240f83..c0b3d90 100644 --- a/protocol/task/task.pb.go +++ b/protocol/task/task.pb.go @@ -227,7 +227,7 @@ type CSTaskList struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Tp int32 `protobuf:"varint,1,opt,name=Tp,proto3" json:"Tp,omitempty"` // 任务类型 1:日常任务 2:周活跃任务 3:新手任务 4:邀请任务 5:成就系统 + Tp int32 `protobuf:"varint,1,opt,name=Tp,proto3" json:"Tp,omitempty"` // 任务类型 1:日常任务 2:周活跃任务 3:新手任务 4:邀请任务 5:成就系统 6:赛季通行证任务 8:年兽每日任务 9:年兽活动任务 10:累计消耗任务 } func (x *CSTaskList) Reset() { @@ -275,10 +275,11 @@ type SCTaskList struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Tp int32 `protobuf:"varint,1,opt,name=Tp,proto3" json:"Tp,omitempty"` // 任务类型 1:日常任务 2:周活跃任务 3:新手任务 4:邀请任务 5:成就系统 + Tp int32 `protobuf:"varint,1,opt,name=Tp,proto3" json:"Tp,omitempty"` // 任务类型 List []*TaskData `protobuf:"bytes,2,rep,name=List,proto3" json:"List,omitempty"` // 任务列表 StartTs int64 `protobuf:"varint,3,opt,name=StartTs,proto3" json:"StartTs,omitempty"` // 开始时间 EndTs int64 `protobuf:"varint,4,opt,name=EndTs,proto3" json:"EndTs,omitempty"` // 结束时间 + On bool `protobuf:"varint,5,opt,name=On,proto3" json:"On,omitempty"` // 活动开关 } func (x *SCTaskList) Reset() { @@ -341,6 +342,13 @@ func (x *SCTaskList) GetEndTs() int64 { return 0 } +func (x *SCTaskList) GetOn() bool { + if x != nil { + return x.On + } + return false +} + // 领取任务奖励 // PACKET_CSTaskReward type CSTaskReward struct { @@ -348,7 +356,7 @@ type CSTaskReward struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Tp int32 `protobuf:"varint,1,opt,name=Tp,proto3" json:"Tp,omitempty"` // 任务类型 1:日常任务 2:周活跃任务 3:新手任务 4:邀请任务 5:成就系统 6:赛季通行证任务 8: 年兽每日任务 9:年兽活动任务 + Tp int32 `protobuf:"varint,1,opt,name=Tp,proto3" json:"Tp,omitempty"` // 任务类型 Id int32 `protobuf:"varint,2,opt,name=Id,proto3" json:"Id,omitempty"` // 任务id; 0 表示一键领取 } @@ -477,7 +485,7 @@ type SCTaskChange struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Tp int32 `protobuf:"varint,1,opt,name=Tp,proto3" json:"Tp,omitempty"` // 任务类型 1:日常任务 2:周活跃任务 3:新手任务 4:邀请任务 5:成就系统 + Tp int32 `protobuf:"varint,1,opt,name=Tp,proto3" json:"Tp,omitempty"` // 任务类型 List []*TaskData `protobuf:"bytes,2,rep,name=List,proto3" json:"List,omitempty"` // 任务列表 } @@ -532,7 +540,7 @@ type CSTaskDebugInc struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Tp int32 `protobuf:"varint,1,opt,name=Tp,proto3" json:"Tp,omitempty"` // 任务类型 1:日常任务 2:周活跃任务 3:新手任务 4:邀请任务 5:成就系统 + Tp int32 `protobuf:"varint,1,opt,name=Tp,proto3" json:"Tp,omitempty"` // 任务类型 Id int32 `protobuf:"varint,2,opt,name=Id,proto3" json:"Id,omitempty"` // 任务id AddNum int32 `protobuf:"varint,3,opt,name=AddNum,proto3" json:"AddNum,omitempty"` // 直接增加次数 } @@ -658,62 +666,63 @@ var file_protocol_task_task_proto_rawDesc = []byte{ 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x1c, 0x0a, 0x0a, 0x43, 0x53, 0x54, 0x61, 0x73, 0x6b, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x54, 0x70, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x02, 0x54, 0x70, 0x22, 0x70, 0x0a, 0x0a, 0x53, 0x43, 0x54, 0x61, 0x73, 0x6b, - 0x4c, 0x69, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x54, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x02, 0x54, 0x70, 0x12, 0x22, 0x0a, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x02, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x74, 0x61, 0x73, 0x6b, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x44, 0x61, - 0x74, 0x61, 0x52, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x53, 0x74, 0x61, 0x72, - 0x74, 0x54, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x53, 0x74, 0x61, 0x72, 0x74, - 0x54, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x45, 0x6e, 0x64, 0x54, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x03, 0x52, 0x05, 0x45, 0x6e, 0x64, 0x54, 0x73, 0x22, 0x2e, 0x0a, 0x0c, 0x43, 0x53, 0x54, 0x61, - 0x73, 0x6b, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x54, 0x70, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x54, 0x70, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x22, 0xcd, 0x01, 0x0a, 0x0c, 0x53, 0x43, 0x54, - 0x61, 0x73, 0x6b, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, 0x2a, 0x0a, 0x06, 0x4f, 0x70, 0x43, + 0x28, 0x05, 0x52, 0x02, 0x54, 0x70, 0x22, 0x80, 0x01, 0x0a, 0x0a, 0x53, 0x43, 0x54, 0x61, 0x73, + 0x6b, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x54, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x02, 0x54, 0x70, 0x12, 0x22, 0x0a, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x02, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x74, 0x61, 0x73, 0x6b, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x44, + 0x61, 0x74, 0x61, 0x52, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x53, 0x74, 0x61, + 0x72, 0x74, 0x54, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x53, 0x74, 0x61, 0x72, + 0x74, 0x54, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x45, 0x6e, 0x64, 0x54, 0x73, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x03, 0x52, 0x05, 0x45, 0x6e, 0x64, 0x54, 0x73, 0x12, 0x0e, 0x0a, 0x02, 0x4f, 0x6e, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x02, 0x4f, 0x6e, 0x22, 0x2e, 0x0a, 0x0c, 0x43, 0x53, 0x54, + 0x61, 0x73, 0x6b, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x54, 0x70, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x54, 0x70, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x22, 0xcd, 0x01, 0x0a, 0x0c, 0x53, 0x43, + 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, 0x2a, 0x0a, 0x06, 0x4f, 0x70, + 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x74, 0x61, 0x73, + 0x6b, 0x2e, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x06, + 0x4f, 0x70, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x54, 0x70, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x02, 0x54, 0x70, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x36, 0x0a, 0x06, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, + 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x74, 0x61, 0x73, 0x6b, 0x2e, 0x53, 0x43, + 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, 0x52, 0x65, 0x77, 0x61, 0x72, + 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x1a, 0x39, + 0x0a, 0x0b, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, + 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, + 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x42, 0x0a, 0x0c, 0x53, 0x43, 0x54, + 0x61, 0x73, 0x6b, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x54, 0x70, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x54, 0x70, 0x12, 0x22, 0x0a, 0x04, 0x4c, 0x69, 0x73, + 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x74, 0x61, 0x73, 0x6b, 0x2e, 0x54, + 0x61, 0x73, 0x6b, 0x44, 0x61, 0x74, 0x61, 0x52, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x22, 0x48, 0x0a, + 0x0e, 0x43, 0x53, 0x54, 0x61, 0x73, 0x6b, 0x44, 0x65, 0x62, 0x75, 0x67, 0x49, 0x6e, 0x63, 0x12, + 0x0e, 0x0a, 0x02, 0x54, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x54, 0x70, 0x12, + 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, + 0x16, 0x0a, 0x06, 0x41, 0x64, 0x64, 0x4e, 0x75, 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x06, 0x41, 0x64, 0x64, 0x4e, 0x75, 0x6d, 0x22, 0x3c, 0x0a, 0x0e, 0x53, 0x43, 0x54, 0x61, 0x73, + 0x6b, 0x44, 0x65, 0x62, 0x75, 0x67, 0x49, 0x6e, 0x63, 0x12, 0x2a, 0x0a, 0x06, 0x4f, 0x70, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x74, 0x61, 0x73, 0x6b, 0x2e, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x06, 0x4f, - 0x70, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x54, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x02, 0x54, 0x70, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x36, 0x0a, 0x06, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x18, - 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x74, 0x61, 0x73, 0x6b, 0x2e, 0x53, 0x43, 0x54, - 0x61, 0x73, 0x6b, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, - 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x1a, 0x39, 0x0a, - 0x0b, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, - 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, - 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x42, 0x0a, 0x0c, 0x53, 0x43, 0x54, 0x61, - 0x73, 0x6b, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x54, 0x70, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x54, 0x70, 0x12, 0x22, 0x0a, 0x04, 0x4c, 0x69, 0x73, 0x74, - 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x74, 0x61, 0x73, 0x6b, 0x2e, 0x54, 0x61, - 0x73, 0x6b, 0x44, 0x61, 0x74, 0x61, 0x52, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x22, 0x48, 0x0a, 0x0e, - 0x43, 0x53, 0x54, 0x61, 0x73, 0x6b, 0x44, 0x65, 0x62, 0x75, 0x67, 0x49, 0x6e, 0x63, 0x12, 0x0e, - 0x0a, 0x02, 0x54, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x54, 0x70, 0x12, 0x0e, - 0x0a, 0x02, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x16, - 0x0a, 0x06, 0x41, 0x64, 0x64, 0x4e, 0x75, 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, - 0x41, 0x64, 0x64, 0x4e, 0x75, 0x6d, 0x22, 0x3c, 0x0a, 0x0e, 0x53, 0x43, 0x54, 0x61, 0x73, 0x6b, - 0x44, 0x65, 0x62, 0x75, 0x67, 0x49, 0x6e, 0x63, 0x12, 0x2a, 0x0a, 0x06, 0x4f, 0x70, 0x43, 0x6f, - 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x74, 0x61, 0x73, 0x6b, 0x2e, - 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x06, 0x4f, 0x70, - 0x43, 0x6f, 0x64, 0x65, 0x2a, 0x30, 0x0a, 0x0c, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, - 0x43, 0x6f, 0x64, 0x65, 0x12, 0x10, 0x0a, 0x0c, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x53, 0x75, 0x63, - 0x63, 0x65, 0x73, 0x73, 0x10, 0x00, 0x12, 0x0e, 0x0a, 0x0a, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x45, - 0x72, 0x72, 0x6f, 0x72, 0x10, 0x01, 0x2a, 0xd2, 0x01, 0x0a, 0x0c, 0x54, 0x61, 0x73, 0x6b, 0x50, - 0x61, 0x63, 0x6b, 0x65, 0x74, 0x49, 0x44, 0x12, 0x14, 0x0a, 0x10, 0x50, 0x41, 0x43, 0x4b, 0x45, - 0x54, 0x5f, 0x54, 0x61, 0x73, 0x6b, 0x5f, 0x5a, 0x45, 0x52, 0x4f, 0x10, 0x00, 0x12, 0x16, 0x0a, - 0x11, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x54, 0x61, 0x73, 0x6b, 0x4c, 0x69, - 0x73, 0x74, 0x10, 0xe0, 0x12, 0x12, 0x16, 0x0a, 0x11, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, - 0x53, 0x43, 0x54, 0x61, 0x73, 0x6b, 0x4c, 0x69, 0x73, 0x74, 0x10, 0xe1, 0x12, 0x12, 0x18, 0x0a, - 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, - 0x77, 0x61, 0x72, 0x64, 0x10, 0xe2, 0x12, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, - 0x54, 0x5f, 0x53, 0x43, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x10, 0xe3, - 0x12, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x54, 0x61, - 0x73, 0x6b, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x10, 0xe4, 0x12, 0x12, 0x16, 0x0a, 0x11, 0x50, - 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x44, 0x65, 0x62, 0x75, 0x67, 0x49, 0x6e, 0x63, - 0x10, 0xe5, 0x12, 0x12, 0x16, 0x0a, 0x11, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, - 0x44, 0x65, 0x62, 0x75, 0x67, 0x49, 0x6e, 0x63, 0x10, 0xe6, 0x12, 0x42, 0x24, 0x5a, 0x22, 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, 0x61, 0x73, - 0x6b, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x70, 0x43, 0x6f, 0x64, 0x65, 0x2a, 0x30, 0x0a, 0x0c, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, + 0x74, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x10, 0x0a, 0x0c, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x53, 0x75, + 0x63, 0x63, 0x65, 0x73, 0x73, 0x10, 0x00, 0x12, 0x0e, 0x0a, 0x0a, 0x4f, 0x50, 0x52, 0x43, 0x5f, + 0x45, 0x72, 0x72, 0x6f, 0x72, 0x10, 0x01, 0x2a, 0xd2, 0x01, 0x0a, 0x0c, 0x54, 0x61, 0x73, 0x6b, + 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x49, 0x44, 0x12, 0x14, 0x0a, 0x10, 0x50, 0x41, 0x43, 0x4b, + 0x45, 0x54, 0x5f, 0x54, 0x61, 0x73, 0x6b, 0x5f, 0x5a, 0x45, 0x52, 0x4f, 0x10, 0x00, 0x12, 0x16, + 0x0a, 0x11, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x54, 0x61, 0x73, 0x6b, 0x4c, + 0x69, 0x73, 0x74, 0x10, 0xe0, 0x12, 0x12, 0x16, 0x0a, 0x11, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, + 0x5f, 0x53, 0x43, 0x54, 0x61, 0x73, 0x6b, 0x4c, 0x69, 0x73, 0x74, 0x10, 0xe1, 0x12, 0x12, 0x18, + 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x54, 0x61, 0x73, 0x6b, 0x52, + 0x65, 0x77, 0x61, 0x72, 0x64, 0x10, 0xe2, 0x12, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, + 0x45, 0x54, 0x5f, 0x53, 0x43, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x10, + 0xe3, 0x12, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x54, + 0x61, 0x73, 0x6b, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x10, 0xe4, 0x12, 0x12, 0x16, 0x0a, 0x11, + 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x44, 0x65, 0x62, 0x75, 0x67, 0x49, 0x6e, + 0x63, 0x10, 0xe5, 0x12, 0x12, 0x16, 0x0a, 0x11, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, + 0x43, 0x44, 0x65, 0x62, 0x75, 0x67, 0x49, 0x6e, 0x63, 0x10, 0xe6, 0x12, 0x42, 0x24, 0x5a, 0x22, + 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, 0x61, + 0x73, 0x6b, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( diff --git a/protocol/task/task.proto b/protocol/task/task.proto index 0dd15ff..cd0f26e 100644 --- a/protocol/task/task.proto +++ b/protocol/task/task.proto @@ -33,20 +33,21 @@ message TaskData{ // 任务列表 // PACKET_CSTaskList message CSTaskList{ - int32 Tp = 1; // 任务类型 1:日常任务 2:周活跃任务 3:新手任务 4:邀请任务 5:成就系统 + int32 Tp = 1; // 任务类型 1:日常任务 2:周活跃任务 3:新手任务 4:邀请任务 5:成就系统 6:赛季通行证任务 8:年兽每日任务 9:年兽活动任务 10:累计消耗任务 } // PACKET_SCTaskList message SCTaskList{ - int32 Tp = 1; // 任务类型 1:日常任务 2:周活跃任务 3:新手任务 4:邀请任务 5:成就系统 + int32 Tp = 1; // 任务类型 repeated TaskData List = 2; // 任务列表 int64 StartTs = 3; // 开始时间 int64 EndTs = 4; // 结束时间 + bool On = 5; // 活动开关 } // 领取任务奖励 // PACKET_CSTaskReward message CSTaskReward{ - int32 Tp = 1; // 任务类型 1:日常任务 2:周活跃任务 3:新手任务 4:邀请任务 5:成就系统 6:赛季通行证任务 8: 年兽每日任务 9:年兽活动任务 + int32 Tp = 1; // 任务类型 int32 Id = 2; // 任务id; 0 表示一键领取 } // PACKET_SCTaskReward @@ -60,12 +61,12 @@ message SCTaskReward{ // 任务变更通知 // PACKET_SCTaskChange message SCTaskChange{ - int32 Tp = 1; // 任务类型 1:日常任务 2:周活跃任务 3:新手任务 4:邀请任务 5:成就系统 + int32 Tp = 1; // 任务类型 repeated TaskData List = 2; // 任务列表 } message CSTaskDebugInc{ - int32 Tp = 1; // 任务类型 1:日常任务 2:周活跃任务 3:新手任务 4:邀请任务 5:成就系统 + int32 Tp = 1; // 任务类型 int32 Id = 2; // 任务id int32 AddNum = 3; // 直接增加次数 } diff --git a/protocol/webapi/common.pb.go b/protocol/webapi/common.pb.go index 3800625..7939320 100644 --- a/protocol/webapi/common.pb.go +++ b/protocol/webapi/common.pb.go @@ -10098,6 +10098,173 @@ func (x *NianDropInfo) GetDropUp() int32 { return 0 } +//年兽排行榜奖励 +//etcd /game/activity_nian_rank +type NianRankReward struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Platform string `protobuf:"bytes,1,opt,name=Platform,proto3" json:"Platform,omitempty"` // 平台 + RankData []*NianRankData `protobuf:"bytes,2,rep,name=RankData,proto3" json:"RankData,omitempty"` +} + +func (x *NianRankReward) Reset() { + *x = NianRankReward{} + if protoimpl.UnsafeEnabled { + mi := &file_protocol_webapi_common_proto_msgTypes[107] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *NianRankReward) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*NianRankReward) ProtoMessage() {} + +func (x *NianRankReward) ProtoReflect() protoreflect.Message { + mi := &file_protocol_webapi_common_proto_msgTypes[107] + 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 NianRankReward.ProtoReflect.Descriptor instead. +func (*NianRankReward) Descriptor() ([]byte, []int) { + return file_protocol_webapi_common_proto_rawDescGZIP(), []int{107} +} + +func (x *NianRankReward) GetPlatform() string { + if x != nil { + return x.Platform + } + return "" +} + +func (x *NianRankReward) GetRankData() []*NianRankData { + if x != nil { + return x.RankData + } + return nil +} + +type NianRankData struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + TypeId int32 `protobuf:"varint,1,opt,name=TypeId,proto3" json:"TypeId,omitempty"` //1-幸运榜 2-伤害榜 + RankInfo []*NianRankAwardInfo `protobuf:"bytes,2,rep,name=RankInfo,proto3" json:"RankInfo,omitempty"` +} + +func (x *NianRankData) Reset() { + *x = NianRankData{} + if protoimpl.UnsafeEnabled { + mi := &file_protocol_webapi_common_proto_msgTypes[108] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *NianRankData) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*NianRankData) ProtoMessage() {} + +func (x *NianRankData) ProtoReflect() protoreflect.Message { + mi := &file_protocol_webapi_common_proto_msgTypes[108] + 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 NianRankData.ProtoReflect.Descriptor instead. +func (*NianRankData) Descriptor() ([]byte, []int) { + return file_protocol_webapi_common_proto_rawDescGZIP(), []int{108} +} + +func (x *NianRankData) GetTypeId() int32 { + if x != nil { + return x.TypeId + } + return 0 +} + +func (x *NianRankData) GetRankInfo() []*NianRankAwardInfo { + if x != nil { + return x.RankInfo + } + return nil +} + +type NianRankAwardInfo struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + RankId int32 `protobuf:"varint,1,opt,name=RankId,proto3" json:"RankId,omitempty"` //排名 + Award []*ItemInfo `protobuf:"bytes,2,rep,name=Award,proto3" json:"Award,omitempty"` //奖励 +} + +func (x *NianRankAwardInfo) Reset() { + *x = NianRankAwardInfo{} + if protoimpl.UnsafeEnabled { + mi := &file_protocol_webapi_common_proto_msgTypes[109] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *NianRankAwardInfo) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*NianRankAwardInfo) ProtoMessage() {} + +func (x *NianRankAwardInfo) ProtoReflect() protoreflect.Message { + mi := &file_protocol_webapi_common_proto_msgTypes[109] + 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 NianRankAwardInfo.ProtoReflect.Descriptor instead. +func (*NianRankAwardInfo) Descriptor() ([]byte, []int) { + return file_protocol_webapi_common_proto_rawDescGZIP(), []int{109} +} + +func (x *NianRankAwardInfo) GetRankId() int32 { + if x != nil { + return x.RankId + } + return 0 +} + +func (x *NianRankAwardInfo) GetAward() []*ItemInfo { + if x != nil { + return x.Award + } + return nil +} + // etcd /game/act_redpacket type RedPacketConfig struct { state protoimpl.MessageState @@ -10112,7 +10279,7 @@ type RedPacketConfig struct { func (x *RedPacketConfig) Reset() { *x = RedPacketConfig{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_webapi_common_proto_msgTypes[107] + mi := &file_protocol_webapi_common_proto_msgTypes[110] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10125,7 +10292,7 @@ func (x *RedPacketConfig) String() string { func (*RedPacketConfig) ProtoMessage() {} func (x *RedPacketConfig) ProtoReflect() protoreflect.Message { - mi := &file_protocol_webapi_common_proto_msgTypes[107] + mi := &file_protocol_webapi_common_proto_msgTypes[110] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10138,7 +10305,7 @@ func (x *RedPacketConfig) ProtoReflect() protoreflect.Message { // Deprecated: Use RedPacketConfig.ProtoReflect.Descriptor instead. func (*RedPacketConfig) Descriptor() ([]byte, []int) { - return file_protocol_webapi_common_proto_rawDescGZIP(), []int{107} + return file_protocol_webapi_common_proto_rawDescGZIP(), []int{110} } func (x *RedPacketConfig) GetPlatform() string { @@ -10182,7 +10349,7 @@ type RedPacketInfo struct { func (x *RedPacketInfo) Reset() { *x = RedPacketInfo{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_webapi_common_proto_msgTypes[108] + mi := &file_protocol_webapi_common_proto_msgTypes[111] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10195,7 +10362,7 @@ func (x *RedPacketInfo) String() string { func (*RedPacketInfo) ProtoMessage() {} func (x *RedPacketInfo) ProtoReflect() protoreflect.Message { - mi := &file_protocol_webapi_common_proto_msgTypes[108] + mi := &file_protocol_webapi_common_proto_msgTypes[111] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10208,7 +10375,7 @@ func (x *RedPacketInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use RedPacketInfo.ProtoReflect.Descriptor instead. func (*RedPacketInfo) Descriptor() ([]byte, []int) { - return file_protocol_webapi_common_proto_rawDescGZIP(), []int{108} + return file_protocol_webapi_common_proto_rawDescGZIP(), []int{111} } func (x *RedPacketInfo) GetId() int64 { @@ -10293,7 +10460,7 @@ type RedInfo struct { func (x *RedInfo) Reset() { *x = RedInfo{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_webapi_common_proto_msgTypes[109] + mi := &file_protocol_webapi_common_proto_msgTypes[112] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10306,7 +10473,7 @@ func (x *RedInfo) String() string { func (*RedInfo) ProtoMessage() {} func (x *RedInfo) ProtoReflect() protoreflect.Message { - mi := &file_protocol_webapi_common_proto_msgTypes[109] + mi := &file_protocol_webapi_common_proto_msgTypes[112] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10319,7 +10486,7 @@ func (x *RedInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use RedInfo.ProtoReflect.Descriptor instead. func (*RedInfo) Descriptor() ([]byte, []int) { - return file_protocol_webapi_common_proto_rawDescGZIP(), []int{109} + return file_protocol_webapi_common_proto_rawDescGZIP(), []int{112} } func (x *RedInfo) GetNum() int64 { @@ -10336,6 +10503,78 @@ func (x *RedInfo) GetRate() int64 { return 0 } +// etcd /game/act_consume +type ConsumeConfig struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Platform string `protobuf:"bytes,1,opt,name=Platform,proto3" json:"Platform,omitempty"` // 平台 + On int32 `protobuf:"varint,2,opt,name=On,proto3" json:"On,omitempty"` // 活动开关 1.开启 2.关闭 + StartTime string `protobuf:"bytes,3,opt,name=StartTime,proto3" json:"StartTime,omitempty"` // 活动开始时间 + EndTime string `protobuf:"bytes,4,opt,name=EndTime,proto3" json:"EndTime,omitempty"` // 活动结束时间 +} + +func (x *ConsumeConfig) Reset() { + *x = ConsumeConfig{} + if protoimpl.UnsafeEnabled { + mi := &file_protocol_webapi_common_proto_msgTypes[113] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ConsumeConfig) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ConsumeConfig) ProtoMessage() {} + +func (x *ConsumeConfig) ProtoReflect() protoreflect.Message { + mi := &file_protocol_webapi_common_proto_msgTypes[113] + 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 ConsumeConfig.ProtoReflect.Descriptor instead. +func (*ConsumeConfig) Descriptor() ([]byte, []int) { + return file_protocol_webapi_common_proto_rawDescGZIP(), []int{113} +} + +func (x *ConsumeConfig) GetPlatform() string { + if x != nil { + return x.Platform + } + return "" +} + +func (x *ConsumeConfig) GetOn() int32 { + if x != nil { + return x.On + } + return 0 +} + +func (x *ConsumeConfig) GetStartTime() string { + if x != nil { + return x.StartTime + } + return "" +} + +func (x *ConsumeConfig) GetEndTime() string { + if x != nil { + return x.EndTime + } + return "" +} + var File_protocol_webapi_common_proto protoreflect.FileDescriptor var file_protocol_webapi_common_proto_rawDesc = []byte{ @@ -11899,38 +12138,63 @@ var file_protocol_webapi_common_proto_rawDesc = []byte{ 0x49, 0x74, 0x65, 0x6d, 0x4e, 0x75, 0x6d, 0x12, 0x1a, 0x0a, 0x08, 0x44, 0x72, 0x6f, 0x70, 0x52, 0x61, 0x74, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x44, 0x72, 0x6f, 0x70, 0x52, 0x61, 0x74, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x44, 0x72, 0x6f, 0x70, 0x55, 0x70, 0x18, 0x05, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x06, 0x44, 0x72, 0x6f, 0x70, 0x55, 0x70, 0x22, 0x7a, 0x0a, 0x0f, 0x52, - 0x65, 0x64, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x1a, - 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x29, 0x0a, 0x04, 0x4c, 0x69, - 0x73, 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, - 0x69, 0x2e, 0x52, 0x65, 0x64, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, - 0x04, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4c, - 0x69, 0x6d, 0x69, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x50, 0x6c, 0x61, 0x79, - 0x65, 0x72, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x22, 0x94, 0x02, 0x0a, 0x0d, 0x52, 0x65, 0x64, 0x50, - 0x61, 0x63, 0x6b, 0x65, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x49, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x4f, 0x6e, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x4f, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x53, 0x74, 0x61, - 0x72, 0x74, 0x48, 0x4d, 0x53, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x53, 0x74, 0x61, - 0x72, 0x74, 0x48, 0x4d, 0x53, 0x12, 0x16, 0x0a, 0x06, 0x45, 0x6e, 0x64, 0x48, 0x4d, 0x53, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x45, 0x6e, 0x64, 0x48, 0x4d, 0x53, 0x12, 0x16, 0x0a, - 0x06, 0x53, 0x74, 0x61, 0x79, 0x54, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x53, - 0x74, 0x61, 0x79, 0x54, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x4d, 0x61, 0x78, 0x43, 0x6f, 0x75, 0x6e, - 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x4d, 0x61, 0x78, 0x43, 0x6f, 0x75, 0x6e, - 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x4c, 0x65, 0x73, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x07, - 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x4c, 0x65, 0x73, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, - 0x16, 0x0a, 0x06, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x06, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x54, 0x6f, 0x74, 0x61, 0x6c, - 0x4e, 0x75, 0x6d, 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x54, 0x6f, 0x74, 0x61, 0x6c, - 0x4e, 0x75, 0x6d, 0x12, 0x29, 0x0a, 0x07, 0x52, 0x65, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x0a, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x52, 0x65, - 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x07, 0x52, 0x65, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x22, 0x2f, - 0x0a, 0x07, 0x52, 0x65, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x10, 0x0a, 0x03, 0x4e, 0x75, 0x6d, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x4e, 0x75, 0x6d, 0x12, 0x12, 0x0a, 0x04, 0x52, - 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x52, 0x61, 0x74, 0x65, 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, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x01, 0x28, 0x05, 0x52, 0x06, 0x44, 0x72, 0x6f, 0x70, 0x55, 0x70, 0x22, 0x5e, 0x0a, 0x0e, 0x4e, + 0x69, 0x61, 0x6e, 0x52, 0x61, 0x6e, 0x6b, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, 0x1a, 0x0a, + 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x30, 0x0a, 0x08, 0x52, 0x61, 0x6e, + 0x6b, 0x44, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x77, 0x65, + 0x62, 0x61, 0x70, 0x69, 0x2e, 0x4e, 0x69, 0x61, 0x6e, 0x52, 0x61, 0x6e, 0x6b, 0x44, 0x61, 0x74, + 0x61, 0x52, 0x08, 0x52, 0x61, 0x6e, 0x6b, 0x44, 0x61, 0x74, 0x61, 0x22, 0x5d, 0x0a, 0x0c, 0x4e, + 0x69, 0x61, 0x6e, 0x52, 0x61, 0x6e, 0x6b, 0x44, 0x61, 0x74, 0x61, 0x12, 0x16, 0x0a, 0x06, 0x54, + 0x79, 0x70, 0x65, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x54, 0x79, 0x70, + 0x65, 0x49, 0x64, 0x12, 0x35, 0x0a, 0x08, 0x52, 0x61, 0x6e, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x18, + 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x4e, + 0x69, 0x61, 0x6e, 0x52, 0x61, 0x6e, 0x6b, 0x41, 0x77, 0x61, 0x72, 0x64, 0x49, 0x6e, 0x66, 0x6f, + 0x52, 0x08, 0x52, 0x61, 0x6e, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x53, 0x0a, 0x11, 0x4e, 0x69, + 0x61, 0x6e, 0x52, 0x61, 0x6e, 0x6b, 0x41, 0x77, 0x61, 0x72, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x12, + 0x16, 0x0a, 0x06, 0x52, 0x61, 0x6e, 0x6b, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x06, 0x52, 0x61, 0x6e, 0x6b, 0x49, 0x64, 0x12, 0x26, 0x0a, 0x05, 0x41, 0x77, 0x61, 0x72, 0x64, + 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, + 0x49, 0x74, 0x65, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x41, 0x77, 0x61, 0x72, 0x64, 0x22, + 0x7a, 0x0a, 0x0f, 0x52, 0x65, 0x64, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x29, + 0x0a, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x77, + 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x52, 0x65, 0x64, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x49, + 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x50, 0x6c, 0x61, + 0x79, 0x65, 0x72, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, + 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x22, 0x94, 0x02, 0x0a, 0x0d, + 0x52, 0x65, 0x64, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x0e, 0x0a, + 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x49, 0x64, 0x12, 0x0e, 0x0a, + 0x02, 0x4f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x4f, 0x6e, 0x12, 0x1a, 0x0a, + 0x08, 0x53, 0x74, 0x61, 0x72, 0x74, 0x48, 0x4d, 0x53, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, + 0x08, 0x53, 0x74, 0x61, 0x72, 0x74, 0x48, 0x4d, 0x53, 0x12, 0x16, 0x0a, 0x06, 0x45, 0x6e, 0x64, + 0x48, 0x4d, 0x53, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x45, 0x6e, 0x64, 0x48, 0x4d, + 0x53, 0x12, 0x16, 0x0a, 0x06, 0x53, 0x74, 0x61, 0x79, 0x54, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x03, 0x52, 0x06, 0x53, 0x74, 0x61, 0x79, 0x54, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x4d, 0x61, 0x78, + 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x4d, 0x61, 0x78, + 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x4c, 0x65, 0x73, 0x73, 0x43, 0x6f, 0x75, + 0x6e, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x4c, 0x65, 0x73, 0x73, 0x43, 0x6f, + 0x75, 0x6e, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x18, 0x08, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x06, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x54, + 0x6f, 0x74, 0x61, 0x6c, 0x4e, 0x75, 0x6d, 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x54, + 0x6f, 0x74, 0x61, 0x6c, 0x4e, 0x75, 0x6d, 0x12, 0x29, 0x0a, 0x07, 0x52, 0x65, 0x64, 0x4c, 0x69, + 0x73, 0x74, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, + 0x69, 0x2e, 0x52, 0x65, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x07, 0x52, 0x65, 0x64, 0x4c, 0x69, + 0x73, 0x74, 0x22, 0x2f, 0x0a, 0x07, 0x52, 0x65, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x10, 0x0a, + 0x03, 0x4e, 0x75, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x4e, 0x75, 0x6d, 0x12, + 0x12, 0x0a, 0x04, 0x52, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x52, + 0x61, 0x74, 0x65, 0x22, 0x73, 0x0a, 0x0d, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x43, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, + 0x12, 0x0e, 0x0a, 0x02, 0x4f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x4f, 0x6e, + 0x12, 0x1c, 0x0a, 0x09, 0x53, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x09, 0x53, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x18, + 0x0a, 0x07, 0x45, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x07, 0x45, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 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, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, + 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -11945,7 +12209,7 @@ func file_protocol_webapi_common_proto_rawDescGZIP() []byte { return file_protocol_webapi_common_proto_rawDescData } -var file_protocol_webapi_common_proto_msgTypes = make([]protoimpl.MessageInfo, 120) +var file_protocol_webapi_common_proto_msgTypes = make([]protoimpl.MessageInfo, 124) var file_protocol_webapi_common_proto_goTypes = []interface{}{ (*MysqlDbSetting)(nil), // 0: webapi.MysqlDbSetting (*MongoDbSetting)(nil), // 1: webapi.MongoDbSetting @@ -12054,35 +12318,39 @@ var file_protocol_webapi_common_proto_goTypes = []interface{}{ (*ActivityNianConfig)(nil), // 104: webapi.ActivityNianConfig (*NianInfo)(nil), // 105: webapi.NianInfo (*NianDropInfo)(nil), // 106: webapi.NianDropInfo - (*RedPacketConfig)(nil), // 107: webapi.RedPacketConfig - (*RedPacketInfo)(nil), // 108: webapi.RedPacketInfo - (*RedInfo)(nil), // 109: webapi.RedInfo - nil, // 110: webapi.Platform.BindTelRewardEntry - nil, // 111: webapi.PlayerData.RankScoreEntry - nil, // 112: webapi.ItemShop.AwardEntry - nil, // 113: webapi.VIPcfg.AwardEntry - nil, // 114: webapi.VIPcfg.Privilege1Entry - nil, // 115: webapi.VIPcfg.Privilege7Entry - nil, // 116: webapi.VIPcfg.Privilege9Entry - nil, // 117: webapi.ActInviteConfig.PayScoreEntry - nil, // 118: webapi.SkinLevel.UpItemEntry - nil, // 119: webapi.SkinItem.UnlockParamEntry - (*server.DB_GameFree)(nil), // 120: server.DB_GameFree - (*server.DB_GameItem)(nil), // 121: server.DB_GameItem + (*NianRankReward)(nil), // 107: webapi.NianRankReward + (*NianRankData)(nil), // 108: webapi.NianRankData + (*NianRankAwardInfo)(nil), // 109: webapi.NianRankAwardInfo + (*RedPacketConfig)(nil), // 110: webapi.RedPacketConfig + (*RedPacketInfo)(nil), // 111: webapi.RedPacketInfo + (*RedInfo)(nil), // 112: webapi.RedInfo + (*ConsumeConfig)(nil), // 113: webapi.ConsumeConfig + nil, // 114: webapi.Platform.BindTelRewardEntry + nil, // 115: webapi.PlayerData.RankScoreEntry + nil, // 116: webapi.ItemShop.AwardEntry + nil, // 117: webapi.VIPcfg.AwardEntry + nil, // 118: webapi.VIPcfg.Privilege1Entry + nil, // 119: webapi.VIPcfg.Privilege7Entry + nil, // 120: webapi.VIPcfg.Privilege9Entry + nil, // 121: webapi.ActInviteConfig.PayScoreEntry + nil, // 122: webapi.SkinLevel.UpItemEntry + nil, // 123: webapi.SkinItem.UnlockParamEntry + (*server.DB_GameFree)(nil), // 124: server.DB_GameFree + (*server.DB_GameItem)(nil), // 125: server.DB_GameItem } var file_protocol_webapi_common_proto_depIdxs = []int32{ 2, // 0: webapi.Platform.Leaderboard:type_name -> webapi.RankSwitch 3, // 1: webapi.Platform.ClubConfig:type_name -> webapi.ClubConfig 4, // 2: webapi.Platform.ThirdGameMerchant:type_name -> webapi.ThirdGame - 110, // 3: webapi.Platform.BindTelReward:type_name -> webapi.Platform.BindTelRewardEntry + 114, // 3: webapi.Platform.BindTelReward:type_name -> webapi.Platform.BindTelRewardEntry 6, // 4: webapi.GameConfigGlobal.GameStatus:type_name -> webapi.GameStatus - 120, // 5: webapi.GameFree.DbGameFree:type_name -> server.DB_GameFree + 124, // 5: webapi.GameFree.DbGameFree:type_name -> server.DB_GameFree 8, // 6: webapi.PlatformGameConfig.DbGameFrees:type_name -> webapi.GameFree 0, // 7: webapi.PlatformDbConfig.Mysql:type_name -> webapi.MysqlDbSetting 1, // 8: webapi.PlatformDbConfig.MongoDb:type_name -> webapi.MongoDbSetting 1, // 9: webapi.PlatformDbConfig.MongoDbLog:type_name -> webapi.MongoDbSetting - 120, // 10: webapi.GameConfigGroup.DbGameFree:type_name -> server.DB_GameFree - 111, // 11: webapi.PlayerData.RankScore:type_name -> webapi.PlayerData.RankScoreEntry + 124, // 10: webapi.GameConfigGroup.DbGameFree:type_name -> server.DB_GameFree + 115, // 11: webapi.PlayerData.RankScore:type_name -> webapi.PlayerData.RankScoreEntry 32, // 12: webapi.PlayerData.Items:type_name -> webapi.ItemInfo 14, // 13: webapi.PlayerData.RoleUnlockList:type_name -> webapi.ModInfo 14, // 14: webapi.PlayerData.PetUnlockList:type_name -> webapi.ModInfo @@ -12095,7 +12363,7 @@ var file_protocol_webapi_common_proto_depIdxs = []int32{ 32, // 21: webapi.ExchangeShop.Items:type_name -> webapi.ItemInfo 25, // 22: webapi.ExchangeShopList.List:type_name -> webapi.ExchangeShop 29, // 23: webapi.ExchangeShopList.Weight:type_name -> webapi.ShopWeight - 112, // 24: webapi.ItemShop.Award:type_name -> webapi.ItemShop.AwardEntry + 116, // 24: webapi.ItemShop.Award:type_name -> webapi.ItemShop.AwardEntry 30, // 25: webapi.ItemShopList.List:type_name -> webapi.ItemShop 32, // 26: webapi.MatchInfoAward.ItemId:type_name -> webapi.ItemInfo 33, // 27: webapi.GameMatchDate.Award:type_name -> webapi.MatchInfoAward @@ -12116,14 +12384,14 @@ var file_protocol_webapi_common_proto_depIdxs = []int32{ 38, // 42: webapi.WelfareSpree.Item:type_name -> webapi.WelfareDate 48, // 43: webapi.WelfareFirstPayDataList.List:type_name -> webapi.WelfareSpree 48, // 44: webapi.WelfareContinuousPayDataList.List:type_name -> webapi.WelfareSpree - 113, // 45: webapi.VIPcfg.Award:type_name -> webapi.VIPcfg.AwardEntry - 114, // 46: webapi.VIPcfg.Privilege1:type_name -> webapi.VIPcfg.Privilege1Entry - 115, // 47: webapi.VIPcfg.Privilege7:type_name -> webapi.VIPcfg.Privilege7Entry - 116, // 48: webapi.VIPcfg.Privilege9:type_name -> webapi.VIPcfg.Privilege9Entry + 117, // 45: webapi.VIPcfg.Award:type_name -> webapi.VIPcfg.AwardEntry + 118, // 46: webapi.VIPcfg.Privilege1:type_name -> webapi.VIPcfg.Privilege1Entry + 119, // 47: webapi.VIPcfg.Privilege7:type_name -> webapi.VIPcfg.Privilege7Entry + 120, // 48: webapi.VIPcfg.Privilege9:type_name -> webapi.VIPcfg.Privilege9Entry 51, // 49: webapi.VIPcfgDataList.List:type_name -> webapi.VIPcfg 38, // 50: webapi.ChessRankConfig.Item:type_name -> webapi.WelfareDate 55, // 51: webapi.ChessRankcfgData.Datas:type_name -> webapi.ChessRankConfig - 117, // 52: webapi.ActInviteConfig.PayScore:type_name -> webapi.ActInviteConfig.PayScoreEntry + 121, // 52: webapi.ActInviteConfig.PayScore:type_name -> webapi.ActInviteConfig.PayScoreEntry 62, // 53: webapi.ActInviteConfig.Awards1:type_name -> webapi.RankAward 62, // 54: webapi.ActInviteConfig.Awards2:type_name -> webapi.RankAward 62, // 55: webapi.ActInviteConfig.Awards3:type_name -> webapi.RankAward @@ -12140,12 +12408,12 @@ var file_protocol_webapi_common_proto_depIdxs = []int32{ 69, // 66: webapi.DiamondLotteryData.Info:type_name -> webapi.DiamondLotteryInfo 70, // 67: webapi.DiamondLotteryData.Players:type_name -> webapi.DiamondLotteryPlayers 72, // 68: webapi.DiamondLotteryConfig.LotteryData:type_name -> webapi.DiamondLotteryData - 121, // 69: webapi.ItemConfig.Items:type_name -> server.DB_GameItem + 125, // 69: webapi.ItemConfig.Items:type_name -> server.DB_GameItem 32, // 70: webapi.RankAwardInfo.Item:type_name -> webapi.ItemInfo 75, // 71: webapi.RankTypeInfo.Award:type_name -> webapi.RankAwardInfo 76, // 72: webapi.RankTypeConfig.Info:type_name -> webapi.RankTypeInfo - 118, // 73: webapi.SkinLevel.UpItem:type_name -> webapi.SkinLevel.UpItemEntry - 119, // 74: webapi.SkinItem.UnlockParam:type_name -> webapi.SkinItem.UnlockParamEntry + 122, // 73: webapi.SkinLevel.UpItem:type_name -> webapi.SkinLevel.UpItemEntry + 123, // 74: webapi.SkinItem.UnlockParam:type_name -> webapi.SkinItem.UnlockParamEntry 78, // 75: webapi.SkinItem.Levels:type_name -> webapi.SkinLevel 79, // 76: webapi.SkinConfig.Items:type_name -> webapi.SkinItem 82, // 77: webapi.AwardLogConfig.AwardLog:type_name -> webapi.AwardLogData @@ -12168,13 +12436,16 @@ var file_protocol_webapi_common_proto_depIdxs = []int32{ 32, // 94: webapi.NianInfo.SignReward:type_name -> webapi.ItemInfo 32, // 95: webapi.NianInfo.BossDieReward:type_name -> webapi.ItemInfo 106, // 96: webapi.NianInfo.BossDieOtherReward:type_name -> webapi.NianDropInfo - 108, // 97: webapi.RedPacketConfig.List:type_name -> webapi.RedPacketInfo - 109, // 98: webapi.RedPacketInfo.RedList:type_name -> webapi.RedInfo - 99, // [99:99] is the sub-list for method output_type - 99, // [99:99] is the sub-list for method input_type - 99, // [99:99] is the sub-list for extension type_name - 99, // [99:99] is the sub-list for extension extendee - 0, // [0:99] is the sub-list for field type_name + 108, // 97: webapi.NianRankReward.RankData:type_name -> webapi.NianRankData + 109, // 98: webapi.NianRankData.RankInfo:type_name -> webapi.NianRankAwardInfo + 32, // 99: webapi.NianRankAwardInfo.Award:type_name -> webapi.ItemInfo + 111, // 100: webapi.RedPacketConfig.List:type_name -> webapi.RedPacketInfo + 112, // 101: webapi.RedPacketInfo.RedList:type_name -> webapi.RedInfo + 102, // [102:102] is the sub-list for method output_type + 102, // [102:102] is the sub-list for method input_type + 102, // [102:102] is the sub-list for extension type_name + 102, // [102:102] is the sub-list for extension extendee + 0, // [0:102] is the sub-list for field type_name } func init() { file_protocol_webapi_common_proto_init() } @@ -13468,7 +13739,7 @@ func file_protocol_webapi_common_proto_init() { } } file_protocol_webapi_common_proto_msgTypes[107].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RedPacketConfig); i { + switch v := v.(*NianRankReward); i { case 0: return &v.state case 1: @@ -13480,7 +13751,7 @@ func file_protocol_webapi_common_proto_init() { } } file_protocol_webapi_common_proto_msgTypes[108].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RedPacketInfo); i { + switch v := v.(*NianRankData); i { case 0: return &v.state case 1: @@ -13492,6 +13763,42 @@ func file_protocol_webapi_common_proto_init() { } } file_protocol_webapi_common_proto_msgTypes[109].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*NianRankAwardInfo); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_protocol_webapi_common_proto_msgTypes[110].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*RedPacketConfig); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_protocol_webapi_common_proto_msgTypes[111].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*RedPacketInfo); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_protocol_webapi_common_proto_msgTypes[112].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*RedInfo); i { case 0: return &v.state @@ -13503,6 +13810,18 @@ func file_protocol_webapi_common_proto_init() { return nil } } + file_protocol_webapi_common_proto_msgTypes[113].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ConsumeConfig); 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{ @@ -13510,7 +13829,7 @@ func file_protocol_webapi_common_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_protocol_webapi_common_proto_rawDesc, NumEnums: 0, - NumMessages: 120, + NumMessages: 124, NumExtensions: 0, NumServices: 0, }, diff --git a/protocol/webapi/common.proto b/protocol/webapi/common.proto index 0347298..0ff98df 100644 --- a/protocol/webapi/common.proto +++ b/protocol/webapi/common.proto @@ -1120,6 +1120,20 @@ message NianDropInfo{ int32 DropRate = 4;//掉落概率 int32 DropUp = 5;//掉落上限 } +//年兽排行榜奖励 +//etcd /game/activity_nian_rank +message NianRankReward{ + string Platform = 1; // 平台 + repeated NianRankData RankData = 2; +} +message NianRankData{ + int32 TypeId = 1; //1-幸运榜 2-伤害榜 + repeated NianRankAwardInfo RankInfo = 2; +} +message NianRankAwardInfo{ + int32 RankId =1;//排名 + repeated ItemInfo Award = 2; //奖励 +} // etcd /game/act_redpacket message RedPacketConfig{ @@ -1144,4 +1158,12 @@ message RedPacketInfo{ message RedInfo{ int64 Num = 1; // 数量 int64 Rate = 2; // 概率,百分比 +} + +// etcd /game/act_consume +message ConsumeConfig{ + string Platform = 1; // 平台 + int32 On = 2; // 活动开关 1.开启 2.关闭 + string StartTime = 3; // 活动开始时间 + string EndTime = 4; // 活动结束时间 } \ No newline at end of file diff --git a/xlsx/DB_NewYearActivity.xlsx b/xlsx/DB_NewYearActivity.xlsx index c47938bca792833cf22fa15b88673274dd891a2e..729eb72e0be63a6f61d0e9f5183f441615071f93 100644 GIT binary patch delta 3505 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 NRg&crMC?!8e*nq?XyO0> delta 3401 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 M#euEX{?qsW1KJhp%K!iX