Counter Strike : Global Offensive Source Code
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

1692 lines
66 KiB

  1. //====== Copyright 1996-2010, Valve Corporation, All rights reserved. =======
  2. //
  3. // Purpose: The file defines our Google Protocol Buffers which are used in over
  4. // the wire messages between servers as well as between the CS:GO and CS:GO gameservers
  5. // and clients.
  6. //
  7. //=============================================================================
  8. // We care more about speed than code size
  9. option optimize_for = SPEED;
  10. // We don't use the service generation functionality
  11. option cc_generic_services = false;
  12. //
  13. // STYLE NOTES:
  14. //
  15. // Use CamelCase CMsgMyMessageName style names for messages.
  16. //
  17. // Use lowercase _ delimited names like my_steam_id for field names, this is non-standard for Steam,
  18. // but plays nice with the Google formatted code generation.
  19. //
  20. // Try not to use required fields ever. Only do so if you are really really sure you'll never want them removed.
  21. // Optional should be preffered as it will make versioning easier and cleaner in the future if someone refactors
  22. // your message and wants to remove or rename fields.
  23. //
  24. // Use fixed64 for JobId_t, GID_t, or SteamID. This is appropriate for any field that is normally
  25. // going to be larger than 2^56. Otherwise use int64 for 64 bit values that are frequently smaller
  26. // than 2^56 as it will safe space on the wire in those cases.
  27. //
  28. // Similar to fixed64, use fixed32 for RTime32 or other 32 bit values that are frequently larger than
  29. // 2^28. It will safe space in those cases, otherwise use int32 which will safe space for smaller values.
  30. // An exception to this rule for RTime32 is if the value will frequently be zero rather than set to an actual
  31. // time.
  32. //
  33. import "steammessages.proto";
  34. import "engine_gcmessages.proto";
  35. enum ECsgoGCMsg
  36. {
  37. k_EMsgGCCStrike15_v2_Base = 9100;
  38. k_EMsgGCCStrike15_v2_MatchmakingStart = 9101;
  39. k_EMsgGCCStrike15_v2_MatchmakingStop = 9102;
  40. k_EMsgGCCStrike15_v2_MatchmakingClient2ServerPing = 9103;
  41. k_EMsgGCCStrike15_v2_MatchmakingGC2ClientUpdate = 9104;
  42. k_EMsgGCCStrike15_v2_MatchmakingGC2ServerReserve = 9105;
  43. k_EMsgGCCStrike15_v2_MatchmakingServerReservationResponse = 9106;
  44. k_EMsgGCCStrike15_v2_MatchmakingGC2ClientReserve = 9107;
  45. k_EMsgGCCStrike15_v2_MatchmakingServerRoundStats = 9108;
  46. k_EMsgGCCStrike15_v2_MatchmakingClient2GCHello = 9109;
  47. k_EMsgGCCStrike15_v2_MatchmakingGC2ClientHello = 9110;
  48. k_EMsgGCCStrike15_v2_MatchmakingServerMatchEnd = 9111;
  49. k_EMsgGCCStrike15_v2_MatchmakingGC2ClientAbandon = 9112;
  50. k_EMsgGCCStrike15_v2_MatchmakingServer2GCKick = 9113;
  51. k_EMsgGCCStrike15_v2_MatchmakingGC2ServerConfirm = 9114;
  52. k_EMsgGCCStrike15_v2_MatchmakingGCOperationalStats = 9115;
  53. k_EMsgGCCStrike15_v2_MatchmakingGC2ServerRankUpdate = 9116;
  54. k_EMsgGCCStrike15_v2_MatchmakingOperator2GCBlogUpdate = 9117;
  55. k_EMsgGCCStrike15_v2_ServerNotificationForUserPenalty = 9118;
  56. k_EMsgGCCStrike15_v2_ClientReportPlayer = 9119;
  57. k_EMsgGCCStrike15_v2_ClientReportServer = 9120;
  58. k_EMsgGCCStrike15_v2_ClientCommendPlayer = 9121;
  59. k_EMsgGCCStrike15_v2_ClientReportResponse = 9122;
  60. k_EMsgGCCStrike15_v2_ClientCommendPlayerQuery = 9123;
  61. k_EMsgGCCStrike15_v2_ClientCommendPlayerQueryResponse = 9124;
  62. // k_EMsgGCCStrike15_v2_ClientRequestWatchInfoFriends_Obsolete = 9125; // OBSOLETE: September 2013
  63. k_EMsgGCCStrike15_v2_WatchInfoUsers = 9126;
  64. k_EMsgGCCStrike15_v2_ClientRequestPlayersProfile = 9127;
  65. k_EMsgGCCStrike15_v2_PlayersProfile = 9128;
  66. k_EMsgGCCStrike15_v2_SetMyMedalsInfo = 9129;
  67. // k_EMsgGCCStrike15_v2_PlayerEarnedRewardNotification_Obsolete = 9130; // OBSOLETE: May 2015
  68. k_EMsgGCCStrike15_v2_PlayerOverwatchCaseUpdate = 9131;
  69. k_EMsgGCCStrike15_v2_PlayerOverwatchCaseAssignment = 9132;
  70. k_EMsgGCCStrike15_v2_PlayerOverwatchCaseStatus = 9133;
  71. k_EMsgGCCStrike15_v2_GC2ClientTextMsg = 9134;
  72. k_EMsgGCCStrike15_v2_Client2GCTextMsg = 9135;
  73. k_EMsgGCCStrike15_v2_MatchEndRunRewardDrops = 9136;
  74. k_EMsgGCCStrike15_v2_MatchEndRewardDropsNotification = 9137;
  75. k_EMsgGCCStrike15_v2_ClientRequestWatchInfoFriends2 = 9138; // new revision of msg#9125
  76. k_EMsgGCCStrike15_v2_MatchList = 9139;
  77. k_EMsgGCCStrike15_v2_MatchListRequestCurrentLiveGames = 9140;
  78. k_EMsgGCCStrike15_v2_MatchListRequestRecentUserGames = 9141;
  79. k_EMsgGCCStrike15_v2_GC2ServerReservationUpdate = 9142;
  80. k_EMsgGCCStrike15_v2_ClientVarValueNotificationInfo = 9144; // client reports variable values
  81. k_EMsgGCCStrike15_v2_TournamentMatchRewardDropsNotification = 9145;
  82. k_EMsgGCCStrike15_v2_MatchListRequestTournamentGames = 9146;
  83. k_EMsgGCCStrike15_v2_MatchListRequestFullGameInfo = 9147;
  84. k_EMsgGCCStrike15_v2_GiftsLeaderboardRequest = 9148;
  85. k_EMsgGCCStrike15_v2_GiftsLeaderboardResponse = 9149;
  86. k_EMsgGCCStrike15_v2_ServerVarValueNotificationInfo = 9150; // server reports variable values for clients
  87. k_EMsgGCToGCReloadVersions = 9151; // called when the server or client versions change and other GC's should reload
  88. k_EMsgGCCStrike15_v2_ClientSubmitSurveyVote = 9152; // client submits a survey vote
  89. k_EMsgGCCStrike15_v2_Server2GCClientValidate = 9153; // server requests GC to validate connecting client
  90. k_EMsgGCCStrike15_v2_MatchListRequestLiveGameForUser = 9154; // client requests live match scoreboard for another client's match
  91. k_EMsgGCCStrike15_v2_Server2GCPureServerValidationFailure = 9155; // server reports to GC pure client validation
  92. k_EMsgGCCStrike15_v2_Client2GCEconPreviewDataBlockRequest = 9156; // client requests econ preview data block
  93. k_EMsgGCCStrike15_v2_Client2GCEconPreviewDataBlockResponse = 9157; // client requests econ preview data block
  94. k_EMsgGCCStrike15_v2_AccountPrivacySettings = 9158; // client requests his own account privacy settings, or GC responds with account privacy settings
  95. k_EMsgGCCStrike15_v2_SetMyActivityInfo = 9159; // client reports his own activity
  96. k_EMsgGCCStrike15_v2_MatchListRequestTournamentPredictions = 9160; // client requests his own tournament predictions
  97. k_EMsgGCCStrike15_v2_MatchListUploadTournamentPredictions = 9161; // client uploads his own tournament predictions
  98. k_EMsgGCCStrike15_v2_DraftSummary = 9162; // client gets or uploads draft selection
  99. k_EMsgGCCStrike15_v2_ClientRequestJoinFriendData = 9163; // Client requests data required to join a friend
  100. k_EMsgGCCStrike15_v2_ClientRequestJoinServerData = 9164; // Client requests data required to join a game server
  101. k_EMsgGCCStrike15_v2_ClientRequestNewMission = 9165; // Client requests a new mission for their current campaign
  102. k_EMsgGCCStrike15_v2_GC2ServerNotifyXPRewarded = 9166; // GC informs server of xp rewards this match
  103. k_EMsgGCCStrike15_v2_GC2ClientTournamentInfo = 9167; // GC informs client of tournament match starting
  104. k_EMsgGC_GlobalGame_Subscribe = 9168; // Client subscribes to global game on the GC
  105. k_EMsgGC_GlobalGame_Unsubscribe = 9169; // Client unsubscribes to global game on the GC
  106. k_EMsgGC_GlobalGame_Play = 9170; // Client takes action in the global game on the GC
  107. k_EMsgGCCStrike15_v2_AcknowledgePenalty = 9171; // User acknowledge he/she had a cooldown in the past
  108. k_EMsgGCCStrike15_v2_Client2GCRequestPrestigeCoin = 9172; // Client wants to trade max level status for current prestige coin
  109. k_EMsgGCCStrike15_v2_GC2ClientGlobalStats = 9173; // GC informs client about updated global stats, only deltas are included
  110. k_EMsgGCCStrike15_v2_Client2GCStreamUnlock = 9174; // Client requests GC to unlock streaming codec that is currently unavailable
  111. k_EMsgGCCStrike15_v2_FantasyRequestClientData = 9175; // Client requests his fantasy data
  112. k_EMsgGCCStrike15_v2_FantasyUpdateClientData = 9176; // Client uploads his own tournament predictions
  113. k_EMsgGCCStrike15_v2_GCToClientSteamdatagramTicket = 9177; // GC -> client, here's your ticket to talk via SDR to a gameserver
  114. k_EMsgGCCStrike15_v2_ClientToGCRequestTicket = 9178; // client -> GC, could I have a ticket please?
  115. k_EMsgGCCStrike15_v2_ClientToGCRequestElevate = 9179; // client -> GC, request elevated status
  116. k_EMsgGCCStrike15_v2_GlobalChat = 9180; // client <-> GC, chat message
  117. k_EMsgGCCStrike15_v2_GlobalChat_Subscribe = 9181; // client <-> GC, chat message
  118. k_EMsgGCCStrike15_v2_GlobalChat_Unsubscribe = 9182; // client <-> GC, chat message
  119. k_EMsgGCCStrike15_v2_ClientAuthKeyCode = 9183; // client <-> GC, authkey sharing code exchange
  120. k_EMsgGCCStrike15_v2_GotvSyncPacket = 9184; // server>GC: update sync tick; client>GC: asking for sync tick; GC>client: responding with sync tick
  121. k_EMsgGCCStrike15_v2_ClientPlayerDecalSign = 9185; // client <-> GC, client requesting spray decal charge to be consumed
  122. k_EMsgGCCStrike15_v2_ClientLogonFatalError = 9187; // GC -> client, banned from logging in, no need to retry
  123. k_EMsgGCCStrike15_v2_ClientPollState = 9188; // GC <-> client: poll state, or results of the poll
  124. k_EMsgGCCStrike15_v2_Party_Register = 9189; // GC <-> client: register the party metadata
  125. k_EMsgGCCStrike15_v2_Party_Unregister = 9190; // GC <-> client: unregister the party metadata
  126. k_EMsgGCCStrike15_v2_Party_Search = 9191; // GC <-> client: search the party metadata
  127. k_EMsgGCCStrike15_v2_Party_Invite = 9192; // GC -> client: you have been invited to this party
  128. k_EMsgGCCStrike15_v2_Account_RequestCoPlays = 9193; // client <-> GC: download recent co players
  129. };
  130. /////////////////////////////////////////////////////////////////////////
  131. //
  132. // v2 messages
  133. //
  134. message GameServerPing
  135. {
  136. //optional uint64 gameserver_id = 1; // SteamID of the game server with which the client could establish a connection
  137. optional int32 ping = 2; // ping to this game server, negative value would mean that the server is unreachable for the client
  138. optional uint32 ip = 3; // Server IP address
  139. //optional uint32 port = 4; // Server port
  140. optional uint32 instances = 5; // Number of server intances on the same address
  141. };
  142. message DataCenterPing
  143. {
  144. optional fixed32 data_center_id = 1; // Data center code. (Usually 3 character ID)
  145. optional sint32 ping = 2; // Ping to this data center. Negative value would mean we weern't able to communicate with this data center
  146. };
  147. message DetailedSearchStatistic
  148. {
  149. optional uint32 game_type = 1; // Type of the game searched
  150. optional uint32 search_time_avg = 2; // Average time a game is found with these settings
  151. optional uint32 players_searching = 4; // Players including this type in their search
  152. };
  153. message TournamentPlayer
  154. {
  155. optional uint32 account_id = 1; // Account ID registered
  156. optional string player_nick = 2; // Player nick
  157. optional string player_name = 3; // Player name
  158. optional uint32 player_dob = 4; // Player DOB timestamp
  159. optional string player_flag = 5; // Player flag
  160. optional string player_location = 6; // Player location
  161. optional string player_desc = 7; // Player bio
  162. };
  163. message TournamentTeam
  164. {
  165. optional int32 team_id = 1; // Team ID in the database
  166. optional string team_tag = 2; // Team tag
  167. optional string team_flag = 3; // Team flag
  168. optional string team_name = 4; // Team name
  169. repeated TournamentPlayer players = 5; // Team players
  170. };
  171. message TournamentEvent
  172. {
  173. optional int32 event_id = 1; // Event ID in the database
  174. optional string event_tag = 2; // Event tag
  175. optional string event_name = 3; // Event name
  176. optional uint32 event_time_start = 4; // Event time start
  177. optional uint32 event_time_end = 5; // Event time end
  178. optional int32 event_public = 6; // Event public flag
  179. optional int32 event_stage_id = 7; // Event stage ID in the database
  180. optional string event_stage_name = 8; // Event stage name
  181. optional uint32 active_section_id = 9; // Which section is currently active
  182. };
  183. message GlobalStatistics
  184. {
  185. optional uint32 players_online = 1; // Total number of players online
  186. optional uint32 servers_online = 2; // Total number of game servers online
  187. optional uint32 players_searching = 3; // Total number of players searching
  188. optional uint32 servers_available = 4; // Total number of game servers available for reservation
  189. optional uint32 ongoing_matches = 5; // Total number of currently ongoing matches
  190. optional uint32 search_time_avg = 6; // Average search time in milliseconds
  191. repeated DetailedSearchStatistic search_statistics = 7; // Detailed search statistics
  192. optional string main_post_url = 8; // URL for the main menu post
  193. optional uint32 required_appid_version = 9; // Required appid version
  194. optional uint32 pricesheet_version = 10; // Pricesheet version
  195. optional uint32 twitch_streams_version = 11;// Force Twitch.tv streams version number, 0 to disable the feature on the client
  196. optional uint32 active_tournament_eventid = 12; // Currently active tournament EventID
  197. optional uint32 active_survey_id = 13; // Currently active SurveyID
  198. };
  199. message OperationalStatisticDescription
  200. {
  201. optional string name = 1; // Name of the statistic
  202. optional uint32 idkey = 2; // ID key of the statistic
  203. };
  204. message OperationalStatisticElement
  205. {
  206. optional uint32 idkey = 1; // ID key of the operational statistic
  207. repeated int32 values = 2; // Values of the operational statistic
  208. };
  209. message OperationalStatisticsPacket
  210. {
  211. optional int32 packetid = 1; // Packet index
  212. optional int32 mstimestamp = 2; // Timestamp in milliseconds
  213. repeated OperationalStatisticElement values = 3; // Actual values of the statistics
  214. };
  215. message PlayerRankingInfo
  216. {
  217. optional uint32 account_id = 1; // Player account id
  218. optional uint32 rank_id = 2; // Player rank id
  219. optional uint32 wins = 3; // Number of won matches
  220. optional float rank_change = 4; // How did the player rank change if the rank changed
  221. };
  222. message PlayerCommendationInfo
  223. {
  224. optional uint32 cmd_friendly = 1; // Friendly
  225. optional uint32 cmd_teaching = 2; // Teaching
  226. optional uint32 cmd_leader = 4; // Leader
  227. };
  228. // Also payload for: k_EMsgGCCStrike15_v2_SetMyMedalsInfo
  229. message PlayerMedalsInfo
  230. {
  231. optional uint32 medal_team = 1; // Team achievements
  232. optional uint32 medal_combat = 2; // Combat achievements
  233. optional uint32 medal_weapon = 3; // Weapon achievements
  234. optional uint32 medal_global = 4; // Global achievements
  235. optional uint32 medal_arms = 5; // Arms Race achievements
  236. // optional uint32 legacy__coin_op_payback = 6;// LEGACY: pre-economy update -- Challenge Coin for 'Operation: Payback'
  237. repeated uint32 display_items_defidx = 7; // Array of display items
  238. optional uint32 featured_display_item_defidx = 8; // Featured flair item
  239. };
  240. // Also payload for: k_EMsgGCCStrike15_v2_SetMyActivityInfo
  241. message AccountActivity
  242. {
  243. optional uint32 activity = 1; // What is the account currently doing
  244. optional uint32 mode = 2; // Which mode the account has loaded
  245. optional uint32 map = 3; // Which map the account has loaded
  246. };
  247. message TournamentMatchSetup
  248. {
  249. optional int32 event_id = 1; // Event ID of the match
  250. optional int32 team_id_ct = 2; // Team that is starting CT
  251. optional int32 team_id_t = 3; // Team that is starting T
  252. optional int32 event_stage_id = 4; // Event stage ID (group stage, semi-finals, etc.)
  253. };
  254. message ServerHltvInfo
  255. {
  256. optional uint32 tv_udp_port = 1; // GOTV UDP port
  257. optional uint64 tv_watch_key = 2; // GOTV watch key
  258. optional uint32 tv_slots = 3; // GOTV global slots
  259. optional uint32 tv_clients = 4; // GOTV clients including proxies+spectators
  260. optional uint32 tv_proxies = 5; // Number of GOTV proxies
  261. optional uint32 tv_time = 6; // How long has the match been going on
  262. optional uint32 game_type = 8; // Game mode
  263. optional string game_mapgroup = 9; // Game mapgroup
  264. optional string game_map = 10; // Game map
  265. optional uint64 tv_master_steamid = 11; // When relaying GOTV broadcast this is the SteamID of master server
  266. optional uint32 tv_local_slots = 12; // GOTV local slots
  267. optional uint32 tv_local_clients = 13; // GOTV local clients including proxies+spectators
  268. optional uint32 tv_local_proxies = 14; // Number of local GOTV proxies
  269. optional uint32 tv_relay_slots = 15; // GOTV relay slots
  270. optional uint32 tv_relay_clients = 16; // GOTV relay clients including proxies+spectators
  271. optional uint32 tv_relay_proxies = 17; // Number of relay GOTV proxies
  272. optional uint32 tv_relay_address = 18; // Relay connection address
  273. optional uint32 tv_relay_port = 19; // Relay connection port
  274. optional uint64 tv_relay_steamid = 20; // When relaying GOTV broadcast this is the SteamID of relay connection server which is not necessarily the master
  275. };
  276. // IP Address mask (e.g. 192.69.96.0/22 -> a=192, b=69, c=96, d=0, bits=22), token represents datacenter id when multiple masks apply
  277. message IpAddressMask
  278. {
  279. optional uint32 a = 1;
  280. optional uint32 b = 2;
  281. optional uint32 c = 3;
  282. optional uint32 d = 4;
  283. optional uint32 bits = 5;
  284. optional uint32 token = 6;
  285. };
  286. // Used by both ServerQuestUpdateData and k_EMsgGCCStrike15_v2_GC2ServerNotifyXPRewarded
  287. message XpProgressData
  288. {
  289. optional uint32 xp_points = 1; // Points earned towards next level
  290. optional int32 xp_category = 2; // Cause of this set of points
  291. };
  292. // Update any econ items based on match completion
  293. message MatchEndItemUpdates
  294. {
  295. optional uint64 item_id = 1; // item to be updated
  296. optional uint32 item_attr_defidx = 2; // attribute to be updated
  297. optional uint32 item_attr_delta_value = 3; // delta of attribute
  298. };
  299. // Leaderboard scoreboard entry data
  300. message ScoreLeaderboardData
  301. {
  302. optional uint64 quest_id = 1;
  303. optional uint32 score = 2;
  304. message Entry
  305. {
  306. optional uint32 tag = 1;
  307. optional uint32 val = 2;
  308. };
  309. message AccountEntries
  310. {
  311. optional uint32 accountid = 1;
  312. repeated Entry entries = 2;
  313. };
  314. repeated AccountEntries accountentries = 3;
  315. repeated Entry matchentries = 5;
  316. };
  317. message PlayerQuestData
  318. {
  319. message QuestItemData
  320. {
  321. optional uint64 quest_id = 1;
  322. optional int32 quest_normal_points_earned = 2;
  323. optional int32 quest_bonus_points_earned = 3;
  324. };
  325. optional uint32 quester_account_id = 1;
  326. repeated QuestItemData quest_item_data = 2;
  327. repeated XpProgressData xp_progress_data = 3;
  328. optional uint32 time_played = 4;
  329. optional uint32 mm_game_mode = 5; // game mode of the match this progress happened in. Number is a EMsgGCCStrike15_v2_MatchmakingGame_t enum
  330. repeated MatchEndItemUpdates item_updates = 6; // list of items which need attribute updates based on match completion
  331. };
  332. //
  333. // Helper structure to communicate player quest progress
  334. //
  335. message CMsgGC_ServerQuestUpdateData
  336. {
  337. repeated PlayerQuestData player_quest_data = 1; // per-player quest progress data
  338. optional bytes binary_data = 2; // serialized binary data about the match
  339. optional uint32 mm_game_mode = 3; // game mode of the match this progress happened in. Number is a EMsgGCCStrike15_v2_MatchmakingGame_t enum
  340. optional ScoreLeaderboardData missionlbsdata = 4; // data to be placed for participating accounts into the leaderboards
  341. };
  342. //
  343. // k_EMsgGCCStrike15_v2_MatchmakingGCOperationalStats
  344. //
  345. // GC operational statistics
  346. //
  347. message CMsgGCCStrike15_v2_MatchmakingGCOperationalStats
  348. {
  349. optional int32 packetid = 1; // Packet index of the last received packet (or not set for initial request)
  350. repeated OperationalStatisticDescription namekeys = 2; // Name keys of the statistics
  351. repeated OperationalStatisticsPacket packets = 3; // Packets with statistics
  352. };
  353. //
  354. // k_EMsgGCCStrike15_v2_MatchmakingGC2ServerConfirm
  355. //
  356. // GC confirmation to official dedicated server for server reliable message
  357. //
  358. message CMsgGCCStrike15_v2_MatchmakingGC2ServerConfirm
  359. {
  360. optional uint32 token = 1; // Confirmation token
  361. optional uint32 stamp = 2; // Confirmation stamp
  362. optional uint64 exchange = 3; // Exchange value between client and server
  363. };
  364. //
  365. // k_EMsgGCCStrike15_v2_GC2ServerReservationUpdate
  366. //
  367. // GC is updating reservation information on the game server
  368. //
  369. message CMsgGCCStrike15_v2_GC2ServerReservationUpdate
  370. {
  371. optional uint32 viewers_external_total = 1; // Number of total external viewers
  372. optional uint32 viewers_external_steam = 2; // Number of total external viewers with Steam account linked
  373. };
  374. //
  375. // k_EMsgGCCStrike15_v2_MatchmakingStart
  376. //
  377. // Places the party into matchmaking pool
  378. //
  379. message CMsgGCCStrike15_v2_MatchmakingStart
  380. {
  381. repeated uint32 account_ids = 1; // List of party members who will play together, first one is the party leader (sender of the message)
  382. optional uint32 game_type = 2; // Arms Race, Classic
  383. optional string ticket_data = 3; // Matchmaking ticket data
  384. optional uint32 client_version = 4; // Client version
  385. optional TournamentMatchSetup tournament_match = 5; // Tournament match configuration
  386. optional bool prime_only = 6; // Party only wants to match against other prime users
  387. };
  388. //
  389. // k_EMsgGCCStrike15_v2_MatchmakingStop
  390. //
  391. // Takes the party containing sender out of matchmaking pool
  392. //
  393. message CMsgGCCStrike15_v2_MatchmakingStop
  394. {
  395. optional int32 abandon = 1; // Flag indicating that user wants to abandon the ongoing match
  396. };
  397. //
  398. // k_EMsgGCCStrike15_v2_MatchmakingClient2ServerPing
  399. //
  400. // Client reports information about their ping to a game server
  401. //
  402. message CMsgGCCStrike15_v2_MatchmakingClient2ServerPing
  403. {
  404. //
  405. // Either a list of gameservers we have pinged
  406. //
  407. repeated GameServerPing gameserverpings = 1; // Pings information to game servers
  408. optional int32 offset_index = 2; // How many game servers have been submitted by client so far
  409. optional int32 final_batch = 3; // Whether the batch reported is final
  410. //
  411. // Or ping measurements to data centers based on Steam Datagram
  412. //
  413. repeated DataCenterPing data_center_pings = 4;
  414. optional uint32 max_ping = 5; // User preference indicating how much max acceptable ping is allowed
  415. };
  416. //
  417. // k_EMsgGCCStrike15_v2_MatchmakingGC2ClientUpdate
  418. //
  419. // GC reports to the client the state of matchmaking
  420. //
  421. message CMsgGCCStrike15_v2_MatchmakingGC2ClientUpdate
  422. {
  423. optional int32 matchmaking = 1; // Matchmaking stage
  424. repeated uint32 waiting_account_id_sessions = 2; // Waiting for these accounts to login to GC
  425. optional string error = 3; // Error message information
  426. repeated uint32 ongoingmatch_account_id_sessions = 6; // Waiting for these accounts to finish their ongoing match
  427. optional GlobalStatistics global_stats = 7; // Global statistics about the game
  428. repeated uint32 failping_account_id_sessions = 8; // These accounts failed to ping any servers
  429. repeated uint32 penalty_account_id_sessions = 9; // These accounts have penalty from matchmaking
  430. repeated uint32 failready_account_id_sessions = 10; // These accounts failed to ready up
  431. repeated uint32 vacbanned_account_id_sessions = 11; // These accounts have VAC ban
  432. optional IpAddressMask server_ipaddress_mask = 12; // When match must be restricted to a specific game server this will be the mask
  433. message Note
  434. {
  435. optional int32 type = 1; // Type of the note for the user
  436. optional int32 region_id = 2; // Region in which the note applies
  437. optional float region_r = 3; // Radius of the region, km
  438. optional float distance = 4; // Distance from the region, km
  439. };
  440. repeated Note notes = 13; // Notes to display to the user during matchmaking
  441. repeated uint32 penalty_account_id_sessions_green = 14; // These accounts have green penalty from matchmaking
  442. repeated uint32 insufficientlevel_sessions = 15; // These accounts have insufficient level
  443. repeated uint32 vsncheck_account_id_sessions = 16; // These accounts are not VAC verified
  444. repeated uint32 launcher_mismatch_sessions = 17; // These accounts are not VAC verified
  445. };
  446. // k_EMsgGCCStrike15_v2_DraftSummary
  447. message CDataGCCStrike15_v2_TournamentMatchDraft
  448. {
  449. optional int32 event_id = 1;
  450. optional int32 event_stage_id = 2;
  451. optional int32 team_id_0 = 3;
  452. optional int32 team_id_1 = 4;
  453. optional int32 maps_count = 5; // Number of maps in the series
  454. optional int32 maps_current = 6; // Current index of the map in the series (0-2)
  455. optional int32 team_id_start = 7; // Team ID who has the starting turn
  456. optional int32 team_id_veto1 = 8; // Which team does the veto first
  457. optional int32 team_id_pickn = 9; // Which team does the side pick in the last draft entry
  458. message Entry
  459. {
  460. optional int32 mapid = 1; // map id selected
  461. optional int32 team_id_ct = 2; // which team starts CT
  462. };
  463. repeated Entry drafts = 10; // Draft selections
  464. };
  465. message CPreMatchInfoData
  466. {
  467. optional int32 predictions_pct = 1; // When tournament predictions were placed for teams involved in the match this will be the percentage in favor of team0, valid values between [1..99], 0 means undefined
  468. optional CDataGCCStrike15_v2_TournamentMatchDraft draft = 4; // Draft of the match series
  469. message TeamStats
  470. {
  471. optional int32 match_info_idxtxt = 1; // Reference to another match info txt
  472. optional string match_info_txt = 2; // Match info txt
  473. repeated string match_info_teams = 3; // Match info values per team
  474. };
  475. repeated TeamStats stats = 5; // A bundle of different stats
  476. };
  477. //
  478. // k_EMsgGCCStrike15_v2_MatchmakingGC2ServerReserve
  479. //
  480. // GC reports to server matchmaking reservation
  481. //
  482. message CMsgGCCStrike15_v2_MatchmakingGC2ServerReserve
  483. {
  484. repeated uint32 account_ids = 1; // Acccount IDs for the reservation
  485. optional uint32 game_type = 2; // Game for the reservation
  486. optional uint64 match_id = 3; // If this match proceeds and happens this will be the match id
  487. optional uint32 server_version = 4; // Server version required for this match to proceed
  488. // --- next section of the reservation doesn't have to be filled out by the server.dll when communicating with GC ---
  489. repeated PlayerRankingInfo rankings = 5; // Player rankings for the match
  490. optional uint64 encryption_key = 6; // Encryption key unique per match
  491. optional uint64 encryption_key_pub = 7; // Encryption key for public streamable data
  492. repeated uint32 party_ids = 8; // Party identifier of the players
  493. repeated IpAddressMask whitelist = 9; // GC whitelist of IP address masks for relays
  494. optional uint64 tv_master_steamid = 10; // For server reservations of official GOTV relay proxies this is SteamID of master
  495. optional TournamentEvent tournament_event = 11; // Tournament event reservation
  496. repeated TournamentTeam tournament_teams = 12; // Tournament teams for the reservation
  497. repeated uint32 tournament_casters_account_ids = 13; // Tournament caster account IDs that will be allowed to connect to the game server directly
  498. optional uint64 tv_relay_steamid = 14; // For server reservations of official GOTV relay proxies this is SteamID of upstream relay connection proxy which can be different from master
  499. optional CPreMatchInfoData pre_match_data = 15; // When tournament predictions were placed for teams involved in the match this will be the percentage in favor of team0, valid values between [1..99], 0 means undefined
  500. };
  501. //
  502. // k_EMsgGCCStrike15_v2_MatchmakingServerReservationResponse
  503. //
  504. // Server reports its state to GC
  505. //
  506. message CMsgGCCStrike15_v2_MatchmakingServerReservationResponse
  507. {
  508. optional uint64 reservationid = 1; // Reservation id for connecting to the server
  509. optional CMsgGCCStrike15_v2_MatchmakingGC2ServerReserve reservation = 2; // Current matchmaking reservation of the server
  510. optional string map = 3; // Map that the server rolled for the teams
  511. optional uint64 gc_reservation_sent = 4; // GC reservation
  512. optional uint32 server_version = 5; // Server protocol version
  513. optional ServerHltvInfo tv_info = 6; // Server TV info if TV is active
  514. repeated uint32 reward_player_accounts = 7; // Player accounts to be rewarded
  515. repeated uint32 idle_player_accounts = 8; // Player accounts who are idle and should not be rewarded
  516. optional uint32 reward_item_attr_def_idx = 9; // Player accounts must own this attribute
  517. optional uint32 reward_item_attr_value = 10; // That attribute must have this value
  518. optional uint32 reward_item_attr_reward_idx = 11; // Index of tha attribute to modify
  519. optional uint32 reward_drop_list = 12; // Series of weapon case to (sometimes?) reward in this map
  520. optional string tournament_tag = 13; // Tournament tag setting of the game server
  521. optional uint32 steamdatagram_port = 14; // If we can be proxied by steam datagram, what port are we listening on?
  522. };
  523. //
  524. // k_EMsgGCCStrike15_v2_MatchmakingGC2ClientReserve
  525. //
  526. // GC reports to clients matchmaking reservation
  527. // GC can also request another game server to become GOTV relay with the same message (game server replies with CMsgGCCStrike15_v2_MatchmakingServerReservationResponse)
  528. //
  529. message CMsgGCCStrike15_v2_MatchmakingGC2ClientReserve
  530. {
  531. optional uint64 serverid = 1; // Game server SteamID
  532. optional uint32 direct_udp_ip = 2; // Game server IP
  533. optional uint32 direct_udp_port = 3; // Game server port
  534. optional uint64 reservationid = 4; // Server reservation id
  535. optional CMsgGCCStrike15_v2_MatchmakingGC2ServerReserve reservation = 5; // Current matchmaking reservation of the server
  536. optional string map = 6; // Map that the server rolled for the teams
  537. optional string server_address = 7; // Game server connect address. This indicates the GC's prefered method of connecting to the server. (Either Steam datagram or direct UDP connect.)
  538. };
  539. //
  540. // k_EMsgGCCStrike15_v2_MatchmakingServerRoundStats
  541. //
  542. // Server reports its round stats to GC
  543. //
  544. message CMsgGCCStrike15_v2_MatchmakingServerRoundStats
  545. {
  546. optional uint64 reservationid = 1; // Reservation id for connecting to the server
  547. optional CMsgGCCStrike15_v2_MatchmakingGC2ServerReserve reservation = 2; // Current matchmaking reservation of the server
  548. optional string map = 3; // Map
  549. optional int32 round = 4; // Round
  550. repeated int32 kills = 5; // Kills
  551. repeated int32 assists = 6; // Assists
  552. repeated int32 deaths = 7; // Deaths
  553. repeated int32 scores = 8; // Scores
  554. repeated int32 pings = 9; // Pings (-1 would mean unconnected)
  555. optional int32 round_result = 10; // Round result (0 = tie, 1 = 1st team win, 2 = 2nd team win)
  556. optional int32 match_result = 11; // End of match result that will override team scores if present (0 = tie, 1 = 1st team win, 2 = 2nd team win, 3 = game failed to continue due to abandon, 4 (bitmask'ed) = game network conditions have been detected)
  557. repeated int32 team_scores = 12; // Scores of each team, at 0th index is the team containing 0th reservation player
  558. optional CMsgGCCStrike15_v2_MatchmakingGC2ServerConfirm confirm = 13; // Confirmation to deliver
  559. optional int32 reservation_stage = 14; // Reservation stage (1 = connection probing, 2 = ready-up)
  560. optional int32 match_duration = 15; // How many seconds has the match been going on
  561. repeated int32 enemy_kills = 16; // How many enemies were killed
  562. repeated int32 enemy_headshots = 17;// How many enemies were killed with a headshot
  563. repeated int32 enemy_3ks = 18; // 3K rounds
  564. repeated int32 enemy_4ks = 19; // 4K rounds
  565. repeated int32 enemy_5ks = 20; // 5K rounds
  566. repeated int32 mvps = 21; // MVP stars
  567. optional uint32 spectators_count = 22; // Max number of spectators observed during the match
  568. optional uint32 spectators_count_tv = 23; // Max number of spectators connected via GOTV during the match
  569. optional uint32 spectators_count_lnk = 24; // Max number of spectators connected via twitch.tv account linking during the match
  570. repeated int32 enemy_kills_agg = 25; // How many enemies were killed by this player on aggregate
  571. message DropInfo
  572. {
  573. optional uint32 account_mvp = 1; // AccountID of the MVP of this round
  574. };
  575. optional DropInfo drop_info = 26; // Drop info for the tournament
  576. };
  577. //
  578. // k_EMsgGCCStrike15_v2_MatchmakingServerMatchEnd
  579. //
  580. // Server reports its match end stats to GC
  581. //
  582. message CMsgGCCStrike15_v2_MatchmakingServerMatchEnd
  583. {
  584. optional CMsgGCCStrike15_v2_MatchmakingServerRoundStats stats = 1; // Results of the match
  585. optional CMsgGCCStrike15_v2_MatchmakingGC2ServerConfirm confirm = 3; // Confirmation to deliver
  586. optional uint64 rematch = 4; // When set to non-zero then rematch is requested, last confirmed exchange round id must be provided
  587. optional uint32 replay_token = 5; // Token for the replay ID
  588. optional uint32 replay_cluster_id = 6; // Replay cluster ID
  589. optional bool aborted_match = 7; // This match is void.
  590. optional CMsgGC_ServerQuestUpdateData match_end_quest_data = 8; // Quest update data for players
  591. optional uint32 server_version = 9; // Version of the server submitting match outcome
  592. };
  593. //
  594. // k_EMsgGCCStrike15_v2_MatchmakingClient2GCHello
  595. //
  596. // Client is at the main menu, GC has an opportunity to
  597. // provide some useful information to the client
  598. //
  599. message CMsgGCCStrike15_v2_MatchmakingClient2GCHello
  600. {
  601. };
  602. //
  603. // k_EMsgGCCStrike15_v2_MatchmakingGC2ClientHello
  604. //
  605. // GC is providing session information to the client
  606. //
  607. message CMsgGCCStrike15_v2_MatchmakingGC2ClientHello
  608. {
  609. optional uint32 account_id = 1; // Client account id
  610. optional CMsgGCCStrike15_v2_MatchmakingGC2ClientReserve ongoingmatch = 2; // Match that the client should be participating in
  611. optional GlobalStatistics global_stats = 3; // Global statistics about the game
  612. optional uint32 penalty_seconds = 4; // How many penalty seconds remaining for the player
  613. optional uint32 penalty_reason = 5; // What is the reason for player being penalized
  614. optional int32 vac_banned = 6; // When non-zero means the account has been VAC banned
  615. optional PlayerRankingInfo ranking = 7; // Account ranking information
  616. optional PlayerCommendationInfo commendation = 8; // Commendation information
  617. optional PlayerMedalsInfo medals = 9; // Medals that GC has cached for the client
  618. optional TournamentEvent my_current_event = 10; // Event that the user is currently participating in
  619. repeated TournamentTeam my_current_event_teams = 11; // Teams that are currently participating in the event
  620. optional TournamentTeam my_current_team = 12; // Team that the user is playing on
  621. repeated TournamentEvent my_current_event_stages = 13; // Stages remaining in the event
  622. optional uint32 survey_vote = 14; // What is the current player vote on the active survey
  623. optional AccountActivity activity = 15; // What GC has cached for the client
  624. // optional int32 seconds_until_next_mission_deprecated = 16; // Number of seconds until we've earned our next mission
  625. optional int32 player_level = 17; // Player's level based on xp earned in matches
  626. optional int32 player_cur_xp = 18; // Player's xp earned towards next level
  627. optional int32 player_xp_bonus_flags = 19; // Flags marking which perodic bonuses the player has available
  628. };
  629. //
  630. // k_EMsgGCCStrike15_v2_AccountPrivacySettings
  631. //
  632. // Client is requesting or modifying his own privacy settings or GC is replying with client privacy settings
  633. //
  634. message CMsgGCCStrike15_v2_AccountPrivacySettings
  635. {
  636. message Setting
  637. {
  638. optional uint32 setting_type = 1; // Setting type
  639. optional uint32 setting_value = 2; // Setting value
  640. };
  641. repeated Setting settings = 1; // A pool of settings
  642. };
  643. //
  644. // k_EMsgGCCStrike15_v2_MatchmakingGC2ClientAbandon
  645. //
  646. // Notifies the user about clients abandoning the match
  647. //
  648. message CMsgGCCStrike15_v2_MatchmakingGC2ClientAbandon
  649. {
  650. optional uint32 account_id = 1; // Another client who is abandoning the match
  651. optional CMsgGCCStrike15_v2_MatchmakingGC2ClientReserve abandoned_match = 2; // Match that the mentioned client is abandoning
  652. optional uint32 penalty_seconds = 3; // How many seconds of penalty was assigned to the abandoning player
  653. optional uint32 penalty_reason = 4; // What is the reason for player being penalized
  654. };
  655. //
  656. // k_EMsgGCCStrike15_v2_MatchmakingServer2GCKick
  657. //
  658. // Server notifies the GC that a client has been kicked from the game
  659. //
  660. message CMsgGCCStrike15_v2_MatchmakingServer2GCKick
  661. {
  662. optional uint32 account_id = 1; // Account id of the client being kicked
  663. optional CMsgGCCStrike15_v2_MatchmakingGC2ServerReserve reservation = 2; // Current matchmaking reservation of the server
  664. optional uint32 reason = 3; // Reason for kicking and banning the client
  665. };
  666. //
  667. // k_EMsgGCCStrike15_v2_MatchmakingGC2ServerRankUpdate
  668. //
  669. // GC reports players rank updates to the game server
  670. //
  671. message CMsgGCCStrike15_v2_MatchmakingGC2ServerRankUpdate
  672. {
  673. repeated PlayerRankingInfo rankings = 1; // Updated rankings
  674. optional uint64 match_id = 2; // Match ID
  675. };
  676. //
  677. // k_EMsgGCCStrike15_v2_MatchmakingOperator2GCBlogUpdate
  678. //
  679. // Operator instruction for GC to set blog URL
  680. //
  681. message CMsgGCCStrike15_v2_MatchmakingOperator2GCBlogUpdate
  682. {
  683. optional string main_post_url = 1; // URL for the main menu post
  684. };
  685. //
  686. // k_EMsgGCCStrike15_v2_ServerNotificationForUserPenalty
  687. //
  688. // GC notifies the server that a user has a penalty
  689. //
  690. message CMsgGCCStrike15_v2_ServerNotificationForUserPenalty
  691. {
  692. optional uint32 account_id = 1; // Account id of the client
  693. optional uint32 reason = 2; // Reason for client having the penalty
  694. optional uint32 seconds = 3; // How many seconds remaining
  695. };
  696. //
  697. // k_EMsgGCCStrike15_v2_ClientReportPlayer
  698. //
  699. // Client submitted a player report
  700. //
  701. message CMsgGCCStrike15_v2_ClientReportPlayer
  702. {
  703. optional uint32 account_id = 1; // Reporting this player
  704. optional uint32 rpt_aimbot = 2; // Aimbot
  705. optional uint32 rpt_wallhack = 3; // Wallhack
  706. optional uint32 rpt_speedhack = 4; // Speedhack
  707. optional uint32 rpt_teamharm = 5; // Team harm
  708. optional uint32 rpt_textabuse = 6; // Text abuse
  709. optional uint32 rpt_voiceabuse = 7; // Voice abuse
  710. optional uint64 match_id = 8; // Match ID
  711. };
  712. //
  713. // k_EMsgGCCStrike15_v2_ClientCommendPlayer
  714. // k_EMsgGCCStrike15_v2_ClientCommendPlayerQuery
  715. // k_EMsgGCCStrike15_v2_ClientCommendPlayerQueryResponse
  716. //
  717. // Client submitted a player commendation, queried commendation or query response
  718. //
  719. message CMsgGCCStrike15_v2_ClientCommendPlayer
  720. {
  721. optional uint32 account_id = 1; // Commending this player
  722. optional uint64 match_id = 8; // Match ID
  723. optional PlayerCommendationInfo commendation = 9; // Commendation information
  724. optional uint32 tokens = 10; // Number of commendation tokens
  725. };
  726. //
  727. // k_EMsgGCCStrike15_v2_ClientReportServer
  728. //
  729. // Client submitted a server report
  730. //
  731. message CMsgGCCStrike15_v2_ClientReportServer
  732. {
  733. optional uint32 rpt_poorperf = 1; // Poor performance
  734. optional uint32 rpt_abusivemodels = 2; // Abusive models
  735. optional uint32 rpt_badmotd = 3; // Bad message of the day content
  736. optional uint32 rpt_listingabuse = 4; // Listing abuse
  737. optional uint32 rpt_inventoryabuse = 5; // Misrepresenting players' inventory
  738. optional uint64 match_id = 8; // Match ID
  739. };
  740. //
  741. // k_EMsgGCCStrike15_v2_ClientReportResponse
  742. //
  743. // GC responds to client report message
  744. //
  745. message CMsgGCCStrike15_v2_ClientReportResponse
  746. {
  747. optional uint64 confirmation_id = 1; // Confirmation id for the report
  748. optional uint32 account_id = 2; // Accound id that was reported
  749. optional uint32 server_ip = 3; // Server IP that was used in the report
  750. optional uint32 response_type = 4; // Response to message type
  751. optional uint32 response_result = 5; // Response result
  752. optional uint32 tokens = 6; // Number of commendation tokens
  753. };
  754. //
  755. // k_EMsgGCCStrike15_v2_ClientRequestWatchInfoFriends2
  756. //
  757. // Client requests information about watching friends games
  758. //
  759. message CMsgGCCStrike15_v2_ClientRequestWatchInfoFriends
  760. {
  761. optional uint32 request_id = 1; // Request id
  762. repeated uint32 account_ids = 2; // Friends account ids
  763. optional uint64 serverid = 3; // Server SteamID
  764. optional uint64 matchid = 4; // Server MatchID
  765. };
  766. message WatchableMatchInfo
  767. {
  768. optional uint32 server_ip = 1; // Server IP (or replay cluster ID)
  769. optional uint32 tv_port = 2; // Server TV port (or replay token)
  770. optional uint32 tv_spectators = 3; // Number of GOTV spectators
  771. optional uint32 tv_time = 4; // GOTV match time in seconds
  772. optional bytes tv_watch_password = 5; // GOTV watch password
  773. optional uint64 cl_decryptdata_key = 6; // cl_decryptdata_key
  774. optional uint64 cl_decryptdata_key_pub = 7; // cl_decryptdata_key_pub
  775. optional uint32 game_type = 8; // Game mode
  776. optional string game_mapgroup = 9; // Game mapgroup
  777. optional string game_map = 10; // Game map
  778. optional uint64 server_id = 11; // Server SteamID
  779. optional uint64 match_id = 12; // Match ID
  780. optional uint64 reservation_id = 13; // Reservation ID
  781. };
  782. //
  783. // k_EMsgGCCStrike15_v2_ClientRequestJoinFriendData
  784. //
  785. message CMsgGCCStrike15_v2_ClientRequestJoinFriendData
  786. {
  787. optional uint32 version = 1; // version
  788. optional uint32 account_id = 2; // friend account id
  789. optional uint32 join_token = 3; // join token
  790. optional uint32 join_ipp = 4; // join ipp
  791. optional CMsgGCCStrike15_v2_MatchmakingGC2ClientReserve res = 5; // reservation data
  792. optional string errormsg = 6; // error message to display
  793. };
  794. //
  795. // k_EMsgGCCStrike15_v2_ClientRequestJoinServerData
  796. //
  797. message CMsgGCCStrike15_v2_ClientRequestJoinServerData
  798. {
  799. optional uint32 version = 1; // version
  800. optional uint32 account_id = 2; // user account id
  801. optional uint64 serverid = 3; // friend account id
  802. optional uint32 server_ip = 4; // friend account id
  803. optional uint32 server_port = 5; // server port
  804. optional CMsgGCCStrike15_v2_MatchmakingGC2ClientReserve res = 6; // reservation data
  805. optional string errormsg = 7; // error message to display
  806. };
  807. //
  808. // k_EMsgGCCStrike15_v2_ClientRequestNewMission
  809. //
  810. message CMsgGCCstrike15_v2_ClientRequestNewMission
  811. {
  812. // optional uint64 campaign_item_id_deprecated = 1; // full item id of the campaign we're trying to advance // DEPRECATED
  813. optional uint32 mission_id = 2; // id of the mission we want to begin
  814. optional uint32 campaign_id = 3; // campaign id of the campaign we're trying to advance
  815. };
  816. //
  817. // k_EMsgGCCStrike15_v2_GC2ServerNotifyXPRewarded
  818. //
  819. message CMsgGCCstrike15_v2_GC2ServerNotifyXPRewarded
  820. {
  821. repeated XpProgressData xp_progress_data = 1; // xp chunks and reasons for receiving them
  822. optional uint32 account_id = 2;
  823. optional uint32 current_xp = 3; // xp before the current progress is applied
  824. optional uint32 current_level = 4; // player level before current xp is applied
  825. optional uint32 upgraded_defidx = 5; // upgraded item that player acquired
  826. };
  827. //
  828. // k_EMsgGCCStrike15_v2_WatchInfoUsers
  829. //
  830. // GC response about user matches
  831. //
  832. message CMsgGCCStrike15_v2_WatchInfoUsers
  833. {
  834. optional uint32 request_id = 1; // Request id
  835. repeated uint32 account_ids = 2; // Users account ids with which the watchable match info is associated
  836. repeated WatchableMatchInfo watchable_match_infos = 3; // Watchable match info
  837. // obsolete field = 4
  838. optional uint32 extended_timeout = 5; // GC server requests the client to additionally wait for so many more seconds and retry
  839. };
  840. //
  841. // k_EMsgGCCStrike15_v2_ClientRequestPlayersProfile
  842. //
  843. // Client requests player profile details
  844. //
  845. message CMsgGCCStrike15_v2_ClientRequestPlayersProfile
  846. {
  847. optional uint32 request_id__deprecated = 1; // Request id
  848. repeated uint32 account_ids__deprecated = 2; // Friends account ids
  849. optional uint32 account_id = 3; // Account id requested
  850. optional uint32 request_level = 4; // How much data is being requested (EMsgGCAccountPrivacyRequestLevel_t)
  851. };
  852. //
  853. // k_EMsgGCCStrike15_v2_PlayersProfile
  854. //
  855. // GC responds with friends profile details
  856. //
  857. message CMsgGCCStrike15_v2_PlayersProfile
  858. {
  859. optional uint32 request_id = 1; // Request id
  860. repeated CMsgGCCStrike15_v2_MatchmakingGC2ClientHello account_profiles = 2; // Available profiles
  861. };
  862. //
  863. // k_EMsgGCCStrike15_v2_PlayerOverwatchCaseUpdate
  864. //
  865. // Client requests overwatch case update or assignment
  866. //
  867. message CMsgGCCStrike15_v2_PlayerOverwatchCaseUpdate
  868. {
  869. optional uint64 caseid = 1; // Case ID in the overwatch
  870. // optional uint32 verdict_legacy = 2; // Verdict on the case [LEGACY: June 11 2013 -- Handler will be removed]
  871. optional uint32 suspectid = 3; // Suspect ID
  872. optional uint32 fractionid = 4; // Evidence fraction
  873. // [NEW: June 11 2013 -- this is the new fields to submit verdict on the case]
  874. optional uint32 rpt_aimbot = 5; // Aimbot
  875. optional uint32 rpt_wallhack = 6; // Wallhack
  876. optional uint32 rpt_speedhack = 7; // Speedhack
  877. optional uint32 rpt_teamharm = 8; // Team harm
  878. optional uint32 reason = 9; // Overwatch case update reason [check? assign? verdict?]
  879. };
  880. //
  881. // k_EMsgGCCStrike15_v2_PlayerOverwatchCaseAssignment
  882. //
  883. // Client requests overwatch case assignment
  884. //
  885. message CMsgGCCStrike15_v2_PlayerOverwatchCaseAssignment
  886. {
  887. optional uint64 caseid = 1; // Case ID in the overwatch
  888. optional string caseurl = 2; // Case evidence available for download
  889. optional uint32 verdict = 3; // Verdict on the case
  890. optional uint32 timestamp = 4; // Server timestamp of case assignment
  891. optional uint32 throttleseconds = 5; // How many seconds client has to wait before requesting again
  892. optional uint32 suspectid = 6; // Suspect ID
  893. optional uint32 fractionid = 7; // Evidence fraction
  894. optional uint32 numrounds = 8; // Total evidence number of rounds
  895. optional uint32 fractionrounds = 9; // How many rounds in the fraction
  896. optional int32 streakconvictions = 10; // What is the convictions streak of this player
  897. optional uint32 reason = 11; // Description of the overwatch case assignment (assign would indicate that there's a case pending)
  898. };
  899. //
  900. // k_EMsgGCCStrike15_v2_PlayerOverwatchCaseStatus
  901. //
  902. // Client reports case status when dealing with overwatch case
  903. //
  904. message CMsgGCCStrike15_v2_PlayerOverwatchCaseStatus
  905. {
  906. optional uint64 caseid = 1; // Case ID that the client encountered error with
  907. optional uint32 statusid = 2; // Type of status that client encountered
  908. };
  909. //
  910. // Client header for a overwatch demo
  911. //
  912. message CClientHeaderOverwatchEvidence
  913. {
  914. optional uint32 accountid = 1; // Account ID that received the case
  915. optional uint64 caseid = 2; // Case ID in the overwatch
  916. };
  917. //
  918. // k_EMsgGCCStrike15_v2_GC2ClientTextMsg
  919. //
  920. // GC requests to print a message on the client
  921. //
  922. message CMsgGCCStrike15_v2_GC2ClientTextMsg
  923. {
  924. optional uint32 id = 1; // Original request id if applicable
  925. optional uint32 type = 2; // What is in the payload?
  926. optional bytes payload = 3; // Message text for the client
  927. };
  928. //
  929. // k_EMsgGCCStrike15_v2_Client2GCTextMsg
  930. //
  931. // Client forwards a text message to GC
  932. //
  933. message CMsgGCCStrike15_v2_Client2GCTextMsg
  934. {
  935. optional uint32 id = 1; // request id for tracking purposes
  936. repeated bytes args = 2; // arguments of the client text message
  937. };
  938. //
  939. // k_EMsgGCCStrike15_v2_MatchEndRunRewardDrops
  940. //
  941. // Server match finished and GC should drop items for players
  942. //
  943. message CMsgGCCStrike15_v2_MatchEndRunRewardDrops
  944. {
  945. optional CMsgGCCStrike15_v2_MatchmakingServerReservationResponse serverinfo = 3; // Full server state that would have been reported in periodic reservation updates, but expedited due to match end
  946. optional CMsgGC_ServerQuestUpdateData match_end_quest_data = 4; // quest update data for players
  947. };
  948. //
  949. // Data structure holding information for item preview
  950. //
  951. message CEconItemPreviewDataBlock
  952. {
  953. message Sticker
  954. {
  955. optional uint32 slot = 1; // Slot where the sticker is applied
  956. optional uint32 sticker_id = 2; // Sticker ID
  957. optional float wear = 3; // Sticker wear
  958. optional float scale = 4; // Sticker scale
  959. optional float rotation = 5; // Sticker rotation
  960. optional uint32 tint_id = 6; // Tint ID
  961. };
  962. optional uint32 accountid = 1; // Account ID that owns the item
  963. optional uint64 itemid = 2; // Item ID
  964. optional uint32 defindex = 3; // Item definition index
  965. optional uint32 paintindex = 4; // Paint index
  966. optional uint32 rarity = 5; // Item rarity
  967. optional uint32 quality = 6; // Item quality
  968. optional uint32 paintwear = 7; // Paint wear
  969. optional uint32 paintseed = 8; // Paint seed
  970. optional uint32 killeaterscoretype = 9; // Kill eater score type
  971. optional uint32 killeatervalue = 10; // Kill eater value
  972. optional string customname = 11; // Custom name
  973. repeated Sticker stickers = 12; // Stickers applied to the weapon
  974. optional uint32 inventory = 13; // Inventory position index or flags
  975. optional uint32 origin = 14; // Origin if it is applicable for the message
  976. optional uint32 questid = 15; // Quest ID that was completed for this item
  977. optional uint32 dropreason = 16; // Reason user got this drop (used to show display icon in drop list)
  978. optional uint32 musicindex = 17; // Music kit id in schema
  979. };
  980. //
  981. // k_EMsgGCCStrike15_v2_MatchEndRewardDropsNotification
  982. //
  983. // GC dropped items for client and committed transactions successfully
  984. // notification is for the server to display item drops in end match UI
  985. //
  986. message CMsgGCCStrike15_v2_MatchEndRewardDropsNotification
  987. {
  988. optional CEconItemPreviewDataBlock iteminfo = 6; // Item that got dropped
  989. };
  990. //
  991. // k_EMsgGCItemAcknowledged
  992. //
  993. message CMsgItemAcknowledged
  994. {
  995. optional CEconItemPreviewDataBlock iteminfo = 1; // Item that got acknowledged
  996. };
  997. //
  998. // k_EMsgGCCStrike15_v2_Client2GCEconPreviewDataBlockRequest
  999. //
  1000. message CMsgGCCStrike15_v2_Client2GCEconPreviewDataBlockRequest
  1001. {
  1002. // econ item asset preview integration with Steam Community params
  1003. optional uint64 param_s = 1;
  1004. optional uint64 param_a = 2;
  1005. optional uint64 param_d = 3;
  1006. optional uint64 param_m = 4;
  1007. };
  1008. //
  1009. // k_EMsgGCCStrike15_v2_Client2GCEconPreviewDataBlockResponse
  1010. //
  1011. message CMsgGCCStrike15_v2_Client2GCEconPreviewDataBlockResponse
  1012. {
  1013. optional CEconItemPreviewDataBlock iteminfo = 1;
  1014. };
  1015. //
  1016. // k_EMsgGCCStrike15_v2_TournamentMatchRewardDropsNotification
  1017. //
  1018. // GC dropped tournament items for clients and committed transactions
  1019. // notification informs the game server about it
  1020. //
  1021. message CMsgGCCStrike15_v2_TournamentMatchRewardDropsNotification
  1022. {
  1023. optional uint64 match_id = 1; // tournament match id
  1024. optional uint32 defindex = 2; // Item definition index
  1025. repeated uint32 accountids = 3; // Account IDs that received the reward
  1026. };
  1027. //
  1028. // k_EMsgGCCStrike15_v2_MatchListRequestCurrentLiveGames
  1029. //
  1030. // Request current live games
  1031. //
  1032. message CMsgGCCStrike15_v2_MatchListRequestCurrentLiveGames
  1033. {
  1034. };
  1035. //
  1036. // k_EMsgGCCStrike15_v2_MatchListRequestLiveGameForUser
  1037. //
  1038. // Client requests live match data from another user's match
  1039. //
  1040. message CMsgGCCStrike15_v2_MatchListRequestLiveGameForUser
  1041. {
  1042. optional uint32 accountid = 1; // AccountID of the other user who is in competitive match
  1043. };
  1044. //
  1045. // k_EMsgGCCStrike15_v2_MatchListRequestRecentUserGames
  1046. //
  1047. // Request recent user games for a given user
  1048. //
  1049. message CMsgGCCStrike15_v2_MatchListRequestRecentUserGames
  1050. {
  1051. optional uint32 accountid = 1; // Account ID for whom the recent user games list is requested
  1052. };
  1053. //
  1054. // k_EMsgGCCStrike15_v2_MatchListRequestTournamentGames
  1055. //
  1056. // Request for tournament games
  1057. //
  1058. message CMsgGCCStrike15_v2_MatchListRequestTournamentGames
  1059. {
  1060. optional int32 eventid = 1; // Event ID for which the games list is being requested
  1061. };
  1062. //
  1063. // k_EMsgGCCStrike15_v2_MatchListRequestFullGameInfo
  1064. //
  1065. // Request a specific match by match identifier
  1066. //
  1067. message CMsgGCCStrike15_v2_MatchListRequestFullGameInfo
  1068. {
  1069. optional uint64 matchid = 1; // Unique Match ID
  1070. optional uint64 outcomeid = 2; // Unique Outcome ID
  1071. optional uint32 token = 3; // 16-bit validation token
  1072. };
  1073. message CDataGCCStrike15_v2_MatchInfo
  1074. {
  1075. optional uint64 matchid = 1; // Match ID
  1076. optional uint32 matchtime = 2; // Match RTime32 timestamp
  1077. optional WatchableMatchInfo watchablematchinfo = 3; // Live matches can be watched using this watchable match info
  1078. optional CMsgGCCStrike15_v2_MatchmakingServerRoundStats roundstats_legacy = 4; // Latest round stats
  1079. repeated CMsgGCCStrike15_v2_MatchmakingServerRoundStats roundstatsall = 5; // History of round stats
  1080. };
  1081. message CDataGCCStrike15_v2_TournamentGroupTeam
  1082. {
  1083. optional int32 team_id = 1; // Team ID of the team
  1084. optional int32 score = 2; // Score this team accumulated in the group
  1085. optional bool correctpick = 3; // Whether this team was the correct pick
  1086. };
  1087. message CDataGCCStrike15_v2_TournamentGroup
  1088. {
  1089. optional uint32 groupid = 1; // Group or matchup UID
  1090. optional string name = 2; // Name of the group "Group A"
  1091. optional string desc = 3; // Description of the group "Group A"
  1092. optional uint32 picks__deprecated = 4; // Number of picks allowed in this group [deprecated in favor of repeated picks field#10 Aug 2015]
  1093. repeated CDataGCCStrike15_v2_TournamentGroupTeam teams = 5; // Teams in the group or matchup
  1094. repeated int32 stage_ids = 6; // Matches that are tagged with stage_id in this list belong to this group
  1095. optional uint32 picklockuntiltime = 7; // When picks get placed they will be locked until this time (and the field indicates that picks can be placed)
  1096. optional uint32 pickableteams = 8; // Number of teams from the team list that are allowed for picks (team list can include eliminated teams)
  1097. optional uint32 points_per_pick = 9; // Number of points that players can earn per correct picks
  1098. message Picks
  1099. {
  1100. repeated int32 pickids = 1; // Correct picks
  1101. };
  1102. repeated Picks picks = 10; // Correct picks for the group
  1103. };
  1104. message CDataGCCStrike15_v2_TournamentSection
  1105. {
  1106. optional uint32 sectionid = 1; // Section UID
  1107. optional string name = 2; // Name of the section "Group Stage | A and B"
  1108. optional string desc = 3; // Description of the section "Aug 17th"
  1109. repeated CDataGCCStrike15_v2_TournamentGroup groups = 4; // Groups info here
  1110. };
  1111. message CDataGCCStrike15_v2_TournamentInfo
  1112. {
  1113. repeated CDataGCCStrike15_v2_TournamentSection sections = 1;// Sections and matchup groups/brackets of the tournament
  1114. optional TournamentEvent tournament_event = 2; // Tournament event information
  1115. repeated TournamentTeam tournament_teams = 3; // Tournament teams registered
  1116. };
  1117. //
  1118. // k_EMsgGCCStrike15_v2_MatchList
  1119. //
  1120. // Match list returned upon client request
  1121. //
  1122. message CMsgGCCStrike15_v2_MatchList
  1123. {
  1124. optional uint32 msgrequestid = 1; // Which message the client sent to trigger the match list response
  1125. optional uint32 accountid = 2; // Which account id the match list belongs to
  1126. optional uint32 servertime = 3; // Server RTime32 stamp of the match list
  1127. repeated CDataGCCStrike15_v2_MatchInfo matches = 4; // List of matches
  1128. repeated TournamentTeam streams = 5; // Streams of the container
  1129. optional CDataGCCStrike15_v2_TournamentInfo tournamentinfo = 6; // Tournament information
  1130. };
  1131. //
  1132. // k_EMsgGCCStrike15_v2_Predictions
  1133. //
  1134. // Match list predictions upon client request
  1135. //
  1136. message CMsgGCCStrike15_v2_Predictions
  1137. {
  1138. optional uint32 event_id = 1; // Event of the predictions data
  1139. message GroupMatchTeamPick
  1140. {
  1141. optional int32 sectionid = 1; // Section id
  1142. optional int32 groupid = 2; // Group id
  1143. optional int32 index = 3; // Index in the group
  1144. optional int32 teamid = 4; // Team id
  1145. optional uint64 itemid = 5; // Item ID used to place the prediction
  1146. };
  1147. repeated GroupMatchTeamPick group_match_team_picks = 2; // List of team picks
  1148. };
  1149. //
  1150. // k_EMsgGCCStrike15_v2_FantasyRequestClientData
  1151. // k_EMsgGCCStrike15_v2_FantasyUpdateClientData
  1152. //
  1153. // Fantasy data request and update
  1154. //
  1155. message CMsgGCCStrike15_v2_Fantasy
  1156. {
  1157. optional uint32 event_id = 1; // Event of the fantasy data
  1158. message FantasySlot
  1159. {
  1160. optional int32 type = 1; // What type of slot is being used
  1161. optional int32 pick = 2; // What is the pick in this slot
  1162. optional uint64 itemid = 3; // What itemid is used to make the pick
  1163. };
  1164. message FantasyTeam
  1165. {
  1166. optional int32 sectionid = 1; // Section id
  1167. repeated FantasySlot slots = 2; // Slots on this team
  1168. };
  1169. repeated FantasyTeam teams = 2; // Fantasy teams list
  1170. };
  1171. message CAttribute_String
  1172. {
  1173. optional string value = 1;
  1174. };
  1175. // k_EMsgGCToGCReloadVersions
  1176. message CMsgGCToGCReloadVersions
  1177. {
  1178. };
  1179. message CMsgCStrike15Welcome
  1180. {
  1181. // optional bool spectator_only = 1;
  1182. // optional bool allow_team_creation = 2;
  1183. // optional bool tournament_admin = 3;
  1184. // optional bool tournament_broadcaster = 4;
  1185. optional uint32 store_item_hash = 5;
  1186. optional uint32 timeplayedconsecutively = 6;
  1187. // optional bool allow_3rd_party_match_history = 7;
  1188. // optional DOTA_PartnerAccountType partner_account_type = 8;
  1189. // optional uint32 banned_word_list_word_id = 9;
  1190. optional uint32 time_first_played = 10;
  1191. // optional uint32 partner_account_state = 11;
  1192. optional uint32 last_time_played = 12;
  1193. optional uint32 last_ip_address = 13;
  1194. // optional uint32 notify_successful_report = 14;
  1195. // optional uint32 shutdownlawterminatetime = 15;
  1196. // optional uint32 banned_word_list_version = 16;
  1197. // optional bool profile_private = 17;
  1198. optional uint64 gscookieid = 18;
  1199. optional uint64 uniqueid = 19;
  1200. };
  1201. //
  1202. // k_EMsgGCCStrike15_v2_ClientVarValueNotificationInfo
  1203. //
  1204. // Client message reporting variable value information
  1205. //
  1206. message CMsgGCCStrike15_v2_ClientVarValueNotificationInfo
  1207. {
  1208. optional string value_name = 1; // Name of the value reported
  1209. optional int32 value_int = 2; // Integer value reported
  1210. optional uint32 server_addr = 3; // Server address where the client is playing
  1211. optional uint32 server_port = 4; // Server port where the client is playing
  1212. repeated string choked_blocks = 5; // Choked blocks
  1213. };
  1214. //
  1215. // k_EMsgGCCStrike15_v2_ServerVarValueNotificationInfo
  1216. //
  1217. // Server message reporting client variable value information
  1218. //
  1219. message CMsgGCCStrike15_v2_ServerVarValueNotificationInfo
  1220. {
  1221. optional uint32 accountid = 1; // AccountID reported
  1222. repeated uint32 viewangles = 2; // Viewangles observed by server (3 values = viewangles only, 6 values = viewangles + move forward/side/up)
  1223. optional uint32 type = 3;
  1224. };
  1225. //
  1226. // k_EMsgGCCStrike15_v2_GiftsLeaderboardRequest
  1227. //
  1228. // Game server is requesting gifts leaderboard
  1229. //
  1230. message CMsgGCCStrike15_v2_GiftsLeaderboardRequest
  1231. {
  1232. };
  1233. //
  1234. // k_EMsgGCCStrike15_v2_GiftsLeaderboardResponse
  1235. //
  1236. // GC is sending gifts leaderboard to game server
  1237. //
  1238. message CMsgGCCStrike15_v2_GiftsLeaderboardResponse
  1239. {
  1240. optional uint32 servertime = 1; // Timestamp when leaderboard response was generated
  1241. optional uint32 time_period_seconds = 2; // Time period coverd by leaderboard response
  1242. optional uint32 total_gifts_given = 3; // Total number of gifts given in that time period
  1243. optional uint32 total_givers = 4; // Total number of accounts who gave gifts
  1244. message GiftLeaderboardEntry
  1245. {
  1246. optional uint32 accountid = 1; // Gifter accountid
  1247. optional uint32 gifts = 2; // Number of gifts gifted
  1248. };
  1249. repeated GiftLeaderboardEntry entries = 5; // Featured leaderboard entries
  1250. };
  1251. //
  1252. // k_EMsgGCCStrike15_v2_ClientSubmitSurveyVote
  1253. //
  1254. // Client is submitting vote on an active survey
  1255. //
  1256. message CMsgGCCStrike15_v2_ClientSubmitSurveyVote
  1257. {
  1258. optional uint32 survey_id = 1; // Survey ID that the vote is submitted for
  1259. optional uint32 vote = 2; // Vote that is submitted by the client
  1260. };
  1261. //
  1262. // k_EMsgGCCStrike15_v2_Server2GCClientValidate
  1263. //
  1264. // Server requests GC to validate connecting client
  1265. //
  1266. message CMsgGCCStrike15_v2_Server2GCClientValidate
  1267. {
  1268. optional uint32 accountid = 1; // Client account id
  1269. };
  1270. //
  1271. // k_EMsgGCCStrike15_v2_Server2GCPureServerValidationFailure
  1272. //
  1273. // Server reports to GC failure to validate pure files of the client
  1274. //
  1275. message CMsgGCCStrike15_v2_Server2GCPureServerValidationFailure
  1276. {
  1277. optional uint32 accountid = 1; // AccountID
  1278. optional string path = 2; // File path
  1279. optional string file = 3; // File name
  1280. optional uint32 crc = 4; // File crc
  1281. optional int32 hash = 5; // Hash type
  1282. optional int32 len = 6; // Length
  1283. optional int32 pack_number = 7; // Pack number
  1284. optional int32 pack_file_id = 8; // Pack file ID
  1285. };
  1286. //
  1287. // k_EMsgGCCStrike15_v2_GC2ClientTournamentInfo
  1288. //
  1289. // GC informs the client about a tournament match starting
  1290. //
  1291. message CMsgGCCStrike15_v2_GC2ClientTournamentInfo
  1292. {
  1293. optional uint32 eventid = 1; // Tournament event ID
  1294. optional uint32 stageid = 2; // Stage of the event for the match
  1295. optional uint32 game_type = 3; // Game type for the match that is played
  1296. repeated uint32 teamids = 4; // Teams playing the match
  1297. };
  1298. //
  1299. // Shared Object for Coupons
  1300. //
  1301. message CSOEconCoupon
  1302. {
  1303. optional uint32 entryid = 1 [ (key_field) = true ];
  1304. optional uint32 defidx = 2;
  1305. optional fixed32 expiration_date = 3;
  1306. };
  1307. //
  1308. // Shared Object for Quests
  1309. //
  1310. message CSOQuestProgress
  1311. {
  1312. optional uint32 questid = 1 [ (key_field) = true ];
  1313. optional uint32 points_remaining = 2;
  1314. optional uint32 bonus_points = 3;
  1315. };
  1316. //
  1317. // Shared Object for Persona
  1318. //
  1319. message CSOPersonaDataPublic
  1320. {
  1321. optional int32 player_level = 1; // Player's level based on xp earned in matches
  1322. optional PlayerCommendationInfo commendation = 2; // Commendation information
  1323. optional bool elevated_state = 3; // Whether the user has elevated state (true IFF k_EGameAccountElevatedState_Elevated)
  1324. };
  1325. //
  1326. // k_EMsgGC_GlobalGame_Subscribe
  1327. //
  1328. message CMsgGC_GlobalGame_Subscribe
  1329. {
  1330. // Client > GC: request to subscribe to global game and get a ticket to play
  1331. // GC > Client: informs the client of the ticket that will be used to play
  1332. optional uint64 ticket = 1;
  1333. };
  1334. //
  1335. // k_EMsgGC_GlobalGame_Unsubscribe
  1336. //
  1337. message CMsgGC_GlobalGame_Unsubscribe
  1338. {
  1339. // Client > GC: unsubscribe from global game
  1340. // GC > Client: unsubscribe, and if seconds remaining is set then client has to wait
  1341. optional int32 timeleft = 1;
  1342. };
  1343. //
  1344. // k_EMsgGC_GlobalGame_Play
  1345. //
  1346. message CMsgGC_GlobalGame_Play
  1347. {
  1348. // Client > GC: take an action in the global game
  1349. // GC > Client: informs the client that the action was registered
  1350. optional uint64 ticket = 1;
  1351. optional uint32 gametimems = 2; // how much game time milliseconds elapsed since rollover
  1352. optional uint32 msperpoint = 3; // how many milliseconds each point is worth
  1353. };
  1354. //
  1355. // k_EMsgGCCStrike15_v2_AcknowledgePenalty
  1356. //
  1357. // Acknowledges that the user had a cooldown penalty in the past.
  1358. //
  1359. message CMsgGCCStrike15_v2_AcknowledgePenalty
  1360. {
  1361. optional int32 acknowledged = 1; // Flag indicating user acknowledges penalty
  1362. };
  1363. //
  1364. // k_EMsgGCCStrike15_v2_Client2GCRequestPrestigeCoin
  1365. //
  1366. // Client wants to trade max level status for current prestige coin
  1367. //
  1368. message CMsgGCCStrike15_v2_Client2GCRequestPrestigeCoin
  1369. {
  1370. };
  1371. //
  1372. // k_EMsgGCCStrike15_v2_Client2GCStreamUnlock
  1373. //
  1374. // Client requests GC to unlock streaming codec that is currently unavailable
  1375. //
  1376. message CMsgGCCStrike15_v2_Client2GCStreamUnlock
  1377. {
  1378. optional uint64 ticket = 1; // client ticket to prevent accidental streaming unlock
  1379. optional int32 os = 2; // OS type of the client
  1380. };
  1381. //
  1382. // k_EMsgGCCStrike15_v2_ClientToGCRequestElevate
  1383. //
  1384. // Client wants to request premium matchmaking status
  1385. //
  1386. message CMsgGCCStrike15_v2_ClientToGCRequestElevate
  1387. {
  1388. optional uint32 stage = 1;
  1389. };
  1390. //
  1391. // k_EMsgGCCStrike15_v2_GlobalChat
  1392. // k_EMsgGCCStrike15_v2_GlobalChat_Subscribe
  1393. // k_EMsgGCCStrike15_v2_GlobalChat_Unsubscribe
  1394. //
  1395. // Client informs the GC about valid matchid and chat fragments
  1396. //
  1397. message CMsgGCCStrike15_v2_ClientToGCChat
  1398. {
  1399. optional uint64 match_id = 1; // Match ID that client is spectating or zero to unsubscribe
  1400. optional string text = 2; // Client's text if they want to say something
  1401. };
  1402. //
  1403. // k_EMsgGCCStrike15_v2_GlobalChat
  1404. //
  1405. // Client informs the GC about valid matchid and chat fragments
  1406. //
  1407. message CMsgGCCStrike15_v2_GCToClientChat
  1408. {
  1409. optional uint32 account_id = 1; // Account ID of the sender
  1410. optional string text = 2; // Client's text if they want to say something
  1411. };
  1412. //
  1413. // k_EMsgGCCStrike15_v2_ClientAuthKeyCode
  1414. //
  1415. // Client requests GC to generate a
  1416. //
  1417. message CMsgGCCStrike15_v2_ClientAuthKeyCode
  1418. {
  1419. optional uint32 eventid = 1; // Which event category auth key code is being generated for (0 for all)
  1420. optional string code = 2; // Actual code or a special character: '?' = query, '-' = remove, '+' = create
  1421. };
  1422. //
  1423. // k_EMsgGCCStrike15_v2_GotvSyncPacket
  1424. //
  1425. // server>GC: update sync tick;
  1426. // client>GC: asking for sync tick;
  1427. // GC>client: responding with sync tick
  1428. //
  1429. message CMsgGCCStrike15_GotvSyncPacket
  1430. {
  1431. optional CEngineGotvSyncPacket data = 1; // Data
  1432. };
  1433. //
  1434. // k_EMsgGCCStrike15_v2_ClientPlayerDecalSign
  1435. //
  1436. // Client requests GC to generate a digital signature for their spray decal charge
  1437. //
  1438. message PlayerDecalDigitalSignature
  1439. {
  1440. optional bytes signature = 1;
  1441. optional uint32 accountid = 2;
  1442. optional uint32 rtime = 3;
  1443. repeated float endpos = 4;
  1444. repeated float startpos = 5;
  1445. repeated float right = 6;
  1446. optional uint32 tx_defidx = 7;
  1447. optional int32 entindex = 8;
  1448. optional uint32 hitbox = 9;
  1449. optional float creationtime = 10;
  1450. optional uint32 equipslot = 11;
  1451. optional uint32 trace_id = 12;
  1452. repeated float normal = 13;
  1453. optional uint32 tint_id = 14;
  1454. };
  1455. message CMsgGCCStrike15_v2_ClientPlayerDecalSign
  1456. {
  1457. optional PlayerDecalDigitalSignature data = 1;
  1458. optional uint64 itemid = 2;
  1459. };
  1460. //
  1461. // k_EMsgGCCStrike15_v2_ClientLogonFatalError
  1462. //
  1463. message CMsgGCCStrike15_v2_ClientLogonFatalError
  1464. {
  1465. optional uint32 errorcode = 1; // error code
  1466. optional string message = 2; // message
  1467. };
  1468. //
  1469. // k_EMsgGCCStrike15_v2_ClientPollState
  1470. //
  1471. message CMsgGCCStrike15_v2_ClientPollState
  1472. {
  1473. optional uint32 pollid = 1; // poll id
  1474. repeated string names = 2; // poll names for cvars
  1475. repeated int32 values = 3; // poll scale (when 0 is int value, otherwise factor for bucketing floats, e.g. 1000 will multiply client float value by 1000 and return it as int for bucketing)
  1476. };
  1477. //
  1478. // k_EMsgGCCStrike15_v2_Party_Register = 9189; // GC <-> client: register the party metadata
  1479. // k_EMsgGCCStrike15_v2_Party_Unregister = 9190; // GC <-> client: unregister the party metadata
  1480. //
  1481. message CMsgGCCStrike15_v2_Party_Register
  1482. {
  1483. optional uint32 id = 1; // SteamID of the Lobby
  1484. optional uint32 ver = 2; // Version of the game
  1485. optional uint32 apr = 3; // Prime setting
  1486. optional uint32 ark = 4; // Rank setting
  1487. optional uint32 nby = 5; // Nearby advertisement
  1488. optional uint32 grp = 6; // AccountID_t of Steam Group advertisement
  1489. optional uint32 slots = 7; // Number of available slots
  1490. optional uint32 launcher = 8; // Launcher used by the party
  1491. };
  1492. //
  1493. // k_EMsgGCCStrike15_v2_Party_Search = 9191; // GC <-> client: search the party metadata
  1494. //
  1495. message CMsgGCCStrike15_v2_Party_Search
  1496. {
  1497. optional uint32 ver = 1; // Version of the game
  1498. optional uint32 apr = 2; // Prime setting
  1499. optional uint32 ark = 3; // Rank setting
  1500. repeated uint32 grps = 4; // Clan AccountID_t of Steam Groups that should match
  1501. optional uint32 launcher = 5; // Launcher used by the search
  1502. };
  1503. message CMsgGCCStrike15_v2_Party_SearchResults
  1504. {
  1505. message Entry
  1506. {
  1507. optional uint32 id = 1; // SteamID of the lobby
  1508. optional uint32 grp = 2; // Clan AccountID how this lobby was found (not set for nearby)
  1509. };
  1510. repeated Entry entries = 1; // Lobbies discovered
  1511. };
  1512. //
  1513. // k_EMsgGCCStrike15_v2_Party_Invite = 9192; // GC -> client: you have been invited to this party
  1514. //
  1515. message CMsgGCCStrike15_v2_Party_Invite
  1516. {
  1517. optional uint32 accountid = 1; // Inviting user
  1518. optional uint32 lobbyid = 2; // SteamID of the lobby
  1519. };
  1520. //
  1521. // k_EMsgGCCStrike15_v2_Account_RequestCoPlays
  1522. //
  1523. message CMsgGCCStrike15_v2_Account_RequestCoPlays
  1524. {
  1525. message Player
  1526. {
  1527. optional uint32 accountid = 1; // AccountID of a teammate
  1528. optional uint32 rtcoplay = 2; // RTime32 of most recent co-play experience
  1529. optional bool online = 3; // Whether account is currently online
  1530. };
  1531. repeated Player players = 1; // list of recent players
  1532. optional uint32 servertime = 2; // Server RTime32 stamp of the response
  1533. };
  1534. //
  1535. // k_EMsgGCCStrike15_v2_ClientToGCRequestTicket
  1536. //
  1537. message CMsgGCCStrike15_v2_ClientToGCRequestTicket
  1538. {
  1539. optional fixed64 authorized_steam_id = 1; // Client that is being authorized to communicate
  1540. optional fixed32 authorized_public_ip = 2; // They are allowed to talk on which public IP? (This is necessary to prevent ticket sharing.)
  1541. optional fixed64 gameserver_steam_id = 3; // Gameserver they are authorized to talk to
  1542. optional fixed64 gameserver_net_id = 4; // Network-routable ID of the gameserver
  1543. };