1
This commit is contained in:
parent
cb70c63e06
commit
ebe315a759
@ -298,56 +298,10 @@ class MissionController extends BaseAuthedController {
|
|||||||
break;
|
break;
|
||||||
case mt\Task::OFFER_REWARD_MISSON_TYPE:
|
case mt\Task::OFFER_REWARD_MISSON_TYPE:
|
||||||
{
|
{
|
||||||
//(PVE角色NFT每日获得极限(CEG)+PVE武器NFT每日获得极限(CEG))*90%/悬赏任务数量
|
$this->missionService->receiveOfferRewardMission
|
||||||
$totalHeroUpLimit = 0;
|
($missionDto['mission_id'],
|
||||||
$totalGunUpLimit = 0;
|
$this->awardService,
|
||||||
$count = $this->missionService-> getOfferRewardMissionCount();
|
$this->propertyChgService);
|
||||||
$this->propertyChgService->addUserChg();
|
|
||||||
foreach ($missionDto['objects'] as $obj) {
|
|
||||||
switch ($obj['type']) {
|
|
||||||
case 0:
|
|
||||||
{
|
|
||||||
//weapon
|
|
||||||
$gunDb = Gun::find($obj['id']);
|
|
||||||
if ($gunDb) {
|
|
||||||
$gunDto = Gun::toDto($gunDb);
|
|
||||||
$totalGunUpLimit += $gunDto['raw_pve_ceg_uplimit'];
|
|
||||||
Gun::Update
|
|
||||||
($obj['id'],
|
|
||||||
array(
|
|
||||||
'lock_type' => 0,
|
|
||||||
'unlock_time' => 0
|
|
||||||
));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case 1:
|
|
||||||
{
|
|
||||||
//hero
|
|
||||||
$heroDb = Hero::find($obj['id']);
|
|
||||||
if ($heroDb) {
|
|
||||||
$heroDto = Hero::toDto($heroDb);
|
|
||||||
$totalHeroUpLimit += $heroDto['raw_pve_ceg_uplimit'];
|
|
||||||
Hero::Update
|
|
||||||
($obj['id'],
|
|
||||||
array(
|
|
||||||
'lock_type' => 0,
|
|
||||||
'unlock_time' => 0
|
|
||||||
));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
{
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}//end foreach
|
|
||||||
if ($count > 0) {
|
|
||||||
$ceg = ($totalHeroUpLimit + $totalGunUpLimit) * 0.9/ $count;
|
|
||||||
myself()->_addVirtualItem(V_ITEM_GOLD, round($gold));
|
|
||||||
$this->awardService->addItem(V_ITEM_GOLD, round($gold));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
@ -334,4 +334,23 @@ class Gun extends BaseModel {
|
|||||||
return $finalyAddGold;
|
return $finalyAddGold;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static function pveGainGold($gunDto, $count)
|
||||||
|
{
|
||||||
|
if ($count <= 0) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
$newGold = min($gunDto['pve_ceg_uplimit'],
|
||||||
|
$gunDto['today_pve_get_ceg'] +
|
||||||
|
round($gunDto['pve_ceg_uplimit'] / $count));
|
||||||
|
$finalyAddGold = max(0, $newGold - $gunDto['today_pve_get_ceg']);
|
||||||
|
if ($finalyAddGold > 0) {
|
||||||
|
self::update($gunDto['gun_uniid'],
|
||||||
|
array(
|
||||||
|
'today_pve_get_ceg' => $newGold,
|
||||||
|
'last_pve_get_ceg_time' => myself()->_getNowTime()
|
||||||
|
));
|
||||||
|
}
|
||||||
|
return $finalyAddGold;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -168,7 +168,7 @@ class Hero extends BaseModel {
|
|||||||
'today_get_gold' => $todayGetGold,
|
'today_get_gold' => $todayGetGold,
|
||||||
'last_get_gold_time' => $lastGetGoldTime,
|
'last_get_gold_time' => $lastGetGoldTime,
|
||||||
'today_pve_get_ceg' => $todayPveGetCeg,
|
'today_pve_get_ceg' => $todayPveGetCeg,
|
||||||
'last_pve_get_gold_ceg' => $lastPveGetCegTime,
|
'last_pve_get_ceg_time' => $lastPveGetCegTime,
|
||||||
'unlock_trade_time' => $row['unlock_trade_time'],
|
'unlock_trade_time' => $row['unlock_trade_time'],
|
||||||
);
|
);
|
||||||
$dto['ceg_uplimit'] = FormulaService::getHeroPvpDailyCegUpLimit($dto);
|
$dto['ceg_uplimit'] = FormulaService::getHeroPvpDailyCegUpLimit($dto);
|
||||||
@ -375,4 +375,23 @@ class Hero extends BaseModel {
|
|||||||
return $finalyAddGold;
|
return $finalyAddGold;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static function pveGainGold($heroDto, $count)
|
||||||
|
{
|
||||||
|
if ($count <= 0) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
$newGold = min($heroDto['pve_ceg_uplimit'],
|
||||||
|
$heroDto['today_pve_get_ceg'] +
|
||||||
|
round($heroDto['pve_ceg_uplimit'] / $count));
|
||||||
|
$finalyAddGold = max(0, $newGold - $heroDto['today_pve_get_ceg']);
|
||||||
|
if ($finalyAddGold > 0) {
|
||||||
|
self::update($heroDto['hero_uniid'],
|
||||||
|
array(
|
||||||
|
'today_pve_get_ceg' => $newGold,
|
||||||
|
'last_pve_get_ceg_time' => myself()->_getNowTime()
|
||||||
|
));
|
||||||
|
}
|
||||||
|
return $finalyAddGold;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -842,9 +842,13 @@ class MissionService extends BaseService {
|
|||||||
myself()->_rspErr(10, 'server internal error:' . $missionMeta['reward']);
|
myself()->_rspErr(10, 'server internal error:' . $missionMeta['reward']);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
myself()->_scatterDrop('mission:' . $missionId, $dropMeta, $awardService, $propertyChgService);
|
myself()->_scatterDrop('mission:' . $missionId,
|
||||||
$this->updateOfferRewardMission($missionId);
|
$dropMeta,
|
||||||
$this->saveOfferRewardMission();
|
$awardService,
|
||||||
|
$propertyChgService);
|
||||||
|
$this->receiveOfferRewardMission($missionId,
|
||||||
|
$awardService,
|
||||||
|
$propertyChgService);
|
||||||
myself()->_rspData(array(
|
myself()->_rspData(array(
|
||||||
'award' => $awardService->toDto(),
|
'award' => $awardService->toDto(),
|
||||||
));
|
));
|
||||||
@ -866,24 +870,71 @@ class MissionService extends BaseService {
|
|||||||
|
|
||||||
private function saveOfferRewardMission()
|
private function saveOfferRewardMission()
|
||||||
{
|
{
|
||||||
BigData::setData(BigData::OFFER_REWARD_MISSION_TYPE, json_encode($this->offerRewartdMission));
|
BigData::setData(BigData::OFFER_REWARD_MISSION_TYPE,
|
||||||
|
json_encode($this->offerRewartdMission));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function commitOfferRewardMission($missionMeta)
|
public function receiveOfferRewardMission($missionId,
|
||||||
|
$awardService,
|
||||||
|
$propertyChgService)
|
||||||
{
|
{
|
||||||
$missionId = $missionMeta['mission_id'];
|
$idx = 0;
|
||||||
$mission = &$this->getOfferRewardMissionById($missionId);
|
$mission = null;
|
||||||
if (!$mission) {
|
if (!$this->getOfferRewardMissionById($missionId, $mission, $idx)) {
|
||||||
myself()->_rspErr(1, 'mission_id parameter error');
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if ($mission['sendtime'] > 0) {
|
//(PVE角色NFT每日获得极限(CEG)+PVE武器NFT每日获得极限(CEG))*90%/悬赏任务数量
|
||||||
myself()->_rspErr(1, 'mission_id parameter error2');
|
$totalHeroUpLimit = 0;
|
||||||
return;
|
$totalGunUpLimit = 0;
|
||||||
|
$count = $this->getOfferRewardMissionCount();
|
||||||
|
$propertyChgService->addUserChg();
|
||||||
|
foreach ($mission['objects'] as $obj) {
|
||||||
|
switch ($obj['type']) {
|
||||||
|
case 0:
|
||||||
|
{
|
||||||
|
//weapon
|
||||||
|
$gunDb = Gun::find($obj['id']);
|
||||||
|
if ($gunDb) {
|
||||||
|
$gunDto = Gun::toDto($gunDb);
|
||||||
|
$totalGunUpLimit += Gun::pveGainGold($gunDto, $count);
|
||||||
|
Gun::Update
|
||||||
|
($obj['id'],
|
||||||
|
array(
|
||||||
|
'lock_type' => 0,
|
||||||
|
'unlock_time' => 0
|
||||||
|
));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
{
|
||||||
|
//hero
|
||||||
|
$heroDb = Hero::find($obj['id']);
|
||||||
|
if ($heroDb) {
|
||||||
|
$heroDto = Hero::toDto($heroDb);
|
||||||
|
$totalHeroUpLimit += Hero::pveGainGold($heroDto, $count);
|
||||||
|
Hero::Update
|
||||||
|
($obj['id'],
|
||||||
|
array(
|
||||||
|
'lock_type' => 0,
|
||||||
|
'unlock_time' => 0
|
||||||
|
));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
{
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}//end foreach
|
||||||
|
$ceg = $totalHeroUpLimit + $totalGunUpLimit;
|
||||||
|
if ($count > 0 && $ceg > 0) {
|
||||||
|
myself()->_addVirtualItem(V_ITEM_GOLD, round($ceg));
|
||||||
|
$awardService->addItem(V_ITEM_GOLD, round($ceg));
|
||||||
}
|
}
|
||||||
$this->updateOfferRewardMission($missionId);
|
$this->updateOfferRewardMission($missionId);
|
||||||
$this->saveOfferRewardMission();
|
$this->saveOfferRewardMission();
|
||||||
myself()->_rspOk();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getOfferRewardMissionCount()
|
public function getOfferRewardMissionCount()
|
||||||
|
Loading…
x
Reference in New Issue
Block a user