Menu

GPC Script Example

 
      The following script code makes use of majority of GPC's scripting features. This script was made to use the Frag FX mouse controller on PS3, to adjust the mouse sensitivity to be as close as playing on PC and to add a couple of extra features like rapidfire, bunny hop, quick scope, etc...
 
/* =====================================================================
* BATTLEFIELD 3 - FRAG FX Script
*
* System:      PS3
* Controller:  Frag FX v1
* Featuring:
*  - Class Specific Rapidfire
*  - Auto Spot
*  - Bunny Hop
*  - Force Sprint
*  - Quick Scope
*  - Gadget 1 Shortcut
*  - Gadget 2 Shortcut
**/
 
/* ---------------------------------------------------------------------
*  DEFINES
**/
define MENU         = PS3_START;
define SPOT         = PS3_SELECT;
define SCOPE        = PS3_L1;
define GRENADE      = PS3_L2;
define CROUCH       = PS3_L3;
define FIRE         = PS3_R1;
define JUMP         = PS3_R2;
define SPRINT_HOLDB = PS3_R3;
define SIDEARM      = PS3_TRIANGLE;
define INTERACT     = PS3_CIRCLE;
define MELEE        = PS3_CROSS;
define RELOAD       = PS3_SQUARE;
define GADGET2      = PS3_RIGHT;
define GADGET1      = PS3_LEFT;
define FIREMODE     = PS3_DOWN;
define LIGHT        = PS3_UP;
 
define MAX_AIM      = 80;
define QUICK_SCOPE  = 300;
 
/* ---------------------------------------------------------------------
*  DATA SEGMENT
**/
data (
// HOL  REL  HOS  RES -------------------------------------------------
      4,   4,   4,   4,     // 0: Optimized Rapidfire
    20,   8,   416,     // 1: Support
    2010,   412,     // 2: G36C + Foregrip             (Engineer)
    20,   8,   4,   8,     // 3:                             (Any)
    2014,   414,     // 4: L86A2                       (Support)
      4,   4,   418      // 5: AN94
);
 
define AUTO_SHOT = 0;
 
/* ---------------------------------------------------------------------
*  REMAPPINGS
**/
remap PS3_R3       -> PS3_L3;
remap PS3_L3       -> PS3_R3;
remap PS3_R2       -> PS3_CROSS;
remap PS3_CROSS    -> PS3_R2;
 
/* ---------------------------------------------------------------------
*  VARIABLES
**/
int mfspeed, autospot, bunnyhop_lock, tap;
int asHOL, asREL, asHOS, asRES;
int ashold, asrelease;
int autoShotMode = AUTO_SHOT;
 
/* ---------------------------------------------------------------------
*  INITIALIZATION
**/
init {
    LoadAutoShot(autoShotMode * 4);
    ashold = asHOL;
    asrelease = asREL;
}
 
