FIFA 16 Skill combos

Fifa 16 skill combos - standing skills not added. 27 skills added to any side. - KnockBall, FakeShot, BallRoll, BodyFeintCut, StepOverCut, ReversoStepOverCut, HeelFlick2, HeelFlick, FlickUP, Roulette, FakeAndGo, FakeShotBallHop, HeelToHeel(HeelFlick), Rainbow, AdvRainbow. FeintLeft/Right(FakeAndGo), Spin, StopAndTurn, ScoopTurn, Elastico(FakeAndGo), ReverseElastico(FakeAndGo), HocusPocus, TripleElastico, BallRollFlick, TurnAndSpin(StopAndTurn), ElasticoChop, BolasieFlick check information at the start of the file. i have used the XBOX1 button names but it should work on all system unless you have changed your control button mapping.
Version1.0
AuthorFCB77
Publish DateFri, 22 Jan 2016 - 04:31
Last UpdateFri, 22 Jan 2016 - 04:31
Downloads813
RATE


3

0

Release Notes: I haven't test it in FIFA 15 but most if not all should work.
Code: Select all
/*
FIFA 16 Combos
 
- Activate\Desactivate script by pressing XB1_VIEW and XB1_MENU
- press XB1_VIEW an XB1_RIGHT for next skill
- press XB1_VIEW an XB1_LEFT for previous skill
some combos are disabled due to MAX bytecode side limitation
so uncomment your combo if you want to use it and add it to ProcessCombos()
 
 
- Doubleclick XB1_LB (skill to the left side) or XB1_RB (skill to the right side) to execute the skill
 
********
* IMPORTANT INFORMATION
- Im not a fan of activating the skills via LB and RB doubleclicking
specially since FIFA16 the new feature called NO TOUCH DRIBBLING uses the LB button.
so sometimes when you want to execute some skills to the left side, your player will not execute it correctly.
i way to bypass this is by triple clicking the LB button or a better option assing the LEFT skills
to a different button.
 
maybe a solution to this problem is blocking the LB output to the console  totally (send LB as unpress) when you doubleclick on it.
 
 for testing purposes i have also assigned the XB1_RIGHT button to execute left side skills and the skills run just fine.
 
 I use the XB1_LEFT an XB1_RIGHT you can use the one you like. just change the code bellow in line 121.
 or someone else code a better doubleclick handler than me :D.
*************
 
 
 
- some skills only can be excecuted to one direction (HeelFlick, etc)
so it doesnt matter which button you doubleclick, you can use both buttons.
- Combo list
- each fifa 16 player has a STAR SKILL rating, so a 3 STAR PLAYER can only execute
1,2, and 3 STAR SKILLS. a 3 STAR PLAYER can not execute 4 and 5 STAR SKILL.
 
 // standing skills not added.
 
 1 STAR SKILLS
 - KnockBall, FakeShot
 
 2 STAR SKILLS
 - BallRoll, BodyFeintCut, StepOverCut, ReversoStepOverCut, HeelFlick2
 
 3 STAR SKILLS
 - HeelFlick, FlickUP, Roulette, FakeAndGo
 
 4 STAR SKILLS
 - FakeShotBallHop, HeelToHeel(HeelFlick), Rainbow, AdvRainbow. FeintLeft/Right(FakeAndGo)
 - Spin, StopAndTurn, ScoopTurn
 
  5 STAR SKILLS
  - Elastico(FakeAndGo), ReverseElastico(FakeAndGo), HocusPocus, TripleElastico
  - BallRollFlick, TurnAndSpin(StopAndTurn), ElasticoChop, BolasieFlick
 
 
*/

define UP         = 0;
define UP_RIGHT   = 1;
define RIGHT      = 2;
define DOWN_RIGHT = 3;
define DOWN       = 4;
define DOWN_LEFT  = 5;
define LEFT       = 6;
define UP_LEFT    = 7;
 
define MAX_SKILLS   = 14; //21;
define FlickTime    = 80;
define HoldTime        = 300;
data
(  0, 100, 100, 100,   0, 156, 156, 156,
 156, 156,   0, 100, 100, 100,   0, 156
);
int scriptON;
int mode;
int dblclick_timer;
int dblclick_count;
int dblclick_msecs;
int x, y, p;
int dTemp, dStart, dMid, dEnd;
 
// testing purposes. scripts already ON
init {
    scriptON = 1;
    mode = 1;
}
 
