Steamworks 的合法 DLC 解锁器
?合法 DLC 解锁
?库存模拟
无配置操作
多种安装方式:
?️ 商店模式
?游戏模式
?挂钩模式
?代理模式
?下载最新版本
SmokeAPI 论坛主题
SmokeAPI 是一款 DLC 解锁器,适用于您 Steam 帐户中合法拥有的游戏。它试图欺骗使用 Steamworks SDK 的游戏,让其相信您拥有所需的 DLC。然而,SmokeAPI 不会修改 Steamworks SDK 的其余部分,因此多人游戏、成就等功能仍保持完整功能。
SmokeAPI 旨在支持所有已发布的 SteamAPI 版本。当遇到新的、不受支持的接口版本时,它将回退到最新支持的版本。以下是支持的接口版本列表:
ISteamClient v6 — v20。 (6之前的版本不包含任何DLC相关接口)
ISteamApps v2 — v8。 (版本1不包含任何DLC相关功能)
ISteamUser v12 — v21。 (12之前的版本不包含任何DLC相关功能)
ISteamInventory v1 — v3。
由于自定义实施和在线检查,Steam 库存不适用于所有具有 Steam 库存的游戏。库存模拟已被证明有效的游戏列表如下:
冬季计划
欧洲卡车模拟2
英雄围攻(如果你绕过 EAC)
警告 | 请自行承担安装的风险。使用此解锁器需要违反一项或多项服务条款,这可能会导致您的帐户永久丢失。 |
SmokeAPI 支持 2 种主要的安装模式:商店模式和游戏模式,这将在下一节中介绍。
笔记 | 值得注意的是,以下说明描述的是手动安装方法。通过使用 Koalgeddon v2,您可以受益于自动安装和 GUI 配置。 |
在这种安装模式下,SmokeAPI被加载到Steam进程中,这使得它能够影响所有Steam游戏。
从 Koaloader Releases 下载最新的 Koaloader 版本 zip。
从 Koaloader 存档中解压version-32
中的version.dll
,并将其放入 Steam 目录[1]中。
在Steam目录[1]中创建以下Koaloader配置文件:
Koaloader.config.json
{
"auto_load" : false ,
"targets" : [
" Steam.exe "
],
"modules" : [
{
"path" : " SmokeAPI.dll " ,
"required" : true
}
]
}
从 SmokeAPI Releases 下载最新的 SmokeAPI 版本 zip。
从 SmokeAPI 存档中解压steam_api.dll
,将其重命名为SmokeAPI.dll
,并将其放入 Steam 目录[1]中。
在此安装模式下,SmokeAPI 被加载到游戏进程中,这将其限制为仅限于该特定游戏。该模式本身支持2种模式:hook模式和proxy模式。首先尝试以挂钩模式安装解锁器。如果不起作用,请尝试以代理模式安装。
从 Koaloader Releases 下载最新的 Koaloader 版本 zip。
根据游戏位数,从 Koaloader 存档中解压版本 32/64 中version.dll
,并将其放置在游戏 exe 文件旁边。
从 SmokeAPI Releases 下载最新的 SmokeAPI 版本 zip。
从 SmokeAPI 存档中解压steam_api.dll
/ steam_api64.dll
,根据游戏位数,将其重命名为SmokeAPI.dll
,并将其放置在游戏 exe 文件旁边。
在游戏目录中找到steam_api.dll
/ steam_api64.dll
文件,并将其重命名为steam_api_o.dll
/ steam_api64_o.dll
。
从 SmokeAPI Releases 下载最新的 SmokeAPI 版本 zip。
从 SmokeAPI 存档中解压steam_api.dll
/ steam_api64.dll
,具体取决于游戏位数,并将其放置在原始 steam_api DLL 文件旁边。
如果解锁器未按预期工作,请先完整阅读通用解锁器安装说明,然后再在 SmokeAPI 论坛主题中寻求支持。
笔记 | 本文档描述了 SmokeAPI 版本 2 的配置。您可以在此处找到版本 1 文档。 |
SmokeAPI 不需要任何手动配置。默认情况下,它使用最合理的选项并尝试解锁所有可以解锁的 DLC。但是,在某些情况下,您可能需要更多定制行为,例如禁用某些 DLC,或有选择地仅启用其中的几个。在这种情况下,您可以使用配置文件 SmokeAPI.config.json,您可以在此存储库或发布 zip 中找到该文件。要使用它,只需将其放在 SmokeAPI DLL 旁边即可。每次启动游戏或商店时都会读取该信息。如果没有配置文件,将使用下面指定的默认值。配置文件应符合Json标准。
logging
切换SmokeAPI.log.log
文件的生成。
类型 | 布尔值 |
默认 |
|
unlock_family_sharing
仅限存储模式。切换家庭共享旁路,使共享库的借用者能够在库所有者也在玩游戏时开始并继续玩游戏。
类型 | 布尔值 |
默认 |
|
default_app_status
该选项设置默认的 DLC 解锁行为。
可能的值 |
| ||||
类型 | 细绳 | ||||
默认 |
|
override_app_status
此选项会覆盖属于指定应用程序 ID [2]的所有 DLC 的状态。
可能的值 | 具有键值对的对象,其中键对应应用程序 ID,值对应应用程序状态。可能的应用程序状态值在 |
类型 | 目的 |
默认 |
|
override_dlc_status
此选项会覆盖各个 DLC 的状态,无论相应的应用程序状态如何。
可能的值 | 具有键值对的对象,其中键对应应用程序 ID,值对应应用程序状态。可能的应用程序状态值在 |
类型 | 目的 |
默认 |
|
auto_inject_inventory
当游戏查询用户库存时,切换 SmokeAPI 是否应自动注入所有已注册库存项目的列表
类型 | 布尔值 |
默认 |
|
extra_inventory_items
除了自动注入的项目之外,还将添加库存项目 ID [2]的列表。
类型 | 数组(整数) |
默认 |
|
$version
保留供 GUI 配置编辑器等工具使用的技术领域。不要修改该值。
类型 | 整数 |
默认 |
|
extra_dlcs
请参阅 SmokeAPI 如何在具有大量 DLC 的游戏中工作,以了解此选项的用例。
可能的值 | 具有键值对的对象,其中键对应于应用程序 ID,值对应于包含 DLC ID 的对象。格式与前面提到的 GitHub 配置中的格式相同。 |
类型 | 目的 |
默认 |
|
store_config
仅限存储模式。指定存储模式操作所需的偏移量的对象。它将覆盖从远程源或本地缓存获取的配置。除非您知道自己在做什么,否则请勿修改此值。
类型 | 目的 |
默认 | 查看在线配置 |
{
"$version" : 2 ,
"logging" : true ,
"unlock_family_sharing" : true ,
"default_app_status" : " unlocked " ,
"override_app_status" : {
"1234" : " original " ,
"4321" : " unlocked "
},
"override_dlc_status" : {
"1234" : " original " ,
"4321" : " unlocked " ,
"5678" : " locked "
},
"auto_inject_inventory" : true ,
"extra_inventory_items" : [],
"extra_dlcs" : {
"1234" : {
"dlcs" : {
"56789" : " Example DLC 1 "
}
},
"4321" : {
"dlcs" : {
"98765" : " Example DLC 2 " ,
"98766" : " Example DLC 3 "
}
}
},
"store_config" : {
"client_engine_steam_client_internal_ordinal" : 12 ,
"steam_client_internal_interface_selector_ordinal" : 18 ,
"vstdlib_callback_address_offset" : 20 ,
"vstdlib_callback_data_offset" : 0 ,
"vstdlib_callback_interceptor_address_offset" : 1 ,
"vstdlib_callback_name_offset" : 4
}
}
一些拥有大量 DLC 的游戏通过查询 Steamworks API 来获取所有可用 DLC 的列表来开始所有权验证。一旦游戏收到列表,它将检查每个项目并检查所有权。该问题的根源在于 Steamworks SDK 的响应可能最多为 64,具体取决于用户拥有多少无主 DLC。为了缓解这个问题,SmokeAPI 将向 Steam API 发出 Web 请求以获取 DLC 的完整列表,这在大多数情况下都运行良好。不幸的是,即使是 Web API 也不能解决我们所有的问题,因为它只会返回 Steam 商店中可用的 DLC。这意味着没有专门商店提供的 DLC(例如预购 DLC)将被排除在外。这就是extra_dlcs
配置选项发挥作用的地方。您可以在那里指定那些缺失的 DLC ID,SmokeAPI 将使它们可供游戏使用。然而,这引入了手动配置的需要,这违背了该项目的理想。为了解决这个问题,SmokeAPI 还将获取存储在 GitHub 存储库中的手动维护的额外 DLC 列表。本文档的目的是包含缺少 Steam 商店页面的所有 DLC ID。这使得 SmokeAPI 无需任何配置文件即可解锁所有 DLC。欢迎在 SmokeAPI 论坛主题游戏中举报拥有超过 64 个 DLC 的游戏,以及拥有没有专门商店页面的 DLC 的游戏。它们将被添加到缺失的 DLC ID 列表中,以促进无配置操作。
CMake v3.24(确保 cmake 可从 powershell 获取)
Visual Studio 2022 [3] 。
在 Windows 11 SDK (10.0.22621.0) [3]上测试。
构建项目
.build.ps1 <架构> <配置>
在哪里
拱 |
|
配置 |
|
例如:
.build.ps1 32 调试
该项目利用了 KoalaBox 自述文件中指定的开源项目
该软件根据 Unlicense 获得许可,其条款可在 UNLICENSE.txt 中找到