123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168 |
- <?php
- namespace loyalsoft;
- /**
- * 活动 - 七日任务
- * @version
- * 1.0.0 Created at 2017-11-3. by --gwang
- * @author gwang (mail@wanggangzero.cn)
- * @copyright ? 2017-11-3, SJZ LoyalSoft Corporation & gwang. All rights reserved.
- */
- class Day7Tasks {
- //put your code here
- /**
- * 开服七日活动 - 领取奖励
- * @param Req $req
- */
- static function Day7_DrawReward($req) {
- $day7 = $req->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;
- }
- }
- }
|