diff --git a/webapp/controller/BattleController.class.php b/webapp/controller/BattleController.class.php index f697b0f5..4093937b 100644 --- a/webapp/controller/BattleController.class.php +++ b/webapp/controller/BattleController.class.php @@ -235,14 +235,17 @@ class BattleController extends BaseAuthedController { $roomBattleDataService->maxAlive = max($roomBattleDataService->maxAlive,$aliveTime); } } - $totalScore = 0; - $totalNum = 0; - foreach ($input["team_list"] as $teamData){ - $roomBattleDataService->teamData = $teamData; - $roomBattleDataService->calTotalBattleScore($totalScore,$totalNum); + $realUserNum = 0; + if ($roomBattleDataService->mapMode == mt\MapMode::BET_MODE){ + foreach ($input["team_list"] as $teamData){ + foreach ($teamData['members'] as $member){ + if(!myself()->_isAndroidAccountId(getXVal($member,'account_id', 0))){ + $realUserNum += 1; + } + } + } } - TGLog::writeToLog("game_2006_api","battle_score",$roomBattleDataService->logData); - $roomBattleDataService->scoreAvg = $totalScore / $totalNum; + $roomBattleDataService->realUserCount = $realUserNum; foreach ($input["team_list"] as $teamData){ $battle_uuid = getXVal($teamData,'battle_uuid', 0); $battleSettlementDb = BattleSettlement::findTeam($battle_uuid,$room_uuid); diff --git a/webapp/services/RoomBattleDataService.php b/webapp/services/RoomBattleDataService.php index bc4dc032..cf55cb75 100644 --- a/webapp/services/RoomBattleDataService.php +++ b/webapp/services/RoomBattleDataService.php @@ -34,30 +34,20 @@ class RoomBattleDataService extends BaseService { public $maxRecover= 0; public $maxLevel= 0; public $maxAlive= 0; - public $scoreAvg= 0; + public $realUserCount= 0; public $logData = array(); - - public function calTotalBattleScore(&$totalScore,&$totalNum){ - foreach ($this->teamData['members'] as $member){ - $battleScore = $this->_calBattleScore($member); - array_push($this->logData,array( - 'account_id' => getXVal($member, 'account_id', 0), - 'kills' => getXVal($member, 'kills', 0), - 'damage' => getXVal($member, 'damage_out', 0), - 'assist' => getXVal($member, 'pvp_assist', 0), - 'score' => $battleScore, - )); - $totalScore += $battleScore; - if ($battleScore>0){ - $totalNum += 1; - } - } - - } - - + public function settlementReward(){ + $realUserNum = 0; + $myTeamScore = 0; + foreach ($this->teamData['members'] as $member){ + if(!myself()->_isAndroidAccountId(getXVal($member,'account_id', 0))){ + $realUserNum += 1; + $myTeamScore += $this->_calBattleScore($member); + } + } + $myTeamScoreAvg = $myTeamScore / $realUserNum; // $paramMeta = mt\Parameter::getVal('performance_score_range',0); // $scoreParam = explode("|",$paramMeta); // if (count($paramMeta) < 2){ @@ -133,7 +123,7 @@ class RoomBattleDataService extends BaseService { $userDb = myself()->_getOrmUserInfo(); $heroDb = Hero::find(getXVal($member,'hero_uniid', 0)); if ($userDb && $heroDb){ - $this->_getBattleRewards($userDb,$heroDb,$battleScore,$member['reward']); + $this->_getBattleRewards($userDb,$heroDb,$battleScore,$myTeamScoreAvg,$myTeamScore,$member['reward']); myself()->_addItems($member['reward'], $awardService,$propertyChgService); $battleSingleDb = BattleSettlement::findSingle($this->battleSettlementDb['battle_uuid']); @@ -155,7 +145,7 @@ class RoomBattleDataService extends BaseService { } - public function _getBattleRewards($userDb,$heroDb,$battleScore,&$reward){ + public function _getBattleRewards($userDb,$heroDb,$battleScore,$teamScoreAvg,$teamScore,&$reward){ $mapModeMeta = mt\MapMode::findByMapMode($this->mapMode); $teamRank = getXVal($this->teamData,'pvp_team_rank', 0); if ($mapModeMeta){ @@ -191,8 +181,12 @@ class RoomBattleDataService extends BaseService { // $strArr = explode("|",$rewardMeta['goldParam']); $coefficientArr = explode(";",$rewardMeta['goldParam']); $coefficient = isset($coefficientArr[$teamRank-1]) ? $coefficientArr[$teamRank-1] : 0; - $avg = $this->scoreAvg > 0 ? $battleScore / $this->scoreAvg : 0; - $gold = $gold * $coefficient * $avg; + if ($this->mapMode == mt\MapMode::GOLD_MODE){ + $gold = $gold * $coefficient * ($battleScore / $teamScoreAvg); + } + if ($this->mapMode == mt\MapMode::BET_MODE){ + $gold = $gold * $this->realUserCount * $coefficient * ($battleScore / $teamScore); + } } @@ -212,15 +206,18 @@ class RoomBattleDataService extends BaseService { $computeMaxEffect = mt\Parameter::getVal('economy_account_compute_E',0); $gold = $gold * ($totalCompute / ($totalCompute + $computeParam) * $computeMaxEffect + 1); } - if ($userDb['account_id'] == "6513_2006_wzXEMuD5cXc68z0K20yTUIPY1U6GcLJo"){ + if ($userDb['account_id'] == "6513_2006_ZsmnBnmQYcJ4XElLOmqTDBRySOrE66Kj"){ error_log("BattleRewardsInfo:".json_encode(array( 'goldLootIndex' => $rewardMeta['goldLoot'], + 'map_mode' => $this->mapMode, '*baseGold*' => $baseGold, 'teamRank' => $teamRank, '*ranking*' => isset($coefficient) ? $coefficient : '空', 'battleScore' => $battleScore, - 'roomScoreAvg' => $this->scoreAvg, - '*score*' => isset($avg) ? $avg : '空', + 'realUserCount' => $this->realUserCount, + 'teamScoreTotal' => $teamScore, + 'teamScoreAvg' => $teamScoreAvg, + '*score*' => '=========', 'wealthK' => $wealthK, 'wealthE' => $wealthE, 'wealthValue' => Hero::getHeroWealth($heroDb),