From ed7a86fd5dd1a62fe9b81737c93aff486ebdf86b Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Fri, 3 Dec 2021 17:20:25 +0800 Subject: [PATCH] 1 --- sql/gamedb.sql | 31 +++ webapp/bootstrap/init.php | 3 + webapp/controller/BaseController.class.php | 7 +- webapp/controller/MissionController.class.php | 253 +++++++++++++++++- webapp/mt/Task.php | 12 + 5 files changed, 303 insertions(+), 3 deletions(-) diff --git a/sql/gamedb.sql b/sql/gamedb.sql index 67bc70b..dabe4ae 100644 --- a/sql/gamedb.sql +++ b/sql/gamedb.sql @@ -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`), diff --git a/webapp/bootstrap/init.php b/webapp/bootstrap/init.php index d1d882d..e52a7ed 100644 --- a/webapp/bootstrap/init.php +++ b/webapp/bootstrap/init.php @@ -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/'; diff --git a/webapp/controller/BaseController.class.php b/webapp/controller/BaseController.class.php index 8631802..a27e1d1 100644 --- a/webapp/controller/BaseController.class.php +++ b/webapp/controller/BaseController.class.php @@ -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() diff --git a/webapp/controller/MissionController.class.php b/webapp/controller/MissionController.class.php index 4af4f56..ebf107b 100644 --- a/webapp/controller/MissionController.class.php +++ b/webapp/controller/MissionController.class.php @@ -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: diff --git a/webapp/mt/Task.php b/webapp/mt/Task.php index 28d8a62..9e44906 100644 --- a/webapp/mt/Task.php +++ b/webapp/mt/Task.php @@ -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);