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.

925 lines
27 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 TF GC and TF 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 save 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. // Messages
  35. enum EGCBaseMsg
  36. {
  37. k_EMsgGCSystemMessage = 4001; // broadcast announcements from the GC
  38. k_EMsgGCReplicateConVars = 4002; // GC => client
  39. k_EMsgGCConVarUpdated = 4003; // GC => client
  40. k_EMsgGCInQueue = 4008; // GC => client
  41. // !GROSS! These have ben moved to gcsystemmsgs.proto. But I didn't reassign their number
  42. //k_EMsgGCClientWelcome = 4004; // GC => client
  43. //k_EMsgGCServerWelcome = 4005; // GC => server
  44. //k_EMsgGCClientHello = 4006; // client => GC
  45. //k_EMsgGCServerHello = 4007; // server => GC
  46. //k_EMsgGCClientConnectionStatus = 4009; // GC => client
  47. //k_EMsgGCServerConnectionStatus = 4010; // GC => server
  48. // Matchmaking messages
  49. k_EMsgGCInviteToParty = 4501; // inviting another player to your party
  50. k_EMsgGCInvitationCreated = 4502; // sent from GC to sender
  51. k_EMsgGCPartyInviteResponse = 4503; // client accepting a party invite
  52. k_EMsgGCKickFromParty = 4504; // sent from party leader to GC to kick a player from the party
  53. k_EMsgGCLeaveParty = 4505; // sent from party member to GC to leave a party
  54. k_EMsgGCServerAvailable = 4506; // send from a dedicated server when its ready
  55. k_EMsgGCClientConnectToServer = 4507; // sent to a client to connect to a server
  56. k_EMsgGCGameServerInfo = 4508; // send from a dedicated server for server address information
  57. k_EMsgGCError = 4509; // sent from GC to client telling client about an error
  58. k_EMsgGCReplay_UploadedToYouTube = 4510; // client => GC
  59. k_EMsgGCLANServerAvailable = 4511; // send from a listen server when its ready
  60. };
  61. //enum EGCSharedMsg = 7001-7006
  62. enum EGCBaseProtoObjectTypes
  63. {
  64. k_EProtoObjectPartyInvite = 1001;
  65. k_EProtoObjectLobbyInvite = 1002;
  66. };
  67. // Econ
  68. message CGCStorePurchaseInit_LineItem
  69. {
  70. optional uint32 item_def_id = 1; // DefIndex of the item to purchase
  71. optional uint32 quantity = 2; // quantity to purchase
  72. optional uint32 cost_in_local_currency = 3; // cost in cents of the local currency the user thinks he should pay (if you change this update item_price_t!)
  73. optional uint32 purchase_type = 4; // is this a regular purchase? a rental? maps to ECartItemType
  74. };
  75. // k_EMsgGCStorePurchaseInit
  76. message CMsgGCStorePurchaseInit
  77. {
  78. optional string country = 1; // Country the purchase is being made from (obtained from Steam)
  79. optional int32 language = 2; // Client's language
  80. optional int32 currency = 3; // Currency the purchase is in (obtained from Steam)
  81. repeated CGCStorePurchaseInit_LineItem line_items = 4;
  82. };
  83. // k_EMsgGCStorePurchaseInitResponse
  84. message CMsgGCStorePurchaseInitResponse
  85. {
  86. optional int32 result = 1; // Result of the operation
  87. optional uint64 txn_id = 2; // Transaction ID of the new transaction
  88. optional string url = 3; // URL that the client will open to follow up
  89. repeated uint64 item_ids = 4; // ItemIDs for immediately finalized txn
  90. };
  91. // Shared objects
  92. //
  93. // CSOPartyInvite - sent from the GC to possible new party member
  94. //
  95. message CSOPartyInvite
  96. {
  97. optional uint64 group_id = 1 [ (key_field) = true ];
  98. optional fixed64 sender_id = 2;
  99. optional string sender_name = 3;
  100. };
  101. // Sent from the GC to possible new lobby member
  102. //
  103. message CSOLobbyInvite
  104. {
  105. optional uint64 group_id = 1 [ (key_field) = true ];
  106. optional fixed64 sender_id = 2;
  107. optional string sender_name = 3;
  108. // TODO: Game mode, etc.
  109. };
  110. //
  111. // CMsgSystemBroadcast
  112. //
  113. message CMsgSystemBroadcast
  114. {
  115. optional string message = 1; // the message to display on the client
  116. };
  117. //
  118. // CMsgInviteToParty - sent from party leader to the GC
  119. //
  120. message CMsgInviteToParty
  121. {
  122. optional fixed64 steam_id = 1;
  123. optional uint32 client_version = 2;
  124. optional uint32 team_invite = 3;
  125. };
  126. //
  127. // CMsgInvitationCreated - sent from GC to the party leader
  128. //
  129. message CMsgInvitationCreated
  130. {
  131. optional uint64 group_id = 1;
  132. optional fixed64 steam_id = 2;
  133. };
  134. //
  135. // CMsgPartyInviteResponse - sent from client to GC when accepting/rejecting a CMsgPartyInvite
  136. //
  137. message CMsgPartyInviteResponse
  138. {
  139. optional uint64 party_id = 1;
  140. optional bool accept = 2;
  141. optional uint32 client_version = 3;
  142. optional uint32 team_invite = 4;
  143. };
  144. //
  145. // CMsgKickFromParty - sent from party leader to the GC
  146. //
  147. message CMsgKickFromParty
  148. {
  149. optional fixed64 steam_id = 1;
  150. };
  151. //
  152. // CMsgLeaveParty - sent from party member to the GC
  153. //
  154. message CMsgLeaveParty
  155. {
  156. };
  157. //
  158. // CMsgServerAvailable - send from a dedicated server to the GC to indicate availability
  159. //
  160. message CMsgServerAvailable
  161. {
  162. };
  163. //
  164. // CMsgLANServerAvailable - send from a listen server to the GC to indicate availability
  165. //
  166. message CMsgLANServerAvailable
  167. {
  168. optional fixed64 lobby_id = 1;
  169. };
  170. //
  171. // Used by CEconGameAccountClient
  172. //
  173. message CSOEconGameAccountClient
  174. {
  175. optional uint32 additional_backpack_slots = 1 [ default = 0 ]; // the number of backpack slots this user has on top of DEFAULT_NUM_BACKPACK_SLOTS
  176. // optional bool trial_account = 2 [ default = false ];
  177. // optional bool eligible_for_online_play = 3 [ default = true ];
  178. // optional bool need_to_choose_most_helpful_friend = 4;
  179. // optional bool in_coaches_list = 5;
  180. // optional fixed32 trade_ban_expiration = 6;
  181. // optional fixed32 duel_ban_expiration = 7;
  182. // optional uint32 preview_item_def = 8 [ default = 0 ];
  183. // optional bool made_first_purchase = 9 [ default = false ];
  184. // optional bool eligible_for_community_market = 10;
  185. // optional uint32 mission_refuse_allowed = 11;
  186. optional fixed32 bonus_xp_timestamp_refresh = 12;
  187. optional uint32 bonus_xp_usedflags = 13;
  188. optional uint32 elevated_state = 14; // represents the state up to <= k_EGameAccountElevatedState_Elevated
  189. optional uint32 elevated_timestamp = 15; // when applicable is the timestamp (e.g. elevation cooldown expiry, or time when became elevated, etc.)
  190. };
  191. //
  192. // Used by CEconCraftingRecipe
  193. //
  194. message CSOItemCriteriaCondition
  195. {
  196. optional int32 op = 1;
  197. optional string field = 2;
  198. optional bool required = 3;
  199. optional float float_value = 4;
  200. optional string string_value = 5;
  201. }
  202. message CSOItemCriteria
  203. {
  204. optional uint32 item_level = 1;
  205. optional int32 item_quality = 2;
  206. optional bool item_level_set = 3;
  207. optional bool item_quality_set = 4;
  208. optional uint32 initial_inventory = 5;
  209. optional uint32 initial_quantity = 6;
  210. // optional bool forced_quality_match__DEPRECATED = 7;
  211. optional bool ignore_enabled_flag = 8;
  212. repeated CSOItemCriteriaCondition conditions = 9;
  213. optional int32 item_rarity = 10;
  214. optional bool item_rarity_set = 11;
  215. optional bool recent_only = 12;
  216. };
  217. message CSOItemRecipe
  218. {
  219. optional uint32 def_index = 1;
  220. optional string name = 2;
  221. optional string n_a = 3;
  222. optional string desc_inputs = 4;
  223. optional string desc_outputs = 5;
  224. optional string di_a = 6;
  225. optional string di_b = 7;
  226. optional string di_c = 8;
  227. optional string do_a = 9;
  228. optional string do_b = 10;
  229. optional string do_c = 11;
  230. optional bool requires_all_same_class = 12;
  231. optional bool requires_all_same_slot = 13;
  232. optional int32 class_usage_for_output = 14;
  233. optional int32 slot_usage_for_output = 15;
  234. optional int32 set_for_output = 16;
  235. repeated CSOItemCriteria input_items_criteria = 20;
  236. repeated CSOItemCriteria output_items_criteria = 21;
  237. repeated uint32 input_item_dupe_counts = 22;
  238. };
  239. //
  240. // k_EMsgGCDev_NewItemRequest
  241. //
  242. message CMsgDevNewItemRequest
  243. {
  244. //using fixed64 since steamids have lots of entropy in their bits
  245. optional fixed64 receiver = 1;
  246. optional CSOItemCriteria criteria = 2;
  247. };
  248. //
  249. // k_EMsgGCIncrementKillCountAttribute
  250. //
  251. message CMsgIncrementKillCountAttribute
  252. {
  253. optional fixed32 killer_account_id = 1;
  254. optional fixed32 victim_account_id = 2;
  255. optional uint64 item_id = 3;
  256. optional uint32 event_type = 4;
  257. optional uint32 amount = 5;
  258. };
  259. //
  260. // k_EMsgGCApplySticker
  261. //
  262. message CMsgApplySticker
  263. {
  264. optional uint64 sticker_item_id = 1; // which sticker are attaching?
  265. optional uint64 item_item_id = 2; // what item are we sticking it on to?
  266. optional uint32 sticker_slot = 3; // which sticker slot are we modifying? When attaching a sticker replace slot, when 0-sticker just applies wear.
  267. optional uint32 baseitem_defidx = 4; // If not sticking it on existing item support sticking it on base item
  268. optional float sticker_wear = 5; // when applying sticker wear this field specifies current wear as seen by client (to prevent double-scraping in case message reaches GC multiple times)
  269. };
  270. //
  271. // k_EMsgGStatTrakSwap
  272. //
  273. message CMsgApplyStatTrakSwap
  274. {
  275. optional uint64 tool_item_id = 1; // item id of the xfer tool
  276. optional uint64 item_1_item_id = 2;
  277. optional uint64 item_2_item_id = 3;
  278. };
  279. //
  280. // k_EMsgGCApplyStrangePart
  281. //
  282. message CMsgApplyStrangePart
  283. {
  284. optional uint64 strange_part_item_id = 1; // which part are we "inserting"?
  285. optional uint64 item_item_id = 2; // what strange item are we inserting this new part into?
  286. };
  287. //
  288. // k_EMsgGCApplyPennantUpgrade
  289. //
  290. message CMsgApplyPennantUpgrade
  291. {
  292. optional uint64 upgrade_item_id = 1; // pennant upgrade
  293. optional uint64 pennant_item_id = 2; // what pennant are we upgrading?
  294. };
  295. //
  296. // k_EMsgGCApplyEggEssence
  297. //
  298. message CMsgApplyEggEssence
  299. {
  300. optional uint64 essence_item_id = 1; // essence we are using
  301. optional uint64 egg_item_id = 2; // egg target
  302. };
  303. //
  304. // Used by CEconItem
  305. //
  306. message CSOEconItemAttribute
  307. {
  308. optional uint32 def_index = 1;
  309. optional uint32 value = 2; // DEPRECATED -- see value_bytes
  310. optional bytes value_bytes = 3;
  311. }
  312. message CSOEconItemEquipped
  313. {
  314. optional uint32 new_class = 1;
  315. optional uint32 new_slot = 2;
  316. }
  317. message CSOEconItem
  318. {
  319. optional uint64 id = 1;
  320. optional uint32 account_id = 2;
  321. optional uint32 inventory = 3;
  322. optional uint32 def_index = 4;
  323. optional uint32 quantity = 5; // [ default = 1 ]; - Uncomment after 5/16 the client/server will have backwards compat with this change by that point
  324. optional uint32 level = 6; // [ default = 1 ]; - Uncomment after 5/16 the client/server will have backwards compat with this change by that point
  325. optional uint32 quality = 7;
  326. optional uint32 flags = 8 [ default = 0 ];
  327. optional uint32 origin = 9;
  328. optional string custom_name = 10;
  329. optional string custom_desc = 11;
  330. repeated CSOEconItemAttribute attribute = 12;
  331. optional CSOEconItem interior_item = 13;
  332. optional bool in_use = 14 [ default = false ];
  333. optional uint32 style = 15 [default = 0 ];
  334. optional uint64 original_id = 16 [ default = 0 ];
  335. // optional bool contains_equipped_state = 17;
  336. repeated CSOEconItemEquipped equipped_state = 18;
  337. optional uint32 rarity = 19;
  338. }
  339. //
  340. // k_EMsgGCAdjustItemEquippedState
  341. //
  342. message CMsgAdjustItemEquippedState
  343. {
  344. optional uint64 item_id = 1;
  345. optional uint32 new_class = 2;
  346. optional uint32 new_slot = 3; // will be -1 if not equipped on this class any longer
  347. optional bool swap = 4;
  348. }
  349. //
  350. // k_EMsgGCSortItems
  351. //
  352. message CMsgSortItems
  353. {
  354. optional uint32 sort_type = 1;
  355. }
  356. //
  357. // Used by CEconClaimCode
  358. //
  359. message CSOEconClaimCode
  360. {
  361. optional uint32 account_id = 1;
  362. optional uint32 code_type = 2;
  363. optional uint32 time_acquired = 3;
  364. optional string code = 4;
  365. }
  366. //
  367. // k_EMsgGCStoreGetUserData
  368. //
  369. message CMsgStoreGetUserData
  370. {
  371. optional fixed32 price_sheet_version = 1;
  372. optional int32 currency = 2; // Currency that the user is requesting for pricesheet (pre-negotiated during welcome)
  373. // 14-November-2014: for backwards compatibility with older clients only new clients request user data with currency,
  374. // the new clients don't expect to get response as a reply to msg, but rather want a multiplexed standalone pricesheet.
  375. // old clients still want a reply to msg.
  376. }
  377. //
  378. // k_EMsgGCStoreGetUserDataResponse
  379. //
  380. message CMsgStoreGetUserDataResponse
  381. {
  382. optional int32 result = 1; // Result of the call
  383. // 14-Nov-2014: pricesheet response is now multiplexed, no personal data included
  384. optional int32 currency_deprecated = 2; // Currency to display to the user
  385. optional string country_deprecated = 3; // Country the purchase is being made from (Send back in k_EMsgGCStorePurchaseInit)
  386. optional fixed32 price_sheet_version = 4; // Version of the current price sheet on the GC
  387. // experiments
  388. // 14-Nov-2014: pricesheet response is now multiplexed, no personal data included
  389. // optional uint64 experiment_data = 5 [ default = 0 ]; // top 32 bits = experiment id, bottom 32 bits = experiment group number
  390. // optional int32 featured_item_idx = 6;
  391. // optional bool show_hat_descriptions = 7 [ default = true ];
  392. // Serialized KV representing the price sheet menu
  393. optional bytes price_sheet = 8;
  394. // optional int32 default_item_sort = 9 [ default = 0 ];
  395. // popular items by def
  396. // repeated uint32 popular_items = 10;
  397. };
  398. //
  399. // k_EMsgGCUpdateItemSchema
  400. //
  401. message CMsgUpdateItemSchema
  402. {
  403. optional bytes items_game = 1; // actual contents of items_game.txt (only used on dev)
  404. optional fixed32 item_schema_version = 2; // Version of the items_game.txt we're using
  405. optional string items_game_url_DEPRECATED2013 = 3; // HTTP URL where they can use to fetch the one we're using, if theirs is out of date and we don't send the contents (deprecated in January 2014, new schema format, actual URL in field#4 now)
  406. optional string items_game_url = 4; // HTTP URL where they can use to fetch the one we're using, if theirs is out of date and we don't send the contents (rev'd to 4 for new schema format to not explode old clients/servers)
  407. };
  408. // sent from the GC to a client telling him about a GC error
  409. message CMsgGCError
  410. {
  411. optional string error_text = 1;
  412. };
  413. //
  414. // k_EMsgGCRequestInventoryRefresh
  415. //
  416. message CMsgRequestInventoryRefresh
  417. {
  418. };
  419. //
  420. // k_EMsgGCConvarUpdated
  421. //
  422. message CMsgConVarValue
  423. {
  424. optional string name = 1;
  425. optional string value = 2;
  426. };
  427. //
  428. // k_EMsgGCReplicateConVars
  429. //
  430. message CMsgReplicateConVars
  431. {
  432. repeated CMsgConVarValue convars = 1;
  433. };
  434. //
  435. // k_EMsgGCUseItemRequest
  436. //
  437. message CMsgUseItem
  438. {
  439. optional uint64 item_id = 1;
  440. optional fixed64 target_steam_id = 2; // 64-bit field left over from original message
  441. repeated uint32 gift__potential_targets = 3;
  442. optional uint32 duel__class_lock = 4;
  443. optional fixed64 initiator_steam_id = 5;
  444. };
  445. //
  446. // k_EMsgGCReplay_UploadedToYouTube
  447. //
  448. message CMsgReplayUploadedToYouTube
  449. {
  450. optional string youtube_url = 1;
  451. optional string youtube_account_name = 2;
  452. optional uint64 session_id = 3;
  453. };
  454. //
  455. // k_EMsgGCConsumableExhausted
  456. //
  457. message CMsgConsumableExhausted
  458. {
  459. optional int32 item_def_id = 1;
  460. };
  461. //
  462. // k_EMsgGCItemAcknowledged__DEPRECATED
  463. //
  464. message CMsgItemAcknowledged__DEPRECATED
  465. {
  466. optional uint32 account_id = 1;
  467. optional uint32 inventory = 2;
  468. optional uint32 def_index = 3;
  469. optional uint32 quality = 4;
  470. optional uint32 rarity = 5;
  471. optional uint32 origin = 6;
  472. optional uint64 item_id = 7;
  473. };
  474. //
  475. // OBSOLETE: CMsgSetPresetItemPosition
  476. //
  477. // message CMsgSetPresetItemPosition
  478. // {
  479. // optional uint32 class_id = 1;
  480. // optional uint32 preset_id = 2;
  481. // optional uint32 slot_id = 3;
  482. // optional uint64 item_id = 4;
  483. // };
  484. //
  485. // CMsgSetItemPositions
  486. //
  487. message CMsgSetItemPositions
  488. {
  489. message ItemPosition
  490. {
  491. optional uint32 legacy_item_id = 1;
  492. optional uint32 position = 2;
  493. optional uint64 item_id = 3;
  494. }
  495. repeated ItemPosition item_positions = 1;
  496. };
  497. //
  498. // OBSOLETE: CSOEconItemPresetInstance - The preset, class and slot ID's are all marked key fields, so that those
  499. // fields will always be networked down to clients, even if only the item ID is modified. This is so that
  500. // when CSharedObjectTypeCache::BUpdateFromMsg() calls its FindSharedObject(), it will have the necessary
  501. // key data for CEconItemPresetInstance::BIsKeyLess() to be able to function. Without these, FindSharedObject()
  502. // fails and no object is updated.
  503. //
  504. // message CSOEconItemPresetInstance
  505. // {
  506. // // optional uint32 account_id = 1; // NOTE: Never use id '1' again - but we don't need to transmit the account id here
  507. // optional uint32 class_id = 2 [ (key_field) = true ];
  508. // optional uint32 preset_id = 3 [ (key_field) = true ];
  509. // optional uint32 slot_id = 4 [ (key_field) = true ];
  510. // optional uint64 item_id = 5;
  511. // };
  512. //
  513. // OBSOLETE: CMsgSelectItemPresetForClass
  514. //
  515. // message CMsgSelectItemPresetForClass
  516. // {
  517. // optional uint32 class_id = 1;
  518. // optional uint32 preset_id = 2;
  519. // };
  520. //
  521. // OBSOLETE: CMsgSelectItemPresetForClassReply
  522. //
  523. // message CMsgSelectItemPresetForClassReply
  524. // {
  525. // optional bool success = 1;
  526. // };
  527. //
  528. // OBSOLETE: CSOSelectedItemPreset
  529. //
  530. // message CSOSelectedItemPreset
  531. // {
  532. // optional uint32 account_id = 1 [ (key_field) = true ];
  533. // optional uint32 class_id = 2 [ (key_field) = true ];
  534. // optional uint32 preset_id = 3;
  535. // };
  536. //
  537. // k_EMsgGC_ReportAbuse
  538. //
  539. message CMsgGCReportAbuse
  540. {
  541. optional fixed64 target_steam_id = 1; // who is the user accusing?
  542. optional string description = 4; // in the user's own words
  543. optional uint64 gid = 5; // meaning depends on content type
  544. // If accusing a player:
  545. optional uint32 abuse_type = 2; // EAbuseReportType
  546. optional uint32 content_type = 3; // ECommunityContentType
  547. // If accusing a game server:
  548. optional fixed32 target_game_server_ip = 6;
  549. optional uint32 target_game_server_port = 7;
  550. };
  551. //
  552. // k_EMsgGC_ReportAbuseResponse
  553. //
  554. message CMsgGCReportAbuseResponse
  555. {
  556. optional fixed64 target_steam_id = 1; // target to which this reply is in reference
  557. optional uint32 result = 2; // EResult
  558. optional string error_message = 3; // Diagnostic error message (not localized, for debugging purposes only)
  559. };
  560. //
  561. // k_EMsgGCNameItemNotification
  562. //
  563. message CMsgGCNameItemNotification
  564. {
  565. optional fixed64 player_steamid = 1;
  566. optional uint32 item_def_index = 2;
  567. optional string item_name_custom = 3;
  568. };
  569. //
  570. // k_EMsgGCClientDisplayNotification
  571. //
  572. message CMsgGCClientDisplayNotification
  573. {
  574. optional string notification_title_localization_key = 1;
  575. optional string notification_body_localization_key = 2;
  576. repeated string body_substring_keys = 3;
  577. repeated string body_substring_values = 4;
  578. };
  579. //
  580. // k_EMsgGCShowItemsPickedUp
  581. //
  582. message CMsgGCShowItemsPickedUp
  583. {
  584. optional fixed64 player_steamid = 1;
  585. };
  586. //
  587. // k_EMsgGCIncrementKillCountResponse
  588. //
  589. message CMsgGCIncrementKillCountResponse // was CMsgTFIncrementKillCountResponse
  590. {
  591. optional uint32 killer_account_id = 1 [ (key_field) = true ]; // name of the user who got the kill
  592. optional uint32 num_kills = 2; // number of kills (or: ubers released; or gifts given out; etc.)
  593. optional uint32 item_def = 3; // id of the item in question
  594. optional uint32 level_type = 4; // what sort of rank is this? (ie., kills, gifts, etc.) used for looking up strings
  595. };
  596. message CSOEconItemDropRateBonus
  597. {
  598. optional uint32 account_id = 1;
  599. optional fixed32 expiration_date = 2;
  600. optional float bonus = 3;
  601. optional uint32 bonus_count = 4;
  602. optional uint64 item_id = 5;
  603. optional uint32 def_index = 6;
  604. };
  605. message CSOEconItemLeagueViewPass
  606. {
  607. optional uint32 account_id = 1 [ (key_field) = true ];
  608. optional uint32 league_id = 2 [ (key_field) = true ];
  609. optional uint32 admin = 3;
  610. optional uint32 itemindex = 4;
  611. };
  612. message CSOEconItemEventTicket
  613. {
  614. optional uint32 account_id = 1;
  615. optional uint32 event_id = 2;
  616. optional uint64 item_id = 3;
  617. };
  618. //
  619. // k_EMsgGCItemPreviewItemBoughtNotification
  620. //
  621. message CMsgGCItemPreviewItemBoughtNotification
  622. {
  623. optional uint32 item_def_index = 1;
  624. };
  625. //
  626. // k_EMsgGCStorePurchaseCancel
  627. //
  628. message CMsgGCStorePurchaseCancel
  629. {
  630. optional uint64 txn_id = 1; // Transaction ID for the the transaction
  631. };
  632. //
  633. // k_EMsgGCStorePurchaseCancelResponse
  634. //
  635. message CMsgGCStorePurchaseCancelResponse
  636. {
  637. optional uint32 result = 1; // Result of the operation
  638. };
  639. //
  640. // k_EMsgGCStorePurchaseFinalize
  641. //
  642. message CMsgGCStorePurchaseFinalize
  643. {
  644. optional uint64 txn_id = 1; // Transaction ID for the the transaction
  645. };
  646. //
  647. // k_EMsgGCStorePurchaseFinalizeResponse
  648. //
  649. message CMsgGCStorePurchaseFinalizeResponse
  650. {
  651. optional uint32 result = 1; // Result of the operation
  652. repeated uint64 item_ids = 2; // If successful, list of uint64's that represent the purchased items
  653. };
  654. // k_EMsgGCBannedWordListRequest
  655. message CMsgGCBannedWordListRequest
  656. {
  657. optional uint32 ban_list_group_id = 1; // The group code to request the word list from (English, Chinese, etc)
  658. optional uint32 word_id = 2; // The most recent word ID that we want to request (the response will include this ID if present)
  659. };
  660. // k_EMsgGCRequestAnnouncements
  661. message CMsgGCRequestAnnouncements
  662. {
  663. };
  664. // k_EMsgGCRequestAnnouncementsResponse
  665. message CMsgGCRequestAnnouncementsResponse
  666. {
  667. optional string announcement_title = 1; // title of the announcement
  668. optional string announcement = 2; // announcement
  669. optional string nextmatch_title = 3; // nextmatch title
  670. optional string nextmatch = 4; // nextmatch
  671. };
  672. enum GC_BannedWordType
  673. {
  674. GC_BANNED_WORD_DISABLE_WORD = 0; // This word is disabled. It may be followed by an enable later
  675. GC_BANNED_WORD_ENABLE_WORD = 1; // This word is enabled
  676. };
  677. message CMsgGCBannedWord
  678. {
  679. optional uint32 word_id = 1; // The ID of this word
  680. optional GC_BannedWordType word_type = 2; // Enable, disable, or what
  681. optional string word = 3; // The actual text of the word
  682. };
  683. // k_EMsgGCBannedWordListResponse
  684. message CMsgGCBannedWordListResponse
  685. {
  686. optional uint32 ban_list_group_id = 1; // The ban list group code to request the word list from (English, Chinese, etc)
  687. repeated CMsgGCBannedWord word_list = 2; // The list of banned word updates relevant for this group
  688. };
  689. // k_EMsgGCToGCBannedWordListBroadcast
  690. message CMsgGCToGCBannedWordListBroadcast
  691. {
  692. optional CMsgGCBannedWordListResponse broadcast = 1; // The banned word message to broadcast
  693. };
  694. // k_EMsgGCToGCBannedWordListUpdated
  695. message CMsgGCToGCBannedWordListUpdated
  696. {
  697. optional uint32 group_id = 1; // The id of the group that has been updated
  698. };
  699. message CSOEconDefaultEquippedDefinitionInstanceClient
  700. {
  701. optional uint32 account_id = 1 [ (key_field) = true ];
  702. optional uint32 item_definition = 2;
  703. optional uint32 class_id = 3 [ (key_field) = true ];
  704. optional uint32 slot_id = 4 [ (key_field) = true ];
  705. };
  706. // k_EMsgGCToGCDirtySDOCache
  707. message CMsgGCToGCDirtySDOCache
  708. {
  709. optional uint32 sdo_type = 1; // the type of the cache to dirty
  710. optional uint64 key_uint64 = 2; // a 64 bit key type
  711. };
  712. // k_EMsgGCToGCDirtyMultipleSDOCache
  713. message CMsgGCToGCDirtyMultipleSDOCache
  714. {
  715. optional uint32 sdo_type = 1; // the type of the cache to dirty
  716. repeated uint64 key_uint64 = 2; // a 64 bit key type
  717. };
  718. //
  719. // k_EMsgGCCollectItem
  720. //
  721. message CMsgGCCollectItem
  722. {
  723. optional uint64 collection_item_id = 1;
  724. optional uint64 subject_item_id = 2;
  725. };
  726. // No ID - Used for SDO objects that don't make use of memcached and therefore don't need to serialize into a proto object
  727. message CMsgSDONoMemcached
  728. {
  729. };
  730. // k_EMsgGCToGCUpdateSQLKeyValue
  731. message CMsgGCToGCUpdateSQLKeyValue
  732. {
  733. optional string key_name = 1;
  734. };
  735. // k_EMsgGCToGCIsTrustedServer
  736. message CMsgGCToGCIsTrustedServer
  737. {
  738. optional fixed64 steam_id = 1;
  739. };
  740. // k_EMsgGCToGCIsTrustedServerResponse
  741. message CMsgGCToGCIsTrustedServerResponse
  742. {
  743. optional bool is_trusted = 1;
  744. };
  745. // k_EMsgGCToGCBroadcastConsoleCommand
  746. message CMsgGCToGCBroadcastConsoleCommand
  747. {
  748. optional string con_command = 1;
  749. };
  750. // k_EMsgGCServerVersionUpdated
  751. message CMsgGCServerVersionUpdated
  752. {
  753. optional uint32 server_version = 1;
  754. };
  755. // k_EMsgGCClientVersionUpdated
  756. message CMsgGCClientVersionUpdated
  757. {
  758. optional uint32 client_version = 1;
  759. };
  760. // k_EMsgGCToGCWebAPIAccountChanged
  761. message CMsgGCToGCWebAPIAccountChanged
  762. {
  763. };
  764. // k_EMsgGCRequestPassportItemGrant
  765. message CMsgGCToGCRequestPassportItemGrant
  766. {
  767. optional fixed64 steam_id = 1;
  768. optional uint32 league_id = 2;
  769. optional int32 reward_flag = 3;
  770. };
  771. //
  772. // CMsgGameServerInfo - server address information
  773. //
  774. message CMsgGameServerInfo
  775. {
  776. optional fixed32 server_public_ip_addr = 1;
  777. optional fixed32 server_private_ip_addr = 2;
  778. optional uint32 server_port = 3;
  779. optional uint32 server_tv_port = 4;
  780. optional string server_key = 5;
  781. optional bool server_hibernation = 6;
  782. enum ServerType
  783. {
  784. UNSPECIFIED = 0; // We haven't received the type yet
  785. GAME = 1; // Game server
  786. PROXY = 2; // Source TV proxy relay
  787. }
  788. optional ServerType server_type = 7 [ default = UNSPECIFIED ];
  789. optional uint32 server_region = 8; // Region value that matches regions.txt in the GC
  790. optional float server_loadavg = 9; // current load average
  791. optional float server_tv_broadcast_time = 10; // This may be negative if the game hasn't started broadcasting
  792. optional float server_game_time = 11; // Current game clock time
  793. optional fixed64 server_relay_connected_steam_id = 12; // SteamID of the game or relay server this relay is connected to
  794. optional uint32 relay_slots_max = 13; // slots total on relay
  795. optional int32 relays_connected = 14; // count of relays connected
  796. optional int32 relay_clients_connected = 15; // count of clients connected (all types)
  797. optional fixed64 relayed_game_server_steam_id = 16; // SteamID of the game server this relay is relaying
  798. optional uint32 parent_relay_count = 17; // The count of parent relays above this relay
  799. optional fixed64 tv_secret_code = 18; // The randomly generated ID for this server that requesting connections must use to hash the connecting steam ID to create a unique connection code
  800. };
  801. // Do not remove this comment due to a bug on the Mac OS X protobuf compiler - lol