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 elemento de destino; las etiquetas se transferirán o generarán y se creará un nuevo elemento (copiado del elemento de destino).
Estas etiquetas se envían automáticamente junto con otros atributos de elementos 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 elemento.
Primero, necesitarás una definición de elemento 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 elemento 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 elemento de destino, 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 elemento resultante debe tener la etiqueta "paint_color:red". Ten en cuenta que el id. de definición de elemento esperado debe coincidir con el id. de definición del elemento de destino.
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 esto "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 elemento
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 sus "Hat" usando la llamada a
ISteamInventory::ExchangeItems, tienen 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 elemento usando etiquetas. Con una
tag_tool
,, ahora puedes permitir que esas propiedades se establezcan en un elemento donde anteriormente no se permitiría si ese elemento 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 elementos que tienen la etiqueta "stat_tracker" ya sea en el elemento o en su definición de elemento 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.