139 Commits

Author SHA1 Message Date
acidicoala
5aaa9ed151 Added trace logs to proxy exports 2026-01-04 21:41:26 +05:00
acidicoala
e2b126c8b6 Regenerated README [skip ci] 2026-01-04 07:22:14 +05:00
acidicoala
2f6d6cc9aa Regenerated linux proxy exports 2026-01-04 07:12:44 +05:00
acidicoala
8784df5f45 Fix mbedtls include attempt 3 2026-01-04 06:54:06 +05:00
acidicoala
dc12301090 Fix mbedtls include attempt 2 2026-01-04 06:13:58 +05:00
acidicoala
907e939b67 Fixed string section name 2026-01-04 04:49:35 +05:00
acidicoala
7b82994b17 Regenerate linux proxy exports 2026-01-04 04:49:28 +05:00
acidicoala
11bd820921 Sync KoalaBox (brotli, openssl) 2026-01-04 04:49:19 +05:00
acidicoala
9acf7312d3 Fixed static order init fiasco 2026-01-02 21:57:41 +05:00
acidicoala
3b8635d16b Version bump to 4.1.0 2025-12-27 20:45:44 +05:00
acidicoala
e430350ffd Added instructions on adding support for new Steamworks SDK 2025-12-27 19:04:38 +05:00
acidicoala
0341c97d4f Fix README [skip ci] 2025-12-26 20:17:57 +05:00
acidicoala
c6aefbc460 Fallback to original DLC count 2025-12-26 20:02:56 +05:00
acidicoala
1f7a31d938 Update interface lookup 2025-12-26 19:59:18 +05:00
acidicoala
5910de7f27 Fix steamworks headers and binaries 2025-12-26 19:55:02 +05:00
acidicoala
5aa97db828 Fix steamworks downloader 2025-12-26 19:38:24 +05:00
acidicoala
e09cd7cef2 Added Steamworks SDK v1.63 2025-12-26 19:38:09 +05:00
acidicoala
e69734f9e7 Sync KoalaBox 2025-12-24 23:35:55 +05:00
acidicoala
bfc59ab64f Sync KoalaBox 2025-12-24 23:06:24 +05:00
acidicoala
a6f43d80e6 Sync KoalaBox 2025-12-24 22:46:34 +05:00
acidicoala
db58468823 Sync KoalaBox 2025-12-24 22:25:29 +05:00
acidicoala
15ba0ed447 KoalaBox sync 2025-12-23 03:02:45 +05:00
acidicoala
aa0504ff14 Sync KoalaBox 2025-10-13 02:20:28 +05:00
acidicoala
3312e92dce Sync KoalaBox 2025-10-13 01:58:36 +05:00
acidicoala
e6dbffb671 Sync KoalaBox 2025-10-12 17:31:21 +05:00
acidicoala
ef3b8894e3 Bump config schema version URL 2025-10-12 16:25:32 +05:00
acidicoala
009d839ec3 Updated Linux instructions 2025-10-12 16:23:24 +05:00
acidicoala
70160206b8 Sync KoalaBox 2025-10-12 03:40:31 +05:00
acidicoala
86eb2085e7 Sync KoalaBox 2025-10-11 02:50:31 +05:00
acidicoala
5f07cec291 Sync KoalaBox 2025-10-09 16:07:15 +05:00
acidicoala
4bf9898f83 Update CI 2025-10-07 03:16:11 +05:00
acidicoala
1f8fab7b48 Remove linux sources from windows build 2025-10-07 01:12:47 +05:00
acidicoala
36d5143463 Fix #if directives 2025-10-07 00:54:52 +05:00
acidicoala
d5db62c2f2 Generate proxy exports on demand 2025-10-07 00:41:49 +05:00
acidicoala
7e9c4c42b9 Added debug logs 2025-10-06 23:57:44 +05:00
acidicoala
cc17984702 Added debug logs 2025-10-06 23:46:33 +05:00
acidicoala
293f490e1d Added debug logs 2025-10-06 23:22:49 +05:00
acidicoala
060d6e15a3 Implemented tag release 2025-10-06 23:01:40 +05:00
acidicoala
96ec32228c Removed debug log 2025-10-06 20:01:58 +05:00
acidicoala
725be9f346 Sync KoalaBox 2025-10-06 19:49:04 +05:00
acidicoala
5382c84906 Setup Github user in dockerfile 2025-10-06 19:32:53 +05:00
acidicoala
5629b7b5e2 Added debug logs in CI 2025-10-06 19:02:20 +05:00
acidicoala
673cd11e47 Added init & shutdown checks 2025-10-06 18:53:22 +05:00
acidicoala
ec99d79bf7 Update README [skip ci] 2025-10-06 01:52:02 +05:00
acidicoala
fb17902116 Update CI 2025-10-06 01:21:35 +05:00
acidicoala
fce11580d6 Sync KoalaBox 2025-10-06 01:00:00 +05:00
acidicoala
2fad0ee43f Updated CI 2025-10-05 23:47:15 +05:00
acidicoala
73fab4020d Sync KoalaBox 2025-10-05 23:38:23 +05:00
acidicoala
bdbd1ff540 Updated CI 2025-10-05 23:10:37 +05:00
acidicoala
477f019b49 Updated CI 2025-10-05 22:53:04 +05:00
acidicoala
8d3d2c13d8 Updated CI 2025-10-05 22:29:31 +05:00
acidicoala
b362bb2828 Updated CI 2025-10-05 22:27:43 +05:00
acidicoala
06809b2c5d Updated CI 2025-10-05 22:14:32 +05:00
acidicoala
85710cce37 Updated CI 2025-10-05 22:08:00 +05:00
acidicoala
fe7eef72bd Updated CI 2025-10-05 19:43:43 +05:00
acidicoala
1572a0fd4a Updated CI 2025-10-05 19:42:00 +05:00
acidicoala
7e744f5492 Updated CI 2025-10-05 19:40:36 +05:00
acidicoala
c29445126b Updated CI 2025-10-05 19:38:54 +05:00
acidicoala
c6767419e4 Updated CI 2025-10-05 19:38:27 +05:00
acidicoala
dac3cad5e2 Updated CI 2025-10-05 19:37:54 +05:00
acidicoala
62071a1489 Fix CI 2025-10-05 19:35:59 +05:00
acidicoala
f8de04812a Updated CI 2025-10-05 19:29:51 +05:00
acidicoala
df43442fce Updated CI 2025-10-05 19:09:45 +05:00
acidicoala
76cf15126c Updated CI 2025-10-05 19:04:49 +05:00
acidicoala
8194a3333d Updated CI 2025-10-05 19:03:15 +05:00
acidicoala
599749a799 Use docker container in CI 2025-10-05 18:46:31 +05:00
acidicoala
ef5bc217b0 Fix Linux build 2025-10-05 16:31:53 +05:00
acidicoala
9f1a5edd5f Fix Linux build 2025-10-05 16:10:15 +05:00
acidicoala
d879b21bd4 Fix Linux build 2025-10-05 16:00:15 +05:00
acidicoala
5aa9ffef85 Refactored lib and module namespaces 2025-10-05 07:31:05 +05:00
acidicoala
0c6c8e02b6 Fix Build CI 2025-10-04 21:29:43 +05:00
acidicoala
0f5d98e42b Fix Build CI 2025-10-04 21:15:33 +05:00
acidicoala
2da049ec2a Fix Build CI 2025-10-04 21:02:31 +05:00
acidicoala
227a920e11 Fix Build CI 2025-10-04 21:01:00 +05:00
acidicoala
21a4f56145 Fix Build CI 2025-10-04 21:00:02 +05:00
acidicoala
3ab61365ce Fix Build CI 2025-10-04 20:59:37 +05:00
acidicoala
2ce8967257 Fix Build CI 2025-10-04 20:57:13 +05:00
acidicoala
83623841bd Fix Build CI 2025-10-04 20:56:42 +05:00
acidicoala
d46acb56e8 Fix Build CI 2025-10-04 20:53:25 +05:00
acidicoala
7ec6f5b277 Fix Build CI 2025-10-04 20:50:03 +05:00
acidicoala
7758663b2e Fix Build CI 2025-10-04 20:39:32 +05:00
acidicoala
3d5261e293 Fix Build CI 2025-10-04 20:37:48 +05:00
acidicoala
469299340f Fix Build CI 2025-10-04 20:35:26 +05:00
acidicoala
e3505e48fb Fix Build CI 2025-10-04 17:40:44 +05:00
acidicoala
35ea324898 Reworked lib::get_exports 2025-10-04 17:24:36 +05:00
acidicoala
b4c12f5a37 Fix Build CI 2025-10-04 05:22:37 +05:00
acidicoala
8a92c50fd3 Fix Build CI 2025-10-04 05:13:11 +05:00
acidicoala
fe5c4cede4 Fix Build CI 2025-10-04 04:55:27 +05:00
acidicoala
d7d5eb349b Fix Build CI 2025-10-04 04:39:39 +05:00
acidicoala
7b20bde2fc Fix Build CI 2025-10-04 04:22:50 +05:00
acidicoala
02e66ed624 Fix Build CI 2025-10-04 03:46:21 +05:00
acidicoala
23ee93464a Fix Build CI 2025-10-04 03:43:18 +05:00
acidicoala
ca5fcf8cb0 Added debug steps 2025-10-04 02:55:45 +05:00
acidicoala
2b3930031f Added debug steps 2025-10-04 02:41:27 +05:00
acidicoala
debb44c138 Added missing Linux dependencies 2025-10-04 01:39:56 +05:00
acidicoala
21cab6c469 Fix Build CI 2025-10-04 01:28:24 +05:00
acidicoala
7cb32f84db Added missing Linux dev dependencies 2025-10-04 01:16:00 +05:00
acidicoala
9a0ab12b86 Added missing Linux dev dependencies 2025-10-04 01:03:37 +05:00
acidicoala
05569a4019 Switch to clang compiler on Linux 2025-10-04 00:52:09 +05:00
acidicoala
49efd831bf Implemented get_section using elfio 2025-10-04 00:42:13 +05:00
acidicoala
9944f3bd3f Added missing header 2025-10-04 00:14:25 +05:00
acidicoala
53868e8bed Fix Build CI 2025-10-04 00:06:00 +05:00
acidicoala
842387bb2f Updated readme 2025-10-04 00:01:42 +05:00
acidicoala
c062696706 Fix build error 2025-10-03 23:46:00 +05:00
acidicoala
aea513fbd1 Fix missing optional include 2025-10-03 23:29:57 +05:00
acidicoala
99564ae4b7 Fix build CI, update major version 2025-10-03 23:12:32 +05:00
acidicoala
046df29a6b Fix Build CI 2025-10-03 23:06:38 +05:00
acidicoala
5012ed3da8 Added Linux instructions 2025-10-03 22:59:38 +05:00
acidicoala
297382f6a2 Fix build CI 2025-10-03 21:51:48 +05:00
acidicoala
e6fe7ad22e Fix build CI 2025-10-03 21:45:11 +05:00
acidicoala
548ba0fe00 Fix build CI 2025-10-03 21:42:05 +05:00
acidicoala
cd8be9f80a Fix build CI 2025-10-03 21:39:57 +05:00
acidicoala
ca4457556c Fix build CI 2025-10-03 21:37:29 +05:00
acidicoala
509b70c0b0 New build CI 2025-10-03 21:34:20 +05:00
acidicoala
ac9c1a3fcc Implement get_bitness on windows 2025-09-29 00:32:56 +05:00
acidicoala
265829f434 Full support for 64-bit Linux 2025-09-28 21:05:01 +05:00
acidicoala
d03f95adb7 Added notes about self-hook mode 2025-09-26 22:59:18 +05:00
acidicoala
d8e1333d42 Refactored tool deps into KoalaBoxTools 2025-09-26 22:49:10 +05:00
acidicoala
922b649fc3 Reworked configure_linker_exports 2025-09-26 00:16:15 +05:00
acidicoala
d829396c08 Refactored linux exports generator with inja 2025-09-25 01:24:53 +05:00
acidicoala
59d45c9dab 64-bit proxy mode for Linux 2025-09-24 22:37:53 +05:00
acidicoala
81a8ef42ab Version bump 2025-09-24 19:40:18 +05:00
acidicoala
e72bc29635 Replaced get_module_version_info with non-throwing variant 2025-09-23 18:29:55 +05:00
acidicoala
593c0cb4bc Added win::check_self_duplicates 2025-09-23 15:00:00 +05:00
acidicoala
d3fd17779c Updated readme [skip ci] 2025-09-22 23:07:37 +05:00
acidicoala
f5b8c0c89f Added support for self-injection via winhttp.dll 2025-09-22 22:47:53 +05:00
acidicoala
8decbafb53 Reworked algorithm for finding App ID 2025-09-22 21:31:47 +05:00
acidicoala
7ab9895b58 Added winmm.dll for self-injection 2025-09-22 03:57:11 +05:00
acidicoala
c75bbcf636 Fix CI 2025-09-22 01:45:26 +05:00
acidicoala
c409ff3202 Sync KoalaBox 2025-09-21 23:39:07 +05:00
acidicoala
8a6c8d0fba Sync KoalaBox 2025-09-21 23:37:21 +05:00
acidicoala
7781636335 Fix CI 2025-09-21 22:34:04 +05:00
acidicoala
e0ba771d52 Fix CI 2025-09-21 22:26:59 +05:00
acidicoala
b0a4ea0f24 Version bump 2025-09-21 22:18:27 +05:00
acidicoala
c5f8a37702 Fixed late hooking 2025-09-21 21:48:24 +05:00
acidicoala
50b7792375 Replaced local ntapi.hpp with winsiderss/phnt 2025-09-21 07:00:04 +05:00
acidicoala
bdbd02087c Restored Steamworks SDK v1.62 + linux bin fixer 2025-09-20 23:27:03 +05:00
acidicoala
f30aee0da9 Use init_null_logger 2025-09-20 07:54:13 +05:00
acidicoala
b4a9e8fd79 Switch to DLL_MAIN helper 2025-09-20 07:36:49 +05:00
235 changed files with 74935 additions and 4575 deletions

