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.