英雄达到最大等级 时候取当前经验有bug
This commit is contained in:
parent
0bff578ca9
commit
9310055d61
@ -113,47 +113,6 @@ func (this *apiComp) StrengthenUplv(session comm.IUserSession, req *pb.HeroStren
|
|||||||
return
|
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)
|
this.module.Debugf("升级后当前等级: %d,经验: %d,需要消耗的金币: %d,增加的经验: %d", curLv, curExp, costGold, addExp)
|
||||||
|
|
||||||
// 执行升级逻辑
|
// 执行升级逻辑
|
||||||
|
@ -518,7 +518,12 @@ func (this *ModelHero) AddCardExp(uid string, hero *pb.DBHero, exp int32) (newhe
|
|||||||
maxLv = hero.Star * comm.HeroStarLvRatio
|
maxLv = hero.Star * comm.HeroStarLvRatio
|
||||||
_data := this.moduleHero.configure.GetHeroLv(curLv)
|
_data := this.moduleHero.configure.GetHeroLv(curLv)
|
||||||
if _data != nil {
|
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
|
code = pb.ErrorCode_HeroMaxLv
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@ -527,15 +532,15 @@ func (this *ModelHero) AddCardExp(uid string, hero *pb.DBHero, exp int32) (newhe
|
|||||||
if len(_data.Heroexp) == 0 {
|
if len(_data.Heroexp) == 0 {
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
if maxLv <= curLv && curExp >= _data.Heroexp[0].N { // 设置最大经验和等级
|
if maxLv <= curLv && curExp >= maxExp { // 设置最大经验和等级
|
||||||
curLv = maxLv
|
curLv = maxLv
|
||||||
curExp = _data.Heroexp[0].N
|
curExp = maxExp
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
if _data.Heroexp[0].N > curExp { // 经验不够升级则不能执行升级操作
|
if maxExp > curExp { // 经验不够升级则不能执行升级操作
|
||||||
break
|
break
|
||||||
} else { // 升级操作
|
} else { // 升级操作
|
||||||
curExp -= _data.Heroexp[0].N
|
curExp -= maxExp
|
||||||
curLv += 1 // 经验够了 那么等级+1
|
curLv += 1 // 经验够了 那么等级+1
|
||||||
_data = this.moduleHero.configure.GetHeroLv(curLv)
|
_data = this.moduleHero.configure.GetHeroLv(curLv)
|
||||||
if _data == nil { // 等级加失败了 回到原来的等级
|
if _data == nil { // 等级加失败了 回到原来的等级
|
||||||
|
Loading…
Reference in New Issue
Block a user