diff --git a/game-server/app/servers/role/handler/taskHandler.ts b/game-server/app/servers/role/handler/taskHandler.ts index d131285fa..a996f7e28 100644 --- a/game-server/app/servers/role/handler/taskHandler.ts +++ b/game-server/app/servers/role/handler/taskHandler.ts @@ -205,4 +205,57 @@ export class ShopHandler { let curTask = await getCurTask(roleId, session);; return resResult(STATUS.SUCCESS, curTask); } + + async debugCompleteMainStage(msg: { }, session: BackendSession) { + let roleId = session.get('roleId'); + let sid = session.get('sid'); + + + // 检查 + let userTask = await UserTaskModel.findByRole(roleId); + let stage = userTask.mainTaskStage; + + let dicMainStage = gameData.mainTaskStage.get(stage); + if(!dicMainStage) return resResult(STATUS.DIC_DATA_NOT_FOUND); + + let recs = await UserTaskRecModel.getReceiveRec(roleId, TASK_FUN_TYPE.MAIN); + for(let id of dicMainStage.mainTaskId) { + let dicTask = gameData.tasks.get(TASK_FUN_TYPE.MAIN)?.get(id); + if(!dicTask) continue; + let curRecs = recs.find(cur => cur.received.includes(id)); + if(!curRecs) { + await UserTaskRecModel.setTaskRec(roleId, TASK_FUN_TYPE.MAIN, dicTask.taskType, dicTask.group, dicTask.condition); + }; + } + let mainTask = await getMainTask(roleId, userTask); + return resResult(STATUS.SUCCESS, { mainTask }); + } + + async debugIncPoint(msg: { type: number, point: number }, session: BackendSession) { + let roleId = session.get('roleId'); + let sid = session.get('sid'); + let { type, point: incPoint } = msg; + + + // 每日、成就增加积分 + let point = 0, weeklyPoint = 0; + if(type == TASK_FUN_TYPE.DAILY) { // 增加积分 + let userTask = await UserTaskModel.findByRole(roleId); + let curWeek = getCurWeekDate(1, 5); + if(curWeek > userTask.dailyTaskRefWeekly) { + userTask = await UserTaskModel.resetDailyScore(roleId, incPoint, curWeek); + } else { + userTask = await UserTaskModel.incInfo(roleId, { dailyTaskPoint: incPoint, dailyTaskPointWeekly: incPoint }); + } + point = userTask.dailyTaskPoint; + weeklyPoint = userTask.dailyTaskPointWeekly; + } else if (type == TASK_FUN_TYPE.ACHIEVEMENT) { + let userTask = await UserTaskModel.incInfo(roleId, { achievementPoint: incPoint }); + point = userTask.achievementPoint; + } + + return resResult(STATUS.SUCCESS, { + type, point, weeklyPoint + }); + } } \ No newline at end of file diff --git a/game-server/app/services/funcSwitchService.ts b/game-server/app/services/funcSwitchService.ts index 1bb4178dd..04463e3b8 100644 --- a/game-server/app/services/funcSwitchService.ts +++ b/game-server/app/services/funcSwitchService.ts @@ -17,7 +17,7 @@ export async function switchOnFunc(roleId: string, type: number, param: number, await eventOnPlayerLvUp(roleId, param, addFuncs, dataFuncs); break; case FUNC_OPT_TYPE.BATTLE_END://战斗结束,触发事件 - //开启奇遇 + // 暂无 break; } if (addFuncs.length) { diff --git a/game-server/app/services/playerEventService.ts b/game-server/app/services/playerEventService.ts index 6d41a41e7..97e147798 100644 --- a/game-server/app/services/playerEventService.ts +++ b/game-server/app/services/playerEventService.ts @@ -1,6 +1,6 @@ import { checkPvp, findPvpDefByRoleId } from '../services/pvpService' -import { getFuncsSwitch } from '../pubUtils/data'; +import { getFuncsSwitch, gameData } from '../pubUtils/data'; import { FUNCS_ID, FUNC_OPT_TYPE } from '../consts/constModules/sysConst'; import { RoleModel } from '../db/Role'; /** @@ -12,21 +12,20 @@ import { RoleModel } from '../db/Role'; */ export async function eventOnPlayerLvUp(roleId: string, lv: number, addFuncs: Array, dataFuncs: Array) { - if (!dataFuncs.includes(FUNCS_ID.PVP)) {//开启pvp - let res = getFuncsSwitch(FUNCS_ID.PVP); - if (!res || lv >= res.param) { - let role = await RoleModel.findByRoleId(roleId, null, true); - await checkPvp(role); - addFuncs.push(FUNCS_ID.PVP); - } - } - - if (!dataFuncs.includes(FUNCS_ID.EVENT)) {//开启奇遇 - let res = getFuncsSwitch(FUNCS_ID.EVENT); - if (res && lv >= res.param) { - addFuncs.push(FUNCS_ID.EVENT); - } + for(let [id, dicFunSwitch] of gameData.funcsSwitch) { + if(dicFunSwitch.conditionType != FUNC_OPT_TYPE.LEVEL_UP) continue; + if (dataFuncs.includes(id)) continue; // 已开启过了 + + if (dicFunSwitch && lv >= dicFunSwitch.param) { + addFuncs.push(id); + + if(id == FUNCS_ID.PVP) { + let role = await RoleModel.findByRoleId(roleId, null, true); + await checkPvp(role); + } + } } + } export async function loginRefresh(roleId: string) { diff --git a/shared/pubUtils/taskUtil.ts b/shared/pubUtils/taskUtil.ts index 8b1be655e..3cd898197 100644 --- a/shared/pubUtils/taskUtil.ts +++ b/shared/pubUtils/taskUtil.ts @@ -310,20 +310,24 @@ export async function checkTaskWithGoods(roleId: string, taskType: number, goods export async function checkTask(roleId: string, taskType: number, count: number, isInc: boolean, param: TaskParam, funcs?: number[]) { let tasks = gameData.taskType.get(taskType)||[]; let pushMessage = new Array(); - let groups = new Map(); + let groups = new Map(); for(let dicTask of tasks) { - if(!groups.has(dicTask.group)) { - groups.set(dicTask.group, { task0: dicTask, tasks: new Array() }); + if(!groups.has(`${dicTask.type}_${dicTask.group}`)) { + groups.set(`${dicTask.type}_${dicTask.group}`, { task0: dicTask, tasks: new Array() }); } - groups.get(dicTask.group).tasks.push(dicTask); + groups.get(`${dicTask.type}_${dicTask.group}`).tasks.push(dicTask); } if(!funcs) { let role = await RoleModel.findByRoleId(roleId, 'funcs'); funcs = role.funcs||[]; } - for(let [ group, { task0, tasks } ] of groups) { - let rec = await checkTaskRec(roleId, group, task0, count, isInc, param, funcs); + for(let [ typeAndGroup, { task0, tasks } ] of groups) { + let arr = typeAndGroup.split('_'); + let type = parseInt(arr[0]); + let group = parseInt(arr[1]); + + let rec = await checkTaskRec(roleId, type, group, task0, count, isInc, param, funcs); if(rec) { for(let dicTask of tasks) { if(checkRecResult(rec, dicTask.id, dicTask.condition)) { @@ -337,8 +341,8 @@ 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, funcs: number[] ) { - let { type, taskParam, taskType } = dicTask; +export async function checkTaskRec(roleId: string, type: number, group: number, dicTask: DicTask, count: number, isInc: boolean, param: TaskParam, funcs: number[] ) { + let { 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) { // 功能未开启