🐞 fix(gvg): 修复gvg激战期离开城池后位置乱了的问题

This commit is contained in:
luying
2023-03-04 10:55:43 +08:00
parent da7ee118c3
commit c591213377
3 changed files with 5 additions and 5 deletions

View File

@@ -182,11 +182,12 @@ export class GVGBattleHandler {
// 每赛季初自己的几支队伍恢复耐久、城市、顺便更新一下自己的玩家名、联军 // 每赛季初自己的几支队伍恢复耐久、城市、顺便更新一下自己的玩家名、联军
let teams = await refreshTeams(configId, groupKey, roleId, myLeague); 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 gvgUserData = await GVGUserDataModel.findByRole(configId, myLeague.leagueCode, roleId);
let originCityId = gvgUserData?.cityId||0; let originCityId = gvgUserData?.cityId||0;
// 检测是否已经在城池中,玩家不在这个城池中时进行处理 // 检测是否已经在城池中,玩家不在这个城池中时进行处理
if (originCityId != cityId) { if (originCityId != cityId) {
let gvgUserData = await GVGUserDataModel.findByRole(configId, myLeague.leagueCode, roleId);
if(gvgUserData?.cityId > 0) { // 如果leaveCity没有退出成功玩家还遗留在上一座城中做一下处理 if(gvgUserData?.cityId > 0) { // 如果leaveCity没有退出成功玩家还遗留在上一座城中做一下处理
await leaveCity(true, roleId, serverId, guildCode, myLeague); await leaveCity(true, roleId, serverId, guildCode, myLeague);
} }
@@ -234,8 +235,6 @@ export class GVGBattleHandler {
const { cityId } = msg; const { cityId } = msg;
let { configId, period } = getGVGPeriodData(); let { configId, period } = getGVGPeriodData();
if(await GVGTeamModel.checkLockTeam(roleId)) return resResult(STATUS.GVG_BATTLE_TEAM_LOCK);
// 检测是否已经在城池中 // 检测是否已经在城池中
let myLeague = await GVGLeagueModel.findLeagueByGuild(guildCode); let myLeague = await GVGLeagueModel.findLeagueByGuild(guildCode);
if(!myLeague) return resResult(STATUS.GVG_LEAGUE_NOT_EXIST); if(!myLeague) return resResult(STATUS.GVG_LEAGUE_NOT_EXIST);

View File

@@ -387,6 +387,7 @@ export const STATUS = {
GVG_BATTLE_TEAM_REVIVE: { code: 21421, simStr: '队伍复活中' }, GVG_BATTLE_TEAM_REVIVE: { code: 21421, simStr: '队伍复活中' },
GVG_BATTLE_TEAM_LOCK: { code: 21422, simStr: '正在有玩家挑战您,请等待' }, GVG_BATTLE_TEAM_LOCK: { code: 21422, simStr: '正在有玩家挑战您,请等待' },
GVG_BATTLE_TEAM_HAS_SELLTED: { code: 21423, simStr: '该编队已驻守据点了' }, GVG_BATTLE_TEAM_HAS_SELLTED: { code: 21423, simStr: '该编队已驻守据点了' },
GVG_BATTLE_TEAM_LOCK_ENTERY_CITY: { code: 21424, simStr: '正在有玩家挑战您,请稍后切换城池' },
// 通用 30000 - 30099 // 通用 30000 - 30099
DIC_DATA_NOT_FOUND: { code: 30000, simStr: '数据表未找到' }, DIC_DATA_NOT_FOUND: { code: 30000, simStr: '数据表未找到' },

View File

@@ -343,8 +343,8 @@ export default class GVGTeam extends BaseModel {
await GVGTeamModel.updateMany({ roleId }, { $set: info }); await GVGTeamModel.updateMany({ roleId }, { $set: info });
} }
public static async checkLockTeam(roleId: string) { public static async checkLockTeam(roleId: string, cityId: number) {
return await GVGTeamModel.exists({ roleId, lockTime: { $gt: nowSeconds() } }) return await GVGTeamModel.exists({ roleId, lockTime: { $gt: nowSeconds() }, cityId: { $ne: cityId } })
} }
} }