Custom AwesomeAntiRecoil from AryanX

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

Custom AwesomeAntiRecoil from AryanX

Postby Puinsai » Sat Feb 02, 2019 8:01 pm

Hi,
Can you add rapid fire with enable option for this crazy script please, i play with xim apex and Blackout ;
Thanks you

Code: Select all
#pragma METAINFO("AwesomeAntiRecoil", 1, 0, "bonefisher")
 
/* Special credits goes out to AryanX for a awesome anti-recoil script!*/
#define float  fix32
 
//Anti Recoil
bool bUseAntiRecoil      = TRUE;
float ARecoil_H_Standing =  0.0;// Change horizontal force add negative if needed.
float ARecoil_V_Standing = 18.0;//Change vertical pull force
uint16 ARecoilDelay      =   75;//Change delay after trigger is pulled to engage anti-recoil.
 
//Percent of anti ARecoil to always apply regardless of aim movement
float MinARecoilPercent = 30.0;
 
float StickNoise = 6.32;
 
main {
  //////////////////////////////////////////////////////////////////////////
    //Anti Recoil
    //////////////////////////////////////////////////////////////////////////
  if (bUseAntiRecoil)
    {
 
      if (get_actual(BUTTON_5) && time_active(BUTTON_5) >= ARecoilDelay)
        {
 
          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_2_X)) < StickNoise) set_val(STICK_2_X, 0.0);
            if (abs(get_actual(STICK_2_Y)) < StickNoise) set_val(STICK_2_Y, 0.0);
 
        if (get_val(BUTTON_5))
        {
          AntiRecoil(STICK_1_X, ARecoil_H_Standing);
            AntiRecoil(STICK_1_Y, ARecoil_V_Standing);
        }
      }
  }
}
 
void AntiRecoil(uint8 AxisToApply, float ARecoilToApply)
{
    float CurrentX = get_val(STICK_1_X);
    float CurrentY = get_val(STICK_1_Y);
    float MinARecoilFactor = MinARecoilPercent / 100.0;
    float MinARecoilToApply = MinARecoilFactor * ARecoilToApply;
    //This sets the ARecoil to be dependent on both X and Y axis movement. With more emphasis on Y
    float MovementARecoilToApply = (1.0 - MinARecoilFactor) * ((ARecoilToApply * (100.0 - sqrt(CurrentX*CurrentX + CurrentY*CurrentY))) / (100.0 + abs(CurrentX) + (CurrentY*CurrentY*0.5)));
    set_val(AxisToApply, MinARecoilToApply + MovementARecoilToApply + get_val(AxisToApply));
}
PS4 PRO | XIM APEX | T2 | FW: the latest | Mon: ASUS 28" MG28UQ | Logitech G440 | Logitech G13 | SteelSeries R600 | SteelSeries Siberia 800 | DumaOS Router
User avatar
Puinsai
Sergeant
Sergeant
 
Posts: 8
Joined: Sun Jan 20, 2019 5:51 am
Location: FRENCH POLYNESIA

Re: Custom AwesomeAntiRecoil from AryanX

Postby bonefisher » Sun Feb 03, 2019 1:16 am

Code: Select all
 
#pragma METAINFO("PreSetChanging", 1, 0, "bonefisher")
 
#include <display.gph>
#define wait(a)  wait((int)a);
#define float  fix32
 
uint8 bUseAntiRecoil = 1;
uint16 ARecoilDelay = 0;//Change delay after trigger is pulled to engage anti-recoil.
 
//Percent of anti ARecoil to always apply regardless of aim movement
float MinARecoilPercent = 18.0;
float StickNoise = 6.50;
 
const fix32 warcfg[] =
{ //anti_recoil
    18.7, 0.0,//display 0
    20.0, 0.0,//display 1
    22.0, 0.0,//display 2
    24.0, 0.0,//display 3
    26.0, 0.0,//display 4
    28.0, 0.0,//display 5
    30.0, 0.0 //display 6
};
 
float rf_active, rf_release;
const fix32 wcfg[] =
{
    76.0, 0.0,   //blue led
    37.5, 37.5//green led
    64.0, 16.3//red led
    100.5, 100.5,//pink led
    500.0, 180.0 //no led
};
 
