Use different loader method
This commit is contained in:
parent
a70fd7bd80
commit
22b14523b7
@ -118,13 +118,13 @@ namespace binding
|
||||
void post_unpack() override
|
||||
{
|
||||
// write all bindings to config file
|
||||
key_write_bindings_to_buffer_hook.create(0x3D3840_b, key_write_bindings_to_buffer_stub);
|
||||
key_write_bindings_to_buffer_hook.create(0x1403D3840, key_write_bindings_to_buffer_stub);
|
||||
|
||||
// links a custom command to an index
|
||||
utils::hook::jump(0x59AE30_b, key_get_binding_for_cmd_stub, true);
|
||||
utils::hook::jump(0x14059AE30, key_get_binding_for_cmd_stub, true);
|
||||
|
||||
// execute custom binds
|
||||
cl_execute_key_hook.create(0x3CF1E0_b, &cl_execute_key_stub);
|
||||
cl_execute_key_hook.create(0x1403CF1E0, &cl_execute_key_stub);
|
||||
}
|
||||
};
|
||||
}
|
||||
|
@ -45,7 +45,7 @@ namespace branding
|
||||
localized_strings::override("MENU_SYSINFO_DONATION_LINK", "Donation Link:");
|
||||
localized_strings::override("MENU_SYSINFO_DONATION_URL", "https://paypal.me/fedecek");
|
||||
|
||||
utils::hook::jump(0x33D550_b, get_build_number_stub, true);
|
||||
utils::hook::jump(0x14033D550, get_build_number_stub, true);
|
||||
}
|
||||
};
|
||||
}
|
||||
|
@ -148,7 +148,7 @@ namespace command
|
||||
public:
|
||||
void post_unpack() override
|
||||
{
|
||||
utils::hook::jump(0x5A74F0_b, dvar_command_stub, true);
|
||||
utils::hook::jump(0x1405A74F0, dvar_command_stub, true);
|
||||
|
||||
add("quit", game::Quit);
|
||||
|
||||
@ -156,7 +156,7 @@ namespace command
|
||||
{
|
||||
const auto map = params.get(1);
|
||||
|
||||
const auto exists = utils::hook::invoke<bool>(0x412B50_b, map, 0);
|
||||
const auto exists = utils::hook::invoke<bool>(0x140412B50, map, 0);
|
||||
|
||||
if (!exists)
|
||||
{
|
||||
@ -165,7 +165,7 @@ namespace command
|
||||
}
|
||||
|
||||
// SV_SpawnServer
|
||||
utils::hook::invoke<void>(0x6B3AA0_b, map, 0, 0, 0, 0);
|
||||
utils::hook::invoke<void>(0x1406B3AA0, map, 0, 0, 0, 0);
|
||||
});
|
||||
|
||||
add("say", [](const params& params)
|
||||
@ -207,11 +207,6 @@ namespace command
|
||||
}
|
||||
});
|
||||
|
||||
add("baseAddress", []()
|
||||
{
|
||||
printf("%p\n", (void*)game::base_address);
|
||||
});
|
||||
|
||||
add("commandDump", []()
|
||||
{
|
||||
printf("======== Start command dump =========\n");
|
||||
|
@ -158,7 +158,6 @@ namespace exception
|
||||
line("Timestamp: "s + get_timestamp());
|
||||
line(utils::string::va("Exception: 0x%08X", exceptioninfo->ExceptionRecord->ExceptionCode));
|
||||
line(utils::string::va("Address: 0x%llX", exceptioninfo->ExceptionRecord->ExceptionAddress));
|
||||
line(utils::string::va("Base: 0x%llX", game::base_address));
|
||||
|
||||
#pragma warning(push)
|
||||
#pragma warning(disable: 4996)
|
||||
|
@ -51,7 +51,7 @@ namespace fastfiles
|
||||
public:
|
||||
void post_unpack() override
|
||||
{
|
||||
db_try_load_x_file_internal_hook.create(0x4173B0_b, &db_try_load_x_file_internal);
|
||||
db_try_load_x_file_internal_hook.create(0x1404173B0, &db_try_load_x_file_internal);
|
||||
|
||||
command::add("loadzone", [](const command::params& params)
|
||||
{
|
||||
|
@ -303,7 +303,7 @@ namespace fps
|
||||
{
|
||||
scheduler::loop(draw, scheduler::pipeline::renderer);
|
||||
|
||||
sub_7C55D0_hook.create(0x7C55D0_b, perf_update);
|
||||
sub_7C55D0_hook.create(0x1407C55D0, perf_update);
|
||||
|
||||
cg_drawSpeed = dvars::register_bool("cg_drawSpeed", 0, game::DVAR_FLAG_SAVED);
|
||||
cg_drawFps = dvars::register_int("cg_drawFPS", 0, 0, 4, game::DVAR_FLAG_SAVED);
|
||||
|
@ -46,10 +46,10 @@ namespace gameplay
|
||||
a.jnz(allsolid);
|
||||
|
||||
a.bind(stand);
|
||||
a.jmp(0x6878CD_b);
|
||||
a.jmp(0x1406878CD);
|
||||
|
||||
a.bind(allsolid);
|
||||
a.jmp(0x6878D4_b);
|
||||
a.jmp(0x1406878D4);
|
||||
}
|
||||
|
||||
void pm_crashland_stub(void* ps, void* pm)
|
||||
@ -70,12 +70,12 @@ namespace gameplay
|
||||
dvars::jump_enableFallDamage = dvars::register_bool("jump_enableFallDamage", true, game::DVAR_FLAG_REPLICATED);
|
||||
|
||||
// Influence PM_JitterPoint code flow so the trace->startsolid checks are 'ignored'
|
||||
pm_player_trace_hook.create(0x068F0A0_b, &pm_player_trace_stub);
|
||||
pm_player_trace_hook.create(0x14068F0A0, &pm_player_trace_stub);
|
||||
|
||||
// If g_enableElevators is 1 the 'ducked' flag will always be removed from the player state
|
||||
utils::hook::jump(0x6878C1_b, utils::hook::assemble(pm_trace_stub), true);
|
||||
utils::hook::jump(0x1406878C1, utils::hook::assemble(pm_trace_stub), true);
|
||||
|
||||
pm_crashland_hook.create(0x688A20_b, pm_crashland_stub);
|
||||
pm_crashland_hook.create(0x140688A20, pm_crashland_stub);
|
||||
|
||||
dvars::register_float("jump_height", 39, 0, 1000, game::DVAR_FLAG_REPLICATED);
|
||||
dvars::register_float("g_gravity", 800, 1, 1000, game::DVAR_FLAG_REPLICATED);
|
||||
|
@ -208,7 +208,7 @@ namespace gui
|
||||
a.call_aligned(rbx);
|
||||
a.mov(ecx, eax);
|
||||
|
||||
a.jmp(0x7A14D1_b);
|
||||
a.jmp(0x1407A14D1);
|
||||
}
|
||||
|
||||
utils::hook::detour wnd_proc_hook;
|
||||
@ -301,8 +301,8 @@ namespace gui
|
||||
|
||||
void post_unpack() override
|
||||
{
|
||||
utils::hook::jump(0x7A14C4_b, utils::hook::assemble(dxgi_swap_chain_present_stub), true);
|
||||
wnd_proc_hook.create(0x650F10_b, wnd_proc_stub);
|
||||
utils::hook::jump(0x1407A14C4, utils::hook::assemble(dxgi_swap_chain_present_stub), true);
|
||||
wnd_proc_hook.create(0x140650F10, wnd_proc_stub);
|
||||
|
||||
on_frame([]()
|
||||
{
|
||||
|
@ -111,8 +111,8 @@ namespace images
|
||||
public:
|
||||
void post_unpack() override
|
||||
{
|
||||
setup_texture_hook.create(0x74A390_b, setup_texture_stub);
|
||||
load_texture_hook.create(0x2A7940_b, load_texture_stub);
|
||||
setup_texture_hook.create(0x14074A390, setup_texture_stub);
|
||||
load_texture_hook.create(0x1402A7940, load_texture_stub);
|
||||
}
|
||||
};
|
||||
}
|
||||
|
@ -74,9 +74,9 @@ namespace input
|
||||
public:
|
||||
void post_unpack() override
|
||||
{
|
||||
cl_char_event_hook.create(0x3D27B0_b, cl_char_event_stub);
|
||||
cl_key_event_hook.create(0x3D2AE0_b, cl_key_event_stub);
|
||||
cl_mouse_move_hook.create(0x3296F0_b, cl_mouse_move_stub);
|
||||
cl_char_event_hook.create(0x1403D27B0, cl_char_event_stub);
|
||||
cl_key_event_hook.create(0x1403D2AE0, cl_key_event_stub);
|
||||
cl_mouse_move_hook.create(0x1403296F0, cl_mouse_move_stub);
|
||||
}
|
||||
};
|
||||
}
|
||||
|
@ -46,7 +46,7 @@ namespace localized_strings
|
||||
void post_unpack() override
|
||||
{
|
||||
// Change some localized strings
|
||||
seh_string_ed_get_string_hook.create(0x5E5FD0_b, &seh_string_ed_get_string);
|
||||
seh_string_ed_get_string_hook.create(0x1405E5FD0, &seh_string_ed_get_string);
|
||||
}
|
||||
};
|
||||
}
|
||||
|
@ -142,10 +142,10 @@ namespace logger
|
||||
public:
|
||||
void post_unpack() override
|
||||
{
|
||||
utils::hook::jump(0x32C620_b, print_warning, true);
|
||||
utils::hook::jump(0x32C630_b, print_warning, true);
|
||||
utils::hook::jump(0x32AEF0_b, lui_print, true);
|
||||
com_error_hook.create(0x5A2D80_b, com_error_stub);
|
||||
utils::hook::jump(0x14032C620, print_warning, true);
|
||||
utils::hook::jump(0x14032C630, print_warning, true);
|
||||
utils::hook::jump(0x14032AEF0, lui_print, true);
|
||||
com_error_hook.create(0x1405A2D80, com_error_stub);
|
||||
}
|
||||
};
|
||||
}
|
||||
|
@ -39,8 +39,8 @@ namespace lui
|
||||
|
||||
command::add("lui_restart", []()
|
||||
{
|
||||
utils::hook::invoke<void>(0x3203B0_b);
|
||||
utils::hook::invoke<void>(0x32D370_b);
|
||||
utils::hook::invoke<void>(0x1403203B0);
|
||||
utils::hook::invoke<void>(0x14032D370);
|
||||
});
|
||||
}
|
||||
};
|
||||
|
@ -94,7 +94,7 @@ namespace notifies
|
||||
a.inc(r14);
|
||||
a.mov(dword_ptr(rbp, 0xA4), r15d);
|
||||
|
||||
a.jmp(0x5C90B3_b);
|
||||
a.jmp(0x1405C90B3);
|
||||
|
||||
a.bind(replace);
|
||||
|
||||
@ -137,7 +137,7 @@ namespace notifies
|
||||
|
||||
std::string convert_mod(const int meansOfDeath)
|
||||
{
|
||||
const auto value = reinterpret_cast<game::scr_string_t**>(0xBF49B0_b)[meansOfDeath];
|
||||
const auto value = reinterpret_cast<game::scr_string_t**>(0x140BF49B0)[meansOfDeath];
|
||||
const auto string = game::SL_ConvertToString(*value);
|
||||
|
||||
return string;
|
||||
@ -147,7 +147,7 @@ namespace notifies
|
||||
int damage, int dflags, const unsigned int hitLoc, const unsigned int weapon, bool isAlternate, unsigned int a11, const int meansOfDeath, unsigned int a13, unsigned int a14)
|
||||
{
|
||||
{
|
||||
const std::string _hitLoc = reinterpret_cast<const char**>(0xBF4AA0_b)[hitLoc];
|
||||
const std::string _hitLoc = reinterpret_cast<const char**>(0x140BF4AA0)[hitLoc];
|
||||
const auto _mod = convert_mod(meansOfDeath);
|
||||
const auto _weapon = get_weapon_name(weapon, isAlternate);
|
||||
|
||||
@ -199,9 +199,9 @@ namespace notifies
|
||||
public:
|
||||
void post_unpack() override
|
||||
{
|
||||
utils::hook::jump(0x5C90A5_b, utils::hook::assemble(vm_execute_stub), true);
|
||||
utils::hook::jump(0x1405C90A5, utils::hook::assemble(vm_execute_stub), true);
|
||||
|
||||
scr_entity_damage_hook.create(0x4BD2E0_b, scr_entity_damage_stub);
|
||||
scr_entity_damage_hook.create(0x1404BD2E0, scr_entity_damage_stub);
|
||||
}
|
||||
};
|
||||
}
|
||||
|
@ -16,7 +16,7 @@ namespace patches
|
||||
|
||||
void* sub_46148()
|
||||
{
|
||||
static uint64_t off_11C52460 = 0xAD0C58_b;
|
||||
static uint64_t off_11C52460 = 0x140AD0C58;
|
||||
return &off_11C52460;
|
||||
}
|
||||
|
||||
@ -28,7 +28,7 @@ namespace patches
|
||||
|
||||
void gscr_set_save_dvar_stub()
|
||||
{
|
||||
const auto string = utils::string::to_lower(utils::hook::invoke<const char*>(0x5C7C20_b, 0));
|
||||
const auto string = utils::string::to_lower(utils::hook::invoke<const char*>(0x1405C7C20, 0));
|
||||
if (string == "cg_fov" || string == "cg_fovscale")
|
||||
{
|
||||
return;
|
||||
@ -65,24 +65,24 @@ namespace patches
|
||||
void post_unpack() override
|
||||
{
|
||||
// Fix startup crashes
|
||||
utils::hook::set(0x633080_b, 0xC301B0);
|
||||
utils::hook::set(0x272F70_b, 0xC301B0);
|
||||
utils::hook::jump(0x46148_b, sub_46148, true);
|
||||
utils::hook::set(0x140633080, 0xC301B0);
|
||||
utils::hook::set(0x140272F70, 0xC301B0);
|
||||
utils::hook::jump(0x140046148, sub_46148, true);
|
||||
|
||||
utils::hook::jump(0x64EF10_b, quit_stub, true);
|
||||
utils::hook::jump(0x14064EF10, quit_stub, true);
|
||||
|
||||
// Unlock fps in main menu
|
||||
utils::hook::set<BYTE>(0x3D8E1B_b, 0xEB);
|
||||
utils::hook::set<BYTE>(0x1403D8E1B, 0xEB);
|
||||
|
||||
// Disable battle net popup
|
||||
utils::hook::nop(0x5F4496_b, 5);
|
||||
utils::hook::nop(0x1405F4496, 5);
|
||||
|
||||
// Allow kbam input when gamepad is enabled
|
||||
utils::hook::nop(0x3D2F8E_b, 2);
|
||||
utils::hook::nop(0x3D0C9C_b, 6);
|
||||
utils::hook::nop(0x1403D2F8E, 2);
|
||||
utils::hook::nop(0x1403D0C9C, 6);
|
||||
|
||||
// Prevent game from overriding cg_fov and cg_fovscale values
|
||||
gscr_set_save_dvar_hook.create(0x504C60_b, &gscr_set_save_dvar_stub);
|
||||
gscr_set_save_dvar_hook.create(0x140504C60, &gscr_set_save_dvar_stub);
|
||||
|
||||
// Make cg_fov and cg_fovscale saved dvars
|
||||
|
||||
|
@ -63,8 +63,8 @@ namespace renderer
|
||||
{
|
||||
dvars::r_fullbright = dvars::register_int("r_fullbright", 0, 0, 3, game::DVAR_FLAG_SAVED);
|
||||
|
||||
r_init_draw_method_hook.create(0x72F950_b, &r_init_draw_method_stub);
|
||||
r_update_front_end_dvar_options_hook.create(0x76EE70_b, &r_update_front_end_dvar_options_stub);
|
||||
r_init_draw_method_hook.create(0x14072F950, &r_init_draw_method_stub);
|
||||
r_update_front_end_dvar_options_hook.create(0x14076EE70, &r_update_front_end_dvar_options_stub);
|
||||
}
|
||||
};
|
||||
}
|
||||
|
@ -183,9 +183,9 @@ namespace scheduler
|
||||
|
||||
void post_unpack() override
|
||||
{
|
||||
r_end_frame_hook.create(0x76D7B0_b, scheduler::r_end_frame_stub);
|
||||
g_run_frame_hook.create(0x4CB030_b, scheduler::server_frame_stub);
|
||||
main_frame_hook.create(0x417FA0_b, scheduler::main_frame_stub);
|
||||
r_end_frame_hook.create(0x14076D7B0, scheduler::r_end_frame_stub);
|
||||
g_run_frame_hook.create(0x1404CB030, scheduler::server_frame_stub);
|
||||
main_frame_hook.create(0x140417FA0, scheduler::main_frame_stub);
|
||||
}
|
||||
|
||||
void pre_destroy() override
|
||||
|
@ -116,19 +116,19 @@ namespace scripting
|
||||
public:
|
||||
void post_unpack() override
|
||||
{
|
||||
vm_notify_hook.create(0x5CC450_b, vm_notify_stub);
|
||||
vm_notify_hook.create(0x1405CC450, vm_notify_stub);
|
||||
|
||||
g_shutdown_game_hook.create(0x4CBAD0_b, g_shutdown_game_stub);
|
||||
player_spawn_hook.create(0x4B0710_b, player_spawn_stub);
|
||||
g_shutdown_game_hook.create(0x1404CBAD0, g_shutdown_game_stub);
|
||||
player_spawn_hook.create(0x1404B0710, player_spawn_stub);
|
||||
|
||||
scr_add_class_field_hook.create(0x5C2C30_b, scr_add_class_field_stub);
|
||||
scr_set_thread_position_hook.create(0x5BC7E0_b, scr_set_thread_position_stub);
|
||||
process_script_hook.create(0x5C6160_b, process_script_stub);
|
||||
scr_add_class_field_hook.create(0x1405C2C30, scr_add_class_field_stub);
|
||||
scr_set_thread_position_hook.create(0x1405BC7E0, scr_set_thread_position_stub);
|
||||
process_script_hook.create(0x1405C6160, process_script_stub);
|
||||
|
||||
// Loading last checkpoint doesn't call spawn player again (player_spawn_hook)
|
||||
// Not sure what this function does but `a1` is != nullptr when loading
|
||||
// the last checkpoint so we need to start lua in this context
|
||||
sub_6B2940_hook.create(0x6B2940_b, sub_6B2940_stub);
|
||||
sub_6B2940_hook.create(0x1406B2940, sub_6B2940_stub);
|
||||
|
||||
scheduler::loop([]()
|
||||
{
|
||||
|
@ -178,13 +178,13 @@ namespace ui_scripting
|
||||
void post_unpack() override
|
||||
{
|
||||
scheduler::loop(ui_scripting::lua::engine::run_frame, scheduler::pipeline::lui);
|
||||
hks_start_hook.create(0x328BE0_b, hks_start_stub);
|
||||
hks_shutdown_hook.create(0x3203B0_b, hks_shutdown_stub);
|
||||
hksi_lual_error_hook.create(0x2E3E40_b, hksi_lual_error_stub);
|
||||
hksi_lual_error_hook2.create(0x2DCB40_b, hksi_lual_error_stub);
|
||||
hks_allocator_hook.create(0x2D92A0_b, hks_allocator_stub);
|
||||
lui_error_hook.create(0x2B9D90_b, lui_error_stub);
|
||||
hksi_hks_error_hook.create(0x2DBC00_b, hksi_hks_error_stub);
|
||||
hks_start_hook.create(0x140328BE0, hks_start_stub);
|
||||
hks_shutdown_hook.create(0x1403203B0, hks_shutdown_stub);
|
||||
hksi_lual_error_hook.create(0x1402E3E40, hksi_lual_error_stub);
|
||||
hksi_lual_error_hook2.create(0x1402DCB40, hksi_lual_error_stub);
|
||||
hks_allocator_hook.create(0x1402D92A0, hks_allocator_stub);
|
||||
lui_error_hook.create(0x1402B9D90, lui_error_stub);
|
||||
hksi_hks_error_hook.create(0x1402DBC00, hksi_hks_error_stub);
|
||||
}
|
||||
};
|
||||
}
|
||||
|
@ -3,14 +3,6 @@
|
||||
|
||||
namespace game
|
||||
{
|
||||
uint64_t base_address;
|
||||
|
||||
void load_base_address()
|
||||
{
|
||||
const auto module = GetModuleHandle(NULL);
|
||||
base_address = uint64_t(module);
|
||||
}
|
||||
|
||||
std::string mod_folder{};
|
||||
|
||||
namespace environment
|
||||
@ -81,8 +73,3 @@ namespace game
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
uintptr_t operator"" _b(const uintptr_t ptr)
|
||||
{
|
||||
return game::base_address + ptr;
|
||||
}
|
@ -5,9 +5,6 @@
|
||||
|
||||
namespace game
|
||||
{
|
||||
extern uint64_t base_address;
|
||||
void load_base_address();
|
||||
|
||||
extern std::string mod_folder;
|
||||
|
||||
namespace environment
|
||||
@ -35,7 +32,7 @@ namespace game
|
||||
|
||||
T* get() const
|
||||
{
|
||||
return reinterpret_cast<T*>((uint64_t)address_ + base_address);
|
||||
return reinterpret_cast<T*>(address_);
|
||||
}
|
||||
|
||||
operator T* () const
|
||||
@ -53,6 +50,4 @@ namespace game
|
||||
};
|
||||
}
|
||||
|
||||
uintptr_t operator"" _b(const uintptr_t ptr);
|
||||
|
||||
#include "symbols.hpp"
|
@ -59,15 +59,15 @@ namespace scripting
|
||||
|
||||
script_function get_function_by_index(const unsigned index)
|
||||
{
|
||||
static const auto function_table = 0xB153F90;
|
||||
static const auto method_table = 0xB155890;
|
||||
static const auto function_table = 0x14B153F90;
|
||||
static const auto method_table = 0x14B155890;
|
||||
|
||||
if (index < 0x320)
|
||||
{
|
||||
return reinterpret_cast<script_function*>(game::base_address + function_table)[index - 1];
|
||||
return reinterpret_cast<script_function*>(function_table)[index - 1];
|
||||
}
|
||||
|
||||
return reinterpret_cast<script_function*>(game::base_address + method_table)[index - 0x8000];
|
||||
return reinterpret_cast<script_function*>(method_table)[index - 0x8000];
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -6,198 +6,198 @@ namespace game
|
||||
{
|
||||
// Functions
|
||||
|
||||
WEAK symbol<void(int type, VariableUnion u)> AddRefToValue{0x5C0EB0};
|
||||
WEAK symbol<void(unsigned int id)> AddRefToObject{0x5C0EA0};
|
||||
WEAK symbol<unsigned int(unsigned int id)> AllocThread{0x5C1200};
|
||||
WEAK symbol<ObjectVariableValue*(unsigned int* id)> AllocVariable{0x5C1260};
|
||||
WEAK symbol<void(int type, VariableUnion u)> RemoveRefToValue{0x5C29B0};
|
||||
WEAK symbol<void(unsigned int id)> RemoveRefToObject{0x5C28A0};
|
||||
WEAK symbol<void(int type, VariableUnion u)> AddRefToValue{0x1405C0EB0};
|
||||
WEAK symbol<void(unsigned int id)> AddRefToObject{0x1405C0EA0};
|
||||
WEAK symbol<unsigned int(unsigned int id)> AllocThread{0x1405C1200};
|
||||
WEAK symbol<ObjectVariableValue*(unsigned int* id)> AllocVariable{0x1405C1260};
|
||||
WEAK symbol<void(int type, VariableUnion u)> RemoveRefToValue{0x1405C29B0};
|
||||
WEAK symbol<void(unsigned int id)> RemoveRefToObject{0x1405C28A0};
|
||||
|
||||
WEAK symbol<void(unsigned int weapon, bool isAlternate,
|
||||
char* output, unsigned int maxStringLen)> BG_GetWeaponNameComplete{0x6A0800};
|
||||
char* output, unsigned int maxStringLen)> BG_GetWeaponNameComplete{0x1406A0800};
|
||||
|
||||
WEAK symbol<void(int localClientNum, const char* text)> Cbuf_AddText{0x59A050};
|
||||
WEAK symbol<void(int localClientNum, const char* text)> Cbuf_AddText{0x14059A050};
|
||||
|
||||
WEAK symbol<void(int localClientNum, const char* message)> CG_GameMessage{0x37F450};
|
||||
WEAK symbol<void(int localClientNum, const char* message)> CG_GameMessageBold{0x37F1B0};
|
||||
WEAK symbol<void(int localClientNum, const char* message)> CG_GameMessage{0x14037F450};
|
||||
WEAK symbol<void(int localClientNum, const char* message)> CG_GameMessageBold{0x14037F1B0};
|
||||
WEAK symbol<char*(const unsigned int weapon,
|
||||
bool isAlternate, char* outputBuffer, int bufferLen)> CG_GetWeaponDisplayName{0x3B9210};
|
||||
bool isAlternate, char* outputBuffer, int bufferLen)> CG_GetWeaponDisplayName{0x1403B9210};
|
||||
|
||||
WEAK symbol<void(const char* cmdName, void(), cmd_function_s* allocedCmd)> Cmd_AddCommandInternal{0x59A5F0};
|
||||
WEAK symbol<void(int localClientNum, int controllerIndex, const char* text)> Cmd_ExecuteSingleCommand{0x59ABA0};
|
||||
WEAK symbol<void(const char* cmdName, void(), cmd_function_s* allocedCmd)> Cmd_AddCommandInternal{0x14059A5F0};
|
||||
WEAK symbol<void(int localClientNum, int controllerIndex, const char* text)> Cmd_ExecuteSingleCommand{0x14059ABA0};
|
||||
|
||||
WEAK symbol<void(errorParm code, const char* message, ...)> Com_Error{0x5A2D80};
|
||||
WEAK symbol<void()> Com_Quit_f{0x5A50D0};
|
||||
WEAK symbol<void()> Quit{0x5A52A0};
|
||||
WEAK symbol<void(errorParm code, const char* message, ...)> Com_Error{0x1405A2D80};
|
||||
WEAK symbol<void()> Com_Quit_f{0x1405A50D0};
|
||||
WEAK symbol<void()> Quit{0x1405A52A0};
|
||||
|
||||
WEAK symbol<void(XAssetType type, void(__cdecl* func)(game::XAssetHeader, void*), const void* inData, bool includeOverride)>
|
||||
DB_EnumXAssets_Internal{0x4129F0};
|
||||
WEAK symbol<const char*(const XAsset* asset)> DB_GetXAssetName{0x3E4090};
|
||||
WEAK symbol<void(XZoneInfo* zoneInfo, unsigned int zoneCount, DBSyncMode syncMode)> DB_LoadXAssets{0x414FF0};
|
||||
WEAK symbol<XAssetHeader(XAssetType type, const char* name, int allowCreateDefault)> DB_FindXAssetHeader{0x412F60};
|
||||
WEAK symbol<int(const RawFile* rawfile)> DB_GetRawFileLen{0x413D80};
|
||||
WEAK symbol<int(const RawFile* rawfile, char* buf, int size)> DB_GetRawBuffer{0x413C40};
|
||||
DB_EnumXAssets_Internal{0x1404129F0};
|
||||
WEAK symbol<const char*(const XAsset* asset)> DB_GetXAssetName{0x1403E4090};
|
||||
WEAK symbol<void(XZoneInfo* zoneInfo, unsigned int zoneCount, DBSyncMode syncMode)> DB_LoadXAssets{0x140414FF0};
|
||||
WEAK symbol<XAssetHeader(XAssetType type, const char* name, int allowCreateDefault)> DB_FindXAssetHeader{0x140412F60};
|
||||
WEAK symbol<int(const RawFile* rawfile)> DB_GetRawFileLen{0x140413D80};
|
||||
WEAK symbol<int(const RawFile* rawfile, char* buf, int size)> DB_GetRawBuffer{0x140413C40};
|
||||
|
||||
WEAK symbol<dvar_t*(const char* name)> Dvar_FindVar{0x618F90};
|
||||
WEAK symbol<void(char* buffer, int index)> Dvar_GetCombinedString{0x5A75D0};
|
||||
WEAK symbol<dvar_t*(int hash, const char* name, bool value, unsigned int flags)> Dvar_RegisterBool{0x617BB0};
|
||||
WEAK symbol<dvar_t*(int hash, const char* name, int value, int min, int max, unsigned int flags)> Dvar_RegisterInt{0x618090};
|
||||
WEAK symbol<dvar_t*(const char* name)> Dvar_FindVar{0x140618F90};
|
||||
WEAK symbol<void(char* buffer, int index)> Dvar_GetCombinedString{0x1405A75D0};
|
||||
WEAK symbol<dvar_t*(int hash, const char* name, bool value, unsigned int flags)> Dvar_RegisterBool{0x140617BB0};
|
||||
WEAK symbol<dvar_t*(int hash, const char* name, int value, int min, int max, unsigned int flags)> Dvar_RegisterInt{0x140618090};
|
||||
WEAK symbol<dvar_t*(int hash, const char* dvarName, float value, float min, float max, unsigned int flags)>
|
||||
Dvar_RegisterFloat{0x617F80};
|
||||
Dvar_RegisterFloat{0x140617F80};
|
||||
WEAK symbol<dvar_t*(int hash, const char* dvarName, const char* value, unsigned int flags)>
|
||||
Dvar_RegisterString{0x618170};
|
||||
Dvar_RegisterString{0x140618170};
|
||||
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{0x6185F0};
|
||||
WEAK symbol<const char*(const dvar_t* dvar)> Dvar_DisplayableValue{0x618EA0};
|
||||
WEAK symbol<const char*(dvar_t* dvar, void* a2, void* value)> Dvar_ValueToString{0x61B8F0};
|
||||
WEAK symbol<void(int hash, const char* name, const char* buffer)> Dvar_SetCommand{0x61A5C0};
|
||||
WEAK symbol<void(const char* dvarName, const char* string, DvarSetSource source)> Dvar_SetFromStringFromSource{0x61A910};
|
||||
unsigned int flags)> Dvar_RegisterVec4{0x1406185F0};
|
||||
WEAK symbol<const char*(const dvar_t* dvar)> Dvar_DisplayableValue{0x140618EA0};
|
||||
WEAK symbol<const char*(dvar_t* dvar, void* a2, void* value)> Dvar_ValueToString{0x14061B8F0};
|
||||
WEAK symbol<void(int hash, const char* name, const char* buffer)> Dvar_SetCommand{0x14061A5C0};
|
||||
WEAK symbol<void(const char* dvarName, const char* string, DvarSetSource source)> Dvar_SetFromStringFromSource{0x14061A910};
|
||||
|
||||
WEAK symbol<int(const char* fname)> generateHashValue{0x343D20};
|
||||
WEAK symbol<int(const char* fname)> generateHashValue{0x140343D20};
|
||||
|
||||
WEAK symbol<bool()> CL_IsCgameInitialized{0x3CA0C0};
|
||||
WEAK symbol<bool()> CL_IsCgameInitialized{0x1403CA0C0};
|
||||
WEAK symbol<void(const char* text, int maxChars, Font_s* font, float x, float y, float xScale, float yScale,
|
||||
const float* color, int style, const float* glowColor, Material* fxMaterial, Material* fxMaterialGlow,
|
||||
int fxBirthTime, int fxLetterTime, int fxDecayStartTime, int fxDecayDuration, int a17)> CL_DrawTextPhysicalWithEffects{0x3D4990};
|
||||
int fxBirthTime, int fxLetterTime, int fxDecayStartTime, int fxDecayDuration, int a17)> CL_DrawTextPhysicalWithEffects{0x1403D4990};
|
||||
|
||||
WEAK symbol<unsigned int(unsigned int parentId, unsigned int name)> FindVariable{0x5C1D50};
|
||||
WEAK symbol<unsigned int(int entnum, unsigned int classnum)> FindEntityId{0x5C1C50};
|
||||
WEAK symbol<void(VariableValue* result, unsigned int classnum, int entnum, int offset)> GetEntityFieldValue{0x5C6100};
|
||||
WEAK symbol<unsigned int(unsigned int parentId, unsigned int unsignedValue)> GetVariable{0x5C2690};
|
||||
WEAK symbol<unsigned int(unsigned int parentId, unsigned int unsignedValue)> GetNewVariable{0x5C22B0};
|
||||
WEAK symbol<unsigned int(unsigned int parentId, unsigned int unsignedValue)> GetNewArrayVariable{0x5C2130};
|
||||
WEAK symbol<void(unsigned int parentId, unsigned int id, VariableValue* value)> SetNewVariableValue{0x5C5EA0};
|
||||
WEAK symbol<void(unsigned int parentId, unsigned int index)> RemoveVariableValue{0x5C2A50};
|
||||
WEAK symbol<unsigned int(unsigned int parentId, unsigned int name)> FindVariable{0x1405C1D50};
|
||||
WEAK symbol<unsigned int(int entnum, unsigned int classnum)> FindEntityId{0x1405C1C50};
|
||||
WEAK symbol<void(VariableValue* result, unsigned int classnum, int entnum, int offset)> GetEntityFieldValue{0x1405C6100};
|
||||
WEAK symbol<unsigned int(unsigned int parentId, unsigned int unsignedValue)> GetVariable{0x1405C2690};
|
||||
WEAK symbol<unsigned int(unsigned int parentId, unsigned int unsignedValue)> GetNewVariable{0x1405C22B0};
|
||||
WEAK symbol<unsigned int(unsigned int parentId, unsigned int unsignedValue)> GetNewArrayVariable{0x1405C2130};
|
||||
WEAK symbol<void(unsigned int parentId, unsigned int id, VariableValue* value)> SetNewVariableValue{0x1405C5EA0};
|
||||
WEAK symbol<void(unsigned int parentId, unsigned int index)> RemoveVariableValue{0x1405C2A50};
|
||||
|
||||
WEAK symbol<unsigned int(const char* name)> G_GetWeaponForName{0x51B260};
|
||||
WEAK symbol<unsigned int(const char* name)> G_GetWeaponForName{0x14051B260};
|
||||
WEAK symbol<int(void* ps, unsigned int weapon, int a3, int a4, __int64 a5, int a6)>
|
||||
G_GivePlayerWeapon{0x51B660};
|
||||
WEAK symbol<void(void* ps, const unsigned int weapon, int hadWeapon)> G_InitializeAmmo{0x4C4110};
|
||||
WEAK symbol<void(int clientNum, const unsigned int weapon)> G_SelectWeapon{0x51C0D0};
|
||||
WEAK symbol<bool(int localClientNum, ScreenPlacement* screenPlacement, const float* worldDir, float* outScreenPos)> WorldPosToScreenPos{0x36F310};
|
||||
G_GivePlayerWeapon{0x14051B660};
|
||||
WEAK symbol<void(void* ps, const unsigned int weapon, int hadWeapon)> G_InitializeAmmo{0x1404C4110};
|
||||
WEAK symbol<void(int clientNum, const unsigned int weapon)> G_SelectWeapon{0x14051C0D0};
|
||||
WEAK symbol<bool(int localClientNum, ScreenPlacement* screenPlacement, const float* worldDir, float* outScreenPos)> WorldPosToScreenPos{0x14036F310};
|
||||
|
||||
WEAK symbol<char*(char* string)> I_CleanStr{0x620660};
|
||||
WEAK symbol<char*(char* string)> I_CleanStr{0x140620660};
|
||||
|
||||
WEAK symbol<char*(GfxImage* image, uint32_t width, uint32_t height, uint32_t depth, uint32_t mipCount,
|
||||
uint32_t imageFlags, DXGI_FORMAT imageFormat, int a8, const char* name, const void* initData)> Image_Setup{0x74B2A0};
|
||||
uint32_t imageFlags, DXGI_FORMAT imageFormat, int a8, const char* name, const void* initData)> Image_Setup{0x14074B2A0};
|
||||
|
||||
WEAK symbol<const char*(int, int, int)> Key_KeynumToString{0x3D32D0};
|
||||
WEAK symbol<const char*(int, int, int)> Key_KeynumToString{0x1403D32D0};
|
||||
|
||||
WEAK symbol<void(int clientNum, const char* menu, int a3, int a4, unsigned int a5)> LUI_OpenMenu{0x5F0EE0};
|
||||
WEAK symbol<bool(int clientNum, const char* menu)> Menu_IsMenuOpenAndVisible{0x5EE1A0};
|
||||
WEAK symbol<void(int clientNum, const char* menu, int a3, int a4, unsigned int a5)> LUI_OpenMenu{0x1405F0EE0};
|
||||
WEAK symbol<bool(int clientNum, const char* menu)> Menu_IsMenuOpenAndVisible{0x1405EE1A0};
|
||||
|
||||
WEAK symbol<Material*(const char* material)> Material_RegisterHandle{0x759BA0};
|
||||
WEAK symbol<Material*(const char* material)> Material_RegisterHandle{0x140759BA0};
|
||||
|
||||
WEAK symbol<void(pathnode_t*, float* out)> PathNode_WorldifyPosFromParent{0x525830};
|
||||
WEAK symbol<void(pathnode_t*, float* out)> PathNode_WorldifyPosFromParent{0x140525830};
|
||||
|
||||
WEAK symbol<const float*(const float* v)> Scr_AllocVector{0x5C3220};
|
||||
WEAK symbol<void()> Scr_ClearOutParams{0x5C6E50};
|
||||
WEAK symbol<scr_entref_t(unsigned int entId)> Scr_GetEntityIdRef{0x5C56C0};
|
||||
WEAK symbol<unsigned int(int entnum, unsigned int classnum)> Scr_GetEntityId{0x5C5610};
|
||||
WEAK symbol<int(unsigned int classnum, int entnum, int offset)> Scr_SetObjectField{0x512190};
|
||||
WEAK symbol<void(unsigned int id, scr_string_t stringValue, unsigned int paramcount)> Scr_NotifyId{0x5C8240};
|
||||
WEAK symbol<unsigned int(unsigned int threadId)> Scr_GetSelf{0x5C57C0};
|
||||
WEAK symbol<void()> Scr_ErrorInternal{0x5C6EC0};
|
||||
WEAK symbol<const float*(const float* v)> Scr_AllocVector{0x1405C3220};
|
||||
WEAK symbol<void()> Scr_ClearOutParams{0x1405C6E50};
|
||||
WEAK symbol<scr_entref_t(unsigned int entId)> Scr_GetEntityIdRef{0x1405C56C0};
|
||||
WEAK symbol<unsigned int(int entnum, unsigned int classnum)> Scr_GetEntityId{0x1405C5610};
|
||||
WEAK symbol<int(unsigned int classnum, int entnum, int offset)> Scr_SetObjectField{0x140512190};
|
||||
WEAK symbol<void(unsigned int id, scr_string_t stringValue, unsigned int paramcount)> Scr_NotifyId{0x1405C8240};
|
||||
WEAK symbol<unsigned int(unsigned int threadId)> Scr_GetSelf{0x1405C57C0};
|
||||
WEAK symbol<void()> Scr_ErrorInternal{0x1405C6EC0};
|
||||
|
||||
WEAK symbol<unsigned int(unsigned int localId, const char* pos, unsigned int paramcount)> VM_Execute{0x5C8DB0};
|
||||
WEAK symbol<unsigned int(unsigned int localId, const char* pos, unsigned int paramcount)> VM_Execute{0x1405C8DB0};
|
||||
|
||||
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{0x3C9710};
|
||||
float* color, Material* material)> R_AddCmdDrawStretchPic{0x1403C9710};
|
||||
WEAK symbol<void(float x, float y, float width, float height, float s0, float t0, float s1, float t1,
|
||||
float angle, float* color, Material* material)> R_AddCmdDrawStretchPicRotateXY{0x3C99B0};
|
||||
float angle, float* color, Material* material)> R_AddCmdDrawStretchPicRotateXY{0x1403C99B0};
|
||||
WEAK symbol<void*(const char* text, int maxChars, Font_s* font, float x, float y, float xScale, float yScale,
|
||||
float rotation, float* color, int style)> R_AddCmdDrawText{0x76C660};
|
||||
float rotation, float* color, int style)> R_AddCmdDrawText{0x14076C660};
|
||||
WEAK symbol<void(const char* text, int maxChars, Font_s* font, float x, float y, float xScale, float yScale,
|
||||
float rotation, float* color1, float* color2, int style)> R_AddCmdDrawText2{0x76C860};
|
||||
WEAK symbol<void(rectangle* rect, float a2, float a3, float a4, float a5, float* color, Material* material)> R_DrawRectangle{0x76A280};
|
||||
float rotation, float* color1, float* color2, int style)> R_AddCmdDrawText2{0x14076C860};
|
||||
WEAK symbol<void(rectangle* rect, float a2, float a3, float a4, float a5, float* color, Material* material)> R_DrawRectangle{0x14076A280};
|
||||
WEAK symbol<void(const char* text, int maxChars, Font_s* font, int fontSize, float x, float y, float xScale, float yScale, float rotation,
|
||||
const float* color, int style, int cursorPos, char cursor)> R_AddCmdDrawTextWithCursor{0x76CAF0};
|
||||
const float* color, int style, int cursorPos, char cursor)> R_AddCmdDrawTextWithCursor{0x14076CAF0};
|
||||
WEAK symbol<void*(const char* text, int maxChars, Font_s* font, float x, float y, float xScale, float yScale,
|
||||
int a8, float* color1, unsigned int style, rgba color2)> R_AddCmdDrawTextGradient{0x76C570};
|
||||
WEAK symbol<Font_s*(const char* font, int size)> R_RegisterFont{0x746FE0};
|
||||
WEAK symbol<int(const char* text, int maxChars, Font_s* font)> R_TextWidth{0x7472A0};
|
||||
WEAK symbol<void()> R_SyncRenderThread{0x76E7D0};
|
||||
int a8, float* color1, unsigned int style, rgba color2)> R_AddCmdDrawTextGradient{0x14076C570};
|
||||
WEAK symbol<Font_s*(const char* font, int size)> R_RegisterFont{0x140746FE0};
|
||||
WEAK symbol<int(const char* text, int maxChars, Font_s* font)> R_TextWidth{0x1407472A0};
|
||||
WEAK symbol<void()> R_SyncRenderThread{0x14076E7D0};
|
||||
WEAK symbol<void(const void* obj, void* pose, unsigned int entnum, unsigned int renderFxFlags, float* lightingOrigin,
|
||||
float materialTime, __int64 a7, __int64 a8)> R_AddDObjToScene{0x775C40};
|
||||
float materialTime, __int64 a7, __int64 a8)> R_AddDObjToScene{0x140775C40};
|
||||
|
||||
WEAK symbol<ScreenPlacement*()> ScrPlace_GetViewPlacement{0x3E16A0};
|
||||
WEAK symbol<ScreenPlacement*()> ScrPlace_GetView{0x3E1660};
|
||||
WEAK symbol<ScreenPlacement*()> ScrPlace_GetViewPlacement{0x1403E16A0};
|
||||
WEAK symbol<ScreenPlacement*()> ScrPlace_GetView{0x1403E1660};
|
||||
|
||||
WEAK symbol<const char*(scr_string_t stringValue)> SL_ConvertToString{0x5BFBB0};
|
||||
WEAK symbol<scr_string_t(const char* str, unsigned int user)> SL_GetString{0x5C0170};
|
||||
WEAK symbol<const char*(scr_string_t stringValue)> SL_ConvertToString{0x1405BFBB0};
|
||||
WEAK symbol<scr_string_t(const char* str, unsigned int user)> SL_GetString{0x1405C0170};
|
||||
|
||||
WEAK symbol<bool()> SV_Loaded{0x6B3860};
|
||||
WEAK symbol<bool()> SV_Loaded{0x1406B3860};
|
||||
|
||||
WEAK symbol<void()> Sys_ShowConsole{0x633080};
|
||||
WEAK symbol<bool()> Sys_IsDatabaseReady2{0x5A9FE0};
|
||||
WEAK symbol<int()> Sys_Milliseconds{0x650720};
|
||||
WEAK symbol<bool()> Sys_IsMainThread{0x5AA020};
|
||||
WEAK symbol<void()> Sys_ShowConsole{0x140633080};
|
||||
WEAK symbol<bool()> Sys_IsDatabaseReady2{0x1405A9FE0};
|
||||
WEAK symbol<int()> Sys_Milliseconds{0x140650720};
|
||||
WEAK symbol<bool()> Sys_IsMainThread{0x1405AA020};
|
||||
|
||||
WEAK symbol<const char*(const char* string)> UI_SafeTranslateString{0x5A2930};
|
||||
WEAK symbol<int(int localClientNum, const char* sound)> UI_PlayLocalSoundAlias{0x606080};
|
||||
WEAK symbol<const char*(const char* string)> UI_SafeTranslateString{0x1405A2930};
|
||||
WEAK symbol<int(int localClientNum, const char* sound)> UI_PlayLocalSoundAlias{0x140606080};
|
||||
|
||||
WEAK symbol<void(pmove_t* move, trace_t*, const float*, const float*,
|
||||
const Bounds*, int, int)> PM_playerTrace{0x68F0A0};
|
||||
const Bounds*, int, int)> PM_playerTrace{0x14068F0A0};
|
||||
WEAK symbol<void(pmove_t*, trace_t*, const float*, const float*,
|
||||
const Bounds*, int, int)> PM_trace{0x68F1D0};
|
||||
const Bounds*, int, int)> PM_trace{0x14068F1D0};
|
||||
|
||||
WEAK symbol<void*(jmp_buf* Buf, int Value)> longjmp{0x89EED0};
|
||||
WEAK symbol<int(jmp_buf* Buf)> _setjmp{0x8EC2E0};
|
||||
WEAK symbol<void*(jmp_buf* Buf, int Value)> longjmp{0x14089EED0};
|
||||
WEAK symbol<int(jmp_buf* Buf)> _setjmp{0x1408EC2E0};
|
||||
|
||||
// Variables
|
||||
|
||||
WEAK symbol<cmd_function_s*> cmd_functions{0xAD17BB8};
|
||||
WEAK symbol<CmdArgs> cmd_args{0xAD17A60};
|
||||
WEAK symbol<const char*> command_whitelist{0xBF84E0};
|
||||
WEAK symbol<cmd_function_s*> cmd_functions{0x14AD17BB8};
|
||||
WEAK symbol<CmdArgs> cmd_args{0x14AD17A60};
|
||||
WEAK symbol<const char*> command_whitelist{0x140BF84E0};
|
||||
|
||||
WEAK symbol<HWND> hWnd{0xCCF81C0};
|
||||
WEAK symbol<HWND> hWnd{0x14CCF81C0};
|
||||
|
||||
WEAK symbol<const char*> g_assetNames{0xBEF280};
|
||||
WEAK symbol<int> g_poolSize{0xBF2E40};
|
||||
WEAK symbol<const char*> g_assetNames{0x140BEF280};
|
||||
WEAK symbol<int> g_poolSize{0x140BF2E40};
|
||||
|
||||
WEAK symbol<gentity_s> g_entities{0x52DDDA0};
|
||||
WEAK symbol<int> num_entities{0x55CC738};
|
||||
WEAK symbol<PathData> pathData{0x52CCDA0};
|
||||
WEAK symbol<int> vehicle_pathnode_count{0xD009A30};
|
||||
WEAK symbol<gentity_s> g_entities{0x1452DDDA0};
|
||||
WEAK symbol<int> num_entities{0x1455CC738};
|
||||
WEAK symbol<PathData> pathData{0x1452CCDA0};
|
||||
WEAK symbol<int> vehicle_pathnode_count{0x14D009A30};
|
||||
|
||||
WEAK symbol<DWORD> threadIds{0xB11DC80};
|
||||
WEAK symbol<DWORD> threadIds{0x14B11DC80};
|
||||
|
||||
WEAK symbol<GfxDrawMethod_s> gfxDrawMethod{0xEDF9E00};
|
||||
WEAK symbol<refdef_t> refdef{0x1BC2500};
|
||||
WEAK symbol<GfxDrawMethod_s> gfxDrawMethod{0x14EDF9E00};
|
||||
WEAK symbol<refdef_t> refdef{0x141BC2500};
|
||||
|
||||
WEAK symbol<int> keyCatchers{0x203F3C0};
|
||||
WEAK symbol<int> keyCatchers{0x14203F3C0};
|
||||
|
||||
WEAK symbol<PlayerKeyState> playerKeys{0x1E8767C};
|
||||
WEAK symbol<PlayerKeyState> playerKeys{0x141E8767C};
|
||||
|
||||
WEAK symbol<int> dvarCount{0xBFBB310};
|
||||
WEAK symbol<dvar_t> dvarPool{0xBFBB320};
|
||||
WEAK symbol<int> dvarCount{0x14BFBB310};
|
||||
WEAK symbol<dvar_t> dvarPool{0x14BFBB320};
|
||||
|
||||
WEAK symbol<unsigned int> levelEntityId{0xB5E0B30};
|
||||
WEAK symbol<int> g_script_error_level{0xBA9CC24};
|
||||
WEAK symbol<jmp_buf> g_script_error{0xBA9CD40};
|
||||
WEAK symbol<scr_classStruct_t> g_classMap{0xBF95C0};
|
||||
WEAK symbol<unsigned int> levelEntityId{0x14B5E0B30};
|
||||
WEAK symbol<int> g_script_error_level{0x14BA9CC24};
|
||||
WEAK symbol<jmp_buf> g_script_error{0x14BA9CD40};
|
||||
WEAK symbol<scr_classStruct_t> g_classMap{0x140BF95C0};
|
||||
|
||||
WEAK symbol<scrVarGlob_t> scr_VarGlob{0xB617C00};
|
||||
WEAK symbol<scrVmPub_t> scr_VmPub{0xBA9EE40};
|
||||
WEAK symbol<function_stack_t> scr_function_stack{0xBAA93C0};
|
||||
WEAK symbol<scrVarGlob_t> scr_VarGlob{0x14B617C00};
|
||||
WEAK symbol<scrVmPub_t> scr_VmPub{0x14BA9EE40};
|
||||
WEAK symbol<function_stack_t> scr_function_stack{0x14BAA93C0};
|
||||
|
||||
namespace hks
|
||||
{
|
||||
WEAK symbol<lua_State*> lua_state{0x19D83E8};
|
||||
WEAK symbol<void(lua_State* s, const char* str, unsigned int l)> hksi_lua_pushlstring{0x287410};
|
||||
WEAK symbol<const char*(lua_State* s, const HksObject* obj, unsigned int* len)> hks_obj_tolstring{0x287410};
|
||||
WEAK symbol<int(lua_State* s, const HksObject* obj, HksObject* ret)> hks_obj_getmetatable{0x2DA210};
|
||||
WEAK symbol<HksObject*(HksObject* result, lua_State* s, const HksObject* table, const HksObject* key)> hks_obj_getfield{0x2D9E20};
|
||||
WEAK symbol<void(lua_State* s, const HksObject* tbl, const HksObject* key, const HksObject* val)> hks_obj_settable{0x2DB040};
|
||||
WEAK symbol<HksObject* (HksObject* result, lua_State* s, const HksObject* table, const HksObject* key)> hks_obj_gettable{0x2DA300};
|
||||
WEAK symbol<void(lua_State* s, int nargs, int nresults, const unsigned int* pc)> vm_call_internal{0x30AB60};
|
||||
WEAK symbol<void(lua_State* s, int index)> hksi_lua_pushvalue{0x2DE040};
|
||||
WEAK symbol<HashTable*(lua_State* s, unsigned int arraySize, unsigned int hashSize)> Hashtable_Create{0x2C8290};
|
||||
WEAK symbol<HksObject*(HashTable* t, HksObject* result, HksObject* key)> Hashtable_getNextHash{0x2D5150};
|
||||
WEAK symbol<void(lua_State* s, const HksObject* tbl, HksObject* key, HksObject* retval)> hks_obj_next{0x2DA850};
|
||||
WEAK symbol<lua_State*> lua_state{0x1419D83E8};
|
||||
WEAK symbol<void(lua_State* s, const char* str, unsigned int l)> hksi_lua_pushlstring{0x140287410};
|
||||
WEAK symbol<const char*(lua_State* s, const HksObject* obj, unsigned int* len)> hks_obj_tolstring{0x140287410};
|
||||
WEAK symbol<int(lua_State* s, const HksObject* obj, HksObject* ret)> hks_obj_getmetatable{0x1402DA210};
|
||||
WEAK symbol<HksObject*(HksObject* result, lua_State* s, const HksObject* table, const HksObject* key)> hks_obj_getfield{0x1402D9E20};
|
||||
WEAK symbol<void(lua_State* s, const HksObject* tbl, const HksObject* key, const HksObject* val)> hks_obj_settable{0x1402DB040};
|
||||
WEAK symbol<HksObject* (HksObject* result, lua_State* s, const HksObject* table, const HksObject* key)> hks_obj_gettable{0x1402DA300};
|
||||
WEAK symbol<void(lua_State* s, int nargs, int nresults, const unsigned int* pc)> vm_call_internal{0x14030AB60};
|
||||
WEAK symbol<void(lua_State* s, int index)> hksi_lua_pushvalue{0x1402DE040};
|
||||
WEAK symbol<HashTable*(lua_State* s, unsigned int arraySize, unsigned int hashSize)> Hashtable_Create{0x1402C8290};
|
||||
WEAK symbol<HksObject*(HashTable* t, HksObject* result, HksObject* key)> Hashtable_getNextHash{0x1402D5150};
|
||||
WEAK symbol<void(lua_State* s, const HksObject* tbl, HksObject* key, HksObject* retval)> hks_obj_next{0x1402DA850};
|
||||
WEAK symbol<cclosure*(lua_State* s, lua_function function, int num_upvalues,
|
||||
int internal_, int profilerTreatClosureAsFunc)> cclosure_Create{0x2C84B0};
|
||||
WEAK symbol<int(lua_State* s, int t)> hksi_luaL_ref{0x2E4520};
|
||||
WEAK symbol<void(lua_State* s, int t, int ref)> hksi_luaL_unref{0x2DCE50};
|
||||
int internal_, int profilerTreatClosureAsFunc)> cclosure_Create{0x1402C84B0};
|
||||
WEAK symbol<int(lua_State* s, int t)> hksi_luaL_ref{0x1402E4520};
|
||||
WEAK symbol<void(lua_State* s, int t, int ref)> hksi_luaL_unref{0x1402DCE50};
|
||||
}
|
||||
}
|
@ -360,7 +360,7 @@ namespace ui_scripting::lua
|
||||
game_type["playmenuvideo"] = [](const game&, const std::string& video)
|
||||
{
|
||||
reinterpret_cast<void (*)(const char* a1, int a2, int a3)>
|
||||
(0x71B970_b)(video.data(), 64, 0);
|
||||
(0x14071B970)(video.data(), 64, 0);
|
||||
};
|
||||
|
||||
game_type["sharedset"] = [](const game&, const std::string& key, const std::string& value)
|
||||
|
@ -31,7 +31,7 @@ FARPROC loader::load(const utils::nt::library& library, const std::string& buffe
|
||||
return FARPROC(library.get_ptr() + source.get_relative_entry_point());
|
||||
}
|
||||
|
||||
FARPROC loader::load_library(const std::string& filename, uint64_t* base_address) const
|
||||
FARPROC loader::load_library(const std::string& filename) const
|
||||
{
|
||||
const auto target = utils::nt::library::load(filename);
|
||||
if (!target)
|
||||
@ -39,9 +39,6 @@ FARPROC loader::load_library(const std::string& filename, uint64_t* base_address
|
||||
throw std::runtime_error{"Failed to map binary!"};
|
||||
}
|
||||
|
||||
const auto base = size_t(target.get_ptr());
|
||||
*base_address = base;
|
||||
|
||||
this->load_imports(target, target);
|
||||
this->load_tls(target, target);
|
||||
|
||||
|
@ -5,7 +5,7 @@ class loader final
|
||||
{
|
||||
public:
|
||||
FARPROC load(const utils::nt::library& library, const std::string& buffer) const;
|
||||
FARPROC load_library(const std::string& filename, uint64_t* base_address) const;
|
||||
FARPROC load_library(const std::string& filename) const;
|
||||
|
||||
void set_import_resolver(const std::function<void*(const std::string&, const std::string&)>& resolver);
|
||||
|
||||
|
@ -39,7 +39,7 @@ launcher::mode detect_mode_from_arguments()
|
||||
return launcher::mode::none;
|
||||
}
|
||||
|
||||
FARPROC load_binary(const launcher::mode mode, uint64_t* base_address)
|
||||
FARPROC load_binary(const launcher::mode mode)
|
||||
{
|
||||
loader loader;
|
||||
utils::nt::library self;
|
||||
@ -87,7 +87,7 @@ FARPROC load_binary(const launcher::mode mode, uint64_t* base_address)
|
||||
binary.data()));
|
||||
}
|
||||
|
||||
return loader.load_library(binary, base_address);
|
||||
return loader.load(self, data);
|
||||
}
|
||||
|
||||
void remove_crash_file()
|
||||
@ -97,7 +97,7 @@ void remove_crash_file()
|
||||
|
||||
void verify_version()
|
||||
{
|
||||
const auto value = *reinterpret_cast<DWORD*>(0x123456_b);
|
||||
const auto value = *reinterpret_cast<DWORD*>(0x140123456);
|
||||
if (value != 0xE465E151)
|
||||
{
|
||||
throw std::runtime_error("Unsupported Call of Duty: Modern Warfare 2 Campaign Remastered version");
|
||||
@ -184,14 +184,12 @@ int main()
|
||||
|
||||
game::environment::set_mode(mode);
|
||||
|
||||
uint64_t base_address{};
|
||||
entry_point = load_binary(mode, &base_address);
|
||||
entry_point = load_binary(mode);
|
||||
if (!entry_point)
|
||||
{
|
||||
throw std::runtime_error("Unable to load binary into memory");
|
||||
}
|
||||
|
||||
game::base_address = base_address;
|
||||
verify_version();
|
||||
|
||||
if (!component_loader::post_load())
|
||||
|
@ -1,6 +1,13 @@
|
||||
#include <std_include.hpp>
|
||||
|
||||
#pragma comment(linker, "/base:0x7FFF00000000")
|
||||
#pragma comment(linker, "/merge:.data=.cld")
|
||||
#pragma comment(linker, "/merge:.rdata=.clr")
|
||||
#pragma comment(linker, "/merge:.cl=.main")
|
||||
#pragma comment(linker, "/merge:.text=.main")
|
||||
#pragma comment(linker, "/stack:0x1000000")
|
||||
#pragma comment(linker, "/base:0x140000000")
|
||||
#pragma bss_seg(".payload")
|
||||
char payload_data[BINARY_PAYLOAD_SIZE];
|
||||
|
||||
extern "C"
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user