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 } }) } }