r5sdk/r5dev/include/hooks.h
IcePixelx 17d45a02aa Read description for changes.
* Completely re-wrote the DirectX creation and hooks.
* Using spdlog mostly everywhere now.
* Added prints for when compiled in debug.
* Using LockCursor now to prevent input to the game while in the gui.
* Patched the game to call CMatSystemSurface::LockCursor instead of it calling the inlined version.
* Added rebuild CHostState::FrameUpdate (Not finished yet)
* Added option to print to command prompt again.
* Added log Auto-Clear.
* Added scan for NetChan Encryption Key Pointer.
* Added more error handling when loading gui config.
2021-10-05 00:25:58 +02:00

147 lines
4.8 KiB
C++

#pragma once
#include "patterns.h"
#include "structs.h"
#include "hooks.h"
#include "gameclasses.h"
#include "CCompanion.h"
#include "CGameConsole.h"
inline bool g_bDebugLoading = false;
inline bool g_bReturnAllFalse = false;
inline bool g_bDebugConsole = false;
extern bool g_bBlockInput;
namespace Hooks
{
#pragma region CHLClient
void __fastcall FrameStageNotify(CHLClient* rcx, ClientFrameStage_t curStage);
using FrameStageNotifyFn = void(__fastcall*)(CHLClient*, ClientFrameStage_t);
extern FrameStageNotifyFn originalFrameStageNotify;
#pragma endregion
#pragma region Squirrel
void* SQVM_Print(void* sqvm, char* fmt, ...);
__int64 SQVM_Warning(void* sqvm, int a2, int a3, int* stringSize, void** string);
__int64 SQVM_LoadRson(const char* rson_name);
bool SQVM_LoadScript(void* sqvm, const char* script_path, const char* script_name, int flag);
void SQVM_RegisterOriginFuncs(void* sqvm);
void SQVM_RegisterCreatePlayerTasklist(void* sqvm);
using SQVM_WarningFn = __int64(*)(void*, int, int, int*, void**);
extern SQVM_WarningFn originalSQVM_Warning;
using SQVM_LoadRsonFn = __int64(*)(const char*);
extern SQVM_LoadRsonFn originalSQVM_LoadRson;
using SQVM_LoadScriptFn = bool(*)(void*, const char*, const char*, int);
extern SQVM_LoadScriptFn originalSQVM_LoadScript;
using SQVM_RegisterOriginFuncsFn = void(*)(void*);
extern SQVM_RegisterOriginFuncsFn originalSQVM_RegisterOriginFuncs;
using SQVM_RegisterCreatePlayerTasklistFn = void(*)(void*);
extern SQVM_RegisterCreatePlayerTasklistFn originalSQVM_RegisterCreatePlayerTasklist;
#pragma endregion
#pragma region CServer
void* ConnectClient(void* thisptr, void* packet);
using ConnectClientFn = void* (*)(void*, void*);
extern ConnectClientFn originalConnectClient;
#pragma endregion
#pragma region CVEngineServer
bool IsPersistenceDataAvailable(__int64 thisptr, int client);
using IsPersistenceDataAvailableFn = bool(*)(__int64, int);
extern IsPersistenceDataAvailableFn originalIsPersistenceDataAvailable;
#pragma endregion
#pragma region NetChannel
bool NET_ReceiveDatagram(int sock, void* inpacket, bool raw);
unsigned int NET_SendDatagram(SOCKET s, const char* buf, int len, int flags);
void NET_PrintFunc(const char* fmt, ...);
void NetChan_Shutdown(void* rcx, const char* reason, unsigned __int8 unk1, char unk2);
using NET_PrintFuncFn = void(*)(const char* fmt, ...);
extern NET_PrintFuncFn originalNET_PrintFunc;
using NET_ReceiveDatagramFn = bool(*)(int, void*, bool);
extern NET_ReceiveDatagramFn originalNET_ReceiveDatagram;
using NET_SendDatagramFn = unsigned int(*)(SOCKET, const char*, int, int);
extern NET_SendDatagramFn originalNET_SendDatagram;
using NetChan_ShutDown = void(*)(void*, const char*, unsigned __int8, char);
extern NetChan_ShutDown originalNetChan_ShutDown;
#pragma endregion
#pragma region ConVar
bool ConVar_IsFlagSet(ConVar* cvar, int flag);
bool ConCommand_IsFlagSet(ConCommandBase* cmd, int flag);
using ConVar_IsFlagSetFn = bool(*)(ConVar*, int);
extern ConVar_IsFlagSetFn originalConVar_IsFlagSet;
using ConCommand_IsFlagSetFn = bool(*)(ConCommandBase*, int);
extern ConCommand_IsFlagSetFn originalConCommand_IsFlagSet;
#pragma endregion
#pragma region CMatSystemSurface
void LockCursor(void* thisptr);
using LockCursorFn = void(*)(void*);
extern LockCursorFn originalLockCursor;
#pragma endregion
#pragma region WinAPI
BOOL WINAPI GetCursorPos(LPPOINT lpPoint);
BOOL WINAPI SetCursorPos(int X, int Y);
BOOL WINAPI ClipCursor(const RECT* lpRect);
BOOL WINAPI ShowCursor(BOOL bShow);
using GetCursorPosFn = BOOL(WINAPI*)(LPPOINT);
extern GetCursorPosFn originalGetCursorPos;
using SetCursorPosFn = BOOL(WINAPI*)(int, int);
extern SetCursorPosFn originalSetCursorPos;
using ClipCursorFn = BOOL(WINAPI*)(const RECT*);
extern ClipCursorFn originalClipCursor;
using ShowCursorFn = BOOL(WINAPI*)(BOOL);
extern ShowCursorFn originalShowCursor;
#pragma endregion
#pragma region CBaseFileSystem
void FileSystemWarning(void* thisptr, FileWarningLevel_t level, const char* fmt, ...);
using FileSystemWarningFn = void(*)(void*, FileWarningLevel_t, const char*, ...);
extern FileSystemWarningFn originalFileSystemWarning;
#pragma endregion
#pragma region HostState
void FrameUpdate(void* rcx, void* rdx, float time);
using FrameUpdateFn = void(*)(void*, void*, float);
extern FrameUpdateFn originalFrameUpdate;
#pragma endregion
#pragma region Other
int MSG_EngineError(char* fmt, va_list args);
bool LoadPlaylist(const char* playlist);
using MSG_EngineErrorFn = int(*)(char*, va_list);
extern MSG_EngineErrorFn originalMSG_EngineError;
using LoadPlaylistFn = bool(*)(const char*);
extern LoadPlaylistFn originalLoadPlaylist;
#pragma endregion
void InstallHooks();
void RemoveHooks();
void ToggleNetTrace();
extern bool bToggledNetTrace;
void ToggleDevCommands();
extern bool bToggledDevFlags;
}