Sfoglia il codice sorgente

fixed: 任务卡修改.

王刚 3 anni fa
parent
commit
ae559aeddd

+ 5 - 5
Gameserver/Amfphp/base/CmdCode.php

@@ -281,11 +281,6 @@ class CmdCode {
      */
     const cmd_Task_getActiveReward = 6204;
 
-    /**
-     * [6205]任务追踪-设置当前追踪
-     */
-    const cmd_Task_setTracingCard = 6205;
-
     // <editor-fold defaultstate="collapsed" desc="任务卡相关通讯">
     //
 
@@ -337,6 +332,11 @@ class CmdCode {
      */
     const cmd_taskCard_StepActionDone = 6218;
 
+    /**
+     * [6219]任务追踪-设置当前追踪
+     */
+    const cmd_Task_setTracingCard = 6219;
+
     //
 // </editor-fold>
 // <editor-fold defaultstate="collapsed" desc="任务卡商城">

+ 6 - 6
Gameserver/Amfphp/model/User/Enum_TaskCmdType.php

@@ -29,12 +29,12 @@ class Enum_TaskCmdType extends Enum {
     // -----------------
     const UserOwnXYanlingWithQualityN = 41;                                     # # 玩家拥有x个n品质的言灵(num:数量x, paras:[品质n]) (跳)
     // ----------- 每日任务 -------
-    const DailyLogin = 101;
-    const DailyHeroImprove = 102;
-    const DailyGatesWin = 103;
-    const DailyPVP = 104;
-    const DailyRankChalenge = 105;
-    const DailyShopping = 106;
+    const DailyLogin = 101;                                                     # 玩家登录(num:1, paras:[])(无前往)
+    const DailyHeroImprove = 102;                                               # 唤灵师升级(num:次数, paras:[])(跳英雄列表界面)
+    const DailyGatesWin = 103;                                                  # 通关主线关卡(num:次数, paras:[])(跳转剧情关卡选择界面)
+    const DailyPVP = 104;                                                       # 暂不支持
+    const DailyRankChalenge = 105;                                              # 暂不支持
+    const DailyShopping = 106;                                                  # 暂不支持
     // ---------  任务卡  --------
     const KillMonster = 201;                                                    # 击杀怪物 (num:数量,paras:[怪物id]) (跳到某个关卡)
     const GainItem = 202;                                                       # 获得道具 (num:数量,paras:[道具id]

+ 2 - 1
Gameserver/Amfphp/model/User/Info_UserTask.php

@@ -5,6 +5,7 @@ namespace loyalsoft;
 /**
  * 玩家任务数据
  * @author wanggangzero@qq.com
+ * @deprecated since version 0 已经被废弃(呵呵, 是这次策划又启动相似功能时发现废弃的2021.9.26)
  * @version 1.0.0 2020.7.8 created by gwang
  */
 class Info_UserTask extends Object_ext {
@@ -184,7 +185,7 @@ class Info_UserTask extends Object_ext {
                     $task->bCheckProgress($taskParam);
                     break;
                 case Enum_TaskCmdType::UserPowerTo:
-                    $key = MemKey_GameRun::Game_FightPowerRank_zset(req()->zoneid);            # redis key 
+                    $key = MemKey_GameRun::Game_FightPowerRank_zset(req()->zoneid);            # redis key
                     $power = gMem()->zscore($key, req()->uid);                                 # 查询战斗力
                     $taskParam = new Ins_TaskParams(Enum_TaskCmdType::UserPowerTo, $power);
                     $task->bCheckProgress($taskParam);

+ 197 - 141
Gameserver/Amfphp/process/TaskProc.php

@@ -25,12 +25,13 @@ class TaskProc {
         switch (req()->cmd) {
             case CmdCode::cmd_task_getInfo:                                     # 6201 刷新任务状态
                 return TaskProc::GetTaskInfo();
-            case CmdCode::cmd_task_getReward:                                   # 6202 领取任务奖励
-                return TaskProc::GetTaskReward();
-            case CmdCode::cmd_Task_setAttentionTask:                            # 6203 设置关注任务
-                return TaskProc::setAttentionTask();
+//            case CmdCode::cmd_task_getReward:                                   # 6202 领取任务奖励
+//                return TaskProc::GetTaskReward();
+//            case CmdCode::cmd_Task_setAttentionTask:                            # 6203 设置关注任务
+//                return TaskProc::setAttentionTask();
             case CmdCode::cmd_Task_getActiveReward:                             # 6204 领取日常任务活跃度阶段奖励
                 return TaskProc::getActiveReward();
+
 //---------------- 任务卡相关通讯 -----------------------------------------------
             case CmdCode::cmd_taskCard_PlotFinish:                              # 6210 任务卡剧情对话
                 return self::PlotFinish();
@@ -55,6 +56,8 @@ class TaskProc {
                 return self::OnTaskCard_GetInfo();
             case CmdCode::cmd_taskCard_StepActionDone:                          # 6218 任务步骤 - start/finish action done
                 return self::OnTaskCard_StepActionDone();
+            case CmdCode::cmd_Task_setTracingCard:                              # 6219 设置当前追踪的任务卡
+                return TaskProc::SetTracingCard();
 // --------------   任务卡商城 -----------------------------
             case CmdCode::cmd_taskcard_shop_open:                               # 6231 任务卡商店 - 开启
                 return self::OnTaskCardShopOpen();
@@ -204,6 +207,7 @@ class TaskProc {
 
     //
 // </editor-fold>
+//
     // <editor-fold defaultstate="collapsed" desc="  任务卡接口">
     //
 
@@ -389,10 +393,6 @@ class TaskProc {
         }
         StlUtil::dictRemove($store->taskcards, $taskCardUID);                   # 移除任务卡
         self::autoRecoverStateMissions();                                       # 重新更新其它状态类的任务卡
-        
-        StatisticsProc::SelfTaskDataCollect($taskCard->typeId);                 #统计自己的任务完成情况
-        StatisticsProc::TaskDataCollect($taskCard->typeId);                     #统计最新任务
-        
         UserProc::updateUserInfo();                                             # 回存玩家数据
         return Resp::ok(array(
                     'gold' => req()->userInfo->game->baseInfo->gold,
@@ -433,6 +433,20 @@ class TaskProc {
         return Resp::ok(array('store' => req()->userInfo->game->store));         # 返回值更新背包
     }
 
+    /**
+     * [6219] 设置当前追踪的任务卡
+     */
+    static function SetTracingCard() {
+        // (探索任务暂不开发)
+        $pri = req()->userInfo->game->privateData();                            # 私有数据
+        // 设置追踪
+        list($cardType, $cardUID) = req()->paras;                               # 参数: 任务标签类型(1:主线;2:日程;3:圣哲;4:商店), 任务卡id.
+        my_default_Obj($pri->taskCardTracing);                                  # 确保 tracing数据结构是否完整.
+        $pri->taskCardTracing->$cardType = $cardUID;                            # 更新tracing数据.
+        UserProc::updateUserInfo();                                             # 回存
+        return Resp::ok($pri->taskCardTracing);                                 # 返回成功
+    }
+
     //
 // </editor-fold>
     // <editor-fold defaultstate="collapsed" desc="  任务接口 ">
@@ -462,72 +476,74 @@ class TaskProc {
 
     /**
      * [6203] 设置关注任务
+     * @deprecated since version 0 废弃,替换为6219.(2021.9.26)
      */
     static function setAttentionTask() {
-        list($taskId) = req()->paras;
-        $userTask = req()->userInfo->game->task;
-
-        my_Assert(StlUtil::dictHasProperty($userTask->taskListPlot, $taskId), ErrCode::task_no); # 任务存在
-        $taskItem = new Ins_TaskInfo($userTask->taskListPlot->$taskId);
-        my_Assert($taskItem->rewardGeted < 1, ErrCode::task_reward_geted);      # 任务奖励尚未领取
-        $userTask->curTaskId = $taskId;
-//        var_dump($userTask);
-        UserProc::updateUserInfo();
-        return Resp::ok(array("task" => req()->userInfo->game->task));
+//        list($taskId) = req()->paras;
+//        $userTask = req()->userInfo->game->task;
+//
+//        my_Assert(StlUtil::dictHasProperty($userTask->taskListPlot, $taskId), ErrCode::task_no); # 任务存在
+//        $taskItem = new Ins_TaskInfo($userTask->taskListPlot->$taskId);
+//        my_Assert($taskItem->rewardGeted < 1, ErrCode::task_reward_geted);      # 任务奖励尚未领取
+//        $userTask->curTaskId = $taskId;
+////        var_dump($userTask);
+//        UserProc::updateUserInfo();
+//        return Resp::ok(array("task" => req()->userInfo->game->task));
     }
 
     /**
      * [6202]领取任务奖励 问:每日任务奖励和剧情任务奖励领取接口是否为一个?
+     * @deprecated since version 0 已经更换为领取任务卡奖励.
      */
     static function GetTaskReward() {
-        list($taskId) = req()->paras;                                            # 提取参数: 任务id
-        $userTask = new Info_UserTask(req()->userInfo->game->task);
-        $mask = 100000;                                                         # 根据id段来区分任务和每日任务.
-        $type = intval($taskId / $mask);                                        # 取出taskId第一位判断任务类型
-        switch ($type) {                                                        #
-            case 4:                                                             # 剧情任务
-                my_Assert(StlUtil::dictHasProperty($userTask->taskListPlot, $taskId), ErrCode::task_no); #判断是否存在指定任务
-                $task = new Ins_TaskInfo($userTask->taskListPlot->$taskId);
-                my_Assert($task->progress >= 1, ErrCode::task_progress_not_complete);   # 判断任务进度是否已完成>=1f
-                my_Assert($task->rewardGeted < 1, ErrCode::task_reward_geted);          # 奖励不可重复领取
-                $taskCfg = GameConfig::task_getItem($taskId);                           # 任务配置数据
-                my_Assert($taskCfg != null, ErrCode::err_const_no);
-                $ok = StoreProc::AddMultiItemInStore($taskCfg->reward);           # 发放任务奖励
-                my_Assert($ok == ErrCode::ok, $ok);
-                $task->rewardGeted = 1;
-                $userTask->taskListPlot->$taskId = $task;
-                if ($userTask->IsAllPlotTaskOver()) {                           # 检查当前节点任务是否已经全部清空
-                    $userTask->curTaskNode += 1;
-                    $userTask->taskListPlot = ObjectInit();
-                    $userTask->initialize();
-                }
-                break;
-            case 5:                                                             # 每日任务
-                my_Assert(StlUtil::dictHasProperty($userTask->taskListDaily, $taskId), ErrCode::task_no);
-                $task = new Ins_TaskInfo($userTask->taskListDaily->$taskId);
-                my_Assert($task->progress >= 1, ErrCode::task_progress_not_complete);   # 判断任务进度是否已完成>=1f
-                my_Assert($task->rewardGeted < 1, ErrCode::task_reward_geted);          # 奖励不可重复领取
-                $taskCfg = GameConfig::task_daily_getItem($taskId);                     # 任务配置数据
-                my_Assert($taskCfg != null, ErrCode::err_const_no);
-//                Data_UserGame::Add_Exp(req()->userInfo->game->baseInfo, $taskCfg->exp);  # 发放任务奖励
-                req()->userInfo->game->base()->Add_Exp($taskCfg->exp);          # 发放指挥官经验
-                $userTask->dailyActivePoint += $taskCfg->activePoint;
-                $task->rewardGeted = 1;
-                $userTask->taskListDaily->$taskId = $task;                      # 回存下
-                break;
-            default:
-                break;
-        }
-
-        req()->userInfo->game->task = $userTask;                                 # 回存
-        UserProc::updateUserInfo();
-        return Resp::ok(array(//                                                # 返回
-                    "gold" => req()->userInfo->game->baseInfo->gold,
-                    "cash" => req()->userInfo->game->baseInfo->cash,
-                    "tili" => req()->userInfo->game->baseInfo->tili,
-                    "store" => req()->userInfo->game->store,
-                    "task" => req()->userInfo->game->task
-        ));
+//        list($taskId) = req()->paras;                                            # 提取参数: 任务id
+//        $userTask = new Info_UserTask(req()->userInfo->game->task);
+//        $mask = 100000;                                                         # 根据id段来区分任务和每日任务.
+//        $type = intval($taskId / $mask);                                        # 取出taskId第一位判断任务类型
+//        switch ($type) {                                                        #
+//            case 4:                                                             # 剧情任务
+//                my_Assert(StlUtil::dictHasProperty($userTask->taskListPlot, $taskId), ErrCode::task_no); #判断是否存在指定任务
+//                $task = new Ins_TaskInfo($userTask->taskListPlot->$taskId);
+//                my_Assert($task->progress >= 1, ErrCode::task_progress_not_complete);   # 判断任务进度是否已完成>=1f
+//                my_Assert($task->rewardGeted < 1, ErrCode::task_reward_geted);          # 奖励不可重复领取
+//                $taskCfg = GameConfig::task_getItem($taskId);                           # 任务配置数据
+//                my_Assert($taskCfg != null, ErrCode::err_const_no);
+//                $ok = StoreProc::AddMultiItemInStore($taskCfg->reward);           # 发放任务奖励
+//                my_Assert($ok == ErrCode::ok, $ok);
+//                $task->rewardGeted = 1;
+//                $userTask->taskListPlot->$taskId = $task;
+//                if ($userTask->IsAllPlotTaskOver()) {                           # 检查当前节点任务是否已经全部清空
+//                    $userTask->curTaskNode += 1;
+//                    $userTask->taskListPlot = ObjectInit();
+//                    $userTask->initialize();
+//                }
+//                break;
+//            case 5:                                                             # 每日任务
+//                my_Assert(StlUtil::dictHasProperty($userTask->taskListDaily, $taskId), ErrCode::task_no);
+//                $task = new Ins_TaskInfo($userTask->taskListDaily->$taskId);
+//                my_Assert($task->progress >= 1, ErrCode::task_progress_not_complete);   # 判断任务进度是否已完成>=1f
+//                my_Assert($task->rewardGeted < 1, ErrCode::task_reward_geted);          # 奖励不可重复领取
+//                $taskCfg = GameConfig::task_daily_getItem($taskId);                     # 任务配置数据
+//                my_Assert($taskCfg != null, ErrCode::err_const_no);
+////                Data_UserGame::Add_Exp(req()->userInfo->game->baseInfo, $taskCfg->exp);  # 发放任务奖励
+//                req()->userInfo->game->base()->Add_Exp($taskCfg->exp);          # 发放指挥官经验
+//                $userTask->dailyActivePoint += $taskCfg->activePoint;
+//                $task->rewardGeted = 1;
+//                $userTask->taskListDaily->$taskId = $task;                      # 回存下
+//                break;
+//            default:
+//                break;
+//        }
+//
+//        req()->userInfo->game->task = $userTask;                                 # 回存
+//        UserProc::updateUserInfo();
+//        return Resp::ok(array(//                                                # 返回
+//                    "gold" => req()->userInfo->game->baseInfo->gold,
+//                    "cash" => req()->userInfo->game->baseInfo->cash,
+//                    "tili" => req()->userInfo->game->baseInfo->tili,
+//                    "store" => req()->userInfo->game->store,
+//                    "task" => req()->userInfo->game->task
+//        ));
     }
 
     /**
@@ -540,14 +556,45 @@ class TaskProc {
 
 // </editor-fold>
 
+    /**
+     * 每天重置日常任务.
+     */
+    static function ResetDailyTaskCards() {
+        $store = req()->userInfo->game->store();
+        my_default_Obj($store->taskcards);
+        $dailyCards = new stdClass();
+        foreach (GameConfig::item_taskcard() as $id => $cardMo) {
+            isEditor() and $cardMo = new \sm_item_taskcard();
+            if ($cardMo->type == 2) {                                           # 1:主线;2:日程;3:圣哲;4:商店
+                $dailyCards->$id = $cardMo;
+            }
+        }
+
+        foreach ($dailyCards as $id => $cardMo) {
+            foreach ($store->taskcards as $uid => $card) {
+                $cardVo = new Ins_TaskCard($card);
+                if ($cardVo->typeId == $id) {                                   # 找到对应的实例.
+                    unset($store->taskcards->$uid);                             # 删除昨日未完成日常
+                }
+            }
+        }
+        req()->userInfo->game->store = $store;
+        // 再遍历一遍, 添加今日日常任务.
+        foreach ($dailyCards as $id => $cardMo) {
+            StoreProc::PutTaskCardInStore($id);                                 # 添加任务卡到背包
+        }
+        UserProc::updateUserInfo();                                             # 回存数据.(不管从哪里调用的, 更新肯定没错.)
+    }
+
     /**
      * 重置每日任务
+     * @deprecated since version 0 已废弃,换用任务卡接口. (2021.9.26)
      */
     static function ResetDailyTask() {
         return;
-        $userTask = new Info_UserTask(req()->userInfo->game->task);
-        $userTask->resetDailyTask();
-        req()->userInfo->game->task = $userTask;
+//        $userTask = new Info_UserTask(req()->userInfo->game->task);
+//        $userTask->resetDailyTask();
+//        req()->userInfo->game->task = $userTask;
     }
 
 //
@@ -556,89 +603,91 @@ class TaskProc {
     /**
      * 检查任务条件是否达成
      * @param Ins_TaskParams $taskParam Description
+     * @deprecated since version 0 已废弃,换用taskcard.
      */
     static function CheckTaskConditions($taskParam) {
         return;
-//        var_dump($taskParam);
-        $bUpdate = false;
-        foreach (req()->userInfo->game->task->taskListPlot as $tid => $task) {
-            $taskCfg = GameConfig::task_getItem($tid);
-            my_Assert($taskCfg != null, ErrCode::err_const_no);                 # 获取任务配置数据
-            if ($taskCfg->tasktype != $taskParam->taskType) {                   # 任务类型必须匹配
-                continue;
-            }
-            isEditor() and $task = new Ins_TaskInfo(-1);
-            if ($task->progress == 1) {                                         # 已完成的不再更新处理
-                continue;
-            }
-            if (is_null($taskCfg->canshu1)) {
-                $task->progress = 1;
-                $bUpdate = true;
-                continue;
-            }
-
-            if ($taskCfg->canshu1 == $taskParam->canshu1) {
-                $task->tag1 = $taskParam->canshu1;
-                if (null == $taskCfg->canshu2 || 0 == $taskCfg->canshu2) {
-                    $task->progress = 1;
-                    $task->tag2 = $taskParam->canshu2;
-                    $bUpdate = true;
-                } else {
-                    if (is_numeric($taskCfg->canshu2)) {
-                        $task->tag2 = max($task->tag2, $taskParam->canshu2);
-                        if ($taskCfg->canshu2 <= $taskParam->canshu2) {
-                            $bUpdate = true;
-                            $task->progress = 1;
-                        }
-                    } else {
-                        $task->tag2 = $taskParam->canshu2;
-                        if ($taskCfg->canshu2 == $taskParam->canshu2) {
-                            $bUpdate = true;
-                            $task->progress = 1;
-                        }
-                    }
-                }
-            }
-        }
-        if ($bUpdate) {
-            CornerSignEventProc::OnTask_Plot_new();
-        }
+////        var_dump($taskParam);
+//        $bUpdate = false;
+//        foreach (req()->userInfo->game->task->taskListPlot as $tid => $task) {
+//            $taskCfg = GameConfig::task_getItem($tid);
+//            my_Assert($taskCfg != null, ErrCode::err_const_no);                 # 获取任务配置数据
+//            if ($taskCfg->tasktype != $taskParam->taskType) {                   # 任务类型必须匹配
+//                continue;
+//            }
+//            isEditor() and $task = new Ins_TaskInfo(-1);
+//            if ($task->progress == 1) {                                         # 已完成的不再更新处理
+//                continue;
+//            }
+//            if (is_null($taskCfg->canshu1)) {
+//                $task->progress = 1;
+//                $bUpdate = true;
+//                continue;
+//            }
+//
+//            if ($taskCfg->canshu1 == $taskParam->canshu1) {
+//                $task->tag1 = $taskParam->canshu1;
+//                if (null == $taskCfg->canshu2 || 0 == $taskCfg->canshu2) {
+//                    $task->progress = 1;
+//                    $task->tag2 = $taskParam->canshu2;
+//                    $bUpdate = true;
+//                } else {
+//                    if (is_numeric($taskCfg->canshu2)) {
+//                        $task->tag2 = max($task->tag2, $taskParam->canshu2);
+//                        if ($taskCfg->canshu2 <= $taskParam->canshu2) {
+//                            $bUpdate = true;
+//                            $task->progress = 1;
+//                        }
+//                    } else {
+//                        $task->tag2 = $taskParam->canshu2;
+//                        if ($taskCfg->canshu2 == $taskParam->canshu2) {
+//                            $bUpdate = true;
+//                            $task->progress = 1;
+//                        }
+//                    }
+//                }
+//            }
+//        }
+//        if ($bUpdate) {
+//            CornerSignEventProc::OnTask_Plot_new();
+//        }
     }
 
     /**
      * 检查任务条件是否达成
      * @param Ins_TaskParams $taskParam Description
+     * @deprecated since version 0 已废弃,换用taskcard
      */
     static function CheckDailyTaskConditions($taskParam) {
         return;
-        $bUpdate = false;
-        $daily = req()->userInfo->game->task->taskListDaily;
-        foreach ($daily as $tid => &$task) {
-            $taskCfg = GameConfig::task_daily_getItem($tid);
-            my_Assert($taskCfg != null, ErrCode::err_const_no);                 # 获取任务配置数据
-            if ($taskCfg->tasktype != $taskParam->taskType) {                   # 任务类型必须匹配
-                continue;
-            }
-            $task = new Ins_TaskInfo($task);
-            if ($task->progress >= 1) {                                         # 已完成的不再更新处理
-                continue;
-            }
-            $task->counter++;                                                   # 计数器
-            if (is_null($taskCfg->canshu1) || $taskCfg->canshu1 == 0) {
-                $task->progress = 1;
-                $bUpdate = true;
-                continue;
-            }
-            if ($taskCfg->canshu1 == $task->counter) {
-                $task->progress = 1;
-                $bUpdate = true;
-                continue;
-            }
-        }
-
-        if ($bUpdate) {
-            CornerSignEventProc::OnTask_Daily_new();
-        }
+//        $bUpdate = false;
+//        $daily = req()->userInfo->game->task->taskListDaily;
+//        foreach ($daily as $tid => &$task) {
+//            $taskCfg = GameConfig::task_daily_getItem($tid);
+//            my_Assert($taskCfg != null, ErrCode::err_const_no);                 # 获取任务配置数据
+//            if ($taskCfg->tasktype != $taskParam->taskType) {                   # 任务类型必须匹配
+//                continue;
+//            }
+//            $task = new Ins_TaskInfo($task);
+//            if ($task->progress >= 1) {                                         # 已完成的不再更新处理
+//                continue;
+//            }
+//            $task->counter++;                                                   # 计数器
+//            if (is_null($taskCfg->canshu1) || $taskCfg->canshu1 == 0) {
+//                $task->progress = 1;
+//                $bUpdate = true;
+//                continue;
+//            }
+//            if ($taskCfg->canshu1 == $task->counter) {
+//                $task->progress = 1;
+//                $bUpdate = true;
+//                continue;
+//            }
+//        }
+//
+//        if ($bUpdate) {
+//            CornerSignEventProc::OnTask_Daily_new();
+//        }
     }
 
 // </editor-fold>
@@ -828,6 +877,7 @@ class TaskProc {
     //
     // <editor-fold defaultstate="collapsed" desc="每日任务条件检查">
     //
+//    static function Upate
 
     /**
      * 每日登陆
@@ -835,6 +885,7 @@ class TaskProc {
     static function OnUserLogin() {
         $taskParam = new Ins_TaskParams(Enum_TaskCmdType::DailyLogin);
         self::CheckDailyTaskConditions($taskParam);
+        self::CheckTaskCardConditions($taskParam);
     }
 
     /**
@@ -843,6 +894,7 @@ class TaskProc {
     static function OnHeroImprove() {
         $taskParam = new Ins_TaskParams(Enum_TaskCmdType::DailyHeroImprove);
         self::CheckDailyTaskConditions($taskParam);
+        self::CheckTaskCardConditions($taskParam);
     }
 
     /**
@@ -851,6 +903,7 @@ class TaskProc {
     static function OnPassGate() {
         $taskParam = new Ins_TaskParams(Enum_TaskCmdType::DailyGatesWin);
         self::CheckDailyTaskConditions($taskParam);
+        self::CheckTaskCardConditions($taskParam);
     }
 
     /**
@@ -859,6 +912,7 @@ class TaskProc {
     static function OnPvp() {
         $taskParam = new Ins_TaskParams(Enum_TaskCmdType::DailyPVP);
         self::CheckDailyTaskConditions($taskParam);
+        self::CheckTaskCardConditions($taskParam);
     }
 
     /**
@@ -867,6 +921,7 @@ class TaskProc {
     static function OnRankChalenge() {
         $taskParam = new Ins_TaskParams(Enum_TaskCmdType::DailyRankChalenge);
         self::CheckDailyTaskConditions($taskParam);
+        self::CheckTaskCardConditions($taskParam);
     }
 
     /**
@@ -875,6 +930,7 @@ class TaskProc {
     static function OnShopping() {
         $taskParam = new Ins_TaskParams(Enum_TaskCmdType::DailyShopping);
         self::CheckDailyTaskConditions($taskParam);
+        self::CheckTaskCardConditions($taskParam);
     }
 
     //

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

@@ -46,12 +46,12 @@ class UserProc {
             case CmdCode::cmd_user_stat_initvolc:                               # 6014 初始化火山引擎所需数据
                 return self::InitVolcData();
             case CmdCode::cmd_user_ctxBack:                                     # 6015 收集玩家反馈
-                return self::UserCtxBack();                               
+                return self::UserCtxBack();
             default:
                 Err(ErrCode::cmd_err);
         }
     }
-     
+
     /**
      * 6015 收集玩家反馈
      */
@@ -59,12 +59,12 @@ class UserProc {
         $userID = req()->uid;
         $zoneid = req()->zoneid;
         $name = req()->userInfo->game->baseInfo->name;
-        list($ctx,$type,$phoneId) = req()->paras;   
-            
-        $ret = self::insertUserCtxBack($userID, $name,$zoneid, $ctx, $phoneId,$type);  
+        list($ctx, $type, $phoneId) = req()->paras;
+
+        $ret = self::insertUserCtxBack($userID, $name, $zoneid, $ctx, $phoneId, $type);
         return Resp::ok();
     }
-    
+
     /**
      * 收集玩家反馈
      * @param type $userID
@@ -73,14 +73,14 @@ class UserProc {
      * @param type $phoneId
      * @return type
      */
-    static function insertUserCtxBack($userID,$name,$zoneid,$ctx,$phoneId,$type) {
-        $paydb = daoInst();              
+    static function insertUserCtxBack($userID, $name, $zoneid, $ctx, $phoneId, $type) {
+        $paydb = daoInst();
         $sql = "INSERT INTO `tab_userctxback` (tid,uid,name,zoneid,ctx,phoneId,type) VALUES (null,'%s','%s',%d,'%s','%s','%s')";
-        $query = sprintf($sql,$userID,$name,$zoneid,$ctx,$phoneId,$type);     
-        $result = $paydb->exec($query);          
+        $query = sprintf($sql, $userID, $name, $zoneid, $ctx, $phoneId, $type);
+        $result = $paydb->exec($query);
         return $result;
     }
-    
+
     /**
      * 6014 初始化火山引擎所需数据
      */
@@ -417,6 +417,7 @@ class UserProc {
         }
         req()->userInfo->game->baseInfo->lastLogin = now();                     # 更新下访问时间
         TaskProc::ResetDailyTask();                                             # 重置每日任务
+        TaskProc::ResetDailyTaskCards();                                        # 重置每日任务卡
         TaskProc::OnUserLogin();
         return $ret;
     }
@@ -600,9 +601,8 @@ class UserProc {
 // </editor-fold>
 //</editor-fold>
 //
-    
 // <editor-fold defaultstate="collapsed" desc="    统计信息    ">
- 
+
     /**
      * 经验 金币 钻石 统计
      * @param type $cmd
@@ -613,21 +613,21 @@ class UserProc {
      * @param type $end
      * @param type $desc
      */
-    static function CollectUserBaseParam($cmd,$type,$curVal,$changeVal,$endVal,$desc) {           
-        $item = new \stdClass();         
-        $item->cmd = $cmd;    
+    static function CollectUserBaseParam($cmd, $type, $curVal, $changeVal, $endVal, $desc) {
+        $item = new \stdClass();
+        $item->cmd = $cmd;
         $item->type = $type;
-        $item->curVal = $curVal;      
+        $item->curVal = $curVal;
         $item->changeVal = $changeVal;
         $item->endVal = $endVal;
         $item->desc = $desc;
         $item->ts = time();
-        
+
         $arr = array();
         $arr[] = $item;
-        
-        $num = gMem()->rpush("userbaseParams-".req()->uid."-". req()->zoneid, $arr);    
+
+        $num = gMem()->rpush("userbaseParams-" . req()->uid . "-" . req()->zoneid, $arr);
     }
-          
+
 //</editor-fold>
 }