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
-< ((���2��2Ÿ8�@��;JƸJ��PdX�`�
+< ((���2Ÿ2��8�@��;JƸJ��PdX�`�
 ?���/ 2(���2Ÿ2��8�@��;JƸJ��PdX�`�
\ No newline at end of file
diff --git a/data/DB_PropExchange.dat b/data/DB_PropExchange.dat
index cc7f196..25efbb4 100644
Binary files a/data/DB_PropExchange.dat and b/data/DB_PropExchange.dat differ
diff --git a/data/DB_Task.dat b/data/DB_Task.dat
index 0bbbaa0..f7ef517 100644
Binary files a/data/DB_Task.dat and b/data/DB_Task.dat differ
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 c47938b..729eb72 100644
Binary files a/xlsx/DB_NewYearActivity.xlsx and b/xlsx/DB_NewYearActivity.xlsx differ
diff --git a/xlsx/DB_Task.xlsx b/xlsx/DB_Task.xlsx
index d7d8acf..2fe8af9 100644
Binary files a/xlsx/DB_Task.xlsx and b/xlsx/DB_Task.xlsx differ
