Rocket jumps
This commit is contained in:
parent
2c39b16a67
commit
2251319b81
@ -9,6 +9,7 @@ namespace Components
|
|||||||
Dvar::Var Movement::CGUfoScaler;
|
Dvar::Var Movement::CGUfoScaler;
|
||||||
Dvar::Var Movement::CGNoclipScaler;
|
Dvar::Var Movement::CGNoclipScaler;
|
||||||
Dvar::Var Movement::BGBouncesAllAngles;
|
Dvar::Var Movement::BGBouncesAllAngles;
|
||||||
|
Dvar::Var Movement::BGRocketJump;
|
||||||
Game::dvar_t* Movement::BGBounces;
|
Game::dvar_t* Movement::BGBounces;
|
||||||
|
|
||||||
float Movement::PM_CmdScaleForStance(const Game::pmove_s* pm)
|
float Movement::PM_CmdScaleForStance(const Game::pmove_s* pm)
|
||||||
@ -220,6 +221,21 @@ namespace Components
|
|||||||
Game::Jump_ClearState(ps);
|
Game::Jump_ClearState(ps);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Game::gentity_s* Movement::Weapon_RocketLauncher_Fire_Hk(Game::gentity_s* ent, unsigned int weaponIndex,
|
||||||
|
float spread, Game::weaponParms* wp, const float* gunVel, Game::lockonFireParms* lockParms, bool a7)
|
||||||
|
{
|
||||||
|
auto* result = Game::Weapon_RocketLauncher_Fire(ent, weaponIndex, spread, wp, gunVel, lockParms, a7);
|
||||||
|
|
||||||
|
if (ent->client != nullptr && BGRocketJump.get<bool>())
|
||||||
|
{
|
||||||
|
ent->client->ps.velocity[0] += (0 - wp->forward[0]) * 64.0f;
|
||||||
|
ent->client->ps.velocity[1] += (0 - wp->forward[1]) * 64.0f;
|
||||||
|
ent->client->ps.velocity[2] += (0 - wp->forward[2]) * 64.0f;
|
||||||
|
}
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
Game::dvar_t* Movement::Dvar_RegisterLastStandSpeedScale(const char* name, float value,
|
Game::dvar_t* Movement::Dvar_RegisterLastStandSpeedScale(const char* name, float value,
|
||||||
float min, float max, int, const char* desc)
|
float min, float max, int, const char* desc)
|
||||||
{
|
{
|
||||||
@ -272,6 +288,9 @@ namespace Components
|
|||||||
|
|
||||||
Movement::BGBouncesAllAngles = Dvar::Register<bool>("bg_bouncesAllAngles",
|
Movement::BGBouncesAllAngles = Dvar::Register<bool>("bg_bouncesAllAngles",
|
||||||
false, Game::DVAR_FLAG_REPLICATED, "Force bounce from all angles");
|
false, Game::DVAR_FLAG_REPLICATED, "Force bounce from all angles");
|
||||||
|
|
||||||
|
Movement::BGRocketJump = Dvar::Register<bool>("bg_rocketJump",
|
||||||
|
false, Game::DVAR_FLAG_REPLICATED, "Enable CoD4 rocket jumps");
|
||||||
});
|
});
|
||||||
|
|
||||||
// Hook PM_CmdScaleForStance in PM_CmdScale_Walk
|
// Hook PM_CmdScaleForStance in PM_CmdScale_Walk
|
||||||
@ -294,9 +313,8 @@ namespace Components
|
|||||||
Utils::Hook(0x4B1B2D, Movement::PM_StepSlideMoveStub, HOOK_JUMP).install()->quick();
|
Utils::Hook(0x4B1B2D, Movement::PM_StepSlideMoveStub, HOOK_JUMP).install()->quick();
|
||||||
Utils::Hook(0x57383E, Movement::Jump_ClearStateHook, HOOK_CALL).install()->quick();
|
Utils::Hook(0x57383E, Movement::Jump_ClearStateHook, HOOK_CALL).install()->quick();
|
||||||
Utils::Hook(0x4B1B97, Movement::PM_ProjectVelocityStub, HOOK_CALL).install()->quick();
|
Utils::Hook(0x4B1B97, Movement::PM_ProjectVelocityStub, HOOK_CALL).install()->quick();
|
||||||
}
|
|
||||||
|
|
||||||
Movement::~Movement()
|
// Rocket jump
|
||||||
{
|
Utils::Hook(0x4A4F9B, Movement::Weapon_RocketLauncher_Fire_Hk, HOOK_CALL).install()->quick(); // FireWeapon
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -6,7 +6,6 @@ namespace Components
|
|||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
Movement();
|
Movement();
|
||||||
~Movement();
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
enum BouncesSettings { DISABLED, ENABLED, DOUBLE };
|
enum BouncesSettings { DISABLED, ENABLED, DOUBLE };
|
||||||
@ -18,6 +17,7 @@ namespace Components
|
|||||||
static Dvar::Var CGUfoScaler;
|
static Dvar::Var CGUfoScaler;
|
||||||
static Dvar::Var CGNoclipScaler;
|
static Dvar::Var CGNoclipScaler;
|
||||||
static Dvar::Var BGBouncesAllAngles;
|
static Dvar::Var BGBouncesAllAngles;
|
||||||
|
static Dvar::Var BGRocketJump;
|
||||||
// Can't use Var class inside assembly stubs
|
// Can't use Var class inside assembly stubs
|
||||||
static Game::dvar_t* BGBounces;
|
static Game::dvar_t* BGBounces;
|
||||||
|
|
||||||
@ -32,6 +32,8 @@ namespace Components
|
|||||||
static void PM_ProjectVelocityStub(const float* velIn, const float* normal, float* velOut);
|
static void PM_ProjectVelocityStub(const float* velIn, const float* normal, float* velOut);
|
||||||
static void Jump_ClearStateHook(Game::playerState_s* ps);
|
static void Jump_ClearStateHook(Game::playerState_s* ps);
|
||||||
|
|
||||||
|
static Game::gentity_s* Weapon_RocketLauncher_Fire_Hk(Game::gentity_s* ent, unsigned int weaponIndex, float spread, Game::weaponParms* wp, const float* gunVel, Game::lockonFireParms* lockParms, bool a7);
|
||||||
|
|
||||||
static Game::dvar_t* Dvar_RegisterLastStandSpeedScale(const char* name, float value, float min, float max, int flags, const char* desc);
|
static Game::dvar_t* Dvar_RegisterLastStandSpeedScale(const char* name, float value, float min, float max, int flags, const char* desc);
|
||||||
static Game::dvar_t* Dvar_RegisterSpectateSpeedScale(const char* name, float value, float min, float max, int flags, const char* desc);
|
static Game::dvar_t* Dvar_RegisterSpectateSpeedScale(const char* name, float value, float min, float max, int flags, const char* desc);
|
||||||
};
|
};
|
||||||
|
@ -377,6 +377,8 @@ namespace Game
|
|||||||
Field_AdjustScroll_t Field_AdjustScroll = Field_AdjustScroll_t(0x488C10);
|
Field_AdjustScroll_t Field_AdjustScroll = Field_AdjustScroll_t(0x488C10);
|
||||||
AimAssist_ApplyAutoMelee_t AimAssist_ApplyAutoMelee = AimAssist_ApplyAutoMelee_t(0x56A360);
|
AimAssist_ApplyAutoMelee_t AimAssist_ApplyAutoMelee = AimAssist_ApplyAutoMelee_t(0x56A360);
|
||||||
|
|
||||||
|
Weapon_RocketLauncher_Fire_t Weapon_RocketLauncher_Fire = Weapon_RocketLauncher_Fire_t(0x424680);
|
||||||
|
|
||||||
Jump_ClearState_t Jump_ClearState = Jump_ClearState_t(0x04B3890);
|
Jump_ClearState_t Jump_ClearState = Jump_ClearState_t(0x04B3890);
|
||||||
PM_playerTrace_t PM_playerTrace = PM_playerTrace_t(0x458980);
|
PM_playerTrace_t PM_playerTrace = PM_playerTrace_t(0x458980);
|
||||||
PM_Trace_t PM_Trace = PM_Trace_t(0x441F60);
|
PM_Trace_t PM_Trace = PM_Trace_t(0x441F60);
|
||||||
|
@ -133,13 +133,13 @@ namespace Game
|
|||||||
typedef void(__cdecl * Com_EndParseSession_t)();
|
typedef void(__cdecl * Com_EndParseSession_t)();
|
||||||
extern Com_EndParseSession_t Com_EndParseSession;
|
extern Com_EndParseSession_t Com_EndParseSession;
|
||||||
|
|
||||||
typedef void(__cdecl * Com_BeginParseSession_t)(const char* why);
|
typedef void(__cdecl * Com_BeginParseSession_t)(const char* filename);
|
||||||
extern Com_BeginParseSession_t Com_BeginParseSession;
|
extern Com_BeginParseSession_t Com_BeginParseSession;
|
||||||
|
|
||||||
typedef void(__cdecl * Com_SetSpaceDelimited_t)(int);
|
typedef void(__cdecl * Com_SetSpaceDelimited_t)(int);
|
||||||
extern Com_SetSpaceDelimited_t Com_SetSpaceDelimited;
|
extern Com_SetSpaceDelimited_t Com_SetSpaceDelimited;
|
||||||
|
|
||||||
typedef char* (__cdecl * Com_Parse_t)(const char **data_p);
|
typedef char*(__cdecl * Com_Parse_t)(const char** data_p);
|
||||||
extern Com_Parse_t Com_Parse;
|
extern Com_Parse_t Com_Parse;
|
||||||
|
|
||||||
typedef bool (__cdecl * Com_MatchToken_t)(const char **data_p, const char* token, int size);
|
typedef bool (__cdecl * Com_MatchToken_t)(const char **data_p, const char* token, int size);
|
||||||
@ -894,6 +894,9 @@ namespace Game
|
|||||||
typedef void(__cdecl * AimAssist_ApplyAutoMelee_t)(const AimInput* input, AimOutput* output);
|
typedef void(__cdecl * AimAssist_ApplyAutoMelee_t)(const AimInput* input, AimOutput* output);
|
||||||
extern AimAssist_ApplyAutoMelee_t AimAssist_ApplyAutoMelee;
|
extern AimAssist_ApplyAutoMelee_t AimAssist_ApplyAutoMelee;
|
||||||
|
|
||||||
|
typedef gentity_s*(__cdecl * Weapon_RocketLauncher_Fire_t)(gentity_s* ent, unsigned int weaponIndex, float spread, weaponParms* wp, const float* gunVel, lockonFireParms* lockParms, bool a7);
|
||||||
|
extern Weapon_RocketLauncher_Fire_t Weapon_RocketLauncher_Fire;
|
||||||
|
|
||||||
typedef void(__cdecl * Jump_ClearState_t)(playerState_s* ps);
|
typedef void(__cdecl * Jump_ClearState_t)(playerState_s* ps);
|
||||||
extern Jump_ClearState_t Jump_ClearState;
|
extern Jump_ClearState_t Jump_ClearState;
|
||||||
|
|
||||||
|
@ -860,6 +860,39 @@ namespace Game
|
|||||||
MaterialShaderArgument *args;
|
MaterialShaderArgument *args;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/* 9045 */
|
||||||
|
struct visionSetVars_t
|
||||||
|
{
|
||||||
|
bool glowEnable;
|
||||||
|
float glowBloomCutoff;
|
||||||
|
float glowBloomDesaturation;
|
||||||
|
float glowBloomIntensity0;
|
||||||
|
float glowBloomIntensity1;
|
||||||
|
float glowRadius0;
|
||||||
|
float glowRadius1;
|
||||||
|
float glowSkyBleedIntensity0;
|
||||||
|
float glowSkyBleedIntensity1;
|
||||||
|
bool filmEnable;
|
||||||
|
float filmBrightness;
|
||||||
|
float filmContrast;
|
||||||
|
float filmDesaturation;
|
||||||
|
float filmDesaturationDark;
|
||||||
|
bool filmInvert;
|
||||||
|
float filmLightTint[3];
|
||||||
|
float filmMediumTint[3];
|
||||||
|
float filmDarkTint[3];
|
||||||
|
bool charPrimaryUseTweaks;
|
||||||
|
float charPrimaryDiffuseScale;
|
||||||
|
float charPrimarySpecularScale;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct visField_t
|
||||||
|
{
|
||||||
|
const char* name;
|
||||||
|
int offset;
|
||||||
|
int fieldType;
|
||||||
|
};
|
||||||
|
|
||||||
enum OffhandClass
|
enum OffhandClass
|
||||||
{
|
{
|
||||||
OFFHAND_CLASS_NONE = 0x0,
|
OFFHAND_CLASS_NONE = 0x0,
|
||||||
@ -4608,6 +4641,19 @@ namespace Game
|
|||||||
AddonMapEnts *addonMapEnts;
|
AddonMapEnts *addonMapEnts;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/* 9210 */
|
||||||
|
struct weaponParms
|
||||||
|
{
|
||||||
|
float forward[3];
|
||||||
|
float right[3];
|
||||||
|
float up[3];
|
||||||
|
float muzzleTrace[3];
|
||||||
|
float gunForward[3];
|
||||||
|
unsigned int weaponIndex;
|
||||||
|
const WeaponDef* weapDef;
|
||||||
|
const WeaponCompleteDef* weapCompleteDef;
|
||||||
|
};
|
||||||
|
|
||||||
struct XAsset
|
struct XAsset
|
||||||
{
|
{
|
||||||
XAssetType type;
|
XAssetType type;
|
||||||
@ -5528,6 +5574,14 @@ namespace Game
|
|||||||
char pad[100];
|
char pad[100];
|
||||||
} gentity_t;
|
} gentity_t;
|
||||||
|
|
||||||
|
struct lockonFireParms
|
||||||
|
{
|
||||||
|
bool lockon;
|
||||||
|
gentity_s* target;
|
||||||
|
float targetPosOrOffset[3];
|
||||||
|
bool topFire;
|
||||||
|
};
|
||||||
|
|
||||||
#pragma pack(push, 1)
|
#pragma pack(push, 1)
|
||||||
typedef struct client_s
|
typedef struct client_s
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user