Steamworks-Dokumentation
Steam-Inventar: Gegenstands-Werkzeuge
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.