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.