1
.gitattributes vendored
View File

@@ -1,3 +1,4 @@
* text eol=lf
*.dll binary
*.so binary

View File

@@ -1,18 +0,0 @@
name: Continuous Integration
on: push
jobs:
ci:
name: CI
uses: acidicoala/KoalaBox/.github/workflows/build-and-package.yml@1bdfeefa9933092a747c46679b3d872470ef4998
permissions:
contents: write
with:
arch: '[ 32, 64 ]'
config: Release
modules: '[ "SmokeAPI" ]'
zip_command: >
zip -j $ZIP_NAME
artifacts/*/*.dll
res/SmokeAPI.config.json
res/README.txt

11
.github/workflows/dev-build.yml vendored Normal file
View File

@@ -0,0 +1,11 @@
name: '🚧 Development Build'
on:
push:
branches:
- '**' # This prevents dev builds on tag pushes
jobs:
dev-build:
name: '🚧 Development Build'
uses: acidicoala/SmokeAPI/.github/workflows/matrix-build.yml@master

18
.github/workflows/matrix-build.yml vendored Normal file
View File

@@ -0,0 +1,18 @@
name: Matrix Build
on:
workflow_call:
jobs:
build:
strategy:
fail-fast: false
matrix:
os: [ Linux, Windows ]
bitness: [ 32, 64 ]
uses: acidicoala/KoalaBox/.github/workflows/build-cmake.yml@master
with:
module: SmokeAPI
os: ${{ matrix.os }}
bitness: ${{ matrix.bitness }}

20
.github/workflows/tag-release.yml vendored Normal file
View File

@@ -0,0 +1,20 @@
name: '🏷️ Tag Release'
on:
push:
tags:
- '*'
jobs:
build-binaries:
name: '🏗️ Build Binaries'
uses: acidicoala/SmokeAPI/.github/workflows/matrix-build.yml@master
create-release:
name: '📦 Create Release'
uses: acidicoala/KoalaBox/.github/workflows/create-release.yml@master
needs: build-binaries
with:
zip_files: >
res/README.txt
res/SmokeAPI.config.json

2
.idea/SmokeAPI.iml generated
View File

@@ -1,2 +1,2 @@
<?xml version="1.0" encoding="UTF-8"?>
<module classpath="CMake" type="CPP_MODULE" version="4" />
<module classpath="CIDR" type="CPP_MODULE" version="4" />

View File

@@ -4,9 +4,16 @@
<w>abcdefghijklmnopqrstuvwxyz</w>
<w>acidicoala</w>
<w>ajaxgetdlclist</w>
<w>cstring</w>
<w>dlmopen</w>
<w>dlopen</w>
<w>dlsym</w>
<w>dynsym</w>
<w>elfio</w>
<w>endfor</w>
<w>ghcr</w>
<w>indicies</w>
<w>inja</w>
<w>inlinentd</w>
<w>isteamapps</w>
<w>isteamclient</w>
@@ -16,9 +23,20 @@
<w>koality</w>
<w>koaloader</w>
<w>libgtk</w>
<w>libsteam</w>
<w>memcpy</w>
<w>movabs</w>
<w>movl</w>
<w>peparse</w>
<w>phnt</w>
<w>polyhook</w>
<w>rtld</w>
<w>simplecpp</w>
<w>steamapi</w>
<w>steamapps</w>
<w>steamclient</w>
<w>winhttp</w>
<w>winmm</w>
<w>wstr</w>
</words>
</dictionary>

1
.idea/misc.xml generated
View File

@@ -20,4 +20,5 @@
<option name="useRustfmt" value="true" />
<option name="version" value="2" />
</component>
<component name="WestSettings"><![CDATA[{}]]></component>
</project>

View File

@@ -1,7 +0,0 @@
<component name="ProjectRunConfigurationManager">
<configuration default="false" name="exports_generator [32] [linux]" type="CMakeRunConfiguration" factoryName="Application" PROGRAM_PARAMS="FALSE libsteam_api_o $ProjectFileDir$/res/steamworks/*/binaries/linux32/libsteam_api.so $CMakeCurrentGenerationDir$/generated/libsteam_api_exports.cpp" REDIRECT_INPUT="false" ELEVATE="false" USE_EXTERNAL_CONSOLE="false" EMULATE_TERMINAL="false" PASS_PARENT_ENVS_2="true" PROJECT_NAME="SmokeAPI" TARGET_NAME="exports_generator" CONFIG_NAME="Debug [32]" RUN_TARGET_PROJECT_NAME="SmokeAPI" RUN_TARGET_NAME="exports_generator">
<method v="2">
<option name="com.jetbrains.cidr.execution.CidrBuildBeforeRunTaskProvider$BuildBeforeRunTask" enabled="true" />
</method>
</configuration>
</component>

