syntax = "proto2"; // Minimal subset of Dota 2 GC protobufs (from SteamDatabase/GameTracking-Dota2) message CMsgClientHello { optional uint32 version = 1; optional uint32 client_session_need = 3; optional int32 engine = 7; // 1 = Source 2 } message CMsgSOIDOwner { optional uint32 type = 1; optional uint64 id = 2; } message CMsgSOSingleObject { optional int32 type_id = 2; optional bytes object_data = 3; optional fixed64 version = 4; optional CMsgSOIDOwner owner_soid = 5; } message CMsgSOMultipleObjectsSingleObject { optional int32 type_id = 1; optional bytes object_data = 2; } message CMsgSOMultipleObjects { repeated CMsgSOMultipleObjectsSingleObject objects_modified = 2; optional fixed64 version = 3; repeated CMsgSOMultipleObjectsSingleObject objects_added = 4; repeated CMsgSOMultipleObjectsSingleObject objects_removed = 5; optional CMsgSOIDOwner owner_soid = 6; } message CMsgSOCacheSubscribedType { optional int32 type_id = 1; repeated bytes object_data = 2; } message CMsgSOCacheSubscribed { repeated CMsgSOCacheSubscribedType objects = 2; optional fixed64 version = 3; optional CMsgSOIDOwner owner_soid = 4; } message CMsgSOCacheUnsubscribed { optional CMsgSOIDOwner owner_soid = 2; } message CMsgClientWelcome { optional uint32 version = 1; repeated CMsgSOCacheSubscribed outofdate_subscribed_caches = 3; } message CMsgGenericResult { optional uint32 result = 1; } message CSODOTALobbyMember { optional fixed64 id = 1; optional int32 team = 3; optional uint32 slot = 7; } message CSODOTALobby { optional uint64 lobby_id = 1; optional uint32 game_mode = 3; optional int32 state = 4; optional fixed64 leader_id = 11; optional int32 lobby_type = 12; optional string game_name = 16; optional uint32 server_region = 21; optional string custom_game_mode = 54; optional string custom_map_name = 55; optional uint64 custom_game_id = 68; optional uint32 custom_min_players = 71; optional uint32 custom_max_players = 72; optional int32 visibility = 75; optional fixed64 custom_game_crc = 76; optional bool custom_game_auto_created_lobby = 77; optional fixed32 custom_game_timestamp = 80; optional bool custom_game_penalties = 107; repeated CSODOTALobbyMember all_members = 120; } message CMsgPracticeLobbySetDetails { optional uint64 lobby_id = 1; optional string game_name = 2; optional uint32 server_region = 4; optional uint32 game_mode = 5; optional bool allow_cheats = 10; optional bool fill_with_bots = 11; optional bool allow_spectating = 13; optional string pass_key = 15; optional bool lan = 25; optional string custom_game_mode = 26; optional string custom_map_name = 27; optional uint32 custom_difficulty = 28; optional uint64 custom_game_id = 29; optional uint32 custom_min_players = 30; optional uint32 custom_max_players = 31; optional int32 visibility = 33; optional fixed64 custom_game_crc = 34; optional fixed32 custom_game_timestamp = 37; optional bool custom_game_penalties = 47; } message CMsgPracticeLobbyCreate { optional string search_key = 1; optional string pass_key = 5; optional uint32 client_version = 6; optional CMsgPracticeLobbySetDetails lobby_details = 7; } message CMsgPracticeLobbyLeave { } message CMsgPracticeLobbySetTeamSlot { optional int32 team = 1; optional uint32 slot = 2; } message CMsgPracticeLobbyList { optional string pass_key = 2; optional uint32 region = 3; optional uint32 game_mode = 4; } message CMsgPracticeLobbyListResponseEntry { optional uint64 id = 1; optional string name = 10; optional string custom_game_mode = 11; optional uint32 game_mode = 12; optional uint32 players = 14; optional string custom_map_name = 15; optional uint32 max_player_count = 16; optional uint32 server_region = 17; optional uint32 min_player_count = 21; optional bool penalties_enabled = 22; } message CMsgPracticeLobbyListResponse { repeated CMsgPracticeLobbyListResponseEntry lobbies = 2; } message CMsgJoinableCustomLobbiesRequest { optional uint32 server_region = 1; optional uint64 custom_game_id = 2; } message CMsgJoinableCustomLobbiesResponseEntry { optional fixed64 lobby_id = 1; optional uint64 custom_game_id = 2; optional string lobby_name = 3; optional uint32 member_count = 4; optional uint32 leader_account_id = 5; optional string leader_name = 6; optional string custom_map_name = 7; optional uint32 max_player_count = 8; optional uint32 server_region = 9; optional bool has_pass_key = 11; optional string lan_host_ping_location = 12; optional uint32 lobby_creation_time = 13; optional uint32 custom_game_timestamp = 14; optional uint64 custom_game_crc = 15; optional uint32 min_player_count = 16; optional bool penalties_enabled = 17; } message CMsgJoinableCustomLobbiesResponse { repeated CMsgJoinableCustomLobbiesResponseEntry lobbies = 1; }