diff --git a/game-server/app/servers/gm/handler/gmHandler.ts b/game-server/app/servers/gm/handler/gmHandler.ts index 92dccf196..e7d743248 100644 --- a/game-server/app/servers/gm/handler/gmHandler.ts +++ b/game-server/app/servers/gm/handler/gmHandler.ts @@ -358,7 +358,7 @@ export class GmHandler { await pinus.app.rpc.systimer.systimerRemote.setDicAuctionTime.broadcast(startTimes[0], endActivity, startGuildAuction, endGuildAuction, startWorldAuction, endWorldAuction); await pinus.app.rpc.guild.guildActivityRemote.setDay.broadcast(day); await pinus.app.rpc.systimer.systimerRemote.setDay.broadcast(day); - + await pinus.app.rpc.guild.guildActivityRemote.guildActivityEnd.broadcast(aid); // 清空旧数据 if (day <= 2) { diff --git a/game-server/app/servers/guild/handler/cityActivityHandler.ts b/game-server/app/servers/guild/handler/cityActivityHandler.ts index 393b1a0ea..f0b8da25d 100644 --- a/game-server/app/servers/guild/handler/cityActivityHandler.ts +++ b/game-server/app/servers/guild/handler/cityActivityHandler.ts @@ -71,7 +71,7 @@ export class CityActivityHandler { let gateHp = obj.getGateHpAndInc(serverId, cityId, dicCity.hp); let guildActivityRec = await GuildActivityRecordModel.getRecord(guildCode, serverId, this.aid); - if (!guildActivityRec) return resResult(STATUS.INTERNAL_ERR); + if (!guildActivityRec) return resResult(STATUS.WRONG_PARMS); let myGuildActivityRec = await UserGuildActivityRecModel.findByRoleId(roleId, guildActivityRec.code); let challengeTime = 0; @@ -139,8 +139,8 @@ export class CityActivityHandler { } // 开始挑战 - async checkBattle(msg: guildInter & { cityId: number, costGold: boolean, heroes: number[] }, session: BackendSession) { - let { cityId, costGold, heroes, myUserGuild: userGuild } = msg; + async checkBattle(msg: guildInter & { cityId: number, heroes: number[] }, session: BackendSession) { + let { cityId, heroes, myUserGuild: userGuild } = msg; if (!heroes || heroes.length <= 0) return resResult(STATUS.WRONG_PARMS); const roleId = session.get('roleId'); @@ -163,26 +163,18 @@ export class CityActivityHandler { let statusResult = getGuildActivityStatus(this.aid); if (!statusResult) return resResult(STATUS.DIC_DATA_NOT_FOUND); - // TODO 测试完成后去掉这条判断 - // if(!statusResult.isOpen) return resResult(STATUS.GUILD_ACTIVITY_NOT_OPEN); + if(!statusResult.isOpen) return resResult(STATUS.GUILD_ACTIVITY_NOT_OPEN); let guildActivityRec = await GuildActivityRecordModel.getRecord(guildCode, serverId, this.aid); - if (!guildActivityRec) return resResult(STATUS.INTERNAL_ERR); + if (!guildActivityRec) return resResult(STATUS.WRONG_PARMS); let { code: sourceCode } = guildActivityRec; let myGuildActivityRec = await UserGuildActivityRecModel.getRecord(roleId, roleName, guildCode, serverId, sourceCode, this.aid); - if (costGold) { - let goldObj = getGoldObject(GUILDACTIVITY.CITYACTIVITY_CD_COST); - const costRes = await handleCost(roleId, sid, [goldObj]); - if (!costRes) { - return resResult(STATUS.BATTLE_GOLD_NOT_ENOUGH); - } - } else { - if (myGuildActivityRec.challengeTime > nowSeconds()) { - return resResult(STATUS.CHALLENGE_TIME_NOT_REACH); - } + if (myGuildActivityRec.challengeTime > nowSeconds()) { + return resResult(STATUS.CHALLENGE_TIME_NOT_REACH); } + myGuildActivityRec = await UserGuildActivityRecModel.incChallengeCnt(myGuildActivityRec.code, heroes); let { code } = myGuildActivityRec; @@ -212,6 +204,36 @@ export class CityActivityHandler { }); } + async resetChallengeTime(msg: {}, session: BackendSession) { + const roleId = session.get('roleId'); + const roleName = session.get('roleName'); + const serverId = session.get('serverId'); + const guildCode = session.get('guildCode'); + const sid = session.get('sid'); + + if (!guildCode) return resResult(STATUS.GUILD_AUTH_NOT_ENOUGH); + + let guildActivityRec = await GuildActivityRecordModel.getRecord(guildCode, serverId, this.aid); + if (!guildActivityRec) return resResult(STATUS.WRONG_PARMS); + + let { code: sourceCode } = guildActivityRec; + + let myGuildActivityRec = await UserGuildActivityRecModel.getRecord(roleId, roleName, guildCode, serverId, sourceCode, this.aid); + + let goldObj = getGoldObject(GUILDACTIVITY.CITYACTIVITY_CD_COST); + const costRes = await handleCost(roleId, sid, [goldObj]); + if (!costRes) { + return resResult(STATUS.BATTLE_GOLD_NOT_ENOUGH); + } + + myGuildActivityRec = await UserGuildActivityRecModel.updateInfo(myGuildActivityRec.code, { challengeTime: 0 }); + + return resResult(STATUS.SUCCESS, { + challengeTime: myGuildActivityRec.challengeTime + }); + } + + // 上报城门受到伤害 async hitGate(msg: { cityId: number, code: string, damage: number, hid: number, round: number }, session: BackendSession) { const roleId = session.get('roleId'); @@ -230,8 +252,7 @@ export class CityActivityHandler { let statusResult = getGuildActivityStatus(this.aid); if (!statusResult) return resResult(STATUS.DIC_DATA_NOT_FOUND); - // TODO 测试完成后去掉这条判断 - // if(!statusResult.isOpen) return resResult(STATUS.GUILD_ACTIVITY_NOT_OPEN); + if(!statusResult.isOpen) return resResult(STATUS.GUILD_ACTIVITY_NOT_OPEN); let pushResult = await UserGuildActivityRecModel.pushCityRecord(code, { round, hid, damage }); if (!pushResult) return resResult(STATUS.WRONG_PARMS); @@ -254,6 +275,7 @@ export class CityActivityHandler { // 推送 城门血量 let chatSid = await getCityChannelSid(cityId); pinus.app.rpc.chat.guildRemote.pushCityGateHp.toServer(chatSid, cityId, gateHp); + await pinus.app.rpc.guild.guildActivityRemote.sendRankToGuilds.broadcast(this.aid); return resResult(STATUS.SUCCESS, { code, @@ -290,7 +312,7 @@ export class CityActivityHandler { challengeTime = Math.floor(currentTime/1000) + GUILDACTIVITY.CITYACTIVITY_CHALLENGE_CD; } let myGuildActivityRec = await UserGuildActivityRecModel.updateInfo(code, { isSuccess, isCompleted: true, cityId, challengeTime }); - if (!myGuildActivityRec) return resResult(STATUS.INTERNAL_ERR); + if (!myGuildActivityRec) return resResult(STATUS.WRONG_PARMS); // 发放活跃 await addActive(roleId, serverId, GUILD_POINT_WAYS.ACTIVITY); //获得活跃值 diff --git a/game-server/app/services/rankService.ts b/game-server/app/services/rankService.ts index 73dd3e2aa..189922116 100644 --- a/game-server/app/services/rankService.ts +++ b/game-server/app/services/rankService.ts @@ -791,22 +791,20 @@ export class Rank { private async generateUnionRank() { let unionKey = this.keyName.getUnionName(); // 联合的key - let existsKey = await redisClient().existsAsync(unionKey); - if (!existsKey) { - let keys = [], weights = []; - this.valueConfig.forEach(({ isMain, name, weight }) => { - if(isMain) { - keys.push(this.keyName.getName()); - } else { - keys.push(this.keyName.getNameWithPlus(name)); - } - weights.push(Math.pow(10, weight)) - }) + let keys = [], weights = []; + this.valueConfig.forEach(({ isMain, name, weight }) => { + if(isMain) { + keys.push(this.keyName.getName()); + } else { + keys.push(this.keyName.getNameWithPlus(name)); + } + weights.push(Math.pow(10, weight)) - await redisClient().zunionstoreAsync(unionKey, 2, ...keys, 'WEIGHTS', ...weights); - await redisClient().expireAsync(unionKey, this.unionRankLife); // 10秒更新一次 - } + }) + + await redisClient().zunionstoreAsync(unionKey, 2, ...keys, 'WEIGHTS', ...weights); + await redisClient().expireAsync(unionKey, this.unionRankLife); // 10秒更新一次 return unionKey; } diff --git a/shared/consts/statusCode.ts b/shared/consts/statusCode.ts index c75f0df00..4fc517303 100644 --- a/shared/consts/statusCode.ts +++ b/shared/consts/statusCode.ts @@ -221,6 +221,7 @@ export const STATUS = { RACE_HAS_JOIN: { code: 21107, simStr: '已登机' }, CITY_IS_GUARD: { code: 21108, simStr: '活动已开启' }, CAN_NOT_DECLARE: { code: 21109, simStr: '该城池不可宣战' }, + CHALLENGE_TIME_NOT_NEED_RESET: { code: 21110, simStr: '不需要重置' }, // 通用 30000 - 30099 DIC_DATA_NOT_FOUND: { code: 30000, simStr: '数据表未找到' },