[Multi-Platform] Anti-Recoil + Rapid Fire [ADJUSTABLE WITH ON/OFF SAVE FUNCTION]

This is an evolution of my first version to which I've added Anti-Recoil release regulation. Anti-Recoil and Rapid Fire are now decoupled. ANTI-RECOIL and RAPID FIRE are both fully adjustable on the fly, and both have on/off and save function. This script can be used on any console and with any controller, but if you want to use it with mouse and keyboard, comment out any line which has SPVAR in it. X-Aim doesn't support them. Inside the script you'll find detailed instructions for XBOX or PLAY STATION users.
Version3.0
AuthorValant
Publish DateSat, 16 Jan 2016 - 21:28
Last UpdateSun, 17 Jan 2016 - 09:37
Downloads4497
ForumAnnouncement Topic
RATE


6

1

Code: Select all
//-------------------------------------------------------------------------------------------
//  ANTIRECOIL (Vertical + Horizontal) and RAPIDFIRE, both adjustable on the fly, with ON/OFF and SAVE function
//-------------------------------------------------------------------------------------------
//  Version: 3.0
//  Platform: Multi
//  Controller: Multi
//  Game: All FPS games
//  Author: LEX LOST (Repubbed by JaggedDiamond)
//-------------------------------------------------------------------------------------------
//               XBOX INSTRUCTIONS:
// RAPIDFIRE (ON by default - Start value: 13)
// Hold LT and Press A to Enable or Disable Rapidfire (with rumble notify)
// Hold A and tap UP to increase Rate of Fire (+1 each tap on UP, while holding A)
// Hold A and tap DOWN to decrease Rate of Fire (-1 each tap on DOWN, while holding A)
// Save Rate of Fire: Hold LT and press MENU (or START, for XBOX360 users)
 
// ANTIRECOIL (ON by default - Start value: vertical = 30; Horizontal = 0;)
// Hold LT and Press X to Enable or Disable Antirecoil (with rumble notify)
// Hold LT and tap UP to increase Antirecoil (+1 each tap on UP, while holding LT)
// Hold LT and tap DOWN to decrease Antirecoil (-1 each tap on DOWN, while holding LT)
// Hold LT and tap RIGHT to compensate to the right (+1 each tap on RIGHT , while holding LT)
// Hold LT and tap LEFT to compensate to the left (-1 each tap on LEFT, while holding LT)
// Save Antirecoil: Hold LT and press Y
 
 
//-------------------------------------------------------------------------------------------
//               PLAYSTATION INSTRUCTIONS:
// RAPIDFIRE (ON by default - Start value: 13)
// Hold L2 and Press CROSS to Enable or Disable Rapidfire (with rumble notify)
// Hold CROSS and tap UP to increase Rate of Fire (+1 each tap on UP, while holding CROSS)
// Hold CROSS and tap DOWN to decrease Rate of Fire (-1 each tap on DOWN, while holding CROSS)
// Save Rate of Fire: Hold L2 and press OPTIONS (or START, for PS3 users)
 
// ANTIRECOIL (ON by default - Start value: vertical = 30; Horizontal = 0;)
// Hold L2 and Press SQUARE to Enable or Disable Antirecoil (with rumble notify)
// Hold L2 and tap UP to increase Antirecoil (+1 each tap on UP, while holding L2)
// Hold L2 and tap DOWN to decrease Antirecoil (-1 each tap on DOWN, while holding L2)
// Hold L2 and tap RIGHT to compensate to the right(+1 each tap on RIGHT , while holding L2)
// Hold L2 and tap LEFT to compensate to the right (-1 each tap on LEFT, while holding L2)
// Save Antirecoil: Hold L2 and press TRIANGLE
 
//-------------------------------------------------------------------------------------------
 
//DECLARARATIONS - define
 
define AR_Release = 70; // change this value to determine when antirecoil stops working (min: antirecoil value)
define ONLY_WITH_SCOPE = TRUE; // if TRUE Antirecoil IS ON only when scoping
 
define RECOIL_UP = 13;     
define RECOIL_DOWN = 14;   
define RECOIL_LEFT  = 15;
define RECOIL_RIGHT = 16
 
//-------------------------------------------------------------------------------------------
 
//VARIABLES - int
 
