修改 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': [
_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'],

View File

@ -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;
}

View File

@ -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)