//-------------------------------------------------------------------------------------------
// 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