diff --git a/game-server/app/servers/guild/handler/gvgBattleHandler.ts b/game-server/app/servers/guild/handler/gvgBattleHandler.ts index 006f5f0bb..9826f2515 100644 --- a/game-server/app/servers/guild/handler/gvgBattleHandler.ts +++ b/game-server/app/servers/guild/handler/gvgBattleHandler.ts @@ -2,12 +2,12 @@ import { GVGRecModel, GVGRecType } from '../../../db/GVGRec'; import { GVGAreaInMap, GVGTeamInList, GVGTeamInListOnPoint, GVGTeamSpineInMap, LeagueGood, MyTeamInfo, MyTeamSimpleInfo } from '../../../domain/gvgField/returnData'; import { GVGTeamModel, GVGTeamType, GVGTeamUpdate } from '../../../db/GVGTeam'; import { GVGUserDataModel } from '../../../db/GVGUserData'; -import { GVGCityModel } from '../../../db/GVGCity'; +import { GVGCityModel, GVGCityType } from '../../../db/GVGCity'; import { Application, BackendSession, ChannelService, HandlerService, pinus } from "pinus"; import { resResult, genCode } from "../../../pubUtils/util"; import { GVGLeagueModel } from '../../../db/GVGLeague'; import { getGroupKey, getGVGConfig, getGVGPeriodData, getGVGServerType } from '../../../services/gvg/gvgService'; -import { redisAddBattleScore, battleEndSendMessage, calBattleScoreByCe, checkAreaIsInCity, checkGVGBattleStart, checkMoveStatus, getBattleRanksByCity, getBirthAreaOfCity, getGVGWarId, getOppHeroes, getTechKnifeHurt, getTechReviveMinus, initRobots, pushTeamMoveMessage, getGVGCitiesInfo, leaveCity } from '../../../services/gvg/gvgBattleService'; +import { redisAddBattleScore, battleEndSendMessage, calBattleScoreByCe, checkAreaIsInCity, checkGVGBattleStart, checkMoveStatus, getBattleRanksByCity, getBirthAreaOfCity, getGVGWarId, getOppHeroes, getTechKnifeHurt, getTechReviveMinus, initRobots, pushTeamMoveMessage, getGVGCitiesInfo, leaveCity, refreshTeams } from '../../../services/gvg/gvgBattleService'; import { getGVGBattleData } from '../../../services/gvg/gvgBattleMemory'; import { GVGBattleRecModel } from '../../../db/GVGBattleRec'; import { getFightTimeByPeriod } from '../../../services/gvg/gvgFightService'; @@ -15,7 +15,7 @@ import { gameData, getReviveGold } from '../../../pubUtils/data'; import { getAllServerName } from '../../../services/redisService'; import { checkBattleHeroesByHid } from '../../../services/normalBattleService'; import { SaveTeamParam, SaveTeamUpdateParam } from '../../../domain/gvgField/gvgDb'; -import { GVG_AREA_TYPE, GVG_ITEM, GVG_REC_TYPE, ITEM_CHANGE_REASON, REDIS_KEY, STATUS } from '../../../consts'; +import { GVG_AREA_TYPE, GVG_ITEM, GVG_PERIOD, GVG_REC_TYPE, ITEM_CHANGE_REASON, REDIS_KEY, STATUS } from '../../../consts'; import { GVGHeroInfo } from '../../../domain/dbGeneral'; import { ArtifactModel } from '../../../db/Artifact'; import { getHeroesAttributes } from '../../../services/playerCeService'; @@ -65,7 +65,7 @@ export class GVGBattleHandler { const { cityId, index, head, spine, frame, lineup } = msg; let { configId, period } = getGVGPeriodData(); - // if (period != GVG_PERIOD.BATTLE) return resResult(STATUS.GVG_NOT_BATTLE_PERIOD); // TODO 测试临时注 + if (period != GVG_PERIOD.BATTLE) return resResult(STATUS.GVG_NOT_BATTLE_PERIOD); let myLeague = await GVGLeagueModel.findLeagueByGuild(guildCode); if(!myLeague) return resResult(STATUS.GVG_LEAGUE_NOT_EXIST); @@ -130,8 +130,9 @@ export class GVGBattleHandler { if(!myLeague) return resResult(STATUS.GVG_LEAGUE_NOT_EXIST); let groupKey = await getGroupKey(serverId); - const city = await GVGCityModel.findByCityId(configId, groupKey, cityId); - const { guardLeague: leagueCode = '', guardLeagueName: name = '', guardLeagueIcon: icon = 0, players = [] } = city||{}; + let guardCity = await GVGCityModel.findByCityId(configId + 1, groupKey, cityId); + if(!guardCity) guardCity = await GVGCityModel.findByCityId(configId, groupKey, cityId); + const { guardLeague: leagueCode = '', guardLeagueName: name = '', guardLeagueIcon: icon = 0, players = [] } = guardCity||{}; let ourTeamCnt = 0, oppTeamCnt = 0; for(let { leagueCode, teamCnt } of players) { @@ -176,7 +177,7 @@ export class GVGBattleHandler { const { cityId } = msg; let { configId, period } = getGVGPeriodData(); - // if (period != GVG_PERIOD.BATTLE) return resResult(STATUS.GVG_NOT_BATTLE_PERIOD); // TODO 测试临时注 + if (period != GVG_PERIOD.BATTLE) return resResult(STATUS.GVG_NOT_BATTLE_PERIOD); let groupKey = await getGroupKey(serverId); @@ -185,39 +186,41 @@ export class GVGBattleHandler { // 初始化本城池的守擂机器人 await initRobots(configId, groupKey, cityId); - - let teams = await GVGTeamModel.findByRole(roleId, '-_id'); // 每赛季初自己的几支队伍恢复耐久、城市、顺便更新一下自己的玩家名、联军 - let updateArr: GVGTeamUpdate[] = [], originCityId = 0; - for(let team of teams) { - if(team.configId != configId) { - let { teamCode, maxDurability } = team; - updateArr.push({ teamCode, durability: maxDurability, cityId: 0, areaId: 0, pointId: 0, roleName, guildCode, leagueCode: myLeague.leagueCode, leagueName: myLeague.name, groupKey }); - } - if(team.cityId) originCityId = team.cityId; - } - if(updateArr.length > 0) teams = await GVGTeamModel.refreshByConfig(roleId, updateArr); + let teams = await refreshTeams(configId, groupKey, roleId, roleName, guildCode, myLeague); + let gvgUserData = await GVGUserDataModel.findByRole(configId, myLeague.leagueCode, roleId); + let originCityId = gvgUserData?.cityId||0; // 检测是否已经在城池中,玩家不在这个城池中时进行处理 + let city: GVGCityType; if (originCityId != cityId) { let gvgUserData = await GVGUserDataModel.findByRole(configId, myLeague.leagueCode, roleId); if(gvgUserData?.cityId > 0) { // 如果leaveCity没有退出成功,玩家还遗留在上一座城中,做一下处理 - await GVGCityModel.decreasePlayerByCity(configId, groupKey, gvgUserData.cityId, roleId); + city = await GVGCityModel.decreasePlayerByCity(configId, groupKey, gvgUserData.cityId, roleId); } const roleTeamCnt = await GVGTeamModel.getTeamCntByRole(roleId); - let city = await GVGCityModel.increasePlayer(configId, groupKey, cityId, roleId, myLeague.leagueCode, roleTeamCnt); + city = await GVGCityModel.increasePlayer(configId, groupKey, cityId, roleId, myLeague.leagueCode, roleTeamCnt); if(!city) return resResult(STATUS.GVG_BATTLE_CITY_FULL); gvgUserData = await GVGUserDataModel.changeCity(configId, myLeague.leagueCode, roleId, cityId); + } + let teamResult: MyTeamInfo[] = []; + for(let team of teams) { // 有可能多个编队有的在城池中(驻守),有点不在(新编) + let originCityId = team.cityId||0; + if(originCityId == cityId) { + teamResult.push(new MyTeamInfo(team)); + continue; + }; + if(!city) city = await GVGCityModel.findByCityId(configId, groupKey, cityId); let areaId = getBirthAreaOfCity(city, myLeague.leagueCode); - teams = await GVGTeamModel.enterCity(roleId, cityId, areaId, groupKey); + team = await GVGTeamModel.enterCity(team.teamCode, cityId, areaId, groupKey); + if(!team) continue; // 更新内存队伍信息 let teamObj = getGVGBattleData(groupKey); - teamObj.enterCity(...teams); + teamObj.enterCity(team); + teamResult.push(new MyTeamInfo(team)) } - // const recs = await GVGRecModel.findBattleRecByCity(configId, groupKey, cityId); - const teamResult = teams.map(team => new MyTeamInfo(team)); const { ranks, myRank } = await getBattleRanksByCity(configId, groupKey, cityId, myLeague); await leaveGVGCityTeamChannel(roleId, sid); await addRoleToGVGCityChannel(roleId, groupKey, cityId, sid); @@ -378,7 +381,7 @@ export class GVGBattleHandler { const { cityId, areaId, pointId, teamCode } = msg; let { configId, period } = getGVGPeriodData(); - // if (period != GVG_PERIOD.BATTLE) return resResult(STATUS.GVG_NOT_BATTLE_PERIOD); // TODO 测试临时注 + if (period != GVG_PERIOD.BATTLE) return resResult(STATUS.GVG_NOT_BATTLE_PERIOD); let groupKey = await getGroupKey(serverId); @@ -407,7 +410,7 @@ export class GVGBattleHandler { const { pointId, teamCode } = msg; let { configId, period } = getGVGPeriodData(); - // if (period != GVG_PERIOD.BATTLE) return resResult(STATUS.GVG_NOT_BATTLE_PERIOD); // TODO 测试临时注 + if (period != GVG_PERIOD.BATTLE) return resResult(STATUS.GVG_NOT_BATTLE_PERIOD); let groupKey = await getGroupKey(serverId); @@ -433,7 +436,7 @@ export class GVGBattleHandler { const { teamCode, oppoTeamCode } = msg; let { configId, period } = getGVGPeriodData(); - // if (period != GVG_PERIOD.BATTLE) return resResult(STATUS.GVG_NOT_BATTLE_PERIOD); // TODO 测试临时注 + if (period != GVG_PERIOD.BATTLE) return resResult(STATUS.GVG_NOT_BATTLE_PERIOD); let groupKey = await getGroupKey(serverId); @@ -512,7 +515,7 @@ export class GVGBattleHandler { if(itemId != GVG_ITEM.KNIFE) return resResult(STATUS.GVG_ITEM_CANNOT_USE); let { configId, period } = getGVGPeriodData(); - // if (period != GVG_PERIOD.BATTLE) return resResult(STATUS.GVG_NOT_BATTLE_PERIOD); // TODO 测试临时注 + if (period != GVG_PERIOD.BATTLE) return resResult(STATUS.GVG_NOT_BATTLE_PERIOD); let groupKey = await getGroupKey(serverId); diff --git a/game-server/app/services/gvg/gvgBattleMemory.ts b/game-server/app/services/gvg/gvgBattleMemory.ts index 39f1f499a..bf3ba871d 100644 --- a/game-server/app/services/gvg/gvgBattleMemory.ts +++ b/game-server/app/services/gvg/gvgBattleMemory.ts @@ -27,7 +27,7 @@ class GVGBattleData { let teams: GVGTeamMem[] = []; for(let teamCode of teamCodes) { let team = this.teams.get(teamCode); - if(team) teams.push(team); + if(team && !team.isBroken) teams.push(team); } return teams.slice(0, 20); } @@ -90,8 +90,8 @@ class GVGBattleData { private setRolePoints(roleId: string, fromPointId: number, pointId: number, teamCode: string) { if(fromPointId > 0 && pointId == 0) { // 被打得撤离积分点 - if(this.rolePoints.has(roleId) && this.rolePoints.get(roleId).has(pointId)) { - this.rolePoints.get(roleId).delete(pointId); + if(this.rolePoints.has(roleId) && this.rolePoints.get(roleId).has(fromPointId)) { + this.rolePoints.get(roleId).delete(fromPointId); } } else if (fromPointId == 0 && pointId > 0) { if(!this.rolePoints.has(roleId)) this.rolePoints.set(roleId, new Map()); diff --git a/game-server/app/services/gvg/gvgBattleService.ts b/game-server/app/services/gvg/gvgBattleService.ts index 42aa7d042..02b178137 100644 --- a/game-server/app/services/gvg/gvgBattleService.ts +++ b/game-server/app/services/gvg/gvgBattleService.ts @@ -7,7 +7,7 @@ import { GVG_AREA_TYPE, GVG_BATTLE_RANK_TYPE, GVG_TECH_TYPE, MAIL_TYPE, PUSH_ROU import { getTimeFun, nowSeconds } from "../../pubUtils/timeUtil"; import { DicGVGAreaPoint } from "../../pubUtils/dictionary/DicGVGAreaPoint"; import { getGVGBattleData, getGVGBattleMap } from "./gvgBattleMemory"; -import { GVGCityMapInfo, GVGTeamInList, GVGTeamInListOnPoint, GVGTeamSpineInMap } from "../../domain/gvgField/returnData"; +import { GVGAttackSpine, GVGCityMapInfo, GVGTeamInList, GVGTeamInListOnPoint, GVGTeamSpineInMap } from "../../domain/gvgField/returnData"; import { GVG } from "../../pubUtils/dicParam"; import { GVGHeroInfo, PvpEnemies, PvpHeroInfo } from "../../domain/dbGeneral"; import { getGroupKey, getGVGConfig } from "./gvgService"; @@ -18,7 +18,7 @@ import { Rank } from "../rankService"; import { LeagueRankInfo, RoleRankInfo } from "../../domain/rank"; import { findKeys, getAllServerName } from "../redisService"; import { sendMessageToGVGAreaByTeamWithSuc, sendMessageToGVGAreaWithSuc, sendMessageToGVGCityWithSuc } from "../pushService"; -import { sendMailToLeagueByContent } from "../mailService"; +import { sendMailByContent, sendMailToLeagueByContent } from "../mailService"; import { GVGCityAreaPointModel } from "../../db/GVGCityAreaPoint"; import { addCityGuardMessage } from "./gvgRecService"; import { GVGUserDataModel } from "../../db/GVGUserData"; @@ -108,7 +108,8 @@ export async function initRobots(configId: number, groupKey: string, cityId: num } } if(updateDicPoints.length > 0) { - robotTeams = await GVGTeamModel.initRobots(configId, groupKey, cityId, updateDicPoints); + let lv = gameData.war.get(GVG.GVG_ROBOT_WARJSON)?.level||50; + robotTeams = await GVGTeamModel.initRobots(configId, groupKey, cityId, updateDicPoints, lv); // 存入内存 let teamObj = getGVGBattleData(groupKey); teamObj.enterCity(...robotTeams); @@ -131,6 +132,21 @@ export function calBattleScoreByCe(isSuccess: boolean, lineupCe: number) { return isSuccess? winScore: 0; } +export async function refreshTeams(configId: number, groupKey: string, roleId: string, roleName: string, guildCode: string, myLeague: GVGLeagueType) { + let oldTeams = await GVGTeamModel.findByRole(roleId, '-_id'); + let teams: GVGTeamType[] = []; + for(let team of oldTeams) { + if(team.configId != configId) { + let { teamCode, maxDurability } = team; + let newTeam = await GVGTeamModel.refreshByConfig(team.teamCode, { teamCode, durability: maxDurability, cityId: 0, areaId: 0, pointId: 0, roleName, guildCode, leagueCode: myLeague.leagueCode, leagueName: myLeague.name, groupKey }); + teams.push(newTeam); + } else { + teams.push(team); + } + } + return teams +} + export async function leaveCity(isForce: boolean, roleId: string, serverId: number, guildCode: string, myLeague?: GVGLeagueType) { if(!myLeague) myLeague = await GVGLeagueModel.findLeagueByGuild(guildCode); if(!myLeague) return; @@ -259,7 +275,9 @@ export async function initCatapult(cityId: number, groupKey: string, leagueCode: let dicArea = gameData.gvgArea.get(areaId); return dicArea && dicArea.areaType == GVG_AREA_TYPE.CATAPULT; }); - let teams = await GVGTeamModel.initCatapult(configId, groupKey, cityId, leagueCode, leagueName, areaIds, atk, durability); + + let lv = gameData.war.get(GVG.GVG_CATAPULT_WARJSON)?.level||50; + let teams = await GVGTeamModel.initCatapult(configId, groupKey, cityId, leagueCode, leagueName, areaIds, atk, durability, lv); // 处理内存 let teamObj = getGVGBattleData(groupKey); teamObj.enterCity(...teams); @@ -279,9 +297,12 @@ export async function catapultHurt() { let dicGVGCity = gameData.gvgCity.get(catapult.cityId); let teams = await GVGTeamModel.attackByCatapult(teamCodes, catapult.captapultAtk, dicGVGCity.attackBirth); teamObj.battleEnd(teams); - await sendMessageToGVGAreaByTeamWithSuc(teamObj.groupKey, catapult.areaId, PUSH_ROUTE.GVG_TEAM_ATTACKED, { + await sendMessageToGVGAreaWithSuc(teamObj.groupKey, catapult.areaId, PUSH_ROUTE.GVG_TEAM_ATTACKED, { cityId: catapult.cityId, areaId: catapult.areaId, attackType: 1, teams: teams.map(team => new GVGTeamInList(team)) }); + await sendMessageToGVGAreaByTeamWithSuc(teamObj.groupKey, catapult.areaId, PUSH_ROUTE.GVG_SPINE_ATTACKED, { + cityId: catapult.cityId, areaId: catapult.areaId, attackType: 1, teams: teams.map(team => new GVGAttackSpine(team, catapult.captapultAtk)) + }); for(let team of teams) { await pushTeamBeHurtMessage(team); if(team.curTeamBreak && team.originPointId > 0) { @@ -430,7 +451,7 @@ export async function gvgBattleEnd() { for(let _obj of ranks) { let obj = _obj; let dicRank = getGVGBattleRankReward(GVG_BATTLE_RANK_TYPE.PLAYER, obj.rank); - await sendMailToLeagueByContent(MAIL_TYPE.GVG_BATTLE_PLAYER_RANK_REWARD, obj.roleId, { params: [`${obj.rank}`], goods: dicRank.reward }); + await sendMailByContent(MAIL_TYPE.GVG_BATTLE_PLAYER_RANK_REWARD, obj.roleId, { params: [`${obj.rank}`], goods: dicRank.reward }); } } diff --git a/game-server/app/services/gvg/gvgService.ts b/game-server/app/services/gvg/gvgService.ts index b4ca4746d..52ccb6e9a 100644 --- a/game-server/app/services/gvg/gvgService.ts +++ b/game-server/app/services/gvg/gvgService.ts @@ -34,6 +34,7 @@ export async function createNewGVGConfig() { await pinus.app.rpc.guild.guildRemote.setGVGServerGroup.broadcast(); await pinus.app.rpc.chat.chatRemote.setGVGServerGroup.broadcast(); await pinus.app.rpc.connector.connectorRemote.setGVGServerGroup.broadcast(); + await pinus.app.rpc.guild?.guildRemote?.clearBattleMemory.broadcast(); } catch(e) { console.log('remote未初始完'); } @@ -176,7 +177,6 @@ export async function initLeaguePrepare() { for(let { leagueCode, memberCnt } of leagues) { await GVGLeaguePrepareModel.initData(config.configId, leagueCode, memberCnt); } - pinus.app.rpc.guild?.guildRemote?.clearBattleMemory.broadcast(); } export async function setGVGServerGroup() { diff --git a/shared/consts/constModules/chatConst.ts b/shared/consts/constModules/chatConst.ts index ddbea7e8b..7c95fb4fd 100644 --- a/shared/consts/constModules/chatConst.ts +++ b/shared/consts/constModules/chatConst.ts @@ -198,4 +198,5 @@ export const PUSH_ROUTE = { GVG_PLAYER_AREA_ADD: 'onPlayerAddToArea', // 积分点上的驻守人变更 GVG_PLAYER_LEAVE_AREA: 'onPlayerLeaveArea', // 积分点上的驻守人变更 GVG_CITY_RANK_UPDATE: 'onGVGCityRankUpdate', // 城池积分排名 + GVG_SPINE_ATTACKED: 'onSpinesAttacked', // 4.7 队伍在地图上受到攻击 } \ No newline at end of file diff --git a/shared/db/GVGRec.ts b/shared/db/GVGRec.ts index fc02429db..43c391313 100644 --- a/shared/db/GVGRec.ts +++ b/shared/db/GVGRec.ts @@ -7,7 +7,7 @@ import { GVG_REC_TYPE } from '../consts'; @index({ createTime: -1 }) export default class GVGRec extends BaseModel { - @prop({ required: true, default: '' }) + @prop({ required: false, default: '' }) leagueCode: string; // 联军id @prop({ required: false, default: '' }) diff --git a/shared/db/GVGTeam.ts b/shared/db/GVGTeam.ts index a511e85b2..2d30d8e5b 100644 --- a/shared/db/GVGTeam.ts +++ b/shared/db/GVGTeam.ts @@ -136,14 +136,9 @@ export default class GVGTeam extends BaseModel { } // 玩家切换城池更新队伍信息 - public static async enterCity(roleId: string, cityId: number, areaId: number, groupKey: string) { - let teams = await GVGTeamModel.findByRole(roleId, '-_id') - let result: GVGTeamType[] = []; - for(let targetTeam of teams) { - let team: GVGTeamType = await GVGTeamModel.findOneAndUpdate({ teamCode: targetTeam.teamCode }, { $set: { cityId, areaId, fromAreaId: areaId, pointId: 0, groupKey } }, { new: true }).lean(); - result.push(team); - } - return result; + public static async enterCity(teamCode: string, cityId: number, areaId: number, groupKey: string) { + let team: GVGTeamType = await GVGTeamModel.findOneAndUpdate({ teamCode }, { $set: { cityId, areaId, fromAreaId: areaId, pointId: 0, groupKey } }, { new: true }).lean(); + return team; } // 离开队伍 @@ -205,16 +200,9 @@ export default class GVGTeam extends BaseModel { } // 每赛季初刷新自己的耐久等东西 - public static async refreshByConfig(roleId: string, updateArr: GVGTeamUpdate[]) { - await GVGTeamModel.bulkWrite(updateArr.map(obj => { - return { - updateOne: { - filter: { roleId, teamCode: obj.teamCode }, - update: { $set: obj } - } - } - })); - return await GVGTeamModel.findByRole(roleId, '-_id'); + public static async refreshByConfig(teamCode: string, update: GVGTeamUpdate) { + const team: GVGTeamType = await GVGTeamModel.findOneAndUpdate({ teamCode }, { $set: update }, { new: true }).lean(); + return team; } public static async findRobotTeams(groupKey: string, cityId: number) { @@ -306,11 +294,11 @@ export default class GVGTeam extends BaseModel { // 队伍进入修整器 public static async teamBreak(teamCode: string, isRobot: boolean, maxDurability: number, areaId: number, fromAreaId: number, reviveCd: number) { if(!isRobot) { - const team: GVGTeamType = await GVGTeamModel.findOneAndUpdate({ teamCode }, { $set: { restartTime: nowSeconds() - reviveCd, stopMoveTime: nowSeconds(), areaId, fromAreaId, durability: maxDurability } }, { new: true }).lean(); + const team: GVGTeamType = await GVGTeamModel.findOneAndUpdate({ teamCode }, { $set: { restartTime: nowSeconds() - reviveCd, stopMoveTime: nowSeconds(), areaId, fromAreaId, durability: maxDurability, pointId: 0 } }, { new: true }).lean(); team.curTeamBreak = true; return team; } else { - const team: GVGTeamType = await GVGTeamModel.findOneAndUpdate({ teamCode }, { $set: { fromAreaId, durability: 0, isBroken: true } }, { new: true }).lean(); + const team: GVGTeamType = await GVGTeamModel.findOneAndUpdate({ teamCode }, { $set: { fromAreaId, pointId: 0, durability: 0, isBroken: true } }, { new: true }).lean(); team.curTeamBreak = true; return team; } diff --git a/shared/domain/gvgField/returnData.ts b/shared/domain/gvgField/returnData.ts index c8d0db8e1..0d0d3b510 100644 --- a/shared/domain/gvgField/returnData.ts +++ b/shared/domain/gvgField/returnData.ts @@ -698,6 +698,26 @@ export class GVGTeamInList { } } +// 地图右边列表上的队伍信息 +export class GVGAttackSpine { + teamCode: string; // 队伍唯一id + durability: number; // 耐久 + maxDurability: number; // 最大耐久 + hurt: number; // 投石车造成的伤害 + pointId: number; // 可能会被打下积分点 + areaId: number; // 被打到哪个区域 + + constructor(team: GVGTeamType, hurt: number) { + if(!team) return; + this.teamCode = team.teamCode; + this.durability = team.durability; + this.maxDurability = team.maxDurability; + this.pointId = team.pointId; + this.areaId = team.areaId; + this.hurt = hurt; + } +} + export class GVGTeamInListOnPoint extends GVGTeamInList { pointId: number; // 积分点 hasTeam: boolean; // 是否有队伍占领 diff --git a/shared/resource/jsons/dic_zyz_GVGArea.json b/shared/resource/jsons/dic_zyz_GVGArea.json index 17781b617..95b6ce3bc 100644 --- a/shared/resource/jsons/dic_zyz_GVGArea.json +++ b/shared/resource/jsons/dic_zyz_GVGArea.json @@ -8,12 +8,13 @@ "areaType": 2, "relateArea": "102&", "catapultAttack": 0, - "cityName": "本服小城1", + "cityName": "宛城", "cityPosition": "1000&325", "cityIcon": "mj_fjz", "cityMap": 85002, "areaPosition": "960&650", - "areaName": "本服小城攻方备战区", + "areaName": "宛城攻方备战区", + "arrowPosition": "0&-240", "备注": "本服小城攻方备战区" }, { @@ -25,12 +26,13 @@ "areaType": 5, "relateArea": "101&103&104", "catapultAttack": 1, - "cityName": "本服小城1", + "cityName": "宛城", "cityPosition": "1000&325", "cityIcon": "mj_fjz", "cityMap": 85002, "areaPosition": "960&1950", - "areaName": "本服小城小据点区", + "areaName": "宛城小据点区", + "arrowPosition": "0&-240", "备注": "本服小城小据点区" }, { @@ -42,12 +44,13 @@ "areaType": 4, "relateArea": "102&104&105", "catapultAttack": 1, - "cityName": "本服小城1", + "cityName": "宛城", "cityPosition": "1000&325", "cityIcon": "mj_fjz", "cityMap": 85002, "areaPosition": "960&3200", - "areaName": "本服小城中据点区", + "areaName": "宛城中据点区", + "arrowPosition": "0&-240", "备注": "本服小城中据点区" }, { @@ -59,12 +62,13 @@ "areaType": 6, "relateArea": "102&103", "catapultAttack": 0, - "cityName": "本服小城1", + "cityName": "宛城", "cityPosition": "1000&325", "cityIcon": "mj_fjz", "cityMap": 85002, "areaPosition": "2080&2580", - "areaName": "本服小城投石车区", + "areaName": "宛城投石车区", + "arrowPosition": "0&-240", "备注": "本服小城投石车区" }, { @@ -76,12 +80,13 @@ "areaType": 1, "relateArea": "103&", "catapultAttack": 0, - "cityName": "本服小城1", + "cityName": "宛城", "cityPosition": "1000&325", "cityIcon": "mj_fjz", "cityMap": 85002, "areaPosition": "960&4510", - "areaName": "本服小城守方备战区", + "areaName": "宛城守方备战区", + "arrowPosition": "0&-240", "备注": "本服小城守方备战区" }, { @@ -93,12 +98,13 @@ "areaType": 2, "relateArea": "202&", "catapultAttack": 0, - "cityName": "本服小城2", + "cityName": "渑池", "cityPosition": "1720&390", "cityIcon": "mj_fjz", "cityMap": 85002, "areaPosition": "960&650", - "areaName": "本服小城攻方备战区", + "areaName": "渑池攻方备战区", + "arrowPosition": "0&-240", "备注": "本服小城攻方备战区" }, { @@ -110,12 +116,13 @@ "areaType": 5, "relateArea": "201&203&204", "catapultAttack": 1, - "cityName": "本服小城2", + "cityName": "渑池", "cityPosition": "1720&390", "cityIcon": "mj_fjz", "cityMap": 85002, "areaPosition": "960&1950", - "areaName": "本服小城小据点区", + "areaName": "渑池小据点区", + "arrowPosition": "0&-240", "备注": "本服小城小据点区" }, { @@ -127,12 +134,13 @@ "areaType": 4, "relateArea": "202&204&205", "catapultAttack": 1, - "cityName": "本服小城2", + "cityName": "渑池", "cityPosition": "1720&390", "cityIcon": "mj_fjz", "cityMap": 85002, "areaPosition": "960&3200", - "areaName": "本服小城中据点区", + "areaName": "渑池中据点区", + "arrowPosition": "0&-240", "备注": "本服小城中据点区" }, { @@ -144,12 +152,13 @@ "areaType": 6, "relateArea": "202&203", "catapultAttack": 0, - "cityName": "本服小城2", + "cityName": "渑池", "cityPosition": "1720&390", "cityIcon": "mj_fjz", "cityMap": 85002, "areaPosition": "2080&2580", - "areaName": "本服小城投石车区", + "areaName": "渑池投石车区", + "arrowPosition": "0&-240", "备注": "本服小城投石车区" }, { @@ -161,12 +170,13 @@ "areaType": 1, "relateArea": "203&", "catapultAttack": 0, - "cityName": "本服小城2", + "cityName": "渑池", "cityPosition": "1720&390", "cityIcon": "mj_fjz", "cityMap": 85002, "areaPosition": "960&4510", - "areaName": "本服小城守方备战区", + "areaName": "渑池守方备战区", + "arrowPosition": "0&-240", "备注": "本服小城守方备战区" }, { @@ -178,12 +188,13 @@ "areaType": 2, "relateArea": "302&303&304", "catapultAttack": 0, - "cityName": "本服中城1", + "cityName": "河东", "cityPosition": "1445&660", "cityIcon": "mj_hlg", "cityMap": 85003, "areaPosition": "2240&650", - "areaName": "本服中城攻方备战区", + "areaName": "河东攻方备战区", + "arrowPosition": "0&-240", "备注": "本服中城攻方备战区" }, { @@ -193,14 +204,15 @@ "cityId": 3, "cityType": 2, "areaType": 5, - "relateArea": "301&303&305&306", + "relateArea": "301&303&304&305&306", "catapultAttack": 1, - "cityName": "本服中城1", + "cityName": "河东", "cityPosition": "1445&660", "cityIcon": "mj_hlg", "cityMap": 85003, "areaPosition": "960&2720", - "areaName": "本服中城小据点区1", + "areaName": "河东小据点区1", + "arrowPosition": "0&-240", "备注": "本服中城小据点区" }, { @@ -212,12 +224,13 @@ "areaType": 5, "relateArea": "301&302&304&305", "catapultAttack": 1, - "cityName": "本服中城1", + "cityName": "河东", "cityPosition": "1445&660", "cityIcon": "mj_hlg", "cityMap": 85003, "areaPosition": "2240&2100", - "areaName": "本服中城小据点区2", + "areaName": "河东小据点区2", + "arrowPosition": "0&-240", "备注": "本服中城小据点区" }, { @@ -227,14 +240,15 @@ "cityId": 3, "cityType": 2, "areaType": 5, - "relateArea": "301&303&305&306", + "relateArea": "301&302&303&305&306", "catapultAttack": 1, - "cityName": "本服中城1", + "cityName": "河东", "cityPosition": "1445&660", "cityIcon": "mj_hlg", "cityMap": 85003, "areaPosition": "3520&2720", - "areaName": "本服中城小据点区3", + "areaName": "河东小据点区3", + "arrowPosition": "0&-240", "备注": "本服中城小据点区" }, { @@ -246,12 +260,13 @@ "areaType": 4, "relateArea": "302&303&304&306&307&308", "catapultAttack": 1, - "cityName": "本服中城1", + "cityName": "河东", "cityPosition": "1445&660", "cityIcon": "mj_hlg", "cityMap": 85003, "areaPosition": "2240&3860", - "areaName": "本服中城中据点区", + "areaName": "河东中据点区", + "arrowPosition": "0&-360", "备注": "本服中城中据点区" }, { @@ -263,12 +278,13 @@ "areaType": 6, "relateArea": "302&305", "catapultAttack": 0, - "cityName": "本服中城1", + "cityName": "河东", "cityPosition": "1445&660", "cityIcon": "mj_hlg", "cityMap": 85003, "areaPosition": "960&3960", - "areaName": "本服中城投石车区1", + "areaName": "河东投石车区1", + "arrowPosition": "0&-240", "备注": "本服中城投石车区1" }, { @@ -280,12 +296,13 @@ "areaType": 6, "relateArea": "304&305", "catapultAttack": 0, - "cityName": "本服中城1", + "cityName": "河东", "cityPosition": "1445&660", "cityIcon": "mj_hlg", "cityMap": 85003, "areaPosition": "3520&3960", - "areaName": "本服中城投石车区2", + "areaName": "河东投石车区2", + "arrowPosition": "0&-240", "备注": "本服中城投石车区2" }, { @@ -297,12 +314,13 @@ "areaType": 1, "relateArea": "305&", "catapultAttack": 0, - "cityName": "本服中城1", + "cityName": "河东", "cityPosition": "1445&660", "cityIcon": "mj_hlg", "cityMap": 85003, "areaPosition": "2240&5260", - "areaName": "本服中城守方备战区", + "areaName": "河东守方备战区", + "arrowPosition": "0&-240", "备注": "本服中城守方备战区" }, { @@ -314,12 +332,13 @@ "areaType": 2, "relateArea": "402&", "catapultAttack": 0, - "cityName": "跨服小城1", + "cityName": "宛城", "cityPosition": "1435&460", "cityIcon": "mj_fjz", "cityMap": 85002, "areaPosition": "960&650", - "areaName": "跨服小城攻方备战区", + "areaName": "宛城攻方备战区", + "arrowPosition": "0&-240", "备注": "跨服小城攻方备战区" }, { @@ -331,12 +350,13 @@ "areaType": 5, "relateArea": "401&403&404", "catapultAttack": 1, - "cityName": "跨服小城1", + "cityName": "宛城", "cityPosition": "1435&460", "cityIcon": "mj_fjz", "cityMap": 85002, "areaPosition": "960&1950", - "areaName": "跨服小城小据点区", + "areaName": "宛城小据点区", + "arrowPosition": "0&-240", "备注": "跨服小城小据点区" }, { @@ -348,12 +368,13 @@ "areaType": 4, "relateArea": "402&404&405", "catapultAttack": 1, - "cityName": "跨服小城1", + "cityName": "宛城", "cityPosition": "1435&460", "cityIcon": "mj_fjz", "cityMap": 85002, "areaPosition": "960&3200", - "areaName": "跨服小城中据点区", + "areaName": "宛城中据点区", + "arrowPosition": "0&-240", "备注": "跨服小城中据点区" }, { @@ -365,12 +386,13 @@ "areaType": 6, "relateArea": "402&403", "catapultAttack": 0, - "cityName": "跨服小城1", + "cityName": "宛城", "cityPosition": "1435&460", "cityIcon": "mj_fjz", "cityMap": 85002, "areaPosition": "2080&2580", - "areaName": "跨服小城投石车区", + "areaName": "宛城投石车区", + "arrowPosition": "0&-240", "备注": "跨服小城投石车区" }, { @@ -382,12 +404,13 @@ "areaType": 1, "relateArea": "403&", "catapultAttack": 0, - "cityName": "跨服小城1", + "cityName": "宛城", "cityPosition": "1435&460", "cityIcon": "mj_fjz", "cityMap": 85002, "areaPosition": "960&4510", - "areaName": "跨服小城守方备战区", + "areaName": "宛城守方备战区", + "arrowPosition": "0&-240", "备注": "跨服小城守方备战区" }, { @@ -399,12 +422,13 @@ "areaType": 2, "relateArea": "502&", "catapultAttack": 0, - "cityName": "跨服小城2", + "cityName": "汝南", "cityPosition": "2885&495", "cityIcon": "mj_fjz", "cityMap": 85002, "areaPosition": "960&650", - "areaName": "跨服小城攻方备战区", + "areaName": "汝南攻方备战区", + "arrowPosition": "0&-240", "备注": "跨服小城攻方备战区" }, { @@ -416,12 +440,13 @@ "areaType": 5, "relateArea": "501&503&504", "catapultAttack": 1, - "cityName": "跨服小城2", + "cityName": "汝南", "cityPosition": "2885&495", "cityIcon": "mj_fjz", "cityMap": 85002, "areaPosition": "960&1950", - "areaName": "跨服小城小据点区", + "areaName": "汝南小据点区", + "arrowPosition": "0&-240", "备注": "跨服小城小据点区" }, { @@ -433,12 +458,13 @@ "areaType": 4, "relateArea": "502&504&505", "catapultAttack": 1, - "cityName": "跨服小城2", + "cityName": "汝南", "cityPosition": "2885&495", "cityIcon": "mj_fjz", "cityMap": 85002, "areaPosition": "960&3200", - "areaName": "跨服小城中据点区", + "areaName": "汝南中据点区", + "arrowPosition": "0&-240", "备注": "跨服小城中据点区" }, { @@ -450,12 +476,13 @@ "areaType": 6, "relateArea": "502&503", "catapultAttack": 0, - "cityName": "跨服小城2", + "cityName": "汝南", "cityPosition": "2885&495", "cityIcon": "mj_fjz", "cityMap": 85002, "areaPosition": "2080&2580", - "areaName": "跨服小城投石车区", + "areaName": "汝南投石车区", + "arrowPosition": "0&-240", "备注": "跨服小城投石车区" }, { @@ -467,12 +494,13 @@ "areaType": 1, "relateArea": "503&", "catapultAttack": 0, - "cityName": "跨服小城2", + "cityName": "汝南", "cityPosition": "2885&495", "cityIcon": "mj_fjz", "cityMap": 85002, "areaPosition": "960&4510", - "areaName": "跨服小城守方备战区", + "areaName": "汝南守方备战区", + "arrowPosition": "0&-240", "备注": "跨服小城守方备战区" }, { @@ -484,12 +512,13 @@ "areaType": 2, "relateArea": "602&", "catapultAttack": 0, - "cityName": "跨服小城3", + "cityName": "弘农", "cityPosition": "1460&900", "cityIcon": "mj_fjz", "cityMap": 85002, "areaPosition": "960&650", - "areaName": "跨服小城攻方备战区", + "areaName": "弘农攻方备战区", + "arrowPosition": "0&-240", "备注": "跨服小城攻方备战区" }, { @@ -501,12 +530,13 @@ "areaType": 5, "relateArea": "601&603&604", "catapultAttack": 1, - "cityName": "跨服小城3", + "cityName": "弘农", "cityPosition": "1460&900", "cityIcon": "mj_fjz", "cityMap": 85002, "areaPosition": "960&1950", - "areaName": "跨服小城小据点区", + "areaName": "弘农小据点区", + "arrowPosition": "0&-240", "备注": "跨服小城小据点区" }, { @@ -518,12 +548,13 @@ "areaType": 4, "relateArea": "602&604&605", "catapultAttack": 1, - "cityName": "跨服小城3", + "cityName": "弘农", "cityPosition": "1460&900", "cityIcon": "mj_fjz", "cityMap": 85002, "areaPosition": "960&3200", - "areaName": "跨服小城中据点区", + "areaName": "弘农中据点区", + "arrowPosition": "0&-240", "备注": "跨服小城中据点区" }, { @@ -535,12 +566,13 @@ "areaType": 6, "relateArea": "602&603", "catapultAttack": 0, - "cityName": "跨服小城3", + "cityName": "弘农", "cityPosition": "1460&900", "cityIcon": "mj_fjz", "cityMap": 85002, "areaPosition": "2080&2580", - "areaName": "跨服小城投石车区", + "areaName": "弘农投石车区", + "arrowPosition": "0&-240", "备注": "跨服小城投石车区" }, { @@ -552,12 +584,13 @@ "areaType": 1, "relateArea": "603&", "catapultAttack": 0, - "cityName": "跨服小城3", + "cityName": "弘农", "cityPosition": "1460&900", "cityIcon": "mj_fjz", "cityMap": 85002, "areaPosition": "960&4510", - "areaName": "跨服小城守方备战区", + "areaName": "弘农守方备战区", + "arrowPosition": "0&-240", "备注": "跨服小城守方备战区" }, { @@ -569,12 +602,13 @@ "areaType": 2, "relateArea": "702&", "catapultAttack": 0, - "cityName": "跨服小城4", + "cityName": "颍川", "cityPosition": "3545&1080", "cityIcon": "mj_fjz", "cityMap": 85002, "areaPosition": "960&650", - "areaName": "跨服小城攻方备战区", + "areaName": "颍川攻方备战区", + "arrowPosition": "0&-240", "备注": "跨服小城攻方备战区" }, { @@ -586,12 +620,13 @@ "areaType": 5, "relateArea": "701&703&704", "catapultAttack": 1, - "cityName": "跨服小城4", + "cityName": "颍川", "cityPosition": "3545&1080", "cityIcon": "mj_fjz", "cityMap": 85002, "areaPosition": "960&1950", - "areaName": "跨服小城小据点区", + "areaName": "颍川小据点区", + "arrowPosition": "0&-240", "备注": "跨服小城小据点区" }, { @@ -603,12 +638,13 @@ "areaType": 4, "relateArea": "702&704&705", "catapultAttack": 1, - "cityName": "跨服小城4", + "cityName": "颍川", "cityPosition": "3545&1080", "cityIcon": "mj_fjz", "cityMap": 85002, "areaPosition": "960&3200", - "areaName": "跨服小城中据点区", + "areaName": "颍川中据点区", + "arrowPosition": "0&-240", "备注": "跨服小城中据点区" }, { @@ -620,12 +656,13 @@ "areaType": 6, "relateArea": "702&703", "catapultAttack": 0, - "cityName": "跨服小城4", + "cityName": "颍川", "cityPosition": "3545&1080", "cityIcon": "mj_fjz", "cityMap": 85002, "areaPosition": "2080&2580", - "areaName": "跨服小城投石车区", + "areaName": "颍川投石车区", + "arrowPosition": "0&-240", "备注": "跨服小城投石车区" }, { @@ -637,12 +674,13 @@ "areaType": 1, "relateArea": "703&", "catapultAttack": 0, - "cityName": "跨服小城4", + "cityName": "颍川", "cityPosition": "3545&1080", "cityIcon": "mj_fjz", "cityMap": 85002, "areaPosition": "960&4510", - "areaName": "跨服小城守方备战区", + "areaName": "颍川守方备战区", + "arrowPosition": "0&-240", "备注": "跨服小城守方备战区" }, { @@ -654,12 +692,13 @@ "areaType": 2, "relateArea": "802&", "catapultAttack": 0, - "cityName": "跨服小城5", + "cityName": "上党", "cityPosition": "2830&1750", "cityIcon": "mj_fjz", "cityMap": 85002, "areaPosition": "960&650", - "areaName": "跨服小城攻方备战区", + "areaName": "上党攻方备战区", + "arrowPosition": "0&-240", "备注": "跨服小城攻方备战区" }, { @@ -671,12 +710,13 @@ "areaType": 5, "relateArea": "801&803&804", "catapultAttack": 1, - "cityName": "跨服小城5", + "cityName": "上党", "cityPosition": "2830&1750", "cityIcon": "mj_fjz", "cityMap": 85002, "areaPosition": "960&1950", - "areaName": "跨服小城小据点区", + "areaName": "上党小据点区", + "arrowPosition": "0&-240", "备注": "跨服小城小据点区" }, { @@ -688,12 +728,13 @@ "areaType": 4, "relateArea": "802&804&805", "catapultAttack": 1, - "cityName": "跨服小城5", + "cityName": "上党", "cityPosition": "2830&1750", "cityIcon": "mj_fjz", "cityMap": 85002, "areaPosition": "960&3200", - "areaName": "跨服小城中据点区", + "areaName": "上党中据点区", + "arrowPosition": "0&-240", "备注": "跨服小城中据点区" }, { @@ -705,12 +746,13 @@ "areaType": 6, "relateArea": "802&803", "catapultAttack": 0, - "cityName": "跨服小城5", + "cityName": "上党", "cityPosition": "2830&1750", "cityIcon": "mj_fjz", "cityMap": 85002, "areaPosition": "2080&2580", - "areaName": "跨服小城投石车区", + "areaName": "上党投石车区", + "arrowPosition": "0&-240", "备注": "跨服小城投石车区" }, { @@ -722,12 +764,13 @@ "areaType": 1, "relateArea": "803&", "catapultAttack": 0, - "cityName": "跨服小城5", + "cityName": "上党", "cityPosition": "2830&1750", "cityIcon": "mj_fjz", "cityMap": 85002, "areaPosition": "960&4510", - "areaName": "跨服小城守方备战区", + "areaName": "上党守方备战区", + "arrowPosition": "0&-240", "备注": "跨服小城守方备战区" }, { @@ -739,12 +782,13 @@ "areaType": 2, "relateArea": "902&", "catapultAttack": 0, - "cityName": "跨服小城6", + "cityName": "北地", "cityPosition": "1140&1750", "cityIcon": "mj_fjz", "cityMap": 85002, "areaPosition": "960&650", - "areaName": "跨服小城攻方备战区", + "areaName": "北地攻方备战区", + "arrowPosition": "0&-240", "备注": "跨服小城攻方备战区" }, { @@ -756,12 +800,13 @@ "areaType": 5, "relateArea": "901&903&904", "catapultAttack": 1, - "cityName": "跨服小城6", + "cityName": "北地", "cityPosition": "1140&1750", "cityIcon": "mj_fjz", "cityMap": 85002, "areaPosition": "960&1950", - "areaName": "跨服小城小据点区", + "areaName": "北地小据点区", + "arrowPosition": "0&-240", "备注": "跨服小城小据点区" }, { @@ -773,12 +818,13 @@ "areaType": 4, "relateArea": "902&904&905", "catapultAttack": 1, - "cityName": "跨服小城6", + "cityName": "北地", "cityPosition": "1140&1750", - "cityIcon": "mj_fjz+K48", + "cityIcon": "mj_fjz", "cityMap": 85002, "areaPosition": "960&3200", - "areaName": "跨服小城中据点区", + "areaName": "北地中据点区", + "arrowPosition": "0&-240", "备注": "跨服小城中据点区" }, { @@ -790,12 +836,13 @@ "areaType": 6, "relateArea": "902&903", "catapultAttack": 0, - "cityName": "跨服小城6", + "cityName": "北地", "cityPosition": "1140&1750", "cityIcon": "mj_fjz", "cityMap": 85002, "areaPosition": "2080&2580", - "areaName": "跨服小城投石车区", + "areaName": "北地投石车区", + "arrowPosition": "0&-240", "备注": "跨服小城投石车区" }, { @@ -807,12 +854,13 @@ "areaType": 1, "relateArea": "903&", "catapultAttack": 0, - "cityName": "跨服小城6", + "cityName": "北地", "cityPosition": "1140&1750", "cityIcon": "mj_fjz", "cityMap": 85002, "areaPosition": "960&4510", - "areaName": "跨服小城守方备战区", + "areaName": "北地守方备战区", + "arrowPosition": "0&-240", "备注": "跨服小城守方备战区" }, { @@ -824,12 +872,13 @@ "areaType": 2, "relateArea": "1002&1003&1004", "catapultAttack": 0, - "cityName": "跨服中城1", + "cityName": "河东", "cityPosition": "1700&1350", "cityIcon": "mj_hlg", "cityMap": 85003, "areaPosition": "2240&650", - "areaName": "跨服中城攻方备战区", + "areaName": "河东攻方备战区", + "arrowPosition": "0&-240", "备注": "跨服中城攻方备战区" }, { @@ -839,14 +888,15 @@ "cityId": 10, "cityType": 2, "areaType": 5, - "relateArea": "1001&1003&1005&1006", + "relateArea": "1001&1003&1004&1005&1006", "catapultAttack": 1, - "cityName": "跨服中城1", + "cityName": "河东", "cityPosition": "1700&1350", "cityIcon": "mj_hlg", "cityMap": 85003, "areaPosition": "960&2720", - "areaName": "跨服中城小据点区1", + "areaName": "河东小据点区1", + "arrowPosition": "0&-240", "备注": "跨服中城小据点区" }, { @@ -858,12 +908,13 @@ "areaType": 5, "relateArea": "1001&1002&1004&1005", "catapultAttack": 1, - "cityName": "跨服中城1", + "cityName": "河东", "cityPosition": "1700&1350", "cityIcon": "mj_hlg", "cityMap": 85003, "areaPosition": "2240&2100", - "areaName": "跨服中城小据点区2", + "areaName": "河东小据点区2", + "arrowPosition": "0&-240", "备注": "跨服中城小据点区" }, { @@ -873,14 +924,15 @@ "cityId": 10, "cityType": 2, "areaType": 5, - "relateArea": "1001&1003&1005&1006", + "relateArea": "1001&1002&1003&1005&1006", "catapultAttack": 1, - "cityName": "跨服中城1", + "cityName": "河东", "cityPosition": "1700&1350", "cityIcon": "mj_hlg", "cityMap": 85003, "areaPosition": "3520&2720", - "areaName": "跨服中城小据点区3", + "areaName": "河东小据点区3", + "arrowPosition": "0&-240", "备注": "跨服中城小据点区" }, { @@ -892,12 +944,13 @@ "areaType": 4, "relateArea": "1002&1003&1004&1006&1007&1008", "catapultAttack": 1, - "cityName": "跨服中城1", + "cityName": "河东", "cityPosition": "1700&1350", "cityIcon": "mj_hlg", "cityMap": 85003, "areaPosition": "2240&3860", - "areaName": "跨服中城中据点区", + "areaName": "河东中据点区", + "arrowPosition": "0&-360", "备注": "跨服中城中据点区" }, { @@ -909,12 +962,13 @@ "areaType": 6, "relateArea": "1002&1005", "catapultAttack": 0, - "cityName": "跨服中城1", + "cityName": "河东", "cityPosition": "1700&1350", "cityIcon": "mj_hlg", "cityMap": 85003, "areaPosition": "960&3960", - "areaName": "跨服中城投石车区1", + "areaName": "河东投石车区1", + "arrowPosition": "0&-240", "备注": "跨服中城投石车区1" }, { @@ -926,12 +980,13 @@ "areaType": 6, "relateArea": "1004&1005", "catapultAttack": 0, - "cityName": "跨服中城1", + "cityName": "河东", "cityPosition": "1700&1351", "cityIcon": "mj_hlg", "cityMap": 85003, "areaPosition": "3520&3960", - "areaName": "跨服中城投石车区2", + "areaName": "河东投石车区2", + "arrowPosition": "0&-240", "备注": "跨服中城投石车区2" }, { @@ -943,12 +998,13 @@ "areaType": 1, "relateArea": "1005&", "catapultAttack": 0, - "cityName": "跨服中城1", + "cityName": "河东", "cityPosition": "1700&1350", "cityIcon": "mj_hlg", "cityMap": 85003, "areaPosition": "2240&5260", - "areaName": "跨服中城守方备战区", + "areaName": "河东守方备战区", + "arrowPosition": "0&-240", "备注": "跨服中城守方备战区" }, { @@ -960,12 +1016,13 @@ "areaType": 2, "relateArea": "1102&1103&1104", "catapultAttack": 0, - "cityName": "跨服中城2", + "cityName": "河内", "cityPosition": "3030&1320", "cityIcon": "mj_hlg", "cityMap": 85003, "areaPosition": "2240&650", - "areaName": "跨服中城攻方备战区", + "areaName": "河内攻方备战区", + "arrowPosition": "0&-240", "备注": "跨服中城攻方备战区" }, { @@ -975,14 +1032,15 @@ "cityId": 11, "cityType": 2, "areaType": 5, - "relateArea": "1101&1103&1105&1106", + "relateArea": "1101&1103&1104&1105&1106", "catapultAttack": 1, - "cityName": "跨服中城2", + "cityName": "河内", "cityPosition": "3030&1320", "cityIcon": "mj_hlg", "cityMap": 85003, "areaPosition": "960&2720", - "areaName": "跨服中城小据点区1", + "areaName": "河内小据点区1", + "arrowPosition": "0&-240", "备注": "跨服中城小据点区" }, { @@ -994,12 +1052,13 @@ "areaType": 5, "relateArea": "1101&1102&1104&1105", "catapultAttack": 1, - "cityName": "跨服中城2", + "cityName": "河内", "cityPosition": "3030&1320", "cityIcon": "mj_hlg", "cityMap": 85003, "areaPosition": "2240&2100", - "areaName": "跨服中城小据点区2", + "areaName": "河内小据点区2", + "arrowPosition": "0&-240", "备注": "跨服中城小据点区" }, { @@ -1009,14 +1068,15 @@ "cityId": 11, "cityType": 2, "areaType": 5, - "relateArea": "1101&1103&1105&1106", + "relateArea": "1101&1102&1103&1105&1106", "catapultAttack": 1, - "cityName": "跨服中城2", + "cityName": "河内", "cityPosition": "3030&1320", "cityIcon": "mj_hlg", "cityMap": 85003, "areaPosition": "3520&2720", - "areaName": "跨服中城小据点区3", + "areaName": "河内小据点区3", + "arrowPosition": "0&-240", "备注": "跨服中城小据点区" }, { @@ -1028,12 +1088,13 @@ "areaType": 4, "relateArea": "1102&1103&1104&1106&1107&1108", "catapultAttack": 1, - "cityName": "跨服中城2", + "cityName": "河内", "cityPosition": "3030&1320", "cityIcon": "mj_hlg", "cityMap": 85003, "areaPosition": "2240&3860", - "areaName": "跨服中城中据点区", + "areaName": "河内中据点区", + "arrowPosition": "0&-360", "备注": "跨服中城中据点区" }, { @@ -1045,12 +1106,13 @@ "areaType": 6, "relateArea": "1102&1105", "catapultAttack": 0, - "cityName": "跨服中城2", + "cityName": "河内", "cityPosition": "3030&1320", "cityIcon": "mj_hlg", "cityMap": 85003, "areaPosition": "960&3960", - "areaName": "跨服中城投石车区1", + "areaName": "河内投石车区1", + "arrowPosition": "0&-240", "备注": "跨服中城投石车区1" }, { @@ -1062,12 +1124,13 @@ "areaType": 6, "relateArea": "1104&1105", "catapultAttack": 0, - "cityName": "跨服中城2", + "cityName": "河内", "cityPosition": "3030&1320", "cityIcon": "mj_hlg", "cityMap": 85003, "areaPosition": "3520&3960", - "areaName": "跨服中城投石车区2", + "areaName": "河内投石车区2", + "arrowPosition": "0&-240", "备注": "跨服中城投石车区2" }, { @@ -1079,12 +1142,13 @@ "areaType": 1, "relateArea": "1105&", "catapultAttack": 0, - "cityName": "跨服中城2", + "cityName": "河内", "cityPosition": "3030&1320", "cityIcon": "mj_hlg", "cityMap": 85003, "areaPosition": "2240&5260", - "areaName": "跨服中城守方备战区", + "areaName": "河内守方备战区", + "arrowPosition": "0&-240", "备注": "跨服中城守方备战区" }, { @@ -1096,12 +1160,13 @@ "areaType": 2, "relateArea": "1302&1303&1304&1305", "catapultAttack": 0, - "cityName": "跨服大城1", + "cityName": "洛阳", "cityPosition": "2420&1100", "cityIcon": "mj_nldx", "cityMap": 85004, "areaPosition": "2560&650", - "areaName": "跨服大城攻方备战区", + "areaName": "洛阳攻方备战区", + "arrowPosition": "0&-240", "备注": "跨服大城攻方备战区" }, { @@ -1113,12 +1178,13 @@ "areaType": 5, "relateArea": "1301&1306", "catapultAttack": 1, - "cityName": "跨服大城1", + "cityName": "洛阳", "cityPosition": "2420&1100", "cityIcon": "mj_nldx", "cityMap": 85004, "areaPosition": "960&1920", - "areaName": "跨服大城小据点区1", + "areaName": "洛阳小据点区1", + "arrowPosition": "0&-240", "备注": "跨服大城小据点区" }, { @@ -1130,12 +1196,13 @@ "areaType": 5, "relateArea": "1301&1306", "catapultAttack": 1, - "cityName": "跨服大城1", + "cityName": "洛阳", "cityPosition": "2420&1100", "cityIcon": "mj_nldx", "cityMap": 85004, "areaPosition": "1920&1920", - "areaName": "跨服大城小据点区2", + "areaName": "洛阳小据点区2", + "arrowPosition": "0&-240", "备注": "跨服大城小据点区" }, { @@ -1147,12 +1214,13 @@ "areaType": 5, "relateArea": "1301&1307", "catapultAttack": 1, - "cityName": "跨服大城1", + "cityName": "洛阳", "cityPosition": "2420&1100", "cityIcon": "mj_nldx", "cityMap": 85004, "areaPosition": "3200&1920", - "areaName": "跨服大城小据点区3", + "areaName": "洛阳小据点区3", + "arrowPosition": "0&-240", "备注": "跨服大城小据点区" }, { @@ -1164,12 +1232,13 @@ "areaType": 5, "relateArea": "1301&1307", "catapultAttack": 1, - "cityName": "跨服大城1", + "cityName": "洛阳", "cityPosition": "2420&1100", "cityIcon": "mj_nldx", "cityMap": 85004, "areaPosition": "4160&1920", - "areaName": "跨服大城小据点区4", + "areaName": "洛阳小据点区4", + "arrowPosition": "0&-240", "备注": "跨服大城小据点区" }, { @@ -1181,12 +1250,13 @@ "areaType": 4, "relateArea": "1302&1303&1307&1308&1309", "catapultAttack": 1, - "cityName": "跨服大城1", + "cityName": "洛阳", "cityPosition": "2420&1100", "cityIcon": "mj_nldx", "cityMap": 85004, "areaPosition": "1440&3370", - "areaName": "跨服大城中据点区1", + "areaName": "洛阳中据点区1", + "arrowPosition": "0&-360", "备注": "跨服大城中据点区" }, { @@ -1198,12 +1268,13 @@ "areaType": 4, "relateArea": "1304&1305&1306&1308&1310", "catapultAttack": 1, - "cityName": "跨服大城1", + "cityName": "洛阳", "cityPosition": "2420&1100", "cityIcon": "mj_nldx", "cityMap": 85004, "areaPosition": "2560&3370", - "areaName": "跨服大城中据点区2", + "areaName": "洛阳中据点区2", + "arrowPosition": "0&-360", "备注": "跨服大城中据点区" }, { @@ -1215,12 +1286,13 @@ "areaType": 3, "relateArea": "1306&1307&1309&1310&1311", "catapultAttack": 1, - "cityName": "跨服大城1", + "cityName": "洛阳", "cityPosition": "2420&1100", "cityIcon": "mj_nldx", "cityMap": 85004, "areaPosition": "2560&5160", - "areaName": "跨服大城大据点区", + "areaName": "洛阳大据点区", + "arrowPosition": "0&-360", "备注": "跨服大城大据点区" }, { @@ -1232,12 +1304,13 @@ "areaType": 6, "relateArea": "1306&1308", "catapultAttack": 0, - "cityName": "跨服大城1", + "cityName": "洛阳", "cityPosition": "2420&1100", "cityIcon": "mj_nldx", "cityMap": 85004, "areaPosition": "1120&4800", - "areaName": "跨服大城投石车区1", + "areaName": "洛阳投石车区1", + "arrowPosition": "0&-240", "备注": "跨服大城投石车区" }, { @@ -1249,12 +1322,13 @@ "areaType": 6, "relateArea": "1307&1308", "catapultAttack": 0, - "cityName": "跨服大城1", + "cityName": "洛阳", "cityPosition": "2420&1100", "cityIcon": "mj_nldx", "cityMap": 85004, "areaPosition": "4000&4800", - "areaName": "跨服大城投石车区2", + "areaName": "洛阳投石车区2", + "arrowPosition": "0&-240", "备注": "跨服大城投石车区" }, { @@ -1266,12 +1340,13 @@ "areaType": 1, "relateArea": "1308&", "catapultAttack": 0, - "cityName": "跨服大城1", + "cityName": "洛阳", "cityPosition": "2420&1100", "cityIcon": "mj_nldx", "cityMap": 85004, "areaPosition": "2560&6560", - "areaName": "跨服大城守方备战区", + "areaName": "洛阳守方备战区", + "arrowPosition": "0&-240", "备注": "跨服大城守方备战区" } ] \ No newline at end of file