PDA

View Full Version : Soulcalibur VI combos thread



justframe
19th October 18, 14:10
Here's a thread for posting any Soulcalibur scripts that get made. I don't know how many scripts I'll do for this game personally, the combo system is for the most part very easy, with most combos not being more than 2 or 3 hits. So some characters might not have anything worth scripting. Its still release day too, so combos for most characters don't seem to be widely known.

That having been said, here's a few things for Ivy:

// Script was generated with < Script Manipulator > ver. 13.6 Date :10/19/18 Time: 1:28:53 PM
//------------------------------------------------------------------------

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 IvySummonSuffering = 0;
define IvyCalamitySymphony = 1;
define IvyMistressJustice = 2;
define Ivy66ALH = 3;
data(
EOC,
IvySummonSuffering,
2,DOWN,
FORWARD,
2,
2,UP,
BACK,
2,
1,FORWARD,
2,
1,DOWN,
2,
2,DOWN,
FORWARD,
2,
4,DOWN,
BACK,
BTN4,
BTN3,
2,
0,80,
EOC,
IvyCalamitySymphony,
2,DOWN,
FORWARD,
2,
2,UP,
BACK,
2,
1,BACK,
2,
1,FORWARD,
2,
2,UP,
FORWARD,
2,
2,DOWN,
BACK,
2,
3,FORWARD,
BTN4,
BTN3,
2,
0,80,
EOC,
IvyMistressJustice,
1,BTN1,
2,
0,34,
1,BTN1,
2,
0,34,
1,BTN1,
2,
0,28,
1,BTN1,
2,
0,26,
1,BTN1,
2,
0,80,
EOC,
Ivy66ALH,
1,FORWARD,
4,
0,4,
2,FORWARD,
BTN4,
40,
0,110,
4,UP,
FORWARD,
BTN1,
BTN2,
4,
0,130,
1,BACK,
4,
2,BACK,
BTN4,
70,
0,40,
3,UP,
BTN1,
BTN2,
4,
0,100,
EOC,
EOD );
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 switch;
int delay_t;
int RUMBLE_TYPE=RUMBLE_A;
int cancel;
int EndOfCombo;
int CanStart;

