Documentação do Steamworks
Interface ISteamInventory
API de consulta e manipulação do Inventário Steam.

Consulte Serviço de Inventário Steam para mais informações.

Funções de membro

Funções de membro de ISteamInventory são chamadas através da função de acesso global SteamInventory().

AddPromoItem

bool AddPromoItem( SteamInventoryResult_t *pResultHandle, SteamItemDef_t itemDef );
NomeTipoDescrição
pResultHandleSteamInventoryResult_t *Retorna um handle de resultado novo do inventário.
itemDefSteamItemDef_tA definição de item a conceder ao utilizador.

Concede um único item promocional específico ao utilizador atual.

Esta função pode ser chamada em segurança a partir da aplicação Steam, porque os itens que pode conceder podem ser bloqueados mediante políticas nas ItemDefs. Um dos principais cenários desta chamada é conceder um item a utilizadores que também têm um jogo específico. É particularmente útil se o seu jogo tiver uma interface dedicada à apresentação de um item promocional específico ao utilizador. Caso contrário, use as funções AddPromoItems ou GrantPromoItems se pretender conceder vários itens promocionais.

Qualquer item que possa ser concedido TEM de conter o atributo "promo" na respetiva ItemDef. O item promocional lista os AppIDs que o utilizador deve possuir para que possa receber o item. Esta versão irá conceder todos os itens com um atributo "promo" especificado nas definições de itens configuradas. Desta forma, é possível adicionar mais itens promocionais sem ser necessário atualizar a aplicação do jogo. Por exemplo, o seguinte atributo irá permitir que o item seja concedido se o utilizador tiver o jogo TF2 ou Spacewar.

promo: owns:440;owns:480

Retorna: bool
Esta função retorna sempre true quando é chamada por um utilizador comum e retorna sempre false quando é chamada a partir de SteamGameServer.

Em caso de sucesso, o resultado do inventário irá incluir os itens que foram concedidos, se algum existe. Se nenhum item foi concedido porque o utilizador não é elegível para nenhuma promoção, a chamada é mesmo assim considerada um sucesso.

Retorna um handle de resultado novo via pResultHandle.

ATENÇÃO: deve chamar DestroyResult no resultado do inventário fornecido quando o terminar de usar.

Exemplo:
void CInventory::GrantPromoItems() { SteamInventory()->AddPromoItem( &s_GenerateRequestResult, 110 ); }

AddPromoItems

bool AddPromoItems( SteamInventoryResult_t *pResultHandle, const SteamItemDef_t *pArrayItemDefs, uint32 unArrayLength );
NomeTipoDescrição
pResultHandleSteamInventoryResult_t *Retorna um handle de resultado novo do inventário.
pArrayItemDefsconst SteamItemDef_t *A lista de itens a conceder ao utilizador.
unArrayLengthuint32O número de itens em pArrayItemDefs.

Concede um único item promocional específico ao utilizador atual.

Esta função pode ser chamada em segurança a partir da aplicação Steam, porque os itens que pode conceder podem ser bloqueados mediante políticas nas ItemDefs. Um dos principais cenários desta chamada é conceder um item a utilizadores que também têm um jogo específico. Se quiser conceder um único item promocional, use AddPromoItem. Se quiser conceder todos os itens promocionais possíveis, use GrantPromoItems.

Qualquer item que possa ser concedido TEM de conter o atributo "promo" na respetiva ItemDef. O item promocional lista os AppIDs que o utilizador deve possuir para que possa receber o item. Esta versão irá conceder todos os itens com um atributo "promo" especificado nas definições de itens configuradas. Desta forma, é possível adicionar mais itens promocionais sem ser necessário atualizar a aplicação do jogo. Por exemplo, o seguinte atributo irá permitir que o item seja concedido se o utilizador tiver o jogo TF2 ou Spacewar.

promo: owns:440;owns:480

Retorna: bool
Esta função retorna sempre true quando é chamada por um utilizador comum e retorna sempre false quando é chamada a partir de SteamGameServer.

Em caso de sucesso, o resultado do inventário irá incluir os itens que foram concedidos, se algum existe. Se nenhum item foi concedido porque o utilizador não é elegível para nenhuma promoção, a chamada é mesmo assim considerada um sucesso.

Retorna um handle de resultado novo via pResultHandle.

ATENÇÃO: deve chamar DestroyResult no resultado do inventário fornecido quando o terminar de usar.

Exemplo:
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 );
NomeTipoDescrição
resultHandleSteamInventoryResult_tO handle do resultado do inventário cujo SteamID verificar.
steamIDExpectedCSteamIDO SteamID que se pretende verificar.

Verifica se o handle de um resultado do inventário pertence ao SteamID especificado.

Esta função é importante ao usar DeserializeResult para confirmar que um jogador remoto não está a fingir ter o inventário de outro utilizador.

Retorna: bool
true se o resultado pertence ao SteamID especificado. Caso contrário, irá retornar false.

ConsumeItem

bool ConsumeItem( SteamInventoryResult_t *pResultHandle, SteamItemInstanceID_t itemConsume, uint32 unQuantity );
NomeTipoDescrição
pResultHandleSteamInventoryResult_t *Retorna um handle de resultado novo do inventário.
itemConsumeSteamItemInstanceID_tO ID da instância do item que se pretende consumir.
unQuantityuint32O número de itens na pilha que se pretende consumir.

Consome itens do inventário de um utilizador. Se a quantidade do item especificado chegar a zero, este será removido permanentemente.

Uma vez removido um item, não será possível recuperá-lo. Use esta função com prudência: se implementou uma funcionalidade de eliminação de itens no seu jogo, recomendamos que inclua um processo de confirmação com uma interface explicativa e detalhada.

Retorna: bool
Esta função retorna sempre true quando é chamada por um utilizador comum e retorna sempre false quando é chamada a partir de SteamGameServer.

