Tài liệu Steamworks
Interface ISteamInventory
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 (Member function)

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 );
TênLoạiMô tả
pResultHandleSteamInventoryResult_t *Trả về handle mới cho kết quả kho đồ.
itemDefSteamItemDef_tItemDef để cấp cho người chơi.

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ênLoạiMô tả
pResultHandleSteamInventoryResult_t *Trả về handle mới cho kết quả kho đồ.
pArrayItemDefsconst SteamItemDef_t *Danh sách các vật phẩm để trao cho người dùng.
unArrayLengthuint32Số 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 );
TênLoạiMô tả
resultHandleSteamInventoryResult_tHandle cho kết quả kho đồ để kiểm tra SteamID.
steamIDExpectedCSteamIDSteamID để xác thực.

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 );
TênLoạiMô tả
pResultHandleSteamInventoryResult_t *Trả về handle mới cho kết quả kho đồ.
itemConsumeSteamItemInstanceID_tInstanceID vật phẩm để tiêu thụ.
unQuantityuint32Số lượng vật phẩm trong chồng đó để tiêu thụ.

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, TransferItemQuantity

Ví 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ênLoạiMô tả
pOutResultHandleSteamInventoryResult_t *Trả về handle mới cho kết quả kho đồ.
pBufferconst void *Vùng đệm để giải tuần tự hóa (deserialize).
unBufferSizeuint32Kích thước của pBuffer.
bRESERVED_MUST_BE_FALSEboolPhả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 );
TênLoạiMô tả
resultHandleSteamInventoryResult_tHandle cho kết quả kho đồ để phá hủy.

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ênLoạiMô tả
pResultHandleSteamInventoryResult_t *Trả về handle mới cho kết quả kho đồ.
pArrayGenerateconst 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!
punArrayGenerateQuantityconst 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!
unArrayGenerateLengthuint32Số vật phẩm trong pArrayGeneratepunArrayGenerateQuantity. Hiện tại phải là 1!
pArrayDestroyconst SteamItemInstanceID_t *Danh sách các vật phẩm sẽ được phá hủy bởi lệnh gọi này.
punArrayDestroyQuantityconst uint32 *Số lượng của mỗi vật phẩm trong pArrayDestroy để phá hủy.
unArrayDestroyLengthuint32Số vật phẩm trong pArrayDestroypunArrayDestroyQuantity.

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, TransferItemQuantity

Ví 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ênLoạiMô tả
pResultHandleSteamInventoryResult_t *Trả về handle mới cho kết quả kho đồ.
pArrayItemDefsconst SteamItemDef_t *Danh sách các vật phẩm để trao cho người dùng.
punArrayQuantityconst 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.
unArrayLengthuint32Số 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 );
TênLoạiMô tả
pResultHandleSteamInventoryResult_t *Trả về handle mới cho kết quả kho đồ.

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ênLoạiMô tả
steamIDCSteamIDSteamID 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.
pItemDefIDsSteamItemDef_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.
punItemDefIDsArraySizeuint32 *Đâ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, AddPromoItems

GetItemDefinitionIDs

bool GetItemDefinitionIDs( SteamItemDef_t *pItemDefIDs, uint32 *punItemDefIDsArraySize );
TênLoạiMô tả
pItemDefIDsSteamItemDef_t *Trả về định nghĩa vật phẩm bằng cách chép chúng vào mảng này.
punItemDefIDsArraySizeuint32 *Nên được đặt thành độ dài của pItemDefIDs. Nếu pItemDefIDsNULL 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ênLoạiMô tả
iDefinitionSteamItemDef_tĐịnh nghĩa vật phẩm để lấy thuộc tính.
pchPropertyNameconst 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ó.
pchValueBufferchar *Trả về giá trị liên quan với pchPropertyName.
punValueBufferSizeOutuint32 *Đâ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à NULLpunValueBufferSizeOut đặ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 );
TênLoạiMô tả
pResultHandleSteamInventoryResult_t *Trả về handle mới cho kết quả kho đồ.
pInstanceIDsconst SteamItemInstanceID_t *Danh sách InstanceID vật phẩm để cập nhật trạng thái.
unCountInstanceIDsuint32Số lượng vật phẩm trong pInstanceIDs.

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 );
TênLoạiMô tả
iDefinitionSteamItemDef_tID định nghĩa vật phẩm để lấy giá
pPriceuint64*Con trỏ cho giá để điền vào. Giá được lấy theo tiền tệ địa phương của người dùng.

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: RequestPrices

