用户成长获得奖励

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/RankSeason.php');
require_once('mt/LevelUp.php');
require_once('mt/Task.php');
require_once('mt/Drop.php');
use phpcommon\SqlHelper;
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));
}
public function _addVirtualItem($itemId, $itemNum)
public function _addVirtualItem($itemId, $itemNum,$awardService,$propertyChgService)
{
if ($itemNum <= 0){
return;
@ -272,6 +274,18 @@ class BaseAuthedController extends BaseController {
$newlV = $userDb['level'];
$newExp = $userDb['exp']+$itemNum;
\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(
'level' => $newlV,
'exp' => $newExp
@ -339,7 +353,7 @@ class BaseAuthedController extends BaseController {
foreach ($items as $item) {
$awardService->addItem($item['item_id'], $item['item_num']);
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();
} else {
$itemMeta = mt\Item::get($item['item_id']);

View File

@ -71,12 +71,26 @@ class Task {
const DAILY_MISSION_CUSTOM_TYPE = 1;
const SEASON_WEEKLY_MISSION_CUSTOM_TYPE = 2;
const OFFER_REWARD_MISSION_CUSTOM_TYPE = 3;
const ACHIEVEMENT_MISSION_CUSTOM_TYPE = 4;
public static function get($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)
{
$metaList = array();
@ -105,6 +119,13 @@ class Task {
}
}
break;
case self::ACHIEVEMENT_MISSION_CUSTOM_TYPE:
{
if ($meta['type'] == self::ACHIEVEMENT_MISSON_TYPE) {
array_push($metaList, $meta);
}
}
break;
default:
{
}

View File

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

View File

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