import "steammessages.proto"; import "base_gcmessages.proto"; option optimize_for = SPEED; option cc_generic_services = false; enum ETFGCMsg { k_EMsgGCReportWarKill = 5001; k_EMsgGCKickPlayer_DEPRECATED = 5020; k_EMsgGCStartedTraining_DEPRECATED = 5021; k_EMsgGCFreeTrial_ChooseMostHelpfulFriend = 5022; k_EMsgGCRequestTF2Friends = 5023; k_EMsgGCRequestTF2FriendsResponse = 5024; k_EMsgGCReplay_SubmitContestEntry = 5026; k_EMsgGCReplay_SubmitContestEntryResponse = 5027; k_EMsgGCSaxxy_Awarded = 5029; k_EMsgGCFreeTrial_ThankedBySomeone = 5028; k_EMsgGCFreeTrial_ThankedSomeone = 5030; k_EMsgGCFreeTrial_ConvertedToPremium = 5031; k_EMsgGCMeetThePyroSilliness_BananaCraft_DEPRECATED = 5032; k_EMsgGCMVMARG_HighFiveSuccessResponse_DEPRECATED = 5033; k_EMsgGCMVMARG_HighFiveOnClient_DEPRECATED = 5034; k_EMsgGCCoaching_AddToCoaches = 5200; k_EMsgGCCoaching_AddToCoachesResponse = 5201; k_EMsgGCCoaching_RemoveFromCoaches = 5202; k_EMsgGCCoaching_RemoveFromCoachesResponse = 5203; k_EMsgGCCoaching_FindCoach = 5204; k_EMsgGCCoaching_FindCoachResponse = 5205; k_EMsgGCCoaching_AskCoach = 5206; k_EMsgGCCoaching_AskCoachResponse = 5207; k_EMsgGCCoaching_CoachJoinGame = 5208; k_EMsgGCCoaching_CoachJoining = 5209; k_EMsgGCCoaching_CoachJoined = 5210; k_EMsgGCCoaching_LikeCurrentCoach = 5211; k_EMsgGCCoaching_RemoveCurrentCoach = 5212; k_EMsgGCCoaching_AlreadyRatedCoach = 5213; k_EMsgGC_Duel_Request = 5500; k_EMsgGC_Duel_Response = 5501; k_EMsgGC_Duel_Results = 5502; k_EMsgGC_Duel_Status = 5503; k_EMsgGC_Halloween_ReservedItem_DEPRECATED = 5600; k_EMsgGC_Halloween_GrantItem_DEPRECATED = 5601; k_EMsgGC_Halloween_GrantItemResponse_DEPRECATED = 5604; k_EMsgGC_Halloween_Cheat_QueryResponse_DEPRECATED = 5605; k_EMsgGC_Halloween_ItemClaimed_DEPRECATED = 5606; k_EMsgGC_Halloween_ReservedItem = 5607; k_EMsgGC_Halloween_GrantItem = 5608; k_EMsgGC_Halloween_GrantItemResponse = 5609; k_EMsgGC_Halloween_Cheat_QueryResponse_DEPRECATED_2 = 5610; k_EMsgGC_Halloween_ItemClaimed_DEPRECATED_2 = 5611; k_EMsgGC_Halloween_ServerBossEvent = 5612; k_EMsgGC_Halloween_Merasmus2012 = 5613; k_EMsgGC_Halloween_UpdateMerasmusLootLevel = 5614; k_EMsgGC_GameServer_LevelInfo = 5700; k_EMsgGC_GameServer_AuthChallenge = 5701; k_EMsgGC_GameServer_AuthChallengeResponse = 5702; k_EMsgGC_GameServer_CreateIdentity = 5703; k_EMsgGC_GameServer_CreateIdentityResponse = 5704; k_EMsgGC_GameServer_List = 5705; k_EMsgGC_GameServer_ListResponse = 5706; k_EMsgGC_GameServer_AuthResult = 5707; k_EMsgGC_GameServer_ResetIdentity = 5708; k_EMsgGC_GameServer_ResetIdentityResponse = 5709; k_EMsgGC_Client_UseServerModificationItem = 5710; k_EMsgGC_Client_UseServerModificationItem_Response = 5711; k_EMsgGC_GameServer_UseServerModificationItem = 5712; k_EMsgGC_GameServer_UseServerModificationItem_Response = 5713; k_EMsgGC_GameServer_ServerModificationItemExpired = 5714; k_EMsgGC_GameServer_ModificationItemState = 5715; k_EMsgGC_GameServer_AckPolicy = 5716; k_EMsgGC_GameServer_AckPolicyResponse = 5717; k_EMsgGC_QP_ScoreServers = 5800; k_EMsgGC_QP_ScoreServersResponse = 5801; k_EMsgGC_QP_PlayerJoining = 5802; k_EMsgGC_PickupItemEligibility_Query_DEPRECATED = 6000; k_EMsgGC_PickupItemEligibility_Query_DEPRECATED_2 = 6001; k_EMsgGC_IncrementKillCountAttribute_DEPRECATED = 6100; k_EMsgGC_IncrementKillCountResponse_DEPRECATED = 6101; k_EMsgGCAbandonCurrentGame = 6235; k_EMsgForceSOCacheResend = 6237; k_EMsgGCRequestChatChannelList = 6260; k_EMsgGCRequestChatChannelListResponse = 6261; k_EMsgGCReadyUp = 6270; k_EMsgGCKickedFromMatchmakingQueue = 6271; k_EMsgGCLeaverDetected = 6272; k_EMsgGCLeaverDetectedResponse = 6287; k_EMsgGCExitMatchmaking = 6289; k_EMsgGCMatchmakingProgress = 6293; k_EMsgGCMvMVictoryInfo = 6294; k_EMsgGCGameServerMatchmakingStatus = 6295; k_EMsgGCMvMVictory = 6297; k_EMsgGCMvMVictoryReply = 6298; k_EMsgGCGameServerKickingLobby = 6299; k_EMsgGCLeaveGameAndPrepareToJoinParty = 6300; k_EMsgGC_UpdatePeriodicEvent = 6400; k_EMsgGC_DuckLeaderboard_IndividualUpdate = 6401; k_EMsgGC_Client2GCEconPreviewDataBlockRequest = 6402; k_EMsgGC_Client2GCEconPreviewDataBlockResponse = 6403; k_EMsgGC_ClientVerificationChallenge = 6500; k_EMsgGC_ClientVerificationChallengeResponse = 6501; k_EMsgGC_ClientVerificationVerboseResponse = 6502; k_EMsgGC_ClientSetItemSlotAttribute = 6503; k_EMsgGC_War_IndividualUpdate = 6505; k_EMsgGC_War_JoinWar = 6506; k_EMsgGC_War_RequestGlobalStats = 6507; k_EMsgGC_War_GlobalStatsResponse = 6508; k_EMsgGC_WorldItemPlacement_Attribute = 6510; k_EMsgGC_WorldItemPlacement_Update = 6511; k_EMsgGC_Match_Result = 6512; k_EMsgGCVoteKickPlayerRequest = 6513; k_EMsgGCVoteKickPlayerRequestResponse = 6514; k_EMsgGC_DailyCompetitiveStatsRollup = 6516; k_EMsgGC_DailyCompetitiveStatsRollup_Response = 6517; k_EMsgGC_WorldStatusBroadcast = 6518; k_EMsgGC_ReportPlayer = 6519; k_EMsgGC_Match_ResultResponse = 6520; k_EMsgGCGameServerKickingLobbyResponse = 6521; k_EMsgGCPlayerLeftMatch = 6522; k_EMsgGCPlayerLeftMatchResponse = 6523; k_EMsgGCRequestMatchMakerStats = 6524; k_EMsgGCMatchMakerStatsResponse = 6525; k_EMsgGCMatchHistoryLoad = 6526; k_EMsgGC_AcknowledgeXP = 6527; k_EMsgGCDataCenterPing_Update = 6528; k_EMsgGC_NotificationAcknowledge = 6529; k_EMsgGC_NotificationAcknowledgeReply = 6530; k_EMsgGC_KickPlayerFromLobby = 6531; k_EMsgGC_SurveyQuestionRequest = 6534; k_EMsgGC_SurveyQuestionResponse = 6535; k_EMsgGC_TFClientInit = 6536; k_EMsgGC_NewMatchForLobbyRequest = 6537; k_EMsgGC_NewMatchForLobbyResponse = 6538; k_EMsgGC_ChangeMatchPlayerTeamsRequest = 6539; k_EMsgGC_ChangeMatchPlayerTeamsResponse = 6540; k_EMsgGC_QuestIdentify = 6541; k_EMsgGC_QuestDevGive = 6542; k_EMsgGCQuestComplete_Debug = 6544; k_EMsgGC_QuestMapDebug = 6545; k_EMsgGC_QuestMapUnlockNode = 6547; k_EMsgGC_QuestMapPurchaseReward = 6549; k_EMsgGC_SetDisablePartyQuestProgress = 6550; k_EMsgGCQuestProgressReport = 6553; k_EMsgGCParty_SetOptions = 6554; k_EMsgGCParty_SetOptionsResponse = 6555; k_EMsgGCParty_QueueForMatch = 6556; k_EMsgGCParty_QueueForMatchResponse = 6557; k_EMsgGCParty_RemoveFromQueue = 6558; k_EMsgGCParty_RemoveFromQueueResponse = 6559; k_EMsgGCParty_InvitePlayer = 6560; k_EMsgGCParty_RequestJoinPlayer = 6561; k_EMsgGCParty_SendChat = 6562; k_EMsgGCParty_ChatMsg = 6563; k_EMsgGCQuestNodeTurnIn = 6564; k_EMsgGCConsumePaintKit = 6565; k_EMsgGC_Painkit_DevGrant = 6566; k_EMsgGCParty_QueueForStandby = 6567; k_EMsgGCParty_QueueForStandbyResponse = 6568; k_EMsgGCParty_RemoveFromStandbyQueue = 6569; k_EMsgGCParty_RemoveFromStandbyQueueResponse = 6570; k_EMsgGCParty_ClearPendingPlayer = 6571; k_EMsgGCParty_ClearPendingPlayerResponse = 6572; k_EMsgGCParty_ClearOtherPartyRequest = 6573; k_EMsgGCParty_ClearOtherPartyRequestResponse = 6574; k_EMsgGCParty_PromoteToLeader = 6575; k_EMsgGCParty_KickMember = 6576; k_EMsgGCQuestStrangeEvent = 6577; k_EMsgGC_AcceptLobbyInvite = 6578; k_EMsgGC_AcceptLobbyInviteReply = 6579; k_EMsgGC_SDRTicket = 6580; k_EMsgGC_ProcessMatchVoteKick = 6581; k_EMsgGC_ProcessMatchVoteKickResponse = 6582; k_EMsgGCDev_GrantWarKill = 10001; } enum EServerModificationItemType { kGameServerModificationItem_Halloween = 1; } enum ETFSyncedMMMenuStep { k_eTFSyncedMMMenuStep_Invalid = -1; k_eTFSyncedMMMenuStep_None = 0; k_eTFSyncedMMMenuStep_Configuring_Mode = 1; k_eTFSyncedMMMenuStep_MvM_Selecting_Mode = 2; k_eTFSyncedMMMenuStep_MvM_Selecting_Tour = 3; k_eTFSyncedMMMenuStep_MvM_Selecting_Missions = 4; } enum ETFMatchGroup { option allow_alias = true; k_eTFMatchGroup_Invalid = -1; k_eTFMatchGroup_MvM_Practice = 0; k_eTFMatchGroup_MvM_MannUp = 1; k_eTFMatchGroup_First = 0; k_eTFMatchGroup_MvM_Default = 0; k_eTFMatchGroup_MvM_First = 0; k_eTFMatchGroup_MvM_Last = 1; k_eTFMatchGroup_Ladder_6v6 = 2; k_eTFMatchGroup_Ladder_9v9 = 3; k_eTFMatchGroup_Ladder_12v12 = 4; k_eTFMatchGroup_Ladder_Default = 2; k_eTFMatchGroup_Ladder_First = 2; k_eTFMatchGroup_Ladder_Last = 4; k_eTFMatchGroup_Casual_6v6 = 5; k_eTFMatchGroup_Casual_9v9 = 6; k_eTFMatchGroup_Casual_12v12 = 7; k_eTFMatchGroup_Casual_Default = 7; k_eTFMatchGroup_Casual_First = 5; k_eTFMatchGroup_Casual_Last = 7; k_eTFMatchGroup_Event_Placeholder = 8; k_eTFMatchGroup_Event_Default = 8; k_eTFMatchGroup_Event_First = 8; k_eTFMatchGroup_Event_Last = 8; } enum ETFPartyChatType { k_eTFPartyChatType_Invalid = 0; k_eTFPartyChatType_MemberChat = 1; k_eTFPartyChatType_Synthetic_MemberJoin = 1000; k_eTFPartyChatType_Synthetic_MemberLeave = 1001; k_eTFPartyChatType_Synthetic_SendFailed = 1002; k_eTFPartyChatType_Synthetic_MemberOnline = 1003; k_eTFPartyChatType_Synthetic_MemberOffline = 1004; } enum TF_GC_GameState { TF_GC_GAMESTATE_STATE_INIT = 0; TF_GC_GAMESTATE_WAIT_FOR_PLAYERS_TO_LOAD = 1; TF_GC_GAMESTATE_STRATEGY_TIME = 3; TF_GC_GAMESTATE_GAME_IN_PROGRESS = 5; TF_GC_GAMESTATE_POST_GAME = 6; TF_GC_GAMESTATE_DISCONNECT = 7; TF_GC_GAMESTATE_LAST = 8; } enum TF_GC_TEAM { TF_GC_TEAM_DEFENDERS = 0; TF_GC_TEAM_INVADERS = 1; TF_GC_TEAM_BROADCASTER = 2; TF_GC_TEAM_SPECTATOR = 3; TF_GC_TEAM_PLAYER_POOL = 4; TF_GC_TEAM_NOTEAM = 5; } enum TFMatchLeaveReason { TFMatchLeaveReason_UNSPECIFIED = 0; TFMatchLeaveReason_VOTE_KICK = 1; TFMatchLeaveReason_IDLE = 2; TFMatchLeaveReason_ADMIN_KICK = 3; TFMatchLeaveReason_AWOL = 4; TFMatchLeaveReason_NO_SHOW = 5; TFMatchLeaveReason_GC_REMOVED = 6; } enum TFVoteKickReason { TFVoteKickReason_Other = 0; TFVoteKickReason_Cheating = 1; TFVoteKickReason_Idle = 2; TFVoteKickReason_Scamming = 3; } enum ServerMatchmakingState { ServerMatchmakingState_INVALID = 0; ServerMatchmakingState_NOT_PARTICIPATING = 1; ServerMatchmakingState_EMPTY = 2; ServerMatchmakingState_ACTIVE_MATCH_REQUESTING_LATE_JOIN = 3; ServerMatchmakingState_ACTIVE_MATCH = 4; } enum SurveyQuestionType { QUESTION_MATCH_QUALITY = 0; QUESTION_MAP_QUALITY = 1; QUESTION_COMP_INQUIRY = 2; QUESTION_CASUAL_INQUIRY = 3; QUESTION_RANDOM_CRIT = 4; } message CMsgTFGoldenWrenchBroadcast { optional int32 wrench_number = 1; optional bool deleted = 2; optional string user_name = 3; } message CMsgTFSaxxyBroadcast { optional int32 category_number = 1; optional string user_name = 2; } message CMsgGCTFSpecificItemBroadcast { optional uint32 item_def_index = 1; optional bool was_destruction = 2; optional string user_name = 3; } message CMsgTFWorldStatus { optional bool beta_stress_test_event_active = 1 [default = false]; optional .ETFMatchGroup event_match_group = 2 [default = k_eTFMatchGroup_Invalid]; optional fixed32 event_expire_time = 3 [default = 0]; optional uint32 active_client_version = 4; repeated .ETFMatchGroup disabled_match_groups = 5; } message CSOTFDuelSummary { optional uint32 account_id = 1 [(key_field) = true]; optional uint32 duel_wins = 2; optional uint32 duel_losses = 3; optional uint32 last_duel_account_id = 4; optional uint32 last_duel_timestamp = 5; optional uint32 last_duel_status = 6; } message CSOTFMapContribution { optional uint32 account_id = 1 [(key_field) = true]; optional uint32 def_index = 2 [(key_field) = true]; optional uint32 contribution_level = 3; } message CMsgTFFreeTrialChooseMostHelpfulFriend { optional uint32 account_id_friend = 1; } message CMsgTFRequestTF2Friends { repeated uint32 account_ids = 1; } message CMsgTFRequestTF2FriendsResponse { repeated uint32 account_ids = 1; } message CSOTFPlayerInfo { optional uint32 num_new_users_helped = 1; } message CMsgTFThankedBySomeone { optional uint64 thanker_steam_id = 1; } message CMsgTFThankedSomeone { } message CMsgTFFreeTrialConvertedToPremium { } message CMsgSaxxyAwarded { optional uint32 category = 1; repeated string winner_names = 2; } message CMsgReplaySubmitContestEntry { optional string youtube_url = 1; optional uint32 category = 2; } message CMsgReplaySubmitContestEntryResponse { optional bool success = 1; } message CReplayCachedContestData { optional fixed32 timestamp = 1; optional uint32 num_votes_last_day = 2; repeated uint32 video_entry_ids = 3; optional uint32 num_flags_last_day = 4; } message CMsgTFCoaching_AddToCoaches { } message CMsgTFCoaching_RemoveFromCoaches { } message CMsgTFCoaching_FindCoach { optional uint32 account_id_friend_as_coach = 1; } message CMsgTFCoaching_FindCoachResponse { optional bool found_coach = 1; optional uint32 num_likes = 2; optional string coach_name = 3; } message CMsgTFCoaching_AskCoach { optional uint32 account_id_student = 1; optional bool student_is_friend = 2; } message CMsgTFCoaching_AskCoachResponse { optional bool accept_coaching_assignment = 1; } message CMsgTFCoaching_CoachJoinGame { optional bool join_game = 1; optional uint32 server_address = 2; optional uint32 server_port = 3; optional uint32 account_id_student = 4; } message CMsgTFCoaching_CoachJoining { optional uint32 account_id_coach = 1; optional uint32 account_id_student = 2; } message CMsgTFCoaching_CoachJoined { optional uint32 account_id_coach = 1; } message CMsgTFCoaching_LikeCurrentCoach { optional bool like_coach = 1; } message CMsgTFCoaching_RemoveCurrentCoach { optional uint32 account_id_coach = 1; } message CMsgTFQuickplay_ScoreServers { message ServerInfo { optional uint32 server_address = 1; optional uint32 server_port = 2; optional uint32 num_users = 3; optional uint64 steam_id = 4; optional uint32 max_users = 5; optional float user_score = 6; } repeated .CMsgTFQuickplay_ScoreServers.ServerInfo servers = 1; } message CMsgTFQuickplay_ScoreServersResponse { message ServerInfo { optional uint32 server_address = 1; optional uint32 server_port = 2; optional float total_score = 3; optional uint64 steam_id = 4; optional uint32 options_score = 5; } repeated .CMsgTFQuickplay_ScoreServersResponse.ServerInfo servers = 1; } message CMsgTFQuickplay_PlayerJoining { optional uint32 account_id = 1; } message CMsgGC_GameServer_LevelInfo { optional bool level_loaded = 1; optional string level_name = 2; } message CMsgGC_GameServer_AuthChallenge { optional string challenge_string = 1; } message CMsgGC_GameServer_AuthResult { optional bool authenticated = 1; optional int32 game_server_standing = 2; optional int32 game_server_standing_trend = 3; optional bool is_valve_server = 4; optional string message = 5; } message CMsgGC_GameServer_AuthChallengeResponse { optional uint32 game_server_account_id = 1; optional bytes hashed_challenge_string = 2; } message CMsgGC_GameServer_CreateIdentity { optional uint32 account_id = 1; } message CMsgGC_GameServer_CreateIdentityResponse { enum EStatus { kStatus_GenericFailure = 0; kStatus_TooMany = -1; kStatus_NoPrivs = -2; kStatus_Created = 1; } optional bool account_created = 1; optional uint32 game_server_account_id = 2; optional string game_server_identity_token = 3; optional .CMsgGC_GameServer_CreateIdentityResponse.EStatus status = 4 [default = kStatus_GenericFailure]; } message CMsgGC_GameServer_List { optional uint32 account_id = 1; } message CMsgGC_GameServer_ListResponse { message GameServerIdentity { optional uint32 game_server_account_id = 1; optional string game_server_identity_token = 2; optional int32 game_server_standing = 3; optional int32 game_server_standing_trend = 4; } repeated .CMsgGC_GameServer_ListResponse.GameServerIdentity owned_game_servers = 1; } message CMsgGC_GameServer_ResetIdentity { optional uint32 game_server_account_id = 1; } message CMsgGC_GameServer_ResetIdentityResponse { optional bool game_server_identity_token_reset = 1; optional uint32 game_server_account_id = 2; optional string game_server_identity_token = 3; } message CMsgGC_GameServer_AckPolicy { } message CMsgGC_GameServer_AckPolicyResponse { optional uint32 result = 1; optional string message = 2; } message CMsgGC_Client_UseServerModificationItem { optional uint64 item_id = 1; } message CMsgGC_Client_UseServerModificationItem_Response { enum EServerModificationItemResponse { kServerModificationItemResponse_AlreadyInUse = 1; kServerModificationItemResponse_NotOnAuthenticatedServer = 2; kServerModificationItemResponse_ServerReject = 3; kServerModificationItemResponse_InternalError = 4; kServerModificationItemResponse_EventAlreadyActive = 5; } optional .CMsgGC_Client_UseServerModificationItem_Response.EServerModificationItemResponse response_code = 1 [default = kServerModificationItemResponse_AlreadyInUse]; } message CMsgGC_GameServer_UseServerModificationItem { optional .EServerModificationItemType modification_type = 1 [default = kGameServerModificationItem_Halloween]; } message CMsgGC_GameServer_UseServerModificationItem_Response { enum EServerModificationItemServerResponse { kServerModificationItemServerResponse_Accepted = 1; kServerModificationItemServerResponse_NoVoteCalled = 2; kServerModificationItemServerResponse_VoteFailed = 3; } optional .EServerModificationItemType modification_type = 1 [default = kGameServerModificationItem_Halloween]; optional .CMsgGC_GameServer_UseServerModificationItem_Response.EServerModificationItemServerResponse server_response_code = 2 [default = kServerModificationItemServerResponse_Accepted]; } message CMsgGC_GameServer_ServerModificationItemExpired { optional .EServerModificationItemType modification_type = 1 [default = kGameServerModificationItem_Halloween]; } message CMsgGC_GameServer_ServerModificationItem { optional .EServerModificationItemType modification_type = 1 [default = kGameServerModificationItem_Halloween]; optional bool active = 2; } message CMsgGC_Halloween_ReservedItem { repeated float x = 1; repeated float y = 2; repeated float z = 3; optional uint32 spawn_meta_info = 7; } message CMsgGC_Halloween_GrantItem { optional uint32 recipient_account_id = 1; optional uint32 level_id = 2; optional bool flagged = 3; } message CMsgGC_Halloween_GrantItemResponse { optional uint32 recipient_account_id = 1; } message CMsgGC_Halloween_ItemClaimed { } message CMsgGC_PickupItemEligibility_Query { optional uint32 account_id = 1; optional uint32 seconds_ago = 2; } message CMsgGC_PickupItemEligibility_QueryResponse { optional uint32 account_id = 1; optional bool was_eligible = 2; optional uint32 level_id = 3; } message CSOTFPartyMember { message Activity { optional fixed64 lobby_id = 1; optional .ETFMatchGroup lobby_match_group = 2 [default = k_eTFMatchGroup_Invalid]; optional bool multiqueue_blocked = 3; optional bool online = 4; optional uint32 client_version = 5; } optional bool owns_ticket = 2; optional uint32 completed_missions = 3; optional uint32 badge_level = 4; optional bool competitive_access = 9; optional uint32 experience = 14; optional .CTFPerPlayerMatchCriteriaProto player_criteria = 16; optional .CSOTFPartyMember.Activity activity = 17; optional bool casual_banned = 18; optional bool ranked_banned = 19; optional bool casual_low_priority = 20; optional bool ranked_low_priority = 21; optional bool lobby_standby = 22; } message TFPendingPartyMember { enum EType { Invited = 0; RequestedToJoin = 1; } optional fixed64 steamid = 1; optional .TFPendingPartyMember.EType type = 2 [default = Invited]; optional fixed64 inviter = 3; } message TFSyncedMMUIState { optional .ETFSyncedMMMenuStep menu_step = 1 [default = k_eTFSyncedMMMenuStep_None]; optional .ETFMatchGroup match_group = 2 [default = k_eTFMatchGroup_Invalid]; } message CTFGroupMatchCriteriaProto { optional bool late_join_ok = 5; optional uint32 custom_ping_tolerance = 13 [default = 0]; optional string mvm_mannup_tour = 10; repeated string mvm_mannup_missions = 15; repeated string mvm_bootcamp_missions = 16; optional .CTFCasualMatchCriteria casual_criteria = 12; } message CTFCasualMatchCriteria { repeated fixed32 selected_maps_bits = 3; } message CTFPerPlayerMatchCriteriaProto { optional bool mvm_squad_surplus = 1; } message CTFPartyOptions { optional bool overwrite_existing = 1; optional .CTFGroupMatchCriteriaProto group_criteria = 2; optional .CTFPerPlayerMatchCriteriaProto player_criteria = 3; optional .TFSyncedMMUIState player_uistate = 5; } message CMsgPartySetOptions { optional fixed64 party_id = 1; optional .CTFPartyOptions options = 2; } message CMsgPartySetOptionsResponse { } message CMsgPartyQueueForMatch { optional fixed64 party_id = 1; optional .CTFPartyOptions final_options = 2; optional .ETFMatchGroup match_group = 3 [default = k_eTFMatchGroup_Invalid]; } message CMsgPartyQueueForMatchResponse { } message CMsgPartyQueueForStandby { optional fixed64 party_id = 1; optional fixed64 party_lobby_id = 2; } message CMsgPartyQueueForStandbyResponse { } message CMsgPartyRemoveFromQueue { optional fixed64 party_id = 1; optional .ETFMatchGroup match_group = 2 [default = k_eTFMatchGroup_Invalid]; } message CMsgPartyRemoveFromQueueResponse { } message CMsgPartyRemoveFromStandbyQueue { optional fixed64 party_id = 1; } message CMsgPartyRemoveFromStandbyQueueResponse { } message CMsgPartyInvitePlayer { optional fixed64 party_id = 1; optional fixed64 player_id = 2; optional bool expecting_request_to_join = 3; } message CMsgPartyRequestJoinPlayer { optional fixed64 current_party_id = 1; optional fixed64 join_player_id = 2; optional fixed64 join_party_id = 3; optional bool expecting_invite = 4; } message CMsgPartyClearPendingPlayer { optional fixed64 party_id = 1; optional fixed64 pending_player_id = 2; } message CMsgPartyClearPendingPlayerResponse { } message CMsgPartyClearOtherPartyRequest { optional fixed64 other_party_id = 1; } message CMsgPartyClearOtherPartyRequestResponse { } message CMsgPartyPromoteToLeader { optional fixed64 party_id = 1; optional fixed64 new_leader_id = 2; } message CMsgPartyKickMember { optional fixed64 party_id = 1; optional fixed64 target_id = 2; } message CMsgPartySendChat { optional fixed64 party_id = 1; optional string msg = 2; } message CMsgPartyChatMsg { optional .ETFPartyChatType type = 1 [default = k_eTFPartyChatType_Invalid]; optional fixed64 actor_id = 2; optional string msg = 3; } message CSOTFParty { message QueueEntry { optional .ETFMatchGroup match_group = 1 [default = k_eTFMatchGroup_Invalid]; optional fixed32 queued_time = 2; } optional uint64 party_id = 1 [(key_field) = true]; optional fixed64 leader_id = 2; repeated fixed64 member_ids = 3; repeated .CSOTFPartyMember members = 13; optional uint64 associated_lobby_id = 35; optional .ETFMatchGroup associated_lobby_match_group = 40 [default = k_eTFMatchGroup_Invalid]; repeated .CSOTFParty.QueueEntry matchmaking_queues = 43; optional .CTFGroupMatchCriteriaProto group_criteria = 37; optional uint32 casual_banned_time = 18; optional uint32 casual_low_priority_time = 20; optional uint32 ranked_banned_time = 41; optional uint32 ranked_low_priority_time = 42; optional .TFSyncedMMUIState leader_ui_state = 44; repeated .TFPendingPartyMember pending_members = 39; } message CSOTFPartyInvite { message PartyMember { optional fixed64 steamid = 2; } enum Type { PENDING_INVITE = 1; PENDING_JOIN_REQUEST = 2; } optional uint64 group_id = 1 [(key_field) = true]; optional fixed64 inviter = 2; repeated .CSOTFPartyInvite.PartyMember members = 4; optional .CSOTFPartyInvite.Type type = 5 [default = PENDING_INVITE]; } message CTFLobbyPlayerProto { enum ConnectState { INVALID = 0; RESERVATION_PENDING = 1; RESERVED = 2; CONNECTED = 3; DISCONNECTED = 5; } enum Type { INVALID_PLAYER = 0; MATCH_PLAYER = 1; STANDBY_PLAYER = 2; OBSERVING_PLAYER = 3; } optional fixed64 id = 1 [(key_field) = true]; optional .TF_GC_TEAM team = 3 [default = TF_GC_TEAM_DEFENDERS]; optional .CTFLobbyPlayerProto.ConnectState connect_state = 13 [default = INVALID]; optional string name = 6; optional uint64 original_party_id = 12; optional bool squad_surplus = 14; optional uint32 badge_level = 15; optional uint32 last_connect_time = 17; optional .CTFLobbyPlayerProto.Type type = 19 [default = INVALID_PLAYER]; optional double normalized_rating = 20; optional double normalized_uncertainty = 22; optional uint32 rank = 21; optional bool chat_suspension = 23; } message CTFLobbyInviteProto { optional fixed64 lobby_id = 1 [(key_field) = true]; optional .ETFMatchGroup match_group = 2 [default = k_eTFMatchGroup_Invalid]; } message CSOTFGameServerLobby { enum State { UNKNOWN = 0; SERVERSETUP = 1; RUN = 2; } enum WarMatch { NOPE = 0; INVADERS_ARE_PYRO = 1; INVADERS_ARE_HEAVY = 2; } optional uint64 lobby_id = 1 [(key_field) = true]; repeated .CTFLobbyPlayerProto members = 2; optional fixed64 server_id = 6 [default = 0]; optional .CSOTFGameServerLobby.State state = 4 [default = UNKNOWN]; optional string connect = 5; optional .TF_GC_GameState game_state = 22 [default = TF_GC_GAMESTATE_STATE_INIT]; optional double initial_average_mm_rating = 32; optional string mannup_tour_name = 42; optional string map_name = 38; optional string mission_name = 39; optional uint32 match_group = 41; optional uint64 match_id = 30 [default = 0]; optional uint32 formed_time = 36; optional uint32 flags = 43; optional bool late_join_eligible = 44; optional uint32 fixed_match_size = 45; optional .CSOTFGameServerLobby.WarMatch is_war_match = 46 [default = NOPE]; repeated uint32 next_maps_for_vote = 47; optional uint32 lobby_mm_version = 48; repeated .CTFLobbyPlayerProto pending_members = 49; } message CMsgExitMatchmaking { optional bool explicit_abandon = 1; optional uint64 party_id = 2; optional uint64 lobby_id = 3; } message CMsgAcceptLobbyInvite { optional uint64 invited_lobby_id = 1; optional uint64 abandoning_match_id = 2; repeated uint64 abandoning_invite_lobby_ids = 3; } message CMsgAcceptLobbyInviteReply { } message CMsgMatchmakingSearchCountRequest { } message CMsgMatchmakingSearchCountResponse { repeated uint32 searching_players_by_group = 1; } message CMsgKickedFromMatchmakingQueue { } message CMsgGameServerMatchmakingStatus { message Player { optional fixed64 steam_id = 1; optional .CMsgGameServerMatchmakingStatus.PlayerConnectState connect_state = 2 [default = INVALID]; } enum PlayerConnectState { INVALID = 0; CONNECTED = 1; RESERVED = 2; } enum Event { None = 0; MvMVictory = 1; MvMDefeat = 2; AcknowledgePlayers = 3; } optional uint32 server_version = 16 [default = 1225]; optional .ServerMatchmakingState matchmaking_state = 1 [default = ServerMatchmakingState_INVALID]; optional string map = 3; optional string tags = 4; optional uint32 bot_count = 5; optional uint32 num_spectators = 6; optional uint32 max_players = 7; optional uint32 slots_free = 8; optional uint32 server_region = 9; optional float server_loadavg = 10; optional bool server_trusted = 11; optional bool server_dedicated = 12; optional uint32 strict = 17; optional string fake_ip = 25; repeated .CMsgGameServerMatchmakingStatus.Player players = 13; optional .TF_GC_GameState game_state = 14 [default = TF_GC_GAMESTATE_STATE_INIT]; optional .CMsgGameServerMatchmakingStatus.Event event = 15 [default = None]; optional uint32 mvm_wave = 18; optional uint32 mvm_credits_acquired = 19; optional uint32 mvm_credits_dropped = 20; optional sint32 match_group = 23 [default = -1]; optional uint32 lobby_mm_version = 24; } message CMsgMatchmakingProgress { optional uint32 avg_wait_time_new = 4; optional uint32 avg_wait_time_join_late = 5; optional uint32 your_wait_time = 6; optional uint32 matching_worldwide_searching_players = 8; optional uint32 matching_near_you_searching_players = 9; optional uint32 total_worldwide_searching_players = 13; optional uint32 total_near_you_searching_players = 14; optional uint32 matching_worldwide_active_players = 15; optional uint32 matching_near_you_active_players = 16; optional uint32 total_worldwide_active_players = 17; optional uint32 total_near_you_active_players = 18; optional uint32 matching_worldwide_empty_gameservers = 19; optional uint32 matching_near_you_empty_gameservers = 20; optional uint32 total_worldwide_empty_gameservers = 21; optional uint32 total_near_you_empty_gameservers = 22; optional uint32 urgency_pct = 1; } message CMsgMvMVictoryInfo { message Item { optional .CMsgMvMVictoryInfo.GrantReason grant_reason = 1 [default = INVALID]; optional bytes item_data = 2; optional fixed64 squad_surplus_claimer_steam_id = 3; } message Player { optional fixed64 steam_id = 1; optional bool badge_granted = 3; optional bool badge_progress_updated = 4; optional bool badge_leveled = 5; optional uint32 badge_level = 6; optional uint32 badge_progress_bits = 7; repeated .CMsgMvMVictoryInfo.Item items = 8; optional bool voucher_missing = 9; optional uint32 badge_points = 10; } enum GrantReason { INVALID = 0; BADGE_LEVELED = 1; SQUAD_SURPLUS = 2; MANN_UP = 3; HELP_A_NOOB = 4; } repeated .CMsgMvMVictoryInfo.Player players = 1; optional string tour_name = 2; optional string mission_name = 3; } message CGCMsgTFHelloResponse { optional uint32 version_check = 1; repeated uint64 version_checksum = 2; optional uint32 version_verbose = 3; } message CGCMsgTFSync { optional bytes version_checksum = 1; optional uint32 version_check = 2; optional uint32 version_check_ex = 3; optional uint32 version_check_ex2 = 4; optional bytes version_checksum_ex = 5; } message CGCMsgTFSyncEx { optional string version_checksum = 1; optional bytes version_checksum_ex = 2; optional uint32 version_check = 3; } message CMsgMvMVictory { message Player { optional fixed64 steam_id = 1; optional bool squad_surplus = 2; } optional uint32 legacy_mission_index = 1; optional string tour_name_mannup = 5; optional string mission_name = 6; repeated .CMsgMvMVictory.Player players = 2; optional uint64 lobby_id = 3; optional fixed32 event_time = 4; } message CMsgMvMMannUpVictoryReply { } message CMsgGameServerKickingLobby { optional uint64 lobby_id = 3; optional uint64 match_id = 4; } message CMsgGameServerKickingLobbyResponse { } message CMsgLeaveGameAndPrepareToJoinParty { optional fixed64 party_id = 1; } message CMsgPlayerLeftMatch { optional fixed64 steam_id = 1; optional .TFMatchLeaveReason leave_reason = 2 [default = TFMatchLeaveReason_UNSPECIFIED]; optional bool was_abandon = 3; optional uint64 lobby_id = 4; optional uint64 match_id = 5; repeated .CMsgTFXPSource xp_breakdown = 6; } message CMsgPlayerLeftMatchResponse { } message CMsgProcessMatchVoteKick { message Vote { optional fixed64 steam_id = 1; optional bool vote_yay = 2; } optional fixed64 match_id = 1; optional fixed64 initiator_steam_id = 2; optional fixed64 target_steam_id = 3; optional .TFVoteKickReason reason = 4 [default = TFVoteKickReason_Other]; repeated .CMsgProcessMatchVoteKick.Vote votes = 5; optional bool default_pass = 6; } message CMsgProcessMatchVoteKickResponse { optional bool rip = 1; } message CMsgPlayerVoteKickedAfterLeavingMatchResponse { } message CMsgHalloween_ServerBossEvent { optional uint32 event_counter = 1; optional uint32 timestamp = 2; optional uint32 boss_type = 3; optional uint32 boss_level = 4; optional uint32 event_type = 5; optional uint32 players_involved = 6; optional float elapsed_time = 7; } message CMsgHalloween_Merasmus2012 { optional uint32 event_counter = 1; optional fixed32 time_submitted = 2; optional bool is_valve_server = 3; optional uint32 boss_level = 4; optional uint32 spawned_health = 5; optional uint32 remaining_health = 6; optional uint32 life_time = 7; optional uint32 bomb_kills = 8; optional uint32 staff_kills = 9; optional uint32 pvp_kills = 10; optional uint32 prophunt_time1 = 11; optional uint32 prophunt_time2 = 12; optional uint32 dmg_scout = 13; optional uint32 dmg_sniper = 14; optional uint32 dmg_soldier = 15; optional uint32 dmg_demo = 16; optional uint32 dmg_medic = 17; optional uint32 dmg_heavy = 18; optional uint32 dmg_pyro = 19; optional uint32 dmg_spy = 20; optional uint32 dmg_engineer = 21; optional uint32 scout_count = 22; optional uint32 sniper_count = 23; optional uint32 solider_count = 24; optional uint32 demo_count = 25; optional uint32 medic_count = 26; optional uint32 heavy_count = 27; optional uint32 pyro_count = 28; optional uint32 spy_count = 29; optional uint32 engineer_count = 30; } message CMsgUpdateHalloweenMerasmusLootLevel { message Player { optional fixed64 steam_id = 1; } repeated .CMsgUpdateHalloweenMerasmusLootLevel.Player players = 1; optional uint32 merasmus_level = 2; } message CAttribute_String { optional string value = 1; } message CAttribute_DynamicRecipeComponent { optional uint32 def_index = 1; optional uint32 item_quality = 2; optional uint32 component_flags = 3; optional string attributes_string = 4; optional uint32 num_required = 5; optional uint32 num_fulfilled = 6; } message CAttribute_DynamicRecipeComponent_COMPAT_NEVER_SERIALIZE_THIS_OUT { optional uint32 def_index = 1; optional uint32 item_def = 2; optional uint32 item_quality = 3; optional uint32 component_flags = 4; optional uint32 item_flags = 5; optional string attributes_string = 6; optional uint32 num_required = 7; optional uint32 item_count = 8; optional uint32 num_fulfilled = 9; optional uint32 items_fulfilled = 10; } message CAttribute_ItemSlotCriteria { optional string tags = 1; } message CMsgSetItemSlotAttribute { optional uint64 item_id = 1; optional uint64 slot_item_original_id = 2; optional uint32 slot_index = 3; } message CSOWarData { optional uint32 account_id = 1 [(key_field) = true]; optional uint32 war_id = 2 [(key_field) = true]; optional uint32 affiliation = 3; optional uint32 points_scored = 4; } message CGCMsgGC_War_IndividualUpdate { optional fixed64 steam_id = 1; optional uint32 war_id = 2; optional uint32 score = 3; } message CGCMsgGC_War_JoinWar { optional uint32 affiliation = 1; optional uint32 war_id = 2; } message CGCMsgGC_War_RequestGlobalStats { optional uint32 war_id = 1; } message CGCMsgGC_War_GlobalStatsResponse { message SideScore { optional uint32 side = 1; optional uint64 score = 2; } repeated .CGCMsgGC_War_GlobalStatsResponse.SideScore side_scores = 1; optional uint32 war_id = 2; } message CGCMsgGC_PlayerDuckLeaderboard_IndividualUpdate { optional uint32 score = 2; optional uint32 type = 3; optional bytes score_id = 4; optional uint32 score_check = 5; } message CAttribute_WorldItemPlacement { optional uint64 original_item_id = 1; optional float pos_x = 2; optional float pos_y = 3; optional float pos_z = 4; optional float ang_x = 5; optional float ang_y = 6; optional float ang_z = 7; } message CGCMsg_WorldItemPlacement_Update { optional uint64 original_item_id = 1; optional float pos_x = 2; optional float pos_y = 3; optional float pos_z = 4; optional float ang_x = 5; optional float ang_y = 6; optional float ang_z = 7; optional bool force_remove_all = 8; optional string attrib_name = 9; } message CMsgAcknowledgeXP { optional int32 match_group = 1; optional uint32 predicted_experience = 2; } message CMsgTFXPSource { enum XPSourceType { SOURCE_SCORE = 0; SOURCE_OBJECTIVE_BONUS = 1; SOURCE_COMPLETED_MATCH = 2; SOURCE_COMPETITIVE_ABANDON = 3; SOURCE_COMPETITIVE_WIN = 4; SOURCE_COMPETITIVE_LOSS = 5; SOURCE_AUTOBALANCE_BONUS = 6; SOURCE_PRESTIGE_BONUS = 7; } optional .CMsgTFXPSource.XPSourceType type = 1 [default = SOURCE_SCORE, (key_field) = true]; optional int32 amount = 2; optional int32 match_group = 3; optional uint32 account_id = 4 [(key_field) = true]; optional uint64 match_id = 5 [(key_field) = true]; } message CMsgTFXPSourceBreakdown { repeated .CMsgTFXPSource sources = 1; } message CMsgTFClientInit { optional uint32 client_version = 1; optional int32 language = 2; } message CMsgGCNotification { enum NotificationType { NOTIFICATION_REPORTED_PLAYER_BANNED = 0; NOTIFICATION_CUSTOM_STRING = 1; NOTIFICATION_MM_BAN_DUE_TO_EXCESSIVE_REPORTS = 2; NOTIFICATION_REPORTED_PLAYER_WAS_BANNED = 3; NOTIFICATION_SUPPORT_MESSAGE = 4; NOTIFICATION_NUM_TYPES = 5; } optional uint64 notification_id = 1 [(key_field) = true]; optional uint32 account_id = 2; optional fixed32 expiration_time = 3; optional .CMsgGCNotification.NotificationType type = 4 [default = NOTIFICATION_CUSTOM_STRING]; optional string notification_string = 5; } message CMsgGCNotificationQueue { repeated .CMsgGCNotification notifications = 1; } message CMsgNotificationAcknowledge { optional uint32 account_id = 1; optional uint64 notification_id = 2; } message CMsgNotificationAcknowledgeReply { } message CMsgGC_Match_Result { message Player { optional fixed64 steam_id = 1; optional uint64 original_party_id = 2; optional uint32 team = 3; optional uint32 score = 4; optional uint32 ping = 5; optional uint32 flags = 6; optional uint32 rank = 9; optional uint32 classes_played = 10; optional uint32 kills = 11; optional uint32 deaths = 12; optional uint32 damage = 13; optional uint32 healing = 14; optional uint32 support = 15; optional uint32 score_medal = 16; optional uint32 kills_medal = 17; optional uint32 damage_medal = 18; optional uint32 healing_medal = 19; optional uint32 support_medal = 20; repeated .CMsgTFXPSource xp_breakdown = 21; optional uint32 leave_time = 22; optional .TFMatchLeaveReason leave_reason = 23 [default = TFMatchLeaveReason_UNSPECIFIED]; optional uint32 connect_time = 24; } enum Status { MATCH_SUCCEEDED = 0; MATCH_FAILED_GC = 1; MATCH_FAILED_TRUSTED = 2; MATCH_FAILED_ABANDON = 3; MATCH_FAILED_UNKNOWN = 5; MATCH_FAILED_TIMEOUT = 6; MATCH_FINISHED_ABANDON = 7; } optional uint64 match_id = 1 [(key_field) = true]; optional int32 match_group = 2; optional .CMsgGC_Match_Result.Status status = 3 [default = MATCH_SUCCEEDED]; optional uint32 duration = 4; optional uint32 red_score = 5; optional uint32 blue_score = 6; optional uint32 winning_team = 7; optional uint32 map_index = 8; optional uint32 game_type = 9 [default = 0]; repeated .CMsgGC_Match_Result.Player players = 10; optional uint32 win_reason = 13; optional uint32 flags = 14; optional uint32 bots = 16; } message CMsgGC_Match_ResultResponse { } message CEconItemPreviewDataBlock { optional .CSOEconItem econitem = 1; } message CMsgGC_Client2GCEconPreviewDataBlockRequest { optional uint64 param_s = 1; optional uint64 param_a = 2; optional uint64 param_d = 3; optional uint64 param_m = 4; } message CMsgGC_Client2GCEconPreviewDataBlockResponse { optional .CEconItemPreviewDataBlock iteminfo = 1; } message CSOTFLadderPlayerStats { optional uint32 account_id = 1 [(key_field) = true]; optional int32 match_group = 2 [(key_field) = true]; optional uint32 season_id = 3 [(key_field) = true]; optional uint32 games = 9; optional uint32 score = 10; optional uint32 kills = 11; optional uint32 deaths = 12; optional uint32 damage = 13; optional uint32 healing = 14; optional uint32 support = 15; optional uint32 score_bronze = 16; optional uint32 score_silver = 17; optional uint32 score_gold = 18; optional uint32 kills_bronze = 19; optional uint32 kills_silver = 20; optional uint32 kills_gold = 21; optional uint32 damage_bronze = 22; optional uint32 damage_silver = 23; optional uint32 damage_gold = 24; optional uint32 healing_bronze = 25; optional uint32 healing_silver = 26; optional uint32 healing_gold = 27; optional uint32 support_bronze = 28; optional uint32 support_silver = 29; optional uint32 support_gold = 30; } message CSOTFRatingData { optional uint32 account_id = 1 [(key_field) = true]; optional int32 rating_type = 2 [(key_field) = true]; optional uint32 rating_primary = 3; optional uint32 rating_secondary = 4; optional uint32 rating_tertiary = 5; } message CMsgGC_TFVoteKickPlayerRequest { optional uint64 target_id = 2; optional uint64 voter_id = 3; optional .TFVoteKickReason reason = 4 [default = TFVoteKickReason_Other]; optional uint64 match_id = 5; } message CMsgGC_VoteKickPlayerRequestResponse { optional bool allowed = 1; optional bool voter_inhibit = 3; optional bool target_inhibit = 4; } message CMsgGC_DailyCompetitiveStatsRollup { } message CMsgGC_DailyCompetitiveStatsRollup_Response { message RankBucketEntry { optional uint32 rank = 1; optional uint32 records = 2; optional uint32 avg_score = 3; optional uint32 stdev_score = 4; optional uint32 avg_kills = 5; optional uint32 stdev_kills = 6; optional uint32 avg_damage = 7; optional uint32 stdev_damage = 8; optional uint32 avg_healing = 9; optional uint32 stdev_healing = 10; optional uint32 avg_support = 11; optional uint32 stdev_support = 12; } repeated .CMsgGC_DailyCompetitiveStatsRollup_Response.RankBucketEntry rankdata = 1; } message CMsgGC_ReportPlayer { enum EReason { kReason_INVALID = 0; kReason_CHEATING = 1; kReason_IDLE = 2; kReason_HARASSMENT = 3; kReason_GRIEFING = 4; kReason_COUNT = 5; } optional uint32 account_id_target = 1; optional .CMsgGC_ReportPlayer.EReason reason = 2 [default = kReason_INVALID]; } message CSOTFMatchResultPlayerStats { optional uint64 match_id = 1 [(key_field) = true]; optional uint32 account_id = 2 [(key_field) = true]; optional int32 match_group = 3 [(key_field) = true]; optional uint32 endtime = 4; optional uint32 season_id = 5; optional uint32 status = 6; optional uint32 original_party_id = 7; optional uint32 team = 8; optional uint32 score = 9; optional uint32 ping = 10; optional uint32 flags = 11; optional uint32 display_rating = 12; optional int32 display_rating_change = 13; optional uint32 rank = 14; optional uint32 classes_played = 15; optional uint32 kills = 16; optional uint32 deaths = 17; optional uint32 damage = 18; optional uint32 healing = 19; optional uint32 support = 20; optional uint32 score_medal = 21; optional uint32 kills_medal = 22; optional uint32 damage_medal = 23; optional uint32 healing_medal = 24; optional uint32 support_medal = 25; optional uint32 map_index = 26; optional uint32 winning_team = 27; } message CMsgGCRequestMatchMakerStats { } message CMsgGCDataCenterPopulation { optional string name = 1; optional float health_ratio = 2; } message CMsgGCMatchGroupDataCenterPopulation { repeated .CMsgGCDataCenterPopulation data_center_population = 1; } message CMsgGCMatchMakerStatsResponse { repeated uint32 map_count = 1; repeated .CMsgGCMatchGroupDataCenterPopulation matchgroup_data_center_population = 2; } message CMsgGCMatchHistoryLoad { optional .ETFMatchGroup match_group = 1 [default = k_eTFMatchGroup_Invalid]; } message CMsgGCDataCenterPing_Update { message PingEntry { optional string name = 1; optional uint32 ping = 2; optional .CMsgGCDataCenterPing_Update.Status ping_status = 3 [default = Normal]; } enum Status { Invalid = 0; Normal = 1; Unreachable = 2; FallbackToDCPing = 3; } repeated .CMsgGCDataCenterPing_Update.PingEntry pingdata = 1; } message CMsgGC_KickPlayerFromLobby { optional uint64 targetID = 1; } message CMsgGCSurveyRequest { optional .SurveyQuestionType question_type = 1 [default = QUESTION_MATCH_QUALITY]; optional uint64 match_id = 2; } message CMsgGCSurveyResponse { optional .SurveyQuestionType question_type = 1 [default = QUESTION_MATCH_QUALITY]; optional uint64 match_id = 2; optional int32 response = 3; } message CSOQuestMapNode { optional uint32 account_id = 1 [(key_field) = true]; optional uint32 defindex = 3 [(key_field) = true]; optional uint32 node_id = 4; optional bool star_0_earned = 6 [default = false]; optional bool star_1_earned = 7 [default = false]; optional bool star_2_earned = 8 [default = false]; optional bool loot_claimed = 9 [default = false]; optional uint32 selected_quest_def = 10 [default = 0]; optional uint32 map_cycle = 11; } message CSOQuest { optional uint32 account_id = 1; optional uint64 quest_id = 2 [(key_field) = true]; optional uint32 defindex = 3; optional bool active = 4 [default = false]; optional uint32 points_0 = 5; optional uint32 points_1 = 6; optional uint32 points_2 = 7; optional uint32 quest_map_node_source_id = 8; optional uint32 map_cycle = 9; } message CSOQuestMapRewardPurchase { optional uint32 account_id = 1; optional uint32 defindex = 2 [(key_field) = true]; optional uint32 count = 3; optional uint32 map_cycle = 4; optional uint32 purchase_id = 5; } message CMsgGCQuestIdentify { optional uint64 quest_id = 1; } message CMsgGCQuestDevGive { optional uint32 quest_def_index = 1; } message CMsgGCQuestNodeTurnIn { optional uint32 node_defindex = 1; } message CMsgGCQuestMapUnlockNode { optional uint32 node_defindex = 1; optional uint32 quest_defindex = 2; } message CMsgGCNewMatchForLobbyRequest { optional uint64 current_match_id = 1; optional uint32 next_map_id = 2; optional uint64 lobby_id = 3; } message CMsgGCNewMatchForLobbyResponse { optional bool success = 1; } message CMsgGCChangeMatchPlayerTeamsRequest { message Member { optional uint64 member_id = 1; optional .TF_GC_TEAM new_team = 2 [default = TF_GC_TEAM_NOTEAM]; } optional uint64 match_id = 1; optional uint64 lobby_id = 2; repeated .CMsgGCChangeMatchPlayerTeamsRequest.Member member = 3; } message CMsgGCChangeMatchPlayerTeamsResponse { optional bool success = 1; } message CMsgGCQuestComplete_Debug { optional uint64 quest_id = 1; optional uint32 points_type = 2; } message CMsgGCQuestMap_Debug { optional uint32 reset_operation = 1; optional uint32 give_credit = 2; optional .CMsgGCQuestMapUnlockNode unlock_node = 3; } message CMsgGCQuestMapPurchaseReward { optional uint32 store_item_defindex = 1; } message CMsgGCQuestResponse { optional bool success = 1 [default = false]; } message CMsgGCSetDisablePartyQuestProgress { optional bool state = 1; } message CMsgQuestProgressReport { optional uint64 quest_id = 1; optional bool star_0_earned = 2; optional bool star_1_earned = 3; optional bool star_2_earned = 4; repeated uint64 items_earned = 5; optional uint32 reward_credits_earned = 6; optional bool contract_completed = 7; } message CMsgConsumePaintkit { optional fixed64 source_id = 1; optional uint32 target_defindex = 2; } message CMsgPainkitDevGrant { optional uint32 paintkit_defindex = 1; optional float wear = 2; optional uint32 item_defindex = 3; } message GCQuestStrangeEvent { optional uint32 owner_account_id = 1; optional uint32 scorer_account_id = 2; optional uint64 quest_id = 3; optional uint32 strange_event_id = 4; optional uint32 score = 5; } message CMsgSDRTicket { optional bytes serialized_ticket = 1; }