[Utils] Fix function
This commit is contained in:
parent
fe73bb9827
commit
8ac33260a4
@ -2,7 +2,8 @@
|
||||
|
||||
namespace Components
|
||||
{
|
||||
Dvar::Var Debug::DebugOverlay;
|
||||
const Game::dvar_t* Debug::DebugOverlay;
|
||||
const Game::dvar_t* Debug::BugName;
|
||||
|
||||
Game::dvar_t** Debug::PlayerDebugHealth = reinterpret_cast<Game::dvar_t**>(0x7A9F7C);
|
||||
|
||||
@ -198,7 +199,7 @@ namespace Components
|
||||
|
||||
void Debug::CG_DrawDebugOverlays_Hk(const int localClientNum)
|
||||
{
|
||||
switch (DebugOverlay.get<int>())
|
||||
switch (DebugOverlay->current.integer)
|
||||
{
|
||||
case 2:
|
||||
CG_Debug_DrawPSFlags(localClientNum);
|
||||
@ -218,6 +219,51 @@ namespace Components
|
||||
assert(("a", false));
|
||||
}
|
||||
|
||||
void Debug::Com_Bug_f(Command::Params* params)
|
||||
{
|
||||
char newFileName[0x105]{};
|
||||
char to_ospath[MAX_PATH]{};
|
||||
char from_ospath[MAX_PATH]{};
|
||||
const char* bug;
|
||||
|
||||
if (!*Game::logfile)
|
||||
{
|
||||
Logger::PrintError(Game::CON_CHANNEL_ERROR, "CopyFile failed: logfile wasn't opened\n");
|
||||
}
|
||||
|
||||
if (params->size() == 2)
|
||||
{
|
||||
bug = params->get(1);
|
||||
}
|
||||
else
|
||||
{
|
||||
assert(BugName);
|
||||
bug = BugName->current.string;
|
||||
}
|
||||
|
||||
sprintf_s(newFileName, "%s_%s.log", bug, Game::Live_GetLocalClientName(0));
|
||||
|
||||
Game::Sys_EnterCriticalSection(Game::CRITSECT_CONSOLE);
|
||||
|
||||
if (*Game::logfile)
|
||||
{
|
||||
Game::FS_FCloseFile(reinterpret_cast<int>(*Game::logfile));
|
||||
*Game::logfile = nullptr;
|
||||
}
|
||||
|
||||
Game::FS_BuildOSPath(Game::Sys_DefaultInstallPath(), "", "logs/console_mp.log", from_ospath);
|
||||
Game::FS_BuildOSPath(Game::Sys_DefaultInstallPath(), "", newFileName, to_ospath);
|
||||
const auto result = CopyFileA(from_ospath, to_ospath, 0);
|
||||
Game::Com_OpenLogFile();
|
||||
|
||||
Game::Sys_LeaveCriticalSection(Game::CRITSECT_CONSOLE);
|
||||
|
||||
if (!result)
|
||||
{
|
||||
Logger::PrintError(1, "CopyFile failed({}) {} {}\n", GetLastError(), "console_mp.log", newFileName);
|
||||
}
|
||||
}
|
||||
|
||||
void Debug::CL_InitDebugDvars()
|
||||
{
|
||||
static const char* debugOverlayNames_0[] =
|
||||
@ -233,6 +279,8 @@ namespace Components
|
||||
|
||||
DebugOverlay = Game::Dvar_RegisterEnum("debugOverlay", debugOverlayNames_0, 0,
|
||||
Game::DVAR_NONE, "Toggles the display of various debug info.");
|
||||
BugName = Game::Dvar_RegisterString("bug_name", "bug0",
|
||||
Game::DVAR_CHEAT | Game::DVAR_CODINFO, "Name appended to the copied console log");
|
||||
}
|
||||
|
||||
Debug::Debug()
|
||||
@ -243,5 +291,9 @@ namespace Components
|
||||
Utils::Hook(0x49CB0A, CG_DrawDebugOverlays_Hk, HOOK_JUMP).install()->quick();
|
||||
|
||||
Utils::Hook::Set<void(*)()>(0x60BCEA, Com_Assert_f);
|
||||
|
||||
#ifdef _DEBUG
|
||||
Command::Add("bug", Com_Bug_f);
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
@ -8,7 +8,8 @@ namespace Components
|
||||
Debug();
|
||||
|
||||
private:
|
||||
static Dvar::Var DebugOverlay;
|
||||
static const Game::dvar_t* DebugOverlay;
|
||||
static const Game::dvar_t* BugName;
|
||||
|
||||
// Game dvars
|
||||
static Game::dvar_t** PlayerDebugHealth;
|
||||
@ -32,6 +33,7 @@ namespace Components
|
||||
static void CG_DrawDebugOverlays_Hk(int localClientNum);
|
||||
|
||||
static void Com_Assert_f();
|
||||
static void Com_Bug_f(Command::Params* params);
|
||||
|
||||
static void CL_InitDebugDvars();
|
||||
};
|
||||
|
@ -88,6 +88,7 @@ namespace Game
|
||||
Com_MatchToken_t Com_MatchToken = Com_MatchToken_t(0x447130);
|
||||
Com_SetSlowMotion_t Com_SetSlowMotion = Com_SetSlowMotion_t(0x446E20);
|
||||
Com_Quitf_t Com_Quit_f = Com_Quitf_t(0x4D4000);
|
||||
Com_OpenLogFile_t Com_OpenLogFile = Com_OpenLogFile_t(0x60A8D0);
|
||||
|
||||
Con_DrawMiniConsole_t Con_DrawMiniConsole = Con_DrawMiniConsole_t(0x464F30);
|
||||
Con_DrawSolidConsole_t Con_DrawSolidConsole = Con_DrawSolidConsole_t(0x5A5040);
|
||||
@ -168,6 +169,7 @@ namespace Game
|
||||
FS_BuildPathToFile_t FS_BuildPathToFile = FS_BuildPathToFile_t(0x4702C0);
|
||||
FS_IsShippedIWD_t FS_IsShippedIWD = FS_IsShippedIWD_t(0x642440);
|
||||
FS_Delete_t FS_Delete = FS_Delete_t(0x48A5B0);
|
||||
FS_BuildOSPath_t FS_BuildOSPath = FS_BuildOSPath_t(0x4702C0);
|
||||
|
||||
G_LogPrintf_t G_LogPrintf = G_LogPrintf_t(0x4B0150);
|
||||
G_GetWeaponIndexForName_t G_GetWeaponIndexForName = G_GetWeaponIndexForName_t(0x49E540);
|
||||
@ -256,6 +258,7 @@ namespace Game
|
||||
Live_GetMapIndex_t Live_GetMapIndex = Live_GetMapIndex_t(0x4F6440);
|
||||
Live_GetPrestige_t Live_GetPrestige = Live_GetPrestige_t(0x430F90);
|
||||
Live_GetXp_t Live_GetXp = Live_GetXp_t(0x404C60);
|
||||
Live_GetLocalClientName_t Live_GetLocalClientName = Live_GetLocalClientName_t(0x441FC0);
|
||||
|
||||
LiveStorage_GetStat_t LiveStorage_GetStat = LiveStorage_GetStat_t(0x471F60);
|
||||
|
||||
@ -400,6 +403,9 @@ namespace Game
|
||||
Sys_LockWrite_t Sys_LockWrite = Sys_LockWrite_t(0x435880);
|
||||
Sys_TempPriorityAtLeastNormalBegin_t Sys_TempPriorityAtLeastNormalBegin = Sys_TempPriorityAtLeastNormalBegin_t(0x478680);
|
||||
Sys_TempPriorityEnd_t Sys_TempPriorityEnd = Sys_TempPriorityEnd_t(0x4DCF00);
|
||||
Sys_EnterCriticalSection_t Sys_EnterCriticalSection = Sys_EnterCriticalSection_t(0x4FC200);
|
||||
Sys_LeaveCriticalSection_t Sys_LeaveCriticalSection = Sys_LeaveCriticalSection_t(0x41B8C0);
|
||||
Sys_DefaultInstallPath_t Sys_DefaultInstallPath = Sys_DefaultInstallPath_t(0x4326E0);
|
||||
|
||||
TeleportPlayer_t TeleportPlayer = TeleportPlayer_t(0x496850);
|
||||
|
||||
@ -633,6 +639,8 @@ namespace Game
|
||||
|
||||
char (*sys_exitCmdLine)[1024] = reinterpret_cast<char(*)[1024]>(0x649FB68);
|
||||
|
||||
void** logfile = reinterpret_cast<void**>(0x1AD8F28);
|
||||
|
||||
GamerSettingState* gamerSettings = reinterpret_cast<GamerSettingState*>(0x107D3E8);
|
||||
|
||||
void Sys_LockRead(FastCriticalSection* critSect)
|
||||
|
@ -199,6 +199,9 @@ namespace Game
|
||||
typedef void(__cdecl * Com_Quitf_t)();
|
||||
extern Com_Quitf_t Com_Quit_f;
|
||||
|
||||
typedef void(__cdecl * Com_OpenLogFile_t)();
|
||||
extern Com_OpenLogFile_t Com_OpenLogFile;
|
||||
|
||||
typedef char* (__cdecl * Con_DrawMiniConsole_t)(int localClientNum, int xPos, int yPos, float alpha);
|
||||
extern Con_DrawMiniConsole_t Con_DrawMiniConsole;
|
||||
|
||||
@ -428,6 +431,9 @@ namespace Game
|
||||
typedef int(__cdecl* FS_Delete_t)(const char* fileName);
|
||||
extern FS_Delete_t FS_Delete;
|
||||
|
||||
typedef void(__cdecl * FS_BuildOSPath_t)(const char* base, const char* game, const char* qpath, char* ospath);
|
||||
extern FS_BuildOSPath_t FS_BuildOSPath;
|
||||
|
||||
typedef void(__cdecl * G_LogPrintf_t)(const char* fmt, ...);
|
||||
extern G_LogPrintf_t G_LogPrintf;
|
||||
|
||||
@ -663,6 +669,9 @@ namespace Game
|
||||
typedef int(__cdecl * Live_GetXp_t)(int controllerIndex);
|
||||
extern Live_GetXp_t Live_GetXp;
|
||||
|
||||
typedef const char*(__cdecl * Live_GetLocalClientName_t)(int controllerIndex);
|
||||
extern Live_GetLocalClientName_t Live_GetLocalClientName;
|
||||
|
||||
typedef int(__cdecl * LiveStorage_GetStat_t)(int controllerIndex, int index);
|
||||
extern LiveStorage_GetStat_t LiveStorage_GetStat;
|
||||
|
||||
@ -981,6 +990,15 @@ namespace Game
|
||||
typedef void(__cdecl * Sys_TempPriorityEnd_t)(TempPriority*);
|
||||
extern Sys_TempPriorityEnd_t Sys_TempPriorityEnd;
|
||||
|
||||
typedef void(__cdecl * Sys_EnterCriticalSection_t)(CriticalSection critSect);
|
||||
extern Sys_EnterCriticalSection_t Sys_EnterCriticalSection;
|
||||
|
||||
typedef void(__cdecl * Sys_LeaveCriticalSection_t)(CriticalSection critSect);
|
||||
extern Sys_LeaveCriticalSection_t Sys_LeaveCriticalSection;
|
||||
|
||||
typedef char*(__cdecl * Sys_DefaultInstallPath_t)();
|
||||
extern Sys_DefaultInstallPath_t Sys_DefaultInstallPath;
|
||||
|
||||
typedef void(__cdecl * TeleportPlayer_t)(gentity_t* entity, float* pos, float* orientation);
|
||||
extern TeleportPlayer_t TeleportPlayer;
|
||||
|
||||
@ -1305,6 +1323,8 @@ namespace Game
|
||||
|
||||
extern char (*sys_exitCmdLine)[1024];
|
||||
|
||||
extern void** logfile;
|
||||
|
||||
extern GamerSettingState* gamerSettings;
|
||||
|
||||
void Sys_LockRead(FastCriticalSection* critSect);
|
||||
|
@ -8793,6 +8793,52 @@ namespace Game
|
||||
GfxImage* image[8192];
|
||||
};
|
||||
|
||||
enum CriticalSection
|
||||
{
|
||||
CRITSECT_CONSOLE,
|
||||
CRITSECT_DEBUG_SOCKET,
|
||||
CRITSECT_COM_ERROR,
|
||||
CRITSECT_STATMON,
|
||||
CRITSECT_ALLOC_MARK,
|
||||
CRITSECT_GENERATE_MARK,
|
||||
CRITSECT_STREAMED_SOUND,
|
||||
CRITSECT_FAKELAG,
|
||||
CRITSECT_CLIENT_MESSAGE,
|
||||
CRITSECT_CLIENT_CMD,
|
||||
CRITSECT_DOBJ_ALLOC,
|
||||
CRITSECT_START_SERVER,
|
||||
CRITSECT_XANIM_ALLOC,
|
||||
CRITSECT_KEY_BINDINGS,
|
||||
CRITSECT_FX_VIS,
|
||||
CRITSECT_SERVER_MESSAGE,
|
||||
CRITSECT_SCRIPT_STRING,
|
||||
CRITSECT_RD_BUFFER,
|
||||
CRITSECT_SYS_EVENT_QUEUE,
|
||||
CRITSECT_GPU_FENCE,
|
||||
CRITSECT_FATAL_ERROR,
|
||||
CRITSECT_MISSING_ASSET,
|
||||
CRITSECT_PHYSICS,
|
||||
CRITSECT_LIVE,
|
||||
CRITSECT_AUDIO_PHYSICS,
|
||||
CRITSECT_LSP,
|
||||
CRITSECT_CINEMATIC_UPDATE,
|
||||
CRITSECT_CINEMATIC_TARGET_CHANGE_COMMAND,
|
||||
CRITSECT_CINEMATIC_TARGET_CHANGE_BACKEND,
|
||||
CRITSECT_CINEMATIC_STATUS,
|
||||
CRITSECT_CINEMATIC_SERVER,
|
||||
CRITSECT_FX_ALLOC,
|
||||
CRITSECT_NETTHREAD_OVERRIDE,
|
||||
CRITSECT_CBUF,
|
||||
CRITSECT_STATS_WRITE,
|
||||
CRITSECT_CG_GLASS,
|
||||
CRITSECT_SERVER_DEMO_COMPRESS,
|
||||
CRITSECT_COM_SET_ERROR_MSG,
|
||||
CRITSECT_SOUND_UPDATE,
|
||||
CRITSECT_RESET_MODEL_LIGHTING,
|
||||
|
||||
CRITSECT_COUNT,
|
||||
}; // May be incorrect
|
||||
|
||||
#pragma endregion
|
||||
|
||||
#ifndef IDA
|
||||
|
@ -107,6 +107,15 @@ using namespace std::literals;
|
||||
static_assert(offsetof(x, y) == (offset), \
|
||||
#x "::" #y " is not at the right offset. Must be at " #offset)
|
||||
|
||||
// Helps the optimizer know code such as default label in a switch statement is unreachable.
|
||||
// It may generate less assembly (speed increase) if used properly
|
||||
#define ASSUME(e) ( (assert(0)), __assume(e) )
|
||||
#ifdef NDEBUG
|
||||
#define AssertUnreachable __assume(0)
|
||||
#else
|
||||
#define AssertUnreachable ASSUME(0)
|
||||
#endif
|
||||
|
||||
// Protobuf
|
||||
#include "proto/session.pb.h"
|
||||
#include "proto/party.pb.h"
|
||||
|
@ -22,8 +22,12 @@ namespace Utils::Json
|
||||
return "array";
|
||||
case nlohmann::json::value_t::object:
|
||||
return "object";
|
||||
case nlohmann::json::value_t::binary:
|
||||
return "binary";
|
||||
case nlohmann::json::value_t::discarded:
|
||||
return "discarded";
|
||||
default:
|
||||
return "null";
|
||||
AssertUnreachable;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user