main {
    // - WEAPON TRACKING - - - - - - - - - - - - - - - - - - - - - - - - - - -
    #define WEAPON_PRIMARY      0
    #define WEAPON_SECONDARY    1
    static uint8 weapon;
    if(event_release(BUTTON_14) && time_active(BUTTON_14) < 250) {
        if(weapon == WEAPON_SECONDARY){
            weapon = WEAPON_PRIMARY;
            display_overlay(_P_, 500);
        } else if(weapon == WEAPON_PRIMARY) {
            weapon = WEAPON_SECONDARY;
            display_overlay(_S_, 500);
        } set_val(BUTTON_14, 0.0);
    }
    if(event_release(BUTTON_14) && time_active(BUTTON_14) > 250) {
        if(weapon == WEAPON_SECONDARY){
            weapon = WEAPON_PRIMARY;
            display_overlay(_P_, 500);
        } else if(weapon == WEAPON_PRIMARY) {
            weapon = WEAPON_SECONDARY;
            display_overlay(_S_, 500);
        } set_val(BUTTON_14, 0.0);
    }
 
    // - FIRE MODES - - - - - - - - - - - - - - - - - - - - - - - - - - -
    #define FIRE_MODE_0     0
    #define FIRE_MODE_1     1
    #define FIRE_MODE_2     2
    #define FIRE_MODE_3     3
    #define FIRE_MODE_4     4
    static uint8 fire;
 
    if(is_active(BUTTON_8))
    {
        set_val(BUTTON_12, 0.0);
 
    if(fire==0 && event_active(BUTTON_12)) {
        fire = FIRE_MODE_0;
        goto FIRE_LIGHTBAR;
    }else if(event_release(BUTTON_12)){
    if(fire || !fire) {
        switch(fire) {
        case FIRE_MODE_0: fire = FIRE_MODE_1; break;
        case FIRE_MODE_1: fire = FIRE_MODE_2; break;
        case FIRE_MODE_2: fire = FIRE_MODE_3; break;
        case FIRE_MODE_3: fire = FIRE_MODE_4; break;
        case FIRE_MODE_4: fire = FIRE_MODE_0; break;
        }
    } else fire = FIRE_MODE_4;
        FIRE_LIGHTBAR:
        led_reset();
        switch(fire)
        {
        case FIRE_MODE_0: led_set(LED_1, -1.0, 0); break;
        case FIRE_MODE_1: led_set(LED_3, -1.0, 0); break;
        case FIRE_MODE_2: led_set(LED_2, -1.0, 0); break;
        case FIRE_MODE_3: led_set(LED_4, -1.0, 0); break;
        case FIRE_MODE_4: led_set(LED_3, 0.0, 0); break;
        }
    }
    }
    // - RAPIDFIRE - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    if(get_actual(BUTTON_5)) {
        if(weapon) {                                              // SECONDARY
            if(event_active(BUTTON_5)) {
                rf_active = 37.5;
                rf_release = 37.5;
            } combo_run(Rapidfire);
        } else {                                                  // PRIMARY
            if(event_active(BUTTON_5)) {
                rf_active = wcfg[2*fire+0];
                rf_release = wcfg[2*fire+1];
            } combo_run(Rapidfire);
        }
    } else combo_stop(Rapidfire);
    // - RECOIL MODES - - - - - - - - - - - - - - - - - - - - - - - - - - -
    #define ANTI_RECOIL_0     0
    #define ANTI_RECOIL_1     1
    #define ANTI_RECOIL_2     2
    #define ANTI_RECOIL_3     3
    #define ANTI_RECOIL_4     4
    #define ANTI_RECOIL_5     5
    #define ANTI_RECOIL_6     6
    static uint8 anti_recoil;
    if(is_active(BUTTON_8))
    {
        set_val(BUTTON_13, 0.0);
 
    if(anti_recoil==0 && event_active(BUTTON_13)) {
        anti_recoil = ANTI_RECOIL_0;
        goto ANTI_RECOIL_LIGHTBAR;
    }else if(event_release(BUTTON_13)){
    if(anti_recoil || !anti_recoil) {
        switch(anti_recoil) {
        case ANTI_RECOIL_0: anti_recoil = ANTI_RECOIL_1; break;
        case ANTI_RECOIL_1: anti_recoil = ANTI_RECOIL_2; break;
        case ANTI_RECOIL_2: anti_recoil = ANTI_RECOIL_3; break;
        case ANTI_RECOIL_3: anti_recoil = ANTI_RECOIL_4; break;
        case ANTI_RECOIL_4: anti_recoil = ANTI_RECOIL_5; break;
        case ANTI_RECOIL_5: anti_recoil = ANTI_RECOIL_6; break;
        case ANTI_RECOIL_6: anti_recoil = ANTI_RECOIL_0; break;
        }
    } else anti_recoil = ANTI_RECOIL_4;
        ANTI_RECOIL_LIGHTBAR:
        led_reset();
        switch(anti_recoil)
        {
        case ANTI_RECOIL_0: display_overlay(_0_, 500); break;
        case ANTI_RECOIL_1: display_overlay(_1_, 500); break;
        case ANTI_RECOIL_2: display_overlay(_2_, 500); break;
        case ANTI_RECOIL_3: display_overlay(_3_, 500); break;
        case ANTI_RECOIL_4: display_overlay(_4_, 500); break;
        case ANTI_RECOIL_5: display_overlay(_5_, 500); break;
        case ANTI_RECOIL_6: display_overlay(_6_, 500); break;
        }
    }
    }
    // - ANTI RECOIL - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    if (get_actual(BUTTON_5) && time_active(BUTTON_5) >= ARecoilDelay)
    {
        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_2_X)) < StickNoise) set_val(STICK_2_X, 0.0);
        if (abs(get_actual(STICK_2_Y)) < StickNoise) set_val(STICK_2_Y, 0.0);
 
    if (bUseAntiRecoil == 1)
    {
        if (get_actual(BUTTON_8) && get_val(BUTTON_5))
        {
            AntiRecoil(STICK_1_Y, warcfg[2*anti_recoil+0]);
            AntiRecoil(STICK_1_X, warcfg[2*anti_recoil+1]);
        }
    }
    }
    // - SPRINT TRACKING - - - - - - - - - - - - - - - - - - - - - - - - - - -
    #define SPRINT_OFF     0
    #define SPRINT_ON      1
    static uint8 sprint;
    if(event_active(BUTTON_16)|| event_active(BUTTON_5)||
        event_active(BUTTON_9)|| is_active(STICK_2_Y)
        && time_release(STICK_2_Y) < 250)
    {
        sprint = SPRINT_ON;
        goto SPRINT_LIGHTBAR;
    }
    else if(event_active(BUTTON_8)|| event_active(BUTTON_15)||
        event_active(BUTTON_17))
    {
        if(sprint || !sprint)
        {
            switch(sprint)
            {
                case SPRINT_OFF: sprint = SPRINT_ON;  break;
                case SPRINT_ON:  sprint = SPRINT_OFF; break;
            }
    } else sprint = SPRINT_OFF;
        SPRINT_LIGHTBAR:
        led_reset();
        switch(sprint)
        {
            case SPRINT_OFF: display_overlay(_0_, 500); break;
            case SPRINT_ON:  display_overlay(_1_, 500); break;
        }
    }
    if(sprint == SPRINT_ON && get_actual(STICK_2_Y) < -95.0){
        combo_run(easy_sprint);
    }
    if(sprint == SPRINT_OFF){
        set_val(STICK_2_X, get_val(STICK_2_X) / 1.1);
        set_val(STICK_2_Y, get_val(STICK_2_Y) / 1.1);
    }
    // - COMMON MODS - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    if(get_actual(BUTTON_5)) {
        set_val(BUTTON_5, 100.0);                             // HAIR TRIGGGER
    }
    if(get_actual(BUTTON_8)) {
        if(get_actual(BUTTON_8) && time_active(BUTTON_8)>= 140) {
            set_val(BUTTON_9, 100.0);                         // HOLD BREATH
        }
        set_val(BUTTON_8, 100.0);                             // HAIR TRIGGGER
    }
}
 
combo Rapidfire {
    set_val(BUTTON_5, 100.0);
    wait(rf_active);
    set_val(BUTTON_5, rf_release ? 0.0 : 100.0);
    wait(rf_release);
    set_val(BUTTON_5, rf_release ? 0.0 : 100.0);
}
 
combo easy_sprint
{
    set_val(BUTTON_9, 0.0);
    wait(200);
    set_val(BUTTON_9, 100.0);
    wait(80);
    set_val(BUTTON_9, 100.0);
}
 
void AntiRecoil(uint8 AxisToApply, float ARecoilToApply)
{
    float CurrentX = get_val(STICK_1_X);
    float CurrentY = get_val(STICK_1_Y);
    float MinARecoilFactor = MinARecoilPercent / 100.0;
    float MinARecoilToApply = MinARecoilFactor * ARecoilToApply;
    //This sets the ARecoil to be dependent on both X and Y axis movement. With more emphasis on Y
    float MovementARecoilToApply = (1.0 - MinARecoilFactor) * ((ARecoilToApply * (100.0 - sqrt(CurrentX*CurrentX + CurrentY*CurrentY))) / (100.0 + abs(CurrentX) + (CurrentY*CurrentY*0.5)));
    set_val(AxisToApply, MinARecoilToApply + MovementARecoilToApply + get_val(AxisToApply));
}
 

Here has presets for anti-recoil and rapid fire with secondary switching!
bonefisher
Lieutenant General
Lieutenant General
 
Posts: 5413
Joined: Thu Jan 29, 2015 10:49 am

Re: Custom AwesomeAntiRecoil from AryanX

Postby trshy » Fri Feb 08, 2019 4:01 pm

bonefisher wrote:
Code: Select all
 
#pragma METAINFO("PreSetChanging", 1, 0, "bonefisher")
 
#include <display.gph>
#define wait(a)  wait((int)a);
#define float  fix32
 
uint8 bUseAntiRecoil = 1;
uint16 ARecoilDelay = 0;//Change delay after trigger is pulled to engage anti-recoil.
 
//Percent of anti ARecoil to always apply regardless of aim movement
float MinARecoilPercent = 18.0;
float StickNoise = 6.50;
 
const fix32 warcfg[] =
{ //anti_recoil
    18.7, 0.0,//display 0
    20.0, 0.0,//display 1
    22.0, 0.0,//display 2
    24.0, 0.0,//display 3
    26.0, 0.0,//display 4
    28.0, 0.0,//display 5
    30.0, 0.0 //display 6
};
 
float rf_active, rf_release;
const fix32 wcfg[] =
{
    76.0, 0.0,   //blue led
    37.5, 37.5//green led
    64.0, 16.3//red led
    100.5, 100.5,//pink led
    500.0, 180.0 //no led
};
 
