Truy vấn kho đồ Steam và thao túng API.
Xem
Dịch vụ kho đồ Steam để biết thêm chi tiết.
Hàm con
Hàm con cho
ISteamInventory
được gọi qua hàm accessor ở dạng global
SteamInventory()
.
AddPromoItem
bool AddPromoItem( SteamInventoryResult_t *pResultHandle, SteamItemDef_t itemDef );
Trao vật phẩm khuyến mãi một lần cho người dùng hiện tại.
Có thể an toàn gọi từ client vì vật phẩm nó trao có thể được khóa qua chính sách trong itemdefs. Một trong những tình huống chính của lệnh gọi này là trao vật phẩm cho người dùng có sở hữu một trò chơi cụ thể khác. Có thể hữu dụng nếu trò chơi của bạn có giao diện riêng để hiện vật phẩm khuyến mãi cụ thể cho người dùng, còn không, nếu bạn muốn trao nhiều vật phẩm khuyến mãi thì dùng
AddPromoItems hoặc
GrantPromoItems.
Bất kỳ vật phẩm nào có thể trao PHẢI có thuộc tính "promo" trong itemdef của chúng. Vật phẩm khuyến mãi đó liệt kê các appID mà người dùng phải sở hữu để được trao vật phẩm đó. Phiên bản này sẽ trao tất cả vật phẩm có thuộc tính promo được chỉ định cho chúng trong thiết lập của định nghĩa vật phẩm. Điều này cho phép thêm vật phẩm khuyến mãi mà không cần phải cập nhật phần mềm trò chơi. Ví dụ đoạn sau đây cho phép vật phẩm được trao nếu người dùng sở hữu TF2 hoặc SpaceWar.
promo: owns:440;owns:480
Trả về: bool
Hàm này luôn trả về
true khi gọi bởi người dùng thông thường, và luôn trả về
false khi được gọi từ SteamGameServer.
Khi thành công, kết quả kho đồ sẽ gồm các vật phẩm đã được trao, nếu có. Nếu không có vật phẩm nào được trao vì người dùng không đủ điều kiện nhận khuyến mãi, đây vẫn được xem là thành công.
Trả về handle kết quả mới qua
pResultHandle
.
LƯU Ý: Bạn phải gọi
DestroyResult trên kết quả kho đồ được cung cấp khi bạn đã xong với nó.
Ví dụ:void CInventory::GrantPromoItems()
{
SteamInventory()->AddPromoItem( &s_GenerateRequestResult, 110 );
}
AddPromoItems
bool AddPromoItems( SteamInventoryResult_t *pResultHandle, const SteamItemDef_t *pArrayItemDefs, uint32 unArrayLength );
Tên | Loại | Mô tả |
pResultHandle | SteamInventoryResult_t * | Trả về handle mới cho kết quả kho đồ. |
pArrayItemDefs | const SteamItemDef_t * | Danh sách các vật phẩm để trao cho người dùng. |
unArrayLength | uint32 | Số vật phẩm trong pArrayItemDefs . |
Trao vật phẩm khuyến mãi một lần cho người dùng hiện tại.
Có thể an toàn gọi từ client vì vật phẩm nó trao có thể được khóa qua chính sách trong itemdefs. Một trong những tình huống chính của lệnh gọi này là trao vật phẩm cho người dùng có sở hữu một trò chơi cụ thể khác. Nếu bạn muốn trao một vật phẩm khuyến mãi đơn lẻ, thì dùng
AddPromoItem. Nếu bạn muốn trao tất cả vật phẩm khuyến mãi có thể có, thì dùng
GrantPromoItems.
Bất kỳ vật phẩm nào có thể trao PHẢI có thuộc tính "promo" trong itemdef của chúng. Vật phẩm khuyến mãi đó liệt kê các appID mà người dùng phải sở hữu để được nhận vật phẩm. Phiên bản này sẽ trao tất cả vật phẩm có thuộc tính promo được chỉ định cho chúng trong thiết lập của định nghĩa vật phẩm. Điều này cho phép thêm vật phẩm khuyến mãi mà không cần phải cập nhật phần mềm trò chơi. Ví dụ đoạn sau đây cho phép vật phẩm được trao nếu người dùng sở hữu TF2 hoặc SpaceWar.
promo: owns:440;owns:480
Trả về: bool
Hàm này luôn trả về
true khi gọi bởi người dùng thông thường, và luôn trả về
false khi được gọi từ SteamGameServer.
Khi thành công, kết quả kho đồ sẽ gồm các vật phẩm đã được trao, nếu có. Nếu không có vật phẩm nào được trao vì người dùng không đủ điều kiện nhận khuyến mãi, đây vẫn được xem là thành công.
Trả về handle kết quả mới qua
pResultHandle
.
LƯU Ý: Bạn phải gọi
DestroyResult trên kết quả kho đồ được cung cấp khi bạn đã xong với nó.
Ví dụ:void CInventory::GrantPromoItems()
{
SteamItemDef_t newItems[2];
newItems[0] = 110;
newItems[1] = 111;
SteamInventory()->AddPromoItems( &s_GenerateRequestResult, newItems, 2 );
}
CheckResultSteamID
bool CheckResultSteamID( SteamInventoryResult_t resultHandle, CSteamID steamIDExpected );
Kiểm tra xem handle kết quả kho đồ có thuộc về SteamID được chỉ định hay không.
Quan trọng khi dùng
DeserializeResult, để xác thực rằng một người dùng từ xa không giả vờ đang có kho đồ của người dùng khác.
Trả về: bool
true nếu kết quả thuộc về SteamID mục tiêu; còn không,
false.
ConsumeItem
bool ConsumeItem( SteamInventoryResult_t *pResultHandle, SteamItemInstanceID_t itemConsume, uint32 unQuantity );
Tiêu thụ vật phẩm từ kho đồ của một người dùng. Nếu số lượng của vật phẩm đó về 0, thì sẽ bị gỡ bỏ vĩnh viễn.
Khi vật phẩm được gỡ bỏ, thì không thể phục hồi. Không dành cho người yếu tim - nếu trò chơi của bạn có tích hợp việc gỡ bỏ vật phẩm, thì khuyến nghị lập một quy trình xác nhận với giao diện người dùng phức tạp.
Trả về: bool
Hàm này luôn trả về
true khi gọi bởi người dùng thông thường, và luôn trả về
false khi được gọi từ SteamGameServer.
Trả về handle kết quả mới qua
pResultHandle
.
LƯU Ý: Bạn phải gọi
DestroyResult trên kết quả kho đồ được cung cấp khi bạn đã xong với nó.
Xem thêm: ExchangeItems,
TransferItemQuantityVí dụ:void CInventory::DrinkOnePotion( SteamItemInstanceID_t itemID )
{
SteamInventory()->ConsumeItem( &s_ConsumeRequestResult, itemID, 1 );
}
DeserializeResult
bool DeserializeResult( SteamInventoryResult_t *pOutResultHandle, const void *pBuffer, uint32 unBufferSize, bool bRESERVED_MUST_BE_FALSE = false );
Tên | Loại | Mô tả |
pOutResultHandle | SteamInventoryResult_t * | Trả về handle mới cho kết quả kho đồ. |
pBuffer | const void * | Vùng đệm để giải tuần tự hóa (deserialize). |
unBufferSize | uint32 | Kích thước của pBuffer . |
bRESERVED_MUST_BE_FALSE | bool | Phải là false! |
Giải tuần tự hóa một bộ kết quả và xác thực các byte đặc trưng.
Lệnh gọi này có chế độ dành cho sự cố nhỏ, trong đó trạng thái handle được đặt thành
k_EResultExpired.
GetResultItems vẫn sẽ thành công trong chế độ này. Kết quả "expired" có thể chỉ ra rằng dữ liệu hết hạn - chứ không chỉ do hết thời gian (một giờ), nhưng cũng có thể vì một trong các vật phẩm trong bộ kết quả có thể đã trao đổi hoặc tiêu thụ kể từ khi tạo bộ kết quả. Bạn có thể so sánh mốc thời gian từ
GetResultTimestamp đến
ISteamUtils::GetServerRealTime để xác định độ cũ của dữ liệu. Bạn có thể bỏ qua mã kết quả "expired" và tiếp tục như thường, hoặc bạn có thể yêu cầu người chơi với dữ liệu hết hạn gửi lại bộ kết quả cập nhật.
Bạn nên gọi
CheckResultSteamID lên handle kết quả khi nó hoàn thành xác thực rằng người chơi ở xa hiện không giả vờ có kho đồ của người dùng khác.
LƯU Ý: Tham số
bRESERVED_MUST_BE_FALSE
để dành dùng trong tương lai và không nên đặt thành true.
Trả về: bool
Luôn trả về
true và rồi gửi mã số của lỗi qua
GetResultStatus.
Trả về handle kết quả mới qua
pResultHandle
.
LƯU Ý: Bạn phải gọi
DestroyResult trên kết quả kho đồ được cung cấp khi bạn đã xong với nó.
DestroyResult
void DestroyResult( SteamInventoryResult_t resultHandle );
Phá hủy một handle kết quả và giải phóng tất cả bộ nhớ liên quan.
ExchangeItems
bool ExchangeItems( SteamInventoryResult_t *pResultHandle, const SteamItemDef_t *pArrayGenerate, const uint32 *punArrayGenerateQuantity, uint32 unArrayGenerateLength, const SteamItemInstanceID_t *pArrayDestroy, const uint32 *punArrayDestroyQuantity, uint32 unArrayDestroyLength );
Tên | Loại | Mô tả |
pResultHandle | SteamInventoryResult_t * | Trả về handle mới cho kết quả kho đồ. |
pArrayGenerate | const SteamItemDef_t * | Danh sách các vật phẩm sẽ được tạo bởi lệnh gọi này. Hiện tại chỉ có thể là 1 vật phẩm! |
punArrayGenerateQuantity | const uint32 * | Số lượng của mỗi vật phẩm trong pArrayGenerate để tạo. Hiện tại chỉ có thể là 1 vật phẩm và nó phải đặt thành 1! |
unArrayGenerateLength | uint32 | Số vật phẩm trong pArrayGenerate và punArrayGenerateQuantity . Hiện tại phải là 1! |
pArrayDestroy | const SteamItemInstanceID_t * | Danh sách các vật phẩm sẽ được phá hủy bởi lệnh gọi này. |
punArrayDestroyQuantity | const uint32 * | Số lượng của mỗi vật phẩm trong pArrayDestroy để phá hủy. |
unArrayDestroyLength | uint32 | Số vật phẩm trong pArrayDestroy và punArrayDestroyQuantity . |
Trao một vật phẩm để đổi lấy một nhóm vật phẩm khác.
Có thể dùng để triển khai công thức chế tác hay chuyển hóa, hoặc vật phẩm tự mở gói ra thành các món khác (ví dụ: hòm kho báu).
Người gọi API này truyền thông tin vật phẩm yêu cầu và một mảng các vật phẩm hiện hữu cùng số lượng để đổi lấy nó. API hiện tại nhận mảng các vật phẩm để tạo nhưng vào lúc này kích thước của mảng đó phải là 1 và số lượng vật phẩm mới phải là 1.
Bất kỳ vật phẩm nào có thể trao PHẢI có thuộc tính exchange trong itemdef của chúng. Thuộc tính exchange chỉ định một bộ các công thức hợp lệ để đổi lấy vật phẩm này. Công thức đổi được 'Dịch vụ kho đồ' đánh giá theo phương thức atomic (kết quả là thất bại hoặc thành công, không thể thành công một phần); nếu thành phần được cung cấp không khớp công thức, hoặc không chứa đủ số lượng, thì việc trao đổi sẽ thất bại.
Ví dụ:
exchange: 101x1,102x1;103x5;104x3,105x3
Sẽ cho phép vật phẩm đổi lấy một #101 và một #102, năm #103 hoặc ba #104 và ba #105. Xem tài liệu
Schema kho đồ Steam để biết thêm chi tiết.
Trả về: bool
Hàm này trả về
true để báo hiệu thành công, và trả về
false khi được gọi từ SteamGameServer hoặc khi
unArrayGenerateLength
hay
punArrayGenerateQuantity
không được đặt thành
1.
Các trao đổi không khớp công thức, hoặc không cung cấp đủ số lượng, sẽ thất bại.
Trả về handle kết quả mới qua
pResultHandle
.
LƯU Ý: Bạn phải gọi
DestroyResult trên kết quả kho đồ được cung cấp khi bạn đã xong với nó.
Xem thêm: ConsumeItem,
TransferItemQuantityVí dụ:// Tìm vật phẩm trong kho đồ của người dùng với itemdef được cho
SteamItemInstanceID_t CInventory::GetItemIdFromInventory( SteamItemDef_t itemDefId );
void CInventory::Exchange()
{
SteamItemInstanceID_t inputItems[2];
uint32 inputQuantities[2];
inputItems[0] = GetItemIdFromInventory( 103 );
inputQuantities[0] = 3;
inputItems[1] = GetItemIdFromInventory( 104 );
inputQuantities[1] = 3;
SteamItemDef_t outputItems[1];
outputItems[0] = 100;
uint32 outputQuantity[1];
outputQuantity[0] = 1;
SteamInventory()->ExchangeItems( &s_ExchangeRequestResult, outputItems, outputQuantity, 1, inputItems, inputQuantities, 2 );
}
GenerateItems
bool GenerateItems( SteamInventoryResult_t *pResultHandle, const SteamItemDef_t *pArrayItemDefs, const uint32 *punArrayQuantity, uint32 unArrayLength );
Tên | Loại | Mô tả |
pResultHandle | SteamInventoryResult_t * | Trả về handle mới cho kết quả kho đồ. |
pArrayItemDefs | const SteamItemDef_t * | Danh sách các vật phẩm để trao cho người dùng. |
punArrayQuantity | const uint32 * | Số lượng của mỗi vật phẩm trong pArrayItemDefs để trao. Không bắt buộc, truyền vào NULL để chỉ định 1 cho mỗi vật phẩm. |
unArrayLength | uint32 | Số lượng vật phẩm trong pArrayItemDefs . |
Trao các vật phẩm cụ thể cho người dùng hiện tại, chỉ dành cho nhà phát triển.
API này dành cho mục đích thử nghiệm - chỉ có thể dùng được bởi tài khoản Steam thuộc nhóm nhà phát hành cho trò chơi của bạn.
Bạn có thể truyền vào một mảng các vật phẩm, xác định theo
SteamItemDef_t của chúng và thêm một mảng thứ hai tương ứng cho số lượng của mỗi vật phẩm (không bắt buộc). Độ dài các mảng này PHẢI khớp nhau!
Trả về: bool
Hàm này luôn trả về
true khi gọi bởi người dùng thông thường, và luôn trả về
false khi được gọi từ SteamGameServer.
Trả về handle kết quả mới qua
pResultHandle
.
LƯU Ý: Bạn phải gọi
DestroyResult trên kết quả kho đồ được cung cấp khi bạn đã xong với nó.
Ví dụ:void CInventory::GrantTestItems()
{
SteamItemDef_t newItems[2];
uint32 quantities[2];
newItems[0] = 110;
newItems[1] = 111;
quantities[0] = 1;
quantities[1] = 1;
SteamInventory()->GenerateItems( &s_GenerateRequestResult, newItems, quantities, 2 );
}
GetAllItems
bool GetAllItems( SteamInventoryResult_t *pResultHandle );
Bắt đầu lấy tất cả vật phẩm trong kho đồ của người dùng hiện tại.
LƯU Ý: Các lệnh gọi đến hàm này phải tuân theo giới hạn tần suất và có thể trả về kết quả đã lưu trong bộ nhớ tạm nếu được gọi quá thường xuyên. Chúng tôi khuyên bạn nên gọi hàm này chỉ khi chuẩn bị hiện toàn bộ kho đồ của người dùng, hoặc nếu kỳ vọng rằng kho đồ có thể đã đổi.
Trả về: bool
Hàm này luôn trả về
true khi gọi bởi người dùng thông thường, và luôn trả về
false khi được gọi từ SteamGameServer.
Trả về handle kết quả mới qua
pResultHandle
.
LƯU Ý: Bạn phải gọi
DestroyResult trên kết quả kho đồ được cung cấp khi bạn đã xong với nó.
Ví dụ:void SpaceWarItem::LoadInventory( IGameEngine *pGameEngine )
{
SteamInventory()->GetAllItems( &s_RequestResult );
}
GetEligiblePromoItemDefinitionIDs
bool GetEligiblePromoItemDefinitionIDs( CSteamID steamID, SteamItemDef_t *pItemDefIDs, uint32 *punItemDefIDsArraySize );
Tên | Loại | Mô tả |
steamID | CSteamID | SteamID của người dùng dành cho các vật phẩm này. Nên tương tự với SteamInventoryEligiblePromoItemDefIDs_t.m_steamID . |
pItemDefIDs | SteamItemDef_t * | Trả về ID định nghĩa vật phẩm bằng cách chép chúng vào mảng này. |
punItemDefIDsArraySize | uint32 * | Đây nên là độ dài của pItemDefIDs và tương tự như SteamInventoryEligiblePromoItemDefIDs_t.m_numEligiblePromoItemDefs . |
Lấy danh sách ID định nghĩa vật phẩm mà có thể trao cho người dùng.
Bạn nên gọi nó khi xử lý kết quả gọi từ
SteamInventoryEligiblePromoItemDefIDs_t để lấy các ID định nghĩa vật phẩm.
Trả về: bool
Xem thêm: AddPromoItem,
AddPromoItemsGetItemDefinitionIDs
bool GetItemDefinitionIDs( SteamItemDef_t *pItemDefIDs, uint32 *punItemDefIDsArraySize );
Tên | Loại | Mô tả |
pItemDefIDs | SteamItemDef_t * | Trả về định nghĩa vật phẩm bằng cách chép chúng vào mảng này. |
punItemDefIDsArraySize | uint32 * | Nên được đặt thành độ dài của pItemDefIDs . Nếu pItemDefIDs là NULL thì nó sẽ trả về số phần tử mà mảng cần giữ. |
Trả về bộ ID tất cả định nghĩa vật phẩm được định nghĩa trong trang Quản trị ứng dụng của trang web Steamworks.
Các định nghĩa vật phẩm này không nhất thiết phải là số nguyên liền kề.
Lệnh này nên được gọi để phản hồi cho một callback
SteamInventoryDefinitionUpdate_t. Không có lý do gì để gọi hàm này nếu trò chơi hardcode ID định nghĩa theo dạng số (ví dụ: mặt nạ tím = 20, mod vũ khí xanh dương = 55) và không cho phép thêm loại vật phẩm mới nếu thiếu cập nhật cho client.
Trả về: bool
Lệnh gọi trả về
true khi thành công. Nó chỉ trả về
false nếu định nghĩa vật phẩm chưa được nạp từ máy chủ, hoặc không có định nghĩa vật phẩm nào tồn tại cho ứng dụng hiện tại.
Nếu lệnh gọi này thành công thì
punItemDefIDsArraySize
sẽ chứa số lượng định nghĩa vật phẩm hiện có.
GetItemDefinitionProperty
bool GetItemDefinitionProperty( SteamItemDef_t iDefinition, const char *pchPropertyName, char *pchValueBuffer, uint32 *punValueBufferSizeOut );
Tên | Loại | Mô tả |
iDefinition | SteamItemDef_t | Định nghĩa vật phẩm để lấy thuộc tính. |
pchPropertyName | const char * | Tên thuộc tính để lấy giá trị. Nếu truyền vào NULL thì pchValueBuffer sẽ chứa một danh sách phân tách bằng dấu phẩy cho tất cả tên hiện có. |
pchValueBuffer | char * | Trả về giá trị liên quan với pchPropertyName . |
punValueBufferSizeOut | uint32 * | Đây nên đặt thành kích thước của pchValueBuffer , và trả về số byte cần thiết để giữ giá trị. |
Lấy thuộc tính chuỗi từ định nghĩa vật phẩm được chỉ định.
Lấy giá trị thuộc tính cho định nghĩa vật phẩm được chỉ định.
Lưu ý rằng một số thuộc tính (ví dụ như, "name") có thể được bản địa hóa và phụ thuộc vào thiết lập ngôn ngữ Steam hiện tại (xem
ISteamApps::GetCurrentGameLanguage). Các tên thuộc tính luôn là chữ và số ASCII cùng dấu gạch dưới.
Truyền vào
NULL cho
pchPropertyName
để lấy một danh sách phân tách bằng dấu phẩy cho tất cả tên thuộc tính hiện có. Trong chế độ này,
punValueBufferSizeOut
sẽ chứa kích thước vùng đệm được đề xuất. Còn không, nó sẽ là số byte thực sự được chép vào
pchValueBuffer
.
Trả về: bool
Trả về
true khi thành công; còn không,
false tức định nghĩa vật phẩm chưa được nạp từ máy chủ, hoặc không có định nghĩa vật phẩm nào tồn tại cho ứng dụng hiện tại, hay tên thuộc tính không được tìm thấy trong định nghĩa vật phẩm.
Giá trị liên quan được trả về qua
pchValueBuffer
, và tổng số byte cần thiết để giữ giá trị này có thể lấy từ
punValueBufferSizeOut
. Chúng tôi khuyến nghị gọi hàm này hai lần, lần đầu với
pchValueBuffer
đặt là
NULL và
punValueBufferSizeOut
đặt là 0 để lấy kích thước yêu cầu cho vùng đệm cho các lần gọi sau.
Đầu ra sẽ trông như thế này:
pchPropertyName
đặt là
NULL:
appid,itemdefid,Timestamp
v.v.
pchPropertyName
đặt là
"name":
SW_DECORATION_HAT
LƯU Ý: Đầu tiên gọi
LoadItemDefinitions, để đảm bảo vật phẩm sẵn sàng để dùng trước khi gọi GetItemDefinitionProperty.
GetItemsByID
bool GetItemsByID( SteamInventoryResult_t *pResultHandle, const SteamItemInstanceID_t *pInstanceIDs, uint32 unCountInstanceIDs );
Lấy trạng thái một tập hợp con trong kho đồ của người dùng hiện tại.
Tập hợp con được chỉ định bởi một mảng các InstanceID vật phẩm.
Kết quả lệnh gọi này có thể tuần tự hóa bằng
SerializeResult và truyền tới người chơi khác để "chứng minh" người dùng hiện tại sở hữu vật phẩm cụ thể, mà không làm lộ toàn bộ kho đồ của người dùng. Ví dụ, bạn có thể gọi nó với ID vật phẩm mà người dùng hiện đang trang bị, và tuần tự hóa nó vào một vùng đệm, rồi chuyển vùng đệm này tới người chơi khác khi gia nhập một trận đấu/trò chơi.
Trả về: bool
Hàm này luôn trả về
true khi gọi bởi người dùng thông thường, và luôn trả về
false khi được gọi từ SteamGameServer.
Trả về handle kết quả mới qua
pResultHandle
.
LƯU Ý: Bạn phải gọi
DestroyResult trên kết quả kho đồ được cung cấp khi bạn đã xong với nó.
GetItemPrice
bool GetItemPrice( SteamItemDef_t iDefinition, uint64 *pPrice );
Sau khi gọi
RequestPrices thành công, bạn có thể gọi phương thức này để lấy giá cho một định nghĩa vật phẩm cụ thể.
Trả về: bool
true khi thành công, tức đã điền thành công
pPrice
với giá của một ID định nghĩa vật phẩm được cho.
false nếu tham số không hợp lệ hoặc nếu không có cho ID định nghĩa vật phẩm được cho.
Xem thêm: RequestPricesGetItemsWithPrices
bool GetItemsWithPrices( SteamItemDef_t *pArrayItemDefs, uint64 *pPrices, uint32 unArrayLength );
Tên | Loại | Mô tả |
pArrayItemDefs | SteamItemDef_t * | Mảng các ID định nghĩa vật phẩm cần điền |
pPrices | uint64* | Mảng các giá cho mỗi ID định nghĩa vật phẩm tương ứng trong pArrayItemDefs. Giá được lấy theo tiền tệ địa phương của người dùng. |
unArrayLength | uint32 | Đây nên là độ dài của pArrayItemDefs và các mảng pPrices , vốn là lấy từ kết quả của việc gọi GetNumItemsWithPrices . |
Sau khi gọi
RequestPrices thành công, bạn có thể gọi phương thức này để lấy giá cho tất cả định nghĩa vật phẩm phù hợp. Dùng kết quả của
GetNumItemsWithPrices làm kích thước của mảng bạn truyền vào.
Trả về: bool
true khi thành công, tức
pArrayItemDefs
và
pPrices
đã được điền thành công bằng các ID định nghĩa vật phẩm và giá của các sản phẩm được bán.
false nếu tham số không hợp lệ
Xem thêm: RequestPrices,
GetItemPriceGetNumItemsWithPrices
uint32 GetNumItemsWithPrices();
Sau khi gọi
RequestPrices thành công, nó sẽ trả về số lượng định nghĩa vật phẩm với giá phù hợp.
Trả về: uint32Xem thêm: RequestPrices,
GetItemsWithPricesGetResultItemProperty
bool GetResultItemProperty( SteamInventoryResult_t resultHandle, uint32 unItemIndex, const char *pchPropertyName, char *pchValueBuffer, uint32 *punValueBufferSizeOut );
Tên | Loại | Mô tả |
resultHandle | SteamInventoryResult_t | Handle kết quả chứa vật phẩm để lấy thuộc tính. |
unItemIndex | uint32 | |
pchPropertyName | const char * | Tên thuộc tính để lấy giá trị. Nếu truyền vào NULL thì pchValueBuffer sẽ chứa một danh sách phân tách bằng dấu phẩy cho tất cả tên hiện có. |
pchValueBuffer | char * | Trả về giá trị liên quan với pchPropertyName . |
punValueBufferSizeOut | uint32 * | Đây nên đặt thành kích thước của pchValueBuffer , và trả về số byte cần thiết để giữ giá trị. |
Lấy các thuộc tính linh động từ một vật phẩm trong bộ kết quả kho đồ.
Các tên thuộc tính luôn là chữ và số ASCII, và/hoặc dấu gạch dưới.
Nếu kết quả không vừa với vùng đệm đã cho, một phần kết quả có thể được chép.
Trả về: bool
Trả về
true khi thành công; còn không,
false tức handle kết quả kho đồ là không hợp lệ hoặc chỉ mục được cung cấp không chứa vật phẩm.
GetResultItems
bool GetResultItems( SteamInventoryResult_t resultHandle, SteamItemDetails_t *pOutItemsArray, uint32 *punOutItemsArraySize );
Tên | Loại | Mô tả |
resultHandle | SteamInventoryResult_t | Handle cho kết quả kho đồ để lấy vật phẩm. |
pOutItemsArray | SteamItemDetails_t * | Chi tiết được trả về bằng cách chép chúng vào mảng này. |
punOutItemsArraySize | uint32 * | Nên được đặt thành độ dài của pOutItemsArray . Nếu pOutItemsArray là NULL thì nó sẽ trả về số phần tử mà mảng cần giữ. |
Lấy vật phẩm liên quan với handle kết quả kho đồ.
Trả về: bool
true nếu lệnh gọi thành công, còn không
false.
Các lý do có thể dẫn đến thất bại gồm:
-
resultHandle
không hợp lệ hoặc handle kết quả kho đồ chưa sẵn sàng.
-
pOutItemsArray
không đủ lớn để chứa mảng.
- Người dùng không có vật phẩm.
Nếu lệnh gọi này thành công thì
punItemDefIDsArraySize
sẽ chứa số lượng định nghĩa vật phẩm hiện có.
Ví dụ:bool bGotResult = false;
std::vector<SteamItemDetails_t> vecDetails;
uint32 count = 0;
if ( SteamInventory()->GetResultItems( callback->m_handle, NULL, &count ) )
{
vecDetails.resize( count );
bGotResult = SteamInventory()->GetResultItems( callback->m_handle, vecDetails.data(), &count );
}
GetResultStatus
EResult GetResultStatus( SteamInventoryResult_t resultHandle );
Tìm trạng thái của một handle kết quả kho đồ không đồng bộ.
Đây là kiểu thăm dò tương tự như đăng ký một hàm callback cho
SteamInventoryResultReady_t.
Trả về: EResultDù lệnh gọi có thành công hay không.
Giá trị khả thi:
Ví dụ:void SpaceWarItem::CheckInventory( IGameEngine *pGameEngine )
{
if ( s_RequestResult != 0 )
{
EResult result = SteamInventory()->GetResultStatus( s_RequestResult );
if ( result == k_EResultOK )
{
// Làm gì đó tại đây
}
}
}
GetResultTimestamp
uint32 GetResultTimestamp( SteamInventoryResult_t resultHandle );
Lấy thời gian máy chủ mà kết quả đó tạo ra.
Trả về: uint32Mốc thời gian được cung cấp dưới định dạng giờ Unix (Thời gian kể từ 01/01/1970)
Bạn có thể so sánh giá trị này với
ISteamUtils::GetServerRealTime để xác định độ cũ của kết quả.
GrantPromoItems
bool GrantPromoItems( SteamInventoryResult_t *pResultHandle );
Trao tất cả vật phẩm khuyến mãi một lần có thể có cho người dùng hiện tại.
Có thể an toàn gọi từ client vì vật phẩm nó trao có thể được khóa qua chính sách trong itemdefs. Một trong những tình huống chính của lệnh gọi này là trao vật phẩm cho người dùng có sở hữu một trò chơi cụ thể khác. Nếu muốn cấp vật phẩm khuyến mãi cụ thể thay vì tất cả, xem:
AddPromoItem và
AddPromoItems.
Bất kỳ vật phẩm nào có thể trao PHẢI có thuộc tính "promo" trong itemdef của chúng. Vật phẩm khuyến mãi đó liệt kê các appID mà người dùng phải sở hữu để được nhận vật phẩm. Phiên bản này sẽ trao tất cả vật phẩm có thuộc tính promo được chỉ định cho chúng trong thiết lập của định nghĩa vật phẩm. Điều này cho phép thêm vật phẩm khuyến mãi mà không cần phải cập nhật phần mềm trò chơi. Ví dụ đoạn sau đây cho phép vật phẩm được trao nếu người dùng sở hữu TF2 hoặc SpaceWar.
promo: owns:440;owns:480
Trả về: bool
Hàm này luôn trả về
true khi gọi bởi người dùng thông thường, và luôn trả về
false khi được gọi từ SteamGameServer.
Khi thành công, kết quả kho đồ sẽ gồm các vật phẩm đã được trao, nếu có. Nếu không có vật phẩm nào được trao vì người dùng không đủ điều kiện nhận khuyến mãi, đây vẫn được xem là thành công.
Trả về handle kết quả mới qua
pResultHandle
.
LƯU Ý: Bạn phải gọi
DestroyResult trên kết quả kho đồ được cung cấp khi bạn đã xong với nó.
Ví dụ:void CInventory::GrantPromoItems()
{
SteamInventory()->GrantPromoItems( &s_GenerateRequestResult );
}
LoadItemDefinitions
bool LoadItemDefinitions();
Kích hoạt nạp không đồng bộ và làm mới định nghĩa vật phẩm.
Định nghĩa vật phẩm là cách gán các "ID định nghĩa" (số nguyên từ 1 đến 999999999) tới một bộ các thuộc tính chuỗi. Cần phải có một số các thuộc tính này để hiện vật phẩm trên trang web cộng đồng Steam. Các thuộc tính khác có thể được định nghĩa bởi ứng dụng. Không có lý do gì để gọi hàm này nếu trò chơi hardcode ID định nghĩa theo dạng số (ví dụ: mặt nạ tím = 20, mod vũ khí xanh dương = 55) và không cho phép thêm loại vật phẩm mới nếu thiếu cập nhật cho client.
Trả về: bool
Kích hoạt callback
SteamInventoryDefinitionUpdate_t.
Lệnh gọi này sẽ luôn trả về
true.
RequestEligiblePromoItemDefinitionsIDs
SteamAPICall_t RequestEligiblePromoItemDefinitionsIDs( CSteamID steamID );
Tên | Loại | Mô tả |
steamID | CSteamID | SteamID của người dùng cần yêu cầu vật phẩm khuyến mãi đủ điều kiện. |
Yêu cầu danh sách các vật phẩm khuyến mãi "eligible" (đủ điều kiện) mà có thể trao thủ công cho người dùng được chỉ định.
Đây là các vật phẩm khuyến mãi loại "manual" (thủ công), sẽ không được tự động trao. Ví dụ về việc sử dụng vật phẩm xuất hiện mỗi tuần.
Sau khi gọi hàm này bạn cần gọi
GetEligiblePromoItemDefinitionIDs để lấy ID định nghĩa vật phẩm thực tế.
Trả về: SteamAPICall_t để dùng với kết quả lệnh gọi từ
SteamInventoryEligiblePromoItemDefIDs_t.
Trả về
k_uAPICallInvalid nếu
steamID
không phải là một tài khoản cá nhân hợp lệ.
RequestPrices
SteamAPICall_t RequestPrices();
Yêu cầu giá cho tất cả định nghĩa vật phẩm có thể mua theo tiền tệ địa phương của người dùng. Một kết quả gọi
SteamInventoryRequestPricesResult_t sẽ được trả về với mã tiền tệ địa phương của người dùng. Sau đó, bạn có thể gọi
GetNumItemsWithPrices và
GetItemsWithPrices để lấy giá cho tất cả định nghĩa vật phẩm đã biết, hoặc
GetItemPrice cho một định nghĩa vật phẩm cụ thể.
Trả về: SteamAPICall_t để dùng với kết quả lệnh gọi từ
SteamInventoryRequestPricesResult_t.
Trả về
k_uAPICallInvalid nếu có vấn đề nội bộ.
Xem thêm: GetNumItemsWithPrices,
GetItemsWithPrices,
GetItemPriceSendItemDropHeartbeat
void SendItemDropHeartbeat();
Không còn dùng.
SerializeResult
bool SerializeResult( SteamInventoryResult_t resultHandle, void *pOutBuffer, uint32 *punOutBufferSize );
Tên | Loại | Mô tả |
resultHandle | SteamInventoryResult_t | Handle cho kết quả kho đồ để tuần tự hóa. |
pOutBuffer | void * | Vùng đệm nơi chép vào kết quả được tuần tự hóa. |
punOutBufferSize | uint32 * | Đây nên đặt thành kích thước của pOutBuffer . Nếu pOutBuffer là NULL thì sẽ trả về kích thước cần để giữ vùng đệm. |
Các bộ kết quả đã tuần tự hóa chứa một dấu hiệu đặc trưng ngắn không thể bị làm giả hoặc phát lại giữa các phiên chơi khác nhau.
Một bộ kết quả có thể được tuần tự hóa trên client cục bộ, chuyển đến người chơi khác qua hệ thống mạng trò chơi của bạn, rồi được giải tuần tự hóa bởi người chơi từ xa. Đây là cách an toàn để ngăn hacker đưa tin giả về việc sở hữu vật phẩm hiếm/giá trị cao. Tuần tự hóa một bộ kết quả với byte đặc trưng lên vùng đệm đầu ra. Kích thước của kết quả được tuần tự hóa tùy vào số lượng vật phẩm được tuần tự hóa. Khi gửi vật phẩm cho an toàn tới người chơi khác, chúng tôi khuyến nghị dùng
GetItemsByID trước để tạo một bộ kết quả tối thiểu.
Kết quả được tích hợp sẵn mốc thời gian, và sẽ được xem là "expired" (hết hạn) sau một tiếng. Xem
DeserializeResult để xử lý việc hết hạn.
Nếu đặt
pOutBuffer
thành
NULL thì
punOutBufferSize
sẽ được đặt thành kích thước vùng đệm yêu cầu, để bạn có thể tạo vùng đệm rồi gọi lại lệnh này để điền dữ liệu vào.
Trả về: bool
true khi thành công, tức
punOutBufferSize
đã được điền thành công với kích thước của vùng đệm, và nếu
pOutBuffer
chỉ đến một vùng đệm với kích thước phù hợp thì nó cũng sẽ được điền vào.
false trong các trường hợp sau:
- Hàm này không được gọi bởi người dùng thông thường. Lệnh gọi không được hỗ trợ trên GameServers.
-
resultHandle
không hợp lệ hoặc handle cho kết quả kho đồ chưa sẵn sàng.
- Giá trị được truyền vào
punOutBufferSize
nhỏ hơn dự kiến và pOutBuffer
không phải là NULL.
StartPurchase
SteamAPICall_t StartPurchase( const SteamItemDef_t *pArrayItemDefs, const uint32 *punArrayQuantity, uint32 unArrayLength );
Tên | Loại | Mô tả |
pArrayItemDefs | SteamItemDef_t * | Mảng các ID định nghĩa vật phẩm mà người dùng muốn mua. |
punArrayQuantity | uint32 * | Mảng số lượng của mỗi định nghĩa vật phẩm mà người dùng muốn mua. |
unArrayLength | uint32 | Đây nên là độ dài của mảng pArrayItemDefs và punArrayQuantity . |
Bắt đầu quy trình mua cho người dùng, với định nghĩa vật phẩm từ "giỏ hàng" mà người dùng muốn mua. Người dùng sẽ được nhắc trong lớp phủ Steam về việc hoàn thành đơn hàng bằng tiền tệ địa phương của họ, và nạp ví tiền Steam nếu cần, v.v.
Nếu quá trình mua hàng được bắt đầu thành công, thì
m_ulOrderID
và
m_ulTransID
sẽ hợp lệ trong kết quả lệnh gọi
SteamInventoryStartPurchaseResult_t.
Nếu người dùng chấp thuận giao dịch và hoàn thành đơn hàng, thì callback
SteamInventoryResultReady_t sẽ được kích hoạt và bạn sau đó có thể lấy thông tin vật phẩm mới mà người dùng vừa có được.
LƯU Ý: Bạn phải gọi
DestroyResult trên kết quả kho đồ khi bạn đã xong với nó.
Trả về: SteamAPICall_t để dùng với kết quả gọi
SteamInventoryStartPurchaseResult_t.
Trả về
k_uAPICallInvalid nếu đầu vào không hợp lệ.
Thử nghiệm trong khi đang phát triển: Khi thử nghiệm StartPurchase trước khi phát hành ứng dụng, tất cả giao dịch thực hiện bởi thành viên đội phát triển / phát hành sẽ thông qua sandbox API nội bộ cho giao dịch phụ. Điều này có nghĩa bạn sẽ không bị tính phí cho đơn hàng phát sinh trước khi ứng dụng được phát hành nếu bạn thuộc nhóm nhà phát hành Steamworks.
TransferItemQuantity
bool TransferItemQuantity( SteamInventoryResult_t *pResultHandle, SteamItemInstanceID_t itemIdSource, uint32 unQuantity, SteamItemInstanceID_t itemIdDest );
Chuyển vật phẩm giữa các chồng với nhau bên trong kho đồ người dùng.
Có thể được dùng để dồn chồng, tách, và di chuyển vật phẩm. Vật phẩm nguồn và đích phải có chung ID itemdef. Để di chuyển vật phẩm lên một chồng đích, chỉ định nguồn, số lượng cần di chuyển, và ID vật phẩm đích. Để tách một chồng vật phẩm hiện hữu, truyền
k_SteamItemInstanceIDInvalid vào
itemIdDest
. Một chồng vật phẩm mới sẽ được tạo với số lượng đã yêu cầu.
LƯU Ý: Giới hạn trao đổi/đăng bán cũng được chép cùng vật phẩm được chuyển. Chồng vật phẩm đích nhận ngày trao đổi/đăng bán gần nhất cho bất kỳ vật phẩm nào trong chồng đó.
Trả về: bool
Hàm này luôn trả về
true khi gọi bởi người dùng thông thường, và luôn trả về
false khi được gọi từ SteamGameServer.
Trả về handle kết quả mới qua
pResultHandle
.
LƯU Ý: Bạn phải gọi
DestroyResult trên kết quả kho đồ được cung cấp khi bạn đã xong với nó.
Xem thêm: ConsumeItem,
ExchangeItemsVí dụ:void CInventory::CombineItems()
{
SteamInventoryResult_t transferResult;
// tách 2 vật phẩm từ một chồng hiện tại
SteamItemInstanceID_t bigStack = GetItemIdFromInventory( ... );
SteamInventory()->TransferItemQuantity( &transferResult, bigStack, 1, k_SteamItemInstanceIDInvalid );
// di chuyển 2 từ chồng A sang chồng B
SteamItemInstanceID_t originStack = GetItemIdFromInventory( ... );
SteamItemInstanceID_t destStack = GetItemIdFromInventory( ... );
SteamInventory()->TransferItemQuantity( &transferResult, originStack, 2, destStack );
}
TriggerItemDrop
bool TriggerItemDrop( SteamInventoryResult_t *pResultHandle, SteamItemDef_t dropListDefinition );
Kích hoạt rơi vật phẩm nếu người dùng đã chơi đủ lâu.
Có thể tùy biến thời lượng này tại hai nơi:
- Tại cấp độ ứng dụng bên trong Inventory Service: Playtime Item Grants (Dịch vụ kho đồ: Cấp vật phẩm theo giờ chơi). Điều này có thể tự động áp dụng lên tất cả vật phẩm "playtimegenerator" mà không chỉ định bất kỳ việc ghi đè nào.
- Trong định nghĩa vật phẩm "playtimegenerator". Thiết lập này sẽ được ưu tiên hơn bất kỳ thiết lập nào khác ở cấp độ ứng dụng.
Chỉ định nghĩa vật phẩm được đánh dấu là "playtimegenerator" mới có thể xuất hiện.
Thông thường hàm này nên được gọi vào cuối phiên chơi, màn chơi hay trận đấu, hoặc tại bất kỳ điểm quan trọng nào trong trò chơi mà việc rơi vật phẩm có thể xảy ra. Thiết lập playtimegenerator được tính theo phút, nên việc gọi thường xuyên hơn vài phút là không hữu ích và sẽ bị giới hạn tần suất trong phần mềm Steam. Máy chủ Steam sẽ thực hiện việc tính playtime (thời gian chơi) để ngăn việc rơi đồ quá thường xuyên. Máy chủ cũng sẽ quản lý việc thêm vật phẩm vào kho đồ người chơi.
Trả về: bool
Hàm này luôn trả về
true khi gọi bởi người dùng thông thường, và luôn trả về
false khi được gọi từ SteamGameServer.
Trả về handle kết quả mới qua
pResultHandle
.
LƯU Ý: Bạn phải gọi
DestroyResult trên kết quả kho đồ được cung cấp khi bạn đã xong với nó.
Kết quả kho đồ trả về bởi hàm này sẽ là vật phẩm mới được cấp nếu người chơi đủ điều kiện. Nếu người chơi không đủ điều kiện thì sẽ trả về kết quả trống ('[]').
Ví dụ:void CInventory::FinishGame()
{
SteamInventory()->TriggerItemDrop( &s_PlaytimeRequestResult, 10 );
}
StartUpdateProperties
SteamInventoryUpdateHandle_t StartUpdateProperties();
Bắt đầu một yêu cầu giao dịch để cập nhật
thuộc tính linh động trên các vật phẩm cho người dùng hiện tại. Lệnh gọi này bị giới hạn tần suất theo người dùng, vì vậy nên gửi các điều chỉnh thuộc tính theo từng đợt (ví dụ cuối mỗi màn chơi hoặc phiên chơi). Sau khi gọi
SetProperty hoặc
RemoveProperty cho tất cả vật phẩm bạn muốn điều chỉnh, bạn sẽ cần gọi
SubmitUpdateProperties để gửi yêu cầu tới máy chủ Steam. Một callback
SteamInventoryResultReady_t sẽ được kích hoạt với kết quả của thao tác.
Ví dụ:void CInventory::FinishLevel()
{
SteamInventoryUpdateHandle_t updateHandle = SteamInventory()->StartUpdateProperties();
for ( SteamItemInstanceID_t itemid : m_vecItemIDs )
{
SteamInventory()->SetProperty( updateHandle, itemid, "string_value", "blah" );
SteamInventory()->SetProperty( updateHandle, itemid, "bool_value", true );
SteamInventory()->SetProperty( updateHandle, itemid, "int64_value", (int64)55 );
SteamInventory()->SetProperty( updateHandle, itemid, "float_value", 123.456f );
}
SteamInventoryResult_t resultHandle;
SteamInventory()->SubmitUpdateProperties( updateHandle, &resultHandle );
}
LƯU Ý: Bạn phải gọi
DestroyResult trên kết quả kho đồ được cung cấp cho
SubmitUpdateProperties khi bạn đã xong với nó.
Trả về: SteamInventoryUpdateHandle_tXem thêm: SetProperty,
RemoveProperty,
SubmitUpdatePropertiesSubmitUpdateProperties
bool SubmitUpdateProperties( SteamInventoryUpdateHandle_t handle, SteamInventoryResult_t * pResultHandle );
Gửi yêu cầu giao dịch để điều chỉnh
thuộc tính linh động trên vật phẩm cho người dùng hiện tại. Xem
StartUpdateProperties.
LƯU Ý: Bạn phải gọi
DestroyResult trên kết quả kho đồ được cung cấp khi bạn đã xong với nó.
Trả về: bool
Xem thêm: StartUpdateProperties,
SetProperty,
RemovePropertyRemoveProperty
bool RemoveProperty( SteamInventoryUpdateHandle_t handle, SteamItemInstanceID_t nItemID, const char *pchPropertyName );
Gở bỏ một
thuộc tính linh động cho vật phẩm.
Trả về: bool
Xem thêm: StartUpdateProperties,
SetProperty,
SubmitUpdatePropertiesSetProperty
bool SetProperty( SteamInventoryUpdateHandle_t handle, SteamItemInstanceID_t nItemID, const char *pchPropertyName, const char *pchPropertyValue );
bool SetProperty( SteamInventoryUpdateHandle_t handle, SteamItemInstanceID_t nItemID, const char *pchPropertyName, bool bValue );
bool SetProperty( SteamInventoryUpdateHandle_t handle, SteamItemInstanceID_t nItemID, const char *pchPropertyName, int64 nValue );
bool SetProperty( SteamInventoryUpdateHandle_t handle, SteamItemInstanceID_t nItemID, const char *pchPropertyName, float flValue );
Tên | Loại | Mô tả |
handle | SteamInventoryUpdateHandle_t | Handle cập nhật tương ứng với yêu cầu giao dịch, được trả về từ StartUpdateProperties. |
nItemID | SteamItemInstanceID_t | ID vật phẩm được điều chỉnh. |
pchPropertyName | const char* | Thuộc tính linh động được thêm hoặc cập nhật. |
pchPropertyValue | const char* | Giá trị chuỗi được đặt. |
bValue | bool | Giá trị boolean được đặt. |
nValue | int64 | Giá trị số nguyên 64 bit được đặt. |
flValue | float | Giá trị số thực dấu phẩy động được đặt. |
Đặt một
thuộc tính linh động cho vật phẩm. Loại giá trị được hỗ trợ là chuỗi, boolean, số nguyên 64 bit, và float 32 bit.
Trả về: bool
Xem thêm: StartUpdateProperties,
RemoveProperty,
SubmitUpdatePropertiesLệnh callback
Đây là các callback có thể kích hoạt bằng cách gọi
SteamAPI_RunCallbacks. Rất nhiều trong số này sẽ được kích hoạt trực tiếp để phản hồi hàm con của
ISteamInventory
.
SteamInventoryDefinitionUpdate_t
Callback này kích hoạt khi bất kỳ định nghĩa vật phẩm nào được cập nhật, có thể là phản hồi với
LoadItemDefinitions hoặc bất cứ khi nào có định nghĩa vật phẩm mới (ví dụ, từ việc thêm linh động loại vật phẩm mới khi người chơi vẫn trong trò chơi).
Callback này không có trường.
Hàm liên quan: LoadItemDefinitionsSteamInventoryEligiblePromoItemDefIDs_t
Được trả về khi bạn đã yêu cầu danh sách các vật phẩm khuyến mãi "eligible" (đủ điều kiện) mà có thể trao thủ công cho người dùng được chỉ định. Đây là các vật phẩm khuyến mãi loại "manual" (thủ công), sẽ không được tự động trao. Ví dụ về việc sử dụng vật phẩm xuất hiện mỗi tuần.
Tên | Loại | Mô tả |
m_result | EResult | k_EResultOK khi thành công, bất kỳ giá trị nào khác tức thất bại. |
m_steamID | CSteamID | SteamID của người dùng dành cho các vật phẩm này. |
m_numEligiblePromoItemDefs | int | Số lượng vật phẩm khuyến mãi đủ điều kiện cho người dùng này. Bạn nên dùng hàm này để tạo một vùng đệm SteamItemDef_t để dùng với GetEligiblePromoItemDefinitionIDs nhằm lấy ItemDefs thực tế. |
m_bCachedData | bool | Chỉ ra rằng dữ liệu được lấy từ bộ nhớ tạm chứ không phải máy chủ. Điều này xảy ra nếu người dùng không đăng nhập hoặc không thể kết nối tới máy chủ Steam. |
Hàm liên quan: RequestEligiblePromoItemDefinitionsIDsSteamInventoryFullUpdate_t
Được kích hoạt khi GetAllItems thành công trả về một kết quả mới hơn kết quả gần đây nhất biết được. (Sẽ không kích hoạt nếu kho đồ không thay đổi, hoặc nếu kết quả từ hai lệnh gọi trùng nhau được trả về ngược thứ tự và kết quả sớm hơn đã được biết là cũ/lỗi thời.)
Callback thông thường
SteamInventoryResultReady_t sẽ vẫn kích hoạt liền sau đó; đây là một thông báo bổ sung để thuận tiện cho bạn.
SteamInventoryResultReady_t
Hàm này được kích hoạt bất cứ khi nào kết quả kho đồ chuyển từ
k_EResultPending sang bất kỳ trạng thái hoàn thành nào khác, xem
GetResultStatus để biết danh sách đầy đủ các trạng thái. Sẽ luôn có đúng một callback cho mỗi handle.
SteamInventoryStartPurchaseResult_t
Được trả về sau khi gọi
StartPurchase.
Tên | Loại | Mô tả |
m_result | EResult | k_EResultOK khi thành công, bất kỳ giá trị nào khác tức thất bại. |
m_ulOrderID | uint64 | ID đơn hàng tạo tự động khi bắt đầu mua hàng. |
m_ulTransID | uint64 | ID giao dịch tạo tự động khi bắt đầu mua hàng. |
SteamInventoryRequestPricesResult_t
Được trả về sau khi gọi
RequestPrices.
Struct
Đây là các struct mà hàm trong ISteamInventory có thể trả về và/hoặc tương tác với.
SteamItemDetails_t
Enum
Đây là các enum được định nghĩa để dùng với ISteamInventory.
ESteamItemFlags
Đây là các bitflag được đặt trong
SteamItemDetails_t.
Tên | Giá trị | Mô tả |
k_ESteamItemNoTrade | 1 << 0 | Vật phẩm này bị khóa theo tài khoản và không thể trao đổi hoặc cho đi. Đây là một flag trạng thái vật phẩm được gắn vĩnh viễn lên các instance cụ thể của vật phẩm. |
k_ESteamItemRemoved | 1 << 8 | Vật phẩm đã bị phá hủy, trao đổi, hết hạn, hoặc vô hiệu hóa theo cách khác. Đây là một flag xác nhận hành động chỉ được đặt một lần, là một phần của bộ kết quả. |
k_ESteamItemConsumed | 1 << 9 | Số lượng vật phẩm giảm đi 1 qua API ConsumeItem. Đây là một flag xác nhận hành động chỉ được đặt một lần, là một phần của bộ kết quả. |
Typedef
Đây là các typedef được định nghĩa để dùng với ISteamInventory.
Tên | Loại gốc | Mô tả |
SteamInventoryResult_t | int32 | Một handle cho kết quả kho đồ không đồng bộ. |
SteamItemDef_t | int32 | Loại vật phẩm trong trò chơi của bạn được xác định bằng "số định nghĩa vật phẩm" 32-bit. Các số định nghĩa hợp lệ phải từ 1 đến 999999999; số thấp hơn hoặc bằng 0 là không hợp lệ, và số lớn hơn hoặc bằng một tỉ (1x10^9) là dành riêng cho nội bộ Steam. |
SteamItemInstanceID_t | uint64 | Từng instance của một vật phẩm có một InstanceID độc nhất trên cấp độ global. ID này độc nhất do sự kết hợp của người chơi và một instance vật phẩm cụ thể, và sẽ không được chuyển tới người chơi khác hay tái sử dụng trên vật phẩm khác. |
SteamInventoryUpdateHandle_t | uint64 | Trả về từ lệnh gọi StartUpdateProperties, lệnh này tạo yêu cầu giao dịch để điều chỉnh thuộc tính linh động trên vật phẩm cho người dùng hiện tại. |
Hằng số
Đây là các hằng số được định nghĩa để dùng với ISteamInventory.
Tên | Loại | Giá trị | Mô tả |
k_SteamInventoryResultInvalid | SteamInventoryResult_t | -1 | Một handle kết quả kho đồ Steam không hợp lệ. |
k_SteamItemInstanceIDInvalid | SteamItemInstanceID_t | (SteamItemInstanceID_t)~0 | Một InstanceID vật phẩm không hợp lệ. Thường được trả về khi thao tác không thành công. Chúng tôi khuyến nghị bạn nên triển khai tất cả instance vật phẩm mới với giá trị này. |
STEAMINVENTORY_INTERFACE_VERSION | const char * | "STEAMINVENTORY_INTERFACE_V002" | |