修改 pvp 公式

This commit is contained in:
hujiabin 2022-09-29 20:56:10 +08:00
parent 46f3295980
commit 5c23fcf3d1
3 changed files with 38 additions and 34 deletions

View File

@ -29,7 +29,7 @@ class Battle(object):
'params': [ 'params': [
_common.ReqHead(), _common.ReqHead(),
['battle_uniid', '', 'battle_uuid'], ['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_id', 0, 'pve副本id'],
['pve_instance_mode', 0, 'pve副本mode'], ['pve_instance_mode', 0, 'pve副本mode'],
['is_valid_battle', 0, 'is_valid_battle'], ['is_valid_battle', 0, 'is_valid_battle'],

View File

@ -620,9 +620,9 @@ class BattleDataService extends BaseService {
'match_mode' => getReqVal('match_mode', 0), 'match_mode' => getReqVal('match_mode', 0),
'room_uuid' => getReqVal('room_uuid', 0), 'room_uuid' => getReqVal('room_uuid', 0),
]; ];
$cond = (1 - ($ranked >= 30 ? 1 : 0)) * $cond = (1 - ($ranked > 30 ? 1 : 0)) *
($kills >= 1 ? 1 : 0) * ($kills < 1 ? 1 : 0) *
($aliveTime >= 30 ? 1 : 0); ($aliveTime < 30 ? 1 : 0);
if (!$cond) { if (!$cond) {
return; return;
} }

View File

@ -14,7 +14,7 @@ class FormulaService extends BaseService {
public static function calcHeroPvpCeg($heroDto, $params) 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']; $upLimit = $heroDto['pvp_ceg_uplimit'];
$ranked = getXVal($params, 'ranked'); $ranked = getXVal($params, 'ranked');
$kills = getXVal($params, 'kills'); $kills = getXVal($params, 'kills');
@ -25,21 +25,23 @@ class FormulaService extends BaseService {
$heroTopX = getXVal($params, 'hero_topx'); $heroTopX = getXVal($params, 'hero_topx');
$weaponTopX = getXVal($params, 'weapon_topx'); $weaponTopX = getXVal($params, 'weapon_topx');
$survivalTopX = getXVal($params, 'survival_topx'); $survivalTopX = getXVal($params, 'survival_topx');
$meta = mt\FormulaPvp::getByRanked($rankedTopX); $meta_rankedTopX = mt\FormulaPvp::getByRanked($rankedTopX)?mt\FormulaPvp::getByRanked($rankedTopX)['ranked_topx']:0;
if (!$meta) { $meta_killsTopX = mt\FormulaPvp::getByRanked($killsTopX)?mt\FormulaPvp::getByRanked($killsTopX)['kills_topx']:0;
return 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;
$ceg = $upLimit * $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.5 * $meta_rankedTopX) +
(0.25 * $killsTopX * $meta['kills_topx']) + (0.25 * $meta_killsTopX) +
(0.15 * $heroTopX * $meta['hero_topx']) + (0.15 * $meta_heroTopX) +
(0.5 * $weaponTopX * $meta['weapon_topx']) + (0.05 * $meta_weaponTopX) +
(0.5 * $survivalTopX * $meta['survival_topx']) (0.05 * $meta_survivalTopX)
) * ) *
(1 - ($ranked >= 30 ? 1 : 0)) * (1 - ($ranked > 30 ? 1 : 0)) *
($kills >= 1 ? 1 : 0) * ($kills < 1 ? 1 : 0) *
($aliveTime >= 30 ? 1 : 0); ($aliveTime < 30 ? 1 : 0);
return cegFormat(($ceg)); return cegFormat(($ceg));
} }
@ -78,22 +80,24 @@ class FormulaService extends BaseService {
$heroTopX = getXVal($params, 'hero_topx'); $heroTopX = getXVal($params, 'hero_topx');
$weaponTopX = getXVal($params, 'weapon_topx'); $weaponTopX = getXVal($params, 'weapon_topx');
$survivalTopX = getXVal($params, 'survival_topx'); $survivalTopX = getXVal($params, 'survival_topx');
$meta = mt\FormulaPvp::getByRanked($rankedTopX); $meta_rankedTopX = mt\FormulaPvp::getByRanked($rankedTopX)?mt\FormulaPvp::getByRanked($rankedTopX)['ranked_topx']:0;
if (!$meta) { $meta_killsTopX = mt\FormulaPvp::getByRanked($killsTopX)?mt\FormulaPvp::getByRanked($killsTopX)['kills_topx']:0;
return 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;
$ceg = $upLimit * $meta_survivalTopX = mt\FormulaPvp::getByRanked($survivalTopX)?mt\FormulaPvp::getByRanked($survivalTopX)['survival_topx']:0;
(
(0.5 * $rankedTopX * $meta['ranked_topx']) + $ceg = 1/10*$upLimit * 5 *
(0.25 * $killsTopX * $meta['kills_topx']) + (
(0.15 * $heroTopX * $meta['hero_topx']) + (0.5 * $meta_rankedTopX) +
(0.5 * $weaponTopX * $meta['weapon_topx']) + (0.25 * $meta_killsTopX) +
(0.5 * $survivalTopX * $meta['survival_topx']) (0.15 * $meta_heroTopX) +
) * (0.05 * $meta_weaponTopX) +
(1 - ($ranked >= 30 ? 1 : 0)) * (0.05 * $meta_survivalTopX)
($kills >= 1 ? 1 : 0) * ) *
($aliveTime >= 30 ? 1 : 0); (1 - ($ranked > 30 ? 1 : 0)) *
return cegFormat($ceg); ($kills < 1 ? 1 : 0) *
($aliveTime < 30 ? 1 : 0);
return cegFormat(($ceg));
} }
public static function calcWeaponPveCeg($weaponDto, $instanceLevel, $instanceRank, $bossReward) public static function calcWeaponPveCeg($weaponDto, $instanceLevel, $instanceRank, $bossReward)