Можно ли получить дату разблокировки достижения в API достижений Steam? Я прочитал кучу документации, но не нашел упоминания об этом.
Steam Achievements API — Как узнать дату разблокировки достижения?
Ответы (1)
Ответ на этот вопрос: да, это возможно, но вы должны использовать старый XML API, а не новый веб-API, и это должно быть «более новое» достижение.
URL в старом стиле выглядит так
http://steamcommunity.com/id/<profilename>/stats/<appid>/achievements/?xml=1
OR
http://steamcommunity.com/profiles/<profileid>/stats/<appid>/achievements/?xml=1
Пара замечаний по этому поводу:
<profilename>
— это уникальное имя URL, выбранное пользователем.<profileid>
— это уникальный 64-битный номер, присвоенный Valve.<appid>
– числовой идентификатор приложения. Я полагаю, вы знаете, как найти это, верно?
Если вы извлечете XML из этой ссылки, вы получите структуру, которая выглядит следующим образом:
playerstats
game
player
stats
achievements
achievement
iconClosed
iconOpened
name
apiname
description
unlockTimestamp
Важное примечание: unlockTimestamp
не всегда доступен. Не вдаваясь в подробности, похоже, что это было добавлено намного позже в случае более старых игр (например, TF2). Таким образом, у вас есть некоторые оригинальные достижения, которые возвращают данные, подобные этому:
<achievement closed="1">
<iconClosed>http://media.steampowered.com/steamcommunity/public/images/apps/440/tf_play_game_everyclass.jpg</iconClosed>
<iconOpen>http://media.steampowered.com/steamcommunity/public/images/apps/440/tf_play_game_everyclass_bw.jpg</iconOpen>
<name>Head of the Class</name>
<apiname>tf_play_game_everyclass</apiname>
<description>Play a complete round with every class.</description>
</achievement>
По сравнению с более новыми достижениями, которые выглядят так:
<achievement closed="1">
<iconClosed>http://media.steampowered.com/steamcommunity/public/images/apps/440/bb590c7ca44dfc7eb6a31abb39fae07c47502ac7.jpg</iconClosed>
<iconOpen>http://media.steampowered.com/steamcommunity/public/images/apps/440/4f244b30a76e9de5287a82cc3829c7930baa38c7.jpg</iconOpen>
<name>Got A Light?</name>
<apiname>tf_pyro_burn_spy_taunt</apiname>
<description>Ignite an enemy Spy while he's flicking a cigarette.</description>
<unlockTimestamp>1301887931</unlockTimestamp>
</achievement>
Если игрок еще не заработал достижение, то атрибут closed
узла achievement
будет равен 0
, а возвращаемые данные будут похожи на старые достижения (без unlockTimestamp
).
<achievement closed="0">
<iconClosed>http://media.steampowered.com/steamcommunity/public/images/apps/440/957daad8f6b9f237620e0326f38cbf941c60a9d1.jpg</iconClosed>
<iconOpen>http://media.steampowered.com/steamcommunity/public/images/apps/440/34b787ce4e47ef0e206ecd52626b053da13e18c4.jpg</iconOpen>
<name>Krazy Ivan</name>
<apiname>tf_heavy_kill_underwater</apiname>
<description>Kill 50 enemies while both you and your victim are underwater.</description>
</achievement>
В приведенной выше XML-структуре узел achievement
будет повторяться для каждого достижения, доступного для выбранной игры.
unlockTimestamp
нет :(
- person Christian Gollhardt; 17.05.2014