Untitled diff

Created Diff never expires
3 removals
44 lines
4 additions
45 lines
#include <keyboard.gph>
// TOGGLES
// TOGGLES
bool bAntiRecoil = TRUE;
bool bAntiRecoil = TRUE;
bool key_f2_event; // F2
bool key_f2_event; // F2
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// VARIABLES & DEFINES [SETTINGS]
// VARIABLES & DEFINES [SETTINGS]
#define StickNoise 4.32
fix32 RECOIL_V = 4.5; // Adjust Vertical Anti-Recoil //
fix32 RECOIL_V = 4.5; // Adjust Vertical Anti-Recoil //
fix32 RECOIL_H = 0.0; // Adjust Horizontal Anti-Recoil //
fix32 RECOIL_H = 0.0; // Adjust Horizontal Anti-Recoil //
#define ANTI_RECOIL_KEY KEY_F2 // F2 " Anti-Recoil //
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Anti-Recoil
// Anti-Recoil
main {
main {
// toggle
// toggle
if(key_status(ANTI_RECOIL_KEY)) {
if(key_status(ANTI_RECOIL_KEY)) {
if(!key_f2_event) {
if(!key_f2_event) {
key_f2_event = TRUE;
key_f2_event = TRUE;
bAntiRecoil = !bAntiRecoil;
bAntiRecoil = !bAntiRecoil;
}
}
} else key_f2_event = FALSE;
} else key_f2_event = FALSE;
if (bAntiRecoil && get_val(BUTTON_5)) {
if (bAntiRecoil && get_val(BUTTON_5)) {
// Remove small unwanted movement as your controller sticks may not return to zero exactly after release.
// Remove small unwanted movement as your controller sticks may not return to zero exactly after release.
if(abs(get_actual(STICK_1_X)) < StickNoise) { set_val(STICK_1_X, 0.0); }
if(abs(get_actual(STICK_1_X)) < StickNoise) { set_val(STICK_1_X, 0.0); }
if(abs(get_actual(STICK_1_Y)) < StickNoise) { set_val(STICK_1_Y, 0.0); }
if(abs(get_actual(STICK_1_Y)) < StickNoise) { set_val(STICK_1_Y, 0.0); }
AntiRecoil(STICK_1_Y,RECOIL_V); // Y Axis - vertical recoil compensation
AntiRecoil(STICK_1_Y,RECOIL_V); // Y Axis - vertical recoil compensation
AntiRecoil(STICK_1_X,RECOIL_H); // X Axis - horizontal recoil compensation
AntiRecoil(STICK_1_X,RECOIL_H); // X Axis - horizontal recoil compensation
}
}
}
// this is the function applying the anti recoil
// this is the function applying the anti recoil
void AntiRecoil (uint8 axis, fix32 recoil)
void AntiRecoil (uint8 axis, fix32 recoil)
{
{
fix32 RY = get_actual(STICK_1_Y); // read the actual stick y value
fix32 RY = get_actual(STICK_1_Y); // read the actual stick y value
fix32 RX = get_actual(STICK_1_X); // read the actual sitck x value
fix32 RX = get_actual(STICK_1_X); // read the actual sitck x value
// only apply anti recoil if the actual movement of x&y is lower than the recoil to apply
// only apply anti recoil if the actual movement of x&y is lower than the recoil to apply
if (get_val(BUTTON_5) && (sqrt(RX*RX + RY*RY)) <= abs(recoil))
if (get_val(BUTTON_5) && (sqrt(RX*RX + RY*RY)) <= abs(recoil))
{
{
if(abs(RY) <= abs(recoil)) // only apply when y movement is lower than the recoil to apply
if(abs(RY) <= abs(recoil)) // only apply when y movement is lower than the recoil to apply
{
{
set_val(axis,(recoil * (100.0 - abs(get_val(axis)))) / 100.0 + get_val(axis));
set_val(axis,(recoil * (100.0 - abs(get_val(axis)))) / 100.0 + get_val(axis));
}
}
}
}
}
}
}