PDA

View Full Version : PS4 STREET FIGHTER V TRIALS (ZEKU VOL.2)



chipp
29th December 17, 03:19
This is my first experience with GPC, and I created this script for practice purposes (in preparation for another game).
If you're looking for a comprehensive SFV trials collection, I highly recommend byakugam's thread (http://cronusmax.com/forums/showthread.php/175704-Street-Fighter-V-TRIALS-(sharing-my-trials)).


This single script contains 10 trials for Zeku (Vol.2). Tested on PS4.
Some frame-dependent trials may require several attempts to succeed.
Each trial is activated by a dedicated analog stick movement:



LEFT STICK:
Trial 01: LS ⇧
Trial 02: LS ⇨
Trial 03: LS ⇩
Trial 04: LS ⇦
Trial 05: LS L3 (press)
RIGHT STICK:
Trial 06: RS ⇧
Trial 07: RS ⇨
Trial 08: RS ⇩
Trial 09: RS ⇦
Trial 10: RS R3 (press)


kudos to falconpunch323 and tencubed42 for creating a nice 'all-in-one' script framework.

/////////////////////////////////////////////////////////////////////////////////
// MODIFIED SCRIPT UPLOADED BY FALCONPUNCH323 //
// MODIFIED FOR USE IN TRIALS BY TENCUBED42 //
// TRIALS SCRIPTED BY CHIPP //
/////////////////////////////////////////////////////////////////////////////////
// //
// ZEKU VOLUME 2 TRIALS 1 - 10 //
// //
/////////////////////////////////////////////////////////////////////////////////
// //
// TRIAL 01: LS ⇧ TRIAL 06: RS ⇧ //
// TRIAL 02: LS ⇨ TRIAL 07: RS ⇨ //
// TRIAL 03: LS ⇩ TRIAL 08: RS ⇩ //
// TRIAL 04: LS ⇦ TRIAL 09: RS ⇦ //
// TRIAL 05: LS L3 TRIAL 10: RS R3 //
// //
/////////////////////////////////////////////////////////////////////////////////
// //
// NUMPAD NOTATION IS IN USE, I.E.: //
// 236LP READS AS 'DOWN, DOWN-FORWARD, FORWARD + LIGHT PUNCH' //
// 214HK READS AS 'DOWN, DOWN-BACK, BACK + HEAVY KICK' //
// ETC. //
// //
// s.XX = stand XX //
// c.XX = crouch XX //
// j.XX = jump XX //
// //
// SOME FRAME-DEPENDENT TRIALS MAY REQUIRE SEVERAL ATTEMPTS TO SUCCEED //
// //
/////////////////////////////////////////////////////////////////////////////////


define P1 = 20;
define P2 = 17;
define P3 = 3;
define P4 = 6;
define K1 = 19;
define K2 = 18;
define K3 = 4;
define K4 = 7;
define DUP = 13;
define DDOWN = 14;
define DLEFT = 15;
define DRIGHT = 16;
define START = 2;
define SELECT = 1;
define RESET = 5;
define frame = 17;


define VTrigger = 36;
define VSkill = 37;
define Throw = 38;
define PPP = 39;
define KKK = 40;
define PP = 41;
define KK = 42;

define EOC = 254; // End of Combo
define EOD = 255; // End of Data Segment

define Trial_1_v1 = 1;
define Trial_2_v1 = 2;
define Trial_3_v1 = 3;
define Trial_4_v1 = 4;
define Trial_5_v1 = 5;
define Trial_6_v1 = 6;
define Trial_7_v1 = 7;
define Trial_8_v1 = 8;
define Trial_9_v1 = 9;
define Trial_10_v1 = 10;
define Trial_1_v2 = 11;
define Trial_2_v2 = 12;
define Trial_3_v2 = 13;
define Trial_4_v2 = 14;
define Trial_5_v2 = 15;
define Trial_6_v2 = 16;
define Trial_7_v2 = 17;
define Trial_8_v2 = 18;
define Trial_9_v2 = 19;
define Trial_10_v2 = 20;


data(
Trial_1_v2,
1,RESET,100,1,0,60, //Reset trial and wait FRAMES(60)
1,DRIGHT,100,20, //Forward walk FR(20)
2,DRIGHT,100,DUP,100,30,0,1, //Forward jump FR(30+1)
1,K2,100,10,0,10, //j.MK FR(10+10)
1,K2,100,10,0,25, //s.MK FR(10+25)
1,P2,100,5,0,0, //s.MP FR(10)
1,DDOWN,100,3, //214LK [pt.1] FR(3)
2,DDOWN,100,DLEFT,100,3, //214LK [pt.2] FR(3)
3,DDOWN,0,DLEFT,100,K1,100,3,0,1, //214LK [pt.3] FR(3+1)
1,DDOWN,100,3, //236LK [pt.1] FR(3)
2,DDOWN,100,DRIGHT,100,3, //236LK [pt.2] FR(3)
3,DDOWN,0,DRIGHT,100,K1,100,3, //236LK [pt.3] FR(3)
EOC,


Trial_2_v2,
1,RESET,100,1,0,60, //Reset trial and wait FRAMES(60)
1,DRIGHT,100,20, //Forward walk FR(20)
2,DRIGHT,100,DUP,100,20,0,5, //Forward jump FR(20+5)
1,K3,100,20,0,10, //j.HK FR(20+10)
2,DDOWN,100,P3,100,4,0,2, //c.HP FR(4+2)
1,DDOWN,100,3, //214LK+MK [pt.1] FR(3)
2,DDOWN,100,DLEFT,100,3, //214LK+MK [pt.2] FR(3)
4,DDOWN,0,DLEFT,100,K1,100,K2,100,40,0,35, //214LK+MK [pt.3] FR(40+35)
1,VSkill,100,5,0,5, //MP+MK FR(5+5)
EOC,


Trial_3_v2,
1,RESET,100,1,0,60, //Reset trial and wait FRAMES(60)
1,DDOWN,100,2,0,2,1,DDOWN,100,2,0,2,2,P1,100,P2,100,20,0,20, //22LP+MP FR(20+20)
1,DRIGHT,100,10, //Forward walk FR(10)
2,DRIGHT,100,DUP,100,20,0,5, //Forward jump FR(20+5)
1,K3,100,20,0,10, //j.HK FR(20+10)
1,P3,100,10,0,20, //s.HP FR(10+20)
1,P3,100,10,0,5, //s.HP FR(10+5)
1,DDOWN,100,3, //236MK ► MK [pt.1] FR(3)
2,DDOWN,100,DRIGHT,100,3, //236MK ► MK [pt.2] FR(3)
3,DDOWN,0,DRIGHT,100,2,0,2,1,K2,100,2,0,2,1,K2,100,2,0,2, //236MK ► MK [pt.3] FR(2+2)
EOC,


Trial_4_v2,
1,RESET,100,1,0,60, //Reset trial and wait FRAMES(60)
1,DDOWN,100,2,0,2,1,DDOWN,100,2,0,2,2,P1,100,P2,100,20,0,20, //22LP+MP FR(20+20)
1,DRIGHT,100,10, //Forward walk FR(10)
2,DRIGHT,100,DUP,100,20,0,5, //Forward jump FR(20+5)
1,K3,100,20,0,10, //j.HK FR(20+10)
2,DDOWN,100,P2,100,5,0,24, //c.MP FR(5+24)
1,P2,100,10,0,0, //s.MP FR(10)
1,P3,100,20,0,5, //s.HP FR(20+5)
1,DDOWN,100,3, //214MP [pt.1] FR(3)
2,DDOWN,100,DLEFT,100,3, //214MP [pt.2] FR(3)
3,DDOWN,0,DLEFT,100,P2,100,30,0,30, //214MP [pt.3] FR(30+30)
1,VSkill,100,5,0,5, //MP+MK FR(5+5)
EOC,


Trial_5_v2,
1,RESET,100,1,0,60, //Reset trial and wait FRAMES(60)
1,DRIGHT,100,80, //Forward walk FR(80)
2,DDOWN,100,P1,100,10,0,5, //c.LP FR(10+5)
1,P2,100,20,0,10, //s.MP FR(20+10)
1,K1,100,5,0,0, //s.LK FR(5)
1,DRIGHT,100,3,0,2, //623LK [pt.1] FR(3+2)
1,DDOWN,100,3, //623LK [pt.2] FR(3)
3,DDOWN,100,DRIGHT,100,K1,100,3,0,1, //623LK [pt.3] FR(3+1)
EOC,


Trial_6_v2,
1,RESET,100,1,0,60, //Reset trial and wait FRAMES(60)
1,DRIGHT,100,80, //Forward walk FR(80)
2,DDOWN,100,P3,100,4,0,4, //c.HP FR(4+4)
1,DDOWN,100,3, //214HK [pt.1] FR(3)
2,DDOWN,100,DLEFT,100,3, //214HK [pt.2] FR(3)
3,DDOWN,0,DLEFT,100,K3,100,20,0,20, //214HK [pt.3] FR(20+20)
1,DDOWN,100,3, //236HK [pt.1] FR(3)
2,DDOWN,100,DRIGHT,100,3, //236HK [pt.2] FR(3)
3,DDOWN,0,DRIGHT,100,K3,100,3, //236HK [pt.3] FR(3)
EOC,


Trial_7_v2,
1,RESET,100,1,0,60, //Reset trial and wait FRAMES(60)
1,DDOWN,100,2,0,2,1,DDOWN,100,2,0,2,2,P1,100,P2,100,20,0,20, //22LP+MP FR(20+20)
1,DRIGHT,100,50, //Forward walk FR(50)
2,DDOWN,100,P1,100,10,0,5, //c.LP FR(10+5)
1,P2,100,5,0,5, //s.MP FR(5+5)
1,P3,100,20,0,5, //s.HP FR(20+5)
1,DDOWN,100,3, //214LP+MP [pt.1] FR(3)
2,DDOWN,100,DLEFT,100,3, //214LP+MP [pt.2] FR(3)
4,DDOWN,0,DLEFT,100,P1,100,P2,100,30,0,35, //214LP+MP [pt.3] FR(30+35)
2,DRIGHT,100,DUP,100,15,0,5, //Forward jump FR(15+5)
1,DDOWN,100,3, //236LP+MP [pt.1] FR(3)
2,DDOWN,100,DRIGHT,100,3, //236LP+MP [pt.2] FR(3)
4,DDOWN,0,DRIGHT,100,P1,100,P2,100,40,0,35, //236LP+MP [pt.3] FR(40+35)
EOC,


Trial_8_v2,
1,RESET,100,1,0,60, //Reset trial and wait FRAMES(60)
1,DDOWN,100,2,0,2,1,DDOWN,100,2,0,2,2,P1,100,P2,100,20,0,20, //22LP+MP FR(20+20)
1,DRIGHT,100,10, //Forward walk FR(10)
2,DRIGHT,100,DUP,100,20,0,5, //Forward jump FR(20+5)
1,K3,100,20,0,10, //j.HK FR(20+10)
1,P3,100,5,0,0, //s.HP FR(5)
1,DDOWN,100,3, //236LP+MP [pt.1] FR(3)
2,DDOWN,100,DRIGHT,100,3, //236LP+MP [pt.2] FR(3)
4,DDOWN,0,DRIGHT,100,P1,100,P2,100,40,0,30, //236LP+MP [pt.3] FR(40+30)
1,DDOWN,100,3, //214HP [pt.1] FR(3)
2,DDOWN,100,DLEFT,100,3, //214HP [pt.2] FR(3)
3,DDOWN,0,DLEFT,100,P3,100,40,0,10, //214HP [pt.3] FR(40+10)
1,DDOWN,100,3, //236MP [pt.1] FR(3)
2,DDOWN,100,DRIGHT,100,3, //236MP [pt.2] FR(3)
3,DDOWN,0,DRIGHT,100,P2,100,3, //236MP [pt.3] FR(3)
EOC,


Trial_9_v2,
1,RESET,100,1,0,60, //Reset trial and wait FRAMES(60)
1,DRIGHT,100,80, //Forward walk FR(80)
1,VTrigger,100,25,0,25, //HP+HK FR(25+25)
1,K3,100,10,0,10, //s.HK FR(10+10)
1,VTrigger,100,5,0,5, //HP+HK FR(5+5)
1,P1,100,10,0,0, //s.LP FR(10)
1,K1,100,10,0,0, //s.LK FR(10)
1,P2,100,10,0,0, //s.MP FR(10)
1,K2,100,10,0,0, //s.MK FR(10)
1,P3,100,10,0,10, //s.HP FR(10+10)
1,K3,100,10,0,10, //s.HK FR(10+10)
1,VTrigger,100,15,0,5, //HP+HK FR(15+5)
EOC,


Trial_10_v2,
1,RESET,100,1,0,60, //Reset trial and wait FRAMES(60)
1,DDOWN,100,2,0,2,1,DDOWN,100,2,0,2,2,P1,100,P2,100,20,0,20, //22LP+MP FR(20+20)
1,DRIGHT,100,50, //Forward walk FR(50)
1,VTrigger,100,40,0,20, //HP+HK FR(40+20)
1,K3,100,10,0,10, //s.HK FR(10+10)
1,VTrigger,100,5,0,5, //HP+HK FR(5+5)
1,P2,100,10,0,0, //s.MP FR(10)
1,K2,100,10,0,0, //s.MK FR(10)
1,P3,100,10,0,10, //s.HP FR(10+10)
1,K3,100,10,0,20, //s.HK FR(10+20)
1,VTrigger,100,5,0,5, //HP+HK FR(5+5)
1,DDOWN,100,3, //236236LK [pt.1] FR(3)
2,DDOWN,100,DRIGHT,100,3, //236236LK [pt.2] FR(3)
2,DDOWN,0,DRIGHT,100,3, //236236LK [pt.3] FR(3)
1,DDOWN,100,3, //236236LK [pt.4] FR(3)
2,DDOWN,100,DRIGHT,100,3, //236236LK [pt.5] FR(3)
3,DDOWN,0,DRIGHT,100,K1,100,3, //236236LK [pt.6] FR(3)
EOC,
EOD );


//block output to game for these buttons.
unmap 8; //PS=L3, XB=LS
unmap 12; //Left Stick Y Axis
unmap 11; //Left Stick X Axis
unmap 10; //Right Stick Y Axis
unmap 9; //Right Stick X Axis


int i = -1, b, v;
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 vol=0;


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


// Make sure the user inputs does not interfere in the combo
set_val(P1, 0);
set_val(P2, 0);
set_val(P3, 0);
set_val(P4, 0);
set_val(K1, 0);
set_val(K2, 0);
set_val(K3, 0);
set_val(K4, 0);
set_val(DUP, 0);
set_val(DRIGHT,0);
set_val(DDOWN,0);
set_val(DLEFT,0);
}
else {
if(get_val(SELECT)){
if(vol == 0){vol=10;}
else{vol=0;}
}
// LS UP
if (get_val (12)<= -60) {
i = get_combo_index(Trial_1_v2);
}

// LS RIGHT
if (get_val (11)>= 60) {
i = get_combo_index(Trial_2_v2);
}

// LS DOWN
if (get_val (12) >= 60) {
i = get_combo_index(Trial_3_v2);
}

// LS LEFT
if (get_val (11)<= -60) {
i = get_combo_index(Trial_4_v2);
}

// LS L3 (PRESS)
if (get_val (8)) {
i = get_combo_index(Trial_5_v2);
}

// RS UP
if (get_val (10) <= -60) {
i = get_combo_index(Trial_6_v2);
}

// RS RIGHT
if (get_val (9) >= 60) {
i = get_combo_index(Trial_7_v2);
}

// RS DOWN
if (get_val (10) >= 60) {
i = get_combo_index(Trial_8_v2);
}

// RS LEFT
if (get_val (9) <= -60) {
i = get_combo_index(Trial_9_v2);
}


// RS R3 (PRESS)
if (get_val (5)) {
i = get_combo_index(Trial_10_v2);
}
}
}

