gwang 5 anni fa
parent
commit
8dd4eeb3d7

+ 0 - 51
Gameserver/Amfphp/base/Resp.php

@@ -86,55 +86,4 @@ class Resp extends Object_ext {
         return $resp;
     }
 
-//
-// <editor-fold defaultstate="collapsed" desc="assert">
-
-    /**
-     * 逻辑断言,不受系统断言状态影响,可以用于生产环境的简单判断,比如:参数非法,参数缺失等
-     * @param type $condition
-     * @param int/string $err 如果是int值,则当作Errcode处理,否则当作字符串处理
-     */
-    static function assert($condition, $err) {
-        if (!$condition) {                                                      # 断言失败
-            if (is_int($err)) {
-                Err($err, "Assert faild!");
-            } else {
-                Err(ErrCode::err_assert, $err);
-            }
-//            trigger_error($err, E_USER_ERROR);                                # 触发错误
-        }
-    }
-
-    /**
-     * 接管系统的断言失败处理函数(调试用,若要检查参数是否完整,请用Resp::assert())
-     * 注意:方法内部依赖于GAME_ONLINE标志,若为内网调试则打开断言,
-     *       若为线上环境则关闭断言(提升安全性和部分性能)
-     */
-    static function cover_assert_handler() {
-        assert_options(ASSERT_ACTIVE, !GAME_ONLINE);                            # 设置断言标志
-        assert_options(ASSERT_BAIL, true);
-        assert_options(ASSERT_WARNING, false);
-        assert_options(ASSERT_CALLBACK, array('Resp', 'my_assert_handler'));    # 设置回调函数
-    }
-
-    /**
-     *  断言处理函数
-     * @param type $file
-     * @param type $line
-     * @param type $code
-     * @param type $desc
-     */
-    private static function my_assert_handler($file, $line, $code, $desc) {
-        $msg = "<hr>Assertion Failed:
-  File '$file'<br />
-  Line '$line'<br />
-  Code '$code'<br />
-  Desc '{$desc}'<br />
-  <hr />";
-        Err(Err::err_assert, $msg);                                             # 给客户端返回值
-//        trigger_error($msg, E_USER_ERROR);                                    # 抛出一个err
-    }
-
-// </editor-fold>
-//
 }

+ 10 - 0
Gameserver/Amfphp/main.php

@@ -145,9 +145,19 @@ function Err($err, $msg = "") {
         Index::$debugMsg .= '<br/>内存分配:' . number_format(memory_get_peak_usage() / 1024) . 'kb,';
         Index::$debugMsg .= '内存占用:' . number_format(memory_get_usage() / 1024) . 'kb';  # 内存使用数量(kb)
     }
+    CLog::err("发生错误直接中断逻辑执行.");
     exit(Index::OverPass(Resp::err($err, $msg)));                               # 直接返回错误信息  
 }
 
+/**
+ * 断言快速访问
+ * @param bool $condition
+ * @param int/str $err
+ */
+function my_Assert($condition, $err) {
+    DebugHelper::assert($condition, $err);
+}
+
 /**
  * 功能已过期 
  */

+ 34 - 59
Gameserver/Amfphp/model/User/UserGameModel.php

