From d4aa9e4d8dab5de48e899e8bfece67816b169c3e Mon Sep 17 00:00:00 2001 From: meixiongfeng <766881921@qq.com> Date: Thu, 29 Sep 2022 14:51:23 +0800 Subject: [PATCH] =?UTF-8?q?=E6=88=98=E6=96=97=E7=BB=93=E6=9D=9F=E5=8A=A0?= =?UTF-8?q?=E5=8A=A0=E7=BB=8F=E9=AA=8C=E5=8D=87=E7=BA=A7=E4=B9=9F=E6=8E=A8?= =?UTF-8?q?=E9=80=81=E9=9A=8F=E6=9C=BA=E4=BB=BB=E5=8A=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- modules/hero/api_strengthenUplv.go | 36 +++++------------------------- modules/hero/model_hero.go | 36 +++++++++++++++++++++++++----- modules/hero/module.go | 2 +- 3 files changed, 36 insertions(+), 38 deletions(-) diff --git a/modules/hero/api_strengthenUplv.go b/modules/hero/api_strengthenUplv.go index a6ee3e3cd..15d2a45bb 100644 --- a/modules/hero/api_strengthenUplv.go +++ b/modules/hero/api_strengthenUplv.go @@ -3,7 +3,6 @@ package hero import ( "go_dreamfactory/comm" "go_dreamfactory/pb" - "go_dreamfactory/utils" "google.golang.org/protobuf/proto" ) @@ -34,7 +33,6 @@ func (this *apiComp) StrengthenUplv(session comm.IUserSession, req *pb.HeroStren _costExpHero map[string]*pb.DBHero // 消耗英雄 minAddExp int32 _changeHero []*pb.DBHero // 变化的英雄 - iLvUp int32 // 当前升级次数 _mapCost map[string]int32 // ) _costExpHero = make(map[string]*pb.DBHero, 0) @@ -107,11 +105,11 @@ func (this *apiComp) StrengthenUplv(session comm.IUserSession, req *pb.HeroStren } curLv := _hero.Lv // 执行升级逻辑 - newhero, code := this.module.modelHero.AddCardExp(session.GetUserId(), _hero, addExp) // 加经验 + newhero, code := this.module.modelHero.AddCardExp(session, _hero, addExp) // 加经验 if code != pb.ErrorCode_Success { return } - iLvUp = _hero.Lv - curLv + iLvUp := _hero.Lv - curLv // 消耗金币 code = this.module.ModuleUser.AddAttributeValue(session, comm.ResGold, -costGold, true) if code != pb.ErrorCode_Success { // 金币不足 @@ -130,39 +128,15 @@ func (this *apiComp) StrengthenUplv(session comm.IUserSession, req *pb.HeroStren } _changeHero = append(_changeHero, _costExpHero[k]) } - - this.module.modelHero.ChangeHeroProperty(session, _hero) // 重新计算属性值 + if iLvUp > 0 { + this.module.modelHero.ChangeHeroProperty(session, _hero) // 重新计算属性值 + } _changeHero = append(_changeHero, _hero) // 升级后的英雄 hero id 不变 if newhero != nil { _changeHero = append(_changeHero, newhero) // 原来的英雄 只是数量变化了 } - session.SendMsg(string(this.module.GetType()), "change", &pb.HeroChangePush{List: _changeHero}) session.SendMsg(string(this.module.GetType()), StrengthenUplv, &pb.HeroStrengthenUplvResp{Hero: _hero}) - if iLvUp > 0 { // 升级了 统计任务 - this.module.ModuleRtask.SendToRtask(session, comm.Rtype4, utils.ToInt32(_hero.HeroID), _hero.Lv) - this.module.ModuleRtask.SendToRtask(session, comm.Rtype23, 1, _hero.Star, _hero.Lv) - this.module.ModuleRtask.SendToRtask(session, comm.Rtype24, 1) - this.module.ModuleRtask.SendToRtask(session, comm.Rtype29, 1, _hero.Lv, utils.ToInt32(_hero.HeroID)) - cfg := this.module.configure.GetHero(_hero.HeroID) - if cfg != nil { - this.module.ModuleRtask.SendToRtask(session, comm.Rtype32, 1, cfg.Color, _hero.Lv) - this.module.ModuleRtask.SendToRtask(session, comm.Rtype36, 1, cfg.Color, cfg.Job, cfg.Race, _hero.JuexingLv) - //xx英雄满级、共鸣、觉醒至最高状态 - nextAwaken := this.module.configure.GetHeroAwakenConfig(_hero.HeroID, _hero.JuexingLv+1) - if nextAwaken == nil { // 达到满级觉醒 - resonConfig := this.module.configure.GetHeroResonanceConfig(_hero.HeroID, cfg.Star) - if resonConfig.Maxnum == _hero.ResonateNum { // 共鸣满 - if _hero.Lv == _hero.Star*comm.HeroStarLvRatio { - this.module.ModuleRtask.SendToRtask(session, comm.Rtype37, 1, cfg.Color) - this.module.ModuleRtask.SendToRtask(session, comm.Rtype38, 1) - } - } - } - } - this.module.ModuleRtask.SendToRtask(session, comm.Rtype33, 1, 1, _hero.Lv) - } - return } diff --git a/modules/hero/model_hero.go b/modules/hero/model_hero.go index 22a5389e9..2980884fb 100644 --- a/modules/hero/model_hero.go +++ b/modules/hero/model_hero.go @@ -9,6 +9,7 @@ import ( "go_dreamfactory/modules" "go_dreamfactory/pb" cfg "go_dreamfactory/sys/configure/structs" + "go_dreamfactory/utils" "math" "math/big" "reflect" @@ -500,10 +501,11 @@ func (this *ModelHero) cleanData(uid string) { } } -func (this *ModelHero) AddCardExp(uid string, hero *pb.DBHero, exp int32) (newhero *pb.DBHero, code pb.ErrorCode) { +func (this *ModelHero) AddCardExp(session comm.IUserSession, hero *pb.DBHero, exp int32) (newhero *pb.DBHero, code pb.ErrorCode) { var ( - curExp int32 - curLv int32 + preLv int32 //加经验之前的等级 + curExp int32 // 加经验之后的经验 + curLv int32 // 加经验之后的等级 update map[string]interface{} // 属性变化 ) if hero == nil { @@ -513,7 +515,7 @@ func (this *ModelHero) AddCardExp(uid string, hero *pb.DBHero, exp int32) (newhe update = make(map[string]interface{}, 0) curExp = hero.Exp curLv = hero.Lv - + preLv = curLv var maxLv int32 // 校验等级达到上限 maxLv = hero.Star * comm.HeroStarLvRatio _data := this.moduleHero.configure.GetHeroLv(curLv) @@ -566,11 +568,33 @@ func (this *ModelHero) AddCardExp(uid string, hero *pb.DBHero, exp int32) (newhe hero.IsOverlying = false hero.SameCount = 1 this.moduleHero.Debugf("add hero exp :%v", hero) - if err := this.ChangeList(uid, hero.Id, update); err != nil { + if err := this.ChangeList(session.GetUserId(), hero.Id, update); err != nil { this.moduleHero.Errorf("add hero exp failed ChangeList %v", err) code = pb.ErrorCode_DBError } - + if curLv-preLv > 0 { // 升级了 统计任务 + this.moduleHero.ModuleRtask.SendToRtask(session, comm.Rtype4, utils.ToInt32(hero.HeroID), hero.Lv) + this.moduleHero.ModuleRtask.SendToRtask(session, comm.Rtype23, 1, hero.Star, hero.Lv) + this.moduleHero.ModuleRtask.SendToRtask(session, comm.Rtype24, 1) + this.moduleHero.ModuleRtask.SendToRtask(session, comm.Rtype29, 1, hero.Lv, utils.ToInt32(hero.HeroID)) + cfg := this.moduleHero.configure.GetHero(hero.HeroID) + if cfg != nil { + this.moduleHero.ModuleRtask.SendToRtask(session, comm.Rtype32, 1, cfg.Color, hero.Lv) + this.moduleHero.ModuleRtask.SendToRtask(session, comm.Rtype36, 1, cfg.Color, cfg.Job, cfg.Race, hero.JuexingLv) + //xx英雄满级、共鸣、觉醒至最高状态 + nextAwaken := this.moduleHero.configure.GetHeroAwakenConfig(hero.HeroID, hero.JuexingLv+1) + if nextAwaken == nil { // 达到满级觉醒 + resonConfig := this.moduleHero.configure.GetHeroResonanceConfig(hero.HeroID, cfg.Star) + if resonConfig.Maxnum == hero.ResonateNum { // 共鸣满 + if hero.Lv == hero.Star*comm.HeroStarLvRatio { + this.moduleHero.ModuleRtask.SendToRtask(session, comm.Rtype37, 1, cfg.Color) + this.moduleHero.ModuleRtask.SendToRtask(session, comm.Rtype38, 1) + } + } + } + } + this.moduleHero.ModuleRtask.SendToRtask(session, comm.Rtype33, 1, 1, hero.Lv) + } } return } diff --git a/modules/hero/module.go b/modules/hero/module.go index 0e1197d18..871e3e7be 100644 --- a/modules/hero/module.go +++ b/modules/hero/module.go @@ -291,7 +291,7 @@ func (this *Hero) AddHeroExp(session comm.IUserSession, heroObjID string, exp in return } //this.Debug("AddHeroExp", log.Field{Key: "hero", Value: _hero}) - newhero, code = this.modelHero.AddCardExp(session.GetUserId(), _hero, exp) + newhero, code = this.modelHero.AddCardExp(session, _hero, exp) if code != pb.ErrorCode_Success { return }