SP Support
This commit is contained in:
parent
fbf10c69cf
commit
c137827e96
@ -234,9 +234,9 @@ namespace auth
|
|||||||
// Patch steam id bit check
|
// Patch steam id bit check
|
||||||
if (game::environment::is_sp())
|
if (game::environment::is_sp())
|
||||||
{
|
{
|
||||||
utils::hook::jump(0x4FA1B3_b, 0x4FA21A_b);
|
utils::hook::jump(0x4FA1B3_b, 0x4FA21A_b, true);
|
||||||
utils::hook::jump(0x4FB272_b, 0x4FB2B7_b);
|
utils::hook::jump(0x4FB272_b, 0x4FB2B7_b, true);
|
||||||
utils::hook::jump(0x4FB781_b, 0x4FB7D3_b);
|
utils::hook::jump(0x4FB781_b, 0x4FB7D3_b, true);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -173,7 +173,7 @@ namespace colors
|
|||||||
}
|
}
|
||||||
|
|
||||||
// force new colors
|
// force new colors
|
||||||
utils::hook::jump(SELECT_VALUE(0x0, 0x6C9460_b), rb_lookup_color_stub, true);
|
utils::hook::jump(SELECT_VALUE(0x5B17E0_b, 0x6C9460_b), rb_lookup_color_stub, true);
|
||||||
|
|
||||||
// add colors
|
// add colors
|
||||||
add(0, 0, 0); // 0 - Black
|
add(0, 0, 0); // 0 - Black
|
||||||
|
@ -514,11 +514,11 @@ namespace command
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
parse_commandline_hook.create(0x157D50_b, parse_commandline_stub);
|
parse_commandline_hook.create(0x157D50_b, parse_commandline_stub);
|
||||||
utils::hook::jump(0x4E9F40_b, dvar_command_stub, true);
|
|
||||||
|
|
||||||
add_commands_mp();
|
add_commands_mp();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
utils::hook::jump(SELECT_VALUE(0x3A7C80_b, 0x4E9F40_b), dvar_command_stub, true);
|
||||||
|
|
||||||
add_commands_generic();
|
add_commands_generic();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -538,6 +538,11 @@ namespace demonware
|
|||||||
|
|
||||||
void post_load() override
|
void post_load() override
|
||||||
{
|
{
|
||||||
|
if (game::environment::is_sp())
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
server_thread = utils::thread::create_named_thread("Demonware", server_main);
|
server_thread = utils::thread::create_named_thread("Demonware", server_main);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -467,21 +467,25 @@ namespace dvars
|
|||||||
public:
|
public:
|
||||||
void post_unpack() override
|
void post_unpack() override
|
||||||
{
|
{
|
||||||
dvar_register_bool_hook.create(SELECT_VALUE(0x0, 0x182340_b), &dvar_register_bool);
|
dvar_register_bool_hook.create(SELECT_VALUE(0x419220_b, 0x182340_b), &dvar_register_bool);
|
||||||
dvar_register_bool_hashed_hook.create(SELECT_VALUE(0x0, 0x182420_b), &dvar_register_bool_hashed);
|
dvar_register_float_hook.create(SELECT_VALUE(0x4195F0_b, 0x1827F0_b), &dvar_register_float);
|
||||||
dvar_register_float_hook.create(SELECT_VALUE(0x0, 0x1827F0_b), &dvar_register_float);
|
dvar_register_int_hook.create(SELECT_VALUE(0x419700_b, 0x182A10_b), &dvar_register_int);
|
||||||
dvar_register_float_hashed_hook.create(SELECT_VALUE(0x0, 0x182900_b), &dvar_register_float_hashed);
|
dvar_register_string_hook.create(SELECT_VALUE(0x4197E0_b, 0x182BD0_b), &dvar_register_string);
|
||||||
dvar_register_int_hook.create(SELECT_VALUE(0x0, 0x182A10_b), &dvar_register_int);
|
dvar_register_vector2_hook.create(SELECT_VALUE(0x4198C0_b, 0x182CB0_b), &dvar_register_vector2);
|
||||||
dvar_register_int_hashed_hook.create(SELECT_VALUE(0x0, 0x182AF0_b), &dvar_register_int_hashed);
|
dvar_register_vector3_hook.create(SELECT_VALUE(0x419A00_b, 0x182DB0_b), &dvar_register_vector3);
|
||||||
dvar_register_string_hook.create(SELECT_VALUE(0x0, 0x182BD0_b), &dvar_register_string);
|
|
||||||
dvar_register_vector2_hook.create(SELECT_VALUE(0x0, 0x182CB0_b), &dvar_register_vector2);
|
|
||||||
dvar_register_vector3_hook.create(SELECT_VALUE(0x0, 0x182DB0_b), &dvar_register_vector3);
|
|
||||||
|
|
||||||
dvar_set_bool_hook.create(SELECT_VALUE(0x0, 0x185520_b), &dvar_set_bool);
|
if (!game::environment::is_sp())
|
||||||
dvar_set_float_hook.create(SELECT_VALUE(0x0, 0x185AA0_b), &dvar_set_float);
|
{
|
||||||
dvar_set_int_hook.create(SELECT_VALUE(0x0, 0x185D10_b), &dvar_set_int);
|
dvar_register_bool_hashed_hook.create(SELECT_VALUE(0x0, 0x182420_b), &dvar_register_bool_hashed);
|
||||||
dvar_set_string_hook.create(SELECT_VALUE(0x0, 0x186080_b), &dvar_set_string);
|
dvar_register_float_hashed_hook.create(SELECT_VALUE(0x0, 0x182900_b), &dvar_register_float_hashed);
|
||||||
dvar_set_from_string_hook.create(SELECT_VALUE(0x0, 0x185C60_b), &dvar_set_from_string);
|
dvar_register_int_hashed_hook.create(SELECT_VALUE(0x0, 0x182AF0_b), &dvar_register_int_hashed);
|
||||||
|
}
|
||||||
|
|
||||||
|
dvar_set_bool_hook.create(SELECT_VALUE(0x41B820_b, 0x185520_b), &dvar_set_bool);
|
||||||
|
dvar_set_float_hook.create(SELECT_VALUE(0x41BC60_b, 0x185AA0_b), &dvar_set_float);
|
||||||
|
dvar_set_int_hook.create(SELECT_VALUE(0x41BEE0_b, 0x185D10_b), &dvar_set_int);
|
||||||
|
dvar_set_string_hook.create(SELECT_VALUE(0x41C0F0_b, 0x186080_b), &dvar_set_string);
|
||||||
|
dvar_set_from_string_hook.create(SELECT_VALUE(0x41BE20_b, 0x185C60_b), &dvar_set_from_string);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -15,6 +15,8 @@ namespace fps
|
|||||||
{
|
{
|
||||||
namespace
|
namespace
|
||||||
{
|
{
|
||||||
|
utils::hook::detour sub_5D6810_hook;
|
||||||
|
|
||||||
game::dvar_t* cg_drawfps;
|
game::dvar_t* cg_drawfps;
|
||||||
game::dvar_t* cg_drawping;
|
game::dvar_t* cg_drawping;
|
||||||
|
|
||||||
@ -131,6 +133,12 @@ namespace fps
|
|||||||
cg_drawfps = dvars::register_int("cg_drawFps", 0, 0, 2, game::DVAR_FLAG_SAVED, "Draw frames per second");
|
cg_drawfps = dvars::register_int("cg_drawFps", 0, 0, 2, game::DVAR_FLAG_SAVED, "Draw frames per second");
|
||||||
return cg_drawfps;
|
return cg_drawfps;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void sub_5D6810_stub()
|
||||||
|
{
|
||||||
|
perf_update();
|
||||||
|
sub_5D6810_hook.invoke<void>();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
int get_fps()
|
int get_fps()
|
||||||
@ -153,21 +161,32 @@ namespace fps
|
|||||||
// fps setup
|
// fps setup
|
||||||
cg_perf.perf_start = std::chrono::high_resolution_clock::now();
|
cg_perf.perf_start = std::chrono::high_resolution_clock::now();
|
||||||
|
|
||||||
utils::hook::jump(SELECT_VALUE(0, 0x343847_b), utils::hook::assemble([](utils::hook::assembler& a)
|
if (game::environment::is_mp())
|
||||||
{
|
{
|
||||||
a.pushad64();
|
utils::hook::jump(SELECT_VALUE(0, 0x343847_b), utils::hook::assemble([](utils::hook::assembler& a)
|
||||||
a.call_aligned(perf_update);
|
{
|
||||||
a.popad64();
|
a.pushad64();
|
||||||
|
a.call_aligned(perf_update);
|
||||||
|
a.popad64();
|
||||||
|
|
||||||
a.call(0x702250_b);
|
a.call(0x702250_b);
|
||||||
a.mov(edx, 3);
|
a.mov(edx, 3);
|
||||||
a.xor_(ecx, ecx);
|
a.xor_(ecx, ecx);
|
||||||
a.jmp(0x343853_b);
|
a.jmp(0x343853_b);
|
||||||
}), true);
|
}), true);
|
||||||
|
|
||||||
// Don't register cg_drawfps
|
// Don't register cg_drawfps
|
||||||
utils::hook::nop(0x31D74F_b, 0x1C);
|
utils::hook::nop(0x31D74F_b, 0x1C);
|
||||||
utils::hook::nop(0x31D76F_b, 0x7);
|
utils::hook::nop(0x31D76F_b, 0x7);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
sub_5D6810_hook.create(0x5D6810_b, sub_5D6810_stub);
|
||||||
|
|
||||||
|
// Don't register cg_drawfps
|
||||||
|
utils::hook::nop(0x15C97D_b, 0x20);
|
||||||
|
utils::hook::nop(0x15C9A1_b, 0x7);
|
||||||
|
}
|
||||||
|
|
||||||
scheduler::loop(cg_draw_fps, scheduler::pipeline::renderer);
|
scheduler::loop(cg_draw_fps, scheduler::pipeline::renderer);
|
||||||
|
|
||||||
|
@ -207,7 +207,7 @@ namespace logfile
|
|||||||
a.inc(r14);
|
a.inc(r14);
|
||||||
a.mov(dword_ptr(rbp, 0xA4), r15d);
|
a.mov(dword_ptr(rbp, 0xA4), r15d);
|
||||||
|
|
||||||
a.jmp(SELECT_VALUE(0x0, 0x5111B3_b));
|
a.jmp(SELECT_VALUE(0x3CA153_b, 0x5111B3_b));
|
||||||
|
|
||||||
a.bind(replace);
|
a.bind(replace);
|
||||||
|
|
||||||
@ -282,7 +282,7 @@ namespace logfile
|
|||||||
public:
|
public:
|
||||||
void post_unpack() override
|
void post_unpack() override
|
||||||
{
|
{
|
||||||
utils::hook::jump(SELECT_VALUE(0x0, 0x5111A5_b), utils::hook::assemble(vm_execute_stub), true);
|
utils::hook::jump(SELECT_VALUE(0x3CA145_b, 0x5111A5_b), utils::hook::assemble(vm_execute_stub), true);
|
||||||
|
|
||||||
if (game::environment::is_sp())
|
if (game::environment::is_sp())
|
||||||
{
|
{
|
||||||
|
@ -125,6 +125,7 @@ namespace scheduler
|
|||||||
{
|
{
|
||||||
execute(pipeline::lui);
|
execute(pipeline::lui);
|
||||||
}
|
}
|
||||||
|
hks_frame_hook.invoke<bool>();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -194,22 +195,22 @@ namespace scheduler
|
|||||||
|
|
||||||
void post_unpack() override
|
void post_unpack() override
|
||||||
{
|
{
|
||||||
utils::hook::jump(SELECT_VALUE(0, 0x6A6300_b), utils::hook::assemble([](utils::hook::assembler& a)
|
utils::hook::jump(SELECT_VALUE(0x581FB0_b, 0x6A6300_b), utils::hook::assemble([](utils::hook::assembler& a)
|
||||||
{
|
{
|
||||||
a.pushad64();
|
a.pushad64();
|
||||||
a.call_aligned(r_end_frame_stub);
|
a.call_aligned(r_end_frame_stub);
|
||||||
a.popad64();
|
a.popad64();
|
||||||
|
|
||||||
a.sub(rsp, 0x28);
|
a.sub(rsp, 0x28);
|
||||||
a.call(0x6A5C20_b);
|
a.call(SELECT_VALUE(0x581840_b, 0x6A5C20_b));
|
||||||
a.mov(rax, 0xEAB4308_b);
|
a.mov(rax, SELECT_VALUE(0x1182A680_b, 0xEAB4308_b));
|
||||||
a.mov(rax, qword_ptr(rax));
|
a.mov(rax, qword_ptr(rax));
|
||||||
a.jmp(0x6A6310_b);
|
a.jmp(SELECT_VALUE(0x581FC0_b, 0x6A6310_b));
|
||||||
}), true);
|
}), true);
|
||||||
|
|
||||||
g_run_frame_hook.create(SELECT_VALUE(0x0, 0x417940_b), scheduler::server_frame_stub);
|
g_run_frame_hook.create(SELECT_VALUE(0x2992E0_b, 0x417940_b), scheduler::server_frame_stub);
|
||||||
main_frame_hook.create(SELECT_VALUE(0x0, 0x3438B0_b), scheduler::main_frame_stub);
|
main_frame_hook.create(SELECT_VALUE(0x1B1DF0_b, 0x3438B0_b), scheduler::main_frame_stub);
|
||||||
hks_frame_hook.create(SELECT_VALUE(0x0, 0x2792E0_b), scheduler::hks_frame_stub);
|
hks_frame_hook.create(SELECT_VALUE(0x1028D0_b, 0x2792E0_b), scheduler::hks_frame_stub);
|
||||||
}
|
}
|
||||||
|
|
||||||
void pre_destroy() override
|
void pre_destroy() override
|
||||||
|
@ -167,24 +167,24 @@ namespace scripting
|
|||||||
public:
|
public:
|
||||||
void post_unpack() override
|
void post_unpack() override
|
||||||
{
|
{
|
||||||
vm_notify_hook.create(SELECT_VALUE(0x0, 0x514560_b), vm_notify_stub);
|
vm_notify_hook.create(SELECT_VALUE(0x3CD500_b, 0x514560_b), vm_notify_stub);
|
||||||
|
|
||||||
scr_add_class_field_hook.create(SELECT_VALUE(0x0, 0x50AE20_b), scr_add_class_field_stub);
|
scr_add_class_field_hook.create(SELECT_VALUE(0x3C3CE0_b, 0x50AE20_b), scr_add_class_field_stub);
|
||||||
|
|
||||||
scr_set_thread_position_hook.create(SELECT_VALUE(0x0, 0x504870_b), scr_set_thread_position_stub);
|
scr_set_thread_position_hook.create(SELECT_VALUE(0x3BD890_b, 0x504870_b), scr_set_thread_position_stub);
|
||||||
process_script_hook.create(SELECT_VALUE(0x0, 0x50E340_b), process_script_stub);
|
process_script_hook.create(SELECT_VALUE(0x3C7200_b, 0x50E340_b), process_script_stub);
|
||||||
sl_get_canonical_string_hook.create(game::SL_GetCanonicalString, sl_get_canonical_string_stub);
|
sl_get_canonical_string_hook.create(game::SL_GetCanonicalString, sl_get_canonical_string_stub);
|
||||||
|
|
||||||
if (!game::environment::is_sp())
|
if (!game::environment::is_sp())
|
||||||
{
|
{
|
||||||
scr_load_level_hook.create(SELECT_VALUE(0x0, 0x450FC0_b), scr_load_level_stub);
|
scr_load_level_hook.create(0x450FC0_b, scr_load_level_stub);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
vm_execute_hook.create(SELECT_VALUE(0x0, 0x5110E0_b), vm_execute_stub);
|
vm_execute_hook.create(0x3CA080_b, vm_execute_stub);
|
||||||
}
|
}
|
||||||
|
|
||||||
g_shutdown_game_hook.create(SELECT_VALUE(0x0, 0x422F30_b), g_shutdown_game_stub);
|
g_shutdown_game_hook.create(SELECT_VALUE(0x2A5130_b, 0x422F30_b), g_shutdown_game_stub);
|
||||||
|
|
||||||
scheduler::loop([]()
|
scheduler::loop([]()
|
||||||
{
|
{
|
||||||
|
@ -30,9 +30,9 @@ namespace splash
|
|||||||
void post_unpack() override
|
void post_unpack() override
|
||||||
{
|
{
|
||||||
// Disable native splash screen
|
// Disable native splash screen
|
||||||
utils::hook::set<uint8_t>(SELECT_VALUE(0, 0x5BDF20_b), 0xC3);
|
utils::hook::set<uint8_t>(SELECT_VALUE(0x462B90_b, 0x5BDF20_b), 0xC3);
|
||||||
utils::hook::jump(SELECT_VALUE(0, 0x5BE1D0_b), destroy_stub, true);
|
utils::hook::jump(SELECT_VALUE(0x462E40_b, 0x5BE1D0_b), destroy_stub, true);
|
||||||
utils::hook::jump(SELECT_VALUE(0, 0x5BE210_b), destroy_stub, true);
|
utils::hook::jump(SELECT_VALUE(0x462E80_b, 0x5BE210_b), destroy_stub, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
void pre_destroy() override
|
void pre_destroy() override
|
||||||
|
@ -218,7 +218,7 @@ namespace ui_scripting
|
|||||||
|
|
||||||
setup_functions();
|
setup_functions();
|
||||||
|
|
||||||
lua["print"] = function(reinterpret_cast<game::hks::lua_function>(0x209EB0_b));
|
lua["print"] = function(reinterpret_cast<game::hks::lua_function>(SELECT_VALUE(0x93490_b, 0x209EB0_b)));
|
||||||
lua["table"]["unpack"] = lua["unpack"];
|
lua["table"]["unpack"] = lua["unpack"];
|
||||||
lua["luiglobals"] = lua;
|
lua["luiglobals"] = lua;
|
||||||
|
|
||||||
@ -370,22 +370,22 @@ namespace ui_scripting
|
|||||||
|
|
||||||
void post_unpack() override
|
void post_unpack() override
|
||||||
{
|
{
|
||||||
if (!game::environment::is_mp())
|
if (game::environment::is_dedi())
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
db_find_xasset_header_hook.create(game::DB_FindXAssetHeader, db_find_xasset_header_stub);
|
db_find_xasset_header_hook.create(game::DB_FindXAssetHeader, db_find_xasset_header_stub);
|
||||||
hks_load_hook.create(0x22C180_b, hks_load_stub);
|
hks_load_hook.create(SELECT_VALUE(0xB46F0_b, 0x22C180_b), hks_load_stub);
|
||||||
|
|
||||||
hks_package_require_hook.create(0x214040_b, hks_package_require_stub);
|
hks_package_require_hook.create(SELECT_VALUE(0x90070_b, 0x214040_b), hks_package_require_stub);
|
||||||
hks_start_hook.create(0x27A790_b, hks_start_stub);
|
hks_start_hook.create(SELECT_VALUE(0x103C50_b, 0x27A790_b), hks_start_stub);
|
||||||
hks_shutdown_hook.create(0x2707C0_b, hks_shutdown_stub);
|
hks_shutdown_hook.create(SELECT_VALUE(0xFB370_b, 0x2707C0_b), hks_shutdown_stub);
|
||||||
|
|
||||||
command::add("lui_restart", []()
|
command::add("lui_restart", []()
|
||||||
{
|
{
|
||||||
utils::hook::invoke<void>(0x2707C0_b);
|
utils::hook::invoke<void>(SELECT_VALUE(0xFB370_b, 0x2707C0_b));
|
||||||
utils::hook::invoke<void>(0x27BEC0_b);
|
utils::hook::invoke<void>(SELECT_VALUE(0x1052C0_b, 0x27BEC0_b));
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
@ -53,6 +53,18 @@ namespace game
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Cbuf_AddText(int local_client_num, int controller_index, const char* cmd)
|
||||||
|
{
|
||||||
|
if (game::environment::is_sp())
|
||||||
|
{
|
||||||
|
sp::Cbuf_AddText(local_client_num, cmd);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
mp::Cbuf_AddText(local_client_num, controller_index, cmd);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
namespace environment
|
namespace environment
|
||||||
{
|
{
|
||||||
launcher::mode mode = launcher::mode::none;
|
launcher::mode mode = launcher::mode::none;
|
||||||
|
@ -70,6 +70,8 @@ namespace game
|
|||||||
bool VirtualLobby_Loaded();
|
bool VirtualLobby_Loaded();
|
||||||
|
|
||||||
void SV_GameSendServerCommand(int clientNum, svscmd_type type, const char* text);
|
void SV_GameSendServerCommand(int clientNum, svscmd_type type, const char* text);
|
||||||
|
|
||||||
|
void Cbuf_AddText(int local_client_num, int controller_index, const char* cmd);
|
||||||
}
|
}
|
||||||
|
|
||||||
uintptr_t operator"" _b(const uintptr_t ptr);
|
uintptr_t operator"" _b(const uintptr_t ptr);
|
||||||
|
@ -59,8 +59,8 @@ namespace scripting
|
|||||||
|
|
||||||
script_function get_function_by_index(const unsigned index)
|
script_function get_function_by_index(const unsigned index)
|
||||||
{
|
{
|
||||||
static const auto function_table = SELECT_VALUE(0x14B1D1B90, 0xAC83820_b);
|
static const auto function_table = SELECT_VALUE(0xB8CC510_b, 0xAC83820_b);
|
||||||
static const auto method_table = SELECT_VALUE(0x14B1D33A0, 0xAC85070_b);
|
static const auto method_table = SELECT_VALUE(0xB8CDD60_b, 0xAC85070_b);
|
||||||
|
|
||||||
if (index < 0x30A)
|
if (index < 0x30A)
|
||||||
{
|
{
|
||||||
|
@ -13,14 +13,23 @@ namespace game
|
|||||||
WEAK symbol<void(unsigned int id)> AddRefToObject{0x3C1F40, 0x5090D0};
|
WEAK symbol<void(unsigned int id)> AddRefToObject{0x3C1F40, 0x5090D0};
|
||||||
WEAK symbol<void(unsigned int id)> RemoveRefToObject{0x3C3950, 0x50AAE0};
|
WEAK symbol<void(unsigned int id)> RemoveRefToObject{0x3C3950, 0x50AAE0};
|
||||||
WEAK symbol<unsigned int(unsigned int id)> AllocThread{0x3C22B0, 0x509440};
|
WEAK symbol<unsigned int(unsigned int id)> AllocThread{0x3C22B0, 0x509440};
|
||||||
WEAK symbol<ObjectVariableValue*(unsigned int* id)> AllocVariable{0x0, 0x0};
|
WEAK symbol<ObjectVariableValue*(unsigned int* id)> AllocVariable{0x3C2310, 0x5094A0};
|
||||||
|
|
||||||
|
namespace sp
|
||||||
|
{
|
||||||
|
WEAK symbol<void(int localClientNum, const char* text)> Cbuf_AddText{0x3764A0, 0x0};
|
||||||
|
}
|
||||||
|
|
||||||
|
namespace mp
|
||||||
|
{
|
||||||
|
WEAK symbol<void(int localClientNum, int controllerIndex, const char* text)> Cbuf_AddText{0x0, 0x1CF480};
|
||||||
|
}
|
||||||
|
|
||||||
WEAK symbol<void(int localClientNum, int controllerIndex, const char* text)> Cbuf_AddText{0x3764A0, 0x1CF480};
|
|
||||||
WEAK symbol<void(int localClientNum, int controllerIndex, const char* buffer,
|
WEAK symbol<void(int localClientNum, int controllerIndex, const char* buffer,
|
||||||
void (int, int, const char*))> Cbuf_ExecuteBufferInternal{0x3765B0, 0x155BC0};
|
void (int, int, const char*))> Cbuf_ExecuteBufferInternal{0x3765B0, 0x155BC0};
|
||||||
WEAK symbol<void(const char* message)> Conbuf_AppendText{0x0, 0x0};
|
WEAK symbol<void(const char* message)> Conbuf_AppendText{0x0, 0x0};
|
||||||
WEAK symbol<char*(int start)> ConcatArgs{0x296420, 0x413050};
|
WEAK symbol<char*(int start)> ConcatArgs{0x296420, 0x413050};
|
||||||
WEAK symbol<void(int localClientNum, int controllerIndex, const char* text)> Cmd_ExecuteSingleCommand{0x0, 0x156E90};
|
WEAK symbol<void(int localClientNum, int controllerIndex, const char* text)> Cmd_ExecuteSingleCommand{0x376FF0, 0x156E90};
|
||||||
WEAK symbol<void(const char* cmdName, void(), cmd_function_s* allocedCmd)> Cmd_AddCommandInternal{0x376A40, 0x156880};
|
WEAK symbol<void(const char* cmdName, void(), cmd_function_s* allocedCmd)> Cmd_AddCommandInternal{0x376A40, 0x156880};
|
||||||
WEAK symbol<void(const char*)> Cmd_RemoveCommand{0x377670, 0x157690};
|
WEAK symbol<void(const char*)> Cmd_RemoveCommand{0x377670, 0x157690};
|
||||||
WEAK symbol<void(const char* text_in)> Cmd_TokenizeString{0x377790, 0x0}; // not a function
|
WEAK symbol<void(const char* text_in)> Cmd_TokenizeString{0x377790, 0x0}; // not a function
|
||||||
@ -48,7 +57,7 @@ namespace game
|
|||||||
WEAK symbol<char*(const unsigned int weapon,
|
WEAK symbol<char*(const unsigned int weapon,
|
||||||
bool isAlternate, char* outputBuffer, int bufferLen)> CG_GetWeaponDisplayName{0x0, 0x0};
|
bool isAlternate, char* outputBuffer, int bufferLen)> CG_GetWeaponDisplayName{0x0, 0x0};
|
||||||
|
|
||||||
WEAK symbol<bool()> CL_IsCgameInitialized{0x0, 0x33C640};
|
WEAK symbol<bool()> CL_IsCgameInitialized{0x1A3210, 0x33C640};
|
||||||
WEAK symbol<void(int a1)> CL_VirtualLobbyShutdown{0x0, 0x0};
|
WEAK symbol<void(int a1)> CL_VirtualLobbyShutdown{0x0, 0x0};
|
||||||
|
|
||||||
WEAK symbol<void(int hash, const char* name, const char* buffer)> Dvar_SetCommand{0x41BAD0, 0x1857D0};
|
WEAK symbol<void(int hash, const char* name, const char* buffer)> Dvar_SetCommand{0x41BAD0, 0x1857D0};
|
||||||
@ -61,116 +70,115 @@ namespace game
|
|||||||
DvarSetSource)> Dvar_SetFromStringByNameFromSource{0x41BD90, 0x185BD0};
|
DvarSetSource)> Dvar_SetFromStringByNameFromSource{0x41BD90, 0x185BD0};
|
||||||
|
|
||||||
WEAK symbol<dvar_t*(int hash, const char* name, bool value,
|
WEAK symbol<dvar_t*(int hash, const char* name, bool value,
|
||||||
unsigned int flags)> Dvar_RegisterBool{0x0, 0x182340};
|
unsigned int flags)> Dvar_RegisterBool{0x419220, 0x182340};
|
||||||
WEAK symbol<dvar_t*(int hash, const char* name, int value, int min, int max,
|
WEAK symbol<dvar_t*(int hash, const char* name, int value, int min, int max,
|
||||||
unsigned int flags)> Dvar_RegisterInt{0x0, 0x182A10};
|
unsigned int flags)> Dvar_RegisterInt{0x419700, 0x182A10};
|
||||||
WEAK symbol<dvar_t*(int hash, const char* dvarName, float value, float min,
|
WEAK symbol<dvar_t*(int hash, const char* dvarName, float value, float min,
|
||||||
float max, unsigned int flags)> Dvar_RegisterFloat{0x0, 0x1827F0};
|
float max, unsigned int flags)> Dvar_RegisterFloat{0x4195F0, 0x1827F0};
|
||||||
WEAK symbol<dvar_t*(int hash, const char* dvarName, float value, float min,
|
WEAK symbol<dvar_t*(int hash, const char* dvarName, float value, float min,
|
||||||
float max, unsigned int flags)> Dvar_RegisterFloatHashed{0x0, 0x182900};
|
float max, unsigned int flags)> Dvar_RegisterFloatHashed{0x0, 0x182900};
|
||||||
WEAK symbol<dvar_t*(int hash, const char* dvarName, const char* value,
|
WEAK symbol<dvar_t*(int hash, const char* dvarName, const char* value,
|
||||||
unsigned int flags)> Dvar_RegisterString{0x0, 0x182BD0};
|
unsigned int flags)> Dvar_RegisterString{0x4197E0, 0x182BD0};
|
||||||
WEAK symbol<dvar_t*(int dvarName, const char* a2, float x, float y, float z,
|
WEAK symbol<dvar_t*(int dvarName, const char* a2, float x, float y, float z,
|
||||||
float w, float min, float max, unsigned int flags)> Dvar_RegisterVec4{0x0, 0x183010};
|
float w, float min, float max, unsigned int flags)> Dvar_RegisterVec4{0x419C60, 0x183010};
|
||||||
|
|
||||||
WEAK symbol<long long(const char* qpath, char** buffer)> FS_ReadFile{0x0, 0x1EC690};
|
WEAK symbol<long long(const char* qpath, char** buffer)> FS_ReadFile{0x40E280, 0x1EC690};
|
||||||
WEAK symbol<void(void* buffer)> FS_FreeFile{0x0, 0x59E2F0};
|
WEAK symbol<void(void* buffer)> FS_FreeFile{0x40E270, 0x59E2F0};
|
||||||
WEAK symbol<void(const char* gameName)> FS_Startup{0x0, 0x0};
|
WEAK symbol<void(const char* gameName)> FS_Startup{0x40D890, 0x0};
|
||||||
WEAK symbol<void(const char* path, const char* dir)> FS_AddLocalizedGameDirectory{0x0, 0x1878F0};
|
WEAK symbol<void(const char* path, const char* dir)> FS_AddLocalizedGameDirectory{0x40B1E0, 0x1878F0};
|
||||||
|
|
||||||
WEAK symbol<unsigned int(unsigned int, unsigned int)> GetVariable{0x0, 0x50A8D0};
|
WEAK symbol<unsigned int(unsigned int, unsigned int)> GetVariable{0x3C3740, 0x50A8D0};
|
||||||
WEAK symbol<unsigned int(unsigned int parentId, unsigned int unsignedValue)> GetNewVariable{0x0, 0x50A4F0};
|
WEAK symbol<unsigned int(unsigned int parentId, unsigned int unsignedValue)> GetNewVariable{0x3C3360, 0x50A4F0};
|
||||||
WEAK symbol<unsigned int(unsigned int parentId, unsigned int unsignedValue)> GetNewArrayVariable{0x0, 0x50A370};
|
WEAK symbol<unsigned int(unsigned int parentId, unsigned int unsignedValue)> GetNewArrayVariable{0x3C31E0, 0x50A370};
|
||||||
WEAK symbol<void()> GScr_LoadConsts{0x0, 0x468F40};
|
WEAK symbol<unsigned int(unsigned int parentId, unsigned int name)> FindVariable{0x3C2E00, 0x509F90};
|
||||||
WEAK symbol<unsigned int(unsigned int parentId, unsigned int name)> FindVariable{0x0, 0x509F90};
|
WEAK symbol<unsigned int(int entnum, unsigned int classnum)> FindEntityId{0x3C2D00, 0x509E90};
|
||||||
WEAK symbol<unsigned int(int entnum, unsigned int classnum)> FindEntityId{0x0, 0x509E90};
|
WEAK symbol<void(unsigned int parentId, unsigned int index)> RemoveVariableValue{0x3C3B00, 0x50AC90};
|
||||||
WEAK symbol<void(unsigned int parentId, unsigned int index)> RemoveVariableValue{0x0, 0x50AC90};
|
|
||||||
WEAK symbol<void(VariableValue* result, unsigned int classnum,
|
WEAK symbol<void(VariableValue* result, unsigned int classnum,
|
||||||
int entnum, int offset)> GetEntityFieldValue{0x0, 0x50E2E0};
|
int entnum, int offset)> GetEntityFieldValue{0x3C71A0, 0x50E2E0};
|
||||||
|
|
||||||
WEAK symbol<int(const char* fname)> generateHashValue{0x0, 0x183F80};
|
WEAK symbol<int(const char* fname)> generateHashValue{0x11FEA0, 0x183F80};
|
||||||
|
|
||||||
WEAK symbol<void()> G_Glass_Update{0x0, 0x417940};
|
WEAK symbol<void()> G_Glass_Update{0x2992E0, 0x417940};
|
||||||
WEAK symbol<int(int clientNum)> G_GetClientScore{0x0, 0x0};
|
WEAK symbol<int(int clientNum)> G_GetClientScore{0x0, 0x0};
|
||||||
WEAK symbol<unsigned int(const char* name)> G_GetWeaponForName{0x0, 0x461180};
|
WEAK symbol<unsigned int(const char* name)> G_GetWeaponForName{0x4B18D0, 0x461180};
|
||||||
WEAK symbol<int(playerState_s* ps, unsigned int weapon, int dualWield,
|
WEAK symbol<int(playerState_s* ps, unsigned int weapon, int dualWield,
|
||||||
int startInAltMode, int, int, int, char, ...)> G_GivePlayerWeapon{0x0, 0x461600};
|
int startInAltMode, int, int, int, char, ...)> G_GivePlayerWeapon{0x2F24F0, 0x461600};
|
||||||
WEAK symbol<void(playerState_s* ps, unsigned int weapon, int hadWeapon)> G_InitializeAmmo{0x0, 0x41C170};
|
WEAK symbol<void(playerState_s* ps, unsigned int weapon, int hadWeapon)> G_InitializeAmmo{0x0, 0x41C170};
|
||||||
WEAK symbol<void(int clientNum, unsigned int weapon)> G_SelectWeapon{0x0, 0x462560};
|
WEAK symbol<void(int clientNum, unsigned int weapon)> G_SelectWeapon{0x0, 0x462560};
|
||||||
WEAK symbol<int(playerState_s* ps, unsigned int weapon)> G_TakePlayerWeapon{0x0, 0x462770};
|
WEAK symbol<int(playerState_s* ps, unsigned int weapon)> G_TakePlayerWeapon{0x2F3050, 0x462770};
|
||||||
|
|
||||||
WEAK symbol<char*(char* string)> I_CleanStr{0x0, 0x5AF2E0};
|
WEAK symbol<char*(char* string)> I_CleanStr{0x4293E0, 0x5AF2E0};
|
||||||
|
|
||||||
WEAK symbol<const char*(int, int, int)> Key_KeynumToString{0x0, 0x199990};
|
WEAK symbol<const char*(int, int, int)> Key_KeynumToString{0x1AC410, 0x199990};
|
||||||
|
|
||||||
WEAK symbol<unsigned int(int)> Live_SyncOnlineDataFlags{0x0, 0x1A5C10};
|
WEAK symbol<unsigned int(int)> Live_SyncOnlineDataFlags{0x0, 0x1A5C10};
|
||||||
|
|
||||||
WEAK symbol<Material*(const char* material)> Material_RegisterHandle{0x0, 0x692360};
|
WEAK symbol<Material*(const char* material)> Material_RegisterHandle{0x56EA20, 0x692360};
|
||||||
|
|
||||||
WEAK symbol<void(netadr_s*, sockaddr*)> NetadrToSockadr{0x0, 0x59E580};
|
WEAK symbol<void(netadr_s*, sockaddr*)> NetadrToSockadr{0x416580, 0x59E580};
|
||||||
WEAK symbol<void(netsrc_t, netadr_s*, const char*)> NET_OutOfBandPrint{0x0, 0x4F1EB0};
|
WEAK symbol<void(netsrc_t, netadr_s*, const char*)> NET_OutOfBandPrint{0x3AA550, 0x4F1EB0};
|
||||||
WEAK symbol<void(netsrc_t sock, int length, const void* data, const netadr_s* to)> NET_SendLoopPacket{0x0, 0x4F2070};
|
WEAK symbol<void(netsrc_t sock, int length, const void* data, const netadr_s* to)> NET_SendLoopPacket{0x0, 0x4F2070};
|
||||||
WEAK symbol<bool(const char* s, netadr_s* a)> NET_StringToAdr{0x0, 0x4F2150};
|
WEAK symbol<bool(const char* s, netadr_s* a)> NET_StringToAdr{0x0, 0x4F2150};
|
||||||
|
|
||||||
WEAK symbol<void(float x, float y, float width, float height, float s0, float t0, float s1, float t1,
|
WEAK symbol<void(float x, float y, float width, float height, float s0, float t0, float s1, float t1,
|
||||||
float* color, Material* material)> R_AddCmdDrawStretchPic{0x0, 0x33B2B0};
|
float* color, Material* material)> R_AddCmdDrawStretchPic{0x1A29A0, 0x33B2B0};
|
||||||
WEAK symbol<Font_s*(const char* font, int size)> R_RegisterFont{0x55C4E0, 0x67F630};
|
WEAK symbol<Font_s*(const char* font, int size)> R_RegisterFont{0x55C4E0, 0x67F630};
|
||||||
WEAK symbol<int(const char* text, int maxChars, Font_s* font)> R_TextWidth{0x0, 0x67F8F0};
|
WEAK symbol<int(const char* text, int maxChars, Font_s* font)> R_TextWidth{0x55C7A0, 0x67F8F0};
|
||||||
WEAK symbol<int(void* font)> R_GetFontHeight{0x0, 0x67F710};
|
WEAK symbol<int(void* font)> R_GetFontHeight{0x55C5C0, 0x67F710};
|
||||||
WEAK symbol<void*(int a1)> R_DrawSomething{0x0, 0x67ECE0};
|
WEAK symbol<void*(int a1)> R_GetSomething{0x55BB90, 0x67ECE0};
|
||||||
WEAK symbol<void()> R_SyncRenderThread{0x0, 0x0};
|
WEAK symbol<void()> R_SyncRenderThread{0x0, 0x0};
|
||||||
WEAK symbol<void*(const char* text, int maxChars, void* font, int fontHeight, float x,
|
WEAK symbol<void*(const char* text, int maxChars, void* font, int fontHeight, float x,
|
||||||
float y, float xScale, float yScale, float rotation, float* color,
|
float y, float xScale, float yScale, float rotation, float* color,
|
||||||
int style, int cursor_pos, char cursor_char,
|
int style, int cursor_pos, char cursor_char,
|
||||||
void* style_unk)> H1_AddBaseDrawTextCmd{0x0, 0x6A3080};
|
void* style_unk)> H1_AddBaseDrawTextCmd{0x57EA60, 0x6A3080};
|
||||||
|
|
||||||
#define R_AddCmdDrawText(TXT, MC, F, X, Y, XS, YS, R, C, S) \
|
#define R_AddCmdDrawText(TXT, MC, F, X, Y, XS, YS, R, C, S) \
|
||||||
H1_AddBaseDrawTextCmd(TXT, MC, F, game::R_GetFontHeight(F), X, Y, XS, YS, R, C, S,-1, 0, game::R_DrawSomething(S))
|
H1_AddBaseDrawTextCmd(TXT, MC, F, game::R_GetFontHeight(F), X, Y, XS, YS, R, C, S, -1, 0, game::R_GetSomething(S))
|
||||||
#define R_AddCmdDrawTextWithCursor(TXT, MC, F, UNK, X, Y, XS, YS, R, C, S, CP, CC) \
|
#define R_AddCmdDrawTextWithCursor(TXT, MC, F, UNK, X, Y, XS, YS, R, C, S, CP, CC) \
|
||||||
H1_AddBaseDrawTextCmd(TXT, MC, F, game::R_GetFontHeight(F), X, Y, XS, YS, R, C, S, CP, CC, game::R_DrawSomething(S))
|
H1_AddBaseDrawTextCmd(TXT, MC, F, game::R_GetFontHeight(F), X, Y, XS, YS, R, C, S, CP, CC, game::R_GetSomething(S))
|
||||||
|
|
||||||
WEAK symbol<char* (GfxImage* image, uint32_t width, uint32_t height, uint32_t depth, uint32_t mipCount,
|
WEAK symbol<char* (GfxImage* image, uint32_t width, uint32_t height, uint32_t depth, uint32_t mipCount,
|
||||||
uint32_t imageFlags, DXGI_FORMAT imageFormat, const char* name, const D3D11_SUBRESOURCE_DATA* initData)> Image_Setup{0x0, 0x0};
|
uint32_t imageFlags, DXGI_FORMAT imageFormat, const char* name, const D3D11_SUBRESOURCE_DATA* initData)> Image_Setup{0x0, 0x0};
|
||||||
|
|
||||||
WEAK symbol<unsigned int(unsigned int localId, const char* pos,
|
WEAK symbol<unsigned int(unsigned int localId, const char* pos,
|
||||||
unsigned int paramcount)> VM_Execute{0x0, 0x510EB0};
|
unsigned int paramcount)> VM_Execute{0x3C9E50, 0x510EB0};
|
||||||
|
|
||||||
WEAK symbol<void(unsigned int id, scr_string_t stringValue,
|
WEAK symbol<void(unsigned int id, scr_string_t stringValue,
|
||||||
unsigned int paramcount)> Scr_NotifyId{0x0, 0x510340};
|
unsigned int paramcount)> Scr_NotifyId{0x3C92E0, 0x510340};
|
||||||
WEAK symbol<const float*(const float* v)> Scr_AllocVector{0x0, 0x50B330};
|
WEAK symbol<const float*(const float* v)> Scr_AllocVector{0x3C42D0, 0x50B330};
|
||||||
WEAK symbol<float(int index)> Scr_GetFloat{0x0, 0x50F870};
|
WEAK symbol<float(int index)> Scr_GetFloat{0x3C87D0, 0x50F870};
|
||||||
WEAK symbol<const char*(int index)> Scr_GetString{0x0, 0x50FCB0};
|
WEAK symbol<const char*(int index)> Scr_GetString{0x3C8CC0, 0x50FCB0};
|
||||||
WEAK symbol<int()> Scr_GetNumParam{0x0, 0x50F9D0};
|
WEAK symbol<int()> Scr_GetNumParam{0x0, 0x50F9D0};
|
||||||
WEAK symbol<void()> Scr_ClearOutParams{0x0, 0x50F070};
|
WEAK symbol<void()> Scr_ClearOutParams{0x3C7EF0, 0x50F070};
|
||||||
WEAK symbol<scr_entref_t(unsigned int entId)> Scr_GetEntityIdRef{0x0, 0x50D8E0};
|
WEAK symbol<scr_entref_t(unsigned int entId)> Scr_GetEntityIdRef{0x3C6760, 0x50D8E0};
|
||||||
WEAK symbol<unsigned int(int classnum, unsigned int entnum)> Scr_GetEntityId{0x0, 0x50D830};
|
WEAK symbol<unsigned int(int classnum, unsigned int entnum)> Scr_GetEntityId{0x3C66B0, 0x50D830};
|
||||||
WEAK symbol<int(unsigned int classnum, int entnum, int offset)> Scr_SetObjectField{0x0, 0x459CD0};
|
WEAK symbol<int(unsigned int classnum, int entnum, int offset)> Scr_SetObjectField{0x2E8FC0, 0x459CD0};
|
||||||
|
|
||||||
WEAK symbol<ScreenPlacement*()> ScrPlace_GetViewPlacement{0x0, 0x362840};
|
WEAK symbol<ScreenPlacement*()> ScrPlace_GetViewPlacement{0x1BCED0, 0x362840};
|
||||||
|
|
||||||
WEAK symbol<void(XAssetType type, void(__cdecl* func)(XAssetHeader, void*), const void* inData, bool includeOverride)>
|
WEAK symbol<void(XAssetType type, void(__cdecl* func)(XAssetHeader, void*), const void* inData, bool includeOverride)>
|
||||||
DB_EnumXAssets_Internal{0x0, 0x394C60};
|
DB_EnumXAssets_Internal{0x1F0BF0, 0x394C60};
|
||||||
WEAK symbol<const char*(const XAsset* asset)> DB_GetXAssetName{0x0, 0x366140};
|
WEAK symbol<const char*(const XAsset* asset)> DB_GetXAssetName{0x0, 0x366140};
|
||||||
WEAK symbol<int(XAssetType type)> DB_GetXAssetTypeSize{0x0, 0x0};
|
WEAK symbol<int(XAssetType type)> DB_GetXAssetTypeSize{0x0, 0x0};
|
||||||
WEAK symbol<XAssetHeader(XAssetType type, const char* name,
|
WEAK symbol<XAssetHeader(XAssetType type, const char* name,
|
||||||
int createDefault)> DB_FindXAssetHeader{0x0, 0x3950C0};
|
int createDefault)> DB_FindXAssetHeader{0x1F1120, 0x3950C0};
|
||||||
|
|
||||||
WEAK symbol<void(int clientNum, const char* menu,
|
WEAK symbol<void(int clientNum, const char* menu,
|
||||||
int a3, int a4, unsigned int a5)> LUI_OpenMenu{0x0, 0x1E1210};
|
int a3, int a4, unsigned int a5)> LUI_OpenMenu{0x3F20A0, 0x1E1210};
|
||||||
WEAK symbol<void()> LUI_EnterCriticalSection{0x0, 0x2669B0};
|
WEAK symbol<void()> LUI_EnterCriticalSection{0xF19A0, 0x2669B0};
|
||||||
WEAK symbol<void()> LUI_LeaveCriticalSection{0x0, 0x26BDC0};
|
WEAK symbol<void()> LUI_LeaveCriticalSection{0xF6C40, 0x26BDC0};
|
||||||
|
|
||||||
WEAK symbol<bool(int clientNum, const char* menu)> Menu_IsMenuOpenAndVisible{0x0, 0x389F70};
|
WEAK symbol<bool(int clientNum, const char* menu)> Menu_IsMenuOpenAndVisible{0x4F43C0, 0x389F70};
|
||||||
|
|
||||||
WEAK symbol<scr_string_t(const char* str)> SL_FindString{0x0, 0x507FD0};
|
WEAK symbol<scr_string_t(const char* str)> SL_FindString{0x3C0F50, 0x507FD0};
|
||||||
WEAK symbol<scr_string_t(const char* str, unsigned int user)> SL_GetString{0x0, 0x5083A0};
|
WEAK symbol<scr_string_t(const char* str, unsigned int user)> SL_GetString{0x3C1210, 0x5083A0};
|
||||||
WEAK symbol<const char*(scr_string_t stringValue)> SL_ConvertToString{0x0, 0x507CD0};
|
WEAK symbol<const char*(scr_string_t stringValue)> SL_ConvertToString{0x3C0C50, 0x507CD0};
|
||||||
WEAK symbol<unsigned int(const char* str)> SL_GetCanonicalString{0x0, 0x504A00};
|
WEAK symbol<unsigned int(const char* str)> SL_GetCanonicalString{0x3BDA20, 0x504A00};
|
||||||
|
|
||||||
WEAK symbol<void(netadr_s* from)> SV_DirectConnect{0x0, 0x54DBF0};
|
WEAK symbol<void(netadr_s* from)> SV_DirectConnect{0x0, 0x54DBF0};
|
||||||
WEAK symbol<void(int arg, char* buffer, int bufferLength)> SV_Cmd_ArgvBuffer{0x0, 0x1CAC60};
|
WEAK symbol<void(int arg, char* buffer, int bufferLength)> SV_Cmd_ArgvBuffer{0x377D40, 0x1CAC60};
|
||||||
WEAK symbol<void(const char* text_in)> SV_Cmd_TokenizeString{0x0, 0x1CACE0};
|
WEAK symbol<void(const char* text_in)> SV_Cmd_TokenizeString{0x377DC0, 0x1CACE0};
|
||||||
WEAK symbol<void()> SV_Cmd_EndTokenizedString{0x0, 0x1CACA0};
|
WEAK symbol<void()> SV_Cmd_EndTokenizedString{0x377D80, 0x1CACA0};
|
||||||
|
|
||||||
WEAK symbol<mp::gentity_s*(const char* name)> SV_AddBot{0x0, 0x54D4F0};
|
WEAK symbol<mp::gentity_s*(const char* name)> SV_AddBot{0x0, 0x54D4F0};
|
||||||
WEAK symbol<bool(int clientNum)> SV_BotIsBot{0x0, 0x53B6D0};
|
WEAK symbol<bool(int clientNum)> SV_BotIsBot{0x0, 0x53B6D0};
|
||||||
@ -191,59 +199,58 @@ namespace game
|
|||||||
WEAK symbol<void()> Sys_ShowConsole{0x0, 0x0};
|
WEAK symbol<void()> Sys_ShowConsole{0x0, 0x0};
|
||||||
WEAK symbol<void(const char* error, ...)> Sys_Error{0x0, 0x0};
|
WEAK symbol<void(const char* error, ...)> Sys_Error{0x0, 0x0};
|
||||||
WEAK symbol<void(char* path, int pathSize, Sys_Folder folder, const char* filename, const char* ext)>
|
WEAK symbol<void(char* path, int pathSize, Sys_Folder folder, const char* filename, const char* ext)>
|
||||||
Sys_BuildAbsPath{0x0, 0x0};
|
Sys_BuildAbsPath{0x42C330, 0x0};
|
||||||
WEAK symbol<int()> Sys_Milliseconds{0x0, 0x5BDDF0};
|
WEAK symbol<int()> Sys_Milliseconds{0x462B30, 0x5BDDF0};
|
||||||
WEAK symbol<bool()> Sys_IsDatabaseReady2{0x0, 0x4F79C0};
|
WEAK symbol<bool()> Sys_IsDatabaseReady2{0x3AB100, 0x4F79C0};
|
||||||
WEAK symbol<bool(int, void const*, const netadr_s*)> Sys_SendPacket{0x0, 0x5BDA90};
|
WEAK symbol<bool(int, void const*, const netadr_s*)> Sys_SendPacket{0x0, 0x5BDA90};
|
||||||
WEAK symbol<bool(const char* path)> Sys_FileExists{0x0, 0x0};
|
WEAK symbol<bool(const char* path)> Sys_FileExists{0x0, 0x0};
|
||||||
|
|
||||||
WEAK symbol<const char*(const char*)> UI_GetMapDisplayName{0x0, 0x4DDEE0};
|
WEAK symbol<const char*(const char*)> UI_GetMapDisplayName{0x0, 0x4DDEE0};
|
||||||
WEAK symbol<const char*(const char*)> UI_GetGameTypeDisplayName{0x0, 0x4DD8C0};
|
WEAK symbol<const char*(const char*)> UI_GetGameTypeDisplayName{0x0, 0x4DD8C0};
|
||||||
WEAK symbol<void(unsigned int localClientNum, const char** args)> UI_RunMenuScript{0x0, 0x1E35B0};
|
WEAK symbol<void(unsigned int localClientNum, const char** args)> UI_RunMenuScript{0x3F3AA0, 0x1E35B0};
|
||||||
WEAK symbol<int(const char* text, int maxChars, Font_s* font, float scale)> UI_TextWidth{0x0, 0x0};
|
WEAK symbol<int(const char* text, int maxChars, Font_s* font, float scale)> UI_TextWidth{0x3F5D90, 0x0};
|
||||||
|
|
||||||
WEAK symbol<const char*(const char* string)> UI_SafeTranslateString{0x0, 0x4E8BC0};
|
WEAK symbol<const char*(const char* string)> UI_SafeTranslateString{0x3840A0, 0x4E8BC0};
|
||||||
|
|
||||||
WEAK symbol<void*(jmp_buf* Buf, int Value)> longjmp{0x0, 0x826710};
|
WEAK symbol<void*(jmp_buf* Buf, int Value)> longjmp{0x6DCA90, 0x826710};
|
||||||
WEAK symbol<int(jmp_buf* Buf)> _setjmp{0x0, 0x8A3190};
|
WEAK symbol<int(jmp_buf* Buf)> _setjmp{0x758980, 0x8A3190};
|
||||||
|
|
||||||
/***************************************************************
|
/***************************************************************
|
||||||
* Variables
|
* Variables
|
||||||
**************************************************************/
|
**************************************************************/
|
||||||
|
|
||||||
WEAK symbol<CmdArgs> sv_cmd_args{0x0, 0x2ED1EB0};
|
WEAK symbol<CmdArgs> sv_cmd_args{0xB48FF90, 0x2ED1EB0};
|
||||||
|
|
||||||
WEAK symbol<int> g_script_error_level{0x0, 0xB7AC1A4};
|
WEAK symbol<int> g_script_error_level{0xC3FD358, 0xB7AC1A4};
|
||||||
WEAK symbol<jmp_buf> g_script_error{0x0, 0xB7AC2C0};
|
WEAK symbol<jmp_buf> g_script_error{0xC3FD470, 0xB7AC2C0};
|
||||||
|
|
||||||
WEAK symbol<unsigned int> levelEntityId{0x0, 0xB1100B0};
|
WEAK symbol<unsigned int> levelEntityId{0xBD58DA0, 0xB1100B0};
|
||||||
WEAK symbol<unsigned int> gameEntityId{0x0, 0xB1100B4};
|
WEAK symbol<unsigned int> gameEntityId{0xBD58DA4, 0xB1100B4};
|
||||||
|
|
||||||
WEAK symbol<const char*> command_whitelist{0x115ADF0, 0x10ACB70};
|
WEAK symbol<const char*> command_whitelist{0x115ADF0, 0x10ACB70};
|
||||||
WEAK symbol<cmd_function_s*> cmd_functions{0x0, 0x344DF18};
|
WEAK symbol<cmd_function_s*> cmd_functions{0xB490038, 0x344DF18};
|
||||||
WEAK symbol<CmdArgs> cmd_args{0x0, 0x2ED1E00};
|
WEAK symbol<CmdArgs> cmd_args{0xB48FEE0, 0x2ED1E00};
|
||||||
|
|
||||||
WEAK symbol<int> g_poolSize{0x0, 0x0};
|
WEAK symbol<int> g_poolSize{0x0, 0x0};
|
||||||
WEAK symbol<scr_classStruct_t> g_classMap{0x0, 0x0};
|
|
||||||
|
|
||||||
WEAK symbol<scrVarGlob_t> scr_VarGlob{0x0, 0xB138180};
|
WEAK symbol<scrVarGlob_t> scr_VarGlob{0xBD80E00, 0xB138180};
|
||||||
WEAK symbol<scrVmPub_t> scr_VmPub{0x0, 0xB7AE3C0};
|
WEAK symbol<scrVmPub_t> scr_VmPub{0xC3F4E20, 0xB7AE3C0};
|
||||||
WEAK symbol<function_stack_t> scr_function_stack{0x0, 0xB7B8940};
|
WEAK symbol<function_stack_t> scr_function_stack{0xC4015C0, 0xB7B8940};
|
||||||
|
|
||||||
WEAK symbol<GfxDrawMethod_s> gfxDrawMethod{0x0, 0x0};
|
WEAK symbol<GfxDrawMethod_s> gfxDrawMethod{0x0, 0x0};
|
||||||
|
|
||||||
WEAK symbol<int> dvarCount{0x0, 0x2999C34};
|
WEAK symbol<int> dvarCount{0xC90E550, 0x2999C34};
|
||||||
WEAK symbol<dvar_t> dvarPool{0x0, 0x344DF20};
|
WEAK symbol<dvar_t> dvarPool{0xC90E560, 0x344DF20};
|
||||||
|
|
||||||
WEAK symbol<void*> DB_XAssetPool{0x0, 0x10B4460};
|
WEAK symbol<void*> DB_XAssetPool{0xEC9FB0, 0x10B4460};
|
||||||
WEAK symbol<const char*> g_assetNames{0x0, 0x10B30D0};
|
WEAK symbol<const char*> g_assetNames{0x991BA0, 0x10B30D0};
|
||||||
|
|
||||||
WEAK symbol<int> keyCatchers{0x0, 0x2EC82C4};
|
WEAK symbol<int> keyCatchers{0x252AF70, 0x2EC82C4};
|
||||||
WEAK symbol<PlayerKeyState> playerKeys{0x0, 0x2999E1C};
|
WEAK symbol<PlayerKeyState> playerKeys{0x2395B0C, 0x2999E1C};
|
||||||
|
|
||||||
WEAK symbol<SOCKET> query_socket{0x0, 0xC9DCD38};
|
WEAK symbol<SOCKET> query_socket{0xD64D3F8, 0xC9DCD38};
|
||||||
|
|
||||||
WEAK symbol<DWORD> threadIds{0x0, 0x0};
|
WEAK symbol<DWORD> threadIds{0xB896210, 0xAC80740};
|
||||||
|
|
||||||
namespace mp
|
namespace mp
|
||||||
{
|
{
|
||||||
@ -263,27 +270,27 @@ namespace game
|
|||||||
|
|
||||||
namespace sp
|
namespace sp
|
||||||
{
|
{
|
||||||
WEAK symbol<gentity_s> g_entities{0x0, 0x0};
|
WEAK symbol<gentity_s> g_entities{0x56E74D0, 0x0};
|
||||||
}
|
}
|
||||||
|
|
||||||
namespace hks
|
namespace hks
|
||||||
{
|
{
|
||||||
WEAK symbol<lua_State*> lua_state{0, 0x36647F8};
|
WEAK symbol<lua_State*> lua_state{0x1F0E408, 0x36647F8};
|
||||||
WEAK symbol<void(lua_State* s, const char* str, unsigned int l)> hksi_lua_pushlstring{0, 0x79800};
|
WEAK symbol<void(lua_State* s, const char* str, unsigned int l)> hksi_lua_pushlstring{0x62E60, 0x79800};
|
||||||
WEAK symbol<HksObject*(HksObject* result, lua_State* s, const HksObject* table, const HksObject* key)> hks_obj_getfield{0, 0x22CB90};
|
WEAK symbol<HksObject*(HksObject* result, lua_State* s, const HksObject* table, const HksObject* key)> hks_obj_getfield{0xB5100, 0x22CB90};
|
||||||
WEAK symbol<void(lua_State* s, const HksObject* tbl, const HksObject* key, const HksObject* val)> hks_obj_settable{0, 0x22DDB0};
|
WEAK symbol<void(lua_State* s, const HksObject* tbl, const HksObject* key, const HksObject* val)> hks_obj_settable{0xB6320, 0x22DDB0};
|
||||||
WEAK symbol<HksObject* (HksObject* result, lua_State* s, const HksObject* table, const HksObject* key)> hks_obj_gettable{0, 0x22D070};
|
WEAK symbol<HksObject* (HksObject* result, lua_State* s, const HksObject* table, const HksObject* key)> hks_obj_gettable{0xB55E0, 0x22D070};
|
||||||
WEAK symbol<void(lua_State* s, int nargs, int nresults, const unsigned int* pc)> vm_call_internal{0, 0x25D2F0};
|
WEAK symbol<void(lua_State* s, int nargs, int nresults, const unsigned int* pc)> vm_call_internal{0xE5E40, 0x25D2F0};
|
||||||
WEAK symbol<HashTable*(lua_State* s, unsigned int arraySize, unsigned int hashSize)> Hashtable_Create{0, 0x21B030};
|
WEAK symbol<HashTable*(lua_State* s, unsigned int arraySize, unsigned int hashSize)> Hashtable_Create{0xA3570, 0x21B030};
|
||||||
WEAK symbol<cclosure*(lua_State* s, lua_function function, int num_upvalues,
|
WEAK symbol<cclosure*(lua_State* s, lua_function function, int num_upvalues,
|
||||||
int internal_, int profilerTreatClosureAsFunc)> cclosure_Create{0, 0x21B250};
|
int internal_, int profilerTreatClosureAsFunc)> cclosure_Create{0xA3790, 0x21B250};
|
||||||
WEAK symbol<int(lua_State* s, int t)> hksi_luaL_ref{0, 0x236CC0};
|
WEAK symbol<int(lua_State* s, int t)> hksi_luaL_ref{0xB7F90, 0x236CC0};
|
||||||
WEAK symbol<void(lua_State* s, int t, int ref)> hksi_luaL_unref{0, 0x22FC40};
|
WEAK symbol<void(lua_State* s, int t, int ref)> hksi_luaL_unref{0xB8130, 0x22FC40};
|
||||||
WEAK symbol<int(lua_State* s, const HksCompilerSettings* options, const char* buff,
|
WEAK symbol<int(lua_State* s, const HksCompilerSettings* options, const char* buff,
|
||||||
unsigned __int64 sz, const char* name)> hksi_hksL_loadbuffer{0, 0x22E620};
|
unsigned __int64 sz, const char* name)> hksi_hksL_loadbuffer{0xB6B90, 0x22E620};
|
||||||
WEAK symbol<int(lua_State* s, const char* what, lua_Debug* ar)> hksi_lua_getinfo{0, 0x22FFE0};
|
WEAK symbol<int(lua_State* s, const char* what, lua_Debug* ar)> hksi_lua_getinfo{0xB84D0, 0x22FFE0};
|
||||||
WEAK symbol<int(lua_State* s, int level, lua_Debug* ar)> hksi_lua_getstack{0, 0x2302B0};
|
WEAK symbol<int(lua_State* s, int level, lua_Debug* ar)> hksi_lua_getstack{0xB87A0, 0x2302B0};
|
||||||
WEAK symbol<void(lua_State* s, const char* fmt, ...)> hksi_luaL_error{0, 0x22F930};
|
WEAK symbol<void(lua_State* s, const char* fmt, ...)> hksi_luaL_error{0xBF120, 0x22F930};
|
||||||
WEAK symbol<const char*> typenames{0, 0x10AD750};
|
WEAK symbol<const char*> typenames{0x98CD20, 0x10AD750};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user