Retorna um handle de resultado novo via pResultHandle.

ATENÇÃO: deve chamar DestroyResult no resultado do inventário fornecido quando o terminar de usar.

Consulte também: ExchangeItems, TransferItemQuantity

Exemplo:
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 );
NomeTipoDescrição
pOutResultHandleSteamInventoryResult_t *Retorna um handle de resultado novo do inventário.
pBufferconst void *O buffer que se pretende desserializar.
unBufferSizeuint32O tamanho de pBuffer.
bRESERVED_MUST_BE_FALSEboolDeve ser false!

Desserializa um conjunto de resultados e verifica os bytes de assinatura.

Esta chamada tem um possível modo de falha leve, onde o estado do handle é definido como k_EResultExpired. GetResultItems continuará a ter sucesso neste modo. O resultado "expired" pode indicar que os dados estão desatualizados, não devido ao tempo de validade (uma hora), mas também porque um dos itens no conjunto de resultados pode ter sido trocado ou consumido depois de o conjunto de resultados ter sido gerado. É possível comparar a data e a hora retornadas pela função GetResultTimestamp com as retornadas por ISteamUtils::GetServerRealTime para determinar a idade dos dados. Pode ignorar o código de resultado "expired" e continuar normalmente ou pode pedir ao jogador com dados expirados que envie um conjunto de resultados atualizado.

Deve chamar a função CheckResultSteamID com o handle do resultado após a conclusão para confirmar que um jogador remoto não está a fingir ter o inventário de outro utilizador.

ATENÇÃO: o parâmetro bRESERVED_MUST_BE_FALSE está reservado para utilização futura e nunca deve ser definido como true.

Retorna: bool
Retorna sempre true e depois envia códigos de erro através da função GetResultStatus.

Retorna um handle de resultado novo via pResultHandle.

ATENÇÃO: deve chamar DestroyResult no resultado do inventário fornecido quando o terminar de usar.

DestroyResult

void DestroyResult( SteamInventoryResult_t resultHandle );
NomeTipoDescrição
resultHandleSteamInventoryResult_tO handle do resultado do inventário que se pretende destruir.

Destrói um handle de resultado e liberta a memória associada.

ExchangeItems

bool ExchangeItems( SteamInventoryResult_t *pResultHandle, const SteamItemDef_t *pArrayGenerate, const uint32 *punArrayGenerateQuantity, uint32 unArrayGenerateLength, const SteamItemInstanceID_t *pArrayDestroy, const uint32 *punArrayDestroyQuantity, uint32 unArrayDestroyLength );
NomeTipoDescrição
pResultHandleSteamInventoryResult_t *Retorna um handle de resultado novo do inventário.
pArrayGenerateconst SteamItemDef_t *A lista dos itens que serão criados por esta chamada. Atualmente só pode conter 1 item!
punArrayGenerateQuantityconst uint32 *A quantidade de cada item em pArrayGenerate que se pretende criar. Atualmente só pode ser o valor 1!
unArrayGenerateLengthuint32O número de itens em pArrayGenerate e punArrayGenerateQuantity. Atualmente só pode ser o valor 1!
pArrayDestroyconst SteamItemInstanceID_t *A lista dos itens que serão destruídos por esta chamada.
punArrayDestroyQuantityconst uint32 *A quantidade de cada item em pArrayDestroy que se pretende destruir.
unArrayDestroyLengthuint32O número de itens em pArrayDestroy e punArrayDestroyQuantity.

Concede um item como resultado da conversão de um conjunto de outros itens.

Esta função pode ser usada para implementar receitas, transmutações ou itens que são abertos para conceder outros itens (por exemplo, uma arca de tesouro).

Ao chamar esta API, é passado um item específico, uma lista de itens existentes e as quantidades usadas na conversão. Atualmente, API aceita um array de itens para gerar, mas o tamanho dessa lista deve ser 1 e a quantidade do item novo deve ser 1.

Qualquer item que possa ser concedido TEM de conter o atributo "exchange" na respetiva ItemDef. O atributo "exchange" especifica um conjunto de receitas que são conversões válidas para este item. Receitas de conversão são avaliadas de uma só vez pelo serviço de inventário; se os componentes fornecidos não corresponderem à receita ou não contiverem a quantidade suficiente, a conversão irá falhar.

Por exemplo:
exchange: 101x1,102x1;103x5;104x3,105x3

Isto permitirá que o item seja convertido num item 101 + um item 102; em cinco itens 103; ou em três itens 104 + três itens 105. Consulte o artigo Inventário Steam - Esquema para mais detalhes.

Retorna: bool
Esta função retorna true em caso de sucesso. Retorna false quando chamada por SteamGameServer ou se unArrayGenerateLength ou punArrayGenerateQuantity não forem 1.

Conversões que não corresponderem a uma receita ou que não concederem as quantidades requeridas irão falhar.

Retorna um handle de resultado novo via pResultHandle.

ATENÇÃO: deve chamar DestroyResult no resultado do inventário fornecido quando o terminar de usar.

Consulte também: ConsumeItem, TransferItemQuantity

Exemplo:
// Encontra um item no inventário do utilizador com a ItemDef dada 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 );
NomeTipoDescrição
pResultHandleSteamInventoryResult_t *Retorna um handle de resultado novo do inventário.
pArrayItemDefsconst SteamItemDef_t *A lista de itens a conceder ao utilizador.
punArrayQuantityconst uint32 *A quantidade de cada item em pArrayItemDefs que se pretende conceder (opcional, passar NULL irá especificar 1 de cada item).
unArrayLengthuint32O número de itens em pArrayItemDefs.

Concede itens específicos ao utilizador atual (API usada apenas por developers).

Esta API foi concebida exclusivamente para fins de prototipagem e só pode ser usada por contas Steam que fazem parte do grupo de editora do seu jogo.

