diff --git a/bin/json/game_mail.json b/bin/json/game_mail.json index 93f898f0b..a696303e5 100644 --- a/bin/json/game_mail.json +++ b/bin/json/game_mail.json @@ -171,7 +171,7 @@ "id": "VipLvReward", "title": { "key": "mail_mail_title_9", - "text": "商会等级奖励" + "text": "vip奖励" }, "recipient": { "key": "mail_mail_recipient_9", @@ -335,8 +335,8 @@ "text": "这是圣桃抽卡没有领取的奖励。" }, "sender": { - "key": "", - "text": "" + "key": "mail_mail_sender_16", + "text": "系统" }, "reword": [], "duration": 720 @@ -356,10 +356,31 @@ "text": "" }, "sender": { + "key": "mail_mail_sender_17", + "text": "系统" + }, + "reword": [], + "duration": 720 + }, + { + "id": "CaravanLvReward", + "title": { + "key": "mail_mail_title_17", + "text": "商队等级奖励" + }, + "recipient": { "key": "", "text": "" }, + "content": { + "key": "mail_mail_content_18", + "text": "商队等级奖励" + }, + "sender": { + "key": "mail_mail_sender_18", + "text": "系统" + }, "reword": [], - "duration": 0 + "duration": 720 } ] \ No newline at end of file diff --git a/comm/const.go b/comm/const.go index 8a425c509..4be4b1d7a 100644 --- a/comm/const.go +++ b/comm/const.go @@ -955,11 +955,12 @@ const ( // 邮件ID const ( - Yueka_1 string = "Activity_PrivilegeCardDailyReward_lv1" //月卡1 - Yueka_2 string = "Activity_PrivilegeCardDailyReward_lv2" // 月卡2 - VipDaily string = "VipLvReward" // vip每日奖励 - Welcomemail string = "Welcomemail" // 欢迎邮件 - Venturegifts string = "Venturegifts" // 转盘活动 + Yueka_1 string = "Activity_PrivilegeCardDailyReward_lv1" //月卡1 + Yueka_2 string = "Activity_PrivilegeCardDailyReward_lv2" // 月卡2 + VipDaily string = "VipLvReward" // vip每日奖励 + Welcomemail string = "Welcomemail" // 欢迎邮件 + Venturegifts string = "Venturegifts" // 转盘活动 + CaravanLvReward string = "CaravanLvReward" // 商队升级 ) // open funcName diff --git a/comm/imodule.go b/comm/imodule.go index afbb3e41e..3987a7918 100644 --- a/comm/imodule.go +++ b/comm/imodule.go @@ -155,6 +155,8 @@ type ( // 检查圣桃树奖励是否发放 CheckPeachReward(session IUserSession, ctime int64) + + CreateOneHero(session IUserSession, heroCfgId string, bPush bool) (hero *pb.DBHero, atno []*pb.UserAtno, errdata *pb.ErrorData) } //玩家 diff --git a/modules/caravan/api_buyorsell.go b/modules/caravan/api_buyorsell.go index db368e624..c867279ce 100644 --- a/modules/caravan/api_buyorsell.go +++ b/modules/caravan/api_buyorsell.go @@ -54,7 +54,7 @@ func (this *apiComp) BuyOrSell(session comm.IUserSession, req *pb.CaravanBuyOrSe // special 城市卖给玩家的商品 // exspecial 城市想要玩家卖给他的商品库 if !req.IsBuy { // 卖给npc - var cb int32 // 成本价 + for k, v := range req.Items { // 校验背包数据够不够 caravan.Items[k].Count -= v @@ -67,7 +67,7 @@ func (this *apiComp) BuyOrSell(session comm.IUserSession, req *pb.CaravanBuyOrSe } items := caravan.Items[k] var price int32 - cb = items.Price // 获取成本价 + price = items.Price bFound := false for _, key := range cityInfo.Special { @@ -90,32 +90,31 @@ func (this *apiComp) BuyOrSell(session comm.IUserSession, req *pb.CaravanBuyOrSe if !bFound { price = cityInfo.ExspecialPCT * price / 1000 } - if price > cb { // 赚了 - addScore = (price - cb) * v // 卖出收益 - if err := this.module.ModuleUser.AddUserProfit(session.GetUserId(), int64(addScore)); err != nil { - this.module.Error("玩家Profit更新", - log.Field{Key: "uid", Value: session.GetUserId()}, - log.Field{Key: "update", Value: update}, - ) - return - } - } + sellValue += price * v - if errdata = this.module.DispenseRes(session, []*cfg.Gameatn{{ - A: "attr", - T: "merchantmoney", - N: price * v, - }}, true); errdata != nil { - this.module.Errorf("获得虚拟币失败:%v", errdata) - } - //addScore += price * v // 卖出收益 + addScore = sellValue + } + if errdata = this.module.DispenseRes(session, []*cfg.Gameatn{{ + A: "attr", + T: "merchantmoney", + N: sellValue, + }}, true); errdata != nil { + this.module.Errorf("获得虚拟币失败:%v", errdata) } this.module.ArrayBag(caravan) + + if err := this.module.ModuleUser.AddUserProfit(session.GetUserId(), int64(sellValue)); err != nil { + this.module.Error("玩家Profit更新", + log.Field{Key: "uid", Value: session.GetUserId()}, + log.Field{Key: "update", Value: update}, + ) + return + } // 统计 收益 var lvReward []*cfg.Gameatn - caravan.Profit += int64(addScore) - update["profit"] = caravan.Profit + caravan.Profit += int64(sellValue) curLv := this.module.CheckCaravavLvUp(caravan) + update["profit"] = caravan.Profit if curLv > caravan.Lv { for i := caravan.Lv; i <= curLv-caravan.Lv; i++ { if c, err := this.module.configure.GetCaravanLv(int32(i)); err == nil { @@ -137,15 +136,8 @@ func (this *apiComp) BuyOrSell(session comm.IUserSession, req *pb.CaravanBuyOrSe this.module.Errorf("update caravanlv error: %v", err) } } - if len(lvReward) > 0 { // 商队等级奖励 - if reward := this.module.DispenseRes(session, lvReward, true); reward != nil { - this.module.Errorf("lv reward dispenseRes err:%v", lvReward) - errdata = &pb.ErrorData{ - Code: pb.ErrorCode_ConfigNoFound, // 道具数量不足 - Title: pb.ErrorCode_ConfigNoFound.ToString(), - } - return - } + if len(lvReward) > 0 { // 商队等级奖励 改发邮件 + this.module.mail.SendRewardMailByCid(session, comm.CaravanLvReward, lvReward) } // 商队盈利收益奖励 diff --git a/modules/caravan/api_ranklist.go b/modules/caravan/api_ranklist.go index 96b6accd4..40cfdadd6 100644 --- a/modules/caravan/api_ranklist.go +++ b/modules/caravan/api_ranklist.go @@ -29,7 +29,7 @@ func (this *apiComp) RankList(session comm.IUserSession, req *pb.CaravanRankList Avatar: userinfo.Avatar, Rank: rankid, // rankid为0 表示未上榜 Merchantmoney: userinfo.Merchantmoney, - CaravanLv: userinfo.CaravanLv, + CaravanLv: userinfo.Caravanlv, } session.SendMsg(string(this.module.GetType()), "ranklist", resp) return diff --git a/modules/caravan/comp_configure.go b/modules/caravan/comp_configure.go index d3eed8939..acc77f034 100644 --- a/modules/caravan/comp_configure.go +++ b/modules/caravan/comp_configure.go @@ -66,6 +66,7 @@ func (this *configureComp) Init(service core.IService, module core.IModule, comp } } }) + return } diff --git a/modules/caravan/model_caravan.go b/modules/caravan/model_caravan.go index 8a5d8817e..ad0e20553 100644 --- a/modules/caravan/model_caravan.go +++ b/modules/caravan/model_caravan.go @@ -85,7 +85,7 @@ func (this *modelCaravan) GetRankListData(rankNum int32, uid string) (list []*pb Avatar: temp.Avatar, Rank: ipos, Merchantmoney: temp.Merchantmoney, - CaravanLv: temp.CaravanLv, + CaravanLv: temp.Caravanlv, }) if temp.Uid == uid { rankid = ipos diff --git a/modules/caravan/module.go b/modules/caravan/module.go index 04480e465..cc010de28 100644 --- a/modules/caravan/module.go +++ b/modules/caravan/module.go @@ -124,25 +124,62 @@ func (this *Caravan) InitCaravanCityData(uid string, data *pb.DBCaravan) { } data.Citystime = utils.GetZeroTime(configure.Now().Unix()) data.Rtime = configure.Now().Unix() // 修改时间 + + //data.Itemtime = configure.Now().Unix() + } // 初始化货物信息 func (this *Caravan) InitCaravanItemData(uid string, data *pb.DBCaravan) { + var changeTime int32 items := this.configure.GetAllCaravanItem() data.Goods = make(map[string]*pb.Goods, 0) - for _, v := range items { + for _, c := range items { + if changeTime == 0 { + changeTime = c.Changetime + } goods := &pb.Goods{ Period: 0, // 变动周期 CurPeriod: 1, // 当前变动周期 Price: 0, // 当前价格 } - if len(v.Changeperiod) == 2 { - goods.Period = comm.GetRandNum(v.Changeperiod[0], v.Changeperiod[1]) - goods.Price = v.Goodsprice - data.Goods[v.Itemid] = goods + if len(c.Changeperiod) == 2 { + goods.Period = comm.GetRandNum(c.Changeperiod[0], c.Changeperiod[1]) + goods.Price = c.Goodsprice + // data.Goods[c.Itemid] = goods } - data.Oldprice[v.Itemid] = v.Goodsprice + bUp := false + ipos := comm.GetRandW(c.PriceChangeWeight) + if ipos == 1 { + if comm.GetRandW(c.PriceChangeWeightOne) == 0 { + bUp = true + } + } else if ipos == 2 { + if comm.GetRandW(c.PriceChangeWeightTwo) == 0 { + bUp = true + } + } else if ipos == 3 { + if comm.GetRandW(c.PriceChangeWeightThree) == 0 { + bUp = true + } + } + + if bUp { // 价格上涨 + goods.Price = int32(math.Floor(float64(goods.Price) * (1.0 + float64(c.FluctuationRange)/1000.0))) + } else { + goods.Price = int32(math.Floor(float64(goods.Price) * (1.0 - float64(c.FluctuationRange)/1000.0))) + } + + if goods.Price < c.Pricemin { // 设置最小值 + goods.Price = c.Pricemin + } + + if goods.Price > c.Pricemax { // 设置最大值 + goods.Price = c.Pricemax + } + data.Goods[c.Itemid] = goods + data.Oldprice[c.Itemid] = c.Goodsprice } + data.Itemtime = configure.Now().Unix() + int64(changeTime) // 设置货物变更时间 } // 初始化门票和虚拟币 @@ -165,7 +202,7 @@ func (this *Caravan) refreshCaravanCityInfo(uid string, caravan *pb.DBCaravan) { ) curTime = configure.Now().Unix() update = make(map[string]interface{}) - changeTime = this.configure.GetCityRefreshTime() // 3分钟 + changeTime = this.configure.GetCityRefreshTime() // 刷新城市货物信息 if !utils.IsNextToday(caravan.Citystime) { @@ -221,14 +258,13 @@ func (this *Caravan) refreshCaravanCityInfo(uid string, caravan *pb.DBCaravan) { update["citystime"] = caravan.Citystime bChange = true } - if caravan.Itemtime == 0 { - caravan.Itemtime = configure.Now().Unix() - } + subTime := int32(curTime - caravan.Itemtime) - if subTime >= changeTime { + if subTime >= 0 { bChange = true - icount := int32(subTime / changeTime) // 循环周期 + icount := int32(subTime/changeTime) + 1 // 循环周期 + caravan.Itemtime += int64(changeTime * icount) update["itemtime"] = caravan.Itemtime for k, v := range caravan.Goods { @@ -238,6 +274,7 @@ func (this *Caravan) refreshCaravanCityInfo(uid string, caravan *pb.DBCaravan) { // 随机出新的变动周期 v.Period = comm.GetRandNum(c.Changeperiod[0], c.Changeperiod[1]) v.CurPeriod = 0 + caravan.Itemtime = curTime + int64(changeTime) // 修改变更时间 } else { for i := 0; i < int(icount); i++ { // 计算当前的价格 // 价格涨跌权重 PriceChangeWeight @@ -284,12 +321,6 @@ func (this *Caravan) refreshCaravanCityInfo(uid string, caravan *pb.DBCaravan) { update["goods"] = caravan.Goods update["oldprice"] = caravan.Oldprice } - // endTime := utils.WeekIntervalTime(0) - // if caravan.Resettime != endTime { - // caravan.Resettime = endTime - // update["resettime"] = caravan.Resettime - // bChange = true - // } if bChange { this.modelCaravan.modifyCaravanDataByObjId(uid, update) @@ -424,6 +455,7 @@ func (this *Caravan) CheckCaravavLvUp(data *pb.DBCaravan) (curLv int32) { for { if conf, err := this.configure.GetCaravanLv(curLv + 1); err == nil { if conf.Newmoneyexp <= int32(data.Profit) { + //data.Profit -= int64(conf.Newmoneyexp) curLv++ } else { break diff --git a/modules/hero/api_drawCard.go b/modules/hero/api_drawCard.go index 163d03e9a..5c81986b3 100644 --- a/modules/hero/api_drawCard.go +++ b/modules/hero/api_drawCard.go @@ -21,25 +21,25 @@ func (this *apiComp) DrawCardCheck(session comm.IUserSession, req *pb.HeroDrawCa //抽卡 func (this *apiComp) DrawCard(session comm.IUserSession, req *pb.HeroDrawCardReq) (errdata *pb.ErrorData) { var ( - szCards []string // 最终抽到的卡牌 - drawCount int32 // 抽卡次数 - szStar []int32 //星级 - costRes []*cfg.Gameatn // 消耗 - star4Count int32 // 10连抽4星数量 - star5Count int32 // 10连抽5星数量 - cfgGlobal *cfg.GameGlobalData // 全局配置 - heroRecord *pb.DBHeroRecord - atno []*pb.UserAtno // 最终获得的资源 - strPool []string // 10连跨多个卡池情况 - update map[string]interface{} - normalDraw bool // 是否是普通抽 - drawConf *cfg.GameDrawPoolData - err error - + szCards []string // 最终抽到的卡牌 + drawCount int32 // 抽卡次数 + szStar []int32 //星级 + costRes []*cfg.Gameatn // 消耗 + star4Count int32 // 10连抽4星数量 + star5Count int32 // 10连抽5星数量 + cfgGlobal *cfg.GameGlobalData // 全局配置 + heroRecord *pb.DBHeroRecord + strPool []string // 10连跨多个卡池情况 + update map[string]interface{} + normalDraw bool // 是否是普通抽 + drawConf *cfg.GameDrawPoolData + err error + atno []*pb.UserAtno IsBaodiPool bool // 是否是保底卡池 appointmap map[int32]string // 指定次数抽卡到指定卡池 // 首次获得英雄 firstGet map[string]bool + reward []*cfg.Gameatn // 许愿石奖励 ) update = make(map[string]interface{}) appointmap = make(map[int32]string) @@ -110,22 +110,22 @@ func (this *apiComp) DrawCard(session comm.IUserSession, req *pb.HeroDrawCardReq } return } - if errdata, atno = this.module.DispenseAtno(session, []*cfg.Gameatn{{ - A: "hero", - T: heroRecord.WishHero, - N: 1, - }}, true); errdata == nil { - firstGet[heroRecord.WishHero] = true - rsp.Data = append(rsp.Data, &pb.AtnoData{Atno: atno}) + var hero *pb.DBHero + firstGet[heroRecord.WishHero] = false + + if hero, atno, errdata = this.module.ModuleHero.CreateOneHero(session, heroRecord.WishHero, true); errdata == nil { for _, v := range atno { - if v.A == "hero" && v.N == 1 { + if v.A == "hero" && v.T == heroRecord.WishHero && v.N == 1 { + firstGet[heroRecord.WishHero] = true if user := this.module.ModuleUser.GetUser(session.GetUserId()); user != nil { // 广播 首次获得英雄 - this.chat.SendSysChatToWorld(comm.ChatSystem13, nil, 0, 0, user.Name, v.T) + if HeroConf, err := this.module.configure.GetHeroConfig(heroRecord.WishHero); err == nil { + this.chat.SendSysChatToWorld(comm.ChatSystem13, hero, HeroConf.Star, 0, user.Name, v.T) + } } - } else if v.A == "hero" && v.N == 0 { - firstGet[v.T] = false } } + + rsp.Data = append(rsp.Data, &pb.AtnoData{Atno: atno}) } else { errdata = &pb.ErrorData{ Code: pb.ErrorCode_ReqParameterError, @@ -320,14 +320,18 @@ func (this *apiComp) DrawCard(session comm.IUserSession, req *pb.HeroDrawCardReq update["baodi5"] = heroRecord.Baodi5 for _, heroId := range szCards { - var reward []*cfg.Gameatn - if c, err := this.module.configure.GetHeroConfig(heroId); err == nil { - szStar = append(szStar, c.Star) // 获得许愿石 + //var + var ( + hero *pb.DBHero + HeroConf *cfg.GameHeroData + ) + if HeroConf, err = this.module.configure.GetHeroConfig(heroId); err == nil { + szStar = append(szStar, HeroConf.Star) // 获得许愿石 var tmp *cfg.Gameatn - if c.Star == 4 { + if HeroConf.Star == 4 { tmp = this.module.ModuleTools.GetGlobalConf().RewardStar4 reward = append(reward, tmp) - } else if c.Star == 5 { + } else if HeroConf.Star == 5 { tmp = this.module.ModuleTools.GetGlobalConf().RewardStar5 reward = append(reward, tmp) @@ -353,22 +357,27 @@ func (this *apiComp) DrawCard(session comm.IUserSession, req *pb.HeroDrawCardReq } } } - reward = append(reward, &cfg.Gameatn{ - A: "hero", - T: heroId, - N: 1, - }) - firstGet[heroId] = true + + firstGet[heroId] = false var atno []*pb.UserAtno - if errdata, atno = this.module.DispenseAtno(session, reward, true); errdata == nil { + if hero, atno, errdata = this.module.ModuleHero.CreateOneHero(session, heroId, true); errdata == nil { for _, v := range atno { - if v.A == "hero" && v.T == heroId && v.N == 0 { - firstGet[heroId] = false + if v.A == "hero" && v.T == heroId && v.N == 1 { + firstGet[heroId] = true + if user := this.module.ModuleUser.GetUser(session.GetUserId()); user != nil { // 广播 首次获得英雄 + this.chat.SendSysChatToWorld(comm.ChatSystem13, hero, HeroConf.Star, 0, user.Name, v.T) + } } } rsp.Data = append(rsp.Data, &pb.AtnoData{Atno: atno}) } + + } + + // 发放许愿石奖励 + if errdata, _ = this.module.DispenseAtno(session, reward, true); errdata != nil { + return } rsp.FirstGet = firstGet this.module.modelRecord.ChangeHeroRecord(session.GetUserId(), update) diff --git a/modules/hero/module.go b/modules/hero/module.go index 2ea2aa467..7e33a7abd 100644 --- a/modules/hero/module.go +++ b/modules/hero/module.go @@ -1090,3 +1090,38 @@ func (this *Hero) AddHerosExp(session comm.IUserSession, heroObjs []string, exp session.SendMsg(string(this.GetType()), "change", &pb.HeroChangePush{List: _changeHero}) return } + +// 获得一个英雄 +func (this *Hero) CreateOneHero(session comm.IUserSession, heroCfgId string, bPush bool) (hero *pb.DBHero, atno []*pb.UserAtno, errdata *pb.ErrorData) { + var ( + //hero *pb.DBHero + firstGet []string + bFirst bool + szAddHero []string + ) + + if hero, bFirst, atno, errdata = this.createRepeatHero(session, heroCfgId, 1); errdata != nil { + this.Errorf("create hero %s failed", heroCfgId) + return + } + szAddHero = append(szAddHero, heroCfgId) + if bFirst { + firstGet = append(firstGet, heroCfgId) + } + if db.IsCross() { + this.moduleFetter.SendRpcAddHero(session.GetUserId(), szAddHero, session.GetServiecTag()) + } else { + this.moduleFetter.AddHerosFetterData(session.GetUserId(), szAddHero) + } + if bPush { //推送 + session.SendMsg("hero", "change", &pb.HeroChangePush{List: []*pb.DBHero{hero}}) + // 首次获得英雄 则推送 + if len(firstGet) > 0 { + session.SendMsg("hero", "firstget", &pb.HeroFirstGetPush{ + HeroId: firstGet, + }) + } + } + + return +} diff --git a/pb/battle_struct.pb.go b/pb/battle_struct.pb.go index 68baaa583..5638b3b02 100644 --- a/pb/battle_struct.pb.go +++ b/pb/battle_struct.pb.go @@ -1030,7 +1030,9 @@ type ComRebirth struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - To int32 `protobuf:"varint,1,opt,name=to,proto3" json:"to"` + To int32 `protobuf:"varint,1,opt,name=to,proto3" json:"to"` + Nhp int32 `protobuf:"varint,2,opt,name=nhp,proto3" json:"nhp"` + Mhp int32 `protobuf:"varint,3,opt,name=mhp,proto3" json:"mhp"` } func (x *ComRebirth) Reset() { @@ -1072,6 +1074,20 @@ func (x *ComRebirth) GetTo() int32 { return 0 } +func (x *ComRebirth) GetNhp() int32 { + if x != nil { + return x.Nhp + } + return 0 +} + +func (x *ComRebirth) GetMhp() int32 { + if x != nil { + return x.Mhp + } + return 0 +} + //血量变化 type ComModifyHealth struct { state protoimpl.MessageState @@ -1808,75 +1824,77 @@ var file_battle_battle_struct_proto_rawDesc = []byte{ 0x75, 0x6d, 0x12, 0x14, 0x0a, 0x05, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x18, 0x05, 0x20, 0x01, 0x28, 0x02, 0x52, 0x05, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x12, 0x18, 0x0a, 0x07, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x6f, 0x70, 0x65, 0x72, 0x61, - 0x74, 0x65, 0x22, 0x1c, 0x0a, 0x0a, 0x43, 0x6f, 0x6d, 0x52, 0x65, 0x62, 0x69, 0x72, 0x74, 0x68, + 0x74, 0x65, 0x22, 0x40, 0x0a, 0x0a, 0x43, 0x6f, 0x6d, 0x52, 0x65, 0x62, 0x69, 0x72, 0x74, 0x68, 0x12, 0x0e, 0x0a, 0x02, 0x74, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x74, 0x6f, - 0x22, 0xe5, 0x01, 0x0a, 0x0f, 0x43, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x69, 0x66, 0x79, 0x48, 0x65, - 0x61, 0x6c, 0x74, 0x68, 0x12, 0x0e, 0x0a, 0x02, 0x74, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x02, 0x74, 0x6f, 0x12, 0x12, 0x0a, 0x04, 0x66, 0x72, 0x6f, 0x6d, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x04, 0x66, 0x72, 0x6f, 0x6d, 0x12, 0x14, 0x0a, 0x05, 0x62, 0x61, 0x6f, 0x6a, - 0x69, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x62, 0x61, 0x6f, 0x6a, 0x69, 0x12, 0x18, - 0x0a, 0x07, 0x68, 0x69, 0x64, 0x65, 0x44, 0x6d, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, - 0x07, 0x68, 0x69, 0x64, 0x65, 0x44, 0x6d, 0x67, 0x12, 0x1e, 0x0a, 0x0a, 0x6d, 0x6f, 0x64, 0x69, - 0x66, 0x79, 0x54, 0x79, 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x6d, 0x6f, - 0x64, 0x69, 0x66, 0x79, 0x54, 0x79, 0x70, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x6e, 0x75, 0x6d, 0x18, - 0x06, 0x20, 0x01, 0x28, 0x02, 0x52, 0x03, 0x6e, 0x75, 0x6d, 0x12, 0x10, 0x0a, 0x03, 0x6e, 0x68, - 0x70, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6e, 0x68, 0x70, 0x12, 0x10, 0x0a, 0x03, - 0x6d, 0x68, 0x70, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6d, 0x68, 0x70, 0x12, 0x16, - 0x0a, 0x06, 0x73, 0x65, 0x61, 0x6c, 0x48, 0x70, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, - 0x73, 0x65, 0x61, 0x6c, 0x48, 0x70, 0x12, 0x10, 0x0a, 0x03, 0x64, 0x6d, 0x67, 0x18, 0x0a, 0x20, - 0x01, 0x28, 0x08, 0x52, 0x03, 0x64, 0x6d, 0x67, 0x22, 0x34, 0x0a, 0x0c, 0x43, 0x6f, 0x6d, 0x54, - 0x65, 0x61, 0x63, 0x68, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, - 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x34, - 0x0a, 0x08, 0x43, 0x6f, 0x6d, 0x53, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x69, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x74, - 0x6f, 0x72, 0x79, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x73, 0x74, 0x6f, - 0x72, 0x79, 0x49, 0x64, 0x22, 0x34, 0x0a, 0x08, 0x43, 0x6f, 0x6d, 0x47, 0x75, 0x69, 0x64, 0x65, - 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x69, 0x64, - 0x12, 0x18, 0x0a, 0x07, 0x67, 0x75, 0x69, 0x64, 0x65, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x07, 0x67, 0x75, 0x69, 0x64, 0x65, 0x49, 0x64, 0x22, 0x7f, 0x0a, 0x0e, 0x43, 0x6f, - 0x6d, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x12, 0x12, 0x0a, 0x04, - 0x73, 0x69, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x73, 0x69, 0x64, 0x65, - 0x12, 0x1a, 0x0a, 0x08, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x08, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x69, 0x64, 0x12, 0x1a, 0x0a, 0x08, - 0x70, 0x6c, 0x61, 0x79, 0x54, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, - 0x70, 0x6c, 0x61, 0x79, 0x54, 0x79, 0x70, 0x65, 0x12, 0x21, 0x0a, 0x05, 0x72, 0x6f, 0x6c, 0x65, - 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x42, 0x61, 0x74, 0x74, 0x6c, 0x65, - 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x05, 0x72, 0x6f, 0x6c, 0x65, 0x73, 0x22, 0x43, 0x0a, 0x0d, 0x43, - 0x6f, 0x6d, 0x50, 0x6c, 0x61, 0x79, 0x45, 0x66, 0x66, 0x65, 0x63, 0x74, 0x12, 0x1e, 0x0a, 0x0a, - 0x65, 0x66, 0x66, 0x65, 0x63, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0a, 0x65, 0x66, 0x66, 0x65, 0x63, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, - 0x73, 0x69, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x73, 0x69, 0x64, 0x65, - 0x22, 0x2c, 0x0a, 0x10, 0x43, 0x6f, 0x6d, 0x45, 0x6d, 0x69, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, - 0x64, 0x6f, 0x77, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x22, 0x44, - 0x0a, 0x0d, 0x43, 0x6f, 0x6d, 0x45, 0x66, 0x66, 0x65, 0x63, 0x74, 0x54, 0x69, 0x70, 0x73, 0x12, - 0x23, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0f, 0x2e, - 0x45, 0x66, 0x66, 0x65, 0x63, 0x74, 0x54, 0x69, 0x70, 0x73, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, - 0x74, 0x79, 0x70, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x74, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x02, 0x74, 0x6f, 0x22, 0x26, 0x0a, 0x0e, 0x43, 0x6f, 0x6d, 0x43, 0x68, 0x61, 0x69, 0x6e, - 0x45, 0x66, 0x66, 0x65, 0x63, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x72, 0x6f, 0x6c, 0x65, 0x73, 0x18, - 0x01, 0x20, 0x03, 0x28, 0x05, 0x52, 0x05, 0x72, 0x6f, 0x6c, 0x65, 0x73, 0x22, 0x53, 0x0a, 0x0d, - 0x43, 0x6f, 0x6d, 0x53, 0x68, 0x69, 0x65, 0x6c, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x10, 0x0a, - 0x03, 0x72, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x72, 0x69, 0x64, 0x12, - 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x75, 0x72, 0x56, 0x61, 0x6c, 0x75, - 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x63, 0x75, 0x72, 0x56, 0x61, 0x6c, 0x75, - 0x65, 0x2a, 0xcd, 0x01, 0x0a, 0x0e, 0x45, 0x66, 0x66, 0x65, 0x63, 0x74, 0x54, 0x69, 0x70, 0x73, - 0x54, 0x79, 0x70, 0x65, 0x12, 0x0f, 0x0a, 0x0b, 0x45, 0x66, 0x66, 0x5f, 0x53, 0x75, 0x63, 0x63, - 0x65, 0x73, 0x73, 0x10, 0x00, 0x12, 0x0f, 0x0a, 0x0b, 0x4e, 0x6f, 0x74, 0x5f, 0x53, 0x75, 0x63, - 0x63, 0x65, 0x73, 0x73, 0x10, 0x01, 0x12, 0x0c, 0x0a, 0x08, 0x49, 0x6d, 0x6d, 0x75, 0x6e, 0x69, - 0x74, 0x79, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x52, 0x65, 0x73, 0x69, 0x73, 0x74, 0x10, 0x03, - 0x12, 0x0c, 0x0a, 0x08, 0x4e, 0x6f, 0x74, 0x5f, 0x47, 0x61, 0x69, 0x6e, 0x10, 0x04, 0x12, 0x0f, - 0x0a, 0x0b, 0x4e, 0x6f, 0x74, 0x5f, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x10, 0x05, 0x12, - 0x0e, 0x0a, 0x0a, 0x4e, 0x6f, 0x74, 0x5f, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x10, 0x06, 0x12, - 0x10, 0x0a, 0x0c, 0x50, 0x75, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x10, - 0x07, 0x12, 0x0c, 0x0a, 0x08, 0x44, 0x69, 0x73, 0x70, 0x65, 0x72, 0x73, 0x65, 0x10, 0x08, 0x12, - 0x0e, 0x0a, 0x0a, 0x47, 0x61, 0x69, 0x6e, 0x5f, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x10, 0x09, 0x12, - 0x0f, 0x0a, 0x0b, 0x41, 0x64, 0x64, 0x5f, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x65, 0x10, 0x0a, - 0x12, 0x0f, 0x0a, 0x0b, 0x53, 0x75, 0x62, 0x5f, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x65, 0x10, - 0x0b, 0x42, 0x06, 0x5a, 0x04, 0x2e, 0x3b, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x33, + 0x12, 0x10, 0x0a, 0x03, 0x6e, 0x68, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6e, + 0x68, 0x70, 0x12, 0x10, 0x0a, 0x03, 0x6d, 0x68, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x03, 0x6d, 0x68, 0x70, 0x22, 0xe5, 0x01, 0x0a, 0x0f, 0x43, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x69, + 0x66, 0x79, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x12, 0x0e, 0x0a, 0x02, 0x74, 0x6f, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x74, 0x6f, 0x12, 0x12, 0x0a, 0x04, 0x66, 0x72, 0x6f, 0x6d, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x66, 0x72, 0x6f, 0x6d, 0x12, 0x14, 0x0a, 0x05, + 0x62, 0x61, 0x6f, 0x6a, 0x69, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x62, 0x61, 0x6f, + 0x6a, 0x69, 0x12, 0x18, 0x0a, 0x07, 0x68, 0x69, 0x64, 0x65, 0x44, 0x6d, 0x67, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x07, 0x68, 0x69, 0x64, 0x65, 0x44, 0x6d, 0x67, 0x12, 0x1e, 0x0a, 0x0a, + 0x6d, 0x6f, 0x64, 0x69, 0x66, 0x79, 0x54, 0x79, 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x0a, 0x6d, 0x6f, 0x64, 0x69, 0x66, 0x79, 0x54, 0x79, 0x70, 0x65, 0x12, 0x10, 0x0a, 0x03, + 0x6e, 0x75, 0x6d, 0x18, 0x06, 0x20, 0x01, 0x28, 0x02, 0x52, 0x03, 0x6e, 0x75, 0x6d, 0x12, 0x10, + 0x0a, 0x03, 0x6e, 0x68, 0x70, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6e, 0x68, 0x70, + 0x12, 0x10, 0x0a, 0x03, 0x6d, 0x68, 0x70, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6d, + 0x68, 0x70, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x65, 0x61, 0x6c, 0x48, 0x70, 0x18, 0x09, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x06, 0x73, 0x65, 0x61, 0x6c, 0x48, 0x70, 0x12, 0x10, 0x0a, 0x03, 0x64, 0x6d, + 0x67, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x08, 0x52, 0x03, 0x64, 0x6d, 0x67, 0x22, 0x34, 0x0a, 0x0c, + 0x43, 0x6f, 0x6d, 0x54, 0x65, 0x61, 0x63, 0x68, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x0e, 0x0a, 0x02, + 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x22, 0x34, 0x0a, 0x08, 0x43, 0x6f, 0x6d, 0x53, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x0e, + 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x69, 0x64, 0x12, 0x18, + 0x0a, 0x07, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x07, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x49, 0x64, 0x22, 0x34, 0x0a, 0x08, 0x43, 0x6f, 0x6d, 0x47, + 0x75, 0x69, 0x64, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x02, 0x69, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x67, 0x75, 0x69, 0x64, 0x65, 0x49, 0x64, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x67, 0x75, 0x69, 0x64, 0x65, 0x49, 0x64, 0x22, 0x7f, + 0x0a, 0x0e, 0x43, 0x6f, 0x6d, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x73, + 0x12, 0x12, 0x0a, 0x04, 0x73, 0x69, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, + 0x73, 0x69, 0x64, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x69, 0x64, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x69, 0x64, + 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x6c, 0x61, 0x79, 0x54, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x08, 0x70, 0x6c, 0x61, 0x79, 0x54, 0x79, 0x70, 0x65, 0x12, 0x21, 0x0a, 0x05, + 0x72, 0x6f, 0x6c, 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x42, 0x61, + 0x74, 0x74, 0x6c, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x05, 0x72, 0x6f, 0x6c, 0x65, 0x73, 0x22, + 0x43, 0x0a, 0x0d, 0x43, 0x6f, 0x6d, 0x50, 0x6c, 0x61, 0x79, 0x45, 0x66, 0x66, 0x65, 0x63, 0x74, + 0x12, 0x1e, 0x0a, 0x0a, 0x65, 0x66, 0x66, 0x65, 0x63, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x65, 0x66, 0x66, 0x65, 0x63, 0x74, 0x4e, 0x61, 0x6d, 0x65, + 0x12, 0x12, 0x0a, 0x04, 0x73, 0x69, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, + 0x73, 0x69, 0x64, 0x65, 0x22, 0x2c, 0x0a, 0x10, 0x43, 0x6f, 0x6d, 0x45, 0x6d, 0x69, 0x74, 0x43, + 0x6f, 0x75, 0x6e, 0x74, 0x64, 0x6f, 0x77, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x72, 0x65, 0x73, 0x65, + 0x72, 0x76, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x72, 0x65, 0x73, 0x65, 0x72, + 0x76, 0x65, 0x22, 0x44, 0x0a, 0x0d, 0x43, 0x6f, 0x6d, 0x45, 0x66, 0x66, 0x65, 0x63, 0x74, 0x54, + 0x69, 0x70, 0x73, 0x12, 0x23, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0e, 0x32, 0x0f, 0x2e, 0x45, 0x66, 0x66, 0x65, 0x63, 0x74, 0x54, 0x69, 0x70, 0x73, 0x54, 0x79, + 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x74, 0x6f, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x74, 0x6f, 0x22, 0x26, 0x0a, 0x0e, 0x43, 0x6f, 0x6d, 0x43, + 0x68, 0x61, 0x69, 0x6e, 0x45, 0x66, 0x66, 0x65, 0x63, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x72, 0x6f, + 0x6c, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x05, 0x52, 0x05, 0x72, 0x6f, 0x6c, 0x65, 0x73, + 0x22, 0x53, 0x0a, 0x0d, 0x43, 0x6f, 0x6d, 0x53, 0x68, 0x69, 0x65, 0x6c, 0x64, 0x49, 0x6e, 0x66, + 0x6f, 0x12, 0x10, 0x0a, 0x03, 0x72, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, + 0x72, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x75, 0x72, + 0x56, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x63, 0x75, 0x72, + 0x56, 0x61, 0x6c, 0x75, 0x65, 0x2a, 0xcd, 0x01, 0x0a, 0x0e, 0x45, 0x66, 0x66, 0x65, 0x63, 0x74, + 0x54, 0x69, 0x70, 0x73, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0f, 0x0a, 0x0b, 0x45, 0x66, 0x66, 0x5f, + 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x10, 0x00, 0x12, 0x0f, 0x0a, 0x0b, 0x4e, 0x6f, 0x74, + 0x5f, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x10, 0x01, 0x12, 0x0c, 0x0a, 0x08, 0x49, 0x6d, + 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x52, 0x65, 0x73, 0x69, + 0x73, 0x74, 0x10, 0x03, 0x12, 0x0c, 0x0a, 0x08, 0x4e, 0x6f, 0x74, 0x5f, 0x47, 0x61, 0x69, 0x6e, + 0x10, 0x04, 0x12, 0x0f, 0x0a, 0x0b, 0x4e, 0x6f, 0x74, 0x5f, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, + 0x6c, 0x10, 0x05, 0x12, 0x0e, 0x0a, 0x0a, 0x4e, 0x6f, 0x74, 0x5f, 0x41, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x10, 0x06, 0x12, 0x10, 0x0a, 0x0c, 0x50, 0x75, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x10, 0x07, 0x12, 0x0c, 0x0a, 0x08, 0x44, 0x69, 0x73, 0x70, 0x65, 0x72, 0x73, + 0x65, 0x10, 0x08, 0x12, 0x0e, 0x0a, 0x0a, 0x47, 0x61, 0x69, 0x6e, 0x5f, 0x72, 0x6f, 0x75, 0x6e, + 0x64, 0x10, 0x09, 0x12, 0x0f, 0x0a, 0x0b, 0x41, 0x64, 0x64, 0x5f, 0x4f, 0x70, 0x65, 0x72, 0x61, + 0x74, 0x65, 0x10, 0x0a, 0x12, 0x0f, 0x0a, 0x0b, 0x53, 0x75, 0x62, 0x5f, 0x4f, 0x70, 0x65, 0x72, + 0x61, 0x74, 0x65, 0x10, 0x0b, 0x42, 0x06, 0x5a, 0x04, 0x2e, 0x3b, 0x70, 0x62, 0x62, 0x06, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( diff --git a/pb/user_db.pb.go b/pb/user_db.pb.go index 3ce949a44..99945216c 100644 --- a/pb/user_db.pb.go +++ b/pb/user_db.pb.go @@ -152,7 +152,7 @@ type DBUser struct { Channel int32 `protobuf:"varint,38,opt,name=channel,proto3" json:"channel"` //@go_tags(`bson:"channel"`)渠道 Vcode int32 `protobuf:"varint,39,opt,name=vcode,proto3" json:"vcode"` //@go_tags(`bson:"vcode"`)版本号 Vname string `protobuf:"bytes,40,opt,name=vname,proto3" json:"vname"` //@go_tags(`bson:"vname"`)版本名 - CaravanLv int32 `protobuf:"varint,41,opt,name=caravanLv,proto3" json:"caravanLv"` //@go_tags(`bson:"caravanlv"`)商队等级 + Caravanlv int32 `protobuf:"varint,41,opt,name=caravanlv,proto3" json:"caravanlv"` //@go_tags(`bson:"caravanlv"`)商队等级 Deposit int64 `protobuf:"varint,42,opt,name=deposit,proto3" json:"deposit" bson:"deposit"` //储蓄 Profit int64 `protobuf:"varint,43,opt,name=profit,proto3" json:"profit" bson:"profit"` //商队盈利 Integral int64 `protobuf:"varint,44,opt,name=integral,proto3" json:"integral" bson:"integral"` //充值积分 @@ -470,9 +470,9 @@ func (x *DBUser) GetVname() string { return "" } -func (x *DBUser) GetCaravanLv() int32 { +func (x *DBUser) GetCaravanlv() int32 { if x != nil { - return x.CaravanLv + return x.Caravanlv } return 0 } @@ -886,8 +886,8 @@ var file_user_user_db_proto_rawDesc = []byte{ 0x64, 0x65, 0x18, 0x27, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x76, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x28, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x61, 0x72, 0x61, 0x76, 0x61, 0x6e, - 0x4c, 0x76, 0x18, 0x29, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x63, 0x61, 0x72, 0x61, 0x76, 0x61, - 0x6e, 0x4c, 0x76, 0x12, 0x18, 0x0a, 0x07, 0x64, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x18, 0x2a, + 0x6c, 0x76, 0x18, 0x29, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x63, 0x61, 0x72, 0x61, 0x76, 0x61, + 0x6e, 0x6c, 0x76, 0x12, 0x18, 0x0a, 0x07, 0x64, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x18, 0x2a, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x64, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x74, 0x18, 0x2b, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, diff --git a/sys/configure/structs/Game.MainStageData.go b/sys/configure/structs/Game.MainStageData.go index f96522605..d5bcdc0f1 100644 --- a/sys/configure/structs/Game.MainStageData.go +++ b/sys/configure/structs/Game.MainStageData.go @@ -19,6 +19,8 @@ type GameMainStageData struct { Episodetype int32 Openlevel int32 EditorStage int32 + Venturemodelspeed float32 + Venturemodelscale float32 Venturemodel string Bubbletalk string Venturetype int32 @@ -82,6 +84,8 @@ func (_v *GameMainStageData)Deserialize(_buf map[string]interface{}) (err error) { var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["Episodetype"].(float64); !_ok_ { err = errors.New("Episodetype error"); return }; _v.Episodetype = int32(_tempNum_) } { var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["openlevel"].(float64); !_ok_ { err = errors.New("openlevel error"); return }; _v.Openlevel = int32(_tempNum_) } { var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["EditorStage"].(float64); !_ok_ { err = errors.New("EditorStage error"); return }; _v.EditorStage = int32(_tempNum_) } + { var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["venturemodelspeed"].(float64); !_ok_ { err = errors.New("venturemodelspeed error"); return }; _v.Venturemodelspeed = float32(_tempNum_) } + { var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["venturemodelscale"].(float64); !_ok_ { err = errors.New("venturemodelscale error"); return }; _v.Venturemodelscale = float32(_tempNum_) } { var _ok_ bool; if _v.Venturemodel, _ok_ = _buf["venturemodel"].(string); !_ok_ { err = errors.New("venturemodel error"); return } } {var _ok_ bool; var __json_text__ map[string]interface{}; if __json_text__, _ok_ = _buf["bubbletalk"].(map[string]interface{}) ; !_ok_ { err = errors.New("_v.Bubbletalk error"); return }; { var _ok_ bool; if _, _ok_ = __json_text__["key"].(string); !_ok_ { err = errors.New("key error"); return } }; { var _ok_ bool; if _v.Bubbletalk, _ok_ = __json_text__["text"].(string); !_ok_ { err = errors.New("text error"); return } } } { var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["venturetype"].(float64); !_ok_ { err = errors.New("venturetype error"); return }; _v.Venturetype = int32(_tempNum_) } diff --git a/sys/configure/structs/game.globalData.go b/sys/configure/structs/game.globalData.go index a68963350..cd4fcddff 100644 --- a/sys/configure/structs/game.globalData.go +++ b/sys/configure/structs/game.globalData.go @@ -237,6 +237,7 @@ type GameGlobalData struct { BuzkashiRecentPlayer int32 TaskActivation int32 BuzkashiSpeedbumptime int32 + BuzkashiSpeedbumphp int32 BuzkashiRecovertime int32 BuzkashiRecoverHp int32 BuzkashiDeathspeed int32 @@ -997,6 +998,7 @@ func (_v *GameGlobalData)Deserialize(_buf map[string]interface{}) (err error) { { var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["buzkashi_recentPlayer"].(float64); !_ok_ { err = errors.New("buzkashi_recentPlayer error"); return }; _v.BuzkashiRecentPlayer = int32(_tempNum_) } { var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["task_activation"].(float64); !_ok_ { err = errors.New("task_activation error"); return }; _v.TaskActivation = int32(_tempNum_) } { var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["buzkashi_speedbumptime"].(float64); !_ok_ { err = errors.New("buzkashi_speedbumptime error"); return }; _v.BuzkashiSpeedbumptime = int32(_tempNum_) } + { var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["buzkashi_speedbumphp"].(float64); !_ok_ { err = errors.New("buzkashi_speedbumphp error"); return }; _v.BuzkashiSpeedbumphp = int32(_tempNum_) } { var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["buzkashi_recovertime"].(float64); !_ok_ { err = errors.New("buzkashi_recovertime error"); return }; _v.BuzkashiRecovertime = int32(_tempNum_) } { var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["buzkashi_recoverHp"].(float64); !_ok_ { err = errors.New("buzkashi_recoverHp error"); return }; _v.BuzkashiRecoverHp = int32(_tempNum_) } { var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["buzkashi_deathspeed"].(float64); !_ok_ { err = errors.New("buzkashi_deathspeed error"); return }; _v.BuzkashiDeathspeed = int32(_tempNum_) } diff --git a/sys/configure/structs/game.skillAtkData.go b/sys/configure/structs/game.skillAtkData.go index 6ad8279c0..62363469b 100644 --- a/sys/configure/structs/game.skillAtkData.go +++ b/sys/configure/structs/game.skillAtkData.go @@ -25,6 +25,7 @@ type GameSkillAtkData struct { Where []string Target int32 ChildSkill *GameChildSkills + PassSkill []int32 Desc string Buffid []int32 Map string @@ -77,6 +78,20 @@ func (_v *GameSkillAtkData)Deserialize(_buf map[string]interface{}) (err error) { var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["Target"].(float64); !_ok_ { err = errors.New("Target error"); return }; _v.Target = int32(_tempNum_) } { var _ok_ bool; var _x_ map[string]interface{}; if _x_, _ok_ = _buf["ChildSkill"].(map[string]interface{}); !_ok_ { err = errors.New("ChildSkill error"); return }; if _v.ChildSkill, err = DeserializeGameChildSkills(_x_); err != nil { return } } + { + var _arr_ []interface{} + var _ok_ bool + if _arr_, _ok_ = _buf["passSkill"].([]interface{}); !_ok_ { err = errors.New("passSkill error"); return } + + _v.PassSkill = make([]int32, 0, len(_arr_)) + + for _, _e_ := range _arr_ { + var _list_v_ int32 + { var _ok_ bool; var _x_ float64; if _x_, _ok_ = _e_.(float64); !_ok_ { err = errors.New("_list_v_ error"); return }; _list_v_ = int32(_x_) } + _v.PassSkill = append(_v.PassSkill, _list_v_) + } + } + {var _ok_ bool; var __json_text__ map[string]interface{}; if __json_text__, _ok_ = _buf["Desc"].(map[string]interface{}) ; !_ok_ { err = errors.New("_v.Desc error"); return }; { var _ok_ bool; if _, _ok_ = __json_text__["key"].(string); !_ok_ { err = errors.New("key error"); return } }; { var _ok_ bool; if _v.Desc, _ok_ = __json_text__["text"].(string); !_ok_ { err = errors.New("text error"); return } } } { var _arr_ []interface{} diff --git a/sys/configure/structs/game.skillBuffData.go b/sys/configure/structs/game.skillBuffData.go index e833409f9..24a9c677b 100644 --- a/sys/configure/structs/game.skillBuffData.go +++ b/sys/configure/structs/game.skillBuffData.go @@ -27,10 +27,10 @@ type GameSkillBuffData struct { OverlayTimes byte SameID bool Golbalbufficon string - ForbidFloat int32 BuffIcon string Buffeffect string Buffpos string + ForbidFloat int32 } const TypeId_GameSkillBuffData = 198132498 @@ -108,10 +108,10 @@ func (_v *GameSkillBuffData)Deserialize(_buf map[string]interface{}) (err error) { var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["OverlayTimes"].(float64); !_ok_ { err = errors.New("OverlayTimes error"); return }; _v.OverlayTimes = byte(_tempNum_) } { var _ok_ bool; if _v.SameID, _ok_ = _buf["SameID"].(bool); !_ok_ { err = errors.New("SameID error"); return } } { var _ok_ bool; if _v.Golbalbufficon, _ok_ = _buf["golbalbufficon"].(string); !_ok_ { err = errors.New("golbalbufficon error"); return } } - { var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["forbidFloat"].(float64); !_ok_ { err = errors.New("forbidFloat error"); return }; _v.ForbidFloat = int32(_tempNum_) } { var _ok_ bool; if _v.BuffIcon, _ok_ = _buf["buffIcon"].(string); !_ok_ { err = errors.New("buffIcon error"); return } } { var _ok_ bool; if _v.Buffeffect, _ok_ = _buf["buffeffect"].(string); !_ok_ { err = errors.New("buffeffect error"); return } } { var _ok_ bool; if _v.Buffpos, _ok_ = _buf["buffpos"].(string); !_ok_ { err = errors.New("buffpos error"); return } } + { var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["forbidFloat"].(float64); !_ok_ { err = errors.New("forbidFloat error"); return }; _v.ForbidFloat = int32(_tempNum_) } return }