summaryrefslogtreecommitdiff
path: root/game/shared/econ/econ_gcmessages.proto
diff options
context:
space:
mode:
Diffstat (limited to 'game/shared/econ/econ_gcmessages.proto')
-rw-r--r--game/shared/econ/econ_gcmessages.proto644
1 files changed, 644 insertions, 0 deletions
diff --git a/game/shared/econ/econ_gcmessages.proto b/game/shared/econ/econ_gcmessages.proto
new file mode 100644
index 0000000..19cb487
--- /dev/null
+++ b/game/shared/econ/econ_gcmessages.proto
@@ -0,0 +1,644 @@
+//====== Copyright 1996-2010, Valve Corporation, All rights reserved. =======
+//
+// Purpose: The file defines our Google Protocol Buffers which are used in over
+// the wire messages between servers as well as between the TF GC and TF gameservers
+// and clients.
+//
+//=============================================================================
+
+// We care more about speed than code size
+option optimize_for = SPEED;
+
+// We don't use the service generation functionality
+option cc_generic_services = false;
+
+
+//
+// STYLE NOTES:
+//
+// Use CamelCase CMsgMyMessageName style names for messages.
+//
+// Use lowercase _ delimited names like my_steam_id for field names, this is non-standard for Steam,
+// but plays nice with the Google formatted code generation.
+//
+// Try not to use required fields ever. Only do so if you are really really sure you'll never want them removed.
+// Optional should be preffered as it will make versioning easier and cleaner in the future if someone refactors
+// your message and wants to remove or rename fields.
+//
+// Use fixed64 for JobId_t, GID_t, or SteamID. This is appropriate for any field that is normally
+// going to be larger than 2^56. Otherwise use int64 for 64 bit values that are frequently smaller
+// than 2^56 as it will safe space on the wire in those cases.
+//
+// Similar to fixed64, use fixed32 for RTime32 or other 32 bit values that are frequently larger than
+// 2^28. It will save space in those cases, otherwise use int32 which will safe space for smaller values.
+// An exception to this rule for RTime32 is if the value will frequently be zero rather than set to an actual
+// time.
+//
+
+import "steammessages.proto";
+
+enum EGCItemMsg
+{
+ k_EMsgGCBase = 1000;
+ k_EMsgGCSetSingleItemPosition = 1001; // uses old-school struct for a single item. Prefer k_EMsgGCSetItemPositions
+ k_EMsgGCCraft = 1002;
+ k_EMsgGCCraftResponse = 1003;
+ k_EMsgGCDelete = 1004;
+ k_EMsgGCVerifyCacheSubscription = 1005; // sent by gameservers who don't have a cache they expect
+ k_EMsgGCNameItem = 1006;
+ k_EMsgGCUnlockCrate = 1007; // used by decoder rings to unlock supply crates
+ k_EMsgGCUnlockCrateResponse = 1008;
+ k_EMsgGCPaintItem = 1009; // used by paint cans to paint items
+ k_EMsgGCPaintItemResponse = 1010;
+ k_EMsgGCGoldenWrenchBroadcast = 1011; // sent to all users when a Golden Wrench is crafted or deleted
+ k_EMsgGCMOTDRequest = 1012; // client is asking for a set of MOTDs
+ k_EMsgGCMOTDRequestResponse = 1013;
+
+// k_EMsgGCAddItemToSocket_DEPRECATED = 1014;
+// k_EMsgGCAddItemToSocketResponse_DEPRECATED = 1015;
+// k_EMsgGCAddSocketToBaseItem_DEPRECATED = 1016;
+// k_EMsgGCAddSocketToItem_DEPRECATED = 1017;
+// k_EMsgGCAddSocketToItemResponse_DEPRECATED = 1018;
+
+ k_EMsgGCNameBaseItem = 1019;
+ k_EMsgGCNameBaseItemResponse = 1020;
+
+ k_EMsgGCRemoveSocketItem_DEPRECATED = 1021;
+ k_EMsgGCRemoveSocketItemResponse_DEPRECATED = 1022;
+
+ k_EMsgGCCustomizeItemTexture = 1023;
+ k_EMsgGCCustomizeItemTextureResponse = 1024;
+ k_EMsgGCUseItemRequest = 1025; // client/game server => GC
+ k_EMsgGCUseItemResponse = 1026; // GC => client/game server
+
+// k_EMsgGCSpawnItem_DEPRECATED = 1028; // GC => game server
+ k_EMsgGCRespawnPostLoadoutChange = 1029; // client => GC => game server
+ k_EMsgGCRemoveItemName = 1030; // client => GC
+ k_EMsgGCRemoveItemPaint = 1031; // client => GC
+ k_EMsgGCGiftWrapItem = 1032; // client => GC (the player requests an item to be gift wrapped)
+ k_EMsgGCGiftWrapItemResponse = 1033; // GC => client (confirmation that an item was gift wrapped)
+ k_EMsgGCDeliverGift = 1034;
+ k_EMsgGCDeliverGiftResponseReceiver = 1036;
+ k_EMsgGCUnwrapGiftRequest = 1037;
+ k_EMsgGCUnwrapGiftResponse = 1038;
+ k_EMsgGCSetItemStyle = 1039;
+
+ k_EMsgGCUsedClaimCodeItem = 1040;
+ k_EMsgGCSortItems = 1041;
+
+ k_EMsgGC_RevolvingLootList_DEPRECATED= 1042; // GC => client; revolving loot list
+
+ k_EMsgGCLookupAccount = 1043; // client is requesting a lookup of an account
+ k_EMsgGCLookupAccountResponse = 1044;
+ k_EMsgGCLookupAccountName = 1045; // old-school struct for single account. client is requesting a lookup of an account name
+ k_EMsgGCLookupAccountNameResponse = 1046;
+
+ //k_EMsgGCStartupCheck = 1047; // GC => client
+ //k_EMsgGCStartupCheckResponse = 1048; // client => GC
+ k_EMsgGCUpdateItemSchema = 1049; // GC => client
+ k_EMsgGCRequestInventoryRefresh = 1050; // client => GC
+
+ k_EMsgGCRemoveCustomTexture = 1051; // client => GC
+ k_EMsgGCRemoveCustomTextureResponse = 1052; // GC => client
+ k_EMsgGCRemoveMakersMark = 1053; // client => GC
+ k_EMsgGCRemoveMakersMarkResponse = 1054; // GC => client
+ k_EMsgGCRemoveUniqueCraftIndex = 1055; // client => GC
+ k_EMsgGCRemoveUniqueCraftIndexResponse = 1056; // GC => client
+
+ k_EMsgGCSaxxyBroadcast = 1057; // sent to all users when a Saxxy is deleted
+
+ k_EMsgGCBackpackSortFinished = 1058; // GC => client
+ k_EMsgGCAdjustItemEquippedState = 1059; // GC => client
+// k_EMsgGCRequestItemSchemaData_DEPRECATED = 1060; // client => GC Should only be used in dev universe
+
+ k_EMsgGCCollectItem = 1061;
+
+ k_EMsgGCItemAcknowledged = 1062; // sent to a dedicated server when a client acknowledges an item
+
+ // item presets
+ k_EMsgGCPresets_SelectPresetForClass = 1063; // client => GC
+ k_EMsgGCPresets_SetItemPosition = 1064; // client => GC
+
+ // Abuse reporting
+ k_EMsgGC_ReportAbuse = 1065; // client => GC
+ k_EMsgGC_ReportAbuseResponse = 1066; // GC => client
+
+ // more item presets
+ k_EMsgGCPresets_SelectPresetForClassReply = 1067; // GC => client
+
+ // item naming broadcast
+ k_EMsgGCNameItemNotification = 1068; // GC => client
+
+// !FIXME! DOTAMERGE
+// these messages are particular to DOTA, or
+// conflict with corresponding TF messages
+//
+// k_EMsgGCGiftedItems = 1027; // GC => game server
+// k_EMsgGCDeliverGiftResponseGiver = 1035;
+//
+// k_EMsgGCApplyConsumableEffects = 1069;
+//
+// k_EMsgGCConsumableExhausted = 1070;
+// k_EMsgGCApplyStrangePart = 1073; // GC => client
+// k_EMsgGCShowItemsPickedUp = 1071;
+//
+// // generic broadcast
+// k_EMsgGCClientDisplayNotification = 1072; // GC => client
+//
+//// OBSOLETE k_EMsgGC_IncrementKillCountAttribute = 1074; // client => GC
+// k_EMsgGC_IncrementKillCountResponse = 1075; // GC => client
+// k_EMsgGCApplyPennantUpgrade = 1076; // GC => client
+//
+// k_EMsgGCSetItemPositions = 1077; // client => GC; protobuf batched item position update
+//
+// k_EMsgGCUnlockItemStyle = 1080;
+// k_EMsgGCUnlockItemStyleResponse = 1081;
+//
+// k_EMsgGCFulfillDynamicRecipeComponent = 1082;
+// k_EMsgGCFulfillDynamicRecipeComponentResponse = 1083;
+// k_EMsgGCApplyEggEssence = 1078;
+// k_EMsgGCNameEggEssenceResponse = 1079;
+//
+// k_EMsgGCClientRequestMarketData = 1084;
+// k_EMsgGCClientRequestMarketDataResponse = 1085;
+// k_EMsgGCExtractGems = 1086;
+// k_EMsgGCAddSocket = 1087; // client -> GC
+// k_EMsgGCAddItemToSocket = 1088; // client -> GC
+// k_EMsgGCAddItemToSocketResponse = 1089; // GC -> client
+// k_EMsgGCAddSocketResponse = 1090; // GC -> client
+//
+// k_EMsgGCResetStrangeGemCount = 1091; // client -> GC
+
+// << DOTA
+
+// TF >>
+
+ // generic broadcast
+ k_EMsgGCClientDisplayNotification = 1069; // GC => client
+
+ k_EMsgGCApplyStrangePart = 1070; // GC => client
+ k_EMsgGC_IncrementKillCountAttribute = 1071; // client => GC
+ k_EMsgGC_IncrementKillCountResponse = 1072; // GC => client
+ k_EMsgGCRemoveStrangePart = 1073; // GC => client
+ k_EMsgGCResetStrangeScores = 1074; // client => GC
+
+ k_EMsgGCGiftedItems = 1075; // GC => game server
+
+ k_EMsgGCApplyUpgradeCard = 1077; // client => GC
+ k_EMsgGCRemoveUpgradeCard = 1078; // client => GC
+
+ k_EMsgGCApplyStrangeRestriction = 1079; // client => GC
+
+ k_EMsgGCClientRequestMarketData = 1080; // client => GC
+ k_EMsgGCClientRequestMarketDataResponse = 1081; // GC => client
+
+ k_EMsgGCApplyXifier = 1082; // client => GC
+ k_EMsgGCApplyXifierResponse = 1083; // GC => Client
+
+ k_EMsgGC_TrackUniquePlayerPairEvent = 1084; // client => GC
+ k_EMsgGCFulfillDynamicRecipeComponent = 1085; // client => GC
+ k_EMsgGCFulfillDynamicRecipeComponentResponse = 1086; // GC => client
+
+ k_EMsgGCSetItemEffectVerticalOffset = 1087; // client => GC
+ k_EMsgGCSetHatEffectUseHeadOrigin = 1088; // client => GC
+
+ k_EMsgGCItemEaterRecharger = 1089; // client => GC
+ k_EMsgGCItemEaterRechargerResponse = 1090; // GC => Client
+
+ k_EMsgGCApplyBaseItemXifier = 1091; // client => GC
+
+ k_EMsgGCApplyClassTransmogrifier = 1092; // client => GC
+ k_EMsgGCApplyHalloweenSpellbookPage = 1093; // client => GC
+
+ k_EMsgGCRemoveKillStreak = 1094; // client => GC
+ k_EMsgGCRemoveKillStreakResponse = 1095; // GC => client
+
+ k_EMsgGCTFSpecificItemBroadcast = 1096; // GC => client (broadcast)
+ k_EMsgGC_IncrementKillCountAttribute_Multiple = 1097; // client (game server) => GC
+ k_EMsgGCDeliverGiftResponseGiver = 1098;
+
+ k_EMsgGCSetItemPositions = 1100; // client => GC; protobuf batched item position update
+
+// << TF
+
+ k_EMsgGCLookupMultipleAccountNames = 1101;
+ k_EMsgGCLookupMultipleAccountNamesResponse = 1102;
+
+ // trading!
+ k_EMsgGCTradingBase = 1500;
+ k_EMsgGCTrading_InitiateTradeRequest = 1501; // client A -> GC and then GC -> client B
+ k_EMsgGCTrading_InitiateTradeResponse = 1502; // client B -> GC or GC -> client A
+ k_EMsgGCTrading_StartSession = 1503; // GC -> client A & B
+// k_EMsgGCTrading_SetItem = 1504; // client -> GC
+// k_EMsgGCTrading_RemoveItem = 1505; // client -> GC
+// k_EMsgGCTrading_UpdateTradeInfo = 1506; // GC -> client A & B in response to SetItem or RemoveItem message
+// k_EMsgGCTrading_SetReadiness = 1507; // client -> GC
+// k_EMsgGCTrading_ReadinessResponse = 1508; // GC -> client A & B
+ k_EMsgGCTrading_SessionClosed = 1509; // GC -> client A & B
+ k_EMsgGCTrading_CancelSession = 1510; // client -> GC
+// k_EMsgGCTrading_TradeChatMsg = 1511; // client -> GC and then GC -> other client
+// k_EMsgGCTrading_ConfirmOffer = 1512; // client -> GC
+// k_EMsgGCTrading_TradeTypingChatMsg = 1513; // client -> GC and then GC -> other client
+ k_EMsgGCTrading_InitiateTradeRequestResponse = 1514; // GC -> client
+
+ // serverbrowser messages
+ k_EMsgGCServerBrowser_FavoriteServer = 1601;
+ k_EMsgGCServerBrowser_BlacklistServer = 1602;
+
+ // rentals & previews
+ k_EMsgGCServerRentalsBase = 1700;
+ k_EMsgGCItemPreviewCheckStatus = 1701;
+ k_EMsgGCItemPreviewStatusResponse = 1702;
+ k_EMsgGCItemPreviewRequest = 1703;
+ k_EMsgGCItemPreviewRequestResponse = 1704;
+ k_EMsgGCItemPreviewExpire = 1705;
+ k_EMsgGCItemPreviewExpireNotification = 1706;
+
+// !FIXME! DOTAMERGE
+// This message is 1707 in DOTA, but it came from TF, where it was 1707 at one time, then switched to 1708
+// when the message format changed.
+// k_EMsgGCItemPreviewItemBoughtNotification = 1707;
+ k_EMsgGCItemPreviewItemBoughtNotification = 1708;
+
+ // Development only messages
+ k_EMsgGCDev_NewItemRequest = 2001;
+ k_EMsgGCDev_NewItemRequestResponse = 2002;
+ k_EMsgGCDev_DebugRollLootRequest = 2003;
+
+ // Microtransaction messages
+ k_EMsgGCStoreGetUserData = 2500; // Gets the current price sheet from the GC
+ k_EMsgGCStoreGetUserDataResponse = 2501; // Response
+ k_EMsgGCStorePurchaseInit_DEPRECATED = 2502; // Initiate a purchase (old pre-protobuff format -- deprecated!)
+ k_EMsgGCStorePurchaseInitResponse_DEPRECATED = 2503; // Response
+
+// !FIXME! DOTAMERGE
+// These messages have different values in TF and DOTA.
+// k_EMsgGCStorePurchaseFinalize = 2504; // Finalize a purchase
+// k_EMsgGCStorePurchaseFinalizeResponse = 2505; // Response
+// k_EMsgGCStorePurchaseCancel = 2506; // Cancel a purchase
+// k_EMsgGCStorePurchaseCancelResponse = 2507; // Response
+ k_EMsgGCStorePurchaseFinalize = 2512; // Finalize a purchase
+ k_EMsgGCStorePurchaseFinalizeResponse = 2513; // Response
+ k_EMsgGCStorePurchaseCancel = 2514; // Cancel a purchase
+ k_EMsgGCStorePurchaseCancelResponse = 2515; // Response
+
+ k_EMsgGCStorePurchaseQueryTxn = 2508; // Query the status of a transaction
+ k_EMsgGCStorePurchaseQueryTxnResponse = 2509; // Response
+ k_EMsgGCStorePurchaseInit = 2510; // Initiate a purchase
+ k_EMsgGCStorePurchaseInitResponse = 2511; // Response
+
+// !FIXME! DOTAMERGE
+// Conflict with TF messages
+// k_EMsgGCBannedWordListRequest = 2512; // Request a list of new banned words
+// k_EMsgGCBannedWordListResponse = 2513; // response to a request, or a push of a new banned word update to clients
+// k_EMsgGCToGCBannedWordListBroadcast = 2514; // sent from GC to GC so the main GC can broadcast a banned word change to clients
+// k_EMsgGCToGCBannedWordListUpdated = 2515; // sent from GC to other GCs so that they can be kept in sync with banned word list updates
+
+ k_EMsgGCToGCDirtySDOCache = 2516; // when an SDO cache needs to be dirtied on another GC
+ k_EMsgGCToGCDirtyMultipleSDOCache = 2517; // when a list of SDO caches needs to be dirtied on another GC
+
+ k_EMsgGCToGCUpdateSQLKeyValue = 2518; // when a key value changes and needs to be updated on other GCs
+// k_EMsgGCToGCIsTrustedServer = 2519; // Is the specified server trusted?
+// k_EMsgGCToGCIsTrustedServerResponse = 2520; // response to whether or not this is a trusted server
+ k_EMsgGCToGCBroadcastConsoleCommand = 2521; // run a console command remotely on another GC from a GC
+
+ k_EMsgGCServerVersionUpdated = 2522; // Sent when the active version of a server changes so servers can restart
+
+ k_EMsgGCApplyAutograph = 2523; //
+ k_EMsgGCToGCWebAPIAccountChanged = 2524;
+ k_EMsgGCRequestAnnouncements = 2525; //
+ k_EMsgGCRequestAnnouncementsResponse = 2526; //
+ k_EMsgGCRequestPassportItemGrant = 2527;
+
+ k_EMsgGCClientVersionUpdated = 2528; // Sent when the client doesn't match the appropriate version
+
+ k_EMsgGCItemPurgatory_FinalizePurchase = 2531; // Sent for Korean government requirement - move a purchased item from the "maybe box" (referred to as item purgatory in code) to the backpack
+ k_EMsgGCItemPurgatory_FinalizePurchaseResponse = 2532;
+ k_EMsgGCItemPurgatory_RefundPurchase = 2533;
+ k_EMsgGCItemPurgatory_RefundPurchaseResponse = 2534;
+
+ k_EMsgGCToGCPlayerStrangeCountAdjustments = 2535;
+
+ k_EMsgGCRequestStoreSalesData = 2536; // get which items are currently on sale
+ k_EMsgGCRequestStoreSalesDataResponse = 2537;
+ k_EMsgGCRequestStoreSalesDataUpToDateResponse = 2538;
+
+ k_EMsgGCToGCPingRequest = 2539;
+ k_EMsgGCToGCPingResponse = 2540;
+
+ k_EMsgGCToGCGetUserSessionServer = 2541; // GC->GC, see what the steam ID is of the server that this user is on
+ k_EMsgGCToGCGetUserSessionServerResponse = 2542; // --response
+ k_EMsgGCToGCGetUserServerMembers = 2543; // GC->GC, what members are on the server and spectating
+ k_EMsgGCToGCGetUserServerMembersResponse = 2544; // --response
+
+ k_EMsgGCToGCGrantSelfMadeItemToAccount = 2555; // GC->GC, via SQL message queue, grant one specific self-made item to this contributor account ID
+ k_EMsgGCToGCThankedByNewUser = 2556; // GC->GC, via SQL message queue, this account was thanked by a new user account, so grant a thanked item or level up the current item
+
+ k_EMsgGCShuffleCrateContents = 2557; // game client->GC, shuffle the contents of the line item loot list for this crate
+
+ k_EMsgGCQuestObjective_Progress = 2558; // client/game -> GC, report progress in a quest objective
+ k_EMsgGCQuestCompleted = 2559; // GC -> client, report completion of a quest
+
+ k_EMsgGCApplyDuckToken = 2560; // client => GC
+
+ k_EMsgGCQuestComplete_Request = 2561; // client -> GC
+ k_EMsgGCQuestObjective_PointsChange = 2562; // server -> GC
+ k_EMsgGCQuestObjective_RequestLoanerItems = 2564; // client -> GC
+ k_EMsgGCQuestObjective_RequestLoanerResponse = 2565; // GC -> client
+
+ k_EMsgGCApplyStrangeCountTransfer = 2566; // client => GC
+ k_EMsgGCCraftCollectionUpgrade = 2567; // client => GC
+ k_EMsgGCCraftHalloweenOffering = 2568; // client => GC
+
+ k_EMsgGCQuestDiscard_Request = 2569; // client => GC
+
+ k_EMsgGCRemoveGiftedBy = 2570; // client => GC
+ k_EMsgGCRemoveGiftedByResponse = 2571; // GC => client
+
+ k_EMsgGCRemoveFestivizer = 2572; // client => GC
+ k_EMsgGCRemoveFestivizerResponse = 2573; // GC => client
+
+ k_EMsgGCCraftCommonStatClock = 2574; // client => GC
+
+ // Game specific messages start at 5000 and GCGameBase messages start at 3000
+ // So all these must be < 3000
+};
+
+enum EGCMsgResponse
+{
+ k_EGCMsgResponseOK = 0; // Request succeeded
+ k_EGCMsgResponseDenied = 1; // Request denied
+ k_EGCMsgResponseServerError = 2; // Request failed due to a temporary server error
+ k_EGCMsgResponseTimeout = 3; // Request timed out
+ k_EGCMsgResponseInvalid = 4; // Request was corrupt
+ k_EGCMsgResponseNoMatch = 5; // No item definition matched the request
+ k_EGCMsgResponseUnknownError = 6; // Request failed with an unknown error
+ k_EGCMsgResponseNotLoggedOn = 7; // Client not logged on to steam
+ k_EGCMsgFailedToCreate = 8; // Failed to create whatever object the GC was asked to create
+
+// k_EGCMsgResponseForceSizeInt = 0x7FFFFFFF
+};
+
+enum EUnlockStyle
+{
+ k_UnlockStyle_Succeeded = 0;
+ k_UnlockStyle_Failed_PreReq = 1;
+ k_UnlockStyle_Failed_CantAfford = 2;
+ k_UnlockStyle_Failed_CantCommit = 3;
+ k_UnlockStyle_Failed_CantLockCache = 4;
+ k_UnlockStyle_Failed_CantAffordAttrib = 5;
+ k_UnlockStyle_Failed_CantAffordGem = 6;
+};
+
+enum EItemPurgatoryResponse_Finalize
+{
+ k_ItemPurgatoryResponse_Finalize_Succeeded = 0;
+ k_ItemPurgatoryResponse_Finalize_Failed_Incomplete = 1; // Some but not all finalized
+ k_ItemPurgatoryResponse_Finalize_Failed_ItemsNotInPurgatory = 2; // Item ID's sent up were not in purgatory
+ k_ItemPurgatoryResponse_Finalize_Failed_CouldNotFindItems = 3; // One or more items do not belong to the given steam ID or were deleted, etc.
+ k_ItemPurgatoryResponse_Finalize_Failed_NoSOCache = 4; // Couldn't load the user's SO cache
+ k_ItemPurgatoryResponse_Finalize_BackpackFull = 5; // Backpack was full. We may have finalized some items.
+};
+
+enum EItemPurgatoryResponse_Refund
+{
+ k_ItemPurgatoryResponse_Refund_Succeeded = 0;
+ k_ItemPurgatoryResponse_Refund_Failed_ItemNotInPurgatory = 1; // Item ID's sent up were not in purgatory
+ k_ItemPurgatoryResponse_Refund_Failed_CouldNotFindItem = 2; // One or more items do not belong to the given steam ID or were deleted, etc.
+ k_ItemPurgatoryResponse_Refund_Failed_NoSOCache = 3; // Couldn't load the user's SO cache
+ k_ItemPurgatoryResponse_Refund_Failed_NoDetail = 4; // Generic error to avoid giving the client too much detail
+ k_ItemPurgatoryResponse_Refund_Failed_NexonWebAPI = 5; // The Nexon WebAPI failed
+};
+
+//
+// k_EMsgGCApplyAutograph
+//
+message CMsgApplyAutograph
+{
+ optional uint64 autograph_item_id = 1; // which autograph?
+ optional uint64 item_item_id = 2; // which item is getting this autograph
+};
+
+
+// k_EMsgGCToGCPlayerStrangeCountAdjustments
+// Used in the GC SQL Msg queue and in match signout
+message CMsgEconPlayerStrangeCountAdjustment
+{
+ message CStrangeCountAdjustment
+ {
+ optional uint32 event_type = 1;
+ optional uint64 item_id = 2;
+ optional uint32 adjustment = 3;
+ };
+
+ optional uint32 account_id = 1;
+ repeated CStrangeCountAdjustment strange_count_adjustments = 2;
+};
+
+
+//
+// k_EMsgGCItemPurgatory_FinalizePurchase
+//
+message CMsgRequestItemPurgatory_FinalizePurchase
+{
+ repeated uint64 item_ids = 1;
+};
+
+//
+// k_EMsgGCItemPurgatory_FinalizePurchaseResponse
+//
+message CMsgRequestItemPurgatory_FinalizePurchaseResponse
+{
+ optional uint32 result = 1;
+};
+
+//
+// k_EMsgGCItemPurgatory_RefundPurchase
+//
+message CMsgRequestItemPurgatory_RefundPurchase
+{
+ optional uint64 item_id = 1;
+};
+
+//
+// k_EMsgGCItemPurgatory_RefundPurchaseResponse
+//
+message CMsgRequestItemPurgatory_RefundPurchaseResponse
+{
+ optional uint32 result = 1;
+};
+
+message CMsgCraftingResponse
+{
+ repeated uint64 item_ids = 1;
+};
+
+// k_EMsgGCRequestStoreSalesData
+message CMsgGCRequestStoreSalesData
+{
+ optional uint32 version = 1; // the last received version (used to identify when sales data may have changed)
+ optional uint32 currency = 2; // which currency we want the sales values for
+};
+
+// k_EMsgGCRequestStoreSalesDataResponse
+message CMsgGCRequestStoreSalesDataResponse
+{
+ message Price
+ {
+ optional uint32 item_def = 1;
+ optional uint32 price = 2;
+ };
+ repeated Price sale_price = 1; // the list of items on sale and their sale price for the requested currency
+ optional uint32 version = 2; // the version of this data, future sale requests should provide this value so redundant requests can be ignored
+ optional uint32 expiration_time = 3; // the time after which this sale is likely to expire. It could expire sooner than this if the GC restarts
+};
+
+// k_EMsgGCRequestStoreSalesDataUpToDateResponse
+message CMsgGCRequestStoreSalesDataUpToDateResponse
+{
+ optional uint32 version = 1; // the last received version (used to identify when sales data may have changed)
+ optional uint32 expiration_time = 2; // the time after which this sale is likely to expire. It could expire sooner than this if the GC restarts
+};
+
+// k_EMsgGCToGCPingRequest
+message CMsgGCToGCPingRequest
+{
+};
+
+// k_EMsgGCToGCPingResponse
+message CMsgGCToGCPingResponse
+{
+};
+
+// k_EMsgGCToGCGetUserSessionServer
+message CMsgGCToGCGetUserSessionServer
+{
+ optional uint32 account_id = 1; // the user to lookup the server information for
+};
+
+// k_EMsgGCToGCGetUserSessionServerResponse
+message CMsgGCToGCGetUserSessionServerResponse
+{
+ optional fixed64 server_steam_id = 1; // zero if this user is not online or not on a server
+};
+
+// k_EMsgGCToGCGetUserServerMembers
+message CMsgGCToGCGetUserServerMembers
+{
+ optional uint32 account_id = 1; // the account ID to look up the server and spectators from
+ optional uint32 max_spectators = 2; // do you want spectators? If so what is the limit of how many will be returned (otherwise specify zero)
+};
+
+// k_EMsgGCToGCGetUserServerMembersResponse
+message CMsgGCToGCGetUserServerMembersResponse
+{
+ repeated uint32 member_account_id = 1; // the list of other server members or spectators
+};
+
+// k_EMsgGCLookupMultipleAccountNames
+message CMsgLookupMultipleAccountNames
+{
+ repeated uint32 accountids = 1 [ packed=true ];
+};
+
+// k_EMsgGCLookupMultipleAccountNamesResponse
+message CMsgLookupMultipleAccountNamesResponse
+{
+ message Account
+ {
+ optional uint32 accountid = 1;
+ optional string persona = 2;
+ }
+ repeated Account accounts = 1;
+};
+
+// k_EMsgGCToGCGrantSelfMadeItemToAccount
+message CMsgGCToGCGrantSelfMadeItemToAccount
+{
+ optional uint32 item_def_index = 1;
+ optional uint32 accountid = 2;
+}
+
+// k_EMsgGCToGCThankedByNewUser
+message CMsgGCToGCThankedByNewUser
+{
+ optional uint32 new_user_accountid = 1; // guy who did the thanking
+ optional uint32 thanked_user_accountid = 2; // guy who was thanked
+}
+
+// k_EMsgGCShuffleCrateContents
+message CMsgGCShuffleCrateContents
+{
+ optional uint64 crate_item_id = 1;
+ optional string user_code_string = 2;
+}
+
+// k_EMsgGCQuestObjective_Progress
+message CMsgGCQuestObjective_Progress
+{
+ optional uint64 quest_item_id = 1;
+ optional uint32 quest_attrib_index = 2;
+ optional uint32 delta = 3;
+ optional fixed64 owner_steamid = 4;
+}
+
+// CMsgGCQuestObjective_PointsChange
+message CMsgGCQuestObjective_PointsChange
+{
+ optional uint64 quest_item_id = 1;
+ optional uint32 standard_points = 2;
+ optional uint32 bonus_points = 3;
+ optional fixed64 owner_steamid = 4;
+ optional bool update_base_points = 5 [default = false];
+}
+
+// k_EMsgGCQuestComplete_Request
+message CMsgGCQuestComplete_Request
+{
+ optional uint64 quest_item_id = 1;
+}
+
+// k_EMsgGCQuestCompleted
+message CMsgGCQuestCompleted
+{
+}
+
+// k_EMsgGCQuestObjective_RequestLoanerItems
+message CMsgGCQuestObjective_RequestLoanerItems
+{
+ optional uint64 quest_item_id = 1;
+}
+
+// k_EMsgGCQuestObjective_RequestLoanerResponse
+message CMsgGCQuestObjective_RequestLoanerResponse
+{
+}
+
+// k_EMsgGCCraftCollectionUpgrader
+message CMsgCraftCollectionUpgrade
+{
+ repeated uint64 item_id = 1; // list of item ids
+};
+
+// k_EMsgGCCraftHalloweenOffering
+message CMsgCraftHalloweenOffering
+{
+ optional uint64 tool_id = 1; // tool that is invoking this call
+ repeated uint64 item_id = 2; // list of item ids
+};
+
+// k_EMsgGCCraftCommonStatClock
+message CMsgCraftCommonStatClock
+{
+ optional uint64 tool_id = 1; // tool that is invoking this call
+ repeated uint64 item_id = 2; // list of item ids
+};
+
+// k_EMsgGCQuestDiscard_Request
+message CMsgGCQuestDiscard_Request
+{
+ optional uint64 quest_item_id = 1;
+}
+
+// Do not remove this comment due to a bug on the Mac OS X protobuf compiler - lol
+