mirror of
https://github.com/XLabsProject/s1x-client.git
synced 2023-08-02 15:02:12 +02:00
Add bounce dvar to multiplayer
This commit is contained in:
parent
ee3cc816ba
commit
a5a6ab8f04
@ -28,6 +28,30 @@ namespace gameplay
|
||||
(results, start, end, bounds, capsule, contents, origin, angles); // CM_TransformedCapsuleTrace
|
||||
}
|
||||
}
|
||||
|
||||
const auto pm_bouncing_stub_mp = utils::hook::assemble([](utils::hook::assembler& a)
|
||||
{
|
||||
const auto no_bounce = a.newLabel();
|
||||
const auto loc_14014DF48 = a.newLabel();
|
||||
|
||||
a.push(rax);
|
||||
|
||||
a.mov(rax, qword_ptr(reinterpret_cast<int64_t>(&dvars::pm_bouncing)));
|
||||
a.mov(al, byte_ptr(rax, 0x10));
|
||||
a.cmp(byte_ptr(rbp, -0x2D), al);
|
||||
|
||||
a.pop(rax);
|
||||
a.jz(no_bounce);
|
||||
a.jmp(0x14014DFB0);
|
||||
|
||||
a.bind(no_bounce);
|
||||
a.cmp(dword_ptr(rsp, 0x70), 0);
|
||||
a.jnz(loc_14014DF48);
|
||||
a.jmp(0x14014DFA2);
|
||||
|
||||
a.bind(loc_14014DF48);
|
||||
a.jmp(0x14014DF48);
|
||||
});
|
||||
}
|
||||
|
||||
class component final : public component_interface
|
||||
@ -45,6 +69,11 @@ namespace gameplay
|
||||
dvars::g_playerCollision = game::Dvar_RegisterBool("g_playerCollision", true, game::DVAR_FLAG_REPLICATED, "Flag whether player collision is on or off");
|
||||
utils::hook::call(0x1404563DA, cm_transformed_capsule_trace_stub); // SV_ClipMoveToEntity
|
||||
utils::hook::call(0x1401F7F8F, cm_transformed_capsule_trace_stub); // CG_ClipMoveToEntity
|
||||
|
||||
// Implement bouncing dvar
|
||||
utils::hook::jump(0x14014DF91, pm_bouncing_stub_mp, true);
|
||||
dvars::pm_bouncing = game::Dvar_RegisterBool("pm_bouncing", false,
|
||||
game::DvarFlags::DVAR_FLAG_REPLICATED, "Enable bouncing");
|
||||
}
|
||||
};
|
||||
}
|
||||
|
@ -20,6 +20,8 @@ namespace dvars
|
||||
game::dvar_t* g_playerEjection = nullptr;
|
||||
game::dvar_t* g_playerCollision = nullptr;
|
||||
|
||||
game::dvar_t* pm_bouncing = nullptr;
|
||||
|
||||
game::dvar_t* r_fullbright = nullptr;
|
||||
|
||||
std::string dvar_get_vector_domain(const int components, const game::dvar_limits& domain)
|
||||
|
@ -20,6 +20,8 @@ namespace dvars
|
||||
extern game::dvar_t* g_playerCollision;
|
||||
extern game::dvar_t* g_playerEjection;
|
||||
|
||||
extern game::dvar_t* pm_bouncing;
|
||||
|
||||
extern game::dvar_t* r_fullbright;
|
||||
|
||||
std::string dvar_get_vector_domain(const int components, const game::dvar_limits& domain);
|
||||
|
Loading…
Reference in New Issue
Block a user