任务:按条件开启任务

This commit is contained in:
luying
2021-04-19 13:17:18 +08:00
parent 260744e7d2
commit dd6c3355c3
32 changed files with 296 additions and 195 deletions
@@ -25,7 +25,7 @@ import { pushComBtlTeamMsg, pushFriendTeamInviteMsg, pushNormalItemMsg, pushTeam
import { EXTERIOR } from '../../../pubUtils/dicParam'; import { EXTERIOR } from '../../../pubUtils/dicParam';
import { getTodayZeroDate } from '../../../pubUtils/timeUtil'; import { getTodayZeroDate } from '../../../pubUtils/timeUtil';
import { FriendParams } from '../../../domain/roleField/friend'; import { FriendParams } from '../../../domain/roleField/friend';
import { checkTask } from '../../../services/taskService'; import { checkTask, checkTaskWithGoods } from '../../../services/taskService';
export default function(app: Application) { export default function(app: Application) {
return new ComBattleHandler(app); return new ComBattleHandler(app);
@@ -533,6 +533,7 @@ export class ComBattleHandler {
let roleId = session.get('roleId'); let roleId = session.get('roleId');
let roleName = session.get('roleName'); let roleName = session.get('roleName');
let sid = session.get('sid'); let sid = session.get('sid');
const funcs: number[] = session.get('funcs');
let { teamCode } = msg; let { teamCode } = msg;
let team = await ComBattleTeamModel.getTeamByCode(teamCode); let team = await ComBattleTeamModel.getTeamByCode(teamCode);
clearRobotHurtTimer(team, this.robotHurtTimer); clearRobotHurtTimer(team, this.robotHurtTimer);
@@ -553,7 +554,7 @@ export class ComBattleHandler {
} }
const now = Date.now(); // 当前时间戳 const now = Date.now(); // 当前时间戳
let apJson = await setAp(now, roleId, sid, -1 * warInfo.cost); // 扣除体力 let apJson = await setAp(now, roleId, sid, funcs, -1 * warInfo.cost); // 扣除体力
if(!apJson) { if(!apJson) {
return resResult(STATUS.BATTLE_ACTION_POINT_LACK); return resResult(STATUS.BATTLE_ACTION_POINT_LACK);
} }
@@ -570,7 +571,7 @@ export class ComBattleHandler {
const goods = await handleFixedReward(roleId, roleName, sid, roleSt.fixReward, 1); const goods = await handleFixedReward(roleId, roleName, sid, roleSt.fixReward, 1);
let actordata = await roleLevelup(roleId, warInfo.kingExp, session);// 主公升级经验 let actordata = await roleLevelup(roleId, warInfo.kingExp, session);// 主公升级经验
// 任务 // 任务
await checkTaskWithGoods(roleId, sid, funcs, TASK_TYPE.COM_BATTLE_DROP, goods);
return resResult(STATUS.SUCCESS, { battleGoods: goods, ...actordata, teamInfo: {status, teamCode, roleStatus, bossHpArr} }); return resResult(STATUS.SUCCESS, { battleGoods: goods, ...actordata, teamInfo: {status, teamCode, roleStatus, bossHpArr} });
} }
@@ -741,6 +742,7 @@ export class ComBattleHandler {
const roleName = session.get('roleName'); const roleName = session.get('roleName');
const sid = session.get('sid'); const sid = session.get('sid');
const serverId = session.get('serverId'); const serverId = session.get('serverId');
const funcs: number[] = session.get('funcs');
const { original } = msg; const { original } = msg;
@@ -783,7 +785,7 @@ export class ComBattleHandler {
const { name } = getGoodById(target); const { name } = getGoodById(target);
pushNormalItemMsg(roleId, roleName, serverId, MSG_SOURCE.ORANGE_BLUEPRT_COMPOSE, target, name); pushNormalItemMsg(roleId, roleName, serverId, MSG_SOURCE.ORANGE_BLUEPRT_COMPOSE, target, name);
} }
await checkTask(roleId, sid, TASK_TYPE.COM_BATTLE_BLUEPRT, 1, true, { quality: dicCompose.targetQuality }); await checkTask(roleId, sid, funcs, TASK_TYPE.COM_BATTLE_BLUEPRT, 1, true, { quality: dicCompose.targetQuality });
return resResult(STATUS.SUCCESS, { goods, costGold: 0 }); return resResult(STATUS.SUCCESS, { goods, costGold: 0 });
} }
@@ -48,6 +48,7 @@ export class DonationHandler {
const roleName: string = session.get('roleName'); const roleName: string = session.get('roleName');
const serverId: number = parseInt(session.get('serverId')); const serverId: number = parseInt(session.get('serverId'));
const sid: string = session.get('sid'); const sid: string = session.get('sid');
const funcs: number[] = session.get('funcs');
let userGuild = await getUserGuildWithRefActive(roleId, 'donateCnt receiveBoxs guildCode'); let userGuild = await getUserGuildWithRefActive(roleId, 'donateCnt receiveBoxs guildCode');
if (!userGuild) if (!userGuild)
return resResult(STATUS.WRONG_PARMS); return resResult(STATUS.WRONG_PARMS);
@@ -71,7 +72,7 @@ export class DonationHandler {
this.app.rpc.chat.guildRemote.updateInfo.toServer(CHAT_SERVER, code, { fund }); this.app.rpc.chat.guildRemote.updateInfo.toServer(CHAT_SERVER, code, { fund });
await addActive(roleId, serverId, GUILD_POINT_WAYS.DONATE, id); await addActive(roleId, serverId, GUILD_POINT_WAYS.DONATE, id);
// 任务 // 任务
await checkTask(roleId, sid, TASK_TYPE.GUILD_DONATE, 1, true, {}); await checkTask(roleId, sid, funcs, TASK_TYPE.GUILD_DONATE, 1, true, {});
return resResult(STATUS.SUCCESS, { donateFund, reports, donateCnt, goods }); return resResult(STATUS.SUCCESS, { donateFund, reports, donateCnt, goods });
} }
@@ -80,6 +80,7 @@ export class EventBattleHandler {
let roleName = session.get('roleName'); let roleName = session.get('roleName');
let eventStatus = session.get('eventStatus'); let eventStatus = session.get('eventStatus');
let sid = session.get('sid'); let sid = session.get('sid');
const funcs: number[] = session.get('funcs');
let event = await EventRecordModel.getEventRecordByCode(roleId, eventCode); let event = await EventRecordModel.getEventRecordByCode(roleId, eventCode);
if(!event) { if(!event) {
@@ -120,7 +121,7 @@ export class EventBattleHandler {
// 推送消息刷新 // 推送消息刷新
await checkEvent(session, true); await checkEvent(session, true);
// 任务 // 任务
await checkTask(roleId, sid, TASK_TYPE.BATTLE_EVENT, 1, true, { eventType: dicEvent.eventType }) await checkTask(roleId, sid, funcs, TASK_TYPE.BATTLE_EVENT, 1, true, { eventType: dicEvent.eventType })
return resResult(STATUS.SUCCESS, { return resResult(STATUS.SUCCESS, {
isSuccess, isSuccess,
eventCode: result.eventCode, eventCode: result.eventCode,
@@ -212,6 +212,7 @@ export class ExpeditionBattleHandler {
let roleId = session.get('roleId'); let roleId = session.get('roleId');
let roleName = session.get('roleName'); let roleName = session.get('roleName');
let sid = session.get('sid'); let sid = session.get('sid');
let funcs: number[] = session.get('funcs');
let warInfo = getWarById(battleId); let warInfo = getWarById(battleId);
if(!warInfo) { if(!warInfo) {
@@ -236,7 +237,7 @@ export class ExpeditionBattleHandler {
} }
const now = Date.now(); // 当前时间戳 const now = Date.now(); // 当前时间戳
let apJson = await setAp(now, roleId, sid, -1 * warInfo.cost); // 扣除体力 let apJson = await setAp(now, roleId, sid, funcs, -1 * warInfo.cost); // 扣除体力
if(!apJson) { if(!apJson) {
return resResult(STATUS.BATTLE_ACTION_POINT_LACK); return resResult(STATUS.BATTLE_ACTION_POINT_LACK);
} }
@@ -269,7 +270,7 @@ export class ExpeditionBattleHandler {
// 更新下一关状态 // 更新下一关状态
await ExpeditionWarRecordModel.updateStatus(expeditionCode, expeditionId + 1, EXPEDITION_WAR_RECORD_STATUS.WAITING); await ExpeditionWarRecordModel.updateStatus(expeditionCode, expeditionId + 1, EXPEDITION_WAR_RECORD_STATUS.WAITING);
} }
await checkTaskWithWar(roleId, sid, TASK_TYPE.BATTLE_WITH_HERO, battleId, dbHeroes, 1, star); await checkTaskWithWar(roleId, sid, funcs, TASK_TYPE.BATTLE_WITH_HERO, battleId, dbHeroes, 1, star);
return resResult(STATUS.SUCCESS, { return resResult(STATUS.SUCCESS, {
expeditionCode, expeditionId, expeditionCode, expeditionId,
@@ -292,6 +293,7 @@ export class ExpeditionBattleHandler {
let roleId = session.get('roleId'); let roleId = session.get('roleId');
let roleName = session.get('roleName'); let roleName = session.get('roleName');
let sid = session.get('sid'); let sid = session.get('sid');
const funcs: number[] = session.get('funcs');
let role = await RoleModel.findByRoleId(roleId); let role = await RoleModel.findByRoleId(roleId);
let {expeditionPoint} = role; let {expeditionPoint} = role;
@@ -330,7 +332,7 @@ export class ExpeditionBattleHandler {
let pointRewards = await getPointRewardStatus(roleId); let pointRewards = await getPointRewardStatus(roleId);
// 任务 // 任务
await checkTask(roleId, sid, TASK_TYPE.BATTLE_EXPEDITION_BOX, 1, true, { point }); await checkTask(roleId, sid, funcs, TASK_TYPE.BATTLE_EXPEDITION_BOX, 1, true, { point });
let goods = await handleFixedReward(roleId, roleName, sid, curDicExpeditionPoint.reward, 1); let goods = await handleFixedReward(roleId, roleName, sid, curDicExpeditionPoint.reward, 1);
@@ -168,6 +168,7 @@ export class GuildHandler {
const { battleCode } = msg; const { battleCode } = msg;
const roleId = session.get('roleId'); const roleId = session.get('roleId');
const sid = session.get('sid'); const sid = session.get('sid');
const funcs: number[] = session.get('funcs');
const serverId: number = parseInt(session.get('serverId')); const serverId: number = parseInt(session.get('serverId'));
let userGuild = await UserGuildModel.getMyGuild(roleId, 'guildCode'); let userGuild = await UserGuildModel.getMyGuild(roleId, 'guildCode');
if (!userGuild) if (!userGuild)
@@ -184,7 +185,7 @@ export class GuildHandler {
let result = await getBossInstanceWhenEnd(bossInstance, roleId, battleRecord.record.recordNum); let result = await getBossInstanceWhenEnd(bossInstance, roleId, battleRecord.record.recordNum);
await addActive(roleId, serverId, GUILD_POINT_WAYS.BOSS_WAR);//获得活跃值 await addActive(roleId, serverId, GUILD_POINT_WAYS.BOSS_WAR);//获得活跃值
// 任务 // 任务
await checkTask(roleId, sid, TASK_TYPE.GUILD_BOSS, 1, true, {}); await checkTask(roleId, sid, funcs, TASK_TYPE.GUILD_BOSS, 1, true, {});
return resResult(STATUS.SUCCESS, result); return resResult(STATUS.SUCCESS, result);
} }
@@ -888,6 +888,7 @@ export class GuildHandler {
const roleName = session.get('roleName'); const roleName = session.get('roleName');
const sid = session.get('sid'); const sid = session.get('sid');
const serverId = session.get('serverId'); const serverId = session.get('serverId');
const funcs: number[] = session.get('funcs');
const { code, id } = msg; const { code, id } = msg;
let userGuild = await getUserGuildWithRefActive(roleId, 'receivedActive auth guildCode'); let userGuild = await getUserGuildWithRefActive(roleId, 'receivedActive auth guildCode');
@@ -915,7 +916,7 @@ export class GuildHandler {
userGuild = await UserGuildModel.updateInfo(roleId, { receivedActive: userGuild.receivedActive }, {}, 'receivedActive'); userGuild = await UserGuildModel.updateInfo(roleId, { receivedActive: userGuild.receivedActive }, {}, 'receivedActive');
// 任务 // 任务
await checkTask(roleId, sid, TASK_TYPE.GUILD_RECEIVE_BOX, 1, true, {}); await checkTask(roleId, sid, funcs, TASK_TYPE.GUILD_RECEIVE_BOX, 1, true, {});
return resResult(STATUS.SUCCESS, { goods, receivedActive: userGuild.receivedActive }); return resResult(STATUS.SUCCESS, { goods, receivedActive: userGuild.receivedActive });
} }
@@ -51,6 +51,7 @@ export class GuildRefineHandler {
const roleId: string = session.get('roleId'); const roleId: string = session.get('roleId');
const sid: string = session.get('sid'); const sid: string = session.get('sid');
const roleName: string = session.get('roleName'); const roleName: string = session.get('roleName');
const funcs: number[] = session.get('funcs');
let pieceInfo = getGoodById(pid); let pieceInfo = getGoodById(pid);
let userGuild = await UserGuildModel.getMyGuild(roleId, 'guildCode'); let userGuild = await UserGuildModel.getMyGuild(roleId, 'guildCode');
if (!userGuild) if (!userGuild)
@@ -77,7 +78,7 @@ export class GuildRefineHandler {
let goods = await addItems(roleId, roleName, sid, [{id: pid, count: 1}]); let goods = await addItems(roleId, roleName, sid, [{id: pid, count: 1}]);
// 任务 // 任务
await checkTask(roleId, sid, TASK_TYPE.GUILD_REFINE, 1, true, { quality: pieceInfo.lvLimited }); await checkTask(roleId, sid, funcs, TASK_TYPE.GUILD_REFINE, 1, true, { quality: pieceInfo.lvLimited });
return resResult(STATUS.SUCCESS, { goods }); return resResult(STATUS.SUCCESS, { goods });
} }
/** /**
@@ -143,6 +144,7 @@ export class GuildRefineHandler {
const roleId: string = session.get('roleId'); const roleId: string = session.get('roleId');
const serverId: number = session.get('serverId'); const serverId: number = session.get('serverId');
const sid: string = session.get('sid'); const sid: string = session.get('sid');
const funcs: number[] = session.get('funcs');
let userGuild = await UserGuildModel.getMyGuild(roleId, 'guildCode'); let userGuild = await UserGuildModel.getMyGuild(roleId, 'guildCode');
if (!userGuild) if (!userGuild)
return resResult(STATUS.WRONG_PARMS); return resResult(STATUS.WRONG_PARMS);
@@ -177,7 +179,7 @@ export class GuildRefineHandler {
res.releaseCallback(); res.releaseCallback();
// 任务 // 任务
await checkTask(roleId, sid, TASK_TYPE.GUILD_ASSIST_REFINE, 1, true, {}); await checkTask(roleId, sid, funcs, TASK_TYPE.GUILD_ASSIST_REFINE, 1, true, {});
return resResult(STATUS.SUCCESS, { scienceTrees }); return resResult(STATUS.SUCCESS, { scienceTrees });
} }
@@ -156,6 +156,7 @@ export class GuildTrainHandler {
const serverId: number = parseInt(session.get('serverId')); const serverId: number = parseInt(session.get('serverId'));
const roleName: string = session.get('roleName'); const roleName: string = session.get('roleName');
const sid: string = session.get('sid'); const sid: string = session.get('sid');
const funcs: number[] = session.get('funcs');
let userGuild = await getUserGuild(roleId, serverId); let userGuild = await getUserGuild(roleId, serverId);
if (!userGuild) if (!userGuild)
return resResult(STATUS.WRONG_PARMS); return resResult(STATUS.WRONG_PARMS);
@@ -264,9 +265,9 @@ export class GuildTrainHandler {
// 任务 // 任务
if(isSuccess) { if(isSuccess) {
await checkTask(roleId, sid, TASK_TYPE.GUILD_TRAIN_SUCESS, 1, true, {}); await checkTask(roleId, sid, funcs, TASK_TYPE.GUILD_TRAIN_SUCESS, 1, true, {});
} }
await checkTask(roleId, sid, TASK_TYPE.GUILD_TRAIN, 1, true, {}); await checkTask(roleId, sid, funcs, TASK_TYPE.GUILD_TRAIN, 1, true, {});
return resResult(STATUS.SUCCESS, result); return resResult(STATUS.SUCCESS, result);
} }
@@ -160,6 +160,7 @@ export class NormalBattleHandler {
let roleId = session.get('roleId'); let roleId = session.get('roleId');
let roleName = session.get('roleName'); let roleName = session.get('roleName');
let sid = session.get('sid'); let sid = session.get('sid');
const funcs: number[] = session.get('funcs');
let serverId = session.get('serverId'); let serverId = session.get('serverId');
let warInfo = gameData.war.get(battleId); let warInfo = gameData.war.get(battleId);
if(!warInfo) { if(!warInfo) {
@@ -185,7 +186,7 @@ export class NormalBattleHandler {
} }
const now = Date.now(); // 当前时间戳 const now = Date.now(); // 当前时间戳
let apJson = await setAp(now, roleId, sid, -1 * warInfo.cost); // 扣除体力 let apJson = await setAp(now, roleId, sid, funcs, -1 * warInfo.cost); // 扣除体力
if(!apJson) { if(!apJson) {
return resResult(STATUS.BATTLE_ACTION_POINT_LACK); return resResult(STATUS.BATTLE_ACTION_POINT_LACK);
} }
@@ -206,7 +207,7 @@ export class NormalBattleHandler {
// 记录事件状态 // 记录事件状态
await setBattleStatus(session, roleId, battleId, isSuccess, battleCode); await setBattleStatus(session, roleId, battleId, isSuccess, battleCode);
} else if (warInfo.warType == WAR_TYPE.TOWER) { } else if (warInfo.warType == WAR_TYPE.TOWER) {
let towerEndResult = await towerBattleEnd(sid, roleId, serverId, battleCode, battleId, isSuccess, heroes); let towerEndResult = await towerBattleEnd(sid, funcs, roleId, serverId, battleCode, battleId, isSuccess, heroes);
if(towerEndResult) { if(towerEndResult) {
if(towerEndResult.status == -1) { if(towerEndResult.status == -1) {
return towerEndResult.resResult; return towerEndResult.resResult;
@@ -269,7 +270,7 @@ export class NormalBattleHandler {
let actordata = await roleLevelup(roleId, isSuccess?warInfo.kingExp:0, session);// 主公升级经验 let actordata = await roleLevelup(roleId, isSuccess?warInfo.kingExp:0, session);// 主公升级经验
await checkTaskInBattleEnd(roleId, sid, battleId, dbHeroes, star); await checkTaskInBattleEnd(roleId, sid, funcs, battleId, dbHeroes, star);
// 返回值: // 返回值:
// towerStatus: false-本层未通过, true-本层已通过 // towerStatus: false-本层未通过, true-本层已通过
return resResult(STATUS.SUCCESS, { return resResult(STATUS.SUCCESS, {
@@ -287,6 +288,7 @@ export class NormalBattleHandler {
let roleId = session.get('roleId'); let roleId = session.get('roleId');
let roleName = session.get('roleName'); let roleName = session.get('roleName');
let sid = session.get('sid'); let sid = session.get('sid');
let funcs: number[] = session.get('funcs');
let warInfo = getWarById(battleId); let warInfo = getWarById(battleId);
if(!warInfo) { if(!warInfo) {
return resResult(STATUS.BATTLE_MISS_INFO); return resResult(STATUS.BATTLE_MISS_INFO);
@@ -303,7 +305,7 @@ export class NormalBattleHandler {
warInfo['cost'] = 0; warInfo['cost'] = 0;
} }
const now = Date.now(); // 当前时间戳 const now = Date.now(); // 当前时间戳
let apJson = await setAp(now, roleId, sid, -1 * warInfo.cost * count); // 扣除体力 let apJson = await setAp(now, roleId, sid, funcs, -1 * warInfo.cost * count); // 扣除体力
if(!apJson) { if(!apJson) {
return resResult(STATUS.BATTLE_ACTION_POINT_LACK); return resResult(STATUS.BATTLE_ACTION_POINT_LACK);
} }
@@ -342,7 +344,7 @@ export class NormalBattleHandler {
}); });
// 任务 // 任务
await checkTaskWithWar(roleId, sid, TASK_TYPE.BATTLE_MAIN_SWEEP, warInfo, [], count, 0); await checkTaskWithWar(roleId, sid, funcs, TASK_TYPE.BATTLE_MAIN_SWEEP, warInfo, [], count, 0);
return resResult(STATUS.SUCCESS, { return resResult(STATUS.SUCCESS, {
battleId, count, battleId, count,
@@ -37,6 +37,7 @@ export class PvpHandler {
let { heroScores: addHeroScores } = msg; let { heroScores: addHeroScores } = msg;
let roleId = session.get('roleId'); let roleId = session.get('roleId');
let sid = session.get('sid'); let sid = session.get('sid');
const funcs: number[] = session.get('funcs');
let {heroScores, hisScore} = await PvpDefenseModel.findByRoleId(roleId); let {heroScores, hisScore} = await PvpDefenseModel.findByRoleId(roleId);
let score = 0; let score = 0;
for (let {hid, score: heroScore} of addHeroScores) { for (let {hid, score: heroScore} of addHeroScores) {
@@ -67,7 +68,7 @@ export class PvpHandler {
await r.setRankWithRoleInfo(roleId, pvpDefense.score, pvpDefense.updatedAt.getTime(), role); await r.setRankWithRoleInfo(roleId, pvpDefense.score, pvpDefense.updatedAt.getTime(), role);
// 任务 // 任务
await checkTask(roleId, sid, TASK_TYPE.PVP_HERO_SCORE, 0, false, { heroScores }); await checkTask(roleId, sid, funcs, TASK_TYPE.PVP_HERO_SCORE, 0, false, { heroScores });
return resResult(STATUS.SUCCESS, {score, hisScore, heroScores}); return resResult(STATUS.SUCCESS, {score, hisScore, heroScores});
} }
@@ -228,6 +229,7 @@ export class PvpHandler {
let roleId = session.get('roleId'); let roleId = session.get('roleId');
let roleName = session.get('roleName'); let roleName = session.get('roleName');
let sid = session.get('sid'); let sid = session.get('sid');
const funcs: number[] = session.get('funcs');
const { battleCode, isSuccess, myHeroes, oppHeroes } = msg; const { battleCode, isSuccess, myHeroes, oppHeroes } = msg;
@@ -295,7 +297,7 @@ export class PvpHandler {
await r.setRankWithRoleInfo(roleId, pvpDefense.score, pvpDefense.updatedAt.getTime(), role); await r.setRankWithRoleInfo(roleId, pvpDefense.score, pvpDefense.updatedAt.getTime(), role);
let myRank = await r.getMyRank({roleId}); let myRank = await r.getMyRank({roleId});
await checkTaskInPvpEnd(roleId, sid, isSuccess, heroScores); await checkTaskInPvpEnd(roleId, sid, funcs, isSuccess, heroScores);
return resResult(STATUS.SUCCESS, { return resResult(STATUS.SUCCESS, {
battleCode, isSuccess, battleCode, isSuccess,
@@ -464,6 +466,7 @@ export class PvpHandler {
let roleId = session.get('roleId'); let roleId = session.get('roleId');
let sid: string = session.get('sid'); let sid: string = session.get('sid');
let roleName = session.get('roleName'); let roleName = session.get('roleName');
const funcs: number[] = session.get('funcs');
let { seasonEndTime } = await SystemConfigModel.findSystemConfig(); let { seasonEndTime } = await SystemConfigModel.findSystemConfig();
let { hisScore, receivedBox, challengeCnt: lastChallengeCnt, challengeRefTime: lastChallengeRefTime } = await PvpDefenseModel.findByRoleIdIncludeAll(roleId); let { hisScore, receivedBox, challengeCnt: lastChallengeCnt, challengeRefTime: lastChallengeRefTime } = await PvpDefenseModel.findByRoleIdIncludeAll(roleId);
let pvpBoxs = getPvpBoxs(); let pvpBoxs = getPvpBoxs();
@@ -479,7 +482,7 @@ export class PvpHandler {
await PvpDefenseModel.updateInfo(roleId, {receivedBox, challengeCnt, challengeRefTime}); await PvpDefenseModel.updateInfo(roleId, {receivedBox, challengeCnt, challengeRefTime});
let result = await addItems(roleId, roleName, sid, pvpBox.reward ); let result = await addItems(roleId, roleName, sid, pvpBox.reward );
// 任务 // 任务
await checkTask(roleId, sid, TASK_TYPE.PVP_RECEIVE_BOX, 1, true, {}); await checkTask(roleId, sid, funcs, TASK_TYPE.PVP_RECEIVE_BOX, 1, true, {});
return resResult(STATUS.SUCCESS,{goods: result, receivedBox, challengeCnt, challengeRefTime}); return resResult(STATUS.SUCCESS,{goods: result, receivedBox, challengeCnt, challengeRefTime});
} }
@@ -87,6 +87,7 @@ export class ChatHandler {
const roleName = session.get('roleName'); const roleName = session.get('roleName');
const serverId = session.get('serverId'); const serverId = session.get('serverId');
const guildCode = session.get('guildCode'); const guildCode = session.get('guildCode');
const funcs: number[] = session.get('funcs');
const sid = session.get('guildCode'); const sid = session.get('guildCode');
let channelId = ''; let channelId = '';
if (channel === CHANNEL_PREFIX.WORLD) channelId = `${serverId}`; if (channel === CHANNEL_PREFIX.WORLD) channelId = `${serverId}`;
@@ -96,7 +97,7 @@ export class ChatHandler {
if (!msgData) return resResult(STATUS.WRONG_PARMS); if (!msgData) return resResult(STATUS.WRONG_PARMS);
await pushGroupMsgToRoom(msgData); await pushGroupMsgToRoom(msgData);
// 任务 // 任务
await checkTaskWithArgs(roleId, sid, TASK_TYPE.CHAT, [ CHANNEL_TYPE.get(channel) ]); await checkTaskWithArgs(roleId, sid, funcs, TASK_TYPE.CHAT, [ CHANNEL_TYPE.get(channel) ]);
return resResult(STATUS.SUCCESS); return resResult(STATUS.SUCCESS);
} }
@@ -110,13 +111,14 @@ export class ChatHandler {
const { type, content, targetRoleId, targetMsgCode } = msg; const { type, content, targetRoleId, targetMsgCode } = msg;
const roleId = session.get('roleId'); const roleId = session.get('roleId');
const roleName = session.get('roleName'); const roleName = session.get('roleName');
const funcs: number[] = session.get('funcs');
const sid = session.get('sid'); const sid = session.get('sid');
const msgData = await createPrivateMsg(roleId, roleName, type, MSG_SOURCE.ROLE_SEND_TEXT, content, targetRoleId, targetMsgCode); const msgData = await createPrivateMsg(roleId, roleName, type, MSG_SOURCE.ROLE_SEND_TEXT, content, targetRoleId, targetMsgCode);
await pushMsgToRole(msgData); await pushMsgToRole(msgData);
if (!msgData) return resResult(STATUS.WRONG_PARMS); if (!msgData) return resResult(STATUS.WRONG_PARMS);
// 任务 // 任务
await checkTaskWithArgs(roleId, sid, TASK_TYPE.CHAT, [ CHANNEL_TYPE.get('private') ]); await checkTaskWithArgs(roleId, sid, funcs, TASK_TYPE.CHAT, [ CHANNEL_TYPE.get('private') ]);
return resResult(STATUS.SUCCESS, msgData); return resResult(STATUS.SUCCESS, msgData);
} }
@@ -58,7 +58,7 @@ export class EntryHandler {
await self.app.rpc.connector.connectorRemote.remoteLogin.toServer(connect.sid, role.roleId); await self.app.rpc.connector.connectorRemote.remoteLogin.toServer(connect.sid, role.roleId);
} }
let serverName = this.app.getServerId(); let serverName = this.app.getServerId();
await roleLogin(role.roleId, user.userCode, serverName, user.pkgName); // 保存在线用户 await roleLogin(role.roleId, user.userCode, serverName, user.pkgName, role.funcs||[]); // 保存在线用户
await session.abind(role.roleId); await session.abind(role.roleId);
session.set('uid', role.roleId); session.set('uid', role.roleId);
session.set('roleId', role.roleId); session.set('roleId', role.roleId);
@@ -112,8 +112,8 @@ export class EntryHandler {
r2.setRankWithRoleInfo(role.roleId, role.lv, role.updatedAt.getTime(), role); r2.setRankWithRoleInfo(role.roleId, role.lv, role.updatedAt.getTime(), role);
// 任务 // 任务
checkTaskWithRole(role.roleId, self.app.get('serverId'), TASK_TYPE.LOGIN_SUM, role); checkTaskWithRole(role.roleId, self.app.get('serverId'), role.funcs, TASK_TYPE.LOGIN_SUM, role);
checkTaskWithRole(role.roleId, self.app.get('serverId'), TASK_TYPE.LOGIN_SERIES, role); checkTaskWithRole(role.roleId, self.app.get('serverId'), role.funcs, TASK_TYPE.LOGIN_SERIES, role);
role['heros'] = heros; role['heros'] = heros;
role['equips'] = equips; role['equips'] = equips;
@@ -265,6 +265,7 @@ export class CityActivityHandler {
let sid = session.get('sid'); let sid = session.get('sid');
let guildCode = session.get('guildCode'); let guildCode = session.get('guildCode');
let serverId = session.get('serverId'); let serverId = session.get('serverId');
const funcs: number[] = session.get('funcs');
let { cityId, code, isSuccess } = msg; let { cityId, code, isSuccess } = msg;
let obj = getCityActivityObj(); let obj = getCityActivityObj();
@@ -290,7 +291,7 @@ export class CityActivityHandler {
let gateHp = obj.getGateHpAndInc(serverId, cityId, dicCity.hp); let gateHp = obj.getGateHpAndInc(serverId, cityId, dicCity.hp);
// 任务 // 任务
await checkTask(roleId, sid, TASK_TYPE.GUILD_ACTIVITY, 1, true, { aid: this.aid }); await checkTask(roleId, sid, funcs, TASK_TYPE.GUILD_ACTIVITY, 1, true, { aid: this.aid });
return resResult(STATUS.SUCCESS, { return resResult(STATUS.SUCCESS, {
isSuccess, isSuccess,
@@ -205,6 +205,7 @@ export class GateActivityHandler {
let sid = session.get('sid'); let sid = session.get('sid');
let guildCode = session.get('guildCode'); let guildCode = session.get('guildCode');
let serverId = session.get('serverId'); let serverId = session.get('serverId');
const funcs: number[] = session.get('funcs');
let { code, isSuccess } = msg; let { code, isSuccess } = msg;
let obj = getGateActivityObj(); let obj = getGateActivityObj();
@@ -254,7 +255,7 @@ export class GateActivityHandler {
} }
// 任务 // 任务
await checkTask(roleId, sid, TASK_TYPE.GUILD_ACTIVITY, 1, true, { aid: this.aid }); await checkTask(roleId, sid, funcs, TASK_TYPE.GUILD_ACTIVITY, 1, true, { aid: this.aid });
return resResult(STATUS.SUCCESS, { return resResult(STATUS.SUCCESS, {
code, code,
...statusResult, ...statusResult,
@@ -157,6 +157,7 @@ export class RaceActivityHandler {
let sid = session.get('sid'); let sid = session.get('sid');
let guildCode = session.get('guildCode'); let guildCode = session.get('guildCode');
let serverId = session.get('serverId'); let serverId = session.get('serverId');
const funcs: number[] = session.get('funcs');
let { code, isSuccess } = msg; let { code, isSuccess } = msg;
@@ -175,7 +176,7 @@ export class RaceActivityHandler {
let myGuildRank = await r.getMyRank({guildCode}); let myGuildRank = await r.getMyRank({guildCode});
// 任务 // 任务
await checkTask(roleId, sid, TASK_TYPE.GUILD_ACTIVITY, 1, true, { aid: this.aid }); await checkTask(roleId, sid, funcs, TASK_TYPE.GUILD_ACTIVITY, 1, true, { aid: this.aid });
return resResult(STATUS.SUCCESS, { return resResult(STATUS.SUCCESS, {
timestamp: Date.now(), timestamp: Date.now(),
woodenHorse: guildActivityRec.woodenHorse, woodenHorse: guildActivityRec.woodenHorse,
@@ -92,6 +92,7 @@ export class EquipHandler {
let roleId: string = session.get('roleId'); let roleId: string = session.get('roleId');
// let roleName: string = session.get('roleName'); // let roleName: string = session.get('roleName');
let sid: string = session.get('sid'); let sid: string = session.get('sid');
let funcs: number[] = session.get('funcs');
let { hid, ePlaceId, type } = msg; let { hid, ePlaceId, type } = msg;
let hero = await HeroModel.findByHidAndRoleWithEquip(hid, roleId); let hero = await HeroModel.findByHidAndRoleWithEquip(hid, roleId);
@@ -150,7 +151,7 @@ export class EquipHandler {
await calPlayerCeAndSave(HERO_SYSTEM_TYPE.EQUIP_BASE, sid, roleId, hero, { ePlace }); await calPlayerCeAndSave(HERO_SYSTEM_TYPE.EQUIP_BASE, sid, roleId, hero, { ePlace });
// 任务 // 任务
await checkTaskWithHero(roleId, sid, TASK_TYPE.EQUIP_STRENGTHEN, hero, oldLvs); await checkTaskWithHero(roleId, sid, funcs, TASK_TYPE.EQUIP_STRENGTHEN, hero, oldLvs);
const curHero = { const curHero = {
hid, hid,
@@ -165,6 +166,7 @@ export class EquipHandler {
let roleId: string = session.get('roleId'); let roleId: string = session.get('roleId');
// let roleName: string = session.get('roleName'); // let roleName: string = session.get('roleName');
let sid: string = session.get('sid'); let sid: string = session.get('sid');
let funcs: number[] = session.get('funcs');
let { hid, lv: maxLv } = msg; // lv: 升到哪一级 let { hid, lv: maxLv } = msg; // lv: 升到哪一级
let hero = await HeroModel.findByHidAndRoleWithEquip(hid, roleId); let hero = await HeroModel.findByHidAndRoleWithEquip(hid, roleId);
@@ -214,7 +216,7 @@ export class EquipHandler {
await calPlayerCeAndSave(HERO_SYSTEM_TYPE.EQUIP_BASE, sid, roleId, hero, { ePlace }); await calPlayerCeAndSave(HERO_SYSTEM_TYPE.EQUIP_BASE, sid, roleId, hero, { ePlace });
// 任务 // 任务
await checkTaskWithHero(roleId, sid, TASK_TYPE.EQUIP_STRENGTHEN, hero, oldLvs); await checkTaskWithHero(roleId, sid, funcs, TASK_TYPE.EQUIP_STRENGTHEN, hero, oldLvs);
const curHero = { const curHero = {
hid, hid,
@@ -229,6 +231,7 @@ export class EquipHandler {
let roleName: string = session.get('roleName'); let roleName: string = session.get('roleName');
let serverId = session.get('serverId'); let serverId = session.get('serverId');
let sid: string = session.get('sid'); let sid: string = session.get('sid');
let funcs: number[] = session.get('funcs');
let { hid, ePlaceId, material } = msg; let { hid, ePlaceId, material } = msg;
@@ -290,7 +293,7 @@ export class EquipHandler {
if (isSuccess) { if (isSuccess) {
let curEquip = <EquipType>equip; let curEquip = <EquipType>equip;
pushEquipRefineSucMsg(roleId, roleName, serverId, curEplace, curEquip?curEquip.quality: 0); pushEquipRefineSucMsg(roleId, roleName, serverId, curEplace, curEquip?curEquip.quality: 0);
await checkTask(roleId, sid, TASK_TYPE.EQUIP_REFINE, 1, true, {}); await checkTask(roleId, sid, funcs, TASK_TYPE.EQUIP_REFINE, 1, true, {});
} }
return resResult(STATUS.SUCCESS, { isSuccess, curHero }); return resResult(STATUS.SUCCESS, { isSuccess, curHero });
} }
@@ -343,6 +346,7 @@ export class EquipHandler {
let roleId: string = session.get('roleId'); let roleId: string = session.get('roleId');
// let roleName: string = session.get('roleName'); // let roleName: string = session.get('roleName');
let sid: string = session.get('sid'); let sid: string = session.get('sid');
let funcs: number[] = session.get('funcs');
let { eid } = msg; let { eid } = msg;
let equip = await EquipModel.findbySeqId(eid); let equip = await EquipModel.findbySeqId(eid);
@@ -408,7 +412,7 @@ export class EquipHandler {
const hero = await HeroModel.findByHidAndRoleWithEquip(hid, roleId); const hero = await HeroModel.findByHidAndRoleWithEquip(hid, roleId);
await calPlayerCeAndSave(HERO_SYSTEM_TYPE.RESTRENGTHEN, sid, roleId, hero, {}, [ePlaceId, ...removeSeidList]); await calPlayerCeAndSave(HERO_SYSTEM_TYPE.RESTRENGTHEN, sid, roleId, hero, {}, [ePlaceId, ...removeSeidList]);
await checkTask(roleId, sid, TASK_TYPE.EQUIP_RESTRENGTHEN, 1, true, {}); await checkTask(roleId, sid, funcs, TASK_TYPE.EQUIP_RESTRENGTHEN, 1, true, {});
return resResult(STATUS.SUCCESS,{curEquip}); return resResult(STATUS.SUCCESS,{curEquip});
} }
@@ -444,6 +448,7 @@ export class EquipHandler {
let roleId: string = session.get('roleId'); let roleId: string = session.get('roleId');
let equip = await EquipModel.getEquip(eid); let equip = await EquipModel.getEquip(eid);
let sid: string = session.get('sid'); let sid: string = session.get('sid');
let funcs: number[] = session.get('funcs');
let goodInfo = getGoodById(equip.id); let goodInfo = getGoodById(equip.id);
let obj = ITID.get(goodInfo.itid); let obj = ITID.get(goodInfo.itid);
let id = obj.type; let id = obj.type;
@@ -465,16 +470,16 @@ export class EquipHandler {
if (index < 0) if (index < 0)
return resResult(STATUS.WRONG_PARMS); return resResult(STATUS.WRONG_PARMS);
let equipOffInfo = <EquipType>hero.ePlace[index].equip; let equipOffInfo = <EquipType>hero.ePlace[index].equip;
let curEquip = await changeEquip(roleId, sid, equipOffInfo, equip.hid, id, equip); let curEquip = await changeEquip(roleId, sid, equipOffInfo, equip.hid, id, equip, funcs);
if (!!curEquip) if (!!curEquip)
curEquips.push(curEquip); curEquips.push(curEquip);
curEquip = await dressEquip(roleId, sid, hero, equip); curEquip = await dressEquip(roleId, sid, hero, equip, funcs);
if (!!curEquip) if (!!curEquip)
curEquips.push(curEquip); curEquips.push(curEquip);
} else if (type == 2) { } else if (type == 2) {
if (!equip.hid) if (!equip.hid)
return resResult(STATUS.EQUIP_NOT_EQUIPED); return resResult(STATUS.EQUIP_NOT_EQUIPED);
let curEquip = await takeOffEquipAndCalPlayerCe(roleId, sid, hero, equip, id) let curEquip = await takeOffEquipAndCalPlayerCe(roleId, sid, hero, equip, id, funcs);
curEquips.push(curEquip); curEquips.push(curEquip);
} }
return resResult(STATUS.SUCCESS, { curEquips: curEquips }); return resResult(STATUS.SUCCESS, { curEquips: curEquips });
@@ -512,6 +517,7 @@ export class EquipHandler {
let { eid, id, jewel } = msg; let { eid, id, jewel } = msg;
let roleId: string = session.get('roleId'); let roleId: string = session.get('roleId');
let sid: string = session.get('sid'); let sid: string = session.get('sid');
let funcs: number[] = session.get('funcs');
let consumes: Array<{ id: number, count: number }> = []; let consumes: Array<{ id: number, count: number }> = [];
let goods: Array<{ id: number, count: number }> = []; let goods: Array<{ id: number, count: number }> = [];
let equip = await EquipModel.getEquip(eid); let equip = await EquipModel.getEquip(eid);
@@ -545,9 +551,9 @@ export class EquipHandler {
} }
// 任务 // 任务
await checkTaskWithEquip(roleId, sid, TASK_TYPE.EQUIP_JEWEL, equip, [oldJewelCount]); await checkTaskWithEquip(roleId, sid, funcs, TASK_TYPE.EQUIP_JEWEL, equip, [oldJewelCount]);
await checkTaskWithArgs(roleId, sid, TASK_TYPE.EQUIP_JEWEL_STAGE, [jewel, oldJewel]); await checkTaskWithArgs(roleId, sid, funcs, TASK_TYPE.EQUIP_JEWEL_STAGE, [jewel, oldJewel]);
await checkTaskWithEquip(roleId, sid, TASK_TYPE.EQUIP_JEWEL_SUM, equip, [oldJewelCount]); await checkTaskWithEquip(roleId, sid, funcs, TASK_TYPE.EQUIP_JEWEL_SUM, equip, [oldJewelCount]);
return resResult(STATUS.SUCCESS, { curEquip: { seqId: eid, holes: equip.holes } }); return resResult(STATUS.SUCCESS, { curEquip: { seqId: eid, holes: equip.holes } });
} }
@@ -585,6 +591,7 @@ export class EquipHandler {
let { eid, id } = msg; let { eid, id } = msg;
let roleId: string = session.get('roleId'); let roleId: string = session.get('roleId');
let roleName: string = session.get('roleName'); let roleName: string = session.get('roleName');
let funcs: number[] = session.get('funcs');
let sid: string = session.get('sid'); let sid: string = session.get('sid');
let goods: Array<{ id: number, count: number }> = []; let goods: Array<{ id: number, count: number }> = [];
let equip = await EquipModel.getEquip(eid); let equip = await EquipModel.getEquip(eid);
@@ -605,9 +612,9 @@ export class EquipHandler {
} }
// 任务 // 任务
await checkTaskWithEquip(roleId, sid, TASK_TYPE.EQUIP_JEWEL, equip, [oldJewelCount]); await checkTaskWithEquip(roleId, sid, funcs, TASK_TYPE.EQUIP_JEWEL, equip, [oldJewelCount]);
await checkTaskWithArgs(roleId, sid, TASK_TYPE.EQUIP_JEWEL_STAGE, [0, jewel]); await checkTaskWithArgs(roleId, sid, funcs, TASK_TYPE.EQUIP_JEWEL_STAGE, [0, jewel]);
await checkTaskWithEquip(roleId, sid, TASK_TYPE.EQUIP_JEWEL_SUM, equip, [oldJewelCount]); await checkTaskWithEquip(roleId, sid, funcs, TASK_TYPE.EQUIP_JEWEL_SUM, equip, [oldJewelCount]);
return resResult(STATUS.SUCCESS, { curEquip: { seqId: eid, holes: equip.holes } }); return resResult(STATUS.SUCCESS, { curEquip: { seqId: eid, holes: equip.holes } });
} }
@@ -670,6 +677,7 @@ export class EquipHandler {
let roleName: string = session.get('roleName'); let roleName: string = session.get('roleName');
let sid: string = session.get('sid'); let sid: string = session.get('sid');
let serverId = session.get('serverId'); let serverId = session.get('serverId');
let funcs: number[] = session.get('funcs');
let goodInfo = getGoodById(jewel); let goodInfo = getGoodById(jewel);
let good = ITID.get(goodInfo.itid); let good = ITID.get(goodInfo.itid);
let needUpdate = false; let needUpdate = false;
@@ -713,9 +721,9 @@ export class EquipHandler {
} }
// 任务 // 任务
await checkTaskWithEquip(roleId, sid, TASK_TYPE.EQUIP_JEWEL, equip, [oldJewelCount]); await checkTaskWithEquip(roleId, sid, funcs, TASK_TYPE.EQUIP_JEWEL, equip, [oldJewelCount]);
await checkTaskWithArgs(roleId, sid, TASK_TYPE.EQUIP_JEWEL_STAGE, [jewel, oldJewel]); await checkTaskWithArgs(roleId, sid, funcs, TASK_TYPE.EQUIP_JEWEL_STAGE, [jewel, oldJewel]);
await checkTaskWithEquip(roleId, sid, TASK_TYPE.EQUIP_JEWEL_SUM, equip, [oldJewelCount]); await checkTaskWithEquip(roleId, sid, funcs, TASK_TYPE.EQUIP_JEWEL_SUM, equip, [oldJewelCount]);
return resResult(STATUS.SUCCESS, { curEquip: { seqId: eid, holes: equip.holes } }); return resResult(STATUS.SUCCESS, { curEquip: { seqId: eid, holes: equip.holes } });
} else { } else {
@@ -22,7 +22,7 @@ import { FRIEND } from "../../../pubUtils/dicParam";
import { PlayerDetail, PlayerDetailHero } from "../../../domain/battleField/guild"; import { PlayerDetail, PlayerDetailHero } from "../../../domain/battleField/guild";
import { createPrivateMsg, pushMsgToRole, pushPresent } from "../../../services/chatService"; import { createPrivateMsg, pushMsgToRole, pushPresent } from "../../../services/chatService";
import { Rank } from "../../../services/rankService"; import { Rank } from "../../../services/rankService";
import { checkTaskWithRole, checkTaskWithRoles, checkTask } from "../../../services/taskService"; import { checkTaskWithRoles, checkTask } from "../../../services/taskService";
export default function (app: Application) { export default function (app: Application) {
@@ -202,6 +202,7 @@ export class FriendHandler {
public async handleApply(msg: { applyCodeList: string[], isPass: boolean }, session: BackendSession) { public async handleApply(msg: { applyCodeList: string[], isPass: boolean }, session: BackendSession) {
let roleId: string = session.get('roleId'); let roleId: string = session.get('roleId');
let sid: string = session.get('sid'); let sid: string = session.get('sid');
let funcs: number[] = session.get('funcs');
let { applyCodeList, isPass } = msg; let { applyCodeList, isPass } = msg;
@@ -264,7 +265,7 @@ export class FriendHandler {
role = await RoleModel.increaseFriendApplyCnt(roleId, -1 * resultApplyCodeList.length, 50); role = await RoleModel.increaseFriendApplyCnt(roleId, -1 * resultApplyCodeList.length, 50);
roles.push(role); roles.push(role);
// 任务 // 任务
await checkTaskWithRoles(roleId, sid, TASK_TYPE.FRIEND_NUM, roles); await checkTaskWithRoles(roleId, sid, funcs, TASK_TYPE.FRIEND_NUM, roles);
// 特殊处理:如果他点一键同意,有很多人,这个单独的人就不做这个额外的提示,直接把他好友申请删掉就好 // 特殊处理:如果他点一键同意,有很多人,这个单独的人就不做这个额外的提示,直接把他好友申请删掉就好
if(str == getResStr(STATUS.FRIEND_HAS_ADD) && resultApplyCodeList.length > 1) str = ''; if(str == getResStr(STATUS.FRIEND_HAS_ADD) && resultApplyCodeList.length > 1) str = '';
@@ -371,6 +372,7 @@ export class FriendHandler {
public async setBlackList(msg: { roleId: string, type: number }, session: BackendSession) { public async setBlackList(msg: { roleId: string, type: number }, session: BackendSession) {
let roleId: string = session.get('roleId'); let roleId: string = session.get('roleId');
let sid: string = session.get('sid'); let sid: string = session.get('sid');
let funcs: number[] = session.get('funcs');
let { roleId: hisRoleId, type } = msg; let { roleId: hisRoleId, type } = msg;
let role = await RoleModel.findByRoleId(roleId); let role = await RoleModel.findByRoleId(roleId);
@@ -473,7 +475,7 @@ export class FriendHandler {
let { friendCnt = 0, blockCnt = 0 } = role; let { friendCnt = 0, blockCnt = 0 } = role;
// 任务 // 任务
await checkTaskWithRoles(roleId, sid, TASK_TYPE.FRIEND_NUM, [role, friend]); await checkTaskWithRoles(roleId, sid, funcs, TASK_TYPE.FRIEND_NUM, [role, friend]);
return resResult(STATUS.SUCCESS, { return resResult(STATUS.SUCCESS, {
frdRoleIds, blackRoleIds, frdRoleIds, blackRoleIds,
@@ -489,6 +491,7 @@ export class FriendHandler {
let roleId: string = session.get('roleId'); let roleId: string = session.get('roleId');
let roleName: string = session.get('roleName'); let roleName: string = session.get('roleName');
let sid: string = session.get('sid'); let sid: string = session.get('sid');
const funcs: number[] = session.get('funcs');
let { roleId: hisRoleId } = msg; let { roleId: hisRoleId } = msg;
@@ -543,7 +546,7 @@ export class FriendHandler {
// 更新情谊值 // 更新情谊值
frdPointRec = await FriendPointModel.updateSendCntToday(roleId, roleName, todaySendInc, max, FRIEND_DROP_TYPE.SEND_GIFT); frdPointRec = await FriendPointModel.updateSendCntToday(roleId, roleName, todaySendInc, max, FRIEND_DROP_TYPE.SEND_GIFT);
// 任务 // 任务
await checkTask(roleId, sid, TASK_TYPE.FRIEND_SEND_HEART, todaySendInc, true, {}); await checkTask(roleId, sid, funcs, TASK_TYPE.FRIEND_SEND_HEART, todaySendInc, true, {});
return resResult(STATUS.SUCCESS, { return resResult(STATUS.SUCCESS, {
todaySendCnt, list todaySendCnt, list
@@ -151,6 +151,7 @@ export class HeroHandler {
public async lvUp(msg: { hid: number, type: number}, session: BackendSession) { public async lvUp(msg: { hid: number, type: number}, session: BackendSession) {
let roleId: string = session.get('roleId'); let roleId: string = session.get('roleId');
let sid: string = session.get('sid'); let sid: string = session.get('sid');
let funcs: number[] = session.get('funcs');
let { hid, type } = msg; let { hid, type } = msg;
@@ -208,7 +209,7 @@ export class HeroHandler {
hero = await calPlayerCeAndSave(HERO_SYSTEM_TYPE.LVUP, sid, roleId, hero, update); hero = await calPlayerCeAndSave(HERO_SYSTEM_TYPE.LVUP, sid, roleId, hero, update);
// 任务 // 任务
await checkTaskWithHero(roleId, sid, TASK_TYPE.HERO_LV, hero); await checkTaskWithHero(roleId, sid, funcs, TASK_TYPE.HERO_LV, hero);
const curHero = { const curHero = {
hid, lv : hero.lv, exp : hero.exp hid, lv : hero.lv, exp : hero.exp
@@ -221,6 +222,7 @@ export class HeroHandler {
public async starUp(msg: { hid: number, star: number, starStage: number}, session: BackendSession) { public async starUp(msg: { hid: number, star: number, starStage: number}, session: BackendSession) {
let roleId: string = session.get('roleId'); let roleId: string = session.get('roleId');
let sid: string = session.get('sid'); let sid: string = session.get('sid');
let funcs: number[] = session.get('funcs');
let {hid, star, starStage} = msg; let {hid, star, starStage} = msg;
// 根据dic_hero 获得 1. 碎片id 2. 碎片数量 3. 初始武将星级 4. 初始品质 // 根据dic_hero 获得 1. 碎片id 2. 碎片数量 3. 初始武将星级 4. 初始品质
@@ -256,8 +258,8 @@ export class HeroHandler {
if(isUpStar) { if(isUpStar) {
await calAllHeroCe(HERO_SYSTEM_TYPE.STAR, sid, roleId, {}, [hid, isUpStar?1:0]); // 升星可能影响到百家学院全局加成 await calAllHeroCe(HERO_SYSTEM_TYPE.STAR, sid, roleId, {}, [hid, isUpStar?1:0]); // 升星可能影响到百家学院全局加成
// 任务 // 任务
await checkTaskWithHero(roleId, sid, TASK_TYPE.HERO_STAR_UP, hero); await checkTaskWithHero(roleId, sid, funcs, TASK_TYPE.HERO_STAR_UP, hero);
await checkTaskWithHero(roleId, sid, TASK_TYPE.HERO_QUALITY_STAR_UP, hero); await checkTaskWithHero(roleId, sid, funcs, TASK_TYPE.HERO_QUALITY_STAR_UP, hero);
} }
const curHero = { const curHero = {
@@ -276,6 +278,7 @@ export class HeroHandler {
let roleName: string = session.get('roleName'); let roleName: string = session.get('roleName');
let sid: string = session.get('sid'); let sid: string = session.get('sid');
let serverId: string = session.get('serverId'); let serverId: string = session.get('serverId');
let funcs: number[] = session.get('funcs');
let {hid, quality} = msg; let {hid, quality} = msg;
let dicHero = gameData.hero.get(hid); let dicHero = gameData.hero.get(hid);
@@ -310,7 +313,7 @@ export class HeroHandler {
await calAllHeroCe(HERO_SYSTEM_TYPE.QUALITY, sid, roleId, {}, [hid, 0]); // 升品可能影响到百家学院全局加成 await calAllHeroCe(HERO_SYSTEM_TYPE.QUALITY, sid, roleId, {}, [hid, 0]); // 升品可能影响到百家学院全局加成
// 任务 // 任务
await checkTaskWithHero(roleId, sid, TASK_TYPE.HERO_QUALITY_UP, hero); await checkTaskWithHero(roleId, sid, funcs, TASK_TYPE.HERO_QUALITY_UP, hero);
const curHero = { const curHero = {
hid, hid,
@@ -327,6 +330,7 @@ export class HeroHandler {
let sid: string = session.get('sid'); let sid: string = session.get('sid');
let roleName: string = session.get('roleName'); let roleName: string = session.get('roleName');
let serverId: string = session.get('serverId'); let serverId: string = session.get('serverId');
let funcs: number[] = session.get('funcs');
let {hid, colorStar, colorStarStage} = msg; let {hid, colorStar, colorStarStage} = msg;
// 根据dic_hero 获得 1. 碎片id 2. 碎片数量 3. 初始武将星级 4. 初始品质 // 根据dic_hero 获得 1. 碎片id 2. 碎片数量 3. 初始武将星级 4. 初始品质
@@ -370,8 +374,8 @@ export class HeroHandler {
await calAllHeroCe(HERO_SYSTEM_TYPE.COLORSTAR, sid, roleId, {}, [hid, isUpStar?1:0]); // 升星可能影响到百家学院全局加成 await calAllHeroCe(HERO_SYSTEM_TYPE.COLORSTAR, sid, roleId, {}, [hid, isUpStar?1:0]); // 升星可能影响到百家学院全局加成
; ;
// 任务 // 任务
await checkTaskWithHero(roleId, sid, TASK_TYPE.HERO_STAR_UP, hero); await checkTaskWithHero(roleId, sid, funcs, TASK_TYPE.HERO_STAR_UP, hero);
await checkTask(roleId, sid, TASK_TYPE.HERO_WAKE_UP, 1, true, {}); await checkTask(roleId, sid, funcs, TASK_TYPE.HERO_WAKE_UP, 1, true, {});
} }
const curHero = { const curHero = {
hid, hid,
@@ -389,6 +393,7 @@ export class HeroHandler {
async heroJobTrain (msg: {hid:number}, session: BackendSession) { async heroJobTrain (msg: {hid:number}, session: BackendSession) {
let roleId: string = session.get('roleId'); let roleId: string = session.get('roleId');
let sid: string = session.get('sid'); let sid: string = session.get('sid');
let funcs: number[] = session.get('funcs');
let { hid } = msg; let { hid } = msg;
let hero = await HeroModel.findByHidAndRole(hid, roleId); let hero = await HeroModel.findByHidAndRole(hid, roleId);
if (!hero) return resResult(STATUS.HERO_NOT_FIND); if (!hero) return resResult(STATUS.HERO_NOT_FIND);
@@ -415,8 +420,8 @@ export class HeroHandler {
jobStage: hero.jobStage + 1 jobStage: hero.jobStage + 1
}); });
// 任务 // 任务
await checkTaskWithHero(roleId, sid, TASK_TYPE.HERO_TRAIN, hero); await checkTaskWithHero(roleId, sid, funcs, TASK_TYPE.HERO_TRAIN, hero);
await checkTask(roleId, sid, TASK_TYPE.HERO_TRAIN_SUM, 1, true, {}); await checkTask(roleId, sid, funcs, TASK_TYPE.HERO_TRAIN_SUM, 1, true, {});
return resResult(STATUS.SUCCESS, { curHero: {hid : hero.hid, job : hero.job, jobStage: hero.jobStage}}); return resResult(STATUS.SUCCESS, { curHero: {hid : hero.hid, job : hero.job, jobStage: hero.jobStage}});
} }
@@ -425,6 +430,7 @@ export class HeroHandler {
async heroJobStageUp(msg: {hid:number}, session: BackendSession) { async heroJobStageUp(msg: {hid:number}, session: BackendSession) {
let roleId: string = session.get('roleId'); let roleId: string = session.get('roleId');
let sid: string = session.get('sid'); let sid: string = session.get('sid');
let funcs: number[] = session.get('funcs');
let { hid } = msg; let { hid } = msg;
let hero = await HeroModel.findByHidAndRole(hid, roleId); let hero = await HeroModel.findByHidAndRole(hid, roleId);
if (!hero) if (!hero)
@@ -448,7 +454,7 @@ export class HeroHandler {
} }
hero = await calPlayerCeAndSave(HERO_SYSTEM_TYPE.STAGEUP, sid, roleId, hero, update); hero = await calPlayerCeAndSave(HERO_SYSTEM_TYPE.STAGEUP, sid, roleId, hero, update);
// 任务 // 任务
await checkTaskWithHero(roleId, sid, TASK_TYPE.HERO_STAGE_UP, hero); await checkTaskWithHero(roleId, sid, funcs, TASK_TYPE.HERO_STAGE_UP, hero);
return resResult(STATUS.SUCCESS, { curHero: {hid : hero.hid, job : hero.job, jobStage : hero.jobStage}}); return resResult(STATUS.SUCCESS, { curHero: {hid : hero.hid, job : hero.job, jobStage : hero.jobStage}});
} }
@@ -457,6 +463,7 @@ export class HeroHandler {
async heroConectionActivate(msg: { shipId: number }, session: BackendSession) { async heroConectionActivate(msg: { shipId: number }, session: BackendSession) {
let roleId: string = session.get('roleId'); let roleId: string = session.get('roleId');
let sid: string = session.get('sid'); let sid: string = session.get('sid');
const funcs: number[] = session.get('funcs');
let { shipId } = msg; let { shipId } = msg;
let shipHidAndLevel = gameData.friendShipHidAandIds.get(shipId); let shipHidAndLevel = gameData.friendShipHidAandIds.get(shipId);
if (!shipHidAndLevel) return resResult(STATUS.HERO_CONECTION_IS_NOT_EXIT); if (!shipHidAndLevel) return resResult(STATUS.HERO_CONECTION_IS_NOT_EXIT);
@@ -498,7 +505,7 @@ export class HeroHandler {
hero = await calPlayerCeAndSave(HERO_SYSTEM_TYPE.CONNECT, sid, roleId, hero, { connections: heroConnections }, [shipId]); hero = await calPlayerCeAndSave(HERO_SYSTEM_TYPE.CONNECT, sid, roleId, hero, { connections: heroConnections }, [shipId]);
// 任务 // 任务
await checkTask(roleId, sid, TASK_TYPE.HERO_CONNECT, 1, true, { connectLv: level }) await checkTask(roleId, sid, funcs, TASK_TYPE.HERO_CONNECT, 1, true, { connectLv: level })
return resResult(STATUS.SUCCESS, { curHero: {hid : hero.hid, connections : hero.connections}}); return resResult(STATUS.SUCCESS, { curHero: {hid : hero.hid, connections : hero.connections}});
} }
@@ -506,6 +513,7 @@ export class HeroHandler {
async heroGiveFavor(msg: {hid:number, type: number}, session: BackendSession) { async heroGiveFavor(msg: {hid:number, type: number}, session: BackendSession) {
let roleId: string = session.get('roleId'); let roleId: string = session.get('roleId');
let sid: string = session.get('sid'); let sid: string = session.get('sid');
let funcs: number[] = session.get('funcs');
let { hid, type } = msg; let { hid, type } = msg;
let addLv = 0; let addLv = 0;
@@ -571,7 +579,7 @@ export class HeroHandler {
}, [oldLv]); }, [oldLv]);
// 任务 // 任务
await checkTaskWithHero(roleId, sid, TASK_TYPE.HERO_FAVOUR_LV, hero); await checkTaskWithHero(roleId, sid, funcs, TASK_TYPE.HERO_FAVOUR_LV, hero);
} else { } else {
hero = await HeroModel.updateHeroInfo(roleId, hero.hid, { favour: newExp, favourLv: newLv }); hero = await HeroModel.updateHeroInfo(roleId, hero.hid, { favour: newExp, favourLv: newLv });
} }
@@ -84,6 +84,7 @@ export class RoleHandler {
async roleTitleLevelUp(msg: {}, session: BackendSession){ async roleTitleLevelUp(msg: {}, session: BackendSession){
let roleId = session.get('roleId'); let roleId = session.get('roleId');
let sid: string = session.get('sid'); let sid: string = session.get('sid');
let funcs: number[] = session.get('funcs');
let role = await RoleModel.findByRoleId(roleId); let role = await RoleModel.findByRoleId(roleId);
@@ -102,7 +103,7 @@ export class RoleHandler {
role = await calAllHeroCe(HERO_SYSTEM_TYPE.TITLE, sid, roleId, update); role = await calAllHeroCe(HERO_SYSTEM_TYPE.TITLE, sid, roleId, update);
// 任务 // 任务
await checkTask(roleId, sid, TASK_TYPE.ROLE_TITLE, 1, false, { title }); await checkTask(roleId, sid, funcs, TASK_TYPE.ROLE_TITLE, 1, false, { title });
return resResult(STATUS.SUCCESS, { roleId, title: role.title }); return resResult(STATUS.SUCCESS, { roleId, title: role.title });
} }
@@ -112,6 +113,7 @@ export class RoleHandler {
let {id, count} = msg; let {id, count} = msg;
let roleId = session.get('roleId'); let roleId = session.get('roleId');
let sid: string = session.get('sid'); let sid: string = session.get('sid');
let funcs: number[] = session.get('funcs');
let role = await RoleModel.findByRoleId(roleId); let role = await RoleModel.findByRoleId(roleId);
let teraphs = role.teraphs; let teraphs = role.teraphs;
@@ -144,7 +146,7 @@ export class RoleHandler {
role = await calAllHeroCe(HERO_SYSTEM_TYPE.TERAPH, sid, roleId, { teraphs }, [id]); role = await calAllHeroCe(HERO_SYSTEM_TYPE.TERAPH, sid, roleId, { teraphs }, [id]);
// 任务 // 任务
await checkTask(roleId, sid, TASK_TYPE.ROLE_TERAPH_STRENGTHEN, count, true, {}); await checkTask(roleId, sid, funcs, TASK_TYPE.ROLE_TERAPH_STRENGTHEN, count, true, {});
return resResult(STATUS.SUCCESS, { roleId, teraphs: role.teraphs }); return resResult(STATUS.SUCCESS, { roleId, teraphs: role.teraphs });
} }
@@ -231,6 +233,7 @@ export class RoleHandler {
async changeSchoolHero(msg: { schoolId: number, positionId: number, hid: number }, session: BackendSession) { async changeSchoolHero(msg: { schoolId: number, positionId: number, hid: number }, session: BackendSession) {
let roleId = session.get('roleId'); let roleId = session.get('roleId');
let sid = session.get('sid'); let sid = session.get('sid');
let funcs: number[] = session.get('funcs');
let { schoolId, positionId, hid } = msg; let { schoolId, positionId, hid } = msg;
if (!gameData.school.has(schoolId)) { if (!gameData.school.has(schoolId)) {
@@ -268,7 +271,7 @@ export class RoleHandler {
await calAllHeroCe(HERO_SYSTEM_TYPE.SCHOOL, sid, roleId, {}, [schoolId, hid, preHid]); await calAllHeroCe(HERO_SYSTEM_TYPE.SCHOOL, sid, roleId, {}, [schoolId, hid, preHid]);
// 任务 // 任务
await checkTaskWithArgs(roleId, sid, TASK_TYPE.ROLE_SCHOOL_UNLOCK, [ hid, preHid ]); await checkTaskWithArgs(roleId, sid, funcs, TASK_TYPE.ROLE_SCHOOL_UNLOCK, [ hid, preHid ]);
return resResult(STATUS.SUCCESS, { return resResult(STATUS.SUCCESS, {
schoolId, positionId, hid, preHid, isOpen schoolId, positionId, hid, preHid, isOpen
@@ -280,6 +283,7 @@ export class RoleHandler {
async unlockSchoolPosition(msg: { schoolId: number, positionId: number }, session: BackendSession) { async unlockSchoolPosition(msg: { schoolId: number, positionId: number }, session: BackendSession) {
let roleId = session.get('roleId'); let roleId = session.get('roleId');
let sid = session.get('sid'); let sid = session.get('sid');
let funcs: number[] = session.get('funcs');
let { schoolId, positionId } = msg; let { schoolId, positionId } = msg;
if (!gameData.school.has(schoolId)) { if (!gameData.school.has(schoolId)) {
@@ -305,7 +309,7 @@ export class RoleHandler {
curSchool = await SchoolModel.updateBySclAndPos(roleId, schoolId, positionId, { isOpen: true }) curSchool = await SchoolModel.updateBySclAndPos(roleId, schoolId, positionId, { isOpen: true })
// 任务 // 任务
await checkTask(roleId, sid, TASK_TYPE.ROLE_SCHOOL_UNLOCK, 1, true, {}); await checkTask(roleId, sid, funcs, TASK_TYPE.ROLE_SCHOOL_UNLOCK, 1, true, {});
return resResult(STATUS.SUCCESS, { return resResult(STATUS.SUCCESS, {
schoolId, positionId, hid: curSchool.hid, isOpen: curSchool.isOpen schoolId, positionId, hid: curSchool.hid, isOpen: curSchool.isOpen
@@ -316,6 +320,7 @@ export class RoleHandler {
async activeHeroScroll(msg: { hid: number }, session: BackendSession) { async activeHeroScroll(msg: { hid: number }, session: BackendSession) {
let roleId = session.get('roleId'); let roleId = session.get('roleId');
let sid = session.get('sid'); let sid = session.get('sid');
let funcs: number[] = session.get('funcs');
let { hid } = msg; let { hid } = msg;
@@ -363,8 +368,8 @@ export class RoleHandler {
calAllHeroCe(HERO_SYSTEM_TYPE.SCROLL, sid, roleId, {}, [hid]); // 全局增加战力 calAllHeroCe(HERO_SYSTEM_TYPE.SCROLL, sid, roleId, {}, [hid]); // 全局增加战力
// 任务 // 任务
if(favourLv != hero.favourLv) await checkTaskWithHero(roleId, sid, TASK_TYPE.HERO_FAVOUR_LV, hero); if(favourLv != hero.favourLv) await checkTaskWithHero(roleId, sid, funcs, TASK_TYPE.HERO_FAVOUR_LV, hero);
if(!scrollActive) await checkTask(roleId, sid, TASK_TYPE.ROLE_SCROLL_ACTIVE, 1, true, {}); if(!scrollActive) await checkTask(roleId, sid, funcs, TASK_TYPE.ROLE_SCROLL_ACTIVE, 1, true, {});
return resResult(STATUS.SUCCESS, { return resResult(STATUS.SUCCESS, {
curHero: { curHero: {
@@ -30,7 +30,7 @@ export async function getAp(now: number, roleId: string) {
} }
} }
export async function setAp(now: number, roleId: string, sid: string, changeAp: number) { export async function setAp(now: number, roleId: string, sid: string, funcs: number[], changeAp: number) {
let ApResult = await getAp(now, roleId); let ApResult = await getAp(now, roleId);
let { ap, maxAp, refTime, apRemainTime, isOver } = ApResult; // 更新ap let { ap, maxAp, refTime, apRemainTime, isOver } = ApResult; // 更新ap
ap += changeAp; ap += changeAp;
@@ -44,7 +44,7 @@ export async function setAp(now: number, roleId: string, sid: string, changeAp:
if(isOver && ap < maxAp) apRemainTime = Math.floor(ACTION_POIN.PER / 1000); // 特殊处理 if(isOver && ap < maxAp) apRemainTime = Math.floor(ACTION_POIN.PER / 1000); // 特殊处理
if(changeAp < 0) { if(changeAp < 0) {
await checkTask(roleId, sid, TASK_TYPE.BATTLE_COST_AP, -1 * changeAp, true, {}); await checkTask(roleId, sid, funcs, TASK_TYPE.BATTLE_COST_AP, -1 * changeAp, true, {});
} }
return {ap, maxAp, refTime, apRemainTime} return {ap, maxAp, refTime, apRemainTime}
} }
+2 -2
View File
@@ -48,7 +48,7 @@ export async function checkTowerWar(roleId: string, battleId: number, heroes: Ar
}}; }};
} }
export async function towerBattleEnd(sid: string, roleId: string, serverId: number, battleCode: string, battleId: number, succeed: boolean, heroes: Array<number>) { export async function towerBattleEnd(sid: string, funcs: number[], roleId: string, serverId: number, battleCode: string, battleId: number, succeed: boolean, heroes: Array<number>) {
if (succeed) { if (succeed) {
let battleRec = await BattleRecordModel.getBattleRecordByCode(battleCode); let battleRec = await BattleRecordModel.getBattleRecordByCode(battleCode);
if (battleRec.battleId != battleId) { if (battleRec.battleId != battleId) {
@@ -93,7 +93,7 @@ export async function towerBattleEnd(sid: string, roleId: string, serverId: numb
pinus.app.get('channelService').pushMessageByUids('hangUpEnable', resResult(STATUS.SUCCESS, {enable: true}), [{uid: roleId, sid}]); pinus.app.get('channelService').pushMessageByUids('hangUpEnable', resResult(STATUS.SUCCESS, {enable: true}), [{uid: roleId, sid}]);
} }
// 任务 // 任务
await checkTask(roleId, sid, TASK_TYPE.BATTLE_TOWER_LV, role.towerLv, false, {}); await checkTask(roleId, sid, funcs, TASK_TYPE.BATTLE_TOWER_LV, role.towerLv, false, {});
} }
return { return {
status: 0, status: 0,
+14 -14
View File
@@ -54,7 +54,7 @@ export function checkMaterialEnough(consumes:Array<{id: number, count: number}>,
* @param id 装备类型 * @param id 装备类型
* @param seqId 要装上的装备的唯一id 装备B * @param seqId 要装上的装备的唯一id 装备B
*/ */
export async function changeEquip(roleId: string, sid: string, equipA: EquipType, hid: number, id: number, equipB: EquipType) { export async function changeEquip(roleId: string, sid: string, equipA: EquipType, hid: number, id: number, equipB: EquipType, funcs: number[]) {
let heroB: HeroType; let heroB: HeroType;
if (!!hid) //需要卸下或者替换的武将 if (!!hid) //需要卸下或者替换的武将
heroB = await HeroModel.findByHidAndRoleWithEquip(hid, roleId);//需要替换的武将 heroB = await HeroModel.findByHidAndRoleWithEquip(hid, roleId);//需要替换的武将
@@ -63,24 +63,24 @@ export async function changeEquip(roleId: string, sid: string, equipA: EquipType
if (!!heroB) { if (!!heroB) {
let goodInfo = getGoodById(equipA.id); let goodInfo = getGoodById(equipA.id);
if (goodInfo.lvLimited > heroB.lv) { if (goodInfo.lvLimited > heroB.lv) {
let res = await takeOffEquipAndCalPlayerCe(roleId, sid, heroB, equipB, id);//卸下装备并重算战力 let res = await takeOffEquipAndCalPlayerCe(roleId, sid, heroB, equipB, id, funcs);//卸下装备并重算战力
return res; return res;
} }
let { jobid } = gameData.hero.get(hid); let { jobid } = gameData.hero.get(hid);
let { job_class } = getHeroJob(jobid); let { job_class } = getHeroJob(jobid);
let { classId } = getHeroEquipByClassId(goodInfo.itid); let { classId } = getHeroEquipByClassId(goodInfo.itid);
if (indexOf(classId, job_class) < 0) { if (indexOf(classId, job_class) < 0) {
let res = await takeOffEquipAndCalPlayerCe(roleId, sid, heroB, equipB, id);//卸下装备并重算战力 let res = await takeOffEquipAndCalPlayerCe(roleId, sid, heroB, equipB, id, funcs);//卸下装备并重算战力
return res; return res;
} }
let res = await dressEquip(roleId, sid, heroB, equipA);//替换给武将,并计算战力 let res = await dressEquip(roleId, sid, heroB, equipA, funcs);//替换给武将,并计算战力
return res; return res;
} else { } else {
let res = await takeOffEquipAndCalPlayerCe(roleId, sid, heroB, equipB, id);//卸下装备并重算战力 let res = await takeOffEquipAndCalPlayerCe(roleId, sid, heroB, equipB, id, funcs);//卸下装备并重算战力
return res; return res;
} }
} else if (!!heroB) {//从穿戴装备的武将上卸下装备 } else if (!!heroB) {//从穿戴装备的武将上卸下装备
await takeOffEquipAndCalPlayerCe(roleId, sid, heroB, equipB, id);//卸下装备并重算战力 await takeOffEquipAndCalPlayerCe(roleId, sid, heroB, equipB, id, funcs);//卸下装备并重算战力
} }
} }
/** /**
@@ -91,16 +91,16 @@ export async function changeEquip(roleId: string, sid: string, equipA: EquipType
* @param hero * @param hero
* @param id * @param id
*/ */
export async function takeOffEquipAndCalPlayerCe(roleId: string, sid: string, hero:HeroType, equip: EquipType, id: number ) { export async function takeOffEquipAndCalPlayerCe(roleId: string, sid: string, hero:HeroType, equip: EquipType, id: number, funcs: number[] ) {
let args = calEquipSeids(hero); let args = calEquipSeids(hero);
hero = await HeroModel.removeEquip(roleId, hero.hid, id, equip._id); hero = await HeroModel.removeEquip(roleId, hero.hid, id, equip._id);
await calPlayerCeAndSave(HERO_SYSTEM_TYPE.EQUIP, sid, roleId, hero, {}, args); await calPlayerCeAndSave(HERO_SYSTEM_TYPE.EQUIP, sid, roleId, hero, {}, args);
// 任务 // 任务
await checkTask(roleId, sid, TASK_TYPE.EQUIP_SUM, 1, true, {}); await checkTask(roleId, sid, funcs, TASK_TYPE.EQUIP_SUM, 1, true, {});
await checkTaskWithHero(roleId, sid, TASK_TYPE.EQUIP_BY_HERO, hero, [1]); await checkTaskWithHero(roleId, sid, funcs, TASK_TYPE.EQUIP_BY_HERO, hero, [1]);
await checkTaskWithEquip(roleId, sid, TASK_TYPE.EQUIP_QUALITY, equip, [1]); await checkTaskWithEquip(roleId, sid, funcs, TASK_TYPE.EQUIP_QUALITY, equip, [1]);
return { seqId: equip.seqId, hid: 0}; return { seqId: equip.seqId, hid: 0};
} }
@@ -111,16 +111,16 @@ export async function takeOffEquipAndCalPlayerCe(roleId: string, sid: string, he
* @param hero * @param hero
* @param equip * @param equip
*/ */
export async function dressEquip(roleId: string, sid: string, hero:HeroType, equip: EquipType) { export async function dressEquip(roleId: string, sid: string, hero:HeroType, equip: EquipType, funcs: number[]) {
let args = calEquipSeids(hero); let args = calEquipSeids(hero);
hero = await HeroModel.addEquip(roleId, hero.hid, equip.ePlaceId, equip._id); hero = await HeroModel.addEquip(roleId, hero.hid, equip.ePlaceId, equip._id);
await calPlayerCeAndSave(HERO_SYSTEM_TYPE.EQUIP, sid, roleId, hero, {}, args); await calPlayerCeAndSave(HERO_SYSTEM_TYPE.EQUIP, sid, roleId, hero, {}, args);
// 任务 // 任务
await checkTask(roleId, sid, TASK_TYPE.EQUIP_SUM, -1, true, {}); await checkTask(roleId, sid, funcs, TASK_TYPE.EQUIP_SUM, -1, true, {});
await checkTaskWithHero(roleId, sid, TASK_TYPE.EQUIP_BY_HERO, hero, [-1]); await checkTaskWithHero(roleId, sid, funcs, TASK_TYPE.EQUIP_BY_HERO, hero, [-1]);
await checkTaskWithEquip(roleId, sid, TASK_TYPE.EQUIP_QUALITY, equip, [-1]); await checkTaskWithEquip(roleId, sid, funcs, TASK_TYPE.EQUIP_QUALITY, equip, [-1]);
return { seqId: equip.seqId, hid: hero.hid }; return { seqId: equip.seqId, hid: hero.hid };
} }
+1 -1
View File
@@ -279,7 +279,7 @@ export async function settleGuildWeekly() {
}); });
await sendMail(MAIL_TYPE.GUILD_ACTIVE_REWARD, roleId, '系统', [], reward); await sendMail(MAIL_TYPE.GUILD_ACTIVE_REWARD, roleId, '系统', [], reward);
// 任务 // 任务
await checkTask(roleId, null, TASK_TYPE.GUILD_JOB, 1, false, { job }); await checkTask(roleId, null, null, TASK_TYPE.GUILD_JOB, 1, false, { job });
} }
await GuildModel.updateInfo(code, { activeWeekly: 0 }, {}); await GuildModel.updateInfo(code, { activeWeekly: 0 }, {});
@@ -32,7 +32,7 @@ export async function roleLevelup(roleId: string, kingExp: number, session: Back
await r.setRankWithRoleInfo(roleId, newLv, Date.now(), role); await r.setRankWithRoleInfo(roleId, newLv, Date.now(), role);
// 任务 // 任务
await checkTask(roleId, session.get('sid'), TASK_TYPE.ROLE_LV, newLv, false, {}); await checkTask(roleId, session.get('sid'), session.get('funcs'), TASK_TYPE.ROLE_LV, newLv, false, {});
} }
let actordata = []; let actordata = [];
for(let i = lv; i <= newLv; i++) { for(let i = lv; i <= newLv; i++) {
+4 -3
View File
@@ -281,8 +281,8 @@ export async function clearChannelServers() {
* @param userCode user表唯一字符串标识 * @param userCode user表唯一字符串标识
* @param sid connector服的那个sid * @param sid connector服的那个sid
*/ */
export async function roleLogin(roleId: string, userCode: string, sid: string, pkgName: string) { export async function roleLogin(roleId: string, userCode: string, sid: string, pkgName: string, funcs: number[]) {
let param = { userCode, sid, pkgName }; let param = { userCode, sid, pkgName, funcs };
return await redisClient().hsetAsync(REDIS_KEY.ONLINE_USERS, roleId, JSON.stringify(param)); return await redisClient().hsetAsync(REDIS_KEY.ONLINE_USERS, roleId, JSON.stringify(param));
} }
@@ -318,7 +318,8 @@ export async function getRoleOnlineInfo(roleId: string) {
isOnline: true, isOnline: true,
userCode: result.userCode, userCode: result.userCode,
sid: result.sid, sid: result.sid,
pkgName: result.pkgName pkgName: result.pkgName,
funcs: result.funcs
} }
} catch(e) { } catch(e) {
return { isOnline: false } return { isOnline: false }
+3 -3
View File
@@ -126,14 +126,14 @@ export async function addItems(roleId: string, roleName: string, sid: string, go
if (!!equipInfos.length) if (!!equipInfos.length)
pinus.app.get('channelService').pushMessageByUids('onEquipAdd', resResult(STATUS.SUCCESS, {equipInfos}), uids); pinus.app.get('channelService').pushMessageByUids('onEquipAdd', resResult(STATUS.SUCCESS, {equipInfos}), uids);
pushTaskUpdate(roleId, sid, taskPushMessage); pushTaskUpdate(roleId, sid, null, taskPushMessage);
//货币推送 //货币推送
if (!!Object.keys(currencysMap).length) { if (!!Object.keys(currencysMap).length) {
let role = await RoleModel.findByRoleId(roleId); let role = await RoleModel.findByRoleId(roleId);
for (let key in currencysMap) { for (let key in currencysMap) {
if (key == 'ap') { if (key == 'ap') {
let {ap} = await setAp(Date.now(), roleId, sid, currencysMap[key]); let {ap} = await setAp(Date.now(), roleId, sid, null, currencysMap[key]);
currencysMap.ap = ap; currencysMap.ap = ap;
} else { } else {
currencysMap[key] += role[key]; currencysMap[key] += role[key];
@@ -315,7 +315,7 @@ export async function createHero(roleId: string, sid: string, serverId: number,
hero = await pushCalPlayerCe(roleId, sid, calHeroResult); hero = await pushCalPlayerCe(roleId, sid, calHeroResult);
await pushCalAllHeroCe(roleId, sid, calAllHeroResult); await pushCalAllHeroCe(roleId, sid, calAllHeroResult);
pushTaskUpdate(roleId, sid, taskPushMessage); pushTaskUpdate(roleId, sid, null, taskPushMessage);
return hero; return hero;
} }
+49 -42
View File
@@ -8,47 +8,54 @@ import { HeroType } from '../db/Hero';
import { EquipType } from '../db/Equip'; import { EquipType } from '../db/Equip';
import { getRoleOnlineInfo } from './redisService'; import { getRoleOnlineInfo } from './redisService';
import { HeroScores } from '../db/PvpHistoryOpp'; import { HeroScores } from '../db/PvpHistoryOpp';
import { ItemInter } from '../pubUtils/interface';
export async function checkTaskWithRoles(roleId: string, sid: string, taskType: number, roles: RoleType[]) { export async function checkTaskWithRoles(roleId: string, sid: string, funcs: number[], taskType: number, roles: RoleType[]) {
for(let role of roles) { for(let role of roles) {
await checkTaskWithRole(role.roleId, role.roleId == roleId? sid: null, taskType, role); await checkTaskWithRole(role.roleId, role.roleId == roleId? sid: null, role.roleId == roleId? funcs: null, taskType, role);
} }
} }
export async function checkTaskWithRole(roleId: string, sid: string, taskType: number, role: RoleType) { export async function checkTaskWithRole(roleId: string, sid: string, funcs: number[], taskType: number, role: RoleType) {
let pushMessage = await taskUtil.checkTaskWithRole(roleId, taskType, role); let pushMessage = await taskUtil.checkTaskWithRole(roleId, taskType, role, funcs);
pushTaskUpdate(roleId, sid, pushMessage); pushTaskUpdate(roleId, sid, funcs, pushMessage);
} }
export async function checkTaskWithHero(roleId: string, sid: string, taskType: number, hero: HeroType, args?: number[]) { export async function checkTaskWithHero(roleId: string, sid: string, funcs: number[], taskType: number, hero: HeroType, args?: number[]) {
let pushMessage = await taskUtil.checkTaskWithHero(roleId, taskType, hero, args); let pushMessage = await taskUtil.checkTaskWithHero(roleId, taskType, hero, args, funcs);
pushTaskUpdate(roleId, sid, pushMessage); pushTaskUpdate(roleId, sid, funcs, pushMessage);
} }
export async function checkTaskWithEquip(roleId: string, sid: string, taskType: number, equip: EquipType, args?: number[]) { export async function checkTaskWithEquip(roleId: string, sid: string, funcs: number[], taskType: number, equip: EquipType, args?: number[]) {
let pushMessage = await taskUtil.checkTaskWithEquip(roleId, taskType, equip, args); let pushMessage = await taskUtil.checkTaskWithEquip(roleId, taskType, equip, args, funcs);
pushTaskUpdate(roleId, sid, pushMessage); pushTaskUpdate(roleId, sid, funcs, pushMessage);
} }
export async function checkTaskWithArgs(roleId: string, sid: string, taskType: number, args: number[]) { export async function checkTaskWithArgs(roleId: string, sid: string, funcs: number[], taskType: number, args: number[]) {
let pushMessage = await taskUtil.checkTaskWithArgs(roleId, taskType, args); let pushMessage = await taskUtil.checkTaskWithArgs(roleId, taskType, args, funcs);
pushTaskUpdate(roleId, sid, pushMessage); pushTaskUpdate(roleId, sid, funcs, pushMessage);
} }
export async function checkTaskWithWar(roleId: string, sid: string, taskType: number, warId: number, heroes: number[], count: number, star: number) { export async function checkTaskWithWar(roleId: string, sid: string, funcs: number[], taskType: number, warId: number, heroes: number[], count: number, star: number) {
let pushMessage = await taskUtil.checkTaskWithWar(roleId, taskType, warId, heroes, count, star); let pushMessage = await taskUtil.checkTaskWithWar(roleId, taskType, warId, heroes, count, star, funcs);
pushTaskUpdate(roleId, sid, pushMessage); pushTaskUpdate(roleId, sid, funcs, pushMessage);
} }
export async function checkTask(roleId: string, sid: string, taskType: number, count: number, isInc: boolean, param: TaskParam) { export async function checkTaskWithGoods(roleId: string, sid: string, funcs: number[], taskType: number, goods: ItemInter[]) {
let pushMessage = await taskUtil.checkTask(roleId, taskType, count, isInc, param); let pushMessage = await taskUtil.checkTaskWithGoods(roleId, taskType, goods, funcs);
pushTaskUpdate(roleId, sid, pushMessage); pushTaskUpdate(roleId, sid, funcs, pushMessage);
} }
export async function pushTaskUpdate(roleId: string, sid: string, pushMessage: {type: number, id: number, count: number, received: boolean}[]) { export async function checkTask(roleId: string, sid: string, funcs: number[], taskType: number, count: number, isInc: boolean, param: TaskParam) {
if(!sid) { let pushMessage = await taskUtil.checkTask(roleId, taskType, count, isInc, param, funcs);
pushTaskUpdate(roleId, sid, funcs, pushMessage);
}
export async function pushTaskUpdate(roleId: string, sid: string, funcs: number[], pushMessage: {type: number, id: number, count: number, received: boolean}[]) {
if(!sid || !funcs) {
let onlineUser = await getRoleOnlineInfo(roleId); let onlineUser = await getRoleOnlineInfo(roleId);
sid = onlineUser.sid; sid = onlineUser.sid;
funcs = onlineUser.funcs||[];
} }
if(!!sid) { if(!!sid) {
let uids = [{uid: roleId, sid}]; let uids = [{uid: roleId, sid}];
@@ -59,40 +66,40 @@ export async function pushTaskUpdate(roleId: string, sid: string, pushMessage: {
/** /**
* battle.normalBattleHandler.battleEnd 中会触发的任务,因为有点多提出来了 * battle.normalBattleHandler.battleEnd 中会触发的任务,因为有点多提出来了
*/ */
export async function checkTaskInBattleEnd(roleId: string, sid: string, battleId: number, heroes: number[], star: number) { export async function checkTaskInBattleEnd(roleId: string, sid: string, funcs: number[], battleId: number, heroes: number[], star: number) {
await checkTaskWithWar(roleId, sid, TASK_TYPE.BATTLE_WITH_HERO, battleId, heroes, 1, star); await checkTaskWithWar(roleId, sid, funcs, TASK_TYPE.BATTLE_WITH_HERO, battleId, heroes, 1, star);
await checkTaskWithWar(roleId, sid, TASK_TYPE.BATTLE_MAIN, battleId, heroes, 1, star); await checkTaskWithWar(roleId, sid, funcs, TASK_TYPE.BATTLE_MAIN, battleId, heroes, 1, star);
await checkTaskWithWar(roleId, sid, TASK_TYPE.BATTLE_DAILY_STAR, battleId, heroes, 1, star); await checkTaskWithWar(roleId, sid, funcs, TASK_TYPE.BATTLE_DAILY_STAR, battleId, heroes, 1, star);
await checkTaskWithWar(roleId, sid, TASK_TYPE.BATTLE_DAILY, battleId, heroes, 1, star); await checkTaskWithWar(roleId, sid, funcs, TASK_TYPE.BATTLE_DAILY, battleId, heroes, 1, star);
await checkTaskWithWar(roleId, sid, TASK_TYPE.BATTLE_DUNGEON, battleId, heroes, 1, star); await checkTaskWithWar(roleId, sid, funcs, TASK_TYPE.BATTLE_DUNGEON, battleId, heroes, 1, star);
await checkTaskWithWar(roleId, sid, TASK_TYPE.BATTLE_DUNGEON_WAR, battleId, heroes, 1, star); await checkTaskWithWar(roleId, sid, funcs, TASK_TYPE.BATTLE_DUNGEON_WAR, battleId, heroes, 1, star);
await checkTaskWithWar(roleId, sid, TASK_TYPE.BATTLE_TOWER, battleId, heroes, 1, star); await checkTaskWithWar(roleId, sid, funcs, TASK_TYPE.BATTLE_TOWER, battleId, heroes, 1, star);
await checkTaskWithWar(roleId, sid, TASK_TYPE.BATTLE_VESTIGE, battleId, heroes, 1, star); await checkTaskWithWar(roleId, sid, funcs, TASK_TYPE.BATTLE_VESTIGE, battleId, heroes, 1, star);
await checkTaskWithWar(roleId, sid, TASK_TYPE.BATTLE_EXPEDITION, battleId, heroes, 1, star); await checkTaskWithWar(roleId, sid, funcs, TASK_TYPE.BATTLE_EXPEDITION, battleId, heroes, 1, star);
} }
export async function checkTaskInComBattleEnd(roleIds: string[], capId: string, quality: number) { export async function checkTaskInComBattleEnd(roleIds: string[], capId: string, quality: number) {
for(let roleId of roleIds) { for(let roleId of roleIds) {
if(roleId == capId && roleIds.length > 1) { // 招募队友 if(roleId == capId && roleIds.length > 1) { // 招募队友
await checkTask(roleId, null, TASK_TYPE.COM_BATTLE_CREATE_TEAM, 1, true, {}); await checkTask(roleId, null, null, TASK_TYPE.COM_BATTLE_CREATE_TEAM, 1, true, {});
} else if (roleId !== capId) { // 协助寻宝 } else if (roleId !== capId) { // 协助寻宝
await checkTask(roleId, null, TASK_TYPE.COM_BATTLE_ASSIST_TEAM, 1, true, {}); await checkTask(roleId, null, null, TASK_TYPE.COM_BATTLE_ASSIST_TEAM, 1, true, {});
} }
await checkTask(roleId, null, TASK_TYPE.COM_BATTLE, 1, true, {}); await checkTask(roleId, null, null, TASK_TYPE.COM_BATTLE, 1, true, {});
await checkTask(roleId, null, TASK_TYPE.COM_BATTLE_QUALITY, 1, true, { quality }); await checkTask(roleId, null, null, TASK_TYPE.COM_BATTLE_QUALITY, 1, true, { quality });
} }
} }
export async function checkTaskInPvpEnd(roleId: string, sid: string, isSuccess: boolean, heroScores: HeroScores[]) { export async function checkTaskInPvpEnd(roleId: string, sid: string, funcs: number[], isSuccess: boolean, heroScores: HeroScores[]) {
await checkTask(roleId, sid, TASK_TYPE.PVP, 1, true, {}); await checkTask(roleId, sid, funcs, TASK_TYPE.PVP, 1, true, {});
if(isSuccess) { if(isSuccess) {
await checkTask(roleId, sid, TASK_TYPE.PVP_WIN, 1, true, {}); await checkTask(roleId, sid, funcs, TASK_TYPE.PVP_WIN, 1, true, {});
await checkTask(roleId, sid, TASK_TYPE.PVP_WIN_SERIES, 1, true, {}); await checkTask(roleId, sid, funcs, TASK_TYPE.PVP_WIN_SERIES, 1, true, {});
} else { } else {
await checkTask(roleId, sid, TASK_TYPE.PVP_WIN_SERIES, 0, false, {}); await checkTask(roleId, sid, funcs, TASK_TYPE.PVP_WIN_SERIES, 0, false, {});
} }
await checkTask(roleId, sid, TASK_TYPE.PVP, 0, false, { heroScores }); await checkTask(roleId, sid, funcs, TASK_TYPE.PVP, 0, false, { heroScores });
} }
+2 -2
View File
@@ -186,8 +186,8 @@ export async function checkResult(pvpDefense: PvpDefenseType, seasonNum: number,
seasonNum: pvpDefense.seasonNum, challengeCnt, challengeRefTime, seasonEndTime: oldSeasonEndTime seasonNum: pvpDefense.seasonNum, challengeCnt, challengeRefTime, seasonEndTime: oldSeasonEndTime
}, heroGoods, rankGoods, show: true });//结算修改玩家pvp信息 }, heroGoods, rankGoods, show: true });//结算修改玩家pvp信息
// 更新任务 // 更新任务
await checkTask(pvpDefense.roleId, null, TASK_TYPE.PVP_HERO_SCORE, 0, false, { heroScores: pvpDefense.heroScores }); await checkTask(pvpDefense.roleId, null, null, TASK_TYPE.PVP_HERO_SCORE, 0, false, { heroScores: pvpDefense.heroScores });
await checkTask(pvpDefense.roleId, null, TASK_TYPE.PVP_RANK, 1, false, { rankLv }); await checkTask(pvpDefense.roleId, null, null, TASK_TYPE.PVP_RANK, 1, false, { rankLv });
return { rankLv, score, pLv, heroScores: pvpDefense.heroScores, seasonNum, challengeCnt:PVP.PVP_CHALLENGE_COUNTS, challengeRefTime:0, oldSeasonEndTime, heroGoods:heroGoods.map(({id, count})=>{ return { rankLv, score, pLv, heroScores: pvpDefense.heroScores, seasonNum, challengeCnt:PVP.PVP_CHALLENGE_COUNTS, challengeRefTime:0, oldSeasonEndTime, heroGoods:heroGoods.map(({id, count})=>{
return {id, count}; return {id, count};
}), rankGoods}; }), rankGoods};
+4 -1
View File
@@ -364,7 +364,10 @@ export const FUNC_OPT_TYPE = {
export const FUNCS_ID = { export const FUNCS_ID = {
EVENT: 1, EVENT: 1,
PVP: 2 PVP: 2,
MAIN_TASK: 3,
DAILY_TASK: 4,
ACHIEVEMENT: 4
} }
export const FRIEND_DROP_TYPE = { export const FRIEND_DROP_TYPE = {
+17 -4
View File
@@ -2,6 +2,7 @@ import BaseModel from './BaseModel';
import { index, getModelForClass, prop, DocumentType, modelOptions } from '@typegoose/typegoose'; import { index, getModelForClass, prop, DocumentType, modelOptions } from '@typegoose/typegoose';
import { TASK_FUN_TYPE } from '../consts'; import { TASK_FUN_TYPE } from '../consts';
import { genCode } from '../pubUtils/util'; import { genCode } from '../pubUtils/util';
import { getTodayZeroDate } from '../pubUtils/timeUtil';
/** /**
* 玩家购买商店记录表,每个商品一条,每次刷新新建一条 * 玩家购买商店记录表,每个商品一条,每次刷新新建一条
@@ -34,19 +35,31 @@ export default class UserTaskRec extends BaseModel {
@prop({ required: true, default: false }) @prop({ required: true, default: false })
received: boolean; // 是否已领取 received: boolean; // 是否已领取
private static getRefreshCondition(type: number) {
let today = getTodayZeroDate(5);
if(type == TASK_FUN_TYPE.DAILY) {
return { createdAt: { $gte: today } };
} else {
return {};
}
}
public static async setTaskRec(roleId: string, type: number, taskType: number, group: number, count: number) { public static async setTaskRec(roleId: string, type: number, taskType: number, group: number, count: number) {
let rec: UserTaskRecType = await UserTaskRecModel.findOneAndUpdate({ roleId, type, group }, { $setOnInsert: { code: genCode(8), taskType, received: false }, $set: { count } }, { new: true, upsert: true }).lean(); let condition = this.getRefreshCondition(type);
let rec: UserTaskRecType = await UserTaskRecModel.findOneAndUpdate({ roleId, type, group, ...condition }, { $setOnInsert: { code: genCode(8), taskType, received: false }, $set: { count } }, { new: true, upsert: true }).lean();
return rec; return rec;
} }
public static async incTaskRec(roleId: string, type: number, taskType: number, group: number, count: number) { public static async incTaskRec(roleId: string, type: number, taskType: number, group: number, count: number) {
let condition = this.getRefreshCondition(type);
let rec: UserTaskRecType = await UserTaskRecModel.findOneAndUpdate({ roleId, type, group }, { $setOnInsert: { code: genCode(8), taskType, received: false }, $inc: { count } }, { new: true, upsert: true }).lean(); let rec: UserTaskRecType = await UserTaskRecModel.findOneAndUpdate({ roleId, type, group, ...condition }, { $setOnInsert: { code: genCode(8), taskType, received: false }, $inc: { count } }, { new: true, upsert: true }).lean();
return rec; return rec;
} }
public static async checkHistoryAndSetTaskRec(roleId: string, type: number, taskType: number, group: number, count: number) { public static async checkHistoryAndSetTaskRec(roleId: string, type: number, taskType: number, group: number, count: number) {
let rec: UserTaskRecType = await UserTaskRecModel.findOne({ roleId, type, group }).lean(); let condition = this.getRefreshCondition(type);
let rec: UserTaskRecType = await UserTaskRecModel.findOne({ roleId, type, group, ...condition }).lean();
if(rec) { if(rec) {
if(rec.count < count) { if(rec.count < count) {
rec = await UserTaskRecModel.setTaskRec(roleId, type, taskType, group, count); rec = await UserTaskRecModel.setTaskRec(roleId, type, taskType, group, count);
+63 -52
View File
@@ -1,31 +1,31 @@
import { gameData } from './data'; import { gameData } from './data';
import { DicTask } from './dictionary/DicTask'; import { DicTask } from './dictionary/DicTask';
import { TASK_TYPE, ABI_STAGE, WAR_TYPE, GUILD_JOB } from '../consts'; import { TASK_TYPE, ABI_STAGE, WAR_TYPE, GUILD_JOB, TASK_FUN_TYPE, FUNCS_ID } from '../consts';
import { UserTaskRecModel, UserTaskRecType } from '../db/UserTaskRec' import { UserTaskRecModel, UserTaskRecType } from '../db/UserTaskRec'
import { RoleType } from '../db/Role'; import { RoleType, RoleModel } from '../db/Role';
import { TaskParam } from '../domain/roleField/task'; import { TaskParam } from '../domain/roleField/task';
import { getTodayZeroPoint } from './timeUtil'; import { getTodayZeroPoint } from './timeUtil';
import { HeroType } from '../db/Hero'; import { HeroType } from '../db/Hero';
import { EquipType, EquipModel } from '../db/Equip'; import { EquipType, EquipModel } from '../db/Equip';
import { RewardInter } from './interface'; import { ItemInter } from './interface';
export async function checkTaskWithRoles(taskType: number, roles: RoleType[]) { export async function checkTaskWithRoles(taskType: number, roles: RoleType[], funcs?: number[]) {
let pushMessage = new Array<{type: number, id: number, count: number, received: boolean}>(); let pushMessage = new Array<{type: number, id: number, count: number, received: boolean}>();
for(let role of roles) { for(let role of roles) {
let singlePush = await checkTaskWithRole(role.roleId, taskType, role); let singlePush = await checkTaskWithRole(role.roleId, taskType, role, funcs);
pushMessage.concat(singlePush); pushMessage.concat(singlePush);
} }
return pushMessage return pushMessage
} }
export async function checkTaskWithRole(roleId: string, taskType: number, role: RoleType) { export async function checkTaskWithRole(roleId: string, taskType: number, role: RoleType, funcs?: number[]) {
let pushMessage = new Array<{type: number, id: number, count: number, received: boolean}>(); let pushMessage = new Array<{type: number, id: number, count: number, received: boolean}>();
if(taskType == TASK_TYPE.LOGIN_SUM) if(taskType == TASK_TYPE.LOGIN_SUM)
{ {
let today = getTodayZeroPoint(); let today = getTodayZeroPoint();
if(today > role.loginTime) { if(today > role.loginTime) {
pushMessage = await checkTask(roleId, taskType, 1, true, {}); pushMessage = await checkTask(roleId, taskType, 1, true, {}, funcs);
} }
} }
else if (taskType == TASK_TYPE.LOGIN_SERIES) else if (taskType == TASK_TYPE.LOGIN_SERIES)
@@ -33,53 +33,53 @@ export async function checkTaskWithRole(roleId: string, taskType: number, role:
let today = getTodayZeroPoint(); let today = getTodayZeroPoint();
if(today > role.loginTime) { if(today > role.loginTime) {
if(today - role.loginTime > 24 * 60 * 60 ) { if(today - role.loginTime > 24 * 60 * 60 ) {
pushMessage = await checkTask(roleId, taskType, 0, false, {}); pushMessage = await checkTask(roleId, taskType, 0, false, {}, funcs);
} else { } else {
pushMessage = await checkTask(roleId, taskType, 1, true, {}); pushMessage = await checkTask(roleId, taskType, 1, true, {}, funcs);
} }
} }
} }
else if (taskType == TASK_TYPE.FRIEND_NUM) else if (taskType == TASK_TYPE.FRIEND_NUM)
{ {
let { friendCnt } = role; let { friendCnt } = role;
pushMessage = await checkTask(roleId, taskType, friendCnt, false, {}); pushMessage = await checkTask(roleId, taskType, friendCnt, false, {}, funcs);
} }
return pushMessage return pushMessage
} }
export async function checkTaskWithHeroes(roleId: string, taskType: number, heroes: HeroType[]) { export async function checkTaskWithHeroes(roleId: string, taskType: number, heroes: HeroType[], funcs?: number[]) {
let pushMessage = new Array<{type: number, id: number, count: number, received: boolean}>(); let pushMessage = new Array<{type: number, id: number, count: number, received: boolean}>();
for(let hero of heroes) { for(let hero of heroes) {
let singlePush = await checkTaskWithHero(roleId, taskType, hero); let singlePush = await checkTaskWithHero(roleId, taskType, hero, [], funcs);
pushMessage.concat(singlePush); pushMessage.concat(singlePush);
} }
return pushMessage return pushMessage
} }
export async function checkTaskWithHero(roleId: string, taskType: number, hero: HeroType, args?: number[]) { export async function checkTaskWithHero(roleId: string, taskType: number, hero: HeroType, args: number[] = [], funcs?: number[]) {
let pushMessage = new Array<{type: number, id: number, count: number, received: boolean}>(); let pushMessage = new Array<{type: number, id: number, count: number, received: boolean}>();
if(taskType == TASK_TYPE.HERO_STAR_UP) if(taskType == TASK_TYPE.HERO_STAR_UP)
{ {
let dicHero = gameData.hero.get(hero.hid); let dicHero = gameData.hero.get(hero.hid);
let starUp = hero.star - dicHero.initialStars; let starUp = hero.star - dicHero.initialStars;
if(hero.colorStar > 1) starUp += hero.colorStar - 1; if(hero.colorStar > 1) starUp += hero.colorStar - 1;
pushMessage = await checkTask(roleId, taskType, 1, true, { star: starUp }) pushMessage = await checkTask(roleId, taskType, 1, true, { star: starUp }, funcs)
} }
else if(taskType == TASK_TYPE.HERO_QUALITY) else if(taskType == TASK_TYPE.HERO_QUALITY)
{ {
let dicHero = gameData.hero.get(hero.hid); let dicHero = gameData.hero.get(hero.hid);
pushMessage = await checkTask(roleId, taskType, 1, true, { quality: dicHero.quality }); pushMessage = await checkTask(roleId, taskType, 1, true, { quality: dicHero.quality }, funcs);
} }
else if (taskType == TASK_TYPE.HERO_QUALITY_STAR_UP) else if (taskType == TASK_TYPE.HERO_QUALITY_STAR_UP)
{ {
let dicHero = gameData.hero.get(hero.hid); let dicHero = gameData.hero.get(hero.hid);
pushMessage = await checkTask(roleId, taskType, 1, true, { quality: dicHero.quality, star: hero.star }); pushMessage = await checkTask(roleId, taskType, 1, true, { quality: dicHero.quality, star: hero.star }, funcs);
} }
else if (taskType == TASK_TYPE.HERO_LV) else if (taskType == TASK_TYPE.HERO_LV)
{ {
pushMessage = await checkTask(roleId, taskType, 1, true, { lv: hero.lv }); pushMessage = await checkTask(roleId, taskType, 1, true, { lv: hero.lv }, funcs);
} }
else if (taskType == TASK_TYPE.HERO_TRAIN) else if (taskType == TASK_TYPE.HERO_TRAIN)
{ {
@@ -87,13 +87,13 @@ export async function checkTaskWithHero(roleId: string, taskType: number, hero:
let initGrage = gameData.job.get(dicHero.jobid).grade; let initGrage = gameData.job.get(dicHero.jobid).grade;
let curGrade = gameData.job.get(hero.job).grade; let curGrade = gameData.job.get(hero.job).grade;
let count = (curGrade - initGrage) * (ABI_STAGE.END - ABI_STAGE.START) + (hero.jobStage - ABI_STAGE.START); // 训练次数 let count = (curGrade - initGrage) * (ABI_STAGE.END - ABI_STAGE.START) + (hero.jobStage - ABI_STAGE.START); // 训练次数
pushMessage = await checkTask(roleId, taskType, 1, true, { count }); pushMessage = await checkTask(roleId, taskType, 1, true, { count }, funcs);
} }
else if (taskType == TASK_TYPE.HERO_QUALITY_UP) else if (taskType == TASK_TYPE.HERO_QUALITY_UP)
{ {
let dicHero = gameData.hero.get(hero.hid); let dicHero = gameData.hero.get(hero.hid);
if(hero.quality - dicHero.quality == 1) { // 每个武将升品算一次 if(hero.quality - dicHero.quality == 1) { // 每个武将升品算一次
pushMessage = await checkTask(roleId, taskType, 1, true, {}); pushMessage = await checkTask(roleId, taskType, 1, true, {}, funcs);
} }
} }
else if (taskType == TASK_TYPE.HERO_STAGE_UP) else if (taskType == TASK_TYPE.HERO_STAGE_UP)
@@ -102,18 +102,18 @@ export async function checkTaskWithHero(roleId: string, taskType: number, hero:
let initGrage = gameData.job.get(dicHero.jobid).grade; let initGrage = gameData.job.get(dicHero.jobid).grade;
let curGrade = gameData.job.get(hero.job).grade; let curGrade = gameData.job.get(hero.job).grade;
let count = curGrade - initGrage; // 进阶次数 let count = curGrade - initGrage; // 进阶次数
pushMessage = await checkTask(roleId, taskType, 1, true, { count }); pushMessage = await checkTask(roleId, taskType, 1, true, { count }, funcs);
} }
else if (taskType == TASK_TYPE.HERO_FAVOUR_LV) else if (taskType == TASK_TYPE.HERO_FAVOUR_LV)
{ {
pushMessage = await checkTask(roleId, taskType, 1, true, { favourLv: hero.favourLv }) pushMessage = await checkTask(roleId, taskType, 1, true, { favourLv: hero.favourLv }, funcs)
} }
else if (taskType == TASK_TYPE.EQUIP_BY_HERO) else if (taskType == TASK_TYPE.EQUIP_BY_HERO)
{ {
// arg[0] 1:穿上 -1:脱下 // arg[0] 1:穿上 -1:脱下
let { ePlace } = hero; let { ePlace } = hero;
let count = ePlace.filter(cur => cur.equip).length; let count = ePlace.filter(cur => cur.equip).length;
pushMessage = await checkTask(roleId, taskType, args[0], true, { count, isPutOn: args[0] }); pushMessage = await checkTask(roleId, taskType, args[0], true, { count, isPutOn: args[0] }, funcs);
} }
else if (taskType == TASK_TYPE.EQUIP_STRENGTHEN) else if (taskType == TASK_TYPE.EQUIP_STRENGTHEN)
{ {
@@ -121,7 +121,7 @@ export async function checkTaskWithHero(roleId: string, taskType: number, hero:
let { ePlace } = hero; let { ePlace } = hero;
let index = 0; let index = 0;
for(let { lv } of ePlace) { for(let { lv } of ePlace) {
let p = await checkTask(roleId, taskType, 1, true, { oldLv: args[index++], lv }); let p = await checkTask(roleId, taskType, 1, true, { oldLv: args[index++], lv }, funcs);
pushMessage = pushMessage.concat(p); pushMessage = pushMessage.concat(p);
} }
} }
@@ -130,13 +130,13 @@ export async function checkTaskWithHero(roleId: string, taskType: number, hero:
} }
export async function checkTaskWithEquip(roleId: string, taskType: number, equip: EquipType, args?: number[]) { export async function checkTaskWithEquip(roleId: string, taskType: number, equip: EquipType, args: number[] = [], funcs?: number[]) {
let pushMessage = new Array<{type: number, id: number, count: number, received: boolean}>(); let pushMessage = new Array<{type: number, id: number, count: number, received: boolean}>();
if(taskType == TASK_TYPE.EQUIP_QUALITY) if(taskType == TASK_TYPE.EQUIP_QUALITY)
{ {
// args[0] 1:装上 -1:脱下 // args[0] 1:装上 -1:脱下
let dicGood = gameData.goods.get(equip.id); let dicGood = gameData.goods.get(equip.id);
pushMessage = await checkTask(roleId, taskType, args[0], true, { quality: dicGood.quality }) pushMessage = await checkTask(roleId, taskType, args[0], true, { quality: dicGood.quality }, funcs)
} }
else if (taskType == TASK_TYPE.EQUIP_JEWEL) else if (taskType == TASK_TYPE.EQUIP_JEWEL)
{ {
@@ -144,16 +144,16 @@ export async function checkTaskWithEquip(roleId: string, taskType: number, equip
let { holes } = equip; let { holes } = equip;
let jewelCount = holes.filter(cur => cur.jewel > 0).length; let jewelCount = holes.filter(cur => cur.jewel > 0).length;
if(jewelCount > 0 && args[0] <= 0) { // 原来没有,镶嵌上了 if(jewelCount > 0 && args[0] <= 0) { // 原来没有,镶嵌上了
pushMessage = await checkTask(roleId, taskType, 1, true, {}); pushMessage = await checkTask(roleId, taskType, 1, true, {}, funcs);
} else if (jewelCount <= 0 && args[0] > 0) { // 原来镶嵌着,现在没了 } else if (jewelCount <= 0 && args[0] > 0) { // 原来镶嵌着,现在没了
pushMessage = await checkTask(roleId, taskType, -1, true, {}); pushMessage = await checkTask(roleId, taskType, -1, true, {}, funcs);
} }
} }
else if (taskType == TASK_TYPE.EQUIP_COMPOSE_SUIT) else if (taskType == TASK_TYPE.EQUIP_COMPOSE_SUIT)
{ {
let dicGood = gameData.goods.get(equip.id); let dicGood = gameData.goods.get(equip.id);
if(dicGood.suitId) { if(dicGood.suitId) {
pushMessage = await checkTask(roleId, taskType, 1, true, {}); pushMessage = await checkTask(roleId, taskType, 1, true, {}, funcs);
} }
} }
else if (taskType == TASK_TYPE.EQUIP_SUIT) else if (taskType == TASK_TYPE.EQUIP_SUIT)
@@ -177,7 +177,7 @@ export async function checkTaskWithEquip(roleId: string, taskType: number, equip
if(id == equip.id) curCount = count; if(id == equip.id) curCount = count;
} }
if(curCount == minCount) { if(curCount == minCount) {
pushMessage = await checkTask(roleId, taskType, 1, true, {}); pushMessage = await checkTask(roleId, taskType, 1, true, {}, funcs);
} }
} }
} }
@@ -186,21 +186,21 @@ export async function checkTaskWithEquip(roleId: string, taskType: number, equip
// args[0] 原来镶嵌了多少宝石 // args[0] 原来镶嵌了多少宝石
let { holes } = equip; let { holes } = equip;
let jewelCount = holes.filter(cur => cur.jewel > 0).length; let jewelCount = holes.filter(cur => cur.jewel > 0).length;
pushMessage = await checkTask(roleId, taskType, jewelCount - args[0], true, {}); pushMessage = await checkTask(roleId, taskType, jewelCount - args[0], true, {}, funcs);
} }
return pushMessage return pushMessage
} }
export async function checkTaskWithArgs(roleId: string, taskType: number, args: number[]) { export async function checkTaskWithArgs(roleId: string, taskType: number, args: number[], funcs?: number[]) {
let pushMessage = new Array<{type: number, id: number, count: number, received: boolean}>(); let pushMessage = new Array<{type: number, id: number, count: number, received: boolean}>();
if(taskType == TASK_TYPE.ROLE_SCHOOL_PUT_HERO) if(taskType == TASK_TYPE.ROLE_SCHOOL_PUT_HERO)
{ {
let [ hid, preHid ] = args; let [ hid, preHid ] = args;
if(hid > 0 && preHid <= 0) { // 放置 if(hid > 0 && preHid <= 0) { // 放置
pushMessage = await checkTask(roleId, taskType, 1, true, {}); pushMessage = await checkTask(roleId, taskType, 1, true, {}, funcs);
} else if (hid <= 0 && preHid > 0) { // 卸下 } else if (hid <= 0 && preHid > 0) { // 卸下
pushMessage = await checkTask(roleId, taskType, -1, true, {}); pushMessage = await checkTask(roleId, taskType, -1, true, {}, funcs);
} }
} }
else if (taskType == TASK_TYPE.EQUIP_JEWEL_STAGE) else if (taskType == TASK_TYPE.EQUIP_JEWEL_STAGE)
@@ -209,95 +209,95 @@ export async function checkTaskWithArgs(roleId: string, taskType: number, args:
let [putOnJewel, putOffJewel] = args; let [putOnJewel, putOffJewel] = args;
if(putOnJewel > 0) { if(putOnJewel > 0) {
let dicGood = gameData.goods.get(putOnJewel); let dicGood = gameData.goods.get(putOnJewel);
let push = await checkTask(roleId, taskType, 1, true, { stage: dicGood.lvLimited }); let push = await checkTask(roleId, taskType, 1, true, { stage: dicGood.lvLimited }, funcs);
pushMessage.concat(push); pushMessage.concat(push);
} }
if(putOffJewel > 0) { if(putOffJewel > 0) {
let dicGood = gameData.goods.get(putOffJewel); let dicGood = gameData.goods.get(putOffJewel);
let push = await checkTask(roleId, taskType, -1, true, { stage: dicGood.lvLimited }); let push = await checkTask(roleId, taskType, -1, true, { stage: dicGood.lvLimited }, funcs);
pushMessage.concat(push); pushMessage.concat(push);
} }
} }
else if (taskType == TASK_TYPE.CHAT) else if (taskType == TASK_TYPE.CHAT)
{ {
// args[0] 聊天type 1-系统 2-世界 3-军团 4-组队 5-私聊 // args[0] 聊天type 1-系统 2-世界 3-军团 4-组队 5-私聊
pushMessage = await checkTask(roleId, taskType, 1, true, { chatType: args[0] }) pushMessage = await checkTask(roleId, taskType, 1, true, { chatType: args[0] }, funcs)
} }
return pushMessage return pushMessage
} }
export async function checkTaskWithWar(roleId: string, taskType: number, warId: number, heroes: number[], count: number, star: number) { export async function checkTaskWithWar(roleId: string, taskType: number, warId: number, heroes: number[], count: number, star: number, funcs?: number[]) {
let dicWar = gameData.war.get(warId); let dicWar = gameData.war.get(warId);
let pushMessage = new Array<{type: number, id: number, count: number, received: boolean}>(); let pushMessage = new Array<{type: number, id: number, count: number, received: boolean}>();
if(taskType == TASK_TYPE.BATTLE_WITH_HERO) if(taskType == TASK_TYPE.BATTLE_WITH_HERO)
{ {
pushMessage = await checkTask(roleId, taskType, count, true, { warId, heroes }); pushMessage = await checkTask(roleId, taskType, count, true, { warId, heroes }, funcs);
} }
else if (taskType == TASK_TYPE.BATTLE_MAIN) else if (taskType == TASK_TYPE.BATTLE_MAIN)
{ {
if(dicWar.warType == WAR_TYPE.NORMAL) { if(dicWar.warType == WAR_TYPE.NORMAL) {
pushMessage = await checkTask(roleId, taskType, count, true, { warId }); pushMessage = await checkTask(roleId, taskType, count, true, { warId }, funcs);
} }
} }
else if (taskType == TASK_TYPE.BATTLE_MAIN_SWEEP) else if (taskType == TASK_TYPE.BATTLE_MAIN_SWEEP)
{ {
if(dicWar.warType == WAR_TYPE.NORMAL) { if(dicWar.warType == WAR_TYPE.NORMAL) {
pushMessage = await checkTask(roleId, taskType, count, true, {}); pushMessage = await checkTask(roleId, taskType, count, true, {}, funcs);
} }
} }
else if (taskType == TASK_TYPE.BATTLE_DAILY_STAR) else if (taskType == TASK_TYPE.BATTLE_DAILY_STAR)
{ {
if(dicWar.warType == WAR_TYPE.DAILY) { if(dicWar.warType == WAR_TYPE.DAILY) {
pushMessage = await checkTask(roleId, taskType, count, true, { warId, star }); pushMessage = await checkTask(roleId, taskType, count, true, { warId, star }, funcs);
} }
} }
else if (taskType == TASK_TYPE.BATTLE_DAILY) else if (taskType == TASK_TYPE.BATTLE_DAILY)
{ {
if(dicWar.warType == WAR_TYPE.DAILY) { if(dicWar.warType == WAR_TYPE.DAILY) {
pushMessage = await checkTask(roleId, taskType, count, true, { dailyType: dicWar.dailyType }) pushMessage = await checkTask(roleId, taskType, count, true, { dailyType: dicWar.dailyType }, funcs)
} }
} }
else if (taskType == TASK_TYPE.BATTLE_DUNGEON) else if (taskType == TASK_TYPE.BATTLE_DUNGEON)
{ {
if(dicWar.warType == WAR_TYPE.MYSTERY||dicWar.warType == WAR_TYPE.MYSTERY_ELITE) { if(dicWar.warType == WAR_TYPE.MYSTERY||dicWar.warType == WAR_TYPE.MYSTERY_ELITE) {
pushMessage = await checkTask(roleId, taskType, count, true, {}); pushMessage = await checkTask(roleId, taskType, count, true, {}, funcs);
} }
} }
else if (taskType == TASK_TYPE.BATTLE_DUNGEON_WAR) else if (taskType == TASK_TYPE.BATTLE_DUNGEON_WAR)
{ {
if(dicWar.warType == WAR_TYPE.MYSTERY||dicWar.warType == WAR_TYPE.MYSTERY_ELITE) { if(dicWar.warType == WAR_TYPE.MYSTERY||dicWar.warType == WAR_TYPE.MYSTERY_ELITE) {
pushMessage = await checkTask(roleId, taskType, count, true, { warId }); pushMessage = await checkTask(roleId, taskType, count, true, { warId }, funcs);
} }
} }
else if (taskType == TASK_TYPE.BATTLE_TOWER) else if (taskType == TASK_TYPE.BATTLE_TOWER)
{ {
if(dicWar.warType == WAR_TYPE.TOWER) { if(dicWar.warType == WAR_TYPE.TOWER) {
pushMessage = await checkTask(roleId, taskType, count, true, {}); pushMessage = await checkTask(roleId, taskType, count, true, {}, funcs);
} }
} }
else if (taskType == TASK_TYPE.BATTLE_VESTIGE) else if (taskType == TASK_TYPE.BATTLE_VESTIGE)
{ {
if(dicWar.warType == WAR_TYPE.VESTIGE) { if(dicWar.warType == WAR_TYPE.VESTIGE) {
pushMessage = await checkTask(roleId, taskType, count, true, {}); pushMessage = await checkTask(roleId, taskType, count, true, {}, funcs);
} }
} }
else if (taskType == TASK_TYPE.BATTLE_EXPEDITION) else if (taskType == TASK_TYPE.BATTLE_EXPEDITION)
{ {
if(dicWar.warType == WAR_TYPE.EXPEDITION) { if(dicWar.warType == WAR_TYPE.EXPEDITION) {
pushMessage = await checkTask(roleId, taskType, count, true, {}); pushMessage = await checkTask(roleId, taskType, count, true, {}, funcs);
} }
} }
return pushMessage return pushMessage
} }
export async function checkTaskWithGoods(roleId: string, taskType: number, goods: RewardInter[]) { export async function checkTaskWithGoods(roleId: string, taskType: number, goods: ItemInter[], funcs?: number[]) {
let pushMessage = new Array<{type: number, id: number, count: number, received: boolean}>(); let pushMessage = new Array<{type: number, id: number, count: number, received: boolean}>();
if(taskType == TASK_TYPE.COM_BATTLE_DROP) if(taskType == TASK_TYPE.COM_BATTLE_DROP)
{ {
for(let { id, count } of goods) { for(let { id, count } of goods) {
let push = await checkTask(roleId, taskType, count, true, { gid: id }); let push = await checkTask(roleId, taskType, count, true, { gid: id }, funcs);
pushMessage.concat(push); pushMessage.concat(push);
} }
} }
@@ -305,7 +305,7 @@ export async function checkTaskWithGoods(roleId: string, taskType: number, goods
} }
// 根据taskType判断有哪些任务需要check的 // 根据taskType判断有哪些任务需要check的
export async function checkTask(roleId: string, taskType: number, count: number, isInc: boolean, param: TaskParam) { export async function checkTask(roleId: string, taskType: number, count: number, isInc: boolean, param: TaskParam, funcs?: number[]) {
let tasks = gameData.taskType.get(taskType); let tasks = gameData.taskType.get(taskType);
let pushMessage = new Array<{type: number, id: number, count: number, received: boolean}>(); let pushMessage = new Array<{type: number, id: number, count: number, received: boolean}>();
let groups = new Map<number, { task0: DicTask, tasks: DicTask[] }>(); let groups = new Map<number, { task0: DicTask, tasks: DicTask[] }>();
@@ -315,9 +315,13 @@ export async function checkTask(roleId: string, taskType: number, count: number,
} }
groups.get(dicTask.group).tasks.push(dicTask); groups.get(dicTask.group).tasks.push(dicTask);
} }
if(!funcs) {
let role = await RoleModel.findByRoleId(roleId, 'funcs');
funcs = role.funcs||[];
}
for(let [ group, { task0, tasks } ] of groups) { for(let [ group, { task0, tasks } ] of groups) {
let rec = await checkTaskRec(roleId, group, task0, count, isInc, param); let rec = await checkTaskRec(roleId, group, task0, count, isInc, param, funcs);
if(rec) { if(rec) {
for(let dicTask of tasks) { for(let dicTask of tasks) {
if(checkRecResult(rec, dicTask.condition)) { if(checkRecResult(rec, dicTask.condition)) {
@@ -330,8 +334,15 @@ export async function checkTask(roleId: string, taskType: number, count: number,
} }
// 检查各项任务是否达成,达成了就保存到数据库 // 检查各项任务是否达成,达成了就保存到数据库
export async function checkTaskRec(roleId: string, group: number, dicTask: DicTask, count: number, isInc: boolean, param: TaskParam ) { export async function checkTaskRec(roleId: string, group: number, dicTask: DicTask, count: number, isInc: boolean, param: TaskParam, funcs: number[] ) {
let { type, taskParam, taskType } = dicTask; let { type, taskParam, taskType } = dicTask;
let sp = [TASK_TYPE.LOGIN_SUM, TASK_TYPE.LOGIN_SERIES];
if(type == TASK_FUN_TYPE.DAILY && funcs.indexOf(FUNCS_ID.DAILY_TASK) == -1 && sp.indexOf(taskType) == -1) { // 功能未开启
return false;
}
let isMatch = true; // 条件是否满足 let isMatch = true; // 条件是否满足
let checkHistory = false; // 是否检查历史 let checkHistory = false; // 是否检查历史
switch(taskType) { switch(taskType) {
@@ -12,5 +12,26 @@
"conditionType": 1, "conditionType": 1,
"param": 1, "param": 1,
"script": "&" "script": "&"
},
{
"id": 3,
"desc": "主线任务",
"conditionType": 1,
"param": 6,
"script": "&"
},
{
"id": 4,
"desc": "每日任务",
"conditionType": 1,
"param": 15,
"script": "&"
},
{
"id": 5,
"desc": "成就",
"conditionType": 1,
"param": 15,
"script": "&"
} }
] ]