mirror of
https://github.com/acidicoala/SmokeAPI.git
synced 2025-12-05 21:15:39 -05:00
Sync with KoalaBox
This commit is contained in:
4
.idea/cmake.xml
generated
4
.idea/cmake.xml
generated
@@ -2,8 +2,8 @@
|
|||||||
<project version="4">
|
<project version="4">
|
||||||
<component name="CMakeSharedSettings">
|
<component name="CMakeSharedSettings">
|
||||||
<configurations>
|
<configurations>
|
||||||
<configuration PROFILE_NAME="Debug [32] (Template: copy and set the 32-bit toolchain)" ENABLED="false" GENERATION_DIR="build/32" CONFIG_NAME="Debug" GENERATION_OPTIONS="-G "Visual Studio 17 2022" -A Win32" />
|
<configuration PROFILE_NAME="Debug [32] (Template: copy and set the 32-bit toolchain)" ENABLED="false" GENERATION_DIR="build/32-debug" CONFIG_NAME="Debug" GENERATION_OPTIONS="-G "Visual Studio 17 2022" -A Win32 -DCMAKE_BUILD_TYPE=Debug" />
|
||||||
<configuration PROFILE_NAME="Debug [64] (Template: copy and set the 64-bit toolchain)" ENABLED="false" GENERATION_DIR="build/64" CONFIG_NAME="Debug" GENERATION_OPTIONS="-G "Visual Studio 17 2022" -A x64" />
|
<configuration PROFILE_NAME="Debug [64] (Template: copy and set the 64-bit toolchain)" ENABLED="false" GENERATION_DIR="build/64-debug" CONFIG_NAME="Debug" GENERATION_OPTIONS="-G "Visual Studio 17 2022" -A x64 -DCMAKE_BUILD_TYPE=Debug" />
|
||||||
</configurations>
|
</configurations>
|
||||||
</component>
|
</component>
|
||||||
</project>
|
</project>
|
||||||
2
.idea/codeStyles/Project.xml
generated
2
.idea/codeStyles/Project.xml
generated
@@ -54,7 +54,6 @@
|
|||||||
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/LINE_BREAK_AFTER_DEREF_IN_TRAILING_RETURN_TYPES/@EntryValue" value="ON_SINGLE_LINE" type="string" />
|
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/LINE_BREAK_AFTER_DEREF_IN_TRAILING_RETURN_TYPES/@EntryValue" value="ON_SINGLE_LINE" type="string" />
|
||||||
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/LINE_BREAK_BEFORE_FUNCTION_TRY_BLOCK/@EntryValue" value="LINE_BREAK" type="string" />
|
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/LINE_BREAK_BEFORE_FUNCTION_TRY_BLOCK/@EntryValue" value="LINE_BREAK" type="string" />
|
||||||
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/LINE_BREAK_AFTER_COMMA_IN_MEMBER_INITIALIZER_LISTS/@EntryValue" value="true" type="bool" />
|
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/LINE_BREAK_AFTER_COMMA_IN_MEMBER_INITIALIZER_LISTS/@EntryValue" value="true" type="bool" />
|
||||||
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/KEEP_USER_LINEBREAKS/@EntryValue" />
|
|
||||||
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/WRAP_LIMIT/@EntryValue" value="100" type="long" />
|
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/WRAP_LIMIT/@EntryValue" value="100" type="long" />
|
||||||
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/WRAP_BRACED_INIT_LIST_STYLE/@EntryValue" value="CHOP_IF_LONG" type="string" />
|
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/WRAP_BRACED_INIT_LIST_STYLE/@EntryValue" value="CHOP_IF_LONG" type="string" />
|
||||||
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/WRAP_BASE_CLAUSE_STYLE/@EntryValue" value="CHOP_IF_LONG" type="string" />
|
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/WRAP_BASE_CLAUSE_STYLE/@EntryValue" value="CHOP_IF_LONG" type="string" />
|
||||||
@@ -75,7 +74,6 @@
|
|||||||
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/ALIGN_MULTILINE_BINARY_EXPRESSIONS_CHAIN/@EntryValue" value="true" type="bool" />
|
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/ALIGN_MULTILINE_BINARY_EXPRESSIONS_CHAIN/@EntryValue" value="true" type="bool" />
|
||||||
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/INT_ALIGN_ENUM_INITIALIZERS/@EntryValue" value="true" type="bool" />
|
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/INT_ALIGN_ENUM_INITIALIZERS/@EntryValue" value="true" type="bool" />
|
||||||
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/INT_ALIGN_BITFIELD_SIZES/@EntryValue" value="true" type="bool" />
|
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/INT_ALIGN_BITFIELD_SIZES/@EntryValue" value="true" type="bool" />
|
||||||
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/SIMPLE_BLOCK_STYLE/@EntryValue" />
|
|
||||||
</RiderCodeStyleSettings>
|
</RiderCodeStyleSettings>
|
||||||
<editorconfig>
|
<editorconfig>
|
||||||
<option name="ENABLED" value="false" />
|
<option name="ENABLED" value="false" />
|
||||||
|
|||||||
2
.idea/codeStyles/codeStyleConfig.xml
generated
2
.idea/codeStyles/codeStyleConfig.xml
generated
@@ -1,5 +1,5 @@
|
|||||||
<component name="ProjectCodeStyleConfiguration">
|
<component name="ProjectCodeStyleConfiguration">
|
||||||
<state>
|
<state>
|
||||||
<option name="USE_PER_PROJECT_SETTINGS" value="true" />
|
<option name="PREFERRED_PROJECT_CODE_STYLE" value="acidicoala" />
|
||||||
</state>
|
</state>
|
||||||
</component>
|
</component>
|
||||||
7
.idea/inspectionProfiles/profiles_settings.xml
generated
Normal file
7
.idea/inspectionProfiles/profiles_settings.xml
generated
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
<component name="InspectionProjectProfileManager">
|
||||||
|
<settings>
|
||||||
|
<option name="PROJECT_PROFILE" value="acidicoala" />
|
||||||
|
<option name="USE_PROJECT_PROFILE" value="false" />
|
||||||
|
<version value="1.0" />
|
||||||
|
</settings>
|
||||||
|
</component>
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
<component name="ProjectRunConfigurationManager">
|
<component name="ProjectRunConfigurationManager">
|
||||||
<configuration default="false" name="exports_generator [64]" type="CMakeRunConfiguration" factoryName="Application" PROGRAM_PARAMS="FALSE steam_api64_o $ProjectFileDir$/res/steamworks/*/binaries/steam_api64.dll $ProjectFileDir$/build/64/linker_exports.h $ProjectFileDir$/src/game_mode/exports" 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">
|
<configuration default="false" name="exports_generator [64]" 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">
|
<method v="2">
|
||||||
<option name="com.jetbrains.cidr.execution.CidrBuildBeforeRunTaskProvider$BuildBeforeRunTask" enabled="true" />
|
<option name="com.jetbrains.cidr.execution.CidrBuildBeforeRunTaskProvider$BuildBeforeRunTask" enabled="true" />
|
||||||
</method>
|
</method>
|
||||||
|
|||||||
@@ -3,7 +3,9 @@ cmake_minimum_required(VERSION 3.24)
|
|||||||
project(SmokeAPI VERSION 3.1.3)
|
project(SmokeAPI VERSION 3.1.3)
|
||||||
|
|
||||||
include(KoalaBox/cmake/KoalaBox.cmake)
|
include(KoalaBox/cmake/KoalaBox.cmake)
|
||||||
|
if(CMAKE_BUILD_TYPE STREQUAL "Debug")
|
||||||
|
add_definitions(-DKB_DEBUG)
|
||||||
|
endif()
|
||||||
add_subdirectory(KoalaBox)
|
add_subdirectory(KoalaBox)
|
||||||
add_subdirectory(tools)
|
add_subdirectory(tools)
|
||||||
|
|
||||||
|
|||||||
2
KoalaBox
2
KoalaBox
Submodule KoalaBox updated: b17756ba6a...e38fa5d2b2
@@ -18,6 +18,22 @@
|
|||||||
"SetGameType": 12,
|
"SetGameType": 12,
|
||||||
"BGetUserAchievementStatus": 13
|
"BGetUserAchievementStatus": 13
|
||||||
},
|
},
|
||||||
|
"SteamMasterServerUpdater001": {
|
||||||
|
"SetActive": 0,
|
||||||
|
"SetHeartbeatInterval": 1,
|
||||||
|
"HandleIncomingPacket": 2,
|
||||||
|
"GetNextOutgoingPacket": 3,
|
||||||
|
"SetBasicServerData": 4,
|
||||||
|
"ClearAllKeyValues": 5,
|
||||||
|
"SetKeyValue": 6,
|
||||||
|
"NotifyShutdown": 7,
|
||||||
|
"WasRestartRequested": 8,
|
||||||
|
"ForceHeartbeat": 9,
|
||||||
|
"AddMasterServer": 10,
|
||||||
|
"RemoveMasterServer": 11,
|
||||||
|
"GetNumMasterServers": 12,
|
||||||
|
"GetMasterServerAddress": 13
|
||||||
|
},
|
||||||
"SteamFriends003": {
|
"SteamFriends003": {
|
||||||
"GetPersonaName": 0,
|
"GetPersonaName": 0,
|
||||||
"SetPersonaName": 1,
|
"SetPersonaName": 1,
|
||||||
@@ -64,22 +80,6 @@
|
|||||||
"SetWarningMessageHook": 20,
|
"SetWarningMessageHook": 20,
|
||||||
"GetISteamRemoteStorage": 21
|
"GetISteamRemoteStorage": 21
|
||||||
},
|
},
|
||||||
"SteamMasterServerUpdater001": {
|
|
||||||
"SetActive": 0,
|
|
||||||
"SetHeartbeatInterval": 1,
|
|
||||||
"HandleIncomingPacket": 2,
|
|
||||||
"GetNextOutgoingPacket": 3,
|
|
||||||
"SetBasicServerData": 4,
|
|
||||||
"ClearAllKeyValues": 5,
|
|
||||||
"SetKeyValue": 6,
|
|
||||||
"NotifyShutdown": 7,
|
|
||||||
"WasRestartRequested": 8,
|
|
||||||
"ForceHeartbeat": 9,
|
|
||||||
"AddMasterServer": 10,
|
|
||||||
"RemoveMasterServer": 11,
|
|
||||||
"GetNumMasterServers": 12,
|
|
||||||
"GetMasterServerAddress": 13
|
|
||||||
},
|
|
||||||
"SteamNetworking001": {
|
"SteamNetworking001": {
|
||||||
"CreateListenSocket": 0,
|
"CreateListenSocket": 0,
|
||||||
"CreateP2PConnectionSocket": 1,
|
"CreateP2PConnectionSocket": 1,
|
||||||
@@ -261,6 +261,25 @@
|
|||||||
"GetCompressedVoice": 9,
|
"GetCompressedVoice": 9,
|
||||||
"DecompressVoice": 10
|
"DecompressVoice": 10
|
||||||
},
|
},
|
||||||
|
"SteamGameServer008": {
|
||||||
|
"LogOn": 0,
|
||||||
|
"LogOff": 1,
|
||||||
|
"BLoggedOn": 2,
|
||||||
|
"BSecure": 3,
|
||||||
|
"GetSteamID": 4,
|
||||||
|
"SendUserConnectAndAuthenticate": 5,
|
||||||
|
"CreateUnauthenticatedUserConnection": 6,
|
||||||
|
"SendUserDisconnect": 7,
|
||||||
|
"BUpdateUserData": 8,
|
||||||
|
"BSetServerType": 9,
|
||||||
|
"UpdateServerStatus": 10,
|
||||||
|
"UpdateSpectatorPort": 11,
|
||||||
|
"SetGameType": 12,
|
||||||
|
"BGetUserAchievementStatus": 13,
|
||||||
|
"GetGameplayStats": 14,
|
||||||
|
"RequestUserGroupStatus": 15,
|
||||||
|
"GetPublicIP": 16
|
||||||
|
},
|
||||||
"SteamFriends005": {
|
"SteamFriends005": {
|
||||||
"GetPersonaName": 0,
|
"GetPersonaName": 0,
|
||||||
"SetPersonaName": 1,
|
"SetPersonaName": 1,
|
||||||
@@ -287,24 +306,14 @@
|
|||||||
"ActivateGameOverlayToStore": 22,
|
"ActivateGameOverlayToStore": 22,
|
||||||
"SetPlayedWith": 23
|
"SetPlayedWith": 23
|
||||||
},
|
},
|
||||||
"SteamGameServer008": {
|
"STEAMREMOTESTORAGE_INTERFACE_VERSION002": {
|
||||||
"LogOn": 0,
|
"FileWrite": 0,
|
||||||
"LogOff": 1,
|
"GetFileSize": 1,
|
||||||
"BLoggedOn": 2,
|
"FileRead": 2,
|
||||||
"BSecure": 3,
|
"FileExists": 3,
|
||||||
"GetSteamID": 4,
|
"GetFileCount": 4,
|
||||||
"SendUserConnectAndAuthenticate": 5,
|
"GetFileNameAndSize": 5,
|
||||||
"CreateUnauthenticatedUserConnection": 6,
|
"GetQuota": 6
|
||||||
"SendUserDisconnect": 7,
|
|
||||||
"BUpdateUserData": 8,
|
|
||||||
"BSetServerType": 9,
|
|
||||||
"UpdateServerStatus": 10,
|
|
||||||
"UpdateSpectatorPort": 11,
|
|
||||||
"SetGameType": 12,
|
|
||||||
"BGetUserAchievementStatus": 13,
|
|
||||||
"GetGameplayStats": 14,
|
|
||||||
"RequestUserGroupStatus": 15,
|
|
||||||
"GetPublicIP": 16
|
|
||||||
},
|
},
|
||||||
"SteamNetworking002": {
|
"SteamNetworking002": {
|
||||||
"CreateListenSocket": 0,
|
"CreateListenSocket": 0,
|
||||||
@@ -322,15 +331,6 @@
|
|||||||
"GetSocketConnectionType": 12,
|
"GetSocketConnectionType": 12,
|
||||||
"GetMaxPacketSize": 13
|
"GetMaxPacketSize": 13
|
||||||
},
|
},
|
||||||
"STEAMREMOTESTORAGE_INTERFACE_VERSION002": {
|
|
||||||
"FileWrite": 0,
|
|
||||||
"GetFileSize": 1,
|
|
||||||
"FileRead": 2,
|
|
||||||
"FileExists": 3,
|
|
||||||
"GetFileCount": 4,
|
|
||||||
"GetFileNameAndSize": 5,
|
|
||||||
"GetQuota": 6
|
|
||||||
},
|
|
||||||
"STEAMUSERSTATS_INTERFACE_VERSION004": {
|
"STEAMUSERSTATS_INTERFACE_VERSION004": {
|
||||||
"RequestCurrentStats": 0,
|
"RequestCurrentStats": 0,
|
||||||
"GetStat": 2,
|
"GetStat": 2,
|
||||||
@@ -653,31 +653,6 @@
|
|||||||
"GetIPCCallCount": 20,
|
"GetIPCCallCount": 20,
|
||||||
"SetWarningMessageHook": 21
|
"SetWarningMessageHook": 21
|
||||||
},
|
},
|
||||||
"SteamGameStats001": {
|
|
||||||
"GetNewSession": 0,
|
|
||||||
"EndSession": 1,
|
|
||||||
"AddSessionAttributeInt": 2,
|
|
||||||
"AddSessionAttributeString": 3,
|
|
||||||
"AddSessionAttributeFloat": 4,
|
|
||||||
"AddNewRow": 5,
|
|
||||||
"CommitRow": 6,
|
|
||||||
"CommitOutstandingRows": 7,
|
|
||||||
"AddRowAttributeInt": 8,
|
|
||||||
"AddRowAtributeString": 9,
|
|
||||||
"AddRowAttributeFloat": 10,
|
|
||||||
"AddSessionAttributeInt64": 11,
|
|
||||||
"AddRowAttributeInt64": 12
|
|
||||||
},
|
|
||||||
"SteamGameServerStats001": {
|
|
||||||
"RequestUserStats": 0,
|
|
||||||
"GetUserStat": 2,
|
|
||||||
"GetUserAchievement": 3,
|
|
||||||
"SetUserStat": 5,
|
|
||||||
"UpdateUserAvgRateStat": 6,
|
|
||||||
"SetUserAchievement": 7,
|
|
||||||
"ClearUserAchievement": 8,
|
|
||||||
"StoreUserStats": 9
|
|
||||||
},
|
|
||||||
"SteamGameServer010": {
|
"SteamGameServer010": {
|
||||||
"LogOn": 0,
|
"LogOn": 0,
|
||||||
"LogOff": 1,
|
"LogOff": 1,
|
||||||
@@ -703,6 +678,31 @@
|
|||||||
"EndAuthSession": 21,
|
"EndAuthSession": 21,
|
||||||
"CancelAuthTicket": 22
|
"CancelAuthTicket": 22
|
||||||
},
|
},
|
||||||
|
"SteamGameServerStats001": {
|
||||||
|
"RequestUserStats": 0,
|
||||||
|
"GetUserStat": 2,
|
||||||
|
"GetUserAchievement": 3,
|
||||||
|
"SetUserStat": 5,
|
||||||
|
"UpdateUserAvgRateStat": 6,
|
||||||
|
"SetUserAchievement": 7,
|
||||||
|
"ClearUserAchievement": 8,
|
||||||
|
"StoreUserStats": 9
|
||||||
|
},
|
||||||
|
"SteamGameStats001": {
|
||||||
|
"GetNewSession": 0,
|
||||||
|
"EndSession": 1,
|
||||||
|
"AddSessionAttributeInt": 2,
|
||||||
|
"AddSessionAttributeString": 3,
|
||||||
|
"AddSessionAttributeFloat": 4,
|
||||||
|
"AddNewRow": 5,
|
||||||
|
"CommitRow": 6,
|
||||||
|
"CommitOutstandingRows": 7,
|
||||||
|
"AddRowAttributeInt": 8,
|
||||||
|
"AddRowAtributeString": 9,
|
||||||
|
"AddRowAttributeFloat": 10,
|
||||||
|
"AddSessionAttributeInt64": 11,
|
||||||
|
"AddRowAttributeInt64": 12
|
||||||
|
},
|
||||||
"STEAMUSERSTATS_INTERFACE_VERSION007": {
|
"STEAMUSERSTATS_INTERFACE_VERSION007": {
|
||||||
"RequestCurrentStats": 0,
|
"RequestCurrentStats": 0,
|
||||||
"GetStat": 2,
|
"GetStat": 2,
|
||||||
@@ -1746,37 +1746,6 @@
|
|||||||
"LogOnAndCreateNewSteamAccountIfNeeded": 26,
|
"LogOnAndCreateNewSteamAccountIfNeeded": 26,
|
||||||
"GetConsoleSteamID": 27
|
"GetConsoleSteamID": 27
|
||||||
},
|
},
|
||||||
"SteamUtils006": {
|
|
||||||
"GetSecondsSinceAppActive": 0,
|
|
||||||
"GetSecondsSinceComputerActive": 1,
|
|
||||||
"GetConnectedUniverse": 2,
|
|
||||||
"GetServerRealTime": 3,
|
|
||||||
"GetIPCountry": 4,
|
|
||||||
"GetImageSize": 5,
|
|
||||||
"GetImageRGBA": 6,
|
|
||||||
"GetCSERIPPort": 7,
|
|
||||||
"GetCurrentBatteryPower": 8,
|
|
||||||
"GetAppID": 9,
|
|
||||||
"SetOverlayNotificationPosition": 10,
|
|
||||||
"IsAPICallCompleted": 11,
|
|
||||||
"GetAPICallFailureReason": 12,
|
|
||||||
"GetAPICallResult": 13,
|
|
||||||
"RunFrame": 14,
|
|
||||||
"GetIPCCallCount": 15,
|
|
||||||
"SetWarningMessageHook": 16,
|
|
||||||
"IsOverlayEnabled": 17,
|
|
||||||
"BOverlayNeedsPresent": 18,
|
|
||||||
"ShowGamepadTextInput": 19,
|
|
||||||
"GetEnteredGamepadTextLength": 20,
|
|
||||||
"GetEnteredGamepadTextInput": 21,
|
|
||||||
"GetSteamUILanguage": 22,
|
|
||||||
"IsSteamRunningInVR": 23,
|
|
||||||
"CheckFileSignature": 24,
|
|
||||||
"PostPS3SysutilCallback": 25,
|
|
||||||
"BIsReadyToShutdown": 26,
|
|
||||||
"BIsPSNOnline": 27,
|
|
||||||
"SetPSNGameBootInviteStrings": 28
|
|
||||||
},
|
|
||||||
"STEAMREMOTESTORAGE_INTERFACE_VERSION011": {
|
"STEAMREMOTESTORAGE_INTERFACE_VERSION011": {
|
||||||
"FileWrite": 0,
|
"FileWrite": 0,
|
||||||
"FileRead": 1,
|
"FileRead": 1,
|
||||||
@@ -1836,6 +1805,37 @@
|
|||||||
"SynchronizeToServer": 55,
|
"SynchronizeToServer": 55,
|
||||||
"ResetFileRequestState": 56
|
"ResetFileRequestState": 56
|
||||||
},
|
},
|
||||||
|
"SteamUtils006": {
|
||||||
|
"GetSecondsSinceAppActive": 0,
|
||||||
|
"GetSecondsSinceComputerActive": 1,
|
||||||
|
"GetConnectedUniverse": 2,
|
||||||
|
"GetServerRealTime": 3,
|
||||||
|
"GetIPCountry": 4,
|
||||||
|
"GetImageSize": 5,
|
||||||
|
"GetImageRGBA": 6,
|
||||||
|
"GetCSERIPPort": 7,
|
||||||
|
"GetCurrentBatteryPower": 8,
|
||||||
|
"GetAppID": 9,
|
||||||
|
"SetOverlayNotificationPosition": 10,
|
||||||
|
"IsAPICallCompleted": 11,
|
||||||
|
"GetAPICallFailureReason": 12,
|
||||||
|
"GetAPICallResult": 13,
|
||||||
|
"RunFrame": 14,
|
||||||
|
"GetIPCCallCount": 15,
|
||||||
|
"SetWarningMessageHook": 16,
|
||||||
|
"IsOverlayEnabled": 17,
|
||||||
|
"BOverlayNeedsPresent": 18,
|
||||||
|
"ShowGamepadTextInput": 19,
|
||||||
|
"GetEnteredGamepadTextLength": 20,
|
||||||
|
"GetEnteredGamepadTextInput": 21,
|
||||||
|
"GetSteamUILanguage": 22,
|
||||||
|
"IsSteamRunningInVR": 23,
|
||||||
|
"CheckFileSignature": 24,
|
||||||
|
"PostPS3SysutilCallback": 25,
|
||||||
|
"BIsReadyToShutdown": 26,
|
||||||
|
"BIsPSNOnline": 27,
|
||||||
|
"SetPSNGameBootInviteStrings": 28
|
||||||
|
},
|
||||||
"STEAMAPPS_INTERFACE_VERSION006": {
|
"STEAMAPPS_INTERFACE_VERSION006": {
|
||||||
"BIsSubscribed": 0,
|
"BIsSubscribed": 0,
|
||||||
"BIsLowViolence": 1,
|
"BIsLowViolence": 1,
|
||||||
@@ -2263,6 +2263,39 @@
|
|||||||
"Set_SteamAPI_CCheckCallbackRegisteredInProcess": 33,
|
"Set_SteamAPI_CCheckCallbackRegisteredInProcess": 33,
|
||||||
"GetISteamPS3OverlayRender": 34
|
"GetISteamPS3OverlayRender": 34
|
||||||
},
|
},
|
||||||
|
"STEAMUGC_INTERFACE_VERSION003": {
|
||||||
|
"CreateQueryUserUGCRequest": 0,
|
||||||
|
"CreateQueryAllUGCRequest": 1,
|
||||||
|
"SendQueryUGCRequest": 2,
|
||||||
|
"GetQueryUGCResult": 3,
|
||||||
|
"ReleaseQueryUGCRequest": 4,
|
||||||
|
"AddRequiredTag": 5,
|
||||||
|
"AddExcludedTag": 6,
|
||||||
|
"SetReturnLongDescription": 7,
|
||||||
|
"SetReturnTotalOnly": 8,
|
||||||
|
"SetAllowCachedResponse": 9,
|
||||||
|
"SetCloudFileNameFilter": 10,
|
||||||
|
"SetMatchAnyTag": 11,
|
||||||
|
"SetSearchText": 12,
|
||||||
|
"SetRankedByTrendDays": 13,
|
||||||
|
"RequestUGCDetails": 14,
|
||||||
|
"CreateItem": 15,
|
||||||
|
"StartItemUpdate": 16,
|
||||||
|
"SetItemTitle": 17,
|
||||||
|
"SetItemDescription": 18,
|
||||||
|
"SetItemVisibility": 19,
|
||||||
|
"SetItemTags": 20,
|
||||||
|
"SetItemContent": 21,
|
||||||
|
"SetItemPreview": 22,
|
||||||
|
"SubmitItemUpdate": 23,
|
||||||
|
"GetItemUpdateProgress": 24,
|
||||||
|
"SubscribeItem": 25,
|
||||||
|
"UnsubscribeItem": 26,
|
||||||
|
"GetNumSubscribedItems": 27,
|
||||||
|
"GetSubscribedItems": 28,
|
||||||
|
"GetItemInstallInfo": 29,
|
||||||
|
"GetItemUpdateInfo": 30
|
||||||
|
},
|
||||||
"STEAMHTMLSURFACE_INTERFACE_VERSION_002": {
|
"STEAMHTMLSURFACE_INTERFACE_VERSION_002": {
|
||||||
"Init": 0,
|
"Init": 0,
|
||||||
"Shutdown": 1,
|
"Shutdown": 1,
|
||||||
@@ -2299,39 +2332,6 @@
|
|||||||
"JSDialogResponse": 32,
|
"JSDialogResponse": 32,
|
||||||
"FileLoadDialogResponse": 33
|
"FileLoadDialogResponse": 33
|
||||||
},
|
},
|
||||||
"STEAMUGC_INTERFACE_VERSION003": {
|
|
||||||
"CreateQueryUserUGCRequest": 0,
|
|
||||||
"CreateQueryAllUGCRequest": 1,
|
|
||||||
"SendQueryUGCRequest": 2,
|
|
||||||
"GetQueryUGCResult": 3,
|
|
||||||
"ReleaseQueryUGCRequest": 4,
|
|
||||||
"AddRequiredTag": 5,
|
|
||||||
"AddExcludedTag": 6,
|
|
||||||
"SetReturnLongDescription": 7,
|
|
||||||
"SetReturnTotalOnly": 8,
|
|
||||||
"SetAllowCachedResponse": 9,
|
|
||||||
"SetCloudFileNameFilter": 10,
|
|
||||||
"SetMatchAnyTag": 11,
|
|
||||||
"SetSearchText": 12,
|
|
||||||
"SetRankedByTrendDays": 13,
|
|
||||||
"RequestUGCDetails": 14,
|
|
||||||
"CreateItem": 15,
|
|
||||||
"StartItemUpdate": 16,
|
|
||||||
"SetItemTitle": 17,
|
|
||||||
"SetItemDescription": 18,
|
|
||||||
"SetItemVisibility": 19,
|
|
||||||
"SetItemTags": 20,
|
|
||||||
"SetItemContent": 21,
|
|
||||||
"SetItemPreview": 22,
|
|
||||||
"SubmitItemUpdate": 23,
|
|
||||||
"GetItemUpdateProgress": 24,
|
|
||||||
"SubscribeItem": 25,
|
|
||||||
"UnsubscribeItem": 26,
|
|
||||||
"GetNumSubscribedItems": 27,
|
|
||||||
"GetSubscribedItems": 28,
|
|
||||||
"GetItemInstallInfo": 29,
|
|
||||||
"GetItemUpdateInfo": 30
|
|
||||||
},
|
|
||||||
"STEAMAPPS_INTERFACE_VERSION007": {
|
"STEAMAPPS_INTERFACE_VERSION007": {
|
||||||
"BIsSubscribed": 0,
|
"BIsSubscribed": 0,
|
||||||
"BIsLowViolence": 1,
|
"BIsLowViolence": 1,
|
||||||
@@ -2954,6 +2954,68 @@
|
|||||||
"IsScreenshotsHooked": 7,
|
"IsScreenshotsHooked": 7,
|
||||||
"AddVRScreenshotToLibrary": 8
|
"AddVRScreenshotToLibrary": 8
|
||||||
},
|
},
|
||||||
|
"STEAMREMOTESTORAGE_INTERFACE_VERSION014": {
|
||||||
|
"FileWrite": 0,
|
||||||
|
"FileRead": 1,
|
||||||
|
"FileWriteAsync": 2,
|
||||||
|
"FileReadAsync": 3,
|
||||||
|
"FileReadAsyncComplete": 4,
|
||||||
|
"FileForget": 5,
|
||||||
|
"FileDelete": 6,
|
||||||
|
"FileShare": 7,
|
||||||
|
"SetSyncPlatforms": 8,
|
||||||
|
"FileWriteStreamOpen": 9,
|
||||||
|
"FileWriteStreamWriteChunk": 10,
|
||||||
|
"FileWriteStreamClose": 11,
|
||||||
|
"FileWriteStreamCancel": 12,
|
||||||
|
"FileExists": 13,
|
||||||
|
"FilePersisted": 14,
|
||||||
|
"GetFileSize": 15,
|
||||||
|
"GetFileTimestamp": 16,
|
||||||
|
"GetSyncPlatforms": 17,
|
||||||
|
"GetFileCount": 18,
|
||||||
|
"GetFileNameAndSize": 19,
|
||||||
|
"GetQuota": 20,
|
||||||
|
"IsCloudEnabledForAccount": 21,
|
||||||
|
"IsCloudEnabledForApp": 22,
|
||||||
|
"SetCloudEnabledForApp": 23,
|
||||||
|
"UGCDownload": 24,
|
||||||
|
"GetUGCDownloadProgress": 25,
|
||||||
|
"GetUGCDetails": 26,
|
||||||
|
"UGCRead": 27,
|
||||||
|
"GetCachedUGCCount": 28,
|
||||||
|
"PublishWorkshopFile": 29,
|
||||||
|
"CreatePublishedFileUpdateRequest": 30,
|
||||||
|
"UpdatePublishedFileFile": 31,
|
||||||
|
"UpdatePublishedFilePreviewFile": 32,
|
||||||
|
"UpdatePublishedFileTitle": 33,
|
||||||
|
"UpdatePublishedFileDescription": 34,
|
||||||
|
"UpdatePublishedFileVisibility": 35,
|
||||||
|
"UpdatePublishedFileTags": 36,
|
||||||
|
"CommitPublishedFileUpdate": 37,
|
||||||
|
"GetPublishedFileDetails": 38,
|
||||||
|
"DeletePublishedFile": 39,
|
||||||
|
"EnumerateUserPublishedFiles": 40,
|
||||||
|
"SubscribePublishedFile": 41,
|
||||||
|
"EnumerateUserSubscribedFiles": 42,
|
||||||
|
"UnsubscribePublishedFile": 43,
|
||||||
|
"UpdatePublishedFileSetChangeDescription": 44,
|
||||||
|
"GetPublishedItemVoteDetails": 45,
|
||||||
|
"UpdateUserPublishedItemVote": 46,
|
||||||
|
"GetUserPublishedItemVoteDetails": 47,
|
||||||
|
"EnumerateUserSharedWorkshopFiles": 48,
|
||||||
|
"PublishVideo": 49,
|
||||||
|
"SetUserPublishedFileAction": 50,
|
||||||
|
"EnumeratePublishedFilesByUserAction": 51,
|
||||||
|
"EnumeratePublishedWorkshopFiles": 52,
|
||||||
|
"UGCDownloadToLocation": 53,
|
||||||
|
"GetFileListFromServer": 54,
|
||||||
|
"FileFetch": 55,
|
||||||
|
"FilePersist": 56,
|
||||||
|
"SynchronizeToClient": 57,
|
||||||
|
"SynchronizeToServer": 58,
|
||||||
|
"ResetFileRequestState": 59
|
||||||
|
},
|
||||||
"STEAMUGC_INTERFACE_VERSION009": {
|
"STEAMUGC_INTERFACE_VERSION009": {
|
||||||
"CreateQueryUserUGCRequest": 0,
|
"CreateQueryUserUGCRequest": 0,
|
||||||
"CreateQueryAllUGCRequest": 1,
|
"CreateQueryAllUGCRequest": 1,
|
||||||
@@ -3023,68 +3085,6 @@
|
|||||||
"StopPlaytimeTracking": 65,
|
"StopPlaytimeTracking": 65,
|
||||||
"StopPlaytimeTrackingForAllItems": 66
|
"StopPlaytimeTrackingForAllItems": 66
|
||||||
},
|
},
|
||||||
"STEAMREMOTESTORAGE_INTERFACE_VERSION014": {
|
|
||||||
"FileWrite": 0,
|
|
||||||
"FileRead": 1,
|
|
||||||
"FileWriteAsync": 2,
|
|
||||||
"FileReadAsync": 3,
|
|
||||||
"FileReadAsyncComplete": 4,
|
|
||||||
"FileForget": 5,
|
|
||||||
"FileDelete": 6,
|
|
||||||
"FileShare": 7,
|
|
||||||
"SetSyncPlatforms": 8,
|
|
||||||
"FileWriteStreamOpen": 9,
|
|
||||||
"FileWriteStreamWriteChunk": 10,
|
|
||||||
"FileWriteStreamClose": 11,
|
|
||||||
"FileWriteStreamCancel": 12,
|
|
||||||
"FileExists": 13,
|
|
||||||
"FilePersisted": 14,
|
|
||||||
"GetFileSize": 15,
|
|
||||||
"GetFileTimestamp": 16,
|
|
||||||
"GetSyncPlatforms": 17,
|
|
||||||
"GetFileCount": 18,
|
|
||||||
"GetFileNameAndSize": 19,
|
|
||||||
"GetQuota": 20,
|
|
||||||
"IsCloudEnabledForAccount": 21,
|
|
||||||
"IsCloudEnabledForApp": 22,
|
|
||||||
"SetCloudEnabledForApp": 23,
|
|
||||||
"UGCDownload": 24,
|
|
||||||
"GetUGCDownloadProgress": 25,
|
|
||||||
"GetUGCDetails": 26,
|
|
||||||
"UGCRead": 27,
|
|
||||||
"GetCachedUGCCount": 28,
|
|
||||||
"PublishWorkshopFile": 29,
|
|
||||||
"CreatePublishedFileUpdateRequest": 30,
|
|
||||||
"UpdatePublishedFileFile": 31,
|
|
||||||
"UpdatePublishedFilePreviewFile": 32,
|
|
||||||
"UpdatePublishedFileTitle": 33,
|
|
||||||
"UpdatePublishedFileDescription": 34,
|
|
||||||
"UpdatePublishedFileVisibility": 35,
|
|
||||||
"UpdatePublishedFileTags": 36,
|
|
||||||
"CommitPublishedFileUpdate": 37,
|
|
||||||
"GetPublishedFileDetails": 38,
|
|
||||||
"DeletePublishedFile": 39,
|
|
||||||
"EnumerateUserPublishedFiles": 40,
|
|
||||||
"SubscribePublishedFile": 41,
|
|
||||||
"EnumerateUserSubscribedFiles": 42,
|
|
||||||
"UnsubscribePublishedFile": 43,
|
|
||||||
"UpdatePublishedFileSetChangeDescription": 44,
|
|
||||||
"GetPublishedItemVoteDetails": 45,
|
|
||||||
"UpdateUserPublishedItemVote": 46,
|
|
||||||
"GetUserPublishedItemVoteDetails": 47,
|
|
||||||
"EnumerateUserSharedWorkshopFiles": 48,
|
|
||||||
"PublishVideo": 49,
|
|
||||||
"SetUserPublishedFileAction": 50,
|
|
||||||
"EnumeratePublishedFilesByUserAction": 51,
|
|
||||||
"EnumeratePublishedWorkshopFiles": 52,
|
|
||||||
"UGCDownloadToLocation": 53,
|
|
||||||
"GetFileListFromServer": 54,
|
|
||||||
"FileFetch": 55,
|
|
||||||
"FilePersist": 56,
|
|
||||||
"SynchronizeToClient": 57,
|
|
||||||
"SynchronizeToServer": 58,
|
|
||||||
"ResetFileRequestState": 59
|
|
||||||
},
|
|
||||||
"SteamController005": {
|
"SteamController005": {
|
||||||
"Init": 0,
|
"Init": 0,
|
||||||
"Shutdown": 1,
|
"Shutdown": 1,
|
||||||
@@ -3225,12 +3225,6 @@
|
|||||||
"GetAppDependencies": 72,
|
"GetAppDependencies": 72,
|
||||||
"DeleteItem": 73
|
"DeleteItem": 73
|
||||||
},
|
},
|
||||||
"STEAMVIDEO_INTERFACE_V002": {
|
|
||||||
"GetVideoURL": 0,
|
|
||||||
"IsBroadcasting": 1,
|
|
||||||
"GetOPFSettings": 2,
|
|
||||||
"GetOPFStringForApp": 3
|
|
||||||
},
|
|
||||||
"SteamUtils009": {
|
"SteamUtils009": {
|
||||||
"GetSecondsSinceAppActive": 0,
|
"GetSecondsSinceAppActive": 0,
|
||||||
"GetSecondsSinceComputerActive": 1,
|
"GetSecondsSinceComputerActive": 1,
|
||||||
@@ -3267,6 +3261,12 @@
|
|||||||
"FilterText": 32,
|
"FilterText": 32,
|
||||||
"GetIPv6ConnectivityState": 33
|
"GetIPv6ConnectivityState": 33
|
||||||
},
|
},
|
||||||
|
"STEAMVIDEO_INTERFACE_V002": {
|
||||||
|
"GetVideoURL": 0,
|
||||||
|
"IsBroadcasting": 1,
|
||||||
|
"GetOPFSettings": 2,
|
||||||
|
"GetOPFStringForApp": 3
|
||||||
|
},
|
||||||
"STEAMHTMLSURFACE_INTERFACE_VERSION_004": {
|
"STEAMHTMLSURFACE_INTERFACE_VERSION_004": {
|
||||||
"Init": 0,
|
"Init": 0,
|
||||||
"Shutdown": 1,
|
"Shutdown": 1,
|
||||||
@@ -3346,6 +3346,48 @@
|
|||||||
"GetGlyphForActionOrigin": 29,
|
"GetGlyphForActionOrigin": 29,
|
||||||
"GetInputTypeForHandle": 30
|
"GetInputTypeForHandle": 30
|
||||||
},
|
},
|
||||||
|
"SteamClient018": {
|
||||||
|
"CreateSteamPipe": 0,
|
||||||
|
"BReleaseSteamPipe": 1,
|
||||||
|
"ConnectToGlobalUser": 2,
|
||||||
|
"CreateLocalUser": 3,
|
||||||
|
"ReleaseUser": 4,
|
||||||
|
"GetISteamUser": 5,
|
||||||
|
"GetISteamGameServer": 6,
|
||||||
|
"SetLocalIPBinding": 7,
|
||||||
|
"GetISteamFriends": 8,
|
||||||
|
"GetISteamUtils": 9,
|
||||||
|
"GetISteamMatchmaking": 10,
|
||||||
|
"GetISteamMatchmakingServers": 11,
|
||||||
|
"GetISteamGenericInterface": 12,
|
||||||
|
"GetISteamUserStats": 13,
|
||||||
|
"GetISteamGameServerStats": 14,
|
||||||
|
"GetISteamApps": 15,
|
||||||
|
"GetISteamNetworking": 16,
|
||||||
|
"GetISteamRemoteStorage": 17,
|
||||||
|
"GetISteamScreenshots": 18,
|
||||||
|
"GetISteamGameSearch": 19,
|
||||||
|
"RunFrame": 20,
|
||||||
|
"GetIPCCallCount": 21,
|
||||||
|
"SetWarningMessageHook": 22,
|
||||||
|
"BShutdownIfAllPipesClosed": 23,
|
||||||
|
"GetISteamHTTP": 24,
|
||||||
|
"DEPRECATED_GetISteamUnifiedMessages": 25,
|
||||||
|
"GetISteamController": 26,
|
||||||
|
"GetISteamUGC": 27,
|
||||||
|
"GetISteamAppList": 28,
|
||||||
|
"GetISteamMusic": 29,
|
||||||
|
"GetISteamMusicRemote": 30,
|
||||||
|
"GetISteamHTMLSurface": 31,
|
||||||
|
"DEPRECATED_Set_SteamAPI_CPostAPIResultInProcess": 32,
|
||||||
|
"DEPRECATED_Remove_SteamAPI_CPostAPIResultInProcess": 33,
|
||||||
|
"Set_SteamAPI_CCheckCallbackRegisteredInProcess": 34,
|
||||||
|
"GetISteamInventory": 35,
|
||||||
|
"GetISteamVideo": 36,
|
||||||
|
"GetISteamParentalSettings": 37,
|
||||||
|
"GetISteamInput": 38,
|
||||||
|
"GetISteamParties": 39
|
||||||
|
},
|
||||||
"SteamController007": {
|
"SteamController007": {
|
||||||
"Init": 0,
|
"Init": 0,
|
||||||
"Shutdown": 1,
|
"Shutdown": 1,
|
||||||
@@ -3464,48 +3506,6 @@
|
|||||||
"GetProfileItemPropertyString": 78,
|
"GetProfileItemPropertyString": 78,
|
||||||
"GetProfileItemPropertyUint": 79
|
"GetProfileItemPropertyUint": 79
|
||||||
},
|
},
|
||||||
"SteamClient018": {
|
|
||||||
"CreateSteamPipe": 0,
|
|
||||||
"BReleaseSteamPipe": 1,
|
|
||||||
"ConnectToGlobalUser": 2,
|
|
||||||
"CreateLocalUser": 3,
|
|
||||||
"ReleaseUser": 4,
|
|
||||||
"GetISteamUser": 5,
|
|
||||||
"GetISteamGameServer": 6,
|
|
||||||
"SetLocalIPBinding": 7,
|
|
||||||
"GetISteamFriends": 8,
|
|
||||||
"GetISteamUtils": 9,
|
|
||||||
"GetISteamMatchmaking": 10,
|
|
||||||
"GetISteamMatchmakingServers": 11,
|
|
||||||
"GetISteamGenericInterface": 12,
|
|
||||||
"GetISteamUserStats": 13,
|
|
||||||
"GetISteamGameServerStats": 14,
|
|
||||||
"GetISteamApps": 15,
|
|
||||||
"GetISteamNetworking": 16,
|
|
||||||
"GetISteamRemoteStorage": 17,
|
|
||||||
"GetISteamScreenshots": 18,
|
|
||||||
"GetISteamGameSearch": 19,
|
|
||||||
"RunFrame": 20,
|
|
||||||
"GetIPCCallCount": 21,
|
|
||||||
"SetWarningMessageHook": 22,
|
|
||||||
"BShutdownIfAllPipesClosed": 23,
|
|
||||||
"GetISteamHTTP": 24,
|
|
||||||
"DEPRECATED_GetISteamUnifiedMessages": 25,
|
|
||||||
"GetISteamController": 26,
|
|
||||||
"GetISteamUGC": 27,
|
|
||||||
"GetISteamAppList": 28,
|
|
||||||
"GetISteamMusic": 29,
|
|
||||||
"GetISteamMusicRemote": 30,
|
|
||||||
"GetISteamHTMLSurface": 31,
|
|
||||||
"DEPRECATED_Set_SteamAPI_CPostAPIResultInProcess": 32,
|
|
||||||
"DEPRECATED_Remove_SteamAPI_CPostAPIResultInProcess": 33,
|
|
||||||
"Set_SteamAPI_CCheckCallbackRegisteredInProcess": 34,
|
|
||||||
"GetISteamInventory": 35,
|
|
||||||
"GetISteamVideo": 36,
|
|
||||||
"GetISteamParentalSettings": 37,
|
|
||||||
"GetISteamInput": 38,
|
|
||||||
"GetISteamParties": 39
|
|
||||||
},
|
|
||||||
"STEAMHTTP_INTERFACE_VERSION003": {
|
"STEAMHTTP_INTERFACE_VERSION003": {
|
||||||
"CreateHTTPRequest": 0,
|
"CreateHTTPRequest": 0,
|
||||||
"SetHTTPRequestContextValue": 1,
|
"SetHTTPRequestContextValue": 1,
|
||||||
@@ -3756,6 +3756,29 @@
|
|||||||
"GetAppDependencies": 74,
|
"GetAppDependencies": 74,
|
||||||
"DeleteItem": 75
|
"DeleteItem": 75
|
||||||
},
|
},
|
||||||
|
"SteamNetworkingUtils001": {
|
||||||
|
"GetLocalTimestamp": 0,
|
||||||
|
"SetDebugOutputFunction": 1,
|
||||||
|
"SetConfigValue": 2,
|
||||||
|
"GetConfigValue": 3,
|
||||||
|
"GetConfigValueInfo": 4,
|
||||||
|
"GetFirstConfigValue": 5,
|
||||||
|
"SteamNetworkingIPAddr_ToString": 6,
|
||||||
|
"SteamNetworkingIPAddr_ParseString": 7,
|
||||||
|
"SteamNetworkingIdentity_ToString": 8,
|
||||||
|
"SteamNetworkingIdentity_ParseString": 9,
|
||||||
|
"GetLocalPingLocation": 10,
|
||||||
|
"EstimatePingTimeBetweenTwoLocations": 11,
|
||||||
|
"EstimatePingTimeFromLocalHost": 12,
|
||||||
|
"ConvertPingLocationToString": 13,
|
||||||
|
"ParsePingLocationString": 14,
|
||||||
|
"CheckPingDataUpToDate": 15,
|
||||||
|
"IsPingMeasurementInProgress": 16,
|
||||||
|
"GetPingToDataCenter": 17,
|
||||||
|
"GetDirectPingToPOP": 18,
|
||||||
|
"GetPOPCount": 19,
|
||||||
|
"GetPOPList": 20
|
||||||
|
},
|
||||||
"SteamNetworkingSockets002": {
|
"SteamNetworkingSockets002": {
|
||||||
"CreateListenSocketIP": 0,
|
"CreateListenSocketIP": 0,
|
||||||
"ConnectByIPAddress": 1,
|
"ConnectByIPAddress": 1,
|
||||||
@@ -3787,7 +3810,7 @@
|
|||||||
"CreateHostedDedicatedServerListenSocket": 27,
|
"CreateHostedDedicatedServerListenSocket": 27,
|
||||||
"RunCallbacks": 28
|
"RunCallbacks": 28
|
||||||
},
|
},
|
||||||
"SteamNetworkingUtils001": {
|
"SteamNetworkingUtils002": {
|
||||||
"GetLocalTimestamp": 0,
|
"GetLocalTimestamp": 0,
|
||||||
"SetDebugOutputFunction": 1,
|
"SetDebugOutputFunction": 1,
|
||||||
"SetConfigValue": 2,
|
"SetConfigValue": 2,
|
||||||
@@ -3798,13 +3821,13 @@
|
|||||||
"SteamNetworkingIPAddr_ParseString": 7,
|
"SteamNetworkingIPAddr_ParseString": 7,
|
||||||
"SteamNetworkingIdentity_ToString": 8,
|
"SteamNetworkingIdentity_ToString": 8,
|
||||||
"SteamNetworkingIdentity_ParseString": 9,
|
"SteamNetworkingIdentity_ParseString": 9,
|
||||||
"GetLocalPingLocation": 10,
|
"GetRelayNetworkStatus": 10,
|
||||||
"EstimatePingTimeBetweenTwoLocations": 11,
|
"GetLocalPingLocation": 11,
|
||||||
"EstimatePingTimeFromLocalHost": 12,
|
"EstimatePingTimeBetweenTwoLocations": 12,
|
||||||
"ConvertPingLocationToString": 13,
|
"EstimatePingTimeFromLocalHost": 13,
|
||||||
"ParsePingLocationString": 14,
|
"ConvertPingLocationToString": 14,
|
||||||
"CheckPingDataUpToDate": 15,
|
"ParsePingLocationString": 15,
|
||||||
"IsPingMeasurementInProgress": 16,
|
"CheckPingDataUpToDate": 16,
|
||||||
"GetPingToDataCenter": 17,
|
"GetPingToDataCenter": 17,
|
||||||
"GetDirectPingToPOP": 18,
|
"GetDirectPingToPOP": 18,
|
||||||
"GetPOPCount": 19,
|
"GetPOPCount": 19,
|
||||||
@@ -3846,29 +3869,6 @@
|
|||||||
"GetGameCoordinatorServerLogin": 32,
|
"GetGameCoordinatorServerLogin": 32,
|
||||||
"RunCallbacks": 33
|
"RunCallbacks": 33
|
||||||
},
|
},
|
||||||
"SteamNetworkingUtils002": {
|
|
||||||
"GetLocalTimestamp": 0,
|
|
||||||
"SetDebugOutputFunction": 1,
|
|
||||||
"SetConfigValue": 2,
|
|
||||||
"GetConfigValue": 3,
|
|
||||||
"GetConfigValueInfo": 4,
|
|
||||||
"GetFirstConfigValue": 5,
|
|
||||||
"SteamNetworkingIPAddr_ToString": 6,
|
|
||||||
"SteamNetworkingIPAddr_ParseString": 7,
|
|
||||||
"SteamNetworkingIdentity_ToString": 8,
|
|
||||||
"SteamNetworkingIdentity_ParseString": 9,
|
|
||||||
"GetRelayNetworkStatus": 10,
|
|
||||||
"GetLocalPingLocation": 11,
|
|
||||||
"EstimatePingTimeBetweenTwoLocations": 12,
|
|
||||||
"EstimatePingTimeFromLocalHost": 13,
|
|
||||||
"ConvertPingLocationToString": 14,
|
|
||||||
"ParsePingLocationString": 15,
|
|
||||||
"CheckPingDataUpToDate": 16,
|
|
||||||
"GetPingToDataCenter": 17,
|
|
||||||
"GetDirectPingToPOP": 18,
|
|
||||||
"GetPOPCount": 19,
|
|
||||||
"GetPOPList": 20
|
|
||||||
},
|
|
||||||
"STEAMUGC_INTERFACE_VERSION013": {
|
"STEAMUGC_INTERFACE_VERSION013": {
|
||||||
"CreateQueryUserUGCRequest": 0,
|
"CreateQueryUserUGCRequest": 0,
|
||||||
"CreateQueryAllUGCRequest": 2,
|
"CreateQueryAllUGCRequest": 2,
|
||||||
@@ -3990,6 +3990,15 @@
|
|||||||
"GetISteamParties": 39,
|
"GetISteamParties": 39,
|
||||||
"GetISteamRemotePlay": 40
|
"GetISteamRemotePlay": 40
|
||||||
},
|
},
|
||||||
|
"STEAMREMOTEPLAY_INTERFACE_VERSION001": {
|
||||||
|
"GetSessionCount": 0,
|
||||||
|
"GetSessionID": 1,
|
||||||
|
"GetSessionSteamID": 2,
|
||||||
|
"GetSessionClientName": 3,
|
||||||
|
"GetSessionClientFormFactor": 4,
|
||||||
|
"BGetSessionClientResolution": 5,
|
||||||
|
"BSendRemotePlayTogetherInvite": 6
|
||||||
|
},
|
||||||
"SteamNetworkingSockets004": {
|
"SteamNetworkingSockets004": {
|
||||||
"CreateListenSocketIP": 0,
|
"CreateListenSocketIP": 0,
|
||||||
"ConnectByIPAddress": 1,
|
"ConnectByIPAddress": 1,
|
||||||
@@ -4026,15 +4035,6 @@
|
|||||||
"GetGameCoordinatorServerLogin": 32,
|
"GetGameCoordinatorServerLogin": 32,
|
||||||
"RunCallbacks": 33
|
"RunCallbacks": 33
|
||||||
},
|
},
|
||||||
"STEAMREMOTEPLAY_INTERFACE_VERSION001": {
|
|
||||||
"GetSessionCount": 0,
|
|
||||||
"GetSessionID": 1,
|
|
||||||
"GetSessionSteamID": 2,
|
|
||||||
"GetSessionClientName": 3,
|
|
||||||
"GetSessionClientFormFactor": 4,
|
|
||||||
"BGetSessionClientResolution": 5,
|
|
||||||
"BSendRemotePlayTogetherInvite": 6
|
|
||||||
},
|
|
||||||
"SteamClient020": {
|
"SteamClient020": {
|
||||||
"CreateSteamPipe": 0,
|
"CreateSteamPipe": 0,
|
||||||
"BReleaseSteamPipe": 1,
|
"BReleaseSteamPipe": 1,
|
||||||
@@ -4334,6 +4334,7 @@
|
|||||||
"GetLobbyOwner": 35,
|
"GetLobbyOwner": 35,
|
||||||
"SetLobbyOwner": 36,
|
"SetLobbyOwner": 36,
|
||||||
"SetLinkedLobby": 37,
|
"SetLinkedLobby": 37,
|
||||||
|
"CheckForPSNGameBootInvite": 38,
|
||||||
"ServerResponded": 0,
|
"ServerResponded": 0,
|
||||||
"ServerFailedToRespond": 1,
|
"ServerFailedToRespond": 1,
|
||||||
"RefreshComplete": 2,
|
"RefreshComplete": 2,
|
||||||
@@ -5634,198 +5635,5 @@
|
|||||||
"GetGlobalStat": 39,
|
"GetGlobalStat": 39,
|
||||||
"GetGlobalStatHistory": 41,
|
"GetGlobalStatHistory": 41,
|
||||||
"GetAchievementProgressLimits": 43
|
"GetAchievementProgressLimits": 43
|
||||||
},
|
|
||||||
"SteamFriends018": {
|
|
||||||
"GetPersonaName": 0,
|
|
||||||
"GetPersonaState": 1,
|
|
||||||
"GetFriendCount": 2,
|
|
||||||
"GetFriendByIndex": 3,
|
|
||||||
"GetFriendRelationship": 4,
|
|
||||||
"GetFriendPersonaState": 5,
|
|
||||||
"GetFriendPersonaName": 6,
|
|
||||||
"GetFriendGamePlayed": 7,
|
|
||||||
"GetFriendPersonaNameHistory": 8,
|
|
||||||
"GetFriendSteamLevel": 9,
|
|
||||||
"GetPlayerNickname": 10,
|
|
||||||
"GetFriendsGroupCount": 11,
|
|
||||||
"GetFriendsGroupIDByIndex": 12,
|
|
||||||
"GetFriendsGroupName": 13,
|
|
||||||
"GetFriendsGroupMembersCount": 14,
|
|
||||||
"GetFriendsGroupMembersList": 15,
|
|
||||||
"HasFriend": 16,
|
|
||||||
"GetClanCount": 17,
|
|
||||||
"GetClanByIndex": 18,
|
|
||||||
"GetClanName": 19,
|
|
||||||
"GetClanTag": 20,
|
|
||||||
"GetClanActivityCounts": 21,
|
|
||||||
"DownloadClanActivityCounts": 22,
|
|
||||||
"GetFriendCountFromSource": 23,
|
|
||||||
"GetFriendFromSourceByIndex": 24,
|
|
||||||
"IsUserInSource": 25,
|
|
||||||
"SetInGameVoiceSpeaking": 26,
|
|
||||||
"ActivateGameOverlay": 27,
|
|
||||||
"ActivateGameOverlayToUser": 28,
|
|
||||||
"ActivateGameOverlayToWebPage": 29,
|
|
||||||
"ActivateGameOverlayToStore": 30,
|
|
||||||
"SetPlayedWith": 31,
|
|
||||||
"ActivateGameOverlayInviteDialog": 32,
|
|
||||||
"GetSmallFriendAvatar": 33,
|
|
||||||
"GetMediumFriendAvatar": 34,
|
|
||||||
"GetLargeFriendAvatar": 35,
|
|
||||||
"RequestUserInformation": 36,
|
|
||||||
"RequestClanOfficerList": 37,
|
|
||||||
"GetClanOwner": 38,
|
|
||||||
"GetClanOfficerCount": 39,
|
|
||||||
"GetClanOfficerByIndex": 40,
|
|
||||||
"SetRichPresence": 41,
|
|
||||||
"ClearRichPresence": 42,
|
|
||||||
"GetFriendRichPresence": 43,
|
|
||||||
"GetFriendRichPresenceKeyCount": 44,
|
|
||||||
"GetFriendRichPresenceKeyByIndex": 45,
|
|
||||||
"RequestFriendRichPresence": 46,
|
|
||||||
"InviteUserToGame": 47,
|
|
||||||
"GetCoplayFriendCount": 48,
|
|
||||||
"GetCoplayFriend": 49,
|
|
||||||
"GetFriendCoplayTime": 50,
|
|
||||||
"GetFriendCoplayGame": 51,
|
|
||||||
"JoinClanChatRoom": 52,
|
|
||||||
"LeaveClanChatRoom": 53,
|
|
||||||
"GetClanChatMemberCount": 54,
|
|
||||||
"GetChatMemberByIndex": 55,
|
|
||||||
"SendClanChatMessage": 56,
|
|
||||||
"GetClanChatMessage": 57,
|
|
||||||
"IsClanChatAdmin": 58,
|
|
||||||
"IsClanChatWindowOpenInSteam": 59,
|
|
||||||
"OpenClanChatWindowInSteam": 60,
|
|
||||||
"CloseClanChatWindowInSteam": 61,
|
|
||||||
"SetListenForFriendsMessages": 62,
|
|
||||||
"ReplyToFriendMessage": 63,
|
|
||||||
"GetFriendMessage": 64,
|
|
||||||
"GetFollowerCount": 65,
|
|
||||||
"IsFollowing": 66,
|
|
||||||
"EnumerateFollowingList": 67,
|
|
||||||
"IsClanPublic": 68,
|
|
||||||
"IsClanOfficialGameGroup": 69,
|
|
||||||
"GetNumChatsWithUnreadPriorityMessages": 70,
|
|
||||||
"ActivateGameOverlayRemotePlayTogetherInviteDialog": 71,
|
|
||||||
"RegisterProtocolInOverlayBrowser": 72,
|
|
||||||
"ActivateGameOverlayInviteDialogConnectString": 73,
|
|
||||||
"RequestEquippedProfileItems": 74,
|
|
||||||
"BHasEquippedProfileItem": 75,
|
|
||||||
"GetProfileItemPropertyString": 76,
|
|
||||||
"GetProfileItemPropertyUint": 77
|
|
||||||
},
|
|
||||||
"STEAMREMOTEPLAY_INTERFACE_VERSION003": {
|
|
||||||
"GetSessionCount": 0,
|
|
||||||
"GetSessionID": 1,
|
|
||||||
"GetSessionSteamID": 2,
|
|
||||||
"GetSessionClientName": 3,
|
|
||||||
"GetSessionClientFormFactor": 4,
|
|
||||||
"BGetSessionClientResolution": 5,
|
|
||||||
"ShowRemotePlayTogetherUI": 6,
|
|
||||||
"BSendRemotePlayTogetherInvite": 7,
|
|
||||||
"BEnableRemotePlayTogetherDirectInput": 8,
|
|
||||||
"DisableRemotePlayTogetherDirectInput": 9,
|
|
||||||
"GetInput": 10,
|
|
||||||
"SetMouseVisibility": 11,
|
|
||||||
"SetMousePosition": 12,
|
|
||||||
"CreateMouseCursor": 13,
|
|
||||||
"SetMouseCursor": 14
|
|
||||||
},
|
|
||||||
"STEAMUGC_INTERFACE_VERSION021": {
|
|
||||||
"CreateQueryUserUGCRequest": 0,
|
|
||||||
"CreateQueryAllUGCRequest": 2,
|
|
||||||
"CreateQueryUGCDetailsRequest": 3,
|
|
||||||
"SendQueryUGCRequest": 4,
|
|
||||||
"GetQueryUGCResult": 5,
|
|
||||||
"GetQueryUGCNumTags": 6,
|
|
||||||
"GetQueryUGCTag": 7,
|
|
||||||
"GetQueryUGCTagDisplayName": 8,
|
|
||||||
"GetQueryUGCPreviewURL": 9,
|
|
||||||
"GetQueryUGCMetadata": 10,
|
|
||||||
"GetQueryUGCChildren": 11,
|
|
||||||
"GetQueryUGCStatistic": 12,
|
|
||||||
"GetQueryUGCNumAdditionalPreviews": 13,
|
|
||||||
"GetQueryUGCAdditionalPreview": 14,
|
|
||||||
"GetQueryUGCNumKeyValueTags": 15,
|
|
||||||
"GetQueryUGCKeyValueTag": 17,
|
|
||||||
"GetNumSupportedGameVersions": 18,
|
|
||||||
"GetSupportedGameVersionData": 19,
|
|
||||||
"GetQueryUGCContentDescriptors": 20,
|
|
||||||
"ReleaseQueryUGCRequest": 21,
|
|
||||||
"AddRequiredTag": 22,
|
|
||||||
"AddRequiredTagGroup": 23,
|
|
||||||
"AddExcludedTag": 24,
|
|
||||||
"SetReturnOnlyIDs": 25,
|
|
||||||
"SetReturnKeyValueTags": 26,
|
|
||||||
"SetReturnLongDescription": 27,
|
|
||||||
"SetReturnMetadata": 28,
|
|
||||||
"SetReturnChildren": 29,
|
|
||||||
"SetReturnAdditionalPreviews": 30,
|
|
||||||
"SetReturnTotalOnly": 31,
|
|
||||||
"SetReturnPlaytimeStats": 32,
|
|
||||||
"SetLanguage": 33,
|
|
||||||
"SetAllowCachedResponse": 34,
|
|
||||||
"SetAdminQuery": 35,
|
|
||||||
"SetCloudFileNameFilter": 36,
|
|
||||||
"SetMatchAnyTag": 37,
|
|
||||||
"SetSearchText": 38,
|
|
||||||
"SetRankedByTrendDays": 39,
|
|
||||||
"SetTimeCreatedDateRange": 40,
|
|
||||||
"SetTimeUpdatedDateRange": 41,
|
|
||||||
"AddRequiredKeyValueTag": 42,
|
|
||||||
"RequestUGCDetails": 43,
|
|
||||||
"CreateItem": 44,
|
|
||||||
"StartItemUpdate": 45,
|
|
||||||
"SetItemTitle": 46,
|
|
||||||
"SetItemDescription": 47,
|
|
||||||
"SetItemUpdateLanguage": 48,
|
|
||||||
"SetItemMetadata": 49,
|
|
||||||
"SetItemVisibility": 50,
|
|
||||||
"SetItemTags": 51,
|
|
||||||
"SetItemContent": 52,
|
|
||||||
"SetItemPreview": 53,
|
|
||||||
"SetAllowLegacyUpload": 54,
|
|
||||||
"RemoveAllItemKeyValueTags": 55,
|
|
||||||
"RemoveItemKeyValueTags": 56,
|
|
||||||
"AddItemKeyValueTag": 57,
|
|
||||||
"AddItemPreviewFile": 58,
|
|
||||||
"AddItemPreviewVideo": 59,
|
|
||||||
"UpdateItemPreviewFile": 60,
|
|
||||||
"UpdateItemPreviewVideo": 61,
|
|
||||||
"RemoveItemPreview": 62,
|
|
||||||
"AddContentDescriptor": 63,
|
|
||||||
"RemoveContentDescriptor": 64,
|
|
||||||
"SetRequiredGameVersions": 65,
|
|
||||||
"SubmitItemUpdate": 66,
|
|
||||||
"GetItemUpdateProgress": 67,
|
|
||||||
"SetUserItemVote": 68,
|
|
||||||
"GetUserItemVote": 69,
|
|
||||||
"AddItemToFavorites": 70,
|
|
||||||
"RemoveItemFromFavorites": 71,
|
|
||||||
"SubscribeItem": 72,
|
|
||||||
"UnsubscribeItem": 73,
|
|
||||||
"GetNumSubscribedItems": 74,
|
|
||||||
"GetSubscribedItems": 75,
|
|
||||||
"GetItemState": 76,
|
|
||||||
"GetItemInstallInfo": 77,
|
|
||||||
"GetItemDownloadInfo": 78,
|
|
||||||
"DownloadItem": 79,
|
|
||||||
"BInitWorkshopForGameServer": 80,
|
|
||||||
"SuspendDownloads": 81,
|
|
||||||
"StartPlaytimeTracking": 82,
|
|
||||||
"StopPlaytimeTracking": 83,
|
|
||||||
"StopPlaytimeTrackingForAllItems": 84,
|
|
||||||
"AddDependency": 85,
|
|
||||||
"RemoveDependency": 86,
|
|
||||||
"AddAppDependency": 87,
|
|
||||||
"RemoveAppDependency": 88,
|
|
||||||
"GetAppDependencies": 89,
|
|
||||||
"DeleteItem": 90,
|
|
||||||
"ShowWorkshopEULA": 91,
|
|
||||||
"GetWorkshopEULAStatus": 92,
|
|
||||||
"GetUserContentDescriptorPreferences": 93,
|
|
||||||
"SetItemsDisabledLocally": 94,
|
|
||||||
"SetSubscriptionsLoadOrder": 95
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -2,12 +2,11 @@
|
|||||||
#include <set>
|
#include <set>
|
||||||
|
|
||||||
#include <koalabox/config.hpp>
|
#include <koalabox/config.hpp>
|
||||||
#include <koalabox/dll_monitor.hpp>
|
#include <koalabox/lib_monitor.hpp>
|
||||||
#include <koalabox/globals.hpp>
|
#include <koalabox/globals.hpp>
|
||||||
#include <koalabox/hook.hpp>
|
#include <koalabox/hook.hpp>
|
||||||
#include <koalabox/loader.hpp>
|
|
||||||
#include <koalabox/logger.hpp>
|
#include <koalabox/logger.hpp>
|
||||||
#include <koalabox/module.hpp>
|
#include <koalabox/lib.hpp>
|
||||||
#include <koalabox/path.hpp>
|
#include <koalabox/path.hpp>
|
||||||
#include <koalabox/paths.hpp>
|
#include <koalabox/paths.hpp>
|
||||||
#include <koalabox/util.hpp>
|
#include <koalabox/util.hpp>
|
||||||
@@ -41,17 +40,16 @@
|
|||||||
namespace {
|
namespace {
|
||||||
namespace kb = koalabox;
|
namespace kb = koalabox;
|
||||||
|
|
||||||
void* steamapi_handle = nullptr;
|
void* original_steamapi_handle = nullptr;
|
||||||
const kb::dll_monitor::callback_context_t* dll_monitor_context = nullptr;
|
|
||||||
|
|
||||||
std::set<std::string> find_steamclient_versions() {
|
std::set<std::string> find_steamclient_versions(void* steamapi_handle) {
|
||||||
if(!steamapi_handle) {
|
if(!steamapi_handle) {
|
||||||
kb::util::panic("Invalid state. steamapi_handle is null.");
|
kb::util::panic("Invalid state. steamapi_handle is null.");
|
||||||
}
|
}
|
||||||
|
|
||||||
std::set<std::string> versions;
|
std::set<std::string> versions;
|
||||||
|
|
||||||
const auto rdata_section = kb::module::get_section_or_throw(steamapi_handle, kb::module::CONST_STR_SECTION);
|
const auto rdata_section = kb::lib::get_section_or_throw(steamapi_handle, kb::lib::CONST_STR_SECTION);
|
||||||
const auto rdata = rdata_section.to_string();
|
const auto rdata = rdata_section.to_string();
|
||||||
|
|
||||||
const std::regex pattern(R"(SteamClient\d{3})");
|
const std::regex pattern(R"(SteamClient\d{3})");
|
||||||
@@ -65,17 +63,12 @@ namespace {
|
|||||||
return versions;
|
return versions;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool on_steamclient_loaded(const HMODULE steamclient_handle) {
|
void warn_if_late_injection(const std::string& steamclient_version) {
|
||||||
static const auto CreateInterface$ = KB_MOD_GET_FUNC(steamclient_handle, CreateInterface);
|
|
||||||
|
|
||||||
if(steamapi_handle) {
|
|
||||||
// SteamAPI might have been initialized.
|
|
||||||
// Hence, we need to query SteamClient interfaces and hook them if needed.
|
|
||||||
const auto steamclient_versions = find_steamclient_versions();
|
|
||||||
for(const auto& steamclient_version : steamclient_versions) {
|
|
||||||
if(CreateInterface$(steamclient_version.c_str(), nullptr)) {
|
|
||||||
#ifdef KB_WIN
|
#ifdef KB_WIN
|
||||||
if(!kb::util::is_wine_env()) {
|
if(kb::util::is_wine_env()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
LOG_WARN(
|
LOG_WARN(
|
||||||
"'{}' was already initialized. SmokeAPI might not work as expected.", steamclient_version
|
"'{}' was already initialized. SmokeAPI might not work as expected.", steamclient_version
|
||||||
);
|
);
|
||||||
@@ -83,8 +76,23 @@ namespace {
|
|||||||
"Probable cause: SmokeAPI was injected too late. If possible, try injecting it earlier."
|
"Probable cause: SmokeAPI was injected too late. If possible, try injecting it earlier."
|
||||||
);
|
);
|
||||||
LOG_WARN("NOTE: You can safely ignore this warning if running under Proton or native Linux");
|
LOG_WARN("NOTE: You can safely ignore this warning if running under Proton or native Linux");
|
||||||
}
|
|
||||||
#endif
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
bool on_steamclient_loaded(void* steamclient_handle) {
|
||||||
|
static const auto CreateInterface$ = KB_MOD_GET_FUNC(steamclient_handle, CreateInterface);
|
||||||
|
|
||||||
|
auto* steamapi_handle = original_steamapi_handle
|
||||||
|
? original_steamapi_handle
|
||||||
|
: kb::lib::get_library_handle(STEAM_API_MODULE);
|
||||||
|
if(steamapi_handle) {
|
||||||
|
// SteamAPI might have been initialized.
|
||||||
|
// Hence, we need to query SteamClient interfaces and hook them if needed.
|
||||||
|
const auto steamclient_versions = find_steamclient_versions(steamapi_handle);
|
||||||
|
for(const auto& steamclient_version : steamclient_versions) {
|
||||||
|
if(CreateInterface$(steamclient_version.c_str(), nullptr)) {
|
||||||
|
warn_if_late_injection(steamclient_version);
|
||||||
|
|
||||||
steam_interfaces::hook_steamclient_interface(steamclient_handle, steamclient_version);
|
steam_interfaces::hook_steamclient_interface(steamclient_handle, steamclient_version);
|
||||||
} else {
|
} else {
|
||||||
LOG_INFO("'{}' has not been initialized. Waiting for initialization.", steamclient_version);
|
LOG_INFO("'{}' has not been initialized. Waiting for initialization.", steamclient_version);
|
||||||
@@ -94,16 +102,11 @@ namespace {
|
|||||||
|
|
||||||
KB_HOOK_DETOUR_MODULE(CreateInterface, steamclient_handle);
|
KB_HOOK_DETOUR_MODULE(CreateInterface, steamclient_handle);
|
||||||
|
|
||||||
// TODO: There is an implicit lifetime dependency here and potential for leaks.
|
|
||||||
// This mechanism requires rework.
|
|
||||||
// DLL monitor will have destroyed it.
|
|
||||||
dll_monitor_context = nullptr;
|
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void start_dll_listener() {
|
void init_lib_monitor() {
|
||||||
dll_monitor_context = kb::dll_monitor::init_listener(
|
kb::lib_monitor::init_listener(
|
||||||
{{STEAMCLIENT_DLL, on_steamclient_loaded}}
|
{{STEAMCLIENT_DLL, on_steamclient_loaded}}
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@@ -123,7 +126,7 @@ namespace smoke_api {
|
|||||||
LOG_INFO("{} v{} | Built at '{}'", PROJECT_NAME, PROJECT_VERSION, __TIMESTAMP__);
|
LOG_INFO("{} v{} | Built at '{}'", PROJECT_NAME, PROJECT_VERSION, __TIMESTAMP__);
|
||||||
LOG_DEBUG("Parsed config:\n{}", nlohmann::ordered_json(config::instance).dump(2));
|
LOG_DEBUG("Parsed config:\n{}", nlohmann::ordered_json(config::instance).dump(2));
|
||||||
|
|
||||||
const auto exe_path = kb::module::get_fs_path(nullptr);
|
const auto exe_path = kb::lib::get_fs_path(nullptr);
|
||||||
const auto exe_name = kb::path::to_str(exe_path.filename());
|
const auto exe_name = kb::path::to_str(exe_path.filename());
|
||||||
|
|
||||||
LOG_DEBUG("Process name: '{}' [{}-bit]", exe_name, kb::util::BITNESS);
|
LOG_DEBUG("Process name: '{}' [{}-bit]", exe_name, kb::util::BITNESS);
|
||||||
@@ -135,14 +138,14 @@ namespace smoke_api {
|
|||||||
if(kb::hook::is_hook_mode(module_handle, STEAM_API_MODULE)) {
|
if(kb::hook::is_hook_mode(module_handle, STEAM_API_MODULE)) {
|
||||||
LOG_INFO("Detected hook mode");
|
LOG_INFO("Detected hook mode");
|
||||||
|
|
||||||
start_dll_listener();
|
init_lib_monitor();
|
||||||
} else {
|
} else {
|
||||||
LOG_INFO("Detected proxy mode");
|
LOG_INFO("Detected proxy mode");
|
||||||
|
|
||||||
start_dll_listener();
|
init_lib_monitor();
|
||||||
|
|
||||||
const auto self_path = kb::paths::get_self_dir();
|
const auto self_path = kb::paths::get_self_dir();
|
||||||
steamapi_handle = kb::loader::load_original_library(
|
original_steamapi_handle = kb::lib::load_original_library(
|
||||||
self_path,
|
self_path,
|
||||||
STEAM_API_MODULE
|
STEAM_API_MODULE
|
||||||
);
|
);
|
||||||
@@ -156,12 +159,14 @@ namespace smoke_api {
|
|||||||
|
|
||||||
void shutdown() {
|
void shutdown() {
|
||||||
try {
|
try {
|
||||||
if(steamapi_handle != nullptr) {
|
if(original_steamapi_handle != nullptr) {
|
||||||
kb::module::unload_library(steamapi_handle);
|
kb::lib::unload_library(original_steamapi_handle);
|
||||||
steamapi_handle = nullptr;
|
original_steamapi_handle = nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
kb::dll_monitor::shutdown_listener(dll_monitor_context);
|
if(kb::lib_monitor::is_initialized()) {
|
||||||
|
kb::lib_monitor::shutdown_listener();
|
||||||
|
}
|
||||||
|
|
||||||
// TODO: Unhook everything
|
// TODO: Unhook everything
|
||||||
|
|
||||||
|
|||||||
@@ -6,15 +6,17 @@
|
|||||||
namespace steam_client {
|
namespace steam_client {
|
||||||
void* GetGenericInterface(
|
void* GetGenericInterface(
|
||||||
const std::string& function_name,
|
const std::string& function_name,
|
||||||
const std::string& interface_version,
|
const char* interface_version, // This can be null
|
||||||
const std::function<void*()>& original_function
|
const std::function<void*()>& original_function
|
||||||
) noexcept {
|
) noexcept {
|
||||||
try {
|
try {
|
||||||
auto* const interface = original_function();
|
auto* const interface = original_function();
|
||||||
|
|
||||||
|
if(interface_version) {
|
||||||
LOG_DEBUG("{} -> '{}' @ {}", function_name, interface_version, interface);
|
LOG_DEBUG("{} -> '{}' @ {}", function_name, interface_version, interface);
|
||||||
|
|
||||||
steam_interfaces::hook_virtuals(interface, interface_version);
|
steam_interfaces::hook_virtuals(interface, interface_version);
|
||||||
|
}
|
||||||
|
|
||||||
return interface;
|
return interface;
|
||||||
} catch(const std::exception& e) {
|
} catch(const std::exception& e) {
|
||||||
|
|||||||
@@ -5,7 +5,7 @@
|
|||||||
namespace steam_client {
|
namespace steam_client {
|
||||||
void* GetGenericInterface(
|
void* GetGenericInterface(
|
||||||
const std::string& function_name,
|
const std::string& function_name,
|
||||||
const std::string& interface_version,
|
const char* interface_version,
|
||||||
const std::function<void*()>& original_function
|
const std::function<void*()>& original_function
|
||||||
) noexcept;
|
) noexcept;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -7,7 +7,7 @@
|
|||||||
|
|
||||||
#include "steam_api/steam_interfaces.hpp"
|
#include "steam_api/steam_interfaces.hpp"
|
||||||
|
|
||||||
#include "koalabox/module.hpp"
|
#include "koalabox/lib.hpp"
|
||||||
#include "smoke_api/smoke_api.hpp"
|
#include "smoke_api/smoke_api.hpp"
|
||||||
#include "smoke_api/steamclient/steamclient.hpp"
|
#include "smoke_api/steamclient/steamclient.hpp"
|
||||||
#include "virtuals/steam_api_virtuals.hpp"
|
#include "virtuals/steam_api_virtuals.hpp"
|
||||||
@@ -196,7 +196,7 @@ namespace steam_interfaces {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void hook_steamclient_interface(
|
void hook_steamclient_interface(
|
||||||
const HMODULE steamclient_handle,
|
void* steamclient_handle,
|
||||||
const std::string& steam_client_interface_version
|
const std::string& steam_client_interface_version
|
||||||
) noexcept {
|
) noexcept {
|
||||||
try {
|
try {
|
||||||
@@ -209,7 +209,6 @@ namespace steam_interfaces {
|
|||||||
// Map virtual hook map to a set of keys
|
// Map virtual hook map to a set of keys
|
||||||
const auto prefixes = std::views::keys(virtual_hook_map) | std::ranges::to<std::set>();
|
const auto prefixes = std::views::keys(virtual_hook_map) | std::ranges::to<std::set>();
|
||||||
|
|
||||||
|
|
||||||
const auto CreateInterface$ = KB_MOD_GET_FUNC(steamclient_handle, CreateInterface);
|
const auto CreateInterface$ = KB_MOD_GET_FUNC(steamclient_handle, CreateInterface);
|
||||||
const auto* const THIS = CreateInterface$(steam_client_interface_version.c_str(), nullptr);
|
const auto* const THIS = CreateInterface$(steam_client_interface_version.c_str(), nullptr);
|
||||||
hook_virtuals(THIS, steam_client_interface_version);
|
hook_virtuals(THIS, steam_client_interface_version);
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ namespace steam_interfaces {
|
|||||||
* such as in the case of late injection.
|
* such as in the case of late injection.
|
||||||
*/
|
*/
|
||||||
void hook_steamclient_interface(
|
void hook_steamclient_interface(
|
||||||
HMODULE steamclient_handle,
|
void* steamclient_handle,
|
||||||
const std::string& steam_client_interface_version
|
const std::string& steam_client_interface_version
|
||||||
) noexcept;
|
) noexcept;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,11 +1,8 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include <cstdint>
|
|
||||||
#include <map>
|
|
||||||
#include <string>
|
|
||||||
|
|
||||||
#include <nlohmann/json.hpp>
|
#include <nlohmann/json.hpp>
|
||||||
|
|
||||||
|
#include <koalabox/core.hpp>
|
||||||
#include <koalabox/hook.hpp>
|
#include <koalabox/hook.hpp>
|
||||||
|
|
||||||
#define VIRTUAL(TYPE) __declspec(noinline) TYPE __fastcall // NOLINT(*-macro-parentheses)
|
#define VIRTUAL(TYPE) __declspec(noinline) TYPE __fastcall // NOLINT(*-macro-parentheses)
|
||||||
|
|||||||
@@ -1,8 +1,5 @@
|
|||||||
#include <filesystem>
|
|
||||||
#include <iostream>
|
|
||||||
#include <random>
|
#include <random>
|
||||||
#include <regex>
|
#include <regex>
|
||||||
#include <string>
|
|
||||||
|
|
||||||
#include <koalabox/http_client.hpp>
|
#include <koalabox/http_client.hpp>
|
||||||
#include <koalabox/logger.hpp>
|
#include <koalabox/logger.hpp>
|
||||||
@@ -33,12 +30,13 @@ namespace {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void print_help() {
|
void print_help() {
|
||||||
std::cout << "Steamworks SDK downloader for SmokeAPI v1.0" << std::endl
|
LOG_INFO(
|
||||||
<< "Usage: steamworks_downloader version1 version2 ... versionN" << std::endl
|
"Steamworks SDK downloader for SmokeAPI v1.0\n"
|
||||||
<< "Example: steamworks_downloader 100 158a 162" << std::endl
|
"Usage: steamworks_downloader version1 version2 ... versionN\n"
|
||||||
<< "Alternative usage: steamworks_downloader C:/path/to/downloaded_sdk/"
|
"Example: steamworks_downloader 100 158a 162\n"
|
||||||
<< "SDK version list available at: "
|
"Alternative usage: steamworks_downloader C:/path/to/downloaded_sdk/\n"
|
||||||
<< "https://partner.steamgames.com/downloads/list" << std::endl;
|
"SDK version list available at: https://partner.steamgames.com/downloads/list"
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
void unzip_sdk(const fs::path& zip_file_path, const fs::path& unzip_dir) {
|
void unzip_sdk(const fs::path& zip_file_path, const fs::path& unzip_dir) {
|
||||||
@@ -85,7 +83,7 @@ namespace {
|
|||||||
const auto unzip_dir = steamworks_dir / version;
|
const auto unzip_dir = steamworks_dir / version;
|
||||||
unzip_sdk(zip_file_path, unzip_dir);
|
unzip_sdk(zip_file_path, unzip_dir);
|
||||||
} catch(std::exception& e) {
|
} catch(std::exception& e) {
|
||||||
std::cerr << "Unzip error: " << e.what() << std::endl;
|
LOG_ERROR("Unzip error: {}", e.what());
|
||||||
}
|
}
|
||||||
|
|
||||||
fs::remove(zip_file_path);
|
fs::remove(zip_file_path);
|
||||||
@@ -97,6 +95,8 @@ namespace {
|
|||||||
* for further processing by other tools.
|
* for further processing by other tools.
|
||||||
*/
|
*/
|
||||||
int MAIN(const int argc, const TCHAR* argv[]) { // NOLINT(*-use-internal-linkage)
|
int MAIN(const int argc, const TCHAR* argv[]) { // NOLINT(*-use-internal-linkage)
|
||||||
|
kb::logger::init_console_logger();
|
||||||
|
|
||||||
if(argc == 1) {
|
if(argc == 1) {
|
||||||
print_help();
|
print_help();
|
||||||
return 0;
|
return 0;
|
||||||
|
|||||||
@@ -1,8 +1,5 @@
|
|||||||
#include <chrono>
|
#include <chrono>
|
||||||
#include <deque>
|
|
||||||
#include <filesystem>
|
|
||||||
#include <fstream>
|
#include <fstream>
|
||||||
#include <functional>
|
|
||||||
#include <set>
|
#include <set>
|
||||||
|
|
||||||
#include <BS_thread_pool.hpp>
|
#include <BS_thread_pool.hpp>
|
||||||
@@ -131,7 +128,7 @@ namespace {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Certain Steam macros break C++ AST parser, if left unprocessed.
|
* Certain Steam macros break C++ AST parser, if left unprocessed.
|
||||||
* This function does that in a very naive manner. Stupid, but works.
|
* This function preprocesses them in a very naive manner. Stupid, but works.
|
||||||
*/
|
*/
|
||||||
std::string manually_preprocess_header(const fs::path& header_path) {
|
std::string manually_preprocess_header(const fs::path& header_path) {
|
||||||
const auto header_contents = kb::io::read_file(header_path);
|
const auto header_contents = kb::io::read_file(header_path);
|
||||||
@@ -143,11 +140,7 @@ namespace {
|
|||||||
return processed_contents;
|
return processed_contents;
|
||||||
}
|
}
|
||||||
|
|
||||||
void parse_sdk(
|
void parse_sdk(const fs::path& sdk_path, nlohmann::ordered_json& lookup, BS::thread_pool<>& pool) {
|
||||||
const fs::path& sdk_path,
|
|
||||||
nlohmann::ordered_json& lookup,
|
|
||||||
BS::thread_pool<>& pool
|
|
||||||
) {
|
|
||||||
const auto headers_dir = sdk_path / "headers\\steam";
|
const auto headers_dir = sdk_path / "headers\\steam";
|
||||||
const auto headers_dir_str = kb::path::to_str(headers_dir);
|
const auto headers_dir_str = kb::path::to_str(headers_dir);
|
||||||
|
|
||||||
@@ -161,7 +154,8 @@ namespace {
|
|||||||
// Go over each file in headers directory
|
// Go over each file in headers directory
|
||||||
for(const auto& entry : fs::directory_iterator(headers_dir)) {
|
for(const auto& entry : fs::directory_iterator(headers_dir)) {
|
||||||
if(const auto& header_path = entry.path(); header_path.extension() == ".h") {
|
if(const auto& header_path = entry.path(); header_path.extension() == ".h") {
|
||||||
const auto task = pool.submit_task( // NOLINT(*-unused-local-non-trivial-variable)
|
const auto task = pool.submit_task(
|
||||||
|
// NOLINT(*-unused-local-non-trivial-variable)
|
||||||
[&, header_path] {
|
[&, header_path] {
|
||||||
try {
|
try {
|
||||||
LOG_DEBUG("Parsing header: {}", kb::path::to_str(header_path));
|
LOG_DEBUG("Parsing header: {}", kb::path::to_str(header_path));
|
||||||
@@ -178,11 +172,9 @@ namespace {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void generate_lookup_json(
|
void generate_lookup_json(const fs::path& steamworks_dir, const std::set<std::string>& sdk_filter) {
|
||||||
const fs::path& steamworks_dir,
|
// Ideally the top level lookup should be unordered json (i.e. keys sorted alphabetically).
|
||||||
//
|
// But the library doesn't support inserting ordered_json instances as values in json objects.
|
||||||
const std::set<std::string>& sdk_filter
|
|
||||||
) {
|
|
||||||
nlohmann::ordered_json lookup;
|
nlohmann::ordered_json lookup;
|
||||||
|
|
||||||
// The thread pool noticeably speeds up the overall parsing.
|
// The thread pool noticeably speeds up the overall parsing.
|
||||||
|
|||||||
Reference in New Issue
Block a user