/*
GPC Online Library
Call Of Duty (Modern Warfare Remastered) Script
=============================================================================
Device: Titan One
Author: ITZM3RY4N
Game: Call of Duty Modern Warfare Remastered (MWR)
System: PlayStation 4 (PS4)
Controller: DualShock 4 (DS4)
This script should work for Xbox (360 or One) and PS3 with changes described further below
Game Settings: Default Flipped Button Layout
=============================================================================
Version 1.0
=============================================================================
TOGGLES: (You MUST press the ADS or CROUCH button first before)
Press ADS (aim down sights) button in addition with any of the below. Using ADS button helps to prevent accidental turn ON and OFF when operating killstreaks and/or other times that requires the D PAD
Press LEFT on the D PAD to activate/deactivate "RAPID FIRE ON/OFF" *** See the Special below ***
Press RIGHT on the D PAD to activate/deactivate "RAPID FIRE CYCLING"
Press UP on the D PAD to activate/deactivate "JITTER ON/OFF"
Press DOWN on the D PAD to activate/deactivate "DROP SHOT"
Special: You can enable Rapid Fire another way by using (ADS + SPRINT). This works if you are using auto sprint. It will cause problems if are using regular sprint.
You must enable it to work by making ExtraRapid = TRUE. You can set it to FALSE if you don't want that option.
Press CROUCH in addition with any of the below. Using CROUCH helps to prevent accidental turn ON and OFF when operating killstreaks and/or other times that requires the D PAD
Press LEFT on the D PAD to activate/deactivate "HOLD BREATH"
Press RIGHT on the D PAD to activate/deactivate "ADS Fire"
Press UP on the D PAD to activate/deactivate "QUICK SCOPE"
Press DOWN on the D PAD to activate/deactivate "ANTI-RECOIL"
=============================================================================
DEFINES
*/
// Changes are needed for these for the non flipped button layout
define ADS = PS4_L1; // L1 can be changed to L2 for non flipped
define TACTICAL = PS4_L2; // L2 can be changed to L1 for non flipped
define SHOOT = PS4_R1; // R1 can be changed to R2 for non flipped
define GRENADE = PS4_R2; // R2 can be changed to R1 for non flipped
// These are needed for default button layout (non tactical)
define CROUCH = PS4_CIRCLE; // "Default" button layout is PS4_CIRCLE. "Tactical" button layout is PS4_R3.
define MELEE = PS4_R3; // "Default" button layout is PS4_R3. "Tactical" button layout is PS4_CIRCLE.
define SPRINT_EXO = PS4_L3;
define LX = PS4_LX;
define LY = PS4_LY;
define RX = PS4_RX;
define RY = PS4_RY;
define JUMP = PS4_CROSS;
define RELOAD = PS4_SQUARE;
define SWAP_WEAPONS = PS4_TRIANGLE;
define UP = PS4_UP;
define DOWN = PS4_DOWN;
define LEFT = PS4_LEFT;
define RIGHT = PS4_RIGHT;
define INSTA_FIRE = 98; // The % at which it boosts the SHOOT button when pressed - i.e. 95% means when pressed 5%
define INSTA_AIM = 98; // The % at which it boosts the ADS button when pressed - i.e. 95% means when pressed 5%
define INSTA_OTHER = 98; // The % at which it boosts the other button when pressed - i.e. 95% means when pressed 5%
define DROPSHOT_QUICKNESS = 98; // The % at which it boosts the CROUCH button when pressed - i.e. 95% means when pressed 5%
define ADS_SPEED = 20; // The % at which it boosts your aiming speed when using ADS
define DISABLE_WITH_SCOPE = TRUE; // Will not drop shot if ADS is on
define ANTI_RECOIL = 25; // Change this value to compensate to the vertical recoil
define ANTI_RECOIL_LEFT = 0; // Change this value to compensate to the left
define ANTI_RECOIL_RIGHT = 0; // Change this value to compensate to the right
define ONLY_WITH_SCOPE = TRUE; // Anti-recoil will only be applied with ADS
define QUICK_SCOPE_WAIT = 500; // Increase this time for a longer ADS time. Decrease this time for a shorter ADS time
define RELOAD_WAIT = 2000; // Wait time after stopping auto sprint to allow reloading. Adjust as necessary
define SHOOT_WAIT = 300; // Wait time after stopping auto sprint to allow shooting
define DROP_SHOT_WAIT = 1000; // Wait time for drop shot combo (changed from 1200 to 1000)
define MULTIPLE_NOTIFIER = TRUE; // Rumbles multiply times to indicate the rapid fire preset
data(1,
2,0,0,0, //1 Blue
0,2,0,0, //2 Red
0,0,2,0, //3 Green
0,0,0,2, //4 Pink
2,0,2,0, //5 Cyan
0,2,2,0, //6 Amber/Yellow
2,2,2,2 //7 White
);
// VARIABLES =============================================================================
int AutoSprintON = FALSE;
int AutoDashON = FALSE;
int QuickMelee_ON = FALSE;
int RapidFireON = FALSE;
int DropShotON = FALSE; // Turned on by default but can be turned off with the Toggles. Change to FALSE if you want it off by default
int InversionON = FALSE; // Set this to TRUE if you are using look inversion enabled in the game setting. Most people are NOT using look inversion
int JitterMode = 0; // 0 = disabled, 1 = normal jitter
int AntiRecoilON = FALSE;
int QuickScopeON = FALSE;
int QuickReloadON = FALSE;
int RapidFireCounter = 1;
int anti_recoil;
int anti_recoil_left;
int anti_recoil_right;
int ADS_Fire_On = FALSE;
int HoldBreathON = FALSE;
int ExtraRapid = FALSE; // This turns on/off the ability to toggle rapid fire with ADS + SPRINT
int ManualAuthenticate = FALSE;
int Counter;
// Hold Time is the time in mSeconds that the SHOOT button is pressed. It varies depending on the weapon, game and attachments.
// Release time is the time between shooting. This will vary depending on the game timing that is coded into the game.
int HoldTime = 10; // defined in mSeconds for regular Rapid Fire
int RestTime = 10; // defined in mSeconds for regular Rapid Fire
int ColorNumber;
// MAIN SCRIPT =============================================================================
main {
vm_tctrl(-5); // sets main loop to 5mS vs the default 10mS
// Makes the button 100% pressed even if barely pressed - aka more sensitive and quicker reaction
if(get_val(CROUCH)){sensitivity(CROUCH, NOT_USE, 100 + DROPSHOT_QUICKNESS);}
if(get_val(ADS)){sensitivity(ADS, 10, 100 + INSTA_AIM);}
if(get_val(SHOOT)){sensitivity(SHOOT, 10, 100 + INSTA_FIRE);}
if(get_val(SPRINT_EXO)){sensitivity(SPRINT_EXO, 10, 100 + INSTA_OTHER);}
if(get_val(GRENADE)){sensitivity(GRENADE, 10, 100 + INSTA_OTHER);}
// TOGGLES =============================================================================
if(event_press(LEFT) && get_val(ADS)) { // Turn ON and OFF Rapid Fire
RapidFireON = !RapidFireON;
if(RapidFireON) {
JitterMode = 0;
ColorLED(5); // cyan
combo_run(RumbleNotifier);
QuickScopeON = FALSE; // Turn OFF QuickScope
}
if(!RapidFireON) {ColorLED(1); combo_run(SingleNotifier);}
}
if(event_press(SPRINT_EXO) && get_val(ADS)&& ExtraRapid) { // Turn ON and OFF Rapid Fire
RapidFireON = !RapidFireON;
if(RapidFireON) {
JitterMode = 0;
ColorLED(3); // green
combo_run(RumbleNotifier);
QuickScopeON = FALSE; // Turn OFF QuickScope
}
if(!RapidFireON) {ColorLED(1); combo_run(SingleNotifier);}
}
// Using this to cycle through rapid fire settings for testing. It can be used for having multiple rapid fire settings
// You can set these values to whatever you want and adjust how many different values that you want.
if(event_press(RIGHT) && get_val(ADS) && RapidFireON) {
RapidFireCounter = RapidFireCounter + 1;
Counter = 1;
if(Counter <= RapidFireCounter) {
combo_run(SingleNotifier);
Counter = Counter +1;
if (RapidFireCounter == 2) ColorLED(2);
if (RapidFireCounter == 2) combo_run(RumbleNotifier);
}
if(RapidFireCounter > 2) {RapidFireCounter = 1;} // Change the "2" to how many options that you want
if(RapidFireCounter == 1){HoldTime = 16; RestTime = 16;} // Preset #1 Normal RapidFire
if(RapidFireCounter == 2){HoldTime = 22; RestTime = 22;} // Preset #2 Great With Double Tap
}
if(event_press(DOWN) && get_val(ADS)) { // Turns ON and OFF Drop Shot
DropShotON = !DropShotON;
if(DropShotON) {
ADS_Fire_On = FALSE;
ColorLED(6); // amber/yellow
combo_run(RumbleNotifier);
}
if(!DropShotON) {ColorLED(1);}
}
if(event_press(UP) && get_val(ADS)) { // Toggle between jitter ON/OFF
JitterMode = JitterMode + 1;
if(JitterMode > 1){JitterMode = 0;}
if(JitterMode==0) {ColorLED(1);}
if(JitterMode == 1) {
RapidFireON = FALSE;
ColorLED(3); // green
combo_run(RumbleNotifier);
}
if(JitterMode == 0) {
RapidFireON = FALSE;
combo_run(SingleNotifier);
}
}
if(event_press(UP) && get_val(CROUCH)) { // Turns ON and OFF Quick Scope
QuickScopeON = !QuickScopeON;
if(QuickScopeON) {
RapidFireON = FALSE; // Turn OFF Rapid Fire
AntiRecoilON = FALSE; // Turn OFF Anti Recoil
}
}
if(event_press(DOWN) && get_val(CROUCH)) { // Turns ON and OFF Anti-Recoil
AntiRecoilON = !AntiRecoilON;
if(AntiRecoilON) {
ColorLED(4); // pink
combo_run(RumbleNotifier);
}
if(!AntiRecoilON) {ColorLED(1);}
}
if(event_press(RIGHT) && get_val(CROUCH)) { // Turns ON and OFF ADS Fire
ADS_Fire_On = !ADS_Fire_On;
if(ADS_Fire_On) {
DropShotON = FALSE;
ColorLED(7); // white
combo_run(RumbleNotifier);
}
if(!ADS_Fire_On) {ColorLED(1);}
}
if(event_press(LEFT) && get_val(CROUCH)) { // Turns ON and OFF auto hold breath
HoldBreathON = !HoldBreathON;
if(HoldBreathON) {
ColorLED(7); // white
// combo_run(WhiteLED);
combo_run(RumbleNotifier);
}
if(!HoldBreathON) {ColorLED(1);}
}
// END TOGGLES =============================================================================
if(get_val(UP) && get_val(JUMP) && ManualAuthenticate) {output_reconnection();}
// Auto ADS
if(get_val(SHOOT) && ADS_Fire_On && !DropShotON) {set_val(ADS,100);}
// Drop Shot
if(event_press(SHOOT) && DropShotON){
combo_stop(AutoSprint);
combo_run(DropShot);
}
if(DISABLE_WITH_SCOPE && get_val(ADS)) {combo_stop(DropShot);}
// Normal Jitter
if(get_val(SHOOT) && JitterMode==1) {combo_run(Jitter);}
// else if (combo_running(Jitter)) {combo_stop(Jitter);}
// Rapid Fire without ADS Fire
if(get_val(SHOOT) && RapidFireON && !ADS_Fire_On) {combo_run(RapidFire);}
else if(combo_running(RapidFire)) {combo_stop(RapidFire);}
// Rapid Fire with ADS Fire
if(get_val(SHOOT) && RapidFireON && ADS_Fire_On) {combo_run(ADSRapidFire);}
else if(combo_running(ADSRapidFire)) {combo_stop(ADSRapidFire);}
/* Personal Comment: I found that I have better game performance without using this. You can adjust your sensitivity for this.
// Faster movement while aiming with ADS
if(get_val(ADS)){
sensitivity(RX, NOT_USE, 100 + ADS_SPEED);
sensitivity(RY, NOT_USE, 100 + ADS_SPEED);
}
*/
// Anti-recoil
if(!ONLY_WITH_SCOPE || get_val(ADS)) {combo_run(AntiRecoil);}
// Quick Scope -- CANNOT ADS (aka regular scope) while using Quick Scope -- for regular ADS you must toggle off QuickScopeON -- see "Toggles" section at the top of this script
if(QuickScopeON && event_press(ADS) ) {combo_run(QuickScope);}
// Hold Breath
if(HoldBreathON && get_val(ADS)) {combo_run(HoldBreath);}
// AutoSprint -- Try different values (i.e. -90, -95); toggle ON/OFF
if(get_val(LY) < -99 && AutoSprintON && !combo_running(AllowReloading)) { combo_run(AutoSprint); }
else if((get_val(LY) > -99 && AutoSprintON)) {combo_stop(AutoSprint); } // Reload will also stop
// if(event_press(RELOAD)) {combo_stop(AutoSprint); combo_run(AllowReloading);} // Stop auto sprint to allow reloading (not needed for BO3)
if(get_val(SHOOT)) {combo_stop(AutoSprint); combo_run(AllowShooting);} // Stop auto sprint to allow shooting
} // End of MAIN
// COMBOS =============================================================================
combo AllowShooting {
set_val(SPRINT_EXO, 0);
wait(SHOOT_WAIT); // can adjust to ensure enough time for shooting
}
combo AllowReloading {
set_val(SPRINT_EXO, 0);
wait(RELOAD_WAIT); // can adjust to ensure enough time to reload
}
combo RapidFire {
set_val(SHOOT, 50);
wait(HoldTime);
set_val(SHOOT, 0);
wait(RestTime);
set_val(SHOOT, 0);
}
// jitter for burst and semi-automatics
combo Jitter {
set_val(SHOOT, 50);
wait(20);
set_val(SHOOT, 50);
set_val(SWAP_WEAPONS, 50);
wait(20);
set_val(SHOOT, 50);
set_val(SWAP_WEAPONS, 50);
wait(20);
set_val(SHOOT, 50);
set_val(SWAP_WEAPONS, 0);
}
combo ADSRapidFire {
set_val(SHOOT, 100);
set_val(ADS, 100);
wait(HoldTime);
set_val(SHOOT, 0);
wait(RestTime);
set_val(SHOOT, 0);
set_val(ADS, 0);
}
combo DropShot {
set_val(SPRINT_EXO,0);
wait(15);
set_val(CROUCH, 100);
wait(15); // 15 is no slide in public but slide in private. 50 is slide in public but no slide in private
set_val(CROUCH, 100);
wait(DROP_SHOT_WAIT);
}
combo QuickScope {
set_val(ADS, 100);
wait(QUICK_SCOPE_WAIT) //Increase this time for a longer ADS time. Decrease this time for a shorter ADS time.
set_val(ADS, 0);
wait(10);
set_val(SHOOT, 100);
wait(20);
set_val(SHOOT, 0);
wait(60);
set_val(SHOOT, 0);
}
combo HoldBreath {
set_val(SPRINT_EXO, 100);
wait(10);
set_val(SPRINT_EXO, 100);
}
combo AutoSprint {
set_val(SPRINT_EXO, 100);
wait(10);
set_val(SPRINT_EXO, 100)
}
combo AntiRecoil {
// Look Inversion Enabled
if(get_val(SHOOT) && AntiRecoilON && InversionON) { // Using AntiRecoilON toggle for testing and when using multiple weapons
anti_recoil = get_val(RY) - ANTI_RECOIL; // SUBTRACT anti_recoil when LOOK INVERSION is ENABLED
if(anti_recoil > 100) anti_recoil = 100;
set_val(RY, anti_recoil);
anti_recoil_left = get_val(RX) - ANTI_RECOIL_LEFT;
if(anti_recoil_left < -100) anti_recoil_left = -100;
set_val(RX, anti_recoil_left);
anti_recoil_right = get_val(RX) + ANTI_RECOIL_RIGHT;
if(anti_recoil_right > 100) anti_recoil_right = 100;
set_val(RX, anti_recoil_right);
}
// Normal Look Inversion - look inversion disabled
if(get_val(SHOOT) && AntiRecoilON && !InversionON) { // Using AntiRecoilON toggle for testing and when using multiple weapons
anti_recoil = get_val(RY) + ANTI_RECOIL; // ADD anti_recoil for normal
if(anti_recoil > 100) anti_recoil = 100;
set_val(RY, anti_recoil);
anti_recoil_left = get_val(RX) - ANTI_RECOIL_LEFT;
if(anti_recoil_left < -100) anti_recoil_left = -100;
set_val(RX, anti_recoil_left);
anti_recoil_right = get_val(RX) + ANTI_RECOIL_RIGHT;
if(anti_recoil_right > 100) anti_recoil_right = 100;
set_val(RX, anti_recoil_right);
}
}
combo RumbleNotifier {
// double rumble
set_rumble(RUMBLE_A, 100);
wait(250);
set_rumble(RUMBLE_A, 0);
wait(50);
set_rumble(RUMBLE_A, 100);
wait(250);
set_rumble(RUMBLE_A, 0);
wait(20);
}
combo SingleNotifier {
// single rumble
set_rumble(RUMBLE_A, 100);
wait(200);
set_rumble(RUMBLE_A, 0);
wait(20);
}
// COLOR LED LIGHTBAR FOR PS4
//--------------------------------------------------------------
function ColorLED(Color) {
ColorNumber=(Color*4)-3;
set_led(LED_1,dbyte(ColorNumber));
set_led(LED_2,dbyte(ColorNumber+1));
set_led(LED_3,dbyte(ColorNumber+2));
set_led(LED_4,dbyte(ColorNumber+3));
}