Add more dvars

This commit is contained in:
6arelyFuture 2022-05-13 13:38:07 +01:00
parent 01359b0f00
commit f114e9b185
No known key found for this signature in database
GPG Key ID: E883E2BC9657D955

View File

@ -8,6 +8,8 @@ namespace {
game::dvar_s** player_sustainAmmo = nullptr; game::dvar_s** player_sustainAmmo = nullptr;
game::dvar_s** player_sprintStrafeSpeedScale = nullptr; game::dvar_s** player_sprintStrafeSpeedScale = nullptr;
game::dvar_s** jump_height = nullptr;
utils::hook::detour pm_weapon_use_ammo_hook; utils::hook::detour pm_weapon_use_ammo_hook;
void pm_weapon_use_ammo_stub(void* ps, int wp, int amount) { void pm_weapon_use_ammo_stub(void* ps, int wp, int amount) {
@ -22,20 +24,62 @@ void __declspec(naked) bg_get_sprint_strafe_speed_scale_stub() {
mov eax, player_sprintStrafeSpeedScale mov eax, player_sprintStrafeSpeedScale
mov eax, [eax] // Access pointer mov eax, [eax] // Access pointer
fld dword ptr [eax + 0x18]; // dvar_s.current.value fld dword ptr [eax + 0x18] // dvar_s.current.value
pop eax pop eax
ret ret
} }
} }
void __declspec(naked) jump_start_mp_stub() {
static DWORD func = 0x7AEF10;
__asm {
mov esi, jump_height
mov esi, [esi] // Access pointer
movss xmm0, dword ptr [esi + 0x18] // dvar_s.current.value
// Game's code
mov ecx, ebp
mov esi, ebx
push 0x5CE940 // return address
jmp func
}
}
void __declspec(naked) jump_start_sp_stub() {
static DWORD func = 0x75BDD0;
__asm {
mov esi, jump_height
mov esi, [esi] // Access pointer
movss xmm0, dword ptr [esi + 0x18] // dvar_s.current.value
// Game's code
mov edx, ebp
mov esi, ebx
push 0x5D0440 // return address
jmp func
}
}
} // namespace } // namespace
class component final : public component_interface { class component final : public component_interface {
public: public:
void post_unpack() override { void post_unpack() override {
if (game::environment::t5mp()) {
jump_height = reinterpret_cast<game::dvar_s**>(0xC4F7D8);
utils::hook::jump(0x5CE92F, jump_start_mp_stub);
}
if (game::environment::t5zm()) { if (game::environment::t5zm()) {
player_sustainAmmo = reinterpret_cast<game::dvar_s**>(0xBCD250); player_sustainAmmo = reinterpret_cast<game::dvar_s**>(0xBCD250);
pm_weapon_use_ammo_hook.create(0x6979B0, &pm_weapon_use_ammo_stub); pm_weapon_use_ammo_hook.create(0x6979B0, &pm_weapon_use_ammo_stub);
jump_height = reinterpret_cast<game::dvar_s**>(0xBCAE58);
utils::hook::jump(0x5D042F, jump_start_sp_stub);
} }
player_sprintStrafeSpeedScale = player_sprintStrafeSpeedScale =