Documentación de Steamworks
Etiquetas de artículos de inventario de Steam
You can define "tool" items use to modify Etiquetas de artículos de inventario de Steam on other items.

Al usar la llamada ISteamInventory::ExchangeItems, pasas tanto la herramienta como el artículo objetivo; las etiquetas se transferirán o generarán y se creará un nuevo artículo (copiado del artículo objetivo).

Estas etiquetas se envían automáticamente junto con otros atributos de artículos al cliente de Steam y se pueden recuperar llamando a ISteamInventory::GetResultItemProperty() con el nombre de la propiedad "tags". Las etiquetas se devolverán en el búfer de cadena proporcionado, determinado por ;.

Ejemplo


Este es un ejemplo de una herramienta que puede aplicar un color "paint" a otro artículo.

Primero, necesitarás una definición de artículo para la herramienta. Ten en cuenta que probablemente querrás eliminar las etiquetas usando la propiedad tags_to_remove_on_tool_use, de lo contrario, puedes obtener etiquetas duplicadas o categorías de etiquetas en su artículo si se le han aplicado múltiples herramientas. Cualquier etiqueta coincidente se eliminará primero antes de que se apliquen las nuevas.

itemdefid: 100 type: tag_tool name: Red Paint Can tags: paint_color:red tags_to_remove_on_tool_use: paint_color

En el artículo objetivo, deberás especificar que puede tomar la etiqueta "paint_color":

itemdefid: 200 type: item name: Hat allowed_tags_from_tools: paint_color

Luego, usando la llamada ISteamInventory::ExchangeItems, un usuario podría aplicar la herramienta "Red Paint Can" a sus "Hat" y el artículo resultante debe tener la etiqueta "paint_color:red". Ten en cuenta que el id. de definición de artículo esperado debe coincidir con el id. de definición del artículo objetivo.

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 deseas tener una herramienta que acaba de eliminar una etiqueta, puedes definir algo como este "Paint Stripper." Llamando a ISteamInventory::ExchangeItems de la misma manera descrita anteriormente. La definición de su elemento solo tendría el conjunto de propiedades tags_to_remove_on_tool_use.

itemdefid: 300 type: tag_tool name: Paint Stripper tags_to_remove_on_tool_use: paint_color

Ejemplo de generador de etiquetas


En lugar de un color de pintura específico, puedes configurar una herramienta que pueda aplicar etiquetas desde una definición de artículo tag_generator.

itemdefid: 500 type: tag_generator name: Tag Generator Paint tag_generator_name: paint_color tag_generator_values: red:33;blue:33;green:33;gold:1 itemdefid: 100 type: tag_tool name: Random Paint Can tag_generators: 500 tags_to_remove_on_tool_use: paint_color

Cuando un usuario aplica la herramienta "Random Paint Can" a su "Hat" usando la llamada a ISteamInventory::ExchangeItems, tiene un 33 % de probabilidades de obtener "rojo", "verde" o "azul" y 1 % de probabilidades de conseguir "dorado".

Ejemplo de restricción de propiedades dinámicas


Puedes restringir la modificación de ciertas propiedades dinámicas dynamic properties en un artículo usando etiquetas. Con una tag_tool, ahora puedes permitir que esas propiedades se establezcan en un artículo donde anteriormente no se permitiría si ese artículo no tuviera las etiquetas requeridas. Aquí hay un ejemplo de un elemento que realiza un seguimiento de las muertes con un lanzamisiles.

itemdefid: 100 type: item name: Rocket Launcher itemdefid: 200 type: tag_tool name: Kill Stat Tracker tags: stat_tracker:kills tags_to_remove_on_tool_use: stat_tracker:kills

Al usar la API de Steamworks, puedes tener las propiedades de actualización del cliente en el lanzamisiles para la propiedad dinámica "kills". Sin embargo, en la configuración de esa propiedad dinámica, puedes restringirlo a los artículos que tienen la etiqueta "stat_tracker" ya sea en el elemento o en su definición de artículo asociado. Una vez que el "Kill Stat Tracker" se ha aplicado al lanzador de misiles, la propiedad dinámica "kills" también se puede configurar en el lanzamisiles.