Pode passar um array com itens, identificados pelo SteamItemDef_t, e um segundo array opcional com as quantidades correspondentes de cada item. Estes arrays devem conter o mesmo número de elementos!

Retorna: bool
Esta função retorna sempre true quando é chamada por um utilizador comum e retorna sempre false quando é chamada a partir de SteamGameServer.

Retorna um handle de resultado novo via pResultHandle.

ATENÇÃO: deve chamar DestroyResult no resultado do inventário fornecido quando o terminar de usar.

Exemplo:
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 );
NomeTipoDescrição
pResultHandleSteamInventoryResult_t *Retorna um handle de resultado novo do inventário.

Começa a obter todos os itens do inventário do utilizador atual.

ATENÇÃO: as chamadas a esta função estão sujeitas a limites de frequência e podem retornar resultados em cache se a função for chamada com demasiada frequência. Recomendamos que chame esta função apenas quando estiver prestes a apresentar o inventário completo do utilizador ou se estiver à espera que o inventário tenha sido alterado.

Retorna: bool
Esta função retorna sempre true quando é chamada por um utilizador comum e retorna sempre false quando é chamada a partir de SteamGameServer.

Retorna um handle de resultado novo via pResultHandle.

NOTA: deve chamar DestroyResult no resultado do inventário fornecido quando o terminar de usar.

Exemplo:
void SpaceWarItem::LoadInventory( IGameEngine *pGameEngine ) { SteamInventory()->GetAllItems( &s_RequestResult ); }

GetEligiblePromoItemDefinitionIDs

bool GetEligiblePromoItemDefinitionIDs( CSteamID steamID, SteamItemDef_t *pItemDefIDs, uint32 *punItemDefIDsArraySize );
NomeTipoDescrição
steamIDCSteamIDO SteamID do utilizador destinatário destes itens. Este valor deve ser igual ao de SteamInventoryEligiblePromoItemDefIDs_t.m_steamID.
pItemDefIDsSteamItemDef_t *Retorna os IDs de definição de item ao copiá-los para este array.
punItemDefIDsArraySizeuint32 *O tamanho de pItemDefIDs, que deve ser igual a SteamInventoryEligiblePromoItemDefIDs_t.m_numEligiblePromoItemDefs.

Obtém a lista de IDs de definição de item que podem ser concedidos a um utilizador.

Deve chamar esta função ao processar o resultado de chamada SteamInventoryEligiblePromoItemDefIDs_t para obter os IDs de definição de item.

Retorna: bool


Consulte também: AddPromoItem, AddPromoItems

GetItemDefinitionIDs

bool GetItemDefinitionIDs( SteamItemDef_t *pItemDefIDs, uint32 *punItemDefIDsArraySize );
NomeTipoDescrição
pItemDefIDsSteamItemDef_t *Retorna as definições de itens ao copiá-los para este array.
punItemDefIDsArraySizeuint32 *Deve ser do mesmo tamanho que pItemDefIDs. Se pItemDefIDs for NULL, será retornado o número de elementos necessários no array.

Retorna o conjunto de todos os IDs de definição de item configurados no painel de administração da aplicação no site do Steamworks.

Estas definições de itens não serão necessariamente números inteiros contíguos.

Apenas deve ser chamada como resposta a um callback SteamInventoryDefinitionUpdate_t. Não há motivo para chamar esta função se os IDs de definição numéricos forem fixos no jogo (por exemplo, máscara roxa = 20, modificação de arma azul = 55) e não permite que novos tipos de item sejam adicionados sem uma atualização da aplicação.

Retorna: bool
Esta chamada retorna true em caso de sucesso. Apenas retorna false se as definições de itens não foram carregadas do servidor ou se não existirem definições de itens para a aplicação atual.

Se a chamada for bem-sucedida, punItemDefIDsArraySize irá conter o número de definições de itens disponíveis.

GetItemDefinitionProperty

bool GetItemDefinitionProperty( SteamItemDef_t iDefinition, const char *pchPropertyName, char *pchValueBuffer, uint32 *punValueBufferSizeOut );
NomeTipoDescrição
iDefinitionSteamItemDef_tA definição de item cujas propriedades se pretende obter.
pchPropertyNameconst char *O nome da propriedade cujo valor se pretende obter. Se passar NULL, então pchValueBuffer irá conter uma lista de todos os nomes disponíveis, separados por vírgula.
pchValueBufferchar *Retorna o valor associado com pchPropertyName.
punValueBufferSizeOutuint32 *Deve ser do mesmo tamanho que pchValueBuffer. Retorna o número de bytes necessários para armazenar o valor.

Obtém uma string de propriedade da definição de item especificada.
Obtém o valor de uma propriedade de uma definição de item específica.

Nota: algumas propriedades (por exemplo, "name") podem ser traduzidas e irão depender das definições de idioma atuais do Steam (consulte ISteamApps::GetCurrentGameLanguage). Nomes de propriedades irão conter caracteres ASCII alfanuméricos e o traço de sublinhado ( _ ).

Passe NULL no parâmetro pchPropertyName para obter uma lista dos nomes das propriedades disponíveis, separados por vírgula. Neste modo, punValueBufferSizeOut irá conter o tamanho sugerido para o buffer. Caso contrário, irá conter o número de bytes copiados para pchValueBuffer.

Retorna: bool
Retorna true em caso de sucesso; false se as definições de itens não foram carregadas do servidor, se nenhuma definição de item existir para a aplicação atual ou se a definição de item não contiver o nome de propriedade especificado.

O valor associado é retornado através do pchValueBuffer e o número total de bytes necessários para armazenar o valor está disponível em punValueBufferSizeOut. Recomendamos que chame esta função duas vezes; a primeira com pchValueBuffer definido como NULL e punValueBufferSizeOut definido como 0 para obter o tamanho necessário para o buffer da chamada subsequente.

