Документація Steamworks
Аксесуари предметів інвентарю Steam
Аксесуари предметів дозволяють гравцям змінювати свої внутрішньоігрові предмети та створювати цінніші, цікавіші та унікальні версії звичайних предметів, що використовуються у вашій грі.

Додані аксесуари будуть видимі в інвентарі у спільноті, а також створюватимуть «унікальні» (неоднакові) предмети під час виставлення на продаж на ринку спільноти Steam.

Вам вирішувати, які типи аксесуарів підтримувати, і які косметичні чи ігроладні ефекти можуть мати різні типи аксесуарів. Ви можете обрати підтримку різних типів аксесуарів для різних типів предметів вашої гри.

backpackcomic_resize30.png

Як приклад, поглянемо на відомий тип аксесуарів: наліпки.

Unique_backpack.png

У цьому прикладі автоматично додається префікс «унікальний» (Unique).

Позначення предмету як змінюваного

Користувачі можуть приєднувати аксесуари лише до тих предметів, які ви чітко визначили для цього типу аксесуару. Для позначення предмета як змінюваного оновіть ItemDef із властивістю «accessory_tag», чиє значення — це позначка категорії.

Приклад:
"accessory_tag": "sticker",

Для цього визначення предмета позначка з категорією «sticker» трактуватиметься як приєднаний аксесуар. Значення позначки предмета буде ItemDefID аксесуара предмета.

Пам’ятайте, що ці позначки предмета діють упродовж усього існування предмета, включно зі зміною власника.

Один предмет може мати кілька приєднаних аксесуарів, як у прикладі вище. Ви можете обмежити кількість аксесуарів для одного предмета з допомогою властивості accessory_limit.

"accessory_limit": 3,

Стандартне обмеження: 4. Ми не рекомендуємо більші значення.

Якщо ігровий предмет можна змінювати, то ви знайдете приєднані аксесуари через позначки предмета (викличте метод SDK ISteamInventory::GetResultItemProperty() із назвою властивості tags).

Визначення аксесуару

Оскільки кожен аксесуар насправді є ItemDef, то ви можете використовувати наявні інструменти для визначення вигляду аксесуару, включно з важливою властивістю icon_url та локалізованими назвами.

Згенерований опис змінених предметів використовуватиме інформацію з ItemDef. Якщо ви змінюєте ItemDef, то аксесуари в користувацьких інвентарях також оновляться.

Просте визначення наліпки:
{ "appid": 480, "name": "Blue Star", "description": "A blue star sticker with mysterious powers", "icon_url": ...

Створення одноразових аксесуарів

Будь-який метод, що додає позначки предмета, можна використовувати для додавання аксесуарів. Найцікавіший випадок — це визначення витратного аксесуару, який користувач може заробити чи купити, обміняти, а потім використати.

Ця функціональність надається типом предмета tag_tool. Тип tag_tool використовується задля модифікації цільового предмета.

По перше, щоб увімкнути інструмент позначок, нам необхідно ввімкнути позначку аксесуару на предметі, який змінюється (наприклад, у рюкзаку):
{ "appid": 480, "itemdefid": 2000, "type": "item", "name": "Everyday backpack", "description": "A good place to keep things, with lots of room for stickers.", "icon_url":..., "accessory_tag": "sticker", "accessory_limit": 3, "allowed_tags_from_tools": "sticker" }

Кожен тип наліпки створено з типом (type) як tag_tool. Дія tag_tool полягає в застосуванні позначки аксесуару, де itemdef наліпки є аргументом. Тож ItemDef нашої наліпки виглядатиме ось так:
{ "appid": 480, "itemdefid": 1001, "name": "Blue Star", "description": "A blue star sticker with mysterious powers", "price_category": "1;VLV25", "icon_url"..., "type": "tag_tool", "tags": "sticker:1001", }

Майте на увазі, що значення tags застосує ідентифікатор ItemDef цієї наліпки до цільового предмета.

Також майте на увазі, що аксесуари предметів підтримують усі звичайні дії й методи інвентарю, включно з визначенням категорії ціни та продажі в крамниці предметів.

Використання аксесуарів

Щоби фактично застосувати наліпку до предмета, викличте метод ExchangeItem (виготовлення) з SDK Steamworks (чи через веб-API з безпечного сервера). Передайте наліпку та змінюваний предмет як матеріали і встановіть цільовий тип ItemDef так, щоби він відповідав оригінальному змінюваному предмету. Це застосує tag_tool й оновить ціль.

Якщо запит правильний, то виклик ExchangeItems використає наліпку й оновить позначки цільового предмета.

Позначки предмета також можна встановити іншими способами, включно з генераторами. Див. розділ про позначки предмета.

Локалізація і вигляд

Аксесуари автоматично візуалізуються під час вебперегляду, включно з інвентарем користувача та ринком спільноти. Блок опису включає малу версію піктограми для кожного приєднаного аксесуара і список локалізованих назв для кожного аксесуару.

Зазвичай назви предметів локалізуються шляхом надання значень у схемі ItemDef.

Перейдіть у розділ із позначками предметів у сервісі інвентарю Steamworks, щоби надати локалізований текст для внутрішньої назви. У нашому прикладі внутрішня назва «sticker» просто змінюється на «Sticker» для всіх підтримуваних мов.

You can also specify special text that will be displayed before the aforementioned special description block. Simply provide a accessory_description_<language> API language code property on your item description; in combination with dynamic properties, you can set tokens that will be replaced with dynamic property values.

Example:


If the item instance (that has the "sticker" accessory attached) has the dynamic property num_times_stickered set to 123, then specifying this on the sticker item definition:

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

will output the following text in the web view.

Stickers applied 123 times

Вилучення чи заміна аксесуарів

Once consumed, an accessory item can't be restored by removing it from the customized item. Accessories can of course be removed - see the per-item tags documentation for methods to remove tags from an item.

For user customization, you may choose to offer a tag_tool whose only purpose is to remove existing accessories.

Adding two instances of the same accessory to an item is not currently supported. Attempting to do so will fail in the ExchangeItems call and will not consume the accessory item.