diff --git a/modules/chat/module.go b/modules/chat/module.go index b5bdcfd53..1920143ec 100644 --- a/modules/chat/module.go +++ b/modules/chat/module.go @@ -39,17 +39,17 @@ type Chat struct { modelChat *modelChatComp } -//重构模块配置对象 +// 重构模块配置对象 func (this *Chat) NewOptions() (options core.IModuleOptions) { return new(Options) } -//模块名 +// 模块名 func (this *Chat) GetType() core.M_Modules { return comm.ModuleChat } -//模块初始化接口 注册用户创建角色事件 +// 模块初始化接口 注册用户创建角色事件 func (this *Chat) Init(service core.IService, module core.IModule, options core.IModuleOptions) (err error) { err = this.ModuleBase.Init(service, module, options) this.service = service.(base.IRPCXService) @@ -73,7 +73,7 @@ func (this *Chat) Start() (err error) { return } -//装备组件 +// 装备组件 func (this *Chat) OnInstallComp() { this.ModuleBase.OnInstallComp() this.api_comp = this.RegisterComp(new(apiComp)).(*apiComp) @@ -81,15 +81,15 @@ func (this *Chat) OnInstallComp() { this.configure = this.RegisterComp(new(configureComp)).(*configureComp) } -//Event------------------------------------------------------------------------------------------------------------ +// Event------------------------------------------------------------------------------------------------------------ func (this *Chat) EventUserOffline(uid, sessionid string) { if err := this.modelChat.removeCrossChannelMember(uid); err != nil { this.Error("EventUserOffline", log.Field{Key: "uid", Value: uid}, log.Field{Key: "err", Value: err.Error()}) } } -//RPC-------------------------------------------------------------------------------------------------------------- -//推送聊天消息 +// RPC-------------------------------------------------------------------------------------------------------------- +// 推送聊天消息 func (this *Chat) Rpc_ModuleChatPushChat(ctx context.Context, args *pb.DBChat, reply *pb.EmptyResp) (err error) { var ( max_chat int32 @@ -133,8 +133,8 @@ func (this *Chat) Rpc_ModuleChatPushChat(ctx context.Context, args *pb.DBChat, r return } -//对外接口---------------------------------------------------------------------------------------------------------- -//向世界频道发送聊天消息 +// 对外接口---------------------------------------------------------------------------------------------------------- +// 向世界频道发送聊天消息 func (this *Chat) SendWorldChat(msg *pb.DBChat) (errdata *pb.ErrorData) { var ( max_chat int32 @@ -173,7 +173,7 @@ func (this *Chat) SendWorldChat(msg *pb.DBChat) (errdata *pb.ErrorData) { return } -//向工会发送聊天消息 +// 向工会发送聊天消息 func (this *Chat) SendUnionChat(msg *pb.DBChat) (errdata *pb.ErrorData) { var ( max_chat int32 @@ -212,7 +212,7 @@ func (this *Chat) SendUnionChat(msg *pb.DBChat) (errdata *pb.ErrorData) { return } -//向个人发送聊天消息 +// 向个人发送聊天消息 func (this *Chat) SendUserChat(msg *pb.DBChat) (errdata *pb.ErrorData) { var ( err error @@ -246,7 +246,7 @@ func (this *Chat) SendUserChat(msg *pb.DBChat) (errdata *pb.ErrorData) { return } -//广播系统消息 +// 广播系统消息 func (this *Chat) SendSysChatToWorld(ctype comm.ChatSystemType, appenddata interface{}, value0 int32, value1 int32, agrs ...string) (errdata *pb.ErrorData) { var ( jsonStr []byte @@ -263,7 +263,8 @@ func (this *Chat) SendSysChatToWorld(ctype comm.ChatSystemType, appenddata inter AppendInt: int64(st.Key), AppendStrs: agrs, } - if ctype == comm.ChatSystem3 { //装备分享 + switch ctype { + case comm.ChatSystem3: msg.Ctype = pb.ChatType_Share if appenddata != nil { if jsonStr, err = json.Marshal(appenddata); err != nil { @@ -280,6 +281,23 @@ func (this *Chat) SendSysChatToWorld(ctype comm.ChatSystemType, appenddata inter msg.AppendStr = string(jsonStr) } } + case comm.ChatSystem7, comm.ChatSystem8, comm.ChatSystem9, comm.ChatSystem10, comm.ChatSystem11: + msg.Ctype = pb.ChatType_Share + if appenddata != nil { + if jsonStr, err = json.Marshal(appenddata); err != nil { + this.Errorf("err:%v", err) + } else { + data := map[string]interface{}{ + agrs[1]: map[string]interface{}{ + "key": agrs[1], + "appendStr": string(jsonStr), + "itemType": pb.ChatType_HeroShare, + }, + } + jsonStr, _ = json.Marshal(data) + msg.AppendStr = string(jsonStr) + } + } } if this.IsCross() { @@ -307,7 +325,7 @@ func (this *Chat) SendSysChatToWorld(ctype comm.ChatSystemType, appenddata inter return } -//广播系统消息 +// 广播系统消息 func (this *Chat) SendSysChatToUser(session comm.IUserSession, ctype comm.ChatSystemType, value0, value1 int32, agrs ...string) (errdata *pb.ErrorData) { if st, ok := this.configure.GetCheckChatSystem(int32(ctype), value0, value1); ok { msg := &pb.DBChat{ @@ -320,8 +338,8 @@ func (this *Chat) SendSysChatToUser(session comm.IUserSession, ctype comm.ChatSy return } -//Push-------------------------------------------------------------------------------------------------------------- -//推送消息到世界 +// Push-------------------------------------------------------------------------------------------------------------- +// 推送消息到世界 func (this *Chat) pushChatToWorld(msg *pb.DBChat) (err error) { data, _ := anypb.New(&pb.ChatMessagePush{Chat: msg}) if err = this.service.AcrossClusterBroadcast(context.Background(), msg.Stag, comm.Service_Gateway, string(comm.Rpc_GatewaySendRadioMsg), pb.UserMessage{ @@ -334,7 +352,7 @@ func (this *Chat) pushChatToWorld(msg *pb.DBChat) (err error) { return } -//推送消息到工会 +// 推送消息到工会 func (this *Chat) pushChatToUnion(msg *pb.DBChat) (err error) { if members := this.sociaty.MembersBySociatyId(msg.UnionId); members != nil { users := make([]string, 0, len(members)) @@ -348,7 +366,7 @@ func (this *Chat) pushChatToUnion(msg *pb.DBChat) (err error) { return } -//推送私聊消息 +// 推送私聊消息 func (this *Chat) pushChatToPrivate(msg *pb.DBChat) (err error) { var ( session comm.IUserSession @@ -369,7 +387,7 @@ func (this *Chat) pushChatToPrivate(msg *pb.DBChat) (err error) { return } -//推送跨服频道消息 +// 推送跨服频道消息 func (this *Chat) pushChatToCross(msg *pb.DBChat) (err error) { var ( users []*pb.CacheUser @@ -383,7 +401,7 @@ func (this *Chat) pushChatToCross(msg *pb.DBChat) (err error) { return } -//推送系统消息 +// 推送系统消息 func (this *Chat) pushChatToSystem(msg *pb.DBChat) (err error) { data, _ := anypb.New(&pb.ChatMessagePush{Chat: msg}) if err = this.service.ClusterBroadcast(context.Background(), comm.Service_Gateway, string(comm.Rpc_GatewaySendRadioMsg), pb.UserMessage{ diff --git a/modules/hero/api_strengthenUplv.go b/modules/hero/api_strengthenUplv.go index ef0f6762c..f9721c2e5 100644 --- a/modules/hero/api_strengthenUplv.go +++ b/modules/hero/api_strengthenUplv.go @@ -7,7 +7,7 @@ import ( cfg "go_dreamfactory/sys/configure/structs" ) -//参数校验 +// 参数校验 func (this *apiComp) StrengthenUplvCheck(session comm.IUserSession, req *pb.HeroStrengthenUplvReq) (errdata *pb.ErrorData) { if req.HeroObjID == "" || len(req.Item) == 0 { errdata = &pb.ErrorData{ @@ -20,7 +20,7 @@ func (this *apiComp) StrengthenUplvCheck(session comm.IUserSession, req *pb.Hero return } -/// 英雄升级 +// / 英雄升级 func (this *apiComp) StrengthenUplv(session comm.IUserSession, req *pb.HeroStrengthenUplvReq) (errdata *pb.ErrorData) { var ( @@ -96,7 +96,7 @@ func (this *apiComp) StrengthenUplv(session comm.IUserSession, req *pb.HeroStren //英雄升级 【玩家名称】已将【英雄名称】培养至60级! if user := this.module.ModuleUser.GetUser(session.GetUserId()); user != nil { - this.chat.SendSysChatToWorld(comm.ChatSystem7, nil, _hero.Lv, 0, user.Name, _hero.HeroID) + this.chat.SendSysChatToWorld(comm.ChatSystem7, _hero, _hero.Lv, 0, user.Name, _hero.HeroID) } else { this.module.Errorf("no found userdata uid:%s", session.GetUserId()) } diff --git a/modules/practice/api_getgymbuff.go b/modules/practice/api_getgymbuff.go index fa270afcd..092d05b81 100644 --- a/modules/practice/api_getgymbuff.go +++ b/modules/practice/api_getgymbuff.go @@ -4,19 +4,21 @@ import ( "go_dreamfactory/comm" "go_dreamfactory/pb" cfg "go_dreamfactory/sys/configure/structs" + "go_dreamfactory/utils" ) -//参数校验 +// 参数校验 func (this *apiComp) GetGymBuffCheck(session comm.IUserSession, req *pb.PracticeGetGymBuffReq) (errdata *pb.ErrorData) { return } -///练功请求 +// /练功请求 func (this *apiComp) GetGymBuff(session comm.IUserSession, req *pb.PracticeGetGymBuffReq) (errdata *pb.ErrorData) { var ( mryl *cfg.GamePandamasMrylData buff *cfg.GamePandamasBuffData + room *pb.DBPracticeRoom err error ) @@ -37,6 +39,22 @@ func (this *apiComp) GetGymBuff(session comm.IUserSession, req *pb.PracticeGetGy return } go this.module.ModuleBuried.TriggerBuried(session.GetUserId(), comm.GetBuriedParam(comm.Rtype185, 1)) + + if room, err = this.module.modelPandata.queryUserMartialhall(session.GetUserId()); err != nil { + errdata = &pb.ErrorData{ + Code: pb.ErrorCode_DBError, + Title: pb.ErrorCode_DBError.ToString(), + Message: err.Error(), + } + return + } + + if !utils.IsToday(room.Lastgymtime) { + if errdata = this.module.DispenseRes(session, this.module.ModuleTools.GetGlobalConf().MrylReward, true); errdata != nil { + return + } + } + session.SendMsg(string(this.module.GetType()), "getgymbuff", &pb.PracticeGetGymBuffResp{Buffid: buff.Id}) return } diff --git a/modules/wtask/api_accept.go b/modules/wtask/api_accept.go new file mode 100644 index 000000000..e25ffba70 --- /dev/null +++ b/modules/wtask/api_accept.go @@ -0,0 +1,36 @@ +package wtask + +import ( + "go_dreamfactory/comm" + "go_dreamfactory/pb" +) + +// 参数校验 +func (this *apiComp) InfoCheck(session comm.IUserSession, req *pb.WTaskAcceptReq) (errdata *pb.ErrorData) { + + return +} + +// /获取系统公告 +func (this *apiComp) Info(session comm.IUserSession, req *pb.WTaskAcceptReq) (errdata *pb.ErrorData) { + var ( + wtask *pb.DBWTask + err error + ) + if errdata = this.InfoCheck(session, req); errdata != nil { + return + } + if wtask, err = this.module.modelwtask.getUserWTasks(session.GetUserId()); err != nil { + errdata = &pb.ErrorData{ + Code: pb.ErrorCode_DBError, + Title: pb.ErrorCode_DBError.ToString(), + Message: err.Error(), + } + return + } + if errdata = this.module.pushtaskprogress(session, wtask); errdata != nil { + return + } + session.SendMsg(string(this.module.GetType()), "info", &pb.WTaskInfoResp{Activations: wtask.Activations, Accepttask: wtask.Accepts, Completes: wtask.Completes}) + return +} diff --git a/modules/wtask/module.go b/modules/wtask/module.go index fe3473e8f..f1992d070 100644 --- a/modules/wtask/module.go +++ b/modules/wtask/module.go @@ -242,11 +242,12 @@ func (this *WTask) fishtask(session comm.IUserSession, wtask *pb.DBWTask) { // 查询可接取任务列表 func (this *WTask) inquireActivations(session comm.IUserSession, wtask *pb.DBWTask, lv int32, opencmd []string) (err error) { var ( - conf *cfg.GameWorldTask - completeMap map[int32]struct{} = make(map[int32]struct{}) - opencmdMap map[string]struct{} = make(map[string]struct{}) - ok bool - change bool + conf *cfg.GameWorldTask + completeMap map[int32]struct{} = make(map[int32]struct{}) + opencmdMap map[string]struct{} = make(map[string]struct{}) + ok bool + changeActiva bool + changeAccept bool ) if conf, err = this.configure.getWorldtaskCfg(); err != nil { return @@ -276,15 +277,21 @@ func (this *WTask) inquireActivations(session comm.IUserSession, wtask *pb.DBWTa } if v.AutoAccept == 0 { wtask.Activations = append(wtask.Activations, v.Key) - change = true + changeActiva = true } else if v.AutoAccept == 1 { //自动接取任务 wtask.Accepts = append(wtask.Accepts, v.Key) + changeAccept = true } } - if change { + //有新任务接取 + if changeActiva { session.SendMsg(string(this.GetType()), "activations", &pb.WTaskActivationsChangePush{Activations: wtask.Activations}) } + + if changeAccept { + this.pushtaskprogress(session, wtask) + } return } diff --git a/pb/practice_db.pb.go b/pb/practice_db.pb.go index d221b8b19..35401e104 100644 --- a/pb/practice_db.pb.go +++ b/pb/practice_db.pb.go @@ -399,19 +399,20 @@ type DBPracticeRoom struct { Gymaction int32 `protobuf:"varint,3,opt,name=gymaction,proto3" json:"gymaction"` //健身房动作 Gymrefresh int32 `protobuf:"varint,4,opt,name=gymrefresh,proto3" json:"gymrefresh"` //健身房刷新次数 Lastrefresh int64 `protobuf:"varint,5,opt,name=lastrefresh,proto3" json:"lastrefresh"` //最后刷新时间 - Full map[int32]int32 `protobuf:"bytes,6,rep,name=full,proto3" json:"full" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"` //满级登记 - Knapsack map[string]*DBPracticeRes `protobuf:"bytes,7,rep,name=knapsack,proto3" json:"knapsack" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` //资源 - Pillar1 *DBPracticePillar `protobuf:"bytes,8,opt,name=pillar1,proto3" json:"pillar1"` //柱子1 - Pillar2 *DBPracticePillar `protobuf:"bytes,9,opt,name=pillar2,proto3" json:"pillar2"` //柱子2 - Pillar3 *DBPracticePillar `protobuf:"bytes,10,opt,name=pillar3,proto3" json:"pillar3"` //柱子3 - Pillarf *DBPracticePillar `protobuf:"bytes,11,opt,name=pillarf,proto3" json:"pillarf"` //好友柱子 - Statuers []*DBPracticeStatuer `protobuf:"bytes,12,rep,name=statuers,proto3" json:"statuers"` //武馆雕像 - Currnpc int32 `protobuf:"varint,13,opt,name=currnpc,proto3" json:"currnpc"` //当前npc - Npcstate int32 `protobuf:"varint,14,opt,name=npcstate,proto3" json:"npcstate"` //npc状态 -1未开启 0 未挑战 1 挑战失败 2挑战成功 3 CD中 - Refresh int64 `protobuf:"varint,15,opt,name=refresh,proto3" json:"refresh"` //刷新时间 - Battlenum int32 `protobuf:"varint,16,opt,name=battlenum,proto3" json:"battlenum"` //战斗次数 - Captain int32 `protobuf:"varint,17,opt,name=captain,proto3" json:"captain"` //战斗征信队长位 - Formation []*BattleRole `protobuf:"bytes,18,rep,name=formation,proto3" json:"formation"` //战斗阵型 + Lastgymtime int64 `protobuf:"varint,6,opt,name=lastgymtime,proto3" json:"lastgymtime"` //上一次每日一练的时间 + Full map[int32]int32 `protobuf:"bytes,7,rep,name=full,proto3" json:"full" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"` //满级登记 + Knapsack map[string]*DBPracticeRes `protobuf:"bytes,8,rep,name=knapsack,proto3" json:"knapsack" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` //资源 + Pillar1 *DBPracticePillar `protobuf:"bytes,9,opt,name=pillar1,proto3" json:"pillar1"` //柱子1 + Pillar2 *DBPracticePillar `protobuf:"bytes,10,opt,name=pillar2,proto3" json:"pillar2"` //柱子2 + Pillar3 *DBPracticePillar `protobuf:"bytes,11,opt,name=pillar3,proto3" json:"pillar3"` //柱子3 + Pillarf *DBPracticePillar `protobuf:"bytes,12,opt,name=pillarf,proto3" json:"pillarf"` //好友柱子 + Statuers []*DBPracticeStatuer `protobuf:"bytes,13,rep,name=statuers,proto3" json:"statuers"` //武馆雕像 + Currnpc int32 `protobuf:"varint,14,opt,name=currnpc,proto3" json:"currnpc"` //当前npc + Npcstate int32 `protobuf:"varint,15,opt,name=npcstate,proto3" json:"npcstate"` //npc状态 -1未开启 0 未挑战 1 挑战失败 2挑战成功 3 CD中 + Refresh int64 `protobuf:"varint,16,opt,name=refresh,proto3" json:"refresh"` //刷新时间 + Battlenum int32 `protobuf:"varint,17,opt,name=battlenum,proto3" json:"battlenum"` //战斗次数 + Captain int32 `protobuf:"varint,18,opt,name=captain,proto3" json:"captain"` //战斗征信队长位 + Formation []*BattleRole `protobuf:"bytes,19,rep,name=formation,proto3" json:"formation"` //战斗阵型 } func (x *DBPracticeRoom) Reset() { @@ -481,6 +482,13 @@ func (x *DBPracticeRoom) GetLastrefresh() int64 { return 0 } +func (x *DBPracticeRoom) GetLastgymtime() int64 { + if x != nil { + return x.Lastgymtime + } + return 0 +} + func (x *DBPracticeRoom) GetFull() map[int32]int32 { if x != nil { return x.Full @@ -762,7 +770,7 @@ var file_practice_practice_db_proto_rawDesc = []byte{ 0x06, 0x75, 0x73, 0x65, 0x6e, 0x75, 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x75, 0x73, 0x65, 0x6e, 0x75, 0x6d, 0x12, 0x20, 0x0a, 0x0b, 0x6c, 0x61, 0x73, 0x74, 0x75, 0x73, 0x65, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x6c, 0x61, 0x73, 0x74, - 0x75, 0x73, 0x65, 0x74, 0x69, 0x6d, 0x65, 0x22, 0x99, 0x06, 0x0a, 0x0e, 0x44, 0x42, 0x50, 0x72, + 0x75, 0x73, 0x65, 0x74, 0x69, 0x6d, 0x65, 0x22, 0xbb, 0x06, 0x0a, 0x0e, 0x44, 0x42, 0x50, 0x72, 0x61, 0x63, 0x74, 0x69, 0x63, 0x65, 0x52, 0x6f, 0x6f, 0x6d, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x69, 0x64, 0x12, 0x1c, 0x0a, 0x09, @@ -771,65 +779,67 @@ var file_practice_practice_db_proto_rawDesc = []byte{ 0x6d, 0x72, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x67, 0x79, 0x6d, 0x72, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x12, 0x20, 0x0a, 0x0b, 0x6c, 0x61, 0x73, 0x74, 0x72, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, - 0x0b, 0x6c, 0x61, 0x73, 0x74, 0x72, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x12, 0x2d, 0x0a, 0x04, - 0x66, 0x75, 0x6c, 0x6c, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x44, 0x42, 0x50, - 0x72, 0x61, 0x63, 0x74, 0x69, 0x63, 0x65, 0x52, 0x6f, 0x6f, 0x6d, 0x2e, 0x46, 0x75, 0x6c, 0x6c, - 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x04, 0x66, 0x75, 0x6c, 0x6c, 0x12, 0x39, 0x0a, 0x08, 0x6b, - 0x6e, 0x61, 0x70, 0x73, 0x61, 0x63, 0x6b, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, - 0x44, 0x42, 0x50, 0x72, 0x61, 0x63, 0x74, 0x69, 0x63, 0x65, 0x52, 0x6f, 0x6f, 0x6d, 0x2e, 0x4b, - 0x6e, 0x61, 0x70, 0x73, 0x61, 0x63, 0x6b, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, 0x6b, 0x6e, - 0x61, 0x70, 0x73, 0x61, 0x63, 0x6b, 0x12, 0x2b, 0x0a, 0x07, 0x70, 0x69, 0x6c, 0x6c, 0x61, 0x72, - 0x31, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x44, 0x42, 0x50, 0x72, 0x61, 0x63, - 0x74, 0x69, 0x63, 0x65, 0x50, 0x69, 0x6c, 0x6c, 0x61, 0x72, 0x52, 0x07, 0x70, 0x69, 0x6c, 0x6c, - 0x61, 0x72, 0x31, 0x12, 0x2b, 0x0a, 0x07, 0x70, 0x69, 0x6c, 0x6c, 0x61, 0x72, 0x32, 0x18, 0x09, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x44, 0x42, 0x50, 0x72, 0x61, 0x63, 0x74, 0x69, 0x63, - 0x65, 0x50, 0x69, 0x6c, 0x6c, 0x61, 0x72, 0x52, 0x07, 0x70, 0x69, 0x6c, 0x6c, 0x61, 0x72, 0x32, - 0x12, 0x2b, 0x0a, 0x07, 0x70, 0x69, 0x6c, 0x6c, 0x61, 0x72, 0x33, 0x18, 0x0a, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x11, 0x2e, 0x44, 0x42, 0x50, 0x72, 0x61, 0x63, 0x74, 0x69, 0x63, 0x65, 0x50, 0x69, - 0x6c, 0x6c, 0x61, 0x72, 0x52, 0x07, 0x70, 0x69, 0x6c, 0x6c, 0x61, 0x72, 0x33, 0x12, 0x2b, 0x0a, - 0x07, 0x70, 0x69, 0x6c, 0x6c, 0x61, 0x72, 0x66, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, - 0x2e, 0x44, 0x42, 0x50, 0x72, 0x61, 0x63, 0x74, 0x69, 0x63, 0x65, 0x50, 0x69, 0x6c, 0x6c, 0x61, - 0x72, 0x52, 0x07, 0x70, 0x69, 0x6c, 0x6c, 0x61, 0x72, 0x66, 0x12, 0x2e, 0x0a, 0x08, 0x73, 0x74, - 0x61, 0x74, 0x75, 0x65, 0x72, 0x73, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x44, - 0x42, 0x50, 0x72, 0x61, 0x63, 0x74, 0x69, 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x65, 0x72, - 0x52, 0x08, 0x73, 0x74, 0x61, 0x74, 0x75, 0x65, 0x72, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x75, - 0x72, 0x72, 0x6e, 0x70, 0x63, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x63, 0x75, 0x72, - 0x72, 0x6e, 0x70, 0x63, 0x12, 0x1a, 0x0a, 0x08, 0x6e, 0x70, 0x63, 0x73, 0x74, 0x61, 0x74, 0x65, - 0x18, 0x0e, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x6e, 0x70, 0x63, 0x73, 0x74, 0x61, 0x74, 0x65, - 0x12, 0x18, 0x0a, 0x07, 0x72, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x18, 0x0f, 0x20, 0x01, 0x28, - 0x03, 0x52, 0x07, 0x72, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x12, 0x1c, 0x0a, 0x09, 0x62, 0x61, - 0x74, 0x74, 0x6c, 0x65, 0x6e, 0x75, 0x6d, 0x18, 0x10, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x62, - 0x61, 0x74, 0x74, 0x6c, 0x65, 0x6e, 0x75, 0x6d, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x61, 0x70, 0x74, - 0x61, 0x69, 0x6e, 0x18, 0x11, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x63, 0x61, 0x70, 0x74, 0x61, - 0x69, 0x6e, 0x12, 0x29, 0x0a, 0x09, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, - 0x12, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x42, 0x61, 0x74, 0x74, 0x6c, 0x65, 0x52, 0x6f, - 0x6c, 0x65, 0x52, 0x09, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0x37, 0x0a, - 0x09, 0x46, 0x75, 0x6c, 0x6c, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, - 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x76, 0x61, 0x6c, - 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x4b, 0x0a, 0x0d, 0x4b, 0x6e, 0x61, 0x70, 0x73, 0x61, - 0x63, 0x6b, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x24, 0x0a, 0x05, 0x76, 0x61, 0x6c, - 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x44, 0x42, 0x50, 0x72, 0x61, - 0x63, 0x74, 0x69, 0x63, 0x65, 0x52, 0x65, 0x73, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, - 0x02, 0x38, 0x01, 0x22, 0x48, 0x0a, 0x16, 0x44, 0x42, 0x50, 0x72, 0x61, 0x63, 0x74, 0x69, 0x63, - 0x65, 0x51, 0x69, 0x65, 0x63, 0x75, 0x6f, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x12, 0x10, 0x0a, - 0x03, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x69, 0x64, 0x12, - 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x03, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x22, 0xb5, 0x01, - 0x0a, 0x16, 0x44, 0x42, 0x50, 0x72, 0x61, 0x63, 0x74, 0x69, 0x63, 0x65, 0x51, 0x69, 0x65, 0x63, - 0x75, 0x6f, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x69, 0x64, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x69, 0x64, 0x12, 0x31, 0x0a, 0x07, 0x74, 0x61, - 0x72, 0x67, 0x65, 0x74, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x44, 0x42, - 0x50, 0x72, 0x61, 0x63, 0x74, 0x69, 0x63, 0x65, 0x51, 0x69, 0x65, 0x63, 0x75, 0x6f, 0x49, 0x6e, - 0x76, 0x69, 0x74, 0x65, 0x52, 0x07, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x12, 0x16, 0x0a, - 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x73, - 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x62, 0x61, 0x74, 0x74, 0x69, 0x64, 0x18, - 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x62, 0x61, 0x74, 0x74, 0x69, 0x64, 0x12, 0x16, 0x0a, - 0x06, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x06, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x6d, - 0x65, 0x6d, 0x62, 0x65, 0x72, 0x42, 0x06, 0x5a, 0x04, 0x2e, 0x3b, 0x70, 0x62, 0x62, 0x06, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x0b, 0x6c, 0x61, 0x73, 0x74, 0x72, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x12, 0x20, 0x0a, 0x0b, + 0x6c, 0x61, 0x73, 0x74, 0x67, 0x79, 0x6d, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, + 0x03, 0x52, 0x0b, 0x6c, 0x61, 0x73, 0x74, 0x67, 0x79, 0x6d, 0x74, 0x69, 0x6d, 0x65, 0x12, 0x2d, + 0x0a, 0x04, 0x66, 0x75, 0x6c, 0x6c, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x44, + 0x42, 0x50, 0x72, 0x61, 0x63, 0x74, 0x69, 0x63, 0x65, 0x52, 0x6f, 0x6f, 0x6d, 0x2e, 0x46, 0x75, + 0x6c, 0x6c, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x04, 0x66, 0x75, 0x6c, 0x6c, 0x12, 0x39, 0x0a, + 0x08, 0x6b, 0x6e, 0x61, 0x70, 0x73, 0x61, 0x63, 0x6b, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x1d, 0x2e, 0x44, 0x42, 0x50, 0x72, 0x61, 0x63, 0x74, 0x69, 0x63, 0x65, 0x52, 0x6f, 0x6f, 0x6d, + 0x2e, 0x4b, 0x6e, 0x61, 0x70, 0x73, 0x61, 0x63, 0x6b, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, + 0x6b, 0x6e, 0x61, 0x70, 0x73, 0x61, 0x63, 0x6b, 0x12, 0x2b, 0x0a, 0x07, 0x70, 0x69, 0x6c, 0x6c, + 0x61, 0x72, 0x31, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x44, 0x42, 0x50, 0x72, + 0x61, 0x63, 0x74, 0x69, 0x63, 0x65, 0x50, 0x69, 0x6c, 0x6c, 0x61, 0x72, 0x52, 0x07, 0x70, 0x69, + 0x6c, 0x6c, 0x61, 0x72, 0x31, 0x12, 0x2b, 0x0a, 0x07, 0x70, 0x69, 0x6c, 0x6c, 0x61, 0x72, 0x32, + 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x44, 0x42, 0x50, 0x72, 0x61, 0x63, 0x74, + 0x69, 0x63, 0x65, 0x50, 0x69, 0x6c, 0x6c, 0x61, 0x72, 0x52, 0x07, 0x70, 0x69, 0x6c, 0x6c, 0x61, + 0x72, 0x32, 0x12, 0x2b, 0x0a, 0x07, 0x70, 0x69, 0x6c, 0x6c, 0x61, 0x72, 0x33, 0x18, 0x0b, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x44, 0x42, 0x50, 0x72, 0x61, 0x63, 0x74, 0x69, 0x63, 0x65, + 0x50, 0x69, 0x6c, 0x6c, 0x61, 0x72, 0x52, 0x07, 0x70, 0x69, 0x6c, 0x6c, 0x61, 0x72, 0x33, 0x12, + 0x2b, 0x0a, 0x07, 0x70, 0x69, 0x6c, 0x6c, 0x61, 0x72, 0x66, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x11, 0x2e, 0x44, 0x42, 0x50, 0x72, 0x61, 0x63, 0x74, 0x69, 0x63, 0x65, 0x50, 0x69, 0x6c, + 0x6c, 0x61, 0x72, 0x52, 0x07, 0x70, 0x69, 0x6c, 0x6c, 0x61, 0x72, 0x66, 0x12, 0x2e, 0x0a, 0x08, + 0x73, 0x74, 0x61, 0x74, 0x75, 0x65, 0x72, 0x73, 0x18, 0x0d, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, + 0x2e, 0x44, 0x42, 0x50, 0x72, 0x61, 0x63, 0x74, 0x69, 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, + 0x65, 0x72, 0x52, 0x08, 0x73, 0x74, 0x61, 0x74, 0x75, 0x65, 0x72, 0x73, 0x12, 0x18, 0x0a, 0x07, + 0x63, 0x75, 0x72, 0x72, 0x6e, 0x70, 0x63, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x63, + 0x75, 0x72, 0x72, 0x6e, 0x70, 0x63, 0x12, 0x1a, 0x0a, 0x08, 0x6e, 0x70, 0x63, 0x73, 0x74, 0x61, + 0x74, 0x65, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x6e, 0x70, 0x63, 0x73, 0x74, 0x61, + 0x74, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x72, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x18, 0x10, 0x20, + 0x01, 0x28, 0x03, 0x52, 0x07, 0x72, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x12, 0x1c, 0x0a, 0x09, + 0x62, 0x61, 0x74, 0x74, 0x6c, 0x65, 0x6e, 0x75, 0x6d, 0x18, 0x11, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x09, 0x62, 0x61, 0x74, 0x74, 0x6c, 0x65, 0x6e, 0x75, 0x6d, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x61, + 0x70, 0x74, 0x61, 0x69, 0x6e, 0x18, 0x12, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x63, 0x61, 0x70, + 0x74, 0x61, 0x69, 0x6e, 0x12, 0x29, 0x0a, 0x09, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x18, 0x13, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x42, 0x61, 0x74, 0x74, 0x6c, 0x65, + 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x09, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x1a, + 0x37, 0x0a, 0x09, 0x46, 0x75, 0x6c, 0x6c, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, + 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, + 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x4b, 0x0a, 0x0d, 0x4b, 0x6e, 0x61, 0x70, + 0x73, 0x61, 0x63, 0x6b, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x24, 0x0a, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x44, 0x42, 0x50, + 0x72, 0x61, 0x63, 0x74, 0x69, 0x63, 0x65, 0x52, 0x65, 0x73, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x48, 0x0a, 0x16, 0x44, 0x42, 0x50, 0x72, 0x61, 0x63, 0x74, + 0x69, 0x63, 0x65, 0x51, 0x69, 0x65, 0x63, 0x75, 0x6f, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x12, + 0x10, 0x0a, 0x03, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x69, + 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x22, + 0xb5, 0x01, 0x0a, 0x16, 0x44, 0x42, 0x50, 0x72, 0x61, 0x63, 0x74, 0x69, 0x63, 0x65, 0x51, 0x69, + 0x65, 0x63, 0x75, 0x6f, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x69, + 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x69, 0x64, 0x12, 0x31, 0x0a, 0x07, + 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, + 0x44, 0x42, 0x50, 0x72, 0x61, 0x63, 0x74, 0x69, 0x63, 0x65, 0x51, 0x69, 0x65, 0x63, 0x75, 0x6f, + 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x52, 0x07, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x12, + 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x62, 0x61, 0x74, 0x74, 0x69, + 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x62, 0x61, 0x74, 0x74, 0x69, 0x64, 0x12, + 0x16, 0x0a, 0x06, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x06, 0x20, 0x03, 0x28, 0x09, 0x52, + 0x06, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x42, 0x06, 0x5a, 0x04, 0x2e, 0x3b, 0x70, 0x62, 0x62, + 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var (