From ddde857f8b3498d117ae5c35be5af24702dda587 Mon Sep 17 00:00:00 2001 From: meixiongfeng <766881921@qq.com> Date: Tue, 29 Nov 2022 11:15:02 +0800 Subject: [PATCH 1/7] =?UTF-8?q?=E7=8B=A9=E7=8C=8E=E8=B4=AD=E4=B9=B0?= =?UTF-8?q?=E6=8C=91=E6=88=98=E5=8D=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- modules/hunting/api_buy.go | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/modules/hunting/api_buy.go b/modules/hunting/api_buy.go index b3bf915fd..71b9db2a2 100644 --- a/modules/hunting/api_buy.go +++ b/modules/hunting/api_buy.go @@ -47,6 +47,11 @@ func (this *apiComp) Buy(session comm.IUserSession, req *pb.HuntingBuyReq) (code } else { curByCount = list.BuyCount } + curByCount += req.Count // 当前需要购买的数量 + if this.configure.GetMaxBuyChallengeCount() < curByCount { + code = pb.ErrorCode_HuntingBuyMaxCount + return + } conf := this.module.configure.GetGlobalConf() if conf == nil { code = pb.ErrorCode_ConfigNoFound @@ -88,11 +93,6 @@ func (this *apiComp) Buy(session comm.IUserSession, req *pb.HuntingBuyReq) (code list.RecoveryTime = 0 } mapData["recoveryTime"] = list.RecoveryTime - curByCount += req.Count // 当前需要购买的数量 - if this.configure.GetMaxBuyChallengeCount() < curByCount { - code = pb.ErrorCode_HuntingBuyMaxCount - return - } for i := list.BuyCount + 1; i <= curByCount; i++ { _cfg := this.configure.GetBuyChallengeCount(i) @@ -109,6 +109,7 @@ func (this *apiComp) Buy(session comm.IUserSession, req *pb.HuntingBuyReq) (code if v.A == v1.A && v.T == v1.T { v1.N += v.N bFound = true + break } } if !bFound { From d4b2bb13f54ed7a93ef811f5b42829947be9d9e0 Mon Sep 17 00:00:00 2001 From: meixiongfeng <766881921@qq.com> Date: Tue, 29 Nov 2022 11:19:57 +0800 Subject: [PATCH 2/7] =?UTF-8?q?waring=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- modules/hunting/api_buy.go | 5 +++-- modules/hunting/api_getlist.go | 5 +++-- modules/viking/api_buy.go | 5 +++-- modules/viking/api_getlist.go | 5 +++-- 4 files changed, 12 insertions(+), 8 deletions(-) diff --git a/modules/hunting/api_buy.go b/modules/hunting/api_buy.go index 71b9db2a2..80926affa 100644 --- a/modules/hunting/api_buy.go +++ b/modules/hunting/api_buy.go @@ -81,11 +81,12 @@ func (this *apiComp) Buy(session comm.IUserSession, req *pb.HuntingBuyReq) (code } } if curCount-amount > 0 { - if code = this.module.DispenseRes(session, []*cfg.Gameatn{&cfg.Gameatn{ + res := &cfg.Gameatn{ A: "item", T: costRes.T, N: curCount - amount, - }}, true); code != pb.ErrorCode_Success { + } + if code = this.module.DispenseRes(session, []*cfg.Gameatn{res}, true); code != pb.ErrorCode_Success { return } } diff --git a/modules/hunting/api_getlist.go b/modules/hunting/api_getlist.go index 5b97bedf2..d5b08fa4b 100644 --- a/modules/hunting/api_getlist.go +++ b/modules/hunting/api_getlist.go @@ -72,11 +72,12 @@ func (this *apiComp) GetList(session comm.IUserSession, req *pb.HuntingGetListRe addCount := curCount - amount if addCount > 0 { - if code = this.module.DispenseRes(session, []*cfg.Gameatn{&cfg.Gameatn{ + res := &cfg.Gameatn{ A: "item", T: costRes.T, N: addCount, - }}, true); code != pb.ErrorCode_Success { + } + if code = this.module.DispenseRes(session, []*cfg.Gameatn{res}, true); code != pb.ErrorCode_Success { return } } diff --git a/modules/viking/api_buy.go b/modules/viking/api_buy.go index 9283410a2..89347a0bc 100644 --- a/modules/viking/api_buy.go +++ b/modules/viking/api_buy.go @@ -77,11 +77,12 @@ func (this *apiComp) Buy(session comm.IUserSession, req *pb.VikingBuyReq) (code } } if curCount-amount > 0 { - if code = this.module.DispenseRes(session, []*cfg.Gameatn{&cfg.Gameatn{ + res := &cfg.Gameatn{ A: "item", T: costRes.T, N: curCount - amount, - }}, true); code != pb.ErrorCode_Success { + } + if code = this.module.DispenseRes(session, []*cfg.Gameatn{res}, true); code != pb.ErrorCode_Success { return } } diff --git a/modules/viking/api_getlist.go b/modules/viking/api_getlist.go index 6545e7622..7ed0038ae 100644 --- a/modules/viking/api_getlist.go +++ b/modules/viking/api_getlist.go @@ -73,11 +73,12 @@ func (this *apiComp) GetList(session comm.IUserSession, req *pb.VikingGetListReq } addCount := curCount - amount if addCount > 0 { - if code = this.module.DispenseRes(session, []*cfg.Gameatn{&cfg.Gameatn{ + res := &cfg.Gameatn{ A: "item", T: costRes.T, N: addCount, - }}, true); code != pb.ErrorCode_Success { + } + if code = this.module.DispenseRes(session, []*cfg.Gameatn{res}, true); code != pb.ErrorCode_Success { return } } From 9aebfd27f5c4b1b86c50092a67f04255b01714a0 Mon Sep 17 00:00:00 2001 From: wh_zcy Date: Tue, 29 Nov 2022 11:37:19 +0800 Subject: [PATCH 3/7] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E4=BB=BB=E5=8A=A1?= =?UTF-8?q?=E7=B1=BB=E5=9E=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- bin/json/game_rdtaskcondi.json | 101 +++++++++++++++++++++++++++++---- modules/rtask/module.go | 5 +- 2 files changed, 92 insertions(+), 14 deletions(-) diff --git a/bin/json/game_rdtaskcondi.json b/bin/json/game_rdtaskcondi.json index 7f48636a8..70af2ed9c 100644 --- a/bin/json/game_rdtaskcondi.json +++ b/bin/json/game_rdtaskcondi.json @@ -848,7 +848,7 @@ { "id": 173, "datatype": 2, - "type": 71, + "type": 72, "inited": [], "data1": 1, "data2": 0, @@ -1076,17 +1076,6 @@ "data4": 4, "data5": 4 }, - { - "id": 194, - "datatype": 2, - "type": 138, - "inited": [], - "data1": 30, - "data2": 0, - "data3": 0, - "data4": 0, - "data5": 0 - }, { "id": 195, "datatype": 2, @@ -3792,5 +3781,93 @@ "data3": 0, "data4": 0, "data5": 0 + }, + { + "id": 5011001, + "datatype": 2, + "type": 11, + "inited": [], + "data1": 3, + "data2": 0, + "data3": 0, + "data4": 0, + "data5": 0 + }, + { + "id": 5012001, + "datatype": 2, + "type": 12, + "inited": [], + "data1": 1, + "data2": 0, + "data3": 0, + "data4": 0, + "data5": 0 + }, + { + "id": 5018001, + "datatype": 2, + "type": 18, + "inited": [], + "data1": 1, + "data2": 0, + "data3": 0, + "data4": 0, + "data5": 0 + }, + { + "id": 5024001, + "datatype": 2, + "type": 24, + "inited": [], + "data1": 1, + "data2": 0, + "data3": 0, + "data4": 0, + "data5": 0 + }, + { + "id": 5047001, + "datatype": 2, + "type": 47, + "inited": [], + "data1": 6, + "data2": 0, + "data3": 0, + "data4": 0, + "data5": 0 + }, + { + "id": 5063001, + "datatype": 2, + "type": 63, + "inited": [], + "data1": 100, + "data2": 0, + "data3": 0, + "data4": 0, + "data5": 0 + }, + { + "id": 5068001, + "datatype": 2, + "type": 68, + "inited": [], + "data1": 200000, + "data2": 0, + "data3": 0, + "data4": 0, + "data5": 0 + }, + { + "id": 5104001, + "datatype": 2, + "type": 104, + "inited": [], + "data1": 100, + "data2": 0, + "data3": 0, + "data4": 0, + "data5": 0 } ] \ No newline at end of file diff --git a/modules/rtask/module.go b/modules/rtask/module.go index 6dc8f5bcb..3a3056e59 100644 --- a/modules/rtask/module.go +++ b/modules/rtask/module.go @@ -155,7 +155,7 @@ func (this *ModuleRtask) initRtaskVerifyHandle() { verify: this.modelRtask.verfiyRtype10, update: this.modelRtaskRecord.overrideUpdate, }) - case comm.Rtype11: + case comm.Rtype11, comm.Rtype84, comm.Rtype85: this.registerVerifyHandle(v.Id, &rtaskCondi{ cfg: typeCfg, find: this.modelRtaskRecord.lessEqualFirstParam, @@ -174,7 +174,8 @@ func (this *ModuleRtask) initRtaskVerifyHandle() { comm.Rtype26, comm.Rtype27, comm.Rtype28, comm.Rtype38, comm.Rtype39, comm.Rtype50, comm.Rtype51, comm.Rtype53, comm.Rtype54, comm.Rtype57, comm.Rtype58, comm.Rtype60, - comm.Rtype62, comm.Rtype64, comm.Rtype69, comm.Rtype72, comm.Rtype104: + comm.Rtype62, comm.Rtype64, comm.Rtype69, comm.Rtype72, comm.Rtype88, comm.Rtype104, + comm.Rtype96, comm.Rtype105, comm.Rtype128, comm.Rtype130, comm.Rtype131: this.registerVerifyHandle(v.Id, &rtaskCondi{ cfg: typeCfg, find: this.modelRtaskRecord.lessEqualFirstParam, From 825c17ba617e70a7eb4a20054305c735bae578dc Mon Sep 17 00:00:00 2001 From: meixiongfeng <766881921@qq.com> Date: Tue, 29 Nov 2022 15:37:47 +0800 Subject: [PATCH 4/7] =?UTF-8?q?=E5=8F=91=E9=80=81=E9=9A=BE=E5=BA=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- modules/hunting/api_getlist.go | 4 ++++ modules/viking/api_getlist.go | 3 +++ 2 files changed, 7 insertions(+) diff --git a/modules/hunting/api_getlist.go b/modules/hunting/api_getlist.go index d5b08fa4b..b7b4b733d 100644 --- a/modules/hunting/api_getlist.go +++ b/modules/hunting/api_getlist.go @@ -86,6 +86,10 @@ func (this *apiComp) GetList(session comm.IUserSession, req *pb.HuntingGetListRe } mapData["recoveryTime"] = list.RecoveryTime code = this.module.ModifyHuntingData(session.GetUserId(), mapData) //修改内存信息 + // 发送难度 + for k := range list.Boss { + list.Boss[k] += 1 + } session.SendMsg(string(this.module.GetType()), HuntingGetListResp, &pb.HuntingGetListResp{Data: list}) return } diff --git a/modules/viking/api_getlist.go b/modules/viking/api_getlist.go index 7ed0038ae..3237ecc07 100644 --- a/modules/viking/api_getlist.go +++ b/modules/viking/api_getlist.go @@ -87,6 +87,9 @@ func (this *apiComp) GetList(session comm.IUserSession, req *pb.VikingGetListReq } mapData["recoveryTime"] = list.RecoveryTime code = this.module.ModifyVikingData(session.GetUserId(), mapData) //修改内存信息 + for k := range list.Boss { + list.Boss[k] += 1 + } session.SendMsg(string(this.module.GetType()), VikingGetListResp, &pb.VikingGetListResp{Data: list}) return } From 58bcc8c15d37bb30353a9c0ef6a767c531aabef7 Mon Sep 17 00:00:00 2001 From: meixiongfeng <766881921@qq.com> Date: Tue, 29 Nov 2022 16:28:03 +0800 Subject: [PATCH 5/7] =?UTF-8?q?=E6=88=98=E6=96=97=E8=83=9C=E5=88=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- modules/hunting/api_challengeover.go | 25 ++-- modules/pagoda/api_challengeover.go | 7 +- modules/viking/api_challengeover.go | 15 +-- pb/errorcode.pb.go | 194 ++++++++++++++------------- 4 files changed, 123 insertions(+), 118 deletions(-) diff --git a/modules/hunting/api_challengeover.go b/modules/hunting/api_challengeover.go index 59a7baa47..d33f990ba 100644 --- a/modules/hunting/api_challengeover.go +++ b/modules/hunting/api_challengeover.go @@ -70,46 +70,45 @@ func (this *apiComp) ChallengeOver(session comm.IUserSession, req *pb.HuntingCha } newChallenge = true } + // 校验门票数量够不够 + if code = this.module.ConsumeRes(session, []*cfg.Gameatn{costRes}, true); code != pb.ErrorCode_Success { + return + } // check code, bWin = this.module.battle.CheckBattleReport(session, req.Report) if code != pb.ErrorCode_Success { return } - if !bWin { - return - } - // 校验门票数量够不够 - if code = this.module.ConsumeRes(session, []*cfg.Gameatn{costRes}, true); code != pb.ErrorCode_Success { - return - } + amount := int32(this.module.ModuleItems.QueryItemAmount(session.GetUserId(), costRes.T)) // 获取当前数量 if amount < conf.HuntingNum { hunting.RecoveryTime = configure.Now().Unix() mapData["recoveryTime"] = hunting.RecoveryTime } - - this.module.CheckRank(session.GetUserId(), req.BossType, req.Difficulty, hunting, req.Report) - + if bWin { + this.module.CheckRank(session.GetUserId(), req.BossType, req.Difficulty, hunting, req.Report) + } // 耗时校验 当前战斗胜利时间消耗小于之前刷新数据 - code = this.module.ModifyHuntingData(session.GetUserId(), mapData) // 发放通关随机奖励 reward = this.module.configure.GetDropReward(cfgHunting.Drop) // 获取掉落奖励 if code = this.module.DispenseRes(session, reward, true); code != pb.ErrorCode_Success { return } - if newChallenge { // 新关卡挑战通过 发放首通奖励 + if newChallenge && bWin { // 新关卡挑战通过 发放首通奖励 if code = this.module.DispenseRes(session, cfgHunting.Firstprize, true); code != pb.ErrorCode_Success { return } hunting.Boss[req.BossType] += 1 mapData["boss"] = hunting.Boss - mapData["challengeTime"] = hunting.BossTime + } for k := range hunting.Boss { hunting.Boss[k] += 1 } + mapData["challengeTime"] = hunting.BossTime + code = this.module.ModifyHuntingData(session.GetUserId(), mapData) session.SendMsg(string(this.module.GetType()), HuntingChallengeOverResp, &pb.HuntingChallengeOverResp{Data: hunting}) // 随机任务统计 diff --git a/modules/pagoda/api_challengeover.go b/modules/pagoda/api_challengeover.go index 62802cd74..808f55fae 100644 --- a/modules/pagoda/api_challengeover.go +++ b/modules/pagoda/api_challengeover.go @@ -26,6 +26,7 @@ func (this *apiComp) ChallengeOver(session comm.IUserSession, req *pb.PagodaChal mapData map[string]interface{} pagoda *pb.DBPagoda costTime int32 // 本次战斗消耗的时间 + isWin bool ) mapData = make(map[string]interface{}, 0) code = this.ChallengeOverCheck(session, req) @@ -67,10 +68,14 @@ func (this *apiComp) ChallengeOver(session comm.IUserSession, req *pb.PagodaChal } } // 校验通过 - code, _ = this.module.battle.CheckBattleReport(session, req.Report) + code, isWin = this.module.battle.CheckBattleReport(session, req.Report) if code != pb.ErrorCode_Success { return } + if !isWin { // 战斗失败直接返回 + code = pb.ErrorCode_BattleNoWin + return + } costTime = req.Report.Costtime // 加经验 if req.Report != nil && req.Report.Info != nil && len(req.Report.Info.Redflist) > 0 { diff --git a/modules/viking/api_challengeover.go b/modules/viking/api_challengeover.go index f815945b2..1c8fc9f53 100644 --- a/modules/viking/api_challengeover.go +++ b/modules/viking/api_challengeover.go @@ -81,16 +81,12 @@ func (this *apiComp) ChallengeOver(session comm.IUserSession, req *pb.VikingChal if code != pb.ErrorCode_Success { return } - - // 耗时校验 当前战斗胜利时间消耗小于之前刷新数据 - code, bWin = this.module.battle.CheckBattleReport(session, req.Report) - if !bWin { // 战斗失败 直接返回 - return - } // 校验门票数量够不够 if code = this.module.ConsumeRes(session, []*cfg.Gameatn{costRes}, true); code != pb.ErrorCode_Success { return } + code, bWin = this.module.battle.CheckBattleReport(session, req.Report) + amount := int32(this.module.ModuleItems.QueryItemAmount(session.GetUserId(), costRes.T)) // 获取当前数量 conf := this.module.configure.GetGlobalConf() if conf != nil { @@ -99,13 +95,14 @@ func (this *apiComp) ChallengeOver(session comm.IUserSession, req *pb.VikingChal mapData["recoveryTime"] = viking.RecoveryTime } } - this.module.CheckRank(session.GetUserId(), req.BossId, req.Difficulty, viking, req.Report) + if bWin { + this.module.CheckRank(session.GetUserId(), req.BossId, req.Difficulty, viking, req.Report) + } mapData["bossTime"] = viking.BossTime // 更新时间 - if newChallenge { // 新关卡挑战通过 发放首通奖励 + if newChallenge && bWin { // 新关卡挑战通过 发放首通奖励 if code = this.module.DispenseRes(session, vikingCfg.Firstprize, true); code != pb.ErrorCode_Success { return } - for _, v := range vikingCfg.Firstprize { asset = append(asset, &pb.UserAssets{ A: v.A, diff --git a/pb/errorcode.pb.go b/pb/errorcode.pb.go index 0aecc4cda..82c35bc70 100644 --- a/pb/errorcode.pb.go +++ b/pb/errorcode.pb.go @@ -202,6 +202,7 @@ const ( ErrorCode_LibraryLvReward ErrorCode = 2805 // 领奖等级没达到 // Battle ErrorCode_BattleValidationFailed ErrorCode = 2901 //战斗校验失败 + ErrorCode_BattleNoWin ErrorCode = 2902 //战斗失败 // sociaty ErrorCode_SociatyNoFound ErrorCode = 3000 //公会不存在 ErrorCode_SociatyAdded ErrorCode = 3001 //已在公会里 @@ -438,6 +439,7 @@ var ( 2804: "LibraryReward", 2805: "LibraryLvReward", 2901: "BattleValidationFailed", + 2902: "BattleNoWin", 3000: "SociatyNoFound", 3001: "SociatyAdded", 3002: "SociatyDiamondNoEnough", @@ -661,6 +663,7 @@ var ( "LibraryReward": 2804, "LibraryLvReward": 2805, "BattleValidationFailed": 2901, + "BattleNoWin": 2902, "SociatyNoFound": 3000, "SociatyAdded": 3001, "SociatyDiamondNoEnough": 3002, @@ -756,7 +759,7 @@ var File_errorcode_proto protoreflect.FileDescriptor var file_errorcode_proto_rawDesc = []byte{ 0x0a, 0x0f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x2a, 0xb9, 0x27, 0x0a, 0x09, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x43, 0x6f, 0x64, 0x65, 0x12, + 0x6f, 0x2a, 0xcb, 0x27, 0x0a, 0x09, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x10, 0x00, 0x12, 0x11, 0x0a, 0x0d, 0x4e, 0x6f, 0x46, 0x69, 0x6e, 0x64, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x10, 0x0a, 0x12, 0x1b, 0x0a, 0x17, 0x4e, 0x6f, 0x46, 0x69, 0x6e, 0x64, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, @@ -979,100 +982,101 @@ var file_errorcode_proto_rawDesc = []byte{ 0x64, 0x10, 0xf4, 0x15, 0x12, 0x14, 0x0a, 0x0f, 0x4c, 0x69, 0x62, 0x72, 0x61, 0x72, 0x79, 0x4c, 0x76, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x10, 0xf5, 0x15, 0x12, 0x1b, 0x0a, 0x16, 0x42, 0x61, 0x74, 0x74, 0x6c, 0x65, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x61, - 0x69, 0x6c, 0x65, 0x64, 0x10, 0xd5, 0x16, 0x12, 0x13, 0x0a, 0x0e, 0x53, 0x6f, 0x63, 0x69, 0x61, - 0x74, 0x79, 0x4e, 0x6f, 0x46, 0x6f, 0x75, 0x6e, 0x64, 0x10, 0xb8, 0x17, 0x12, 0x11, 0x0a, 0x0c, - 0x53, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x79, 0x41, 0x64, 0x64, 0x65, 0x64, 0x10, 0xb9, 0x17, 0x12, - 0x1b, 0x0a, 0x16, 0x53, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x79, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, - 0x64, 0x4e, 0x6f, 0x45, 0x6e, 0x6f, 0x75, 0x67, 0x68, 0x10, 0xba, 0x17, 0x12, 0x14, 0x0a, 0x0f, - 0x53, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x79, 0x4e, 0x6f, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x10, - 0xbb, 0x17, 0x12, 0x13, 0x0a, 0x0e, 0x53, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x79, 0x4e, 0x6f, 0x52, - 0x69, 0x67, 0x68, 0x74, 0x10, 0xbc, 0x17, 0x12, 0x13, 0x0a, 0x0e, 0x53, 0x6f, 0x63, 0x69, 0x61, - 0x74, 0x79, 0x4e, 0x6f, 0x41, 0x64, 0x64, 0x65, 0x64, 0x10, 0xbd, 0x17, 0x12, 0x13, 0x0a, 0x0e, - 0x53, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x79, 0x44, 0x69, 0x73, 0x6d, 0x69, 0x73, 0x73, 0x10, 0xbe, - 0x17, 0x12, 0x10, 0x0a, 0x0b, 0x53, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x79, 0x51, 0x75, 0x69, 0x74, - 0x10, 0xbf, 0x17, 0x12, 0x11, 0x0a, 0x0c, 0x53, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x79, 0x41, 0x67, - 0x72, 0x65, 0x65, 0x10, 0xc0, 0x17, 0x12, 0x12, 0x0a, 0x0d, 0x53, 0x6f, 0x63, 0x69, 0x61, 0x74, - 0x79, 0x52, 0x65, 0x66, 0x75, 0x73, 0x65, 0x10, 0xc1, 0x17, 0x12, 0x16, 0x0a, 0x10, 0x53, 0x6f, - 0x63, 0x69, 0x61, 0x74, 0x79, 0x4c, 0x6f, 0x67, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x10, 0xba, - 0xea, 0x01, 0x12, 0x19, 0x0a, 0x13, 0x53, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x79, 0x4d, 0x61, 0x73, - 0x74, 0x65, 0x72, 0x4e, 0x6f, 0x44, 0x69, 0x73, 0x73, 0x10, 0xbb, 0xea, 0x01, 0x12, 0x17, 0x0a, - 0x11, 0x53, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x79, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x4a, - 0x6f, 0x62, 0x10, 0xbc, 0xea, 0x01, 0x12, 0x14, 0x0a, 0x0e, 0x53, 0x6f, 0x63, 0x69, 0x61, 0x74, - 0x79, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x10, 0xbd, 0xea, 0x01, 0x12, 0x15, 0x0a, 0x0f, - 0x53, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x79, 0x4e, 0x6f, 0x41, 0x63, 0x63, 0x75, 0x73, 0x65, 0x10, - 0xbe, 0xea, 0x01, 0x12, 0x11, 0x0a, 0x0b, 0x53, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x79, 0x53, 0x69, - 0x67, 0x6e, 0x10, 0xbf, 0xea, 0x01, 0x12, 0x13, 0x0a, 0x0d, 0x53, 0x6f, 0x63, 0x69, 0x61, 0x74, - 0x79, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x10, 0xc0, 0xea, 0x01, 0x12, 0x14, 0x0a, 0x0e, 0x53, - 0x6f, 0x63, 0x69, 0x61, 0x74, 0x79, 0x43, 0x44, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x10, 0xc1, 0xea, - 0x01, 0x12, 0x15, 0x0a, 0x0f, 0x53, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x79, 0x41, 0x70, 0x70, 0x6c, - 0x79, 0x4d, 0x61, 0x78, 0x10, 0xc2, 0xea, 0x01, 0x12, 0x18, 0x0a, 0x12, 0x53, 0x6f, 0x63, 0x69, - 0x61, 0x74, 0x79, 0x53, 0x65, 0x6c, 0x66, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x10, 0xc3, - 0xea, 0x01, 0x12, 0x1d, 0x0a, 0x17, 0x53, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x79, 0x4d, 0x65, 0x6d, - 0x62, 0x65, 0x72, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x10, 0xc4, 0xea, - 0x01, 0x12, 0x1b, 0x0a, 0x15, 0x53, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x79, 0x52, 0x65, 0x77, 0x61, - 0x72, 0x64, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x10, 0xc5, 0xea, 0x01, 0x12, 0x1a, - 0x0a, 0x14, 0x53, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x79, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x52, - 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x10, 0xc6, 0xea, 0x01, 0x12, 0x15, 0x0a, 0x0f, 0x53, 0x6f, - 0x63, 0x69, 0x61, 0x74, 0x79, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x10, 0xc7, 0xea, - 0x01, 0x12, 0x15, 0x0a, 0x0f, 0x53, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x79, 0x42, 0x65, 0x6c, 0x6f, - 0x6e, 0x67, 0x54, 0x6f, 0x10, 0xc9, 0xea, 0x01, 0x12, 0x14, 0x0a, 0x0e, 0x53, 0x6f, 0x63, 0x69, - 0x61, 0x74, 0x79, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x65, 0x64, 0x10, 0xca, 0xea, 0x01, 0x12, 0x1b, - 0x0a, 0x15, 0x53, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x79, 0x41, 0x70, 0x70, 0x79, 0x4c, 0x76, 0x4e, - 0x6f, 0x45, 0x6e, 0x6f, 0x75, 0x67, 0x68, 0x10, 0xcb, 0xea, 0x01, 0x12, 0x1b, 0x0a, 0x15, 0x53, - 0x6f, 0x63, 0x69, 0x61, 0x74, 0x79, 0x54, 0x61, 0x73, 0x6b, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x10, 0xcc, 0xea, 0x01, 0x12, 0x1d, 0x0a, 0x17, 0x53, 0x6f, 0x63, 0x69, - 0x61, 0x74, 0x79, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x4e, 0x6f, 0x45, 0x6e, 0x6f, - 0x75, 0x67, 0x68, 0x10, 0xcd, 0xea, 0x01, 0x12, 0x1c, 0x0a, 0x16, 0x53, 0x6f, 0x63, 0x69, 0x61, - 0x74, 0x79, 0x41, 0x63, 0x69, 0x74, 0x76, 0x69, 0x74, 0x79, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, - 0x65, 0x10, 0xce, 0xea, 0x01, 0x12, 0x16, 0x0a, 0x10, 0x53, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x79, - 0x44, 0x69, 0x73, 0x6d, 0x69, 0x73, 0x73, 0x65, 0x64, 0x10, 0xcf, 0xea, 0x01, 0x12, 0x16, 0x0a, - 0x10, 0x53, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x45, 0x78, 0x69, 0x73, - 0x74, 0x10, 0xd0, 0xea, 0x01, 0x12, 0x1a, 0x0a, 0x14, 0x53, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x79, - 0x51, 0x75, 0x69, 0x74, 0x4e, 0x6f, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x10, 0xd1, 0xea, - 0x01, 0x12, 0x15, 0x0a, 0x0f, 0x53, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x79, 0x4e, 0x6f, 0x4d, 0x61, - 0x73, 0x74, 0x65, 0x72, 0x10, 0xd2, 0xea, 0x01, 0x12, 0x15, 0x0a, 0x10, 0x41, 0x72, 0x65, 0x6e, - 0x61, 0x54, 0x69, 0x63, 0x6b, 0x65, 0x74, 0x42, 0x75, 0x79, 0x55, 0x70, 0x10, 0x9d, 0x18, 0x12, - 0x19, 0x0a, 0x14, 0x41, 0x72, 0x65, 0x6e, 0x61, 0x54, 0x69, 0x63, 0x6b, 0x65, 0x74, 0x4e, 0x6f, - 0x74, 0x45, 0x6e, 0x6f, 0x75, 0x67, 0x68, 0x10, 0x9e, 0x18, 0x12, 0x17, 0x0a, 0x12, 0x41, 0x72, - 0x65, 0x6e, 0x61, 0x54, 0x69, 0x63, 0x6b, 0x65, 0x74, 0x4e, 0x70, 0x63, 0x49, 0x6e, 0x43, 0x64, - 0x10, 0x9f, 0x18, 0x12, 0x16, 0x0a, 0x11, 0x54, 0x61, 0x6c, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x70, - 0x65, 0x61, 0x74, 0x4c, 0x65, 0x61, 0x72, 0x6e, 0x10, 0x81, 0x19, 0x12, 0x12, 0x0a, 0x0d, 0x54, - 0x61, 0x6c, 0x65, 0x6e, 0x74, 0x45, 0x72, 0x72, 0x44, 0x61, 0x74, 0x61, 0x10, 0x82, 0x19, 0x12, - 0x19, 0x0a, 0x14, 0x54, 0x61, 0x6c, 0x65, 0x6e, 0x74, 0x55, 0x6e, 0x4c, 0x6f, 0x63, 0x6b, 0x65, - 0x72, 0x42, 0x65, 0x66, 0x6f, 0x72, 0x65, 0x10, 0x83, 0x19, 0x12, 0x15, 0x0a, 0x10, 0x54, 0x61, - 0x6c, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x65, 0x74, 0x53, 0x74, 0x61, 0x74, 0x65, 0x10, 0x84, - 0x19, 0x12, 0x10, 0x0a, 0x0b, 0x54, 0x72, 0x6f, 0x6c, 0x6c, 0x42, 0x75, 0x79, 0x4d, 0x61, 0x78, - 0x10, 0xe5, 0x19, 0x12, 0x11, 0x0a, 0x0c, 0x54, 0x72, 0x6f, 0x6c, 0x6c, 0x53, 0x65, 0x6c, 0x6c, - 0x4d, 0x61, 0x78, 0x10, 0xe6, 0x19, 0x12, 0x16, 0x0a, 0x11, 0x54, 0x72, 0x6f, 0x6c, 0x6c, 0x4d, - 0x61, 0x78, 0x53, 0x65, 0x6c, 0x6c, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x10, 0xe7, 0x19, 0x12, 0x16, - 0x0a, 0x11, 0x54, 0x72, 0x6f, 0x6c, 0x6c, 0x4d, 0x61, 0x78, 0x49, 0x74, 0x65, 0x6d, 0x43, 0x6f, - 0x75, 0x6e, 0x74, 0x10, 0xe8, 0x19, 0x12, 0x18, 0x0a, 0x13, 0x54, 0x72, 0x6f, 0x6c, 0x6c, 0x52, - 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x10, 0xe9, 0x19, - 0x12, 0x19, 0x0a, 0x14, 0x48, 0x6f, 0x72, 0x6f, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x4e, 0x6f, 0x74, - 0x54, 0x75, 0x72, 0x6e, 0x65, 0x64, 0x4f, 0x6e, 0x10, 0xc9, 0x1a, 0x12, 0x19, 0x0a, 0x14, 0x48, - 0x6f, 0x72, 0x6f, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x52, 0x65, 0x73, 0x74, 0x43, 0x44, 0x4e, 0x6f, - 0x45, 0x6e, 0x64, 0x10, 0xca, 0x1a, 0x12, 0x16, 0x0a, 0x11, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, - 0x65, 0x67, 0x65, 0x4e, 0x6f, 0x74, 0x46, 0x6f, 0x75, 0x6e, 0x64, 0x10, 0xad, 0x1b, 0x12, 0x17, - 0x0a, 0x12, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x52, 0x65, 0x6e, 0x65, 0x77, - 0x54, 0x69, 0x6d, 0x65, 0x10, 0xae, 0x1b, 0x12, 0x14, 0x0a, 0x0f, 0x47, 0x72, 0x6f, 0x77, 0x74, - 0x61, 0x73, 0x6b, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x10, 0x91, 0x1c, 0x12, 0x17, 0x0a, - 0x12, 0x47, 0x72, 0x6f, 0x77, 0x74, 0x61, 0x73, 0x6b, 0x41, 0x64, 0x76, 0x52, 0x65, 0x63, 0x65, - 0x69, 0x76, 0x65, 0x10, 0x92, 0x1c, 0x12, 0x17, 0x0a, 0x12, 0x50, 0x61, 0x79, 0x42, 0x75, 0x79, - 0x4e, 0x75, 0x6d, 0x4e, 0x6f, 0x74, 0x45, 0x6e, 0x6f, 0x75, 0x67, 0x68, 0x10, 0xf5, 0x1c, 0x12, - 0x14, 0x0a, 0x0f, 0x50, 0x61, 0x79, 0x52, 0x65, 0x6e, 0x65, 0x77, 0x54, 0x69, 0x6d, 0x65, 0x45, - 0x72, 0x72, 0x10, 0xf6, 0x1c, 0x12, 0x14, 0x0a, 0x0f, 0x57, 0x6f, 0x72, 0x6c, 0x64, 0x74, 0x61, - 0x73, 0x6b, 0x46, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x10, 0xd9, 0x1d, 0x12, 0x19, 0x0a, 0x14, 0x57, - 0x6f, 0x72, 0x6c, 0x64, 0x74, 0x61, 0x73, 0x6b, 0x4c, 0x76, 0x4e, 0x6f, 0x74, 0x45, 0x6e, 0x6f, - 0x75, 0x67, 0x68, 0x10, 0xda, 0x1d, 0x12, 0x16, 0x0a, 0x11, 0x57, 0x6f, 0x72, 0x6c, 0x64, 0x74, - 0x61, 0x73, 0x6b, 0x4e, 0x6f, 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x10, 0xdb, 0x1d, 0x12, 0x18, - 0x0a, 0x13, 0x57, 0x6f, 0x72, 0x6c, 0x64, 0x74, 0x61, 0x73, 0x6b, 0x4e, 0x6f, 0x43, 0x6f, 0x6d, - 0x70, 0x6c, 0x65, 0x74, 0x65, 0x10, 0xdc, 0x1d, 0x12, 0x15, 0x0a, 0x10, 0x57, 0x6f, 0x72, 0x6c, - 0x64, 0x74, 0x61, 0x73, 0x6b, 0x46, 0x69, 0x6e, 0x69, 0x68, 0x65, 0x64, 0x10, 0xdd, 0x1d, 0x12, - 0x1c, 0x0a, 0x17, 0x57, 0x6f, 0x72, 0x6c, 0x64, 0x74, 0x61, 0x73, 0x6b, 0x4c, 0x61, 0x73, 0x74, - 0x55, 0x6e, 0x46, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64, 0x10, 0xde, 0x1d, 0x12, 0x1e, 0x0a, - 0x19, 0x41, 0x63, 0x61, 0x64, 0x65, 0x6d, 0x79, 0x54, 0x61, 0x73, 0x6b, 0x4e, 0x6f, 0x43, 0x6f, - 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x10, 0xbd, 0x1e, 0x42, 0x06, 0x5a, - 0x04, 0x2e, 0x3b, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x69, 0x6c, 0x65, 0x64, 0x10, 0xd5, 0x16, 0x12, 0x10, 0x0a, 0x0b, 0x42, 0x61, 0x74, 0x74, 0x6c, + 0x65, 0x4e, 0x6f, 0x57, 0x69, 0x6e, 0x10, 0xd6, 0x16, 0x12, 0x13, 0x0a, 0x0e, 0x53, 0x6f, 0x63, + 0x69, 0x61, 0x74, 0x79, 0x4e, 0x6f, 0x46, 0x6f, 0x75, 0x6e, 0x64, 0x10, 0xb8, 0x17, 0x12, 0x11, + 0x0a, 0x0c, 0x53, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x79, 0x41, 0x64, 0x64, 0x65, 0x64, 0x10, 0xb9, + 0x17, 0x12, 0x1b, 0x0a, 0x16, 0x53, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x79, 0x44, 0x69, 0x61, 0x6d, + 0x6f, 0x6e, 0x64, 0x4e, 0x6f, 0x45, 0x6e, 0x6f, 0x75, 0x67, 0x68, 0x10, 0xba, 0x17, 0x12, 0x14, + 0x0a, 0x0f, 0x53, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x79, 0x4e, 0x6f, 0x4d, 0x65, 0x6d, 0x62, 0x65, + 0x72, 0x10, 0xbb, 0x17, 0x12, 0x13, 0x0a, 0x0e, 0x53, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x79, 0x4e, + 0x6f, 0x52, 0x69, 0x67, 0x68, 0x74, 0x10, 0xbc, 0x17, 0x12, 0x13, 0x0a, 0x0e, 0x53, 0x6f, 0x63, + 0x69, 0x61, 0x74, 0x79, 0x4e, 0x6f, 0x41, 0x64, 0x64, 0x65, 0x64, 0x10, 0xbd, 0x17, 0x12, 0x13, + 0x0a, 0x0e, 0x53, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x79, 0x44, 0x69, 0x73, 0x6d, 0x69, 0x73, 0x73, + 0x10, 0xbe, 0x17, 0x12, 0x10, 0x0a, 0x0b, 0x53, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x79, 0x51, 0x75, + 0x69, 0x74, 0x10, 0xbf, 0x17, 0x12, 0x11, 0x0a, 0x0c, 0x53, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x79, + 0x41, 0x67, 0x72, 0x65, 0x65, 0x10, 0xc0, 0x17, 0x12, 0x12, 0x0a, 0x0d, 0x53, 0x6f, 0x63, 0x69, + 0x61, 0x74, 0x79, 0x52, 0x65, 0x66, 0x75, 0x73, 0x65, 0x10, 0xc1, 0x17, 0x12, 0x16, 0x0a, 0x10, + 0x53, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x79, 0x4c, 0x6f, 0x67, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, + 0x10, 0xba, 0xea, 0x01, 0x12, 0x19, 0x0a, 0x13, 0x53, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x79, 0x4d, + 0x61, 0x73, 0x74, 0x65, 0x72, 0x4e, 0x6f, 0x44, 0x69, 0x73, 0x73, 0x10, 0xbb, 0xea, 0x01, 0x12, + 0x17, 0x0a, 0x11, 0x53, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x79, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, + 0x67, 0x4a, 0x6f, 0x62, 0x10, 0xbc, 0xea, 0x01, 0x12, 0x14, 0x0a, 0x0e, 0x53, 0x6f, 0x63, 0x69, + 0x61, 0x74, 0x79, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x10, 0xbd, 0xea, 0x01, 0x12, 0x15, + 0x0a, 0x0f, 0x53, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x79, 0x4e, 0x6f, 0x41, 0x63, 0x63, 0x75, 0x73, + 0x65, 0x10, 0xbe, 0xea, 0x01, 0x12, 0x11, 0x0a, 0x0b, 0x53, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x79, + 0x53, 0x69, 0x67, 0x6e, 0x10, 0xbf, 0xea, 0x01, 0x12, 0x13, 0x0a, 0x0d, 0x53, 0x6f, 0x63, 0x69, + 0x61, 0x74, 0x79, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x10, 0xc0, 0xea, 0x01, 0x12, 0x14, 0x0a, + 0x0e, 0x53, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x79, 0x43, 0x44, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x10, + 0xc1, 0xea, 0x01, 0x12, 0x15, 0x0a, 0x0f, 0x53, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x79, 0x41, 0x70, + 0x70, 0x6c, 0x79, 0x4d, 0x61, 0x78, 0x10, 0xc2, 0xea, 0x01, 0x12, 0x18, 0x0a, 0x12, 0x53, 0x6f, + 0x63, 0x69, 0x61, 0x74, 0x79, 0x53, 0x65, 0x6c, 0x66, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, + 0x10, 0xc3, 0xea, 0x01, 0x12, 0x1d, 0x0a, 0x17, 0x53, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x79, 0x4d, + 0x65, 0x6d, 0x62, 0x65, 0x72, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x10, + 0xc4, 0xea, 0x01, 0x12, 0x1b, 0x0a, 0x15, 0x53, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x79, 0x52, 0x65, + 0x77, 0x61, 0x72, 0x64, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x10, 0xc5, 0xea, 0x01, + 0x12, 0x1a, 0x0a, 0x14, 0x53, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x79, 0x52, 0x65, 0x77, 0x61, 0x72, + 0x64, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x10, 0xc6, 0xea, 0x01, 0x12, 0x15, 0x0a, 0x0f, + 0x53, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x79, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x10, + 0xc7, 0xea, 0x01, 0x12, 0x15, 0x0a, 0x0f, 0x53, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x79, 0x42, 0x65, + 0x6c, 0x6f, 0x6e, 0x67, 0x54, 0x6f, 0x10, 0xc9, 0xea, 0x01, 0x12, 0x14, 0x0a, 0x0e, 0x53, 0x6f, + 0x63, 0x69, 0x61, 0x74, 0x79, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x65, 0x64, 0x10, 0xca, 0xea, 0x01, + 0x12, 0x1b, 0x0a, 0x15, 0x53, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x79, 0x41, 0x70, 0x70, 0x79, 0x4c, + 0x76, 0x4e, 0x6f, 0x45, 0x6e, 0x6f, 0x75, 0x67, 0x68, 0x10, 0xcb, 0xea, 0x01, 0x12, 0x1b, 0x0a, + 0x15, 0x53, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x79, 0x54, 0x61, 0x73, 0x6b, 0x56, 0x61, 0x6c, 0x69, + 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x10, 0xcc, 0xea, 0x01, 0x12, 0x1d, 0x0a, 0x17, 0x53, 0x6f, + 0x63, 0x69, 0x61, 0x74, 0x79, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x4e, 0x6f, 0x45, + 0x6e, 0x6f, 0x75, 0x67, 0x68, 0x10, 0xcd, 0xea, 0x01, 0x12, 0x1c, 0x0a, 0x16, 0x53, 0x6f, 0x63, + 0x69, 0x61, 0x74, 0x79, 0x41, 0x63, 0x69, 0x74, 0x76, 0x69, 0x74, 0x79, 0x52, 0x65, 0x63, 0x65, + 0x69, 0x76, 0x65, 0x10, 0xce, 0xea, 0x01, 0x12, 0x16, 0x0a, 0x10, 0x53, 0x6f, 0x63, 0x69, 0x61, + 0x74, 0x79, 0x44, 0x69, 0x73, 0x6d, 0x69, 0x73, 0x73, 0x65, 0x64, 0x10, 0xcf, 0xea, 0x01, 0x12, + 0x16, 0x0a, 0x10, 0x53, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x45, 0x78, + 0x69, 0x73, 0x74, 0x10, 0xd0, 0xea, 0x01, 0x12, 0x1a, 0x0a, 0x14, 0x53, 0x6f, 0x63, 0x69, 0x61, + 0x74, 0x79, 0x51, 0x75, 0x69, 0x74, 0x4e, 0x6f, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x10, + 0xd1, 0xea, 0x01, 0x12, 0x15, 0x0a, 0x0f, 0x53, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x79, 0x4e, 0x6f, + 0x4d, 0x61, 0x73, 0x74, 0x65, 0x72, 0x10, 0xd2, 0xea, 0x01, 0x12, 0x15, 0x0a, 0x10, 0x41, 0x72, + 0x65, 0x6e, 0x61, 0x54, 0x69, 0x63, 0x6b, 0x65, 0x74, 0x42, 0x75, 0x79, 0x55, 0x70, 0x10, 0x9d, + 0x18, 0x12, 0x19, 0x0a, 0x14, 0x41, 0x72, 0x65, 0x6e, 0x61, 0x54, 0x69, 0x63, 0x6b, 0x65, 0x74, + 0x4e, 0x6f, 0x74, 0x45, 0x6e, 0x6f, 0x75, 0x67, 0x68, 0x10, 0x9e, 0x18, 0x12, 0x17, 0x0a, 0x12, + 0x41, 0x72, 0x65, 0x6e, 0x61, 0x54, 0x69, 0x63, 0x6b, 0x65, 0x74, 0x4e, 0x70, 0x63, 0x49, 0x6e, + 0x43, 0x64, 0x10, 0x9f, 0x18, 0x12, 0x16, 0x0a, 0x11, 0x54, 0x61, 0x6c, 0x65, 0x6e, 0x74, 0x52, + 0x65, 0x70, 0x65, 0x61, 0x74, 0x4c, 0x65, 0x61, 0x72, 0x6e, 0x10, 0x81, 0x19, 0x12, 0x12, 0x0a, + 0x0d, 0x54, 0x61, 0x6c, 0x65, 0x6e, 0x74, 0x45, 0x72, 0x72, 0x44, 0x61, 0x74, 0x61, 0x10, 0x82, + 0x19, 0x12, 0x19, 0x0a, 0x14, 0x54, 0x61, 0x6c, 0x65, 0x6e, 0x74, 0x55, 0x6e, 0x4c, 0x6f, 0x63, + 0x6b, 0x65, 0x72, 0x42, 0x65, 0x66, 0x6f, 0x72, 0x65, 0x10, 0x83, 0x19, 0x12, 0x15, 0x0a, 0x10, + 0x54, 0x61, 0x6c, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x65, 0x74, 0x53, 0x74, 0x61, 0x74, 0x65, + 0x10, 0x84, 0x19, 0x12, 0x10, 0x0a, 0x0b, 0x54, 0x72, 0x6f, 0x6c, 0x6c, 0x42, 0x75, 0x79, 0x4d, + 0x61, 0x78, 0x10, 0xe5, 0x19, 0x12, 0x11, 0x0a, 0x0c, 0x54, 0x72, 0x6f, 0x6c, 0x6c, 0x53, 0x65, + 0x6c, 0x6c, 0x4d, 0x61, 0x78, 0x10, 0xe6, 0x19, 0x12, 0x16, 0x0a, 0x11, 0x54, 0x72, 0x6f, 0x6c, + 0x6c, 0x4d, 0x61, 0x78, 0x53, 0x65, 0x6c, 0x6c, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x10, 0xe7, 0x19, + 0x12, 0x16, 0x0a, 0x11, 0x54, 0x72, 0x6f, 0x6c, 0x6c, 0x4d, 0x61, 0x78, 0x49, 0x74, 0x65, 0x6d, + 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x10, 0xe8, 0x19, 0x12, 0x18, 0x0a, 0x13, 0x54, 0x72, 0x6f, 0x6c, + 0x6c, 0x52, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x10, + 0xe9, 0x19, 0x12, 0x19, 0x0a, 0x14, 0x48, 0x6f, 0x72, 0x6f, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x4e, + 0x6f, 0x74, 0x54, 0x75, 0x72, 0x6e, 0x65, 0x64, 0x4f, 0x6e, 0x10, 0xc9, 0x1a, 0x12, 0x19, 0x0a, + 0x14, 0x48, 0x6f, 0x72, 0x6f, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x52, 0x65, 0x73, 0x74, 0x43, 0x44, + 0x4e, 0x6f, 0x45, 0x6e, 0x64, 0x10, 0xca, 0x1a, 0x12, 0x16, 0x0a, 0x11, 0x50, 0x72, 0x69, 0x76, + 0x69, 0x6c, 0x65, 0x67, 0x65, 0x4e, 0x6f, 0x74, 0x46, 0x6f, 0x75, 0x6e, 0x64, 0x10, 0xad, 0x1b, + 0x12, 0x17, 0x0a, 0x12, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x52, 0x65, 0x6e, + 0x65, 0x77, 0x54, 0x69, 0x6d, 0x65, 0x10, 0xae, 0x1b, 0x12, 0x14, 0x0a, 0x0f, 0x47, 0x72, 0x6f, + 0x77, 0x74, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x10, 0x91, 0x1c, 0x12, + 0x17, 0x0a, 0x12, 0x47, 0x72, 0x6f, 0x77, 0x74, 0x61, 0x73, 0x6b, 0x41, 0x64, 0x76, 0x52, 0x65, + 0x63, 0x65, 0x69, 0x76, 0x65, 0x10, 0x92, 0x1c, 0x12, 0x17, 0x0a, 0x12, 0x50, 0x61, 0x79, 0x42, + 0x75, 0x79, 0x4e, 0x75, 0x6d, 0x4e, 0x6f, 0x74, 0x45, 0x6e, 0x6f, 0x75, 0x67, 0x68, 0x10, 0xf5, + 0x1c, 0x12, 0x14, 0x0a, 0x0f, 0x50, 0x61, 0x79, 0x52, 0x65, 0x6e, 0x65, 0x77, 0x54, 0x69, 0x6d, + 0x65, 0x45, 0x72, 0x72, 0x10, 0xf6, 0x1c, 0x12, 0x14, 0x0a, 0x0f, 0x57, 0x6f, 0x72, 0x6c, 0x64, + 0x74, 0x61, 0x73, 0x6b, 0x46, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x10, 0xd9, 0x1d, 0x12, 0x19, 0x0a, + 0x14, 0x57, 0x6f, 0x72, 0x6c, 0x64, 0x74, 0x61, 0x73, 0x6b, 0x4c, 0x76, 0x4e, 0x6f, 0x74, 0x45, + 0x6e, 0x6f, 0x75, 0x67, 0x68, 0x10, 0xda, 0x1d, 0x12, 0x16, 0x0a, 0x11, 0x57, 0x6f, 0x72, 0x6c, + 0x64, 0x74, 0x61, 0x73, 0x6b, 0x4e, 0x6f, 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x10, 0xdb, 0x1d, + 0x12, 0x18, 0x0a, 0x13, 0x57, 0x6f, 0x72, 0x6c, 0x64, 0x74, 0x61, 0x73, 0x6b, 0x4e, 0x6f, 0x43, + 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x10, 0xdc, 0x1d, 0x12, 0x15, 0x0a, 0x10, 0x57, 0x6f, + 0x72, 0x6c, 0x64, 0x74, 0x61, 0x73, 0x6b, 0x46, 0x69, 0x6e, 0x69, 0x68, 0x65, 0x64, 0x10, 0xdd, + 0x1d, 0x12, 0x1c, 0x0a, 0x17, 0x57, 0x6f, 0x72, 0x6c, 0x64, 0x74, 0x61, 0x73, 0x6b, 0x4c, 0x61, + 0x73, 0x74, 0x55, 0x6e, 0x46, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64, 0x10, 0xde, 0x1d, 0x12, + 0x1e, 0x0a, 0x19, 0x41, 0x63, 0x61, 0x64, 0x65, 0x6d, 0x79, 0x54, 0x61, 0x73, 0x6b, 0x4e, 0x6f, + 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x10, 0xbd, 0x1e, 0x42, + 0x06, 0x5a, 0x04, 0x2e, 0x3b, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( From 18e8b1968a93f92ae4dbc18a5aa8c2e6548e9277 Mon Sep 17 00:00:00 2001 From: liwei1dao Date: Tue, 29 Nov 2022 19:01:28 +0800 Subject: [PATCH 6/7] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E6=9C=88=E5=AD=90?= =?UTF-8?q?=E7=A7=98=E5=A2=83=E6=88=98=E6=96=97=E5=BC=82=E5=B8=B8=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- modules/moonfantasy/api_battle.go | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/modules/moonfantasy/api_battle.go b/modules/moonfantasy/api_battle.go index 730d8e3ad..3d0063837 100644 --- a/modules/moonfantasy/api_battle.go +++ b/modules/moonfantasy/api_battle.go @@ -88,10 +88,10 @@ func (this *apiComp) Battle(session comm.IUserSession, req *pb.MoonfantasyBattle // cd = pb.ErrorCode_MoonfantasyNotEnoughbattles // } // umfantasy.Ticket -= this.module.configure.GetGlobalConf().DreamlandCos - // if boss, err = this.module.configure.GetMonsterById(mdata.Monster); err != nil { - // cd = pb.ErrorCode_ConfigNoFound - // return - // } + if boss, err = this.module.configure.GetMonsterById(mdata.Monster); err != nil { + cd = pb.ErrorCode_ConfigNoFound + return + } if len(mdata.Join) >= int(mdata.Numup) { cd = pb.ErrorCode_MoonfantasyJoinUp From b61ecc23e3954fe31b8bfa42ba5b95bc3adee91c Mon Sep 17 00:00:00 2001 From: meixiongfeng <766881921@qq.com> Date: Tue, 29 Nov 2022 20:17:25 +0800 Subject: [PATCH 7/7] =?UTF-8?q?=E6=B6=88=E6=81=AF=E9=95=BF=E5=BA=A6?= =?UTF-8?q?=EF=BC=8C=E9=94=99=E8=AF=AF=E4=BF=A1=E6=81=AF=E7=BB=9F=E8=AE=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- stress/robot/robot.go | 57 ++++++++++++++++++++---- stress/server/dispose.go | 8 +--- stress/server/golink/websocket_link.go | 16 ++++--- stress/server/statistics/statistics.go | 2 +- stress/server/verify/websokcet_verify.go | 31 ++++++++++++- stress/stress.go | 1 + 6 files changed, 92 insertions(+), 23 deletions(-) diff --git a/stress/robot/robot.go b/stress/robot/robot.go index 70f7fef96..1fec9510e 100644 --- a/stress/robot/robot.go +++ b/stress/robot/robot.go @@ -168,15 +168,15 @@ func (r *RobotFormatter) Format(entry *logrus.Entry) ([]byte, error) { return b.Bytes(), nil } -func (r *Robot) MessageRsp(mainType, subType string) bool { - +func (r *Robot) MessageRsp(mainType, subType string) (bool, int64) { + var byteLen int64 var msg *pb.UserMessage = &pb.UserMessage{} _, data, err := r.ws.ReadMessage() if err != nil { fmt.Printf("readMessage err:%v", err) - return false + return false, byteLen } - + byteLen = int64(len(data)) if err = proto.Unmarshal(data, msg); err != nil { fmt.Printf("unmarshal err:%v", err) } @@ -184,19 +184,19 @@ func (r *Robot) MessageRsp(mainType, subType string) bool { if msg.MainType == "chat" && msg.SubType == "message" { resp := &pb.ChatMessagePush{} if !comm.ProtoUnmarshal(msg, resp) { - return false + return false, byteLen } - return false + return false, byteLen //fmt.Printf("接收消息=====resp:%v\n", resp.Chat) } else if msg.MainType == mainType && msg.SubType == subType { resp := &pb.UserLoginResp{} if !comm.ProtoUnmarshal(msg, resp) { - return false + return false, byteLen } //fmt.Printf("接收消息=====loginData:%v,userExpand:%v\n", resp.Data, resp.Ex) - return true + return true, byteLen } - return false + return false, byteLen } func (r *Robot) CloseHandler() { @@ -212,3 +212,42 @@ func (r *Robot) GetMessagedata() []byte { } return data } +func (r *Robot) Login() error { + msg := &pb.UserMessage{MainType: "user", SubType: "login"} + rsp := &pb.UserLoginReq{ + Account: "user001", + Sid: "dfmxf", + } + msg.Sec = r.BuildSecStr() + if comm.ProtoMarshal(rsp, msg) { + data, _ := proto.Marshal(msg) + return r.ws.WriteMessage(websocket.BinaryMessage, data) + } + return nil +} + +func (r *Robot) Create() bool { + mainType := "user" + subType := "create" + msg := &pb.UserMessage{MainType: mainType, SubType: subType} + rsp := &pb.UserCreateReq{ + NickName: "001", + Figure: 100, + Gender: 0, + } + msg.Sec = r.BuildSecStr() + if comm.ProtoMarshal(rsp, msg) { + data, _ := proto.Marshal(msg) + err := r.ws.WriteMessage(websocket.BinaryMessage, data) + if err != nil { + fmt.Printf("WriteMessage err:%v", err) + } + } + + for { + if b, _ := r.MessageRsp(mainType, subType); b { + return true + } + } + +} diff --git a/stress/server/dispose.go b/stress/server/dispose.go index 069798e55..d0fc936af 100644 --- a/stress/server/dispose.go +++ b/stress/server/dispose.go @@ -29,6 +29,7 @@ func init() { // webSocket model.RegisterVerifyWebSocket("json", verify.WebSocketJSON) + model.RegisterVerifyWebSocket("pb", verify.WebSocketProto) } // Dispose 处理函数 @@ -52,13 +53,6 @@ func Dispose(ctx context.Context, concurrency, totalNumber uint64, request *mode case 1: // 连接以后再启动协程 r := robot.NewRobot(request.URL) - // head := &pb.UserMessage{MainType: "user", SubType: "login"} - // req := &pb.UserLoginReq{ - // Account: "user001", - // Sid: "dfmxf", - // } - // r.SendToClient(head, req) - // r.MessageRsp() go golink.WebSocket(ctx, i, ch, totalNumber, &wg, request, r) case 2: diff --git a/stress/server/golink/websocket_link.go b/stress/server/golink/websocket_link.go index d9e13e95e..a1db213f1 100644 --- a/stress/server/golink/websocket_link.go +++ b/stress/server/golink/websocket_link.go @@ -72,6 +72,7 @@ func webSocketRequest(chanID uint64, ch chan<- *model.RequestResults, i uint64, startTime = time.Now() isSucceed = false errCode = model.HTTPOk + byteLen int64 // 协议传输字节数 ) // 需要发送的数据 head := &pb.UserMessage{MainType: "user", SubType: "login"} @@ -81,18 +82,23 @@ func webSocketRequest(chanID uint64, ch chan<- *model.RequestResults, i uint64, } r.SendToClient(head, req) for { - if r.MessageRsp("user", "login") { + + if b, len := r.MessageRsp("user", "login"); b { + byteLen += len isSucceed = true - errCode, isSucceed = request.GetVerifyWebSocket()(request, "webSocket.json", r.GetMessagedata()) + //errCode, isSucceed = request.GetVerifyWebSocket()(request, "webSocket.pb", r.GetMessagedata()) break } } requestTime := uint64(helper.DiffNano(startTime)) requestResults := &model.RequestResults{ - Time: requestTime, - IsSucceed: isSucceed, - ErrCode: errCode, + ID: "", + ChanID: chanID, + Time: requestTime, + IsSucceed: isSucceed, + ErrCode: errCode, + ReceivedBytes: byteLen, } requestResults.SetID(chanID, i) ch <- requestResults diff --git a/stress/server/statistics/statistics.go b/stress/server/statistics/statistics.go index c38daccdd..ed6fd101d 100644 --- a/stress/server/statistics/statistics.go +++ b/stress/server/statistics/statistics.go @@ -38,7 +38,7 @@ func ReceivingResults(concurrent uint64, ch <-chan *model.RequestResults, wg *sy maxTime uint64 // 最大时长 minTime uint64 // 最小时长 successNum uint64 // 成功处理数,code为0 - failureNum uint64 // 处理失败数,code不为0 + failureNum uint64 // 处理失败数,code不为0 0 chanIDLen int // 并发数 chanIDs = make(map[uint64]bool) receivedBytes int64 diff --git a/stress/server/verify/websokcet_verify.go b/stress/server/verify/websokcet_verify.go index 0427b2751..7f4dff961 100644 --- a/stress/server/verify/websokcet_verify.go +++ b/stress/server/verify/websokcet_verify.go @@ -4,8 +4,11 @@ package verify import ( "encoding/json" "fmt" - + "go_dreamfactory/comm" + "go_dreamfactory/pb" "go_dreamfactory/stress/model" + + "google.golang.org/protobuf/proto" ) // WebSocketResponseJSON 返回数据结构体,返回值为json @@ -47,3 +50,29 @@ func WebSocketJSON(request *model.Request, seq string, msg []byte) (code int, is } return } + +func WebSocketProto(request *model.Request, seq string, data []byte) (code int, isSucceed bool) { + + var msg *pb.UserMessage = &pb.UserMessage{} + + if err := proto.Unmarshal(data, msg); err != nil { + fmt.Printf("unmarshal err:%v", err) + } + //fmt.Printf("接收消息=====msg.MainType = %s,msg.SubType = %s\n", msg.MainType, msg.SubType) + if msg.MainType == "chat" && msg.SubType == "message" { + resp := &pb.ChatMessagePush{} + if !comm.ProtoUnmarshal(msg, resp) { + code = model.ParseError + } + return + //fmt.Printf("接收消息=====resp:%v\n", resp.Chat) + } else if msg.MainType == "user" && msg.SubType == "login" { + resp := &pb.UserLoginResp{} + if !comm.ProtoUnmarshal(msg, resp) { + code = model.ParseError + } + //fmt.Printf("接收消息=====loginData:%v,userExpand:%v\n", resp.Data, resp.Ex) + return + } + return +} diff --git a/stress/stress.go b/stress/stress.go index 515c1004a..88c2bfc16 100644 --- a/stress/stress.go +++ b/stress/stress.go @@ -74,6 +74,7 @@ func main() { totalNumber = 10 debugStr = "false" requestURL = "ws://10.0.0.9:7891/gateway" + verify = "pb" if concurrency == 0 || totalNumber == 0 || (requestURL == "" && path == "") { fmt.Printf("示例: go run main.go -c 1 -n 1 -u https://www.baidu.com/ \n") fmt.Printf("压测地址或curl路径必填 \n")