問題タブ [steam-web-api]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
steam-web-api - Steam Web API で GetAssetClassInfo を使用してアイテムの classID を取得する方法は?
Steam WebAPI を使用すると、ゲームとプレーヤーのアイテムをダウンロードできます。ただし、GetSchemaサービスには、アイテムの属性と説明が含まれていません。この情報は、GetAssetClassInfoサービスに含まれています。このサービスの必須パラメータには が含まれてclassid
いますが、ドキュメントでは、この識別子がどこで定義または派生されているかがまったく明確ではありません。 特定のアイテムの classID を取得するにはどうすればよいですか?
windows - SteamオーバーレイでのAdobeAIR3.1レンダリング/入力の問題(Windows)
現在、Adobe AIR(3.1)を介してFlash Playerベースのゲームをデスクトップ(OSXおよびWindows)に移植しています。AIR自体への移植はかなりスムーズに進んでいます。私が対処した1つの問題は、ゲームがSteamネットワークを介して配布されることです。Steamクライアントと対話するには、SteamSDKAPIをAS3に公開するためのネイティブ拡張を作成する必要がありました。ネイティブ拡張サポートは両方のプラットフォームに実装されており、必要に応じてアプリケーションを起動してSteamと通信します。
私が問題にぶつかったのは、Steamのオーバーレイを扱っていることです。これは、アクティブ化されたときにゲームのオーバートップをレンダリングします。基本的に、ゲームが起動されると、SteamクライアントはオーバーレイライブラリをD3DまたはOpenGLのいずれかに接続するためにプロセスを一時停止します。当初、AIRアプリケーション記述子のデフォルトのrendermodeが「auto」に設定されていたため、オーバーレイはまったく表示されませんでした。ただし、レンダリングモードを「gpu」に切り替えると、オーバーレイが希望どおりに表示されます。
OSX側では、すべてが期待どおりに機能します。オーバーレイのオンとオフをうまく切り替えることができます。スペクトルのウィンドウ側で、オーバーレイをアクティブにしたときに少し問題が発生しました。具体的には、オーバーレイが有効になっていて(ゲームの上にレンダリングされている)、マウスを動かすかキーボード入力を生成すると、オーバーレイとゲームの両方が2〜3秒間「フリーズ」(レンダリングが停止)します。さらに、ゲームを実行している状態でタスクマネージャーを開くと、CPU使用率が約75〜80%であることに気付きました。オーバーレイを最初にアクティブにしたときのCPU使用率は同じままです(これは望ましいことです)。ただし、マウスカーソルを移動するか、キーボードのキーを押すと、CPU使用率が約1%に低下します。この問題は、テストした5台のWindowsマシンのうち4台(2 XP、3 Win 7)で発生しました。当然、これはオーバーレイが有効になっている場合にのみ発生するため、この問題について最初にValveに連絡しました。開発者がデバッグできるように、OSXビルドとWindowsビルドの両方をアップロードしました。しかし、私の連絡先は、AIRのレンダリング/入力についても詳しく知ることを提案しました。
オーバーレイがどのように機能するかを詳しく説明したSteamDevを含む投稿のスニペットを次に示します。
「Windowsでのオーバーレイの要件は次のとおりです。
- ゲームはD3D7、D3D8、D3D9、D3D10、D3D11、またはOpenGLを使用する必要があります
- ゲームは、D3D Present()またはOpenGL SwapBuffers()を定期的に高速で呼び出す必要があります(これらの呼び出しはオーバーレイにフックされ、作業を行う機会を与えます)。たとえば、マウスの動きが発生したとき、またはすべてのフレームではなく画面上のグラフィックが実際に変化したときにのみこれらの関数を呼び出す2Dゲームは、うまく機能しません。
- ゲームは、標準のWin32入力メッセージ、生のWin32入力メッセージ、またはDirectInputを入力に使用する必要があります。オーバーレイは、アクティブなときにホットキーを検出し、ゲームからの入力イベントを非表示/ブロックします。
オーバーレイがアクティブな場合、ゲームが#2に違反し、Present/SwapBuffersの呼び出しを停止することがあるようです。これは、オーバーレイがアクティブ化されているためにブロックされているユーザー入力に応答してこれらの関数を呼び出す場合に発生する可能性があります。入力イベントが発生していない場合でも、定期的にフレームのポンピングとスワッピングを継続することを保証する必要があります。」
もう少しプロデュースした後、Valve開発者は私のアプリケーションのプロファイルを作成して、ゲームオーバーレイで特定の問題が発生したかどうかを判断しました。残念ながら、オーバーレイ自体で何が起こっているのかを見つけることができませんでした。これは、Windows上のAIRが、オーバーレイがWin32入力メッセージをブロックしていることを好まないことを意味します。これがValve開発者の応答です:
「デポを取得してテストを行いました。オーバーレイで異常なことは何も起こりません。問題が発生している間、xprefを使用してアプリをプロファイリングし、ミニダンプを使用してコールスタックをチェックすると、アプリが完全にブロックされ、その間CPUを使用しないように見えます。がブロックされると、回復するまで約1秒間隔でPresent()が呼び出されます(おそらくAIRコードのどこかに1秒のタイムアウトがあります)。 AIRランタイムライブラリ。
ただし、これは入力状態に何らかの形で関連しているように見え、AIRはwin32入力メッセージの停止に不満を持っています。一度アクティブ化すると入力をまったくブロックしないようにオーバーレイを変更した場合(これは明らかに使いやすさに関してかなり大きな問題がありますが、テスト目的のためだけです)、問題は発生しません。AIRコードに奇妙なロジックが含まれている可能性があります。特定のWM_WHATVERメッセージが表示された場合、その直後に別のメッセージが表示され、何らかの理由でブロックされます。
うまくいけば、アプリケーションがこれらの状況で正しく動作せず、ブロックを開始し、定期的に表示されない理由について、自分の側で、またはアドビと協力して解決することができます。」
私はアドビのフォーラムに投稿しましたが、そのような運はありませんでした。主に、誰かが以前にこれに対処したことがあるか、私がこの問題を回避する方法について考えていることを望んでいます。任意の提案、コメントまたは考えは大歓迎です!
php - PHP配列を値でソートし、配列を別の配列に追加する方法
さて、私は登録者のデータベースからの蒸気データを見ることができるアプリを書いています。
問題が発生しました。まず、複数ユーザー向けの Steam API が標準化されていません。(例えば、これを更新するたびに、ユーザーの位置が変わります (これはどのような API ですか?!)
Steam は API を標準化していないので、自分でやるしかないので、json_decode($url, true) を実行した後 連想配列ではありません。
assoc 配列を Steam ID (数値) で並べ替え、自分のユーザー データベース (Steam ID も含まれていますが、データベースで並べ替えることができます) と照合したいのですが、どうすればよいでしょうか?
例えば
配列 1:
配列 2:
php - PHP 数学方程式、E+16?
この式で適切な値を返すのに問題があります。Steam によると、式Steam_community_number = (Last_part_of_steam_id * 2) + 76561197960265728 + Second_to_last_part_of_steam_id
は 64 ビットの Steam コミュニティ ID を返す必要があります。現在、この式は を返して7.6561198012096E+16
います。76561198012095632
ある意味では、すでに返されているものとほぼ同じである方程式が返されるはずです。以下のコードで、返された E+16 値を上記の正しい値に変換するにはどうすればよいですか? ありがとう。
そして、私はこの関数を$cid = convertSID("STEAM_0:0:25914952");
出力の例を見たい場合は、ここをチェックしてください: http://joshua-ferrara.com/hkggateway/sidtester.php
php - 不正な整数 (2147483647) が MySQL に挿入されていますか?
さて、Steam Web API をいじってみました。値の 1 つが という変数に格納されています$steam64
。このコード スニッパーを使用して mysql データベースに挿入すると、変数に格納されているものとは完全に異なる整数が挿入されます。
$sql_query = "INSERT INTO users_info (steam64) VALUES ('$steam64')";
var_dump($steam64);
真の int を返すので、それをエコーします。ここで何が起こっているのかわからないので、助けていただければ幸いです。
php - PHP Simple HTML DOM Parser は、番号 1 ではなく項目番号 2 から開始します。
私はSimple HTML DOM Parserを使用して必要な特定の情報を受け取りましたが、パーサーが最初に出力したようです。見つけたアイテム。私はこのコードを使用しています:
$html = file_get_html("http://steamcommunity.com/id/" . $username . "/wishlist/");
foreach($html->find('.wishlistRow') as $e)
{
$item = $e->outertext;
}
echo $item;
これはウィッシュリストの 2 番目の項目を出力しますが、最初の項目は出力しません。これは、私が取り組んでいる他のプロジェクトにも当てはまります。
jquery - Scraper Google App Engine for Steam
基本的に、現時点では、ボタンを押すとユーザーが Steam でゲーム内、オフライン、またはオンラインのいずれであるかを返す、基本的な HTML 5 ページを作成しようとしています。私たちは Steam API を調べました。この情報を見つけるには、その人の 64 ビット ID (steamID64) が必要であり、ウェブサイトではユーザー名のみが与えられます。64 ビット ID を見つけるために、Web サイト ( steamidconverter.com
) をかき集めて、ユーザー名からユーザーの 64 ビット ID を取得しようとしました。JavaScript を使用してこれを実行しようとしましたが、もちろんクロス ドメイン ブロックに遭遇し、Google App Engine Web サイトからそのデータにアクセスできませんでした。
私は Python の経験があるので、その Web サイトから HTML を ( の形式で) Python で取得する方法を見つけようとしましたsteamidconverter.com/(personsusername)
。Stack Overflow の別の投稿のおかげで、スクレイピングは成功しました。
しかし、そのデータをJavaScriptに戻し、残りの作業を行う方法がわかりません。私は困惑しており、本当に助けが必要です。これはすべてGoogle App Engine上にあります。現時点では、JQuery を使用してページのコンテンツを取得しようとする単純な JavaScript を実行するボタンだけですが、失敗します。2つを統合する方法がわかりません!
助けてください!
php - Valve/Steam API を使用して複数の ID を変換する
したがって、これは非常に長い説明です。
ストア用のゲーム内プラグインを備えた Counter-Strike: Source サーバーがあります。このストアは、そのデータを MySQL データベースに保存します (このインスタンスでは、'store' という名前です)。ストアは、そのデータベース (テーブル「users」の列「credits」) でプレーヤーのお金を追跡します。「steam_id」(すべてのクライアントに固有)に基づいてクライアントを保存します
「steam_id」の形式は (例): STEAM_0:0:123456789 OR STEAM_0:1:12345789 です。
私が持っている私のページには、データベースから上位 1000 人のユーザーが表示されます (クレジットでソートされています)。
私の問題:これらの醜い steam_id を実際の名前に変換する必要があります。
私が今いる場所:
API ドキュメントによると、API をクエリするときは「コミュニティ ID」を使用する必要があります。複数のユーザーを取得する場合は、コンマを使用して GET 文字列内のコミュニティ ID を区切ることができます。
(http://api.steampowered.com/ISteamUser/GetPlayerSummaries/v0002/?key=APIKEY&steamids= 76561197960435530,76561197960435531 &format=json)
steam_id を API 受け入れ可能な ID に変換する関数があります。
これで、カンマ区切りのコミュニティ ID のリストを次のように作成できます。
ここで注意が必要なのは、これらすべての値が 1 つの JSON 配列で返されることです。何かを追加する必要があるため、データを表示するときに、「steam_id」を「名前」に直接変換できます (既存の配列を使用)。
出力の例 (ほとんどのキーと値は読みやすいように削除されています)
繰り返しになりますが、「steam_id」から名前に直接移行するにはどうすればよいでしょうか?
コードや提案を提供できる人に感謝します!
python - SteamAPI呼び出しの解析と混合
Django環境を使用していて、Steamから統計を取得したいと思います。ただし、SteamのAPIは、約20の異なるURLを持っているという点で、うっとうしいほど愚かです。私が情報を求めている主な2つは次のとおりです。
- http://steamcommunity.com/id/STEAM_USERNAME/games?tab=all&xml=1
- http://api.steampowered.com/ISteamUser/GetPlayerSummaries/v0002/?key=KEY&steamids=STEAM_ID
GET
SteamからのデータにPythonRequestsライブラリを使用しています。
クエリを実行するsteamcommunity.com
と、次のようなメッセージが返されます。
そしてapi.steampowered.com
私はこれを得る:
基本的に、から何かを取得できるようにするにapi.steampowered.com
は、SteamIDが必要です。steamcommunity.com
それを取得するために、特にSteamIDを含むXMLファイルを返すWebサイトを呼び出します。必要な情報は次のとおりです(XML / JSON応答の名前を使用)。
プレーヤー
- Steamid
- ペルソナネーム
- プロフィールURL
- 友達(別のAPI呼び出しが必要だと思います)
- ペルソナステート
- ゲームの総数
- アバターフル
ゲーム
- AppID
- 名前
- ロゴ
- hoursLast2Weeks
<game>
ゲームの総数については、によって返されるXMLファイル内のノードの数を数えるだけだと思いましたsteamcommunity.com
。それらを数えることができたという点で機能しましたが、totalgames
からのJSON応答にフィールドを追加できないようですapi.steampowered.com
。次に、すべての<game>
ノードに<hoursLast2Weeks>
子ノードがあるわけではありません。子ノードがあるノードだけが必要です。第三に、プレイヤーの友達の合計を取得したいだけです。私は冗談ではありません。別のものを使用する必要があることはわかっていますGET
が、問題はそれをJSONに追加することです。
私の主な問題は、JSON応答に追加しようとしていることです。私は、SOの他の例を見て、それらをフォローしようとしましたが、ここでどこが間違っているのかわかりません。どんな助けでも大歓迎です。
api - How to get the price of an app in Steam WebAPI?
Is there a possibility to get the price of a game from Steam over the WebAPI?