main {
    // ACTIVE SKILLS
    if (get_val(XB1_VIEW)) {
        if (event_release(XB1_MENU)) {
            set_val(XB1_MENU, 0);
            scriptON = !scriptON;
        }
        //NEXT SKILL
        if (event_release(XB1_RIGHT)) {
            set_val(XB1_RIGHT, 0);
            mode = mode + 1;
            if (mode > MAX_SKILLS) {
                mode = 0;
            }
        // PREVIOUS SKILL
        } else if (event_release(XB1_LEFT)) {
            set_val(XB1_LEFT, 0);
            mode = mode - 1;
            if (mode < 0) {
                mode = MAX_SKILLS;
            }
        }
    }
 
    set_val(TRACE_1, scriptON);
    set_val(TRACE_2, mode);
 
    if (scriptON) {
        if (dbl_clicked(XB1_LB)) {
            ProcessCombos(RIGHT, LEFT);
        } else if (dbl_clicked(XB1_RB)) {
            ProcessCombos(LEFT, RIGHT);
        }   
 
        // testing purposes for LEFT side combos.
        if (event_press(XB1_RIGHT)) {
            ProcessCombos(RIGHT, LEFT);
        }
    }
}
/*
***********
COMBO MACROS
***********
I was trying to decrease the max bytecode side by using repetitive code
on a single combo, but at the end i reached the max allow codeside anyways
so combos added after this doesnt contain hold_RStick, flick_RStick, move_RStick, etc
*/

combo hold_RStick {
    calc_relative_xy(dEnd);
    set_val(XB1_RX, x);
    set_val(XB1_RY, y);
    wait(HoldTime);
    set_val(XB1_RX, 0);
    set_val(XB1_RY, 0);
    wait(50);
}
combo flick_RStick {
    call(move_RStick)
    set_val(XB1_RX, 0);
    set_val(XB1_RY, 0);
    wait(50);
}
combo move_RStick {
    calc_relative_xy(dEnd);
    set_val(XB1_RX, x);
    set_val(XB1_RY, y);
    wait(FlickTime);
}
combo RStick_HalfCircle {
    calc_relative_xy(dStart);
    set_val(XB1_RX, x);
    set_val(XB1_RY, y);
    wait(FlickTime);
    calc_relative_xy(dMid);
    set_val(XB1_RX, x);
    set_val(XB1_RY, y);
    wait(FlickTime);
    calc_relative_xy(dEnd);
    set_val(XB1_RX, x);
    set_val(XB1_RY, y);
    wait(FlickTime);
}
// 1 STAR SKILL
/*combo KnockOn {
    dEnd = UP;
    call(hold_RStick)// increase holdtime to knock the ball further
}
combo FakeShotStop {
    set_val(XB1_LX, 0);
    set_val(XB1_LY, 0);
    set_val(XB1_B, 100);
    wait(80);
    set_val(XB1_LX, 0);
    set_val(XB1_LY, 0);
    set_val(XB1_A, 100);
    set_val(XB1_B, 100);
    wait(80);
    set_val(XB1_LX, 0);
    set_val(XB1_LY, 0);
    set_val(XB1_A, 100);
    set_val(XB1_B, 0);
    wait(80);
    set_val(XB1_LX, 0);
    set_val(XB1_LY, 0);
    set_val(XB1_A, 0);
}*/

// 2 START SKILLS
combo BallRoll{
    call(hold_RStick);
}
combo BodyFeintCut {
    dEnd = dStart
    call(flick_RStick);
 
    // uncomment code if you want 45 degree cut
//    if (dTemp == RIGHT) dTemp = UP_RIGHT;
//    if (dTemp == LEFT) dTemp = UP_LEFT;
 
    // 90 degree cut - left side nerfed by fifa developers
    calc_relative_xy(dTemp) //
    set_val(XB1_LX, x)
    set_val(XB1_LY, y)
    wait(400) // 80 ms
}
/*combo StepOverCut {
    calc_relative_xy(UP);
    set_val(XB1_RX, x);
    set_val(XB1_RY, y);
    wait(80);
    calc_relative_xy(dStart);
    set_val(XB1_RX, x);
    set_val(XB1_RY, y);
    wait(80);
 
    // uncomment code if you want 45 degree cut
//    if (dEnd == RIGHT) dEnd = UP_RIGHT;
//    if (dEnd == LEFT) dEnd = UP_LEFT;
 
    // 90 degree cut - left side nerfed by fifa developers
    calc_relative_xy(dEnd) //
    set_val(XB1_LX, x)
    set_val(XB1_LY, y)
    wait(400)
}*/

