game2006api/webapp/mt/Task.php
hujiabin 7404055ff0 1
2024-09-25 15:26:41 +08:00

228 lines
9.3 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?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;
}