This commit is contained in:
aozhiwei 2021-12-03 17:20:25 +08:00
parent 318a0b2a97
commit ed7a86fd5d
5 changed files with 303 additions and 3 deletions

View File

@ -45,6 +45,10 @@ CREATE TABLE `t_user` (
`activated` int(11) NOT NULL DEFAULT '0' COMMENT '是否已激活',
`activatetime` int(11) NOT NULL DEFAULT '0' COMMENT '激活时间',
`total_battle_times` int(11) NOT NULL DEFAULT '0' COMMENT '总战斗次数',
`total_single_battle_times` int(11) NOT NULL DEFAULT '0' COMMENT '总战斗次数(单人)',
`total_team_battle_times` int(11) NOT NULL DEFAULT '0' COMMENT '总战斗次数(组队)',
`single_battle_rank` int(11) NOT NULL DEFAULT '0' COMMENT '比赛排名(单人)',
`team_battle_rank` int(11) NOT NULL DEFAULT '0' COMMENT '比赛排名(组队)',
`total_win_times` int(11) NOT NULL DEFAULT '0' COMMENT '总胜利次数',
`total_kills_times` int(11) NOT NULL DEFAULT '0' COMMENT '总击杀数',
`max_kills_times` int(11) NOT NULL DEFAULT '0' COMMENT '最高击杀数',
@ -55,6 +59,18 @@ CREATE TABLE `t_user` (
`max_recover_hp` bigint NOT NULL DEFAULT '0' COMMENT '最高治疗量',
`total_alive_time` bigint NOT NULL DEFAULT '0' COMMENT '总存活时间',
`max_alive_time` bigint NOT NULL DEFAULT '0' COMMENT '最高存活时间',
`rescue_teammate_times` bigint NOT NULL DEFAULT '0' COMMENT '救队友数',
`diving_times` bigint NOT NULL DEFAULT '0' COMMENT '潜水次数',
`open_airdrop_times` bigint NOT NULL DEFAULT '0' COMMENT '开启空投补给次数',
`use_medicine_times` bigint NOT NULL DEFAULT '0' COMMENT '使用药物次数',
`destory_car_times` bigint NOT NULL DEFAULT '0' COMMENT '破坏载具次数',
`use_camouflage_times` bigint NOT NULL DEFAULT '0' COMMENT '使用伪装物',
`use_skill_times` bigint NOT NULL DEFAULT '0' COMMENT '使用技能次数',
`ride_car_move_distance` bigint NOT NULL DEFAULT '0' COMMENT '驾驶或乘坐载具累计移动X米',
`ride_car_kills` bigint NOT NULL DEFAULT '0' COMMENT '驾驶或乘坐载具累计击杀X个敌人',
`to_teammate_like_times` bigint NOT NULL DEFAULT '0' COMMENT '给队友点赞次数',
`consume_gold` bigint NOT NULL DEFAULT '0' COMMENT '消费金币数',
`max_alive_time` bigint NOT NULL DEFAULT '0' COMMENT '最高存活时间',
`createtime` int(11) NOT NULL DEFAULT '0' COMMENT '创建时间',
`modifytime` int(11) NOT NULL DEFAULT '0' COMMENT '修改时间',
PRIMARY KEY (`idx`),
@ -251,6 +267,10 @@ CREATE TABLE `t_season` (
`gift_state2` int(11) NOT NULL DEFAULT '0' COMMENT '豪华礼包购买状态 0:未购 1:已购',
`gift_buytime2` int(11) NOT NULL DEFAULT '0' COMMENT '豪华礼包购买时间',
`total_battle_times` int(11) NOT NULL DEFAULT '0' COMMENT '总战斗次数',
`total_single_battle_times` int(11) NOT NULL DEFAULT '0' COMMENT '总战斗次数(单人)',
`total_team_battle_times` int(11) NOT NULL DEFAULT '0' COMMENT '总战斗次数(组队)',
`single_battle_rank` int(11) NOT NULL DEFAULT '0' COMMENT '比赛排名(单人)',
`team_battle_rank` int(11) NOT NULL DEFAULT '0' COMMENT '比赛排名(组队)',
`total_win_times` int(11) NOT NULL DEFAULT '0' COMMENT '总胜利次数',
`total_kills_times` int(11) NOT NULL DEFAULT '0' COMMENT '总击杀数',
`max_kills_times` int(11) NOT NULL DEFAULT '0' COMMENT '最高击杀数',
@ -261,6 +281,17 @@ CREATE TABLE `t_season` (
`max_recover_hp` bigint NOT NULL DEFAULT '0' COMMENT '最高治疗量',
`total_alive_time` bigint NOT NULL DEFAULT '0' COMMENT '总存活时间',
`max_alive_time` bigint NOT NULL DEFAULT '0' COMMENT '最高存活时间',
`rescue_teammate_times` bigint NOT NULL DEFAULT '0' COMMENT '救队友数',
`diving_times` bigint NOT NULL DEFAULT '0' COMMENT '潜水次数',
`open_airdrop_times` bigint NOT NULL DEFAULT '0' COMMENT '开启空投补给次数',
`use_medicine_times` bigint NOT NULL DEFAULT '0' COMMENT '使用药物次数',
`destory_car_times` bigint NOT NULL DEFAULT '0' COMMENT '破坏载具次数',
`use_camouflage_times` bigint NOT NULL DEFAULT '0' COMMENT '使用伪装物',
`use_skill_times` bigint NOT NULL DEFAULT '0' COMMENT '使用技能次数',
`ride_car_move_distance` bigint NOT NULL DEFAULT '0' COMMENT '驾驶或乘坐载具累计移动X米',
`ride_car_kills` bigint NOT NULL DEFAULT '0' COMMENT '驾驶或乘坐载具累计击杀X个敌人',
`to_teammate_like_times` bigint NOT NULL DEFAULT '0' COMMENT '给队友点赞次数',
`consume_gold` bigint NOT NULL DEFAULT '0' COMMENT '消费金币数',
`createtime` int(11) NOT NULL DEFAULT '0' COMMENT '创建时间',
`modifytime` int(11) NOT NULL DEFAULT '0' COMMENT '修改时间',
PRIMARY KEY (`idx`),

View File

@ -11,6 +11,9 @@ define('TEAMID_KEY', 'team_uuid:');
define('V_ITEM_GOLD', 10001); //金币
define('V_ITEM_DIAMOND', 10002); //钻石
define('TN_DAILY_BEGIN', 9001);
define('TN_DAILY_LOGINS', 9001);
function getConfigBaseDir()
{
return '../res/';

View File

@ -28,7 +28,12 @@ class BaseController {
public function _getNowDaySeconds()
{
return phpcommon\getDaySeconds($this->nowtime);
return $this->_getDaySeconds($this->nowtime);
}
public function _getDaySeconds($time)
{
return phpcommon\getDaySeconds($time);
}
public function _getTodayRemainSeconds()

View File

@ -92,28 +92,60 @@ class MissionController extends BaseAuthedController {
));
}
private function getMissionDto($missionDb, $missionMeta)
private function getMissionDto($userInfo, $seasonDb, $missionDb, $missionMeta)
{
$missionDto = array(
'mission_id' => $missionMeta['id'],
'current' => 0,
'target' => 0,
'target' => getXVal($missionMeta, 'target', 1),
'state' => Mission::NOT_FINISHED_STATE,
);
if ($missionDb) {
if ($missionMeta['type'] == mt\Task::DAILY_MISSON_TYPE) {
if ($this->_getDaySeconds($missionDb['modifytime']) == $this->_getNowDaySeconds()) {
$missionDto['current'] = $missionDto['target'];
$missionDto['state'] = Mission::RECEIVED_STATE;
return $missionDto;
}
} else {
$missionDto['current'] = $missionDto['target'];
$missionDto['state'] = Mission::RECEIVED_STATE;
return $missionDto;
}
}
switch ($missionMeta['type']) {
case mt\Task::DAILY_LOGIN_TIMES_COND:
{
//今日登陆
if ($this->_getDailyV(TN_DAILY_LOGINS, 0) >= $missionDto['target']) {
$missionDto['current'] = $missionDto['target'];
$missionDto['state'] = Mission::RECEIVEABLE_STATE;
}
}
break;
case mt\Task::PLAYER_LEVEL_COND:
{
//玩家等级达到X
if ($userInfo['level'] >= $missionDto['target']) {
$missionDto['current'] = $missionDto['target'];
$missionDto['state'] = Mission::RECEIVEABLE_STATE;
}
}
break;
case mt\Task::TOTAL_BATTLE_TIMES_COND:
{
//进行X场比赛
if ($missionMeta['season_task'] == mt\Task::SEASON_MISSON_FLAG) {
if (getXVal($seasonDb, 'total_battle_times', 0) >= $missionDto['target']) {
$missionDto['current'] = $missionDto['target'];
$missionDto['state'] = Mission::RECEIVEABLE_STATE;
}
} else {
if ($userInfo['total_battle_times'] >= $missionDto['target']) {
$missionDto['current'] = $missionDto['target'];
$missionDto['state'] = Mission::RECEIVEABLE_STATE;
}
}
}
break;
case mt\Task::SHARE_GAME_TIMES_COND:
@ -124,41 +156,129 @@ class MissionController extends BaseAuthedController {
case mt\Task::SINGLE_BATTLE_TIMES_COND:
{
//进行X场单人比赛
if ($missionMeta['season_task'] == mt\Task::SEASON_MISSON_FLAG) {
if (getXVal($seasonDb, 'total_single_battle_times', 0) >= $missionDto['target']) {
$missionDto['current'] = $missionDto['target'];
$missionDto['state'] = Mission::RECEIVEABLE_STATE;
}
} else {
if ($userInfo['total_single_battle_times'] >= $missionDto['target']) {
$missionDto['current'] = $missionDto['target'];
$missionDto['state'] = Mission::RECEIVEABLE_STATE;
}
}
}
break;
case mt\Task::TEAM_BATTLE_TIMES_COND:
{
//进行X场组队比赛
if ($missionMeta['season_task'] == mt\Task::SEASON_MISSON_FLAG) {
if (getXVal($seasonDb, 'total_team_battle_times', 0) >= $missionDto['target']) {
$missionDto['current'] = $missionDto['target'];
$missionDto['state'] = Mission::RECEIVEABLE_STATE;
}
} else {
if ($userInfo['total_team_battle_times'] >= $missionDto['target']) {
$missionDto['current'] = $missionDto['target'];
$missionDto['state'] = Mission::RECEIVEABLE_STATE;
}
}
}
break;
case mt\Task::SINGLE_BATTLE_RANK_COND:
{
//单人比赛排名前X
if ($missionMeta['season_task'] == mt\Task::SEASON_MISSON_FLAG) {
if (getXVal($seasonDb, 'single_battle_rank', 0) >= $missionDto['target']) {
$missionDto['current'] = $missionDto['target'];
$missionDto['state'] = Mission::RECEIVEABLE_STATE;
}
} else {
if ($userInfo['single_battle_rank'] >= $missionDto['target']) {
$missionDto['current'] = $missionDto['target'];
$missionDto['state'] = Mission::RECEIVEABLE_STATE;
}
}
}
break;
case mt\Task::TEAM_BATTLE_RANK_COND:
{
//组队比赛排名前X
if ($missionMeta['season_task'] == mt\Task::SEASON_MISSON_FLAG) {
if (getXVal($seasonDb, 'team_battle_rank', 0) >= $missionDto['target']) {
$missionDto['current'] = $missionDto['target'];
$missionDto['state'] = Mission::RECEIVEABLE_STATE;
}
} else {
if ($userInfo['team_battle_rank'] >= $missionDto['target']) {
$missionDto['current'] = $missionDto['target'];
$missionDto['state'] = Mission::RECEIVEABLE_STATE;
}
}
}
break;
case mt\Task::TOTAL_KILL_NUM_COND:
{
//累计击败X个敌人
if ($missionMeta['season_task'] == mt\Task::SEASON_MISSON_FLAG) {
if (getXVal($seasonDb, 'total_kills_times', 0) >= $missionDto['target']) {
$missionDto['current'] = $missionDto['target'];
$missionDto['state'] = Mission::RECEIVEABLE_STATE;
}
} else {
if ($userInfo['total_kills_times'] >= $missionDto['target']) {
$missionDto['current'] = $missionDto['target'];
$missionDto['state'] = Mission::RECEIVEABLE_STATE;
}
}
}
break;
case mt\Task::TOTAL_DAMGE_OUT_COND:
{
//累计造成X点伤害
if ($missionMeta['season_task'] == mt\Task::SEASON_MISSON_FLAG) {
if (getXVal($seasonDb, 'total_damage_out', 0) >= $missionDto['target']) {
$missionDto['current'] = $missionDto['target'];
$missionDto['state'] = Mission::RECEIVEABLE_STATE;
}
} else {
if ($userInfo['total_damage_out'] >= $missionDto['target']) {
$missionDto['current'] = $missionDto['target'];
$missionDto['state'] = Mission::RECEIVEABLE_STATE;
}
}
}
break;
case mt\Task::RESCUE_TEAMMATE_TIMES_COND:
{
//救援X个队友
if ($missionMeta['season_task'] == mt\Task::SEASON_MISSON_FLAG) {
if (getXVal($seasonDb, 'rescue_teammate_times', 0) >= $missionDto['target']) {
$missionDto['current'] = $missionDto['target'];
$missionDto['state'] = Mission::RECEIVEABLE_STATE;
}
} else {
if ($userInfo['rescue_teammate_times'] >= $missionDto['target']) {
$missionDto['current'] = $missionDto['target'];
$missionDto['state'] = Mission::RECEIVEABLE_STATE;
}
}
}
break;
case mt\Task::TOTAL_SURVIVAL_TIME_COND:
{
//累计生存X分钟
if ($missionMeta['season_task'] == mt\Task::SEASON_MISSON_FLAG) {
if (getXVal($seasonDb, 'total_alive_time', 0) >= $missionDto['target']) {
$missionDto['current'] = $missionDto['target'];
$missionDto['state'] = Mission::RECEIVEABLE_STATE;
}
} else {
if ($userInfo['total_alive_time'] >= $missionDto['target']) {
$missionDto['current'] = $missionDto['target'];
$missionDto['state'] = Mission::RECEIVEABLE_STATE;
}
}
}
break;
case mt\Task::USE_WEAPON_KILL_NUM_COND:
@ -184,21 +304,65 @@ class MissionController extends BaseAuthedController {
case mt\Task::TOTAL_DIVING_TIMES_COND:
{
//累计潜水X次
if ($missionMeta['season_task'] == mt\Task::SEASON_MISSON_FLAG) {
if (getXVal($seasonDb, 'diving_times', 0) >= $missionDto['target']) {
$missionDto['current'] = $missionDto['target'];
$missionDto['state'] = Mission::RECEIVEABLE_STATE;
}
} else {
if ($userInfo['diving_times'] >= $missionDto['target']) {
$missionDto['current'] = $missionDto['target'];
$missionDto['state'] = Mission::RECEIVEABLE_STATE;
}
}
}
break;
case mt\Task::TOTAL_DAMAGE_IN_COND:
{
//累计受到X点伤害
if ($missionMeta['season_task'] == mt\Task::SEASON_MISSON_FLAG) {
if (getXVal($seasonDb, 'total_damage_in', 0) >= $missionDto['target']) {
$missionDto['current'] = $missionDto['target'];
$missionDto['state'] = Mission::RECEIVEABLE_STATE;
}
} else {
if ($userInfo['total_damage_in'] >= $missionDto['target']) {
$missionDto['current'] = $missionDto['target'];
$missionDto['state'] = Mission::RECEIVEABLE_STATE;
}
}
}
break;
case mt\Task::TOTAL_RECOVER_HP_COND:
{
//累计恢复X点血量
if ($missionMeta['season_task'] == mt\Task::SEASON_MISSON_FLAG) {
if (getXVal($seasonDb, 'total_recover_hp', 0) >= $missionDto['target']) {
$missionDto['current'] = $missionDto['target'];
$missionDto['state'] = Mission::RECEIVEABLE_STATE;
}
} else {
if ($userInfo['total_recover_hp'] >= $missionDto['target']) {
$missionDto['current'] = $missionDto['target'];
$missionDto['state'] = Mission::RECEIVEABLE_STATE;
}
}
}
break;
case mt\Task::TOTAL_OPEN_AIRDROP_COND:
{
//累计打开空投补给X次
if ($missionMeta['season_task'] == mt\Task::SEASON_MISSON_FLAG) {
if (getXVal($seasonDb, 'open_airdrop_times', 0) >= $missionDto['target']) {
$missionDto['current'] = $missionDto['target'];
$missionDto['state'] = Mission::RECEIVEABLE_STATE;
}
} else {
if ($userInfo['open_airdrop_times'] >= $missionDto['target']) {
$missionDto['current'] = $missionDto['target'];
$missionDto['state'] = Mission::RECEIVEABLE_STATE;
}
}
}
break;
case mt\Task::BATTLE_IN_HERO_LV_COND:
@ -214,46 +378,131 @@ class MissionController extends BaseAuthedController {
case mt\Task::TOTAL_MEDICINE_TIMES_COND:
{
//累计使用X药品Y次
if ($missionMeta['season_task'] == mt\Task::SEASON_MISSON_FLAG) {
if (getXVal($seasonDb, 'use_medicine_times', 0) >= $missionDto['target']) {
$missionDto['current'] = $missionDto['target'];
$missionDto['state'] = Mission::RECEIVEABLE_STATE;
}
} else {
if ($userInfo['use_medicine_times'] >= $missionDto['target']) {
$missionDto['current'] = $missionDto['target'];
$missionDto['state'] = Mission::RECEIVEABLE_STATE;
}
}
}
break;
case mt\Task::TOTAL_DESTORY_CAR_TIMES_COND:
{
//累计破坏载具X个
if ($missionMeta['season_task'] == mt\Task::SEASON_MISSON_FLAG) {
if (getXVal($seasonDb, 'destory_car_times', 0) >= $missionDto['target']) {
$missionDto['current'] = $missionDto['target'];
$missionDto['state'] = Mission::RECEIVEABLE_STATE;
}
} else {
if ($userInfo['destory_car_times'] >= $missionDto['target']) {
$missionDto['current'] = $missionDto['target'];
$missionDto['state'] = Mission::RECEIVEABLE_STATE;
}
}
}
break;
case mt\Task::TOTAL_USE_CAMOUFLAGE_TIMES_COND:
{
//累计使用X个伪装物
if ($missionMeta['season_task'] == mt\Task::SEASON_MISSON_FLAG) {
if (getXVal($seasonDb, 'use_camouflage_times', 0) >= $missionDto['target']) {
$missionDto['current'] = $missionDto['target'];
$missionDto['state'] = Mission::RECEIVEABLE_STATE;
}
} else {
if ($userInfo['use_camouflage_times'] >= $missionDto['target']) {
$missionDto['current'] = $missionDto['target'];
$missionDto['state'] = Mission::RECEIVEABLE_STATE;
}
}
}
break;
case mt\Task::TOTAL_USE_SKILL_TIMES_COND:
{
//累计使用X次角色技能
if ($missionMeta['season_task'] == mt\Task::SEASON_MISSON_FLAG) {
if (getXVal($seasonDb, 'use_skill_times', 0) >= $missionDto['target']) {
$missionDto['current'] = $missionDto['target'];
$missionDto['state'] = Mission::RECEIVEABLE_STATE;
}
} else {
if ($userInfo['use_skill_times'] >= $missionDto['target']) {
$missionDto['current'] = $missionDto['target'];
$missionDto['state'] = Mission::RECEIVEABLE_STATE;
}
}
}
break;
case mt\Task::RIDE_CAR_MOVE_DISTANCE_COND:
{
//驾驶或乘坐载具累计移动X米所有模式
if ($missionMeta['season_task'] == mt\Task::SEASON_MISSON_FLAG) {
if (getXVal($seasonDb, 'ride_car_move_distance', 0) >= $missionDto['target']) {
$missionDto['current'] = $missionDto['target'];
$missionDto['state'] = Mission::RECEIVEABLE_STATE;
}
} else {
if ($userInfo['ride_car_move_distance'] >= $missionDto['target']) {
$missionDto['current'] = $missionDto['target'];
$missionDto['state'] = Mission::RECEIVEABLE_STATE;
}
}
}
break;
case mt\Task::RIDE_CAR_KILL_NUM_COND:
{
//驾驶或乘坐载具累计击杀X个敌人所有模式
if ($missionMeta['season_task'] == mt\Task::SEASON_MISSON_FLAG) {
if (getXVal($seasonDb, 'ride_car_kills', 0) >= $missionDto['target']) {
$missionDto['current'] = $missionDto['target'];
$missionDto['state'] = Mission::RECEIVEABLE_STATE;
}
} else {
if ($userInfo['ride_car_kills'] >= $missionDto['target']) {
$missionDto['current'] = $missionDto['target'];
$missionDto['state'] = Mission::RECEIVEABLE_STATE;
}
}
}
break;
case mt\Task::LIKE_TEAMMATE_TIMES_COND:
{
//战斗结算中累计给队友点赞X次
if ($missionMeta['season_task'] == mt\Task::SEASON_MISSON_FLAG) {
if (getXVal($seasonDb, 'to_teammate_like_times', 0) >= $missionDto['target']) {
$missionDto['current'] = $missionDto['target'];
$missionDto['state'] = Mission::RECEIVEABLE_STATE;
}
} else {
if ($userInfo['to_teammate_like_times'] >= $missionDto['target']) {
$missionDto['current'] = $missionDto['target'];
$missionDto['state'] = Mission::RECEIVEABLE_STATE;
}
}
}
break;
case mt\Task::SEASON_LEVEL_COND:
{
//赛季段位达到X
if ($userInfo['rank'] >= $missionDto['target']) {
$missionDto['current'] = $missionDto['target'];
$missionDto['state'] = Mission::RECEIVEABLE_STATE;
}
}
break;
case mt\Task::CONSUME_GOLD_COND:
{
//消耗X个金币
/*if ($userInfo['consume_gold'] >= $missionDto['target']) {
$missionDto['current'] = $missionDto['target'];
$missionDto['state'] = Mission::RECEIVEABLE_STATE;
}*/
}
break;
case mt\Task::BATTLE_RANK_COND:

View File

@ -48,6 +48,18 @@ class Task {
const TOTAL_INVITE_FRIEND_ONLINE_TIMES_COND = 41; //邀请X个好友上线
const TOTAL_CREATE_OR_JOIN_GUILD_COUNT_COND = 42; //创建或加入1个战队
const DAILY_MISSON_TYPE = 1;
const ACHIEVEMENT_MISSON_TYPE = 2;
const ACTIVITY_MISSON_TYPE = 3;
const RANK_MISSON_TYPE = 4;
const SEASONCARD_MISSON_TYPE = 4;
const SEASON_WEAKLY_MISSON_SUBTYPE = 1;
const SEASON_CHALLENGE_MISSON_SUBTYPE = 2;
const SEASON_ACTIVE_MISSON_SUBTYPE = 3;
const SEASON_MISSON_FLAG = 1;
public static function get($id)
{
return getXVal(self::getMetaList(), $id);