From 69e67f3de686dce97ec27df066996d42632e4d96 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Wed, 31 Jul 2024 15:52:18 +0800 Subject: [PATCH] box reward --- webapp/services/RoomBattleDataService.php | 48 ++++++++++++----------- 1 file changed, 25 insertions(+), 23 deletions(-) diff --git a/webapp/services/RoomBattleDataService.php b/webapp/services/RoomBattleDataService.php index bffe9630..50a32728 100644 --- a/webapp/services/RoomBattleDataService.php +++ b/webapp/services/RoomBattleDataService.php @@ -127,7 +127,7 @@ class RoomBattleDataService extends BaseService { if ($this->mapMode == mt\MapMode::TREASURE_BOX_MODE && $member['move_distance'] <= 2000 ){ error_log("金币模式:消极战斗"); }else{ - $this->_getBattleRewards($userDb,$heroDb,$battleScore,$myTeamScoreAvg,$myTeamScore,$member['reward']); + $this->_getBattleRewards($userDb,$heroDb,$battleScore,$myTeamScoreAvg,$myTeamScore,$member['reward'], $member); myself()->_addItems($member['reward'], $awardService,$propertyChgService); if ($this->mapMode == mt\MapMode::GOLD_MODE){ $member['today_hero_battles'] = $heroDb['idx'] . '|' .myself()->_getDailyV(TN_DAILY_GOLD_MODE_BATTLE_TIMES,$heroDb['idx']); @@ -158,7 +158,7 @@ class RoomBattleDataService extends BaseService { } - public function _getBattleRewards($userDb,$heroDb,$battleScore,$teamScoreAvg,$teamScore,&$reward){ + public function _getBattleRewards($userDb,$heroDb,$battleScore,$teamScoreAvg,$teamScore,&$reward, $member){ error_log('settlementReward -> _getBattleRewards'); $mapModeMeta = mt\MapMode::findByMapMode($this->mapMode); $teamRank = getXVal($this->teamData,'pvp_team_rank', 0); @@ -260,28 +260,30 @@ class RoomBattleDataService extends BaseService { //宝箱掉落 $chestLootProbArr = explode(";",$rewardMeta['chestLootProb']); $rate = isset($chestLootProbArr[$teamRank-1]) ? $chestLootProbArr[$teamRank-1] : 0; - if ($rate > 0){ - $rand = $rate * 100; - $rnd = rand(1,100); - if ($rnd <= $rand){ - $chestItems = LootService::dropOutItem($rewardMeta['chestLoot']); - if (count($chestItems)>0){ - $event = array( - 'ID' => 'Box', - 'SUB_ID' => 'drop', - 'SUB_KEY' => 'drop_box', - 'before' =>array( - 'rnd' => $rnd, - 'rate' => $rate, - 'rewardMeta' => $rewardMeta, - ), - 'result' => $chestItems, - ); - LogService::burialPointEvent($event); - } + if ($rate > 0 && !empty($member['box_num'])){ + for ($i = 0; i < $member['box_num']; ++$i) { + $rand = $rate * 100; + $rnd = rand(1,100); + if ($rnd <= $rand){ + $chestItems = LootService::dropOutItem($rewardMeta['chestLoot']); + if (count($chestItems)>0){ + $event = array( + 'ID' => 'Box', + 'SUB_ID' => 'drop', + 'SUB_KEY' => 'drop_box', + 'before' =>array( + 'rnd' => $rnd, + 'rate' => $rate, + 'rewardMeta' => $rewardMeta, + ), + 'result' => $chestItems, + ); + LogService::burialPointEvent($event); + } - foreach ($chestItems as $item){ - array_push($reward,$item); + foreach ($chestItems as $item){ + array_push($reward,$item); + } } } }