Day7Tasks.php 8.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168
  1. <?php
  2. namespace loyalsoft;
  3. /**
  4. * 活动 - 七日任务
  5. * @version
  6. * 1.0.0 Created at 2017-11-3. by --gwang
  7. * @author gwang (mail@wanggangzero.cn)
  8. * @copyright ? 2017-11-3, SJZ LoyalSoft Corporation & gwang. All rights reserved.
  9. */
  10. class Day7Tasks {
  11. //put your code here
  12. /**
  13. * 开服七日活动 - 领取奖励
  14. * @param Req $req
  15. */
  16. static function Day7_DrawReward($req) {
  17. $day7 = $req->userInfo->game->privateState->day7;
  18. $taskId = $req->paras[0]; # 任务ID or "final"
  19. if ($taskId == "final") { # 最终奖励 -- 哈哈,magic code
  20. if (CommUtil::isPropertyExists($day7, "final")) { # 已经领过了
  21. return Resp::err(ErrCode::active_hasgetted);
  22. }
  23. // 检查总共完成的任务点数(记录到day7上,每完成一个任务就更新点数)
  24. $g = glc();
  25. if (count($req->userInfo->game->privateState->LoginDays) < 7) { # 对比终极奖励所需点数 谷城亮已经改动这里的需求,不是按照点数来判断是否完成任务,而是按照登录天数,超过7天即可
  26. return Resp::err(ErrCode::active_day7_totaldianshu);
  27. }
  28. $err = StoreProc::AddMultiItemInStore($req, $g->day7_reward, 2); # 发放奖励
  29. if (ErrCode::ok != $err) {
  30. return Resp::err($err);
  31. }
  32. $day7->final = 1; # 添加领取记录
  33. UserProc::updateUserInfo(); # 回存数据
  34. $result = array(
  35. 'store' => $req->userInfo->game->store,
  36. 'heros' => $req->userInfo->game->heros,
  37. 'cash' => $req->userInfo->game->baseInfo->cash,
  38. 'tili' => $req->userInfo->game->baseInfo->tili,
  39. 'time' => $req->userInfo->game->privateState->TiliTime,
  40. 'gold' => $req->userInfo->game->baseInfo->gold
  41. );
  42. return Resp::ok($result);
  43. } else { # 普通任务奖励
  44. $task = $day7->tasks->$taskId; # 取任务数据
  45. if (!$task) { # 找不到任务数据
  46. return Resp::err(ErrCode::active_day7_taskno_err);
  47. }
  48. if ($task->state == 1) { # 看任务状态,如果是未完成状态,则报错
  49. return Resp::err(ErrCode::active_day7_taskstate_err);
  50. }
  51. if ($task->state != 2) { # 看任务状态,如果是已领取状态,则直接返回当前数据
  52. $result = array(
  53. 'store' => $req->userInfo->game->store,
  54. 'heros' => $req->userInfo->game->heros,
  55. 'cash' => $req->userInfo->game->baseInfo->cash,
  56. 'tili' => $req->userInfo->game->baseInfo->tili,
  57. 'time' => $req->userInfo->game->privateState->TiliTime,
  58. 'gold' => $req->userInfo->game->baseInfo->gold
  59. );
  60. return Resp::ok($result);
  61. }
  62. $taskModel = GameConfig::day7_getItem($taskId); # 取任务常量
  63. if (!$taskModel) {
  64. return Resp::err(ErrCode::active_day7_const_no_err);
  65. }
  66. $task->state = 3; # 修改任务状态
  67. if (!CommUtil::isPropertyExists($day7, "dianshu")) {
  68. $day7->dianshu = 0;
  69. }
  70. $day7->dianshu += $taskModel->dianshu; #
  71. echo var_dump($taskModel);
  72. $err = StoreProc::AddMultiItemInStore($req, $taskModel->reward, 2);
  73. if (ErrCode::ok != $err) {
  74. return Resp::err($err);
  75. }
  76. UserProc::updateUserInfo(); # 回存数据
  77. $result = array(
  78. 'store' => $req->userInfo->game->store,
  79. 'heros' => $req->userInfo->game->heros,
  80. 'cash' => $req->userInfo->game->baseInfo->cash,
  81. 'tili' => $req->userInfo->game->baseInfo->tili,
  82. 'time' => $req->userInfo->game->privateState->TiliTime,
  83. 'gold' => $req->userInfo->game->baseInfo->gold
  84. );
  85. return Resp::ok($result);
  86. }
  87. }
  88. /**
  89. * 开服七日活动 - 完成任务
  90. * @param Req $req
  91. */
  92. static function Day7_CompleteTask($req) {
  93. $taskId = $req->paras[0]; # 任务ID
  94. $day7 = $req->userInfo->game->privateState->day7;
  95. $tasks = $day7->tasks;
  96. if (!$tasks) {
  97. return Resp::err(ErrCode::user_data_broken_err);
  98. }
  99. if ($tasks->$taskId->state == 3) {
  100. return Resp::err(ErrCode::active_day7_taskstate_err);
  101. }
  102. $taskModel = GameConfig::day7_getItem($taskId);
  103. if (!$taskModel) {
  104. return Resp::err(ErrCode::active_day7_const_no_err);
  105. }
  106. if (self::CheckDay7TaskComplete($taskModel, $req)) { # 下面该检测了,检测客户端发来的完成任务请求是否准确
  107. $tasks->$taskId->state = 2; # 更新任务状态
  108. UserProc::updateUserInfo(); # 回写玩家数据
  109. }
  110. return Resp::ok(array("ret" => "ok"));
  111. }
  112. /**
  113. * 开服七日活动 - 刷新任务状态
  114. * @param Req $req
  115. */
  116. static function Day7_RefreshTaskList($req) { // 无参数
  117. $tasks = $req->userInfo->game->privateState->day7->tasks;
  118. return Resp::ok(array('tasks' => $tasks));
  119. }
  120. /**
  121. * 检测七日任务的完成
  122. * @param sm_task $taskModel 任务数据
  123. * @param Req $req
  124. */
  125. static function CheckDay7TaskComplete($taskModel, $req) {
  126. ////下面该检测了,检测客户端发来的完成任务请求是否准确
  127. ////数据库还没改好,不知道会用什么,暂时用老办法
  128. return true; ///////因为数据量太大,先这样测试
  129. switch ($taskModel->tasktype) {
  130. case 5: // 七日任务里面的登录任务,这个任务需要判断条件,需要判断登录够多少次
  131. return $taskModel->canshu <= count($req->userInfo->game->privateState->LoginDays);
  132. case 11: // 战斗力是否达到要求,战斗力暂时不检测,因为目前即使服务器验证也是客服端计算的上传结果. 20170311
  133. return TRUE;
  134. case 12: // 如果是英雄升级任务
  135. return $taskModel->canshu <= $req->userInfo->game->privateState->heroshengji;
  136. case 13: // 如果是英雄升阶任务
  137. return $taskModel->canshu <= $req->userInfo->game->privateState->heroshengjie;
  138. case 14: // 如果是英雄技能升级任务
  139. return $taskModel->canshu <= $req->userInfo->game->privateState->herojinhua;
  140. case 15: // 如果是英雄升星任务
  141. return $taskModel->canshu <= $req->userInfo->game->privateState->heroshengxing;
  142. case 21: // 如果是通关任务普通
  143. return $taskModel->canshu <= $req->userInfo->game->gates->normal->highest;
  144. case 22: // 如果是通关任务困难
  145. return $taskModel->canshu <= $req->userInfo->game->gates->hard->highest;
  146. case 23: // 如果是通关任务精英
  147. return $taskModel->canshu <= $req->userInfo->game->gates->elite->highest;
  148. case 24: // 如果是通关任务次数
  149. return $taskModel->canshu <= $req->userInfo->game->gates->Times;
  150. case 31: // 如果是装备升级任务
  151. return $taskModel->canshu <= $req->userInfo->game->privateState->ItemUpgrage;
  152. case 32: // 如果是宝石合成任务
  153. return $taskModel->canshu <= $req->userInfo->game->privateState->GemUpgrage;
  154. // case 41: // 如果是好友任务
  155. // return $taskModel->canshu <= FriendProc::getCurrentFriendsCount($req);
  156. default :
  157. return false;
  158. }
  159. }
  160. }