View File

@@ -1,7 +0,0 @@
<component name="ProjectRunConfigurationManager">
<configuration default="false" name="exports_generator [64] [win]" type="CMakeRunConfiguration" factoryName="Application" PROGRAM_PARAMS="FALSE steam_api64_o $ProjectFileDir$/res/steamworks/*/binaries/steam_api64.dll $CMakeCurrentGenerationDir$/generated/linker_exports_for_steam_api.h" REDIRECT_INPUT="false" ELEVATE="false" USE_EXTERNAL_CONSOLE="false" EMULATE_TERMINAL="false" PASS_PARENT_ENVS_2="true" PROJECT_NAME="SmokeAPI" TARGET_NAME="exports_generator" CONFIG_NAME="Debug [32]" RUN_TARGET_PROJECT_NAME="SmokeAPI" RUN_TARGET_NAME="exports_generator">
<method v="2">
<option name="com.jetbrains.cidr.execution.CidrBuildBeforeRunTaskProvider$BuildBeforeRunTask" enabled="true" />
</method>
</configuration>
</component>

View File

@@ -0,0 +1,7 @@
<component name="ProjectRunConfigurationManager">
<configuration default="false" name="linux_exports_generator [32]" type="CMakeRunConfiguration" factoryName="Application" PROGRAM_PARAMS="--input_libs_glob $ProjectFileDir$/res/steamworks/*/binaries/linux32/libsteam_api.so --output_path $ProjectFileDir$/src/generated/32/proxy_exports" REDIRECT_INPUT="false" ELEVATE="false" USE_EXTERNAL_CONSOLE="false" EMULATE_TERMINAL="false" PASS_PARENT_ENVS_2="true" PROJECT_NAME="SmokeAPI" TARGET_NAME="linux_exports_generator" CONFIG_NAME="Debug [64]" RUN_TARGET_PROJECT_NAME="SmokeAPI" RUN_TARGET_NAME="linux_exports_generator">
<method v="2">
<option name="com.jetbrains.cidr.execution.CidrBuildBeforeRunTaskProvider$BuildBeforeRunTask" enabled="true" />
</method>
</configuration>
</component>

