diff --git a/game-server/app/servers/battle/handler/expeditionBattleHandler.ts b/game-server/app/servers/battle/handler/expeditionBattleHandler.ts index 8c529afbd..845a19e84 100644 --- a/game-server/app/servers/battle/handler/expeditionBattleHandler.ts +++ b/game-server/app/servers/battle/handler/expeditionBattleHandler.ts @@ -253,7 +253,7 @@ export class ExpeditionBattleHandler { await RoleModel.updateRoleInfo(roleId, { warStar: newWarStars }); } } - await checkTaskInBattleEnd(serverId, roleId, sid, battleId, dbHeroes, star); + await checkTaskInBattleEnd(serverId, roleId, sid, battleId, dbHeroes, star, isSuccess); return resResult(STATUS.SUCCESS, { expeditionCode, expeditionId, diff --git a/game-server/app/services/playerCeService.ts b/game-server/app/services/playerCeService.ts index c6c2e75f4..bbf3d2308 100644 --- a/game-server/app/services/playerCeService.ts +++ b/game-server/app/services/playerCeService.ts @@ -380,6 +380,10 @@ async function updateRank(roleId: string, serverId: number, topLineupCe: number, if(guild) { await updateUserInfo(REDIS_KEY.GUILD_INFO, guild.code, [{ field: 'guildCe', value: guild.guildCe }]); } + + // 武将数量 + let r6 = new Rank(REDIS_KEY.HERO_NUM_RANK, { serverId }); + await r6.setRankWithRoleInfo(roleId, role.heroNum, role.heroNumUpdatedAt, role); } export async function getSumCe(roleId: string, num: number) { diff --git a/game-server/app/services/role/createHero.ts b/game-server/app/services/role/createHero.ts index ae33f2275..c8c804a72 100644 --- a/game-server/app/services/role/createHero.ts +++ b/game-server/app/services/role/createHero.ts @@ -11,9 +11,10 @@ import { transPiece } from "./util"; import { addItems, unlockFigure, } from "./rewardService"; import { CounterModel } from "../../db/Counter"; import { calculateCes } from "../playerCeService"; -import { RoleUpdate } from "../../db/Role"; +import { RoleModel, RoleType, RoleUpdate } from "../../db/Role"; import { sendMessageToUser, sendMessageToUserWithSuc } from "../pushService"; import { checkTaskInCreateHero } from "../task/taskService"; +import { Rank } from "../rankService"; /** * 创建多个武将 @@ -87,7 +88,6 @@ export async function createHero(roleId: string, roleName: string, sid: string, return result; } - function getSkinPushMsg(resultHeroes: HeroType[], skins: SkinUpdate[]) { let skinPushMessages: {heros: {skins: HeroSkin[], hid: number}[], skins: {id: number, hid: number, inc: number, reason: number }[]} = { heros: [], skins:[] }; // 皮肤推送信息 for(let { hid, skins } of resultHeroes) { diff --git a/game-server/app/services/roleService.ts b/game-server/app/services/roleService.ts index d17d1e206..0b0f94128 100644 --- a/game-server/app/services/roleService.ts +++ b/game-server/app/services/roleService.ts @@ -144,7 +144,12 @@ export function addConsumeToHero(oldConsume: Reward[] = [], consumes: ItemInter[ if(!oldConsume) oldConsume = []; let consumeMap = new Map(); for(let { id, count = 1 } of consumes) { - consumeMap.set(id, count); + if(!consumeMap.has(id)) { + consumeMap.set(id, count); + } else { + consumeMap.set(id, consumeMap.get(id) + count); + } + } let newConsume: Reward[] = []; for(let {id, count} of oldConsume) { diff --git a/game-server/app/services/task/taskObj.ts b/game-server/app/services/task/taskObj.ts index 4e15dc219..ce7cfd291 100644 --- a/game-server/app/services/task/taskObj.ts +++ b/game-server/app/services/task/taskObj.ts @@ -951,10 +951,9 @@ export class CheckSingleTask { let addCount = 0; for(let eplaceId of ePlaceIds) { let { oldEquip, newEquip } = getEquipById(oldEplace, newEplace, eplaceId); - if(oldEquip.lv < param[1] && newEquip.lv >= param[1]) { + console.log('##### oldEquip', oldEquip.lv, newEquip.lv, dicTaskParam[1]) + if(oldEquip.lv < dicTaskParam[1] && newEquip.lv >= dicTaskParam[1]) { addCount += 1; - } else if (oldEquip.lv >= param[1] && newEquip.lv < param[1]) { - addCount -= 1; } } if(addCount != 0) { @@ -981,9 +980,9 @@ export class CheckSingleTask { let oldStoneCnt = oldEquip.stones.filter(cur => cur.stone != 0).length; let newStoneCnt = newEquip.stones.filter(cur => cur.stone != 0).length; - if(oldStoneCnt < param[1] && newStoneCnt >= param[1]) { + if(oldStoneCnt < dicTaskParam[1] && newStoneCnt >= dicTaskParam[1]) { result = { inc: 1 }; - } else if (oldStoneCnt >= param[1] && newStoneCnt < param[1]) { + } else if (oldStoneCnt >= dicTaskParam[1] && newStoneCnt < dicTaskParam[1]) { result = { inc: -1 }; } break; @@ -993,7 +992,7 @@ export class CheckSingleTask { let { oldEquip, newEquip } = param; let oldStar = oldEquip?.star||0; let star = newEquip?.star||0 - if(oldStar < param[1] && star >= param[1]) { + if(oldStar < dicTaskParam[1] && star >= dicTaskParam[1]) { result = { inc: 1 }; }; break; @@ -1042,7 +1041,7 @@ export class CheckSingleTask { if(oldStar >= star) oldCount++; if(newStar >= star) count++; } - if(oldCount < param[1] && count >= param[1]) { + if(oldCount < dicTaskParam[1] && count >= dicTaskParam[1]) { result = { inc: 1 }; } break; @@ -1066,7 +1065,7 @@ export class CheckSingleTask { let { oldEquip, newEquip } = param; let oldQuality = oldEquip?.quality||0; let quality = newEquip?.quality||0; - if(oldQuality < param[1] && quality >= param[1]) { + if(oldQuality < dicTaskParam[1] && quality >= dicTaskParam[1]) { result = { inc: 1 }; } break; @@ -1132,11 +1131,11 @@ export class CheckSingleTask { let dicStone = gameData.stone.get(cur.stone); return dicStone?dicStone.lv: 0; }); - let oldCount = oldStoneLvs.filter(lv => lv >= param[2]).length; - let newCount = newStoneLvs.filter(lv => lv >= param[2]).length; - if(oldCount < param[1] && newCount >= param[1]) { + let oldCount = oldStoneLvs.filter(lv => lv >= dicTaskParam[2]).length; + let newCount = newStoneLvs.filter(lv => lv >= dicTaskParam[2]).length; + if(oldCount < dicTaskParam[1] && newCount >= dicTaskParam[1]) { result = { inc: 1 }; - } else if (oldCount >= param[1] && newCount < param[1]) { + } else if (oldCount >= dicTaskParam[1] && newCount < dicTaskParam[1]) { result = { inc: -1 } } break; @@ -1156,9 +1155,9 @@ export class CheckSingleTask { return isRandSeUnLock(newJewel.id, se.id, newEquip.stones); }).length; - if(oldUnlockSeCnt < param[1] && newUnlockSeCnt >= param[1]) { + if(oldUnlockSeCnt < dicTaskParam[1] && newUnlockSeCnt >= dicTaskParam[1]) { result = { inc: -1 }; - } else if (oldUnlockSeCnt >= param[1] && newUnlockSeCnt < param[1]) { + } else if (oldUnlockSeCnt >= dicTaskParam[1] && newUnlockSeCnt < dicTaskParam[1]) { result = { inc: 1 }; } break;