main {
    // - WEAPON TRACKING - - - - - - - - - - - - - - - - - - - - - - - - - - -
    #define WEAPON_PRIMARY      0
    #define WEAPON_SECONDARY    1
    static uint8 weapon;
    if(event_release(BUTTON_14) && time_active(BUTTON_14) < 250) {
        if(weapon == WEAPON_SECONDARY){
            weapon = WEAPON_PRIMARY;
            display_overlay(_P_, 500);
        } else if(weapon == WEAPON_PRIMARY) {
            weapon = WEAPON_SECONDARY;
            display_overlay(_S_, 500);
        } set_val(BUTTON_14, 0.0);
    }
    if(event_release(BUTTON_14) && time_active(BUTTON_14) > 250) {
        if(weapon == WEAPON_SECONDARY){
            weapon = WEAPON_PRIMARY;
            display_overlay(_P_, 500);
        } else if(weapon == WEAPON_PRIMARY) {
            weapon = WEAPON_SECONDARY;
            display_overlay(_S_, 500);
        } set_val(BUTTON_14, 0.0);
    }
 
    // - FIRE MODES - - - - - - - - - - - - - - - - - - - - - - - - - - -
    #define FIRE_MODE_0     0
    #define FIRE_MODE_1     1
    #define FIRE_MODE_2     2
    #define FIRE_MODE_3     3
    #define FIRE_MODE_4     4
    static uint8 fire;
 
    if(is_active(BUTTON_8))
    {
        set_val(BUTTON_12, 0.0);
 
    if(fire==0 && event_active(BUTTON_12)) {
        fire = FIRE_MODE_0;
        goto FIRE_LIGHTBAR;
    }else if(event_release(BUTTON_12)){
    if(fire || !fire) {
        switch(fire) {
        case FIRE_MODE_0: fire = FIRE_MODE_1; break;
        case FIRE_MODE_1: fire = FIRE_MODE_2; break;
        case FIRE_MODE_2: fire = FIRE_MODE_3; break;
        case FIRE_MODE_3: fire = FIRE_MODE_4; break;
        case FIRE_MODE_4: fire = FIRE_MODE_0; break;
        }
    } else fire = FIRE_MODE_4;
        FIRE_LIGHTBAR:
        led_reset();
        switch(fire)
        {
        case FIRE_MODE_0: led_set(LED_1, -1.0, 0); break;
        case FIRE_MODE_1: led_set(LED_3, -1.0, 0); break;
        case FIRE_MODE_2: led_set(LED_2, -1.0, 0); break;
        case FIRE_MODE_3: led_set(LED_4, -1.0, 0); break;
        case FIRE_MODE_4: led_set(LED_3, 0.0, 0); break;
        }
    }
    }
    // - RAPIDFIRE - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    if(get_actual(BUTTON_5)) {
        if(weapon) {                                              // SECONDARY
            if(event_active(BUTTON_5)) {
                rf_active = 37.5;
                rf_release = 37.5;
            } combo_run(Rapidfire);
        } else {                                                  // PRIMARY
            if(event_active(BUTTON_5)) {
                rf_active = wcfg[2*fire+0];
                rf_release = wcfg[2*fire+1];
            } combo_run(Rapidfire);
        }
    } else combo_stop(Rapidfire);
    // - RECOIL MODES - - - - - - - - - - - - - - - - - - - - - - - - - - -
    #define ANTI_RECOIL_0     0
    #define ANTI_RECOIL_1     1
    #define ANTI_RECOIL_2     2
    #define ANTI_RECOIL_3     3
    #define ANTI_RECOIL_4     4
    #define ANTI_RECOIL_5     5
    #define ANTI_RECOIL_6     6
    static uint8 anti_recoil;
    if(is_active(BUTTON_8))
    {
        set_val(BUTTON_13, 0.0);
 
    if(anti_recoil==0 && event_active(BUTTON_13)) {
        anti_recoil = ANTI_RECOIL_0;
        goto ANTI_RECOIL_LIGHTBAR;
    }else if(event_release(BUTTON_13)){
    if(anti_recoil || !anti_recoil) {
        switch(anti_recoil) {
        case ANTI_RECOIL_0: anti_recoil = ANTI_RECOIL_1; break;
        case ANTI_RECOIL_1: anti_recoil = ANTI_RECOIL_2; break;
        case ANTI_RECOIL_2: anti_recoil = ANTI_RECOIL_3; break;
        case ANTI_RECOIL_3: anti_recoil = ANTI_RECOIL_4; break;
        case ANTI_RECOIL_4: anti_recoil = ANTI_RECOIL_5; break;
        case ANTI_RECOIL_5: anti_recoil = ANTI_RECOIL_6; break;
        case ANTI_RECOIL_6: anti_recoil = ANTI_RECOIL_0; break;
        }
    } else anti_recoil = ANTI_RECOIL_4;
        ANTI_RECOIL_LIGHTBAR:
        led_reset();
        switch(anti_recoil)
        {
        case ANTI_RECOIL_0: display_overlay(_0_, 500); break;
        case ANTI_RECOIL_1: display_overlay(_1_, 500); break;
        case ANTI_RECOIL_2: display_overlay(_2_, 500); break;
        case ANTI_RECOIL_3: display_overlay(_3_, 500); break;
        case ANTI_RECOIL_4: display_overlay(_4_, 500); break;
        case ANTI_RECOIL_5: display_overlay(_5_, 500); break;
        case ANTI_RECOIL_6: display_overlay(_6_, 500); break;
        }
    }
    }
    // - ANTI RECOIL - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    if (get_actual(BUTTON_5) && time_active(BUTTON_5) >= ARecoilDelay)
    {
        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_2_X)) < StickNoise) set_val(STICK_2_X, 0.0);
        if (abs(get_actual(STICK_2_Y)) < StickNoise) set_val(STICK_2_Y, 0.0);
 
    if (bUseAntiRecoil == 1)
    {
        if (get_actual(BUTTON_8) && get_val(BUTTON_5))
        {
            AntiRecoil(STICK_1_Y, warcfg[2*anti_recoil+0]);
            AntiRecoil(STICK_1_X, warcfg[2*anti_recoil+1]);
        }
    }
    }
    // - SPRINT TRACKING - - - - - - - - - - - - - - - - - - - - - - - - - - -
    #define SPRINT_OFF     0
    #define SPRINT_ON      1
    static uint8 sprint;
    if(event_active(BUTTON_16)|| event_active(BUTTON_5)||
        event_active(BUTTON_9)|| is_active(STICK_2_Y)
        && time_release(STICK_2_Y) < 250)
    {
        sprint = SPRINT_ON;
        goto SPRINT_LIGHTBAR;
    }
    else if(event_active(BUTTON_8)|| event_active(BUTTON_15)||
        event_active(BUTTON_17))
    {
        if(sprint || !sprint)
        {
            switch(sprint)
            {
                case SPRINT_OFF: sprint = SPRINT_ON;  break;
                case SPRINT_ON:  sprint = SPRINT_OFF; break;
            }
    } else sprint = SPRINT_OFF;
        SPRINT_LIGHTBAR:
        led_reset();
        switch(sprint)
        {
            case SPRINT_OFF: display_overlay(_0_, 500); break;
            case SPRINT_ON:  display_overlay(_1_, 500); break;
        }
    }
    if(sprint == SPRINT_ON && get_actual(STICK_2_Y) < -95.0){
        combo_run(easy_sprint);
    }
    if(sprint == SPRINT_OFF){
        set_val(STICK_2_X, get_val(STICK_2_X) / 1.1);
        set_val(STICK_2_Y, get_val(STICK_2_Y) / 1.1);
    }
    // - COMMON MODS - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    if(get_actual(BUTTON_5)) {
        set_val(BUTTON_5, 100.0);                             // HAIR TRIGGGER
    }
    if(get_actual(BUTTON_8)) {
        if(get_actual(BUTTON_8) && time_active(BUTTON_8)>= 140) {
            set_val(BUTTON_9, 100.0);                         // HOLD BREATH
        }
        set_val(BUTTON_8, 100.0);                             // HAIR TRIGGGER
    }
}
 
combo Rapidfire {
    set_val(BUTTON_5, 100.0);
    wait(rf_active);
    set_val(BUTTON_5, rf_release ? 0.0 : 100.0);
    wait(rf_release);
    set_val(BUTTON_5, rf_release ? 0.0 : 100.0);
}
 
combo easy_sprint
{
    set_val(BUTTON_9, 0.0);
    wait(200);
    set_val(BUTTON_9, 100.0);
    wait(80);
    set_val(BUTTON_9, 100.0);
}
 
