Od teraz w ramach
wersji beta można określić „narzędzia”, które służą do modyfikacji
tagów Ekwipunku Steam na innych przedmiotach.
Za pomocą wywołania
ISteamInventory::ExchangeItems przekazywane jest zarówno narzędzie, jak i przedmiot docelowy – tagi zostaną przeniesione lub wygenerowane i zostanie utworzony nowy przedmiot (skopiowany z przedmiotu docelowego).
Te tagi są automatycznie przesyłane wraz z innymi atrybutami przedmiotu do klienta Steam i mogą zostać uzyskane przez wywołanie ISteamInventory::GetResultItemProperty() z nazwą właściwości „tags”. Tagi zostaną zwrócone w podanym buforze stringów i będą oddzielone
średnikiem
.
Prosty przykład
Oto przykład narzędzia, które może „pomalować” obiekt na inny kolor.
Na początek potrzebujesz definicji przedmiotu dla swojego narzędzia. Zwróć uwagę, że prawdopodobnie będziesz chciał usunąć tagi, używając do tego właściwości
tags_to_remove_on_tool_use
, w przeciwnym razie na twoim przedmiocie mogą pojawić się duplikaty tagów lub ich kategorii, jeżeli użyto na nim wielu narzędzi. Wszystkie pasujące tagi zostaną usunięte, zanim zostaną zastosowane nowe.
itemdefid: 100
type: tag_tool
name: Red Paint Can
tags: paint_color:red
tags_to_remove_on_tool_use: paint_color
W przedmiocie docelowym musisz sprecyzować, że może zaakceptować tag „paint_color”:
itemdefid: 200
type: item
name: Hat
allowed_tags_from_tools: paint_color
Następnie korzystając z wywołania
ISteamInventory::ExchangeItems, użytkownik może zastosować narzędzie „Red Paint Can” na swoim „Hat”, a nowo powstały przedmiot powinien zawierać tag „paint_color:red”. Pamiętaj, że oczekiwane ID przedmiotu powinno być zgodne z ID definicji przedmiotu docelowego.
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 );
Jeśli chcesz mieć narzędzie, które po prostu usuwa tagi, możesz określić coś jak np. „Paint Stripper”. Analogicznie do powyższego przykładu wywołasz
ISteamInventory::ExchangeItems. Twoja definicja przedmiotu będzie miała ustawioną tylko właściwość
tags_to_remove_on_tool_use
.
itemdefid: 300
type: tag_tool
name: Paint Stripper
tags_to_remove_on_tool_use: paint_color
Przykład generatora tagów
Możesz mieć narzędzie nakładające tagi z definicji przedmiotu
tag_generator
zamiast konkretny kolor.
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
Gdy użytkownik zastosuje „Random Paint Can” do swojego „Hat”, używając wywołania
ISteamInventory::ExchangeItems, szanse na uzyskanie koloru czerwonego, zielonego lub niebieskiego wynoszą 33%, a złotego — 1%.
Przykład ograniczenia dynamicznych właściwości
Możesz ograniczyć możliwość zmiany pewnych
dynamicznych właściwości za pomocą tagów. Używając
tag_tool
, możesz umożliwić ustawianie tych właściwości na przedmiocie, na którym nie było to wcześniej możliwe, jeżeli nie miał on wymaganych tagów. Oto przykład przedmiotu liczącego zabójstwa dokonane z użyciem wyrzutni rakiet.
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
Używając API Steamworks, możesz sprawić, by klient aktualizował właściwości wyrzutni rakiet dla dynamicznej właściwości „kills”. Mimo to na stronie konfiguracji dla tej dynamicznej właściwości możesz ograniczyć to działanie tylko do przedmiotów mających tag „stat_tracker” albo na przedmiocie, albo na powiązanej z nim definicji przedmiotu. Gdy tylko „Kill Stat Tracker” zostanie zastosowany do wyrzutni rakiet, będzie można do niej także dodać właściwość dynamiczną „kills”.