4

Steam Acheivements API で実績のロック解除日を取得することは可能ですか? たくさんのドキュメントを読みましたが、これについての言及は見つかりませんでした。

4

1 に答える 1

7

これに対する答えは、可能ですが、新しい Web API ではなく、古い XML API を使用する必要があり、「より新しい」実績でなければなりません。

古いスタイルの URL は次のようになります

http://steamcommunity.com/id/<profilename>/stats/<appid>/achievements/?xml=1

また

http://steamcommunity.com/profiles/<profileid>/stats/<appid>/achievements/?xml=1

この時点でいくつかの注意事項があります。

  • <profilename>ユーザーが選択した一意の URL 名です。<profileid>は、Valve によって割り当てられた一意の 64 ビット番号です。
  • <appid>数値のアプリ ID です。これを見つける方法を知っていると思いますよね?

そのリンクから 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、選択したゲームで利用可能な実績ごとにノードが繰り返されます。

于 2014-05-13T12:50:31.083 に答える