add lui logging

This commit is contained in:
quaK 2022-06-09 03:53:48 +03:00
parent a349d386cb
commit f026440581
4 changed files with 62 additions and 20 deletions

View File

@ -140,7 +140,8 @@ namespace command
bool check_cheats(int client_num) bool check_cheats(int client_num)
{ {
if (!game::Dvar_FindVar("sv_cheats")->current.enabled) const auto sv_cheats = game::Dvar_FindVar("sv_cheats");
if (!sv_cheats || !sv_cheats->current.enabled)
{ {
client_println(client_num, "Cheats are not enabled on this server"); client_println(client_num, "Cheats are not enabled on this server");
return false; return false;

View File

@ -50,14 +50,13 @@ namespace fastfiles
return db_init_load_x_file_hook.invoke<void>(name, offset); return db_init_load_x_file_hook.invoke<void>(name, offset);
} }
void db_load_x_zone_stub(const char* parent_name, unsigned int zone_flags, bool is_base_map, int failure_mode) void db_load_x_zone_stub(const char* parent_name, const unsigned int zone_flags, const bool is_base_map, const int failure_mode)
{ {
console::info("Loading zone %s\n", parent_name); console::info("Loading zone %s\n", parent_name);
return db_load_x_zone_hook.invoke<void>(parent_name, zone_flags, is_base_map, failure_mode); return db_load_x_zone_hook.invoke<void>(parent_name, zone_flags, is_base_map, failure_mode);
} }
game::XAssetHeader db_find_xasset_header_stub(game::XAssetType type, const char* name, int allow_create_default) game::XAssetHeader db_find_xasset_header_stub(game::XAssetType type, const char* name, const int allow_create_default)
{ {
auto result = db_find_xasset_header_hook.invoke<game::XAssetHeader>(type, name, allow_create_default); auto result = db_find_xasset_header_hook.invoke<game::XAssetHeader>(type, name, allow_create_default);
if (!result.data) if (!result.data)

View File

@ -16,9 +16,9 @@ namespace logger
console::info(msg); console::info(msg);
} }
void print(const char* msg, ...) void print_info(const char* msg, ...)
{ {
char buffer[2048]{ 0 }; char buffer[0x1000]{ 0 };
va_list ap; va_list ap;
va_start(ap, msg); va_start(ap, msg);
@ -30,15 +30,49 @@ namespace logger
console::info(buffer); console::info(buffer);
} }
void sys_print_stubs() void print_warn(const char* msg, ...)
{ {
utils::hook::call(0xC6E57A_b, sys_print_stub); // SV_SpawnServer: completed\n char buffer[0x1000]{ 0 };
utils::hook::call(0xC13641_b, sys_print_stub); // SV_CmdsSP_MapRestart: completed\n
utils::hook::jump(0x519772_b, sys_print_stub); // OnlineAutoTest:: Map load success. Server is listen.\n va_list ap;
utils::hook::call(0xB712BA_b, sys_print_stub); // G_SaveError va_start(ap, msg);
vsnprintf_s(buffer, sizeof(buffer), _TRUNCATE, msg, ap);
va_end(ap);
console::warn(buffer);
} }
void r_warn_once_per_frame_print_stub(char* buffer, size_t buffer_length, char* msg, va_list va) void print_error(const char* msg, ...)
{
char buffer[0x1000]{ 0 };
va_list ap;
va_start(ap, msg);
vsnprintf_s(buffer, sizeof(buffer), _TRUNCATE, msg, ap);
va_end(ap);
console::error(buffer);
}
void print_debug(const char* msg, ...)
{
char buffer[0x1000]{ 0 };
va_list ap;
va_start(ap, msg);
vsnprintf_s(buffer, sizeof(buffer), _TRUNCATE, msg, ap);
va_end(ap);
console::debug(buffer);
}
void r_warn_once_per_frame_vsnprintf_stub(char* buffer, size_t buffer_length, char* msg, va_list va)
{ {
vsnprintf(buffer, buffer_length, msg, va); vsnprintf(buffer, buffer_length, msg, va);
console::warn(buffer); console::warn(buffer);
@ -50,17 +84,25 @@ namespace logger
public: public:
void post_unpack() override void post_unpack() override
{ {
sys_print_stubs(); // Sys_Print
utils::hook::call(0xC6E57A_b, sys_print_stub); // SV_SpawnServer: completed\n
utils::hook::call(0xC13641_b, sys_print_stub); // SV_CmdsSP_MapRestart: completed\n
utils::hook::jump(0x519772_b, sys_print_stub); // OnlineAutoTest:: Map load success. Server is listen.\n
utils::hook::call(0xB712BA_b, sys_print_stub); // G_SaveError
// com_printf // Com_Printf
utils::hook::jump(0x343080_b, print); utils::hook::jump(0x343080_b, print_info);
if (!game::environment::is_dedi()) if (!game::environment::is_dedi())
{ {
utils::hook::call(0xE4B121_b, r_warn_once_per_frame_print_stub); // LUI_Interface_DebugPrint
utils::hook::jump(0x61C430_b, print_debug);
// R_WarnOncePerFrame
utils::hook::call(0xE4B121_b, r_warn_once_per_frame_vsnprintf_stub);
} }
} }
}; };
} }
//REGISTER_COMPONENT(logger::component) REGISTER_COMPONENT(logger::component)

View File

@ -9,8 +9,8 @@ namespace game
void load_base_address() void load_base_address()
{ {
const auto module = GetModuleHandle(NULL); const auto module = GetModuleHandleA(0);
base_address = uint64_t(module); base_address = reinterpret_cast<uint64_t>(module);
} }
int Cmd_Argc() int Cmd_Argc()
@ -49,7 +49,7 @@ namespace game
"xanim", "xanim",
"xmodelsurfs", "xmodelsurfs",
"xmodel", "xmodel",
"mayhem", // not confirmed "mayhem",
"material", "material",
"computeshader", "computeshader",
"vertexshader", "vertexshader",