// 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;
combo_id=combo_id + vol;
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(dbyte(i) > 35 && b != 0){
set_special(dbyte(i),dbyte(i + 1)); i = i + 2;
}
else{
if(b >= 1) {
button_1 = dbyte(i); i = i + 1;
value_1 = dbyte(i); i = i + 1;
} else { button_1 = -1; value_1 = 0; }

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

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

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

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

wait_time = frames(dbyte(i)); i = i + 1;

if(wait_time < 0) wait_time = 0;
else if(wait_time > 2530) wait_time = 2530;

return(TRUE);
}

// 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);
}
function frames(iframes){
return iframes * frame;
}
function set_special(move,value){
if(move == VTrigger){
button_1 = P3; value_1 = value;
button_2 = K3; value_2 = value;
}
if(move == VSkill){
button_1 = P2; value_1 = value;
button_2 = K2; value_2 = value;
}
if(move == Throw){
button_1 = P1; value_1 = value;
button_2 = K1; value_2 = value;
}
if(move == PP){
button_1 = P1; value_1 = value;
button_2 = P2; value_2 = value;
}
if(move == KK){
button_1 = K1; value_1 = value;
button_2 = K2; value_2 = value;
}
if(move == PPP){
button_1 = P1; value_1 = value;
button_2 = P2; value_2 = value;
button_3 = P3; value_3 = value;
}
if(move == KKK){
button_1 = K1; value_1 = value;
button_2 = K2; value_2 = value;
button_3 = K3; value_3 = value;
}
}
function set_trace(value){
if(get_val(TRACE_1) == 0){ set_val(TRACE_1,value); return}
if(get_val(TRACE_2) == 0){ set_val(TRACE_2,value); return}
if(get_val(TRACE_3) == 0){ set_val(TRACE_3,value); return}
if(get_val(TRACE_4) == 0){ set_val(TRACE_4,value); return}
if(get_val(TRACE_5) == 0){ set_val(TRACE_5,value); return}
if(get_val(TRACE_6) == 0){ set_val(TRACE_6,value); return}
return;
}

byakugam
29th December 17, 18:49
very cool, your script is much better than mine, I want to learn in the future how to do the script that way ^^


congratulations! ^^

chipp
30th December 17, 03:33
I did the least of the work here. All thanks should go to falconpunch and tencubed42 for coming up with the scripts that can be used as templates. I simply changed combos without touching anything else. In my opinion, this template is very useful when dealing with a high number of trials (like you do).

byakugam
30th December 17, 07:13
cool, I also thought about getting these scripts to learn how to use them.

I do it from scratch, I literally do the commands manually, in control while the program is recording what I am pressing, when I hit everything I stop recording, I copy the commands and paste in the script, I do 5 to 10 tests to see if it's perfect so I save.

when it is not perfect (works times yes times no) I see which command to fail because, and I correct the script.

This is good that while I'm doing the scripts I'm learning to do the trials ^^