/* ---------------------------------------------------------------------
*  MAIN SCRIPT
**/
main {
    /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    *  FragFX Mouse Settings
    *
    *  Frag FX:            Minimum
    *  Game:
    *    DeadZone:         Square 18 18
    *    Sensitivity:      Maximum
    **/
    if(get_val(PS3_R3) && get_val(PS3_TRIANGLE)) {
        set_val(PS3_R3, 0);
        set_val(PS3_TRIANGLE, 0);
        swap(PS3_RX, PS3_LX);
        swap(PS3_RY, PS3_LY);
        mfspeed = TRUE;
    } else {
        if(get_val(PS3_RX) < 0) set_val(PS3_RX, get_val(PS3_RX) + 23);
        if(get_val(PS3_RX) > 0) set_val(PS3_RX, get_val(PS3_RX) - 24);
        if(get_val(PS3_RY) < 0) set_val(PS3_RY, get_val(PS3_RY) + 23);
        if(get_val(PS3_RY) > 0) set_val(PS3_RY, get_val(PS3_RY) - 24);
        if(!mfspeed) {
            if(get_val(PS3_L1)) {
                sensitivity(PS3_RX, NOT_USE, 68); // -2, 64
                sensitivity(PS3_RY, NOT_USE, 73); // -2, 70
            } else {
                sensitivity(PS3_RX, NOT_USE, 90);
                sensitivity(PS3_RY, NOT_USE, 95);
            }
            deadzone(PS3_RX, PS3_RY, 15, 15);
            if(get_val(PS3_RX) >  MAX_AIM) set_val(PS3_RX,  MAX_AIM);
            if(get_val(PS3_RX) < -MAX_AIM) set_val(PS3_RX, -MAX_AIM);
            if(get_val(PS3_RY) >  MAX_AIM) set_val(PS3_RY,  MAX_AIM);
            if(get_val(PS3_RY) < -MAX_AIM) set_val(PS3_RY, -MAX_AIM);
        } else {
            // Vehicicles
            sensitivity(PS3_RX, NOT_USE, 115);
            sensitivity(PS3_RY, NOT_USE, 115);
            deadzone(PS3_RX, PS3_RY, 17, 17);
        }
    } if(event_press(PS3_CIRCLE)) mfspeed = FALSE;
 
    /* Change Primary Weapon Configuration */
    if(event_press(PS3_PS)) {
        autoShotMode = autoShotMode + 1;
        if(autoShotMode > 5) autoShotMode = 0;
        LoadAutoShot(autoShotMode * 4);
        if(get_val(PS3_L1)) { ashold = asHOS; asrelease = asRES; }
        else { ashold = asHOL; asrelease = asREL; }
    } block(PS3_PS, 1000);
    set_val(TRACE_6, autoShotMode);
 
    /* Auto Fire */
    if(event_press(PS3_L1)) { ashold = asHOS; asrelease = asRES; }
    else if(event_release(PS3_L1)) { ashold = asHOL; asrelease = asREL; }
    if(get_val(PS3_R1) && !mfspeed
    //&& get_val(PS3_R1) < 100
    ) {
        combo_run(AutoFire);
    } else {
        combo_stop(AutoFire);
        if(get_val(PS3_R1)) set_val(PS3_R1, 100);
    }
 
    /*  Auto Spot  */
    if(event_press(PS3_PS) || event_press(PS3_SELECT)) {
        autospot = FALSE;
    } else if(event_press(PS3_R3)) autospot = TRUE;
    if(autospot) combo_run(AutoSpot);
    else combo_stop(AutoSpot);
 
    /* Bunny Hop */
    if(bunnyhop_lock) {
        if(get_val(PS3_LY) > -75) bunnyhop_lock = FALSE;
        else {
            combo_run(EasySprint);
            combo_run(BunnyHop);
            set_val(JUMP, 0);
        }
    } else if(get_val(JUMP) && get_val(SPRINT_HOLDB)) {
        bunnyhop_lock = TRUE;
    } else combo_stop(BunnyHop);
 
    /* Force Sprint */
    if(event_press(SPRINT_HOLDB) && !combo_running(BunnyHop)) {
        combo_run(ForceSprint);
    }
 
    /* Hold Breath */
    if(get_val(SCOPE) == 100) {
        set_val(SPRINT_HOLDB, 100);
    }
 
    /* QuickScope */
    if(event_release(SCOPE) && get_ptime(SCOPE) < 140) {
        combo_run(QuickScope);
    }
 
    /* Gadget 1 Shortcut */
    if(event_press(PS3_L1) && get_val(PS3_R3)) {
        tap = GADGET1;
        combo_run(Tap);
    } else
 
    /* Gadget 2 Shortcut */
    if(event_release(PS3_START)) {
        if(get_ptime(PS3_START) < 1000) {
            tap = GADGET2;
            combo_run(Tap);
        } else autospot = FALSE;
    } block(PS3_START, 1000);
}
 
/* ---------------------------------------------------------------------
*  COMBOS
**/
combo Tap {
    set_val(tap, 100);
    wait(60);
}
 
combo AutoFire {
    set_val(FIRE, 100);
    wait(ashold);
    set_val(FIRE, 0);
    wait(asrelease);
    set_val(FIRE, 0);
}
 
combo AutoFireMAX {
    set_val(FIRE, 100);
    wait(40);
    set_val(FIRE, 0);
    wait(20);
    set_val(FIRE, 0);
}
 
combo QuickScope {
    set_val(FIRE, 0);
    set_val(SCOPE, 100);
    set_val(SPRINT_HOLDB, 100);
    wait(QUICK_SCOPE);
    set_val(FIRE, 100);
    set_val(SCOPE, 100);
    set_val(SPRINT_HOLDB, 100);
    wait(40);
}
 
combo AutoSpot {
    set_val(SPOT, 100);
    wait(40);
    set_val(SPOT, 0);
    wait(960);
}
 
combo ForceSprint {
    set_val(PS3_LY, 0);
    wait(60);
}
 
combo EasySprint {
    set_val(SPRINT_HOLDB, 100);
    wait(100); wait(100);
}
 
combo BunnyHop {
    set_val(JUMP, 100);
    wait(60); wait(1000);
}
 
/* ---------------------------------------------------------------------
*  FUNCTIONS
**/
function LoadAutoShot(idx) {
    asHOL = dbyte(idx)   * 10;
    asREL = dbyte(idx+1) * 10;
    asHOS = dbyte(idx+2) * 10;
    asRES = dbyte(idx+3) * 10;
}