void AntiRecoil(uint8 AxisToApply, float ARecoilToApply)
{
    float CurrentX = get_val(STICK_1_X);
    float CurrentY = get_val(STICK_1_Y);
    float MinARecoilFactor = MinARecoilPercent / 100.0;
    float MinARecoilToApply = MinARecoilFactor * ARecoilToApply;
    //This sets the ARecoil to be dependent on both X and Y axis movement. With more emphasis on Y
    float MovementARecoilToApply = (1.0 - MinARecoilFactor) * ((ARecoilToApply * (100.0 - sqrt(CurrentX*CurrentX + CurrentY*CurrentY))) / (100.0 + abs(CurrentX) + (CurrentY*CurrentY*0.5)));
    set_val(AxisToApply, MinARecoilToApply + MovementARecoilToApply + get_val(AxisToApply));
}
 

Here has presets for anti-recoil and rapid fire with secondary switching!


hey bonefisher, how can i activate this on my titan 2, do i have to copy and paste it only? how do i get access to its interactive config interface, and thanks!
User avatar
trshy
Sergeant First Class
Sergeant First Class
 
Posts: 20
Joined: Wed Sep 05, 2018 6:02 pm

Re: Custom AwesomeAntiRecoil from AryanX

Postby bonefisher » Fri Feb 08, 2019 4:30 pm

This doesn't have a interactive configurations but yes copy and paste in a new gpc script file and save. You can add to slot then click slot number to activate slot then follow how it changes. Hold ADS trigger and click d-pad left to go thru fire modes. Then goes thru anti-recoil modes by holding ADS trigger and click d-pad right.
bonefisher
Lieutenant General
Lieutenant General
 
Posts: 5413
Joined: Thu Jan 29, 2015 10:49 am

Re: Custom AwesomeAntiRecoil from AryanX

Postby trshy » Fri Feb 08, 2019 6:16 pm

bonefisher wrote:This doesn't have a interactive configurations but yes copy and paste in a new gpc script file and save. You can add to slot then click slot number to activate slot then follow how it changes. Hold ADS trigger and click d-pad left to go thru fire modes. Then goes thru anti-recoil modes by holding ADS trigger and click d-pad right.


nice, it's clear now, much appreciated! you are the real MVP.
User avatar
trshy
Sergeant First Class
Sergeant First Class
 
Posts: 20
Joined: Wed Sep 05, 2018 6:02 pm

Re: Custom AwesomeAntiRecoil from AryanX

Postby bonefisher » Fri Feb 08, 2019 6:40 pm

:smile0517:
bonefisher
Lieutenant General
Lieutenant General
 
Posts: 5413
Joined: Thu Jan 29, 2015 10:49 am

Re: Custom AwesomeAntiRecoil from AryanX

Postby trshy » Fri Feb 08, 2019 11:01 pm

bonefisher wrote::smile0517:


hello bonefisher, sorry for bothreing you, but can you please edit the script for me, i don't want the auto run feature, i tried to delete it from the script, but then it won't work, i don't know how to do it properly, can you do it for me please? i only want the antirecoil and rapid fire.
User avatar
trshy
Sergeant First Class
Sergeant First Class
 
Posts: 20
Joined: Wed Sep 05, 2018 6:02 pm

Re: Custom AwesomeAntiRecoil from AryanX

Postby bonefisher » Fri Feb 08, 2019 11:43 pm

Code: Select all
 
#pragma METAINFO("PreSetChanging", 1, 0, "bonefisher")
 
#include <display.gph>
#define wait(a)  wait((int)a);
#define float  fix32
 
uint8 bUseAntiRecoil = 1;
uint16 ARecoilDelay = 0;//Change delay after trigger is pulled to engage anti-recoil.
 
//Percent of anti ARecoil to always apply regardless of aim movement
float MinARecoilPercent = 18.0;
float StickNoise = 6.50;
 
const fix32 warcfg[] =
{ //anti_recoil
    18.7, 0.0,//display 0
    20.0, 0.0,//display 1
    22.0, 0.0,//display 2
    24.0, 0.0,//display 3
    26.0, 0.0,//display 4
    28.0, 0.0,//display 5
    30.0, 0.0 //display 6
};
 
float rf_active, rf_release;
const fix32 wcfg[] =
{
    76.0, 0.0,   //blue led
    37.5, 37.5//green led
    64.0, 16.3//red led
    100.5, 100.5,//pink led
    500.0, 180.0 //no led
};
 
main {
    // - WEAPON TRACKING - - - - - - - - - - - - - - - - - - - - - - - - - - -
    #define WEAPON_PRIMARY      0
    #define WEAPON_SECONDARY    1
    static uint8 weapon;
    if(event_release(BUTTON_14) && time_active(BUTTON_14) < 250) {
        if(weapon == WEAPON_SECONDARY){
            weapon = WEAPON_PRIMARY;
            display_overlay(_P_, 500);
        } else if(weapon == WEAPON_PRIMARY) {
            weapon = WEAPON_SECONDARY;
            display_overlay(_S_, 500);
        } set_val(BUTTON_14, 0.0);
    }
    if(event_release(BUTTON_14) && time_active(BUTTON_14) > 250) {
        if(weapon == WEAPON_SECONDARY){
            weapon = WEAPON_PRIMARY;
            display_overlay(_P_, 500);
        } else if(weapon == WEAPON_PRIMARY) {
            weapon = WEAPON_SECONDARY;
            display_overlay(_S_, 500);
        } set_val(BUTTON_14, 0.0);
    }
 
    // - FIRE MODES - - - - - - - - - - - - - - - - - - - - - - - - - - -
    #define FIRE_MODE_0     0
    #define FIRE_MODE_1     1
    #define FIRE_MODE_2     2
    #define FIRE_MODE_3     3
    #define FIRE_MODE_4     4
    static uint8 fire;
 
    if(is_active(BUTTON_8))
    {
        set_val(BUTTON_12, 0.0);
 
    if(fire==0 && event_active(BUTTON_12)) {
        fire = FIRE_MODE_0;
        goto FIRE_LIGHTBAR;
    }else if(event_release(BUTTON_12)){
    if(fire || !fire) {
        switch(fire) {
        case FIRE_MODE_0: fire = FIRE_MODE_1; break;
        case FIRE_MODE_1: fire = FIRE_MODE_2; break;
        case FIRE_MODE_2: fire = FIRE_MODE_3; break;
        case FIRE_MODE_3: fire = FIRE_MODE_4; break;
        case FIRE_MODE_4: fire = FIRE_MODE_0; break;
        }
    } else fire = FIRE_MODE_4;
        FIRE_LIGHTBAR:
        led_reset();
        switch(fire)
        {
        case FIRE_MODE_0: led_set(LED_1, -1.0, 0); break;
        case FIRE_MODE_1: led_set(LED_3, -1.0, 0); break;
        case FIRE_MODE_2: led_set(LED_2, -1.0, 0); break;
        case FIRE_MODE_3: led_set(LED_4, -1.0, 0); break;
        case FIRE_MODE_4: led_set(LED_3, 0.0, 0); break;
        }
    }
    }
    // - RAPIDFIRE - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    if(get_actual(BUTTON_5)) {
        if(weapon) {                                              // SECONDARY
            if(event_active(BUTTON_5)) {
                rf_active = 37.5;
                rf_release = 37.5;
            } combo_run(Rapidfire);
        } else {                                                  // PRIMARY
            if(event_active(BUTTON_5)) {
                rf_active = wcfg[2*fire+0];
                rf_release = wcfg[2*fire+1];
            } combo_run(Rapidfire);
        }
    } else combo_stop(Rapidfire);
    // - RECOIL MODES - - - - - - - - - - - - - - - - - - - - - - - - - - -
    #define ANTI_RECOIL_0     0
    #define ANTI_RECOIL_1     1
    #define ANTI_RECOIL_2     2
    #define ANTI_RECOIL_3     3
    #define ANTI_RECOIL_4     4
    #define ANTI_RECOIL_5     5
    #define ANTI_RECOIL_6     6
    static uint8 anti_recoil;
    if(is_active(BUTTON_8))
    {
        set_val(BUTTON_13, 0.0);
 
    if(anti_recoil==0 && event_active(BUTTON_13)) {
        anti_recoil = ANTI_RECOIL_0;
        goto ANTI_RECOIL_LIGHTBAR;
    }else if(event_release(BUTTON_13)){
    if(anti_recoil || !anti_recoil) {
        switch(anti_recoil) {
        case ANTI_RECOIL_0: anti_recoil = ANTI_RECOIL_1; break;
        case ANTI_RECOIL_1: anti_recoil = ANTI_RECOIL_2; break;
        case ANTI_RECOIL_2: anti_recoil = ANTI_RECOIL_3; break;
        case ANTI_RECOIL_3: anti_recoil = ANTI_RECOIL_4; break;
        case ANTI_RECOIL_4: anti_recoil = ANTI_RECOIL_5; break;
        case ANTI_RECOIL_5: anti_recoil = ANTI_RECOIL_6; break;
        case ANTI_RECOIL_6: anti_recoil = ANTI_RECOIL_0; break;
        }
    } else anti_recoil = ANTI_RECOIL_4;
        ANTI_RECOIL_LIGHTBAR:
        led_reset();
        switch(anti_recoil)
        {
        case ANTI_RECOIL_0: display_overlay(_0_, 500); break;
        case ANTI_RECOIL_1: display_overlay(_1_, 500); break;
        case ANTI_RECOIL_2: display_overlay(_2_, 500); break;
        case ANTI_RECOIL_3: display_overlay(_3_, 500); break;
        case ANTI_RECOIL_4: display_overlay(_4_, 500); break;
        case ANTI_RECOIL_5: display_overlay(_5_, 500); break;
        case ANTI_RECOIL_6: display_overlay(_6_, 500); break;
        }
    }
    }
    // - ANTI RECOIL - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    if (get_actual(BUTTON_5) && time_active(BUTTON_5) >= ARecoilDelay)
    {
        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_2_X)) < StickNoise) set_val(STICK_2_X, 0.0);
        if (abs(get_actual(STICK_2_Y)) < StickNoise) set_val(STICK_2_Y, 0.0);
 
    if (bUseAntiRecoil == 1)
    {
        if (get_actual(BUTTON_8) && get_val(BUTTON_5))
        {
            AntiRecoil(STICK_1_Y, warcfg[2*anti_recoil+0]);
            AntiRecoil(STICK_1_X, warcfg[2*anti_recoil+1]);
        }
    }
    }
    // - COMMON MODS - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    if(get_actual(BUTTON_5)) {
        set_val(BUTTON_5, 100.0);                             // HAIR TRIGGGER
    }
    if(get_actual(BUTTON_8)) {
        if(get_actual(BUTTON_8) && time_active(BUTTON_8)>= 140) {
            set_val(BUTTON_9, 100.0);                         // HOLD BREATH
        }
        set_val(BUTTON_8, 100.0);                             // HAIR TRIGGGER
    }
}
 
