瀏覽代碼

任务卡设定调整, 在剧情对话中设置显示效果.在任务卡完成时做一次性结算操作.

gwang 4 年之前
父節點
當前提交
0d2ace61d6

+ 20 - 2
Gameserver/Amfphp/base/CmdCode.php

@@ -268,10 +268,28 @@ class CmdCode {
     /**
      * [6204]日常任务 - 领取活跃度奖励
      */
-    const cmd_Task_getActiveReward = 8204;
-
+    const cmd_Task_getActiveReward = 6204;
     // <editor-fold defaultstate="collapsed" desc="任务卡相关通讯">
     // 
+    /**
+     * 任务卡 - 剧情触发任务结束
+     */
+    const cmd_taskCard_PlotFinish = 6210;
+
+    /**
+     * 任务卡 - 剧情回收任务卡
+     */
+    const cmd_taskCard_PlotExchangeTaskCard = 6211;
+
+    /**
+     * 任务卡 - 剧情赠与任务卡
+     */
+    const cmd_taskCard_PlotPresentTaskCard = 6212;
+
+    /**
+     * 任务卡 - 即时结算
+     */
+    const cmd_taskCard_FinishAndReward = 6213;
     // 
 // </editor-fold>
     // </editor-fold>

+ 5 - 0
Gameserver/Amfphp/base/ErrCode.php

@@ -546,6 +546,11 @@ class ErrCode {
      * 日常任务活跃点数不足
      */
     const task_activePoint_notenough = 3504;
+
+    /**
+     * 任务卡未找到
+     */
+    const taskCard_no = 3510;
 // </editor-fold>
     // 
     // <editor-fold defaultstate="collapsed" desc="    交互操作 36xx    ">

+ 5 - 1
Gameserver/Amfphp/index.php

@@ -103,7 +103,11 @@ class Index {
 # 返回数据, 加密层编码, 加密传输, 保障数据安全
 # ....
 # 返回数据, 传输层编码(一律deflate压缩)
-        $ret = gzdeflate($ret);                                                 # 不管请求时使用的是什么方法, 返回时一律使用deflate压缩
+        if (php_sapi_name() === 'cli') {
+            
+        } else {
+            $ret = gzdeflate($ret); # 不管请求时使用的是什么方法, 返回时一律使用deflate压缩
+        }
         $retLen = strlen($ret);                                                 # 计算下返回值长度.
         if ($retLen > (1024 * self::$bigRespInKbs)) {                           # 长度大于50k时记录超大返回值日志.
             CLog::warn("Big Response(" . req()->cmd . "):\n"                    # 带有\n转义符的时候, 必须用双引号 

+ 1 - 1
Gameserver/Amfphp/model/Const/GameConfig.php

@@ -4,7 +4,7 @@
  // 由CodeGenerator创建。
  // Copyright (C) gwang (wanggangzero@qq.com), Loyalsoft@sjz Inc
  // author: gwang 
- // 日期: 2020-11-17 14:51:03
+ // 日期: 2020-11-18 19:57:16
 ////////////////////
 
 /**

+ 1 - 1
Gameserver/Amfphp/model/Const/sm_gatelevel.php

@@ -4,7 +4,7 @@
  // 由CodeGenerator创建。
  // Copyright (C) gwang (wanggangzero@qq.com), Loyalsoft@sjz Inc
  // author: gwang 
- // 日期: 2020-11-17 11:00:23
+ // 日期: 2020-11-18 15:32:20
 ////////////////////
 
 

+ 1 - 1
Gameserver/Amfphp/model/Const/sm_hero.php

@@ -4,7 +4,7 @@
  // 由CodeGenerator创建。
  // Copyright (C) gwang (wanggangzero@qq.com), Loyalsoft@sjz Inc
  // author: gwang 
- // 日期: 2020-11-17 14:43:51
+ // 日期: 2020-11-18 17:38:07
 ////////////////////
 
 

+ 1 - 1
Gameserver/Amfphp/model/Const/sm_item_base.php

@@ -4,7 +4,7 @@
  // 由CodeGenerator创建。
  // Copyright (C) gwang (wanggangzero@qq.com), Loyalsoft@sjz Inc
  // author: gwang 
- // 日期: 2020-11-12 14:10:27
+ // 日期: 2020-11-18 10:32:23
 ////////////////////
 
 

+ 6 - 1
Gameserver/Amfphp/model/Const/sm_item_taskcard.php

@@ -4,7 +4,7 @@
  // 由CodeGenerator创建。
  // Copyright (C) gwang (wanggangzero@qq.com), Loyalsoft@sjz Inc
  // author: gwang 
- // 日期: 2020-11-12 18:07:29
+ // 日期: 2020-11-18 19:37:13
 ////////////////////
 
 
@@ -60,5 +60,10 @@ class sm_item_taskcard
     */
     public $reward;
 
+    /**
+    * @var String 完成后获得的新任务卡id,num;id,num  
+    */
+    public $newTaskCard;
+
 }
 

+ 1 - 1
Gameserver/Amfphp/model/Const/sm_item_yanlingbook.php

@@ -4,7 +4,7 @@
  // 由CodeGenerator创建。
  // Copyright (C) gwang (wanggangzero@qq.com), Loyalsoft@sjz Inc
  // author: gwang 
- // 日期: 2020-09-08 13:34:24
+ // 日期: 2020-11-18 10:08:28
 ////////////////////
 
 

+ 2 - 2
Gameserver/Amfphp/model/Const/sm_task_step.php

@@ -4,7 +4,7 @@
  // 由CodeGenerator创建。
  // Copyright (C) gwang (wanggangzero@qq.com), Loyalsoft@sjz Inc
  // author: gwang 
- // 日期: 2020-11-12 18:06:56
+ // 日期: 2020-11-18 19:47:14
 ////////////////////
 
 
@@ -35,7 +35,7 @@ class sm_task_step
     public $desc;
 
     /**
-    * @var String 任务类型: 1 杀怪 2 获得道具 3 跟NPC交谈  
+    * @var Int32 任务类型: 201 杀怪 202 获得道具 203 跟NPC交谈  
     */
     public $tasktype;
 

+ 3 - 2
Gameserver/Amfphp/model/User/EnumTaskType.php

@@ -26,7 +26,8 @@ class EnumTaskType extends Enum {
     const DailyRankChalenge = 105;
     const DailyShopping = 106;
     // ---------  任务卡  --------
-
-    const GainItem = 201;
+    const KillMonster = 201;
+    const GainItem = 202;
+    const PlotOver = 203;
 
 }

+ 76 - 6
Gameserver/Amfphp/process/TaskProc.php

@@ -22,13 +22,76 @@ class TaskProc {
             case CmdCode::cmd_Task_getActiveReward:                             # 6204 领取日常任务活跃度阶段奖励
                 return TaskProc::getActiveReward($req);
 //---------------- 任务卡相关通讯 -----------------------------------------------
-
-
+            case CmdCode::cmd_taskCard_PlotFinish:                              # 6210 任务卡剧情对话
+                return self::PlotFinish($req);
+            case CmdCode::cmd_taskCard_PlotExchangeTaskCard:                    # 6211 任务卡兑换奖励
+                return self::PlotExchangeTaskCard($req);
+            case CmdCode::cmd_taskCard_PlotPresentTaskCard:                     # 6212 剧情赠送任务卡
+                return self::PlotPresetTaskCard($req);
+            case CmdCode::cmd_taskCard_FinishAndReward:                         # 6213 任务卡完成,并即时结算
+                return self::ImmetRewardTaskCard($req);
             default:
                 return Err(ErrCode::cmd_err);
         }
     }
 
+    // <editor-fold defaultstate="collapsed" desc="任务卡接口">
+    // 
+    /**
+     * [6210]剧情对话-触发任务卡结束条件检测(中间某个step结束,进入下一个step)
+     * @param req $req
+     */
+    static function PlotFinish($req) {
+        // 触发一下任务检查
+        list($gate_or_npc_id, $stage) = $req->paras;
+        $bUpdate = self::OnPlotOver($gate_or_npc_id, $stage);
+        return Resp::ok(array('store' => $req->userInfo->game->store,
+                    'taskCardUpdate' => $bUpdate));
+    }
+
+    /**
+     * [6211] 任务卡-兑换奖励
+     * @param type $req
+     */
+    static function PlotExchangeTaskCard($req) {
+        Err(ErrCode::err_method_notimplement);
+    }
+
+    /**
+     * [6212] 任务卡- 剧情对话奖励任务卡
+     * @param req $req
+     */
+    static function PlotPresetTaskCard($req) {
+        // 发放任务卡
+        list($rwdStr) = $req->paras;
+        $err = StoreProc::AddMultiItemInStore($req, $rwdStr);
+        my_Assert(ErrCode::ok == $err, $err);
+        UserProc::updateUserInfo();
+        return Resp::ok(array('store' => $req->userInfo->game->store));
+    }
+
+    /**
+     * [6213]任务卡 - 即时奖励型任务卡
+     * @param req $req
+     */
+    static function ImmetRewardTaskCard($req) {
+        // 销毁任务卡, 发放奖励
+        list($taskCardUID) = $req->paras;
+        my_Assert(StlUtil::dictHasProperty($req->userInfo->game->store->taskcards, $taskCardUID), ErrCode::taskCard_no); # 防御
+        $taskCard = new TaskCardVo($req->userInfo->game->store->taskcards->$taskCardUID); # 任务卡对象
+        if (strlen($taskCard->mo()->reward) > 0) {                              # 防御奖励串为空
+            StoreProc::AddMultiItemInStore($req, $taskCard->mo()->reward);      # 发放奖励
+        }
+        if (strlen($taskCard->mo()->newTaskCard) > 0) {                         # 防御新卡串为空
+            StoreProc::AddMultiItemInStore($req, $taskCard->mo()->newTaskCard); # 发放新任务卡
+        }
+        StlUtil::dictRemove($req->userInfo->game->store->taskcards, $taskCardUID); # 移除任务卡
+        UserProc::updateUserInfo();                                             # 回存玩家数据
+        return Resp::ok(array('store' => $req->userInfo->game->store));         # 返回值更新背包
+    }
+
+    // 
+// </editor-fold>
     // <editor-fold defaultstate="collapsed" desc="  任务接口 ">
 
     /**
@@ -433,10 +496,12 @@ class TaskProc {
             }
         }
 
-        if ($bUpdate) {
-            Resp::addTag("isTaskUpdated", true);                                # 附加tag信息, 任务有更新
-            CornerSignEventProc::OnTask_Daily_new(req());
-        }
+        return $bUpdate;
+    }
+
+    static function OnKillMonster($monsterID, $num) {
+        $taskParam = new TaskParams(EnumTaskType::KillMonster, $monsterID, $num);
+        self::CheckTaskCardConditions($taskParam);
     }
 
     /**
@@ -447,6 +512,11 @@ class TaskProc {
         self::CheckTaskCardConditions($taskParam);
     }
 
+    static function OnPlotOver($gate_or_npc_id, $stage) {
+        $taskParam = new TaskParams(EnumTaskType::PlotOver, $gate_or_npc_id, "$stage");
+        self::CheckTaskCardConditions($taskParam);
+    }
+
     // 
     // </editor-fold>
 //

+ 8 - 14
Gameserver/Amfphp/test.php

@@ -12,19 +12,13 @@ echo ("phpver: " . PHP_VERSION . PHP_EOL);
 
 
 
-function isInt($var) {
-    $int = intval($var);
-    if ((string) $int === (string) $var) {
-        return true;
-    } else {
-        return false;
-    }
-}
 
-var_dump(is_int("35"));
-var_dump(is_int(35));
-$var = "35 ";
-var_dump(isInt($var));
-var_dump(isInt(ErrCode::ok));
-var_dump(is_int(ErrCode::err_assert));
 
+$goodsStr = "";
+
+$ary = explode(";", $goodsStr);
+var_dump($ary);
+foreach ($ary as $value) {
+    var_dump($value);
+}
+var_dump(strlen(null));

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

@@ -15,6 +15,7 @@
             <file>file:/D:/local_svn/0_ylsj2019/ylsj2019Server/Gameserver/Amfphp/model/User/TaskStepVo.php</file>
             <file>file:/D:/local_svn/0_ylsj2019/ylsj2019Server/Gameserver/Amfphp/model/User/TaskCardVo.php</file>
             <file>file:/D:/local_svn/0_ylsj2019/ylsj2019Server/Gameserver/Amfphp/model/User/EnumTaskType.php</file>
+            <file>file:/D:/local_svn/0_ylsj2019/ylsj2019Server/Gameserver/Amfphp/base/ErrCode.php</file>
             <file>file:/D:/local_svn/0_ylsj2019/ylsj2019Server/Gameserver/Amfphp/process/StoreProc.php</file>
             <file>file:/D:/local_svn/0_ylsj2019/ylsj2019Server/Gameserver/Amfphp/process/TaskProc.php</file>
             <file>file:/D:/local_svn/0_ylsj2019/ylsj2019Server/Gameserver/Amfphp/base/CmdCode.php</file>