PDA

View Full Version : Devil May Cry 5 - Nero's Exceeds (PC)



KS212
8th March 19, 22:35
Ok here's a little odd script from me that's a bit off my usual stuff... Its an attempt/sorta WIP as I don't really know how useful it will be so, try it out if you like.

I've basically attempted to package in Nero's Red Queen Exceed triggers with the correct timing for his 4 basic combo strings as anyone can tell you trying to memorise the timings manually to tap L2 is a bit annoying after each hit. This script will basically automatically hit L2 for you along with performing the entire attack string so you get max possible damage from the Exceed. Probably not too useful on PC as there's trainers and such and you can give yourself permanent Infinite Exceed which renders this script moot, but for anyone playing on console or anyone who wants to pretend to look like they actually know how to play Nero properly, I guess this is for you :P

To use, HOLD down R2 and tap any of the face buttons OR hold L2 for an Air Combo (use when you're in the air manually, it will not jump for you)

R2+Square = Red Queen Combo A
R2+Triangle = Red Queen Combo C
R2+Cross = Red Queen Combo B
R2+Circle = Red Queen Combo D

NOTE: Combo B is somewhat inconsistent due to the fact well, this isn't a fighting game and the engine does not pick up single inputs well for a 'mash this button' combo. You can normally get up to 9 ground slams total before the final hit, but when trying to insert the Exceeds between each hit I ran into issues trying to make the engine even pick up hits 8 and 9 so... eh, you'll have to deal without em. If anyone can find a way to script this move more efficiently, let me know.

This script was made on PC, for the PC version running at a locked 60fps and vsync off as I use G-Sync... YMMdefinitelywillV on console.



define BTN1 = 17; // TRIANGLE, Y
define BTN2 = 18; // CIRCLE, B
define BTN3 = 19; // CROSS, A
define BTN4 = 20; // SQUARE, X
define BTN5 = 3; // R1, RB
define BTN6 = 4; // R2, RT
define BTN7 = 6; // L1, LB
define BTN8 = 7; // L2, LT
define TOUCH = 27; // TOUCH PAD
define UP = 13; // DPAD UP
define DOWN = 14; // DPAD DOWN
define LEFT = 15; // DPAD LEFT
define RIGHT = 16; // DPAD RIGHT
define MOVE_X = 11; // LEFT ANALOG X
define MOVE_Y = 12; // LEFT ANALOG Y
//-----------------------------------------------------
define BACK = 128; // BACK FLAG
define FORWARD = 129; // FORWARD FLAG


// End Flags. 254 and 255 should never be used in the
// data segment for other purposes.
//-----------------------------------------------------
define EOC = 254; // End of Combo
define EOD = 255; // End of Data Segment
//-----------------------------------------------------


define Combo1 = 0;
define Combo2 = 1;
define Combo3 = 2;
define Combo4 = 3;
define Combo5 = 4;
define Combo6 = 5;
define Combo7 = 6;
define Combo8 = 7;
define Combo9 = 8;
define Combo10 = 9;
define Combo11 = 10;
define Combo12 = 11;
define Combo13 = 17;
define Combo14 = 18;
//Movement combo variables start
define SSBack = 12;
define SSFore = 13;
define iWD = 14;
define iWR = 15;
define KBD = 16;
//Movement combo variables end
data(
/////////////////////////////COMBO DATA START///////////////////////////////


Combo1,
//Air Combo Rising Loop, manual High Time needed
2,BTN5,
BTN1,
10,
1,BTN5,
15,
2,BTN5,
BTN8,
10,
1,BTN5,
10,
2,BTN5,
BTN1,
10,
1,BTN5,
15,
2,BTN5,
BTN8,
10,
1,BTN5,
20,
2,BTN5,
BTN1,
10,
1,BTN5,
50,
2,BTN5,
BTN8,
10,
1,BTN5,
5,
1,BTN5,
5,
2,BTN5,
BTN2,
10,
1,BTN5,
75,
2,BTN5,
BTN1,
10,
1,BTN5,
15,
2,BTN5,
BTN8,
10,
1,BTN5,
10,
2,BTN5,
BTN1,
10,
1,BTN5,
15,
2,BTN5,
BTN8,
10,0,20,
1,BTN1,
10,0,50,
1,BTN8,
10,0,200,
EOC,


Combo8, //PS Square/ Xbox X
//Red Queen Combo A
1,BTN1,
10,0,15,
1,BTN8,
10,0,10,
1,BTN1,
10,0,15,
1,BTN8,
10,0,10,
1,BTN1,
10,0,15,
1,BTN8,
10,0,10,
1,BTN1,
10,0,35,
1,BTN8,
10,0,200,
EOC,


Combo9, //PS Triangle/ Xbox Y
//Red Queen Combo C
1,BTN1,
10,0,15,
1,BTN8,
10,0,15,
1,BTN1,
10,0,15,
1,BTN8,
10,0,30,
1,BTN1,
10,0,40,
1,BTN8,
10,0,10,
1,BTN1,
10,0,15,
1,BTN8,
10,0,10,
1,BTN1,
10,0,15,
1,BTN8,
10,0,10,
1,BTN1,
10,0,15,
1,BTN8,
10,0,200,
EOC,


Combo10, //PS Circle/ Xbox B
//Red Queen Combo D
1,BTN1,
10,0,15,
1,BTN8,
10,0,10,
1,BTN1,
10,0,15,
1,BTN8,
10,0,10,
1,BTN1,
10,0,15,
1,BTN8,
10,0,40,
1,BTN1,
10,0,35,
1,BTN8,
10,0,200,
EOC,


Combo11, //PS Cross/Xbox A
//Red Queen Combo B
1,BTN1,
10,0,15,
1,BTN8,
10,0,40,
1,BTN1,
10,0,35,
1,BTN8,
10,0,10,
1,BTN1,
10,0,10,
1,BTN8,
10,0,10,
1,BTN1,
10,0,11,
1,BTN8,
10,0,10,
1,BTN1,
10,0,11,
1,BTN8,
10,0,5,
1,BTN1,
5,0,5,
1,BTN1,
5,0,5,
1,BTN1,
5,0,10,
1,BTN8,
10,0,5,
1,BTN1,
5,0,5,
1,BTN1,
5,0,10,
1,BTN8,
10,0,5,
1,BTN1,
5,0,5,
1,BTN1,
5,0,5,
1,BTN1,
5,0,5,
1,BTN1,
5,0,5,
1,BTN8,
5,0,5,
1,BTN1,
5,0,5,
1,BTN1,
5,0,5,
1,BTN8,
5,0,5,
1,BTN1,
5,0,5,
1,BTN1,
5,0,5,
1,BTN8,
5,0,5,
1,BTN1,
5,0,5,
1,BTN1,
5,0,5,
1,BTN8,
5,0,200,
EOC,


Combo12, //PS R1/Xbox RB
EOC,


Combo13, //PS R2/Xbox RT
EOC,




/////////////////////////////COMBO DATA ENDS///////////////////////////////
EOD );


///////////////////////////////MAIN BLOCK//////////////////////////////////
int i = -1, b, v;
int back = LEFT, forward = RIGHT;
int button_1, button_2, button_3, button_4, button_5;
int wait_time;
int delay_t;
int RUMBLE_TYPE=RUMBLE_A;
int cancel;
int EndOfCombo;
int CanStart;
int SWITCH;
int double_click;
int time_limit = 200;
int greenlight;
int ChainStart;



main {



//==================================================================================================
// If there is a combo to be executed
if(i >= 0 && delay_t<=0) {
// Execute the combo step-by-step
if(!combo_running(execute_step)) {
if(get_step_values()) {
if(wait_time == 0) {
combo_run(execute_step_no_wait);
} else {
combo_run(execute_step);
}
} else { // the combo finished
i = -1;
}
}


if(cancel==2){
if (!get_val(PS4_L2) && !get_val(PS4_R2)) {
i = -1;
combo_stop(execute_step);
}
}else if(cancel==3){
if (!get_val(back) ) {
i = -1;
combo_stop(execute_step);
}
}
//===================================================================================================================================


// Make sure the user inputs does not interfere in the combo
set_val(BTN1 , 0);
set_val(BTN2 , 0);
set_val(BTN3 , 0);
set_val(BTN4 , 0);
set_val(BTN5 , 0);
set_val(BTN6 , 0);
set_val(BTN7 , 0);
set_val(BTN8 , 0);
set_val(UP , 0);
set_val(LEFT , 0);
set_val(RIGHT , 0);
set_val(MOVE_X , 0);
set_val(MOVE_Y , 0);

// if no combo execute - look for combo activation
} else {
// EDIT THIS PART OF SCRIPT for combo run ---------------------------
//////////////////////////////////////////////////////////////////////////





//R2 Press
if (get_val (PS4_L2)) {
cancel=2;
i = get_combo_index(Combo1);
}
//R1 + Face/Shoulder Buttons
if( event_press(PS4_R2) ){
cancel=2;
i = get_combo_index(Combo14);
}
if( get_val(PS4_R2) )
{
ChainStart= TRUE;
set_val(PS4_TRIANGLE,0);
set_val(PS4_SQUARE,0);
set_val(PS4_CIRCLE,0);
set_val(PS4_CROSS,0);
set_val(PS4_L1,0);
}
else if ( !get_val(PS4_R2) ) ChainStart= FALSE;
if(ChainStart) {
if( get_lval(PS4_SQUARE) )i = get_combo_index(Combo8);
else if( get_lval(PS4_TRIANGLE))i = get_combo_index(Combo9);
else if( get_lval(PS4_CIRCLE)) i = get_combo_index(Combo10);
else if( get_lval(PS4_CROSS)) i = get_combo_index(Combo11);
else if( get_lval(PS4_L1)) i = get_combo_index(Combo12);
}
}
}//<main> block end

// This combo will run a step with wait
combo execute_step {
set_buttons_values();
wait(wait_time);
set_buttons_values();
}

// This combo will run a step without wait
combo execute_step_no_wait {
set_buttons_values();
}


combo RUMBLE_NOTIFICATION {
set_rumble(RUMBLE_TYPE, 100);
wait(300);
reset_rumble ();
}

// Returns the starting index of a combo
function get_combo_index(combo_id) {
i = 0;
while(TRUE) {//-----------------------
v = dbyte(i);
if(v == combo_id) {
return(i + 1);
} else {//====================
while(v != EOC && v != EOD) {//#
i = i + 1;
v = dbyte(i);
}//#
if(v == EOD) break;
else i = i + 1;
}//=============================
}//-----------------------------------
return(-1);
}

// Set the buttons, values and wait time of a step
function get_step_values() {
b = dbyte(i); i = i + 1;
if(b > 5) return(FALSE);

if(b >= 1) {
button_1 = convert_back_forward(dbyte(i)); i = i + 1;
} else { button_1 = -1; }

if(b >= 2) {
button_2 = convert_back_forward(dbyte(i)); i = i + 1;
} else { button_2 = -1; }

if(b >= 3) {
button_3 = convert_back_forward(dbyte(i)); i = i + 1;
} else { button_3 = -1; }

if(b >= 4) {
button_4 = convert_back_forward(dbyte(i)); i = i + 1;
} else { button_4 = -1; }

if(b >= 5) {
button_5 = convert_back_forward(dbyte(i)); i = i + 1;
} else { button_5 = -1; }

wait_time = dbyte(i); i = i + 1;
wait_time = (wait_time - 1) * 10;
if(wait_time < 0) wait_time = 0;

return(TRUE);
}

// If the step has FORWARD and BACK buttons, set the correct value.
function convert_back_forward(button) {
if(button == FORWARD) {
return(forward);
} else if(button == BACK) {
return(back);
}
return(button);
}

// Set the buttons and values, function used on the combos.
function set_buttons_values() {
if(button_1 != -1) set_val(button_1, 100);
if(button_2 != -1) set_val(button_2, 100);
if(button_3 != -1) set_val(button_3, 100);
if(button_4 != -1) set_val(button_4, 100);
if(button_5 != -1) set_val(button_5, 100);
}

WHITE 4ND N3RDY
8th March 19, 22:41
Nice work. I always wanted to see someone use the fighting script manipulator for something other than fighting platforms. Cudos!

KS212
9th March 19, 00:03
TBH you can use the script manipulator format for anything... the only real difference is the amount of bytespace it gives you IMO. At least that's the reason I use the format... the normal GPC format is far too bytespace limited.

Mikehell
9th March 19, 01:02
This is excellent, i make something similar in DMC4 some years ago for the same exceed, hope i can get the game soon, thanks.

Poisonling
9th March 19, 11:32
It works well on PC, excellent work man. I love your scripts

cc07214545
10th March 19, 05:58
It works well on ps4. Thanks!

Poisonling
10th March 19, 14:57
It gets wonky after unlocking the Devil Bringer

maziar
17th April 19, 15:15
very nice
can you make this for dante and v ??? plzzz
tnx again

maziar
18th April 19, 08:47
Ok here's a little odd script from me that's a bit off my usual stuff... Its an attempt/sorta WIP as I don't really know how useful it will be so, try it out if you like.

I've basically attempted to package in Nero's Red Queen Exceed triggers with the correct timing for his 4 basic combo strings as anyone can tell you trying to memorise the timings manually to tap L2 is a bit annoying after each hit. This script will basically automatically hit L2 for you along with performing the entire attack string so you get max possible damage from the Exceed. Probably not too useful on PC as there's trainers and such and you can give yourself permanent Infinite Exceed which renders this script moot, but for anyone playing on console or anyone who wants to pretend to look like they actually know how to play Nero properly, I guess this is for you :P

To use, HOLD down R2 and tap any of the face buttons OR hold L2 for an Air Combo (use when you're in the air manually, it will not jump for you)

R2+Square = Red Queen Combo A
R2+Triangle = Red Queen Combo C
R2+Cross = Red Queen Combo B
R2+Circle = Red Queen Combo D

NOTE: Combo B is somewhat inconsistent due to the fact well, this isn't a fighting game and the engine does not pick up single inputs well for a 'mash this button' combo. You can normally get up to 9 ground slams total before the final hit, but when trying to insert the Exceeds between each hit I ran into issues trying to make the engine even pick up hits 8 and 9 so... eh, you'll have to deal without em. If anyone can find a way to script this move more efficiently, let me know.

This script was made on PC, for the PC version running at a locked 60fps and vsync off as I use G-Sync... YMMdefinitelywillV on console.



define BTN1 = 17; // TRIANGLE, Y
define BTN2 = 18; // CIRCLE, B
define BTN3 = 19; // CROSS, A
define BTN4 = 20; // SQUARE, X
define BTN5 = 3; // R1, RB
define BTN6 = 4; // R2, RT
define BTN7 = 6; // L1, LB
define BTN8 = 7; // L2, LT
define TOUCH = 27; // TOUCH PAD
define UP = 13; // DPAD UP
define DOWN = 14; // DPAD DOWN
define LEFT = 15; // DPAD LEFT
define RIGHT = 16; // DPAD RIGHT
define MOVE_X = 11; // LEFT ANALOG X
define MOVE_Y = 12; // LEFT ANALOG Y
//-----------------------------------------------------
define BACK = 128; // BACK FLAG
define FORWARD = 129; // FORWARD FLAG


// End Flags. 254 and 255 should never be used in the
// data segment for other purposes.
//-----------------------------------------------------
define EOC = 254; // End of Combo
define EOD = 255; // End of Data Segment
//-----------------------------------------------------


define Combo1 = 0;
define Combo2 = 1;
define Combo3 = 2;
define Combo4 = 3;
define Combo5 = 4;
define Combo6 = 5;
define Combo7 = 6;
define Combo8 = 7;
define Combo9 = 8;
define Combo10 = 9;
define Combo11 = 10;
define Combo12 = 11;
define Combo13 = 17;
define Combo14 = 18;
//Movement combo variables start
define SSBack = 12;
define SSFore = 13;
define iWD = 14;
define iWR = 15;
define KBD = 16;
//Movement combo variables end
data(
/////////////////////////////COMBO DATA START///////////////////////////////


Combo1,
//Air Combo Rising Loop, manual High Time needed
2,BTN5,
BTN1,
10,
1,BTN5,
15,
2,BTN5,
BTN8,
10,
1,BTN5,
10,
2,BTN5,
BTN1,
10,
1,BTN5,
15,
2,BTN5,
BTN8,
10,
1,BTN5,
20,
2,BTN5,
BTN1,
10,
1,BTN5,
50,
2,BTN5,
BTN8,
10,
1,BTN5,
5,
1,BTN5,
5,
2,BTN5,
BTN2,
10,
1,BTN5,
75,
2,BTN5,
BTN1,
10,
1,BTN5,
15,
2,BTN5,
BTN8,
10,
1,BTN5,
10,
2,BTN5,
BTN1,
10,
1,BTN5,
15,
2,BTN5,
BTN8,
10,0,20,
1,BTN1,
10,0,50,
1,BTN8,
10,0,200,
EOC,


Combo8, //PS Square/ Xbox X
//Red Queen Combo A
1,BTN1,
10,0,15,
1,BTN8,
10,0,10,
1,BTN1,
10,0,15,
1,BTN8,
10,0,10,
1,BTN1,
10,0,15,
1,BTN8,
10,0,10,
1,BTN1,
10,0,35,
1,BTN8,
10,0,200,
EOC,


Combo9, //PS Triangle/ Xbox Y
//Red Queen Combo C
1,BTN1,
10,0,15,
1,BTN8,
10,0,15,
1,BTN1,
10,0,15,
1,BTN8,
10,0,30,
1,BTN1,
10,0,40,
1,BTN8,
10,0,10,
1,BTN1,
10,0,15,
1,BTN8,
10,0,10,
1,BTN1,
10,0,15,
1,BTN8,
10,0,10,
1,BTN1,
10,0,15,
1,BTN8,
10,0,200,
EOC,


Combo10, //PS Circle/ Xbox B
//Red Queen Combo D
1,BTN1,
10,0,15,
1,BTN8,
10,0,10,
1,BTN1,
10,0,15,
1,BTN8,
10,0,10,
1,BTN1,
10,0,15,
1,BTN8,
10,0,40,
1,BTN1,
10,0,35,
1,BTN8,
10,0,200,
EOC,


Combo11, //PS Cross/Xbox A
//Red Queen Combo B
1,BTN1,
10,0,15,
1,BTN8,
10,0,40,
1,BTN1,
10,0,35,
1,BTN8,
10,0,10,
1,BTN1,
10,0,10,
1,BTN8,
10,0,10,
1,BTN1,
10,0,11,
1,BTN8,
10,0,10,
1,BTN1,
10,0,11,
1,BTN8,
10,0,5,
1,BTN1,
5,0,5,
1,BTN1,
5,0,5,
1,BTN1,
5,0,10,
1,BTN8,
10,0,5,
1,BTN1,
5,0,5,
1,BTN1,
5,0,10,
1,BTN8,
10,0,5,
1,BTN1,
5,0,5,
1,BTN1,
5,0,5,
1,BTN1,
5,0,5,
1,BTN1,
5,0,5,
1,BTN8,
5,0,5,
1,BTN1,
5,0,5,
1,BTN1,
5,0,5,
1,BTN8,
5,0,5,
1,BTN1,
5,0,5,
1,BTN1,
5,0,5,
1,BTN8,
5,0,5,
1,BTN1,
5,0,5,
1,BTN1,
5,0,5,
1,BTN8,
5,0,200,
EOC,


Combo12, //PS R1/Xbox RB
EOC,


Combo13, //PS R2/Xbox RT
EOC,




/////////////////////////////COMBO DATA ENDS///////////////////////////////
EOD );


///////////////////////////////MAIN BLOCK//////////////////////////////////
int i = -1, b, v;
int back = LEFT, forward = RIGHT;
int button_1, button_2, button_3, button_4, button_5;
int wait_time;
int delay_t;
int RUMBLE_TYPE=RUMBLE_A;
int cancel;
int EndOfCombo;
int CanStart;
int SWITCH;
int double_click;
int time_limit = 200;
int greenlight;
int ChainStart;



main {



//==================================================================================================
// If there is a combo to be executed
if(i >= 0 && delay_t<=0) {
// Execute the combo step-by-step
if(!combo_running(execute_step)) {
if(get_step_values()) {
if(wait_time == 0) {
combo_run(execute_step_no_wait);
} else {
combo_run(execute_step);
}
} else { // the combo finished
i = -1;
}
}


if(cancel==2){
if (!get_val(PS4_L2) && !get_val(PS4_R2)) {
i = -1;
combo_stop(execute_step);
}
}else if(cancel==3){
if (!get_val(back) ) {
i = -1;
combo_stop(execute_step);
}
}
//===================================================================================================================================


// Make sure the user inputs does not interfere in the combo
set_val(BTN1 , 0);
set_val(BTN2 , 0);
set_val(BTN3 , 0);
set_val(BTN4 , 0);
set_val(BTN5 , 0);
set_val(BTN6 , 0);
set_val(BTN7 , 0);
set_val(BTN8 , 0);
set_val(UP , 0);
set_val(LEFT , 0);
set_val(RIGHT , 0);
set_val(MOVE_X , 0);
set_val(MOVE_Y , 0);

// if no combo execute - look for combo activation
} else {
// EDIT THIS PART OF SCRIPT for combo run ---------------------------
//////////////////////////////////////////////////////////////////////////





//R2 Press
if (get_val (PS4_L2)) {
cancel=2;
i = get_combo_index(Combo1);
}
//R1 + Face/Shoulder Buttons
if( event_press(PS4_R2) ){
cancel=2;
i = get_combo_index(Combo14);
}
if( get_val(PS4_R2) )
{
ChainStart= TRUE;
set_val(PS4_TRIANGLE,0);
set_val(PS4_SQUARE,0);
set_val(PS4_CIRCLE,0);
set_val(PS4_CROSS,0);
set_val(PS4_L1,0);
}
else if ( !get_val(PS4_R2) ) ChainStart= FALSE;
if(ChainStart) {
if( get_lval(PS4_SQUARE) )i = get_combo_index(Combo8);
else if( get_lval(PS4_TRIANGLE))i = get_combo_index(Combo9);
else if( get_lval(PS4_CIRCLE)) i = get_combo_index(Combo10);
else if( get_lval(PS4_CROSS)) i = get_combo_index(Combo11);
else if( get_lval(PS4_L1)) i = get_combo_index(Combo12);
}
}
}//<main> block end

// This combo will run a step with wait
combo execute_step {
set_buttons_values();
wait(wait_time);
set_buttons_values();
}

// This combo will run a step without wait
combo execute_step_no_wait {
set_buttons_values();
}


combo RUMBLE_NOTIFICATION {
set_rumble(RUMBLE_TYPE, 100);
wait(300);
reset_rumble ();
}

// Returns the starting index of a combo
function get_combo_index(combo_id) {
i = 0;
while(TRUE) {//-----------------------
v = dbyte(i);
if(v == combo_id) {
return(i + 1);
} else {//====================
while(v != EOC && v != EOD) {//#
i = i + 1;
v = dbyte(i);
}//#
if(v == EOD) break;
else i = i + 1;
}//=============================
}//-----------------------------------
return(-1);
}

// Set the buttons, values and wait time of a step
function get_step_values() {
b = dbyte(i); i = i + 1;
if(b > 5) return(FALSE);

if(b >= 1) {
button_1 = convert_back_forward(dbyte(i)); i = i + 1;
} else { button_1 = -1; }

if(b >= 2) {
button_2 = convert_back_forward(dbyte(i)); i = i + 1;
} else { button_2 = -1; }

if(b >= 3) {
button_3 = convert_back_forward(dbyte(i)); i = i + 1;
} else { button_3 = -1; }

if(b >= 4) {
button_4 = convert_back_forward(dbyte(i)); i = i + 1;
} else { button_4 = -1; }

if(b >= 5) {
button_5 = convert_back_forward(dbyte(i)); i = i + 1;
} else { button_5 = -1; }

wait_time = dbyte(i); i = i + 1;
wait_time = (wait_time - 1) * 10;
if(wait_time < 0) wait_time = 0;

return(TRUE);
}

// If the step has FORWARD and BACK buttons, set the correct value.
function convert_back_forward(button) {
if(button == FORWARD) {
return(forward);
} else if(button == BACK) {
return(back);
}
return(button);
}

// Set the buttons and values, function used on the combos.
function set_buttons_values() {
if(button_1 != -1) set_val(button_1, 100);
if(button_2 != -1) set_val(button_2, 100);
if(button_3 != -1) set_val(button_3, 100);
if(button_4 != -1) set_val(button_4, 100);
if(button_5 != -1) set_val(button_5, 100);
}


very nice
can you make this for dante and v ??? plzzz
tnx again