combo Rapidfire {
    set_val(BUTTON_5, 100.0);
    wait(rf_active);
    set_val(BUTTON_5, rf_release ? 0.0 : 100.0);
    wait(rf_release);
    set_val(BUTTON_5, rf_release ? 0.0 : 100.0);
}
 
combo easy_sprint
{
    set_val(BUTTON_9, 0.0);
    wait(200);
    set_val(BUTTON_9, 100.0);
    wait(80);
    set_val(BUTTON_9, 100.0);
}
 
void AntiRecoil(uint8 AxisToApply, float ARecoilToApply)
{
    float CurrentX = get_val(STICK_1_X);
    float CurrentY = get_val(STICK_1_Y);
    float MinARecoilFactor = MinARecoilPercent / 100.0;
    float MinARecoilToApply = MinARecoilFactor * ARecoilToApply;
    //This sets the ARecoil to be dependent on both X and Y axis movement. With more emphasis on Y
    float MovementARecoilToApply = (1.0 - MinARecoilFactor) * ((ARecoilToApply * (100.0 - sqrt(CurrentX*CurrentX + CurrentY*CurrentY))) / (100.0 + abs(CurrentX) + (CurrentY*CurrentY*0.5)));
    set_val(AxisToApply, MinARecoilToApply + MovementARecoilToApply + get_val(AxisToApply));
}
 
bonefisher
Lieutenant General
Lieutenant General
 
Posts: 5413
Joined: Thu Jan 29, 2015 10:49 am

Re: Custom AwesomeAntiRecoil from AryanX

Postby alanmcgregor » Fri Feb 08, 2019 11:46 pm

There you go :)

Code: Select all
 
 
#pragma METAINFO("PreSetChanging" - No Auto Sprint, 1, 0, "bonefisher")
 
#include <display.gph>
#define wait(a)  wait((int)a);
#define float  fix32
 
uint8 bUseAntiRecoil = 1;
uint16 ARecoilDelay = 0;//Change delay after trigger is pulled to engage anti-recoil.
 
//Percent of anti ARecoil to always apply regardless of aim movement
float MinARecoilPercent = 18.0;
float StickNoise = 6.50;
 
const fix32 warcfg[] =
{ //anti_recoil
    18.7, 0.0,//display 0
    20.0, 0.0,//display 1
    22.0, 0.0,//display 2
    24.0, 0.0,//display 3
    26.0, 0.0,//display 4
    28.0, 0.0,//display 5
    30.0, 0.0 //display 6
};
 
float rf_active, rf_release;
const fix32 wcfg[] =
{
    76.0, 0.0,   //blue led
    37.5, 37.5//green led
    64.0, 16.3//red led
    100.5, 100.5,//pink led
    500.0, 180.0 //no led
};
 
