用户成长获得奖励

This commit is contained in:
hujiabin 2023-03-23 15:47:31 +08:00
parent 536f0a4456
commit eac4fdcbe8
4 changed files with 50 additions and 10 deletions

View File

@ -16,6 +16,8 @@ require_once('models/Chip.php');
require_once('mt/Parameter.php'); require_once('mt/Parameter.php');
require_once('mt/RankSeason.php'); require_once('mt/RankSeason.php');
require_once('mt/LevelUp.php'); require_once('mt/LevelUp.php');
require_once('mt/Task.php');
require_once('mt/Drop.php');
use phpcommon\SqlHelper; use phpcommon\SqlHelper;
use models\Bag; use models\Bag;
@ -228,7 +230,7 @@ class BaseAuthedController extends BaseController {
return in_array($itemId, array(V_ITEM_GOLD, V_ITEM_DIAMOND, V_ITEM_EXP, V_ITEM_ACTIVE,V_ITEM_BCEG)); return in_array($itemId, array(V_ITEM_GOLD, V_ITEM_DIAMOND, V_ITEM_EXP, V_ITEM_ACTIVE,V_ITEM_BCEG));
} }
public function _addVirtualItem($itemId, $itemNum) public function _addVirtualItem($itemId, $itemNum,$awardService,$propertyChgService)
{ {
if ($itemNum <= 0){ if ($itemNum <= 0){
return; return;
@ -272,6 +274,18 @@ class BaseAuthedController extends BaseController {
$newlV = $userDb['level']; $newlV = $userDb['level'];
$newExp = $userDb['exp']+$itemNum; $newExp = $userDb['exp']+$itemNum;
\mt\LevelUp::getExpByLv($newlV,$newExp); \mt\LevelUp::getExpByLv($newlV,$newExp);
if ($newlV != $userDb['level']){
//协议通知前端等级变更
$propertyChgService->addUserLevelChg();
//添加奖励
for ($i=$userDb['level']+1; $i<=$newlV; $i++){
$taskMeta = \mt\Task::findAchievementLevel($i);
if ($taskMeta){
$dropMeta = mt\Drop::get($taskMeta['reward']);
$this->_scatterDrop('mission:' . $taskMeta['id'], $dropMeta, $awardService, $propertyChgService);
}
}
}
$this->_updateUserInfo(array( $this->_updateUserInfo(array(
'level' => $newlV, 'level' => $newlV,
'exp' => $newExp 'exp' => $newExp
@ -339,7 +353,7 @@ class BaseAuthedController extends BaseController {
foreach ($items as $item) { foreach ($items as $item) {
$awardService->addItem($item['item_id'], $item['item_num']); $awardService->addItem($item['item_id'], $item['item_num']);
if ($this->_isVirtualItem($item['item_id'])) { if ($this->_isVirtualItem($item['item_id'])) {
$this->_addVirtualItem($item['item_id'], $item['item_num']); $this->_addVirtualItem($item['item_id'], $item['item_num'],$awardService,$propertyService);
$propertyService->addUserChg(); $propertyService->addUserChg();
} else { } else {
$itemMeta = mt\Item::get($item['item_id']); $itemMeta = mt\Item::get($item['item_id']);

View File

@ -71,12 +71,26 @@ class Task {
const DAILY_MISSION_CUSTOM_TYPE = 1; const DAILY_MISSION_CUSTOM_TYPE = 1;
const SEASON_WEEKLY_MISSION_CUSTOM_TYPE = 2; const SEASON_WEEKLY_MISSION_CUSTOM_TYPE = 2;
const OFFER_REWARD_MISSION_CUSTOM_TYPE = 3; const OFFER_REWARD_MISSION_CUSTOM_TYPE = 3;
const ACHIEVEMENT_MISSION_CUSTOM_TYPE = 4;
public static function get($id) public static function get($id)
{ {
return getXVal(self::getMetaList(), $id); return getXVal(self::getMetaList(), $id);
} }
public static function findAchievementLevel($level){
$taskMeta = array();
foreach (self::getMetaList() as $meta) {
if (
$meta['type'] == self::ACHIEVEMENT_MISSON_TYPE &&
$meta['target'] == $level
) {
$taskMeta = $meta;
}
}
return $taskMeta;
}
public static function getCustomTypeMetaList($type, $missionService) public static function getCustomTypeMetaList($type, $missionService)
{ {
$metaList = array(); $metaList = array();
@ -105,6 +119,13 @@ class Task {
} }
} }
break; break;
case self::ACHIEVEMENT_MISSION_CUSTOM_TYPE:
{
if ($meta['type'] == self::ACHIEVEMENT_MISSON_TYPE) {
array_push($metaList, $meta);
}
}
break;
default: default:
{ {
} }

View File

@ -54,6 +54,10 @@ class PropertyChgService extends BaseService {
{ {
$this->internalAddChg('parachute'); $this->internalAddChg('parachute');
} }
public function addUserLevelChg()
{
$this->internalAddChg('level');
}
public function toDto() public function toDto()
{ {

View File

@ -236,9 +236,9 @@ class TameBattleDataService extends BaseService {
"pvp_mode" => $pvp_mode, "pvp_mode" => $pvp_mode,
"team_mode" => getXVal($this->allInfo,'team_mode', 0), "team_mode" => getXVal($this->allInfo,'team_mode', 0),
"battle_rank" => getXVal($this->battleInfo,'ranked', 0), "battle_rank" => getXVal($this->battleInfo,'ranked', 0),
"team_rank" => getXVal($this->allInfo,'team_ranked', 0), "team_rank" => getXVal($this->allInfo,'pvp_team_rank', 0),
"team_kills" => getXVal($this->allInfo,'team_kills', 0), "team_kills" => getXVal($this->allInfo,'pvp_team_kills', 0),
"is_win" => getXVal($this->battleInfo,'pve_kill_boss', 0), "is_win" => getXVal($this->battleInfo,'pve_boss_killed', 0),
"kills" => getXVal($this->battleInfo,'kills', 0), "kills" => getXVal($this->battleInfo,'kills', 0),
"hero_id" => getXVal($this->battleInfo,'hero_uniid', 0), "hero_id" => getXVal($this->battleInfo,'hero_uniid', 0),
"weapon1" => getXVal($this->battleInfo,'weapon_uuid1', 0), "weapon1" => getXVal($this->battleInfo,'weapon_uuid1', 0),
@ -247,8 +247,8 @@ class TameBattleDataService extends BaseService {
"current_level_class" => $newRank, "current_level_class" => $newRank,
"current_level_class_score" => $newScore, "current_level_class_score" => $newScore,
"level_class_score_chg" => $newScore - $this->userInfo['score'], // 排位分改变 "level_class_score_chg" => $newScore - $this->userInfo['score'], // 排位分改变
"pve_rank_score" => getXVal($this->battleInfo,'pve_rank_score', 0), "pve_rank_score" => getXVal($this->battleInfo,'pve_score', 0),
"pve_kill_boss" => getXVal($this->battleInfo,'pve_kill_boss', 0), "pve_kill_boss" => getXVal($this->battleInfo,'pve_boss_killed', 0),
"pve_instance_id" => getXVal($this->allInfo,'pve_instance_id', 0), "pve_instance_id" => getXVal($this->allInfo,'pve_instance_id', 0),
// "pve_instance_mode" => getXVal($this->allInfo,'pve_instance_mode', 0), // "pve_instance_mode" => getXVal($this->allInfo,'pve_instance_mode', 0),
); );
@ -334,6 +334,7 @@ class TameBattleDataService extends BaseService {
'head'=> getXVal($info,'head', 0), 'head'=> getXVal($info,'head', 0),
'head_frame'=> getXVal($info,'head_frame', 0), 'head_frame'=> getXVal($info,'head_frame', 0),
'sex'=> getXVal($info,'sex', 0), 'sex'=> getXVal($info,'sex', 0),
'hero_uniid'=> getXVal($info,'hero_uniid', 0),
'hero_id'=> getXVal($info,'hero_id', 0), 'hero_id'=> getXVal($info,'hero_id', 0),
'dead'=> getXVal($info,'dead', 0), 'dead'=> getXVal($info,'dead', 0),
'is_mvp'=> getXVal($info,'is_mvp', 0), 'is_mvp'=> getXVal($info,'is_mvp', 0),
@ -357,7 +358,7 @@ class TameBattleDataService extends BaseService {
'pve_wave'=> getXVal($info,'pve_wave', 0), 'pve_wave'=> getXVal($info,'pve_wave', 0),
'pve_max_wave'=> getXVal($info,'pve_max_wave', 0), 'pve_max_wave'=> getXVal($info,'pve_max_wave', 0),
'pve_boss_killed'=> getXVal($info,'pve_boss_killed', 0), 'pve_boss_killed'=> getXVal($info,'pve_boss_killed', 0),
'pve_rank_score'=> getXVal($info,'pve_rank_score', 0), // 'pve_rank_score'=> getXVal($info,'pve_rank_score', 0),
); );
$temp['reward'] = array( $temp['reward'] = array(
@ -637,12 +638,12 @@ class TameBattleDataService extends BaseService {
} }
} }
//排名 //排名
$ranked = getXVal($this->allInfo,'pvp_team_rank', 0); $ranked = getXVal($this->battleInfo,'ranked', 0);
if ($ranked == 1) { if ($ranked == 1) {
//吃鸡次数 //吃鸡次数
$this->incValue($battleData, 'total_win_times', 1); $this->incValue($battleData, 'total_win_times', 1);
} }
if ($ranked <= 10){ if ($ranked <= 10 && $ranked>0){
//排名前十 总次数 //排名前十 总次数
$this->incValue($battleData, 'total_top_ten_times', 1); $this->incValue($battleData, 'total_top_ten_times', 1);
} }