main {
// Determine Back and Forward
if(event_press(PS4_L3)) {
back = LEFT; forward = RIGHT;
} else if(event_press(PS4_R3)) {
back = RIGHT; forward = LEFT;
}//----------------------------------------------



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

// combo cancel buttons
if(cancel==1){
if ( (abs(get_val (9)) <= 20 && abs(get_val (10)) <= 20) && (abs(get_val (11)) <= 20 && abs(get_val (12)) <= 20) ) {
i = -1;
combo_stop(execute_step);
}
}else if(cancel==2){
if (!get_val(PS4_L1) && !get_val(PS4_L2) && !get_val(PS4_R1) && !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(DOWN , 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 ---------------------------
//////////////////////////////////////////////////////////////////////////

if (get_val (PS4_RX) > 80) {

cancel=1;
i = get_combo_index(Ivy66ALH);
}
if (get_val (PS4_RX) < -80) {

cancel=1;
i = get_combo_index(IvyMistressJustice);
}
if (get_val (PS4_RY) < -80) {

cancel=1;
i = get_combo_index(IvySummonSuffering);
}
if (get_val (PS4_RY) > 80) {

cancel=1;
i = get_combo_index(IvyCalamitySymphony);
}
// end editing here --------------------------------------------------------------------
/////////////////////////////////////////////////////////////////////////////////////////////
}// <combo activation> end
}//<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);
}

RS right: Ivy's 66A attack, with lethal hit combo.
RS left: Ivy's 'Mistress Justice' attack. A 5-hit justframe that is NC and ends in a guard crush. Only available from her Serpent's Embrace stance.
RS up: Ivy's Summon Suffering command throw. Unbreakable and does 60 dmg.
RS down: Ivy's Calamity Symphony throw. does 80 dmg.

If you have any ideas on what you might like to see in a soulcalibur script or suggestions for what characters could use one, let me know.

JQuest313
19th October 18, 14:46
Thank for this!

kasumiberry
19th October 18, 15:08
Sophie has a few just frame inputs on her angel step B move

eletif
19th October 18, 20:51
I'd like to see some scripts for nightmare, basically anything abusing his insane 50/50s and crazy range would be good, anything starting from lows and then from mids to keep opponents from being able to do anything.

VonSidia
20th October 18, 00:09
Personally I'd love some scripts for Soulcalibur!
Seong Mi-Na (https://www.ign.com/wikis/soulcalibur-6/Seong_Mi-Na), Xianghua (https://www.ign.com/wikis/soulcalibur-6/Xianghua), and Tira (https://www.ign.com/wikis/soulcalibur-6/Tira) would be nice

kiet510
21st October 18, 03:20
Hello,

anyone got any good combos they can share yet? thanks so much!

justframe
1st November 18, 17:56
Alright, heres some stuff for Nightmare:

// Script was generated with < Script Manipulator > ver. 13.6 Date :11/01/18 Time: 5:55:16 PM
//------------------------------------------------------------------------

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 iABA = 0;
define Nightmare3B = 1;
define Nightmare66B = 2;
define Nightmare1A = 3;
data(
EOC,
iABA,
1,BTN4,
2,
1,BTN1,
2,
1,BTN4,
2,
0,84,
1,FORWARD,
8,
0,9,
1,FORWARD,
22,
0,9,
1,DOWN,
4,
2,DOWN,
FORWARD,
4,
1,FORWARD,
4,
2,FORWARD,
BTN2,
4,
0,20,
1,BTN2,
4,
0,100,
EOC,
Nightmare3B,
3,DOWN,
FORWARD,
BTN1,
40,
0,40,
1,DOWN,
4,
2,DOWN,
FORWARD,
4,
1,FORWARD,
4,
2,FORWARD,
BTN2,
4,
0,20,
1,BTN2,
4,
0,100,
EOC,
Nightmare66B,
1,FORWARD,
4,
0,4,
1,FORWARD,
4,
2,FORWARD,
BTN1,
4,
0,100,
1,DOWN,
4,
2,DOWN,
FORWARD,
4,
1,FORWARD,
4,
2,FORWARD,
BTN2,
4,
0,20,
1,BTN2,
4,
0,100,
EOC,
Nightmare1A,
3,DOWN,
BACK,
BTN4,
4,
0,160,
1,DOWN,
4,
2,DOWN,
FORWARD,
4,
1,FORWARD,
4,
2,FORWARD,
BTN2,
4,
0,20,
1,BTN2,
4,
0,100,
EOC,
EOD );
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 switch;
int delay_t;
int RUMBLE_TYPE=RUMBLE_A;
int cancel;
int EndOfCombo;
int CanStart;

main {
// Determine Back and Forward
if(event_press(PS4_L3)) {
back = LEFT; forward = RIGHT;
} else if(event_press(PS4_R3)) {
back = RIGHT; forward = LEFT;
}//----------------------------------------------



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

// combo cancel buttons
if(cancel==1){
if ( (abs(get_val (9)) <= 20 && abs(get_val (10)) <= 20) && (abs(get_val (11)) <= 20 && abs(get_val (12)) <= 20) ) {
i = -1;
combo_stop(execute_step);
}
}else if(cancel==2){
if (!get_val(PS4_L1) && !get_val(PS4_L2) && !get_val(PS4_R1) && !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(DOWN , 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 ---------------------------
//////////////////////////////////////////////////////////////////////////

if (get_val (PS4_RX) > 80) {

cancel=1;
i = get_combo_index(Nightmare3B);
}
if (get_val (PS4_RX) < -80) {

cancel=1;
i = get_combo_index(Nightmare66B);
}
if (get_val (PS4_RY) < -80) {

cancel=1;
i = get_combo_index(iABA);
}
if (get_val (PS4_RY) > 80) {

cancel=1;
i = get_combo_index(Nightmare1A);
}
// end editing here --------------------------------------------------------------------
/////////////////////////////////////////////////////////////////////////////////////////////
}// <combo activation> end
}//<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);
}

All combos require terror charge.

RS right is a combo off of 3B
RS left is a combo off of 66B
RS up is Nightmares ABA, with a lethal hit combo attached
RS down is Nightmare's 1A, with a lethal hit combo attached

I might add some more stuff for both nightmare and ivy later on.

eletif
2nd November 18, 01:07
Sweet, thanks!

Argan
15th November 18, 06:08
It would be awesome if you did a script for kilik !

Duppex1
17th November 18, 17:47
Hey.

I Considering buying a CronusMAX Plus, but 1st time looking into these and have a question.

Does the CronusMAX Plus, work on PC?
Will Ivy Combo Scripts in this post work on the the PC?

Many Thanks

Duppex1
18th November 18, 08:32
Hey,

New to Cronusmax Plus, just placed an order for one of these. Is there any beginners guides on YouTube of other for setting this up and playing games on a PC

Duppex1
19th November 18, 17:26
[QUOTE=VonSidia;1155063]Personally I'd love some scripts for Soulcalibur!
Seong Mi-Na (https://www.ign.com/wikis/soulcalibur-6/Seong_Mi-Na)

Seong Mi-Na (https://www.ign.com/wikis/soulcalibur-6/Seong_Mi-Na) Please

Dahomisec
21st November 18, 02:32
ani combo for Maxi?

Duppex1
21st November 18, 08:54
Here's a thread for posting any Soulcalibur scripts that get made. I don't know how many scripts I'll do for this game personally, the combo system is for the most part very easy, with most combos not being more than 2 or 3 hits. So some characters might not have anything worth scripting. Its still release day too, so combos for most characters don't seem to be widely known.

That having been said, here's a few things for Ivy:

// Script was generated with < Script Manipulator > ver. 13.6 Date :10/19/18 Time: 1:28:53 PM
//------------------------------------------------------------------------

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 IvySummonSuffering = 0;
define IvyCalamitySymphony = 1;
define IvyMistressJustice = 2;
define Ivy66ALH = 3;
data(
EOC,
IvySummonSuffering,
2,DOWN,
FORWARD,
2,
2,UP,
BACK,
2,
1,FORWARD,
2,
1,DOWN,
2,
2,DOWN,
FORWARD,
2,
4,DOWN,
BACK,
BTN4,
BTN3,
2,
0,80,
EOC,
IvyCalamitySymphony,
2,DOWN,
FORWARD,
2,
2,UP,
BACK,
2,
1,BACK,
2,
1,FORWARD,
2,
2,UP,
FORWARD,
2,
2,DOWN,
BACK,
2,
3,FORWARD,
BTN4,
BTN3,
2,
0,80,
EOC,
IvyMistressJustice,
1,BTN1,
2,
0,34,
1,BTN1,
2,
0,34,
1,BTN1,
2,
0,28,
1,BTN1,
2,
0,26,
1,BTN1,
2,
0,80,
EOC,
Ivy66ALH,
1,FORWARD,
4,
0,4,
2,FORWARD,
BTN4,
40,
0,110,
4,UP,
FORWARD,
BTN1,
BTN2,
4,
0,130,
1,BACK,
4,
2,BACK,
BTN4,
70,
0,40,
3,UP,
BTN1,
BTN2,
4,
0,100,
EOC,
EOD );
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 switch;
int delay_t;
int RUMBLE_TYPE=RUMBLE_A;
int cancel;
int EndOfCombo;
int CanStart;

main {
// Determine Back and Forward
if(event_press(PS4_L3)) {
back = LEFT; forward = RIGHT;
} else if(event_press(PS4_R3)) {
back = RIGHT; forward = LEFT;
}//----------------------------------------------



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

// combo cancel buttons
if(cancel==1){
if ( (abs(get_val (9)) <= 20 && abs(get_val (10)) <= 20) && (abs(get_val (11)) <= 20 && abs(get_val (12)) <= 20) ) {
i = -1;
combo_stop(execute_step);
}
}else if(cancel==2){
if (!get_val(PS4_L1) && !get_val(PS4_L2) && !get_val(PS4_R1) && !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(DOWN , 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 ---------------------------
//////////////////////////////////////////////////////////////////////////

if (get_val (PS4_RX) > 80) {

cancel=1;
i = get_combo_index(Ivy66ALH);
}
if (get_val (PS4_RX) < -80) {

cancel=1;
i = get_combo_index(IvyMistressJustice);
}
if (get_val (PS4_RY) < -80) {

cancel=1;
i = get_combo_index(IvySummonSuffering);
}
if (get_val (PS4_RY) > 80) {

cancel=1;
i = get_combo_index(IvyCalamitySymphony);
}
// end editing here --------------------------------------------------------------------
/////////////////////////////////////////////////////////////////////////////////////////////
}// <combo activation> end
}//<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);
}

RS right: Ivy's 66A attack, with lethal hit combo.
RS left: Ivy's 'Mistress Justice' attack. A 5-hit justframe that is NC and ends in a guard crush. Only available from her Serpent's Embrace stance.
RS up: Ivy's Summon Suffering command throw. Unbreakable and does 60 dmg.
RS down: Ivy's Calamity Symphony throw. does 80 dmg.

If you have any ideas on what you might like to see in a soulcalibur script or suggestions for what characters could use one, let me know.

Hi Justframe

I just got my Cronusmax Plus, I am using it on a PC with DualShock 4 plugged in wirered mode. I created a new Script, copy then paced your Ivy Script but when pressing the right stick Up or Down she does normal throws only.

Any help, please

tylray
23rd November 18, 00:33
Nice!

KS212
30th November 18, 01:07
Yo justframe, good to see you're still around! :winky:

I considered doing combos for Soulcalibur except... yeah, what you said, 'combos' in this game are very short and specific. The game is easy entry because its purely about spacing and good movement.

It probably would be possible to cram every single just frame for the entire cast into one script... I actually cannot think of a single character outside of Ivy that has multiple complex moves. Ivy is probably the ONLY character that needs a script coz of her SS/CS inputs.

You happen to still have your multi-page template sitting around? I lost the copy you gave me a while back.

justframe
2nd December 18, 14:20
Hey man, good to see you back!

I don't know exactly what you mean by multi-page template, like a script where you can press a button to toggle between two sets of combos?

And yeah, part of the reason I haven't posted much for this game is that I'm just at a loss as to what to make... I will probably do just a few more scripts for characters that have justframe inputs in their key moves or combos, like Siegfried, Seong Mi-Na, Sophitia and Cervantes and leave it at that.

justframe
2nd December 18, 14:52
Hi Justframe

I just got my Cronusmax Plus, I am using it on a PC with DualShock 4 plugged in wirered mode. I created a new Script, copy then paced your Ivy Script but when pressing the right stick Up or Down she does normal throws only.

Any help, please

I tested the script again just now and the throws were working. Are you remembering to switch which side the script works on with L3 and R3? L3 for if you character is on the left side of the screen, R3 if its on the right. That's the only way I'm getting normal throws with RS up and down, if I switch sides but don't switch the script.

KS212
2nd December 18, 22:03
Hey man, good to see you back!

I don't know exactly what you mean by multi-page template, like a script where you can press a button to toggle between two sets of combos?

And yeah, part of the reason I haven't posted much for this game is that I'm just at a loss as to what to make... I will probably do just a few more scripts for characters that have justframe inputs in their key moves or combos, like Siegfried, Seong Mi-Na, Sophitia and Cervantes and leave it at that.

Yeah you gave me an updated ver of the template you used at some point... Had a toggle like hold L1 and press either R1 or R2 to swap pages (that'd also make the LED on the dualshock4 change color to indicate what page). I lost it somewhere soooo, if you could give me the thing again it'd be much appreciated :)

Duppex1
5th December 18, 10:51
I tested the script again just now and the throws were working. Are you remembering to switch which side the script works on with L3 and R3? L3 for if you character is on the left side of the screen, R3 if its on the right. That's the only way I'm getting normal throws with RS up and down, if I switch sides but don't switch the script.

Thanks for your response, much appreciated.

I did try it on both sides but this is the first time I have used Cronusmax, so understand I could be doing something wrong.

Does it matter that I am using your Script on a PC, not PS4?

Seems that some people in the Tekken 7, forums are saying the lag differences between PC/Consoles can affect Scripts.

Samish
5th December 18, 11:30
Here's a thread for posting any Soulcalibur scripts that get made. I don't know how many scripts I'll do for this game personally, the combo system is for the most part very easy, with most combos not being more than 2 or 3 hits. So some characters might not have anything worth scripting. Its still release day too, so combos for most characters don't seem to be widely known.

That having been said, here's a few things for Ivy:

// Script was generated with < Script Manipulator > ver. 13.6 Date :10/19/18 Time: 1:28:53 PM
//------------------------------------------------------------------------

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 IvySummonSuffering = 0;
define IvyCalamitySymphony = 1;
define IvyMistressJustice = 2;
define Ivy66ALH = 3;
data(
EOC,
IvySummonSuffering,
2,DOWN,
FORWARD,
2,
2,UP,
BACK,
2,
1,FORWARD,
2,
1,DOWN,
2,
2,DOWN,
FORWARD,
2,
4,DOWN,
BACK,
BTN4,
BTN3,
2,
0,80,
EOC,
IvyCalamitySymphony,
2,DOWN,
FORWARD,
2,
2,UP,
BACK,
2,
1,BACK,
2,
1,FORWARD,
2,
2,UP,
FORWARD,
2,
2,DOWN,
BACK,
2,
3,FORWARD,
BTN4,
BTN3,
2,
0,80,
EOC,
IvyMistressJustice,
1,BTN1,
2,
0,34,
1,BTN1,
2,
0,34,
1,BTN1,
2,
0,28,
1,BTN1,
2,
0,26,
1,BTN1,
2,
0,80,
EOC,
Ivy66ALH,
1,FORWARD,
4,
0,4,
2,FORWARD,
BTN4,
40,
0,110,
4,UP,
FORWARD,
BTN1,
BTN2,
4,
0,130,
1,BACK,
4,
2,BACK,
BTN4,
70,
0,40,
3,UP,
BTN1,
BTN2,
4,
0,100,
EOC,
EOD );
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 switch;
int delay_t;
int RUMBLE_TYPE=RUMBLE_A;
int cancel;
int EndOfCombo;
int CanStart;

main {
// Determine Back and Forward
if(event_press(PS4_L3)) {
back = LEFT; forward = RIGHT;
} else if(event_press(PS4_R3)) {
back = RIGHT; forward = LEFT;
}//----------------------------------------------



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

// combo cancel buttons
if(cancel==1){
if ( (abs(get_val (9)) <= 20 && abs(get_val (10)) <= 20) && (abs(get_val (11)) <= 20 && abs(get_val (12)) <= 20) ) {
i = -1;
combo_stop(execute_step);
}
}else if(cancel==2){
if (!get_val(PS4_L1) && !get_val(PS4_L2) && !get_val(PS4_R1) && !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(DOWN , 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 ---------------------------
//////////////////////////////////////////////////////////////////////////

if (get_val (PS4_RX) > 80) {

cancel=1;
i = get_combo_index(Ivy66ALH);
}
if (get_val (PS4_RX) < -80) {

cancel=1;
i = get_combo_index(IvyMistressJustice);
}
if (get_val (PS4_RY) < -80) {

cancel=1;
i = get_combo_index(IvySummonSuffering);
}
if (get_val (PS4_RY) > 80) {

cancel=1;
i = get_combo_index(IvyCalamitySymphony);
}
// end editing here --------------------------------------------------------------------
/////////////////////////////////////////////////////////////////////////////////////////////
}// <combo activation> end
}//<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);
}

RS right: Ivy's 66A attack, with lethal hit combo.
RS left: Ivy's 'Mistress Justice' attack. A 5-hit justframe that is NC and ends in a guard crush. Only available from her Serpent's Embrace stance.
RS up: Ivy's Summon Suffering command throw. Unbreakable and does 60 dmg.
RS down: Ivy's Calamity Symphony throw. does 80 dmg.

If you have any ideas on what you might like to see in a soulcalibur script or suggestions for what characters could use one, let me know.

I was wondering how I could change the script because I'm not playing on a controller but an arcade stick, so I don't have any right stick. Is there a way to change the button on the script ? Also I'm playing on Xbox will it work ?

Thank you

justframe
5th December 18, 16:27
Yeah you gave me an updated ver of the template you used at some point... Had a toggle like hold L1 and press either R1 or R2 to swap pages (that'd also make the LED on the dualshock4 change color to indicate what page). I lost it somewhere soooo, if you could give me the thing again it'd be much appreciated :)

Is this the script you're talking about? You can toggle which combos are active with R1:
int i = -1, b, v;int back = LEFT, forward = RIGHT;
int button_1, button_2, button_3, button_4, button_5;
int value_1, value_2, value_3, value_4, value_5;
int wait_time;
int switch;
int delay_t;
int RUMBLE_TYPE=RUMBLE_A;
int cancel;
int EndOfCombo;
int CanStart;
int SWITCH
int toggle

main {
// Determine Back and Forward
if(get_val(PS4_L3)) {
back = LEFT; forward = RIGHT;
} else if(get_val(PS4_R3)) {
back = RIGHT; forward = LEFT;
}//----------------------------------------------

if(event_press(PS4_R1)){
toggle = !toggle;
}
if(toggle) {
set_led(LED_1, 0);
set_led(LED_2, 2);
set_led(LED_3, 0);
set_led(LED_4, 0);
}
else if(!toggle)
set_led(LED_1, 2);
set_led(LED_2, 0);
set_led(LED_3, 0);
set_led(LED_4, 0);
}


// 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==1){
if ( (abs(get_val (9)) <= 20 && abs(get_val (10)) <= 20) && (abs(get_val (11)) <= 20 && abs(get_val (12)) <= 20) ) {
i = -1;
combo_stop(execute_step);
}
}else if(cancel==2){
if (!get_val(PS4_L1) && !get_val(PS4_L2) && !get_val(PS4_R1) && !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(DOWN , 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 ---------------------------
//////////////////////////////////////////////////////////////////////////
if(toggle) {



}else if(!toggle) {


}
}//<main> block end


Thanks for your response, much appreciated.

I did try it on both sides but this is the first time I have used Cronusmax, so understand I could be doing something wrong.

Does it matter that I am using your Script on a PC, not PS4?

Seems that some people in the Tekken 7, forums are saying the lag differences between PC/Consoles can affect Scripts.

The difference in lag shouldn't be that severe. The only other thing I can think of since you mentioned playing on pc is the framerate. If your FPS is fluctuating or if it stays consistently below 60 that could cause combos to fail.

Is anyone else having problems with the Ivy script?


I was wondering how I could change the script because I'm not playing on a controller but an arcade stick, so I don't have any right stick. Is there a way to change the button on the script ? Also I'm playing on Xbox will it work ?

Thank you

Yes hit ctrl+f and search for "edit this part of script for combo run" in the script to get to the combo run commands. Then just edit the part that says "PS4_RX > 80" and "cancel=1" parts to whatever button you want to press. So for example if I wanted to change Summon Suffering so its done with R1 ( or whatever the equivalent of that is on your stick) I would change this:

if (get_val (PS4_RY) < -80) {

cancel=1;
i = get_combo_index(IvySummonSuffering);
}

To this:

if (get_val (PS4_R1)) {

cancel=2;
i = get_combo_index(IvySummonSuffering);
}

And yes, the script will work on xbox.

KS212
9th December 18, 23:29
@justframe
Yep that's the one! I need the combo block section too as my default only has one set of blocks. Thanks!

Unlike T7, SC6 on PC has pretty stable input timing. That one patch which changed the input lag on Tekken 7 PC literally broke all my scripts all in one hit... pissed me off so bad that I just uninstalled the game... I still haven't bothered to go back and retime/fix everything.

I'm surprised you didn't get any issues... tho I guess you have the PS4 ver as well which wasn't really affected.

justframe
10th December 18, 21:30
Here's the same script pasted over a full script, hope that helps
// Script was generated with < Script Manipulator > ver. 12.7 Date :09/22/17 Time: 5:56:24 PM
//------------------------------------------------------------------------

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 BobUniversal = 0;
define BobUF3 = 1;
define BobCD2 = 2;
define BobBB4 = 3;
define BobDB12 = 4;
define BobFF12 = 5;
define Wavedash = 6;
define KBD = 7;
define SidestepForeground = 8;
define SidestepBackground = 9;
define HELLSWEEP = 10;
data(
EOC,
BobUniversal,
2,BACK,
BTN1,
4,
0,10,
1,BTN1,
4,
0,70,
1,BTN1,
4,
0,50,
4,UP,
FORWARD,
BTN1,
BTN4,
4,
0,10,
1,BTN2,
4,
0,110,
1,FORWARD,
2,
0,2,
1,FORWARD,
2,
0,2,
1,FORWARD,
30,
1,BTN2,
4,
0,10,
1,BTN3,
4,
0,10,
2,BTN2,
BTN3,
4,
0,110,
EOC,
BobUF3,
3,UP,
FORWARD,
BTN3,
4,
0,70,
2,DOWN,
BTN1,
4,
0,10,
1,BTN3,
4,
0,120,
1,BTN1,
4,
0,50,
4,UP,
FORWARD,
BTN1,
BTN4,
4,
0,10,
1,BTN2,
4,
0,110,
1,FORWARD,
2,
0,2,
1,FORWARD,
2,
0,2,
1,FORWARD,
30,
1,BTN2,
4,
0,10,
1,BTN3,
4,
0,10,
2,BTN2,
BTN3,
4,
0,110,
EOC,
BobCD2,
1,FORWARD,
2,
0,2,
1,DOWN,
2,
2,DOWN,
FORWARD,
2,
0,2,
1,BTN1,
4,
0,120,
1,FORWARD,
2,
0,2,
1,FORWARD,
2,
0,20,
2,DOWN,
BTN1,
4,
0,10,
1,BTN3,
4,
0,110,
1,BTN1,
4,
0,50,
4,UP,
FORWARD,
BTN1,
BTN4,
4,
0,10,
1,BTN2,
4,
0,110,
1,FORWARD,
2,
0,2,
1,FORWARD,
2,
0,2,
1,FORWARD,
30,
1,BTN2,
4,
0,10,
1,BTN3,
4,
0,10,
2,BTN2,
BTN3,
4,
0,110,
EOC,
BobBB4,
1,BACK,
2,
0,2,
1,BACK,
2,
2,BACK,
BTN2,
4,
0,80,
2,BACK,
BTN1,
4,
0,20,
1,BTN1,
4,
0,70,
3,DOWN,
FORWARD,
BTN4,
4,
0,50,
2,DOWN,
BTN3,
4,
0,10,
1,BTN2,
4,
0,120,
1,FORWARD,
2,
0,2,
1,FORWARD,
2,
0,2,
1,FORWARD,
28,
1,BTN2,
4,
0,10,
1,BTN3,
4,
0,10,
2,BTN2,
BTN3,
4,
0,110,
EOC,
BobDB12,
4,DOWN,
BACK,
BTN1,
BTN4,
4,
0,80,
2,FORWARD,
BTN2,
4,
0,80,
1,FORWARD,
4,
0,10,
1,FORWARD,
20,
2,FORWARD,
BTN3,
4,
0,60,
3,DOWN,
FORWARD,
BTN4,
4,
0,60,
3,DOWN,
FORWARD,
BTN4,
4,
0,60,
2,DOWN,
BTN1,
4,
0,10,
1,BTN3,
4,
0,110,
2,BACK,
BTN3,
4,
0,110,
EOC,
BobFF12,
1,FORWARD,
2,
0,2,
1,FORWARD,
2,
3,FORWARD,
BTN1,
BTN4,
4,
0,110,
2,FORWARD,
BTN2,
4,
0,80,
1,FORWARD,
4,
0,10,
1,FORWARD,
20,
2,FORWARD,
BTN3,
4,
0,60,
3,DOWN,
FORWARD,
BTN4,
4,
0,60,
3,DOWN,
FORWARD,
BTN4,
4,
0,60,
2,DOWN,
BTN1,
4,
0,10,
1,BTN3,
4,
0,110,
2,BACK,
BTN3,
4,
0,110,
EOC,
Wavedash,
1,FORWARD,
4,
0,4,
1,DOWN,
4,
2,FORWARD,
DOWN,
4,
1,FORWARD,
4,
0,10,
EOC,
KBD,
1,BACK,
2,
0,2,
1,BACK,
19,
2,BACK,
DOWN,
2,
0,2,
EOC,
SidestepForeground,
1,BACK,
2,
1,DOWN,
2,
0,20,
EOC,
SidestepBackground,
1,BACK,
2,
1,UP,
2,
0,20,
EOC,
HELLSWEEP,
1,FORWARD,
2,
0,2,
1,DOWN,
4,
3,DOWN,
FORWARD,
BTN2,
4,
0,2,
2,BTN1,
BTN4,
4,
0,110,
EOD );
int i = -1, b, v;int back = LEFT, forward = RIGHT;
int button_1, button_2, button_3, button_4, button_5;
int value_1, value_2, value_3, value_4, value_5;
int wait_time;
int switch;
int delay_t;
int RUMBLE_TYPE=RUMBLE_A;
int cancel;
int EndOfCombo;
int CanStart;
int SWITCH
int toggle

main {
// Determine Back and Forward
if(get_val(PS4_L3)) {
back = LEFT; forward = RIGHT;
} else if(get_val(PS4_R3)) {
back = RIGHT; forward = LEFT;
}//----------------------------------------------

if(event_press(PS4_R1)){
toggle = !toggle;
}
if(toggle) {
set_led(LED_1, 0);
set_led(LED_2, 2);
set_led(LED_3, 0);
set_led(LED_4, 0);
}
else if(!toggle)
set_led(LED_1, 2);
set_led(LED_2, 0);
set_led(LED_3, 0);
set_led(LED_4, 0);
}


// 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==1){
if ( (abs(get_val (9)) <= 20 && abs(get_val (10)) <= 20) && (abs(get_val (11)) <= 20 && abs(get_val (12)) <= 20) ) {
i = -1;
combo_stop(execute_step);
}
}else if(cancel==2){
if (!get_val(PS4_L1) && !get_val(PS4_L2) && !get_val(PS4_R1) && !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(DOWN , 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 ---------------------------
//////////////////////////////////////////////////////////////////////////
if(toggle) {



}else if(!toggle) {


}
}//<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;
value_1 = 100;
} else { button_1 = -1; value_1 = 0; }

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

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

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

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

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, value_1);
if(button_2 != -1) set_val(button_2, value_2);
if(button_3 != -1) set_val(button_3, value_3);
if(button_4 != -1) set_val(button_4, value_4);
if(button_5 != -1) set_val(button_5, value_5);
}

KS212
11th December 18, 05:57
Perfect! Thanks a lot!

justframe
31st December 18, 23:55
Here's a script for Sophitia:
// Script was generated with < Script Manipulator > ver. 13.6 Date :11/01/18 Time: 9:34:34 PM//------------------------------------------------------------------------

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 SophitiaTASB_4 = 0;
define SophitiaTASB_B = 1;
define SophitiaTASAA = 3;
define SophitiaTASAB = 4;
data(
EOC,
SophitiaTASB_4,
1,DOWN,
2,
2,DOWN,
FORWARD,
2,
1,FORWARD,
2,
0,2,
1,DOWN,
2,
2,DOWN,
FORWARD,
2,
1,FORWARD,
2,
0,2,
1,BTN1,
24,
1,BACK,
2,
0,80,
EOC,
SophitiaTASB_B,
1,DOWN,
2,
2,DOWN,
FORWARD,
2,
1,FORWARD,
2,
0,2,
1,DOWN,
2,
2,DOWN,
FORWARD,
2,
1,FORWARD,
2,
0,2,
1,BTN1,
22,
0,2,
1,BTN1,
2,
0,80,
EOC,
SophitiaTASAA,
1,DOWN,
2,
2,DOWN,
FORWARD,
2,
1,FORWARD,
2,
0,2,
1,DOWN,
2,
2,DOWN,
FORWARD,
2,
1,FORWARD,
2,
0,2,
1,BTN4,
2,
0,20,
1,BTN4,
2,
0,80,
EOC,
SophitiaTASAB,
1,DOWN,
2,
2,DOWN,
FORWARD,
2,
1,FORWARD,
2,
0,2,
1,DOWN,
2,
2,DOWN,
FORWARD,
2,
1,FORWARD,
2,
0,2,
1,BTN4,
2,
0,20,
1,BTN1,
2,
0,80,
EOC,


EOD );
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 switch;
int delay_t;
int RUMBLE_TYPE=RUMBLE_A;
int cancel;
int EndOfCombo;
int CanStart;


unmap PS4_SHARE

main {
// Determine Back and Forward
if(event_press(PS4_L3)) {
back = LEFT; forward = RIGHT;
} else if(event_press(PS4_R3)) {
back = RIGHT; forward = LEFT;
}//----------------------------------------------



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

// combo cancel buttons
if(cancel==1){
if ( (abs(get_val (9)) <= 20 && abs(get_val (10)) <= 20) && (abs(get_val (11)) <= 20 && abs(get_val (12)) <= 20) ) {
i = -1;
combo_stop(execute_step);
}
}else if(cancel==2){
if (!get_val(PS4_L1) && !get_val(PS4_L2) && !get_val(PS4_R1) && !get_val(PS4_R2) && !get_val(PS4_SHARE)) {
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(DOWN , 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 ---------------------------
//////////////////////////////////////////////////////////////////////////

if (get_val (PS4_RX) > 80) {

cancel=1;
i = get_combo_index(SophitiaTASB_4);
}

if (get_val (PS4_RX) < -80) {

cancel=1;
i = get_combo_index(SophitiaTASB_B);
}
if (get_val (PS4_RY) < -80) {

cancel=1;
i = get_combo_index(SophitiaTASAB);
}
if (get_val (PS4_RY) > 80) {

cancel=1;
i = get_combo_index(SophitiaTASAA);
}


// end editing here --------------------------------------------------------------------
/////////////////////////////////////////////////////////////////////////////////////////////
}// <combo activation> end
}//<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);
}

RS right is Twin Angel Step B with the 4 justframe.
RS left is Twin Angel Step B with the B justframe.
RS up is Twin Angel Step A, B
RS down is Twin Angel Step A, A

Enjoy!

linakingdom
7th January 19, 08:01
I would like to add some holding time for ps4 triangle button bit longer for IVY combo how we adjust that?
can you please help?

stunys
18th March 19, 11:03
Here's the same script pasted over a full script, hope that helps
// Script was generated with < Script Manipulator > ver. 12.7 Date :09/22/17 Time: 5:56:24 PM
//------------------------------------------------------------------------

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 BobUniversal = 0;
define BobUF3 = 1;
define BobCD2 = 2;
define BobBB4 = 3;
define BobDB12 = 4;
define BobFF12 = 5;
define Wavedash = 6;
define KBD = 7;
define SidestepForeground = 8;
define SidestepBackground = 9;
define HELLSWEEP = 10;
data(
EOC,
BobUniversal,
2,BACK,
BTN1,
4,
0,10,
1,BTN1,
4,
0,70,
1,BTN1,
4,
0,50,
4,UP,
FORWARD,
BTN1,
BTN4,
4,
0,10,
1,BTN2,
4,
0,110,
1,FORWARD,
2,
0,2,
1,FORWARD,
2,
0,2,
1,FORWARD,
30,
1,BTN2,
4,
0,10,
1,BTN3,
4,
0,10,
2,BTN2,
BTN3,
4,
0,110,
EOC,
BobUF3,
3,UP,
FORWARD,
BTN3,
4,
0,70,
2,DOWN,
BTN1,
4,
0,10,
1,BTN3,
4,
0,120,
1,BTN1,
4,
0,50,
4,UP,
FORWARD,
BTN1,
BTN4,
4,
0,10,
1,BTN2,
4,
0,110,
1,FORWARD,
2,
0,2,
1,FORWARD,
2,
0,2,
1,FORWARD,
30,
1,BTN2,
4,
0,10,
1,BTN3,
4,
0,10,
2,BTN2,
BTN3,
4,
0,110,
EOC,
BobCD2,
1,FORWARD,
2,
0,2,
1,DOWN,
2,
2,DOWN,
FORWARD,
2,
0,2,
1,BTN1,
4,
0,120,
1,FORWARD,
2,
0,2,
1,FORWARD,
2,
0,20,
2,DOWN,
BTN1,
4,
0,10,
1,BTN3,
4,
0,110,
1,BTN1,
4,
0,50,
4,UP,
FORWARD,
BTN1,
BTN4,
4,
0,10,
1,BTN2,
4,
0,110,
1,FORWARD,
2,
0,2,
1,FORWARD,
2,
0,2,
1,FORWARD,
30,
1,BTN2,
4,
0,10,
1,BTN3,
4,
0,10,
2,BTN2,
BTN3,
4,
0,110,
EOC,
BobBB4,
1,BACK,
2,
0,2,
1,BACK,
2,
2,BACK,
BTN2,
4,
0,80,
2,BACK,
BTN1,
4,
0,20,
1,BTN1,
4,
0,70,
3,DOWN,
FORWARD,
BTN4,
4,
0,50,
2,DOWN,
BTN3,
4,
0,10,
1,BTN2,
4,
0,120,
1,FORWARD,
2,
0,2,
1,FORWARD,
2,
0,2,
1,FORWARD,
28,
1,BTN2,
4,
0,10,
1,BTN3,
4,
0,10,
2,BTN2,
BTN3,
4,
0,110,
EOC,
BobDB12,
4,DOWN,
BACK,
BTN1,
BTN4,
4,
0,80,
2,FORWARD,
BTN2,
4,
0,80,
1,FORWARD,
4,
0,10,
1,FORWARD,
20,
2,FORWARD,
BTN3,
4,
0,60,
3,DOWN,
FORWARD,
BTN4,
4,
0,60,
3,DOWN,
FORWARD,
BTN4,
4,
0,60,
2,DOWN,
BTN1,
4,
0,10,
1,BTN3,
4,
0,110,
2,BACK,
BTN3,
4,
0,110,
EOC,
BobFF12,
1,FORWARD,
2,
0,2,
1,FORWARD,
2,
3,FORWARD,
BTN1,
BTN4,
4,
0,110,
2,FORWARD,
BTN2,
4,
0,80,
1,FORWARD,
4,
0,10,
1,FORWARD,
20,
2,FORWARD,
BTN3,
4,
0,60,
3,DOWN,
FORWARD,
BTN4,
4,
0,60,
3,DOWN,
FORWARD,
BTN4,
4,
0,60,
2,DOWN,
BTN1,
4,
0,10,
1,BTN3,
4,
0,110,
2,BACK,
BTN3,
4,
0,110,
EOC,
Wavedash,
1,FORWARD,
4,
0,4,
1,DOWN,
4,
2,FORWARD,
DOWN,
4,
1,FORWARD,
4,
0,10,
EOC,
KBD,
1,BACK,
2,
0,2,
1,BACK,
19,
2,BACK,
DOWN,
2,
0,2,
EOC,
SidestepForeground,
1,BACK,
2,
1,DOWN,
2,
0,20,
EOC,
SidestepBackground,
1,BACK,
2,
1,UP,
2,
0,20,
EOC,
HELLSWEEP,
1,FORWARD,
2,
0,2,
1,DOWN,
4,
3,DOWN,
FORWARD,
BTN2,
4,
0,2,
2,BTN1,
BTN4,
4,
0,110,
EOD );
int i = -1, b, v;int back = LEFT, forward = RIGHT;
int button_1, button_2, button_3, button_4, button_5;
int value_1, value_2, value_3, value_4, value_5;
int wait_time;
int switch;
int delay_t;
int RUMBLE_TYPE=RUMBLE_A;
int cancel;
int EndOfCombo;
int CanStart;
int SWITCH
int toggle

main {
// Determine Back and Forward
if(get_val(PS4_L3)) {
back = LEFT; forward = RIGHT;
} else if(get_val(PS4_R3)) {
back = RIGHT; forward = LEFT;
}//----------------------------------------------

if(event_press(PS4_R1)){
toggle = !toggle;
}
if(toggle) {
set_led(LED_1, 0);
set_led(LED_2, 2);
set_led(LED_3, 0);
set_led(LED_4, 0);
}
else if(!toggle)
set_led(LED_1, 2);
set_led(LED_2, 0);
set_led(LED_3, 0);
set_led(LED_4, 0);
}


// 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==1){
if ( (abs(get_val (9)) <= 20 && abs(get_val (10)) <= 20) && (abs(get_val (11)) <= 20 && abs(get_val (12)) <= 20) ) {
i = -1;
combo_stop(execute_step);
}
}else if(cancel==2){
if (!get_val(PS4_L1) && !get_val(PS4_L2) && !get_val(PS4_R1) && !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(DOWN , 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 ---------------------------
//////////////////////////////////////////////////////////////////////////
if(toggle) {



}else if(!toggle) {


}
}//<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;
value_1 = 100;
} else { button_1 = -1; value_1 = 0; }

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

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

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

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

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, value_1);
if(button_2 != -1) set_val(button_2, value_2);
if(button_3 != -1) set_val(button_3, value_3);
if(button_4 != -1) set_val(button_4, value_4);
if(button_5 != -1) set_val(button_5, value_5);
}

What do you use to make your scripts? It seems a lot more complex than what I've been doing. I havent been able to figure out how to script more than 2 combos on the right stick to have it work in both directions. I love the concept of your script but don't understand the combo language. Is there a tutorial out there for that specific format?

justframe
20th March 19, 02:46
I use script manipulator to make these, there is a subforum for it here in the forums. when you open the program you'll see a tab labelled 'fighting games' at the top, if you click on it you'll see a tab called 'convert combos into data segment'. If you paste the combos from a script into the box on the left and press convert, it will turn the script into the data segment format. You will have to go back into the main section and add a few things (like the buttons to start the combos or cancel them) and you will have to write them in a different way than you would in a normal script. You can look at my scripts to see how.