main {
    // - WEAPON TRACKING - - - - - - - - - - - - - - - - - - - - - - - - - - -
    #define WEAPON_PRIMARY      0
    #define WEAPON_SECONDARY    1
    static uint8 weapon;
    if(event_release(BUTTON_14) && time_active(BUTTON_14) < 250) {
        if(weapon == WEAPON_SECONDARY){
            weapon = WEAPON_PRIMARY;
            display_overlay(_P_, 500);
        } else if(weapon == WEAPON_PRIMARY) {
            weapon = WEAPON_SECONDARY;
            display_overlay(_S_, 500);
        } set_val(BUTTON_14, 0.0);
    }
    if(event_release(BUTTON_14) && time_active(BUTTON_14) > 250) {
        if(weapon == WEAPON_SECONDARY){
            weapon = WEAPON_PRIMARY;
            display_overlay(_P_, 500);
        } else if(weapon == WEAPON_PRIMARY) {
            weapon = WEAPON_SECONDARY;
            display_overlay(_S_, 500);
        } set_val(BUTTON_14, 0.0);
    }
 
    // - FIRE MODES - - - - - - - - - - - - - - - - - - - - - - - - - - -
    #define FIRE_MODE_0     0
    #define FIRE_MODE_1     1
    #define FIRE_MODE_2     2
    #define FIRE_MODE_3     3
    #define FIRE_MODE_4     4
    static uint8 fire;
 
    if(is_active(BUTTON_8))
    {
        set_val(BUTTON_12, 0.0);
 
    if(fire==0 && event_active(BUTTON_12)) {
        fire = FIRE_MODE_0;
        goto FIRE_LIGHTBAR;
    }else if(event_release(BUTTON_12)){
    if(fire || !fire) {
        switch(fire) {
        case FIRE_MODE_0: fire = FIRE_MODE_1; break;
        case FIRE_MODE_1: fire = FIRE_MODE_2; break;
        case FIRE_MODE_2: fire = FIRE_MODE_3; break;
        case FIRE_MODE_3: fire = FIRE_MODE_4; break;
        case FIRE_MODE_4: fire = FIRE_MODE_0; break;
        }
    } else fire = FIRE_MODE_4;
        FIRE_LIGHTBAR:
        led_reset();
        switch(fire)
        {
        case FIRE_MODE_0: led_set(LED_1, -1.0, 0); break;
        case FIRE_MODE_1: led_set(LED_3, -1.0, 0); break;
        case FIRE_MODE_2: led_set(LED_2, -1.0, 0); break;
        case FIRE_MODE_3: led_set(LED_4, -1.0, 0); break;
        case FIRE_MODE_4: led_set(LED_3, 0.0, 0); break;
        }
    }
    }
    // - RAPIDFIRE - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    if(get_actual(BUTTON_5)) {
        if(weapon) {                                              // SECONDARY
            if(event_active(BUTTON_5)) {
                rf_active = 37.5;
                rf_release = 37.5;
            } combo_run(Rapidfire);
        } else {                                                  // PRIMARY
            if(event_active(BUTTON_5)) {
                rf_active = wcfg[2*fire+0];
                rf_release = wcfg[2*fire+1];
            } combo_run(Rapidfire);
        }
    } else combo_stop(Rapidfire);
    // - RECOIL MODES - - - - - - - - - - - - - - - - - - - - - - - - - - -
    #define ANTI_RECOIL_0     0
    #define ANTI_RECOIL_1     1
    #define ANTI_RECOIL_2     2
    #define ANTI_RECOIL_3     3
    #define ANTI_RECOIL_4     4
    #define ANTI_RECOIL_5     5
    #define ANTI_RECOIL_6     6
    static uint8 anti_recoil;
    if(is_active(BUTTON_8))
    {
        set_val(BUTTON_13, 0.0);
 
    if(anti_recoil==0 && event_active(BUTTON_13)) {
        anti_recoil = ANTI_RECOIL_0;
        goto ANTI_RECOIL_LIGHTBAR;
    }else if(event_release(BUTTON_13)){
    if(anti_recoil || !anti_recoil) {
        switch(anti_recoil) {
        case ANTI_RECOIL_0: anti_recoil = ANTI_RECOIL_1; break;
        case ANTI_RECOIL_1: anti_recoil = ANTI_RECOIL_2; break;
        case ANTI_RECOIL_2: anti_recoil = ANTI_RECOIL_3; break;
        case ANTI_RECOIL_3: anti_recoil = ANTI_RECOIL_4; break;
        case ANTI_RECOIL_4: anti_recoil = ANTI_RECOIL_5; break;
        case ANTI_RECOIL_5: anti_recoil = ANTI_RECOIL_6; break;
        case ANTI_RECOIL_6: anti_recoil = ANTI_RECOIL_0; break;
        }
    } else anti_recoil = ANTI_RECOIL_4;
        ANTI_RECOIL_LIGHTBAR:
        led_reset();
        switch(anti_recoil)
        {
        case ANTI_RECOIL_0: display_overlay(_0_, 500); break;
        case ANTI_RECOIL_1: display_overlay(_1_, 500); break;
        case ANTI_RECOIL_2: display_overlay(_2_, 500); break;
        case ANTI_RECOIL_3: display_overlay(_3_, 500); break;
        case ANTI_RECOIL_4: display_overlay(_4_, 500); break;
        case ANTI_RECOIL_5: display_overlay(_5_, 500); break;
        case ANTI_RECOIL_6: display_overlay(_6_, 500); break;
        }
    }
    }
    // - ANTI RECOIL - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    if (get_actual(BUTTON_5) && time_active(BUTTON_5) >= ARecoilDelay)
    {
        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_2_X)) < StickNoise) set_val(STICK_2_X, 0.0);
        if (abs(get_actual(STICK_2_Y)) < StickNoise) set_val(STICK_2_Y, 0.0);
 
    if (bUseAntiRecoil == 1)
    {
        if (get_actual(BUTTON_8) && get_val(BUTTON_5))
        {
            AntiRecoil(STICK_1_Y, warcfg[2*anti_recoil+0]);
            AntiRecoil(STICK_1_X, warcfg[2*anti_recoil+1]);
        }
    }
    }
 
    // - COMMON MODS - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    if(get_actual(BUTTON_5)) {
        set_val(BUTTON_5, 100.0);                             // HAIR TRIGGGER
    }
    if(get_actual(BUTTON_8)) {
        if(get_actual(BUTTON_8) && time_active(BUTTON_8)>= 140) {
            set_val(BUTTON_9, 100.0);                         // HOLD BREATH
        }
        set_val(BUTTON_8, 100.0);                             // HAIR TRIGGGER
    }
}
 
combo Rapidfire {
    set_val(BUTTON_5, 100.0);
    wait(rf_active);
    set_val(BUTTON_5, rf_release ? 0.0 : 100.0);
    wait(rf_release);
    set_val(BUTTON_5, rf_release ? 0.0 : 100.0);
}
 
 
void AntiRecoil(uint8 AxisToApply, float ARecoilToApply)
{
    float CurrentX = get_val(STICK_1_X);
    float CurrentY = get_val(STICK_1_Y);
    float MinARecoilFactor = MinARecoilPercent / 100.0;
    float MinARecoilToApply = MinARecoilFactor * ARecoilToApply;
    //This sets the ARecoil to be dependent on both X and Y axis movement. With more emphasis on Y
    float MovementARecoilToApply = (1.0 - MinARecoilFactor) * ((ARecoilToApply * (100.0 - sqrt(CurrentX*CurrentX + CurrentY*CurrentY))) / (100.0 + abs(CurrentX) + (CurrentY*CurrentY*0.5)));
    set_val(AxisToApply, MinARecoilToApply + MovementARecoilToApply + get_val(AxisToApply));
}
 
 
User avatar
alanmcgregor
Major
Major
 
Posts: 986
Joined: Tue Mar 27, 2018 8:38 am

Re: Custom AwesomeAntiRecoil from AryanX

Postby trshy » Sat Feb 09, 2019 8:18 am

bonefisher wrote:
Code: Select all
 
#pragma METAINFO("PreSetChanging", 1, 0, "bonefisher")
 
#include <display.gph>
#define wait(a)  wait((int)a);
#define float  fix32
 
uint8 bUseAntiRecoil = 1;
uint16 ARecoilDelay = 0;//Change delay after trigger is pulled to engage anti-recoil.
 
//Percent of anti ARecoil to always apply regardless of aim movement
float MinARecoilPercent = 18.0;
float StickNoise = 6.50;
 
const fix32 warcfg[] =
{ //anti_recoil
    18.7, 0.0,//display 0
    20.0, 0.0,//display 1
    22.0, 0.0,//display 2
    24.0, 0.0,//display 3
    26.0, 0.0,//display 4
    28.0, 0.0,//display 5
    30.0, 0.0 //display 6
};
 
float rf_active, rf_release;
const fix32 wcfg[] =
{
    76.0, 0.0,   //blue led
    37.5, 37.5//green led
    64.0, 16.3//red led
    100.5, 100.5,//pink led
    500.0, 180.0 //no led
};
 