O output será algo como o seguinte:
pchPropertyName definido como NULL:
appid,itemdefid,Timestamp etc...
pchPropertyName definido como "name":
SW_DECORATION_HAT

ATENÇÃO: chame a função LoadItemDefinitions primeiro, para garantir que os itens estão prontos para serem usados, antes de chamar a função GetItemDefinitionProperty.

GetItemsByID

bool GetItemsByID( SteamInventoryResult_t *pResultHandle, const SteamItemInstanceID_t *pInstanceIDs, uint32 unCountInstanceIDs );
NomeTipoDescrição
pResultHandleSteamInventoryResult_t *Retorna um handle de resultado novo do inventário.
pInstanceIDsconst SteamItemInstanceID_t *A lista dos IDs de instância de item cujos estados se pretende atualizar.
unCountInstanceIDsuint32O número de itens em pInstanceIDs.

Obtém o estado de um subconjunto do inventário do utilizador atual.

O subconjunto é especificado por um array de IDs de instância de item.

Os resultados desta chamada podem ser serializados ao usar SerializeResult e passados a outros jogadores para "provar" que o utilizador atual possui itens específicos sem expor o respetivo inventário inteiro. Por exemplo, pode chamar esta função com os IDs dos itens equipados pelo utilizador, serializá-los num buffer e depois transmitir este buffer para os outros jogadores ao entrar numa partida.

Retorna: bool
Esta função retorna sempre true quando é chamada por um utilizador comum e retorna sempre false quando é chamada a partir de SteamGameServer.

Retorna um handle de resultado novo via pResultHandle.

ATENÇÃO: deve chamar DestroyResult no resultado do inventário fornecido quando o terminar de usar.

GetItemPrice

bool GetItemPrice( SteamItemDef_t iDefinition, uint64 *pPrice );
NomeTipoDescrição
iDefinitionSteamItemDef_tO ID da definição de item cujo preço se pretende obter.
pPriceuint64*O ponteiro de preço que se pretende preencher. Os preços são apresentados na moeda local do utilizador.

Depois de uma chamada bem-sucedida a RequestPrices, pode chamar esta função para obter os preços de uma definição de item específica.

Retorna: bool
true em caso de sucesso, indicando que pPrice foi preenchido com o preço da definição de item especificada;
false se os parâmetros forem inválidos ou se não houver um preço associado à definição de item especificada.

Consulte também: RequestPrices

GetItemsWithPrices

bool GetItemsWithPrices( SteamItemDef_t *pArrayItemDefs, uint64 *pPrices, uint32 unArrayLength );
NomeTipoDescrição
pArrayItemDefsSteamItemDef_t *O array de IDs de definição de item que se pretende preencher.
pPricesuint64*O array de preços para cada ID de definição de item correspondente em pArrayItemDefs. Os preços são apresentados na moeda local do utilizador.
unArrayLengthuint32Deve ser o tamanho dos arrays pArrayItemDefs e pPrices, resultantes da chamada a GetNumItemsWithPrices.

Depois de uma chamada bem-sucedida a RequestPrices, pode chamar esta função para obter todos os preços de definições de itens aplicáveis. Use o resultado de GetNumItemsWithPrices como o tamanho dos arrays passados.

Retorna: bool
true em caso de sucesso, indicando que pArrayItemDefs e pPrices foram preenchidos com os IDs de definição de item e preços dos itens à venda;
false se os parâmetros forem inválidos.

Consulte também: RequestPrices, GetItemPrice

GetNumItemsWithPrices

uint32 GetNumItemsWithPrices();
Depois de uma chamada bem-sucedida a RequestPrices, será retornado o número de definições de itens com preços válidos.

Retorna: uint32

Consulte também: RequestPrices, GetItemsWithPrices

GetResultItemProperty

bool GetResultItemProperty( SteamInventoryResult_t resultHandle, uint32 unItemIndex, const char *pchPropertyName, char *pchValueBuffer, uint32 *punValueBufferSizeOut );
NomeTipoDescrição
resultHandleSteamInventoryResult_tO handle do resultado que contém o item cujas propriedades se pretende obter.
unItemIndexuint32
pchPropertyNameconst char *O nome da propriedade cujo valor se pretende obter. Se for NULL, pchValueBuffer irá conter uma lista de todos os nomes disponíveis, separados por vírgula.
pchValueBufferchar *Retorna o valor associado com pchPropertyName.
punValueBufferSizeOutuint32 *Deve ser do mesmo tamanho que pchValueBuffer. Retorna o número de bytes necessários para armazenar o valor.

Obtém as propriedades dinâmicas de um item num conjunto de resultados de inventário.

Nomes de propriedades são sempre compostos de caracteres ASCII alfanuméricos e o traço de sublinhado ( _ ).

Se os resultados não couberem no buffer fornecido, poderão ser copiados resultados parciais.

Retorna: bool
Retorna true em caso de sucesso; false se o handle do resultado do inventário for inválido ou se o índice fornecido não contiver um item.

GetResultItems

bool GetResultItems( SteamInventoryResult_t resultHandle, SteamItemDetails_t *pOutItemsArray, uint32 *punOutItemsArraySize );
NomeTipoDescrição
resultHandleSteamInventoryResult_tO handle do resultado do inventário cujos itens se pretende obter.
pOutItemsArraySteamItemDetails_t *Os detalhes são retornados ao copiá-los para este array.
punOutItemsArraySizeuint32 *Deve ser do mesmo tamanho que pOutItemsArray. Se pOutItemsArray for NULL, será retornado o número de elementos necessários no array.

Obtém os itens associados ao handle do resultado do inventário.

Retorna: bool
true se a chamada foi bem-sucedida; caso contrário, irá retornar false.
Possíveis motivos de falha:
  • resultHandle é inválido ou o handle do resultado do inventário não está pronto.
  • pOutItemsArray é demasiado pequeno para armazenar o array.
  • O utilizador não tem itens.