int fire_button;
int scope_button;
int hold_time;
int rest_time;
int recoil_onoff = TRUE; // if TRUE ANTIRECOIL is ON by default - if FALSE, OFF by default
int rapid_onoff = TRUE; // if TRUE RAPIDFIRE is ON by default - if FALSE, OFF by default
int RATE_OF_FIRE = 13; //Range: 1 to 25 RPS (Round/s)
int ANTI_RECOIL = 30;
int ANTI_RECOIL_H = 0
int anti_recoil;
int anti_recoil_H;
 
//-------------------------------------------------------------------------------------------
 
//INITIALIZATION - init
 
init{
 
    if(get_console() == PIO_PS3) {
        fire_button = 3;
        scope_button = 6;
    }else {
        fire_button = 4;
        scope_button = 7;
    }
    RATE_OF_FIRE = get_pvar(SPVAR_1,0, 250, 13);
    ANTI_RECOIL = get_pvar(SPVAR_2,0,100,30);
    ANTI_RECOIL_H = get_pvar(SPVAR_3,0,100,0);
}
 
//-------------------------------------------------------------------------------------------
 
//MAIN BLOCK ROUTINES
 
main {
    if(get_val(7)  && event_press(20))  {
        combo_run(vibrate); recoil_onoff=!recoil_onoff;
        }
    if(get_val(7)) {if(event_press(19))  {
        combo_run(vibrate);rapid_onoff=!rapid_onoff;}
        }   
    if(rapid_onoff) {if(get_val(4)) {combo_run(RAPID_FIRE);
        }
    }     
        hold_time = 500 / RATE_OF_FIRE;
        rest_time = hold_time - 20;
        if(rest_time < 0) rest_time = 0;
 
    if(get_val(19)){ 
        if(event_press(13)){
            RATE_OF_FIRE = RATE_OF_FIRE +1;
        }
        if(event_press(14)){
            RATE_OF_FIRE = RATE_OF_FIRE -1;
        }
        set_val(13,0);set_val(14,0);
    }
 
    if(get_val(scope_button) && event_press(2)){
        set_pvar(SPVAR_1,RATE_OF_FIRE);
        set_val(2,0);
    }
    if(get_val(7)){
        if(event_press(RECOIL_UP)){
            ANTI_RECOIL = ANTI_RECOIL + 1;
        }
        if(event_press(RECOIL_DOWN)) {
            ANTI_RECOIL = ANTI_RECOIL - 1;
        }
        set_val(RECOIL_UP,0);
        set_val(RECOIL_DOWN,0);
 
        if(event_press(RECOIL_LEFT)){
            ANTI_RECOIL_H = ANTI_RECOIL_H + 1;
        }
        if(event_press(RECOIL_RIGHT)) {
            ANTI_RECOIL_H = ANTI_RECOIL_H - 1;
        }
        set_val(RECOIL_LEFT,0);
        set_val(RECOIL_RIGHT,0);
 
        if(event_press(17)){
        set_pvar(SPVAR_2, ANTI_RECOIL);
        set_pvar(SPVAR_3, ANTI_RECOIL_H);
        }
    }
    if(!ONLY_WITH_SCOPE || get_val(scope_button) && get_val(fire_button )) {
        combo_run(AntiRecoil);
    }
    if ((get_val(10) <-AR_Release) || (get_val(10) > AR_Release) || (get_val(9) <-AR_Release) || (get_val(9) > AR_Release)) {
                combo_stop (AntiRecoil);
    }
}
//-------------------------------------------------------------------------------------------
 
//COMBO BLOCKS
 
combo vibrate   {
    set_rumble(RUMBLE_A, 100);
    wait(300);
    reset_rumble();
    }
 
combo RAPID_FIRE {
    set_val(fire_button, 100);
    wait(hold_time);
    set_val(fire_button, 0);
    wait(rest_time);
    set_val(fire_button, 0);
    }
combo AntiRecoil { // This combo must be the last one
    if(recoil_onoff) {
    anti_recoil = get_val(10) + ANTI_RECOIL;
    if(anti_recoil > 100) anti_recoil = 100;
    set_val(10, anti_recoil);
    anti_recoil_H = get_val(9) +ANTI_RECOIL_H;
    if(anti_recoil_H > 100) anti_recoil_H = 100;
    set_val(9, anti_recoil_H);
    }
} // End