Some fixes
This commit is contained in:
parent
6282e439be
commit
07974ec88a
@ -1,31 +1,20 @@
|
|||||||
#include <std_include.hpp>
|
#include <std_include.hpp>
|
||||||
#include "loader/component_loader.hpp"
|
#include "loader/component_loader.hpp"
|
||||||
|
|
||||||
|
#include "command.hpp"
|
||||||
#include "game_console.hpp"
|
#include "game_console.hpp"
|
||||||
|
|
||||||
#include "game/game.hpp"
|
#include "game/game.hpp"
|
||||||
#include "game/dvars.hpp"
|
#include "game/dvars.hpp"
|
||||||
|
|
||||||
|
#include <utils/thread.hpp>
|
||||||
#include <utils/hook.hpp>
|
#include <utils/hook.hpp>
|
||||||
|
|
||||||
namespace console
|
namespace console
|
||||||
{
|
{
|
||||||
namespace
|
namespace
|
||||||
{
|
{
|
||||||
DWORD WINAPI console(LPVOID)
|
std::thread console_thread;
|
||||||
{
|
|
||||||
ShowWindow(GetConsoleWindow(), SW_SHOW);
|
|
||||||
|
|
||||||
std::string cmd;
|
|
||||||
|
|
||||||
while (true)
|
|
||||||
{
|
|
||||||
std::getline(std::cin, cmd);
|
|
||||||
game_console::execute(cmd.data());
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
class component final : public component_interface
|
class component final : public component_interface
|
||||||
@ -33,7 +22,18 @@ namespace console
|
|||||||
public:
|
public:
|
||||||
void post_unpack() override
|
void post_unpack() override
|
||||||
{
|
{
|
||||||
CreateThread(0, 0, console, 0, 0, 0);
|
ShowWindow(GetConsoleWindow(), SW_SHOW);
|
||||||
|
SetConsoleTitle("H2-Mod");
|
||||||
|
|
||||||
|
console_thread = utils::thread::create_named_thread("Console", []()
|
||||||
|
{
|
||||||
|
std::string cmd;
|
||||||
|
while (true)
|
||||||
|
{
|
||||||
|
std::getline(std::cin, cmd);
|
||||||
|
command::execute(cmd.data(), false);
|
||||||
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -85,7 +85,7 @@ namespace exception
|
|||||||
{
|
{
|
||||||
std::string error_str = utils::string::va("Fatal error (0x%08X) at 0x%p.\n"
|
std::string error_str = utils::string::va("Fatal error (0x%08X) at 0x%p.\n"
|
||||||
"A minidump has been written.\n\n",
|
"A minidump has been written.\n\n",
|
||||||
exception_data.code, (uint64_t)exception_data.address - game::base_address);
|
exception_data.code, exception_data.address);
|
||||||
|
|
||||||
error_str += "Make sure to update your graphics card drivers and install operating system updates!";
|
error_str += "Make sure to update your graphics card drivers and install operating system updates!";
|
||||||
|
|
||||||
@ -157,7 +157,7 @@ namespace exception
|
|||||||
line("Environment: "s + game::environment::get_string());
|
line("Environment: "s + game::environment::get_string());
|
||||||
line("Timestamp: "s + get_timestamp());
|
line("Timestamp: "s + get_timestamp());
|
||||||
line(utils::string::va("Exception: 0x%08X", exceptioninfo->ExceptionRecord->ExceptionCode));
|
line(utils::string::va("Exception: 0x%08X", exceptioninfo->ExceptionRecord->ExceptionCode));
|
||||||
line(utils::string::va("Address: 0x%llX", (uint64_t)exceptioninfo->ExceptionRecord->ExceptionAddress - game::base_address));
|
line(utils::string::va("Address: 0x%llX", exceptioninfo->ExceptionRecord->ExceptionAddress));
|
||||||
line(utils::string::va("Base: 0x%llX", game::base_address));
|
line(utils::string::va("Base: 0x%llX", game::base_address));
|
||||||
|
|
||||||
#pragma warning(push)
|
#pragma warning(push)
|
||||||
|
@ -4,6 +4,7 @@
|
|||||||
#include "scheduler.hpp"
|
#include "scheduler.hpp"
|
||||||
#include "game/game.hpp"
|
#include "game/game.hpp"
|
||||||
|
|
||||||
|
#include <utils/thread.hpp>
|
||||||
#include <utils/hook.hpp>
|
#include <utils/hook.hpp>
|
||||||
#include <utils/concurrency.hpp>
|
#include <utils/concurrency.hpp>
|
||||||
|
|
||||||
@ -163,9 +164,9 @@ namespace scheduler
|
|||||||
class component final : public component_interface
|
class component final : public component_interface
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
void post_unpack() override
|
void post_start() override
|
||||||
{
|
{
|
||||||
thread = std::thread([]()
|
thread = utils::thread::create_named_thread("Async Scheduler", []()
|
||||||
{
|
{
|
||||||
while (!kill)
|
while (!kill)
|
||||||
{
|
{
|
||||||
@ -173,11 +174,23 @@ namespace scheduler
|
|||||||
std::this_thread::sleep_for(10ms);
|
std::this_thread::sleep_for(10ms);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
void post_unpack() override
|
||||||
|
{
|
||||||
r_end_frame_hook.create(game::base_address + 0x76D7B0, scheduler::r_end_frame_stub);
|
r_end_frame_hook.create(game::base_address + 0x76D7B0, scheduler::r_end_frame_stub);
|
||||||
g_run_frame_hook.create(game::base_address + 0x4CB030, scheduler::server_frame_stub);
|
g_run_frame_hook.create(game::base_address + 0x4CB030, scheduler::server_frame_stub);
|
||||||
main_frame_hook.create(game::base_address + 0x417FA0, scheduler::main_frame_stub);
|
main_frame_hook.create(game::base_address + 0x417FA0, scheduler::main_frame_stub);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void pre_destroy() override
|
||||||
|
{
|
||||||
|
kill = true;
|
||||||
|
if (thread.joinable())
|
||||||
|
{
|
||||||
|
thread.join();
|
||||||
|
}
|
||||||
|
}
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user