算力功能修改
This commit is contained in:
parent
a80c0eb249
commit
4075c6d2bc
@ -455,7 +455,8 @@ class BaseAuthedController extends BaseController {
|
|||||||
|
|
||||||
$this->_updateUserInfo($fieldsKv);
|
$this->_updateUserInfo($fieldsKv);
|
||||||
$this->_incDailyV(TN_DAILY_USED_GOLD_NUM, 0, $itemNum);
|
$this->_incDailyV(TN_DAILY_USED_GOLD_NUM, 0, $itemNum);
|
||||||
$this->_incPeriodV(TN_HASH_RATE_GOLD_CONSUME, 0, $itemNum);
|
// $this->_incPeriodV(TN_HASH_RATE_GOLD_CONSUME, 0, $itemNum);
|
||||||
|
myself()->_fireEvent('HashRate','onSpendGold',$itemNum);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case V_ITEM_DIAMOND:
|
case V_ITEM_DIAMOND:
|
||||||
|
@ -183,6 +183,7 @@ class BattleController extends BaseAuthedController {
|
|||||||
$teamBattleDataService->addBattleSettlementTeam();
|
$teamBattleDataService->addBattleSettlementTeam();
|
||||||
foreach ($teamData['members'] as $member){
|
foreach ($teamData['members'] as $member){
|
||||||
$member['pvp_team_rank'] = getXVal($teamData,'pvp_team_rank', 0);
|
$member['pvp_team_rank'] = getXVal($teamData,'pvp_team_rank', 0);
|
||||||
|
$member['victory'] = getXVal($teamData,'victory', 0);
|
||||||
if ($member['account_id'] && !myself()->_isAndroidAccountId($member['account_id'])){
|
if ($member['account_id'] && !myself()->_isAndroidAccountId($member['account_id'])){
|
||||||
$this->switchAccount($member['account_id']);
|
$this->switchAccount($member['account_id']);
|
||||||
$teamBattleDataService->battleInfo = $member;
|
$teamBattleDataService->battleInfo = $member;
|
||||||
|
@ -173,7 +173,8 @@ class ChipController extends BaseAuthedController
|
|||||||
'modifytime' => myself()->_getNowTime(),
|
'modifytime' => myself()->_getNowTime(),
|
||||||
));
|
));
|
||||||
}
|
}
|
||||||
$this->_incPeriodV(TN_HASH_RATE_UP_CHIP_TIMES, 0, 1);
|
// $this->_incPeriodV(TN_HASH_RATE_UP_CHIP_TIMES, 0, 1);
|
||||||
|
myself()->_fireEvent('HashRate','onUpLvChip');
|
||||||
$propertyChgService->addChip();
|
$propertyChgService->addChip();
|
||||||
$hashChance = \mt\Manufacture::hashChance($manufactureMeta['chance']);
|
$hashChance = \mt\Manufacture::hashChance($manufactureMeta['chance']);
|
||||||
$weight = $hashChance[0];
|
$weight = $hashChance[0];
|
||||||
@ -251,7 +252,8 @@ class ChipController extends BaseAuthedController
|
|||||||
$this->_addItems($items,$awardService,$propertyChgService);
|
$this->_addItems($items,$awardService,$propertyChgService);
|
||||||
}
|
}
|
||||||
$propertyChgService->addChip();
|
$propertyChgService->addChip();
|
||||||
$this->_incPeriodV(TN_HASH_RATE_SYN_CHIP_TIMES, 0, $number);
|
// $this->_incPeriodV(TN_HASH_RATE_SYN_CHIP_TIMES, 0, $number);
|
||||||
|
myself()->_fireEvent('HashRate','onSynChip',$number);
|
||||||
$event = array(
|
$event = array(
|
||||||
'ID' => 'chip',
|
'ID' => 'chip',
|
||||||
'SUB_ID' => 'synthesis',
|
'SUB_ID' => 'synthesis',
|
||||||
|
@ -32,10 +32,11 @@ class HashRateController extends BaseAuthedController
|
|||||||
$goldRate = 0;
|
$goldRate = 0;
|
||||||
$currentPeriod= \mt\AchievementsCycle::getCurrentPeriod();
|
$currentPeriod= \mt\AchievementsCycle::getCurrentPeriod();
|
||||||
if ($currentPeriod){
|
if ($currentPeriod){
|
||||||
$mateList = \mt\AchievementsPower::getCustomTypeMetaList($type,$this->hashRateService);
|
// $mateList = \mt\AchievementsPower::getCustomTypeMetaList($type,$this->hashRateService);
|
||||||
foreach ($mateList as $mate) {
|
$taskList = $this->hashRateService->getHashRateTasks($type);
|
||||||
$taskDb = HashRate::find($mate['id'],$currentPeriod['id']);
|
foreach ($taskList as $task) {
|
||||||
$taskDto = $this->hashRateService->hashRateTaskDto($mate,$taskDb,$currentPeriod['id']);
|
$taskDb = HashRate::find($task['task_id'],$currentPeriod['id']);
|
||||||
|
$taskDto = $this->hashRateService->hashRateTaskDto($task,$taskDb,$currentPeriod['id']);
|
||||||
array_push($taskDtoList1, $taskDto);
|
array_push($taskDtoList1, $taskDto);
|
||||||
}
|
}
|
||||||
$mateList2 = \mt\AchievementsPower::getListByType(\mt\AchievementsPower::TYPE5);
|
$mateList2 = \mt\AchievementsPower::getListByType(\mt\AchievementsPower::TYPE5);
|
||||||
@ -90,8 +91,14 @@ class HashRateController extends BaseAuthedController
|
|||||||
$this->_rspErr(1, 'task_id error');
|
$this->_rspErr(1, 'task_id error');
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
$taskDb = HashRate::find($taskMeta['id'],$currentPeriod['id']);
|
$taskList = $this->hashRateService->getHashRateTasks($taskMeta['task_type']);
|
||||||
$taskDto = $this->hashRateService->hashRateTaskDto($taskMeta,$taskDb,$currentPeriod['id']);
|
$taskDto = null;
|
||||||
|
foreach ($taskList as $task){
|
||||||
|
if ($task['task_id'] == $taskId){
|
||||||
|
$taskDb = HashRate::find($taskMeta['id'],$currentPeriod['id']);
|
||||||
|
$taskDto = $this->hashRateService->hashRateTaskDto($task,$taskDb,$currentPeriod['id']);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (!$taskDto) {
|
if (!$taskDto) {
|
||||||
$this->_rspErr(10, 'server internal error');
|
$this->_rspErr(10, 'server internal error');
|
||||||
|
@ -110,7 +110,8 @@ class HeroController extends BaseAuthedController {
|
|||||||
Hero::addSyntheticHero($heroMeta,2);
|
Hero::addSyntheticHero($heroMeta,2);
|
||||||
}
|
}
|
||||||
$propertyChgService->addHeroChg();
|
$propertyChgService->addHeroChg();
|
||||||
$this->_incPeriodV(TN_HASH_RATE_SYN_HERO_TIMES, 0, $number);
|
// $this->_incPeriodV(TN_HASH_RATE_SYN_HERO_TIMES, 0, $number);
|
||||||
|
myself()->_fireEvent('HashRate','onSynHero',$number);
|
||||||
$event = array(
|
$event = array(
|
||||||
'ID' => 'hero',
|
'ID' => 'hero',
|
||||||
'SUB_ID' => 'synthesis',
|
'SUB_ID' => 'synthesis',
|
||||||
@ -187,7 +188,8 @@ class HeroController extends BaseAuthedController {
|
|||||||
}
|
}
|
||||||
//消耗材料
|
//消耗材料
|
||||||
$this->_decItems($costItems);
|
$this->_decItems($costItems);
|
||||||
$this->_incPeriodV(TN_HASH_RATE_UP_HERO_TIMES, 0, 1);
|
// $this->_incPeriodV(TN_HASH_RATE_UP_HERO_TIMES, 0, 1);
|
||||||
|
myself()->_fireEvent('HashRate','onUpLvHero');
|
||||||
$propertyChgService = new services\PropertyChgService();
|
$propertyChgService = new services\PropertyChgService();
|
||||||
$propertyChgService->addBagChg();
|
$propertyChgService->addBagChg();
|
||||||
$propertyChgService->addUserChg();
|
$propertyChgService->addUserChg();
|
||||||
@ -214,6 +216,9 @@ class HeroController extends BaseAuthedController {
|
|||||||
$basicMeta = mt\BattleBasicAttribute::get($heroDb['hero_id']);
|
$basicMeta = mt\BattleBasicAttribute::get($heroDb['hero_id']);
|
||||||
$randMeta = mt\BattleRandAttribute::getByWeight($basicMeta['randomAttribute_Default'],$heroDb['quality'] + 1);
|
$randMeta = mt\BattleRandAttribute::getByWeight($basicMeta['randomAttribute_Default'],$heroDb['quality'] + 1);
|
||||||
$attr = mt\BattleRandAttribute::getRandAttr($randMeta);
|
$attr = mt\BattleRandAttribute::getRandAttr($randMeta);
|
||||||
|
foreach ($attr as $key=>$value){
|
||||||
|
$attr[$key]['new_attr'] = 1;
|
||||||
|
}
|
||||||
$newAttr = array_merge($randAttr,$attr);
|
$newAttr = array_merge($randAttr,$attr);
|
||||||
$fieldsKv['rand_attr'] = json_encode($newAttr);
|
$fieldsKv['rand_attr'] = json_encode($newAttr);
|
||||||
}
|
}
|
||||||
|
@ -226,7 +226,8 @@ class HeroSkinController extends BaseAuthedController {
|
|||||||
HeroSkin::addSkin($skinMeta);
|
HeroSkin::addSkin($skinMeta);
|
||||||
}
|
}
|
||||||
$propertyChgService->addHeroSkinChg();
|
$propertyChgService->addHeroSkinChg();
|
||||||
$this->_incPeriodV(TN_HASH_RATE_SYN_SKIN_TIMES, 0, $number);
|
// $this->_incPeriodV(TN_HASH_RATE_SYN_SKIN_TIMES, 0, $number);
|
||||||
|
myself()->_fireEvent('HashRate','onSynSkin',$number);
|
||||||
$event = array(
|
$event = array(
|
||||||
'ID' => 'heroSkin',
|
'ID' => 'heroSkin',
|
||||||
'SUB_ID' => 'synthesis',
|
'SUB_ID' => 'synthesis',
|
||||||
|
@ -204,7 +204,7 @@ class InGameMallController extends BaseAuthedController {
|
|||||||
switch ($itemMeta['type']){
|
switch ($itemMeta['type']){
|
||||||
case \mt\Item::HERO_SKIN_TYPE : {
|
case \mt\Item::HERO_SKIN_TYPE : {
|
||||||
$skinDb = HeroSkin::find($goodsUniid);
|
$skinDb = HeroSkin::find($goodsUniid);
|
||||||
if (!$skinDb){
|
if (!$skinDb || $skinDb['used'] == HeroSkin::USED){
|
||||||
$this->_rspErr(1, 'param goods_unnid error');
|
$this->_rspErr(1, 'param goods_unnid error');
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -8,6 +8,7 @@ class Battle
|
|||||||
public static function onSettlement($battleData)
|
public static function onSettlement($battleData)
|
||||||
{
|
{
|
||||||
//触发(调用)对应对该事件感兴趣的模块
|
//触发(调用)对应对该事件感兴趣的模块
|
||||||
|
myself()->_callServiceStatic('HashRateService', 'onBattleSettele', $battleData);
|
||||||
//myself()->_callServiceStatic('A', 'f1', $battleData);
|
//myself()->_callServiceStatic('A', 'f1', $battleData);
|
||||||
//myself()->_callServiceStatic('B', 'f1', $battleData);
|
//myself()->_callServiceStatic('B', 'f1', $battleData);
|
||||||
echo json_encode($battleData);
|
echo json_encode($battleData);
|
||||||
|
57
webapp/events/HashRate.php
Normal file
57
webapp/events/HashRate.php
Normal file
@ -0,0 +1,57 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace events;
|
||||||
|
|
||||||
|
require_once('models/BigData.php');
|
||||||
|
require_once('mt/AchievementsPower.php');
|
||||||
|
|
||||||
|
use models\BigData;
|
||||||
|
use mt\AchievementsPower;
|
||||||
|
|
||||||
|
class HashRate
|
||||||
|
{
|
||||||
|
|
||||||
|
public static function onSpendGold($goldNum){
|
||||||
|
self::_updateTaskSchedule(AchievementsPower::SPEND_GOLD,$goldNum);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static function onSynHero($number){
|
||||||
|
self::_updateTaskSchedule(AchievementsPower::SYN_HERO,$number);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static function onSynChip($number){
|
||||||
|
self::_updateTaskSchedule(AchievementsPower::SYN_CHIP,$number);
|
||||||
|
}
|
||||||
|
public static function onSynSkin($number){
|
||||||
|
self::_updateTaskSchedule(AchievementsPower::SYN_SKIN,$number);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static function onUpLvHero(){
|
||||||
|
self::_updateTaskSchedule(AchievementsPower::UP_HERO,1);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static function onUpLvChip(){
|
||||||
|
self::_updateTaskSchedule(AchievementsPower::UP_CHIP,1);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
private static function _updateTaskSchedule($completionType,$number){
|
||||||
|
$tasks = BigData::getData(BigData::OFFER_INTEGRAL_HASHRATE_TYPE);
|
||||||
|
foreach ($tasks['task3'] as &$task){
|
||||||
|
$meta = AchievementsPower::find($task['task_id']);
|
||||||
|
if ($meta['Completion_type'] == $completionType){
|
||||||
|
$task['current'] += $number;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
foreach ($tasks['task4'] as &$task){
|
||||||
|
$meta = AchievementsPower::find($task['task_id']);
|
||||||
|
if ($meta['Completion_type'] == $completionType){
|
||||||
|
$task['current'] += $number;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
BigData::setData(BigData::OFFER_INTEGRAL_HASHRATE_TYPE,
|
||||||
|
json_encode($tasks));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -6,9 +6,11 @@ require_once('mt/AchievementsCycle.php');
|
|||||||
require_once('mt/AchievementsPower.php');
|
require_once('mt/AchievementsPower.php');
|
||||||
require_once('mt/ServerTask.php');
|
require_once('mt/ServerTask.php');
|
||||||
require_once('mt/ServerTaskTime.php');
|
require_once('mt/ServerTaskTime.php');
|
||||||
|
require_once('mt/Equip.php');
|
||||||
|
|
||||||
require_once('models/BigData.php');
|
require_once('models/BigData.php');
|
||||||
require_once('models/Hero.php');
|
require_once('models/Hero.php');
|
||||||
|
require_once('models/Chip.php');
|
||||||
require_once('models/HashRate.php');
|
require_once('models/HashRate.php');
|
||||||
require_once('models/HashRateBattleData.php');
|
require_once('models/HashRateBattleData.php');
|
||||||
require_once('models/GlobalData.php');
|
require_once('models/GlobalData.php');
|
||||||
@ -17,9 +19,11 @@ use models\GlobalData;
|
|||||||
use models\HashRateBattleData;
|
use models\HashRateBattleData;
|
||||||
use models\HashRate;
|
use models\HashRate;
|
||||||
use models\Hero;
|
use models\Hero;
|
||||||
|
use models\Chip;
|
||||||
use models\BigData;
|
use models\BigData;
|
||||||
use mt\AchievementsCycle;
|
use mt\AchievementsCycle;
|
||||||
use mt\AchievementsPower;
|
use mt\AchievementsPower;
|
||||||
|
use mt\Equip;
|
||||||
|
|
||||||
class HashRateService extends BaseService
|
class HashRateService extends BaseService
|
||||||
{
|
{
|
||||||
@ -39,7 +43,7 @@ class HashRateService extends BaseService
|
|||||||
public function init()
|
public function init()
|
||||||
{
|
{
|
||||||
//------------------------算力系统------------------------
|
//------------------------算力系统------------------------
|
||||||
$this->hisBattleData = HashRateBattleData::getMyBattleData();
|
/* $this->hisBattleData = HashRateBattleData::getMyBattleData();
|
||||||
$this->hashRateData = getXVal($this->hisBattleData, 'hash_rate_data', array());
|
$this->hashRateData = getXVal($this->hisBattleData, 'hash_rate_data', array());
|
||||||
if (!$this->hashRateData){
|
if (!$this->hashRateData){
|
||||||
$this->hashRateData = array(
|
$this->hashRateData = array(
|
||||||
@ -59,7 +63,7 @@ class HashRateService extends BaseService
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
$this->pvpBattleData = $this->hashRateData['pvpData'];
|
$this->pvpBattleData = $this->hashRateData['pvpData'];
|
||||||
$this->mobaBattleData = $this->hashRateData['mobaData'];
|
$this->mobaBattleData = $this->hashRateData['mobaData']; */
|
||||||
$this->hashRateTask = BigData::getData(BigData::OFFER_INTEGRAL_HASHRATE_TYPE);
|
$this->hashRateTask = BigData::getData(BigData::OFFER_INTEGRAL_HASHRATE_TYPE);
|
||||||
if (!$this->hashRateTask) {
|
if (!$this->hashRateTask) {
|
||||||
$this->hashRateTask = array(
|
$this->hashRateTask = array(
|
||||||
@ -71,6 +75,7 @@ class HashRateService extends BaseService
|
|||||||
'initTime' => 0
|
'initTime' => 0
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
$currentPeriod= \mt\AchievementsCycle::getCurrentPeriod();
|
||||||
if ($currentPeriod && $currentPeriod['id'] != $this->hashRateTask['currentPeriod']){
|
if ($currentPeriod && $currentPeriod['id'] != $this->hashRateTask['currentPeriod']){
|
||||||
$this->initHashRateTask($currentPeriod['id']);
|
$this->initHashRateTask($currentPeriod['id']);
|
||||||
}
|
}
|
||||||
@ -97,10 +102,14 @@ class HashRateService extends BaseService
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
public function hashRateTaskDto($taskMate, $taskDb,$period){
|
public function hashRateTaskDto($task, $taskDb,$period){
|
||||||
|
$taskMate = AchievementsPower::find($task['task_id']);
|
||||||
|
if (!$taskMate){
|
||||||
|
return ;
|
||||||
|
}
|
||||||
$taskDto = array(
|
$taskDto = array(
|
||||||
'task_id' => $taskMate['id'],
|
'task_id' => $taskMate['id'],
|
||||||
'current' => 0,
|
'current' => $task['current'],
|
||||||
'target' => getXVal($taskMate, 'Completed_quantity', 1),
|
'target' => getXVal($taskMate, 'Completed_quantity', 1),
|
||||||
'state' => self::NOT_FINISHED_STATE,
|
'state' => self::NOT_FINISHED_STATE,
|
||||||
);
|
);
|
||||||
@ -120,59 +129,59 @@ class HashRateService extends BaseService
|
|||||||
}
|
}
|
||||||
|
|
||||||
switch ($taskMate['Completion_type']){
|
switch ($taskMate['Completion_type']){
|
||||||
//吃鸡或4v4获得胜利
|
// //吃鸡或4v4获得胜利
|
||||||
case \mt\AchievementsPower::TOTAL_WINS_TIMES : {
|
// case \mt\AchievementsPower::TOTAL_WINS_TIMES : {
|
||||||
$taskDto['current'] = $this->getBattleData($taskMate,
|
// $taskDto['current'] = $this->getBattleData($taskMate,
|
||||||
'total_win_times');
|
// 'total_win_times');
|
||||||
}
|
// }
|
||||||
break;
|
// break;
|
||||||
//击杀人数
|
// //击杀人数
|
||||||
case \mt\AchievementsPower::TOTAL_KILL_TIMES : {
|
// case \mt\AchievementsPower::TOTAL_KILL_TIMES : {
|
||||||
$taskDto['current'] = $this->getBattleData($taskMate,
|
// $taskDto['current'] = $this->getBattleData($taskMate,
|
||||||
'total_kills_times');
|
// 'total_kills_times');
|
||||||
}
|
// }
|
||||||
break;
|
// break;
|
||||||
//使用X道具
|
// //使用X道具
|
||||||
case \mt\AchievementsPower::USE_ITEM_TIMES : {
|
// case \mt\AchievementsPower::USE_ITEM_TIMES : {
|
||||||
$taskDto['current'] = $this->getWeaponsSlotData($taskMate);
|
// $taskDto['current'] = $this->getWeaponsSlotData($taskMate);
|
||||||
}
|
// }
|
||||||
break;
|
// break;
|
||||||
//X分钟内结束比赛
|
// //X分钟内结束比赛
|
||||||
case \mt\AchievementsPower::NOMINAL_TIME_BATTLE_END : {
|
// case \mt\AchievementsPower::NOMINAL_TIME_BATTLE_END : {
|
||||||
$taskDto['current'] = $this->getBattleData($taskMate,
|
// $taskDto['current'] = $this->getBattleData($taskMate,
|
||||||
'total_fiveMin_times');
|
// 'total_fiveMin_times');
|
||||||
}
|
// }
|
||||||
break;
|
// break;
|
||||||
//在局内升级最快次数
|
// //在局内升级最快次数
|
||||||
case \mt\AchievementsPower::IN_BATTLE_UP_LV : {
|
// case \mt\AchievementsPower::IN_BATTLE_UP_LV : {
|
||||||
$taskDto['current'] = $this->getBattleData($taskMate,
|
// $taskDto['current'] = $this->getBattleData($taskMate,
|
||||||
'total_first_Lv_up');
|
// 'total_first_Lv_up');
|
||||||
}
|
// }
|
||||||
break;
|
// break;
|
||||||
//游戏场次
|
// //游戏场次
|
||||||
case \mt\AchievementsPower::TOTAL_BATTLE_TIMES : {
|
// case \mt\AchievementsPower::TOTAL_BATTLE_TIMES : {
|
||||||
$taskDto['current'] = $this->getBattleData($taskMate,
|
// $taskDto['current'] = $this->getBattleData($taskMate,
|
||||||
'total_battle_times');
|
// 'total_battle_times');
|
||||||
}
|
// }
|
||||||
break;
|
// break;
|
||||||
//最后一名次数
|
// //最后一名次数
|
||||||
case \mt\AchievementsPower::TOTAL_LAST_RUNNER : {
|
// case \mt\AchievementsPower::TOTAL_LAST_RUNNER : {
|
||||||
$taskDto['current'] = $this->getBattleData($taskMate,
|
// $taskDto['current'] = $this->getBattleData($taskMate,
|
||||||
'total_last_runner_times');
|
// 'total_last_runner_times');
|
||||||
}
|
// }
|
||||||
break;
|
// break;
|
||||||
//救援队友数
|
// //救援队友数
|
||||||
case \mt\AchievementsPower::RESCUE_TEAMMATE_TIMES : {
|
// case \mt\AchievementsPower::RESCUE_TEAMMATE_TIMES : {
|
||||||
$taskDto['current'] = $this->getBattleData($taskMate,
|
// $taskDto['current'] = $this->getBattleData($taskMate,
|
||||||
'total_rescue_times');
|
// 'total_rescue_times');
|
||||||
}
|
// }
|
||||||
break;
|
// break;
|
||||||
//累计行走距离(米)
|
// //累计行走距离(米)
|
||||||
case \mt\AchievementsPower::WALKING_DISTANCE : {
|
// case \mt\AchievementsPower::WALKING_DISTANCE : {
|
||||||
$taskDto['current'] = $this->getBattleData($taskMate,
|
// $taskDto['current'] = $this->getBattleData($taskMate,
|
||||||
'total_walking_distance');
|
// 'total_walking_distance');
|
||||||
}
|
// }
|
||||||
break;
|
// break;
|
||||||
//指定英雄升阶数
|
//指定英雄升阶数
|
||||||
case \mt\AchievementsPower::HERO_UP_QUALITY : {
|
case \mt\AchievementsPower::HERO_UP_QUALITY : {
|
||||||
$state = false;
|
$state = false;
|
||||||
@ -199,7 +208,13 @@ class HashRateService extends BaseService
|
|||||||
break;
|
break;
|
||||||
//拥有芯片nft数
|
//拥有芯片nft数
|
||||||
case \mt\AchievementsPower::OWN_CHIP_NFT_NUM : {
|
case \mt\AchievementsPower::OWN_CHIP_NFT_NUM : {
|
||||||
//....../
|
$chipNftCount = 0;
|
||||||
|
Chip::getChipList(function ($row) use (&$chipNftCount){
|
||||||
|
if ($row['token_id']){
|
||||||
|
$chipNftCount += 1;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
$taskDto['current'] = $chipNftCount;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
//拥有金币数
|
//拥有金币数
|
||||||
@ -215,72 +230,59 @@ class HashRateService extends BaseService
|
|||||||
break;
|
break;
|
||||||
//花费钻石数
|
//花费钻石数
|
||||||
case \mt\AchievementsPower::SPEND_DIAMOND : {
|
case \mt\AchievementsPower::SPEND_DIAMOND : {
|
||||||
$meta = AchievementsCycle::find($period);
|
$row = myself()->_getSelfMysql()->execQueryOne(
|
||||||
if ($meta) {
|
'SELECT SUM(amount) FROM t_diamond_consume_product WHERE (account_id=:account_id OR passport_address=:address) AND type=:type AND createtime > :star_time',
|
||||||
$obtain_start_time = strtotime($meta['obtain_start_time']);
|
array(
|
||||||
$income_end_time = strtotime($meta['income_end_time']);
|
':account' => myself()->_getAccountId(),
|
||||||
$row = myself()->_getSelfMysql()->execQueryOne(
|
':address' => 1,
|
||||||
'SELECT SUM(amount) FROM t_diamond_consume_product WHERE (account_id=:account_id OR passport_address=:address) AND type=:type AND createtime BETWEEN :star_time AND :end_time',
|
':type' => 0,
|
||||||
array(
|
':star_time' => $task['createtime'],
|
||||||
':account' => myself()->_getAccountId(),
|
)
|
||||||
':address' => 1,
|
);
|
||||||
':type' => 0,
|
$taskDto['current'] = $row[0];
|
||||||
':star_time' => $obtain_start_time,
|
|
||||||
':end_time' => $income_end_time,
|
|
||||||
)
|
|
||||||
);
|
|
||||||
$taskDto['current'] = $row[0];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
//消耗金币
|
|
||||||
case \mt\AchievementsPower::SPEND_GOLD : {
|
|
||||||
$taskDto['current'] = myself()->_getPeriodV(TN_HASH_RATE_GOLD_CONSUME, 0);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
//合成英雄
|
|
||||||
case \mt\AchievementsPower::SYN_HERO : {
|
|
||||||
$taskDto['current'] = myself()->_getPeriodV(TN_HASH_RATE_SYN_HERO_TIMES, 0);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
//合成芯片
|
|
||||||
case \mt\AchievementsPower::SYN_CHIP : {
|
|
||||||
$taskDto['current'] = myself()->_getPeriodV(TN_HASH_RATE_SYN_CHIP_TIMES, 0);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
//合成皮肤
|
|
||||||
case \mt\AchievementsPower::SYN_SKIN : {
|
|
||||||
$taskDto['current'] = myself()->_getPeriodV(TN_HASH_RATE_SYN_SKIN_TIMES, 0);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
//升阶英雄
|
|
||||||
case \mt\AchievementsPower::UP_HERO : {
|
|
||||||
$taskDto['current'] = myself()->_getPeriodV(TN_HASH_RATE_UP_HERO_TIMES, 0);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
//升阶芯片
|
|
||||||
case \mt\AchievementsPower::UP_CHIP : {
|
|
||||||
$taskDto['current'] = myself()->_getPeriodV(TN_HASH_RATE_UP_CHIP_TIMES, 0);
|
|
||||||
}
|
}
|
||||||
|
// break;
|
||||||
|
// //消耗金币
|
||||||
|
// case \mt\AchievementsPower::SPEND_GOLD : {
|
||||||
|
// $taskDto['current'] = myself()->_getPeriodV(TN_HASH_RATE_GOLD_CONSUME, 0);
|
||||||
|
// }
|
||||||
|
// break;
|
||||||
|
// //合成英雄
|
||||||
|
// case \mt\AchievementsPower::SYN_HERO : {
|
||||||
|
// $taskDto['current'] = myself()->_getPeriodV(TN_HASH_RATE_SYN_HERO_TIMES, 0);
|
||||||
|
// }
|
||||||
|
// break;
|
||||||
|
// //合成芯片
|
||||||
|
// case \mt\AchievementsPower::SYN_CHIP : {
|
||||||
|
// $taskDto['current'] = myself()->_getPeriodV(TN_HASH_RATE_SYN_CHIP_TIMES, 0);
|
||||||
|
// }
|
||||||
|
// break;
|
||||||
|
// //合成皮肤
|
||||||
|
// case \mt\AchievementsPower::SYN_SKIN : {
|
||||||
|
// $taskDto['current'] = myself()->_getPeriodV(TN_HASH_RATE_SYN_SKIN_TIMES, 0);
|
||||||
|
// }
|
||||||
|
// break;
|
||||||
|
// //升阶英雄
|
||||||
|
// case \mt\AchievementsPower::UP_HERO : {
|
||||||
|
// $taskDto['current'] = myself()->_getPeriodV(TN_HASH_RATE_UP_HERO_TIMES, 0);
|
||||||
|
// }
|
||||||
|
// break;
|
||||||
|
// //升阶芯片
|
||||||
|
// case \mt\AchievementsPower::UP_CHIP : {
|
||||||
|
// $taskDto['current'] = myself()->_getPeriodV(TN_HASH_RATE_UP_CHIP_TIMES, 0);
|
||||||
|
// }
|
||||||
break;
|
break;
|
||||||
//合成金币卡
|
//合成金币卡
|
||||||
case \mt\AchievementsPower::SYN_GOLD_CARD : {
|
case \mt\AchievementsPower::SYN_GOLD_CARD : {
|
||||||
$meta = AchievementsCycle::find($period);
|
$row = myself()->_getSelfMysql()->execQueryOne(
|
||||||
if ($meta){
|
'SELECT COUNT(*) FROM t_gold_bullion WHERE src_account_id=:account AND activated=:activated AND activate_time > :star_time ',
|
||||||
$obtain_start_time = strtotime($meta['obtain_start_time']);
|
array(
|
||||||
$income_end_time = strtotime($meta['income_end_time']);
|
':account' => myself()->_getAccountId(),
|
||||||
$row = myself()->_getSelfMysql()->execQueryOne(
|
':activated' => 1,
|
||||||
'SELECT COUNT(*) FROM t_gold_bullion WHERE src_account_id=:account AND activated=:activated AND activate_time BETWEEN :star_time AND :end_time',
|
':star_time' => $task['createtime'],
|
||||||
array(
|
)
|
||||||
':account' => myself()->_getAccountId(),
|
);
|
||||||
':activated' => 1,
|
$taskDto['current'] = $row[0];
|
||||||
':star_time' => $obtain_start_time,
|
|
||||||
':end_time' => $income_end_time,
|
|
||||||
)
|
|
||||||
);
|
|
||||||
$taskDto['current'] = $row[0];
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
//累计完成任务数
|
//累计完成任务数
|
||||||
@ -351,6 +353,7 @@ class HashRateService extends BaseService
|
|||||||
array_push($this->hashRateTask['task'.$type],
|
array_push($this->hashRateTask['task'.$type],
|
||||||
array(
|
array(
|
||||||
'task_id' => $meta['id'],
|
'task_id' => $meta['id'],
|
||||||
|
'current' => 0,
|
||||||
'createtime' => myself()->_getNowTime(),
|
'createtime' => myself()->_getNowTime(),
|
||||||
'modifytime' => myself()->_getNowTime(),
|
'modifytime' => myself()->_getNowTime(),
|
||||||
));
|
));
|
||||||
@ -507,4 +510,93 @@ class HashRateService extends BaseService
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static function onBattleSettele($battleData)
|
||||||
|
{
|
||||||
|
//遍历已刷出的任务列表,更新战斗像相关进度
|
||||||
|
$tasks = BigData::getData(BigData::OFFER_INTEGRAL_HASHRATE_TYPE);
|
||||||
|
if (!$tasks){
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
self::_computeTaskProgress($tasks['task1'],$battleData);
|
||||||
|
self::_computeTaskProgress($tasks['task2'],$battleData);
|
||||||
|
BigData::setData(BigData::OFFER_INTEGRAL_HASHRATE_TYPE,
|
||||||
|
json_encode($tasks));
|
||||||
|
}
|
||||||
|
|
||||||
|
private static function _computeTaskProgress(&$tasks,$battleData){
|
||||||
|
foreach ($tasks as &$task){
|
||||||
|
$taskMeta = AchievementsPower::find($task['task_id']);
|
||||||
|
switch ($taskMeta['Completion_type']){
|
||||||
|
case AchievementsPower::TOTAL_WINS_TIMES : {
|
||||||
|
if (getXVal($battleData,'victory', 0)){
|
||||||
|
$task['current'] += 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case AchievementsPower::TOTAL_KILL_TIMES : {
|
||||||
|
$task['current'] += getXVal($battleData,'kills', 0);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case AchievementsPower::USE_ITEM_TIMES : {
|
||||||
|
$task['current'] += self::_procWeaponsSlot($battleData,$taskMeta['condition']);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case AchievementsPower::NOMINAL_TIME_BATTLE_END : {
|
||||||
|
$duration = getXVal($battleData,'game_duration', 0);
|
||||||
|
if ($duration && floor($duration / 60) < $taskMeta['condition']){
|
||||||
|
$task['current'] += 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case AchievementsPower::IN_BATTLE_UP_LV : {
|
||||||
|
$fullLv = getXVal($battleData,'full_level_idx', 0);
|
||||||
|
if ($fullLv == 1){
|
||||||
|
$task['current'] += 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case AchievementsPower::TOTAL_BATTLE_TIMES : {
|
||||||
|
if (! getXVal($battleData,'is_run_away', 0)){
|
||||||
|
$task['current'] += 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case AchievementsPower::TOTAL_LAST_RUNNER : {
|
||||||
|
$ranked = getXVal($battleData,'pvp_personal_rank', 0);
|
||||||
|
if ($ranked == 20){
|
||||||
|
$task['current'] += 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case AchievementsPower::RESCUE_TEAMMATE_TIMES : {
|
||||||
|
$task['current'] += getXVal($battleData,'rescue_teammate_times', 0);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case AchievementsPower::WALKING_DISTANCE : {
|
||||||
|
$task['current'] += getXVal($battleData,'move_distance', 0);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private static function _procWeaponsSlot($battleData,$condition)
|
||||||
|
{
|
||||||
|
$useCount = 0;
|
||||||
|
$tmpStrs1 = explode('|', getXVal($battleData,'weapons_slot', ''));
|
||||||
|
foreach ($tmpStrs1 as $str) {
|
||||||
|
$tmpStrs2 = explode(':', $str);
|
||||||
|
if (count($tmpStrs2) >= 2) {
|
||||||
|
list($weaponId, $use_times) = $tmpStrs2;
|
||||||
|
$weaponMeta = Equip::get($weaponId);
|
||||||
|
if ($weaponMeta && $weaponMeta['inventory_slot'] > 0) {
|
||||||
|
if ( $weaponId == $condition ){
|
||||||
|
$useCount = $use_times;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return $useCount;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
@ -100,7 +100,7 @@ class TameBattleDataService extends BaseService {
|
|||||||
if (!$heroMeta) {
|
if (!$heroMeta) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
myself()->_fireEvent('Battle','onSettlement',$this->battleInfo);
|
||||||
//记录战斗有效行为
|
//记录战斗有效行为
|
||||||
$this->_updateBattleData();
|
$this->_updateBattleData();
|
||||||
//记录战斗数据的排行榜
|
//记录战斗数据的排行榜
|
||||||
|
Loading…
x
Reference in New Issue
Block a user