228 lines
9.3 KiB
PHP
228 lines
9.3 KiB
PHP
<?php
|
||
|
||
namespace mt;
|
||
|
||
use phpcommon;
|
||
|
||
class Task {
|
||
|
||
const DAILY_LOGIN_TIMES_COND = 1; //今日登陆
|
||
const PLAYER_LEVEL_COND = 2; //玩家等级达到X
|
||
const TOTAL_BATTLE_TIMES_COND = 3; //进行X场比赛
|
||
const SHARE_GAME_TIMES_COND = 4; //分享1次游戏
|
||
const SINGLE_BATTLE_TIMES_COND = 5; //进行X场单人比赛
|
||
const TEAM_BATTLE_TIMES_COND = 6; //进行X场组队比赛
|
||
const SINGLE_BATTLE_RANK_COND = 7; //单人比赛排名前X
|
||
const TEAM_BATTLE_RANK_COND = 8; //组队比赛排名前X
|
||
const TOTAL_KILL_NUM_COND = 9; //累计击败X个敌人
|
||
const TOTAL_DAMGE_OUT_COND = 10; //累计造成X点伤害
|
||
const RESCUE_TEAMMATE_TIMES_COND = 11; //救援X个队友
|
||
const TOTAL_SURVIVAL_TIME_COND = 12; //累计生存X分钟
|
||
const USE_WEAPON_KILL_NUM_COND = 13; //使用X枪械击杀Y个敌人
|
||
const USE_WEAPON_DAMGE_OUT_COND = 14; //使用X种枪械对敌人累计造成Y点伤害
|
||
const USE_WEAPON_SLOT_TIMES_COND = 15; //使用某个槽位的次数 cond_param1=槽位
|
||
const GET_EQUIP_TIMES_COND = 16; //获得某种类型的装备 cond_param1=equip.type cond_param2=equip.sub_type
|
||
const TOTAL_DIVING_TIMES_COND = 17; //累计潜水X次
|
||
const TOTAL_DAMAGE_IN_COND = 18; //累计受到X点伤害
|
||
const TOTAL_RECOVER_HP_COND = 19; //累计恢复X点血量
|
||
const TOTAL_OPEN_AIRDROP_COND = 20; //累计打开空投补给X次
|
||
const BATTLE_IN_HERO_LV_COND = 21; //单局内英雄技能升级到X级
|
||
const BATTLE_IN_GUN_LV_COND = 22; //单局内英雄专属枪械升到X级
|
||
const TOTAL_MEDICINE_TIMES_COND = 23; //累计使用X药品Y次
|
||
const TOTAL_DESTORY_CAR_TIMES_COND = 24; //累计破坏载具X个
|
||
const TOTAL_USE_CAMOUFLAGE_TIMES_COND = 25; //累计使用X个伪装物
|
||
const TOTAL_USE_SKILL_TIMES_COND = 26; //累计使用X次角色技能
|
||
const RIDE_CAR_MOVE_DISTANCE_COND = 27; //驾驶或乘坐载具累计移动X米(所有模式)
|
||
const RIDE_CAR_KILL_NUM_COND = 28; //驾驶或乘坐载具累计击杀X个敌人(所有模式)
|
||
const LIKE_TEAMMATE_TIMES_COND = 29; //战斗结算中累计给队友点赞X次
|
||
const SEASON_LEVEL_COND = 30; //赛季段位达到X
|
||
const CONSUME_GOLD_COND = 31; //消耗X个金币
|
||
const BATTLE_RANK_COND = 32; //获得X级评价Y次
|
||
const FINISHED_ALL_DAILY_MISSION_COND = 33; //完成所有每日任务
|
||
const SHOP_BUY_TIMES_COND = 34; //在X商店消费Y次
|
||
const TOTAL_UPGRADE_TALENT_LV_COND = 35; //科研升级X次
|
||
const TOTAL_GET_HERO_SKIN_COUNT_COND = 36; //累计获得X个角色时装
|
||
const TOTAL_GET_GUN_SKIN_COUNT_COND = 37; //累计获得X个枪械皮肤
|
||
const TOTAL_INVITE_FRIEND_TIMES_COND = 38; //邀请好友组队X次
|
||
const TOTAL_GIVE_FRIEND_GOLD_COUNT_COND = 40; //赠送X个好友金币
|
||
const TOTAL_INVITE_FRIEND_ONLINE_TIMES_COND = 41; //邀请X个好友上线
|
||
const TOTAL_CREATE_OR_JOIN_GUILD_COUNT_COND = 42; //创建或加入1个战队
|
||
const T1OTAL_CREATE_OR_JOIN_GUILD_COUNT_COND = 43; //段位达到X且进行Y场比赛
|
||
const DAILY_ACTIVE_VALUE_COND = 44; //每日活跃度达到X
|
||
const WEEKLY_ACTIVE_VALUE_COND = 45; //每周活跃度达到X
|
||
const TOTAL_USE_HERO_BATTLE_TIMES_COND = 46; // 使用英雄X进行Y次游戏
|
||
const TOTAL_USE_HERO_SKILL_TIMES_COND = 47; //使用英雄X的技能Y次
|
||
const TOTAL_USE_GRENADE_TIMES_COND = 48; //累积使用X次手雷
|
||
const TOTAL_USE_BURNING_SHOT_TIMES_COND = 49; //累积使用X次燃烧弹
|
||
const TOTAL_USE_HERO_DAMGE_OUT_COND = 50; // 使用英雄X造成Y点伤害
|
||
const TOTAL_USE_HERO_WINS_TIMES_COND = 51; // 使用英雄X获得Y次胜利
|
||
const TOTAL_USE_HERO_KILLS_COND = 52; // 使用英雄X击败Y个敌人
|
||
const TOTAL_USE_MAP_WINS_TIMES_COND = 53; // 在XX地图获得Y场胜利
|
||
const TOTAL_INVITATION_PEOPLE_COUNT_COND = 55; // 邀请新人并绑定邀请码(邀请新人数)
|
||
const OFFER_REWARD_COND = 99;
|
||
|
||
const DAILY_MISSON_TYPE = 1;
|
||
const ACHIEVEMENT_MISSON_TYPE = 2;
|
||
const ACTIVITY_MISSON_TYPE = 3;
|
||
const RANK_MISSON_TYPE = 4;
|
||
const SEASONCARD_MISSON_TYPE = 5;
|
||
const OFFER_REWARD_MISSON_TYPE = 7;
|
||
const NEW_USER_MISSON_TYPE = 10;
|
||
|
||
const SEASON_WEAKLY_MISSON_SUBTYPE = 1;
|
||
const SEASON_CHALLENGE_MISSON_SUBTYPE = 2;
|
||
const SEASON_ACTIVE_MISSON_SUBTYPE = 3;
|
||
|
||
const DAILY_ACTIVE_VALUE_MISSON_SUBTYPE = 1;
|
||
const WEAKLY_ACTIVE_VALUE_MISSON_SUBTYPE = 2;
|
||
|
||
const SEASON_MISSON_FLAG = 1;
|
||
|
||
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();
|
||
|
||
switch ($type){
|
||
case 0 :{
|
||
foreach ($missionService->getDailyMissions() as $mission) {
|
||
$meta = self::get($mission['mission_id']);
|
||
if ($meta) {
|
||
array_push($metaList, $meta);
|
||
}
|
||
}
|
||
}
|
||
break;
|
||
case self::DAILY_MISSON_TYPE : {
|
||
foreach ($missionService->getDailyMissions() as $mission) {
|
||
$meta = self::get($mission['mission_id']);
|
||
if ($meta) {
|
||
array_push($metaList, $meta);
|
||
}
|
||
}
|
||
foreach (self::getMetaList() as $meta) {
|
||
if ($meta['type'] == self::DAILY_MISSON_TYPE &&
|
||
in_array($meta['subtype'],
|
||
array(
|
||
self::DAILY_ACTIVE_VALUE_MISSON_SUBTYPE,
|
||
self::WEAKLY_ACTIVE_VALUE_MISSON_SUBTYPE
|
||
))) {
|
||
array_push($metaList, $meta);
|
||
}
|
||
}
|
||
}
|
||
break;
|
||
case self::OFFER_REWARD_MISSION_CUSTOM_TYPE:{
|
||
foreach ($missionService->getOfferRewardMissions() as $mission) {
|
||
$meta = self::get($mission['mission_id']);
|
||
if ($meta && $meta['type'] == self::OFFER_REWARD_MISSON_TYPE) {
|
||
array_push($metaList, $meta);
|
||
}
|
||
}
|
||
}
|
||
break;
|
||
case self::NEW_USER_MISSON_TYPE:{
|
||
foreach (self::getMetaList() as $meta) {
|
||
if ($meta['type'] == self::NEW_USER_MISSON_TYPE) {
|
||
array_push($metaList, $meta);
|
||
}
|
||
}
|
||
}
|
||
break;
|
||
}
|
||
return $metaList;
|
||
}
|
||
|
||
public static function isOfferRewardMission($meta)
|
||
{
|
||
return $meta['type'] == self::OFFER_REWARD_MISSION_CUSTOM_TYPE;
|
||
}
|
||
|
||
public static function getOfferRewardMissions($excludeMetas)
|
||
{
|
||
$maxHeroQuality = myself()->_getV(TN_HERO_MAX_QUALITY, 0, 1);
|
||
$metas = array();
|
||
foreach (self::getMetaList() as $meta) {
|
||
if ($meta['type'] == self::OFFER_REWARD_MISSON_TYPE) {
|
||
if ( $meta['param1'] <= $maxHeroQuality) {
|
||
if (!array_find($excludeMetas, function($val) use($meta) {
|
||
return $val['mission_id'] == $meta['id'];
|
||
})) {
|
||
array_push($metas, $meta);
|
||
}
|
||
}
|
||
}
|
||
}
|
||
return $metas;
|
||
}
|
||
public static function getDaildyMission()
|
||
{
|
||
$metas = array();
|
||
foreach (self::getMetaList() as $meta) {
|
||
if ($meta['type'] == self::DAILY_MISSON_TYPE) {
|
||
if (!in_array($meta['subtype'],
|
||
array(
|
||
self::DAILY_ACTIVE_VALUE_MISSON_SUBTYPE,
|
||
self::WEAKLY_ACTIVE_VALUE_MISSON_SUBTYPE
|
||
))) {
|
||
array_push($metas, $meta);
|
||
}
|
||
}
|
||
}
|
||
|
||
|
||
return $metas;
|
||
}
|
||
|
||
public static function getDaildyMissionCount()
|
||
{
|
||
if (is_null(self::$dailyMissionCount)) {
|
||
self::$dailyMissionCount = 0;
|
||
foreach (self::getMetaList() as $meta) {
|
||
if ($meta['type'] == self::DAILY_MISSON_TYPE) {
|
||
if ($meta['subtype'] !=
|
||
self::WEAKLY_ACTIVE_VALUE_MISSON_SUBTYPE) {
|
||
++self::$dailyMissionCount;
|
||
}
|
||
}
|
||
}
|
||
|
||
}
|
||
return self::$dailyMissionCount;
|
||
}
|
||
|
||
protected static function getMetaList()
|
||
{
|
||
if (!self::$metaList) {
|
||
self::$metaList = getMetaTable('task@task.php');
|
||
}
|
||
return self::$metaList;
|
||
}
|
||
|
||
protected static $metaList;
|
||
protected static $dailyMissionCount = null;
|
||
|
||
}
|