// message结构的属性名请使用 驼峰小写字母开始 syntax = "proto3"; option go_package = "/pb"; package pb; import "base_type.proto"; // 玩家拥有的地图对象列表 message OwnerMapObjects { repeated OwnerMapObject list = 1; } // 玩家拥有的地图对象 message OwnerMapObject { // 对象唯一id int64 objectID = 1; // 对象所在坐标点 Point point = 2; // 对象类型,见 map.go -> ObjectType 地块对象类型 int32 objectType = 3; // 对象配置ID int32 configID = 4; // 建筑对象信息 OwnerMapObjectBuild build = 5; // 资源对象信息 OwnerMapObjectRes res = 6; } // 玩家拥有的地图对象-资源 message OwnerMapObjectRes { // 放弃截止时间(ms) int64 discardTime = 1; // 免战结束时间(毫秒) int64 invincibleEndTime = 2; } // 玩家拥有的地图对象-建筑 message OwnerMapObjectBuild { // 是否正在建造中 bool isBuilding = 1; // 建造完成时间(毫秒) int64 buildEndTime = 2; // 是否正在升级中 bool isUpgrading = 3; // 升级完成时间(毫秒) int64 upgradeEndTime = 4; // 建筑等级 int32 level = 5; // 放弃截止时间(ms) int64 discardTime = 6; // 免战结束时间(毫秒) int64 invincibleEndTime = 7; // 如果当前建筑是营帐 则为营帐下标1-5 其他默认为0 int32 index = 8; } // 地图对象列表 message MapObjects { // 对象列表 repeated MapObject objectList = 1; // 军团列表 repeated MapLegion legionList = 2; } // 地图玩家对象列表 message MapPlayers { repeated MapPlayer list = 1; } // 地图联盟对象列表 message MapLeagues { repeated MapLeague list = 1; } // 地图中的玩家对象信息 message MapPlayer { // 玩家ID int64 playerID = 1; // 玩家名 string playerName = 2; // 主将头像? } // 地图中的联盟对象信息 message MapLeague { // 联盟ID int64 leagueID = 1; // 联盟名 string leagueName = 2; // 联盟简称 string leagueAbbName = 3; // 旗帜背景ID L-联盟-旗帜表旗帜ID int32 flagBg = 4; // 旗帜图标ID L-联盟-旗帜表旗帜ID int32 flagIcon = 5; } // 地图对象 message MapObject { // 对象唯一id int64 objectID = 1; // 所有者的玩家ID int64 playerID = 2; // 所有者的联盟ID int64 leagueID = 3; // 对象所在坐标点 Point point = 4; // 对象类型,用来读取下面对应的配置ID和结构 // 见 map.go -> ObjectType 地块对象类型 int32 objectType = 5; // 对象配置ID int32 configID = 6; // 寻路信息(运用于行军/军团等可移动对象) MapPath path = 7; // 免战结束时间(毫秒) int64 invincibleEndTime = 8; // 系统城对象信息 MapCastle castle = 11; // 建筑对象信息 MapBuild build = 12; // 怪物对象信息 MapMonster monster = 13; // 资源对象信息 MapRes res = 14; // 行军对象信息 MapMarch march = 15; } // 地图对象寻路结构 message MapPath { // 行军的起点与终点 Point2 fromTo = 1; // 路径列表(后续只发路径关键点) repeated Point points = 2; // 路点下标(当前在第几个点) int32 pointIndex = 3; // 路径最后一次更新时间(毫秒) int64 lastTime = 4; // 行军速度 int64 speed = 5; // 行军类型 // 见 map.go -> MarchType 行军类型 int32 marchType = 6; // 行军状态 // 见 map.go -> MarchState 行军状态 int32 marchState = 7; // 状态开始时间(毫秒) int64 stateStartTime = 8; // 状态结束时间(毫秒) int64 stateEndTime = 9; } // 城池对象 message MapCastle { // 驻城部队数量 int32 garrisonArimes = 1; // 当前耐久度 int32 durability = 2; // 耐久恢复时间(毫秒) int64 recoverTime = 3; // 调动数量 int32 redeployNum = 4; // 封印结束时间(毫秒) int64 sealEndTime = 5; // 首次占领的联盟ID int64 firstLeagueID = 10; // 首次占领的联盟名称 string firstLeagueName = 11; // 首次占领的联盟简称 string firstLeagueAbbName = 12; // 首次占领的联盟图标 int32 firstLeagueIcon = 13; // 关联的建筑对象ID列表 repeated int64 buildObjectIDList = 20 [deprecated = true]; // 宣战结束时间(毫秒) int64 startWarEndTime = 21; // 攻城结束时间(毫秒) int64 siegeEndTime = 22; // 子对象ID列表 repeated int64 childObjectIDs = 23; // 父对象ID int64 parentObjectID = 24; } // 建筑对象 message MapBuild { // 是否正在建造中 bool isBuilding = 1; // 建造完成时间(毫秒) int64 buildEndTime = 2; // 是否正在升级中 bool isUpgrading = 3; // 升级完成时间(毫秒) int64 upgradeEndTime = 4; // 建筑等级 int32 level = 5; // 如果当前建筑是营帐 则为营帐下标1-5 其他默认为0 int32 index = 6; // 调动数量 int32 redeployNum = 7; // 建筑外观ID D-地图-主城外观表主城外观ID int32 showID = 8; // 驻城部队数量 int32 garrisonArimes = 10; // 当前耐久度 int32 durability = 11; // 耐久恢复时间(毫秒) int64 recoverTime = 12; // 最大耐久度 int32 maxDurability = 13; // 放弃截止时间(ms) int64 discardTime = 20; // 关联的城池对象castleObjectIDID int64 castleObjectID = 21 [deprecated = true]; // 宣战结束时间(毫秒) int64 startWarEndTime = 22 [deprecated = true]; // 攻城结束时间(毫秒) int64 siegeEndTime = 23 [deprecated = true]; // 整顿结束时间(毫秒) int64 reorganizeEndTime = 30; // 加固准备结束时间(毫秒) int64 reinforcePrepareEndTime = 31; // 加固结束时间(毫秒) int64 reinforceEndTime = 32; } // 怪物对象 message MapMonster { // 存活截止时间(毫秒) int64 aliveTime = 1; // 是否被讨伐中 bool isCrusade = 2; } // 资源对象 message MapRes { // 采集中的行军对象ID int64 gatherObjectID = 1; // 存活终止时间(毫秒) int64 aliveTime = 2; // 剩余资源量 int64 remain = 3; // 放弃截止时间(ms) int64 discardTime = 11; } // 军团(包含多个行军对象) message MapLegion { // 对象唯一id int64 objectID = 1; // 所属的联盟ID int64 leagueID = 2; // 军团的名称 string legionName = 3; // 对象所在坐标点 Point point = 4; // 寻路信息(运用于行军/军团等可移动对象) MapPath path = 5; // 军团的行军对象列表 repeated MapObject marchList = 6; // 军团领队的对象ID int64 leadObjectID = 7; } // 行军对象 message MapMarch { // 行军展示ID(配置文件中) int32 marchViewID = 1 [deprecated = true]; // 兵种ID1 int32 armID1 = 2 [deprecated = true]; // 兵种ID2 int32 armID2 = 3 [deprecated = true]; // 兵种ID3 int32 armID3 = 4 [deprecated = true]; // 负重比例(0-100)对应资源运输表的ID int32 loadRatio = 5; // 调动目标建筑对象ID int64 redeployObjectID = 6; // 征兵结束时间(毫秒) int64 conscriptEndTime = 7; // 行军展示信息 MarchView marchView = 8; } // 行军请求 message MapMarchRequest { // 选择的队伍ID int32 teamID = 1; // 行军类型,意图 // 见 map.go -> MarchType 行军类型 int32 marchType = 2; // 行军的目标坐标点 Point point = 3; // 行军的目标对象ID int64 targetObjectID = 4; // 是否自动回城 bool isAutoRetreat = 10; // 是否自动征兵 bool isAutoConscript = 11; } // 建造请求 message MapBuildRequest { // 地图建筑的配置ID int32 configID = 1; // 建造的中心坐标点 Point point = 2; } // 建筑升级请求 message MapBuildUpgradeRequest { // 地图建筑的对象ID int64 objectID = 1; // 地图建筑的配置ID int32 configID = 2; // 当前等级 int32 level = 3; } // 地图对象更新列表 message MapObjectsUpdate { repeated MapObjectUpdate list = 1; } // 地图对象更新 message MapObjectUpdate { // 是否删除 bool isDelete = 1; // 对象ID int64 objectID = 2; // 配置ID int32 configID = 3; // 对象类型 int32 objectType = 4; // 坐标 Point point = 5; // 时间(毫秒) int64 time = 6; } // 行军对象的状态 message MapMarchState { // 行军对象ID int64 objectID = 1; // 行军对象当前坐标点 Point point = 2; // 行军对象当前状态 // 见 map.go -> MarchState 行军状态 int32 state = 3; // 状态开始时间 (毫秒) int64 stateStartTime = 4; // 状态结束时间 (毫秒) int64 stateEndTime = 5; // 行军速度 int64 speed = 6; // 调动目标建筑对象ID int64 redeployObjectID = 7; } // 玩家登录地图后,带下去一些进入地图之前需要知道必要的信息 message MapLoginResponse { // 玩家出生州ID(0表示未选州) int32 bornStateID = 1; // 玩家声望 int32 prestige = 2; } // 玩家进入地图成功后下发的信息 message MapEnterResponse { // 地基建造截止时间 (毫秒) int64 cityBaseEndTime = 1; // 迁城冷却截止时间 (毫秒) int64 relocateEndTime = 2; // 再起截止时间(毫秒) int64 comebackEndTime = 4; // 选州截止时间(毫秒) int64 rechooseComebackEndTime = 5; // 加固准备结束时间(毫秒) int64 reinforcePrepareEndTime = 6; // 加固生效结束时间(毫秒) int64 reinforceEffectEndTime = 7; // 加固冷却结束时间(毫秒) int64 reinforceCooldownEndTime = 8; // 资源守军恢复倒计时(秒) key: objectID value: 恢复时间 I64Map resDefends = 10; } // 地图攻城信息 message MapSiege { // 系统城对象ID int64 castleObjectID = 1; // 系统城配置ID int32 castleConfigID = 2; // 攻城大营对象ID int64 siegeCampObjectID = 3; // 当前攻城阶段 // 见 siege_stage.go 文件 SiegeStage 枚举 int32 siegeStage = 11; // 当前阶段结束时间(毫秒) int64 stageEndTime = 12; } // 发起集结请求 message MapAssembleRequest { // 要集结的队伍ID int32 teamID = 1; // 集结的目标对象ID int64 objectID = 2; // 集结的目标对象类型 int32 objectType = 3; // 集结的目标坐标 Point point = 4; // 集结时间(分钟) int32 assembleTime = 5; // 是否自动回城 bool isAutoRetreat = 6; } // 加入集结请求 message MapAssembleJoinRequest { // 要加入的队伍ID int32 teamID = 1; // 要加入的集结ID int64 assembleID = 2; // 是否自动回城 bool isAutoRetreat = 3; } message MapAssembleList { repeated MapAssemble list = 1; } // 地图集结信息 message MapAssemble { // 集结信息唯一ID int64 assembleID = 1; // 发起人玩家ID int64 leadPlayerID = 2; // 出发坐标点 Point startPoint = 3; // 集结结束时间(毫秒) int64 assembleEndTime = 4; // 集结对象列表 repeated MapAssembleMarch marchList = 5; // 是否已出发(讨伐中) bool isDepart = 6; // 集结目标对象ID int64 targetObjectID = 11; // 集结目标配置ID int32 targetConfigID = 12; // 集结目标对象类型 int32 targetConfigType = 13; // 集结目标的坐标 Point targetPoint = 14; } // 地图中的集结对象信息 message MapAssembleMarch { // 集结的玩家ID int64 playerID = 1; // 集结的玩家名 string playerName = 2; // 集结的行军对象ID int64 marchObjectID = 10; // 集结行军对象到达时间 int64 marchArriveTime = 11; // 行军对象的主将英雄配置ID int32 heroConfigID = 12; // 行军对象的主将英雄等级 int32 heroLevel = 13; // 行军对象的主将英雄星级 int32 heroStar = 14; // 行军对象的兵力 int32 troopsNum = 15; } // 地图标记列表 message MapMarkList { repeated MapMark list = 1; } // 玩家地图标记 message MapMark { // 标记ID int32 markID = 1; // 标记标题 如果为玩家标记 当前为空时 则使用地块名称 string title = 2; // 标记描述 string desc = 3; // 标记坐标 Point point = 4; // 标记指令 0未选择 1撤退 2集合 3防守 4进攻 5扎营 6建造 int32 command = 5; // 标记时间戳 单位秒 int64 markTime = 6; } // 玩家地图标记 message MapMarkRequest { // 标记标题 如果为玩家标记 当前为空时 则使用地块名称 string title = 1; // 标记描述 string desc = 2; // 标记坐标 Point point = 3; // 标记指令 0未选择 1撤退 2集合 3防守 4进攻 5扎营 6建造 int32 command = 4; } // 玩家地图标记 message MapMarkEditRequest { // 地图标记ID int32 markID = 1; // 标记标题 如果为玩家标记 当前为空时 则使用地块名称 string title = 2; // 标记描述 string desc = 3; // 标记指令 0未选择 1撤退 2集合 3防守 4进攻 5扎营 6建造 int32 command = 4; } // 地图战斗推送 message MapBattlePush { // 进攻方的行军对象ID int64 attackMarchObjectID = 1; // 进攻方主将英雄配置ID int32 attackHeroConfigID = 2; // 进攻方行军展示信息 MarchView attackMarchView = 3; // 防守方的行军对象ID(PVE为0) int64 defendMarchObjectID = 11; // 防守方主将英雄配置ID int32 defendHeroConfigID = 12; // 防守方行军展示信息 MarchView defendMarchView = 13; // 防守方的怪物组ID(PVP为0) int32 defendMonsterGroupID = 14; // 战斗类型,区分PVE和PVP // 见 tile_battle_type.go -> TileBattleType 战斗类型 int32 battleType = 21; // 是否胜利(以进攻方为视角) bool isWin = 22; // 发生战斗的坐标 Point point = 23; } // [请求] 攻城集结 message SiegeAssembleRequest { // 队伍ID int32 teamID = 1; // 攻城大营对象ID int64 siegeBaseObjectID = 2; // 是否作为攻城主力部队 bool isMainForce = 3; } // 地图战争信息 message War { // 宣战的系统城对象ID int64 castleObjectID = 1; // 宣战的系统城配置ID int32 castleConfigID = 2; // 宣战的系统城坐标 Point castlePoint = 3; // 宣战的攻城地基对象ID int64 siegeBaseObjectID = 4; // 宣战的攻城地基配置ID int32 siegeBaseConfigID = 5; // 宣战的攻城地基坐标 Point siegeBasePoint = 6; // 战争阶段, 见 siege_stage.go 文件 SiegeStage 枚举 int32 stage = 10; // 当前阶段结束时间(毫秒) int64 stageEndTime = 11; // 攻城主力部队数量 int32 mainForceNum = 20; // 攻城拆迁部队数量 int32 siegeSquadNum = 21; } // 地图战争列表 message WarList { repeated War list = 1; } // 攻城首占排名 message SiegeRank { // 建筑对象ID int64 buildObjectID = 1; // 杀敌排行 key: 杀敌数 value: 玩家名 repeated I32Str killRank = 2; // 耐久排行 key: 耐久数 value: 玩家名 repeated I32Str durabilityRank = 3; } // 攻城结果推送 message SiegeResult { // 联盟ID int64 leagueID = 1; // 联盟名 string leagueName = 2; // 建筑ID int64 buildObjectID = 10; // 建筑配置ID int32 buildConfigID = 11; // 杀敌数据 repeated SiegeData killData = 20; // 攻城数据 repeated SiegeData siegeData = 21; // 最后一击玩家信息 SiegePlayer lastKill = 22; } // 攻城结果 message SiegeData { // 玩家信息 SiegePlayer player = 1; // 值 int32 value = 2; } message SiegePlayer { // 玩家ID int64 playerID = 1; // 玩家名 string playerName = 2; // 玩家头像 int32 iconID = 3; // 玩家头像框ID int32 frameID = 4; } // 行军展示信息 message MarchView { // 行军展示ID(配置文件中) int32 marchViewID = 1; // 兵种ID1 int32 armID1 = 2; // 兵种ID2 int32 armID2 = 3; // 兵种ID3 int32 armID3 = 4; } // 寻路请求 message MapFindPathRequest { // 选择的队伍ID int32 teamID = 1; // 目标坐标点 Point point = 2; } // 再起信息 message ComebackResponse { // 新的坐标点 Point point = 1; // 再起冷却结束时间(毫秒) int64 comebackEndTime = 2; // 选州再起冷却结束时间(毫秒) int64 rechooseComebackEndTime = 3; } // 重新出生推送 message RebornPush { // 新的坐标点 Point point = 1; // 是否出生失败(客户端要重试) bool isFailed = 2; } // 地图ui层-行军对象列表 message MapUIMarchs { // 对象列表 repeated MapUIMarch list = 1; } // 地图ui层-行军 message MapUIMarch { // 对象唯一id int64 objectID = 1; // 对象配置ID int32 configID = 2; // 行军状态 // 见 map.go -> MarchState 行军状态 int32 marchState = 3; // 行军展示信息 MarchView marchView = 4; // 寻路信息(运用于行军/军团等可移动对象) MapPath path = 5; // 对象所在坐标点 Point point = 6; // 所有者的玩家ID int64 playerID = 7; // 所有者的联盟ID int64 leagueID = 8; // 调动对象ID int64 redeployObjectID = 9; } // 地图ui层-系统城对象列表 message MapUICastles { // 对象列表 repeated MapUICastle list = 1; } // 地图ui层-系统城对象列表 message MapUICastle { // 对象唯一id int64 objectID = 1; // 对象所在坐标点 Point point = 2; // 对象配置ID int32 configID = 3; // 占领的联盟ID int64 leagueID = 4; // 占领的联盟名称 string leagueName = 5; // 占领的联盟简称 string leagueAbbName = 6; // 旗帜背景ID L-联盟-旗帜表旗帜ID int32 flagBg = 7; // 旗帜图标ID L-联盟-旗帜表旗帜ID int32 flagIcon = 8; } // 获取指定对象的坐标 message MapObjectPositionRequest { // 对象唯一id int64 objectID = 1; // 对象类型,见 map.go -> ObjectType 地块对象类型 int32 objectType = 2; } // 侦察列表(侦察中+空闲) message MapScoutList { repeated MapScout list = 1; } // 侦察信息 message MapScout { // 侦察队列ID int32 queueID = 1; // 侦察状态 0空闲 1行军 2侦察中 int32 scoutStatus = 2; // 侦察坐标 如果为空,则为空闲 Point point = 3; // 状态结束时间戳 单位毫秒 int64 endTime = 4; } // 军情线列表 message MapArmyLines { repeated MapArmyLine list = 1; } // 军情线 message MapArmyLine { // 对象唯一id int64 objectID = 1; // 所有者的玩家ID int64 playerID = 2; // 所有者的联盟ID int64 leagueID = 3; // 对象类型,用来读取下面对应的配置ID和结构 // 见 map.go -> ObjectType 地块对象类型 int32 objectType = 4; // 速度 int64 speed = 5; // 路径列表 repeated Point points = 6; // 终点坐标 Point targetPoint = 7; // 目标对象ID int64 targetObjectID = 8; }