Эх сурвалжийг харах

fix: 修理升级经验计算方法.

gwang 5 жил өмнө
parent
commit
75c6eeb5d1

+ 20 - 39
Gameserver/Amfphp/Process/HeroProc.php

@@ -68,7 +68,7 @@ class HeroProc {
      * @param Req $req
      */
     static function HeroStageUp($req) {
-        $g = glc();
+        $g = glc();                                                             # 全局配置
         $user = $req->userInfo->game;                                           # user引用
         $huid = $req->paras[0];                                                 # 英雄的UID
         $nextGrade = $req->paras[1];                                            # 下一阶
@@ -113,8 +113,7 @@ class HeroProc {
         $user = $req->userInfo->game;                                           # user引用
         $heroUID = $req->paras[0];                                              # 玩家英雄实例编号
         $costItemId = $req->paras[1];                                           # 消耗的道具ID
-        $costNumber = $req->paras[2];                                           # 消耗的道具数量
-
+        $costNumber = $req->paras[2];                                           # 消耗的道具数量 
         $collectHeros = $user->heros->collectHeros;                             # 1. 检查是否存在要升级的英雄
         if (!$collectHeros) {
             $collectHeros = ObjectInit();
@@ -1073,62 +1072,45 @@ class HeroProc {
      * @param type $req
      */
     static function BuyHeroByCostPieces($req) {
-        $user = $req->userInfo->game; # user引用
+        $user = $req->userInfo->game;                                           # user引用
         $heroModelId = $req->paras[0];
         $costType = $req->paras[1];
         $costMoneyNum = $req->paras[2];
         $piecesId = $req->paras[3];
         $piecesNum = $req->paras[4];
-        #1 检查玩家是否已经拥有此类英雄
+
         $collectHeros = $user->heros->collectHeros;
         if (!$collectHeros) {
             $collectHeros = ObjectInit();
         }
         foreach ($collectHeros as $key => $value) {
             isEditor() and $value = new UserHeroModel();
-            if ($value->typeId == $heroModelId) {
+            if ($value->typeId == $heroModelId) {                               # 检查玩家是否已经拥有此类英雄
                 return Resp::err(ErrCode::hero_existSameHero_err);
             }
         }
-
-
-#2 检查账户余额是否充足
-        $heroCfg = GameConfig::hero_getItem($heroModelId);
+        $heroCfg = GameConfig::hero_getItem($heroModelId);                      # 检查账户余额是否充足
         if (!$heroCfg) {
             return Resp::err(ErrCode::hero_const_no_err);
         }
         if ($heroCfg->isCanBuy == 0) {
             return Resp::err(ErrCode::paras_err);
         }
-#3检查碎片是否对不对
-
         $piecesCfg = GameConfig::segment_getItem($piecesId);                    # 检查需要消耗的碎片的常量配置是否存在
         if (!$piecesCfg) {
             return Resp::err(ErrCode::err_store_itemnoconst);
         }
-        # 5.检查道具的数量是否充足
         $myPacketItems = $user->store->segement;
         $requirePiecesNum = $piecesCfg->mergePrototypeNeedNum;
-        # 检查道具数量是否充足
-        $enoughPieces = false;
         if ($heroModelId == $piecesCfg->prototypeData && $requirePiecesNum == $piecesNum) {
-
-            if (!CommUtil::isPropertyExists($myPacketItems, $piecesId)) {       # 检查碎片
-                $enoughPieces = false;
-            } else {
-                if ($myPacketItems->$piecesId < $requirePiecesNum) {
-                    $enoughPieces = false;
-                } else {
-                    $enoughPieces = true;
-                }
+            if (!CommUtil::isPropertyExists($myPacketItems, $piecesId)#
+                    || $myPacketItems->$piecesId < $requirePiecesNum) {         # 检查碎片道具数量是否充足
+                return Resp::err(ErrCode::hero_godblood_notengoughitem);
             }
         } else {
-            return Resp::err(ErrCode ::paras_err, "error pieces para" . "req" . $piecesId . "_" . $requirePiecesNum . "/" . $piecesId . "_" . $piecesNum);
-        }
-        if ($enoughPieces == true) {
-            
-        } else {
-            return Resp::err(ErrCode::hero_godblood_notengoughitem);
+            return Resp::err(ErrCode ::paras_err, #
+                            "error pieces para" . "req" . $piecesId . "_" .
+                            $requirePiecesNum . "/" . $piecesId . "_" . $piecesNum);
         }
         $bDeal = false;                                                         # 成交
         if ($costType == "cash") {
@@ -1429,8 +1411,7 @@ class HeroProc {
         isEditor() and $targetHero = new UserHeroModel;
         $targetHero = $collectHeros->$heroUID;
 
-        //$strengthconst = GameConfig::heroextra_dengjie_getItem($targetHero->strengthLevel);
-        $maxLevel = $g->Hero_Upgrade_BasicMaxLevel; //$strengthconst->maxLevel;
+        $maxLevel = $g->Hero_Upgrade_BasicMaxLevel;                             # 等级上限 
         if ($targetHero->level >= $maxLevel) {
             return;                                                             # 已达顶级
         }
@@ -1441,14 +1422,14 @@ class HeroProc {
 
         while ($targetHero->xp >= $targetHero->maxXp) {
             if ($targetHero->level < $maxLevel) {                               # 如果未到达最大等级
-                $nowlv = $targetHero->level + 1;
-                $nextlv = $nowlv + 1;
-                $targetHero->level = $nowlv;
-                $lvs = GameConfig::hero_levelexp_getItem($nextlv);
-                if ($nowlv >= $maxLevel) {
-                    $targetHero->xp = $targetHero->maxXp;
+                $targetHero->level += 1;
+                $lvs = GameConfig::hero_levelexp_getItem($targetHero->level);
+                if ($targetHero->level >= $maxLevel) {
+                    $targetHero->xp = $lvs->needExp;
+                } else {
+                    $targetHero->xp -= $lvs->needExp;
                 }
-                $targetHero->maxXp = $lvs->requiredExp;
+                $targetHero->maxXp = $lvs->needExp;
             } else {                                                            # 如果已到达最大等级则仅补齐缺失的经验即可
                 $targetHero->xp = $targetHero->maxXp;                           # 经验不能超过最大值
                 break;

+ 1 - 1
Gameserver/Amfphp/Process/vo/ErrCode.php

@@ -333,7 +333,7 @@ class ErrCode {
     const hero_upgrade_cost_const_no = 3321;
 
     /**
-     * 玩家已经存在一个一样的英雄
+     * 玩家已经存在一个此类的英雄
      */
     const hero_existSameHero_err = 3322;
 

+ 1 - 1
Gameserver/nbproject/private/private.xml

@@ -5,7 +5,7 @@
             <url>Amfphp/Process/HeroProc.php</url>
             <bookmark id="2">
                 <name/>
-                <line>1207</line>
+                <line>1194</line>
                 <key/>
             </bookmark>
         </file>