// This was only designed for Black Ops 3!
/*******************************************************************************
* MODS WORKS FOR PS4 and XBOX ONE CONSOLES RUMBLE *
* TURNING ON/OFF NOTICE *
* PRIMARY OFF HOLD D-PAD LEFT AND CLICK JUMP NO RUMBLE *
* QUICK FIRE PRIMARY HOLD D-PAD LEFT AND CLICK JUMP 1 time *
* BURST FIRE PRIMARY HOLD D-PAD LEFT AND CLICK JUMP 2 time *
* ADVANCED SNIPER HOLD D-PAD LEFT AND CLICK JUMP 3 time *
* SECONDARY OFF HOLD D-PAD LEFT AND CLICK CROUCH NO RUMBLE *
* QUICK FIRE SECONDARY HOLD D-PAD LEFT AND CLICK CROUCH 1 time *
* AKIMBOS OFF HOLD D-PAD LEFT AND CLICK RELOAD NO RUMBLE *
* AKIMBOS SECONDARY HOLD D-PAD LEFT AND CLICK RELOAD 1 time *
* ANTI-RECOIL OFF HOLD D-PAD DOWN AND CLICK JUMP NO RUMBLE *
* ANTI-RECOIL HOLD D-PAD DOWN AND CLICK JUMP 1 time *
* DROP SHOT OFF HOLD D-PAD DOWN AND CLICK CROUCH NO RUMBLE *
* DROP SHOT HOLD D-PAD DOWN AND CLICK CROUCH 1 time *
* AUTO SPRINT OFF HOLD D-PAD UP AND CLICK JUMP NO RUMBLE *
* AUTO SPRINT HOLD D-PAD UP AND CLICK JUMP 1 time *
* LONG JUMP OFF HOLD D-PAD UP AND CLICK CROUCH NO RUMBLE *
* LONG JUMP HOLD D-PAD UP AND CLICK CROUCH 1 time *
* QUICK RELOAD OFF HOLD D-PAD UP AND CLICK RELOAD NO RUMBLE *
* QUICK RELOAD HOLD D-PAD UP AND CLICK RELOAD 1 time *
* *
*CHOOSE YOUR BUTTON LAYOUT PREFERENCE LEAVE GAME SETTING AT DEFAULT CHANGE HERE*
* DEFAULT SETTING HOLD SCOREBOARD AND CLICK JUMP NO RUMBLE *
* FLIPPED DEFAULT HOLD SCOREBOARD AND CLICK JUMP 1 time *
* BUMPER JUMPER HOLD SCOREBOARD AND CLICK JUMP 2 time *
* TACTICAL HOLD SCOREBOARD AND CLICK JUMP 3 time *
* *
* MAKE SURE TO CYCLE THE SWITCHING BEFORE STARTING!!! *
* *
* SWITCHING BETWEEN PRIMARY AND SECONDARY *
* WHEN TAPPING SWITCH_WEAPON YOU WILL GET ONE RUMBLE FOR THE PRIMARY SIDE AND *
* TWO RUMBLES FOR THE SECONDARY SIDE INCASE YOU GET ON THE WRONG SIDE FOR YOUR *
* CLASS JUST HOLD SWITCH_WEAPON BUTTON FOR 300MS OR LONGER AND RELEASE TO PUT *
* YOU INLINE WITH WEAPON CLASS. WHEN ADJUSTING FIRE MAKE SURE YOU ARE ON THE *
* CORRECT SIDE FOR ADJUSTMENTS. WHEN YOU DIE MAKE SURE YOUR BACK ON PRIMARY *
* SIDE SO SWITCH BEFORE YOU SPAWN. *
* *
* ADJUSTING QUICK FIRE PRIMARY *
* ADJUSTING QUICK FIRE: HOLD FIRE AND CLICK D-PAD UP FOR INCREASING AND *
* D-PAD DOWN FOR DECREASING THE FIRE. *
* MAKE SURE YOUR ON PRIMARY SIDE! *
* *
* ADJUSTING BURST FIRE PRIMARY *
* ADJUSTING BURST FIRE: HOLD AIM AND CLICK D-PAD UP FOR DECREASING SHOTS *
* AND D-PAD DOWN FOR INCREASING SHOTS OF FIRE. *
* ADJUSTING BURST FIRE: HOLD AIM AND CLICK D-PAD RIGHT FOR DECREASING DELAY *
* AND D-PAD LEFT FOR INCREASING DELAY OF FIRE. *
* MAKE SURE YOUR ON PRIMARY SIDE! *
* *
* ADJUSTING QUICK FIRE SECONDARY *
* ADJUSTING QUICK FIRE: HOLD FIRE AND CLICK D-PAD RIGHT FOR INCREASING *
* AND D-PAD LEFT FOR DECREASING THE FIRE. *
* MAKE SURE YOUR ON SECONDARY SIDE! *
* *
* ADJUSTING QUICK RELOAD *
* ADJUSTING QUICK RELOAD: HOLD JUMP AND CLICK OR HOLD FOR FAST TRAVEL LETHAL *
* TO LENGTHEN THE TIMING AND TACTICAL TO SHORTEN THE TIMING. *
* THIS IS A YY METHOD AND HOW TO SET IT WHERE IT BENEFITS YOU. YOU WANT TO *
* WATCH BOTTOM RIGHT OF THE SCREEN AT YOUR LOADED AMMO CLIP WHEN THIS CHANGES *
* NUMBERS IS WHERE YOU WANT YOUR YY RELOAD CANCEL TO GO OVER. WHEN ADJUSTING *
* MAKE IT WHERE IT DOESN'T LOAD A FULL CLIP THEN JUST CLICK TIL IT LOCKS FULL. *
* *
* AKIMBO MOD *
* IT ADJUSTS WITH THE QUICK FIRE SECONDARY SETTINGS YOU CAN EITHER HAVE THIS *
* ON FOR AKIMBOS OR OFF BUT FOR THE AKIMBOS TO WORK IT DOES NEED QUICK FIRE *
* SECONDARY SIDE ON ALSO. BECAUSE THERE BOTH ARE SINGLED OUT FROM ONE ANOTHER. *
* *
* ADVANCED SNIPER MOD *
* TAP FIRE TRIGGER TO QUICKSCOPE OR HOLD FIRE TRIGGER AND RELEASE TAKING A SHOT*
* ADS TRIGGER IS THE CANCEL METHOD IF NOT WANTING TO TAKE SHOT. ADJUSTMENTS ARE*
* IN THE DEFINE SECTION FOR EACH SNIPER WEAPON UNDER SNIPERHOLD / SNIPERRELEASE*
*******************************************************************************/
define SCOREBOARD = 1;
define MENU = 2;
define FIRE = 4;
define ADS = 7;
define TACTICAL = 6;
define LETHAL = 3;
define UP = 13;
define DOWN = 14;
define LEFT = 15;
define RIGHT = 16;
define SPRINT = 8;
define MELEE = 5;
define SWITCH = 17;
define RELOAD = 20;
define JUMP = 19;
define CROUCH = 18;
define ANTI_RECOIL_FORCE = 30; // change this value to compensate
// to the vertical recoil.
define SniperHold = 250; // P-06 needs 100 // Locus needs 250 // SVG-100 needs 300
define SniperRelease = 10; // P-06 needs 250 // Locus needs 10 // SVG-100 needs 20
define ON = 14;
define OFF = 13;
int PrimaryFire;
int SecondaryFire;
int BurstOfFire, BurstOfFire2;
int AkimboOnOff;
int AutoRunOnOff;
int RapidFireOnOff;
int HoldTime, RateOfFire;
int HoldTime2, RateOfFire2;
int HoldBurst, ReleaseBurst;
int ToggleAntiRecoil;
int Primary = FALSE;
int LongJumpOnOff;
int DropShotOnOff;
int QuickReload;
int ReloadRate,ReloadTime;
int AntiRecoilOnOff;
int anti_recoil;
int ar_fire, ar_tmp;
int ControllerLayout;
init {
PrimaryFire = get_pvar(SPVAR_1, 1, 4, 1);
SecondaryFire = get_pvar(SPVAR_2, 1, 2, 2);
RateOfFire = get_pvar(SPVAR_3, 25, 250, 62);
RateOfFire2 = get_pvar(SPVAR_4, 25, 250, 62);
AkimboOnOff = get_pvar(SPVAR_5, 1, 2, 2);
AutoRunOnOff = get_pvar(SPVAR_6, 1, 2, 1);
LongJumpOnOff = get_pvar(SPVAR_7, 1, 2, 1);
QuickReload = get_pvar(SPVAR_8, 1, 2, 2);
ReloadRate = get_pvar(SPVAR_9, 500, 4000, 1500);
AntiRecoilOnOff = get_pvar(SPVAR_10, 1, 2, 2);
BurstOfFire = get_pvar(SPVAR_12, 10, 1000, 300);
BurstOfFire2 = get_pvar(SPVAR_13, 10, 1000, 50);
DropShotOnOff = get_pvar(SPVAR_14, 1, 2, 2);
ControllerLayout = get_pvar(SPVAR_15, 1, 4, 1);
}
main {
// Set hair triggers
if (get_val(FIRE)) {set_val(FIRE, ON); }
if (get_val(ADS)) {set_val(ADS, ON); }
ar_fire = get_val(FIRE);
if (get_val(SCOREBOARD) && event_press(JUMP)) {
if (ControllerLayout == 4) {
ControllerLayout = 1;
set_pvar(SPVAR_15, ControllerLayout);
} else if (ControllerLayout == 1) {
ControllerLayout = 2;
set_pvar(SPVAR_15, ControllerLayout);
combo_run(RumbleNotifier);
} else if (ControllerLayout == 2) {
ControllerLayout = 3;
set_pvar(SPVAR_15, ControllerLayout);
combo_run(DoubleRumbleNotifier);
} else if (ControllerLayout == 3) {
ControllerLayout = 4;
set_pvar(SPVAR_15, ControllerLayout);
combo_run(TripleRumbleNotifier);
}
}
if(ControllerLayout == 2) {
swap(LETHAL,FIRE); swap(TACTICAL,ADS); // FLIPPED DEFAULT BUTTON LAYOUT
}
if(ControllerLayout == 3) {
swap(TACTICAL,JUMP); // BUMPER JUMPER BUTTON LAYOUT
}
if(ControllerLayout == 4) {
swap(MELEE,CROUCH); // TACTICAL BUTTON LAYOUT
}
if (get_val(LEFT) && event_press(JUMP)) {
if (PrimaryFire == 4) {
PrimaryFire = 1;
set_pvar(SPVAR_1, PrimaryFire);
} else if (PrimaryFire == 1) {
PrimaryFire = 2;
set_pvar(SPVAR_1, PrimaryFire);
combo_run(RumbleNotifier);
} else if (PrimaryFire == 2) {
PrimaryFire = 3;
set_pvar(SPVAR_1, PrimaryFire);
combo_run(DoubleRumbleNotifier);
} else if (PrimaryFire == 3) {
PrimaryFire = 4;
set_pvar(SPVAR_1, PrimaryFire);
combo_run(TripleRumbleNotifier);
}
}
if (get_val(LEFT) && event_press(CROUCH)) {
if (SecondaryFire == 1) {
SecondaryFire = 2;
} else if (SecondaryFire == 2) {
SecondaryFire = 1;
}
set_pvar(SPVAR_2, SecondaryFire);
if (SecondaryFire == 1) {
combo_run(RumbleNotifier);
}
}
if (get_val(LEFT) && event_press(RELOAD)) {
if (AkimboOnOff == 1) {
AkimboOnOff = 2;
} else if (AkimboOnOff == 2) {
AkimboOnOff = 1;
}
set_pvar(SPVAR_5, AkimboOnOff);
if (AkimboOnOff == 1) {
combo_run(RumbleNotifier);
}
}
if(event_release(SWITCH)){
if(get_ptime(SWITCH) <= 300){
Primary = !Primary;
}
if(Primary){
set_pvar(SPVAR_1, PrimaryFire);
combo_run(RumbleNotifier);
set_pvar(SPVAR_2, SecondaryFire);
}
else{
set_pvar(SPVAR_2, SecondaryFire);
combo_run(DoubleRumbleNotifier);
}
}
if(PrimaryFire == 2 && get_val(FIRE) && Primary){
combo_run(RapidFire); combo_stop(AutoSprint);
}
if(PrimaryFire == 3 && get_val(FIRE) && Primary){
combo_run(BurstFire); combo_stop(AutoSprint);
}
if(PrimaryFire == 4 && Primary){
if(get_val(FIRE)) {set_val(FIRE,0); set_val(ADS,100);
combo_run(AutoSprint);}
else if(event_release(FIRE) && get_ptime(FIRE) <= SniperHold) {
combo_run(QuickScope);}
else if(event_release(FIRE) && get_ptime(FIRE) >= SniperHold) {
combo_stop(QuickScope);combo_run(QSH_fire);}
if(get_val(ADS)) {combo_stop(QuickScope);
combo_stop(QSH_fire);}
}
if(SecondaryFire == 1 && get_val(FIRE) && !Primary){
combo_run(RapidFire2); combo_stop(AutoSprint);
}
if(AkimboOnOff == 1 && get_val(FIRE) && !Primary){
combo_run(Akimbos); combo_stop(AutoSprint);
}
if (PrimaryFire == 2 && get_val(FIRE)) {
if (get_val(UP)) {RateOfFire = RateOfFire - 1; }
if (get_val(DOWN)) {RateOfFire = RateOfFire + 1; }
if (RateOfFire > 250) { RateOfFire = 250; }
if (RateOfFire < 25) { RateOfFire = 25; }
set_pvar(SPVAR_3, RateOfFire);
HoldTime = RateOfFire;
}
if (SecondaryFire == 1 && get_val(FIRE)) {
if (get_val(RIGHT)) {RateOfFire2 = RateOfFire2 - 1; }
if (get_val(LEFT)) {RateOfFire2 = RateOfFire2 + 1; }
if (RateOfFire2 > 250) { RateOfFire2 = 250; }
if (RateOfFire2 < 25) { RateOfFire2 = 25; }
set_pvar(SPVAR_4, RateOfFire2);
HoldTime2 = RateOfFire2;
}
if (PrimaryFire == 3 && get_val(ADS) && !get_val(FIRE)) {
if (get_val(UP)) {BurstOfFire = BurstOfFire - 1; }
if (get_val(DOWN)) {BurstOfFire = BurstOfFire + 1; }
if (BurstOfFire > 1000) { BurstOfFire = 1000; }
if (BurstOfFire < 10) { BurstOfFire = 10; }
set_pvar(SPVAR_12, BurstOfFire);
HoldBurst = BurstOfFire;
}
if (PrimaryFire == 3 && get_val(ADS) && !get_val(FIRE)) {
if (get_val(RIGHT)) {BurstOfFire2 = BurstOfFire2 - 1; }
if (get_val(LEFT)) {BurstOfFire2 = BurstOfFire2 + 1; }
if (BurstOfFire2 > 1000) { BurstOfFire2 = 1000; }
if (BurstOfFire2 < 10) { BurstOfFire2 = 10; }
set_pvar(SPVAR_13, BurstOfFire2);
ReleaseBurst = BurstOfFire2;
}
if (get_val(UP) && event_press(JUMP)) {
if (AutoRunOnOff == 1) {
AutoRunOnOff = 2;
} else if (AutoRunOnOff == 2) {
AutoRunOnOff = 1;
}
set_pvar(SPVAR_6, AutoRunOnOff);
if (AutoRunOnOff == 1) {
combo_run(RumbleNotifier);
}
}
if (AutoRunOnOff == 1) {
if (get_val(12) < -95) { combo_run(AutoSprint);
}
}
if (get_val(UP) && event_press(CROUCH)) {
if (LongJumpOnOff == 2) {
LongJumpOnOff = 1;
set_pvar(SPVAR_7, LongJumpOnOff);
} else if (LongJumpOnOff == 1) {
LongJumpOnOff = 2;
set_pvar(SPVAR_7, LongJumpOnOff);
combo_run(RumbleNotifier);
}
}
if (LongJumpOnOff == 2 && get_val(JUMP)) {
combo_run(LongJump);
}
if (get_val(UP) && event_press(RELOAD)){
if (QuickReload == 1) {
QuickReload = 2;
} else if (QuickReload == 2) {
QuickReload = 1;
}
set_pvar(SPVAR_8, QuickReload);
if (QuickReload == 1) {
combo_run(RumbleNotifier);
}
}
if (QuickReload == 1 && event_press(RELOAD)) {
combo_run(FastReload);
}
if (QuickReload == 1 && get_val(JUMP)) {
if (get_val(TACTICAL)) {ReloadRate = ReloadRate - 1; }
if (get_val(LETHAL)) {ReloadRate = ReloadRate + 1; }
if (ReloadRate > 4000) { ReloadRate = 4000; }
if (ReloadRate < 500) { ReloadRate = 500; }
set_pvar(SPVAR_9, ReloadRate);
ReloadTime = ReloadRate;
set_val(TACTICAL, 0); set_val(LETHAL, 0);
}
if (get_val(DOWN) && event_press(JUMP)) {
if (AntiRecoilOnOff == 1) {
AntiRecoilOnOff = 2;
} else if (AntiRecoilOnOff == 2) {
AntiRecoilOnOff = 1;
}
set_pvar(SPVAR_10, AntiRecoilOnOff);
if (AntiRecoilOnOff == 1) {
combo_run(RumbleNotifier);
}
}
if (AntiRecoilOnOff == 1 && get_val(ADS) && get_val(FIRE)) {
combo_run(AntiRecoilADV);
}
if (get_val(DOWN) && event_press(CROUCH)){
if (DropShotOnOff == 1) {
DropShotOnOff = 2;
} else if (DropShotOnOff == 2) {
DropShotOnOff = 1;
}
set_pvar(SPVAR_14, DropShotOnOff);
if (DropShotOnOff == 1) {
combo_run(RumbleNotifier);
}
}
if (DropShotOnOff == 1) {
if((!get_val(ADS) && event_press(FIRE)) || (event_release(ADS) && get_val(FIRE))) {
combo_run(DropShot);
combo_stop(AutoSprint);
}
}
}
combo RumbleNotifier {
set_rumble(RUMBLE_A, 100);
wait (300);
reset_rumble();
}
combo DoubleRumbleNotifier {
set_rumble(RUMBLE_A, 100);
wait (300);
set_rumble (RUMBLE_A, 0);
wait (300);
set_rumble(RUMBLE_A, 100);
wait (400);
reset_rumble();
}
combo TripleRumbleNotifier {
set_rumble(RUMBLE_A, 100);
wait (300);
set_rumble (RUMBLE_A, 0);
wait (300);
set_rumble(RUMBLE_A, 100);
wait (400);
set_rumble (RUMBLE_A, 0);
wait (300);
set_rumble(RUMBLE_A, 100);
wait (400);
reset_rumble();
}
combo RapidFire {
set_val (FIRE, ON);
wait (HoldTime);
set_val (FIRE, OFF);
wait (HoldTime);
}
combo RapidFire2 {
set_val (FIRE, ON);
wait (HoldTime2);
set_val (FIRE, OFF);
wait (HoldTime2);
}
combo BurstFire {
set_val (FIRE, ON);
wait (HoldBurst);
set_val (FIRE, OFF);
wait (ReleaseBurst);
}
combo QuickScope {
set_val (ADS,100);
wait (SniperHold); // P-06 needs 10 // Locus needs 250 // SVG-100 needs 300
set_val (ADS,100);
set_val (FIRE,100);
wait (50);
set_val (ADS,100);
wait (SniperRelease); // P-06 needs 250 // Locus needs 10 // SVG-100 needs 20
}
combo QSH_fire {
set_val (ADS,100);
set_val (FIRE,100);
wait (50);
set_val (ADS,100);
wait (SniperRelease); // P-06 needs 250 // Locus needs 10 // SVG-100 needs 20
}
combo Akimbos {
set_val (ADS, OFF);
wait (HoldTime2);
set_val (ADS, ON);
wait (HoldTime2);
}
combo AutoSprint {
set_val (SPRINT,ON);
wait (10);
set_val (SPRINT,ON);
}
combo FastReload {
set_val (SPRINT, 0);
wait (ReloadTime);
set_val (SWITCH, ON);
wait (40);
set_val (SWITCH, 0);
wait (30);
set_val (SWITCH, ON);
wait (40);
set_val (SWITCH, 0);
}
combo LongJump {
set_val (JUMP, 100);
wait (160);
set_val (JUMP, 0);
wait (60);
}
combo DropShot {
set_val (CROUCH, 100);
wait (380);
}
combo AntiRecoilADV {
if(ar_fire && get_val(FIRE)) {
ar_tmp = get_val(10) + ANTI_RECOIL_FORCE;
if(ar_tmp > 100) ar_tmp = 100;
else if(ar_tmp < -100) ar_tmp = -100;
set_val(10, ar_tmp);
}
}