From 1123fe94abdf36a078fc0f2a1b6a29ba968cf04e Mon Sep 17 00:00:00 2001 From: sk <123456@qq.com> Date: Thu, 11 Jul 2024 17:20:01 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B5=9B=E5=AD=A3=E6=8C=91=E6=88=98=E4=BB=BB?= =?UTF-8?q?=E5=8A=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- common/constant.go | 14 +- data/DB_GameItem.dat | Bin 9127 -> 9259 bytes data/DB_GameItem.json | 32 ++ data/DB_PropExchange.dat | Bin 384 -> 384 bytes data/DB_Skin.dat | 3 + data/DB_Skin.json | 22 + data/DB_SkinLevel.dat | 19 + data/DB_SkinLevel.json | 126 +++++ data/DB_Task.dat | Bin 4861 -> 5299 bytes data/DB_Task.json | 113 ++++- model/player.go | 6 +- protocol/server/pbdata.pb.go | 848 +++++++++++++++++++++++---------- protocol/server/pbdata.proto | 38 ++ protocol/tienlen/tienlen.proto | 2 +- public | 2 +- srvdata/db_skin.go | 77 +++ srvdata/db_skinlevel.go | 77 +++ worldsrv/action_task.go | 9 +- worldsrv/player.go | 12 +- worldsrv/taskmgr.go | 1 + worldsrv/trascate_webapi.go | 4 + xlsx/DB_GameItem.xlsx | Bin 24229 -> 24480 bytes xlsx/DB_Skin.xlsx | Bin 0 -> 10927 bytes xlsx/DB_SkinLevel.xlsx | Bin 0 -> 9914 bytes xlsx/DB_Task.xlsx | Bin 21835 -> 22462 bytes 25 files changed, 1137 insertions(+), 268 deletions(-) create mode 100644 data/DB_Skin.dat create mode 100644 data/DB_Skin.json create mode 100644 data/DB_SkinLevel.dat create mode 100644 data/DB_SkinLevel.json create mode 100644 srvdata/db_skin.go create mode 100644 srvdata/db_skinlevel.go create mode 100644 xlsx/DB_Skin.xlsx create mode 100644 xlsx/DB_SkinLevel.xlsx diff --git a/common/constant.go b/common/constant.go index 534acfe..93aa50e 100644 --- a/common/constant.go +++ b/common/constant.go @@ -710,6 +710,7 @@ const ( TaskTypeTienlenLoseCoin = 28 // Tienlen输的金币数量 TaskTypeTienlenWinCoin = 29 // Tienlen赢取金币数量 TaskTypeRankMatchWinTimes = 30 // 排位胜利次数 + TaskTypeBuyPermit = 31 // 购买典藏通行证 ) const ( @@ -720,12 +721,13 @@ const ( ) const ( - TaskActivityTypeEveryDay = 1 // 每日任务 - TaskActivityTypeWeek = 2 // 每周任务 - TaskActivityTypeNovice = 3 // 新手任务 - TaskActivityTypeInvite = 4 // 邀请任务 - TaskActivityTypeAchieve = 5 // 成就任务 - TaskActivityTypePermit = 6 // 赛季通行证任务 + TaskActivityTypeEveryDay = 1 // 每日任务 + TaskActivityTypeWeek = 2 // 每周任务 + TaskActivityTypeNovice = 3 // 新手任务 + TaskActivityTypeInvite = 4 // 邀请任务 + TaskActivityTypeAchieve = 5 // 成就任务 + TaskActivityTypePermitEveryDay = 6 // 赛季通行证每日任务 + TaskActivityTypePermit = 7 // 赛季通行证任务 ) const HeadRange = 3 // 机器人头像id范围 diff --git a/data/DB_GameItem.dat b/data/DB_GameItem.dat index a63140c84870f74edc951af005f08565d6c23c76..7ad9b15309322920b4d762af537f323c53e93a1f 100644 GIT binary patch delta 121 zcmZ4PzS?8Ma%BasMn;YY%Y}q^UTj(PeCfQG4UNy2^-D1^FeouIFfeF{Oq3V*Wi%-A ze6n}W^C>Id@0s;t`Qn#T8ec4*^rCaq^I7X&G%e9Z*7|-=&(r?(Pv@+F$UW_v|Dt*C Q^Qk>A=Pr7(cR$bw02OjXOaK4? delta 7 OcmZ4OvD|&ba%BJxL<3v^ diff --git a/data/DB_GameItem.json b/data/DB_GameItem.json index 07a91f6..37eb157 100644 --- a/data/DB_GameItem.json +++ b/data/DB_GameItem.json @@ -2950,6 +2950,38 @@ "Location": "0", "Describe": "用途:话费兑换码\n产出途径:七日累签进阶奖励", "Num": 10 + }, + { + "Id": 300000, + "Name": "财神送福", + "ShowLocation": [ + 0, + 0 + ], + "Classify": [ + 0, + 0, + 0 + ], + "Type": 20, + "Effect0": [ + 1, + 0, + 1, + 0 + ], + "Effect": [ + 1, + 0, + 1, + 0 + ], + "SaleType": 1, + "SaleGold": 5000, + "Composition": 1, + "CompositionMax": 9999, + "Location": "0", + "Describe": "作用:解锁角色皮肤-财神送福,可在皮肤功能界面使用" } ] } \ No newline at end of file diff --git a/data/DB_PropExchange.dat b/data/DB_PropExchange.dat index e92894d815782195906f1df1f0c8b0a85363b1a9..f77ea513b919f72034aa184deaea50a965477884 100644 GIT binary patch literal 384 zcmd-w<6snElw#w!*2WB`uS4m}Q2Gj#z6zq1I5-yevI!h$vE|a^U;?YZ0hPZArEfv$ z+i2>;IUwevm;IUwev$OG+#*$1-+W)93;u)Rp`1G`I!6YP$LwU1c1VmVl_Ivi%e9jJrQ4MKMa TiUX9`ITisu`h}T`fwm9;W->fA diff --git a/data/DB_Skin.dat b/data/DB_Skin.dat new file mode 100644 index 0000000..927fddc --- /dev/null +++ b/data/DB_Skin.dat @@ -0,0 +1,3 @@ + +-mango icon_300001" 活力芒果*mg_01 +7mango icon_300002" 财神送福*mg_060: \ No newline at end of file diff --git a/data/DB_Skin.json b/data/DB_Skin.json new file mode 100644 index 0000000..62a681c --- /dev/null +++ b/data/DB_Skin.json @@ -0,0 +1,22 @@ +{ + "Arr": [ + { + "Id": 300001, + "Model": "mango", + "SkinPic": "icon_300001", + "SkinName": "活力芒果", + "SkinType": "mg_01" + }, + { + "Id": 300002, + "Model": "mango", + "SkinPic": "icon_300002", + "SkinName": "财神送福", + "SkinType": "mg_06", + "UnlockType": 1, + "UnlockItem": { + "300000": 1 + } + } + ] +} \ No newline at end of file diff --git a/data/DB_SkinLevel.dat b/data/DB_SkinLevel.dat new file mode 100644 index 0000000..91eb892 --- /dev/null +++ b/data/DB_SkinLevel.dat @@ -0,0 +1,19 @@ + + +" +" +" +" +" + +" + " + +" + " + " + " +" + " + +" \ No newline at end of file diff --git a/data/DB_SkinLevel.json b/data/DB_SkinLevel.json new file mode 100644 index 0000000..944abdb --- /dev/null +++ b/data/DB_SkinLevel.json @@ -0,0 +1,126 @@ +{ + "Arr": [ + { + "Id": 1, + "SkinId": 300001, + "Level": 1 + }, + { + "Id": 2, + "SkinId": 300001, + "Level": 2, + "UpItem": { + "300001": 20 + } + }, + { + "Id": 3, + "SkinId": 300001, + "Level": 3, + "UpItem": { + "300001": 21 + } + }, + { + "Id": 4, + "SkinId": 300001, + "Level": 4, + "UpItem": { + "300001": 22 + } + }, + { + "Id": 5, + "SkinId": 300001, + "Level": 5, + "UpItem": { + "300001": 23 + } + }, + { + "Id": 6, + "SkinId": 300001, + "Level": 6, + "UpItem": { + "300001": 24 + } + }, + { + "Id": 7, + "SkinId": 300002, + "Level": 1 + }, + { + "Id": 8, + "SkinId": 300002, + "Level": 2, + "UpItem": { + "300002": 20 + } + }, + { + "Id": 9, + "SkinId": 300002, + "Level": 3, + "UpItem": { + "300002": 21 + } + }, + { + "Id": 10, + "SkinId": 300002, + "Level": 4, + "UpItem": { + "300002": 22 + } + }, + { + "Id": 11, + "SkinId": 300002, + "Level": 5, + "UpItem": { + "300002": 23 + } + }, + { + "Id": 12, + "SkinId": 300002, + "Level": 6, + "UpItem": { + "300002": 24 + } + }, + { + "Id": 13, + "SkinId": 300002, + "Level": 7, + "UpItem": { + "300002": 25 + } + }, + { + "Id": 14, + "SkinId": 300002, + "Level": 8, + "UpItem": { + "300002": 26 + } + }, + { + "Id": 15, + "SkinId": 300002, + "Level": 9, + "UpItem": { + "300002": 27 + } + }, + { + "Id": 16, + "SkinId": 300002, + "Level": 10, + "UpItem": { + "300002": 28 + } + } + ] +} \ No newline at end of file diff --git a/data/DB_Task.dat b/data/DB_Task.dat index 428266c1c34a5638865bf4323c292f89d7a6f723..9358f5bb5f267119d1a07838cebbbacb50e35570 100644 GIT binary patch delta 713 zcmZXQK~EDw7=|<5vOC=>oi=TVD4GySG(@xQrCXB?#dzX^@o2I)Zzi7f;-!VqS{uzG zgFvVWU4jt;*y0v~f|SU`o0@1eo!F zc>qF_ouBi9)d{`=-!AnYR%e#r|6@ay><9QG@WX@))?j+!CsmLCc%o@EMw$G=`h zthh5-G75dtAXY<6EpzoKQ(v-8jMG95&a)K0Bl4Ne-lB9%HDGdfhxX5-+$Qt~uBcIoD zme!UVZ>zLka;MfvZkBB@Zl6Bmm}HDi>a%r6r&{7@w6U% zNeVV}A`KlKNnXb}KK_e& d=Uv^NTyvk-;|WC}g}gg9!xS-f`;GsfOx$HTv0F4%(?7%BNS(MLz@^v1;&82+WjFYc$ l2~OU~zlYI!a-M)W3rOwer2;n?8679r3E6`AlXnYQ0RR-GJ2U_Q diff --git a/data/DB_Task.json b/data/DB_Task.json index f75a874..e427618 100644 --- a/data/DB_Task.json +++ b/data/DB_Task.json @@ -942,11 +942,7 @@ "FinishTimes": 1, "Award": { "100011": 20 - }, - "Position": [ - 1, - 1 - ] + } }, { "Id": 11003, @@ -1059,11 +1055,7 @@ "FinishTimes": 1, "Award": { "100011": 80 - }, - "Position": [ - 1, - 1 - ] + } }, { "Id": 11011, @@ -1081,6 +1073,107 @@ 1, 1 ] + }, + { + "Id": 12001, + "Order": 1, + "Name": "通行证", + "Des": "累计领取转盘签到奖励7天", + "ActivityType": 7, + "TaskType": 17, + "TargetTimes": 7, + "FinishTimes": 1, + "Award": { + "100011": 50 + } + }, + { + "Id": 12002, + "Order": 2, + "Name": "通行证", + "Des": "购买进阶典藏通行证", + "ActivityType": 7, + "TaskType": 31, + "TargetTimes": 1, + "FinishTimes": 1, + "Award": { + "100011": 50 + } + }, + { + "Id": 12003, + "Order": 3, + "Name": "通行证", + "Des": "累计充值$9.99", + "ActivityType": 7, + "TaskType": 7, + "TargetTimes": 999, + "FinishTimes": 1, + "Award": { + "100011": 50 + }, + "Position": [ + 1, + 1 + ] + }, + { + "Id": 12004, + "Order": 4, + "Name": "通行证", + "Des": "累计充值$19.99", + "ActivityType": 7, + "TaskType": 7, + "TargetTimes": 1999, + "FinishTimes": 1, + "Award": { + "100011": 100 + }, + "Position": [ + 1, + 1 + ] + }, + { + "Id": 12005, + "Order": 5, + "Name": "通行证", + "Des": "累计赚取10B金币", + "ActivityType": 7, + "TaskType": 11, + "TargetTimes": 10000000000, + "FinishTimes": 1, + "Award": { + "100011": 50 + }, + "GameType": 1 + }, + { + "Id": 12006, + "Order": 6, + "Name": "通行证", + "Des": "成功参加任意比赛20次", + "ActivityType": 7, + "TaskType": 25, + "TargetTimes": 20, + "FinishTimes": 1, + "Award": { + "100011": 50 + }, + "GameType": 1 + }, + { + "Id": 12007, + "Order": 7, + "Name": "通行证", + "Des": "累计在线时长1200分钟", + "ActivityType": 7, + "TaskType": 21, + "TargetTimes": 72000, + "FinishTimes": 1, + "Award": { + "100011": 50 + } } ] } \ No newline at end of file diff --git a/model/player.go b/model/player.go index f00055f..6bbf5b6 100644 --- a/model/player.go +++ b/model/player.go @@ -216,10 +216,11 @@ type ShopTotal struct { AdLookedNum int32 //已经观看的次数 AdReceiveNum int32 //已经领取的次数 } + type RolePetInfo struct { - ModUnlock map[int32]int32 //已经解锁的id + ModUnlock map[int32]int32 //已经解锁的id:等级 ModId int32 //使用中的id - SkillInfo map[int32]map[int32]int32 //宠物技能 key1 - petId key2 - skillId value - level + SkillInfo map[int32]map[int32]int32 //技能等级 宠物id:技能id:技能等级 } // 七日签到数据 @@ -435,6 +436,7 @@ type PlayerData struct { ShopLastLookTime map[int32]int64 //商品上一次的观看时间 Roles *RolePetInfo //人物 Pets *RolePetInfo //宠物 + Skin *RolePetInfo //皮肤 WelfData *WelfareData //活动数据 *SignData VipMatchTimes int32 //VIP比赛场参与次数 diff --git a/protocol/server/pbdata.pb.go b/protocol/server/pbdata.pb.go index 8e07379..a21d5c0 100644 --- a/protocol/server/pbdata.pb.go +++ b/protocol/server/pbdata.pb.go @@ -9349,6 +9349,266 @@ func (x *DB_Sensitive_WordsArray) GetArr() []*DB_Sensitive_Words { return nil } +type DB_Skin struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id int32 `protobuf:"varint,1,opt,name=Id,proto3" json:"Id,omitempty"` + Model string `protobuf:"bytes,2,opt,name=Model,proto3" json:"Model,omitempty"` + SkinPic string `protobuf:"bytes,3,opt,name=SkinPic,proto3" json:"SkinPic,omitempty"` + SkinName string `protobuf:"bytes,4,opt,name=SkinName,proto3" json:"SkinName,omitempty"` + SkinType string `protobuf:"bytes,5,opt,name=SkinType,proto3" json:"SkinType,omitempty"` + UnlockType int32 `protobuf:"varint,6,opt,name=UnlockType,proto3" json:"UnlockType,omitempty"` + UnlockItem map[int64]int64 `protobuf:"bytes,7,rep,name=UnlockItem,proto3" json:"UnlockItem,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"` +} + +func (x *DB_Skin) Reset() { + *x = DB_Skin{} + if protoimpl.UnsafeEnabled { + mi := &file_pbdata_proto_msgTypes[122] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DB_Skin) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DB_Skin) ProtoMessage() {} + +func (x *DB_Skin) ProtoReflect() protoreflect.Message { + mi := &file_pbdata_proto_msgTypes[122] + 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 DB_Skin.ProtoReflect.Descriptor instead. +func (*DB_Skin) Descriptor() ([]byte, []int) { + return file_pbdata_proto_rawDescGZIP(), []int{122} +} + +func (x *DB_Skin) GetId() int32 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *DB_Skin) GetModel() string { + if x != nil { + return x.Model + } + return "" +} + +func (x *DB_Skin) GetSkinPic() string { + if x != nil { + return x.SkinPic + } + return "" +} + +func (x *DB_Skin) GetSkinName() string { + if x != nil { + return x.SkinName + } + return "" +} + +func (x *DB_Skin) GetSkinType() string { + if x != nil { + return x.SkinType + } + return "" +} + +func (x *DB_Skin) GetUnlockType() int32 { + if x != nil { + return x.UnlockType + } + return 0 +} + +func (x *DB_Skin) GetUnlockItem() map[int64]int64 { + if x != nil { + return x.UnlockItem + } + return nil +} + +type DB_SkinArray struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Arr []*DB_Skin `protobuf:"bytes,1,rep,name=Arr,proto3" json:"Arr,omitempty"` +} + +func (x *DB_SkinArray) Reset() { + *x = DB_SkinArray{} + if protoimpl.UnsafeEnabled { + mi := &file_pbdata_proto_msgTypes[123] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DB_SkinArray) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DB_SkinArray) ProtoMessage() {} + +func (x *DB_SkinArray) ProtoReflect() protoreflect.Message { + mi := &file_pbdata_proto_msgTypes[123] + 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 DB_SkinArray.ProtoReflect.Descriptor instead. +func (*DB_SkinArray) Descriptor() ([]byte, []int) { + return file_pbdata_proto_rawDescGZIP(), []int{123} +} + +func (x *DB_SkinArray) GetArr() []*DB_Skin { + if x != nil { + return x.Arr + } + return nil +} + +type DB_SkinLevel struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id int32 `protobuf:"varint,1,opt,name=Id,proto3" json:"Id,omitempty"` + SkinId int32 `protobuf:"varint,2,opt,name=SkinId,proto3" json:"SkinId,omitempty"` + Level int32 `protobuf:"varint,3,opt,name=Level,proto3" json:"Level,omitempty"` + UpItem map[int64]int64 `protobuf:"bytes,4,rep,name=UpItem,proto3" json:"UpItem,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"` +} + +func (x *DB_SkinLevel) Reset() { + *x = DB_SkinLevel{} + if protoimpl.UnsafeEnabled { + mi := &file_pbdata_proto_msgTypes[124] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DB_SkinLevel) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DB_SkinLevel) ProtoMessage() {} + +func (x *DB_SkinLevel) ProtoReflect() protoreflect.Message { + mi := &file_pbdata_proto_msgTypes[124] + 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 DB_SkinLevel.ProtoReflect.Descriptor instead. +func (*DB_SkinLevel) Descriptor() ([]byte, []int) { + return file_pbdata_proto_rawDescGZIP(), []int{124} +} + +func (x *DB_SkinLevel) GetId() int32 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *DB_SkinLevel) GetSkinId() int32 { + if x != nil { + return x.SkinId + } + return 0 +} + +func (x *DB_SkinLevel) GetLevel() int32 { + if x != nil { + return x.Level + } + return 0 +} + +func (x *DB_SkinLevel) GetUpItem() map[int64]int64 { + if x != nil { + return x.UpItem + } + return nil +} + +type DB_SkinLevelArray struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Arr []*DB_SkinLevel `protobuf:"bytes,1,rep,name=Arr,proto3" json:"Arr,omitempty"` +} + +func (x *DB_SkinLevelArray) Reset() { + *x = DB_SkinLevelArray{} + if protoimpl.UnsafeEnabled { + mi := &file_pbdata_proto_msgTypes[125] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DB_SkinLevelArray) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DB_SkinLevelArray) ProtoMessage() {} + +func (x *DB_SkinLevelArray) ProtoReflect() protoreflect.Message { + mi := &file_pbdata_proto_msgTypes[125] + 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 DB_SkinLevelArray.ProtoReflect.Descriptor instead. +func (*DB_SkinLevelArray) Descriptor() ([]byte, []int) { + return file_pbdata_proto_rawDescGZIP(), []int{125} +} + +func (x *DB_SkinLevelArray) GetArr() []*DB_SkinLevel { + if x != nil { + return x.Arr + } + return nil +} + type DB_SlotRateWeight struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -9375,7 +9635,7 @@ type DB_SlotRateWeight struct { func (x *DB_SlotRateWeight) Reset() { *x = DB_SlotRateWeight{} if protoimpl.UnsafeEnabled { - mi := &file_pbdata_proto_msgTypes[122] + mi := &file_pbdata_proto_msgTypes[126] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9388,7 +9648,7 @@ func (x *DB_SlotRateWeight) String() string { func (*DB_SlotRateWeight) ProtoMessage() {} func (x *DB_SlotRateWeight) ProtoReflect() protoreflect.Message { - mi := &file_pbdata_proto_msgTypes[122] + mi := &file_pbdata_proto_msgTypes[126] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9401,7 +9661,7 @@ func (x *DB_SlotRateWeight) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_SlotRateWeight.ProtoReflect.Descriptor instead. func (*DB_SlotRateWeight) Descriptor() ([]byte, []int) { - return file_pbdata_proto_rawDescGZIP(), []int{122} + return file_pbdata_proto_rawDescGZIP(), []int{126} } func (x *DB_SlotRateWeight) GetId() int32 { @@ -9527,7 +9787,7 @@ type DB_SlotRateWeightArray struct { func (x *DB_SlotRateWeightArray) Reset() { *x = DB_SlotRateWeightArray{} if protoimpl.UnsafeEnabled { - mi := &file_pbdata_proto_msgTypes[123] + mi := &file_pbdata_proto_msgTypes[127] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9540,7 +9800,7 @@ func (x *DB_SlotRateWeightArray) String() string { func (*DB_SlotRateWeightArray) ProtoMessage() {} func (x *DB_SlotRateWeightArray) ProtoReflect() protoreflect.Message { - mi := &file_pbdata_proto_msgTypes[123] + mi := &file_pbdata_proto_msgTypes[127] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9553,7 +9813,7 @@ func (x *DB_SlotRateWeightArray) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_SlotRateWeightArray.ProtoReflect.Descriptor instead. func (*DB_SlotRateWeightArray) Descriptor() ([]byte, []int) { - return file_pbdata_proto_rawDescGZIP(), []int{123} + return file_pbdata_proto_rawDescGZIP(), []int{127} } func (x *DB_SlotRateWeightArray) GetArr() []*DB_SlotRateWeight { @@ -9578,7 +9838,7 @@ type DB_SystemChance struct { func (x *DB_SystemChance) Reset() { *x = DB_SystemChance{} if protoimpl.UnsafeEnabled { - mi := &file_pbdata_proto_msgTypes[124] + mi := &file_pbdata_proto_msgTypes[128] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9591,7 +9851,7 @@ func (x *DB_SystemChance) String() string { func (*DB_SystemChance) ProtoMessage() {} func (x *DB_SystemChance) ProtoReflect() protoreflect.Message { - mi := &file_pbdata_proto_msgTypes[124] + mi := &file_pbdata_proto_msgTypes[128] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9604,7 +9864,7 @@ func (x *DB_SystemChance) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_SystemChance.ProtoReflect.Descriptor instead. func (*DB_SystemChance) Descriptor() ([]byte, []int) { - return file_pbdata_proto_rawDescGZIP(), []int{124} + return file_pbdata_proto_rawDescGZIP(), []int{128} } func (x *DB_SystemChance) GetId() int32 { @@ -9653,7 +9913,7 @@ type DB_SystemChanceArray struct { func (x *DB_SystemChanceArray) Reset() { *x = DB_SystemChanceArray{} if protoimpl.UnsafeEnabled { - mi := &file_pbdata_proto_msgTypes[125] + mi := &file_pbdata_proto_msgTypes[129] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9666,7 +9926,7 @@ func (x *DB_SystemChanceArray) String() string { func (*DB_SystemChanceArray) ProtoMessage() {} func (x *DB_SystemChanceArray) ProtoReflect() protoreflect.Message { - mi := &file_pbdata_proto_msgTypes[125] + mi := &file_pbdata_proto_msgTypes[129] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9679,7 +9939,7 @@ func (x *DB_SystemChanceArray) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_SystemChanceArray.ProtoReflect.Descriptor instead. func (*DB_SystemChanceArray) Descriptor() ([]byte, []int) { - return file_pbdata_proto_rawDescGZIP(), []int{125} + return file_pbdata_proto_rawDescGZIP(), []int{129} } func (x *DB_SystemChanceArray) GetArr() []*DB_SystemChance { @@ -9710,7 +9970,7 @@ type DB_Task struct { func (x *DB_Task) Reset() { *x = DB_Task{} if protoimpl.UnsafeEnabled { - mi := &file_pbdata_proto_msgTypes[126] + mi := &file_pbdata_proto_msgTypes[130] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9723,7 +9983,7 @@ func (x *DB_Task) String() string { func (*DB_Task) ProtoMessage() {} func (x *DB_Task) ProtoReflect() protoreflect.Message { - mi := &file_pbdata_proto_msgTypes[126] + mi := &file_pbdata_proto_msgTypes[130] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9736,7 +9996,7 @@ func (x *DB_Task) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_Task.ProtoReflect.Descriptor instead. func (*DB_Task) Descriptor() ([]byte, []int) { - return file_pbdata_proto_rawDescGZIP(), []int{126} + return file_pbdata_proto_rawDescGZIP(), []int{130} } func (x *DB_Task) GetId() int32 { @@ -9827,7 +10087,7 @@ type DB_TaskArray struct { func (x *DB_TaskArray) Reset() { *x = DB_TaskArray{} if protoimpl.UnsafeEnabled { - mi := &file_pbdata_proto_msgTypes[127] + mi := &file_pbdata_proto_msgTypes[131] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9840,7 +10100,7 @@ func (x *DB_TaskArray) String() string { func (*DB_TaskArray) ProtoMessage() {} func (x *DB_TaskArray) ProtoReflect() protoreflect.Message { - mi := &file_pbdata_proto_msgTypes[127] + mi := &file_pbdata_proto_msgTypes[131] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9853,7 +10113,7 @@ func (x *DB_TaskArray) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_TaskArray.ProtoReflect.Descriptor instead. func (*DB_TaskArray) Descriptor() ([]byte, []int) { - return file_pbdata_proto_rawDescGZIP(), []int{127} + return file_pbdata_proto_rawDescGZIP(), []int{131} } func (x *DB_TaskArray) GetArr() []*DB_Task { @@ -9880,7 +10140,7 @@ type DB_ThirdPlatformGameMapping struct { func (x *DB_ThirdPlatformGameMapping) Reset() { *x = DB_ThirdPlatformGameMapping{} if protoimpl.UnsafeEnabled { - mi := &file_pbdata_proto_msgTypes[128] + mi := &file_pbdata_proto_msgTypes[132] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9893,7 +10153,7 @@ func (x *DB_ThirdPlatformGameMapping) String() string { func (*DB_ThirdPlatformGameMapping) ProtoMessage() {} func (x *DB_ThirdPlatformGameMapping) ProtoReflect() protoreflect.Message { - mi := &file_pbdata_proto_msgTypes[128] + mi := &file_pbdata_proto_msgTypes[132] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9906,7 +10166,7 @@ func (x *DB_ThirdPlatformGameMapping) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_ThirdPlatformGameMapping.ProtoReflect.Descriptor instead. func (*DB_ThirdPlatformGameMapping) Descriptor() ([]byte, []int) { - return file_pbdata_proto_rawDescGZIP(), []int{128} + return file_pbdata_proto_rawDescGZIP(), []int{132} } func (x *DB_ThirdPlatformGameMapping) GetId() int32 { @@ -9969,7 +10229,7 @@ type DB_ThirdPlatformGameMappingArray struct { func (x *DB_ThirdPlatformGameMappingArray) Reset() { *x = DB_ThirdPlatformGameMappingArray{} if protoimpl.UnsafeEnabled { - mi := &file_pbdata_proto_msgTypes[129] + mi := &file_pbdata_proto_msgTypes[133] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9982,7 +10242,7 @@ func (x *DB_ThirdPlatformGameMappingArray) String() string { func (*DB_ThirdPlatformGameMappingArray) ProtoMessage() {} func (x *DB_ThirdPlatformGameMappingArray) ProtoReflect() protoreflect.Message { - mi := &file_pbdata_proto_msgTypes[129] + mi := &file_pbdata_proto_msgTypes[133] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9995,7 +10255,7 @@ func (x *DB_ThirdPlatformGameMappingArray) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_ThirdPlatformGameMappingArray.ProtoReflect.Descriptor instead. func (*DB_ThirdPlatformGameMappingArray) Descriptor() ([]byte, []int) { - return file_pbdata_proto_rawDescGZIP(), []int{129} + return file_pbdata_proto_rawDescGZIP(), []int{133} } func (x *DB_ThirdPlatformGameMappingArray) GetArr() []*DB_ThirdPlatformGameMapping { @@ -10018,7 +10278,7 @@ type DB_Tips struct { func (x *DB_Tips) Reset() { *x = DB_Tips{} if protoimpl.UnsafeEnabled { - mi := &file_pbdata_proto_msgTypes[130] + mi := &file_pbdata_proto_msgTypes[134] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10031,7 +10291,7 @@ func (x *DB_Tips) String() string { func (*DB_Tips) ProtoMessage() {} func (x *DB_Tips) ProtoReflect() protoreflect.Message { - mi := &file_pbdata_proto_msgTypes[130] + mi := &file_pbdata_proto_msgTypes[134] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10044,7 +10304,7 @@ func (x *DB_Tips) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_Tips.ProtoReflect.Descriptor instead. func (*DB_Tips) Descriptor() ([]byte, []int) { - return file_pbdata_proto_rawDescGZIP(), []int{130} + return file_pbdata_proto_rawDescGZIP(), []int{134} } func (x *DB_Tips) GetId() int32 { @@ -10079,7 +10339,7 @@ type DB_TipsArray struct { func (x *DB_TipsArray) Reset() { *x = DB_TipsArray{} if protoimpl.UnsafeEnabled { - mi := &file_pbdata_proto_msgTypes[131] + mi := &file_pbdata_proto_msgTypes[135] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10092,7 +10352,7 @@ func (x *DB_TipsArray) String() string { func (*DB_TipsArray) ProtoMessage() {} func (x *DB_TipsArray) ProtoReflect() protoreflect.Message { - mi := &file_pbdata_proto_msgTypes[131] + mi := &file_pbdata_proto_msgTypes[135] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10105,7 +10365,7 @@ func (x *DB_TipsArray) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_TipsArray.ProtoReflect.Descriptor instead. func (*DB_TipsArray) Descriptor() ([]byte, []int) { - return file_pbdata_proto_rawDescGZIP(), []int{131} + return file_pbdata_proto_rawDescGZIP(), []int{135} } func (x *DB_TipsArray) GetArr() []*DB_Tips { @@ -10144,7 +10404,7 @@ type DB_VIP struct { func (x *DB_VIP) Reset() { *x = DB_VIP{} if protoimpl.UnsafeEnabled { - mi := &file_pbdata_proto_msgTypes[132] + mi := &file_pbdata_proto_msgTypes[136] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10157,7 +10417,7 @@ func (x *DB_VIP) String() string { func (*DB_VIP) ProtoMessage() {} func (x *DB_VIP) ProtoReflect() protoreflect.Message { - mi := &file_pbdata_proto_msgTypes[132] + mi := &file_pbdata_proto_msgTypes[136] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10170,7 +10430,7 @@ func (x *DB_VIP) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_VIP.ProtoReflect.Descriptor instead. func (*DB_VIP) Descriptor() ([]byte, []int) { - return file_pbdata_proto_rawDescGZIP(), []int{132} + return file_pbdata_proto_rawDescGZIP(), []int{136} } func (x *DB_VIP) GetId() int32 { @@ -10317,7 +10577,7 @@ type DB_VIPArray struct { func (x *DB_VIPArray) Reset() { *x = DB_VIPArray{} if protoimpl.UnsafeEnabled { - mi := &file_pbdata_proto_msgTypes[133] + mi := &file_pbdata_proto_msgTypes[137] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10330,7 +10590,7 @@ func (x *DB_VIPArray) String() string { func (*DB_VIPArray) ProtoMessage() {} func (x *DB_VIPArray) ProtoReflect() protoreflect.Message { - mi := &file_pbdata_proto_msgTypes[133] + mi := &file_pbdata_proto_msgTypes[137] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10343,7 +10603,7 @@ func (x *DB_VIPArray) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_VIPArray.ProtoReflect.Descriptor instead. func (*DB_VIPArray) Descriptor() ([]byte, []int) { - return file_pbdata_proto_rawDescGZIP(), []int{133} + return file_pbdata_proto_rawDescGZIP(), []int{137} } func (x *DB_VIPArray) GetArr() []*DB_VIP { @@ -11566,161 +11826,199 @@ var file_pbdata_proto_rawDesc = []byte{ 0x72, 0x64, 0x73, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x2c, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x57, 0x6f, 0x72, 0x64, - 0x73, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0xbb, 0x03, 0x0a, 0x11, 0x44, 0x42, 0x5f, 0x53, 0x6c, - 0x6f, 0x74, 0x52, 0x61, 0x74, 0x65, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x0e, 0x0a, 0x02, - 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0a, - 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x0a, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x49, 0x64, 0x12, 0x10, 0x0a, 0x03, - 0x50, 0x6f, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x50, 0x6f, 0x73, 0x12, 0x1a, - 0x0a, 0x08, 0x4e, 0x6f, 0x72, 0x6d, 0x43, 0x6f, 0x6c, 0x31, 0x18, 0x04, 0x20, 0x03, 0x28, 0x05, - 0x52, 0x08, 0x4e, 0x6f, 0x72, 0x6d, 0x43, 0x6f, 0x6c, 0x31, 0x12, 0x1a, 0x0a, 0x08, 0x4e, 0x6f, - 0x72, 0x6d, 0x43, 0x6f, 0x6c, 0x32, 0x18, 0x05, 0x20, 0x03, 0x28, 0x05, 0x52, 0x08, 0x4e, 0x6f, - 0x72, 0x6d, 0x43, 0x6f, 0x6c, 0x32, 0x12, 0x1a, 0x0a, 0x08, 0x4e, 0x6f, 0x72, 0x6d, 0x43, 0x6f, - 0x6c, 0x33, 0x18, 0x06, 0x20, 0x03, 0x28, 0x05, 0x52, 0x08, 0x4e, 0x6f, 0x72, 0x6d, 0x43, 0x6f, - 0x6c, 0x33, 0x12, 0x1a, 0x0a, 0x08, 0x4e, 0x6f, 0x72, 0x6d, 0x43, 0x6f, 0x6c, 0x34, 0x18, 0x07, - 0x20, 0x03, 0x28, 0x05, 0x52, 0x08, 0x4e, 0x6f, 0x72, 0x6d, 0x43, 0x6f, 0x6c, 0x34, 0x12, 0x1a, - 0x0a, 0x08, 0x4e, 0x6f, 0x72, 0x6d, 0x43, 0x6f, 0x6c, 0x35, 0x18, 0x08, 0x20, 0x03, 0x28, 0x05, - 0x52, 0x08, 0x4e, 0x6f, 0x72, 0x6d, 0x43, 0x6f, 0x6c, 0x35, 0x12, 0x1a, 0x0a, 0x08, 0x46, 0x72, - 0x65, 0x65, 0x43, 0x6f, 0x6c, 0x31, 0x18, 0x09, 0x20, 0x03, 0x28, 0x05, 0x52, 0x08, 0x46, 0x72, - 0x65, 0x65, 0x43, 0x6f, 0x6c, 0x31, 0x12, 0x1a, 0x0a, 0x08, 0x46, 0x72, 0x65, 0x65, 0x43, 0x6f, - 0x6c, 0x32, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x05, 0x52, 0x08, 0x46, 0x72, 0x65, 0x65, 0x43, 0x6f, - 0x6c, 0x32, 0x12, 0x1a, 0x0a, 0x08, 0x46, 0x72, 0x65, 0x65, 0x43, 0x6f, 0x6c, 0x33, 0x18, 0x0b, - 0x20, 0x03, 0x28, 0x05, 0x52, 0x08, 0x46, 0x72, 0x65, 0x65, 0x43, 0x6f, 0x6c, 0x33, 0x12, 0x1a, - 0x0a, 0x08, 0x46, 0x72, 0x65, 0x65, 0x43, 0x6f, 0x6c, 0x34, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x05, - 0x52, 0x08, 0x46, 0x72, 0x65, 0x65, 0x43, 0x6f, 0x6c, 0x34, 0x12, 0x1a, 0x0a, 0x08, 0x46, 0x72, - 0x65, 0x65, 0x43, 0x6f, 0x6c, 0x35, 0x18, 0x0d, 0x20, 0x03, 0x28, 0x05, 0x52, 0x08, 0x46, 0x72, - 0x65, 0x65, 0x43, 0x6f, 0x6c, 0x35, 0x12, 0x18, 0x0a, 0x07, 0x4d, 0x61, 0x72, 0x79, 0x4f, 0x75, - 0x74, 0x18, 0x0e, 0x20, 0x03, 0x28, 0x05, 0x52, 0x07, 0x4d, 0x61, 0x72, 0x79, 0x4f, 0x75, 0x74, - 0x12, 0x18, 0x0a, 0x07, 0x4d, 0x61, 0x72, 0x79, 0x4d, 0x69, 0x64, 0x18, 0x0f, 0x20, 0x03, 0x28, - 0x05, 0x52, 0x07, 0x4d, 0x61, 0x72, 0x79, 0x4d, 0x69, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x4a, 0x61, - 0x63, 0x6b, 0x50, 0x6f, 0x74, 0x18, 0x10, 0x20, 0x03, 0x28, 0x05, 0x52, 0x07, 0x4a, 0x61, 0x63, - 0x6b, 0x50, 0x6f, 0x74, 0x22, 0x45, 0x0a, 0x16, 0x44, 0x42, 0x5f, 0x53, 0x6c, 0x6f, 0x74, 0x52, - 0x61, 0x74, 0x65, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x2b, - 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x73, 0x65, - 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x53, 0x6c, 0x6f, 0x74, 0x52, 0x61, 0x74, 0x65, - 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0x7d, 0x0a, 0x0f, 0x44, - 0x42, 0x5f, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x43, 0x68, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x0e, - 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x12, - 0x0a, 0x04, 0x44, 0x65, 0x73, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x44, 0x65, - 0x73, 0x63, 0x12, 0x1e, 0x0a, 0x0a, 0x43, 0x68, 0x61, 0x6e, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x43, 0x68, 0x61, 0x6e, 0x63, 0x65, 0x54, 0x79, - 0x70, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x04, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x52, 0x61, 0x74, 0x65, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x52, 0x61, 0x74, 0x65, 0x22, 0x41, 0x0a, 0x14, 0x44, 0x42, - 0x5f, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x43, 0x68, 0x61, 0x6e, 0x63, 0x65, 0x41, 0x72, 0x72, - 0x61, 0x79, 0x12, 0x29, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x17, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x53, 0x79, 0x73, 0x74, - 0x65, 0x6d, 0x43, 0x68, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0xfd, 0x02, - 0x0a, 0x07, 0x44, 0x42, 0x5f, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x4f, 0x72, 0x64, - 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x12, - 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, - 0x61, 0x6d, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x44, 0x65, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x03, 0x44, 0x65, 0x73, 0x12, 0x22, 0x0a, 0x0c, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, - 0x79, 0x54, 0x79, 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x41, 0x63, 0x74, - 0x69, 0x76, 0x69, 0x74, 0x79, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x54, 0x61, 0x73, - 0x6b, 0x54, 0x79, 0x70, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x54, 0x61, 0x73, - 0x6b, 0x54, 0x79, 0x70, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x54, - 0x69, 0x6d, 0x65, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x54, 0x61, 0x72, 0x67, - 0x65, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x46, 0x69, 0x6e, 0x69, 0x73, - 0x68, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x46, 0x69, - 0x6e, 0x69, 0x73, 0x68, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x12, 0x30, 0x0a, 0x05, 0x41, 0x77, 0x61, - 0x72, 0x64, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, - 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x54, 0x61, 0x73, 0x6b, 0x2e, 0x41, 0x77, 0x61, 0x72, 0x64, 0x45, - 0x6e, 0x74, 0x72, 0x79, 0x52, 0x05, 0x41, 0x77, 0x61, 0x72, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x47, - 0x61, 0x6d, 0x65, 0x54, 0x79, 0x70, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x47, - 0x61, 0x6d, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6f, 0x73, 0x69, 0x74, - 0x69, 0x6f, 0x6e, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x05, 0x52, 0x08, 0x50, 0x6f, 0x73, 0x69, 0x74, - 0x69, 0x6f, 0x6e, 0x1a, 0x38, 0x0a, 0x0a, 0x41, 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, 0x31, 0x0a, - 0x0c, 0x44, 0x42, 0x5f, 0x54, 0x61, 0x73, 0x6b, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x21, 0x0a, - 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x73, 0x65, 0x72, - 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x03, 0x41, 0x72, 0x72, - 0x22, 0x85, 0x02, 0x0a, 0x1b, 0x44, 0x42, 0x5f, 0x54, 0x68, 0x69, 0x72, 0x64, 0x50, 0x6c, 0x61, - 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x47, 0x61, 0x6d, 0x65, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, - 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, - 0x12, 0x22, 0x0a, 0x0c, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x44, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x47, 0x61, - 0x6d, 0x65, 0x49, 0x44, 0x12, 0x2c, 0x0a, 0x11, 0x54, 0x68, 0x69, 0x72, 0x64, 0x50, 0x6c, 0x61, - 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x11, 0x54, 0x68, 0x69, 0x72, 0x64, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x4e, 0x61, - 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x54, 0x68, 0x69, 0x72, 0x64, 0x47, 0x61, 0x6d, 0x65, 0x49, - 0x44, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x54, 0x68, 0x69, 0x72, 0x64, 0x47, 0x61, - 0x6d, 0x65, 0x49, 0x44, 0x12, 0x12, 0x0a, 0x04, 0x44, 0x65, 0x73, 0x63, 0x18, 0x05, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x04, 0x44, 0x65, 0x73, 0x63, 0x12, 0x34, 0x0a, 0x15, 0x53, 0x63, 0x72, 0x65, - 0x65, 0x6e, 0x4f, 0x72, 0x69, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, - 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x15, 0x53, 0x63, 0x72, 0x65, 0x65, 0x6e, 0x4f, - 0x72, 0x69, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x18, - 0x0a, 0x07, 0x54, 0x68, 0x69, 0x72, 0x64, 0x49, 0x44, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x07, 0x54, 0x68, 0x69, 0x72, 0x64, 0x49, 0x44, 0x22, 0x59, 0x0a, 0x20, 0x44, 0x42, 0x5f, 0x54, - 0x68, 0x69, 0x72, 0x64, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x47, 0x61, 0x6d, 0x65, - 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x35, 0x0a, 0x03, - 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x73, 0x65, 0x72, 0x76, - 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x54, 0x68, 0x69, 0x72, 0x64, 0x50, 0x6c, 0x61, 0x74, 0x66, - 0x6f, 0x72, 0x6d, 0x47, 0x61, 0x6d, 0x65, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x52, 0x03, - 0x41, 0x72, 0x72, 0x22, 0x43, 0x0a, 0x07, 0x44, 0x42, 0x5f, 0x54, 0x69, 0x70, 0x73, 0x12, 0x0e, + 0x73, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0xa1, 0x02, 0x0a, 0x07, 0x44, 0x42, 0x5f, 0x53, 0x6b, + 0x69, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, + 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x05, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x12, 0x18, 0x0a, 0x07, 0x53, 0x6b, 0x69, 0x6e, + 0x50, 0x69, 0x63, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x53, 0x6b, 0x69, 0x6e, 0x50, + 0x69, 0x63, 0x12, 0x1a, 0x0a, 0x08, 0x53, 0x6b, 0x69, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x53, 0x6b, 0x69, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1a, + 0x0a, 0x08, 0x53, 0x6b, 0x69, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x08, 0x53, 0x6b, 0x69, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x55, 0x6e, + 0x6c, 0x6f, 0x63, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, + 0x55, 0x6e, 0x6c, 0x6f, 0x63, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x12, 0x3f, 0x0a, 0x0a, 0x55, 0x6e, + 0x6c, 0x6f, 0x63, 0x6b, 0x49, 0x74, 0x65, 0x6d, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, + 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x53, 0x6b, 0x69, 0x6e, 0x2e, + 0x55, 0x6e, 0x6c, 0x6f, 0x63, 0x6b, 0x49, 0x74, 0x65, 0x6d, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, + 0x0a, 0x55, 0x6e, 0x6c, 0x6f, 0x63, 0x6b, 0x49, 0x74, 0x65, 0x6d, 0x1a, 0x3d, 0x0a, 0x0f, 0x55, + 0x6e, 0x6c, 0x6f, 0x63, 0x6b, 0x49, 0x74, 0x65, 0x6d, 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, 0x31, 0x0a, 0x0c, 0x44, 0x42, + 0x5f, 0x53, 0x6b, 0x69, 0x6e, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x21, 0x0a, 0x03, 0x41, 0x72, + 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, + 0x2e, 0x44, 0x42, 0x5f, 0x53, 0x6b, 0x69, 0x6e, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0xc1, 0x01, + 0x0a, 0x0c, 0x44, 0x42, 0x5f, 0x53, 0x6b, 0x69, 0x6e, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x16, - 0x0a, 0x06, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x18, 0x02, 0x20, 0x03, 0x28, 0x05, 0x52, 0x06, - 0x47, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x44, 0x65, 0x73, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x03, 0x44, 0x65, 0x73, 0x22, 0x31, 0x0a, 0x0c, 0x44, 0x42, 0x5f, 0x54, - 0x69, 0x70, 0x73, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x21, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, - 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, - 0x42, 0x5f, 0x54, 0x69, 0x70, 0x73, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0xea, 0x05, 0x0a, 0x06, - 0x44, 0x42, 0x5f, 0x56, 0x49, 0x50, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x43, 0x6f, - 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x43, 0x6f, 0x75, 0x6e, 0x74, - 0x12, 0x16, 0x0a, 0x06, 0x56, 0x69, 0x70, 0x45, 0x78, 0x70, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x06, 0x56, 0x69, 0x70, 0x45, 0x78, 0x70, 0x12, 0x1e, 0x0a, 0x0a, 0x50, 0x72, 0x69, 0x76, - 0x69, 0x6c, 0x65, 0x67, 0x65, 0x31, 0x18, 0x05, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0a, 0x50, 0x72, - 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x31, 0x12, 0x1e, 0x0a, 0x0a, 0x50, 0x72, 0x69, 0x76, - 0x69, 0x6c, 0x65, 0x67, 0x65, 0x32, 0x18, 0x06, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0a, 0x50, 0x72, - 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x32, 0x12, 0x18, 0x0a, 0x07, 0x53, 0x68, 0x6f, 0x70, - 0x49, 0x64, 0x32, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x53, 0x68, 0x6f, 0x70, 0x49, - 0x64, 0x32, 0x12, 0x1e, 0x0a, 0x0a, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x33, - 0x18, 0x08, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0a, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, - 0x65, 0x33, 0x12, 0x1e, 0x0a, 0x0a, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x34, - 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, - 0x65, 0x34, 0x12, 0x1e, 0x0a, 0x0a, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x35, - 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, - 0x65, 0x35, 0x12, 0x1e, 0x0a, 0x0a, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x36, - 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, - 0x65, 0x36, 0x12, 0x3e, 0x0a, 0x0a, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x37, - 0x18, 0x0c, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, - 0x44, 0x42, 0x5f, 0x56, 0x49, 0x50, 0x2e, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, - 0x37, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, - 0x65, 0x37, 0x12, 0x28, 0x0a, 0x0f, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x37, - 0x50, 0x72, 0x69, 0x63, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x50, 0x72, 0x69, - 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x37, 0x50, 0x72, 0x69, 0x63, 0x65, 0x12, 0x18, 0x0a, 0x07, - 0x53, 0x68, 0x6f, 0x70, 0x49, 0x64, 0x37, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x53, - 0x68, 0x6f, 0x70, 0x49, 0x64, 0x37, 0x12, 0x1e, 0x0a, 0x0a, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, - 0x65, 0x67, 0x65, 0x38, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x50, 0x72, 0x69, 0x76, - 0x69, 0x6c, 0x65, 0x67, 0x65, 0x38, 0x12, 0x14, 0x0a, 0x05, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x18, - 0x10, 0x20, 0x03, 0x28, 0x05, 0x52, 0x05, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x12, 0x28, 0x0a, 0x0f, - 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x4f, 0x75, 0x74, 0x6c, 0x69, 0x6e, 0x65, 0x49, 0x44, 0x18, - 0x11, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0f, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x4f, 0x75, 0x74, - 0x6c, 0x69, 0x6e, 0x65, 0x49, 0x44, 0x12, 0x2f, 0x0a, 0x05, 0x41, 0x77, 0x61, 0x72, 0x64, 0x18, - 0x12, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, - 0x42, 0x5f, 0x56, 0x49, 0x50, 0x2e, 0x41, 0x77, 0x61, 0x72, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, - 0x52, 0x05, 0x41, 0x77, 0x61, 0x72, 0x64, 0x12, 0x26, 0x0a, 0x0e, 0x4d, 0x61, 0x74, 0x63, 0x68, - 0x46, 0x72, 0x65, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x18, 0x13, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x0e, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x46, 0x72, 0x65, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x1a, - 0x3d, 0x0a, 0x0f, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x37, 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, 0x1a, 0x38, - 0x0a, 0x0a, 0x41, 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, 0x2f, 0x0a, 0x0b, 0x44, 0x42, 0x5f, 0x56, - 0x49, 0x50, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x20, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, - 0x5f, 0x56, 0x49, 0x50, 0x52, 0x03, 0x41, 0x72, 0x72, 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, 0x73, 0x65, 0x72, 0x76, 0x65, - 0x72, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x0a, 0x06, 0x53, 0x6b, 0x69, 0x6e, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, + 0x53, 0x6b, 0x69, 0x6e, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x38, 0x0a, 0x06, + 0x55, 0x70, 0x49, 0x74, 0x65, 0x6d, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x73, + 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x53, 0x6b, 0x69, 0x6e, 0x4c, 0x65, 0x76, + 0x65, 0x6c, 0x2e, 0x55, 0x70, 0x49, 0x74, 0x65, 0x6d, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, + 0x55, 0x70, 0x49, 0x74, 0x65, 0x6d, 0x1a, 0x39, 0x0a, 0x0b, 0x55, 0x70, 0x49, 0x74, 0x65, 0x6d, + 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, 0x3b, 0x0a, 0x11, 0x44, 0x42, 0x5f, 0x53, 0x6b, 0x69, 0x6e, 0x4c, 0x65, 0x76, 0x65, + 0x6c, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x26, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, + 0x53, 0x6b, 0x69, 0x6e, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0xbb, + 0x03, 0x0a, 0x11, 0x44, 0x42, 0x5f, 0x53, 0x6c, 0x6f, 0x74, 0x52, 0x61, 0x74, 0x65, 0x57, 0x65, + 0x69, 0x67, 0x68, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x02, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, + 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, + 0x65, 0x65, 0x49, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x50, 0x6f, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x03, 0x50, 0x6f, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x4e, 0x6f, 0x72, 0x6d, 0x43, 0x6f, + 0x6c, 0x31, 0x18, 0x04, 0x20, 0x03, 0x28, 0x05, 0x52, 0x08, 0x4e, 0x6f, 0x72, 0x6d, 0x43, 0x6f, + 0x6c, 0x31, 0x12, 0x1a, 0x0a, 0x08, 0x4e, 0x6f, 0x72, 0x6d, 0x43, 0x6f, 0x6c, 0x32, 0x18, 0x05, + 0x20, 0x03, 0x28, 0x05, 0x52, 0x08, 0x4e, 0x6f, 0x72, 0x6d, 0x43, 0x6f, 0x6c, 0x32, 0x12, 0x1a, + 0x0a, 0x08, 0x4e, 0x6f, 0x72, 0x6d, 0x43, 0x6f, 0x6c, 0x33, 0x18, 0x06, 0x20, 0x03, 0x28, 0x05, + 0x52, 0x08, 0x4e, 0x6f, 0x72, 0x6d, 0x43, 0x6f, 0x6c, 0x33, 0x12, 0x1a, 0x0a, 0x08, 0x4e, 0x6f, + 0x72, 0x6d, 0x43, 0x6f, 0x6c, 0x34, 0x18, 0x07, 0x20, 0x03, 0x28, 0x05, 0x52, 0x08, 0x4e, 0x6f, + 0x72, 0x6d, 0x43, 0x6f, 0x6c, 0x34, 0x12, 0x1a, 0x0a, 0x08, 0x4e, 0x6f, 0x72, 0x6d, 0x43, 0x6f, + 0x6c, 0x35, 0x18, 0x08, 0x20, 0x03, 0x28, 0x05, 0x52, 0x08, 0x4e, 0x6f, 0x72, 0x6d, 0x43, 0x6f, + 0x6c, 0x35, 0x12, 0x1a, 0x0a, 0x08, 0x46, 0x72, 0x65, 0x65, 0x43, 0x6f, 0x6c, 0x31, 0x18, 0x09, + 0x20, 0x03, 0x28, 0x05, 0x52, 0x08, 0x46, 0x72, 0x65, 0x65, 0x43, 0x6f, 0x6c, 0x31, 0x12, 0x1a, + 0x0a, 0x08, 0x46, 0x72, 0x65, 0x65, 0x43, 0x6f, 0x6c, 0x32, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x05, + 0x52, 0x08, 0x46, 0x72, 0x65, 0x65, 0x43, 0x6f, 0x6c, 0x32, 0x12, 0x1a, 0x0a, 0x08, 0x46, 0x72, + 0x65, 0x65, 0x43, 0x6f, 0x6c, 0x33, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x05, 0x52, 0x08, 0x46, 0x72, + 0x65, 0x65, 0x43, 0x6f, 0x6c, 0x33, 0x12, 0x1a, 0x0a, 0x08, 0x46, 0x72, 0x65, 0x65, 0x43, 0x6f, + 0x6c, 0x34, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x05, 0x52, 0x08, 0x46, 0x72, 0x65, 0x65, 0x43, 0x6f, + 0x6c, 0x34, 0x12, 0x1a, 0x0a, 0x08, 0x46, 0x72, 0x65, 0x65, 0x43, 0x6f, 0x6c, 0x35, 0x18, 0x0d, + 0x20, 0x03, 0x28, 0x05, 0x52, 0x08, 0x46, 0x72, 0x65, 0x65, 0x43, 0x6f, 0x6c, 0x35, 0x12, 0x18, + 0x0a, 0x07, 0x4d, 0x61, 0x72, 0x79, 0x4f, 0x75, 0x74, 0x18, 0x0e, 0x20, 0x03, 0x28, 0x05, 0x52, + 0x07, 0x4d, 0x61, 0x72, 0x79, 0x4f, 0x75, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x4d, 0x61, 0x72, 0x79, + 0x4d, 0x69, 0x64, 0x18, 0x0f, 0x20, 0x03, 0x28, 0x05, 0x52, 0x07, 0x4d, 0x61, 0x72, 0x79, 0x4d, + 0x69, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x4a, 0x61, 0x63, 0x6b, 0x50, 0x6f, 0x74, 0x18, 0x10, 0x20, + 0x03, 0x28, 0x05, 0x52, 0x07, 0x4a, 0x61, 0x63, 0x6b, 0x50, 0x6f, 0x74, 0x22, 0x45, 0x0a, 0x16, + 0x44, 0x42, 0x5f, 0x53, 0x6c, 0x6f, 0x74, 0x52, 0x61, 0x74, 0x65, 0x57, 0x65, 0x69, 0x67, 0x68, + 0x74, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x2b, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, + 0x53, 0x6c, 0x6f, 0x74, 0x52, 0x61, 0x74, 0x65, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, 0x03, + 0x41, 0x72, 0x72, 0x22, 0x7d, 0x0a, 0x0f, 0x44, 0x42, 0x5f, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, + 0x43, 0x68, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x44, 0x65, 0x73, 0x63, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x44, 0x65, 0x73, 0x63, 0x12, 0x1e, 0x0a, 0x0a, 0x43, 0x68, + 0x61, 0x6e, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, + 0x43, 0x68, 0x61, 0x6e, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x43, 0x6f, + 0x69, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x12, + 0x0a, 0x04, 0x52, 0x61, 0x74, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x52, 0x61, + 0x74, 0x65, 0x22, 0x41, 0x0a, 0x14, 0x44, 0x42, 0x5f, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x43, + 0x68, 0x61, 0x6e, 0x63, 0x65, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x29, 0x0a, 0x03, 0x41, 0x72, + 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, + 0x2e, 0x44, 0x42, 0x5f, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x43, 0x68, 0x61, 0x6e, 0x63, 0x65, + 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0xfd, 0x02, 0x0a, 0x07, 0x44, 0x42, 0x5f, 0x54, 0x61, 0x73, + 0x6b, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, + 0x64, 0x12, 0x14, 0x0a, 0x05, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x05, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x44, + 0x65, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x44, 0x65, 0x73, 0x12, 0x22, 0x0a, + 0x0c, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x54, 0x79, 0x70, 0x65, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x0c, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x54, 0x79, 0x70, + 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x54, 0x61, 0x73, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x18, 0x06, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x08, 0x54, 0x61, 0x73, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x12, 0x20, 0x0a, + 0x0b, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x18, 0x07, 0x20, 0x01, + 0x28, 0x03, 0x52, 0x0b, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x12, + 0x20, 0x0a, 0x0b, 0x46, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x18, 0x08, + 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x46, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x54, 0x69, 0x6d, 0x65, + 0x73, 0x12, 0x30, 0x0a, 0x05, 0x41, 0x77, 0x61, 0x72, 0x64, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x1a, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x54, 0x61, 0x73, + 0x6b, 0x2e, 0x41, 0x77, 0x61, 0x72, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x05, 0x41, 0x77, + 0x61, 0x72, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x47, 0x61, 0x6d, 0x65, 0x54, 0x79, 0x70, 0x65, 0x18, + 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x47, 0x61, 0x6d, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, + 0x1a, 0x0a, 0x08, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0b, 0x20, 0x03, 0x28, + 0x05, 0x52, 0x08, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0x38, 0x0a, 0x0a, 0x41, + 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, 0x31, 0x0a, 0x0c, 0x44, 0x42, 0x5f, 0x54, 0x61, 0x73, 0x6b, + 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x21, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x54, + 0x61, 0x73, 0x6b, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0x85, 0x02, 0x0a, 0x1b, 0x44, 0x42, 0x5f, + 0x54, 0x68, 0x69, 0x72, 0x64, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x47, 0x61, 0x6d, + 0x65, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x22, 0x0a, 0x0c, 0x53, 0x79, 0x73, 0x74, + 0x65, 0x6d, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, + 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x44, 0x12, 0x2c, 0x0a, 0x11, + 0x54, 0x68, 0x69, 0x72, 0x64, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x4e, 0x61, 0x6d, + 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x54, 0x68, 0x69, 0x72, 0x64, 0x50, 0x6c, + 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x54, 0x68, + 0x69, 0x72, 0x64, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x44, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0b, 0x54, 0x68, 0x69, 0x72, 0x64, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x44, 0x12, 0x12, 0x0a, 0x04, + 0x44, 0x65, 0x73, 0x63, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x44, 0x65, 0x73, 0x63, + 0x12, 0x34, 0x0a, 0x15, 0x53, 0x63, 0x72, 0x65, 0x65, 0x6e, 0x4f, 0x72, 0x69, 0x65, 0x6e, 0x74, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x15, 0x53, 0x63, 0x72, 0x65, 0x65, 0x6e, 0x4f, 0x72, 0x69, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x54, 0x68, 0x69, 0x72, 0x64, 0x49, + 0x44, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x54, 0x68, 0x69, 0x72, 0x64, 0x49, 0x44, + 0x22, 0x59, 0x0a, 0x20, 0x44, 0x42, 0x5f, 0x54, 0x68, 0x69, 0x72, 0x64, 0x50, 0x6c, 0x61, 0x74, + 0x66, 0x6f, 0x72, 0x6d, 0x47, 0x61, 0x6d, 0x65, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x41, + 0x72, 0x72, 0x61, 0x79, 0x12, 0x35, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x23, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x54, 0x68, + 0x69, 0x72, 0x64, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x47, 0x61, 0x6d, 0x65, 0x4d, + 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0x43, 0x0a, 0x07, 0x44, + 0x42, 0x5f, 0x54, 0x69, 0x70, 0x73, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x64, + 0x18, 0x02, 0x20, 0x03, 0x28, 0x05, 0x52, 0x06, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x12, 0x10, + 0x0a, 0x03, 0x44, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x44, 0x65, 0x73, + 0x22, 0x31, 0x0a, 0x0c, 0x44, 0x42, 0x5f, 0x54, 0x69, 0x70, 0x73, 0x41, 0x72, 0x72, 0x61, 0x79, + 0x12, 0x21, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, + 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x54, 0x69, 0x70, 0x73, 0x52, 0x03, + 0x41, 0x72, 0x72, 0x22, 0xea, 0x05, 0x0a, 0x06, 0x44, 0x42, 0x5f, 0x56, 0x49, 0x50, 0x12, 0x0e, + 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x12, + 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, + 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x05, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x56, 0x69, 0x70, 0x45, + 0x78, 0x70, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x56, 0x69, 0x70, 0x45, 0x78, 0x70, + 0x12, 0x1e, 0x0a, 0x0a, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x31, 0x18, 0x05, + 0x20, 0x03, 0x28, 0x05, 0x52, 0x0a, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x31, + 0x12, 0x1e, 0x0a, 0x0a, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x32, 0x18, 0x06, + 0x20, 0x03, 0x28, 0x05, 0x52, 0x0a, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x32, + 0x12, 0x18, 0x0a, 0x07, 0x53, 0x68, 0x6f, 0x70, 0x49, 0x64, 0x32, 0x18, 0x07, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x07, 0x53, 0x68, 0x6f, 0x70, 0x49, 0x64, 0x32, 0x12, 0x1e, 0x0a, 0x0a, 0x50, 0x72, + 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x33, 0x18, 0x08, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0a, + 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x33, 0x12, 0x1e, 0x0a, 0x0a, 0x50, 0x72, + 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x34, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, + 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x34, 0x12, 0x1e, 0x0a, 0x0a, 0x50, 0x72, + 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x35, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, + 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x35, 0x12, 0x1e, 0x0a, 0x0a, 0x50, 0x72, + 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x36, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, + 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x36, 0x12, 0x3e, 0x0a, 0x0a, 0x50, 0x72, + 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x37, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, + 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x56, 0x49, 0x50, 0x2e, 0x50, + 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x37, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, + 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x37, 0x12, 0x28, 0x0a, 0x0f, 0x50, 0x72, + 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x37, 0x50, 0x72, 0x69, 0x63, 0x65, 0x18, 0x0d, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x0f, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x37, 0x50, + 0x72, 0x69, 0x63, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x53, 0x68, 0x6f, 0x70, 0x49, 0x64, 0x37, 0x18, + 0x0e, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x53, 0x68, 0x6f, 0x70, 0x49, 0x64, 0x37, 0x12, 0x1e, + 0x0a, 0x0a, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x38, 0x18, 0x0f, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x0a, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x38, 0x12, 0x14, + 0x0a, 0x05, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x18, 0x10, 0x20, 0x03, 0x28, 0x05, 0x52, 0x05, 0x50, + 0x61, 0x72, 0x61, 0x6d, 0x12, 0x28, 0x0a, 0x0f, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x4f, 0x75, + 0x74, 0x6c, 0x69, 0x6e, 0x65, 0x49, 0x44, 0x18, 0x11, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0f, 0x52, + 0x65, 0x77, 0x61, 0x72, 0x64, 0x4f, 0x75, 0x74, 0x6c, 0x69, 0x6e, 0x65, 0x49, 0x44, 0x12, 0x2f, + 0x0a, 0x05, 0x41, 0x77, 0x61, 0x72, 0x64, 0x18, 0x12, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, + 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x56, 0x49, 0x50, 0x2e, 0x41, 0x77, + 0x61, 0x72, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x05, 0x41, 0x77, 0x61, 0x72, 0x64, 0x12, + 0x26, 0x0a, 0x0e, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x46, 0x72, 0x65, 0x65, 0x54, 0x69, 0x6d, 0x65, + 0x73, 0x18, 0x13, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x46, 0x72, + 0x65, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x1a, 0x3d, 0x0a, 0x0f, 0x50, 0x72, 0x69, 0x76, 0x69, + 0x6c, 0x65, 0x67, 0x65, 0x37, 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, 0x1a, 0x38, 0x0a, 0x0a, 0x41, 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, 0x2f, 0x0a, 0x0b, 0x44, 0x42, 0x5f, 0x56, 0x49, 0x50, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, + 0x20, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x73, + 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x56, 0x49, 0x50, 0x52, 0x03, 0x41, 0x72, + 0x72, 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, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x33, } var ( @@ -11735,7 +12033,7 @@ func file_pbdata_proto_rawDescGZIP() []byte { return file_pbdata_proto_rawDescData } -var file_pbdata_proto_msgTypes = make([]protoimpl.MessageInfo, 144) +var file_pbdata_proto_msgTypes = make([]protoimpl.MessageInfo, 150) var file_pbdata_proto_goTypes = []interface{}{ (*DB_ActSign)(nil), // 0: server.DB_ActSign (*DB_ActSignArray)(nil), // 1: server.DB_ActSignArray @@ -11859,28 +12157,34 @@ var file_pbdata_proto_goTypes = []interface{}{ (*DB_RankRewardArray)(nil), // 119: server.DB_RankRewardArray (*DB_Sensitive_Words)(nil), // 120: server.DB_Sensitive_Words (*DB_Sensitive_WordsArray)(nil), // 121: server.DB_Sensitive_WordsArray - (*DB_SlotRateWeight)(nil), // 122: server.DB_SlotRateWeight - (*DB_SlotRateWeightArray)(nil), // 123: server.DB_SlotRateWeightArray - (*DB_SystemChance)(nil), // 124: server.DB_SystemChance - (*DB_SystemChanceArray)(nil), // 125: server.DB_SystemChanceArray - (*DB_Task)(nil), // 126: server.DB_Task - (*DB_TaskArray)(nil), // 127: server.DB_TaskArray - (*DB_ThirdPlatformGameMapping)(nil), // 128: server.DB_ThirdPlatformGameMapping - (*DB_ThirdPlatformGameMappingArray)(nil), // 129: server.DB_ThirdPlatformGameMappingArray - (*DB_Tips)(nil), // 130: server.DB_Tips - (*DB_TipsArray)(nil), // 131: server.DB_TipsArray - (*DB_VIP)(nil), // 132: server.DB_VIP - (*DB_VIPArray)(nil), // 133: server.DB_VIPArray - nil, // 134: server.DB_CollectBox.ItemIDEntry - nil, // 135: server.DB_GiftBox.ItemIDEntry - nil, // 136: server.DB_GiftCard.RewardsEntry - nil, // 137: server.DB_GiftCard.DayRewardsEntry - nil, // 138: server.DB_PetSkill.ItemConsumEntry - nil, // 139: server.DB_PropExchange.CostEntry - nil, // 140: server.DB_PropExchange.GainEntry - nil, // 141: server.DB_Task.AwardEntry - nil, // 142: server.DB_VIP.Privilege7Entry - nil, // 143: server.DB_VIP.AwardEntry + (*DB_Skin)(nil), // 122: server.DB_Skin + (*DB_SkinArray)(nil), // 123: server.DB_SkinArray + (*DB_SkinLevel)(nil), // 124: server.DB_SkinLevel + (*DB_SkinLevelArray)(nil), // 125: server.DB_SkinLevelArray + (*DB_SlotRateWeight)(nil), // 126: server.DB_SlotRateWeight + (*DB_SlotRateWeightArray)(nil), // 127: server.DB_SlotRateWeightArray + (*DB_SystemChance)(nil), // 128: server.DB_SystemChance + (*DB_SystemChanceArray)(nil), // 129: server.DB_SystemChanceArray + (*DB_Task)(nil), // 130: server.DB_Task + (*DB_TaskArray)(nil), // 131: server.DB_TaskArray + (*DB_ThirdPlatformGameMapping)(nil), // 132: server.DB_ThirdPlatformGameMapping + (*DB_ThirdPlatformGameMappingArray)(nil), // 133: server.DB_ThirdPlatformGameMappingArray + (*DB_Tips)(nil), // 134: server.DB_Tips + (*DB_TipsArray)(nil), // 135: server.DB_TipsArray + (*DB_VIP)(nil), // 136: server.DB_VIP + (*DB_VIPArray)(nil), // 137: server.DB_VIPArray + nil, // 138: server.DB_CollectBox.ItemIDEntry + nil, // 139: server.DB_GiftBox.ItemIDEntry + nil, // 140: server.DB_GiftCard.RewardsEntry + nil, // 141: server.DB_GiftCard.DayRewardsEntry + nil, // 142: server.DB_PetSkill.ItemConsumEntry + nil, // 143: server.DB_PropExchange.CostEntry + nil, // 144: server.DB_PropExchange.GainEntry + nil, // 145: server.DB_Skin.UnlockItemEntry + nil, // 146: server.DB_SkinLevel.UpItemEntry + nil, // 147: server.DB_Task.AwardEntry + nil, // 148: server.DB_VIP.Privilege7Entry + nil, // 149: server.DB_VIP.AwardEntry } var file_pbdata_proto_depIdxs = []int32{ 0, // 0: server.DB_ActSignArray.Arr:type_name -> server.DB_ActSign @@ -11895,7 +12199,7 @@ var file_pbdata_proto_depIdxs = []int32{ 18, // 9: server.DB_ChessMatchRulesArray.Arr:type_name -> server.DB_ChessMatchRules 20, // 10: server.DB_ChessRankArray.Arr:type_name -> server.DB_ChessRank 22, // 11: server.DB_ClientVerArray.Arr:type_name -> server.DB_ClientVer - 134, // 12: server.DB_CollectBox.ItemID:type_name -> server.DB_CollectBox.ItemIDEntry + 138, // 12: server.DB_CollectBox.ItemID:type_name -> server.DB_CollectBox.ItemIDEntry 24, // 13: server.DB_CollectBoxArray.Arr:type_name -> server.DB_CollectBox 26, // 14: server.DB_CollectBoxGainArray.Arr:type_name -> server.DB_CollectBoxGain 28, // 15: server.DB_CrashSearchArray.Arr:type_name -> server.DB_CrashSearch @@ -11920,10 +12224,10 @@ var file_pbdata_proto_depIdxs = []int32{ 66, // 34: server.DB_Game_IntroductionArray.Arr:type_name -> server.DB_Game_Introduction 68, // 35: server.DB_Game_PetArray.Arr:type_name -> server.DB_Game_Pet 70, // 36: server.DB_Game_RoleArray.Arr:type_name -> server.DB_Game_Role - 135, // 37: server.DB_GiftBox.ItemID:type_name -> server.DB_GiftBox.ItemIDEntry + 139, // 37: server.DB_GiftBox.ItemID:type_name -> server.DB_GiftBox.ItemIDEntry 72, // 38: server.DB_GiftBoxArray.Arr:type_name -> server.DB_GiftBox - 136, // 39: server.DB_GiftCard.Rewards:type_name -> server.DB_GiftCard.RewardsEntry - 137, // 40: server.DB_GiftCard.DayRewards:type_name -> server.DB_GiftCard.DayRewardsEntry + 140, // 39: server.DB_GiftCard.Rewards:type_name -> server.DB_GiftCard.RewardsEntry + 141, // 40: server.DB_GiftCard.DayRewards:type_name -> server.DB_GiftCard.DayRewardsEntry 74, // 41: server.DB_GiftCardArray.Arr:type_name -> server.DB_GiftCard 76, // 42: server.DB_IceAgeElementRateArray.Arr:type_name -> server.DB_IceAgeElementRate 78, // 43: server.DB_Legend_OddsArray.Arr:type_name -> server.DB_Legend_Odds @@ -11936,7 +12240,7 @@ var file_pbdata_proto_depIdxs = []int32{ 92, // 50: server.DB_NameGirlArray.Arr:type_name -> server.DB_NameGirl 94, // 51: server.DB_NewPlayerArray.Arr:type_name -> server.DB_NewPlayer 96, // 52: server.DB_PassShowArray.Arr:type_name -> server.DB_PassShow - 138, // 53: server.DB_PetSkill.ItemConsum:type_name -> server.DB_PetSkill.ItemConsumEntry + 142, // 53: server.DB_PetSkill.ItemConsum:type_name -> server.DB_PetSkill.ItemConsumEntry 98, // 54: server.DB_PetSkillArray.Arr:type_name -> server.DB_PetSkill 100, // 55: server.DB_PhoneLotteryArray.Arr:type_name -> server.DB_PhoneLottery 102, // 56: server.DB_PigBank_DiamondArray.Arr:type_name -> server.DB_PigBank_Diamond @@ -11944,27 +12248,31 @@ var file_pbdata_proto_depIdxs = []int32{ 106, // 58: server.DB_PlayerExpArray.Arr:type_name -> server.DB_PlayerExp 108, // 59: server.DB_PlayerTypeArray.Arr:type_name -> server.DB_PlayerType 110, // 60: server.DB_PotOddArray.Arr:type_name -> server.DB_PotOdd - 139, // 61: server.DB_PropExchange.Cost:type_name -> server.DB_PropExchange.CostEntry - 140, // 62: server.DB_PropExchange.Gain:type_name -> server.DB_PropExchange.GainEntry + 143, // 61: server.DB_PropExchange.Cost:type_name -> server.DB_PropExchange.CostEntry + 144, // 62: server.DB_PropExchange.Gain:type_name -> server.DB_PropExchange.GainEntry 112, // 63: server.DB_PropExchangeArray.Arr:type_name -> server.DB_PropExchange 114, // 64: server.DB_RankCycleArray.Arr:type_name -> server.DB_RankCycle 116, // 65: server.DB_RankLevelArray.Arr:type_name -> server.DB_RankLevel 118, // 66: server.DB_RankRewardArray.Arr:type_name -> server.DB_RankReward 120, // 67: server.DB_Sensitive_WordsArray.Arr:type_name -> server.DB_Sensitive_Words - 122, // 68: server.DB_SlotRateWeightArray.Arr:type_name -> server.DB_SlotRateWeight - 124, // 69: server.DB_SystemChanceArray.Arr:type_name -> server.DB_SystemChance - 141, // 70: server.DB_Task.Award:type_name -> server.DB_Task.AwardEntry - 126, // 71: server.DB_TaskArray.Arr:type_name -> server.DB_Task - 128, // 72: server.DB_ThirdPlatformGameMappingArray.Arr:type_name -> server.DB_ThirdPlatformGameMapping - 130, // 73: server.DB_TipsArray.Arr:type_name -> server.DB_Tips - 142, // 74: server.DB_VIP.Privilege7:type_name -> server.DB_VIP.Privilege7Entry - 143, // 75: server.DB_VIP.Award:type_name -> server.DB_VIP.AwardEntry - 132, // 76: server.DB_VIPArray.Arr:type_name -> server.DB_VIP - 77, // [77:77] is the sub-list for method output_type - 77, // [77:77] is the sub-list for method input_type - 77, // [77:77] is the sub-list for extension type_name - 77, // [77:77] is the sub-list for extension extendee - 0, // [0:77] is the sub-list for field type_name + 145, // 68: server.DB_Skin.UnlockItem:type_name -> server.DB_Skin.UnlockItemEntry + 122, // 69: server.DB_SkinArray.Arr:type_name -> server.DB_Skin + 146, // 70: server.DB_SkinLevel.UpItem:type_name -> server.DB_SkinLevel.UpItemEntry + 124, // 71: server.DB_SkinLevelArray.Arr:type_name -> server.DB_SkinLevel + 126, // 72: server.DB_SlotRateWeightArray.Arr:type_name -> server.DB_SlotRateWeight + 128, // 73: server.DB_SystemChanceArray.Arr:type_name -> server.DB_SystemChance + 147, // 74: server.DB_Task.Award:type_name -> server.DB_Task.AwardEntry + 130, // 75: server.DB_TaskArray.Arr:type_name -> server.DB_Task + 132, // 76: server.DB_ThirdPlatformGameMappingArray.Arr:type_name -> server.DB_ThirdPlatformGameMapping + 134, // 77: server.DB_TipsArray.Arr:type_name -> server.DB_Tips + 148, // 78: server.DB_VIP.Privilege7:type_name -> server.DB_VIP.Privilege7Entry + 149, // 79: server.DB_VIP.Award:type_name -> server.DB_VIP.AwardEntry + 136, // 80: server.DB_VIPArray.Arr:type_name -> server.DB_VIP + 81, // [81:81] is the sub-list for method output_type + 81, // [81:81] is the sub-list for method input_type + 81, // [81:81] is the sub-list for extension type_name + 81, // [81:81] is the sub-list for extension extendee + 0, // [0:81] is the sub-list for field type_name } func init() { file_pbdata_proto_init() } @@ -13438,7 +13746,7 @@ func file_pbdata_proto_init() { } } file_pbdata_proto_msgTypes[122].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_SlotRateWeight); i { + switch v := v.(*DB_Skin); i { case 0: return &v.state case 1: @@ -13450,7 +13758,7 @@ func file_pbdata_proto_init() { } } file_pbdata_proto_msgTypes[123].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_SlotRateWeightArray); i { + switch v := v.(*DB_SkinArray); i { case 0: return &v.state case 1: @@ -13462,7 +13770,7 @@ func file_pbdata_proto_init() { } } file_pbdata_proto_msgTypes[124].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_SystemChance); i { + switch v := v.(*DB_SkinLevel); i { case 0: return &v.state case 1: @@ -13474,7 +13782,7 @@ func file_pbdata_proto_init() { } } file_pbdata_proto_msgTypes[125].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_SystemChanceArray); i { + switch v := v.(*DB_SkinLevelArray); i { case 0: return &v.state case 1: @@ -13486,7 +13794,7 @@ func file_pbdata_proto_init() { } } file_pbdata_proto_msgTypes[126].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_Task); i { + switch v := v.(*DB_SlotRateWeight); i { case 0: return &v.state case 1: @@ -13498,7 +13806,7 @@ func file_pbdata_proto_init() { } } file_pbdata_proto_msgTypes[127].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_TaskArray); i { + switch v := v.(*DB_SlotRateWeightArray); i { case 0: return &v.state case 1: @@ -13510,7 +13818,7 @@ func file_pbdata_proto_init() { } } file_pbdata_proto_msgTypes[128].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_ThirdPlatformGameMapping); i { + switch v := v.(*DB_SystemChance); i { case 0: return &v.state case 1: @@ -13522,7 +13830,7 @@ func file_pbdata_proto_init() { } } file_pbdata_proto_msgTypes[129].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_ThirdPlatformGameMappingArray); i { + switch v := v.(*DB_SystemChanceArray); i { case 0: return &v.state case 1: @@ -13534,7 +13842,7 @@ func file_pbdata_proto_init() { } } file_pbdata_proto_msgTypes[130].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_Tips); i { + switch v := v.(*DB_Task); i { case 0: return &v.state case 1: @@ -13546,7 +13854,7 @@ func file_pbdata_proto_init() { } } file_pbdata_proto_msgTypes[131].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_TipsArray); i { + switch v := v.(*DB_TaskArray); i { case 0: return &v.state case 1: @@ -13558,7 +13866,7 @@ func file_pbdata_proto_init() { } } file_pbdata_proto_msgTypes[132].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_VIP); i { + switch v := v.(*DB_ThirdPlatformGameMapping); i { case 0: return &v.state case 1: @@ -13570,6 +13878,54 @@ func file_pbdata_proto_init() { } } file_pbdata_proto_msgTypes[133].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DB_ThirdPlatformGameMappingArray); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pbdata_proto_msgTypes[134].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DB_Tips); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pbdata_proto_msgTypes[135].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DB_TipsArray); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pbdata_proto_msgTypes[136].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DB_VIP); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pbdata_proto_msgTypes[137].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DB_VIPArray); i { case 0: return &v.state @@ -13588,7 +13944,7 @@ func file_pbdata_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_pbdata_proto_rawDesc, NumEnums: 0, - NumMessages: 144, + NumMessages: 150, NumExtensions: 0, NumServices: 0, }, diff --git a/protocol/server/pbdata.proto b/protocol/server/pbdata.proto index e76964c..48b07df 100644 --- a/protocol/server/pbdata.proto +++ b/protocol/server/pbdata.proto @@ -1513,6 +1513,44 @@ message DB_Sensitive_WordsArray { repeated DB_Sensitive_Words Arr = 1; } +message DB_Skin { + + int32 Id = 1; + + string Model = 2; + + string SkinPic = 3; + + string SkinName = 4; + + string SkinType = 5; + + int32 UnlockType = 6; + + map UnlockItem = 7; + +} + +message DB_SkinArray { + repeated DB_Skin Arr = 1; +} + +message DB_SkinLevel { + + int32 Id = 1; + + int32 SkinId = 2; + + int32 Level = 3; + + map UpItem = 4; + +} + +message DB_SkinLevelArray { + repeated DB_SkinLevel Arr = 1; +} + message DB_SlotRateWeight { int32 Id = 1; diff --git a/protocol/tienlen/tienlen.proto b/protocol/tienlen/tienlen.proto index cf7a141..8dd5023 100644 --- a/protocol/tienlen/tienlen.proto +++ b/protocol/tienlen/tienlen.proto @@ -64,7 +64,7 @@ message TienLenPlayerData { int64 Level = 27; //玩家等级 int64 Exp = 28; //玩家经验 int64 PigBankCoin = 29; //存钱罐金币 - repeated PetSkillInfo SkillInfo = 30;//宠物技能信息 + repeated PetSkillInfo SkillInfo = 30;//宠物技能信息 } //宠物技能 diff --git a/public b/public index 20147d9..e23e35d 160000 --- a/public +++ b/public @@ -1 +1 @@ -Subproject commit 20147d9ef04cb8f6f1df630ced583280c0361312 +Subproject commit e23e35def8bf29736c1e4c3ed56781f51ed94773 diff --git a/srvdata/db_skin.go b/srvdata/db_skin.go new file mode 100644 index 0000000..d1da9c3 --- /dev/null +++ b/srvdata/db_skin.go @@ -0,0 +1,77 @@ + +// Code generated by xlsx2proto. +// DO NOT EDIT! + +package srvdata + +import ( + "google.golang.org/protobuf/proto" + + "mongo.games.com/game/protocol/server" +) + +var PBDB_SkinMgr = &DB_SkinMgr{ + Datas: &server.DB_SkinArray{}, + pool: make(map[int32]*server.DB_Skin), + +} + +type DB_SkinMgr struct { + Datas *server.DB_SkinArray + pool map[int32]*server.DB_Skin + +} + +func (this *DB_SkinMgr) unmarshal(data []byte) error { + err := proto.Unmarshal(data, this.Datas) + if err == nil { + this.arrangeData() + } + return err +} + +func (this *DB_SkinMgr) reunmarshal(data []byte) error { + newDatas := &server.DB_SkinArray{} + err := proto.Unmarshal(data, newDatas) + if err == nil { + for _, item := range newDatas.Arr { + existItem := this.GetData(item.GetId()) + if existItem == nil { + this.pool[item.GetId()] = item + this.Datas.Arr = append(this.Datas.Arr, item) + + } else { + *existItem = *item + } + } + } + return err +} + +func (this *DB_SkinMgr) arrangeData() { + if this.Datas == nil { + return + } + + dataArr := this.Datas.GetArr() + if dataArr == nil { + return + } + + for _, data := range dataArr { + this.pool[data.GetId()] = data + + } +} + +func (this *DB_SkinMgr) GetData(id int32) *server.DB_Skin { + if data, ok := this.pool[id]; ok { + return data + } + return nil +} + + +func init() { + DataMgr.register("DB_Skin.dat", &ProtobufDataLoader{dh: PBDB_SkinMgr}) +} diff --git a/srvdata/db_skinlevel.go b/srvdata/db_skinlevel.go new file mode 100644 index 0000000..5c4688a --- /dev/null +++ b/srvdata/db_skinlevel.go @@ -0,0 +1,77 @@ + +// Code generated by xlsx2proto. +// DO NOT EDIT! + +package srvdata + +import ( + "google.golang.org/protobuf/proto" + + "mongo.games.com/game/protocol/server" +) + +var PBDB_SkinLevelMgr = &DB_SkinLevelMgr{ + Datas: &server.DB_SkinLevelArray{}, + pool: make(map[int32]*server.DB_SkinLevel), + +} + +type DB_SkinLevelMgr struct { + Datas *server.DB_SkinLevelArray + pool map[int32]*server.DB_SkinLevel + +} + +func (this *DB_SkinLevelMgr) unmarshal(data []byte) error { + err := proto.Unmarshal(data, this.Datas) + if err == nil { + this.arrangeData() + } + return err +} + +func (this *DB_SkinLevelMgr) reunmarshal(data []byte) error { + newDatas := &server.DB_SkinLevelArray{} + err := proto.Unmarshal(data, newDatas) + if err == nil { + for _, item := range newDatas.Arr { + existItem := this.GetData(item.GetId()) + if existItem == nil { + this.pool[item.GetId()] = item + this.Datas.Arr = append(this.Datas.Arr, item) + + } else { + *existItem = *item + } + } + } + return err +} + +func (this *DB_SkinLevelMgr) arrangeData() { + if this.Datas == nil { + return + } + + dataArr := this.Datas.GetArr() + if dataArr == nil { + return + } + + for _, data := range dataArr { + this.pool[data.GetId()] = data + + } +} + +func (this *DB_SkinLevelMgr) GetData(id int32) *server.DB_SkinLevel { + if data, ok := this.pool[id]; ok { + return data + } + return nil +} + + +func init() { + DataMgr.register("DB_SkinLevel.dat", &ProtobufDataLoader{dh: PBDB_SkinLevelMgr}) +} diff --git a/worldsrv/action_task.go b/worldsrv/action_task.go index 4dc2465..d572a02 100644 --- a/worldsrv/action_task.go +++ b/worldsrv/action_task.go @@ -52,7 +52,7 @@ func IsTaskReward(p *Player, id int32) bool { if data := p.WelfData.Task[id]; data != nil && data.Ts > 0 { t := srvdata.PBDB_TaskMgr.GetData(id) switch t.ActivityType { - case common.TaskActivityTypeEveryDay, common.TaskActivityTypePermit: + case common.TaskActivityTypeEveryDay, common.TaskActivityTypePermitEveryDay: if common.TsInSameDay(time.Now().Unix(), data.Ts) { return true } @@ -66,6 +66,13 @@ func IsTaskReward(p *Player, id int32) bool { if data.Ts > 0 { return true } + case common.TaskActivityTypePermit: + startTs := PlatformMgrSingleton.GetConfig(p.Platform).PermitStartTs + endTs := PlatformMgrSingleton.GetConfig(p.Platform).PermitEndTs + if startTs > 0 { + return data.Ts >= startTs && data.Ts < endTs + } + return true } } } diff --git a/worldsrv/player.go b/worldsrv/player.go index 09a8aa4..0512f6c 100644 --- a/worldsrv/player.go +++ b/worldsrv/player.go @@ -2258,7 +2258,7 @@ func (this *Player) OnDayTimer(login, continuous bool, t int) { for _, v := range srvdata.TaskMgr.GetActivityType(common.TaskActivityTypeEveryDay) { this.WelfData.Task[v.GetId()] = &model.TaskData{} } - for _, v := range srvdata.TaskMgr.GetActivityType(common.TaskActivityTypePermit) { + for _, v := range srvdata.TaskMgr.GetActivityType(common.TaskActivityTypePermitEveryDay) { this.WelfData.Task[v.GetId()] = &model.TaskData{} } } @@ -2299,6 +2299,12 @@ func (this *Player) ResetPermit() { } this.WelfData.PermitAward = make(map[int32]int64) this.WelfData.PermitExchange = make(map[int32][]int64) + if this.WelfData.Task != nil { + for _, v := range srvdata.TaskMgr.GetActivityType(common.TaskActivityTypePermit) { + this.WelfData.Task[v.GetId()] = &model.TaskData{} + } + } + this.dirty = true // 清理数据 bag := BagMgrSingleton.GetBagInfo(this.SnId) @@ -3950,6 +3956,10 @@ func (this *Player) GetPayGoodsInfo() { SnId: this.SnId, Ts: time.Now().Unix(), }) + TaskSubjectSingleton.Touch(common.TaskTypeBuyPermit, &TaskData{ + SnId: this.SnId, + Num: 1, + }) } switch info.Remark { case "BlindBox": diff --git a/worldsrv/taskmgr.go b/worldsrv/taskmgr.go index f592462..9ab7e46 100644 --- a/worldsrv/taskmgr.go +++ b/worldsrv/taskmgr.go @@ -260,4 +260,5 @@ func init() { TaskSubjectSingleton.Attach(common.TaskTypeTienlenLoseCoin, taskHandle) TaskSubjectSingleton.Attach(common.TaskTypeTienlenWinCoin, taskHandle) TaskSubjectSingleton.Attach(common.TaskTypeRankMatchWinTimes, taskHandle) + TaskSubjectSingleton.Attach(common.TaskTypeBuyPermit, taskHandle) } diff --git a/worldsrv/trascate_webapi.go b/worldsrv/trascate_webapi.go index 0c6c392..a882271 100644 --- a/worldsrv/trascate_webapi.go +++ b/worldsrv/trascate_webapi.go @@ -3473,6 +3473,10 @@ func init() { SnId: player.SnId, Ts: time.Now().Unix(), }) + TaskSubjectSingleton.Touch(common.TaskTypeBuyPermit, &TaskData{ + SnId: player.SnId, + Num: 1, + }) } switch info.Remark { case "BlindBox": diff --git a/xlsx/DB_GameItem.xlsx b/xlsx/DB_GameItem.xlsx index 3c40b61ab31ebed806eae313959c999b53a74330..bc6a7ec7a5483091776296437ea01d58700fcabe 100644 GIT binary patch delta 14036 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 delta 13781 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 W5&xQi{e2M}*ujt)=}!CUo&N(gu3^vs diff --git a/xlsx/DB_Skin.xlsx b/xlsx/DB_Skin.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..850f7abef3de6f554937d9c356096292196c86fe GIT binary patch literal 10927 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 literal 0 HcmV?d00001 diff --git a/xlsx/DB_SkinLevel.xlsx b/xlsx/DB_SkinLevel.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..3aa22b72303930265baada6a90edf71e71b27017 GIT binary patch literal 9914 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 Dm`V^i literal 0 HcmV?d00001 diff --git a/xlsx/DB_Task.xlsx b/xlsx/DB_Task.xlsx index ff4abe0574b23be87e9e8a7a24152e80c3a52678..0e939502c74e7a0002a8607ab0aa3a5947e9a214 100644 GIT binary patch delta 12970 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 delta 12333 zcmZv?by!t<^FF-k?(UXSq(izxI<|BwCEdN~lHMRlr*wCBgEZ19EhPFrJ23c zJ2nqn8{dRg%}$b z9p|27uO)|tz5G_2QIhLkr99svW+kBtpZZne&^3TE`QjE<`U}?!ZLRlAla%DCK+>Lt z0AJ!)!V_EDE-w@|RQh8kK7=I?d!~UHdohmW;84uXl7`5;s=D_!#K61vT_iMkWnEm| zLcJL5yuvsXae+5-7v`me)cm2S_?D**srk2sN8KzpdjY&8+)0<-cxx_`6g3E^Jss`N zH81TNm){Cn^8^BsSw!ww#~NnEK$?!D*gH1<9m14KTTh0>*=f(^GAALqRA%tloiy>S zLSWNcvQZY5z*9SgN4Xyo0uBPr(g78uaBBS6DQ0BD1qU+9uata{XimcLt)Thpn-ATB zZBg&)FWg#3#m^Y=QI@GW0aah7$(Y`Aj?Ey0`7fgZjq#ZL(7ANDbodL)~w5;Ch}RVzY8zkKJ7s zws6&!K7BGsNC|`a#l>3M^5g5GRsmYpue+}oGu;zA_s5P`KXx3>HgC_2@0=Q20H3?3 zoim`r;Mex{X7{rBxl^ZyZu|32@~3tm!Jm6yfBlS|06M`(qHBK7lhfdcHg}FkH)F?l zuV$vEmRDnUF1C()4_)uJo@13>U6^h^H9z@XUbh&soh-{tsL1wiZ(ro?^>2^TNZ;12 zF%BGVZl2qD*0(%dc;40IP#^8gm~IdJy52s&Qp$aF?R?YraJ7}(3MNru?_;fTIY%rs z_nC-w2ae{J4^1vM?XG;JBx~Pzdb*%|z4Nhvy;7XNFnt`%s{G{;V6@u*_;h>Obl2Lh zPcrGWz5Vn4>ZrH!Ya^EXOQA^PKtv+hQKkF6W%Dba`i1A1oql#)sui&vejR{I?Lz*O zal6m0)9v!cOyh@INefGZryIw+qZhZ2#xMWrGL(i_yjx_iD?<6>uo2^iU~RFQhWUL26e zI-2YJ`0|)|sbXa#^?c|QNy*1X4yHJ$v^(U(<*(y8?#|ZFva9vMoujS>jXocbf*y8y zw}6R4r53OI&cTQA*q33+VYzdqM%z2vH&iEqh=o+4$MCD=nfk~#zk>D#cLxN7JPdzI zLnOvm`A?SQ_Z))EpJ#NYrOdBC{*-*Rj%B&#Gbj z{zgML3%G6iwXix?cf6`%C+d=1y*`v?Wktr<>C%3>+G1ANoJSlwgY|&rOU=&HDd!*i zpt349WbGIKLDX*o6kHb|YrDZ_KCy`R9TA3a@07U1e`e*L^QXH5AGS-X(c62r)MdbD z9Sz$JkutNEW|d#>Mj zlnddp&lGAn0fQ7J1nb&upOebOs?_-KVGNe!^hTS;(Q zVgpMMuh?!m9hcxH!ReONx&PFg@Ks)`K<0ICBDJm=PpO%5ojvE&Y}3EGV>0Btwle0S zYeLK$`Ci0@NT-?~JzU8A(JyhtLPCU*CR$Q@JJENk-b9ba{uM)b*=>6D#NY{KCK-dp zPR#{#lsahvr^0yT>CrsXdJh0r71w{~fyDi7e6lE=aXE^atWjcSFHb!ye!^iA4TE^@ zOvYHVE4Gn@@vRU-q9)C!gb8_n`9k=VqG?Vus;rh~H778v;=h%G{pD+07CRf__{?(c z9^R&LyxRsVdif}83V#`53`F@$=WL1%m+}xYkdj^m()fYG!7&m=kX7`THm3ih4HQzE zcIqG4MuMsp0kIuOjMmH9KNnCVpr*@0#y8gNB@0m7acLXpr=gR`iAzg}4a(gU_n09` zyYM%kV>j#Hv$0D|Px8mgOOz>&Qm@^5XyF-YtRgtuB_ zGfA9=28A`)$EZ=}j<5k%WCdoJO=N{R>bvW(H^0qjkuKjeV@(vf#eKqI3MxjHE`o=; z<%$MOi?a0kN9Od3ZhqAy^S*g!Yp*i!OEa4?R74V$)ldFZWr%^kp{w&-158}%%0A}1 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 b=J`K^`TrFNdIl9BfaJX)KulEmt?K^)aLjHi