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.
530 lines
12 KiB
530 lines
12 KiB
//====== Copyright (C), Valve Corporation, All rights reserved. =======
|
|
//
|
|
// Purpose: This file defines all of our over-the-wire net protocols for the
|
|
// Game Coordinator for the item system. Note that we never use types
|
|
// with undefined length (like int). Always use an explicit type
|
|
// (like int32).
|
|
//
|
|
//=============================================================================
|
|
|
|
#ifndef ITEM_GCMESSAGES_H
|
|
#define ITEM_GCMESSAGES_H
|
|
#ifdef _WIN32
|
|
#pragma once
|
|
#endif
|
|
|
|
#pragma pack( push, 1 )
|
|
|
|
// generic zero-length message struct
|
|
struct MsgGCEmpty_t
|
|
{
|
|
|
|
};
|
|
|
|
// k_EMsgGCSetItemPosition
|
|
struct MsgGCSetItemPosition_t
|
|
{
|
|
uint64 m_unItemID;
|
|
uint32 m_unNewPosition;
|
|
};
|
|
|
|
// k_EMsgGCCraft
|
|
struct MsgGCCraft_t
|
|
{
|
|
int16 m_nRecipeDefIndex;
|
|
uint16 m_nItemCount;
|
|
// list of m_nItemCount uint64 item IDs
|
|
};
|
|
|
|
// k_EMsgGCDelete
|
|
struct MsgGCDelete_t
|
|
{
|
|
uint64 m_unItemID;
|
|
bool m_bRecycle;
|
|
};
|
|
|
|
// k_EMsgGCCraftResponse
|
|
struct MsgGCStandardResponse_t
|
|
{
|
|
int16 m_nResponseIndex;
|
|
uint32 m_eResponse;
|
|
};
|
|
|
|
// k_EMsgGCVerifyCacheSubscription
|
|
struct MsgGCVerifyCacheSubscription_t
|
|
{
|
|
uint64 m_ulSteamID;
|
|
};
|
|
|
|
// k_EMsgGCNameItem
|
|
struct MsgGCNameItem_t
|
|
{
|
|
uint64 m_unToolItemID; // the Nametag item
|
|
uint64 m_unSubjectItemID; // the item to be renamed
|
|
bool m_bDescription;
|
|
// Varchar: Item name
|
|
};
|
|
|
|
// k_EMsgGCNameBaseItem
|
|
struct MsgGCNameBaseItem_t
|
|
{
|
|
uint64 m_unToolItemID; // the Nametag item
|
|
uint32 m_unBaseItemDefinitionID; // the base item definition to be renamed
|
|
bool m_bDescription;
|
|
// Varchar: Item name
|
|
};
|
|
|
|
// k_EMsgGCUnlockCrate
|
|
struct MsgGCUnlockCrate_t
|
|
{
|
|
uint64 m_unToolItemID; // the crate key
|
|
uint64 m_unSubjectItemID; // the crate to be decoded
|
|
};
|
|
|
|
// k_EMsgGCPaintItem
|
|
struct MsgGCPaintItem_t
|
|
{
|
|
uint64 m_unToolItemID; // the Paint Can item
|
|
uint64 m_unSubjectItemID; // the item to be painted
|
|
bool m_bUnusualPaint; // the paint event is unusual paint
|
|
};
|
|
|
|
// k_EMsgGCPaintKitItem
|
|
struct MsgGCPaintKitItem_t
|
|
{
|
|
uint64 m_unToolItemID; // the Paint Kit item
|
|
uint64 m_unSubjectItemID; // the item to be painted
|
|
bool m_bUnusualPaint; // the paint event is unusual paint
|
|
};
|
|
|
|
// k_EMsgGCPaintKitBaseItem
|
|
struct MsgGCPaintKitBaseItem_t
|
|
{
|
|
uint64 m_unToolItemID; // the Paint Kit item
|
|
uint32 m_unBaseItemDefinitionID; // the base item definition to be painted
|
|
};
|
|
|
|
// k_EMsgGCPaintKitBaseItem
|
|
struct MsgGCDev_PaintKitItemDrop_t
|
|
{
|
|
uint32 m_unPaintID; // the Paint Kit ID
|
|
uint32 m_unBaseItemDefinitionID; // the base item definition to be painted
|
|
int m_nStrangeType;
|
|
};
|
|
|
|
// k_EMsgGCGiftWrapItem
|
|
struct MsgGCGiftWrapItem_t
|
|
{
|
|
uint64 m_unToolItemID; // the Gift Wrap item
|
|
uint64 m_unSubjectItemID; // the item to be wrapped
|
|
};
|
|
|
|
// k_EMsgGCDeliverGift
|
|
struct MsgGCDeliverGift_t
|
|
{
|
|
uint64 m_unGiftID;
|
|
uint64 m_ulGiverSteamID;
|
|
uint64 m_ulTargetSteamID;
|
|
};
|
|
|
|
// k_EMsgGCUnwrapGiftRequest
|
|
struct MsgGCUnwrapGiftRequest_t
|
|
{
|
|
uint64 m_unItemID;
|
|
};
|
|
|
|
// k_EMsgGCMOTDRequest
|
|
struct MsgGCMOTDRequest_t
|
|
{
|
|
RTime32 m_nLastMOTDRequest; // Time at which the client last asked for MOTDs. GC will send back all MOTDs posted since.
|
|
int16 m_eLanguage;
|
|
};
|
|
|
|
// k_EMsgGCMOTDRequestResponse
|
|
struct MsgGCMOTDRequestResponse_t
|
|
{
|
|
int16 m_nEntries;
|
|
};
|
|
|
|
// k_EMsgGCCustomizeItemTexture
|
|
struct MsgGCCustomizeItemTexture_t
|
|
{
|
|
uint64 m_unToolItemID; // the tool
|
|
uint64 m_unSubjectItemID; // the item wants the texture
|
|
uint64 m_unImageUGCHandle; // cloud ID of image file (UGCHandle_t)
|
|
};
|
|
|
|
// k_EMsgGCSetItemStyle
|
|
struct MsgGCSetItemStyle_t
|
|
{
|
|
uint64 m_unItemID;
|
|
uint8 m_iStyle;
|
|
};
|
|
|
|
// k_EMsgGCUnlockItemStyle
|
|
struct MsgGCUnlockItemStyle_t
|
|
{
|
|
uint64 m_unItemID;
|
|
uint8 m_iStyle;
|
|
};
|
|
|
|
// k_EMsgGCUnlockItemStyleResponse
|
|
struct MsgGCUnlockItemStyleResponse_t
|
|
{
|
|
uint64 m_unItemID;
|
|
uint8 m_iStyle;
|
|
uint8 m_iStylePreReq;
|
|
uint8 m_iResult;
|
|
};
|
|
|
|
// k_EMsgGCItemPreviewCheckStatus
|
|
struct MsgGCCheckItemPreviewStatus_t
|
|
{
|
|
uint32 m_unItemDefIndex;
|
|
};
|
|
|
|
// k_EMsgGCItemPreviewCheckStatusResponse
|
|
struct MsgGCItemPreviewCheckStatusResponse_t
|
|
{
|
|
uint32 m_unItemDefIndex;
|
|
uint32 m_eResponse;
|
|
RTime32 m_timePreviewTime;
|
|
};
|
|
|
|
// k_EMsgGCItemPreviewRequest
|
|
struct MsgGCItemPreviewRequest_t
|
|
{
|
|
uint32 m_unItemDefIndex;
|
|
};
|
|
|
|
// k_EMsgGCItemPreviewRequestResponse
|
|
struct MsgGCItemPreviewRequestResponse_t
|
|
{
|
|
uint32 m_unItemDefIndex;
|
|
uint32 m_eResponse;
|
|
};
|
|
|
|
// k_EMsgGCItemPreviewExpireNotification
|
|
struct MsgGCItemPreviewExpireNotification_t
|
|
{
|
|
uint32 m_unItemDefIndex;
|
|
};
|
|
|
|
// k_EMsgGCItemPreviewItemBoughtNotification
|
|
struct MsgGCItemPreviewItemBoughtNotification_t
|
|
{
|
|
uint32 m_unItemDefIndex;
|
|
};
|
|
|
|
//-----------------------------------------------------------------------------
|
|
|
|
// k_EMsgGCUseItemResponse
|
|
enum EGCMsgUseItemResponse
|
|
{
|
|
k_EGCMsgUseItemResponse_ItemUsed = 0,
|
|
k_EGCMsgUseItemResponse_GiftNoOtherPlayers = 1,
|
|
k_EGCMsgUseItemResponse_ServerError = 2,
|
|
k_EGCMsgUseItemResponse_MiniGameAlreadyStarted = 3,
|
|
k_EGCMsgUseItemResponse_ItemUsed_ItemsGranted = 4,
|
|
k_EGCMsgUseItemResponse_DropRateBonusAlreadyGranted = 5,
|
|
k_EGCMsgUseItemResponse_NotInLowPriorityPool = 6,
|
|
k_EGCMsgUseItemResponse_ForceSizeInt = 0x7FFFFFFF
|
|
};
|
|
|
|
// k_EMsgGCUseItemResponse
|
|
struct MsgGCUseItemResponse_t
|
|
{
|
|
uint32 m_eResponse;
|
|
uint32 m_unDefIndex;
|
|
};
|
|
|
|
// DEPRECATED : k_EMsgGCGiftedItems_DEPRECATED
|
|
// struct MsgGCGiftedItems_t
|
|
// {
|
|
// uint64 m_ulGifterSteamID;
|
|
// bool m_bRandomPerson;
|
|
// uint8 m_unNumGiftRecipients;
|
|
// // other data dynamically added:
|
|
// // steam ids of all the recipients
|
|
// };
|
|
|
|
// k_EMsgGCRemoveItemName
|
|
struct MsgGCRemoveItemName_t
|
|
{
|
|
uint64 m_unItemID;
|
|
bool m_bDescription;
|
|
};
|
|
|
|
// k_EMsgGCRemoveItemPaint
|
|
struct MsgGCRemoveItemPaint_t
|
|
{
|
|
uint64 m_unItemID;
|
|
};
|
|
|
|
// MsgGCRemoveItemCustomTexture_t
|
|
struct MsgGCRemoveItemCustomTexture_t
|
|
{
|
|
uint64 m_unItemID;
|
|
};
|
|
|
|
// MsgGCRemoveItemMakersMark_t
|
|
struct MsgGCRemoveItemMakersMark_t
|
|
{
|
|
uint64 m_unItemID;
|
|
};
|
|
|
|
// MsgGCRemoveItemUniqueCraftIndex_t
|
|
struct MsgGCRemoveItemUniqueCraftIndex_t
|
|
{
|
|
uint64 m_unItemID;
|
|
};
|
|
|
|
// k_EMsgGCApplyConsumableEffects
|
|
struct MsgGCApplyConsumableEffects_t
|
|
{
|
|
uint64 m_ulInitiatorSteamID;
|
|
uint32 m_unItemDefinitionID;
|
|
};
|
|
|
|
//-----------------------------------------------------------------------------
|
|
// Trading
|
|
|
|
// k_EMsgGCTrading_InitiateTradeRequest
|
|
struct MsgGCTrading_InitiateTradeRequest_t
|
|
{
|
|
uint32 m_unTradeRequestID;
|
|
uint64 m_ulOtherSteamID;
|
|
// @note player A's name as string when sent to party B
|
|
};
|
|
|
|
enum EGCMsgInitiateTradeResponse
|
|
{
|
|
k_EGCMsgInitiateTradeResponse_Accepted = 0,
|
|
k_EGCMsgInitiateTradeResponse_Declined = 1,
|
|
k_EGCMsgInitiateTradeResponse_VAC_Banned_Initiator = 2,
|
|
k_EGCMsgInitiateTradeResponse_VAC_Banned_Target = 3,
|
|
k_EGCMsgInitiateTradeResponse_Target_Already_Trading = 4,
|
|
k_EGCMsgInitiateTradeResponse_Disabled = 5,
|
|
k_EGCMsgInitiateTradeResponse_NotLoggedIn = 6,
|
|
k_EGCMsgInitiateTradeResponse_Cancel = 7,
|
|
k_EGCMsgInitiateTradeResponse_TooSoon = 8,
|
|
k_EGCMsgInitiateTradeResponse_TooSoonPenalty = 9,
|
|
k_EGCMsgInitiateTradeResponse_Trade_Banned_Initiator = 10,
|
|
k_EGCMsgInitiateTradeResponse_Trade_Banned_Target = 11,
|
|
k_EGCMsgInitiateTradeResponse_Free_Account_Initiator_DEPRECATED = 12, // free accounts can initiate trades now
|
|
k_EGCMsgInitiateTradeResponse_Shared_Account_Initiator= 13,
|
|
k_EGCMsgInitiateTradeResponse_Service_Unavailable = 14,
|
|
|
|
k_EGCMsgInitiateTradeResponse_Count,
|
|
k_EGCMsgInitiateTradeResponse_ForceSizeInt = 0x7FFFFFFF
|
|
};
|
|
|
|
// k_EMsgGCTrading_InitiateTradeResponse
|
|
struct MsgGCTrading_InitiateTradeResponse_t
|
|
{
|
|
uint32 m_eResponse;
|
|
uint32 m_unTradeRequestID;
|
|
};
|
|
|
|
// k_EMsgGCTrading_StartSession
|
|
struct MsgGCTrading_StartSession_t
|
|
{
|
|
uint32 m_unSessionVersion;
|
|
uint64 m_ulSteamIDPartyA;
|
|
uint64 m_ulSteamIDPartyB;
|
|
// @note strings from player names will be added to the message
|
|
};
|
|
|
|
// k_EMsgGCTrading_SetItem
|
|
struct MsgGCTrading_SetItem_t
|
|
{
|
|
bool m_bShowcase;
|
|
uint64 m_unItemID;
|
|
uint8 m_unPosition;
|
|
};
|
|
|
|
// k_EMsgGCTrading_RemoveItem
|
|
struct MsgGCTrading_RemoveItem_t
|
|
{
|
|
uint64 m_unItemID;
|
|
};
|
|
|
|
// k_EMsgGCTrading_UpdateTradeInfo
|
|
struct MsgGCTrading_UpdateTradeInfo_t
|
|
{
|
|
uint32 m_unSessionVersion;
|
|
uint8 m_unNumItemsPartyA;
|
|
uint8 m_unNumItemsPartyB;
|
|
uint8 m_unNumShowcaseItemsPartyA;
|
|
uint8 m_unNumShowcaseItemsPartyB;
|
|
// @note 4 lists of item ids in the order above
|
|
};
|
|
|
|
// k_EMsgGCTrading_SetReadiness
|
|
struct MsgGCTrading_SetReadiness_t
|
|
{
|
|
uint32 m_unSessionVersion;
|
|
bool m_bReady;
|
|
};
|
|
|
|
// k_EMsgGCTrading_ConfirmOffer
|
|
struct MsgGCTrading_ConfirmOffer_t
|
|
{
|
|
uint32 m_unConfirmedSessionVersion;
|
|
};
|
|
|
|
// k_EMsgGCTrading_ReadinessResponse
|
|
struct MsgGCTrading_ReadinessResponse_t
|
|
{
|
|
uint32 m_unSessionVersion;
|
|
bool m_bIsReadyPartyA;
|
|
bool m_bIsReadyPartyB;
|
|
bool m_bConfirmedByPartyA;
|
|
bool m_bConfirmedByPartyB;
|
|
};
|
|
|
|
enum EGCMsgSessionClosed
|
|
{
|
|
k_EGCMsgSessionClosed_ItemsTraded = 0,
|
|
k_EGCMsgSessionClosed_Canceled = 1,
|
|
k_EGCMsgSessionClosed_Error = 2,
|
|
k_EGCMsgSessionClosed_DoesNotOwnItems = 3,
|
|
k_EGCMsgSessionClosed_UntradableItems = 4,
|
|
k_EGCMsgSessionClosed_NoItems = 5,
|
|
k_EGCMsgSessionClosed_Disabled = 6,
|
|
k_EGCMsgSessionClosed_ForceSizeInt = 0x7FFFFFFF
|
|
};
|
|
|
|
// k_EMsgGCTrading_SessionClosed
|
|
struct MsgGCTrading_SessionClosed_t
|
|
{
|
|
uint32 m_eReason;
|
|
};
|
|
|
|
// k_EMsgGCTrading_CancelSession
|
|
struct MsgGCTrading_CancelSession_t
|
|
{
|
|
};
|
|
|
|
// k_EMsgGCTrading_TradeChatMsg
|
|
struct MsgGCTrading_TradeChatMsg_t
|
|
{
|
|
// char* variable length chat message, up to 128 characters
|
|
};
|
|
|
|
// k_EMsgGCTrading_TradeTypingChatMsg
|
|
struct MsgGCTrading_TradeTypingChatMsg_t
|
|
{
|
|
// empty
|
|
};
|
|
|
|
// k_EMsgGCUsedClaimCodeItem
|
|
struct MsgGCUsedClaimCodeItem_t
|
|
{
|
|
// string of URL
|
|
};
|
|
|
|
//-----------------------------------------------------------------------------
|
|
// ServerBrowser messages
|
|
|
|
enum EGCMsgServerBrowser
|
|
{
|
|
k_EGCMsgServerBrowser_FromServerBrowser = 0,
|
|
k_EGCMsgServerBrowser_FromAutoAskDialog = 1,
|
|
};
|
|
|
|
// k_EMsgGCServerBrowser_FavoriteServer
|
|
// k_EMsgGCServerBrowser_BlacklistServer
|
|
struct MsgGCServerBrowser_Server_t
|
|
{
|
|
uint32 m_unIP;
|
|
int m_usPort;
|
|
uint8 m_ubSource; // 0=serverbrowser, 1=auto-ask dialog
|
|
};
|
|
|
|
//-----------------------------------------------------------------------------
|
|
// Public facing loot lists.
|
|
|
|
// k_EMsgGC_RevolvingLootList
|
|
struct MsgGC_RevolvingLootList_t
|
|
{
|
|
uint8 m_usListID; // Id of this list.
|
|
// Var Data:
|
|
// Serialized Lootlist KV
|
|
};
|
|
|
|
//-----------------------------------------------------------------------------
|
|
// Microtransactions
|
|
|
|
// k_EMsgGCStorePurchaseFinalize
|
|
struct MsgGCStorePurchaseFinalize_t
|
|
{
|
|
uint64 m_ulTxnID; // Transaction ID for the the transaction
|
|
};
|
|
|
|
//k_EMsgGCStorePurchaseFinalizeResponse
|
|
struct MsgGCStorePurchaseFinalizeResponse_t
|
|
{
|
|
int16 m_eResult; // Result of the operation
|
|
uint32 m_cItemIDs; // Number of items contained in the purchase
|
|
// Var Data:
|
|
// If successful, list of m_cItemIDs uint64's
|
|
// that represent the purchased items
|
|
};
|
|
|
|
//k_EMsgGCStorePurchaseCancel
|
|
struct MsgGCStorePurchaseCancel_t
|
|
{
|
|
uint64 m_ulTxnID; // Transaction ID for the the transaction
|
|
};
|
|
|
|
//k_EMsgGCStorePurchaseCancelResponse
|
|
struct MsgGCStorePurchaseCancelResponse_t
|
|
{
|
|
int16 m_eResult; // Result of the operation
|
|
};
|
|
|
|
//k_EMsgGCStorePurchaseQueryTxn
|
|
struct MsgGCStorePurchaseQueryTxn_t
|
|
{
|
|
uint64 m_ulTxnID; // Transaction ID for the the transaction
|
|
};
|
|
|
|
//k_EMsgGCStorePurchaseQueryTxnResponse
|
|
struct MsgGCStorePurchaseQueryTxnResponse_t
|
|
{
|
|
int16 m_eResult; // Result of the operation
|
|
int16 m_ePurchaseState; // State of the queried transaction
|
|
uint32 m_cItemIDs; // Number of items contained in the purchase
|
|
// Var Data:
|
|
// If the order is final, list of m_cItemIDs uint64's
|
|
// that represent the items purchased by this order
|
|
};
|
|
|
|
// k_EMsgGCLookupAccount
|
|
struct MsgGCLookupAccount_t
|
|
{
|
|
uint16 m_uiFindType;
|
|
|
|
// Var Data
|
|
// string containing Persona / URL / etc
|
|
};
|
|
|
|
// k_EMsgGCLookupAccountResponse
|
|
|
|
// k_EMsgGCLookupAccountName
|
|
struct MsgGCLookupAccountName_t
|
|
{
|
|
uint32 m_unAccountID;
|
|
};
|
|
|
|
// k_EMsgGCLookupAccountNameResponse
|
|
struct MsgGCLookupAccountNameResponse_t
|
|
{
|
|
uint32 m_unAccountID;
|
|
// string containing persona name
|
|
};
|
|
|
|
#pragma pack( pop )
|
|
|
|
#endif
|