From c59121337720876ba0def959d3f0e3555006ca0d Mon Sep 17 00:00:00 2001 From: luying Date: Sat, 4 Mar 2023 10:55:43 +0800 Subject: [PATCH] =?UTF-8?q?=F0=9F=90=9E=20fix(gvg):=20=E4=BF=AE=E5=A4=8Dgv?= =?UTF-8?q?g=E6=BF=80=E6=88=98=E6=9C=9F=E7=A6=BB=E5=BC=80=E5=9F=8E?= =?UTF-8?q?=E6=B1=A0=E5=90=8E=E4=BD=8D=E7=BD=AE=E4=B9=B1=E4=BA=86=E7=9A=84?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- game-server/app/servers/guild/handler/gvgBattleHandler.ts | 5 ++--- shared/consts/statusCode.ts | 1 + shared/db/GVGTeam.ts | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/game-server/app/servers/guild/handler/gvgBattleHandler.ts b/game-server/app/servers/guild/handler/gvgBattleHandler.ts index 79a5287ac..232b72714 100644 --- a/game-server/app/servers/guild/handler/gvgBattleHandler.ts +++ b/game-server/app/servers/guild/handler/gvgBattleHandler.ts @@ -182,11 +182,12 @@ export class GVGBattleHandler { // 每赛季初自己的几支队伍恢复耐久、城市、顺便更新一下自己的玩家名、联军 let teams = await refreshTeams(configId, groupKey, roleId, myLeague); + if(await GVGTeamModel.checkLockTeam(roleId, cityId)) return resResult(STATUS.GVG_BATTLE_TEAM_LOCK_ENTERY_CITY); let gvgUserData = await GVGUserDataModel.findByRole(configId, myLeague.leagueCode, roleId); let originCityId = gvgUserData?.cityId||0; // 检测是否已经在城池中,玩家不在这个城池中时进行处理 if (originCityId != cityId) { - let gvgUserData = await GVGUserDataModel.findByRole(configId, myLeague.leagueCode, roleId); + if(gvgUserData?.cityId > 0) { // 如果leaveCity没有退出成功,玩家还遗留在上一座城中,做一下处理 await leaveCity(true, roleId, serverId, guildCode, myLeague); } @@ -234,8 +235,6 @@ export class GVGBattleHandler { const { cityId } = msg; let { configId, period } = getGVGPeriodData(); - if(await GVGTeamModel.checkLockTeam(roleId)) return resResult(STATUS.GVG_BATTLE_TEAM_LOCK); - // 检测是否已经在城池中 let myLeague = await GVGLeagueModel.findLeagueByGuild(guildCode); if(!myLeague) return resResult(STATUS.GVG_LEAGUE_NOT_EXIST); diff --git a/shared/consts/statusCode.ts b/shared/consts/statusCode.ts index 8521f476a..fc3e3ab23 100644 --- a/shared/consts/statusCode.ts +++ b/shared/consts/statusCode.ts @@ -387,6 +387,7 @@ export const STATUS = { GVG_BATTLE_TEAM_REVIVE: { code: 21421, simStr: '队伍复活中' }, GVG_BATTLE_TEAM_LOCK: { code: 21422, simStr: '正在有玩家挑战您,请等待' }, GVG_BATTLE_TEAM_HAS_SELLTED: { code: 21423, simStr: '该编队已驻守据点了' }, + GVG_BATTLE_TEAM_LOCK_ENTERY_CITY: { code: 21424, simStr: '正在有玩家挑战您,请稍后切换城池' }, // 通用 30000 - 30099 DIC_DATA_NOT_FOUND: { code: 30000, simStr: '数据表未找到' }, diff --git a/shared/db/GVGTeam.ts b/shared/db/GVGTeam.ts index b71c1848a..8450a340e 100644 --- a/shared/db/GVGTeam.ts +++ b/shared/db/GVGTeam.ts @@ -343,8 +343,8 @@ export default class GVGTeam extends BaseModel { await GVGTeamModel.updateMany({ roleId }, { $set: info }); } - public static async checkLockTeam(roleId: string) { - return await GVGTeamModel.exists({ roleId, lockTime: { $gt: nowSeconds() } }) + public static async checkLockTeam(roleId: string, cityId: number) { + return await GVGTeamModel.exists({ roleId, lockTime: { $gt: nowSeconds() }, cityId: { $ne: cityId } }) } }