问题标签 [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.

0 投票
1 回答
3858 浏览

steam-web-api - 如何在 Steam Web API 中使用 GetAssetClassInfo 获取项目的 classID?

Steam WebAPI 允许下载游戏和玩家物品。但是,GetSchema服务不包括项目属性和描述。此信息包含在GetAssetClassInfo服务中。此服务所需的参数包括 a classid,但文档并不清楚该标识符是在何处定义或派生的。 如何获取给定项目的 classID?

0 投票
1 回答
896 浏览

windows - Adobe AIR 3.1 Steam 覆盖的渲染/输入问题 (Windows)

我正在通过 Adob​​e AIR (3.1) 将基于 Flash Player 的游戏移植到桌面(OSX 和 Windows)。移植到 AIR 本身进行得相当顺利。我遇到的一个问题是游戏将通过 Steam 网络分发。为了与 Steam 客户端交互,我不得不编写一个原生扩展来将 Steam SDK API 暴露给 AS3。两个平台都实现了本机扩展支持,我可以根据需要启动应用程序并与 Steam 通信。

我遇到麻烦的领域是处理 Steam 的叠加层,它在激活时会渲染游戏的顶部。本质上,当游戏启动时,Steam 客户端会暂停该进程,以便将其 Overlay 库与 D3D 或 OpenGL 挂钩。最初,由于 AIR 应用程序描述符的默认渲染模式设置为“auto”,因此 Overlay 根本没有出现。但是,一旦我将渲染模式切换为“gpu”,叠加层就会根据需要出现。

在 OSX 方面,一切都按预期工作。我可以很好地切换进出叠加层。在光谱的窗口端,当我激活覆盖时我遇到了一些问题。具体来说,当启用 Overlay(它在游戏上方渲染)并且我移动鼠标或生成键盘输入时,Overlay 和游戏都“冻结”(渲染停止)2-3 秒。另外,我注意到当我在游戏运行的情况下打开任务管理器时,cpu 使用率大约是 75-80%。当我第一次激活 Overlay(这是所需的)时,cpu 使用率保持不变。但是,当我移动鼠标光标或按下键盘上的某个键时,cpu 使用率下降到大约 1%。我们测试过的 5 台 Windows 机器(2 台 XP,3 台 Win 7)中的 4 台出现了这个问题。自然,我首先就这个问题联系了 Valve,因为这仅在启用 Overlay 时发生。我已经上传了 OSX 和 Windows 版本供他们的开发人员调试;但是,我的联系人建议我也了解有关 AIR 渲染/输入的更多信息。

以下是 Steam 开发人员的帖子片段,详细说明了叠加层的工作原理:

“在 Windows 上覆盖的要求如下:

  1. 游戏必须使用 D3D7、D3D8、D3D9、D3D10、D3D11 或 OpenGL
  2. 游戏必须定期快速调用 D3D Present() 或 OpenGL SwapBuffers()(这些调用被覆盖层钩住,并为其提供工作机会)。例如,仅在鼠标移动或屏幕上的图形实际发生变化而不是每一帧时才调用这些函数的 2D 游戏将无法正常运行。
  3. 游戏应使用标准 Win32 输入消息、原始 Win32 输入消息或 DirectInput 进行输入,然后覆盖层将检测热键并在活动时隐藏/阻止游戏中的输入事件。

听起来您的游戏可能违反了 #2 并且有时会在覆盖处于活动状态时停止调用 Present/SwapBuffers。如果您调用这些函数来响应用户输入,则可能会发生这种情况,而用户输入现在由于覆盖被激活而被阻止。即使没有发生输入事件,您也应该保证保持定期抽帧和交换。”

经过一番刺激,Valve 开发人员分析了我的应用程序,以确定 Game Overlay 是否存在任何特定问题。不幸的是,他们无法在 Overlay 本身中发现任何事情。这几乎意味着 Windows 上的 AIR 不喜欢 Overlay 阻止 Win32 输入消息。以下是 Valve 开发人员的回复:

“我得到了你的 depot 并进行了一些测试。覆盖中没有发生异常情况。在问题发生时使用 xpref 分析你的应用程序并采取一些小型转储来检查调用堆栈,看起来应用程序只是完全阻塞并且在此期间使用零 CPU被阻塞,当它发生时它仅以大约 1 秒的间隔调用 Present() 直到它恢复(可能在 AIR 代码的某处有 1 秒的超时).很难获得很多细节,因为我没有任何符号AIR 运行时库。

然而,这看起来确实与输入状态和 AIR 对 win32 输入消息停止不满意有关。如果我将覆盖更改为在激活后根本不阻止任何输入(这显然在可用性方面存在一些相当大的问题,但只是出于测试目的。)那么问题就不会发生。AIR 代码可能有一些奇怪的逻辑,如果它看到一些特定的 WM_WHATVER 消息,它会在之后期待另一个消息并阻止它以某种方式等待。

希望您能在您身边或与 Adob​​e 一起研究为什么应用程序在这些情况下表现不佳并开始阻塞并且不定期显示。”

我在 Adob​​e 论坛上发过帖子,但那里没有这样的运气。主要是,我希望有人以前处理过这个问题,或者对我如何解决这个问题有所了解。任何建议、意见或想法将不胜感激!

0 投票
1 回答
193 浏览

php - 如何按值对php数组进行排序并将数组添加到另一个数组

好的,所以我正在编写一个应用程序,它允许我从注册人的数据库中查看 Steam 数据。

我遇到了一个问题。首先,多用户的 Steam API 没有标准化。(例如,每次刷新,用户的位置都会发生变化(这是什么API?!)

由于 steam 没有标准化 API,所以我必须自己做,所以在做了 json_decode($url, true) 之后。它不是一个关联数组。

我想按蒸汽 ID(数字)对 assoc 数组进行排序,并将它们与我自己的用户数据库(也包含蒸汽 ID,但可以在数据库中排序)进行匹配,那么我该怎么做呢?

例如

阵列 1:

阵列 2:

0 投票
1 回答
914 浏览

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

0 投票
10 回答
63898 浏览

php - 不正确的整数(2147483647)被插入到 MySQL 中?

好的,所以我一直在玩弄 Steam Web API,我将其中一个值存储在一个名为$steam64. 当我使用此代码剪辑器将其插入到 mysql 数据库中时,它会插入一个与存储在变量中的整数完全不同的整数。

$sql_query = "INSERT INTO users_info (steam64) VALUES ('$steam64')";

var_dump($steam64);返回真正的 int,回显它也是如此。不太清楚这里发生了什么,任何帮助表示赞赏。

0 投票
1 回答
177 浏览

php - PHP Simple HTML DOM Parser 从第 2 项而不是第 1 项开始

我正在使用简单的 HTML DOM 解析器来接收我需要的某些信息,但解析器似乎输出了第一个。它找到的项目。我正在使用这段代码:

$html = file_get_html("http://steamcommunity.com/id/" . $username . "/wishlist/");
foreach($html->find('.wishlistRow') as $e)
{
$item = $e->outertext;
}
echo $item;

这会输出愿望清单上的第二个项目,但不是第一个。这也适用于我正在从事的其他项目,如果能得到任何帮助,我将不胜感激!

0 投票
2 回答
614 浏览

jquery - 刮板 Google App Engine for Steam

所以基本上,目前,我们正在尝试编写一个基本的 HTML 5 页面,当您按下按钮时,它会返回用户在 Steam 上是在游戏中、离线还是在线。我们查看了 Steam API,要查找此信息,它需要此人的 64 位 ID (steamID64),而我们在网站上仅获得用户名。为了找到他们的 64 位 id,我们尝试从网站 ( steamidconverter.com) 中抓取,以从用户名中获取用户的 64 位 id。我们尝试通过 javascript 执行此操作,但当然我们遇到了跨域块,不允许我们从我们的 google App Engine 网站访问该数据。

我有 Python 方面的经验,所以我试图弄清楚如何steamidconverter.com/(personsusername)使用 Python 从该网站(以 . 多亏了 Stack Overflow 上的另一篇文章,这在抓取方面取得了成功。

但是,我不知道如何将这些数据返回到 javascript 并让它完成剩下的工作。我很难过,真的需要帮助。这一切都在谷歌 App Engine 上。目前,它只是一个运行简单 javascript 的按钮,该 javascript 尝试使用 JQuery 来获取页面内容,但失败了。我不知道如何将两者结合起来!

请帮忙!

0 投票
1 回答
3029 浏览

php - 使用 Valve/Steam API 转换多个 ID

所以这是一个很长的解释。

我有一个反恐精英:源服务器,带有商店的游戏内插件。此存储将其数据保存在 MySQL 数据库中(对于此实例,名为“存储”)。商店在该数据库中跟踪玩家的钱(在表“用户”中的“信用”列上)。它基于“steam_id”存储客户端(每个客户端唯一)

“steam_id”的格式为(示例):STEAM_0:0:123456789 或 STEAM_0:1:12345789。

我的页面显示了数据库中排名前 1000 的用户(按信用排序)。

我的问题:我需要将这些丑陋的 steam_id 转换为实际名称。

我现在在哪里:

Steam API 文档

根据 API 文档,我在查询 API 时必须使用“社区 ID”。如果我想获得多个用户,我可以使用逗号分隔 GET 字符串中的社区 ID。

(http://api.steampowered.com/ISteamUser/GetPlayerSummaries/v0002/?key=APIKEY&steamids= 76561197960435530,76561197960435531 &format=json)

我有一个函数可以将 steam_id 转换为 API 可接受的 ID。

有了这个,我可以用这个来制作我的逗号分隔的社区 ID 列表:

现在对于棘手的部分,所有这些值都返回到一个 JSON 数组中。我需要添加一些东西,所以当我显示我的数据时,我可以将“steam_id”直接转换为“名称”(使用现有数组)。

输出示例(删除了大多数键和值以使其可读)

再说一次,我将如何直接从“steam_id”变成一个名字?

感谢任何可以提供代码和/或建议的人!

0 投票
2 回答
4903 浏览

python - 解析和混合 Steam API 调用

我正在使用 Django 环境,我想从 Steam 中提取统计信息。然而,Steam 的 API 非常愚蠢,因为它们有大约 20 个不同的 URL,我想从中获取信息的主要两个是:

我正在使用 Python 请求库来GET处理来自 Steam 的数据。

当我查询时,steamcommunity.com我得到了类似的东西:

api.steampowered.com我得到这个:

基本上,为了能够从中获得任何东西api.steampowered.com,我需要一个 Steam ID。为此,我调用了steamcommunity.com网站,该网站返回一个带有 Steam ID 的 XML 文件,等等。我需要的信息如下(使用 XML/JSON 响应中的名称):

播放器

  • 蒸汽机
  • 人名
  • 个人资料网址
  • 朋友(我相信需要另一个 API 调用)
  • 人格化
  • 游戏总数
  • 阿凡达全

游戏

  • 应用ID
  • 姓名
  • 标识
  • hoursLast2Weeks

对于游戏总数,我想我只需<game>计算steamcommunity.com. 它起作用了,因为我能够计算它们,但我似乎无法将totalgames字段添加到来自api.steampowered.com. 其次,并非所有<game>节点都有<hoursLast2Weeks>子节点,我只想要那些有子节点的。第三,我只想得到玩家的朋友总数。我不是在开玩笑,我知道我必须使用另一个GET,但问题是将它添加到 JSON 中。

我的主要问题是尝试添加到 JSON 响应中,我查看了 SO 上的其他示例,尝试关注它们,但我不确定我在哪里出错了。任何帮助将不胜感激。

0 投票
1 回答
31496 浏览

api - 如何在 Steam WebAPI 中获取应用程序的价格?

是否有可能通过 WebAPI 从 Steam 获取游戏价格?