Sie haben jetzt die Möglichkiet „Werkzeuggegenstände“ in
beta zu definieren, mit denen Sie
Steam-Inventar: Gegenstandstags für andere Artikel modifizieren können.
Mit dem Aufruf
ISteamInventory::ExchangeItems können Sie dann sowohl das Werkzeug als auch den Zielartikel übergeben. Tags werden übertragen oder generiert und ein neuer Artikel (aus dem Zielartikel kopiert) wird erstellt.
Diese Tags werden automatisch zusammen mit anderen Artikelattributen an den Steam-Client gesendet und können durch Aufruf von ISteamInventory::GetResultItemProperty() mit dem Eigenschaftsnamen „tags“ abgerufen werden. Diese Tags werden von dem bereitgestellten String-Puffer durch ein Semikolon (;) getrennt zurückgegeben.
Ein einfaches Beispiel
Hier ein Beispiel eines Werkzeugs, das einem anderen Artikel „Farbe“ hinzufügen kann.
Zunächst müssen Sie dem Werkzeug eine Artikeldefinition geben. Beachten Sie, dass Sie die Tags mit der Eigenschaft
tags_to_remove_on_tool_use
am besten entfernen. Andernfalls erhalten Sie möglicherweise doppelte Tags oder Tag-Kategorien für Ihren Artikel, wenn mehrere Werkzeuge darauf angewendet wurden. Alle übereinstimmenden Tags werden entfernt, bevor neue angewendet werden.
itemdefid: 100
type: tag_tool
name: Red Paint Can
tags: paint_color:red
tags_to_remove_on_tool_use: paint_color
Für den Zielartikel müssen Sie festlegen, dass dieser den Tag „paint_color“ annehmen kann:
itemdefid: 200
type: item
name: Hat
allowed_tags_from_tools: paint_color
Dann kann der Nutzer mit dem Aufruf
ISteamInventory::ExchangeItems das Werkzeug „Rote Farbdose“ auf den „Hut“ anwenden und der damit entstehende Artikel sollte den Tag „paint_color:red“ haben Bitte beachten Sie, dass die erwartete Artikeldefinitions-ID der Artikeldefinitions-ID des Zielartikels entsprechen sollte.
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 );
Falls Sie sich ein Werkzeug wünschen, das einfach ein Tag entfernt, können Sie etwas wie den „Farbentferner“ definieren. Rufen Sie dazu wie oben beschrieben
ISteamInventory::ExchangeItems auf. Ihre Artikeldefinition hat dann nur noch die Klasseneigenschaft
tags_to_remove_on_tool_use
.
itemdefid: 300
type: tag_tool
name: Paint Stripper
tags_to_remove_on_tool_use: paint_color
Beispiel für Tag-Generator
Anstelle einer bestimmten Farbe können Sie ein Werkzeug definieren, das Tags aus einer
tag_generator
-Artikeldefinition anwenden kann.
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
Wenn ein Nutzer dann mit dem Aufruf
ISteamInventory::ExchangeItems die „Zufällige Farbdose“ auf seinen „Hut“ anwendet, hat er eine Chance von je 33 % rot, grün oder blau und eine Chance von 1 % gold zu erhalten.
Beispiel für die Einschränkung dynamischer Eigenschaften
Mit Tags können Sie die Modifikation bestimmter
dynamischer Eigenschaften für einen Gegenstand einschränken. Mit einem
tag_tool
können Sie diese Eigenschaften jetzt für einen Artikel festlegen, bei dem dies zuvor ohne die erforderlichen Tags nicht möglich war. Hier ist ein Beispiel eines Artikels, der Kills mit einem Raketenwerfer verfolgt.
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
Mit der Steamworks-API kann der Client Eigenschaften des Raketenwerfers für die dynamische Eigenschaft „Kills“ aktualisieren. Sie können diese Funktion jedoch in der Konfiguration dieser dynamischen Eigenschaft auf Artikel beschränken, die den Tag „stat_tracker“ entweder für den Artikel selbst oder in ihrer Artikeldefinition haben. Sobald „Kill Stat Tracker“ auf den Raketenwerfer angewendet wurde, kann die dynamische Eigenschaft „Kills“ ebenfalls für ihn festgelegt werden.