main {
    // - WEAPON TRACKING - - - - - - - - - - - - - - - - - - - - - - - - - - -
    #define WEAPON_PRIMARY      0
    #define WEAPON_SECONDARY    1
    static uint8 weapon;
    if(event_release(BUTTON_14) && time_active(BUTTON_14) < 250) {
        if(weapon == WEAPON_SECONDARY){
            weapon = WEAPON_PRIMARY;
            display_overlay(_P_, 500);
        } else if(weapon == WEAPON_PRIMARY) {
            weapon = WEAPON_SECONDARY;
            display_overlay(_S_, 500);
        } set_val(BUTTON_14, 0.0);
    }
    if(event_release(BUTTON_14) && time_active(BUTTON_14) > 250) {
        if(weapon == WEAPON_SECONDARY){
            weapon = WEAPON_PRIMARY;
            display_overlay(_P_, 500);
        } else if(weapon == WEAPON_PRIMARY) {
            weapon = WEAPON_SECONDARY;
            display_overlay(_S_, 500);
        } set_val(BUTTON_14, 0.0);
    }
 
    // - FIRE MODES - - - - - - - - - - - - - - - - - - - - - - - - - - -
    #define FIRE_MODE_0     0
    #define FIRE_MODE_1     1
    #define FIRE_MODE_2     2
    #define FIRE_MODE_3     3
    #define FIRE_MODE_4     4
    static uint8 fire;
 
    if(is_active(BUTTON_8))
    {
        set_val(BUTTON_12, 0.0);
 
    if(fire==0 && event_active(BUTTON_12)) {
        fire = FIRE_MODE_0;
        goto FIRE_LIGHTBAR;
    }else if(event_release(BUTTON_12)){
    if(fire || !fire) {
        switch(fire) {
        case FIRE_MODE_0: fire = FIRE_MODE_1; break;
        case FIRE_MODE_1: fire = FIRE_MODE_2; break;
        case FIRE_MODE_2: fire = FIRE_MODE_3; break;
        case FIRE_MODE_3: fire = FIRE_MODE_4; break;
        case FIRE_MODE_4: fire = FIRE_MODE_0; break;
        }
    } else fire = FIRE_MODE_4;
        FIRE_LIGHTBAR:
        led_reset();
        switch(fire)
        {
        case FIRE_MODE_0: led_set(LED_1, -1.0, 0); break;
        case FIRE_MODE_1: led_set(LED_3, -1.0, 0); break;
        case FIRE_MODE_2: led_set(LED_2, -1.0, 0); break;
        case FIRE_MODE_3: led_set(LED_4, -1.0, 0); break;
        case FIRE_MODE_4: led_set(LED_3, 0.0, 0); break;
        }
    }
    }
    // - RAPIDFIRE - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    if(get_actual(BUTTON_5)) {
        if(weapon) {                                              // SECONDARY
            if(event_active(BUTTON_5)) {
                rf_active = 37.5;
                rf_release = 37.5;
            } combo_run(Rapidfire);
        } else {                                                  // PRIMARY
            if(event_active(BUTTON_5)) {
                rf_active = wcfg[2*fire+0];
                rf_release = wcfg[2*fire+1];
            } combo_run(Rapidfire);
        }
    } else combo_stop(Rapidfire);
    // - RECOIL MODES - - - - - - - - - - - - - - - - - - - - - - - - - - -
    #define ANTI_RECOIL_0     0
    #define ANTI_RECOIL_1     1
    #define ANTI_RECOIL_2     2
    #define ANTI_RECOIL_3     3
    #define ANTI_RECOIL_4     4
    #define ANTI_RECOIL_5     5
    #define ANTI_RECOIL_6     6
    static uint8 anti_recoil;
    if(is_active(BUTTON_8))
    {
        set_val(BUTTON_13, 0.0);
 
    if(anti_recoil==0 && event_active(BUTTON_13)) {
        anti_recoil = ANTI_RECOIL_0;
        goto ANTI_RECOIL_LIGHTBAR;
    }else if(event_release(BUTTON_13)){
    if(anti_recoil || !anti_recoil) {
        switch(anti_recoil) {
        case ANTI_RECOIL_0: anti_recoil = ANTI_RECOIL_1; break;
        case ANTI_RECOIL_1: anti_recoil = ANTI_RECOIL_2; break;
        case ANTI_RECOIL_2: anti_recoil = ANTI_RECOIL_3; break;
        case ANTI_RECOIL_3: anti_recoil = ANTI_RECOIL_4; break;
        case ANTI_RECOIL_4: anti_recoil = ANTI_RECOIL_5; break;
        case ANTI_RECOIL_5: anti_recoil = ANTI_RECOIL_6; break;
        case ANTI_RECOIL_6: anti_recoil = ANTI_RECOIL_0; break;
        }
    } else anti_recoil = ANTI_RECOIL_4;
        ANTI_RECOIL_LIGHTBAR:
        led_reset();
        switch(anti_recoil)
        {
        case ANTI_RECOIL_0: display_overlay(_0_, 500); break;
        case ANTI_RECOIL_1: display_overlay(_1_, 500); break;
        case ANTI_RECOIL_2: display_overlay(_2_, 500); break;
        case ANTI_RECOIL_3: display_overlay(_3_, 500); break;
        case ANTI_RECOIL_4: display_overlay(_4_, 500); break;
        case ANTI_RECOIL_5: display_overlay(_5_, 500); break;
        case ANTI_RECOIL_6: display_overlay(_6_, 500); break;
        }
    }
    }
    // - ANTI RECOIL - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    if (get_actual(BUTTON_5) && time_active(BUTTON_5) >= ARecoilDelay)
    {
        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_2_X)) < StickNoise) set_val(STICK_2_X, 0.0);
        if (abs(get_actual(STICK_2_Y)) < StickNoise) set_val(STICK_2_Y, 0.0);
 
    if (bUseAntiRecoil == 1)
    {
        if (get_actual(BUTTON_8) && get_val(BUTTON_5))
        {
            AntiRecoil(STICK_1_Y, warcfg[2*anti_recoil+0]);
            AntiRecoil(STICK_1_X, warcfg[2*anti_recoil+1]);
        }
    }
    }
    // - COMMON MODS - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    if(get_actual(BUTTON_5)) {
        set_val(BUTTON_5, 100.0);                             // HAIR TRIGGGER
    }
    if(get_actual(BUTTON_8)) {
        if(get_actual(BUTTON_8) && time_active(BUTTON_8)>= 140) {
            set_val(BUTTON_9, 100.0);                         // HOLD BREATH
        }
        set_val(BUTTON_8, 100.0);                             // HAIR TRIGGGER
    }
}
 
combo Rapidfire {
    set_val(BUTTON_5, 100.0);
    wait(rf_active);
    set_val(BUTTON_5, rf_release ? 0.0 : 100.0);
    wait(rf_release);
    set_val(BUTTON_5, rf_release ? 0.0 : 100.0);
}
 
combo easy_sprint
{
    set_val(BUTTON_9, 0.0);
    wait(200);
    set_val(BUTTON_9, 100.0);
    wait(80);
    set_val(BUTTON_9, 100.0);
}
 
void AntiRecoil(uint8 AxisToApply, float ARecoilToApply)
{
    float CurrentX = get_val(STICK_1_X);
    float CurrentY = get_val(STICK_1_Y);
    float MinARecoilFactor = MinARecoilPercent / 100.0;
    float MinARecoilToApply = MinARecoilFactor * ARecoilToApply;
    //This sets the ARecoil to be dependent on both X and Y axis movement. With more emphasis on Y
    float MovementARecoilToApply = (1.0 - MinARecoilFactor) * ((ARecoilToApply * (100.0 - sqrt(CurrentX*CurrentX + CurrentY*CurrentY))) / (100.0 + abs(CurrentX) + (CurrentY*CurrentY*0.5)));
    set_val(AxisToApply, MinARecoilToApply + MovementARecoilToApply + get_val(AxisToApply));
}
 
alanmcgregor wrote:There you go :)

Code: Select all
 
 
#pragma METAINFO("PreSetChanging" - No Auto Sprint, 1, 0, "bonefisher")
 
#include <display.gph>
#define wait(a)  wait((int)a);
#define float  fix32
 
uint8 bUseAntiRecoil = 1;
uint16 ARecoilDelay = 0;//Change delay after trigger is pulled to engage anti-recoil.
 
//Percent of anti ARecoil to always apply regardless of aim movement
float MinARecoilPercent = 18.0;
float StickNoise = 6.50;
 
const fix32 warcfg[] =
{ //anti_recoil
    18.7, 0.0,//display 0
    20.0, 0.0,//display 1
    22.0, 0.0,//display 2
    24.0, 0.0,//display 3
    26.0, 0.0,//display 4
    28.0, 0.0,//display 5
    30.0, 0.0 //display 6
};
 
float rf_active, rf_release;
const fix32 wcfg[] =
{
    76.0, 0.0,   //blue led
    37.5, 37.5//green led
    64.0, 16.3//red led
    100.5, 100.5,//pink led
    500.0, 180.0 //no led
};
 
