Inventory
O Economy v2 agora está em disponibilidade geral. Para obter suporte e enviar comentários, acesse o Fórum do PlayFab.
Gerenciando inventários de jogadores
As APIs a seguir são usadas para ajudar a adicionar, remover, atualizar e excluir itens no inventário de um jogador. O limite atual é de 10000 itens, e você receberá um erro se ultrapassar esse valor.Obtendo o inventário de um jogador
Game Manager
- No Game Manager, navegue até
Players - Selecione o jogador que você deseja visualizar ou crie um
New Playere, em seguida, vá paraInventory (V2)
API
Você pode usar aGetInventoryItems para obter o inventário do jogador. Os jogadores estão limitados a acessar e manipular apenas o próprio inventário. Entidades de título podem passar um parâmetro Entity para indicar qual inventário de jogador desejam acessar.
Um exemplo de solicitação GetInventoryItems:
Mais informações sobre como usar
CollectionId e ter vários inventários por jogador podem ser encontradas aqui.
Tokens de continuação
O campoContinuationToken retornado por uma resposta de pesquisa pode ser passado para uma solicitação de inventário para paginar por várias contagens de resultados.
Adicionar itens de inventário
A APIAddInventoryItems é usada para adicionar itens diretamente ao inventário de um jogador específico. Ela recebe os parâmetros EntityId, ItemId e Amount e adiciona o item fornecido ao inventário de um jogador
Um exemplo de solicitação AddInventoryItems:
Subtrair itens de inventário
A APISubtractInventoryItems é usada para reduzir diretamente um item no inventário de um jogador em uma quantidade específica. Ela recebe os parâmetros EntityId, ItemId e Amount e remove a quantidade fornecida do item. Essa API gerará um erro se você tentar remover mais do que a quantidade disponível no momento.
Um exemplo de solicitação SubtractInventoryItems:
Atualizar itens de inventário
A APIUpdateInventoryItems é usada para definir diretamente um item no inventário de um jogador com uma quantidade específica. Ela recebe os parâmetros EntityId, ItemId e Amount e define a quantidade fornecida do item. Essa API pode ser usada tanto para aumentar quanto para reduzir a quantidade de um item, além de adicionar itens ao inventário de um jogador caso o item não exista.
Um exemplo de solicitação UpdateInventoryItems:
Excluir itens de inventário
A APIDeleteInventoryItems é usada para excluir uma pilha inteira de itens do inventário de um jogador.
Um exemplo de solicitação DeleteInventoryItems:
Comprar itens de inventário
A APIPurchaseInventoryItems usa o preço do item definido no catálogo, deduz o custo do inventário do jogador e o troca pela quantidade desejada do item. Você deve especificar o Item que deseja comprar e a Amount do item que deseja comprar.
Há alguns parâmetros principais específicos da API PurchaseInventoryItems:
PriceAmountsé uma lista de itens e quantidades que são preços por item do item. Esses preços devem corresponder a um valor configurado no Catálogo ou na Loja especificada.StoreIdé um parâmetro opcional da Loja da qual o item será comprado. Mais informações sobre Lojas podem ser encontradas aqui
PurchaseInventoryItems:
A API
PurchaseInventoryItems é usada para compras com moedas virtuais. Para compras com dinheiro real por meio de marketplaces externos (Apple App Store, Google Play, Steam, Microsoft Store), use as APIs de resgate correspondentes (como RedeemAppleAppStoreInventoryItems, RedeemGooglePlayInventoryItems, RedeemSteamInventoryItems ou RedeemMicrosoftStoreInventoryItems). Essas APIs validam o recibo de compra com o marketplace e concedem os itens ao inventário do jogador. Para obter mais informações, consulte Resgate no marketplace.Pacotes
Quando um pacote é comprado (viaPurchaseInventoryItems ou uma API de resgate de marketplace), o pacote é desempacotado automaticamente no inventário do jogador. Os itens individuais referenciados em ItemReferences do pacote são concedidos diretamente; o pacote em si não aparece como um item no inventário do jogador.
Por exemplo, comprar um pacote contendo 2x Laser Sword e 2x Laser Gun concede esses itens individualmente. O custo em moeda virtual definido em PriceOptions do pacote é deduzido do inventário do jogador como parte da transação.
Pacotes vinculados a produtos de marketplace via AlternateIds seguem o mesmo comportamento de desempacotamento quando resgatados. Para obter mais informações sobre como criar pacotes, consulte Pacotes.
Transferir itens de inventário
A APITransferInventoryItems pode ser usada de três maneiras diferentes.
- Para transferir itens entre jogadores (por exemplo, o Jogador A dá três maçãs ao Jogador B)
- Para transferir itens entre as coleções de inventário de um único jogador (por exemplo, o Jogador A move sua espada longa do inventário do personagem Mago para o inventário do personagem Guerreiro)
- Para transferir itens dentro do inventário de um único jogador para criar, remover e manipular Pilhas de itens (por exemplo, o Jogador A divide sua Pilha de 10 moedas de ouro em duas pilhas de três e sete moedas de ouro)
GivingItem e Amount são usados para representar a quantidade e o item que está sendo transferido. O ReceivingItem representa o destino do item na conta do jogador que recebe. Os parâmetros GivingItem e ReceivingItem são objetos InventoryItemReference que contêm o Id do item e o StackId. Tanto GivingItem quanto ReceivingItem podem estar vazios para lidar com transferências em que uma entidade não está transferindo itens. A menos que especificado, todos os itens são definidos como default para o StackId quando adicionados/transferidos para o inventário de um jogador.
1. Transferência entre jogadores
Para uma transferência entre jogadores,GivingEntity e ReceivingEntity devem ser especificados, representando o jogador que transfere os itens e o jogador que recebe os itens, respectivamente.
Um exemplo de solicitação TransferInventoryItems entre jogadores:
2. Transferência entre coleções
Para uma transferência entre coleções,GivingCollectionId e ReceivingCollectionId devem ser definidos, representando a ID da coleção de inventário de origem e de destino da transferência, respectivamente.
Um exemplo de solicitação TransferInventoryItems entre coleções:
default do jogador para a coleção main_character.
Mais informações sobre coleções podem ser encontradas aqui.
3. Transferência entre pilhas
Para uma transferência entre pilhas, oStackId de GivingItem e de ReceivingItem da solicitação deve ser especificado.
Um exemplo de solicitação TransferInventoryItems entre pilhas:
default do jogador para a pilha MyNewStack.
Mais informações sobre pilhas podem ser encontradas aqui.
API ExecuteInventoryOperations
Você pode usar a APIExecuteInventoryOperations para agrupar várias operações de inventário em uma única solicitação. As operações ocorrem na ordem especificada na solicitação e, se uma operação não puder ser executada, todo o conjunto de operações será cancelado.
A ExecuteInventoryOperations recebe um parâmetro Operation que é uma lista de operações. Pode haver no máximo 50 operações na lista Operation, mas os tipos de operação podem se repetir (por exemplo, 10 operações Add são válidas). Também há um limite de 300 itens que podem ser modificados/adicionados em uma única solicitação. Por exemplo, adicionar um pacote com 50 itens conta como 50 itens modificados. Os tipos de operação válidos são:
- Add
- Subtract
- Update
- Purchase
- Transfer*
- Delete
*Somente transferências em uma única coleção são compatíveis dentro de um lote.
ExecuteInventoryOperations:
Idempotência
Ao chamar as APIs de Inventory, você pode passar umaIdempotencyId que pode ser usada em situações em que chamadas repetitivas estão sendo feitas para fins de fallback ou redundância. Se várias chamadas de API tiverem a mesma IdempotencyId, o sistema garantirá que apenas uma dessas solicitações seja processada.
Por exemplo, a seguinte solicitação de API PurchaseItem pode ser chamada várias vezes, mas como todas as solicitações têm a mesma IdempotencyId, apenas uma única compra será feita para o inventário desse jogador.
IdempotencyId são armazenadas e aplicadas por 14 dias; depois disso, a ID pode ser usada novamente.
Usar a mesma
IdempotencyId para tipos de solicitação diferentes causará um conflito e gerará um erro.ETags e controle de simultaneidade
As APIs de gravação de inventário oferecem suporte ao controle de simultaneidade otimista por meio de ETags e cabeçalhos HTTP. Para obter todos os detalhes, consulte ETags de inventário.Propriedades de exibição
As Propriedades de exibição são propriedades de item personalizadas que podem ser adicionadas a itens e pilhas de itens nos inventários dos jogadores. Essas propriedades podem ser adicionadas pelas operaçõesAddInventoryItems, PurchaseInventoryItems, TransferInventoryItems e UpdateInventoryItems.
Adicionando propriedades a novas pilhas/itens
Para as APIsAddInventoryItems, PurchaseInventoryItems e TransferInventoryItems, as Propriedades de exibição só podem ser adicionadas quando uma nova pilha é criada. Para definir Propriedades de exibição para novos itens, o parâmetro NewStackValues deve ser definido na solicitação de API.
Um exemplo de solicitação AddInventoryItems com NewStackValues:
Atualizando propriedades de pilhas/itens existentes
Para atualizar as Propriedades de exibição em itens existentes, a APIUpdateInventoryItems pode ser usada para modificar as propriedades diretamente.
Um exemplo de solicitação UpdateInventoryItems com DisplayProperties:
