英雄达到最大等级 时候取当前经验有bug

This commit is contained in:
meixiongfeng 2022-09-28 21:13:10 +08:00
parent 0bff578ca9
commit 9310055d61
2 changed files with 10 additions and 46 deletions

View File

@ -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)
// 执行升级逻辑

View File

@ -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 { // 等级加失败了 回到原来的等级