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

KS212
20th April 19, 04:02
It gets wonky after unlocking the Devil Bringer

Which... I didn't even find out until the very end. So now here's the problem... after unlocking DT/DB there is literally NO UNUSED BUTTON LEFT on the pad which can be used for activation. Unlike a fighting game we can't use the analogs either...

So... how/where do I put the activations?... Thoughts?

Batts
20th April 19, 07:21
Which... I didn't even find out until the very end. So now here's the problem... after unlocking DT/DB there is literally NO UNUSED BUTTON LEFT on the pad which can be used for activation. Unlike a fighting game we can't use the analogs either...

So... how/where do I put the activations?... Thoughts?


I don't play the game so I'm not sure of the mechanics but you might be able to setup a toggle that is activated by clicking one of the sticks (if that doesn't interfere with the game). You can use the LED lights to track which set of combos are active.

I can't test this right now but it would look something like this - LED Red would be the default combos (A-D), clicking R3 LED would change to Blue and 4 new combos (E -H) would be set. Clicking R3 would toggle back and forth.


//Posted by KS212, a member of the community in the CronusMAX Forums - https://cronusmax.com/forums

//Posted : Thursday 18th of April, 2019 0:08 UTC



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 L2_COMBO = 10;
define RED_QUEEN_COMBO_A = 11;
define RED_QUEEN_COMBO_B = 12;
define RED_QUEEN_COMBO_C = 13;
define RED_QUEEN_COMBO_D = 14;


//--new combos
define RED_QUEEN_COMBO_E = 15;
define RED_QUEEN_COMBO_F = 16;
define RED_QUEEN_COMBO_G = 17;
define RED_QUEEN_COMBO_H = 18;






data(
//--LED Color
0,2,0,0, // Red
2,0,0,0, // Blue

/////////////////////////////COMBO DATA START///////////////////////////////


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


/////////////////////////////////LED RED COMBOS////////////////////////////////
//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,

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

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

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




/////////////////////////////////LED BLUE COMBOS////////////////////////////////


//--add new combos here


//PS Square/ Xbox X
RED_QUEEN_COMBO_E,
EOC,


//PS Triangle/ Xbox Y
RED_QUEEN_COMBO_F,
EOC,


//PS Circle/ Xbox B
RED_QUEEN_COMBO_G,
EOC,




//PS Cross/Xbox A
RED_QUEEN_COMBO_H,
EOC,

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


int cross_a, circle_b,triangle_y,square_x;
//--block button
int b,bb,bb_array[3];


int color,c, i = -1, btn, v;
int back = LEFT, forward = RIGHT;
int button_1, button_2, button_3, button_4, button_5;
int wait_time;

init {
combo_run(RED_COMBOS);
led_color(color);
}
main {


//--toggle active combos
if(event_press(PS4_R3)) {
color = !color;
led_color(color);
if(color)
combo_run(BLUE_COMBOS);
else
combo_run(RED_COMBOS);
}
//==================================================================================================
// If there is a combo to be executed
if(i >= 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;
}
}
//--cancel combo if L2 or R2 is not being pressed
if (!get_val(PS4_L2) && !get_val(PS4_R2)) {
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 ---------------------------
//////////////////////////////////////////////////////////////////////////


//L2 Press
if (get_val (PS4_L2)) i = get_combo_index(L2_COMBO);


//R2
if(get_val(PS4_R2)) {
if(event_press(PS4_SQUARE)) {
bb = bb(PS4_SQUARE);
i = get_combo_index(square_x);
}
else if(event_press(PS4_TRIANGLE)) {
bb = bb(PS4_TRIANGLE);
i = get_combo_index(triangle_y);
}
else if(event_press(PS4_CIRCLE)) {
bb = bb(PS4_CIRCLE);
i = get_combo_index(circle_b);
}
else if(event_press(PS4_CROSS)) {
bb = bb(PS4_CROSS);
i = get_combo_index(cross_a);
}
}
}
//--block output
if(bb) block_btn();
}//<main> block end


combo RED_COMBOS {
square_x = RED_QUEEN_COMBO_A;
triangle_y = RED_QUEEN_COMBO_C;
circle_b = RED_QUEEN_COMBO_D;
cross_a = RED_QUEEN_COMBO_B;
}
combo BLUE_COMBOS {
square_x = RED_QUEEN_COMBO_E;
triangle_y = RED_QUEEN_COMBO_F;
circle_b = RED_QUEEN_COMBO_G;
cross_a = RED_QUEEN_COMBO_H;
}

// 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();
}


// 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() {
btn = dbyte(i); i = i + 1;
if(btn > 5) return(FALSE);

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

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

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

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

if(btn >= 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);
}
//--BLOCK BUTTONS
function bb(f_btn) {
for(b = 0;b <= 2;b++) {
if(!bb_array[b]) {
bb_array[b] = f_btn;
return TRUE
}
if(bb_array[b] == f_btn)
return TRUE;
}
return FALSE;
}
function block_btn() {
bb = FALSE;
for(b = 0;b <= 2;b++) {
if(bb_array[b]) {
if(event_release(bb_array[b])) {
bb_array[b] = 0;
}else{
set_val(bb_array[b],0);
bb = TRUE;
}
}
}
}
function led_color(f_color) {
for(c = 0; c <= 3; c++) {
set_led(c,dbyte((f_color * 4) + c));
}
}

KS212
20th April 19, 11:49
I don't play the game so I'm not sure of the mechanics but you might be able to setup a toggle that is activated by clicking one of the sticks (if that doesn't interfere with the game). You can use the LED lights to track which set of combos are active.

I can't test this right now but it would look something like this - LED Red would be the default combos (A-D), clicking R3 LED would change to Blue and 4 new combos (E -H) would be set. Clicking R3 would toggle back and forth.




That won't work I'm afraid. Trust me when I say literally NO BUTTON is unused. That includes L3 and R3 as well... R3 centers the cam and L3 is 'path sensor'.

This is the first time I've run into a situation where absolutely literally everything on the controller is in use. All I needed was one button in the way I initially did it... and for a vanilla New Game, R2 is unused right up until the very very end so I could use that as the activator in the way I did.

But after you clear once, Nero's DT is unlocked and there literally is nothing else available.

maziar
20th April 19, 16:42
Which... I didn't even find out until the very end. So now here's the problem... after unlocking DT/DB there is literally NO UNUSED BUTTON LEFT on the pad which can be used for activation. Unlike a fighting game we can't use the analogs either...

So... how/where do I put the activations?... Thoughts?

why you didn't answer my question ?? :((

Poisonling
21st April 19, 08:50
why you didn't answer my question ?? :((

Because Dante and V does not have the Exceed mechanic...