mirror of
https://github.com/Mauler125/r5sdk.git
synced 2025-02-09 19:15:03 +01:00
Client: fix numerous issues with CurveLook rebuild
Fix incorrect type for g_aimCurveConfig, its a static array, so it needs to be a single pointer not a double. Also fixed several blocks inside CurveLook that did not match the assembly code of the game. The aim-assist code is still broken however, pending research.
This commit is contained in:
parent
08a69db020
commit
886f1c6a53
@ -28,7 +28,6 @@ void C_Player::CurveLook(C_Player* player, CInput::UserInput_t* input, float a3,
|
|||||||
bool m_bAutoAim_UnknownBool1AC; // r13
|
bool m_bAutoAim_UnknownBool1AC; // r13
|
||||||
bool m_bAutoAim_UnknownBool1AD; // r15
|
bool m_bAutoAim_UnknownBool1AD; // r15
|
||||||
bool m_bAutoAim_UnknownBool1B1; // r14
|
bool m_bAutoAim_UnknownBool1B1; // r14
|
||||||
vec_t z; // eax
|
|
||||||
QAngle* v24; // rax
|
QAngle* v24; // rax
|
||||||
bool v25; // zf
|
bool v25; // zf
|
||||||
QAngle v26; // xmm0_12
|
QAngle v26; // xmm0_12
|
||||||
@ -40,12 +39,10 @@ void C_Player::CurveLook(C_Player* player, CInput::UserInput_t* input, float a3,
|
|||||||
int selectedGamePadLookCurve; // r12d
|
int selectedGamePadLookCurve; // r12d
|
||||||
float v33; // xmm7_4
|
float v33; // xmm7_4
|
||||||
int customAimSpeed; // eax
|
int customAimSpeed; // eax
|
||||||
char v36; // r10
|
|
||||||
int v37; // edx
|
int v37; // edx
|
||||||
float* v38; // rsi
|
float* v38; // rsi
|
||||||
char* v39; // rsi
|
char* v39; // rsi
|
||||||
float v40; // xmm6_4
|
float v40; // xmm6_4
|
||||||
float m_flUnknownFloat1B4; // xmm6_4
|
|
||||||
float v42; // xmm0_4
|
float v42; // xmm0_4
|
||||||
float v43; // xmm0_4
|
float v43; // xmm0_4
|
||||||
float v44; // xmm10_4
|
float v44; // xmm10_4
|
||||||
@ -69,7 +66,7 @@ void C_Player::CurveLook(C_Player* player, CInput::UserInput_t* input, float a3,
|
|||||||
float v66; // xmm7_4
|
float v66; // xmm7_4
|
||||||
QAngle v68; // [rsp+68h] [rbp-A0h] BYREF
|
QAngle v68; // [rsp+68h] [rbp-A0h] BYREF
|
||||||
QAngle v69; // [rsp+78h] [rbp-90h] BYREF
|
QAngle v69; // [rsp+78h] [rbp-90h] BYREF
|
||||||
Vector3D v70; // [rsp+88h] [rbp-80h] BYREF
|
Vector3D v70;
|
||||||
QAngle v71; // [rsp+178h] [rbp+70h] BYREF
|
QAngle v71; // [rsp+178h] [rbp+70h] BYREF
|
||||||
float m_flUnknownFloat1B8; // [rsp+188h] [rbp+80h]
|
float m_flUnknownFloat1B8; // [rsp+188h] [rbp+80h]
|
||||||
float v73; // [rsp+190h] [rbp+88h]
|
float v73; // [rsp+190h] [rbp+88h]
|
||||||
@ -124,26 +121,24 @@ void C_Player::CurveLook(C_Player* player, CInput::UserInput_t* input, float a3,
|
|||||||
|| C_Player__IsInTimeShift(player)
|
|| C_Player__IsInTimeShift(player)
|
||||||
|| v11 > 0.050000001
|
|| v11 > 0.050000001
|
||||||
|| !gamePadCustomEnabled && (unsigned int)C_Player__GetAimSpeed(player, isZoomed) == 7
|
|| !gamePadCustomEnabled && (unsigned int)C_Player__GetAimSpeed(player, isZoomed) == 7
|
||||||
|| (v19 = *(_QWORD*)&player->pl.lastPlayerView_angle.x, v70.z = player->pl.lastPlayerView_angle.z, *(_QWORD*)&v70.x = v19, *(float*)&v19 < -50.0)
|
|| (v19 = *(_QWORD*)&player->pl.lastPlayerView_angle.x, v70.z = player->pl.lastPlayerView_angle.z, *(_QWORD*)&v70.x = v19, *(float*)&v19 < -50.0f)
|
||||||
|| sub_1405AD4E0(player) < FLT_EPSILON)
|
|| sub_1405AD4E0(player) < FLT_EPSILON)
|
||||||
{
|
{
|
||||||
m_bAutoAim_UnknownBool1AC = 0;
|
m_bAutoAim_UnknownBool1AC = false;
|
||||||
m_bAutoAim_UnknownBool1AD = 0;
|
m_bAutoAim_UnknownBool1AD = false;
|
||||||
runAimAssist = 0;
|
runAimAssist = false;
|
||||||
m_bAutoAim_UnknownBool1B1 = 0;
|
m_bAutoAim_UnknownBool1B1 = false;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
m_bAutoAim_UnknownBool1AC = input->m_bAutoAim_UnknownBool1AC;
|
m_bAutoAim_UnknownBool1AC = input->m_bAutoAim_UnknownBool1AC;
|
||||||
m_bAutoAim_UnknownBool1AD = input->m_bAutoAim_UnknownBool1AD;
|
m_bAutoAim_UnknownBool1AD = input->m_bAutoAim_UnknownBool1AD;
|
||||||
m_bAutoAim_UnknownBool1B1 = input->m_bAutoAim_UnknownBool1B1;
|
|
||||||
runAimAssist = input->m_bAutoAim_UnknownBool1B0;
|
runAimAssist = input->m_bAutoAim_UnknownBool1B0;
|
||||||
|
m_bAutoAim_UnknownBool1B1 = input->m_bAutoAim_UnknownBool1B1;
|
||||||
}
|
}
|
||||||
|
|
||||||
z = input->m_vecUnknown1BC.z;
|
v70 = input->m_vecUnknown1BC;
|
||||||
m_flUnknownFloat1B8 = input->m_flUnknownFloat1B8;
|
m_flUnknownFloat1B8 = input->m_flUnknownFloat1B8;
|
||||||
*(_QWORD*)&v70.x = *(_QWORD*)&input->m_vecUnknown1BC.x;
|
|
||||||
v70.z = z;
|
|
||||||
v24 = sub_1406257E0(&v69, player);
|
v24 = sub_1406257E0(&v69, player);
|
||||||
v25 = !input->m_bUnknown1D4;
|
v25 = !input->m_bUnknown1D4;
|
||||||
*(_QWORD*)&v26.x = *(_QWORD*)&v24->x;
|
*(_QWORD*)&v26.x = *(_QWORD*)&v24->x;
|
||||||
@ -159,7 +154,7 @@ void C_Player::CurveLook(C_Player* player, CInput::UserInput_t* input, float a3,
|
|||||||
*(_QWORD*)&v69.x = v28;
|
*(_QWORD*)&v69.x = v28;
|
||||||
v69.z = v29;
|
v69.z = v29;
|
||||||
if (m_bAutoAim_UnknownBool1AD && m_bAutoAim_UnknownBool1B1)
|
if (m_bAutoAim_UnknownBool1AD && m_bAutoAim_UnknownBool1B1)
|
||||||
input->m_flUnknownFloat1B4 = 0.0;
|
input->m_flUnknownFloat1B4 = 0.0f;
|
||||||
else
|
else
|
||||||
input->m_flUnknownFloat1B4 = inputSampleFrametime + input->m_flUnknownFloat1B4;
|
input->m_flUnknownFloat1B4 = inputSampleFrametime + input->m_flUnknownFloat1B4;
|
||||||
|
|
||||||
@ -169,24 +164,17 @@ void C_Player::CurveLook(C_Player* player, CInput::UserInput_t* input, float a3,
|
|||||||
selectedGamePadLookCurve = 1;
|
selectedGamePadLookCurve = 1;
|
||||||
v33 = sub_1405B0BC0(player, input, 0);
|
v33 = sub_1405B0BC0(player, input, 0);
|
||||||
a5 = sub_1405B0BC0(player, input, 1);
|
a5 = sub_1405B0BC0(player, input, 1);
|
||||||
customAimSpeed = C_Player__GetAimSpeed(player, isZoomed);
|
|
||||||
v37 = *(_DWORD*)((unsigned int)(*dword_1423880E0) + *(_QWORD*)&player->gap_21a0[16]);
|
|
||||||
|
|
||||||
bool v35 = m_bAutoAim_UnknownBool1B1; // r9
|
bool v35 = m_bAutoAim_UnknownBool1B1; // r9
|
||||||
|
bool v36 = runAimAssist;
|
||||||
|
|
||||||
if (m_bAutoAim_UnknownBool1AC && m_bAutoAim_UnknownBool1AD)
|
if (!m_bAutoAim_UnknownBool1AD || !m_bAutoAim_UnknownBool1B1)
|
||||||
{
|
{
|
||||||
v36 = true;
|
v35 = false;
|
||||||
}
|
}
|
||||||
else
|
|
||||||
{
|
|
||||||
v36 = false;
|
|
||||||
|
|
||||||
if (!m_bAutoAim_UnknownBool1AC)
|
customAimSpeed = C_Player__GetAimSpeed(player, isZoomed);
|
||||||
{
|
v37 = *(_DWORD*)((unsigned int)(*dword_1423880E0) + *(_QWORD*)&player->gap_21a0[16]);
|
||||||
v35 = false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (gamePadCustomEnabled)
|
if (gamePadCustomEnabled)
|
||||||
{
|
{
|
||||||
@ -219,10 +207,10 @@ void C_Player::CurveLook(C_Player* player, CInput::UserInput_t* input, float a3,
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
m_flUnknownFloat1B4 = input->m_flUnknownFloat1B4;
|
float m_flUnknownFloat1B4 = input->m_flUnknownFloat1B4;
|
||||||
if (m_flUnknownFloat1B4 <= 0.2)
|
if (m_flUnknownFloat1B4 <= 0.2f)
|
||||||
{
|
{
|
||||||
if (m_flUnknownFloat1B4 > 0.1)
|
if (m_flUnknownFloat1B4 > 0.1f)
|
||||||
v40 = (float)((float)((float)(m_flUnknownFloat1B4 - 0.1f) / 0.1f) * 0.35000002f) + 0.64999998f;
|
v40 = (float)((float)((float)(m_flUnknownFloat1B4 - 0.1f) / 0.1f) * 0.35000002f) + 0.64999998f;
|
||||||
else
|
else
|
||||||
v40 = 0.64999998f;
|
v40 = 0.64999998f;
|
||||||
@ -235,8 +223,8 @@ void C_Player::CurveLook(C_Player* player, CInput::UserInput_t* input, float a3,
|
|||||||
|
|
||||||
v42 = m_flUnknownFloat1B8;
|
v42 = m_flUnknownFloat1B8;
|
||||||
sub_1405AF810(player, input, (__int64)v38, m_bAutoAim_UnknownBool1AC, v36, &v70, &v69, &v68, m_flUnknownFloat1B8);
|
sub_1405AF810(player, input, (__int64)v38, m_bAutoAim_UnknownBool1AC, v36, &v70, &v69, &v68, m_flUnknownFloat1B8);
|
||||||
inputSampleFrametime = (float)((float)(v42 * (float)(1.0 - v40)) + v40) * (float)(1.0 - (float)(v33 * 0.94999999f));
|
inputSampleFrametime = ((v42 * (1.0f - v40)) + v40) * (1.0f - (v33 * 0.94999999f));
|
||||||
v43 = sqrtf((float)(a3 * a3) + (float)(v73 * v73));
|
v43 = sqrtf((a3 * a3) + (v73 * v73));
|
||||||
v44 = v43;
|
v44 = v43;
|
||||||
|
|
||||||
const int gamePadLookCurve = gamepad_look_curve->GetInt();
|
const int gamePadLookCurve = gamepad_look_curve->GetInt();
|
||||||
@ -244,13 +232,13 @@ void C_Player::CurveLook(C_Player* player, CInput::UserInput_t* input, float a3,
|
|||||||
if (gamePadLookCurve <= 4u)
|
if (gamePadLookCurve <= 4u)
|
||||||
selectedGamePadLookCurve = gamePadLookCurve;
|
selectedGamePadLookCurve = gamePadLookCurve;
|
||||||
|
|
||||||
v45 = fabs((float)(v43 - 0.0f));
|
v45 = fabs((v43 - 0.0f));
|
||||||
if (v45 > 0.001f)
|
if (v45 > 0.001f)
|
||||||
{
|
{
|
||||||
if (gamePadCustomEnabled)
|
if (gamePadCustomEnabled)
|
||||||
v47 = GamePad_CalcOuterDeadzoneCustom(v43);
|
v47 = GamePad_CalcOuterDeadzoneCustom(v43);
|
||||||
else
|
else
|
||||||
v47 = GamePad_CalcOuterDeadzone(g_aimCurveConfig[selectedGamePadLookCurve], v43);
|
v47 = GamePad_CalcOuterDeadzone(&g_aimCurveConfig[selectedGamePadLookCurve], v43);
|
||||||
|
|
||||||
v46 = v47 / v44;
|
v46 = v47 / v44;
|
||||||
}
|
}
|
||||||
@ -293,8 +281,8 @@ void C_Player::CurveLook(C_Player* player, CInput::UserInput_t* input, float a3,
|
|||||||
v59 = v31 * v12;
|
v59 = v31 * v12;
|
||||||
v60 = v49 * v12;
|
v60 = v49 * v12;
|
||||||
C_WeaponX* pWeapon = C_BaseCombatCharacter__GetActiveWeapon(player);
|
C_WeaponX* pWeapon = C_BaseCombatCharacter__GetActiveWeapon(player);
|
||||||
if (pWeapon && C_Player__GetZoomFrac(player) >= 0.99000001 && pWeapon->m_modVars[412])
|
if (pWeapon && C_Player__GetZoomFrac(player) >= 0.99000001f && pWeapon->m_modVars[412])
|
||||||
v62 = *v38;
|
v62 = v38[0];
|
||||||
else
|
else
|
||||||
v62 = v38[1];
|
v62 = v38[1];
|
||||||
|
|
||||||
@ -317,7 +305,8 @@ void C_Player::CurveLook(C_Player* player, CInput::UserInput_t* input, float a3,
|
|||||||
v65 = a9;
|
v65 = a9;
|
||||||
v66 = (float)(v48 * inputSampleFrametime) * v62;
|
v66 = (float)(v48 * inputSampleFrametime) * v62;
|
||||||
a9->unk1 = v71.y;
|
a9->unk1 = v71.y;
|
||||||
v65->unk2 = 0i64;
|
|
||||||
|
v65->unk2.Init();
|
||||||
|
|
||||||
const float pitchX = ((v66 * adsScalar) + v59) * v63;
|
const float pitchX = ((v66 * adsScalar) + v59) * v63;
|
||||||
const float pitchY = ((v64 * adsScalar) + v60) * v63;
|
const float pitchY = ((v64 * adsScalar) + v60) * v63;
|
||||||
@ -328,8 +317,7 @@ void C_Player::CurveLook(C_Player* player, CInput::UserInput_t* input, float a3,
|
|||||||
|
|
||||||
if (m_bAutoAim_UnknownBool1AD && runAimAssist)
|
if (m_bAutoAim_UnknownBool1AD && runAimAssist)
|
||||||
{
|
{
|
||||||
sub_1405AF1F0(input, player, (QAngle*)&v70, &v69, v14, v13, inputSampleFrametime_c, a5, (QAngle*)&a9);
|
sub_1405AF1F0(input, player, (QAngle*)&v70, &v69, v14, v13, inputSampleFrametime_c, a5, &v65->unk2);
|
||||||
v65->unk2 = a9;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -61,7 +61,7 @@ struct JoyAngle_t
|
|||||||
{
|
{
|
||||||
QAngle pitch;
|
QAngle pitch;
|
||||||
float unk1;
|
float unk1;
|
||||||
void* unk2;
|
Vector2D unk2;
|
||||||
};
|
};
|
||||||
|
|
||||||
class C_Player : public C_BaseCombatCharacter
|
class C_Player : public C_BaseCombatCharacter
|
||||||
@ -360,7 +360,7 @@ inline void (*sub_1405AEA10)(void* a1, bool isZoomed, char a3);
|
|||||||
inline void (*sub_1405AF810)(C_Player* player, CInput::UserInput_t* input, __int64 a3, char a4, char a5, Vector3D* a6, QAngle* a7, QAngle* a8, float a9);
|
inline void (*sub_1405AF810)(C_Player* player, CInput::UserInput_t* input, __int64 a3, char a4, char a5, Vector3D* a6, QAngle* a7, QAngle* a8, float a9);
|
||||||
inline C_BaseEntity* (*sub_1409DC4E0)(C_Player* player);
|
inline C_BaseEntity* (*sub_1409DC4E0)(C_Player* player);
|
||||||
inline float (*sub_1405D4300)(C_Player* player);
|
inline float (*sub_1405D4300)(C_Player* player);
|
||||||
inline QAngle* (*sub_1405AF1F0)(CInput::UserInput_t* a1, C_Player* a2, QAngle* a3, QAngle* a4, float a5, float a6, float a7, float a8, QAngle* a9);
|
inline QAngle* (*sub_1405AF1F0)(CInput::UserInput_t* a1, C_Player* a2, QAngle* a3, QAngle* a4, float a5, float a6, float a7, float a8, Vector2D* a9);
|
||||||
|
|
||||||
inline float (*C_Player__GetZoomFrac)(C_Player* thisptr);
|
inline float (*C_Player__GetZoomFrac)(C_Player* thisptr);
|
||||||
inline int (*C_Player__GetAimSpeed)(C_Player* thisptr, bool isZoomed);
|
inline int (*C_Player__GetAimSpeed)(C_Player* thisptr, bool isZoomed);
|
||||||
|
@ -39,7 +39,7 @@ inline char* g_lookSensitivity_Titan;
|
|||||||
inline char* g_lookSensitivity_Zoomed;
|
inline char* g_lookSensitivity_Zoomed;
|
||||||
inline char* g_lookSensitivity;
|
inline char* g_lookSensitivity;
|
||||||
|
|
||||||
inline AimCurveConfig_s** g_aimCurveConfig;
|
inline AimCurveConfig_s* g_aimCurveConfig;
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
class V_GamePad : public IDetour
|
class V_GamePad : public IDetour
|
||||||
|
Loading…
x
Reference in New Issue
Block a user