Fix console logging for dedis
This commit is contained in:
parent
e107d3fa23
commit
8516718882
@ -9,8 +9,6 @@ namespace game
|
||||
|
||||
Com_Error_t Com_Error;
|
||||
|
||||
Conbuf_AppendText_t Conbuf_AppendText;
|
||||
|
||||
DB_LoadXAssets_t DB_LoadXAssets;
|
||||
|
||||
Dvar_SetFromStringByName_t Dvar_SetFromStringByName;
|
||||
@ -73,6 +71,30 @@ namespace game
|
||||
}
|
||||
}
|
||||
|
||||
__declspec(naked) unsigned int conbuf_append_text_dedicated(const char* message)
|
||||
{
|
||||
static DWORD func = 0x53C790;
|
||||
|
||||
__asm
|
||||
{
|
||||
mov ecx, message
|
||||
call func
|
||||
retn
|
||||
}
|
||||
}
|
||||
|
||||
void Conbuf_AppendText(const char* message)
|
||||
{
|
||||
if(is_dedi())
|
||||
{
|
||||
conbuf_append_text_dedicated(message);
|
||||
}
|
||||
else
|
||||
{
|
||||
reinterpret_cast<void(*)(const char*)>(SELECT_VALUE(0x4C84E0, 0x5CF610, 0))(message);
|
||||
}
|
||||
}
|
||||
|
||||
__declspec(naked) unsigned int find_variable_dedicated(unsigned int parentId, unsigned int name)
|
||||
{
|
||||
static DWORD func = 0x4E7ED0;
|
||||
@ -273,19 +295,29 @@ namespace game
|
||||
|
||||
launcher::mode mode = launcher::mode::none;
|
||||
|
||||
launcher::mode get_mode()
|
||||
{
|
||||
if(mode == launcher::mode::none)
|
||||
{
|
||||
throw std::runtime_error("Launcher mode not valid. Something must be wrong.");
|
||||
}
|
||||
|
||||
return mode;
|
||||
}
|
||||
|
||||
bool is_mp()
|
||||
{
|
||||
return mode == launcher::mode::multiplayer;
|
||||
return get_mode() == launcher::mode::multiplayer;
|
||||
}
|
||||
|
||||
bool is_sp()
|
||||
{
|
||||
return mode == launcher::mode::singleplayer;
|
||||
return get_mode() == launcher::mode::singleplayer;
|
||||
}
|
||||
|
||||
bool is_dedi()
|
||||
{
|
||||
return mode == launcher::mode::server;
|
||||
return get_mode() == launcher::mode::server;
|
||||
}
|
||||
|
||||
void initialize(const launcher::mode _mode)
|
||||
@ -296,8 +328,6 @@ namespace game
|
||||
|
||||
native::Com_Error = native::Com_Error_t(SELECT_VALUE(0x425540, 0x555450, 0x4D93F0));
|
||||
|
||||
native::Conbuf_AppendText = native::Conbuf_AppendText_t(SELECT_VALUE(0x4C84E0, 0x5CF610, 0x53C790));
|
||||
|
||||
native::DB_LoadXAssets = native::DB_LoadXAssets_t(SELECT_VALUE(0x48A8E0, 0x4CD020, 0x44F770));
|
||||
|
||||
native::Dvar_SetFromStringByName = native::Dvar_SetFromStringByName_t(SELECT_VALUE(0x4DD090, 0x5BF740, 0x518DF0));
|
||||
|
@ -17,9 +17,6 @@ namespace game
|
||||
typedef void (*Com_Error_t)(int code, const char* fmt, ...);
|
||||
extern Com_Error_t Com_Error;
|
||||
|
||||
typedef void (*Conbuf_AppendText_t)(const char* message);
|
||||
extern Conbuf_AppendText_t Conbuf_AppendText;
|
||||
|
||||
typedef void (*DB_LoadXAssets_t)(XZoneInfo* zoneInfo, unsigned int zoneCount, int sync);
|
||||
extern DB_LoadXAssets_t DB_LoadXAssets;
|
||||
|
||||
@ -71,6 +68,8 @@ namespace game
|
||||
|
||||
void AddRefToValue(VariableValue* value);
|
||||
|
||||
void Conbuf_AppendText(const char* message);
|
||||
|
||||
unsigned int FindVariable(unsigned int parentId, unsigned int name);
|
||||
|
||||
VariableValue GetEntityFieldValue(unsigned int classnum, int entnum, int offset);
|
||||
|
@ -42,9 +42,10 @@ public:
|
||||
|
||||
void post_load() override
|
||||
{
|
||||
if (game::is_dedi()) return;
|
||||
|
||||
game::native::Sys_ShowConsole();
|
||||
if (!game::is_dedi())
|
||||
{
|
||||
game::native::Sys_ShowConsole();
|
||||
}
|
||||
|
||||
std::lock_guard _(this->mutex_);
|
||||
this->console_initialized_ = true;
|
||||
|
@ -3,6 +3,7 @@
|
||||
#include "utils/string.hpp"
|
||||
#include "game/structs.hpp"
|
||||
#include "game/game.hpp"
|
||||
#include "utils/hook.hpp"
|
||||
|
||||
std::mutex scheduler::mutex_;
|
||||
std::queue<std::pair<std::string, int>> scheduler::errors_;
|
||||
@ -27,6 +28,12 @@ void scheduler::error(const std::string& message, int level)
|
||||
errors_.emplace(message, level);
|
||||
}
|
||||
|
||||
void scheduler::frame_stub()
|
||||
{
|
||||
execute();
|
||||
reinterpret_cast<void(*)()>(SELECT_VALUE(0x458600, 0x556470, 0x4DB070))();
|
||||
}
|
||||
|
||||
__declspec(naked) void scheduler::execute()
|
||||
{
|
||||
__asm
|
||||
@ -80,6 +87,11 @@ bool scheduler::get_next_error(const char** error_message, int* error_level)
|
||||
return true;
|
||||
}
|
||||
|
||||
void scheduler::post_load()
|
||||
{
|
||||
utils::hook(SELECT_VALUE(0x44C7DB, 0x55688E, 0x4DB324), frame_stub, HOOK_CALL).install()->quick();
|
||||
}
|
||||
|
||||
void scheduler::pre_destroy()
|
||||
{
|
||||
std::lock_guard _(mutex_);
|
||||
|
@ -7,10 +7,10 @@ class scheduler final : public module
|
||||
public:
|
||||
static void on_frame(const std::function<void()>& callback);
|
||||
static void once(const std::function<void()>& callback);
|
||||
static void execute();
|
||||
|
||||
static void error(const std::string& message, int level);
|
||||
|
||||
void post_load() override;
|
||||
void pre_destroy() override;
|
||||
|
||||
private:
|
||||
@ -19,6 +19,9 @@ private:
|
||||
static utils::concurrent_list<std::function<void()>> callbacks_;
|
||||
static utils::concurrent_list<std::function<void()>> single_callbacks_;
|
||||
|
||||
static void frame_stub();
|
||||
|
||||
static void execute();
|
||||
static void execute_safe();
|
||||
static void execute_error();
|
||||
static bool get_next_error(const char** error_message, int* error_level);
|
||||
|
@ -136,7 +136,6 @@ namespace steam
|
||||
void SteamAPI_RunCallbacks()
|
||||
{
|
||||
callbacks::run_callbacks();
|
||||
scheduler::execute();
|
||||
}
|
||||
|
||||
void SteamAPI_Shutdown()
|
||||
|
Loading…
Reference in New Issue
Block a user