diff --git a/doc/Activity.py b/doc/Activity.py index 222a3f29..1a15fca2 100644 --- a/doc/Activity.py +++ b/doc/Activity.py @@ -21,6 +21,7 @@ class Activity(object): ['income_start_time', 0, '宝箱掉落阶段开始时间'], ['income_end_time', 0, '宝箱掉落阶段结束时间'], ['status', 0, '0:任务进行时 1:4v4完成任务 2:pvp完成任务 '], + ['drop_state', 0, ' 宝箱掉落模式 1:4v4 2:pvp '], ['!taskDtoList1', [serverTask()], '4v4任务列表'], ['!taskDtoList2', [serverTask()], 'pvp任务列表'], ] diff --git a/webapp/controller/ActivityController.class.php b/webapp/controller/ActivityController.class.php index 475c2784..b1403a71 100644 --- a/webapp/controller/ActivityController.class.php +++ b/webapp/controller/ActivityController.class.php @@ -10,7 +10,7 @@ class ActivityController extends BaseAuthedController { public function serverTask(){ $currentMeta = \mt\ServerTaskTime::getCurrentTime(); if (! $currentMeta){ - myself()->_setV(TN_SERVER_TASK_STATE,0,0); + myself()->_setV(TN_SERVER_TASK_STATE,0,\mt\ServerTask::NOT_ACCOMPLISH_STATE); $this->_rspErr(111, 'The activity has not started yet'); return; } @@ -47,12 +47,14 @@ class ActivityController extends BaseAuthedController { if ($pvpCount == count($taskDtoList2)){ myself()->_setV(TN_SERVER_TASK_STATE,0,\mt\ServerTask::ACCOMPLISH_PVP_STATE); } + $drop_state = $hashRateService->getServerASKBoxMode(); $this->_rspData(array( 'obtain_start_time' => strtotime($currentMeta['obtain_start_time']), 'obtain_end_time' => strtotime($currentMeta['obtain_end_time']), 'income_start_time' => strtotime($currentMeta['income_start_time']), 'income_end_time' => strtotime($currentMeta['income_end_time']), 'status' => myself()->_getV(TN_SERVER_TASK_STATE,0), + 'drop_state' => $drop_state, 'taskDtoList1' => $taskDtoList1, 'taskDtoList2' => $taskDtoList2, )); diff --git a/webapp/controller/BattleController.class.php b/webapp/controller/BattleController.class.php index ad5e1bf9..07e9d737 100644 --- a/webapp/controller/BattleController.class.php +++ b/webapp/controller/BattleController.class.php @@ -129,14 +129,16 @@ class BattleController extends BaseAuthedController { $teamBattleDataService = new services\TameBattleDataService(); $teamBattleDataService->calStarNum(); $mode = getReqVal('room_mode', 0); - $status = myself()->_getV(TN_SERVER_TASK_STATE,0); $item = array(); $currentMeta = \mt\ServerTaskTime::getCurrentTime(); if ($currentMeta && myself()->_getNowTime() >= strtotime($currentMeta['income_start_time']) && myself()->_getNowTime() < strtotime($currentMeta['income_end_time'])){ + $hashRateService = new services\HashRateService(); + $hashRateService->init(); + $status = $hashRateService->getServerASKBoxMode(); switch ($status){ - case \mt\ServerTask::ACCOMPLISH_MOBA_STATE :{ + case \mt\ServerTask::MOBA_DROP_STATE :{ if ($mode == \services\TameBattleDataService::ROOM_MODE_PVP){ array_push($item,array( "item_id" => 300001, @@ -146,7 +148,7 @@ class BattleController extends BaseAuthedController { } } break; - case \mt\ServerTask::ACCOMPLISH_PVP_STATE : { + case \mt\ServerTask::PVP_DROP_STATE : { if ($mode == \services\TameBattleDataService::ROOM_MODE_MOBA){ array_push($item,array( "item_id" => 300001, diff --git a/webapp/mt/ServerTask.php b/webapp/mt/ServerTask.php index 7237961f..0d82d332 100644 --- a/webapp/mt/ServerTask.php +++ b/webapp/mt/ServerTask.php @@ -13,10 +13,14 @@ class ServerTask { const MOBA_TYPE = 1; const PVP_TYPE = 2; - + const NOT_ACCOMPLISH_STATE = 0; const ACCOMPLISH_MOBA_STATE = 1; const ACCOMPLISH_PVP_STATE = 2; + const NOT_DROP_STATE = 0; + const MOBA_DROP_STATE = 1; + const PVP_DROP_STATE = 2; + public static function getCustomTypeMetaList($type) { $metaList = array(); diff --git a/webapp/services/HashRateService.php b/webapp/services/HashRateService.php index 0aa7eced..52fd4fb3 100644 --- a/webapp/services/HashRateService.php +++ b/webapp/services/HashRateService.php @@ -76,6 +76,8 @@ class HashRateService extends BaseService $this->mobaBattleDataServerTask = $this->serverTaskData['mobaData']; } + + public function hashRateTaskDto($taskMate ,$currentPeriod){ $taskDto = array( 'task_id' => $taskMate['id'], @@ -265,4 +267,54 @@ class HashRateService extends BaseService return $battleData ? $battleData : array(); } + public function getServerASKBoxMode(){ + $currentServerTask = \mt\ServerTaskTime::getCurrentTime(); + if (myself()->_getNowTime() < strtotime($currentServerTask['income_start_time'])){ + return \mt\ServerTask::NOT_DROP_STATE; + } + $taskList1 = array(); + $taskList2 = array(); + $taskListMeta = \mt\ServerTask::getMetaList(); + foreach ($taskListMeta as $taskMeta){ + if ($taskMeta['type'] == \mt\ServerTask::MOBA_TYPE){ + $taskDto = $this->serverTaskDto($taskMeta); + array_push($taskList1,$taskDto); + } + if ($taskMeta['type'] == \mt\ServerTask::PVP_TYPE){ + $taskDto = $this->serverTaskDto($taskMeta); + array_push($taskList2,$taskDto); + } + } + $mobaCount = 0; + $pvpCount = 0; + foreach ($taskList1 as $taskDto){ + if ($taskDto['state'] == \services\HashRateService::FINISHED_STATE){ + $mobaCount += 1; + } + } + foreach ($taskList2 as $taskDto){ + if ($taskDto['state'] == \services\HashRateService::FINISHED_STATE){ + $pvpCount += 1; + } + } + if ($mobaCount == count($taskList1)){ + return \mt\ServerTask::MOBA_DROP_STATE; + }elseif ($pvpCount == count($taskList2)){ + return \mt\ServerTask::PVP_DROP_STATE; + }else{ + if ($mobaCount > $pvpCount){ + return \mt\ServerTask::MOBA_DROP_STATE; + }elseif ($mobaCount < $pvpCount){ + return \mt\ServerTask::PVP_DROP_STATE; + }else{ + if (getXVal($this->mobaBattleDataServerTask,"modifytime", 0) < getXVal($this->pvpBattleDataServerTask,"modifytime", 0)){ + return \mt\ServerTask::MOBA_DROP_STATE; + }else{ + return \mt\ServerTask::PVP_DROP_STATE; + } + } + } + + } + } \ No newline at end of file diff --git a/webapp/services/TameBattleDataService.php b/webapp/services/TameBattleDataService.php index 6995e06c..fcae593d 100644 --- a/webapp/services/TameBattleDataService.php +++ b/webapp/services/TameBattleDataService.php @@ -1352,6 +1352,11 @@ class TameBattleDataService extends BaseService { $this->incValue($battleData, 'use_skill_times', getXVal($this->battleInfo,'use_skill_times', 0)); //道具使用 $this->procWeaponsSlot($battleData); + + if (!isset($battleData['createtime'])) { + $battleData['createtime'] = myself()->_getNowTime(); + } + $battleData['modifytime'] = myself()->_getNowTime(); } }