userInfo->game->privateState->day7; $taskId = $req->paras[0]; # 任务ID or "final" if ($taskId == "final") { # 最终奖励 -- 哈哈,magic code if (CommUtil::isPropertyExists($day7, "final")) { # 已经领过了 return Resp::err(ErrCode::active_hasgetted); } // 检查总共完成的任务点数(记录到day7上,每完成一个任务就更新点数) $g = glc(); if (count($req->userInfo->game->privateState->LoginDays) < 7) { # 对比终极奖励所需点数 谷城亮已经改动这里的需求,不是按照点数来判断是否完成任务,而是按照登录天数,超过7天即可 return Resp::err(ErrCode::active_day7_totaldianshu); } $err = StoreProc::AddMultiItemInStore($req, $g->day7_reward, 2); # 发放奖励 if (ErrCode::ok != $err) { return Resp::err($err); } $day7->final = 1; # 添加领取记录 UserProc::updateUserInfo(); # 回存数据 $result = array( 'store' => $req->userInfo->game->store, 'heros' => $req->userInfo->game->heros, 'cash' => $req->userInfo->game->baseInfo->cash, 'tili' => $req->userInfo->game->baseInfo->tili, 'time' => $req->userInfo->game->privateState->TiliTime, 'gold' => $req->userInfo->game->baseInfo->gold ); return Resp::ok($result); } else { # 普通任务奖励 $task = $day7->tasks->$taskId; # 取任务数据 if (!$task) { # 找不到任务数据 return Resp::err(ErrCode::active_day7_taskno_err); } if ($task->state == 1) { # 看任务状态,如果是未完成状态,则报错 return Resp::err(ErrCode::active_day7_taskstate_err); } if ($task->state != 2) { # 看任务状态,如果是已领取状态,则直接返回当前数据 $result = array( 'store' => $req->userInfo->game->store, 'heros' => $req->userInfo->game->heros, 'cash' => $req->userInfo->game->baseInfo->cash, 'tili' => $req->userInfo->game->baseInfo->tili, 'time' => $req->userInfo->game->privateState->TiliTime, 'gold' => $req->userInfo->game->baseInfo->gold ); return Resp::ok($result); } $taskModel = GameConfig::day7_getItem($taskId); # 取任务常量 if (!$taskModel) { return Resp::err(ErrCode::active_day7_const_no_err); } $task->state = 3; # 修改任务状态 if (!CommUtil::isPropertyExists($day7, "dianshu")) { $day7->dianshu = 0; } $day7->dianshu += $taskModel->dianshu; # echo var_dump($taskModel); $err = StoreProc::AddMultiItemInStore($req, $taskModel->reward, 2); if (ErrCode::ok != $err) { return Resp::err($err); } UserProc::updateUserInfo(); # 回存数据 $result = array( 'store' => $req->userInfo->game->store, 'heros' => $req->userInfo->game->heros, 'cash' => $req->userInfo->game->baseInfo->cash, 'tili' => $req->userInfo->game->baseInfo->tili, 'time' => $req->userInfo->game->privateState->TiliTime, 'gold' => $req->userInfo->game->baseInfo->gold ); return Resp::ok($result); } } /** * 开服七日活动 - 完成任务 * @param Req $req */ static function Day7_CompleteTask($req) { $taskId = $req->paras[0]; # 任务ID $day7 = $req->userInfo->game->privateState->day7; $tasks = $day7->tasks; if (!$tasks) { return Resp::err(ErrCode::user_data_broken_err); } if ($tasks->$taskId->state == 3) { return Resp::err(ErrCode::active_day7_taskstate_err); } $taskModel = GameConfig::day7_getItem($taskId); if (!$taskModel) { return Resp::err(ErrCode::active_day7_const_no_err); } if (self::CheckDay7TaskComplete($taskModel, $req)) { # 下面该检测了,检测客户端发来的完成任务请求是否准确 $tasks->$taskId->state = 2; # 更新任务状态 UserProc::updateUserInfo(); # 回写玩家数据 } return Resp::ok(array("ret" => "ok")); } /** * 开服七日活动 - 刷新任务状态 * @param Req $req */ static function Day7_RefreshTaskList($req) { // 无参数 $tasks = $req->userInfo->game->privateState->day7->tasks; return Resp::ok(array('tasks' => $tasks)); } /** * 检测七日任务的完成 * @param sm_task $taskModel 任务数据 * @param Req $req */ static function CheckDay7TaskComplete($taskModel, $req) { ////下面该检测了,检测客户端发来的完成任务请求是否准确 ////数据库还没改好,不知道会用什么,暂时用老办法 return true; ///////因为数据量太大,先这样测试 switch ($taskModel->tasktype) { case 5: // 七日任务里面的登录任务,这个任务需要判断条件,需要判断登录够多少次 return $taskModel->canshu <= count($req->userInfo->game->privateState->LoginDays); case 11: // 战斗力是否达到要求,战斗力暂时不检测,因为目前即使服务器验证也是客服端计算的上传结果. 20170311 return TRUE; case 12: // 如果是英雄升级任务 return $taskModel->canshu <= $req->userInfo->game->privateState->heroshengji; case 13: // 如果是英雄升阶任务 return $taskModel->canshu <= $req->userInfo->game->privateState->heroshengjie; case 14: // 如果是英雄技能升级任务 return $taskModel->canshu <= $req->userInfo->game->privateState->herojinhua; case 15: // 如果是英雄升星任务 return $taskModel->canshu <= $req->userInfo->game->privateState->heroshengxing; case 21: // 如果是通关任务普通 return $taskModel->canshu <= $req->userInfo->game->gates->normal->highest; case 22: // 如果是通关任务困难 return $taskModel->canshu <= $req->userInfo->game->gates->hard->highest; case 23: // 如果是通关任务精英 return $taskModel->canshu <= $req->userInfo->game->gates->elite->highest; case 24: // 如果是通关任务次数 return $taskModel->canshu <= $req->userInfo->game->gates->Times; case 31: // 如果是装备升级任务 return $taskModel->canshu <= $req->userInfo->game->privateState->ItemUpgrage; case 32: // 如果是宝石合成任务 return $taskModel->canshu <= $req->userInfo->game->privateState->GemUpgrage; // case 41: // 如果是好友任务 // return $taskModel->canshu <= FriendProc::getCurrentFriendsCount($req); default : return false; } } }