game2006api/webapp/services/FormulaService.php
aozhiwei c358b5cee3 1
2022-05-30 12:10:37 +08:00

273 lines
9.6 KiB
PHP

<?php
namespace services;
require_once('mt/AttrHelper.php');
require_once('mt/Item.php');
require_once('mt/FormulaPvp.php');
require_once('mt/HeroQuality.php');
require_once('mt/GunQuality.php');
use mt;
class FormulaService extends BaseService {
public static function getHeroPvpDailyCegUpLimit($heroDb)
{
//ROUND((0.0402*角色NFT阶数^3-0.9459*角色NFT阶数^2+11.9664*角色NFT阶数+4.01892)+(0.0268*角色幸运值^3-2.15712*角色幸运值^2+60.944*角色幸运值-560.24),0)+系统参数
$sysParam = 0;
$qualityMeta = mt\HeroQuality::getByQuality($heroDb['quality']);
$lucky = $qualityMeta ? $qualityMeta['lucky'] : 0;
$upLimit = round(
(
0.0402*pow($heroDb['quality'],3) -
0.9459*pow($heroDb['quality'],2) +
11.9664*$heroDb['quality'] +
4.01892
) +
(
0.0268*pow($lucky, 3) -
2.15712*pow($lucky, 2) +
60.944*$lucky -
560.24
)
) + $sysParam;
return $upLimit;
}
public static function getHeroPveDailyCegUpLimit($heroDb)
{
//ROUND((0.0938*角色NFT阶数^3-2.2071*角色NFT阶数^2+27.9216*角色NFT阶数+9.3776)+(0.0625*角色幸运值^3-5.0334*角色幸运值^2+142.2028*角色幸运值-1307.2268),0)+系统参数
$sysParam = 0;
$lucky = mt\AttrHelper::getAbsVal($heroDb['attr'], kHAT_LUCKY);
$upLimit = round(
(
0.0938*pow($heroDb['quality'],3) -
2.2071*pow($heroDb['quality'],2) +
27.9216*$heroDb['quality'] +
9.3776
) +
(
0.0625*pow($lucky, 3) -
5.0334*pow($lucky, 2) +
142.2028*$lucky -
1307.2268
)
) + $sysParam;
return $upLimit;
}
public static function calcHeroPvpCeg($heroDto, $params)
{
//PVP角色NFT每日获得极限*(50%*[每局排名TopX%对应比例]+25%*[每局PK人数排名TopX%对应比例]+15%*[每局英雄属性排名TopX%对应比例]+5%*[每局武器属性排名TopX%对应比例]+5%*[每局存活时间排名TopX%对应比例])
$upLimit = $heroDto['ceg_uplimit'];
$rankedTopX= getXVal($params, 'ranked_topx');
$killsTopX = getXVal($params, 'kills_topx');
$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'])
);
return round($ceg);
}
public static function calcHeroPveCeg($heroDb, $uplimit)
{
return 0;
}
public static function getWeaponPvpDailyCegUpLimit($weaponDb)
{
//ROUND((0.0111*武器NFT阶数^3-0.25974*武器NFT阶数^2+3.29292*武器NFT阶数+1.3389)+(0.0074*武器幸运值^3-0.59396*武器幸运值^2+16.7708*武器幸运值-153.964),0)+系统参数
$sysParam = 0;
$qualityMeta = mt\GunQuality::getByQuality($weaponDb['quality']);
$lucky = $qualityMeta ? $qualityMeta['lucky'] : 0;
$upLimit = round(
(
0.0111*pow($weaponDb['quality'],3) -
0.25974*pow($weaponDb['quality'],2) +
3.29292*$weaponDb['quality'] +
1.3389
) +
(
0.0074*pow($lucky, 3) -
0.59396*pow($lucky, 2) +
16.7708*$lucky -
153.964
)
) + $sysParam;
return $upLimit;
}
public static function getWeaponPveDailyCegUpLimit($weaponDb)
{
//ROUND((0.0259*武器NFT阶数^3-0.6061*武器NFT阶数^2+7.6836*武器NFT阶数+3.1241)+(0.0174*武器幸运值^3-1.3859*武器幸运值^2+39.132*武器幸运值-359.2493),0)+系统参数
$sysParam = 0;
$lucky = 0;
$upLimit = round(
(
0.0259*pow($weaponDb['quality'],3) -
0.6061*pow($weaponDb['quality'],2) +
7.6836*$weaponDb['quality'] +
3.1241
) +
(
0.0174*pow($lucky, 3) -
1.3859*pow($lucky, 2) +
39.132*$lucky -
359.2493
)
) + $sysParam;
return $upLimit;
}
public static function calcWeaponPvpCeg($weaponDto, $params)
{
//PVP武器NFT每日获得极限*(50%*[每局排名TopX%对应比例]+25%*[每局PK人数排名TopX%对应比例]+15%*[每局英雄属性排名TopX%对应比例]+5%*[每局武器属性排名TopX%对应比例]+5%*[每局存活时间排名TopX%对应比例])
$upLimit = $weaponDto['ceg_uplimit'];
$rankedTopX= getXVal($params, 'ranked_topx');
$killsTopX = getXVal($params, 'kills_topx');
$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'])
);
return round($ceg);
}
public static function calcWeaponPveCeg($weaponDb)
{
return 0;
}
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)+系统参数
$sysParam = 0;
$lucky = 0;
$upLimit = round(
(
0.0241*pow($heroDb['quality'],3) -
0.5675*pow($heroDb['quality'],2) +
7.1798*$heroDb['quality'] +
2.4114
) +
(
0.0161*pow($lucky, 3) -
1.2943*pow($lucky, 2) +
36.5664*$lucky -
336.144
)
) + $sysParam;
return $upLimit;
}
public static function getHeroPveTiliTotalValue($heroDb)
{
//ROUND((0.0563*角色NFT阶数^3-1.3243*角色NFT阶数^2+16.753*角色NFT阶数+5.6266)+(0.0375*角色幸运值^3-3.02*角色幸运值^2+85.3217*角色幸运值-784.3361),0)+系统参数
$sysParam = 0;
$lucky = 0;
$upLimit = round(
(
0.0563*pow($heroDb['quality'],3) -
1.3243*pow($heroDb['quality'],2) +
16.753*$heroDb['quality'] +
5.6266
) +
(
0.0375*pow($lucky, 3) -
3.02*pow($lucky, 2) +
85.3217*$lucky -
784.3361
)
) + $sysParam;
return $upLimit;
}
public static function getWeaponPvpDurabilityTotalValue($weaponDb)
{
//ROUND((0.0067*武器NFT阶数^3-0.1558*武器NFT阶数^2+1.9758*武器NFT阶数+0.8033)+(0.0044*武器幸运值^3-0.3564*武器幸运值^2+10.0625*武器幸运值-92.3784),0)+系统参数
$sysParam = 0;
$lucky = 0;
$upLimit = round(
(
0.0067*pow($heroDb['quality'],3) -
0.1558*pow($heroDb['quality'],2) +
1.9758*$heroDb['quality'] +
0.8033
) +
(
0.0044*pow($lucky, 3) -
0.3564*pow($lucky, 2) +
10.0625*$lucky -
92.3784
)
) + $sysParam;
return $upLimit;
}
public static function getWeaponPveDurabilityTotalValue($weaponDb)
{
//ROUND((0.0155*武器NFT阶数^3-0.3637*武器NFT阶数^2+4.6102*武器NFT阶数+1.8745)+(0.0104*武器幸运值^3-0.8315*武器幸运值^2+23.4792*武器幸运值-215.5496),0)+系统参数
$sysParam = 0;
$lucky = 0;
$upLimit = round(
(
0.0155*pow($heroDb['quality'],3) -
0.3637*pow($heroDb['quality'],2) +
4.6102*$heroDb['quality'] +
1.8745
) +
(
0.0104*pow($lucky, 3) -
0.8315*pow($lucky, 2) +
23.4792*$lucky -
215.5496
)
) + $sysParam;
return $upLimit;
}
public static function calcHeroPvpTiliConsume($heroDb)
{
//ROUND((最大角色体力值-当前剩余体力值)*(PVP角色体力总价值+PVE角色体力总价值)/最大角色体力值,0)
$heroMeta = mt\Item::get($heroDb['hero_id']);
if (!$heroMeta) {
return 0;
}
$cost = round(
($heroMeta['init_tili'] - $heroDb['hero_tili']) *
(1) /
$heroMeta['init_tili']
);
return $cost;
}
public static function calcWeaponPvpDurabilityConsume($weaponDb)
{
//ROUND((最大武器耐久度-当前剩余耐久度)*(PVP武器耐久度总价值+PVE武器耐久度总价值)/最大武器耐久度,0)
return 0;
}
}