From 1bd6d9dfafcf5cb31dd55b9a5f8274bb42ac1a04 Mon Sep 17 00:00:00 2001 From: meixiongfeng <766881921@qq.com> Date: Sat, 23 Jul 2022 00:18:46 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A0=86=E5=8F=A0=E6=95=B0=E9=87=8Fbug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- modules/hero/api_strengthenUplv.go | 15 +++++------ modules/hero/model_hero.go | 29 +++++++++++++------- modules/hero/module.go | 43 +++++++++++++++++++++++++----- 3 files changed, 62 insertions(+), 25 deletions(-) diff --git a/modules/hero/api_strengthenUplv.go b/modules/hero/api_strengthenUplv.go index a2266e45a..0131dc749 100644 --- a/modules/hero/api_strengthenUplv.go +++ b/modules/hero/api_strengthenUplv.go @@ -154,7 +154,7 @@ func (this *apiComp) StrengthenUplv(session comm.IUserSession, req *pb.HeroStren } // 执行升级逻辑 - code = this.module.AddCardExp(session.GetUserId(), req.HeroObjID, addExp) // 加经验 + newhero, oldhero, code := this.module.AddCardExp(session.GetUserId(), req.HeroObjID, addExp) // 加经验 if code != pb.ErrorCode_Success { // 升级失败资源回退 code = this.module.DispenseRes(session, res, true) @@ -172,17 +172,16 @@ func (this *apiComp) StrengthenUplv(session comm.IUserSession, req *pb.HeroStren _costHero = append(_costHero, costHero) } - m, err1 := this.module.modelHero.PushHeroProperty(session, _hero.Id) // 推送属性变化 + m, err1 := this.module.modelHero.PushHeroProperty(session, oldhero.Id) // 推送属性变化 if err1 != nil { this.module.Errorf("PushHeroProperty err!") } - _hero.Lv = curLv - _hero.Exp = curExp - _hero.Property = m - _costHero = append(_costHero, _hero) + + oldhero.Property = m + _costHero = append(_costHero, oldhero) + _costHero = append(_costHero, newhero) session.SendMsg(string(this.module.GetType()), "change", &pb.HeroChangePush{List: _costHero}) - //session.SendMsg(string(this.module.GetType()), "change", &pb.HeroChangePush{List: []*pb.DBHero{_hero}}) - session.SendMsg(string(this.module.GetType()), StrengthenUplv, &pb.HeroStrengthenUplvResp{Hero: _hero}) + session.SendMsg(string(this.module.GetType()), StrengthenUplv, &pb.HeroStrengthenUplvResp{Hero: newhero}) if iLvUp > 0 { // 升级了 统计任务 this.module.ModuleTask.SendToTask(session, comm.TaskTypeUpHeroLevel, &pb.TaskParam{Second: iLvUp}) } diff --git a/modules/hero/model_hero.go b/modules/hero/model_hero.go index b0b55681f..d006933c8 100644 --- a/modules/hero/model_hero.go +++ b/modules/hero/model_hero.go @@ -283,12 +283,20 @@ func (this *ModelHero) setEquipment(hero *pb.DBHero) (newHero *pb.DBHero, err er if len(hero.EquipID) == 0 { return } - + var ( + curSameCount int32 + ) update := make(map[string]interface{}) if hero.IsOverlying && hero.SameCount > 1 { - hero.SameCount -= 1 - update["sameCount"] = hero.SameCount - update["isOverlying"] = false + curSameCount = hero.SameCount - 1 + hero.SameCount = 1 + hero.IsOverlying = false + update["suiteId"] = hero.SuiteId + update["suiteExtId"] = hero.SuiteExtId + update["equipID"] = hero.EquipID + update["isoverlying"] = false + + update["sameCount"] = 1 if err = this.modifyHeroData(hero.Uid, hero.Id, update); err != nil { this.moduleHero.Errorf("%v", err) return @@ -299,12 +307,13 @@ func (this *ModelHero) setEquipment(hero *pb.DBHero) (newHero *pb.DBHero, err er this.moduleHero.Errorf("%v", err) return } - newHero.EquipID = hero.EquipID - update["suiteId"] = hero.SuiteId - update["suiteExtId"] = hero.SuiteExtId - update["equipID"] = hero.EquipID - update["isoverlying"] = false - this.modifyHeroData(newHero.Uid, newHero.Id, update) + update1 := make(map[string]interface{}) + + update1["sameCount"] = curSameCount + update1["isoverlying"] = true + newHero.IsOverlying = true + newHero.SameCount = curSameCount + this.modifyHeroData(newHero.Uid, newHero.Id, update1) } else { update["equipID"] = hero.EquipID update["isoverlying"] = false diff --git a/modules/hero/module.go b/modules/hero/module.go index fabdd2dae..d10f07b38 100644 --- a/modules/hero/module.go +++ b/modules/hero/module.go @@ -112,10 +112,11 @@ func (this *Hero) QueryHeroAmount(uId string, heroCfgId int32) (amount uint32) { } // 给指定英雄加经验 -func (this *Hero) AddCardExp(uid string, heroId string, exp int32) (code pb.ErrorCode) { +func (this *Hero) AddCardExp(uid string, heroId string, exp int32) (newhero *pb.DBHero, oldhero *pb.DBHero, code pb.ErrorCode) { var ( curExp int32 curLv int32 + err1 error ) _hero, err := this.GetHero(uid, heroId) // 获取英雄信息 if err != 0 { @@ -165,17 +166,45 @@ func (this *Hero) AddCardExp(uid string, heroId string, exp int32) (code pb.Erro data["def"] = int32(nowConfig.Def - preConfig.Def) this.modelHero.mergeMainProperty(uid, heroId, data) } - - update := map[string]interface{}{ + _hero.SameCount -= 1 + curCount := _hero.SameCount + if _hero.SameCount == 0 { + this.modelHero.consumeHeroCard(uid, _hero.Id, 1) + } + // else { + // update := map[string]interface{}{ + // "sameCount": _hero.SameCount, + // } + // if err := this.modelHero.modifyHeroData(uid, heroId, update); err != nil { + // code = pb.ErrorCode_DBError + // } // 修改英雄数据 + // } + // 新增英雄 + update1 := map[string]interface{}{ "lv": curLv, "exp": curExp, "isOverlying": false, + "sameCount": 1, } - - if err := this.modelHero.modifyHeroData(uid, heroId, update); err != nil { + newhero, err1 = this.modelHero.createOneHero(uid, _hero.HeroID) + if err1 != nil { code = pb.ErrorCode_DBError - } // 修改英雄数据 - + } + _hero.Lv = curLv + _hero.Exp = curExp + _hero.IsOverlying = false + _hero.SameCount = 1 + newhero.SameCount = curCount + update := map[string]interface{}{ + "sameCount": curCount, + } + if err := this.modelHero.modifyHeroData(uid, _hero.Id, update); err != nil { + code = pb.ErrorCode_DBError + } + if err := this.modelHero.modifyHeroData(uid, newhero.Id, update1); err != nil { + code = pb.ErrorCode_DBError + } + oldhero = _hero } else { code = pb.ErrorCode_HeroNoExist return