From 5c23fcf3d113c2690b7206a6cd81a722aaa91094 Mon Sep 17 00:00:00 2001 From: hujiabin Date: Thu, 29 Sep 2022 20:56:10 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=20pvp=20=E5=85=AC=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- doc/Battle.py | 2 +- webapp/services/BattleDataService.php | 6 +-- webapp/services/FormulaService.php | 64 ++++++++++++++------------- 3 files changed, 38 insertions(+), 34 deletions(-) diff --git a/doc/Battle.py b/doc/Battle.py index 9664ee67..ed7903c5 100644 --- a/doc/Battle.py +++ b/doc/Battle.py @@ -29,7 +29,7 @@ class Battle(object): 'params': [ _common.ReqHead(), ['battle_uniid', '', 'battle_uuid'], - ['match_mode', 0, '0: 匹配赛模式 1: 排位赛 3: pve'], + ['match_mode', 0, '0: 匹配赛模式 1: 排位赛 2: pve'], ['pve_instance_id', 0, 'pve副本id'], ['pve_instance_mode', 0, 'pve副本mode'], ['is_valid_battle', 0, 'is_valid_battle'], diff --git a/webapp/services/BattleDataService.php b/webapp/services/BattleDataService.php index 94d85cc5..c3e09f72 100644 --- a/webapp/services/BattleDataService.php +++ b/webapp/services/BattleDataService.php @@ -620,9 +620,9 @@ class BattleDataService extends BaseService { 'match_mode' => getReqVal('match_mode', 0), 'room_uuid' => getReqVal('room_uuid', 0), ]; - $cond = (1 - ($ranked >= 30 ? 1 : 0)) * - ($kills >= 1 ? 1 : 0) * - ($aliveTime >= 30 ? 1 : 0); + $cond = (1 - ($ranked > 30 ? 1 : 0)) * + ($kills < 1 ? 1 : 0) * + ($aliveTime < 30 ? 1 : 0); if (!$cond) { return; } diff --git a/webapp/services/FormulaService.php b/webapp/services/FormulaService.php index 8940b067..12666266 100644 --- a/webapp/services/FormulaService.php +++ b/webapp/services/FormulaService.php @@ -14,7 +14,7 @@ class FormulaService extends BaseService { public static function calcHeroPvpCeg($heroDto, $params) { - //PVP角色NFT每日获得极限*(50%*[每局排名TopX%对应比例]+25%*[每局PK人数排名TopX%对应比例]+15%*[每局英雄属性排名TopX%对应比例]+5%*[每局武器属性排名TopX%对应比例]+5%*[每局存活时间排名TopX%对应比例]) + //每局实际收益=10%PVP收益*5*(50%*[每局排名TopX%对应比例]+25%*[每局PK人数排名TopX%对应比例]+15%*[每局英雄属性排名TopX%对应比例]+5%*[每局武器属性排名TopX%对应比例]+5%*[每局存活时间排名TopX%对应比例]) $upLimit = $heroDto['pvp_ceg_uplimit']; $ranked = getXVal($params, 'ranked'); $kills = getXVal($params, 'kills'); @@ -25,21 +25,23 @@ class FormulaService extends BaseService { $heroTopX = getXVal($params, 'hero_topx'); $weaponTopX = getXVal($params, 'weapon_topx'); $survivalTopX = getXVal($params, 'survival_topx'); - $meta = mt\FormulaPvp::getByRanked($rankedTopX); - if (!$meta) { - return 0; - } - $ceg = $upLimit * + $meta_rankedTopX = mt\FormulaPvp::getByRanked($rankedTopX)?mt\FormulaPvp::getByRanked($rankedTopX)['ranked_topx']:0; + $meta_killsTopX = mt\FormulaPvp::getByRanked($killsTopX)?mt\FormulaPvp::getByRanked($killsTopX)['kills_topx']:0; + $meta_heroTopX = mt\FormulaPvp::getByRanked($heroTopX)?mt\FormulaPvp::getByRanked($heroTopX)['hero_topx']:0; + $meta_weaponTopX = mt\FormulaPvp::getByRanked($weaponTopX)?mt\FormulaPvp::getByRanked($weaponTopX)['weapon_topx']:0; + $meta_survivalTopX = mt\FormulaPvp::getByRanked($survivalTopX)?mt\FormulaPvp::getByRanked($survivalTopX)['survival_topx']:0; + + $ceg = 1/10*$upLimit * 5 * ( - (0.5 * $rankedTopX * $meta['ranked_topx']) + - (0.25 * $killsTopX * $meta['kills_topx']) + - (0.15 * $heroTopX * $meta['hero_topx']) + - (0.5 * $weaponTopX * $meta['weapon_topx']) + - (0.5 * $survivalTopX * $meta['survival_topx']) + (0.5 * $meta_rankedTopX) + + (0.25 * $meta_killsTopX) + + (0.15 * $meta_heroTopX) + + (0.05 * $meta_weaponTopX) + + (0.05 * $meta_survivalTopX) ) * - (1 - ($ranked >= 30 ? 1 : 0)) * - ($kills >= 1 ? 1 : 0) * - ($aliveTime >= 30 ? 1 : 0); + (1 - ($ranked > 30 ? 1 : 0)) * + ($kills < 1 ? 1 : 0) * + ($aliveTime < 30 ? 1 : 0); return cegFormat(($ceg)); } @@ -78,22 +80,24 @@ class FormulaService extends BaseService { $heroTopX = getXVal($params, 'hero_topx'); $weaponTopX = getXVal($params, 'weapon_topx'); $survivalTopX = getXVal($params, 'survival_topx'); - $meta = mt\FormulaPvp::getByRanked($rankedTopX); - if (!$meta) { - return 0; - } - $ceg = $upLimit * - ( - (0.5 * $rankedTopX * $meta['ranked_topx']) + - (0.25 * $killsTopX * $meta['kills_topx']) + - (0.15 * $heroTopX * $meta['hero_topx']) + - (0.5 * $weaponTopX * $meta['weapon_topx']) + - (0.5 * $survivalTopX * $meta['survival_topx']) - ) * - (1 - ($ranked >= 30 ? 1 : 0)) * - ($kills >= 1 ? 1 : 0) * - ($aliveTime >= 30 ? 1 : 0); - return cegFormat($ceg); + $meta_rankedTopX = mt\FormulaPvp::getByRanked($rankedTopX)?mt\FormulaPvp::getByRanked($rankedTopX)['ranked_topx']:0; + $meta_killsTopX = mt\FormulaPvp::getByRanked($killsTopX)?mt\FormulaPvp::getByRanked($killsTopX)['kills_topx']:0; + $meta_heroTopX = mt\FormulaPvp::getByRanked($heroTopX)?mt\FormulaPvp::getByRanked($heroTopX)['hero_topx']:0; + $meta_weaponTopX = mt\FormulaPvp::getByRanked($weaponTopX)?mt\FormulaPvp::getByRanked($weaponTopX)['weapon_topx']:0; + $meta_survivalTopX = mt\FormulaPvp::getByRanked($survivalTopX)?mt\FormulaPvp::getByRanked($survivalTopX)['survival_topx']:0; + + $ceg = 1/10*$upLimit * 5 * + ( + (0.5 * $meta_rankedTopX) + + (0.25 * $meta_killsTopX) + + (0.15 * $meta_heroTopX) + + (0.05 * $meta_weaponTopX) + + (0.05 * $meta_survivalTopX) + ) * + (1 - ($ranked > 30 ? 1 : 0)) * + ($kills < 1 ? 1 : 0) * + ($aliveTime < 30 ? 1 : 0); + return cegFormat(($ceg)); } public static function calcWeaponPveCeg($weaponDto, $instanceLevel, $instanceRank, $bossReward)