Can anyone add a anti recoil run time for vert and horiz?

GPC2 script programming for Titan Two. Code examples, questions, requests.

Can anyone add a anti recoil run time for vert and horiz?

Postby Beryl » Thu May 18, 2023 12:26 pm

Hi can anyone add run times next the RECOIL_V RECOIL_H values so i can edit how long anti recoil runs for? thankyou in advance
Code: Select all
#define RECOIL_V  16.00   // Vertical compensation   
#define RECOIL_H  0.00   // Horizontal compensation
#define sn        10.00       // COD/BF = 13 R6 = 19 (SN + COMP = ACTUAL RECOIL VALUE)
#define delay     0 // delay before anti recoil kicks in
main {
    if(is_active(BUTTON_8)) if(check_active(BUTTON_5, delay)) {
        AntiRecoil(STICK_1_Y,STICK_1_X, RECOIL_V,RECOIL_H);
    }
}
 
void AntiRecoil (uint8 axis1,uint8 axis2,fix32 recoil_Y,fix32 recoil_X)
{
    if ((recoil_Y != 0.0) || (recoil_X != 0.0))
    {
        fix32 RY;
        fix32 RX;
 
        fix32 true_RY;
        fix32 true_RX;
 
        fix32 altrecoil_Y;
        fix32 altrecoil_X;
 
        fix32 modified_RY;
        fix32 modified_RX;
 
        fix32 final_RY;
        fix32 final_RX;
 
        fix32 true_radius;
        fix32 modi_radius;
 
        fix32 modi_recoil;
 
        RY = clamp(get_actual(axis1), -100.0, 100.0);
        RX = clamp(get_actual(axis2), -100.0, 100.0);
 
        if ( RX*RX+RY*RY <= sn*sn )
        {
            modi_recoil = sqrt(recoil_Y*recoil_Y+recoil_X*recoil_X);
            set_val(axis1,recoil_Y /modi_recoil*(modi_recoil+sn));
            set_val(axis2,recoil_X /modi_recoil*(modi_recoil+sn));
        }   
 
        if (RX*RX+RY*RY > sn*sn)
        {
 
            true_radius = clamp(sqrt(RY*RY+RX*RX),0.0,100.0);
 
            true_RY = (true_radius-sn)/true_radius*RY;
            true_RX = (true_radius-sn)/true_radius*RX;
 
            altrecoil_Y = recoil_Y - recoil_Y*0.80/(100.0-sn)*true_radius;
            altrecoil_X = recoil_X - recoil_X*0.80/(100.0-sn)*true_radius;
 
            modified_RY = true_RY + altrecoil_Y - altrecoil_Y/(100.0-sn)*abs(true_RY);
            modified_RX = true_RX + altrecoil_X - altrecoil_X/(100.0-sn)*abs(true_RX);
 
            modi_radius = sqrt(modified_RY*modified_RY + modified_RX*modified_RX);
 
            final_RY = modified_RY / modi_radius * (modi_radius+sn);
            final_RX = modified_RX / modi_radius * (modi_radius+sn);
 
            set_val(axis1,clamp(final_RY, -100f, 100f));
            set_val(axis2,clamp(final_RX, -100f, 100f));
        }
    }
}
User avatar
Beryl
Sergeant Major of the Army
Sergeant Major of the Army
 
Posts: 198
Joined: Fri Nov 27, 2020 7:47 pm

Return to GPC2 Script Programming

Who is online

Users browsing this forum: No registered users and 83 guests