diff --git a/webapp/models/Gun.php b/webapp/models/Gun.php index 32c97c2e..629e6f2a 100644 --- a/webapp/models/Gun.php +++ b/webapp/models/Gun.php @@ -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; + } + } diff --git a/webapp/models/Hero.php b/webapp/models/Hero.php index 3a29d307..e81acdd7 100644 --- a/webapp/models/Hero.php +++ b/webapp/models/Hero.php @@ -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; + } + } diff --git a/webapp/services/BattleDataService.php b/webapp/services/BattleDataService.php index 755350dd..c95d2ffd 100644 --- a/webapp/services/BattleDataService.php +++ b/webapp/services/BattleDataService.php @@ -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) diff --git a/webapp/services/FormulaService.php b/webapp/services/FormulaService.php index 96a14e5e..69064084 100644 --- a/webapp/services/FormulaService.php +++ b/webapp/services/FormulaService.php @@ -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)