package dota; import "dota_shared_enums.proto"; import "dota_gcmessages_common.proto"; option optimize_for = SPEED; option cc_generic_services = false; message CSourceTVGameSmall { message Player { optional uint32 account_id = 1; optional uint32 hero_id = 2; } optional uint32 activate_time = 1; optional uint32 deactivate_time = 2; optional uint64 server_steam_id = 3; optional uint64 lobby_id = 4; optional uint32 league_id = 5; optional uint32 lobby_type = 6; optional int32 game_time = 7; optional uint32 delay = 8; optional uint32 spectators = 9; optional uint32 game_mode = 10; optional uint32 average_mmr = 11; optional string team_name_radiant = 15; optional string team_name_dire = 16; optional fixed64 team_logo_radiant = 24; optional fixed64 team_logo_dire = 25; optional uint32 sort_score = 17; optional float last_update_time = 18; optional int32 radiant_lead = 19; optional uint32 radiant_score = 20; optional uint32 dire_score = 21; repeated CSourceTVGameSmall.Player players = 22; optional fixed32 building_state = 23; optional uint32 weekend_tourney_tournament_id = 26; optional uint32 weekend_tourney_division = 27; optional uint32 weekend_tourney_skill_level = 28; optional uint32 weekend_tourney_bracket_round = 29; } message CMsgClientToGCFindTopSourceTVGames { optional string search_key = 1; optional uint32 league_id = 2; optional uint32 hero_id = 3; optional uint32 start_game = 4; optional uint32 game_list_index = 5; repeated uint64 lobby_ids = 6; } message CMsgGCToClientFindTopSourceTVGamesResponse { optional string search_key = 1; optional uint32 league_id = 2; optional uint32 hero_id = 3; optional uint32 start_game = 4; optional uint32 num_games = 5; optional uint32 game_list_index = 6; repeated CSourceTVGameSmall game_list = 7; optional bool specific_games = 8; } message CMsgClientToGCTopMatchesRequest { optional uint32 hero_id = 1; optional uint32 player_account_id = 2; optional uint32 team_id = 3; } message CMsgClientToGCTopLeagueMatchesRequest { } message CMsgClientToGCTopFriendMatchesRequest { } message CMsgClientToGCMatchesMinimalRequest { repeated uint64 match_ids = 1; } message CMsgClientToGCMatchesMinimalResponse { repeated CMsgDOTAMatchMinimal matches = 1; optional bool last_match = 2; } message CMsgGCToClientTopLeagueMatchesResponse { repeated CMsgDOTAMatchMinimal matches = 2; } message CMsgGCToClientTopFriendMatchesResponse { repeated CMsgDOTAMatchMinimal matches = 1; } message CMsgClientToGCFindTopMatches { optional uint32 start_game = 1; optional uint32 league_id = 2; optional uint32 hero_id = 3; optional uint32 friend_id = 4; optional bool friend_list = 5; optional bool league_list = 6; } message CMsgGCToClientFindTopLeagueMatchesResponse { optional uint32 start_game = 1; optional uint32 league_id = 2; optional uint32 hero_id = 3; repeated uint32 match_ids = 4; repeated CMsgDOTAMatch matches = 5; } message CMsgSpectateFriendGame { optional fixed64 steam_id = 1; } message CMsgSpectateFriendGameResponse { optional fixed64 server_steamid = 4; } message CMsgDOTAMatchMinimal { message Player { optional uint32 account_id = 1; optional uint32 hero_id = 2; optional uint32 kills = 3; optional uint32 deaths = 4; optional uint32 assists = 5; repeated uint32 items = 6; optional uint32 player_slot = 7; } message Tourney { optional uint32 league_id = 1; optional uint32 series_type = 8; optional uint32 series_game = 9; optional uint32 weekend_tourney_tournament_id = 10; optional uint32 weekend_tourney_season_trophy_id = 11; optional uint32 weekend_tourney_division = 12; optional uint32 weekend_tourney_skill_level = 13; optional uint32 radiant_team_id = 2; optional string radiant_team_name = 3; optional fixed64 radiant_team_logo = 4; optional uint32 dire_team_id = 5; optional string dire_team_name = 6; optional fixed64 dire_team_logo = 7; } optional uint64 match_id = 1; optional fixed32 start_time = 2; optional uint32 duration = 3; optional DOTA_GameMode game_mode = 4 [default = DOTA_GAMEMODE_NONE]; repeated CMsgDOTAMatchMinimal.Player players = 6; optional CMsgDOTAMatchMinimal.Tourney tourney = 7; optional EMatchOutcome match_outcome = 8 [default = k_EMatchOutcome_Unknown]; } message CDOTAReplayDownloadInfo { message Highlight { optional uint32 timestamp = 1; optional string description = 2; } optional CMsgDOTAMatchMinimal match = 1; optional string title = 2; optional string description = 3; optional uint32 size = 4; repeated string tags = 5; optional bool exists_on_disk = 6; } message CMsgWatchGame { optional fixed64 server_steamid = 1; optional uint32 client_version = 2; optional fixed64 watch_server_steamid = 3; optional uint64 lobby_id = 4; repeated uint32 regions = 5; } message CMsgCancelWatchGame { } message CMsgWatchGameResponse { enum WatchGameResult { PENDING = 0; READY = 1; GAMESERVERNOTFOUND = 2; UNAVAILABLE = 3; CANCELLED = 4; INCOMPATIBLEVERSION = 5; MISSINGLEAGUESUBSCRIPTION = 6; LOBBYNOTFOUND = 7; } optional CMsgWatchGameResponse.WatchGameResult watch_game_result = 1 [default = PENDING]; optional uint32 source_tv_public_addr = 2; optional uint32 source_tv_private_addr = 3; optional uint32 source_tv_port = 4; optional fixed64 game_server_steamid = 5; optional fixed64 watch_server_steamid = 6; optional fixed64 watch_tv_unique_secret_code = 7; } message CMsgPartyLeaderWatchGamePrompt { optional fixed64 game_server_steamid = 5; } message CDOTABroadcasterInfo { optional uint32 account_id = 1; optional fixed64 server_steam_id = 2; optional bool live = 3; optional string team_name_radiant = 4; optional string team_name_dire = 5; optional string stage_name = 6; optional uint32 series_game = 7; optional uint32 series_type = 8; optional uint32 upcoming_broadcast_timestamp = 9; optional bool allow_live_video = 10; }