cmd) { case CmdCode::cmd_task_getInfo: # 6201 return TaskProc::getTaskInfo(); case CmdCode::cmd_task_getReward: # 6202 return TaskProc::getReward(); case CmdCode::cmd_task_getAchieveReward: # 6203 领取成就奖励 return TaskProc::getAchieveReward(); case CmdCode::cmd_task_receiveActiveTaskReward: # 6204 领取活动任务奖励 return TaskProc::receiveActiveTaskReward(); case CmdCode::cmd_task_receiveActivePointBoxReward: # 6205 领取活跃点宝箱奖励 return TaskProc::receiveActivePointBoxReward(); case CmdCode::cmd_task_prizesAllreceived: # 6206 任务奖励一键领取 return TaskProc::taskPrizesAllreceived(); case CmdCode::cmd_task_lookGuangGao: # 6207 观看广告 通知后端 return TaskProc::LookGuangGao(); default: Err(ErrCode::cmd_err); } } /** * 6207 观看广告 通知后端 * @return type */ public static function LookGuangGao() { //list($type) = req()->paras; TaskProc::OnLookGuanggao(); UserProc::updateUserInfo(); return Resp::ok(array("task" => ctx()->task, )); } /** * 6206 任务奖励一键领取 */ public static function taskPrizesAllreceived() { list($type) = req()->paras; $dic = ctx()->task->activeTaskInfo; $arr = array(); if ($type == Enum_ActiveTaskType::Day7) { $startDay = TimeUtil::totalDays(ctx()->task->day7_startTs); $endDay = $startDay + 6; if (TimeUtil::totalDays() <= $endDay) { $num = TimeUtil::totalDays() - $startDay; foreach ($dic as $uid => $task) { $t = new Ins_TaskStep_Active($task); if ($t->mo()->type == $type && $t->mo()->day <= $num + 1 && $t->state == Enum_TaskCardStateType::finish) { $arr[] = $uid; } } } } else { foreach ($dic as $uid => $task) { $t = new Ins_TaskStep_Active($task); if ($t->mo()->type == $type && $t->state == Enum_TaskCardStateType::finish) { $arr[] = $uid; } } } $point = 0; foreach ($arr as $uid) { $t = new Ins_TaskStep_Active(ctx()->task->activeTaskInfo->$uid); if ($t->mo()->activePoint != null) { $list = explode(',', $t->mo()->activePoint); $point += $list[1]; } StoreProc::AddMultiItemInStore($t->mo()->prizes); if ($t->mo()->prizes != null) { $reward = explode(',', $t->mo()->prizes); if (GameConfig::item_getItem($reward[0])->itemType == 201) { SystemProc::GetGem_GreaterOrangeQual_Active(req()->zoneid, ctx()->baseInfo->name, $reward[0]); } } $t->state = Enum_TaskCardStateType::drawed; ctx()->task->activeTaskInfo->$uid = $t; } switch ($type) { case Enum_ActiveTaskType::Day7: ctx()->task->day7Point += $point; break; case Enum_ActiveTaskType::DailyTask: ctx()->privateData()->battlePass_taskPoint += $point; ctx()->task->dailyTaskPoint += $point; TaskProc::OnReceiveTaskPrize(); break; case Enum_ActiveTaskType::WeekTask: ctx()->privateData()->battlePass_taskPoint += $point; ctx()->task->weekTaskPoint += $point; TaskProc::OnReceiveTaskPrize(); break; default: break; } if ($point != 0) { $str = "5," . $point; StoreProc::$reward[] = $str; } UserProc::updateUserInfo(); return Resp::ok(array("task" => ctx()->task, "store" => ctx()->store, 'reward' => StoreProc::$reward, 'reward_Gem' => StoreProc::$reward_Gem, 'reward_equip' => StoreProc::$reward_equip, 'gold' => ctx()->baseInfo->gold, 'cash' => ctx()->baseInfo->cash, 'heros' => ctx()->heros, 'privateState' => ctx()->privateState, )); } /** * 6205 领取活跃点宝箱奖励 */ public static function receiveActivePointBoxReward() { list($type, $typeId) = req()->paras; $point = 0; switch ($type) { case Enum_ActiveTaskType::Day7: $point = ctx()->task->day7Point; break; case Enum_ActiveTaskType::DailyTask: $point = ctx()->task->dailyTaskPoint; break; case Enum_ActiveTaskType::WeekTask: $point = ctx()->task->weekTaskPoint; break; default: break; } my_Assert($point >= $typeId, ErrCode::task_CanotReviced_ActivePointBox); $mo = GameConfig::activepointreward_getItem($type, $typeId); my_Assert($mo != null, ErrCode::err_const_no); StoreProc::AddMultiItemInStore($mo->reward); $strId = $type . "-" . $typeId; my_Assert(!in_array($strId, ctx()->task->activePointReceived), ErrCode::task_RepeatReviced_ActivePointBox); ctx()->task->activePointReceived[] = $strId; UserProc::updateUserInfo(); return Resp::ok(array("task" => ctx()->task, "store" => ctx()->store, "reward" => StoreProc::$reward, 'reward_Gem' => StoreProc::$reward_Gem, 'reward_equip' => StoreProc::$reward_equip, 'gold' => ctx()->baseInfo->gold, 'cash' => ctx()->baseInfo->cash, 'heros' => ctx()->heros, )); } /** * 6204 领取活动任务奖励 * @return type */ public static function receiveActiveTaskReward() { list($uid) = req()->paras; my_Assert(StlUtil::dictHasProperty(ctx()->task->activeTaskInfo, $uid), ErrCode::task_NoExist); $ins_activeTaskInfo = new Ins_TaskStep_Active(ctx()->task->activeTaskInfo->$uid); if ($ins_activeTaskInfo->mo()->type == Enum_ActiveTaskType::Day7) { my_Assert(ctx()->task->day7_startTs > 0, ErrCode::task_NotOpen_Day7Happy); $startDay = TimeUtil::totalDays(ctx()->task->day7_startTs); $endDay = $startDay + 6; my_Assert(TimeUtil::totalDays() <= $endDay, ErrCode::task_DownTsLimit); $num = TimeUtil::totalDays() - $startDay; my_Assert($ins_activeTaskInfo->mo()->day <= $num + 1, ErrCode::task_DownTsLimit); } my_Assert($ins_activeTaskInfo->cur >= $ins_activeTaskInfo->max(), ErrCode::task_CanotPriceReviced); my_Assert($ins_activeTaskInfo->state == Enum_TaskCardStateType::finish, ErrCode::task_CanotPriceReviced); if ($ins_activeTaskInfo->mo()->prizes != null) { $reward = explode(',', $ins_activeTaskInfo->mo()->prizes); if (GameConfig::item_getItem($reward[0])->itemType == 201) { SystemProc::GetGem_GreaterOrangeQual_Active(req()->zoneid, ctx()->baseInfo->name, $reward[0]); } } StoreProc::AddMultiItemInStore($ins_activeTaskInfo->mo()->prizes); ctx()->task->activeTaskInfo->$uid->state = Enum_TaskCardStateType::drawed; ctx()->task->activeTaskInfo->$uid->drawTs = now(); //金蛇任务特殊处理 self::InitFlipCardTask($uid); //主线任务 self::InitNextMainTask($uid); $activePointArr = explode(',', $ins_activeTaskInfo->mo()->activePoint); switch ($ins_activeTaskInfo->mo()->type) { case Enum_ActiveTaskType::Day7: ctx()->task->day7Point += $activePointArr[1]; StoreProc::$reward[] = $ins_activeTaskInfo->mo()->activePoint; break; case Enum_ActiveTaskType::DailyTask: ctx()->privateData()->battlePass_taskPoint += $activePointArr[1]; ctx()->task->dailyTaskPoint += $activePointArr[1]; StoreProc::$reward[] = $ins_activeTaskInfo->mo()->activePoint; TaskProc::OnReceiveTaskPrize(); break; case Enum_ActiveTaskType::WeekTask: ctx()->privateData()->battlePass_taskPoint += $activePointArr[1]; ctx()->task->weekTaskPoint += $activePointArr[1]; StoreProc::$reward[] = $ins_activeTaskInfo->mo()->activePoint; TaskProc::OnReceiveTaskPrize(); break; default: break; } GuideProc::EquipLvUp_Guide_Trigger($ins_activeTaskInfo->typeId); UserProc::updateUserInfo(); return Resp::ok(array("task" => ctx()->task, "store" => ctx()->store, 'reward' => StoreProc::$reward, 'reward_Gem' => StoreProc::$reward_Gem, 'reward_equip' => StoreProc::$reward_equip, 'gold' => ctx()->baseInfo->gold, 'cash' => ctx()->baseInfo->cash, 'heros' => ctx()->heros, 'privateState' => ctx()->privateState, 'tili_ts' => ctx()->baseInfo->tili_ts, "tili" => ctx()->baseInfo->tili, )); } static function InitNextMainTask($uid) { $ins_activeTaskInfo = new Ins_TaskStep_Active(ctx()->task->activeTaskInfo->$uid); if ($ins_activeTaskInfo->mo()->type != Enum_ActiveTaskType::MainTask) { return; } $nextId = $ins_activeTaskInfo->mo()->next; if ($nextId != null) { StlUtil::dictRemove(ctx()->task->activeTaskInfo, $uid); self::MainTaskInit($nextId); } } static function InitFlipCardTask($uid) { $ins_activeTaskInfo = new Ins_TaskStep_Active(ctx()->task->activeTaskInfo->$uid); if ($ins_activeTaskInfo->mo()->type != Enum_ActiveTaskType::FlipCardLotteryTask) { return; } if ($ins_activeTaskInfo->mo()->next == 0) { return; } $nextId = $ins_activeTaskInfo->mo()->next; if ($nextId != null) { $ins_TaskStep_Active = new Ins_TaskStep_Active($nextId); $ins_TaskStep_Active->uid = $uid; $ins_TaskStep_Active->cur = $ins_activeTaskInfo->cur; $ins_TaskStep_Active->state = Enum_TaskCardStateType::ing; ctx()->task->activeTaskInfo->$uid = $ins_TaskStep_Active; self::autoRecoverState_activeTask(); } } /** * 6203 领取成就奖励 * @return type */ public static function getAchieveReward() { list($typeId) = req()->paras; $mo = GameConfig::achieve_getItem($typeId); my_Assert($mo != null, ErrCode::err_const_no); my_Assert(StlUtil::dictHasProperty(ctx()->task->achieveDic, $typeId), ErrCode::err_const_no); $achieveDic = ctx()->task->achieveDic->$typeId; $list = explode(',', $mo->condition); $length = count($list); my_Assert($achieveDic->val >= $achieveDic->max, ErrCode::task_CanotPriceReviced); my_Assert($achieveDic->received < $achieveDic->max, ErrCode::task_PriceRepeatReviced); $index = 0; foreach ($list as $k => $num) { if ($num == $achieveDic->max) { $index = $k; break; } } //领取奖励 $pList = explode(';', $mo->reward); StoreProc::AddMultiItemInStore($pList[$index]); //下一个max if ($index + 1 < $length) { $achieveDic->max = $list[$index + 1]; } ctx()->task->achieveDic->$typeId = $achieveDic; UserProc::updateUserInfo(); return Resp::ok(array( "achieve" => ctx()->task->achieveDic, "cash" => ctx()->baseInfo->cash, )); } public static function getTaskInfo() { //list($type) = req()->paras; //武器uid return Resp::ok(array("task" => ctx()->task, )); } static function ResetTask() { // self::DailyTaskReset(); // self::ClearDay7Task(); // $week = date("w"); // if ($week == 1) {//每周一 第一次登录的时候刷新 // self::WeekTaskReset(); // } } static function ClearDay7Task() { if (ctx()->task->day7_startTs > 0) { $startDay = TimeUtil::totalDays(ctx()->task->day7_startTs); $endDay = $startDay + 6; if (TimeUtil::totalDays() > $endDay) { self::ClearActiveTask(Enum_ActiveTaskType::Day7); self::clearActivePointRewardReceived(Enum_ActiveTaskType::Day7); ctx()->task->day7_startTs = 0; } } } /** * 7日狂欢数据重置 */ public static function Day7TaskReset() { // if (!FightProc::isFunUnlock(6)) { // return; // } if (ctx()->task->day7_startTs == 0) { $tag = true; foreach (ctx()->task->activeTaskInfo as $uid => $val) { $taskMo = GameConfig::activeTask_getItem($val->typeId); if ($taskMo->type == 1) { $tag = false; break; } } if ($tag) {//7日的数据初始化 ctx()->task->day7Point = 0; ctx()->task->day7_startTs = now(); self::initActiveTask(Enum_ActiveTaskType::Day7); self::autoRecoverState_activeTask(); } } } static function ClearActiveTask($type) { $arr = array(); foreach (ctx()->task->activeTaskInfo as $uid => $val) { $taskMo = GameConfig::activeTask_getItem($val->typeId); if ($taskMo->type == $type) { $arr[] = $uid; } } if (count($arr) > 0) { foreach ($arr as $uid) { StlUtil::dictRemove(ctx()->task->activeTaskInfo, $uid); } } } /** * 清理活跃点宝箱领取记录 * @param type $type */ static function clearActivePointRewardReceived($type = 1) { $reward = ctx()->task->activePointReceived; $arr = array(); foreach ($reward as $val) { $str = explode('-', $val); if ($str[0] == $type) { $arr[] = $val; } } if (count($arr) > 0) { foreach ($arr as $sId) { StlUtil::arrayRemove(ctx()->task->activePointReceived, $sId); } } } static function initActiveTask($type) { $day7List = GameConfig::activeTask_type_getItemArray($type); $length = ctx()->task->activeTaskLength; foreach ($day7List as $key => $task) { $length += 1; $ins_TaskStep_Active = new Ins_TaskStep_Active($task->id); $ins_TaskStep_Active->uid = $length; $ins_TaskStep_Active->state = Enum_TaskCardStateType::ing; ctx()->task->activeTaskInfo->$length = $ins_TaskStep_Active; } ctx()->task->activeTaskLength = $length; } /** * 日常 */ static function DailyTaskReset($unlock = false) { if (!$unlock && !FightProc::isFunUnlock(5)) {//之所以这有两个判断是因为这个 活动解锁的代码监测位置问题,fightProc 里解锁监测代码在 $gateInfo->tz_state = $index;之前了 这个位置没有办法解锁 return; } self::ClearActiveTask(Enum_ActiveTaskType::DailyTask); self::initActiveTask(Enum_ActiveTaskType::DailyTask); self::autoRecoverState_activeTask(); ctx()->task->dailyTaskPoint = 0; self::clearActivePointRewardReceived(Enum_ActiveTaskType::DailyTask); } /** * 周常 */ static function WeekTaskReset($unlock = false) { if (!$unlock && !FightProc::isFunUnlock(5)) {//之所以这有两个判断是因为这个 活动解锁的代码监测位置问题,fightProc 里解锁监测代码在 $gateInfo->tz_state = $index;之前了 这个位置没有办法解锁 return; } self::ClearActiveTask(Enum_ActiveTaskType::WeekTask); self::initActiveTask(Enum_ActiveTaskType::WeekTask); self::autoRecoverState_activeTask(); ctx()->task->weekTaskPoint = 0; self::clearActivePointRewardReceived(Enum_ActiveTaskType::WeekTask); } static function MainTaskInit($id) { $length = ctx()->task->activeTaskLength; $length += 1; $ins_TaskStep_Active = new Ins_TaskStep_Active($id); $ins_TaskStep_Active->uid = $length; $ins_TaskStep_Active->state = Enum_TaskCardStateType::ing; ctx()->task->activeTaskInfo->$length = $ins_TaskStep_Active; ctx()->task->activeTaskLength = $length; self::autoRecoverState_activeTask(); } static function checkMainTask() { $activeTaskInfo = ctx()->task->activeTaskInfo; $tag = false; foreach ($activeTaskInfo as $key => $task) { $ins_TaskStep_Active = new Ins_TaskStep_Active($task); if ($ins_TaskStep_Active->mo()->type == Enum_ActiveTaskType::MainTask) { $tag = true; break; } } if (!$tag) { TaskProc::MainTaskInit(glc()->FirstMainTaskId); } self::autoRecoverState_activeTask(); } // static function MainTaskCheck_oldUserDate() { // $dic = ctx()->task->activeTaskInfo; // $tag = false; // foreach ($dic as $uid => $task) { // $taskItem = new Ins_TaskStep_Active($task); // if ($taskItem->mo()->type == Enum_ActiveTaskType::MainTask) { // $tag = true; // break; // } // } // // if (!$tag) { // self::MainTaskInit(glc()->FirstMainTaskId); // } // } // /** * 登录 */ static function OnLogin_Daily() { $taskEventArg = new Ins_TaskEventArgs(Enum_ActiveTaskCmdType::DailyLogin, Enum_PropelType::add, 1, array()); self::CheckActiveTaskConditions($taskEventArg); } /** * 改名字 */ static function OnReName() { $taskEventArg = new Ins_TaskEventArgs(Enum_ActiveTaskCmdType::ReName, Enum_PropelType::add, 1, array()); self::CheckActiveTaskConditions($taskEventArg); } /** * 登录第X天 */ static function OnLogin_day7() { $taskEventArg = new Ins_TaskEventArgs(Enum_ActiveTaskCmdType::OnLogin_X, Enum_PropelType::set, 1, array()); self::CheckActiveTaskConditions($taskEventArg); } /** * 登录第X天 */ static function OnLogin_Accumulate() { $taskEventArg = new Ins_TaskEventArgs(Enum_ActiveTaskCmdType::OnLogin_Accumulate, Enum_PropelType::add, 1, array()); self::CheckActiveTaskConditions($taskEventArg); } static function OnLogin_Accumulate_FlipCard() { $taskEventArg = new Ins_TaskEventArgs(Enum_ActiveTaskCmdType::OnLogin_Accumulate_FlipCard, Enum_PropelType::add, 1, array()); self::CheckActiveTaskConditions($taskEventArg); } /** * 通关第X关 */ static function OnPassGate_X($gateId) { $taskEventArg = new Ins_TaskEventArgs(Enum_ActiveTaskCmdType::PassGate_X, Enum_PropelType::add, 1, array($gateId)); self::CheckActiveTaskConditions($taskEventArg); } /** * 通关第X关 */ static function OnPassGate_X_state($gateId) { $taskEventArg = new Ins_TaskEventArgs(Enum_ActiveTaskCmdType::PassGate_X_state, Enum_PropelType::add, 1, array($gateId)); self::CheckActiveTaskConditions($taskEventArg); } /** * 参与主线关卡1次 */ static function OnFightNumMainGate() { $taskEventArg = new Ins_TaskEventArgs(Enum_ActiveTaskCmdType::FightNumMainGate, Enum_PropelType::add, 1, array()); self::CheckActiveTaskConditions($taskEventArg); } /** * 参与挑战副本1次 */ static function OnFightNumChallengeGate() { $taskEventArg = new Ins_TaskEventArgs(Enum_ActiveTaskCmdType::FightNumChallengeGate, Enum_PropelType::add, 1, array()); self::CheckActiveTaskConditions($taskEventArg); } /** * 通关挑战关卡第X关 */ static function OnPassLayer_ChallengeGate($num) { $taskEventArg = new Ins_TaskEventArgs(Enum_ActiveTaskCmdType::PassLayer_ChallengeGate, Enum_PropelType::max, $num, array()); self::CheckActiveTaskConditions($taskEventArg); } /** * 通关竞速副本5次 */ // static function OnPassNumRaceGate() { // $taskEventArg = new Ins_TaskEventArgs(Enum_ActiveTaskCmdType::PassNumRaceGate, Enum_PropelType::add, 1, array()); // self::CheckActiveTaskConditions($taskEventArg); // } /** * 完成5次启灵 */ static function OnCompleteNumQiLing() { $taskEventArg = new Ins_TaskEventArgs(Enum_ActiveTaskCmdType::CompleteNumQiLing, Enum_PropelType::add, 1, array()); self::CheckActiveTaskConditions($taskEventArg); } /** * 完成1次关键启灵 */ static function OnCompleteNumSpecialQiLing() { $taskEventArg = new Ins_TaskEventArgs(Enum_ActiveTaskCmdType::CompleteNumSpecialQiLing, Enum_PropelType::add, 1, array()); self::CheckActiveTaskConditions($taskEventArg); } /** * 镶嵌3个普通品质以上宝石 */ static function OnSetSpecialQualGem() { $taskEventArg = new Ins_TaskEventArgs(Enum_ActiveTaskCmdType::SetSpecialQualGem, Enum_PropelType::add, 1, array()); self::CheckActiveTaskConditions($taskEventArg); } /** * 合成宝石2次 */ static function OnComposeNumGem() { $taskEventArg = new Ins_TaskEventArgs(Enum_ActiveTaskCmdType::ComposeNumGem, Enum_PropelType::add, 1, array()); self::CheckActiveTaskConditions($taskEventArg); } /** * 合成宝石2次 */ static function OnComposeNumGem_state() { $taskEventArg = new Ins_TaskEventArgs(Enum_ActiveTaskCmdType::ComposeNumGem_state, Enum_PropelType::add, 1, array()); self::CheckActiveTaskConditions($taskEventArg); } /** * 任意1个法术等级达到2 */ static function OnAnySkillUpLevel_X() { $taskEventArg = new Ins_TaskEventArgs(Enum_ActiveTaskCmdType::AnySkillUpLevel_X, Enum_PropelType::add, 1, array()); self::CheckActiveTaskConditions($taskEventArg); } /** * 任意1件装备等级达到2 */ static function OnAnyEquipUpLevel_X() { $taskEventArg = new Ins_TaskEventArgs(Enum_ActiveTaskCmdType::AnyEquipUpLevel_X, Enum_PropelType::add, 1, array()); self::CheckActiveTaskConditions($taskEventArg); } /** * 全身装备等级达到3级以上 */ static function OnAllEquipUpLevel_X() { $taskEventArg = new Ins_TaskEventArgs(Enum_ActiveTaskCmdType::AllEquipUpLevel_X, Enum_PropelType::add, 1, array()); self::CheckActiveTaskConditions($taskEventArg); } /** * 任意装备等级升级1次 */ static function OnEquipLevelUpNum() { $taskEventArg = new Ins_TaskEventArgs(Enum_ActiveTaskCmdType::EquipLevelUpNum, Enum_PropelType::add, 1, array()); self::CheckActiveTaskConditions($taskEventArg); } /** * 装备合成 */ static function OnEquipComposeNum() { $taskEventArg = new Ins_TaskEventArgs(Enum_ActiveTaskCmdType::EquipComposeNum, Enum_PropelType::add, 1, array()); self::CheckActiveTaskConditions($taskEventArg); } /** * 击败怪物总数达到1000 */ static function OnKillCommonNumMonster($num) { $taskEventArg = new Ins_TaskEventArgs(Enum_ActiveTaskCmdType::KillCommonNumMonster, Enum_PropelType::add, $num, array()); self::CheckActiveTaskConditions($taskEventArg); } /** * 击败领袖怪物总数达到1000 */ static function OnKillleaderNumMonster($num) { $taskEventArg = new Ins_TaskEventArgs(Enum_ActiveTaskCmdType::KillleaderNumMonster, Enum_PropelType::add, $num, array()); self::CheckActiveTaskConditions($taskEventArg); } /** * 累计获取10000金币 */ static function OnAccumulateGoldNum($num) { $taskEventArg = new Ins_TaskEventArgs(Enum_ActiveTaskCmdType::AccumulateGoldNum, Enum_PropelType::add, $num, array()); self::CheckActiveTaskConditions($taskEventArg); } /** * 累计消耗10000体力 */ static function OnAccumulateTiliNum($num) { $taskEventArg = new Ins_TaskEventArgs(Enum_ActiveTaskCmdType::AccumulateTiliNum, Enum_PropelType::add, $num, array()); self::CheckActiveTaskConditions($taskEventArg); } /** * 累计消耗10000钻石 */ static function OnConsumeCashNum($num) { $taskEventArg = new Ins_TaskEventArgs(Enum_ActiveTaskCmdType::ConsumeCashNum, Enum_PropelType::add, $num, array()); self::CheckActiveTaskConditions($taskEventArg); } /** * 开启1次璀璨宝石箱 */ static function OnOpenNumBrightBox($boxId, $num) { $taskEventArg = new Ins_TaskEventArgs(Enum_ActiveTaskCmdType::OpenNumBrightBox, Enum_PropelType::add, $num, array($boxId)); self::CheckActiveTaskConditions($taskEventArg); } static function OnOpenNumBrightBox_state($boxId, $num) { $taskEventArg = new Ins_TaskEventArgs(Enum_ActiveTaskCmdType::OpenNumBrightBox_state, Enum_PropelType::add, $num, array($boxId)); self::CheckActiveTaskConditions($taskEventArg); } /** * 每日商店购买物品1次 */ static function OnBuyNumDailyShop() { $taskEventArg = new Ins_TaskEventArgs(Enum_ActiveTaskCmdType::BuyNumDailyShop, Enum_PropelType::add, 1, array()); self::CheckActiveTaskConditions($taskEventArg); } /** * 每日商店购买物品1次 状态类的 */ static function OnBuyNumDailyShop_state() { $taskEventArg = new Ins_TaskEventArgs(Enum_ActiveTaskCmdType::BuyNumDailyShop_state, Enum_PropelType::add, 1, array()); self::CheckActiveTaskConditions($taskEventArg); } /** * 开任意宝箱X次 */ static function OnOpenNumAnyBox($num) { $taskEventArg = new Ins_TaskEventArgs(Enum_ActiveTaskCmdType::OpenNumAnyBox, Enum_PropelType::add, $num, array()); self::CheckActiveTaskConditions($taskEventArg); } /** * 购买或观看广告获得体力X次 */ static function OnBuyTiliOrLookGuanggao() { $taskEventArg = new Ins_TaskEventArgs(Enum_ActiveTaskCmdType::BuyTiliOrLookGuanggao, Enum_PropelType::add, 1, array()); self::CheckActiveTaskConditions($taskEventArg); } /** * 观看广告 */ static function OnLookGuanggao() { $taskEventArg = new Ins_TaskEventArgs(Enum_ActiveTaskCmdType::LookGuanggao, Enum_PropelType::add, 1, array()); self::CheckActiveTaskConditions($taskEventArg); } /** * 任意充值X次 */ static function OnRecharge() { $taskEventArg = new Ins_TaskEventArgs(Enum_ActiveTaskCmdType::Recharge, Enum_PropelType::add, 1, array()); self::CheckActiveTaskConditions($taskEventArg); } /** * 206: 进入第X关;参数1:关卡ID;参数2:进入次数 */ static function OnFightGate_X($gateId) { $taskEventArg = new Ins_TaskEventArgs(Enum_ActiveTaskCmdType::FightGate_X, Enum_PropelType::add, 1, array($gateId)); self::CheckActiveTaskConditions($taskEventArg); } /** * 207: 通关主线挑战第X关的X模式1次;参数1:关卡ID;参数2:难度(1普通,2困难,3噩梦) */ static function OnPassMainChallengeGate_X_Num($gateId, $state) { $taskEventArg = new Ins_TaskEventArgs(Enum_ActiveTaskCmdType::PassMainChallengeGate_X_Num, Enum_PropelType::add, 1, array($gateId, $state)); self::CheckActiveTaskConditions($taskEventArg); } /** * 208: 领取排行榜元宝奖励X次;参数1:无;参数2:次数(数值) */ static function OnRankPrize_Num() { $taskEventArg = new Ins_TaskEventArgs(Enum_ActiveTaskCmdType::RankPrize_Num, Enum_PropelType::add, 1, array()); self::CheckActiveTaskConditions($taskEventArg); } /** * 209: 玩家等级到达X级;参数1:无;参数2:等级(数值) */ static function OnUserLevel_X($lv) { $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); } /** * 玩家领取X次章节宝箱 */ static function OnReceiveGateBoxReward() { $taskEventArg = new Ins_TaskEventArgs(Enum_ActiveTaskCmdType::ReceiveGateBoxReward, Enum_PropelType::add, 1, array()); self::CheckActiveTaskConditions($taskEventArg); } // // // /** * 检测任务是否完成 * @param Ins_TaskEventArgs $taskParam */ static function CheckActiveTaskConditions($taskParam) { $activeTaskDic = ctx()->task->activeTaskInfo; foreach ($activeTaskDic as $uid => &$task) { $ins_TaskStep_Active = new Ins_TaskStep_Active($task); if ($ins_TaskStep_Active->state > Enum_TaskCardStateType::ing) { continue; } if ($ins_TaskStep_Active->mo()->cmd == $taskParam->taskType) { if ($ins_TaskStep_Active->isStatusType()) {//校验状态类的 $cur = $ins_TaskStep_Active->calcStatusCur(); if ($cur != $ins_TaskStep_Active->cur) { $ins_TaskStep_Active->cur = $cur; if ($ins_TaskStep_Active->cur >= $ins_TaskStep_Active->max()) { $ins_TaskStep_Active->cur = $ins_TaskStep_Active->max(); } } } else { $tag = true; if ($ins_TaskStep_Active->mo()->cmd == Enum_ActiveTaskCmdType::AnySkillUpLevel_X && count($taskParam->paras) > 0 && $ins_TaskStep_Active->mo()->paras != null) { $parasArr = $taskParam->paras; $lvArr = explode(',', $ins_TaskStep_Active->mo()->paras); $needLv = $lvArr[0]; $num = 0; foreach ($parasArr as $lv) { if ($lv > $needLv) { $num += 1; } } $ins_TaskStep_Active->cur = $num; if ($ins_TaskStep_Active->cur >= $ins_TaskStep_Active->max()) { $ins_TaskStep_Active->cur = $ins_TaskStep_Active->max(); } $tag = false; } else { if ($ins_TaskStep_Active->mo()->paras != null) { $parasArr = $taskParam->paras; if (count($parasArr) > 0) { $arr = explode(',', $ins_TaskStep_Active->mo()->paras); $index = 0; foreach ($arr as $s) { if ($s != $parasArr[$index]) { $tag = false; break; } $index += 1; } } else { $tag = false; } } if ($tag) { $ins_TaskStep_Active->propel($taskParam); if ($ins_TaskStep_Active->cur >= $ins_TaskStep_Active->max()) { $ins_TaskStep_Active->cur = $ins_TaskStep_Active->max(); } } } } if ($ins_TaskStep_Active->isFinish()) { $ins_TaskStep_Active->state = Enum_TaskCardStateType::finish; } ctx()->task->activeTaskInfo->$uid = $ins_TaskStep_Active; } } //ctx()->task->activeTaskInfo = $activeTaskDic; UserProc::updateUserInfo(); # 更新玩家数据 } /** * 自动修复状态型任务 */ static function autoRecoverState_activeTask() { $activeTaskDic = ctx()->task->activeTaskInfo; foreach ($activeTaskDic as $uid => &$task) { $ins_TaskStep_Active = new Ins_TaskStep_Active($task); if ($ins_TaskStep_Active->state > Enum_TaskCardStateType::ing) { continue; } if ($ins_TaskStep_Active->isStatusType()) { $cur = $ins_TaskStep_Active->calcStatusCur(); if ($cur != $ins_TaskStep_Active->cur) { $ins_TaskStep_Active->cur = $cur; if ($ins_TaskStep_Active->cur >= $ins_TaskStep_Active->max()) { $ins_TaskStep_Active->cur = $ins_TaskStep_Active->max(); } } } if ($ins_TaskStep_Active->isFinish()) { $ins_TaskStep_Active->state = Enum_TaskCardStateType::finish; } ctx()->task->activeTaskInfo->$uid = $ins_TaskStep_Active; } UserProc::updateUserInfo(); # 更新玩家数据 } // // }