|
@@ -207,7 +207,7 @@ class HeroProc {
|
|
|
/**
|
|
|
* [6301] 英雄升级 - 消耗经验道具,获得经验(按照经验提升等级)
|
|
|
*/
|
|
|
- static function HeroLevelUpCostExpItem() {
|
|
|
+ static function HeroLevelUpCostExpItem() {
|
|
|
list($huid, $costItemId, $costNumber) = req()->paras; # 提取参数: 玩家英雄实例编号, 消耗的道具ID, 消耗的道具数量
|
|
|
$user = req()->userInfo->game; # user引用
|
|
|
$collectHeros = $user->heros->collectHeros; # 1. 检查是否存在要升级的英雄
|
|
@@ -215,7 +215,7 @@ class HeroProc {
|
|
|
my_Assert(is_int($costNumber) && $costNumber >= 1, ErrCode::paras_err); # 参数合法性判断
|
|
|
my_Assert(CommUtil::isPropertyExists($collectHeros, $huid), ErrCode::hero_no); # 玩家拥有此英雄
|
|
|
$targetHero = new Ins_UserHero($collectHeros->$huid); #
|
|
|
- my_Assert($targetHero->HeroCanLevelUp(), "请提升指挥官等级."); # 2. 检查玩家等级是否可以继续升级, Ps. 全局限制 + 指挥官等级限制
|
|
|
+ //my_Assert($targetHero->HeroCanLevelUp(), "请提升指挥官等级."); # 2. 检查玩家等级是否可以继续升级, Ps. 全局限制 + 指挥官等级限制
|
|
|
$myPacketItems = $user->store->items; # 检查道具的数量,在背包中是否充足
|
|
|
my_Assert(CommUtil::isPropertyExists($myPacketItems, $costItemId), ErrCode::store_itemnotenough); #
|
|
|
my_Assert($myPacketItems->$costItemId >= $costNumber, ErrCode::store_itemnotenough);
|
|
@@ -231,10 +231,10 @@ class HeroProc {
|
|
|
$totalEXP += $costItemConst->baseExp;
|
|
|
$heroConst = GameConfig::hero_getItem($targetHero->typeId); # 英雄模板数据
|
|
|
my_Assert(null != $heroConst, ErrCode::err_const_no, "英雄 模板数据");
|
|
|
- if ($costItemConst->element != 0 # # 相同元素加成
|
|
|
- && $costItemConst->element == $heroConst->element) {
|
|
|
- $totalEXP += $costItemConst->extraExp;
|
|
|
- }
|
|
|
+// if ($costItemConst->element != 0 # # 相同元素加成
|
|
|
+// && $costItemConst->element == $heroConst->element) {
|
|
|
+// $totalEXP += $costItemConst->extraExp;
|
|
|
+// }
|
|
|
$totalEXP *= $costNumber; # 消耗N个道具
|
|
|
$targetHero = self:: HeroAddEXP($huid, $totalEXP); # 获得经验
|
|
|
$myPacketItems->$costItemId -= $costNumber; # 消耗道具
|
|
@@ -271,7 +271,7 @@ class HeroProc {
|
|
|
my_Assert($curStar < 5, ErrCode::hero_yanling_canotTupo);
|
|
|
|
|
|
$mo = GameConfig::heroextra_level_tupo_getItem($typeId, $curStar+1);
|
|
|
- my_Assert($mo == null, ErrCode::err_const_no);
|
|
|
+ my_Assert($mo != null, ErrCode::err_const_no);
|
|
|
|
|
|
my_Assert($collectHeros->$uid->level >= $mo->starlimitLv, ErrCode::hero_yanling_canotTupo);
|
|
|
my_Assert($user->baseInfo->level >= $mo->userlvLimit, ErrCode::hero_yanling_canotTupo);
|
|
@@ -585,29 +585,46 @@ class HeroProc {
|
|
|
my_default_Obj($collectHeros);
|
|
|
my_Assert(CommUtil::isPropertyExists($collectHeros, $heroUID), ErrCode::hero_no); # 要升级的英雄不存在
|
|
|
$targetHero = new Ins_UserHero($collectHeros->$heroUID); # 英雄对象
|
|
|
- $playerLimit = GameConfig::playerlevel_getItem(ctx()->base()->level)->hero_max_level;
|
|
|
- $maxLevel = min(glc()->Hero_Upgrade_BasicMaxLevel, $playerLimit); # 最大等级= max(英雄最高等级上限,玩家等级限制的上限)
|
|
|
- if ($targetHero->level >= $maxLevel) {
|
|
|
- return; # 已达顶级
|
|
|
- }
|
|
|
+// $playerLimit = GameConfig::playerlevel_getItem(ctx()->base()->level)->hero_max_level;
|
|
|
+// $maxLevel = min(glc()->Hero_Upgrade_BasicMaxLevel, $playerLimit); # 最大等级= max(英雄最高等级上限,玩家等级限制的上限)
|
|
|
+// if ($targetHero->level >= $maxLevel) {
|
|
|
+// return; # 已达顶级
|
|
|
+// }
|
|
|
$lvs = GameConfig::hero_levelexp_getItem($targetHero->level + 1);
|
|
|
- $targetHero->xp += $totalEXP;
|
|
|
+ $targetHero->xp += $totalEXP;
|
|
|
my_Assert($targetHero->xp >= 0, "[" . $req->uid . "] : HeroLevelUpgrade Exp is negative!");
|
|
|
$initLevel = $targetHero->level;
|
|
|
- while ($targetHero->xp >= $lvs->needExp) {
|
|
|
- if ($targetHero->level < $maxLevel) { # 如果未到达最大等级
|
|
|
- $targetHero->level += 1;
|
|
|
- if ($targetHero->level >= $maxLevel) {
|
|
|
- $targetHero->xp = $lvs->needExp;
|
|
|
- } else {
|
|
|
- $targetHero->xp -= $lvs->needExp;
|
|
|
- }
|
|
|
- $lvs = GameConfig::hero_levelexp_getItem($targetHero->level + 1);
|
|
|
- } else { # 如果已到达最大等级则仅补齐缺失的经验即可
|
|
|
- $targetHero->xp = $targetHero->maxXp; # 经验不能超过最大值
|
|
|
+ $curLv = 0;
|
|
|
+ $heroLvDic = GameConfig::hero_levelexp();
|
|
|
+ $f = (array) $heroLvDic;
|
|
|
+ ksort($f);
|
|
|
+ foreach ($f as $lv => $mo) {
|
|
|
+ if($targetHero->xp < $mo->needExp){
|
|
|
+ $curLv = $lv-1;
|
|
|
+ break;
|
|
|
+ }
|
|
|
+
|
|
|
+ if($lv>=glc()->Hero_Upgrade_BasicMaxLevel){
|
|
|
+ $curLv = glc()->Hero_Upgrade_BasicMaxLevel;
|
|
|
break;
|
|
|
}
|
|
|
- } // end while
|
|
|
+ }
|
|
|
+ $targetHero->level = $curLv;
|
|
|
+
|
|
|
+// while ($targetHero->xp >= $lvs->needExp) {
|
|
|
+// if ($targetHero->level < $maxLevel) { # 如果未到达最大等级
|
|
|
+// $targetHero->level += 1;
|
|
|
+// if ($targetHero->level >= $maxLevel) {
|
|
|
+// $targetHero->xp = $lvs->needExp;
|
|
|
+// } else {
|
|
|
+// $targetHero->xp -= $lvs->needExp;
|
|
|
+// }
|
|
|
+// $lvs = GameConfig::hero_levelexp_getItem($targetHero->level + 1);
|
|
|
+// } else { # 如果已到达最大等级则仅补齐缺失的经验即可
|
|
|
+// $targetHero->xp = $targetHero->maxXp; # 经验不能超过最大值
|
|
|
+// break;
|
|
|
+// }
|
|
|
+// } // end while
|
|
|
my_Assert($targetHero->xp >= 0, "[" . $req->uid . "] : HeroLevelUpgrade Exp is negative!");
|
|
|
$collectHeros->$heroUID = $targetHero; # 更新英雄的数据
|
|
|
if ($targetHero->level != $initLevel) {
|