英雄一键升级
This commit is contained in:
parent
0b446c3559
commit
e14e4563fb
@ -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
|
||||
}
|
||||
|
||||
// 校验金币消耗
|
||||
|
@ -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
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user