storeInfo(); return array( 'missCardDict' => $storeInfo->misCardDict, ); } /** * 开启任务卡 */ static function onStartMissionCard($args) { $id = $args->id; $storeInfo = usrInfo()->storeInfo(true); $missInfo = usrInfo()->missInfo(true); if (!$storeInfo->hasMissionCard($id)) { // 错误:没有这张任务卡 return Errcode::err_miss_nomisscard; } if ($storeInfo->checkSameTypeMissionCardHasStarted($id)) { // 错误:已开启同类型任务卡 return Errcode::err_miss_sametypehasopen; } $ins = $storeInfo->startMissionCard($id); // 任务卡置为开启状态 $missCardMo = dataCenter()->getMissionCardData($ins->tid); $missList = strsplit_raw($missCardMo->misslist); if (count($missList) <= 0) { // 错误:配置数据出错 return Errcode::default_; } // 自动挂载任务卡的第一个任务 $missIns = $missInfo->addMission($missList[0]); $missIns->card = $id; return succeed(); } /** * 任务卡兑换奖励 */ static function onFinishMissionCard($args) { $ids = $args->ids; $storeInfo = usrInfo()->storeInfo(true); $missInfo = usrInfo()->missInfo(true); $prizes = array(); foreach ($ids as $id) { if (!$storeInfo->hasMissionCard($id)) { // 错误:没有这张任务卡 return Errcode::err_miss_nomisscard; } $ins = $storeInfo->getMissionCard($id); $state = $ins->getState(); if ($state != MissionCardStateType::finish) { // 错误:任务链尚未完成 return Errcode::err_miss_notfinish; } $missCardMo = dataCenter()->getMissionCardData($ins->tid); array_pushs($prizes, usrInfo()->modifyPrizes($missCardMo->prize)); // 清理任务卡名下所有子任务的完成痕迹(避免后续影响任务卡是否完成的判断) $missList = strsplit_raw($missCardMo->misslist); foreach ($missList as $missId) { dict_remove($missInfo->overMissions, $missId); } $storeInfo->delMissionCard($id); // 删除这张任务卡 } return array( 'prizes' => $prizes, ); } /** * 完成任务 * @param RequestVo $req */ static function onFinishMission($args) { $id = $args->id; $missInfo = usrInfo()->missInfo(true); $baseInfo = usrInfo()->baseInfo(true); // 检测今日是否已经做过该任务 if (!$missInfo->hasMission($id)) { // 尚未接取此任务 return ErrCode::err_miss_noting; } $ing = $missInfo->GetMission($id); if (!$ing->isFinish()) { // 任务尚未完成 return ErrCode::err_miss_notfinish; } $ctx = dataCenter()->getMissionConst($id); if ($ctx == null) { // 任务模板数据缺失 return ErrCode::default_; } if ($ctx->vip != 0 && $ctx->vip != $baseInfo->vip) { // vip等级错误 return ErrCode::default_; } if ($ctx->start != "") { $startInfo = strsplit_raw($ctx->start, ":"); $start = $startInfo[0] * 3600 + $startInfo[1] * 60 + $startInfo[2]; $endInfo = strsplit_raw($ctx->end, ":"); $end = $endInfo[0] * 3600 + $endInfo[1] * 60 + $endInfo[2]; $date = datetime(); $now = $date->hours * 3600 + $date->minutes * 60 + $date->seconds; if ($start > $now || $end < $now) { // 完成时间不满足条件 return ErrCode::default_; } } $ctx_prizes = ""; if ($ctx->prizes != "") { // 如果有奖励,则直接应用之 $ctx_prizes = $ctx->prizes; } else { #m没有奖励--待定 } $prizes = usrInfo()->modifyPrizes($ctx_prizes); $missInfo->finishMission($id); if ($ctx->next != 0) { if ($ctx->next == 999999) { // 未完待续任务标志字 $missInfo->contMissions->$id = "continue.."; } else { $ing = $missInfo->addMission($ctx->next); self::DealToServer(array($ing)); } } $result = array( 'ret' => "succeed!", 'prizes' => $prizes, 'miss' => $missInfo, ); return $result; } /** * 自动修复状态型任务 * @param RequestVo $req */ static function autoRecoverStateMissions() { $missInfo = usrInfo()->missInfo(true); foreach ($missInfo->ingMissions as $key => $ing) { $ing->autoCalcStatusCur(); self::chechIngMissIsAuto($ing->id); // 判断自动完成的任务是否需要自动对齐完成状态 } } /** * 自动起始的任务 * @param RequestVo $req */ static function autoStartingMissions() { $missList = dataCenter()->getMissionConst(); $missInfo = usrInfo()->missInfo(true); foreach ($missList as $id => $val) { if ($val->etc == "1") { if (!$missInfo->hasMission($id) && !$missInfo->onceFinished($id)) { $missInfo->addMission($id); } } } } /** * 待续任务重新续接 * @param RequestVo $req */ static function autoRecontinueMissions() { $dirtyContiMissions = array(); $missInfo = usrInfo()->missInfo(true); foreach ($missInfo->contMissions as $id => $val) { $ctx = dataCenter()->getMissionConst($id); if ($ctx->next != 0 && $ctx->next != 999999) { $missInfo->addMission($ctx->next); $dirtyContiMissions[] = $id; } } foreach ($dirtyContiMissions as $dirty) { dict_remove($missInfo->contMissions, $dirty); } } /** * 自动接取每日任务 * @param RequestVo $req */ static function autoDailyMissions() { $dirty = array(); $missDic = dataCenter()->getMissionConst(); console("autoDailyMissions"); $missInfo = usrInfo()->missInfo(true); foreach ($missInfo->ingMissions as $ing) { if (!dict_exists($missDic, $ing->id)) { $dirty[] = $ing->id; } } foreach ($dirty as $temp) { $missInfo->delMission($temp); } foreach ($missDic as $id => $val) { if ($val->type != 2) { continue; } // 如果有前一天的残留数据,或者找不到此任务,则直接干掉 if (dict_exists($missInfo->ingMissions, $id)) { $missInfo->delMission($id); } $missInfo->addMission($id); } } // ------------------------任务状态检测----------------------------- /** * 筛选正在执行中的任务 * @param MissEventInfo $info * @return type */ static function SelectIngMissions($info) { $list = array(); if (!MissEventCode::isServerLogic) { return $list; } $baseInfo = usrInfo()->baseInfo(false); $missInfo = usrInfo()->missInfo(false); foreach ($missInfo->ingMissions as $key => $ing) { if ($ing->minlv > $baseInfo->level && !MisStatus::isStatusType($ing->cmd) && $ing->type != 2) { continue; } if ($ing->cmd != $info->evnCode) { continue; } $bSign = true; if (array_count($ing->paras) == 0) { ###说明这个任务没有特定需求 } else { $index = 0; foreach ($info->paras as $para) { if ($index < array_count($ing->paras)) { if (strcontains($para, "|")) { $paraList = strsplit($para, "|"); foreach ($paraList as $paraItem) { if ($paraItem == $ing->paras[$index]) { continue; } } } else { if ($ing->paras[$index] != 0 && $para != $ing->paras[$index]) { $bSign = false; continue; } } } else { continue; } $index++; } } if ($bSign) { $list[] = $ing->id; } } return $list; } /** * 筛选出的任务节奏递推 * @param type $id * @param type $info * @return type */ static function PropelIngMission($id, $info) { $missInfo = usrInfo()->missInfo(true); $ing = $missInfo->GetMission($id); switch ($info->ope) { case "set": $ing->cur = $info->val; break; case "add": $ing->cur += $info->val; break; case "inc": $ing->cur += 1; break; case "max": if ($info->val > $ing->cur) { $ing->cur = $info->val; } break; } if ($info->ope != "set") { if ($ing->cur > $ing->max) { $ing->cur = $ing->max; } } #检查现有的任务中是否包含自动完成的数据 self::chechIngMissIsAuto($id); return $ing; } /** * 检查现有的任务中是否包含自动完成的数据 * @param type $ing */ static function chechIngMissIsAuto($id) { $missInfo = usrInfo()->missInfo(true); $ing = $missInfo->GetMission($id); $ctx = dataCenter()->getMissionConst($id); if ($ing->isFinish() && $ctx->isauto == 1) { $missInfo->finishMission($id); if ($ctx->next != 0) { if ($ctx->next == 999999) { // 未完待续任务标志字 $missInfo->contMissions->$id = "continue.."; } else { $nexting = $missInfo->addMission($ctx->next); if ($ing->card != 0) { $nexting->card = $ing->card; // 继承任务卡的所属关系 } } } } } /** * 捆绑进度变化到应答信息 * @param type $ings */ static function DealToServer($ings) { $resp = ctx()->resp(); $missInfo = usrInfo()->missInfo(true); if (count($ings) > 0) { if (!dict_exists($resp->tag, "missInfo")) { $resp->tag->missInfo = new stdClass(); } if (!dict_exists($resp->tag->missInfo, "ings")) { $resp->tag->missInfo->ings = array(); } array_pushs($resp->tag->missInfo->ings, $ings); } } // -------------各种任务事件监听--------------- /** * 玩家升级事件 * @param type $level */ static function DealUserLevelup($level) { $ings = array(); $info = new MissEventInfo( MissEventCode::Evn_User_Levelup, "set", $level); $list = self::SelectIngMissions($info); foreach ($list as $id) { $ings[] = self::PropelIngMission($id, $info); } self::DealToServer($ings); } /** * 玩家食物发生变化 * 参数一:特定食物类型,无限定填0 * @param type $type 类型 * @param type $num 食物数量 */ static function DealUserFood($type, $num) { $ings = array(); $info = new MissEventInfo( MissEventCode::Evn_User_Food, "set", $num, array($type)); $list = self::SelectIngMissions($info); foreach ($list as $id) { $ings[] = self::PropelIngMission($id, $info); } self::DealToServer($ings); } /** * 建造一个领地 / * 建造一个指定领地 * 参数一:特定建筑ID,无限定填0 * @param type $type */ static function DealHabitat_Build($type) { $ings = array(); $info = new MissEventInfo( MissEventCode::Evn_Habitat_Build, "inc", 1, array($type)); $list = self::SelectIngMissions($info); foreach ($list as $id) { $ings[] = self::PropelIngMission($id, $info); } self::DealToServer($ings); } /** * √拥有一个领地 * / 拥有一个指定领地 * / 拥有一个特定 等级领地 * 参数一:特定栖息地类型,无限定填0 * 参数二:特定等级,无限定填0 * @param type $type 领地类型 * @param type $level 领地等级 */ static function DealHabitat_Own($subId, $level) { $ings = array(); $info = new MissEventInfo( MissEventCode::SEvn_Habitat_Own, "set", self::GetBuildingNum(INIT_HABITID, $subId, $level), array($subId, $level)); $list = self::SelectIngMissions($info); foreach ($list as $id) { $ings[] = self::PropelIngMission($id, $info); } self::DealToServer($ings); } /** * 升级一个领地 / 升级一个指定领地 * 参数一:特定建筑ID,无限定填0 * 参数二:特定目标等级,无限定填0 * @param type $type * @param type $level */ static function DealHabitat_LevelUp($type, $level) { $ings = array(); $info = new MissEventInfo( MissEventCode::Evn_Habitat_LevelUp, "inc", 1, array($type, $level)); $list = self::SelectIngMissions($info); foreach ($list as $id) { $ings[] = self::PropelIngMission($id, $info); } self::DealToServer($ings); } /** * 收取一次金币操作 * 【行为的计数 】 * 参数一:特定领地类型,无限定填0 * @param type $type */ static function DealHabitat_CollectGold($type) { $ings = array(); $info = new MissEventInfo( MissEventCode::Evn_Habitat_CollectGold, "inc", 1, array($type)); $list = self::SelectIngMissions($info); foreach ($list as $id) { $ings[] = self::PropelIngMission($id, $info); } self::DealToServer($ings); } /** * 栖息地 金币收集累计 * 【金币的计数 】 * 参数一:特定领地类型,无限定填0 * @param type $type * @param type $num */ static function DealHabitat_CollectGold_S($type, $num) { $ings = array(); $info = new MissEventInfo( MissEventCode::SEvn_Habitat_CollectGold, "add", $num, array($type)); $list = self::SelectIngMissions($info); foreach ($list as $id) { $ings[] = self::PropelIngMission($id, $info); } self::DealToServer($ings); } /** * 建造一个农田 * 参数一:特定建筑ID,无限定填0 * @param type $type */ static function DealFarm_Build($type) { $ings = array(); $info = new MissEventInfo( MissEventCode::Evn_Farm_Build, "inc", 1, array($type)); $list = self::SelectIngMissions($info); foreach ($list as $id) { $ings[] = self::PropelIngMission($id, $info); } self::DealToServer($ings); } /** * 拥有一个农田 / * 拥有一个指定农田 / * 拥有一个指定等级的农田 * 参数一:特定农田类别,无限定填0 * 参数二:特定等级,无限定填0 * @param type $subId 农田类别 * @param type $level 领地等级 */ static function DealFarm_Own($subId, $level) { $ings = array(); $info = new MissEventInfo( MissEventCode::SEvn_Farm_Own, "set", self::GetBuildingNum(INIT_Farm, $subId, $level), array($subId, $level)); $list = self::SelectIngMissions($info); foreach ($list as $id) { $ings[] = self::PropelIngMission($id, $info); } self::DealToServer($ings); } /** * 升级一个农田 * 参数一:特定建筑,无限定填0 * 参数二:特定目标等级,无限定填0 * @param type $type * @param type $level */ static function DealFarm_LevelUp($type, $level) { $ings = array(); $info = new MissEventInfo( MissEventCode::Evn_Farm_LevelUp, "inc", 1, array($type, $level)); $list = self::SelectIngMissions($info); foreach ($list as $id) { $ings[] = self::PropelIngMission($id, $info); } self::DealToServer($ings); } /** * 种植一次作物 / 种植一次指定作物 * 参数一:特定作物类型,无限定填0 * @param type $type */ static function DealFarm_PlantFood($type) { $ings = array(); $info = new MissEventInfo( MissEventCode::Evn_Farm_PlantFood, "inc", 1, array($type)); $list = self::SelectIngMissions($info); foreach ($list as $id) { $ings[] = self::PropelIngMission($id, $info); } self::DealToServer($ings); } /** * 收获一次作物 / 收获一次指定作物 * 【行为统计】 * 参数一:特定作物类型,无限定填0 * @param type $type * @param type $num */ static function DealFarm_CollectFood($type) { $ings = array(); $info = new MissEventInfo( MissEventCode::Evn_Farm_CollectFood, "inc", 1, array($type)); $list = self::SelectIngMissions($info); foreach ($list as $id) { $ings[] = self::PropelIngMission($id, $info); } self::DealToServer($ings); } /** * 收获一次作物 / 收获一次指定作物 * 【果实数量统计】 * 参数一:特定作物类型,无限定填0 * @param type $type * @param type $num */ static function DealFarm_CollectFood_S($type, $num) { $ings = array(); $info = new MissEventInfo( MissEventCode::SEvn_Farm_CollectFood, "add", $num, array($type)); $list = self::SelectIngMissions($info); foreach ($list as $id) { $ings[] = self::PropelIngMission($id, $info); } self::DealToServer($ings); } /** * 建造一个建筑 / 建造一个指定建筑 * 参数一:特定类型,无限定填0 * @param type $type */ static function DealBuild_Construct($type) { $ings = array(); $info = new MissEventInfo( MissEventCode::Evn_Build_Construct, "inc", 1, array($type)); $list = self::SelectIngMissions($info); foreach ($list as $id) { $ings[] = self::PropelIngMission($id, $info); } self::DealToServer($ings); } /** * 拥有一个建筑 / 拥有一个指定建筑 / 拥有指定等级的建筑 * 参数一:特定建筑 一级大类 类型,无限定填0 * 参数二:特定建筑 二级小类 类型,无限定填0 * 参数二:特定等级,无限定填0 * @param type $cabid * @param type $subId * @param type $level */ static function DealBuild_Own($cabid, $subId, $level) { $ings = array(); $info = new MissEventInfo( MissEventCode::SEvn_Build_Own, "set", self::GetBuildingNum($cabid, $subId, $level), array($cabid, $subId, $level)); $list = self::SelectIngMissions($info); foreach ($list as $id) { $ings[] = self::PropelIngMission($id, $info); } self::DealToServer($ings); } /** * 升级一个建筑 / 升级一个指定建筑 * 参数一:特定建筑ID,无限定填0 * 参数二:特定目标等级,无限定填0 * @param type $type * @param type $level */ static function DealBuild_Levelup($type, $level) { $ings = array(); $info = new MissEventInfo( MissEventCode::Evn_Build_LevelUp, "inc", 1, array($type, $level)); $list = self::SelectIngMissions($info); foreach ($list as $id) { $ings[] = self::PropelIngMission($id, $info); } self::DealToServer($ings); } /** * 铲除 一个建筑 / 铲除一个指定建筑 * 参数一:特定类型,无限定填0 * @param type $type */ static function DealBuild_Remove($type) { $ings = array(); $info = new MissEventInfo( MissEventCode::Evn_Build_Remove, "inc", 1, array($type)); $list = self::SelectIngMissions($info); foreach ($list as $id) { $ings[] = self::PropelIngMission($id, $info); } self::DealToServer($ings); } /** * 招募 一次 * 参数一:特定神兽类型,无限定填0 * @param type $type */ static function DealBuild_PubEmploy($type) { $ings = array(); $info = new MissEventInfo( MissEventCode::Evn_Build_PubEmploy, "inc", 1, array($type)); $list = self::SelectIngMissions($info); foreach ($list as $id) { $ings[] = self::PropelIngMission($id, $info); } self::DealToServer($ings); } /** * 培育一次 / 培育出指定神兽一次 获得兽蛋 * 参数一:特定兽蛋类型,无限定填0 * @param type $type */ static function DealBuild_Breed($type) { $ings = array(); $info = new MissEventInfo( MissEventCode::Evn_Build_Breed, "inc", 1, array($type)); $list = self::SelectIngMissions($info); foreach ($list as $id) { $ings[] = self::PropelIngMission($id, $info); } self::DealToServer($ings); } /** * 孵化 * 参数一:特定兽蛋类型,无限定填0 * @param type $type */ static function DealBuild_EggHatch($type) { $ings = array(); $info = new MissEventInfo( MissEventCode::Evn_Build_EggHatch, "inc", 1, array($type)); $list = self::SelectIngMissions($info); foreach ($list as $id) { $ings[] = self::PropelIngMission($id, $info); } self::DealToServer($ings); } /** * 采矿场 打工一次 * 参数一:特定工作神兽类型,无限定填0 * @param type $type */ static function DealBuild_QuarryWork($type) { $ings = array(); $info = new MissEventInfo( MissEventCode::Evn_Build_QuarryWork, "inc", 1, array($type)); $list = self::SelectIngMissions($info); foreach ($list as $id) { $ings[] = self::PropelIngMission($id, $info); } self::DealToServer($ings); } /** * 采矿场 结果收取一次 * 参数一:特定工作神兽类型,无限定填0 * @param type $type */ static function DealBuild_QuarryResult($type) { $ings = array(); $info = new MissEventInfo( MissEventCode::Evn_Build_QuarryResult, "inc", 1, array($type)); $list = self::SelectIngMissions($info); foreach ($list as $id) { $ings[] = self::PropelIngMission($id, $info); } self::DealToServer($ings); } /** * 采矿场 结果收取一次 * [累计道具的收取始数量] * 参数一:特定采矿成果道具ID, 无限定填0 * @param type $type * @param type $num */ static function DealBuild_QuarryResult_S($type, $num) { $ings = array(); $info = new MissEventInfo( MissEventCode::SEvn_Build_QuarryResult, "add", $num, array($type)); $list = self::SelectIngMissions($info); foreach ($list as $id) { $ings[] = self::PropelIngMission($id, $info); } self::DealToServer($ings); } /** * 加工厂 打工一次 * 参数一:特定工作神兽类型,无限定填0 * @param type $type */ static function DealBuild_ProcessWork($type) { $ings = array(); $info = new MissEventInfo( MissEventCode::Evn_Build_ProcessWork, "inc", 1, array($type)); $list = self::SelectIngMissions($info); foreach ($list as $id) { $ings[] = self::PropelIngMission($id, $info); } self::DealToServer($ings); } /** * 采矿场 结果收取一次 * 参数一:特定工作神兽类型,无限定填0 * @param type $type */ static function DealBuild_ProcessResult($type) { $ings = array(); $info = new MissEventInfo( MissEventCode::Evn_Build_ProcessResult, "inc", 1, array($type)); $list = self::SelectIngMissions($info); foreach ($list as $id) { $ings[] = self::PropelIngMission($id, $info); } self::DealToServer($ings); } /** * 加工厂 结果收取 * [累计道具的收取始数量] * 参数一:特定成果道具ID, 无限定填0 * @param type $type * @param type $num */ static function DealBuild_ProcessResult_S($type, $num) { $ings = array(); $info = new MissEventInfo( MissEventCode::SEvn_Build_ProcessResult, "add", $num, array($type)); $list = self::SelectIngMissions($info); foreach ($list as $id) { $ings[] = self::PropelIngMission($id, $info); } self::DealToServer($ings); } /** * 收取建造的建筑的经验值 * 参数一:特定建筑ID,无限定填0 * 计数:要求数目 * @param type $type */ static function DealBuild_CollectExp($type) { $ings = array(); $info = new MissEventInfo( MissEventCode::Evn_Build_CollectExp, "inc", 1, array($type)); $list = self::SelectIngMissions($info); foreach ($list as $id) { $ings[] = self::PropelIngMission($id, $info); } self::DealToServer($ings); } /** * 酒馆配置上阵神兽 * 计数:配置次数 */ static function DealBuild_PubTeamConfig() { $ings = array(); $info = new MissEventInfo( MissEventCode::Evn_Build_PubTeamConfig, "inc", 1); $list = self::SelectIngMissions($info); foreach ($list as $id) { $ings[] = self::PropelIngMission($id, $info); } self::DealToServer($ings); } ################################ 神兽 ####################################################################### /** * 拥有一只神兽 / 拥有一只指定神兽 * 参数一:特定神兽类型,无限定填0 * 参数二:特定等级,无限定填0 * 参数三:特定星级,无限定填0 * @param type $type * @param type $level */ static function DealPet_Own($type, $level, $star) { $ings = array(); $info = new MissEventInfo( MissEventCode::SEvn_Pet, "set", self::GetPetNum($type, $level, $star), array($type, $level, $star)); $list = self::SelectIngMissions($info); foreach ($list as $id) { $ings[] = self::PropelIngMission($id, $info); } self::DealToServer($ings); } /** * 喂养一次神兽 / 喂养一次指定神兽 * 参数一:特定神兽类型,无限定填0 * @param type $type */ static function DealPet_Feed($type) { $ings = array(); $info = new MissEventInfo( MissEventCode::Evn_Pet_Feed, "inc", 1, array($type)); $list = self::SelectIngMissions($info); foreach ($list as $id) { $ings[] = self::PropelIngMission($id, $info); } self::DealToServer($ings); } /** * 升级一次神兽 / 升级一次指定神兽 * 参数一:特定神兽类型,无限定填0 * 参数二:特定等级,无限定填0 * @param type $level * @param type $type */ static function DealPet_LevelUp($type, $level) { $ings = array(); $info = new MissEventInfo( MissEventCode::Evn_Pet_LevelUp, "inc", 1, array($type, $level)); $list = self::SelectIngMissions($info); foreach ($list as $id) { $ings[] = self::PropelIngMission($id, $info); } self::DealToServer($ings); } /** * 升级技能一次神兽 / 升级一次指定神兽 的技能 * 参数一:特定神兽类型,无限定填0 * 参数二:特定技能ID,无限定填0 * 参数三:特定技能等级,无限定填0 * @param type $level * @param type $type */ static function DealPet_Skill($type, $skill, $skillLevel) { $ings = array(); $info = new MissEventInfo( MissEventCode::Evn_Pet_Skill, "inc", 1, array($type, $skill, $skillLevel)); $list = self::SelectIngMissions($info); foreach ($list as $id) { $ings[] = self::PropelIngMission($id, $info); } self::DealToServer($ings); } /** * 升星一次神兽 / 升星一次指定神兽 * 参数一:特定神兽类型,无限定填0 * 参数二:特定星级,无限定填0 * @param type $starlv * @param type $type */ static function DealPet_Star($type, $starlv) { $ings = array(); $info = new MissEventInfo( MissEventCode::Evn_Pet_Star, "inc", 1, array($type, $starlv)); $list = self::SelectIngMissions($info); foreach ($list as $id) { $ings[] = self::PropelIngMission($id, $info); } self::DealToServer($ings); } // --------------------- 探索任务卡相关 ------------------------ /** * 占领一块领地 / 占领一块指定领地 * 参数一:特定领地类型,无限定填0 * @param type $gridtype */ static function DealExplore_GridCaptureSucced($gridtype) { $ings = array(); $info = new MissEventInfo( MissEventCode::Evn_Explore_GridCaptureSucced, "inc", 1, array($gridtype)); $list = self::SelectIngMissions($info); foreach ($list as $id) { $ings[] = self::PropelIngMission($id, $info); } self::DealToServer($ings); } /** * 进行一次占领(不考虑结果) * 参数一:特定领地类型,无限定填0 * @param type $gridtype */ static function DealExplore_GridCapture($gridtype) { $ings = array(); $info = new MissEventInfo( MissEventCode::Evn_Explore_GridCapture, "inc", 1, array($gridtype)); $list = self::SelectIngMissions($info); foreach ($list as $id) { $ings[] = self::PropelIngMission($id, $info); } self::DealToServer($ings); } /** * 拥有N块领地 / 拥有N块指定领地 * 参数一:特定领地类型,无限定填0 * @param type $gridtype */ static function DealExplore_GridOwn($gridtype) { $ings = array(); $info = new MissEventInfo( MissEventCode::SEvn_Explore_GridOwn, "set", self::GetExlporeGridNum($gridtype), array($gridtype)); $list = self::SelectIngMissions($info); foreach ($list as $id) { $ings[] = self::PropelIngMission($id, $info); } self::DealToServer($ings); } /** * 与NPC交谈处理流程 * @param type $mapId * @param type $posX * @param type $posY * @param type $npcId */ static function dealTalkToMissNpc($mapId, $posX, $posY, $npcId) { $ings = array(); $info = new MissEventInfo( MissEventCode::Evn_Explore_TalkToMissNpc, "inc", 1, array($mapId, $posX . "_" . $posY)); $list = self::SelectIngMissions($info); foreach ($list as $id) { $ings[] = self::PropelIngMission($id, $info); } self::DealToServer($ings); } /** * 与NPC战斗处理流程 * @param type $mapId * @param type $posX * @param type $posY * @param type $npcId */ static function dealFightToMissNpc($mapId, $posX, $posY, $npcId) { $ings = array(); $info = new MissEventInfo( MissEventCode::Evn_Explore_FightToMissNpc, "inc", 1, array($mapId, $posX . "_" . $posY)); $list = self::SelectIngMissions($info); foreach ($list as $id) { $ings[] = self::PropelIngMission($id, $info); } self::DealToServer($ings); } /** * 进入一次探索地图 */ static function DealExplore_EnterMap($map) { $ings = array(); $info = new MissEventInfo( MissEventCode::Evn_Explore_EnterMap, "inc", 1, array($map)); $list = self::SelectIngMissions($info); foreach ($list as $id) { $ings[] = self::PropelIngMission($id, $info); } self::DealToServer($ings); } /** * 队伍调动 */ static function DealExplore_ArmyDeploy() { $ings = array(); $info = new MissEventInfo( MissEventCode::Evn_Explore_ArmyDeploy, "inc", 1); $list = self::SelectIngMissions($info); foreach ($list as $id) { $ings[] = self::PropelIngMission($id, $info); } self::DealToServer($ings); } // ---------------------------------------------------------------------------------------- /** * 加速一次 / 加速一次指定操作 * 参数一:加速类型(建造 /种植 /孵化/铲除障碍物),无限定填0 * @param type $speedType build / plant / hatch / obstacle */ static function Deal_SpeedUp($speedType) { $ings = array(); $info = new MissEventInfo( MissEventCode::Evn_SpeedUp, "inc", 1, array($speedType)); $list = self::SelectIngMissions($info); foreach ($list as $id) { $ings[] = self::PropelIngMission($id, $info); } self::DealToServer($ings); } /** * 岛屿解锁 * 计数:要求数目 */ static function Deal_MapIsLand() { $ings = array(); $info = new MissEventInfo( MissEventCode::Evn_MapIsLand, "inc", 1); $list = self::SelectIngMissions($info); foreach ($list as $id) { $ings[] = self::PropelIngMission($id, $info); } self::DealToServer($ings); } /** * 岛屿阴影解锁 * 计数:要求数目 */ static function Deal_MapShadow() { $ings = array(); $info = new MissEventInfo( MissEventCode::Evn_MapShadow, "inc", 1); $list = self::SelectIngMissions($info); foreach ($list as $id) { $ings[] = self::PropelIngMission($id, $info); } self::DealToServer($ings); } /** * 新手引导 * @param type $step = 引导步骤 */ static function DealGuideStep($step) { $ings = array(); $info = new MissEventInfo( MissEventCode::Evn_Guide, "set", $step, array($step)); $list = self::SelectIngMissions($info); foreach ($list as $id) { $ings[] = self::PropelIngMission($id, $info); } self::DealToServer($ings); } //---------------------------------- // ---------------------------状态辅助方法-------------------------------- /** * 获取当前建筑数量 * @param type $cabid = 建筑一级大类 * @param type $subId = 建筑二级分类 * @param type $level = 建筑等级 * @return int */ static function GetBuildingNum($cabid = 0, $subId = 0, $level = 0) { $num = 0; $mapInfo = usrInfo()->mapInfo(false); foreach ($mapInfo->items as $key => $bd) { $buildMo = dataCenter()->getItemBuildData($bd->buildid); if ($buildMo->level >= $level) { if (($cabid == 0 || ($cabid != 0 && $buildMo->categoryId == $cabid)) && ($subId == 0 || ($subId != 0 && $buildMo->subcategoryId == $subId))) { $num++; } } } return $num; } /** * 获取当前英雄数量 * @return int */ static function GetPetNum($type = 0, $level = 0, $star = 0) { $num = 0; $mapInfo = usrInfo()->mapInfo(false); foreach ($mapInfo->godpets as $iid => $hero) { if ($hero->type == $type || $hero->level == $level || $hero->currStar == $star) { $num++; } } return $num; } /** * 获得探索中,拥有某个类型得领地数量 * @param type $type * @return int */ static function GetExlporeGridNum($type = 0) { $num = 0; return $num; } }