1
This commit is contained in:
parent
4d7637e575
commit
43a916c235
@ -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) {
|
||||||
|
@ -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)+系统参数
|
||||||
|
Loading…
x
Reference in New Issue
Block a user