GetItemsWithPrices

bool GetItemsWithPrices( SteamItemDef_t *pArrayItemDefs, uint64 *pPrices, uint32 unArrayLength );
TênLoạiMô tả
pArrayItemDefsSteamItemDef_t *Mảng các ID định nghĩa vật phẩm cần điền
pPricesuint64*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.
unArrayLengthuint32Đâ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 pArrayItemDefspPrices đã đượ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, GetItemPrice

GetNumItemsWithPrices

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ề: uint32

Xem thêm: RequestPrices, GetItemsWithPrices

GetResultItemProperty

bool GetResultItemProperty( SteamInventoryResult_t resultHandle, uint32 unItemIndex, const char *pchPropertyName, char *pchValueBuffer, uint32 *punValueBufferSizeOut );
TênLoạiMô tả
resultHandleSteamInventoryResult_tHandle kết quả chứa vật phẩm để lấy thuộc tính.
unItemIndexuint32
pchPropertyNameconst 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ó.
pchValueBufferchar *Trả về giá trị liên quan với pchPropertyName.
punValueBufferSizeOutuint32 *Đâ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ênLoạiMô tả
resultHandleSteamInventoryResult_tHandle cho kết quả kho đồ để lấy vật phẩm.
pOutItemsArraySteamItemDetails_t *Chi tiết được trả về bằng cách chép chúng vào mảng này.
punOutItemsArraySizeuint32 *Nên được đặt thành độ dài của pOutItemsArray. Nếu pOutItemsArrayNULL 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ênLoạiMô tả
resultHandleSteamInventoryResult_tHandle cho kết quả kho đồ để lấy trạng thái.

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ề: EResult
Dù 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 );
TênLoạiMô tả
resultHandleSteamInventoryResult_tHandle cho kết quả kho đồ để lấy mốc thời gian.

Lấy thời gian máy chủ mà kết quả đó tạo ra.

Trả về: uint32
Mố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 );
TênLoạiMô tả
pResultHandleSteamInventoryResult_t *Trả về handle mới cho kết quả kho đồ.

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: AddPromoItemAddPromoItems.

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ênLoạiMô tả
steamIDCSteamIDSteamID 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 GetNumItemsWithPricesGetItemsWithPrices để 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, GetItemPrice

SendItemDropHeartbeat

void SendItemDropHeartbeat();
Không còn dùng.

SerializeResult

bool SerializeResult( SteamInventoryResult_t resultHandle, void *pOutBuffer, uint32 *punOutBufferSize );
TênLoạiMô tả
resultHandleSteamInventoryResult_tHandle cho kết quả kho đồ để tuần tự hóa.
pOutBuffervoid *Vùng đệm nơi chép vào kết quả được tuần tự hóa.
punOutBufferSizeuint32 *Đây nên đặt thành kích thước của pOutBuffer. Nếu pOutBufferNULL 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ênLoạiMô tả
pArrayItemDefsSteamItemDef_t *Mảng các ID định nghĩa vật phẩm mà người dùng muốn mua.
punArrayQuantityuint32 *Mảng số lượng của mỗi định nghĩa vật phẩm mà người dùng muốn mua.
unArrayLengthuint32Đây nên là độ dài của mảng pArrayItemDefspunArrayQuantity.

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_ulOrderIDm_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 );
TênLoạiMô tả
pResultHandleSteamInventoryResult_t *Trả về handle mới cho kết quả kho đồ.
itemIdSourceSteamItemInstanceID_tVật phẩm nguồn để chuyển.
unQuantityuint32Số lượng vật phẩm sẽ được chuyển từ itemIdSource tới itemIdDest.
itemIdDestSteamItemInstanceID_tVật phẩm đích. Bạn có thể truyền k_SteamItemInstanceIDInvalid để tách chồng vật phẩm nguồn thành chồng vật phẩm mới với số lượng được yêu cầu.

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, ExchangeItems

Ví 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 );
TênLoạiMô tả
pResultHandleSteamInventoryResult_t *Trả về handle mới cho kết quả kho đồ.
dropListDefinitionSteamItemDef_tPhải chỉ itemdefid thuộc loại "playtimegenerator". Xem schema kho đồ để biết thêm chi tiết.

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_t

Xem thêm: SetProperty, RemoveProperty, SubmitUpdateProperties

SubmitUpdateProperties

