From e14e4563fb5529d9a0c6ff611092fb4d7b1405b9 Mon Sep 17 00:00:00 2001 From: meixiongfeng <766881921@qq.com> Date: Tue, 28 Jun 2022 14:25:51 +0800 Subject: [PATCH] =?UTF-8?q?=E8=8B=B1=E9=9B=84=E4=B8=80=E9=94=AE=E5=8D=87?= =?UTF-8?q?=E7=BA=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- modules/hero/api_heroStrengthen.go | 49 ++++++++++++++------------- modules/hero/module.go | 53 ++++++++++++++++-------------- 2 files changed, 55 insertions(+), 47 deletions(-) diff --git a/modules/hero/api_heroStrengthen.go b/modules/hero/api_heroStrengthen.go index b191174f9..53a346533 100644 --- a/modules/hero/api_heroStrengthen.go +++ b/modules/hero/api_heroStrengthen.go @@ -55,33 +55,38 @@ func (this *Api_Comp) StrengthenUplv_Check(session comm.IUserSession, req *pb.He return } - if _data := this.moduleHero.configure_comp.GetHeroLv(curLv); _data != nil { - // atn["a"] = _data.Gold[0].A - // atn["t"] = _data.Gold[0].T - // atn["n"] = _data.Gold[0].N - - costGold += _data.Gold[0].N + var maxLv int32 // 校验等级达到上限 + maxLv = _hero.Star * comm.HeroStarLvRatio + _data := this.moduleHero.configure_comp.GetHeroLv(curLv) + if _data != nil { + if maxLv >= _hero.Lv && curExp >= _data.Heroexp[0].N { // 加经验之前校验是否达到最大等级 + code.Code = pb.ErrorCode_HeroMaxLv + return + } curExp += addExp // 先把经验加上 - // 当前升级需要消耗的经验 - for { // 死循环判断一键升级 - if _data.Heroexp[0].N <= curExp { // 升级操作 + for { // 死循环判断一键升级 + + if maxLv >= _hero.Lv && curExp >= _data.Heroexp[0].N { // 设置最大经验和等级 + curLv = maxLv curExp = _data.Heroexp[0].N - if curExp >= 0 { // 大于下一级经验 - curLv += 1 // 经验够了 那么等级+1 - if _data := this.moduleHero.configure_comp.GetHeroLv(curLv); _data != nil { - if _data.Heroexp[0].N > curExp { // 经验不足则 直接返回 - break - } - costGold += _data.Gold[0].N - } else { - break - } - } - } else { break } + if _data.Heroexp[0].N > curExp { // 经验不够升级则不能执行升级操作 + break + } else { // 升级操作 + curExp -= _data.Heroexp[0].N + curLv += 1 // 经验够了 那么等级+1 + _data = this.moduleHero.configure_comp.GetHeroLv(curLv) + if _data == nil { // 等级加失败了 回到原来的等级 + curLv -= 1 + break + } + costGold += _data.Gold[0].N // 统计 升级需要消耗金币的数量 + } } - + } else { + code.Code = pb.ErrorCode_HeroNoExist + return } // 校验金币消耗 diff --git a/modules/hero/module.go b/modules/hero/module.go index 9658c5bf3..e21367680 100644 --- a/modules/hero/module.go +++ b/modules/hero/module.go @@ -123,40 +123,43 @@ func (this *Hero) AddCardExp(uid string, cardid string, exp int32) (code pb.Erro curExp = _hero.Exp curLv = _hero.Lv - curExp += exp // 先把经验加上 - if _data := this.configure_comp.GetHeroLv(curLv); _data != nil { - for { // 死循环判断一键升级 - // 校验等级达到上限 - var maxLv int32 - maxLv = _hero.Star * comm.HeroStarLvRatio - if maxLv >= _hero.Lv && _hero.Exp >= curExp { // 设置最大经验和等级 + var maxLv int32 // 校验等级达到上限 + maxLv = _hero.Star * comm.HeroStarLvRatio + _data := this.configure_comp.GetHeroLv(curLv) + if _data != nil { + if maxLv >= _hero.Lv && curExp >= _data.Heroexp[0].N { // 加经验之前校验是否达到最大等级 + code = pb.ErrorCode_HeroMaxLv + return + } + curExp += exp // 先把经验加上 + for { // 死循环判断一键升级 + + if maxLv >= _hero.Lv && curExp >= _data.Heroexp[0].N { // 设置最大经验和等级 curLv = maxLv curExp = _data.Heroexp[0].N break } - if _data.Heroexp[0].N <= curExp { // 升级操作 - curExp = _data.Heroexp[0].N - if curExp >= 0 { // 大于下一级经验 - curLv += 1 // 经验够了 那么等级+1 - if _data := this.configure_comp.GetHeroLv(curLv); _data != nil { - if _data.Heroexp[0].N > curExp { // 经验不足则 直接返回 - break - } - } else { - break - } - } - } else { + if _data.Heroexp[0].N > curExp { // 经验不够升级则不能执行升级操作 break + } else { // 升级操作 + curExp -= _data.Heroexp[0].N + curLv += 1 // 经验够了 那么等级+1 + _data = this.configure_comp.GetHeroLv(curLv) + if _data == nil { // 等级加失败了 回到原来的等级 + curLv -= 1 + break + } } } - } - _hero.Lv = curLv - _hero.Exp = curExp - // 校验是否达到最大等级 + _hero.Lv = curLv + _hero.Exp = curExp - this.ModifyHero(_hero) // 修改英雄数据 + this.ModifyHero(_hero) // 修改英雄数据 + } else { + code = pb.ErrorCode_HeroNoExist + return + } return }