syntax = "proto3"; package serverproto; import "user.proto"; //该proto下文件会使用router节点进行转发 ///////////////局部跨服 section cross //远航试炼 message SSCrossYuanHangTrialViewListReq { //project crossserver //RouteRule crossserver } message SSCrossYuanHangTrialViewListAck { //project game int32 error = 1; repeated YuanHangTrialData trial_view_list = 2; //界面上可视列表 } message SSCrossYuanHangTrialSelfReq { //project crossserver //RouteRule crossserver uint64 self_uid = 1; //获取自身当前的远航数据(有可能已经结束) //意外情况下导致远航没有出现在跨服,在每次获取自身数据时重新设置一遍 int32 trial_type = 2; uint64 end_time_stamp = 3; FightRoleInfo self_fight_info = 4; int32 duration_time = 5; //持续时间(分钟) } message SSCrossYuanHangTrialSelfAck { //project game YuanHangTrialData self_info = 1; //自身远航数据(和玩家个人保存数据有区别) } //发起远航试炼 message SSCrossYuanHangTrialReq { //project crossserver //RouteRule crossserver int32 trial_type = 1; uint64 end_time_stamp = 2; FightRoleInfo self_fight_info = 3; int32 duration_time = 4; //持续时间(分钟) } message SSCrossYuanHangTrialAck { } //远航试炼挑战 message SSCrossYuanHangTrialChallengeReq { //project crossserver //RouteRule crossserver uint64 challenge_uid = 1; uint64 challenge_uid_end_time = 2; int32 be_challenge_max_num = 3; //最大被挑战次数 } message SSCrossYuanHangTrialChallengeAck { //project game int32 error = 1; //错误码 uint64 challenge_uid = 2; uint64 challenge_uid_end_time = 3; FightRoleInfo fight_info = 5; //被挑战玩家战斗数据 } //变更列表通知 message SSCrossYuanHangTrialViewNtf { //project social|game repeated YuanHangTrialData trial_view_list = 1; //界面上可视列表 } //挑战结果通知 message SSCrossYuanHangTrialChallengeResultReq { //project crossserver //RouteRule crossserver uint64 challenged_uid = 1; uint64 challenged_uid_end_time = 2; int32 fight_time = 3; //战斗持续时间(判断合法性) bool win = 4; string self_nick_name = 5; //玩家自己昵称 int32 self_zone = 6; //顽疾自己所在区服ID FightRoleInfo fight_info = 7; //挑战玩家战斗数据 } message SSCrossYuanHangTrialChallengeResultAck { //project game int32 error = 1; //错误码 bool win = 2; int32 ship_trial_level = 3; //远航试炼登记 YuanHangTrialLogData log_data = 4; //有则添加到自身记录中 } //远航试炼排行榜积分更新 message SSCrossYuanHangTrialUpdateRankScoreNtf { //project crossserver //RouteRule crossserver uint64 uid = 1; uint64 rank_score = 2; } //获取远航试炼排行榜 message SSCrossYuanHangTrialRankListReq { //project crossserver //RouteRule crossserver uint64 uid = 1; int32 start_idx = 2; } message SSCrossYuanHangTrialRankListAck { //project game int32 start_idx = 1; uint32 self_rank = 2; //自身排名 uint64 self_score = 3; //自身积分 uint32 total_rank = 4; //当前参加排名的人数 repeated CommonRankInfo rank_list = 5; } //被挑战日志通知 message SSCrossYuanHangTrialLogNtf { //project social|game|db uint64 ntf_uid = 1; YuanHangTrialLogData log_data = 2; //有则添加到自身记录中 } //查询飞艇信息 message SSCrossYuanHangTrialInfoReq { //project crossserver //RouteRule crossserver uint64 trial_uid = 1; uint64 trial_end_time = 2; } message SSCCrossYuanHangTrialInfoAck { //project game int32 error = 1; YuanHangTrialData trial_data = 2; string nick_name = 3; } //跨服-巅峰爬塔 //排行榜按照最大战力/阵容数据实时刷新(不是最大战力时的阵容) message SSCrossRankUpdateNtf { //project crossrank //RouteRule crossrank uint64 self_max_fight_power = 1; FightRoleInfo fight_info = 2; //挑战玩家战斗数据 } //进入巅峰之塔玩家阵容信息更新 message SSCrossRankFightInfoUpdateNtf { //project crossrank //RouteRule crossrank FightRoleInfo fight_info = 1; //挑战玩家战斗数据 uint64 cur_self_max_fight_power = 2; //当前玩家战斗力(不在榜上时更新用当前战斗力更新榜信息) } //巅峰之塔匹配玩家 message SSCrossTopTowerMatchFightReq { //project crossrank //RouteRule crossrank // repeated KeyValueTypeList match_list = 1; //1-10层匹配参数 } message SSCrossTopTowerMatchFightAck { //project game int32 error = 1; repeated TopTowerFightRoleInfo fight_info_list = 2; //挑战玩家战斗数据 } //买路排行榜通知 message SSCrossTopTowerForceWinRankUpdateNtf { //project crossrank //RouteRule crossrank uint64 fight_uid = 1; } //获取买路排行榜 message SSCrossTopTowerForceWinRankListReq { //project crossrank //RouteRule crossrank uint64 uid = 1; int32 start_idx = 2; } message SSCrossTopTowerForceWinRankListAck { //project game int32 start_idx = 1; uint32 self_rank = 2; //自身排名 uint64 self_score = 3; //自身积分 uint32 total_rank = 4; //当前参加排名的人数 repeated CommonRankInfo rank_list = 5; } //该proto下文件会使用router节点进行转发 ///////////////全局跨服global cross //跨服聊天(根据类型区分局部跨服还是整体跨服) message SSGCrossChatMessageReq { //project gcrossmap //RouteRule gcrossmap int32 type = 1; ChatMessageInfo message = 2;//消息内容 uint64 target_id = 3;//私人聊天,好友聊天时发送的目标玩家 ChatPlayerBriefInfo from_id = 4;//私人聊天,好友聊天时发送的来源玩家 int32 cur_space_id = 5; } message SSGCrossChatMessageAck { //project game int32 error = 1; //错误码 uint64 target_id = 2; //目标玩家(离线玩家ID) ChatMessageInfo message = 3;//消息内容 int32 type = 4; } message SSGCrossChatMessageNtf { //project game repeated MessageContentInfo msg_list = 1; repeated SystemMessage s_msg_list = 2; } //map进程通过etcd上报自己的状态,maprouter进程通过etcd的监听来获取每个map的状态 //角色进入地图,选择合适的AOI节点(由玩家决定进入哪个线) //地图通用参数 //1,情侣 message SelfCrossMapParam { uint64 lover_uid = 1;// 情侣 } message SSGCrossMapEnterReq { //project gcrossmap //RouteRule gcrossmap int32 aoi_line = 1; //选择进入的地图 int32 map_type = 2; //选择的地图功能类型 PlayerShowInfo show_info = 3; Vector3 pos = 4; //位置 Vector3 dir = 5; //朝向 SelfCrossMapParam self_map_param = 6; } message SSGCrossMapEnterAck { //project game int32 error = 1; //错误码 int32 line_num = 2; int32 map_type = 3; string map_sid = 4; UnitPosAndDir unit_info = 5; } //通知其他玩家,有单位进入地图 message SSGCrossMapEnterNtf { //project game repeated UnitPosAndDir unit_info_list = 1; } message SSGCrossMapLeaveReq { //project gcrossmap //RouteRule gcrossmap Vector3 pos = 1; } message SSGCrossMapLeaveAck { //project game } message SSGCrossMapLeaveNtf { //project game repeated UnitPosAndDir unit_info_list = 1; } //客户端1s内发送的位置同步包 message SSGCrossMapSyncPosReq { //project gcrossmap //RouteRule gcrossmap Vector3 pos = 1; //位置 Vector3 dir = 2; //朝向 int32 is_on_ground = 3; //是否在地面上 int32 cur_space_id = 4; //当前所在场景ID } //客户端模拟使用 message SSGCrossMapSyncParamReq { //project gcrossmap //RouteRule gcrossmap Vector3 pos = 1; //位置 Vector3 dir = 2; //朝向 int32 is_on_ground = 3; //是否在地面上 int32 cur_space_id = 4; //当前所在场景ID int32 param_id = 5; } //不合法的移动时返回错误码 message SSGCrossMapSyncPosAck { int32 error = 1; //错误码 Vector3 pos = 2; //位置 Vector3 dir = 3; //朝向 } message SSGCrossMapSyncPosNtf { //project game repeated UnitPosAndDir sync_unit_list = 1; //是自己则表示自己进入地图成功或者自己的操作成功 } //参数信息同步广播 message SSGCrossMapSyncParamNtf{ //project game repeated UnitPosAndDir sync_unit_list = 1; } //获取其他玩家角色信息,AOI地图显示使用(注意:每次发送不超过10个玩家,超过10个后服务器不会返回,做保护处理) message SSGCrossMapOtherUnitShowInfoReq { //project gcrossmap //RouteRule gcrossmap int32 cur_space_id = 1; repeated uint64 show_uid_list = 2; } message SSGCrossMapOtherUnitShowInfoNtf { //project game repeated PlayerShowInfo show_info_list = 1; //玩家角色信息 } //avatar信息同步等数据相关消息(//玩家显示变更通知) 定时更新 message SSGCrossMapUnitShowUpdateNtf { //project gcrossmap //RouteRule gcrossmap int32 cur_space_id = 1; repeated PlayerShowInfo show_info_list = 2; }