bool SubmitUpdateProperties( SteamInventoryUpdateHandle_t handle, SteamInventoryResult_t * pResultHandle );
TênLoạiMô tả
handleSteamInventoryUpdateHandle_tHandle cập nhật tương ứng với yêu cầu giao dịch, được trả về từ StartUpdateProperties.
pResultHandleSteamInventoryResult_t *Trả về handle mới cho kết quả kho đồ.

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, RemoveProperty

RemoveProperty

bool RemoveProperty( SteamInventoryUpdateHandle_t handle, SteamItemInstanceID_t nItemID, const char *pchPropertyName );
TênLoạiMô tả
handleSteamInventoryUpdateHandle_tHandle cập nhật tương ứng với yêu cầu giao dịch, được trả về từ StartUpdateProperties.
nItemIDSteamItemInstanceID_tID vật phẩm được điều chỉnh.
pchPropertyNameconst char*Thuộc tính linh động bị xóa bỏ.

Gở bỏ một thuộc tính linh động cho vật phẩm.

Trả về: bool

Xem thêm: StartUpdateProperties, SetProperty, SubmitUpdateProperties

SetProperty

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ênLoạiMô tả
handleSteamInventoryUpdateHandle_tHandle cập nhật tương ứng với yêu cầu giao dịch, được trả về từ StartUpdateProperties.
nItemIDSteamItemInstanceID_tID vật phẩm được điều chỉnh.
pchPropertyNameconst char*Thuộc tính linh động được thêm hoặc cập nhật.
pchPropertyValueconst char*Giá trị chuỗi được đặt.
bValueboolGiá trị boolean được đặt.
nValueint64Giá trị số nguyên 64 bit được đặt.
flValuefloatGiá 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, SubmitUpdateProperties

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: LoadItemDefinitions

SteamInventoryEligiblePromoItemDefIDs_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ênLoạiMô tả
m_resultEResultk_EResultOK khi thành công, bất kỳ giá trị nào khác tức thất bại.
m_steamIDCSteamIDSteamID của người dùng dành cho các vật phẩm này.
m_numEligiblePromoItemDefsintSố 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_bCachedDataboolChỉ 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: RequestEligiblePromoItemDefinitionsIDs

SteamInventoryFullUpdate_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.

TênLoạiMô tả
m_handleSteamInventoryResult_tMột handle mới cho kết quả kho đồ.

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.

TênLoạiMô tả
m_handleSteamInventoryResult_tKết quả kho đồ mà giờ đã sẵn sàng.
m_resultEResultTrạng thái mới của handle. Điều này tương đương gọi GetResultStatus.

SteamInventoryStartPurchaseResult_t

Được trả về sau khi gọi StartPurchase.

TênLoạiMô tả
m_resultEResultk_EResultOK khi thành công, bất kỳ giá trị nào khác tức thất bại.
m_ulOrderIDuint64ID đơn hàng tạo tự động khi bắt đầu mua hàng.
m_ulTransIDuint64ID giao dịch tạo tự động khi bắt đầu mua hàng.

SteamInventoryRequestPricesResult_t

Được trả về sau khi gọi RequestPrices.

TênLoạiMô tả
m_resultEResultk_EResultOK khi thành công, bất kỳ giá trị nào khác tức thất bại.
m_rgchCurrencycharChuỗi đại diện cho mã tiền tệ địa phương của người dùng.

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



TênLoạiMô tả
m_itemIdSteamItemInstanceID_tHandle instance vật phẩm độc nhất ở mức global.
m_iDefinitionSteamItemDef_tSố định nghĩa vật phẩm cho vật phẩm này.
m_unQuantityuint16Số lượng hiện tại của vật phẩm này.
m_unFlagsuint16Đây là bộ sưu tập được bitmask của ESteamItemFlags.

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ênGiá trịMô tả
k_ESteamItemNoTrade1 << 0Vậ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_ESteamItemRemoved1 << 8Vậ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_ESteamItemConsumed1 << 9Số 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ênLoại gốcMô tả
SteamInventoryResult_tint32Một handle cho kết quả kho đồ không đồng bộ.
SteamItemDef_tint32Loạ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_tuint64Từ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_tuint64Trả 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ênLoạiGiá trịMô tả
k_SteamInventoryResultInvalidSteamInventoryResult_t-1Một handle kết quả kho đồ Steam không hợp lệ.
k_SteamItemInstanceIDInvalidSteamItemInstanceID_t(SteamItemInstanceID_t)~0Mộ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_VERSIONconst char *"STEAMINVENTORY_INTERFACE_V002"