Steamworks-dokumentation
Genstandstilbehør til Steam-inventar
Genstandstilbehør gør det muligt for spillere at tilpasse deres genstande i spil og skabe mere værdifulde, interessante og endda unikke versioner af almindelige genstande, som bruges i dit spil.

Tilknyttet tilbehør er synligt i inventarvisningen i fællesskabet og skaber en "unik" (ikke-vare) genstandsvisning, når det tilbydes i Steam-fællesskabsmarkedet.

Det er op til dig at beslutte, hvilke typer af tilbehør du vil understøtte, og hvilke kosmetiske effekter eller effekter i spillet, som de forskellige tilbehørstyper skal have. Du kan også vælge at understøtte forskellige typer af tilbehør på forskellige genstande i dit spil.

backpackcomic_resize30.png

Som et konkret eksempel vil vi kigge på, hvordan man definerer en velkendt tilbehørsgenstand: klistermærker.

Unique_backpack.png

I dette eksempel er præfikset "Unik" automatisk tilføjet.

Markér, at en genstand kan tilpasses

Spillere kan kun vedhæfte tilbehør til genstande, som du udtrykkeligt har konfigureret for den pågældende type af tilbehør. For at markere, at en genstand kan tilpasses, skal ItemDef opdateres med egenskaben "accessory_tag", hvis værdi er et kategoritoken pr. genstandstag.

Eksempel:
"accessory_tag": "klistermærke",

For denne ItemDef behandles et genstandstag, hvis kategori er "klistermærke", som vedhæftet tilbehør. Genstandstaggets værdi vil være ItemDefID til tilbehørsgenstanden.

Husk, at genstandstags varer ved i hele genstandens levetid, herunder også under ejerskabsændringer.

En genstand kan have flere slags tilbehør vedhæftet, som i eksemplet vist ovenfor. Du kan begrænse antallet af tilbehør til en enkelt genstand med egenskaben "accessory_limit":

"accessory_limit": 3,

Standardgrænsen er 4. Større grænser anbefales ikke.

Hvis en genstand kan tilpasses i spillet, kan du finde de tilknyttede tilbehørsemner ved at undersøge genstandstaggene (kald SDK-metode ISteamInventory::GetResultItemProperty() med egenskabsnavnet "tags").

Definering af tilbehør

Fordi hvert tilbehør rent faktisk er ItemDef, kan du bruge eksisterende værktøjer til at definere, hvordan tilbehøret skal vises, først og fremmest inklusive icon_url-egenskaben og lokaliserede navne.

Den genererede beskrivelse af brugertilpassede genstande bruger oplysningerne fra ItemDef. Hvis du ændrer ItemDef, vil alt tilbehør i brugerinventarer også blive opdateret.

En simpel klistermærkedefinition:
{ "appid": 480, "name": "Blue Star", "description": "En blå stjerne med mystiske kræfter", "icon_url": ...

Oprettelse af engangstilbehør

Alle metoder, som tilføjer genstandstags, kan bruges til at tilknytte tilbehør. Det mest interessante tilfælde er at definere et forbrugstilbehør, som spillere kan tjene eller købe, handle og derefter bruge.

Denne funktionalitet gives med genstandstypen "tag_tool". Tag_tool forbruges for at ændre en genstand.

For at aktivere tag-værktøjet skal man først aktivere tilbehørstagget på tilpasningsgenstanden (i vores eksempel er dette en rygsæk):
{ "appid": 480, "itemdefid": 2000, "type": "item", "name": "Almindelig rygsæk", "description": "Et godt sted at opbevare ting, med masser af plads til klistermærker.", "icon_url":..., "accessory_tag": "klistermærke", "accessory_limit": 3, "allowed_tags_from_tools": "klistermærke" }

Hver klistermærketype oprettes med "tag_tool" som "type". Tag-værktøjets handling vil blive tildelt til tilbehørstagget med det pågældende klistermærkes ItemDef som argument. Så ItemDef for klistermærket vil se sådan her ud:
{ "appid": 480, "itemdefid": 1001, "name": "Blue Star", "description": "En blå stjerne med mystiske kræfter", "price_category": "1;VLV25", "icon_url"..., "type": "tag_tool", "tags": "sticker:1001", }

Bemærk, at "tags"-værdien anvender ItemDef-ID'et til dette klistermærke på genstanden.

Bemærk også, at tilbehørsgenstande understøtter alle normale inventarhandlinger og "drop"-metoder, inklusive at definere priskategorier og sælge dem i genstandsbutikken.

Sådan bruges tilbehør

For at anvende klistermærket på en genstand skal man kalde metoden ExchangeItem (smedning) fra Steamworks-SDK'en (eller via WebAPI'en fra en pålidelig server). Overfør klistermærket og tilpasningsgenstanden som materialer, og sæt målets ItemDef-type til at matche den originale tilpasningsgenstand. Dette tildeler tag_tool og opdaterer målet.

Hvis anmodningen er gyldig, vil ExchangeItems-kaldet automatisk forbruge klistermærket og opdatere taggene på genstanden.

Genstandstags kan også indstilles på andre måder, inklusive ved brug af genstandsgeneratorer. Se Genstandstagsiden.

Lokalisering og udseende

Tilbehør gengives automatisk i webvisning og i brugerens rygsæk og på fællesskabsmarkedet. Beskrivelsesblokken inkluderer en mindre version af ikonet for hvert tilknyttet tilbehør og viser de lokaliserede navne til alle tilbehørsgenstande.

Som altid er genstandsnavne lokaliseret ved at give værdier i ItemDef Schema.

Se sektionen om "genstandstags" på siden om Steamworks-inventartjenesten for at angive lokaliseret tekst til det interne navn. I vores eksempel er det interne navn "klistermærke" knyttet til "Klistermærke" på alle understøttede sprog.

Du kan også angive en særlig tekst, som vises inden den førnævnte beskrivelsesblok. Bare angiv accessory_description_<language> API-sprogkodeegenskaben i genstandsbeskrivelsen. I kombination med dynamiske egenskaber kan du angive tokens, som erstattes med dynamiske egenskabsværdier.

Eksempel:


Hvis den dynamiske egenskab for genstandsforekomsten (som har tilbehørstypen "sticker") num_times_stickered er sat til 123, vil angivelse af dette på klistermærkets genstandsdefinition:

{ "accessory_description_english": "Stickers applied %num_times_stickered% times" }

give følgende tekstoutput i webvisningen:

Stickers applied 123 times

Fjern eller erstat tilbehør

Når tilbehør er blevet brugt, kan det ikke gendannes ved at fjerne det fra den tilpassede genstand. Tilbehør kan selvfølgelig fjernes – se dokumentationen om genstandstags for at se metoder til at fjerne tags fra en genstand.

Til brugertilpasning kan du vælge at tilbyde et tag_tool, hvis eneste formål er at fjerne eksisterende tilbehør.

Tilføjelse af to tilfælde af samme tilbehør til en genstand understøttes ikke i øjeblikket. Hvis dette forsøges, vil ExchangeItems-kaldet mislykkes, og tilbehørsgenstanden vil ikke blive brugt.