Documentation Steamworks
Items-outils de l'inventaire Steam
Nous offrons maintenant en bêta la possibilité de définir des items « outils » que vous pouvez utiliser pour modifier les Tags d'items de l'inventaire Steam sur d'autres items.

En appelant ISteamInventory::ExchangeItems, vous passez à la fois l'outil et l'item cible. Les tags seront transférés ou générés et un nouvel item (copie de l'item cible) sera créé.

Ces tags seront envoyés automatiquement avec les autres attributs de l'item au client Steam et peuvent être récupérés en appelant ISteamInventory::GetResultItemProperty() avec le nom de propriété « tags ». Les tags seront retournés dans la chaine tampon fournie, et seront séparés par le caractère ;.

Exemple simple


Voici un exemple d'outil qui peut appliquer une couleur de « peinture » à un autre item.

Il vous faut d'abord une définition d'item pour l'outil. Notez qu'il peut être utile de supprimer les tags à l'aide de la propriété tags_to_remove_on_tool_use, autrement vous risquez d'avoir des tags ou des catégories de tags en double dans votre item si de multiples outils lui ont été appliqués. Tous les tags correspondant à ceux de l'outil seront d'abord supprimés avant d'en appliquer de nouveaux.

itemdefid: 100 type: tag_tool name: Pot de peinture rouge tags: couleur_peinture:rouge tags_to_remove_on_tool_use: couleur_peinture

Du côté de l'item cible, vous devrez spécifier qu'il peut recevoir le tag « couleur_peinture » :

itemdefid: 200 type: item name: Chapeau allowed_tags_from_tools: couleur_peinture

Ensuite, en appelant ISteamInventory::ExchangeItems, un utilisateur pourrait appliquer le « Pot de peinture rouge » à son « Chapeau » et l'item résultant devrait avoir le tag « couleur_peinture ». Notez que l'identifiant de définition d'item attendu doit correspondre à l'identifiant de définition d'item de l'item cible.

SteamItemInstanceID_t inputItems[2] = { unPaintCanItemDefID, unHatItemDefID }; uint32 inputQuantities[2] = { 1, 1 }; SteamItemDef_t outputItems[1] = { unHatItemDefID }; uint32 outputQuantity[1] = { 1 }; SteamInventoryResult_t resultHandle; SteamInventory()->ExchangeItems( &resultHandle, outputItems, outputQuantity, 1, inputItems, inputQuantities, 2 );

Si vous vouliez avoir un outil qui supprime simplement un tag, vous pourriez définir quelque chose comme le « détachant de peinture » ci-dessous. Vous appelleriez ISteamInventory::ExchangeItems comme décrit précédemment. Votre définition d'item comporterait simplement l'ensemble de propriétés tags_to_remove_on_tool_use.

itemdefid: 300 type: tag_tool name: Détachant de peinture tags_to_remove_on_tool_use: couleur_peinture

Exemple de générateur de tags


Au lieu d'une couleur de peinture spécifique, vous pouvez définir un outil qui peut appliquer des tags à partir d'une définition d'item tag_generator.

itemdefid: 500 type: tag_generator name: Générateur de tag peinture tag_generator_name: couleur_peinture tag_generator_values: rouge:33;bleu:33;vert:33;or:1 itemdefid: 100 type: tag_tool name: Pot de peinture aléatoire tag_generators: 500 tags_to_remove_on_tool_use: couleur_peinture

Ensuite, quand un utilisateur applique l'outil « Pot de peinture aléatoire » à son « chapeau » par un appel de ISteamInventory::ExchangeItems, il a 33 % de chances d'obtenir « rouge », « vert » ou « bleu », et 1 % de chances d'obtenir « or ».

Exemple de restriction des propriétés dynamiques


Vous pouvez limiter la modification de certaines propriétés dynamiques d'un item à l'aide de tags. Avec un tag_tool (outil de tags), vous pouvez maintenant autoriser la définition de ces propriétés pour un item, qui n'aurait pas été permise auparavant si cet item n'avait pas les tags nécessaires. Voici un exemple d'item qui fait un suivi du nombre de victimes pour un lance-roquettes.

itemdefid: 100 type: item name: Lance-roquettes itemdefid: 200 type: tag_tool name: Suivi de stats de kills tags: stat_tracker:kills tags_to_remove_on_tool_use: stat_tracker:kills

En utilisant l'API Steamworks, vous pouvez faire mettre à jour les propriétés du lance-roquettes par le client pour la propriété « kills ». Cependant, lors de la configuration de cette propriété dynamique, vous pouvez restreindre cela aux items qui possèdent le tag « stat_tracker », soit dans l'item lui-même, soit dans la définition d'item associée. Une fois le « Suivi de stats de kills » appliqué au lance-roquettes, la propriété dynamique « kills » peut être configurée sur le lance-roquettes également.