Parcourir la source

新加任务类型

cyzhao il y a 9 mois
Parent
commit
e0ce8e8a6b

+ 9 - 4
Gameserver/App/model/User/Enum_ActiveTaskCmdType.php

@@ -8,7 +8,8 @@ namespace loyalsoft;
 
 class Enum_ActiveTaskCmdType extends Enum {
     const DailyLogin = 101;       //每日登录游戏    
-    const OnLogin_X = 102;       //登录第X天 
+    const OnLogin_X = 102;       //登录第X天
+    const OnReceiveTaskPrize = 103;       //领取任务奖励
     
     const PassGate_X = 201;       //通关第X关
     const FightNumMainGate = 202;       //参与主线关卡1次
@@ -21,8 +22,11 @@ class Enum_ActiveTaskCmdType extends Enum {
     const RankPrize_Num = 208;       //208: 领取排行榜元宝奖励X次;参数1:无;参数2:次数(数值)
     const UserLevel_X = 209;       //209: 玩家等级到达X级;参数1:无;参数2:等级(数值)
     const PassGate_X_state = 210;       //通关第X关
-
-
+    
+    const FightSweepGate = 211;       //扫荡
+    const FightRankPrize_Num = 212;       //领取战力榜元宝奖励X次;参数1:无;参数2:次数(数值)
+    const CloseSkill = 213;       //封印技能
+    
 //    const FightNumRaceGate = 204;       //参与竞速副本1次
 //    const PassNumRaceGate = 205;       //通关竞速副本5次
     
@@ -50,5 +54,6 @@ class Enum_ActiveTaskCmdType extends Enum {
     const OpenNumAnyBox = 903;       //开任意宝箱1次
     const BuyTiliOrLookGuanggao = 904;       //购买或观看广告获得体力1次
     const Recharge = 905;               //任意充值1次 
-     
+    const BuyGold = 906;               //购买铜钱一次
+         
 }

+ 20 - 5
Gameserver/App/model/User/Ins_TaskStep_Active.php

@@ -94,7 +94,8 @@ class Ins_TaskStep_Active extends Object_ext {
                 || $this->mo()->cmd == Enum_ActiveTaskCmdType::AnyEquipUpLevel_X || $this->mo()->cmd == Enum_ActiveTaskCmdType::AllEquipUpLevel_X || $this->mo()->cmd == Enum_ActiveTaskCmdType::OnLogin_X #
                 || $this->mo()->cmd == Enum_ActiveTaskCmdType::PassLayer_ChallengeGate || $this->mo()->cmd == Enum_ActiveTaskCmdType::UserLevel_X || $this->mo()->cmd == Enum_ActiveTaskCmdType::RankPrize_Num#
                 || $this->mo()->cmd == Enum_ActiveTaskCmdType::PassMainChallengeGate_X_Num || $this->mo()->cmd == Enum_ActiveTaskCmdType::CompleteNumQiLing || $this->mo()->cmd == Enum_ActiveTaskCmdType::CompleteNumSpecialQiLing #
-                || $this->mo()->cmd == Enum_ActiveTaskCmdType::FightGate_X || $this->mo()->cmd == Enum_ActiveTaskCmdType::PassGate_X_state
+                || $this->mo()->cmd == Enum_ActiveTaskCmdType::FightGate_X || $this->mo()->cmd == Enum_ActiveTaskCmdType::PassGate_X_state || $this->mo()->cmd == Enum_ActiveTaskCmdType::CloseSkill ||$this->mo()->cmd == Enum_ActiveTaskCmdType::FightRankPrize_Num #
+                || $this->mo()->cmd == Enum_ActiveTaskCmdType::BuyGold || $this->mo()->cmd == Enum_ActiveTaskCmdType::OnReceiveTaskPrize || $this->mo()->cmd == Enum_ActiveTaskCmdType::FightSweepGate
                 ;
     }
 
@@ -118,6 +119,23 @@ class Ins_TaskStep_Active extends Object_ext {
         }
 
         switch ($mo->cmd) {
+            case Enum_ActiveTaskCmdType::FightSweepGate:           
+                return ctx()->gates->fightSweepNum;
+            case Enum_ActiveTaskCmdType::OnReceiveTaskPrize:
+                $point = ctx()->task->dailyTaskPoint;
+                $point += ctx()->task->weekTaskPoint;
+                return $point;
+            case Enum_ActiveTaskCmdType::BuyGold:
+                $arr = ctx()->privateState->goldShopReceived;
+                
+                return count($arr);
+            case Enum_ActiveTaskCmdType::FightRankPrize_Num:
+                $arr2 = ctx()->privateState->rankReward_drawed_fightPower;
+                $num = count($arr2);
+                return $num;
+            case Enum_ActiveTaskCmdType::CloseSkill:
+                $arr = ctx()->privateData()->skillReLocked;                             
+                return count($arr);
             case Enum_ActiveTaskCmdType::PassGate_X_state:
                 $gateId = $para0;
                 if(StlUtil::dictHasProperty(ctx()->gates->GateList, $gateId) && ctx()->gates->GateList->$gateId->pass > 0){                   
@@ -148,10 +166,7 @@ class Ins_TaskStep_Active extends Object_ext {
             case Enum_ActiveTaskCmdType::RankPrize_Num:
                 $arr = ctx()->privateState->rankReward_drawed_MainGate;
                 $num = count($arr);
-
-                $arr2 = ctx()->privateState->rankReward_drawed_fightPower;
-                $num += count($arr2);
-
+               
                 return $num;
             case Enum_ActiveTaskCmdType::UserLevel_X:
                 return ctx()->baseInfo->level;

+ 3 - 2
Gameserver/App/process/FightProc.php

@@ -101,6 +101,7 @@ class FightProc {
         } else {                                                                # 封印
             my_Assert(count($pri->skillReLocked) < $pri->skillLockerNumber, "超出封印上限!");
             $pri->skillReLocked[] = $skillTypeId;
+            TaskProc::OnCloseSkill();
         }
         return Resp::ok();
     }
@@ -282,7 +283,7 @@ class FightProc {
             }
         }
 
-
+        TaskProc::OnFightSweepGate();
         UserProc::updateUserInfo();
         $ret = array(
             'gold' => ctx()->baseInfo->gold,
@@ -1233,7 +1234,7 @@ class FightProc {
         if (gMem()->hexists($memKey, $fightPower)) {
             StoreProc::AddMultiItemInStore($mo->reward);
             ctx()->privateState->rankReward_drawed_fightPower[] = $fightPower;
-            TaskProc::OnRankPrize_Num();
+            TaskProc::OnFightRankPrize_Num();
         }
 
         $tag = self::isExistNoDrawed_FightPower();

+ 1 - 1
Gameserver/App/process/ShopProc.php

@@ -421,7 +421,7 @@ class ShopProc {
                     }
                 }
 
-
+                TaskProc::OnBuyGold();
                 $user->privateState->goldShopReceived[] = $typeId;
                 StoreProc::AddMultiItemInStore($mo->reward);
 

+ 43 - 1
Gameserver/App/process/TaskProc.php

@@ -201,10 +201,13 @@ class TaskProc {
                 StoreProc::$reward[] = $ins_activeTaskInfo->mo()->activePoint;
                 break;
             case Enum_ActiveTaskType::DailyTask:
+                TaskProc::OnReceiveTaskPrize();
+                
                 ctx()->task->dailyTaskPoint += $activePointArr[1];
                 StoreProc::$reward[] = $ins_activeTaskInfo->mo()->activePoint;
                 break;
             case Enum_ActiveTaskType::WeekTask:
+                TaskProc::OnReceiveTaskPrize();
                 ctx()->task->weekTaskPoint += $activePointArr[1];
                 StoreProc::$reward[] = $ins_activeTaskInfo->mo()->activePoint;
                 break;
@@ -693,7 +696,46 @@ class TaskProc {
         $taskEventArg = new Ins_TaskEventArgs(Enum_ActiveTaskCmdType::UserLevel_X, Enum_PropelType::set, $lv, array());
         self::CheckActiveTaskConditions($taskEventArg);
     }
-
+    /**
+     * 扫荡
+     */
+    static function OnFightSweepGate() {
+        $taskEventArg = new Ins_TaskEventArgs(Enum_ActiveTaskCmdType::FightSweepGate, Enum_PropelType::add, 1, array());
+        self::CheckActiveTaskConditions($taskEventArg);
+    }
+    
+    /**
+     * 领取任务奖励
+     */
+    static function OnReceiveTaskPrize() {
+        $taskEventArg = new Ins_TaskEventArgs(Enum_ActiveTaskCmdType::OnReceiveTaskPrize, Enum_PropelType::add, 1, array());
+        self::CheckActiveTaskConditions($taskEventArg);
+    }
+    
+    /**
+     * 购买铜钱一次
+     */
+    static function OnBuyGold() {
+        $taskEventArg = new Ins_TaskEventArgs(Enum_ActiveTaskCmdType::BuyGold, Enum_PropelType::add, 1, array());
+        self::CheckActiveTaskConditions($taskEventArg);
+    }
+    
+    /**
+     * 领取战力榜元宝奖励X次;参数1:无;参数2:次数(数值)
+     */
+    static function OnFightRankPrize_Num() {
+        $taskEventArg = new Ins_TaskEventArgs(Enum_ActiveTaskCmdType::FightRankPrize_Num, Enum_PropelType::add, 1, array());
+        self::CheckActiveTaskConditions($taskEventArg);
+    }
+    
+    /**
+     * 封印技能
+     */
+    static function OnCloseSkill() {
+        $taskEventArg = new Ins_TaskEventArgs(Enum_ActiveTaskCmdType::CloseSkill, Enum_PropelType::add, 1, array());
+        self::CheckActiveTaskConditions($taskEventArg);
+    }
+    
 // </editor-fold>
 //
 // <editor-fold defaultstate="collapsed" desc="活动任务是否完成的检测-">