main {
    // - WEAPON TRACKING - - - - - - - - - - - - - - - - - - - - - - - - - - -
    #define WEAPON_PRIMARY      0
    #define WEAPON_SECONDARY    1
    static uint8 weapon;
    if(event_release(BUTTON_14) && time_active(BUTTON_14) < 250) {
        if(weapon == WEAPON_SECONDARY){
            weapon = WEAPON_PRIMARY;
            display_overlay(_P_, 500);
        } else if(weapon == WEAPON_PRIMARY) {
            weapon = WEAPON_SECONDARY;
            display_overlay(_S_, 500);
        } set_val(BUTTON_14, 0.0);
    }
    if(event_release(BUTTON_14) && time_active(BUTTON_14) > 250) {
        if(weapon == WEAPON_SECONDARY){
            weapon = WEAPON_PRIMARY;
            display_overlay(_P_, 500);
        } else if(weapon == WEAPON_PRIMARY) {
            weapon = WEAPON_SECONDARY;
            display_overlay(_S_, 500);
        } set_val(BUTTON_14, 0.0);
    }
 
    // - FIRE MODES - - - - - - - - - - - - - - - - - - - - - - - - - - -
    #define FIRE_MODE_0     0
    #define FIRE_MODE_1     1
    #define FIRE_MODE_2     2
    #define FIRE_MODE_3     3
    #define FIRE_MODE_4     4
    static uint8 fire;
 
    if(is_active(BUTTON_8))
    {
        set_val(BUTTON_12, 0.0);
 
    if(fire==0 && event_active(BUTTON_12)) {
        fire = FIRE_MODE_0;
        goto FIRE_LIGHTBAR;
    }else if(event_release(BUTTON_12)){
    if(fire || !fire) {
        switch(fire) {
        case FIRE_MODE_0: fire = FIRE_MODE_1; break;
        case FIRE_MODE_1: fire = FIRE_MODE_2; break;
        case FIRE_MODE_2: fire = FIRE_MODE_3; break;
        case FIRE_MODE_3: fire = FIRE_MODE_4; break;
        case FIRE_MODE_4: fire = FIRE_MODE_0; break;
        }
    } else fire = FIRE_MODE_4;
        FIRE_LIGHTBAR:
        led_reset();
        switch(fire)
        {
        case FIRE_MODE_0: led_set(LED_1, -1.0, 0); break;
        case FIRE_MODE_1: led_set(LED_3, -1.0, 0); break;
        case FIRE_MODE_2: led_set(LED_2, -1.0, 0); break;
        case FIRE_MODE_3: led_set(LED_4, -1.0, 0); break;
        case FIRE_MODE_4: led_set(LED_3, 0.0, 0); break;
        }
    }
    }
    // - RAPIDFIRE - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    if(get_actual(BUTTON_5)) {
        if(weapon) {                                              // SECONDARY
            if(event_active(BUTTON_5)) {
                rf_active = 37.5;
                rf_release = 37.5;
            } combo_run(Rapidfire);
        } else {                                                  // PRIMARY
            if(event_active(BUTTON_5)) {
                rf_active = wcfg[2*fire+0];
                rf_release = wcfg[2*fire+1];
            } combo_run(Rapidfire);
        }
    } else combo_stop(Rapidfire);
    // - RECOIL MODES - - - - - - - - - - - - - - - - - - - - - - - - - - -
    #define ANTI_RECOIL_0     0
    #define ANTI_RECOIL_1     1
    #define ANTI_RECOIL_2     2
    #define ANTI_RECOIL_3     3
    #define ANTI_RECOIL_4     4
    #define ANTI_RECOIL_5     5
    #define ANTI_RECOIL_6     6
    static uint8 anti_recoil;
    if(is_active(BUTTON_8))
    {
        set_val(BUTTON_13, 0.0);
 
    if(anti_recoil==0 && event_active(BUTTON_13)) {
        anti_recoil = ANTI_RECOIL_0;
        goto ANTI_RECOIL_LIGHTBAR;
    }else if(event_release(BUTTON_13)){
    if(anti_recoil || !anti_recoil) {
        switch(anti_recoil) {
        case ANTI_RECOIL_0: anti_recoil = ANTI_RECOIL_1; break;
        case ANTI_RECOIL_1: anti_recoil = ANTI_RECOIL_2; break;
        case ANTI_RECOIL_2: anti_recoil = ANTI_RECOIL_3; break;
        case ANTI_RECOIL_3: anti_recoil = ANTI_RECOIL_4; break;
        case ANTI_RECOIL_4: anti_recoil = ANTI_RECOIL_5; break;
        case ANTI_RECOIL_5: anti_recoil = ANTI_RECOIL_6; break;
        case ANTI_RECOIL_6: anti_recoil = ANTI_RECOIL_0; break;
        }
    } else anti_recoil = ANTI_RECOIL_4;
        ANTI_RECOIL_LIGHTBAR:
        led_reset();
        switch(anti_recoil)
        {
        case ANTI_RECOIL_0: display_overlay(_0_, 500); break;
        case ANTI_RECOIL_1: display_overlay(_1_, 500); break;
        case ANTI_RECOIL_2: display_overlay(_2_, 500); break;
        case ANTI_RECOIL_3: display_overlay(_3_, 500); break;
        case ANTI_RECOIL_4: display_overlay(_4_, 500); break;
        case ANTI_RECOIL_5: display_overlay(_5_, 500); break;
        case ANTI_RECOIL_6: display_overlay(_6_, 500); break;
        }
    }
    }
    // - ANTI RECOIL - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    if (get_actual(BUTTON_5) && time_active(BUTTON_5) >= ARecoilDelay)
    {
        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_2_X)) < StickNoise) set_val(STICK_2_X, 0.0);
        if (abs(get_actual(STICK_2_Y)) < StickNoise) set_val(STICK_2_Y, 0.0);
 
    if (bUseAntiRecoil == 1)
    {
        if (get_actual(BUTTON_8) && get_val(BUTTON_5))
        {
            AntiRecoil(STICK_1_Y, warcfg[2*anti_recoil+0]);
            AntiRecoil(STICK_1_X, warcfg[2*anti_recoil+1]);
        }
    }
    }
 
    // - COMMON MODS - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    if(get_actual(BUTTON_5)) {
        set_val(BUTTON_5, 100.0);                             // HAIR TRIGGGER
    }
    if(get_actual(BUTTON_8)) {
        if(get_actual(BUTTON_8) && time_active(BUTTON_8)>= 140) {
            set_val(BUTTON_9, 100.0);                         // HOLD BREATH
        }
        set_val(BUTTON_8, 100.0);                             // HAIR TRIGGGER
    }
}
 
combo Rapidfire {
    set_val(BUTTON_5, 100.0);
    wait(rf_active);
    set_val(BUTTON_5, rf_release ? 0.0 : 100.0);
    wait(rf_release);
    set_val(BUTTON_5, rf_release ? 0.0 : 100.0);
}
 
 
void AntiRecoil(uint8 AxisToApply, float ARecoilToApply)
{
    float CurrentX = get_val(STICK_1_X);
    float CurrentY = get_val(STICK_1_Y);
    float MinARecoilFactor = MinARecoilPercent / 100.0;
    float MinARecoilToApply = MinARecoilFactor * ARecoilToApply;
    //This sets the ARecoil to be dependent on both X and Y axis movement. With more emphasis on Y
    float MovementARecoilToApply = (1.0 - MinARecoilFactor) * ((ARecoilToApply * (100.0 - sqrt(CurrentX*CurrentX + CurrentY*CurrentY))) / (100.0 + abs(CurrentX) + (CurrentY*CurrentY*0.5)));
    set_val(AxisToApply, MinARecoilToApply + MovementARecoilToApply + get_val(AxisToApply));
}
 
 


you both rock, seriously i'm in love with the product only because the support from its community is amazing, couldn't ask for more. thanks!

btw alan, your script has 1 error, the device couldn't run it, however bonefisher's script worked, so thanks both of you!
User avatar
trshy
Sergeant First Class
Sergeant First Class
 
Posts: 20
Joined: Wed Sep 05, 2018 6:02 pm

Next

Return to GPC2 Script Programming

Who is online

Users browsing this forum: No registered users and 62 guests