@@ -176,9 +176,7 @@ class UserGameModel extends Object_ext {
      * @return \UserGameModel
      */
     public function initialize() {
-        if (!GameConfig::primordial_data()) {
-            throw new \Exception("常量错误!");
-        }
+        my_Assert(GameConfig::primordial_data(), "找不到账号初始化数据");         # 防御
         $this->gold = GameConfig::primordial_data()->User_Gold;
         $this->cash = GameConfig::primordial_data()->User_Cash;
         $this->xp = GameConfig::primordial_data()->User_XP;
@@ -225,11 +223,10 @@ class UserGameModel extends Object_ext {
      * @param int $amt 数量
      */
     static public function set_Cash($user, $amt) {
-        if ($amt > 0 && isset($user) && isset($user->cash)) {
-            $user->cash = $amt;
-            return true;
-        }
-        return false;
+        my_Assert($amt >= 0, "数量小于0");
+        my_Assert($user, "user为空");
+        my_Assert(isset($user->cash), "找不到cash字段");
+        $user->cash = $amt;                                                     # 实际逻辑
     }
 
     /**
@@ -319,13 +316,9 @@ class UserGameModel extends Object_ext {
      * @return type
      */
     static function Add_Cash($user, $amt) {
-        // 防御代码,异常情况记录日志后直接返回
-        if (!$user || $amt <= 0) {
-            CLog::err("增加用户钻石出现错误: $user, $amt", "UserGameModel");
-            return ErrCode::err_innerfault;
-        }
+        my_Assert($user, "user为空");
+        my_Assert($amt >= 0, "amt值为负");
         $user->cash += $amt;
-        return ErrCode::ok;
     }
 
     /**
@@ -335,13 +328,9 @@ class UserGameModel extends Object_ext {
      * @return type
      */
     static function Add_FriendPoint($user, $amt) {
-        // 防御代码,异常情况记录日志后直接返回
-        if (!$user || $amt <= 0) {
-            CLog::err("增加用户友情点出现错误: $user, $amt", "UserGameModel");
-            return ErrCode::err_innerfault;
-        }
-        $user->friendPoint += $amt;
-        return ErrCode::ok;
+        my_Assert($user, "user为空");
+        my_Assert($amt >= 0, "amt值为负");
+        $user->friendPoint += $amt;                                             # 业务逻辑
     }
 
     /**
@@ -349,42 +338,33 @@ class UserGameModel extends Object_ext {
      * @param Req $req Description
      * @param int $amt
      */
-    static function Add_Exp($req, $amt) {
-        $user = $req->userInfo->game;
-        if (!$user || $amt <= 0) {// 防御代码,异常情况记录日志后直接返回
-            CLog::err("增加用户经验出错: $user,$amt", "UserGameModel");
-            return;
-        }
+    static function Add_Exp($user, $amt) {
+        my_Assert($user, "user为空");
+        my_Assert($amt >= 0, "amt值为负");
         $cfgLVs = GameConfig::playerlevel();
         $user->xp += $amt;
         $curLevel = $user->level;
         $nextLevel = $curLevel + 1;
-        while ($user->xp >= $cfgLVs->$nextLevel->xp_required) { // 超过升级所需经验
-            if ($user->level < glc()->Game_MaxPlayerLevel) {// 如果未到达最大等级
+
+        while ($user->xp >= $cfgLVs->$nextLevel->xp_need) {                     # 超过升级所需经验
+            if ($user->level < glc()->Game_MaxPlayerLevel) {                    # 如果未到达最大等级
                 $user->level++;
+                $user->xp -= $cfgLVs->$nextLevel->xp_need;
                 $curLevel = $user->level;
                 $nextLevel = $curLevel + 1;
-
-                if (!CommUtil::isPropertyExists($cfgLVs, $curLevel)) {
-                    throw new \Exception("取英雄升级常量数据失败." . $curLevel . "级");
-                }
-                //      $user->level = $nextLevel;
-                $user->maxXp = $cfgLVs->$nextLevel->xp_required;
-//                StatProc::UserLevel($nowlv); // 等级统计
-                // todo:: 发发宝箱奖励, 如果有的话
-                if (false !== strpos($cfgLVs->$nextLevel->boxReward, ',')) {
-                    $boxes = split(',', $cfgLVs->$nextLevel->boxReward);
-                    foreach ($boxes as $boxId) {
-                        StoreProc::putBoxexInStore($user->store, $boxId, 1);
-                    }
+                if (!CommUtil::isPropertyExists($cfgLVs, $nextLevel)) {
+                    Err(ErrCode::err_const_no, "取英雄升级常量数据失败." . $nextLevel . "级");
                 }
-            } else {// 如果已到达最大等级则仅补齐缺失的经验即可
-                $user->xp = $user->maxXp; # 经验不能超过最大值
+                $user->maxXp = $cfgLVs->$nextLevel->xp_need;
+//                StatProc::UserLevel($nowlv);                                 // 等级统计
+                // todo:: 发发宝箱奖励, 如果有的话 
+            } else {                                                            // 如果已到达最大等级则仅补齐缺失的经验即可
+                $user->xp = $user->maxXp;                                       # 经验不能超过最大值
                 break;
             }
         }
-        if ($user->level != $curLevel) {                # 插入玩家升级的系统消息
-            SystemProc::UserLevelUp($req->zoneid, $user, $user->level);
+        if ($user->level != $curLevel) {                                        # 插入玩家升级的系统消息
+            SystemProc::UserLevelUp(req()->zoneid, $user, $user->level);
         }
     }
 
@@ -393,33 +373,28 @@ class UserGameModel extends Object_ext {
      * @param UserGameModel $user 玩家数据
      * @param int $amt
      */
-    static function Add_Gold($mem, $user, $amt) {
-        if (!$user || $amt <= 0) {// 防御代码,异常情况记录日志后直接返回
-            CLog::err("增加用户金币出错: $user , $amt", "UserGameModel");
-            return ErrCode::err_innerfault;
-        }
+    static function Add_Gold(&$user, $amt) {
+        my_Assert($user, "参数null");
+        my_Assert($amt >= 0, "参数为负");
         $user->gold += $amt;
-        return ErrCode::ok;
     }
 
     /**
      * 给玩家增加体力
-     * @param UserGameModel $user
+     * @param Req $req
      * @param int $amt
      * @return type
      */
     static function Add_tili($req, $amt) {
         $user = $req->userInfo->game;
-        if (!$user || $amt <= 0) {// 防御代码,异常情况记录日志后直接返回
-            CLog::err("增加用户体力出错. : ($user,$amt)", "UserGameModel");
-            return ErrCode::err_innerfault;
-        }
+        my_Assert($user, "user为空");
+        my_Assert($amt >= 0, "体力amt小于0");
         ActiveProc::ChangeTili($amt, $req);
-        // $user->tili += $amt;
-        return ErrCode::ok;
+        // $user->tili += $amt; 
     }
 
 // </editor-fold>
     // <editor-fold defaultstate="collapsed" desc="私有方法">
+    // 
 // </editor-fold>
 }

+ 9 - 11
Gameserver/Amfphp/process/ActiveProc.php

@@ -81,13 +81,11 @@ class ActiveProc {
         if (!in_array($hour, $arr)) {
             return Resp::err(ErrCode::active_illegal);              # 不满足条件
         }
-        $err = UserGameModel::Add_tili($req, glc()->activity_presentTili_number); # 发放奖励
-        if ($err) {
-            return Resp::err($err);                                 # 失败
-        }
+        UserGameModel::Add_tili($req, glc()->activity_presentTili_number); # 发放奖励
+
         $privateState->dailyDrawedTiliGift[] = $hour;
         $req->userInfo->game->privateState = $privateState;
-        UserProc::updateUserInfo($req);                                         # 回存
+        UserProc::updateUserInfo();                                         # 回存
         return Resp::ok(array(#                                     # 返回值
                     'key' => 'ok',
                     'record' => $privateState->dailyDrawedTiliGift,
@@ -136,7 +134,7 @@ class ActiveProc {
         $privateState->drawedRegGift[] = $giftId;
         $user->privateState = $privateState;
         $req->userInfo->game = $user;
-        UserProc::updateUserInfo($req);                                         # 回存
+        UserProc::updateUserInfo();                                         # 回存
         return Resp::ok(array(#                                     # 返回值
                     'key' => 'ok',
                     'store' => $req->userInfo->game->store
@@ -183,7 +181,7 @@ class ActiveProc {
         $user->privateState = $privateState;
 //        var_dump($privateState);
         $req->userInfo->game = $user;
-        UserProc::updateUserInfo($req);                                         # 回写用户数据
+        UserProc::updateUserInfo();                                         # 回写用户数据
 
         return Resp::ok(array(
                     'onlineGiftts' => $privateState->onlineGiftts,
@@ -256,7 +254,7 @@ class ActiveProc {
         if (!$ok) {
             return Resp::err(ErrCode::err_db, daoInst()->getError(TRUE)); #     # 数据库操作失败- 重试
         }
-        UserProc::updateUserInfo($req);                                         # 回存玩家数据
+        UserProc::updateUserInfo();                                         # 回存玩家数据
         $ret = array(#                                                          # 返回值
             "plat" => $codePlatStr,
             "packageId" => $activeCode->package,
@@ -359,7 +357,7 @@ class ActiveProc {
         }
         if (ActiveProc::CheckTaskComplete($taskModel, $req)) {  //下面该检测了,检测客户端发来的完成任务请求是否准确
             $tasks->$taskId->state = 2;                         // 更新任务状态
-            UserProc::updateUserInfo($req);                     // 回写玩家数据
+            UserProc::updateUserInfo();                     // 回写玩家数据
         }
         return Resp::ok(array("ret" => "ok"));
     }
@@ -487,7 +485,7 @@ class ActiveProc {
                 $req->userInfo->game->privateState->GemUpgrage++;
                 break;
         }
-        UserProc::updateUserInfo($req);
+        UserProc::updateUserInfo();
     }
 
     public static function AddEverydayTask() {
@@ -500,7 +498,7 @@ class ActiveProc {
         $useTili = $req->paras[0];
         ActiveProc::ChangeTili($useTili, $req);
 
-        UserProc::updateUserInfo($req);
+        UserProc::updateUserInfo();
         $result = array(
             'time' => $req->userInfo->game->privateState->TiliTime,
             'tili' => $req->userInfo->game->tili

+ 2 - 2
Gameserver/Amfphp/process/ActiveProc/Boxes.php

@@ -55,7 +55,7 @@ class Boxes {
         } else {
             $user->privateState->BoxLock = 0;                                   # 照顾旧账号
         }
-        UserProc::updateUserInfo($req);
+        UserProc::updateUserInfo();
         return Resp::ok(array('err' => 0, #                                     # 返回值
                     'store' => $user->store, #                                  # 仓库
                     'cooldown' => $user->privateState->BoxCoolDownTime, #       # 冷却时间
@@ -206,7 +206,7 @@ class Boxes {
         } else {
             $user->privateState->BoxLock = 0; ////照顾旧账号。
         }
-        UserProc::updateUserInfo($req);                                         # 回存数据
+        UserProc::updateUserInfo();                                         # 回存数据
         return Resp::ok(array('err' => 0, #                                     # 返回值
                     'store' => $user->store, #                                  # 仓库
                     'heros' => $user->heros, #                                  # 最新英雄

+ 3 - 3
Gameserver/Amfphp/process/ActiveProc/Day7Tasks.php

@@ -33,7 +33,7 @@ class Day7Tasks {
                 return Resp::err($err);
             }
             $day7->final = 1;                                                   # 添加领取记录
-            UserProc::updateUserInfo($req);                                     # 回存数据
+            UserProc::updateUserInfo();                                     # 回存数据
             $result = array(
                 'store' => $req->userInfo->game->store,
                 'heros' => $req->userInfo->game->heros,
@@ -76,7 +76,7 @@ class Day7Tasks {
             if (ErrCode::ok != $err) {
                 return Resp::err($err);
             }
-            UserProc::updateUserInfo($req);                                     # 回存数据
+            UserProc::updateUserInfo();                                     # 回存数据
             $result = array(
                 'store' => $req->userInfo->game->store,
                 'heros' => $req->userInfo->game->heros,
@@ -110,7 +110,7 @@ class Day7Tasks {
 
         if (self::CheckDay7TaskComplete($taskModel, $req)) {                    # 下面该检测了,检测客户端发来的完成任务请求是否准确
             $tasks->$taskId->state = 2;                                         # 更新任务状态 
-            UserProc::updateUserInfo($req);                                     # 回写玩家数据
+            UserProc::updateUserInfo();                                     # 回写玩家数据
         }
         return Resp::ok(array("ret" => "ok"));
     }

+ 7 - 7
Gameserver/Amfphp/process/ActiveProc/Lotterys.php

@@ -69,7 +69,7 @@ class Lotterys {
             return Resp::err($cishu);
         }
         $req->userInfo->game->privateState->lottery = $lottery;
-        UserProc::updateUserInfo($req);                                         # 回存数据
+        UserProc::updateUserInfo();                                         # 回存数据
 //        var_dump($lottery);
         return Resp::ok(array('err' => 0, #                                     # 返回值
                     'store' => $user->store,
@@ -116,7 +116,7 @@ class Lotterys {
         if ($err) {
             return Resp::err($err);
         }
-        UserProc::updateUserInfo($req);                                         # 回存数据
+        UserProc::updateUserInfo();                                         # 回存数据
         return Resp::ok(array('err' => 0, #                                     # 返回值
                     'store' => $user->store,
                     'heros' => $user->heros,
@@ -171,7 +171,7 @@ class Lotterys {
         if ($err) {                                                             # 出错了
             return Resp::err($err);
         }
-        UserProc::updateUserInfo($req);                                         # 回存数据
+        UserProc::updateUserInfo();                                         # 回存数据
         return Resp::ok(array('err' => 0, #                                     # 返回值
                     'store' => $user->store,
                     'heros' => $user->heros,
@@ -223,7 +223,7 @@ class Lotterys {
         }
         $lottery->$slotid = $slot;
         $req->userInfo->game->privateState->lottery = $lottery;
-        UserProc::updateUserInfo($req);                                         # 回写数据
+        UserProc::updateUserInfo();                                         # 回写数据
         return Resp::ok(array('slot' => $slot));                                # 返回
     }
 
@@ -252,7 +252,7 @@ class Lotterys {
         $slot->locked = false;                                                  # 解锁卡槽
         $lottery->$slotid = $slot;
         $req->userInfo->game->privateState->lottery = $lottery;
-        UserProc::updateUserInfo($req);                                         # 回写数据
+        UserProc::updateUserInfo();                                         # 回写数据
         return Resp::ok(array('slot' => $slot));                                # 返回
     }
 
@@ -281,7 +281,7 @@ class Lotterys {
         $slot->Clear();
         $lottery->$slotid = $slot;
         $req->userInfo->game->privateState->lottery = $lottery;                 # 数据回写
-        UserProc::updateUserInfo($req);
+        UserProc::updateUserInfo();
         return Resp::ok(array(
                     'heros' => $req->userInfo->game->heros,
                     'hero' => $he,
@@ -345,7 +345,7 @@ class Lotterys {
         $lottery->$slotid = $slot;
         $user->privateState->lottery = $lottery;                                # 回写数据
         $req->userInfo->game = $user;                                           # 回写user数据
-        UserProc::updateUserInfo($req);                                         # 回存数据
+        UserProc::updateUserInfo();                                         # 回存数据
         return Resp::ok(array('err' => 0, #                                     # 返回值
                     'store' => $user->store,
                     'slot' => $slot, #                                          # 卡槽信息

+ 6 - 6
Gameserver/Amfphp/process/FightProc/PVPProc.php

@@ -38,7 +38,7 @@ class PVPProc {
             $pvp->clearWeekData();                                              # 每周清理胜率数据
             $pvp->curMatches = self::getNewMatches($pvp, $mem, $uid, $zoneid);  # 更新对手列表
             $req->userInfo->game->pvp = $pvp;
-            UserProc::updateUserInfo($req);
+            UserProc::updateUserInfo();
         }
         self::sendLastRankReward($req);                                         # 发放每周上榜人员奖励
         self::UpdateChanlianInfo($req);                                         # 更新蝉联数据(并发奖)
@@ -187,7 +187,7 @@ class PVPProc {
 # 发放对应奖励并记录挑战记录
         $score = 0;
         if ($result) {      # 1 胜, 奖金币、积分、pvp币
-            UserGameModel::Add_Gold($req->mem, $req->userInfo->game, $g->PVP_PK_Win_Gold);
+            UserGameModel::Add_Gold($req->userInfo->game, $g->PVP_PK_Win_Gold);
             # × 奖励积分的公式: 获胜基础奖励积分 + 积分差距修正系数 * 积分差
             # 挑战胜利, 积分改为固定值.
             $winnerGainScore = $g->PVP_PK_Win_Score;                            # 本局得分
@@ -233,7 +233,7 @@ class PVPProc {
         $pvp->dailyPkCnt++;
         $req->userInfo->game->pvp = $pvp;
 //todo: debuging...
-        UserProc::updateUserInfo($req);                                       # 回写数据
+        UserProc::updateUserInfo();                                       # 回写数据
         $ret = array(
             'contWin' => $pvp->contWin,
             'leagueId' => $pvp->leagueId,
@@ -271,7 +271,7 @@ class PVPProc {
         $pvp->curMatches = self::getNewMatches($pvp, $req->mem, $req->uid, $req->zoneid);
         $pvp->nextRefreshTs = now(glc()->PVP_refresh_Match_RecoverSeconds);
         $req->userInfo->game->pvp = $pvp;
-        UserProc::updateUserInfo($req);                                         # 回写数据
+        UserProc::updateUserInfo();                                         # 回写数据
 
         $ret = array(
             'nextRefreshTs' => $pvp->nextRefreshTs, #                           # 下次免费刷新的时间戳
@@ -315,7 +315,7 @@ class PVPProc {
 
         $pvp->tiliTs = now() - ( 5 * $g->PVP_reCover_Tili_costSec);             # 补满
         $req->userInfo->game->pvp = $pvp;
-        UserProc::updateUserInfo($req);                                         # 回写玩家数据
+        UserProc::updateUserInfo();                                         # 回写玩家数据
         $ret = array(
             'tiliTs' => $pvp->tiliTs,
             'tiliExtra' => $pvp->tiliExtra,
@@ -376,7 +376,7 @@ class PVPProc {
         if ($err) {
             return Resp::err($err);
         }
-        UserProc::updateUserInfo($req);                                         # 回写玩家数据
+        UserProc::updateUserInfo();                                         # 回写玩家数据
         $ret = array(#                                                          # 返回值
             'actives' => $pvp->actives, //                                      # 最新的 活跃度值
             'store' => $req->userInfo->game->store, //                          # 获得奖励之后的玩家仓库信息

+ 13 - 15
Gameserver/Amfphp/process/FightProc/SweepGatesProc.php

@@ -78,12 +78,10 @@ class SweepGatesProc {
         if ($bossId > 0) {                                                      # boss关处理
             $req->userInfo->game->gates->killedBoss[] = $bossId;
         }
-        $err = UserGameModel::Add_Gold($req->mem, $req->userInfo->game, $gold); # 发放金币奖励
-        if ($err != ErrCode::ok) {
-            return Resp::err($err);
-        }
-        UserGameModel::Add_Exp($req, $exp);                                     # 发放经验奖励
-        UserProc::updateUserInfo($req);                                         # 在获取战利品哪里已经update了.
+        UserGameModel::Add_Gold($req->userInfo->game, $gold); # 发放金币奖励
+
+        UserGameModel::Add_Exp($req->userInfo->game, $exp);                     # 发放经验奖励
+        UserProc::updateUserInfo();                                         # 在获取战利品哪里已经update了.
         $result = array(
             'store' => $req->userInfo->game->store,
             'heros' => $req->userInfo->game->heros,
@@ -194,7 +192,7 @@ class SweepGatesProc {
      */
     public static function Arenas_Fight($req) {
         list($gateId, $difficulty, $star, $TeamObj) = $req->paras;              # 提取参数: 挑战的关卡Id, 关卡难度(0,1,2), 几星, 队伍
-        Resp::assert($gateId > 0, "关卡id非法");
+        DebugHelper::assert($gateId > 0, "关卡id非法");
         $isFirst = false;                                                       # 是否首次通关
         self::recordFight($req, $gateId, $difficulty, $star, $isFirst);         # 更新挑战记录
 //        CLog::err($isFirst);
@@ -222,10 +220,10 @@ class SweepGatesProc {
         $rewardArr = array();                                                   # 统计所获奖励物品
         $rewardArr = array_merge($rewardArr, self::SetRewards($req, $rwdstr));  # 通关奖励
 
-        UserGameModel::Add_Gold($req->mem, $req->userInfo->game, $gold);        # 发金币
-        UserGameModel::Add_Exp($req, $exp);                                     # 给玩家(指挥官)增加经验
+        UserGameModel::Add_Gold($req->userInfo->game, $gold);        # 发金币
+        UserGameModel::Add_Exp($req->userInfo->game, $exp);                     # 给玩家(指挥官)增加经验
 
-        UserProc::updateUserInfo($req);                                         # 回写玩家数据.
+        UserProc::updateUserInfo();                                         # 回写玩家数据.
 
         $result = array(
             'store' => $req->userInfo->game->store,
@@ -426,12 +424,12 @@ class SweepGatesProc {
             }
         }
 
-        UserGameModel::Add_Gold($req->mem, $req->userInfo->game, $gold);        # 发放金币奖励
+        UserGameModel::Add_Gold($req->userInfo->game, $gold);        # 发放金币奖励
         if ($err) {
             return Resp::err($err);
         }
-        UserGameModel::Add_Exp($req, $exp);                     # 发放经验奖励
-        UserProc::updateUserInfo($req);                                         # 在获取战利品哪里已经update了.
+        UserGameModel::Add_Exp($req->userInfo->game, $exp);                     # 发放经验奖励
+        UserProc::updateUserInfo();                                         # 在获取战利品哪里已经update了.
         $result = array(
             'store' => $req->userInfo->game->store,
             'heros' => $req->userInfo->game->heros,
@@ -569,7 +567,7 @@ class SweepGatesProc {
                 break;
             case "399":
                 if ($itemId == "399002") {                                      // 金币的获取
-                    UserGameModel::Add_Gold($req->mem, $req->userInfo->game, $itemNum);
+                    UserGameModel::Add_Gold($req->userInfo->game, $itemNum);
                 }
                 break;
             default:
@@ -578,7 +576,7 @@ class SweepGatesProc {
 
         $getStarRewardRecord[] = $rewardID;                                     // 保存记录
         $req->userInfo->game->gates->starRewards = $getStarRewardRecord;
-        UserProc::updateUserInfo($req);                                         //  更新数据库数据 
+        UserProc::updateUserInfo();                                         //  更新数据库数据 
         $result = array(
             "getreward" => true
         );

+ 1 - 1
Gameserver/Amfphp/process/FriendProc.php

@@ -725,7 +725,7 @@ class FriendProc {
         }
         $req->userInfo->game->friendPoint += $recieved;
         self::saveOps($mem, $uid, $zoneid, $fgiftlist, enum_Friend_op::gift);
-        UserProc::updateUserInfo($req);
+        UserProc::updateUserInfo();
         if ($bSendback && $recieved > 0) {
             $uids_send = array_unique(array_values($arr));
             $req->paras[0] = implode(',', $uids_send);

+ 6 - 6
Gameserver/Amfphp/process/GuildProc.php

@@ -304,7 +304,7 @@ class GuildProc {
 
                             self::updateUserGuildInfo($mem, $uid, $userGuildInfo, $zoneid); // 回写数据
                             self::addGuildInfo($mem, $guildInfo->guildId, $guildInfo, $zoneid);
-                            UserProc::updateUserInfo($req);
+                            UserProc::updateUserInfo();
                             $resp = Resp::ok($guildInfo);                       // 设置成功返回值
                         }
                     }
@@ -1400,8 +1400,8 @@ class GuildProc {
                                 if ($reward) {
                                     #捐献的人扣卡牌 +奖励
                                     UserGameModel::Consume_HeroSegment($game, $segmentId, $segmentNum); //扣卡牌
-                                    UserGameModel::Add_Gold($mem, $game, $guildReward->gold * $segmentNum); #加金币奖励
-                                    UserGameModel::Add_Exp($req, $guildReward->exp * $segmentNum); #加经验
+                                    UserGameModel::Add_Gold($game, $guildReward->gold * $segmentNum); #加金币奖励
+                                    UserGameModel::Add_Exp($req->userInfo->game, $guildReward->exp * $segmentNum); #加经验
                                     $userGuildInfo->contribute += $guildReward->contribution * $segmentNum; #加贡献度
                                     #计算所在公会总贡献度
                                     $guildInfo->allContribute += $userGuildInfo->contribute;
@@ -1423,7 +1423,7 @@ class GuildProc {
                                     } //还没有捐献满不做任何处理
                                     self::updateGuildInfo($mem, $guildId, $guildInfo, $zoneid);
                                     self::updateUserGuildInfo($mem, $uid, $userGuildInfo, $zoneid);
-                                    UserProc::updateUserInfo($req);
+                                    UserProc::updateUserInfo();
                                     $resp = Resp::ok(array(
                                                 "guildInfo" => $guildInfo,
                                                 "userGuildInfo" => $userGuildInfo,
@@ -1646,7 +1646,7 @@ class GuildProc {
                                     }
                                 }
                                 self::updateGuildInfo($mem, $guildInfo->guildId, $guildInfo, $zoneid);
-                                UserProc::updateUserInfo($req);
+                                UserProc::updateUserInfo();
                                 SystemProc::BuyGuildCashPack($zoneid, $game); # 插入系统消息
                                 $resp = Resp::ok(array(
                                             "result" => 0,
@@ -1719,7 +1719,7 @@ class GuildProc {
                                 }
                             }
                             self::updateGuildInfo($mem, $guildInfo->guildId, $guildInfo, $zoneid);
-                            UserProc::updateUserInfo($req);
+                            UserProc::updateUserInfo();
                             SystemProc::BuyGuildCashPack($zoneid, $game); # 插入系统消息
                             $resp = Resp::ok(array(
                                         "result" => 0,

+ 31 - 42
Gameserver/Amfphp/process/HeroProc.php

@@ -117,7 +117,7 @@ class HeroProc {
         }
         array_push($targteHeroSkills->$mainSkillId, $subSkillId);               # 添加技能
         $targetHero->subSkills = $targteHeroSkills;
-        UserProc::updateUserInfo($req);                                         # 回写数据
+        UserProc::updateUserInfo();                                         # 回写数据
         return Resp::ok($targetHero);
     }
 
@@ -165,7 +165,7 @@ class HeroProc {
         unset($targteHeroSkills->$mainSkillId, $subSkillId);                    # 替换技能
         array_push($targteHeroSkills->$mainSkillId, $targetSubSkillId);
         $targetHero->subSkills = $targteHeroSkills;
-        UserProc::updateUserInfo($req);                                         # 回写数据
+        UserProc::updateUserInfo();                                         # 回写数据
         return Resp::ok($targetHero);
     }
 
@@ -211,7 +211,7 @@ class HeroProc {
         unset($targteHeroSkills->$mainSkillId, $subSkillId);                    # 替换技能
         array_push($targteHeroSkills->$mainSkillId, $sm->nextLevel_Id);
         $targetHero->subSkills = $targteHeroSkills;
-        UserProc::updateUserInfo($req);                                         # 回写数据
+        UserProc::updateUserInfo();                                         # 回写数据
         return Resp::ok($targetHero);
     }
 
@@ -224,39 +224,28 @@ class HeroProc {
      * @param Req $req
      */
     static function HeroStageUp($req) {
-//        $g = glc();                                                             # 全局配置
+        list($huid, $nextGrade) = $req->paras;                                  # 提取参数: 英雄的UID,下一阶
         $user = $req->userInfo->game;                                           # user引用
-        $huid = $req->paras[0];                                                 # 英雄的UID
-        $nextGrade = $req->paras[1];                                            # 下一阶
-
         $collectHeros = $user->heros->collectHeros;                             # 角色容器
         if (!$collectHeros) {
             $collectHeros = ObjectInit();
         }
-        if (!CommUtil::isPropertyExists($collectHeros, $huid)) {                # 1.检查是否存在要升级的英雄
-            return Resp::err(ErrCode::hero_no);
-        }
+        my_Assert(CommUtil::isPropertyExists($collectHeros, $huid), ErrCode::hero_no);  # 1.检查是否存在要升级的英雄
 //        isEditor() and $upHero = new UserHeroModel();
         $upHero = $collectHeros->$huid;
-        if ($upHero->grade >= "S") {                                            # 已经达到S级
-            return Resp::err(ErrCode::hero_strength_maxstrengthlevel);
-        }
+        my_Assert($upHero->grade < "S", ErrCode::hero_strength_maxstrengthlevel); # 已经达到S级 
         $heroUpgradeCostCfg = GameConfig::heroextra_level_getItem($upHero->typeId, $nextGrade);
-        if (!$heroUpgradeCostCfg) {                                             # 1.检查是否存在这个升阶数据的模板
-            return Resp::err(ErrCode::hero_strength_cost_const_no);
-        }
-        $needSeg = $heroUpgradeCostCfg->segNum;                                 # 2 
-        if ($user->Consume_HeroSegment($user, #                                 # 扣除碎片
-                        $heroUpgradeCostCfg->segID, $heroUpgradeCostCfg->segNum)) {
-//        if (true) {                                                             # 扣除碎片直接成功
-            $upHero->grade = $nextGrade;                                        # 5.强化英雄进行成功升阶 
-            UserProc::updateUserInfo($req);                                     # 6.数据回存
-            $resp = Resp::ok($upHero);
-            SystemProc::insertHero_StageUp($req->zoneid, $req->uid, $user->name, #
-                    GameConfig::hero_getItem($upHero->typeId)->name, $upHero->grade);
-        } else {                                                                # 碎片数量不足
-            return Resp::err(ErrCode::hero_segment_not_enough);
-        }
+
+        my_Assert($heroUpgradeCostCfg, ErrCode::hero_strength_cost_const_no);    # 1.检查是否存在这个升阶数据的模板
+        my_Assert(UserGameModel::Consume_HeroSegment($user, #                    # 扣除碎片  
+                        $heroUpgradeCostCfg->segID, $heroUpgradeCostCfg->segNum),
+                ErrCode::hero_segment_not_enough);                              # 碎片数量不足
+        # 扣除碎片成功
+        $upHero->grade = $nextGrade;                                            # 5.强化英雄进行成功升阶 
+        UserProc::updateUserInfo();                                         # 6.数据回存
+        $resp = Resp::ok($upHero);
+        SystemProc::insertHero_StageUp($req->zoneid, $req->uid, $user->name, #  插入系统广播
+                GameConfig::hero_getItem($upHero->typeId)->name, $upHero->grade);
         return $resp;
     }
 
@@ -310,7 +299,7 @@ class HeroProc {
             $myPacketItems->$costItemId = 0;
         }
         $req->userInfo->game->store->items = $myPacketItems;                    # 更新背包数据
-        UserProc::updateUserInfo($req);                                         # 回写玩家数据
+        UserProc::updateUserInfo();                                         # 回写玩家数据
         return Resp::ok($targetHero);
     }
 
@@ -325,7 +314,7 @@ class HeroProc {
     static function SaveHeroTeamConfig($req) {
         $teamsetting = $req->paras[0];                                          # 配置信息json文件
         $req->userInfo->game->heroTeamConfig = $teamsetting;                    # 更新配置
-        UserProc::updateUserInfo($req);                                         # 回写数据
+        UserProc::updateUserInfo();                                         # 回写数据
 #       # 添加到战斗力隐藏榜单中, for pvp back matchers, -wg 2017.07.13
         self::CalcTeamFightPower($req->zoneid, $req->uid, $req->userInfo->game);
         return Resp::ok(array('result' => "succeed"));
@@ -416,7 +405,7 @@ class HeroProc {
             $strengthHero->skills = $targteHeroSkills;
             ActiveProc::ChangeTaskCount($req);
 # 回写数据
-            UserProc::updateUserInfo($req);
+            UserProc::updateUserInfo();
             $resp = Resp::ok($strengthHero);
         }
         return $resp;
@@ -483,7 +472,7 @@ class HeroProc {
             $recordUnLockHeroDic->$heroModelId = 1;
             $req->user->heros->recordUnLockHeroDic = $recordUnLockHeroDic;
             $req->userInfo->game->store->segement = $myPacketItems;
-            UserProc::updateUserInfo($req);                                     # 回写数据
+            UserProc::updateUserInfo();                                     # 回写数据
             return Resp::ok(array('result' => "OK"));                           //返回OK
         } else {
             return Resp::err(ErrCode::hero_godblood_notengoughitem);
@@ -594,7 +583,7 @@ class HeroProc {
             return Resp::err(ErrCode::hero_separate_cost_hero);
         }
         $user->heros->firendSupportHeroUID = $friendSupportHeroUids;
-        UserProc::updateUserInfo($req);          # 回存数据
+        UserProc::updateUserInfo();          # 回存数据
         return Resp::ok(array('firendSupportHeroUID' => $friendSupportHeroUids));
     }
 
@@ -646,7 +635,7 @@ class HeroProc {
 #  发物品到玩家包裹
         $req->userInfo->game->spar += $spar; # 入账能量块
 #  回存数据
-        UserProc::updateUserInfo($req);
+        UserProc::updateUserInfo();
         return Resp::ok(array('num' => $spar));
     }
 
@@ -701,7 +690,7 @@ class HeroProc {
                 $strengthHero->curMainFavor = $favorCfg->name;
             }
             $strengthHero->favors[] = $favorCfg->name;
-            UserProc::updateUserInfo($req);
+            UserProc::updateUserInfo();
             $resp = Resp::ok($strengthHero);
         }
         return $resp;
@@ -862,7 +851,7 @@ class HeroProc {
 
             $req->userInfo->game->store->segement = $myPacketItems;
             # 回写数据
-            UserProc::updateUserInfo($req);
+            UserProc::updateUserInfo();
             $resp = Resp::ok($strengthHero);
             #  推送系统消息
             SystemProc::Hero_purification($req->zoneid, $user, $heroModelId);
@@ -1063,7 +1052,7 @@ class HeroProc {
 
             $req->userInfo->game->store->items = $myPacketItems;
 # 回写数据
-            UserProc::updateUserInfo($req);
+            UserProc::updateUserInfo();
             $resp = Resp::ok($strengthHero);
 #  推送系统消息
 //            SystemProc::insertHero_Star($req->zoneid, $req->uid, $user->name, $heroCfg->name, $strengthHero->curStar);
@@ -1230,7 +1219,7 @@ class HeroProc {
 
             $req->userInfo->game->store->items = $myPacketItems;
 # 回写数据
-            UserProc::updateUserInfo($req);
+            UserProc::updateUserInfo();
             $resp = Resp::ok($strengthHero);
 #  推送系统消息
 //            SystemProc::insertHero_Star($req->zoneid, $req->uid, $user->name, $heroCfg->name, $strengthHero->curStar);
@@ -1326,7 +1315,7 @@ class HeroProc {
                 $myPacketItems->$piecesId = 0;
             }
             $req->userInfo->game->store->segement = $myPacketItems;
-            UserProc::updateUserInfo($req);                                     # 回写数据
+            UserProc::updateUserInfo();                                     # 回写数据
             $resp = HeroProc::GetHero($req);
             SystemProc::GetHero($req->zoneid, $user, $heroModelId);
         }
@@ -1366,7 +1355,7 @@ class HeroProc {
         }
         UserGameModel::Consume_Cash($user, $costCash);                          # 扣除宝石
         $user->heros->maxCollectCount += $buyNum;                               # 修改上限
-        UserProc::updateUserInfo($req);
+        UserProc::updateUserInfo();
         return Resp::ok(array(
                     'maxCollectCount' => $user->heros->maxCollectCount
         ));
@@ -1383,7 +1372,7 @@ class HeroProc {
             return Resp::err(ErrCode::hero_const_no_err);
         }
         $hero = self::AddHeroTFromStore($req, $heroModelId);
-        UserProc::updateUserInfo($req);
+        UserProc::updateUserInfo();
         $result = array('result' => "succeed", 'heros' => $hero);               #  4. 设置返回值
         return Resp::ok($result);
     }
@@ -1608,7 +1597,7 @@ class HeroProc {
         isEditor() and $hero = new UserHeroModel;
         $hero = $collectHeros->$heroUID;                                        # 1. 获取这个英雄的实例数据是
         $hero->isLocked = $lockstate;                                           # 2. 修改英雄状态
-        UserProc::updateUserInfo($req);                                         # 3. 保存玩家数据
+        UserProc::updateUserInfo();                                         # 3. 保存玩家数据
         return Resp::ok(ObjectInit()); # 4. 设置返回值
     }
 

+ 6 - 6
Gameserver/Amfphp/process/PayProc.php

@@ -138,7 +138,7 @@ class PayProc {
             return Resp::err(ErrCode::err_db);                      # 数据库操作失败
         }
         $req->userInfo->game->charge_amt += $order->amount;                     # 历史充值记录(单位分)
-        UserProc::updateUserInfo($req);                                         # 更新玩家数据信息
+        UserProc::updateUserInfo();                                         # 更新玩家数据信息
         Event::trigger('pay', array('amt' => $order->amount));                  # 触发充值事件
         CLog::pay("订单发货成功: $cpOrderId");
         return Resp::ok(# 返回
@@ -250,7 +250,7 @@ class PayProc {
                     return Resp::err(ErrCode::err_db);              # 数据库操作失败
                 }
                 $req->userInfo->game->charge_amt += $order->amount;             # 历史充值记录(单位分)
-                UserProc::updateUserInfo($req);                                 # 回写玩家数据
+                UserProc::updateUserInfo();                                 # 回写玩家数据
                 CLog::pay($req->uid . ' 登录补发订单 ' . $order->cpOrderId);
             }
             return Resp::ok(# 返回
@@ -307,7 +307,7 @@ class PayProc {
             }
             $user->userSecretshop = $userSecretshop;
             $req->userInfo->game = $user;
-            UserProc::updateUserInfo($req);
+            UserProc::updateUserInfo();
         }
         // 返回最新物品表
         return Resp::ok(array(#                                                 # 成功后将最新的玩家数据返回给客户端
@@ -430,7 +430,7 @@ class PayProc {
         $userSecretshop->currentItems->$itemId += 1;                            # 购买次数+1
         $user->userSecretshop = $userSecretshop;
         $req->userInfo->game = $user;
-        UserProc::updateUserInfo($req);                                         # 回写数据
+        UserProc::updateUserInfo();                                         # 回写数据
         StatProc::secretShopbuy($req->zoneid, $req->uid, $itemId, $num);        # 统计/监控数据
         return Resp::ok(array(#                                                 # 成功后将最新的玩家数据返回给客户端
                     'gold' => $user->gold,
@@ -514,7 +514,7 @@ class PayProc {
             if ($err != ErrCode::ok) {                                          # 发货失败
                 return Resp::err($err);
             }
-            UserProc::updateUserInfo($req);                                     # 回写数据
+            UserProc::updateUserInfo();                                     # 回写数据
             StatProc::shopbuy($zoneid, $uid, $itemId, $num);                    # 统计/监控数据
             return Resp::ok(array(#                                             # 成功后将最新的玩家数据返回给客户端
                         'gold' => $user->gold,
@@ -606,7 +606,7 @@ class PayProc {
         }
         $req->userInfo->game->privateState->firstPayGift = true;                # 设置首付标志
         StoreProc::AddMultiItemInStore($req, $itemModel->goods);                # 发放首付礼包到玩家仓库
-        UserProc::updateUserInfo($req);                                         # 更新玩家数据
+        UserProc::updateUserInfo();                                         # 更新玩家数据
         return Resp::ok(array('itemid' => $itemId,
                     'rewardstr' => $itemModel->goods,
                     'store' => $req->userInfo->game->store));                   # 回送成功信息

+ 4 - 4
Gameserver/Amfphp/process/PayProc/YuanBaoPayProc.php

@@ -69,7 +69,7 @@ class YuanBaoPayProc {
                         $amt = $itemModel->cost;
                         $source = "商城购买-" . $itemModel->name;
                         self::mn_SaveUserYuanbao($req, $amt, $source);       // 更新玩家游戏币余额
-                        UserProc::updateUserInfo($req); // 直接将$user的最新值返回给客户端
+                        UserProc::updateUserInfo(); // 直接将$user的最新值返回给客户端
                         $resp = Resp::ok("success");
                     }
                 } else { # 钻石、金币
@@ -85,7 +85,7 @@ class YuanBaoPayProc {
                                 StoreProc::addSeprateItem($itemModel, $req); // 更新玩家游戏币余额
 //                                $user->cash -= $amt;
                                 self::mn_SaveUserCash($req, $amt, "商城购买-花钻", $itemId);
-                                UserProc::updateUserInfo($req); // 直接将$user的最新值返回给客户端
+                                UserProc::updateUserInfo(); // 直接将$user的最新值返回给客户端
                                 $resp = Resp::ok($user);
                             }
                         }
@@ -96,7 +96,7 @@ class YuanBaoPayProc {
                         } else {// 发货
                             StoreProc::addSeprateItem($itemModel, $req); // 更新玩家金币余额
                             UserModel::Comsume_Gold($user, $prize->g); // 更新玩家数据信息
-                            UserProc::updateUserInfo($req); // 直接将$user的最新值返回给客户端
+                            UserProc::updateUserInfo(); // 直接将$user的最新值返回给客户端
                             $resp = Resp::ok($user);
                         }
                     } else { # 未知的支付类型
@@ -171,7 +171,7 @@ class YuanBaoPayProc {
         }
         $orders = ArrayInit(); # 清空
         $mem->set(MemKey_User::PayOrders($zoneid, $uid), $orders); # 清理已经处理过的订单
-        UserProc::updateUserInfo($req); // 更新玩家数据信息
+        UserProc::updateUserInfo(); // 更新玩家数据信息
         $resp = Resp::ok($user->yuanbao); // 直接将$user的最新值返回给客户端
 # todo: 这里可以再加一条订单记录
         self::_mPayLog($zoneid, $uid, MLogType::Inquire, 0, #

+ 21 - 21
Gameserver/Amfphp/process/StoreProc.php

@@ -332,7 +332,7 @@ class StoreProc {
         if ($bDeal) {
             ActiveProc::ChangeTaskCount($req);
             $store->items->$highitemId += $addnum;
-            UserProc::updateUserInfo($req);
+            UserProc::updateUserInfo();
             # 准备返回值
             $ret = array('resp' => "succeed!");
             $resp = Resp::ok($ret); //返回必须是object
@@ -376,7 +376,7 @@ class StoreProc {
             ActiveProc::ChangeTaskCount($req);
             $reward = StoreProc::composePiecesProbability($req);
             StoreProc::addSegmentIntoStore($store, $reward);
-            UserProc::updateUserInfo($req);
+            UserProc::updateUserInfo();
             # 准备返回值
             $result = array(
                 'reward' => $reward,
@@ -746,7 +746,7 @@ class StoreProc {
                             UserGameModel::Add_Cash($req->userInfo->game, $num);
                             break;
                         case META_GOLD_ITEMID:            # 金币
-                            UserGameModel::Add_Gold($req->mem, $req->userInfo->game, $num);
+                            UserGameModel::Add_Gold($req->userInfo->game, $num);
                             break;
                         case META_tili_ITEMID:            # 体力
                             UserGameModel::Add_tili($req, $num);
@@ -767,7 +767,7 @@ class StoreProc {
         }
 
 //        //  更新数据库数据
-        UserProc::updateUserInfo($req); ////这行不要注释掉,除非在邮件和任务领奖那里加入更新(在调用addmultiInstore函数的后面加入updateuserinfo的话,就可以注销到这行代码)
+        UserProc::updateUserInfo(); ////这行不要注释掉,除非在邮件和任务领奖那里加入更新(在调用addmultiInstore函数的后面加入updateuserinfo的话,就可以注销到这行代码)
         return ErrCode::ok;     // 返回
     }
 
@@ -786,7 +786,7 @@ class StoreProc {
         }
 
         //  更新数据库数据
-        UserProc::updateUserInfo($req);
+        UserProc::updateUserInfo();
         // 返回
 
         $ret = array('resp' => "succeed!");
@@ -884,7 +884,7 @@ class StoreProc {
             }
 //            break;  # 不会循环的,一个物品中只有第一个道具配置生效,否则
         }
-        UserProc::updateUserInfo($req);
+        UserProc::updateUserInfo();
 
         # 添加活动记录
 //        self::checkActiveItem($req, $itemModel);
@@ -920,7 +920,7 @@ class StoreProc {
         }
         $collectHeros->$herouid->yanling->$itemtype->itemuid = $yanling_uid;    # 英雄身上添加言灵记录
 
-        UserProc::updateUserInfo($req);                                         # 5.回写数据
+        UserProc::updateUserInfo();                                         # 5.回写数据
         $ret = array('resp' => "succeed!");
         $resp = Resp::ok($ret);                                                 // 返回 
 //        StoreProc::CheckItemNum($req);
@@ -954,7 +954,7 @@ class StoreProc {
         }
         $collectHeros->$herouid->equip->weapon->itemuid = 0;                    # 卸下
 
-        UserProc::updateUserInfo($req);                                         # 回写数据
+        UserProc::updateUserInfo();                                         # 回写数据
         $ret = array('resp' => "succeed!");
         $resp = Resp::ok($ret);                                                 // 返回 
 //        StoreProc::CheckItemNum($req);
@@ -1012,7 +1012,7 @@ class StoreProc {
             $user->store->equipment->$oldEquipId->herouid = 0;
         }
 
-        UserProc::updateUserInfo($req);                                         // 5.回写数据
+        UserProc::updateUserInfo();                                         // 5.回写数据
         $ret = array('resp' => "succeed!");
         $resp = Resp::ok($ret);                                                 // 返回 
 //        StoreProc::CheckItemNum($req);
@@ -1063,7 +1063,7 @@ class StoreProc {
             default :
                 Err(ErrCode::store_equip_type);
         }
-        UserProc::updateUserInfo($req);                                         # 回写数据
+        UserProc::updateUserInfo();                                         # 回写数据
         $ret = array('resp' => "succeed!");
         $resp = Resp::ok($ret);                                                 // 返回 
 //        StoreProc::CheckItemNum($req);
@@ -1173,7 +1173,7 @@ class StoreProc {
         //6.进行消耗
         if ($bDeal) {
             $req->userInfo->game->privateState->maxItemNum += 10;
-            UserProc::updateUserInfo($req);
+            UserProc::updateUserInfo();
             $result = ObjectInit();
             $result->maxItemNum = $req->userInfo->game->privateState->maxItemNum;
             $resp = Resp::ok($result);
@@ -1227,10 +1227,10 @@ class StoreProc {
             }
             // 发金币
 
-            UserGameModel::Add_Gold($mem, $req->userInfo->game, $gem->maijia * $count);
+            UserGameModel::Add_Gold($req->userInfo->game, $gem->maijia * $count);
             $ret = array('resp' => "succeed!");
             $resp = Resp::ok($ret);
-            UserProc::updateUserInfo($req);
+            UserProc::updateUserInfo();
         } else if ($type == 8) {  // 从仓库出售碎片 出售可叠加的物品
             $ok = StoreProc::removeItemFromStore($store, $itemId, $count); // 支持移除指定数量
 //1.如果仓库道具移出时出错,则直接返回错误
@@ -1246,10 +1246,10 @@ class StoreProc {
             }
             // 发金币
 
-            UserGameModel::Add_Gold($mem, $req->userInfo->game, $gem->saleGoldPrice * $count);
+            UserGameModel::Add_Gold($req->userInfo->game, $gem->saleGoldPrice * $count);
             $ret = array('resp' => "succeed!");
             $resp = Resp::ok($ret);
-            UserProc::updateUserInfo($req);
+            UserProc::updateUserInfo();
         } else if ($type < 4 && $type > 0) { # 这里是装备
             if ($count > 1) {
                 Err(ErrCode::paras_err);
@@ -1265,11 +1265,11 @@ class StoreProc {
             if ($item == null) { //2.检测是否存在装备的原始数据
                 Err(ErrCode::err_const_no);
             }
-            UserGameModel::Add_Gold($mem, $req->userInfo->game, $item->maijia);
+            UserGameModel::Add_Gold($req->userInfo->game, $item->maijia);
 
             $ret = array('resp' => "succeed!");
             $resp = Resp::ok($ret); //返回必须是object 
-            UserProc::updateUserInfo($req);
+            UserProc::updateUserInfo();
         } else {
             Err(ErrCode::paras_err);
         }
@@ -1307,7 +1307,7 @@ class StoreProc {
             }
             // 发金币
 
-            UserGameModel::Add_Gold($mem, $req->userInfo->game, $gem->maijia * $count);
+            UserGameModel::Add_Gold($req->userInfo->game, $gem->maijia * $count);
             $ret = array('resp' => "succeed!");
             $resp = Resp::ok($ret);
         } else if ($type == 8) {  // 从仓库出售碎片 出售可叠加的物品
@@ -1325,7 +1325,7 @@ class StoreProc {
             }
             // 发金币
 
-            UserGameModel::Add_Gold($mem, $req->userInfo->game, $gem->saleGoldPrice * $count);
+            UserGameModel::Add_Gold($req->userInfo->game, $gem->saleGoldPrice * $count);
             $ret = array('resp' => "succeed!");
             $resp = Resp::ok($ret);
         } else if ($type < 4 && $type > 0) { # 这里是装备
@@ -1344,7 +1344,7 @@ class StoreProc {
             if ($item == null) { //2.检测是否存在装备的原始数据
                 Err(ErrCode::err_const_no);
             }
-            UserGameModel::Add_Gold($mem, $req->userInfo->game, $item->maijia);
+            UserGameModel::Add_Gold($req->userInfo->game, $item->maijia);
             $ret = array('resp' => "succeed!");
             $resp = Resp::ok($ret); //返回必须是object
         } else {
@@ -1385,7 +1385,7 @@ class StoreProc {
         }
 
         if (0 == $resp->err) {
-            UserProc::updateUserInfo($req);
+            UserProc::updateUserInfo();
         }
 
         // echo var_export($resp);

+ 2 - 2
Gameserver/Amfphp/process/SystemProc.php

@@ -137,7 +137,7 @@ class SystemProc {
 //        self::serialStatData($Tmem);
 
         $resp = Resp::myRetResponse($req, "succeed!");
-        UserProc::updateUserInfo($req);
+        UserProc::updateUserInfo();
         return $resp;
     }
 
@@ -253,7 +253,7 @@ class SystemProc {
         }
         self::pushSysMessage($req->zoneid, #
                 SysMessageType::UserSendMessage, array($uid, $user->name, $msg));
-        UserProc::updateUserInfo($req);                                         // 回存账号数据
+        UserProc::updateUserInfo();                                         // 回存账号数据
         return Resp::ok(array('ret' => "succeed"));                             # 返回值
     }
 

+ 20 - 22
Gameserver/Amfphp/process/UserProc.php

@@ -63,7 +63,7 @@ class UserProc {
     static function SetUserImageBorder($req) {
         list($imgborderId) = $req->paras;                                       # 参数, 新头像框ID
         $req->userInfo->game->imgBorderId = $imgborderId;
-        UserProc::updateUserInfo($req);
+        UserProc::updateUserInfo();
         return Resp::ok(array('ret' => 'ok'));
     }
 
@@ -90,7 +90,7 @@ class UserProc {
                 $num = $arr[1];
                 StoreProc::PutOverlyingItemInStore($itemid, $num, $req);
             }
-            UserProc::updateUserInfo($req);                                     # 回存玩家数据
+            UserProc::updateUserInfo();                                     # 回存玩家数据
             return Resp::ok(array('store' => $req->userInfo->game->store));
         }
         return Resp::err(ErrCode::active_hasgetted);
@@ -116,7 +116,7 @@ class UserProc {
                 ->where('userID')->eq($req->uid)
                 ->andWhere('zoneid')->eq($req->zoneid)
                 ->exec();
-        UserProc::updateUserInfo($req);
+        UserProc::updateUserInfo();
         return Resp::ok(array('ret' => 'ok'));
     }
 
@@ -131,7 +131,7 @@ class UserProc {
         }
         $user->NewbieGuideOver = 1;
         $req->userInfo->game = $user;
-        UserProc::updateUserInfo($req);                                         # 回写数据
+        UserProc::updateUserInfo();                                         # 回写数据
         return Resp::ok(array(#                                                 # 返回值
                     'result' => "succeed"
         ));
@@ -158,7 +158,7 @@ class UserProc {
         $NewbieGuide->$guideType = $temp;
         $user->NewbieGuide = $NewbieGuide;
         $req->userInfo->game = $user;
-        UserProc::updateUserInfo($req);                                         # 回写数据
+        UserProc::updateUserInfo();                                         # 回写数据
         return Resp::ok(array(#                                                 # 返回值
                     'result' => "succeed"
         ));
@@ -296,7 +296,7 @@ class UserProc {
 //            UserProc::fetchFromInteract($mem, $req);                          # 从交互体更新部分信息 
             PayProc::m_refreshChargeOrders($req);                               # 刷新订单, 多平台版本
             PayProc::checkDeltest($req);                                        # 检查内侧充值记录(函数内部会只检查一次)
-            UserProc::updateUserInfo($req);                                     # 这一步回存操作只有在 userInfo正常存在的情况下才进行
+            UserProc::updateUserInfo();                                     # 这一步回存操作只有在 userInfo正常存在的情况下才进行
             $resp = Resp::ok($userInfo);                                        # 设置返回值
 //            if (isset($req->updateGift)) {                                    # 透传更新礼包给Response
 //                $resp->updateGift = $req->updateGift;
@@ -413,7 +413,7 @@ class UserProc {
         if ($ret > 0) {                                                         # 当天第一次登录
             self::OnNewDay($req, $isnew);
         } else {
-            # 更新下登录次数记录(任务计数器)
+# 更新下登录次数记录(任务计数器)
         }
         if ($ret == 1) {                                                        # 连续登录
         } else if ($ret >= 2) {                                                 # 隔天登录
@@ -455,10 +455,10 @@ class UserProc {
 //        $userInfo->game->NewbieGuideOver = 1;
         UserProc::_intiHeroManual($userInfo->game);                             # 初始化图鉴
         $userInfo->interact = new UserInteractModel();                          # 初始化交互体数据
-        #Ps 6006是没有获得到Userinfo到Req中的
+#Ps 6006是没有获得到Userinfo到Req中的
         UserProc::checkContidays($req, 1);                                      # 每日状态检查
 //        UserProc::fetchFromInteract($mem, $req);  # 从interact拉取数据,Ps.初始化的过程应该还拉取不到什么有效数据
-        UserProc::updateUserInfo($req);                                         # 回存用户数据
+        UserProc::updateUserInfo();                                         # 回存用户数据
         FriendProc::Init($req);
 //        StatProc::                                                            ...
         gMem()->increment(MemKey_GameRun::Stat_UserCountByZone_int($req->zoneid));   # 增加玩家数量计数
@@ -519,15 +519,11 @@ class UserProc {
 
     /**
      * 更新用户数据(设置标志位,最后统一更新-gwang 2017.07.18)
-     * @param Req $req
      */
-    public static function updateUserInfo($req) {
-        if (req()->userInfo) {
-            req()->userInfoChanged = TRUE;
-        } else {
-            CLog::Assert("UserProc", $req->userInfo, #
-                    "[" . $req->cmd . '] >>>>>>>>>>用户数据正试图置空!!<<<<<<<<<<<' . $req->uid);
-        }
+    public static function updateUserInfo() {
+        my_Assert(req(), "req()为空");
+        my_Assert(req()->userInfo, "[" . req()->cmd . "] 玩家数据正在被清空!" . req()->uid);
+        req()->userInfoChanged = TRUE;                                          # 设置回写标志位 
     }
 
     /**
@@ -586,7 +582,7 @@ class UserProc {
     }
 
 // </editor-fold>
-// <editor-fold defaultstate="collapsed" desc="    用户数据备份    ">
+// <editor-fold defaultstate="collapsed" desc=" 用户数据备份 ">
 
     /**
      * 备份玩家数据,(玩家数据落地),一天一份,当天记为最后一次登录时的状态而非最后一次操作的状态
@@ -602,7 +598,8 @@ class UserProc {
     public static function backupUserInfo($req) {
         $tsday = TimeUtil::tsDay();                                             # 精确到天,保留10个最近记录.
         $value = base64_encode(gzdeflate(JsonUtil::encode($req->userInfo)));    # blob数据,序列化下
-        $sql = sprintf("call insertUserInfo('%s',%d,%d,'%s');", #               # 所以直接将序列化后的结果存进去吧,
+        $sql = sprintf("call insertUserInfo('%s', %d, %d, '%s');
+", #               # 所以直接将序列化后的结果存进去吧,
                 $req->uid, $req->zoneid, $tsday, $value);                       # zoneid, uid, tsday
         daoInst()->query($sql);                                                 # 也可以用exec($sql)
     }
@@ -613,7 +610,7 @@ class UserProc {
 }
 
 //
-// <editor-fold defaultstate="collapsed" desc="测试/送审=>注册新用户的业务逻辑">
+// <editor-fold defaultstate="collapsed" desc="测试/送审 => 注册新用户的业务逻辑">
 
 /**
  * 注册新用户
@@ -624,7 +621,8 @@ class RegNewUser {
     /**
      * 查找已有用户
      */
-    const SQL_SelectUser = "Select tid,pwd from `tab_register` where `userName`='%s' order by tid limit 1;";
+    const SQL_SelectUser = "Select tid, pwd from `tab_register` where `userName` = '%s' order by tid limit 1;
+";
 
     /**
      * 插入新用户, Ps 常量字符串只能这么写了
@@ -650,7 +648,7 @@ sql;
         }                                                                       # 尚未注册, 继续执行
         $sql_insert = sprintf(self::SQL_InsertNewUser, $userName, $pwd, $email, $phoneNumber);
         if (false === $paydb->query($sql_insert)) {                             # 插入用户信息
-            return array('ret' => -1, 'msg' => "数据插入失败,请重试.");
+            return array('ret' => -1, 'msg' => "数据插入失败, 请重试.");
         }
         $ret = array('ret' => 0, 'msg' => "注册成功.");                          # 插入成功, 返回
         $paydb->close();

+ 52 - 0
Gameserver/Amfphp/util/DebugHelper.php

@@ -19,6 +19,58 @@ class DebugHelper {
         return defined("GAME_ONLINE") && !GAME_ONLINE;                          #  线上版屏蔽输出
     }
 
+//
+// <editor-fold defaultstate="collapsed" desc="assert">
+
+    /**
+     * 逻辑断言,不受系统断言状态影响,可以用于生产环境的简单判断,比如:参数非法,参数缺失等
+     * @param type $condition
+     * @param int/string $err 如果是int值,则当作Errcode处理,否则当作字符串处理
+     */
+    static function assert($condition, $err) {
+        if (!$condition) {                                                      # 断言失败
+            if (is_int($err)) {
+                Err($err, "Assert faild!" . self::get_call_stack(6));
+            } else {
+                Err(ErrCode::err_assert, $err . self::get_call_stack(6));
+            }
+//            trigger_error($err, E_USER_ERROR);                                # 触发错误
+        }
+    }
+
+    /**
+     * 接管系统的断言失败处理函数(调试用,若要检查参数是否完整,请用Resp::assert())
+     * 注意:方法内部依赖于GAME_ONLINE标志,若为内网调试则打开断言,
+     *       若为线上环境则关闭断言(提升安全性和部分性能)
+     */
+    static function cover_assert_handler() {
+        assert_options(ASSERT_ACTIVE, !GAME_ONLINE);                            # 设置断言标志
+        assert_options(ASSERT_BAIL, true);
+        assert_options(ASSERT_WARNING, false);
+        assert_options(ASSERT_CALLBACK, array('DebugHelper', 'my_assert_handler')); # 设置回调函数
+    }
+
+    /**
+     *  断言处理函数
+     * @param type $file
+     * @param type $line
+     * @param type $code
+     * @param type $desc
+     */
+    private static function my_assert_handler($file, $line, $code, $desc) {
+        $msg = "<hr>Assertion Failed:
+  File '$file'<br />
+  Line '$line'<br />
+  Code '$code'<br />
+  Desc '{$desc}'<br />
+  <hr />";
+        Err(Err::err_assert, $msg);                                             # 给客户端返回值
+//        trigger_error($msg, E_USER_ERROR);                                    # 抛出一个err
+    }
+
+// </editor-fold>
+//
+
     /**
      * 浏览器打印调试信息
      * @param mixed $msg 对象或数组将会被序列化为json串

+ 24 - 13
Gameserver/nbproject/private/private.xml

@@ -12,22 +12,33 @@
     </editor-bookmarks>
     <open-files xmlns="http://www.netbeans.org/ns/projectui-open-files/2">
         <group>
-            <file>file:/E:/www/ylsj2019/Gameserver/Amfphp/process/UserProc.php</file>
-            <file>file:/E:/www/ylsj2019/Gameserver/Amfphp/process/HeroProc.php</file>
-            <file>file:/E:/www/ylsj2019/Gameserver/Amfphp/process/ActiveProc.php</file>
-            <file>file:/E:/www/ylsj2019/Gameserver/Amfphp/index.php</file>
-            <file>file:/E:/www/ylsj2019/Gameserver/Amfphp/config.php</file>
-            <file>file:/E:/www/ylsj2019/Gameserver/Amfphp/service_call/InquireApi/VerifyReturnCode.php</file>
+            <file>file:/E:/www/ylsj2019/Gameserver/Amfphp/process/StatProc.php</file>
+            <file>file:/E:/www/ylsj2019/Gameserver/Amfphp/process/EmailProc.php</file>
+            <file>file:/E:/www/ylsj2019/Gameserver/Amfphp/process/PayProc/WebPayProc.php</file>
+            <file>file:/E:/www/ylsj2019/Gameserver/Amfphp/base/CmdCode.php</file>
+            <file>file:/E:/www/ylsj2019/Gameserver/Amfphp/process/FightProc/PVPProc.php</file>
             <file>file:/E:/www/ylsj2019/Gameserver/Amfphp/process/FightProc.php</file>
+            <file>file:/E:/www/ylsj2019/Gameserver/Amfphp/process/StoreProc.php</file>
             <file>file:/E:/www/ylsj2019/Gameserver/Amfphp/process/FightProc/SweepGatesProc.php</file>
-            <file>file:/E:/www/ylsj2019/Gameserver/Amfphp/service_call/cmemdata/kvflush.php</file>
             <file>file:/E:/www/ylsj2019/Gameserver/Amfphp/util/CLog.php</file>
-            <file>file:/E:/www/ylsj2019/Gameserver/Amfphp/AutoLoad.php</file>
-            <file>file:/E:/www/ylsj2019/Gameserver/Amfphp/configs/GameConstants.php</file>
-            <file>file:/E:/www/ylsj2019/Gameserver/Amfphp/base/Req.php</file>
-            <file>file:/E:/www/ylsj2019/Gameserver/Amfphp/Services/AppServer.php</file>
-            <file>file:/E:/www/ylsj2019/Gameserver/Amfphp/Services/TestServer.php</file>
-            <file>file:/E:/www/ylsj2019/Gameserver/Amfphp/main.php</file>
+            <file>file:/E:/www/ylsj2019/Gameserver/Amfphp/process/FriendProc.php</file>
+            <file>file:/E:/www/ylsj2019/Gameserver/Amfphp/util/ErrHandler.php</file>
+            <file>file:/E:/www/ylsj2019/Gameserver/Amfphp/base/OpeCode.php</file>
+            <file>file:/E:/www/ylsj2019/Gameserver/Amfphp/util/DebugHelper.php</file>
+            <file>file:/E:/www/ylsj2019/Gameserver/Amfphp/process/PayProc/MLogType.php</file>
+            <file>file:/E:/www/ylsj2019/Gameserver/Amfphp/process/HeroDiscussProc.php</file>
+            <file>file:/E:/www/ylsj2019/Gameserver/Amfphp/process/UserProc.php</file>
+            <file>file:/E:/www/ylsj2019/Gameserver/Amfphp/process/PreProc.php</file>
+            <file>file:/E:/www/ylsj2019/Gameserver/Amfphp/model/User/UserInfoMo.php</file>
+            <file>file:/E:/www/ylsj2019/Gameserver/Amfphp/process/PayProc/YuanBaoPayProc.php</file>
+            <file>file:/E:/www/ylsj2019/Gameserver/Amfphp/process/GuildProc.php</file>
+            <file>file:/E:/www/ylsj2019/Gameserver/Amfphp/process/EventProc.php</file>
+            <file>file:/E:/www/ylsj2019/Gameserver/Amfphp/model/User/UserGameModel.php</file>
+            <file>file:/E:/www/ylsj2019/Gameserver/Amfphp/process/PayProc/YYBPay.php</file>
+            <file>file:/E:/www/ylsj2019/Gameserver/Amfphp/process/PayProc.php</file>
+            <file>file:/E:/www/ylsj2019/Gameserver/Amfphp/model/User/UGateModel.php</file>
+            <file>file:/E:/www/ylsj2019/Gameserver/Amfphp/process/SystemProc.php</file>
+            <file>file:/E:/www/ylsj2019/Gameserver/Amfphp/test.php</file>
         </group>
     </open-files>
 </project-private>