Se a chamada for bem-sucedida, punItemDefIDsArraySize irá conter o número de definições de itens disponíveis.

Exemplo:
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 );
NomeTipoDescrição
resultHandleSteamInventoryResult_tO handle do resultado do inventário cujo estado se pretende obter.

Determina o estado de um handle do resultado do inventário assíncrono.

É o equivalente de "polling" a registar uma função para o callback SteamInventoryResultReady_t.

Retorna: EResult
Se a chamada foi bem-sucedida ou não.

Valores possíveis:

Exemplo:
void SpaceWarItem::CheckInventory( IGameEngine *pGameEngine ) { if ( s_RequestResult != 0 ) { EResult result = SteamInventory()->GetResultStatus( s_RequestResult ); if ( result == k_EResultOK ) { // Fazer algo aqui } } }

GetResultTimestamp

uint32 GetResultTimestamp( SteamInventoryResult_t resultHandle );
NomeTipoDescrição
resultHandleSteamInventoryResult_tO handle do resultado do inventário cuja data e hora se pretende obter.

Obtém a data e a hora do servidor em que o resultado foi gerado.

Retorna: uint32
A data e a hora são especificadas no formato de Era Unix (segundos desde 1 de janeiro de 1970).

Pode comparar este valor com ISteamUtils::GetServerRealTime para determinar a idade do resultado.

GrantPromoItems

bool GrantPromoItems( SteamInventoryResult_t *pResultHandle );
NomeTipoDescrição
pResultHandleSteamInventoryResult_t *Retorna um handle de resultado novo do inventário.

Concede todos os itens promocionais únicos ao utilizador atual.

Esta função pode ser chamada em segurança a partir da aplicação Steam, porque os itens que pode conceder podem ser bloqueados mediante políticas nas ItemDefs. Um dos principais cenários desta chamada é conceder um item a utilizadores que também têm um jogo específico. Caso queira conceder um item promocional específico em vez de todos, consulte: AddPromoItem e AddPromoItems.

Qualquer item que possa ser concedido TEM de conter o atributo "promo" na respetiva ItemDef. O item promocional lista os AppIDs que o utilizador deve possuir para que possa receber o item. Esta versão irá conceder todos os itens com um atributo "promo" especificado nas ItemDefs configuradas. Desta forma, é possível adicionar mais itens promocionais sem ser necessário atualizar a aplicação do jogo. Por exemplo, o seguinte atributo irá permitir que o item seja concedido se o utilizador tiver o jogo TF2 ou Spacewar.

promo: owns:440;owns:480

Retorna: bool
Esta função retorna sempre true quando é chamada por um utilizador comum e retorna sempre false quando é chamada a partir de SteamGameServer.

Em caso de sucesso, o resultado do inventário irá incluir os itens que foram concedidos, se algum existe. Se nenhum item foi concedido porque o utilizador não é elegível para nenhuma promoção, a chamada é mesmo assim considerada um sucesso.

Retorna um handle de resultado novo via pResultHandle.

ATENÇÃO: deve chamar DestroyResult no resultado do inventário fornecido quando o terminar de usar.

Exemplo:
void CInventory::GrantPromoItems() { SteamInventory()->GrantPromoItems( &s_GenerateRequestResult ); }

LoadItemDefinitions

bool LoadItemDefinitions();
Aciona um carregamento e atualização assíncronos das definições de itens.

Definições de itens são um mapeamento de "IDs de definições" (números inteiros entre 1 e 999999999) a um conjunto de strings de propriedades. Algumas destas propriedades são obrigatórias para apresentar itens no site da Comunidade Steam. Outras propriedades podem ser definidas por aplicações. Não há motivo para chamar esta função se os IDs de definição numéricos forem fixos no jogo (por exemplo, máscara roxa = 20, modificação de arma azul = 55) e não permite que novos tipos de item sejam adicionados sem uma atualização da aplicação.

Retorna: bool
Ativa um callback SteamInventoryDefinitionUpdate_t.
Retorna sempre true.

RequestEligiblePromoItemDefinitionsIDs

SteamAPICall_t RequestEligiblePromoItemDefinitionsIDs( CSteamID steamID );
NomeTipoDescrição
steamIDCSteamIDO SteamID do utilizador cuja lista de itens promocionais disponíveis para concessão se pretende obter.

Pede a lista de itens promocionais que podem ser concedidos manualmente ao utilizador especificado.

Estes são itens promocionais do tipo "manual" que não serão concedidos automaticamente. Um exemplo de utilização seria um item que se torna disponível todas as semanas.

Depois de chamar esta função, precisa de chamar GetEligiblePromoItemDefinitionIDs para obter os IDs de definição dos itens em questão.

Retorna: SteamAPICall_t, a ser usado com um resultado de chamada SteamInventoryEligiblePromoItemDefIDs_t.
Retorna k_uAPICallInvalid se o steamID não for uma conta individual válida.

RequestPrices

SteamAPICall_t RequestPrices();

Obtém os preços de todas as definições de itens que podem ser comprados na moeda local do utilizador. Um resultado de chamada SteamInventoryRequestPricesResult_t será retornado com o código da moeda local do utilizador. De seguida, chame GetNumItemsWithPrices e GetItemsWithPrices para obter os preços de todas as definições de itens conhecidas, ou GetItemPrice para uma definição de item específica.

Retorna: SteamAPICall_t, a ser usado com um resultado de chamada SteamInventoryRequestPricesResult_t.
Retorna k_uAPICallInvalid se um problema interno ocorrer.

Consulte também: GetNumItemsWithPrices, GetItemsWithPrices, GetItemPrice

SendItemDropHeartbeat

void SendItemDropHeartbeat();
Obsoleto.

SerializeResult

bool SerializeResult( SteamInventoryResult_t resultHandle, void *pOutBuffer, uint32 *punOutBufferSize );
NomeTipoDescrição
resultHandleSteamInventoryResult_tO handle do resultado do inventário que se pretende serializar.
pOutBuffervoid *O buffer para o qual o resultado serializado será copiado.
punOutBufferSizeuint32 *Deve ser do mesmo tamanho que pOutBuffer. Se pOutBuffer for NULL, então isto retornará o tamanho necessário para armazenar o resultado.

Conjuntos de resultados serializados contêm uma assinatura curta que não pode ser falsificada nem replicada em sessões diferentes.

Um conjunto de resultados pode ser serializado no cliente local, transmitido para outros jogadores através do sistema de rede do seu jogo e desserializado pelos jogadores remotos. Esta é uma forma segura de impedir que algum hacker finja possuir itens raros ou de grande valor. Serializa um conjunto de resultados com bytes de assinatura e copia-o para um buffer de output. O tamanho de um resultado serializado depende do número de itens serializados. Ao transmitir itens de modo seguro para outros jogadores, é recomendado que use primeiro a função GetItemsByID para criar um conjunto de resultados mínimo.

Os resultados contêm a indicação da hora, que será considerada "expirada" depois de uma hora se ter passado. Consulte DeserializeResult para informações sobre a gestão de dados expirados.

Se pOutBuffer for NULL, então punOutBufferSize será o tamanho necessário do buffer. Pode criar o buffer e, de seguida, chamar esta função novamente para o preencher com o tamanho necessário do buffer.

Retorna: bool
true em caso de sucesso, indicando que punOutBufferSize foi preenchido com o tamanho do buffer e, se pOutBuffer apontar para um buffer de tamanho suficiente, este também estará preenchido;
false se:
  • Esta função não foi chamada por um utilizador comum. Esta chamada não é permitida em GameServers.
  • resultHandle é inválido ou o handle do resultado do inventário não está pronto.
  • O valor passado para punOutBufferSize era mais pequeno do que o esperado e pOutBuffer não era NULL.

StartPurchase

SteamAPICall_t StartPurchase( const SteamItemDef_t *pArrayItemDefs, const uint32 *punArrayQuantity, uint32 unArrayLength );
NomeTipoDescrição
pArrayItemDefsSteamItemDef_t *O array de IDs de definição de item que o utilizador pretende comprar.
punArrayQuantityuint32 *O array com as quantidades de cada definição de item que o utilizador pretende comprar.
unArrayLengthuint32O tamanho dos arrays pArrayItemDefs e punArrayQuantity.

Inicia o processo de compra para o utilizador, dado um "carrinho de compras" de definições de item que o utilizador pretende comprar. No Painel Steam, será pedido ao utilizador que conclua a compra na moeda local e, se necessário para tal, que adicione fundos à Carteira Steam.

Se o processo de compra foi iniciado com sucesso, m_ulOrderID e m_ulTransID
serão válidos no resultado de chamada SteamInventoryStartPurchaseResult_t.

Se o utilizador autorizar a transação e concluir a compra, o callback SteamInventoryResultReady_t será ativado e poderá obter os novos itens adquiridos. ATENÇÃO: deve chamar DestroyResult no resultado do inventário quando o terminar de usar.

Retorna: SteamAPICall_t, a ser usado com um resultado de chamada SteamInventoryStartPurchaseResult_t.
Returns k_uAPICallInvalid se o input foi inválido.
Testes durante o desenvolvimento: ao testar StartPurchase antes do lançamento da sua aplicação, todas as transações efetuadas por developers ou pela editora irão usar a API de microtransações para ambiente de teste (sandbox) internamente. Por outras palavras, a sua conta não será cobrada por compras realizadas antes do lançamento da aplicação se fizer parte do grupo da editora no Steamworks.

TransferItemQuantity

bool TransferItemQuantity( SteamInventoryResult_t *pResultHandle, SteamItemInstanceID_t itemIdSource, uint32 unQuantity, SteamItemInstanceID_t itemIdDest );
NomeTipoDescrição
pResultHandleSteamInventoryResult_t *Retorna um handle de resultado novo do inventário.
itemIdSourceSteamItemInstanceID_tO item original cuja quantidade se pretende transferir.
unQuantityuint32A quantidade do item que será transferida de itemIdSource para itemIdDest.
itemIdDestSteamItemInstanceID_tO item de destino. Pode passar k_SteamItemInstanceIDInvalid para dividir a pilha original em novas pilhas de itens com a quantidade pedida.

Transfere itens entre pilhas dentro do inventário de um utilizador.

Esta função pode ser usada para empilhar, dividir e mover itens. Os itens originais e de destino devem ter o mesmo ID de definição de item. De forma a mover itens para uma pilha de destino, especifique o item original, a quantidade que pretende mover e o ID do item de destino. Para dividir uma pilha existente, passe k_SteamItemInstanceIDInvalid para itemIdDest. Uma nova pilha de itens será gerada com a quantidade pedida.

ATENÇÃO: as restrições de troca e de Mercado são copiadas com os itens transferidos. A pilha de destino recebe as restrições de troca e de Mercado com a data mais distante de entre os itens incluídos.

Retorna: bool
Esta função retorna sempre true quando é chamada por um utilizador comum e retorna sempre false quando é chamada a partir de SteamGameServer.

Retorna um handle de resultado novo via pResultHandle.

NOTA: deve chamar DestroyResult no resultado do inventário fornecido quando o terminar de usar.

Consulte também: ConsumeItem, ExchangeItems

Exemplo:
void CInventory::CombineItems() { SteamInventoryResult_t transferResult; // divide uma pilha existente com 2 itens SteamItemInstanceID_t bigStack = GetItemIdFromInventory( ... ); SteamInventory()->TransferItemQuantity( &transferResult, bigStack, 1, k_SteamItemInstanceIDInvalid ); // move 2 itens da pilha A para a pilha B SteamItemInstanceID_t originStack = GetItemIdFromInventory( ... ); SteamItemInstanceID_t destStack = GetItemIdFromInventory( ... ); SteamInventory()->TransferItemQuantity( &transferResult, originStack, 2, destStack ); }

TriggerItemDrop

bool TriggerItemDrop( SteamInventoryResult_t *pResultHandle, SteamItemDef_t dropListDefinition );
NomeTipoDescrição
pResultHandleSteamInventoryResult_t *Retorna um handle de resultado novo do inventário.
dropListDefinitionSteamItemDef_tFaz referência a um ID de definição de item do tipo "playtimegenerator". Consulte o esquema do inventário para mais detalhes.

Concede um item se o utilizador tiver jogado durante um período suficiente.

Este período pode ser personalizado em dois locais:
  • A nível da aplicação, na secção de serviço de inventário: Distribuições de itens por tempo de jogo. As alterações irão aplicar-se automaticamente a todos os itens do tipo "playtimegenerator" sem valores especificados.
  • Na definição de um item do tipo "playtimegenerator". Esta configuração terá prioridade sobre qualquer valor especificado a nível da aplicação.

Apenas definições de itens marcadas como "playtimegenerator" podem ser geradas.

Normalmente, esta função deve ser chamada no fim de um jogo, nível, partida ou qualquer outro ponto significativo do jogo em que um item pode ser concedido. Como o gerador de itens é definido à base de minutos, chamar esta função mais de uma vez por minuto não é útil e a aplicação Steam irá limitar a sua frequência de utilização. Os servidores do Steam irão analisar o tempo de jogo para impedirem que itens sejam concedidos com demasiada frequência. Os servidores também tratam de adicionar o item ao inventário do jogador.

Retorna: bool
Esta função retorna sempre true quando é chamada por um utilizador comum e retorna sempre false quando é chamada a partir de SteamGameServer.

Retorna um handle de resultado novo via pResultHandle.

ATENÇÃO: deve chamar DestroyResult no resultado do inventário fornecido quando o terminar de usar.

O resultado do inventário retornado por esta função será o novo item concedido se o jogador puder receber um. Caso contrário, será retornado um resultado vazio ("[]").

Exemplo:
void CInventory::FinishGame() { SteamInventory()->TriggerItemDrop( &s_PlaytimeRequestResult, 10 ); }

StartUpdateProperties

SteamInventoryUpdateHandle_t StartUpdateProperties();

Inicia um pedido de transação para atualizar as propriedades dinâmicas de itens do utilizador atual. A frequência desta chamada é limitada por utilizador, logo modificações de propriedades devem ser agrupadas sempre que possível (por exemplo, no fim de um mapa ou sessão). Depois de chamar SetProperty ou RemoveProperty para todos os itens que pretende modificar, terá de chamar SubmitUpdateProperties para enviar o pedido aos servidores do Steam. Irá ocorrer um callback SteamInventoryResultReady_t com os resultados da operação.

Exemplo:
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 ); }

ATENÇÃO: deve chamar DestroyResult no resultado do inventário fornecido por SubmitUpdateProperties quando o terminar de usar.

Retorna: SteamInventoryUpdateHandle_t

Consulte também: SetProperty, RemoveProperty, SubmitUpdateProperties

SubmitUpdateProperties

bool SubmitUpdateProperties( SteamInventoryUpdateHandle_t handle, SteamInventoryResult_t * pResultHandle );
NomeTipoDescrição
handleSteamInventoryUpdateHandle_tO handle de atualização correspondente ao pedido de transação retornado por StartUpdateProperties.
pResultHandleSteamInventoryResult_t *Retorna um handle de resultado novo do inventário.

Envia o pedido de transação para modificar propriedades dinâmicas de itens do utilizador atual. Consulte: StartUpdateProperties.

ATENÇÃO: deve chamar DestroyResult no resultado do inventário fornecido quando o terminar de usar.

Retorna: bool

Consulte também: StartUpdateProperties, SetProperty, RemoveProperty

RemoveProperty

bool RemoveProperty( SteamInventoryUpdateHandle_t handle, SteamItemInstanceID_t nItemID, const char *pchPropertyName );
NomeTipoDescrição
handleSteamInventoryUpdateHandle_tO handle de atualização correspondente ao pedido de transação retornado por StartUpdateProperties.
nItemIDSteamItemInstanceID_tO ID do item a ser modificado.
pchPropertyNameconst char*A propriedade dinâmica a ser removida.

Remove uma propriedade dinâmica do item especificado.

Retorna: bool

Consulte també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 );
NomeTipoDescrição
handleSteamInventoryUpdateHandle_tO handle de atualização correspondente ao pedido de transação retornado por StartUpdateProperties.
nItemIDSteamItemInstanceID_tO ID do item a ser modificado.
pchPropertyNameconst char*A propriedade dinâmica a ser adicionada ou atualizada.
pchPropertyValueconst char*A string a ser definida.
bValueboolO valor booleano a ser definido.
nValueint64O valor inteiro de 64 bits a ser definido.
flValuefloatO número de ponto flutuante a ser definido.

Define uma propriedade dinâmica para o item especificado. Os tipos de valores possíveis são strings, booleanos, ints de 64 bits e floats de 32 bits.

Retorna: bool

Consulte também: StartUpdateProperties, RemoveProperty, SubmitUpdateProperties

Callbacks

Estes são os callbacks que podem ocorrer ao chamar SteamAPI_RunCallbacks. Muitos destes callbacks irão ocorrer diretamente como resposta às funções de membro de ISteamInventory.

SteamInventoryDefinitionUpdate_t

Este callback ocorre sempre que as definições de itens são atualizadas, o que pode ser em resposta a LoadItemDefinitions ou sempre que novas definições de itens estiverem disponíveis (por exemplo, pela adição dinâmica de novos tipos de itens enquanto os jogadores estiverem a jogar).

Este callback não tem campos.

Funções associadas: LoadItemDefinitions

SteamInventoryEligiblePromoItemDefIDs_t

Este callback ocorre depois de ter pedido a lista de itens promocionais que podem ser concedidos manualmente ao utilizador especificado. Estes são itens promocionais do tipo "manual" que não serão concedidos automaticamente. Um exemplo de utilização seria um item que se torna disponível todas as semanas.

NomeTipoDescrição
m_resultEResultk_EResultOK em caso de sucesso. Qualquer outro valor indica falha.
m_steamIDCSteamIDO SteamID do utilizador destinatário destes itens.
m_numEligiblePromoItemDefsintO número de itens promocionais disponíveis para este utilizador. Deve usar este valor para criar um buffer SteamItemDef_t e assim obter as definições de itens com a função GetEligiblePromoItemDefinitionIDs.
m_bCachedDataboolIndica que os dados foram obtidos da cache e não do servidor. Ocorre se o utilizador não tiver iniciado sessão ou se não pode estabelecer ligação com os servidores do Steam.

Funções associadas: RequestEligiblePromoItemDefinitionsIDs

SteamInventoryFullUpdate_t

Ocorre quando GetAllItems retorna, com sucesso, um resultado mais recente do que o último resultado conhecido (Não irá ocorrer se o inventário não foi alterado ou se os resultados de duas chamadas seguidas chegaram em ordem inversa e já se sabe que o resultado da primeira chamada é antigo ou está desatualizado).
O callback SteamInventoryResultReady_t comum irá ocorrer de imediato logo a seguir; esta é uma notificação adicional para a sua conveniência.

NomeTipoDescrição
m_handleSteamInventoryResult_tUm handle de resultado novo do inventário.

SteamInventoryResultReady_t

Ocorre sempre que um resultado do inventário faz a transição do estado k_EResultPending para qualquer outro estado de conclusão. Consulte GetResultStatus para a lista completa de estados. Haverá sempre exatamente um callback por handle.

NomeTipoDescrição
m_handleSteamInventoryResult_tO resultado do inventário que está agora pronto.
m_resultEResultO novo estado do handle. Equivalente a uma chamada à função GetResultStatus.

SteamInventoryStartPurchaseResult_t

Este callback ocorre após uma chamada à função StartPurchase.

NomeTipoDescrição
m_resultEResultk_EResultOK em caso de sucesso. Qualquer outro valor indica falha.
m_ulOrderIDuint64O ID gerado automaticamente (OrderID) do pedido associado à compra iniciada.
m_ulTransIDuint64O ID gerado automaticamente da transação referente à compra iniciada.

SteamInventoryRequestPricesResult_t

Este callback ocorre após uma chamada à função RequestPrices.

NomeTipoDescrição
m_resultEResultk_EResultOK em caso de sucesso. Qualquer outro valor indica falha.
m_rgchCurrencycharA string que representa o código da moeda local do utilizador.

Structs

As funções de ISteamInventory podem retornar e/ou interagir com estas structs.

SteamItemDetails_t



NomeTipoDescrição
m_itemIdSteamItemInstanceID_tO handle globalmente único da instância do item.
m_iDefinitionSteamItemDef_tO número da definição deste item.
m_unQuantityuint16A quantidade atual do item.
m_unFlagsuint16Uma máscara de bits que representa um conjunto de valores de ESteamItemFlags.

Enums

Estas são as enums (enumerações) definidas para uso com ISteamInventory.

ESteamItemFlags

Bit flags definidos em SteamItemDetails_t.

NomeValorDescrição
k_ESteamItemNoTrade1 << 0O item está preso à conta e não pode ser trocado ou oferecido. Esta é uma flag de estado que é anexada permanentemente a instâncias de item específicas.
k_ESteamItemRemoved1 << 8Item destruído, trocado, expirado ou invalidado. Esta é uma flag de confirmação de ação que é definida apenas uma vez como parte de um conjunto de resultados.
k_ESteamItemConsumed1 << 9A quantidade do item foi reduzida em 1 através da API ConsumeItem. Esta é uma flag de confirmação de ação que é definida apenas uma vez como parte de um conjunto de resultados.

Typedefs

Estes são os typedefs definidos para uso com ISteamInventory.

NomeTipo baseDescrição
SteamInventoryResult_tint32Um handle para um resultado do inventário assíncrono.
SteamItemDef_tint32Os tipos de itens no seu jogo são identificados por um "número de definição de item" de 32 bits.
Números de definição válidos vão de 1 a 999999999. Números menores do que/iguais a zero são inválidos e números maiores do que/iguais a mil milhões (1x10^9) são reservados para uso interno do Steam.
SteamItemInstanceID_tuint64Cada instância individual de um item tem um ID da instância globalmente único.
Este ID é único para a combinação de um jogador e instância específica de item. Não será transferido para outro jogador nem reutilizado para outro item.
SteamInventoryUpdateHandle_tuint64Retornado pela função StartUpdateProperties, que inicia um pedido de transação para modificar propriedades dinâmicas em itens do utilizador atual.

Constantes

Estas são as constantes definidas para uso com ISteamInventory.

NomeTipoValorDescrição
k_SteamInventoryResultInvalidSteamInventoryResult_t-1Um handle do resultado do inventário inválido.
k_SteamItemInstanceIDInvalidSteamItemInstanceID_t(SteamItemInstanceID_t)~0Um ID de instância de item inválido. Normalmente retornado quando uma operação falha. Recomendamos que inicialize todas as novas instâncias de item com este valor.
STEAMINVENTORY_INTERFACE_VERSIONconst char *"STEAMINVENTORY_INTERFACE_V002"
  翻译: