This commit is contained in:
aozhiwei 2022-09-19 19:33:12 +08:00
parent 4d7637e575
commit 43a916c235
2 changed files with 61 additions and 29 deletions

View File

@ -500,40 +500,22 @@ class BattleDataService extends BaseService {
$heroFragmentNum = FragmentPool::getHeroNum(); $heroFragmentNum = FragmentPool::getHeroNum();
$gunFragmentNum = FragmentPool::getGunNum(); $gunFragmentNum = FragmentPool::getGunNum();
$rankedTopX= getXVal($params, 'ranked_topx'); $heroProbability = FormulaService::calcHeroFragmentProbabilityPvp
$meta = mt\FormulaPvp::getByRanked($rankedTopX); ($_REQUEST,
if (!$meta) { $onlineNum,
return; $heroFragmentNum,
} $todayPvpBattleTimes);
$gunProbability = FormulaService::calcGunFragmentProbabilityPvp
$heroProbability = min($heroFragmentNum / $onlineNum * ($_REQUEST,
5 * $onlineNum,
( $gunFragmentNum,
0.5*$meta['ranked_topx'] + $todayPvpBattleTimes);
0.25*$meta['kills_topx'] +
0.15*$meta['hero_topx'] +
0.05*$meta['weapon_topx']
) *
pow(2, ($todayPvpBattleTimes % 10) - 1), 1);
$gunProbability = min($gunFragmentNum / $onlineNum *
5 *
(
0.5*$meta['ranked_topx'] +
0.25*$meta['kills_topx'] +
0.15*$meta['hero_topx'] +
0.05*$meta['weapon_topx']
) *
pow(2, ($todayPvpBattleTimes % 10) - 1), 1);
$heroProbability = max($heroProbability, 0); $heroProbability = max($heroProbability, 0);
$gunProbability = max($gunProbability, 0); $gunProbability = max($gunProbability, 0);
$emptyProbability = max(1 - $heroProbability - $gunProbability, 0); $emptyProbability = max(1 - $heroProbability - $gunProbability, 0);
$dropIdx = $this->randWeight(array($heroProbability, $gunProbability, $emptyProbability)); $dropIdx = $this->randWeight(array($heroProbability, $gunProbability, $emptyProbability));
if ($dropIdx < 0 || $dropIdx == 2) {
return;
}
if ($dropIdx == 0) { if ($dropIdx == 0) {
$itemId = FragmentPool::dropHero(); $itemId = FragmentPool::dropHero();
if ($itemId) { if ($itemId) {

View File

@ -20,7 +20,7 @@ class FormulaService extends BaseService {
$kills = getXVal($params, 'kills'); $kills = getXVal($params, 'kills');
$aliveTime = getXVal($params, 'alive_time'); $aliveTime = getXVal($params, 'alive_time');
$rankedTopX= getXVal($params, 'ranked_topx'); $rankedTopX = getXVal($params, 'ranked_topx');
$killsTopX = getXVal($params, 'kills_topx'); $killsTopX = getXVal($params, 'kills_topx');
$heroTopX = getXVal($params, 'hero_topx'); $heroTopX = getXVal($params, 'hero_topx');
$weaponTopX = getXVal($params, 'weapon_topx'); $weaponTopX = getXVal($params, 'weapon_topx');
@ -96,6 +96,56 @@ class FormulaService extends BaseService {
return round(ceg); return round(ceg);
} }
public static function calcHeroFragmentProbabilityPvp($params,
$onlineNum,
$heroFragmentNum,
$todayPvpBattleTimes)
{
$rankedTopX = getXVal($params, 'ranked_topx');
$killsTopX = getXVal($params, 'kills_topx');
$heroTopX = getXVal($params, 'hero_topx');
$weaponTopX = getXVal($params, 'weapon_topx');
$meta = mt\FormulaPvp::getByRanked($rankedTopX);
if (!$meta) {
return 0;
}
$heroProbability = min($heroFragmentNum / $onlineNum *
5 *
(
0.5 * $rankedTopX * $meta['ranked_topx'] +
0.25 * $killsTopX * $meta['kills_topx'] +
0.15 * $heroTopX * $meta['hero_topx'] +
0.05 * $weaponTopX * $meta['weapon_topx']
) *
pow(2, ($todayPvpBattleTimes % 10) - 1), 1);
return $heroProbability;
}
public static function calcWeaponFragmentProbabilityPvp($params,
$onlineNum,
$weaponFragmentNum,
$todayPvpBattleTimes)
{
$rankedTopX = getXVal($params, 'ranked_topx');
$killsTopX = getXVal($params, 'kills_topx');
$heroTopX = getXVal($params, 'hero_topx');
$weaponTopX = getXVal($params, 'weapon_topx');
$meta = mt\FormulaPvp::getByRanked($rankedTopX);
if (!$meta) {
return 0;
}
$weaponProbability = min($FragmentNum / $onlineNum *
5 *
(
0.5 * $rankedTopX * $meta['ranked_topx'] +
0.25 * $killsTopX * $meta['kills_topx'] +
0.15 * $heroTopX * $meta['hero_topx'] +
0.05 * $weaponTopX * $meta['weapon_topx']
) *
pow(2, ($todayPvpBattleTimes % 10) - 1), 1);
return $weaponProbability;
}
public static function getHeroPvpTiliTotalValue($heroDb) public static function getHeroPvpTiliTotalValue($heroDb)
{ {
//ROUND((0.0241*角色NFT阶数^3-0.5675*角色NFT阶数^2+7.1798*角色NFT阶数+2.4114)+(0.0161*角色幸运值^3-1.2943*角色幸运值^2+36.5664*角色幸运值-336.144),0)+系统参数 //ROUND((0.0241*角色NFT阶数^3-0.5675*角色NFT阶数^2+7.1798*角色NFT阶数+2.4114)+(0.0161*角色幸运值^3-1.2943*角色幸运值^2+36.5664*角色幸运值-336.144),0)+系统参数