diff --git a/game-server/app/servers/guild/handler/auctionHandler.ts b/game-server/app/servers/guild/handler/auctionHandler.ts index 0ed2190cc..737b29365 100644 --- a/game-server/app/servers/guild/handler/auctionHandler.ts +++ b/game-server/app/servers/guild/handler/auctionHandler.ts @@ -1,6 +1,6 @@ import { DividendModel } from './../../../db/Dividend'; import { Application, BackendSession, ChannelService, HandlerService, pinus, } from "pinus"; -import { AUCTION_STAGE, DEBUG_MAGIC_WORD, STATUS, CURRENCY_BY_TYPE, CURRENCY_TYPE, DATA_NAME, LOT_STATUS, CHANNEL_PREFIX, MAIL_TYPE, ITEM_CHANGE_REASON, TA_EVENT } from "../../../consts"; +import { AUCTION_STAGE, DEBUG_MAGIC_WORD, STATUS, CURRENCY_BY_TYPE, CURRENCY_TYPE, DATA_NAME, LOT_STATUS, CHANNEL_PREFIX, MAIL_TYPE, ITEM_CHANGE_REASON, TA_EVENT, ROLE_RECEIVE_STATUS } from "../../../consts"; import { LotModel } from "../../../db/Lot"; import { ItemReward } from "../../../domain/dbGeneral"; import { genCode, resResult } from "../../../pubUtils/util"; @@ -153,9 +153,10 @@ export class AuctionHandler { if (!dividendData) return resResult(STATUS.DIVIDEND_NOT_READY); const { dividends } = dividendData; const dividend = dividends.find(item => { return item.roleId === roleId }); - if (!dividend) return resResult(STATUS.DIVIDEND_GUILD_PLAYER_ONLY); + if (!dividend || dividend.status == ROLE_RECEIVE_STATUS.YES) return resResult(STATUS.DIVIDEND_GUILD_PLAYER_ONLY); let goods = await addItems(roleId, roleName, sid, [{ id: CURRENCY_BY_TYPE.get(CURRENCY_TYPE.GOLD), count: dividend.total }], ITEM_CHANGE_REASON.AUCTION_DIVIDEND); await DividendModel.updateReceiveStatus(dividendData.code, roleId); + dividend.status = ROLE_RECEIVE_STATUS.YES; return resResult(STATUS.SUCCESS, { dividend, goods }); } diff --git a/game-server/app/servers/guild/handler/guildHandler.ts b/game-server/app/servers/guild/handler/guildHandler.ts index 208a7a352..ee4fa2cee 100644 --- a/game-server/app/servers/guild/handler/guildHandler.ts +++ b/game-server/app/servers/guild/handler/guildHandler.ts @@ -23,7 +23,7 @@ import { removeBossRank } from '../../../services/guildBossService'; import { removeTrainRank } from '../../../services/guildTrainService'; import { pushGuildNoticeUpdateMsg, pushGuildUpStructureMsg, addRoleToGuildChannel, getGuildChannelSid, createGroupMsg, pushGroupMsgToRoom } from '../../../services/chatService'; import { Rank } from '../../../services/rankService'; -import { checkTask } from '../../../services/taskService'; +import { checkActivityTask, checkTask } from '../../../services/taskService'; import { guildInter } from '../../../pubUtils/interface'; import * as dicParam from '../../../pubUtils/dicParam'; import { reportTAEvent } from '../../../services/sdkService'; @@ -870,6 +870,7 @@ export class GuildHandler { // 任务 await checkTask(roleId, sid, TASK_TYPE.GUILD_RECEIVE_BOX, 1, true, {}); + await checkActivityTask(serverId, sid, roleId, TASK_TYPE.GUILD_RECEIVE_BOX, 1); return resResult(STATUS.SUCCESS, { goods, receivedActive: userGuild.receivedActive }); } diff --git a/game-server/app/servers/role/handler/equipHandler.ts b/game-server/app/servers/role/handler/equipHandler.ts index f3f2482ac..f7e399a33 100644 --- a/game-server/app/servers/role/handler/equipHandler.ts +++ b/game-server/app/servers/role/handler/equipHandler.ts @@ -323,6 +323,7 @@ export class EquipHandler { let curEquip = equip; pushEquipRefineSucMsg(roleId, roleName, serverId, curEplace, curEquip ? curEquip.quality : 0); await checkTask(roleId, sid, TASK_TYPE.EQUIP_REFINE, times, true, {}); + await checkActivityTask(serverId, sid, roleId, TASK_TYPE.EQUIP_REFINE, times); await checkActivityTask(serverId, sid, roleId, TASK_TYPE.EQUIP_REFINE_LV, times, { lv: curEplace.refineLv }); return resResult(STATUS.SUCCESS, { curHero }); } @@ -743,6 +744,7 @@ export class EquipHandler { let { ePlace, lv } = hero; let curEquips: Array<{ seqId: number, hid: number }> = []; + let equips: EquipType[] = []; for (let curEPlace of ePlace) { if (!curEPlace.equip) { // 未装备 let sortAttrId = equipTypeToSortAttr.get(curEPlace.id); @@ -763,13 +765,23 @@ export class EquipHandler { let { equip } = sortedAndSuitEquips.shift(); hero = await HeroModel.addEquip(roleId, hero.hid, equip.ePlaceId, equip._id); equip = await EquipModel.putOnOrOff(equip._id, hero.hid); - if (!!equip) curEquips.push(pick(equip, ['seqId', 'hid'])); + if (!!equip) { + curEquips.push(pick(equip, ['seqId', 'hid'])); + equips.push(equip); + } } } } if (curEquips.length > 0) { //任务 + await checkTaskWithHero(roleId, sid, TASK_TYPE.EQUIP_BY_HERO, hero, [1]); + await checkTask(roleId, sid, TASK_TYPE.EQUIP_SUM, curEquips.length, true, {}); + await checkActivityTask(serverId, sid, roleId, TASK_TYPE.EQUIP_SUM, curEquips.length); + for(let equip of equips) { + await checkTaskWithEquip(roleId, sid, TASK_TYPE.EQUIP_QUALITY, equip, [1]); // equipA必然是脱,如果hid不为0说明从一个人穿到另一个人,不算任务 + await checkActivityTask(serverId, sid, roleId, TASK_TYPE.EQUIP_QUALITY, 1, { quality: equip.quality }); + } //英雄满装备且都镶嵌相同阶数的宝石 let { isTask, jewelLevel } = await checkTaskConditionEquipSuitJewelStage(hero) if (isTask) { @@ -860,7 +872,7 @@ export class EquipHandler { await checkTaskWithEquip(roleId, sid, TASK_TYPE.EQUIP_JEWEL_SUM, equip, [oldJewelCount]); //成长任务 await checkActivityTask(serverId, sid, roleId, TASK_TYPE.EQUIP_JEWEL_SUM, 1) - await checkActivityTask(serverId, sid, roleId, TASK_TYPE.EQUIP_JEWEL_STAGE, 1) + await checkActivityTask(serverId, sid, roleId, TASK_TYPE.EQUIP_JEWEL_STAGE, 1, { stage: jewelInfo.lvLimited }) return resResult(STATUS.SUCCESS, { curEquip: { seqId: eid, holes: equip.holes } }); } diff --git a/game-server/app/servers/role/handler/heroHandler.ts b/game-server/app/servers/role/handler/heroHandler.ts index d5e913271..a8863b936 100644 --- a/game-server/app/servers/role/handler/heroHandler.ts +++ b/game-server/app/servers/role/handler/heroHandler.ts @@ -184,6 +184,7 @@ export class HeroHandler { await calAllHeroCe(HERO_SYSTEM_TYPE.STAR, sid, roleId, {}, [hid, isUpStar ? 1 : 0]); // 升星可能影响到百家学院全局加成 // 任务 await checkTaskWithHero(roleId, sid, TASK_TYPE.HERO_STAR_UP, hero); + await checkActivityTask(serverId, sid, roleId, TASK_TYPE.HERO_STAR_UP, 1); await checkTaskWithHero(roleId, sid, TASK_TYPE.HERO_QUALITY_STAR_UP, hero); //成长任务 await checkActivityTask(serverId, sid, roleId, TASK_TYPE.HERO_QUALITY_STAR_UP, 1, { quality: dicHero.quality, star: hero.star }); @@ -317,6 +318,7 @@ export class HeroHandler { ; // 任务 await checkTaskWithHero(roleId, sid, TASK_TYPE.HERO_STAR_UP, hero); + await checkActivityTask(serverId, sid, roleId, TASK_TYPE.HERO_STAR_UP, 1); await checkTask(roleId, sid, TASK_TYPE.HERO_WAKE_UP, 1, true, {}); await checkActivityTask(serverId, sid, roleId, TASK_TYPE.HERO_QUALITY_WAKE_UP_COUNT, 1, { quality: hero.quality }); await checkActivityTask(serverId, sid, roleId, TASK_TYPE.HERO_WAKE_UP_COUNT, 1, { hid: hid }); @@ -475,6 +477,7 @@ export class HeroHandler { async heroGiveFavor(msg: { hid: number, type: number }, session: BackendSession) { let roleId: string = session.get('roleId'); let sid: string = session.get('sid'); + let serverId: number = session.get('serverId'); let { hid, type } = msg; @@ -542,6 +545,7 @@ export class HeroHandler { // 任务 await checkTaskWithHero(roleId, sid, TASK_TYPE.HERO_FAVOUR_LV, hero, [oldLv]); + await checkActivityTask(serverId, sid, roleId, TASK_TYPE.HERO_FAVOUR_LV, 1, { lv: newLv, oldLv }); } else { hero = await HeroModel.updateHeroInfo(roleId, hero.hid, { favour: newExp, favourLv: newLv }); } diff --git a/game-server/app/servers/role/handler/roleHandler.ts b/game-server/app/servers/role/handler/roleHandler.ts index fe353ffdc..91b2df491 100644 --- a/game-server/app/servers/role/handler/roleHandler.ts +++ b/game-server/app/servers/role/handler/roleHandler.ts @@ -124,6 +124,7 @@ export class RoleHandler { let { id, count } = msg; let roleId = session.get('roleId'); let sid: string = session.get('sid'); + let serverId: number = session.get('serverId'); let role = await RoleModel.findByRoleId(roleId, 'roleId teraphs gold coin'); @@ -148,6 +149,7 @@ export class RoleHandler { // 任务 await checkTask(roleId, sid, TASK_TYPE.ROLE_TERAPH_STRENGTHEN, count, true, {}); + await checkActivityTask(serverId, sid, roleId, TASK_TYPE.ROLE_TERAPH_STRENGTHEN, count); return resResult(STATUS.SUCCESS, { roleId, teraphs: calResult.role.teraphs, criAttr }); } @@ -264,7 +266,7 @@ export class RoleHandler { async unlockSchoolPosition(msg: { schoolId: number, positionId: number }, session: BackendSession) { let roleId = session.get('roleId'); let sid = session.get('sid'); - + let serverId = session.get('serverId'); let { schoolId, positionId } = msg; if (!gameData.school.has(schoolId)) { @@ -291,6 +293,7 @@ export class RoleHandler { // 任务 await checkTask(roleId, sid, TASK_TYPE.ROLE_SCHOOL_UNLOCK, 1, true, {}); + await checkActivityTask(serverId, sid, roleId, TASK_TYPE.ROLE_SCHOOL_UNLOCK, 1) return resResult(STATUS.SUCCESS, { schoolId, positionId, hid: curSchool.hid, isOpen: curSchool.isOpen @@ -357,7 +360,7 @@ export class RoleHandler { await 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, TASK_TYPE.HERO_FAVOUR_LV, hero, [favourLv]); if (!scrollActive) await checkTask(roleId, sid, TASK_TYPE.ROLE_SCROLL_ACTIVE, 1, true, {}); return resResult(STATUS.SUCCESS, { diff --git a/game-server/app/services/taskService.ts b/game-server/app/services/taskService.ts index 9917009c6..68aede16b 100644 --- a/game-server/app/services/taskService.ts +++ b/game-server/app/services/taskService.ts @@ -116,11 +116,12 @@ export async function checkTaskInBattleEnd(serverId: number, roleId: string, sid } else if (dicWar.warType == WAR_TYPE.EXPEDITION) { await checkActivityTask(serverId, sid, roleId, TASK_TYPE.BATTLE_EXPEDITION, 1) } else if (dicWar.warType == WAR_TYPE.MYSTERY || dicWar.warType == WAR_TYPE.MYSTERY_ELITE) { + await checkActivityTask(serverId, sid, roleId, TASK_TYPE.BATTLE_DUNGEON, 1) await checkActivityTask(serverId, sid, roleId, TASK_TYPE.BATTLE_DUNGEON_WAR, 1, { warId: battleId }) } else if (dicWar.warType == WAR_TYPE.TOWER) { await checkActivityTask(serverId, sid, roleId, TASK_TYPE.BATTLE_TOWER, 1) } else if (dicWar.warType == WAR_TYPE.DAILY) { - await checkActivityTask(serverId, sid, roleId, TASK_TYPE.BATTLE_DAILY, 1, { warId: battleId }) + await checkActivityTask(serverId, sid, roleId, TASK_TYPE.BATTLE_DAILY, 1, { dailyType: dicWar.dailyType }) } } diff --git a/shared/pubUtils/taskUtil.ts b/shared/pubUtils/taskUtil.ts index 950ea0b95..1f9012267 100644 --- a/shared/pubUtils/taskUtil.ts +++ b/shared/pubUtils/taskUtil.ts @@ -523,6 +523,7 @@ export async function accomplishTask(serverId: number, roleId: string, taskType: let taskRecord = await ActivityGrowthModel.findDataByCellIndex(serverId, activity.activityId, roleId, task.dayIndex, task.cellIndex, task.taskType); let recordData = taskRecord && taskRecord.data ? JSON.parse(taskRecord.data) : null; let { addCount, record } = isComplete(roleId, task.taskType, task.taskParam, count, activity.activityId, parma, recordData); + if (addCount) { if (taskType == TASK_TYPE.ROLE_LV || taskType == TASK_TYPE.ROLE_TITLE || taskType == TASK_TYPE.BATTLE_TOWER_LV) { let playerRecord = await ActivityGrowthModel.setTaskCount(serverId, activity.activityId, roleId, task.dayIndex, task.cellIndex, task.taskType, addCount); @@ -549,6 +550,7 @@ export async function accomplishTask(serverId: number, roleId: string, taskType: let taskRecord = await ActivityDailyChallengesModel.findDataByCellIndex(serverId, activity.activityId, roleId, task.dayIndex, task.cellIndex, task.taskType) let recordData = taskRecord && taskRecord.data ? JSON.parse(taskRecord.data) : null let { addCount, record } = isComplete(roleId, task.taskType, task.taskParam, count, activity.activityId, parma, recordData); + console.log('******* dailyChallenge', addCount, record) if (addCount) { if (taskType == TASK_TYPE.ROLE_LV || taskType == TASK_TYPE.ROLE_TITLE || taskType == TASK_TYPE.BATTLE_TOWER_LV) { let playerRecord = await ActivityDailyChallengesModel.setTaskCount(serverId, activity.activityId, roleId, task.dayIndex, task.cellIndex, task.taskType, addCount); @@ -938,6 +940,9 @@ export function isComplete(_roleId: string, taskType: TASK_TYPE, taskParam: stri addCount = (param[1] == paramObj.lv) ? count : 0; break; + case TASK_TYPE.EQUIP_REFINE: + addCount = count; + break; case TASK_TYPE.BATTLE_MAIN: addCount = (param[1] == paramObj.warId) ? 1 : 0; break; @@ -1068,6 +1073,11 @@ export function isComplete(_roleId: string, taskType: TASK_TYPE, taskParam: stri } break; } + case TASK_TYPE.BATTLE_DUNGEON: + { + addCount = count; + break; + } case TASK_TYPE.HERO_NUM: { addCount = count; @@ -1163,7 +1173,7 @@ export function isComplete(_roleId: string, taskType: TASK_TYPE, taskParam: stri } case TASK_TYPE.CHAT: { - if (param[0] == paramObj.chatType) { + if (param[0] == 0 || param[0] == paramObj.chatType) { addCount = count; } break; @@ -1185,7 +1195,8 @@ export function isComplete(_roleId: string, taskType: TASK_TYPE, taskParam: stri } case TASK_TYPE.BATTLE_DAILY: { - if (param[0] == 0 || param[0] == paramObj.warId) { + console.log('*********** TASK_TYPE.BATTLE_DAILY', param[0], paramObj.dailyType) + if (param[0] == 0 || param[0] == paramObj.dailyType) { addCount = count; } break; @@ -1195,6 +1206,23 @@ export function isComplete(_roleId: string, taskType: TASK_TYPE, taskParam: stri addCount = count; break; } + case TASK_TYPE.ROLE_TERAPH_STRENGTHEN: + addCount = count; + break; + case TASK_TYPE.HERO_FAVOUR_LV: + if(paramObj.lv >= param[1] && paramObj.oldLv < param[1]) { + addCount = count; + } + break; + case TASK_TYPE.GUILD_RECEIVE_BOX: + addCount = count; + break; + case TASK_TYPE.ROLE_SCHOOL_UNLOCK: + addCount = count; + break; + case TASK_TYPE.HERO_STAR_UP: + addCount = count; + break; default: addCount = 0; break;