英雄一键升级

This commit is contained in:
meixiongfeng 2022-06-28 14:25:51 +08:00
parent 0b446c3559
commit e14e4563fb
2 changed files with 55 additions and 47 deletions

View File

@ -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 { // 升级操作
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 maxLv >= _hero.Lv && curExp >= _data.Heroexp[0].N { // 设置最大经验和等级
curLv = maxLv
curExp = _data.Heroexp[0].N
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
}
// 校验金币消耗

View File

@ -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
var maxLv int32 // 校验等级达到上限
maxLv = _hero.Star * comm.HeroStarLvRatio
if maxLv >= _hero.Lv && _hero.Exp >= curExp { // 设置最大经验和等级
_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 { // 大于下一级经验
if _data.Heroexp[0].N > curExp { // 经验不够升级则不能执行升级操作
break
} else { // 升级操作
curExp -= _data.Heroexp[0].N
curLv += 1 // 经验够了 那么等级+1
if _data := this.configure_comp.GetHeroLv(curLv); _data != nil {
if _data.Heroexp[0].N > curExp { // 经验不足则 直接返回
break
}
} else {
break
}
}
} else {
_data = this.configure_comp.GetHeroLv(curLv)
if _data == nil { // 等级加失败了 回到原来的等级
curLv -= 1
break
}
}
}
_hero.Lv = curLv
_hero.Exp = curExp
// 校验是否达到最大等级
this.ModifyHero(_hero) // 修改英雄数据
} else {
code = pb.ErrorCode_HeroNoExist
return
}
return
}