Steamworks 用の合法的な DLC アンロックツール
?合法的なDLCのロック解除
?インベントリエミュレーション
設定不要の操作
複数のインストール方法:
⁉️ストアモード
?ゲームモード
?フックモード
?プロキシモード
?最新リリースをダウンロードする
SmokeAPI フォーラムのトピック
SmokeAPI は、Steam アカウントで正当に所有されているゲームの DLC ロック解除ツールです。 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
Hero Siege (EAC をバイパスした場合)
警告 | インストールは自己責任で行ってください。このロック解除ツールを使用すると、1 つ以上の利用規約に違反することになり、アカウントが永久に失われる可能性があります。 |
SmokeAPI は、次のセクションで説明するストアモードとゲームモードという 2 つの主なインストール モードをサポートしています。
注記 | 次の手順では手動によるインストール方法について説明していることに注意してください。 Koalagesdon v2 を使用すると、自動インストールと GUI 構成の利点を活用できます。 |
このインストール モードでは、SmokeAPI が Steam プロセスにロードされ、すべての Steam ゲームに影響を与えることができます。
最新の Koaloader リリース zip を Koaloader Releases からダウンロードします。
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 つのモードをサポートします。最初にロック解除ツールをフック モードでインストールしてみてください。動作しない場合は、プロキシ モードでインストールしてみてください。
最新の Koaloader リリース zip を Koaloader Releases からダウンロードします。
ゲームのビット数に応じて、Koaloader アーカイブから version-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 を無効にしたり、一部の DLC だけを選択的に有効にしたりするなど、よりカスタマイズされた動作が必要な状況も考えられます。この場合、このリポジトリまたはリリース zip にある構成ファイル SmokeAPI.config.json を使用できます。これを使用するには、SmokeAPI DLL の隣に置くだけです。ゲームまたはストアが起動されるたびに読み取られます。構成ファイルがない場合は、以下に指定されたデフォルト値が使用されます。構成ファイルは Json 標準に準拠していることが期待されます。
logging
SmokeAPI.log.log
ファイルの生成を切り替えます。
タイプ | ブール値 |
デフォルト |
|
unlock_family_sharing
ストアモードのみ。ファミリー共有バイパスを切り替えます。これにより、ライブラリの所有者がプレイしているときに、共有ライブラリの借用者がゲームを開始してプレイを継続できるようになります。
タイプ | ブール値 |
デフォルト |
|
default_app_status
このオプションは、デフォルトの DLC ロック解除動作を設定します。
可能な値 |
| ||||
タイプ | 弦 | ||||
デフォルト |
|
override_app_status
このオプションは、指定されたアプリ ID に属するすべての DLC のステータスをオーバーライドします[2] 。
可能な値 | キーと値のペアを持つオブジェクト。キーはアプリ ID に対応し、値はアプリのステータスに対応します。可能なアプリのステータス値は、 |
タイプ | 物体 |
デフォルト |
|
override_dlc_status
このオプションは、対応するアプリのステータスに関係なく、個々の DLC のステータスをオーバーライドします。
可能な値 | キーと値のペアを持つオブジェクト。キーはアプリ ID に対応し、値はアプリのステータスに対応します。可能なアプリのステータス値は、 |
タイプ | 物体 |
デフォルト |
|
auto_inject_inventory
ゲームがユーザー インベントリをクエリするときに、SmokeAPI が登録されているすべてのインベントリ アイテムのリストを自動的に挿入するかどうかを切り替えます。
タイプ | ブール値 |
デフォルト |
|
extra_inventory_items
自動的に挿入されるアイテムに加えて追加されるインベントリアイテム ID [2]のリスト。
タイプ | (整数の) 配列 |
デフォルト |
|
$version
GUI 構成エディターなどのツールで使用するために予約されている技術フィールド。この値は変更しないでください。
タイプ | 整数 |
デフォルト |
|
extra_dlcs
このオプションの使用例を理解するには、「多数の DLC を含むゲームでの SmokeAPI の仕組み」を参照してください。
可能な値 | キーと値のペアを持つオブジェクト。キーはアプリ 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 のリストを取得することで所有権の確認を開始します。ゲームがリストを受信すると、各アイテムを調べて所有権を確認します。この問題は、ユーザーが所有していない DLC の量に応じて、Steamworks SDK からの応答が最大 64 に達する可能性があるという事実から発生します。この問題を軽減するために、SmokeAPI は DLC の完全なリストを求める Web リクエストを Steam API に送信します。これはほとんどの場合正常に機能します。残念ながら、Web API でさえ、Steam ストアで入手可能な DLC のみを返すため、すべての問題を解決できるわけではありません。これは、予約注文 DLC など、専用のストアで提供されていない DLC は除外されることを意味します。そこで、 extra_dlcs
設定オプションが役に立ちます。そこで不足している DLC ID を指定すると、SmokeAPI がそれらをゲームで使用できるようにします。ただし、これにより手動構成が必要となり、このプロジェクトの理想に反します。この問題を解決するために、SmokeAPI は、GitHub リポジトリに保存されている追加 DLC の手動で管理されたリストも取得します。このドキュメントの目的は、Steam ストア ページにないすべての DLC ID を記載することです。これにより、SmokeAPI は設定ファイルをまったく使用せずにすべての DLC のロックを解除できるようになります。 64 を超える DLC があり、専用のストア ページがない DLC があるゲームについては、SmokeAPI フォーラムのトピックでお気軽に報告してください。これらは、構成不要の操作を容易にするために、欠落している 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 Readme で指定されているオープン ソース プロジェクトを利用します。
このソフトウェアは Unlicense に基づいてライセンスされており、その条件は UNLICENSE.txt で確認できます。