combo ReversoStepOverCut {
    calc_relative_xy(dStart);
    set_val(XB1_RX, x);
    set_val(XB1_RY, y);
    wait(80);
    calc_relative_xy(UP);
    set_val(XB1_RX, x);
    set_val(XB1_RY, y);
    wait(80);
 
    // 45 degree cut enabled
    // for some strange reason if else block gives wrong result.
    if (dEnd == RIGHT) dEnd = UP_RIGHT;
    if (dEnd == LEFT) dEnd = UP_LEFT;
 
    calc_relative_xy(dEnd) //
    set_val(XB1_LX, x)
    set_val(XB1_LY, y)
    wait(400) // 80 ms
}
combo HeelFlick2 {
    set_val(XB1_LT, 100);
    set_val(XB1_B, 100);
    wait(100);
    set_val(XB1_LT, 100);
    set_val(XB1_A, 100);
    set_val(XB1_B, 100);
    wait(50);
    set_val(XB1_LT, 100);
    set_val(XB1_A, 100);
    set_val(XB1_B, 0);
    wait(100);
    set_val(XB1_LT, 100);
    set_val(XB1_A, 0);
    wait(100);
}
// 3 START SKILL
combo HeelFlick {
    dEnd = UP;
    call(flick_RStick);
    dEnd = DOWN;
    call(flick_RStick);
}
/*combo FlickUP {
    dEnd = UP
    call(flick_RStick)
    call(flick_RStick)
    call(flick_RStick)
}*/

combo Roulette {
    dStart = DOWN
    dMid   = dEnd
    dEnd   = UP
    call(RStick_HalfCircle)
}
combo FakeAndGo {
    dMid = DOWN
    call(RStick_HalfCircle)
}
// 4 START SKILL
/*combo FakeShotBallHop {
    call(FakeShotStop);
    set_val(XB1_RS, 100);
    wait(200)
}*/

combo Rainbow {
    dEnd = DOWN
    call(flick_RStick)
    dEnd = UP
    call(flick_RStick)
    call(flick_RStick)
}
/*combo AdvRainbow {
    dEnd = DOWN
    call(flick_RStick)
    dEnd = UP
    calc_relative_xy(UP);
    set_val(XB1_RX, x);
    set_val(XB1_RY, y);
    wait(600);
    set_val(XB1_RX, 0);
    set_val(XB1_RY, 0);
    wait(30);
    call(flick_RStick)
}*/

combo Spin {
    if (dEnd == RIGHT)  dEnd = DOWN_RIGHT
    else                dEnd = DOWN_LEFT
    call(flick_RStick)
    call(flick_RStick)
}
combo StopAndTurn {
    dEnd = UP
    call(flick_RStick)
    dEnd = dTemp
    call(flick_RStick)
}
combo RonaldoChop {
    // press RT (sprint button) to do
    // a 90 degree fakeshot while running
    calc_relative_xy(dEnd);
    set_val(XB1_LX, x)
    set_val(XB1_LY, y)
    set_val(XB1_LT, 100);
    set_val(XB1_B, 100);
    wait(100);
 
    set_val(XB1_LX, x)
    set_val(XB1_LY, y)
    set_val(XB1_LT, 100);
    set_val(XB1_A, 100);
    set_val(XB1_B, 100);
    wait(50);
 
    set_val(XB1_LX, x)
    set_val(XB1_LY, y)
    set_val(XB1_LT, 100);
    set_val(XB1_A, 100);
    set_val(XB1_B, 0);
    wait(100);
    set_val(XB1_LX, x)
    set_val(XB1_LY, y)
    set_val(XB1_LT, 100);
    set_val(XB1_A, 0);
    wait(100);
}
/*combo ScoopTurn {
    // not the best one but seems to work. 80%
    // if you have a better one share it :D
    // 45 degree cut/turn
 //   if (dEnd == RIGHT) dEnd = UP_RIGHT;
 //   if (dEnd == LEFT) dEnd = UP_LEFT;
    // little hack to slow player's speed
    set_val(XB1_LT, 100);
    wait(400);
    calc_relative_xy(dEnd);
    set_val(XB1_LX, x)
    set_val(XB1_LY, y)
    set_val(XB1_B, 100);
 
    set_val(XB1_LT, 100);
    wait(100);
 
    set_val(XB1_LX, x)
    set_val(XB1_LY, y)
    set_val(XB1_A, 100);
    set_val(XB1_B, 100);
 
    set_val(XB1_LT, 100);
    wait(100);
 
    set_val(XB1_LX, x)
    set_val(XB1_LY, y)
    set_val(XB1_A, 100);
    set_val(XB1_B, 0);
 
    set_val(XB1_LT, 100);
    wait(100);
    set_val(XB1_LX, x)
    set_val(XB1_LY, y)
    set_val(XB1_A, 0);
    set_val(XB1_LT, 100);
    wait(100);
    // little hack to slow players speed and to avoid ronaldochop animation
    set_val(XB1_LT, 100);
    wait(400);
}
// 5 START SKILL
combo HocusPocusElastico {
    calc_relative_xy(DOWN)
    set_val(XB1_RX, x)
    set_val(XB1_RY, y)
    wait(FlickTime)
 
    dMid = DOWN
    dEnd = dTemp;
    call(RStick_HalfCircle)
}*/

