From 318a0b2a9724abac422510ccbf603a5d345c8a92 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Fri, 3 Dec 2021 16:20:38 +0800 Subject: [PATCH] 1 --- sql/gamedb.sql | 13 +- webapp/controller/BattleController.class.php | 68 +++++- webapp/controller/MissionController.class.php | 201 ++++++++++++++++++ webapp/models/Season.php | 14 ++ 4 files changed, 292 insertions(+), 4 deletions(-) diff --git a/sql/gamedb.sql b/sql/gamedb.sql index 82f8df1..67bc70b 100644 --- a/sql/gamedb.sql +++ b/sql/gamedb.sql @@ -244,14 +244,23 @@ CREATE TABLE `t_season` ( `season_id` int(11) NOT NULL DEFAULT '0' COMMENT '赛季id', `card_lv` int(11) NOT NULL DEFAULT '0' COMMENT '赛季手册等级', `card_exp` int(11) NOT NULL DEFAULT '0' COMMENT '赛季手册经验', - `total_times` int(11) NOT NULL DEFAULT '0' COMMENT '赛季场次总数', - `win_times` int(11) NOT NULL DEFAULT '0' COMMENT '赛季胜利场次', `total_score` int(11) NOT NULL DEFAULT '0' COMMENT '赛季积分', `max_score` int(11) NOT NULL DEFAULT '0' COMMENT '赛季最高积分', `gift_state1` int(11) NOT NULL DEFAULT '0' COMMENT '普通礼包购买状态 0:未购 1:已购', `gift_buytime1` int(11) NOT NULL DEFAULT '0' COMMENT '普通礼包购买时间', `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_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 '最高击杀数', + `total_damage_out` bigint NOT NULL DEFAULT '0' COMMENT '总伤害输出', + `max_damage_out` bigint NOT NULL DEFAULT '0' COMMENT '最高伤害输出', + `total_damage_in` bigint NOT NULL DEFAULT '0' COMMENT '总伤害输入', + `total_recover_hp` bigint NOT NULL DEFAULT '0' COMMENT '总治疗量', + `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 '最高存活时间', `createtime` int(11) NOT NULL DEFAULT '0' COMMENT '创建时间', `modifytime` int(11) NOT NULL DEFAULT '0' COMMENT '修改时间', PRIMARY KEY (`idx`), diff --git a/webapp/controller/BattleController.class.php b/webapp/controller/BattleController.class.php index ba1284a..2c80eaf 100644 --- a/webapp/controller/BattleController.class.php +++ b/webapp/controller/BattleController.class.php @@ -7,13 +7,13 @@ require_once('mt/Parameter.php'); require_once('mt/Drop.php'); require_once('mt/EquipUpgrade.php'); require_once('mt/Season.php'); -require_once('mt/SeasonPoint.php'); require_once('mt/RankReward.php'); require_once('mt/Equip.php'); require_once('mt/Hero.php'); require_once('mt/Robot.php'); require_once('services/PropertyChgService.php'); +require_once('services/SeasonService.php'); use phpcommon\SqlHelper; use models\User; @@ -95,7 +95,71 @@ class BattleController extends BaseAuthedController { private function updateSeason($userInfo) { - + $fieldsKv = array( + 'total_battle_times' => function () { + return 'total_battle_times + 1'; + }, + ); + if (getReqVal('rank', 0) == 1) { + $fieldsKv['total_win_times'] = function () { + return 'total_win_times + 1'; + }; + } + $kills = getReqVal('kills', 0); + if ($kills > 0) { + $fieldsKv['total_kills_times'] = function () { + return "total_kills_times + ${kills}"; + }; + $fieldsKv['max_kills_times'] = function () { + return "GREATEST(max_kills_times, ${kills})"; + }; + } + $damageOut = getReqVal('damage_out', 0); + if ($damageOut > 0) { + $fieldsKv['total_damage_out'] = function () { + return "total_damage_out + ${damageOut}"; + }; + $fieldsKv['max_damage_out'] = function () { + return "GREATEST(max_damage_out, ${damageOut})"; + }; + } + $damageIn = getReqVal('damage_in', 0); + if ($damageIn > 0) { + $fieldsKv['total_damage_in'] = function () { + return "total_damage_in + ${damageIn}"; + }; + } + $recoverHp = getReqVal('recover_hp', 0); + if ($recoverHp > 0) { + $fieldsKv['total_recover_hp'] = function () { + return "total_recover_hp + ${recoverHp}"; + }; + $fieldsKv['max_recover_hp'] = function () { + return "GREATEST(max_recover_hp, ${recoverHp})"; + }; + } + $aliveTime = getReqVal('alive_time', 0); + if ($aliveTime > 0) { + $fieldsKv['total_alive_time'] = function () { + return "total_alive_time + ${aliveTime}"; + }; + $fieldsKv['max_alive_time'] = function () { + return "GREATEST(max_alive_time, ${aliveTime})"; + }; + } + $currSeasonMeta = mt\Season::getCurrentSeason(); + if ($currSeasonMeta && count($fieldsKv) > 0) { + $seasonService = new services\SeasonService(); + if (!$seasonService->checkSeason($userInfo)) { + $userInfo = $this->_safeGetOrmUserInfo(); + } + $seasonDb = Season::find($currSeasonMeta['id']); + if (!$seasonDb) { + Season::add($currSeasonMeta['id']); + $seasonDb = Season::find($currSeasonMeta['id']); + } + Season::update($fieldsKv); + } } private function updateMission($userInfo) diff --git a/webapp/controller/MissionController.class.php b/webapp/controller/MissionController.class.php index e8587c8..4af4f56 100644 --- a/webapp/controller/MissionController.class.php +++ b/webapp/controller/MissionController.class.php @@ -103,6 +103,207 @@ class MissionController extends BaseAuthedController { switch ($missionMeta['type']) { case mt\Task::DAILY_LOGIN_TIMES_COND: { + //今日登陆 + } + break; + case mt\Task::PLAYER_LEVEL_COND: + { + //玩家等级达到X + } + break; + case mt\Task::TOTAL_BATTLE_TIMES_COND: + { + //进行X场比赛 + } + break; + case mt\Task::SHARE_GAME_TIMES_COND: + { + //分享1次游戏 + } + break; + case mt\Task::SINGLE_BATTLE_TIMES_COND: + { + //进行X场单人比赛 + } + break; + case mt\Task::TEAM_BATTLE_TIMES_COND: + { + //进行X场组队比赛 + } + break; + case mt\Task::SINGLE_BATTLE_RANK_COND: + { + //单人比赛排名前X + } + break; + case mt\Task::TEAM_BATTLE_RANK_COND: + { + //组队比赛排名前X + } + break; + case mt\Task::TOTAL_KILL_NUM_COND: + { + //累计击败X个敌人 + } + break; + case mt\Task::TOTAL_DAMGE_OUT_COND: + { + //累计造成X点伤害 + } + break; + case mt\Task::RESCUE_TEAMMATE_TIMES_COND: + { + //救援X个队友 + } + break; + case mt\Task::TOTAL_SURVIVAL_TIME_COND: + { + //累计生存X分钟 + } + break; + case mt\Task::USE_WEAPON_KILL_NUM_COND: + { + //使用X枪械击杀Y个敌人 + } + break; + case mt\Task::USE_WEAPON_DAMGE_OUT_COND: + { + //使用X种枪械对敌人累计造成Y点伤害 + } + break; + case mt\Task::USE_WEAPON_SLOT_TIMES_COND: + { + //使用某个槽位的次数 cond_param1=槽位 + } + break; + case mt\Task::GET_EQUIP_TIMES_COND: + { + //获得某种类型的装备 cond_param1=equip.type cond_param2=equip.sub_type + } + break; + case mt\Task::TOTAL_DIVING_TIMES_COND: + { + //累计潜水X次 + } + break; + case mt\Task::TOTAL_DAMAGE_IN_COND: + { + //累计受到X点伤害 + } + break; + case mt\Task::TOTAL_RECOVER_HP_COND: + { + //累计恢复X点血量 + } + break; + case mt\Task::TOTAL_OPEN_AIRDROP_COND: + { + //累计打开空投补给X次 + } + break; + case mt\Task::BATTLE_IN_HERO_LV_COND: + { + //单局内英雄技能升级到X级 + } + break; + case mt\Task::BATTLE_IN_GUN_LV_COND: + { + //单局内英雄专属枪械升到X级 + } + break; + case mt\Task::TOTAL_MEDICINE_TIMES_COND: + { + //累计使用X药品Y次 + } + break; + case mt\Task::TOTAL_DESTORY_CAR_TIMES_COND: + { + //累计破坏载具X个 + } + break; + case mt\Task::TOTAL_USE_CAMOUFLAGE_TIMES_COND: + { + //累计使用X个伪装物 + } + break; + case mt\Task::TOTAL_USE_SKILL_TIMES_COND: + { + //累计使用X次角色技能 + } + break; + case mt\Task::RIDE_CAR_MOVE_DISTANCE_COND: + { + //驾驶或乘坐载具累计移动X米(所有模式) + } + break; + case mt\Task::RIDE_CAR_KILL_NUM_COND: + { + //驾驶或乘坐载具累计击杀X个敌人(所有模式) + } + break; + case mt\Task::LIKE_TEAMMATE_TIMES_COND: + { + //战斗结算中累计给队友点赞X次 + } + break; + case mt\Task::SEASON_LEVEL_COND: + { + //赛季段位达到X + } + break; + case mt\Task::CONSUME_GOLD_COND: + { + //消耗X个金币 + } + break; + case mt\Task::BATTLE_RANK_COND: + { + //获得X级评价Y次 + } + break; + case mt\Task::FINISHED_ALL_DAILY_MISSION_COND: + { + //完成所有每日任务 + } + break; + case mt\Task::SHOP_BUY_TIMES_COND: + { + //在X商店消费Y次 + } + break; + case mt\Task::TOTAL_UPGRADE_TALENT_LV_COND: + { + //科研升级X次 + } + break; + case mt\Task::TOTAL_GET_HERO_SKIN_COUNT_COND: + { + //累计获得X个角色时装 + } + break; + case mt\Task::TOTAL_GET_GUN_SKIN_COUNT_COND: + { + //累计获得X个枪械皮肤 + } + break; + case mt\Task::TOTAL_INVITE_FRIEND_TIMES_COND: + { + //邀请好友组队X次 + } + break; + case mt\Task::TOTAL_GIVE_FRIEND_GOLD_COUNT_COND: + { + //赠送X个好友金币 + } + break; + case mt\Task::TOTAL_INVITE_FRIEND_ONLINE_TIMES_COND: + { + //邀请X个好友上线 + } + break; + case mt\Task::TOTAL_CREATE_OR_JOIN_GUILD_COUNT_COND: + { + //创建或加入1个战队 } break; default: diff --git a/webapp/models/Season.php b/webapp/models/Season.php index fcbb49b..d05e3ee 100644 --- a/webapp/models/Season.php +++ b/webapp/models/Season.php @@ -88,4 +88,18 @@ class Season extends BaseModel { ); } + public static function update($fieldsKv) + { + + SqlHelper::update( + myself()->_getSelfMysql(), + 't_season', + array( + 'account_id' => myself()->_getAccountId(), + 'season_id' => $seasonId, + ), + $fieldsKv + ); + } + }