加速悬赏消耗ceg

This commit is contained in:
hujiabin 2022-10-10 15:40:29 +08:00
parent 4bc86be9bd
commit 4d0b73ff0d
4 changed files with 66 additions and 2 deletions

View File

@ -56,6 +56,19 @@ class Mission(object):
] ]
}, },
{ {
'name': 'boostOfferRewardMissionPreview',
'desc': '加速悬赏任务',
'group': 'Mission',
'url': 'webapp/index.php?c=Mission&a=boostOfferRewardMissionPreview',
'params': [
_common.ReqHead(),
['mission_id', 0, '任务id'],
],
'response': [
_common.RspHead(),
['boost_chg', 0, '加速所需ceg'],
]
},{
'name': 'boostOfferRewardMission', 'name': 'boostOfferRewardMission',
'desc': '加速悬赏任务', 'desc': '加速悬赏任务',
'group': 'Mission', 'group': 'Mission',

View File

@ -16,6 +16,7 @@ require_once('services/AwardService.php');
require_once('services/PropertyChgService.php'); require_once('services/PropertyChgService.php');
require_once('services/SeasonService.php'); require_once('services/SeasonService.php');
require_once('services/MissionService.php'); require_once('services/MissionService.php');
require_once('services/FormulaService.php');
use phpcommon\SqlHelper; use phpcommon\SqlHelper;
use models\User; use models\User;
@ -252,6 +253,7 @@ class MissionController extends BaseAuthedController {
public function offerRewardMissionPreview() public function offerRewardMissionPreview()
{ {
$missionId = getReqVal('mission_id', 0); $missionId = getReqVal('mission_id', 0);
$this->missionService->offerRewardMissionPreview( $this->missionService->offerRewardMissionPreview(
$missionId $missionId
@ -266,6 +268,37 @@ class MissionController extends BaseAuthedController {
$this->propertyChgService); $this->propertyChgService);
} }
public function boostOfferRewardMissionPreview(){
$missionId = getReqVal('mission_id', 0);
$missionMeta = mt\Task::get($missionId);
if (!$missionMeta) {
$this->_rspErr(1, 'mission_id parameter error');
return;
}
//
if ($missionMeta['type'] == mt\Task::DAILY_MISSON_TYPE &&
$missionMeta['subtype'] == mt\Task::WEAKLY_ACTIVE_VALUE_MISSON_SUBTYPE) {
error_log(2);
return;
}
//
$missionDb = Mission::find($missionId);
$missionDto = $this->missionService->getMissionDto(
$this->userInfo, $this->seasonDb, $missionDb, $missionMeta);
if (!$missionDto) {
$this->_rspErr(10, 'server internal error');
return;
}
if ($missionDto['lefttime']<=0){
$this->_rspErr(1, "Don't need to accelerate");
return;
}
$boost_ceg = \services\FormulaService::calcBoostMissionCeg($missionDto['ceg_num'],$missionDto['lefttime'],$missionMeta['time']);
$this->_rspData(array(
'boost_chg' => $boost_ceg
));
}
public function boostOfferRewardMission() public function boostOfferRewardMission()
{ {
$missionId = getReqVal('mission_id', 0); $missionId = getReqVal('mission_id', 0);

View File

@ -348,6 +348,11 @@ class FormulaService extends BaseService {
return self::Hero_Max_CEG($heroDb)*0.05; return self::Hero_Max_CEG($heroDb)*0.05;
} }
//悬赏加速所需CEG
public static function calcBoostMissionCeg($ceg,$time,$timeSum){
//悬赏加速所需CEG=MAX(ROUND(10%*当次悬赏任务获得CEG*当次已悬赏时间/当次悬赏所需时间,2),0.01)
return max(round(0.1*$ceg*$time/$timeSum,2),0.01);
}
//每天枪械NFT获得CEG上限值 //每天枪械NFT获得CEG上限值
public static function Weapon_Max_CEG($weaponDb){ public static function Weapon_Max_CEG($weaponDb){

View File

@ -12,6 +12,8 @@ require_once('models/BigData.php');
require_once('models/Hero.php'); require_once('models/Hero.php');
require_once('models/Gun.php'); require_once('models/Gun.php');
require_once('services/FormulaService.php');
use phpcommon\SqlHelper; use phpcommon\SqlHelper;
use mt; use mt;
use models\User; use models\User;
@ -636,10 +638,16 @@ class MissionService extends BaseService {
} }
$missionDto['objects'] = $mission['objects']; $missionDto['objects'] = $mission['objects'];
$missionDto['ceg_num'] = $this->calcCegPreview($mission['objects']); $missionDto['ceg_num'] = $this->calcCegPreview($mission['objects']);
// $missionDto['boost_ceg_num'] = $this->calcBoostCeg($missionDto['ceg_num'],$missionDto['lefttime'],$missionMeta['time']);
} }
} }
} }
private function calcBoostCeg($ceg,$time,$timeSum){
//悬赏加速所需CEG=MAX(ROUND(10%*当次悬赏任务获得CEG*当次已悬赏时间/当次悬赏所需时间,2),0.01)
return max(round(0.1*$ceg*$time/$timeSum,2),0.01);
}
public function sendOfferRewardMission($missionId, $propertyChgService) public function sendOfferRewardMission($missionId, $propertyChgService)
{ {
$missionMeta = mt\Task::get($missionId); $missionMeta = mt\Task::get($missionId);
@ -848,18 +856,23 @@ class MissionService extends BaseService {
return; return;
}*/ }*/
$missionMeta = mt\Task::get($missionId); $missionMeta = mt\Task::get($missionId);
$missionDb = Mission::find($missionId);
$missionDto = $this->getMissionDto(
$this->userInfo, $this->seasonDb, $missionDb, $missionMeta);
$boost_ceg = \services\FormulaService::calcBoostMissionCeg($missionDto['ceg_num'],$missionDto['lefttime'],$missionMeta['time']);
if (!$missionMeta) { if (!$missionMeta) {
myself()->_rspErr(1, 'mission_id parameter error3'); myself()->_rspErr(1, 'mission_id parameter error3');
return; return;
} }
if (myself()->_getItemCount(V_ITEM_GOLD, $this->userInfo) < $missionMeta['boost']){ if (myself()->_getItemCount(V_ITEM_GOLD, $this->userInfo) < $boost_ceg){
myself()->_rspErr(2, 'ceg not enough'); myself()->_rspErr(2, 'ceg not enough');
return; return;
} }
myself()->_decItems(array( myself()->_decItems(array(
array( array(
'item_id' => V_ITEM_GOLD, 'item_id' => V_ITEM_GOLD,
'item_num' => $missionMeta['boost'] 'item_num' => $boost_ceg
) )
)); ));
$dropMeta = mt\Drop::get($missionMeta['reward']); $dropMeta = mt\Drop::get($missionMeta['reward']);