diff --git a/modules/hero/api_strengthenUplv.go b/modules/hero/api_strengthenUplv.go index fe7a428f5..22b82c146 100644 --- a/modules/hero/api_strengthenUplv.go +++ b/modules/hero/api_strengthenUplv.go @@ -113,47 +113,6 @@ func (this *apiComp) StrengthenUplv(session comm.IUserSession, req *pb.HeroStren return } - _data := this.module.configure.GetHeroLv(curLv) - if _data != nil { - if maxLv == curLv && curExp >= _data.Heroexp[0].N { // 加经验之前校验是否达到最大等级 - code = pb.ErrorCode_HeroMaxLv - return - } - curExp += addExp // 先把经验加上 - for { - if len(_data.Heroexp) == 0 { - break - } - if maxLv <= curLv && curExp >= _data.Heroexp[0].N { // 设置最大经验和等级 - // 超过的经验值 - leftExp := curExp - _data.Heroexp[0].N - this.module.Debugf("经验溢出%d", leftExp) - if leftExp >= minAddExp { - code = pb.ErrorCode_HeroAddMaxExp - return - } - curLv = maxLv - curExp = _data.Heroexp[0].N - break - } - if len(_data.Heroexp) == 0 || _data.Heroexp[0].N > curExp { // 经验不够升级则不能执行升级操作 - break - } else { // 升级操作 - curExp -= _data.Heroexp[0].N - curLv += 1 // 经验够了 那么等级+1 - _data = this.module.configure.GetHeroLv(curLv) - if _data == nil { // 等级加失败了 回到原来的等级 - curLv -= 1 - break - } - iLvUp++ - } - } - } else { - code = pb.ErrorCode_HeroNoExist - return - } - this.module.Debugf("升级后当前等级: %d,经验: %d,需要消耗的金币: %d,增加的经验: %d", curLv, curExp, costGold, addExp) // 执行升级逻辑 diff --git a/modules/hero/model_hero.go b/modules/hero/model_hero.go index 9155ba429..ad482067c 100644 --- a/modules/hero/model_hero.go +++ b/modules/hero/model_hero.go @@ -518,7 +518,12 @@ func (this *ModelHero) AddCardExp(uid string, hero *pb.DBHero, exp int32) (newhe maxLv = hero.Star * comm.HeroStarLvRatio _data := this.moduleHero.configure.GetHeroLv(curLv) if _data != nil { - if maxLv <= curLv && curExp >= _data.Heroexp[0].N { // 加经验之前校验是否达到最大等级 + var maxExp int32 + if _data.Heroexp != nil && len(_data.Heroexp) != 0 { + maxExp = _data.Heroexp[0].N + } + + if maxLv <= curLv && curExp >= maxExp { // 加经验之前校验是否达到最大等级 code = pb.ErrorCode_HeroMaxLv return } @@ -527,15 +532,15 @@ func (this *ModelHero) AddCardExp(uid string, hero *pb.DBHero, exp int32) (newhe if len(_data.Heroexp) == 0 { break } - if maxLv <= curLv && curExp >= _data.Heroexp[0].N { // 设置最大经验和等级 + if maxLv <= curLv && curExp >= maxExp { // 设置最大经验和等级 curLv = maxLv - curExp = _data.Heroexp[0].N + curExp = maxExp break } - if _data.Heroexp[0].N > curExp { // 经验不够升级则不能执行升级操作 + if maxExp > curExp { // 经验不够升级则不能执行升级操作 break } else { // 升级操作 - curExp -= _data.Heroexp[0].N + curExp -= maxExp curLv += 1 // 经验够了 那么等级+1 _data = this.moduleHero.configure.GetHeroLv(curLv) if _data == nil { // 等级加失败了 回到原来的等级