View File

@@ -0,0 +1,7 @@
<component name="ProjectRunConfigurationManager">
<configuration default="false" name="linux_exports_generator [64]" type="CMakeRunConfiguration" factoryName="Application" PROGRAM_PARAMS="--input_libs_glob $ProjectFileDir$/res/steamworks/*/binaries/linux64/libsteam_api.so --output_path $ProjectFileDir$/src/generated/64/proxy_exports" REDIRECT_INPUT="false" ELEVATE="false" USE_EXTERNAL_CONSOLE="false" EMULATE_TERMINAL="false" PASS_PARENT_ENVS_2="true" PROJECT_NAME="SmokeAPI" TARGET_NAME="linux_exports_generator" CONFIG_NAME="Debug [64]" RUN_TARGET_PROJECT_NAME="SmokeAPI" RUN_TARGET_NAME="linux_exports_generator">
<method v="2">
<option name="com.jetbrains.cidr.execution.CidrBuildBeforeRunTaskProvider$BuildBeforeRunTask" enabled="true" />
</method>
</configuration>
</component>

View File

@@ -1,5 +1,5 @@
<component name="ProjectRunConfigurationManager">
<configuration default="false" name="steamworks_downloader [prompt]" type="CMakeRunConfiguration" factoryName="Application" PROGRAM_PARAMS="$Prompt$" REDIRECT_INPUT="false" ELEVATE="false" USE_EXTERNAL_CONSOLE="false" EMULATE_TERMINAL="false" WORKING_DIR="file://$ProjectFileDir$/res" PASS_PARENT_ENVS_2="true" PROJECT_NAME="SmokeAPI" TARGET_NAME="steamworks_downloader" CONFIG_NAME="Debug [32]" RUN_TARGET_PROJECT_NAME="SmokeAPI" RUN_TARGET_NAME="steamworks_downloader">
<configuration default="false" name="steamworks_downloader [prompt]" type="CMakeRunConfiguration" factoryName="Application" PROGRAM_PARAMS="$Prompt$" REDIRECT_INPUT="false" ELEVATE="false" USE_EXTERNAL_CONSOLE="false" EMULATE_TERMINAL="false" WORKING_DIR="file://$ProjectFileDir$/res" PASS_PARENT_ENVS_2="true" PROJECT_NAME="SmokeAPI" TARGET_NAME="steamworks_downloader" CONFIG_NAME="Debug [64]" RUN_TARGET_PROJECT_NAME="SmokeAPI" RUN_TARGET_NAME="steamworks_downloader">
<method v="2">
<option name="com.jetbrains.cidr.execution.CidrBuildBeforeRunTaskProvider$BuildBeforeRunTask" enabled="true" />
</method>

View File

@@ -1,5 +1,5 @@
<component name="ProjectRunConfigurationManager">
<configuration default="false" name="sync" type="CMakeRunConfiguration" factoryName="Application" REDIRECT_INPUT="false" ELEVATE="false" USE_EXTERNAL_CONSOLE="false" EMULATE_TERMINAL="false" WORKING_DIR="file://$ProjectFileDir$" PASS_PARENT_ENVS_2="true" PROJECT_NAME="SmokeAPI" TARGET_NAME="sync" CONFIG_NAME="Debug [32]" RUN_TARGET_PROJECT_NAME="SmokeAPI" RUN_TARGET_NAME="sync">
<configuration default="false" name="sync" type="CMakeRunConfiguration" factoryName="Application" REDIRECT_INPUT="false" ELEVATE="false" USE_EXTERNAL_CONSOLE="false" EMULATE_TERMINAL="false" WORKING_DIR="file://$ProjectFileDir$" PASS_PARENT_ENVS_2="true" PROJECT_NAME="SmokeAPI" TARGET_NAME="sync" CONFIG_NAME="Debug [64]" RUN_TARGET_PROJECT_NAME="SmokeAPI" RUN_TARGET_NAME="sync">
<method v="2">
<option name="com.jetbrains.cidr.execution.CidrBuildBeforeRunTaskProvider$BuildBeforeRunTask" enabled="true" />
</method>

View File

@@ -0,0 +1,7 @@
<component name="ProjectRunConfigurationManager">
<configuration default="false" name="windows_exports_generator [64]" type="CMakeRunConfiguration" factoryName="Application" PROGRAM_PARAMS="--forwarded_dll_name &quot;steam_api64_o&quot; --lib_files_glob &quot;$ProjectFileDir$\res\steamworks\*\binaries\steam_api64.dll&quot; --output_file_path &quot;$CMakeCurrentGenerationDir$\generated\linker_exports_for_steam_api.h&quot; --sources_input_path &quot;&quot;" REDIRECT_INPUT="false" ELEVATE="false" USE_EXTERNAL_CONSOLE="false" EMULATE_TERMINAL="false" PASS_PARENT_ENVS_2="true" PROJECT_NAME="SmokeAPI" TARGET_NAME="windows_exports_generator" CONFIG_NAME="Debug [64]" RUN_TARGET_PROJECT_NAME="SmokeAPI" RUN_TARGET_NAME="windows_exports_generator">
<method v="2">
<option name="com.jetbrains.cidr.execution.CidrBuildBeforeRunTaskProvider$BuildBeforeRunTask" enabled="true" />
</method>
</configuration>
</component>

