From c3ce8b36029bfa6598d5d848fea6c90ef34cd343 Mon Sep 17 00:00:00 2001 From: hujiabin <519660157@qq.com> Date: Wed, 31 Jul 2024 16:09:13 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=9D=E7=AE=B1=E5=BC=80=E5=90=AF=E5=85=AC?= =?UTF-8?q?=E5=BC=8F=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- webapp/controller/BagController.class.php | 18 +++++------------- webapp/controller/GMController.class.php | 22 +++++++++------------- 2 files changed, 14 insertions(+), 26 deletions(-) diff --git a/webapp/controller/BagController.class.php b/webapp/controller/BagController.class.php index a5b4e2f3..11fd58e9 100644 --- a/webapp/controller/BagController.class.php +++ b/webapp/controller/BagController.class.php @@ -395,26 +395,18 @@ class BagController extends BaseAuthedController { // $lucky = Hero::getAccountLucky(myself()->_getAddress()); $lucky = Hero::getAccountLuckyTemp(); $luckyParam = \mt\Parameter::getVal('economy_account_luck_K',0); - $luckyMaxPro = \mt\Parameter::getVal('economy_account_luck_E',0); - $prob = $luckyMaxPro * ($lucky / ($lucky+$luckyParam)); + + $rangeArr = explode("|",\mt\Parameter::getVal('economy_account_luck_range',0)); + $rate = ($rangeArr[1]-$rangeArr[0]) * $lucky/($lucky+$luckyParam) + $rangeArr[0]; + $rnd = rand() / (mt_getrandmax() + 1); $items = array(); - for ($i=0;$i<$itemNum;$i++){ - $times = $this->proEffect($prob,1); + if ($rnd <= $rate){ $itemsTemp = \services\LootService::dropOutItem($itemMeta['loot']); - if ($times > 0){ - foreach ($itemsTemp as $itemTemp){ - $itemTemp['item_num'] += $itemTemp['item_num']*$times; - array_push($items,$itemTemp); - } - }else{ foreach ($itemsTemp as $itemTemp){ array_push($items,$itemTemp); } - } } - - }else{ $items = array(); for ($i=0;$i<$itemNum;$i++){ diff --git a/webapp/controller/GMController.class.php b/webapp/controller/GMController.class.php index 29f3d62a..66a27f08 100644 --- a/webapp/controller/GMController.class.php +++ b/webapp/controller/GMController.class.php @@ -270,21 +270,17 @@ END $lootMeta = mt\LootConfig::find($itemMeta['loot']); if ($lootMeta['isAffected']){ $luckyParam = \mt\Parameter::getVal('economy_account_luck_K',0); - $luckyMaxPro = \mt\Parameter::getVal('economy_account_luck_E',0); - $prob = $luckyMaxPro * ($lucky / ($lucky+$luckyParam)); + $rangeArr = explode("|",\mt\Parameter::getVal('economy_account_luck_range',0)); + $rate = ($rangeArr[1]-$rangeArr[0]) * $lucky/($lucky+$luckyParam) + $rangeArr[0]; + $rnd = rand() / (mt_getrandmax() + 1); for ($i=0; $i<$itemNum; $i++){ - $times = $this->proEffect($prob,1); - $temp = array( - "prob" => $prob, - "times" => $times - ); - $items = \services\LootService::dropOutItem($itemMeta['loot']); - if ($times > 0){ - foreach ($items as &$item){ - $item['item_num'] += $item['item_num']*$times; - } + if ($rnd <= $rate){ + $items = \services\LootService::dropOutItem($itemMeta['loot']); } - array_unshift($items,$temp); + array_unshift($items,array( + 'rnd' => $rnd, + 'rate' => $rate, + )); TGLog::writeToLog("game_2006_api","loot",array( $itemId => $items ));