This commit is contained in:
aozhiwei 2022-05-29 00:51:43 +08:00
parent 53a71ab594
commit 44d06654ce
4 changed files with 80 additions and 15 deletions

View File

@ -293,4 +293,19 @@ class Gun extends BaseModel {
return $finalyAddGold;
}
public static function newGainGold($gunDto, $addGold)
{
$newGold = min($gunDto['ceg_uplimit'],
$gunDto['today_get_gold'] + $addGold);
$finalyAddGold = max(0, $newGold - $gunDto['today_get_gold']);
if ($finalyAddGold > 0) {
self::update($gunDto['gun_uniid'],
array(
'today_get_gold' => $newGold,
'last_get_gold_time' => myself()->_getNowTime()
));
}
return $finalyAddGold;
}
}

View File

@ -332,4 +332,19 @@ class Hero extends BaseModel {
return $finalyAddGold;
}
public static function newGainGold($heroDto, $addGold)
{
$newGold = min($heroDto['ceg_uplimit'],
$heroDto['today_get_gold'] + $addGold);
$finalyAddGold = max(0, $newGold - $heroDto['today_get_gold']);
if ($finalyAddGold > 0) {
self::update($heroDto['hero_uniid'],
array(
'today_get_gold' => $newGold,
'last_get_gold_time' => myself()->_getNowTime()
));
}
return $finalyAddGold;
}
}

View File

@ -359,7 +359,42 @@ class BattleDataService extends BaseService {
if (!$heroMeta) {
return;
}
$pvpCeg = FormulaService::calcHeroPvpCeg($heroDto, $_REQUEST);
$heroPvpCeg = FormulaService::calcHeroPvpCeg($heroDto, $_REQUEST);
$weaponPvpCeg1 = 0;
$weaponPvpCeg2 = 0;
$weaponDb1 = Gun::find(getReqVal('weapon_uuid1', 0));
if ($weaponDb1) {
$weaponDto1 = Gun::toDto($weaponDb1);
$weaponPvpCeg1 = FormulaService::calcWeaponPvpCeg($weaponDto1, $_REQUEST);
}
$weaponDb2 = Gun::find(getReqVal('weapon_uuid2', 0));
if ($weaponDb2) {
$weaponDto2 = Gun::toDto($weaponDb2);
$weaponPvpCeg2 = FormulaService::calcWeaponPvpCeg($weaponDto2, $_REQUEST);
}
error_log(json_encode(array(
'heroPvpCeg' => $heroPvpCeg,
'weaponPvpCeg1' => $weaponPvpCeg1,
'weaponPvpCeg2' => $weaponPvpCeg2,
)));
if ($heroPvpCeg > 0) {
$heroPvpCeg = Hero::newGainGold($heroDto, $heroPvpCeg);
}
if ($weaponPvpCeg1 > 0) {
$weaponPvpCeg1 = Gun::newGainGold($weaponDto1, $weaponPvpCeg1);
}
if ($weaponPvpCeg2 > 0) {
$weaponPvpCeg2 = Gun::newGainGold($weaponDto2, $weaponPvpCeg2);
}
error_log(json_encode(array(
'new_heroPvpCeg' => $heroPvpCeg,
'new_weaponPvpCeg1' => $weaponPvpCeg1,
'new_weaponPvpCeg2' => $weaponPvpCeg2,
)));
$gold = $heroPvpCeg + $weaponPvpCeg1 + $weaponPvpCeg2;
if ($gold > 0) {
myself()->_addVirtualItem(V_ITEM_GOLD, $gold);
}
}
private function oldRewardGold($heroDb)

View File

@ -72,13 +72,13 @@ class FormulaService extends BaseService {
}
$ceg = $upLimit *
(
(0.5 * $rankedTopx * $meta['ranked_topx']) +
(0.25 * $killsTopx * $meta['kills_topx']) +
(0.15 * $killsTopx * $meta['hero_topx']) +
(0.5 * $weaponTopx * $meta['weapon_topx']) +
(0.5 * $survivalTopx * $meta['survival_topx'])
(0.5 * $rankedTopX * $meta['ranked_topx']) +
(0.25 * $killsTopX * $meta['kills_topx']) +
(0.15 * $killsTopX * $meta['hero_topx']) +
(0.5 * $weaponTopX * $meta['weapon_topx']) +
(0.5 * $survivalTopX * $meta['survival_topx'])
);
return $ceg;
return round($ceg);
}
public static function calcHeroPveCeg($heroDb, $uplimit)
@ -131,10 +131,10 @@ class FormulaService extends BaseService {
return $upLimit;
}
public static function calcWeaponPvpCeg($weaponDb)
public static function calcWeaponPvpCeg($weaponDto, $params)
{
//PVP武器NFT每日获得极限*(50%*[每局排名TopX%对应比例]+25%*[每局PK人数排名TopX%对应比例]+15%*[每局英雄属性排名TopX%对应比例]+5%*[每局武器属性排名TopX%对应比例]+5%*[每局存活时间排名TopX%对应比例])
$upLimit = getXVal($params, 'uplimit');
$upLimit = $weaponDto['ceg_uplimit'];
$rankedTopX= getXVal($params, 'ranked_topx');
$killsTopX = getXVal($params, 'kills_topx');
$heroTopX = getXVal($params, 'hero_topx');
@ -146,13 +146,13 @@ class FormulaService extends BaseService {
}
$ceg = $upLimit *
(
(0.5 * $rankedTopx * $meta['ranked_topx']) +
(0.25 * $killsTopx * $meta['kills_topx']) +
(0.15 * $killsTopx * $meta['hero_topx']) +
(0.5 * $weaponTopx * $meta['weapon_topx']) +
(0.5 * $survivalTopx * $meta['survival_topx'])
(0.5 * $rankedTopX * $meta['ranked_topx']) +
(0.25 * $killsTopX * $meta['kills_topx']) +
(0.15 * $killsTopX * $meta['hero_topx']) +
(0.5 * $weaponTopX * $meta['weapon_topx']) +
(0.5 * $survivalTopX * $meta['survival_topx'])
);
return $ceg;
return round($ceg);
}
public static function calcWeaponPveCeg($weaponDb)