combo BallRollFlick {
    dEnd = dStart
    call(BallRoll)
    dEnd = dTemp
 
    // change dEnd to UP to flick the ball to the front
//    if (mode == 13) dEnd = UP
    call(move_RStick)
}
combo ElasticoChop {
    dEnd = DOWN
    call(flick_RStick)
    dEnd = dTemp
    call(flick_RStick)
}
combo BolasieFlick {
    set_val(XB1_RB, 100);
    calc_relative_xy(UP);
    set_val(XB1_RX, x);
    set_val(XB1_RY, y);
    wait(80);
    set_val(XB1_RB, 100);
    set_val(XB1_RX, 0);
    set_val(XB1_RY, 0);
    wait(50);
 
    set_val(XB1_RB, 100);
    calc_relative_xy(dEnd);
    set_val(XB1_RX, x);
    set_val(XB1_RY, y);
    wait(80);
}
function ProcessCombos(fromSide, toSide) {
    if (mode) {
 
        // dEnd = side for skill execution
        // dTemp =  copy of dEnd
        // dStart = opposite side
        // for example
        // if dEnd = RIGHT then dStart = LEFT
        // if dEnd = LEFT then dStart = RIGHT       
 
        dStart = fromSide;
        dEnd   = toSide;
        dTemp  = toSide;
 
             if (mode == 1) combo_run(BallRoll)
        else if (mode == 2) combo_run(BodyFeintCut)
        else if (mode == 3) combo_run(ReversoStepOverCut)
        else if (mode == 4) combo_run(HeelFlick2)
        else if (mode == 5) combo_run(HeelFlick)
        else if (mode == 6) combo_run(FakeAndGo)
        else if (mode == 7) combo_run(Roulette)
        else if (mode == 8) combo_run(Rainbow)
        else if (mode == 9) combo_run(StopAndTurn)
        else if (mode == 10) combo_run(Spin)
        else if (mode == 11) combo_run(RonaldoChop)
        else if (mode == 12) combo_run(BallRollFlick)
        else if (mode == 13) combo_run(ElasticoChop)
        else if (mode == 14) combo_run(BolasieFlick)
 
/*        else if (mode == 1) combo_run(KnockOn)
        else if (mode == 3) combo_run(StepOverCut)
        else if (mode == 6) combo_run(FlickUP)
        else if (mode == 2) combo_run(FakeShotStop)
        else if (mode == 5) combo_run(FakeShotBallHop)
        else if (mode == 9) combo_run(AdvRainbow)
        else if (mode == 11) combo_run(ScoopTurn)
        else if (mode == 13) combo_run(HocusPocusElastico)
*/

 
    }
}
function calc_relative_xy(d) {
    if(get_val(XB1_LX) >= 50) x = 100;
    else if(get_val(XB1_LX) <= -50) x = -100;
    else x = 0;
    if(get_val(XB1_LY) >= 50) y = 100;
    else if(get_val(XB1_LY) <= -50) y = -100;
    else y = 0;
 
    set_val(TRACE_1, x);
    set_val(TRACE_2, y);
    if(x != 0 || y != 0) {
        p = 0; while(p < 8) {
            if(dchar(p) == x && dchar(8 + p) == y) {
                break;
            } p = p + 1;
        }
        p = p + d;
        if(p >= 8) p = p - 8;
        x = dchar(p);
        y = dchar(8 + p);
    }
    return;
}
function dbl_clicked(button) {
    if (dblclick_timer) {
        dblclick_msecs = dblclick_msecs + get_rtime();
        if ( dblclick_msecs > 500 ) {
            dblclick_count = 0;
            dblclick_msecs = 0;
            dblclick_timer = FALSE;
        }
    }
    if (event_release(button) && get_ptime(button) < 150) {
        if (dblclick_count == 0) {
            dblclick_timer = TRUE;
        } else if (dblclick_count == 1) {
            dblclick_count = 0;
            return 1;
        }
        dblclick_count = dblclick_count + 1;       
    }
}