From eac4fdcbe85dcb3732f8888caa618318a67d07f8 Mon Sep 17 00:00:00 2001 From: hujiabin Date: Thu, 23 Mar 2023 15:47:31 +0800 Subject: [PATCH] =?UTF-8?q?=E7=94=A8=E6=88=B7=E6=88=90=E9=95=BF=E8=8E=B7?= =?UTF-8?q?=E5=BE=97=E5=A5=96=E5=8A=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/BaseAuthedController.class.php | 18 ++++++++++++++-- webapp/mt/Task.php | 21 +++++++++++++++++++ webapp/services/PropertyChgService.php | 4 ++++ webapp/services/TameBattleDataService.php | 17 ++++++++------- 4 files changed, 50 insertions(+), 10 deletions(-) diff --git a/webapp/controller/BaseAuthedController.class.php b/webapp/controller/BaseAuthedController.class.php index b7974757..70b61626 100644 --- a/webapp/controller/BaseAuthedController.class.php +++ b/webapp/controller/BaseAuthedController.class.php @@ -16,6 +16,8 @@ require_once('models/Chip.php'); require_once('mt/Parameter.php'); require_once('mt/RankSeason.php'); require_once('mt/LevelUp.php'); +require_once('mt/Task.php'); +require_once('mt/Drop.php'); use phpcommon\SqlHelper; use models\Bag; @@ -228,7 +230,7 @@ class BaseAuthedController extends BaseController { return in_array($itemId, array(V_ITEM_GOLD, V_ITEM_DIAMOND, V_ITEM_EXP, V_ITEM_ACTIVE,V_ITEM_BCEG)); } - public function _addVirtualItem($itemId, $itemNum) + public function _addVirtualItem($itemId, $itemNum,$awardService,$propertyChgService) { if ($itemNum <= 0){ return; @@ -272,6 +274,18 @@ class BaseAuthedController extends BaseController { $newlV = $userDb['level']; $newExp = $userDb['exp']+$itemNum; \mt\LevelUp::getExpByLv($newlV,$newExp); + if ($newlV != $userDb['level']){ + //协议通知前端等级变更 + $propertyChgService->addUserLevelChg(); + //添加奖励 + for ($i=$userDb['level']+1; $i<=$newlV; $i++){ + $taskMeta = \mt\Task::findAchievementLevel($i); + if ($taskMeta){ + $dropMeta = mt\Drop::get($taskMeta['reward']); + $this->_scatterDrop('mission:' . $taskMeta['id'], $dropMeta, $awardService, $propertyChgService); + } + } + } $this->_updateUserInfo(array( 'level' => $newlV, 'exp' => $newExp @@ -339,7 +353,7 @@ class BaseAuthedController extends BaseController { foreach ($items as $item) { $awardService->addItem($item['item_id'], $item['item_num']); if ($this->_isVirtualItem($item['item_id'])) { - $this->_addVirtualItem($item['item_id'], $item['item_num']); + $this->_addVirtualItem($item['item_id'], $item['item_num'],$awardService,$propertyService); $propertyService->addUserChg(); } else { $itemMeta = mt\Item::get($item['item_id']); diff --git a/webapp/mt/Task.php b/webapp/mt/Task.php index 184c272a..2efa9370 100644 --- a/webapp/mt/Task.php +++ b/webapp/mt/Task.php @@ -71,12 +71,26 @@ class Task { const DAILY_MISSION_CUSTOM_TYPE = 1; const SEASON_WEEKLY_MISSION_CUSTOM_TYPE = 2; const OFFER_REWARD_MISSION_CUSTOM_TYPE = 3; + const ACHIEVEMENT_MISSION_CUSTOM_TYPE = 4; public static function get($id) { return getXVal(self::getMetaList(), $id); } + public static function findAchievementLevel($level){ + $taskMeta = array(); + foreach (self::getMetaList() as $meta) { + if ( + $meta['type'] == self::ACHIEVEMENT_MISSON_TYPE && + $meta['target'] == $level + ) { + $taskMeta = $meta; + } + } + return $taskMeta; + } + public static function getCustomTypeMetaList($type, $missionService) { $metaList = array(); @@ -105,6 +119,13 @@ class Task { } } break; + case self::ACHIEVEMENT_MISSION_CUSTOM_TYPE: + { + if ($meta['type'] == self::ACHIEVEMENT_MISSON_TYPE) { + array_push($metaList, $meta); + } + } + break; default: { } diff --git a/webapp/services/PropertyChgService.php b/webapp/services/PropertyChgService.php index 760d576e..de6a14eb 100644 --- a/webapp/services/PropertyChgService.php +++ b/webapp/services/PropertyChgService.php @@ -54,6 +54,10 @@ class PropertyChgService extends BaseService { { $this->internalAddChg('parachute'); } + public function addUserLevelChg() + { + $this->internalAddChg('level'); + } public function toDto() { diff --git a/webapp/services/TameBattleDataService.php b/webapp/services/TameBattleDataService.php index dfda0d51..e76edd0a 100644 --- a/webapp/services/TameBattleDataService.php +++ b/webapp/services/TameBattleDataService.php @@ -236,9 +236,9 @@ class TameBattleDataService extends BaseService { "pvp_mode" => $pvp_mode, "team_mode" => getXVal($this->allInfo,'team_mode', 0), "battle_rank" => getXVal($this->battleInfo,'ranked', 0), - "team_rank" => getXVal($this->allInfo,'team_ranked', 0), - "team_kills" => getXVal($this->allInfo,'team_kills', 0), - "is_win" => getXVal($this->battleInfo,'pve_kill_boss', 0), + "team_rank" => getXVal($this->allInfo,'pvp_team_rank', 0), + "team_kills" => getXVal($this->allInfo,'pvp_team_kills', 0), + "is_win" => getXVal($this->battleInfo,'pve_boss_killed', 0), "kills" => getXVal($this->battleInfo,'kills', 0), "hero_id" => getXVal($this->battleInfo,'hero_uniid', 0), "weapon1" => getXVal($this->battleInfo,'weapon_uuid1', 0), @@ -247,8 +247,8 @@ class TameBattleDataService extends BaseService { "current_level_class" => $newRank, "current_level_class_score" => $newScore, "level_class_score_chg" => $newScore - $this->userInfo['score'], // 排位分改变 - "pve_rank_score" => getXVal($this->battleInfo,'pve_rank_score', 0), - "pve_kill_boss" => getXVal($this->battleInfo,'pve_kill_boss', 0), + "pve_rank_score" => getXVal($this->battleInfo,'pve_score', 0), + "pve_kill_boss" => getXVal($this->battleInfo,'pve_boss_killed', 0), "pve_instance_id" => getXVal($this->allInfo,'pve_instance_id', 0), // "pve_instance_mode" => getXVal($this->allInfo,'pve_instance_mode', 0), ); @@ -334,6 +334,7 @@ class TameBattleDataService extends BaseService { 'head'=> getXVal($info,'head', 0), 'head_frame'=> getXVal($info,'head_frame', 0), 'sex'=> getXVal($info,'sex', 0), + 'hero_uniid'=> getXVal($info,'hero_uniid', 0), 'hero_id'=> getXVal($info,'hero_id', 0), 'dead'=> getXVal($info,'dead', 0), 'is_mvp'=> getXVal($info,'is_mvp', 0), @@ -357,7 +358,7 @@ class TameBattleDataService extends BaseService { 'pve_wave'=> getXVal($info,'pve_wave', 0), 'pve_max_wave'=> getXVal($info,'pve_max_wave', 0), 'pve_boss_killed'=> getXVal($info,'pve_boss_killed', 0), - 'pve_rank_score'=> getXVal($info,'pve_rank_score', 0), +// 'pve_rank_score'=> getXVal($info,'pve_rank_score', 0), ); $temp['reward'] = array( @@ -637,12 +638,12 @@ class TameBattleDataService extends BaseService { } } //排名 - $ranked = getXVal($this->allInfo,'pvp_team_rank', 0); + $ranked = getXVal($this->battleInfo,'ranked', 0); if ($ranked == 1) { //吃鸡次数 $this->incValue($battleData, 'total_win_times', 1); } - if ($ranked <= 10){ + if ($ranked <= 10 && $ranked>0){ //排名前十 总次数 $this->incValue($battleData, 'total_top_ten_times', 1); }