table SignalingAddr { ip:[uint8]; port:uint16; } table MatchingSignalingInfo { npid:string; addr:SignalingAddr; } table Matching2SignalingInfo { member_id:uint16; addr:SignalingAddr; } table BinAttr { id:uint16; data:[uint8]; } table IntAttr { id:uint16; num:uint32; } table RoomMemberBinAttrInternal { updateDate:uint64; data:BinAttr; } table BinAttrInternal { updateDate:uint64; updateMemberId:uint16; data:BinAttr; } table OptParam { type:uint8; flag:uint8; hubMemberId:uint16 ; } table GroupConfig { slotNum:uint32; label:[uint8]; withPassword:bool; } table UserInfo { npId:string; onlineName:string; avatarUrl:string; } table RoomMemberDataInternal { userInfo:UserInfo; joinDate:uint64; memberId:uint16; teamId:uint8; roomGroup:RoomGroup; natType:uint8; flagAttr:uint32; roomMemberBinAttrInternal:[RoomMemberBinAttrInternal]; } table RoomGroup { groupId:uint8; withPassword:bool; label:[uint8]; slotNum:uint32; curGroupMemberNum:uint32; } table RoomDataInternal { serverId:uint16; worldId:uint32; lobbyId:uint64; roomId:uint64; passwordSlotMask:uint64; maxSlot:uint32; memberList:[RoomMemberDataInternal]; ownerId:uint16; roomGroup:[RoomGroup]; flagAttr:uint32; roomBinAttrInternal:[BinAttrInternal]; } table RoomDataExternal { serverId:uint16; worldId:uint32; publicSlotNum:uint16; privateSlotNum:uint16; lobbyId:uint64; roomId:uint64; openPublicSlotNum:uint16; maxSlot:uint16; openPrivateSlotNum:uint16; curMemberNum:uint16; passwordSlotMask:uint64; owner:UserInfo; roomGroup:[RoomGroup]; flagAttr:uint32; roomSearchableIntAttrExternal:[IntAttr]; roomSearchableBinAttrExternal:[BinAttr]; roomBinAttrExternal:[BinAttr]; } table IntSearchFilter { searchOperator:uint8; attr:IntAttr; } table BinSearchFilter { searchOperator:uint8; attr:BinAttr; } table PresenceOptionData { data:[uint8]; len:uint32; } table RoomGroupPasswordConfig { groupId:uint8; withPassword:bool; } table SearchRoomRequest { option:int32; worldId:uint32; lobbyId:uint64; rangeFilter_startIndex:uint32; rangeFilter_max:uint32; flagFilter:uint32; flagAttr:uint32; intFilter:[IntSearchFilter]; binFilter:[BinSearchFilter]; attrId:[uint16]; } table SearchRoomResponse { startIndex:uint32; total:uint32; rooms:[RoomDataExternal]; } table CreateJoinRoomRequest { worldId:uint32; lobbyId:uint64; maxSlot:uint32; flagAttr:uint32; roomBinAttrInternal:[BinAttr]; roomSearchableIntAttrExternal:[IntAttr]; roomSearchableBinAttrExternal:[BinAttr]; roomBinAttrExternal:[BinAttr]; roomPassword:[uint8]; groupConfig:[GroupConfig]; passwordSlotMask:uint64; allowedUser:[string]; blockedUser:[string]; joinRoomGroupLabel:[uint8]; roomMemberBinAttrInternal:[BinAttr]; teamId:uint8; sigOptParam:OptParam; } table JoinRoomRequest { roomId:uint64; roomPassword:[uint8]; joinRoomGroupLabel:[uint8]; roomMemberBinAttrInternal:[BinAttr]; optData:PresenceOptionData; teamId:uint8; } table JoinRoomResponse { room_data: RoomDataInternal; signaling_data: [Matching2SignalingInfo]; } table LeaveRoomRequest { roomId:uint64; optData:PresenceOptionData; } table GetRoomDataExternalListRequest { roomIds:[uint64]; attrIds:[uint16]; } table GetRoomDataExternalListResponse { rooms:[RoomDataExternal]; } table SetRoomDataExternalRequest { roomId:uint64; roomSearchableIntAttrExternal:[IntAttr]; roomSearchableBinAttrExternal:[BinAttr]; roomBinAttrExternal:[BinAttr]; } table SetRoomDataInternalRequest { roomId:uint64; flagFilter:uint32; flagAttr:uint32; roomBinAttrInternal:[BinAttr]; passwordConfig:[RoomGroupPasswordConfig]; passwordSlotMask:uint64; ownerPrivilegeRank:[uint16]; } table GetRoomMemberDataInternalRequest { roomId:uint64; memberId:uint16; attrId:[uint16]; } table SetRoomMemberDataInternalRequest { roomId:uint64; memberId:uint16; teamId:uint8; roomMemberBinAttrInternal:[BinAttr]; } table SetUserInfo { serverId:uint16; userBinAttr:[BinAttr]; } table GetRoomDataInternalRequest { roomId:uint64; attrId:[uint16]; } table RoomMemberUpdateInfo { roomMemberDataInternal:RoomMemberDataInternal; eventCause:uint8; optData:PresenceOptionData; } table NotificationUserJoinedRoom { room_id:uint64; update_info:RoomMemberUpdateInfo; signaling:SignalingAddr; } table RoomUpdateInfo { eventCause:uint8; errorCode:int32; optData:PresenceOptionData; } table RoomDataInternalUpdateInfo { newRoomDataInternal:RoomDataInternal; prevFlagAttr:uint32; prevRoomPasswordSlotMask:uint64; newRoomGroup:[uint8]; newRoomBinAttrInternal:[uint16]; } table RoomMemberDataInternalUpdateInfo { newRoomMemberDataInternal:RoomMemberDataInternal; prevFlagAttr:uint32; prevTeamId:uint8; newRoomMemberBinAttrInternal:[uint16]; } table GetPingInfoResponse { serverId:uint16; worldId:uint32; roomId:uint64; rtt:uint32; } table SendRoomMessageRequest { roomId:uint64; castType:uint8; dst:[uint16]; msg:[uint8]; option:uint8; } table RoomMessageInfo { filtered:bool; castType:uint8; dst:[uint16]; srcMember:UserInfo; msg:[uint8]; } table MessageDetails { communicationId:string; msgId:uint64; mainType:uint16; subType:uint16; msgFeatures:uint32; subject:string; body:string; data:[uint8]; } table SendMessageRequest { message:[uint8] (nested_flatbuffer: "MessageDetails"); npids:[string]; } table BoardInfo { rankLimit:uint32; updateMode:uint32; sortMode:uint32; uploadNumLimit:uint32; uploadSizeLimit:uint32; } table RecordScoreRequest { boardId:uint32; pcId:int32; score:int64; comment:string; data:[uint8]; } table GetScoreRangeRequest { boardId:uint32; startRank:uint32; numRanks:uint32; withComment:bool; withGameInfo:bool; } table ScoreNpIdPcId { npid:string; pcId:int32; } table GetScoreNpIdRequest { boardId:uint32; npids:[ScoreNpIdPcId]; withComment:bool; withGameInfo:bool; } table GetScoreFriendsRequest { boardId:uint32; include_self:bool; max:uint32; withComment:bool; withGameInfo:bool; } table ScoreRankData { npId:string; onlineName:string; pcId:int32; rank:uint32; score:int64; hasGameData:bool; recordDate:uint64; } table ScoreInfo { data:[uint8]; } table GetScoreResponse { rankArray:[ScoreRankData]; commentArray:[string]; infoArray:[ScoreInfo]; lastSortDate:uint64; totalRecord:uint32; } table RecordScoreGameDataRequest { boardId:uint32; pcId:int32; score:int64; } table GetScoreGameDataRequest { boardId:uint32; npId:string; pcId:int32; } table TusUser { vuser:bool; npid:string; } table TusVariable { ownerId:string; hasData:bool; lastChangedDate:uint64; lastChangedAuthorId:string; variable:int64; oldVariable:int64; } table TusVarResponse { vars:[TusVariable]; } table TusSetMultiSlotVariableRequest { user:TusUser; slotIdArray:[int32]; variableArray:[int64]; } table TusGetMultiSlotVariableRequest { user:TusUser; slotIdArray:[int32]; } table TusGetMultiUserVariableRequest { users:[TusUser]; slotId:int32; } table TusGetFriendsVariableRequest { slotId:int32; includeSelf:bool; sortType:int32; arrayNum:uint32; } table TusAddAndGetVariableRequest { user:TusUser; slotId:int32; inVariable:int64; isLastChangedDate:[uint64]; isLastChangedAuthorId:string; } table TusTryAndSetVariableRequest { user:TusUser; slotId:int32; opeType:int32; variable:int64; isLastChangedDate:[uint64]; isLastChangedAuthorId:string; compareValue:[int64]; } table TusDeleteMultiSlotVariableRequest { user:TusUser; slotIdArray:[int32]; } table TusSetDataRequest { user:TusUser; slotId:int32; data:[uint8]; info:[uint8]; isLastChangedDate:[uint64]; isLastChangedAuthorId:string; } table TusDataStatus { ownerId:string; hasData:bool; lastChangedDate:uint64; lastChangedAuthorId:string; info:[uint8]; } table TusData { status: TusDataStatus; data:[uint8]; } table TusDataStatusResponse { status: [TusDataStatus]; } table TusGetDataRequest { user:TusUser; slotId:int32; } table TusGetMultiSlotDataStatusRequest { user:TusUser; slotIdArray:[int32]; } table TusGetMultiUserDataStatusRequest { users:[TusUser]; slotId:int32; } table TusGetFriendsDataStatusRequest { slotId:int32; includeSelf:bool; sortType:int32; arrayNum:uint32; } table TusDeleteMultiSlotDataRequest { user:TusUser; slotIdArray:[int32]; } table SetPresenceRequest { title:string; status:string; comment:string; data:[uint8]; } table MatchingSearchCondition { attr_type:uint32; attr_id:uint32; comp_op:uint32; comp_value:uint32; } table MatchingAttr { attr_type:uint32; attr_id:uint32; num:uint32; data:[uint8]; } table CreateRoomGUIRequest { total_slots:uint32; private_slots:uint32; privilege_grant:bool; stealth:bool; game_attrs:[MatchingAttr]; } table GUIUserInfo { info:UserInfo; owner:bool; } table MatchingRoomStatus { id:[uint8]; members:[GUIUserInfo]; kick_actor:string; opt:[uint8]; } table GetRoomListGUIRequest { range_start:uint32; range_max:uint32; conds:[MatchingSearchCondition]; attrs:[MatchingAttr]; } table MatchingRoom { id:[uint8]; attr:[MatchingAttr]; } table MatchingRoomList { start:uint32; total:uint32; rooms:[MatchingRoom]; } table MatchingGuiRoomId { id:[uint8]; } table SetRoomSearchFlagGUI { roomid:[uint8]; stealth:bool; } table QuickMatchGUIRequest { conds:[MatchingSearchCondition]; available_num:uint32; } table SearchJoinRoomGUIRequest { conds:[MatchingSearchCondition]; attrs:[MatchingAttr]; } table MatchingSearchJoinRoomInfo { room:MatchingRoomStatus; attr:[MatchingAttr]; }