View File

@@ -1,11 +1,8 @@
cmake_minimum_required(VERSION 3.24)
project(SmokeAPI VERSION 3.1.3)
project(SmokeAPI VERSION 4.1.1)
include(KoalaBox/cmake/KoalaBox.cmake)
if(CMAKE_BUILD_TYPE STREQUAL "Debug")
add_definitions(-DKB_DEBUG)
endif()
add_subdirectory(KoalaBox)
add_subdirectory(tools)
@@ -29,8 +26,22 @@ set(SMOKE_API_STATIC_SOURCES
static/smoke_api/steamclient/steamclient.hpp
)
if(IS_LINUX)
set(GENERATED_SOURCES_DIR src/generated/${BITNESS})
file(MAKE_DIRECTORY ${GENERATED_SOURCES_DIR})
set(GENERATED_SOURCES
${GENERATED_SOURCES_DIR}/proxy_exports.hpp
${GENERATED_SOURCES_DIR}/proxy_exports.cpp
)
foreach(SRC IN LISTS GENERATED_SOURCES)
file(TOUCH ${SRC})
endforeach()
endif()
set(SMOKE_API_SOURCES
${SMOKE_API_STATIC_SOURCES}
${GENERATED_SOURCES}
src/smoke_api/smoke_api.cpp
src/smoke_api/smoke_api.hpp
src/steam_api/virtuals/isteamapps.cpp
@@ -39,7 +50,6 @@ set(SMOKE_API_SOURCES
src/steam_api/virtuals/isteamhttp.cpp
src/steam_api/virtuals/isteaminventory.cpp
src/steam_api/virtuals/isteamuser.cpp
src/steam_api/virtuals/isteamutils.cpp
src/steam_api/virtuals/steam_api_virtuals.hpp
src/steam_api/steam_client.hpp
src/steam_api/steam_client.cpp
@@ -54,7 +64,6 @@ if(WIN32)
list(APPEND SMOKE_API_SOURCES src/main_win.cpp)
else()
set_32_and_64(LINUX_DIR linux32 linux64)
set(STEAM_API_MODULE libsteam_api)
set(STEAMCLIENT_DLL steamclient)
@@ -74,7 +83,6 @@ target_include_directories(SmokeAPI_common INTERFACE
)
target_link_libraries(SmokeAPI_common INTERFACE KoalaBox $<TARGET_OBJECTS:KoalaBox>)
### Static SmokeAPI
add_library(SmokeAPI_static STATIC ${SMOKE_API_STATIC_SOURCES})
@@ -106,23 +114,31 @@ if(WIN32)
configure_linker_exports(
TARGET SmokeAPI
HEADER_NAME "linker_exports_for_steam_api.h"
FORWARDED_DLL "${STEAM_API_MODULE}_o"
INPUT_SOURCES_DIR ""
DLL_FILES_GLOB "${CMAKE_CURRENT_SOURCE_DIR}/res/steamworks/*/binaries/${STEAM_API_MODULE}.dll"
FORWARDED_DLL_NAME "${STEAM_API_MODULE}_o"
LIB_FILES_GLOB "${CMAKE_CURRENT_SOURCE_DIR}/res/steamworks/*/binaries/${STEAM_API_MODULE}.dll"
SOURCES_INPUT_PATH ""
)
configure_linker_exports(
TARGET SmokeAPI
HEADER_NAME "linker_exports_for_version.h"
FORWARDED_DLL "C:/Windows/System32/version.dll"
INPUT_SOURCES_DIR ""
DLL_FILES_GLOB "C:/Windows/System32/version.dll"
set(HEADER_CONTENT "#pragma once\n\n")
foreach(WIN_DLL version winhttp winmm)
set(HEADER_NAME "linker_exports_for_${WIN_DLL}.h")
configure_linker_exports(
TARGET SmokeAPI
HEADER_NAME "${HEADER_NAME}"
FORWARDED_DLL_NAME "C:/Windows/System32/${WIN_DLL}.dll"
LIB_FILES_GLOB "C:/Windows/System32/${WIN_DLL}.dll"
SOURCES_INPUT_PATH ""
)
set(HEADER_CONTENT "${HEADER_CONTENT}#include <${HEADER_NAME}>\n")
endforeach()
file(GENERATE
OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/generated/linker_exports_for_windows_dlls.h"
CONTENT "${HEADER_CONTENT}"
)
else()
# configure_linker_exports(
# TARGET SmokeAPI
# HEADER_NAME "libsteam_api_exports.cpp"
# FORWARDED_DLL "${STEAM_API_MODULE}_o.so"
# DLL_FILES_GLOB "${CMAKE_CURRENT_SOURCE_DIR}/res/steamworks/*/binaries/${LINUX_DIR}/${STEAM_API_MODULE}.so"
# INPUT_SOURCES_DIR ""
# )
# Ignore linker warnings regarding COM-related private exports
set_target_properties(SmokeAPI PROPERTIES LINK_FLAGS "/ignore:4104")
endif()

175
README.md
View File

@@ -3,12 +3,15 @@
# SmokeAPI
_Legit DLC Unlocker for Steamworks._
_Legit DLC ownership emulation for Steamworks._
## ✨ Features
* `🔓` Emulate DLC ownership in legitimately owned games
* `🛅` Emulate Inventory item ownership
* `📄` Optional configuration
* `🐧` Support for 32-bit and 64-bit Windows and Linux systems
## 🔗 Links
@@ -20,7 +23,7 @@ _Legit DLC Unlocker for Steamworks._
### ❓ What is SmokeAPI?
SmokeAPI is a DLC unlocker for games that are _legitimately_ owned in your Steam account.
SmokeAPI is a tool for Steamworks DLC ownership emulation in games that are _legitimately_ owned in Steam.
It attempts to fool games that use Steamworks SDK (Steamworks) into thinking that you own the game's DLCs.
However, SmokeAPI does not modify the rest of the Steamworks, hence features like multiplayer, achievements, and so on remain fully functional.
@@ -33,7 +36,10 @@ Therefore, **you have to first research the game's topic**, to see if it support
Additionally, there are several points to bear in mind when it comes to unlocking DLCs with SmokeAPI:
* SmokeAPI most definitely will not work with games that use 3rd party DRM, such as games from Ubisoft, Rockstar, etc.* SmokeAPI is unlikely to unlock anything in Free-To-Play games since they typically store all player data on the corresponding game server and hence all the checks are server-side.
* SmokeAPI most definitely will not work with games that use 3rd party DRM, such as games from Ubisoft, Rockstar, etc.
* SmokeAPI most likely will not work with games that use Denuvo SecureDLC.
* SmokeAPI is unlikely to unlock anything in Free-To-Play games since they typically store all player data on the corresponding game server and hence all the checks are server-side.
* SmokeAPI will not work with games that employ additional ownership protection or if the game is using alternative DLC verification mechanism.
* SmokeAPI is unlikely to work with games that use an anti-cheat, since they typically detect any DLL/EXE that has been tampered with. Sometimes it is possible to disable an anti-cheat, but that typically entails the loss of online capabilities. Search in the respective game topic for more information about how to disable anti-cheat.
* Some games include DLC files in their base game, regardless of whether you own the DLC or not. However, some games download additional DLC files only after a user has bought the corresponding DLC. In this case, not only will you need to install SmokeAPI, but you also have to get the additional DLC files from somewhere else and put them into the game folder. Up-to-date DLC files often can be found in corresponding game topics.
@@ -66,13 +72,13 @@ SmokeAPI supports **2** installation modes: _Hook mode_ and _Proxy mode_.
- **Advantages**:
- Guaranteed to load
- **Disadvantages**:
- Might need reinstallation aftera game update
- Might need reinstallation after a game update
My advice is to try installing the unlocker in hook mode first.
If it doesn't work, try installing it in proxy mode instead.
If that didn't work, refer to the _Troubleshooting_ section below.
## 🛠 Installation instructions
## 🛠 Installation instructions (🪟 Windows)
> [!NOTE]
> To determine the bitness of a game you can open _Task Manager_, navigate to _Details_ tab,
@@ -81,37 +87,47 @@ If that didn't work, refer to the _Troubleshooting_ section below.
### 🪝 Hook mode
Hook mode itself has two sub-modes: Self-Hook and Hook with injector.
#### 🪝 Self-Hook mode
In self-hook mode SmokeAPI is injected automatically without the help of third-party injectors.
It works best when a game doesn't have any protections against DLL injection.
The main advantage of this mode is its minimal setup, which adds only 1 new DLL to the game folder.
- Download the [latest SmokeAPI release zip].
- From this downloaded zip extract `SmokeAPI32.dll` or `SmokeAPI64.dll`, depending on a game's bitness.
- Rename the unzipped DLL to `version.dll`.
- Place this `version.dll` next to the game's `.exe` file.
- From this downloaded zip extract `smoke_api32.dll` or `smoke_api64.dll`, depending on a game's bitness.
- Rename the unzipped DLL to `version.dll` or `winhttp.dll` or `winmm.dll`.
- Place this `version.dll` or `winhttp.dll` or `winmm.dll` next to the game's `.exe` file.
#### 🪝 Hook mode with Koaloader
If a game doesn't load
`version.dll`, you can use an alternative injector to load SmokeAPI into the game process.
If a game doesn't load `version.dll` or `winhttp.dll` or `winmm.dll`, you can use an alternative injector to load
SmokeAPI into the game process.
One such injector is [Koaloader], which supports different DLLs that a typical game might load.
For example, assuming that the game loads `winmm.dll`:
For example, assuming that the game loads `d3d11.dll`:
- Install Koaloader:
- Download the [latest Koaloader release zip].
- From this downloaded zip extract `winmm.dll` from `winmm-32` or `winmm-64`, depending on a game's bitness.
- Place `winmm.dll` next to the game's `.exe` file.
- From this downloaded zip extract `d3d11.dll` from `d3d11-32` or `d3d11-64`, depending on a game's bitness.
- Place `d3d11.dll` next to the game's `.exe` file.
- Install SmokeAPI
- Download the [latest SmokeAPI release zip].
- From this downloaded zip extract `SmokeAPI32.dll` or `SmokeAPI64.dll`, depending on a game's bitness.
- Place `SmokeAPI32.dll` or `SmokeAPI64.dll` next to the game's `.exe` file.
- From this downloaded zip extract `smoke_api32.dll` or `smoke_api64.dll`, depending on a game's bitness.
- Place `smoke_api32.dll` or `smoke_api64.dll` next to the game's `.exe` file.
#### 🪝 Hook mode with Special K
There are games which have extra protections that break hook mode.
In such cases, it might be worth trying [Special K], which can inject SmokeAPI as a [custom plugin].
---
### 🔀 Proxy mode
- Find a `steam_api.dll` or `steam_api64.dll` file in game directory, and rename it to `steam_api_o.dll` or `steam_api64_o.dll`.
- Download the [latest SmokeAPI release zip].
- From this downloaded zip extract `SmokeAPI32.dll` or `SmokeAPI64.dll`, depending on a game's bitness.
- From this downloaded zip extract `smoke_api32.dll` or `smoke_api64.dll`, depending on a game's bitness.
- Rename this extracted DLL to `steam_api.dll` or `steam_api64.dll`, depending on a game's bitness.
- Place this renamed unlocker DLL next to the `steam_api_o.dll` or `steam_api64_o.dll` file.
@@ -120,6 +136,102 @@ In such cases, it might be worth trying [Special K], which can inject SmokeAPI a
[Special K]: https://www.special-k.info
[custom plugin]: https://wiki.special-k.info/en/SpecialK/Tools#custom-plugin
## 🛠️ Installation instructions (🐧 Linux)
> [!NOTE]
> Linux support in SmokeAPI is highly experimental/unstable and has known issues.
> If none of the methods below work for you, then consider running a Windows version of a game
> via Proton compatibility layer and follow the instructions in the Windows section.
### ✔️ Requirements
Linux builds of SmokeAPI depend on several libraries. These libraries are usually included in the
[Steam Linux Runtime 3.0 (sniper)](https://github.com/ValveSoftware/steam-runtime#readme),
so nothing is required to be installed on the system. But when launching a game directly via its executable
(such as in case of hook mode) your system needs to have the following required libraries installed.
The following list features links in Arch Linux repositories, but if you are using a different distribution,
you should use the equivalent package for your distro.
Required libraries:
- [gcc-libs](https://archlinux.org/packages/core/x86_64/gcc-libs/)
[[32-bit](https://archlinux.org/packages/core/x86_64/lib32-gcc-libs/)]
- [glibc](https://archlinux.org/packages/core/x86_64/glibc/)
[[32-bit](https://archlinux.org/packages/core/x86_64/lib32-glibc/)]
- [libidn2](https://archlinux.org/packages/core/x86_64/libidn2/)
[[32-bit](https://archlinux.org/packages/multilib/x86_64/lib32-libidn2/)]
- [libnghttp2](https://archlinux.org/packages/core/x86_64/libnghttp2/)
[[32-bit](https://archlinux.org/packages/multilib/x86_64/lib32-libnghttp2/)]
- [zlib](https://archlinux.org/packages/core/x86_64/zlib/)
[[32-bit](https://archlinux.org/packages/multilib/x86_64/lib32-zlib/)]
- [zstd](https://archlinux.org/packages/core/x86_64/zstd/)
[[32-bit](https://archlinux.org/packages/multilib/x86_64/lib32-zstd/)]
Optional libraries:
- [gtk3](https://archlinux.org/packages/extra/x86_64/gtk3/)
[[32-bit](https://archlinux.org/packages/multilib/x86_64/lib32-gtk3/)]
---
Just like on Windows, SmokeAPI features 32 and 64-bit Linux builds.
In release archive they are named as `libsmoke_api32.so` or `libsmoke_api64.so` respectively.
However, unlike Windows, it is recommended to use proxy mode, rather than hook mode.
This is because the current hook mode installation method has to directly launch game
executable. However, by default Steam doesn't do that, instead it launches certain wrappers
that setup game environment with optimal parameters. Hence, launching a game without those
wrappers might cause issues in theory. However, in practice real tests show that hook mode has higher
chance of success compared to proxy mode. So, at the end of the day, try both modes to see which one works
best for you.
### 🔀 Proxy mode (🐧 Linux)
Same as on Windows:
1. Rename the original `libsteam_api.so` to `libsteam_api_o.so`
2. Extract and paste the `libsmoke_api32.so` or `libsmoke_api64.so` to the same directory, renaming it to `libsteam_api.so`.
### 🪝 Hook mode (🐧 Linux)
Linux doesn't have the same easily exploitable library injection mechanism that Windows has.
However, it is possible to force any Linux executable to load any library by using the
`LD_PRELOAD` environment variable. In fact, Steam itself already uses that to inject its overlay,
hence we can use it as well. But we have to include that overlay library as well when specifying
`LD_PRELOAD`, otherwise the game will be launched with SmokeAPI, but without Steam overlay.
For example:
1. Extract and paste the `libsmoke_api32.so` or `libsmoke_api64.so` in the root of game's installation directory.
2. In Steam _Library_ open game's _Properties_, switch to the _General_ tab, and set the following _LAUNCH OPTIONS_:
| Bitness | Launch Options |
|---------|---------------------------------------------------------------------------------------------------------------------------------|
| 32-bit | `LD_PRELOAD="./libsmoke_api32.so $HOME/.local/share/Steam/ubuntu12_32/gameoverlayrenderer.so" ./<GameExe32> ; exit ; %command%` |
| 64-bit | `LD_PRELOAD="./libsmoke_api64.so $HOME/.local/share/Steam/ubuntu12_64/gameoverlayrenderer.so" ./<GameExe64> ; exit ; %command%` |
Where `<GameExe32>` and `<GameExe64>` correspond to the actual filename of the game executable. For example:
- `TheEscapists2.x86` (32-bit)
- `TheEscapists2.x86_64` (64-bit)
- `_linux/darkest.bin.x86` (32-bit)
- `_linux/darkest.bin.x86_64` (64-bit)
- `eurotrucks2` (64-bit)
- `binaries/victoria3` (64-bit)
And so on. Notice that Linux executables do not have `.exe` extension like on Windows, so make sure to copy the entire
file name as it is. Naturally, the exact options might change depending on where files are located on your filesystem
and other environment variables you might have specified previously.
If you have other environment variables, and you don't know how to correctly combine them,
then please make extensive use of search engines and LLMs for guidance and examples
before seeking help the official forum topic.
> [!NOTE]
> The `; exit ; %command%` at the end of launch options
> is a trick used to force Steam to directly run the game executable.
## ⚙ Configuration
SmokeAPI does not require any manual configuration.
@@ -171,7 +283,7 @@ Below you can find an example config where nearly every option has been customiz
```json
{
"$schema": "https://raw.githubusercontent.com/acidicoala/SmokeAPI/refs/tags/v3.1.2/res/SmokeAPI.schema.json",
"$schema": "https://raw.githubusercontent.com/acidicoala/SmokeAPI/refs/tags/v4.0.0/res/SmokeAPI.schema.json",
"$version": 4,
"logging": true,
"log_steam_http": true,
@@ -208,11 +320,12 @@ Below you can find an example config where nearly every option has been customiz
```
</details>
## 🎓 Extra info
### 🔑 How SmokeAPI works in games with large number of DLCs
Some games that have a large number of DLCs begin ownership verification by querying the Steamworks API for a list of all available DLCs.
Some the games that have a large number of DLCs begin ownership verification by querying the Steamworks API for a list of all available DLCs.
Once the game receives the list, it will go over each item and check the ownership.
The issue arises from the fact that response from Steamworks SDK may max out at 64, depending on how much unowned DLCs the user has.
To alleviate this issue, SmokeAPI will make a web request to Steam API for a full list of DLCs, which works well most of the time.
@@ -230,6 +343,11 @@ They will be added to the list of missing DLC IDs to facilitate config-less oper
[extra DLCs]: https://github.com/acidicoala/public-entitlements/blob/main/steam/v2/dlc.json
### 🔢 Supported Steamworks SDK versions
SmokeAPI aims to support all Steamworks SDK version.
At the time of writing, the latest supported version is **1.63**.
## 🔧 Troubleshooting
### 🔐 DLCs are not unlocked
@@ -254,10 +372,10 @@ If you have made sure that you picked the right DLL for Koaloader, then try addi
### 💥 The game is crashing
If the game is crashing or not opening as expected after installing an unlocker, then try to download and install the latest [Microsoft Visual C++ Redistributable for Visual Studio 2015, 2017, 2019, and 2022](https://support.microsoft.com/en-gb/help/2977003/the-latest-supported-visual-c-downloads)
<details><summary>Download page</summary>
If the game is crashing or not opening as expected after installing an unlocker, then try to download and install the [Latest supported Visual C++ Redistributable version](https://learn.microsoft.com/en-us/cpp/windows/latest-supported-vc-redist?view=msvc-170#latest-supported-redistributable-version)
<details><summary>Download page screenshot</summary>
![Download page](https://i.ibb.co/n6K0X27/redist.jpg)
![Download page](https://i.ibb.co/PZBXqHpB/vc-redist.jpg)
</details>
## 🏗️ Building from source
@@ -290,8 +408,17 @@ For example:
```
[Visual Studio Build Tools 2022]: https://visualstudio.microsoft.com/downloads/#build-tools-for-visual-studio-2022
[CMake]: https://cmake.org/
### 🆕 Adding support for new Steamworks SDK
- Run `steamworks_downloader [prompt]` providing directory which contains Steamworks SDK zip files.
- Run `steamworks_parser`
- Run `linux_exports_generator [32]`
- Run `linux_exports_generator [64]`
## 📚 Acknowledgments
This project makes use of the following open source projects:
@@ -307,12 +434,18 @@ This project makes use of the following open source projects:
- [microsoft/wil](https://github.com/microsoft/wil)
- [p-ranav/glob](https://github.com/p-ranav/glob)
- [pantor/inja](https://github.com/pantor/inja)
- [jarro2783/cxxopts](https://github.com/jarro2783/cxxopts)
- [serge1/ELFIO](https://github.com/serge1/ELFIO)
- [Mbed-TLS/mbedtls](https://github.com/Mbed-TLS/mbedtls)
- [bshoshany/thread-pool](https://github.com/bshoshany/thread-pool)
- [batterycenter/embed](https://github.com/batterycenter/embed)
## 📄 License
This software is licensed under the [Unlicense](https://unlicense.org),
terms of which are available in [UNLICENSE.txt](UNLICENSE.txt).
[Koaloader]: https://github.com/acidicoala/Koaloader

View File

@@ -1,24 +1,24 @@
{% extends "./KoalaBox/templates/README.base.md" %}
{% block content %}
_Legit DLC Unlocker for Steamworks._
_Legit DLC ownership emulation for Steamworks._
## ✨ Features
* `🔓` Emulate DLC ownership in legitimately owned games
* `🛅` Emulate Inventory item ownership
* `📄` Optional configuration
* `🐧` Support for 32-bit and 64-bit Windows and Linux systems
{% include "KoalaBox/templates/markdown/links.md" %}
{% include "KoalaBox/templates/markdown/intro.md" %}
{% include "KoalaBox/templates/markdown/usage.md" %}
{% include "KoalaBox/templates/markdown/install-win.md" %}
{% include "KoalaBox/templates/markdown/installation.md" %}
{% include "KoalaBox/templates/markdown/install-linux.md" %}
{% include "KoalaBox/templates/markdown/configuration.md" %}
@@ -26,7 +26,7 @@ _Legit DLC Unlocker for Steamworks._
### 🔑 How SmokeAPI works in games with large number of DLCs
Some games that have a large number of DLCs begin ownership verification by querying the Steamworks API for a list of all available DLCs.
Some the games that have a large number of DLCs begin ownership verification by querying the Steamworks API for a list of all available DLCs.
Once the game receives the list, it will go over each item and check the ownership.
The issue arises from the fact that response from Steamworks SDK may max out at 64, depending on how much unowned DLCs the user has.
To alleviate this issue, SmokeAPI will make a web request to Steam API for a full list of DLCs, which works well most of the time.
@@ -44,15 +44,24 @@ They will be added to the list of missing DLC IDs to facilitate config-less oper
[extra DLCs]: https://github.com/acidicoala/public-entitlements/blob/main/steam/v2/dlc.json
{% include "KoalaBox/templates/markdown/troubleshooting.md" %}
### 🔢 Supported Steamworks SDK versions
{{ project_name }} aims to support all Steamworks SDK version.
At the time of writing, the latest supported version is **1.63**.
{% include "KoalaBox/templates/markdown/troubleshooting.md" %}
{% include "KoalaBox/templates/markdown/building.md" %}
### 🆕 Adding support for new Steamworks SDK
{% include "KoalaBox/templates/markdown/acknowledgements.md" %}
{% block extra_oss_libs %}
- [bshoshany/thread-pool](https://github.com/bshoshany/thread-pool)
- Run `steamworks_downloader [prompt]` providing directory which contains Steamworks SDK zip files.
- Run `steamworks_parser`
- Run `linux_exports_generator [32]`
- Run `linux_exports_generator [64]`
{% include "KoalaBox/templates/markdown/acknowledgements.md" %}{% block extra_oss_libs %}- [bshoshany/thread-pool](https://github.com/bshoshany/thread-pool)
- [batterycenter/embed](https://github.com/batterycenter/embed)
{% endblock %}
{% endblock %}

View File

@@ -1,5 +1,5 @@
{
"$schema": "https://raw.githubusercontent.com/acidicoala/SmokeAPI/refs/tags/v3.1.2/res/SmokeAPI.schema.json",
"$schema": "https://raw.githubusercontent.com/acidicoala/SmokeAPI/refs/tags/v4.0.0/res/SmokeAPI.schema.json",
"$version": 4,
"logging": true,
"log_steam_http": false,

View File

@@ -1,6 +1,6 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://raw.githubusercontent.com/acidicoala/SmokeAPI/refs/tags/v3.1.2/res/SmokeAPI.schema.json",
"$id": "https://raw.githubusercontent.com/acidicoala/SmokeAPI/refs/tags/v4.0.0/res/SmokeAPI.schema.json",
"title": "SmokeAPI configuration",
"type": "object",
"additionalProperties": false,
@@ -120,7 +120,7 @@
},
"examples": [
{
"$schema": "https://raw.githubusercontent.com/acidicoala/SmokeAPI/refs/tags/v3.1.2/res/SmokeAPI.schema.json",
"$schema": "https://raw.githubusercontent.com/acidicoala/SmokeAPI/refs/tags/v4.0.0/res/SmokeAPI.schema.json",
"$version": 4,
"logging": true,
"log_steam_http": true,

View File

@@ -1,4 +1,4 @@
#pragma once
#define STEAM_API_MODULE "${STEAM_API_MODULE}"
#define STEAMCLIENT_DLL "${STEAMCLIENT_DLL}"
#define STEAMCLIENT_DLL "${STEAMCLIENT_DLL}"

File diff suppressed because it is too large Load Diff

Binary file not shown.

Binary file not shown.

Some files were not shown because too many files have changed in this diff Show More