Can someone tell me why my script is crashing my T2?

GPC2 script programming for Titan Two. Code examples, questions, requests.

Can someone tell me why my script is crashing my T2?

Postby Munkee915 » Tue Jun 19, 2018 1:05 am

Took a crack at putting together my own Destiny 2 script but must have something wrong somewhere. T2 works fine with no script loaded (XB1 elite controller, DS4 host controller over BT) but when using my script it seems to crash and disconnect my controller after about 15-20 min. I tried not to get too complicated with it at first and then just build on it as I wanted to add features. I'm hoping someone can review my code and maybe point out whats causing the crash.

Current features:
Auto sprint (borrowed from Rabid Taco's script)
Turbo melee
Easy Revive
Button remapping
Code: Select all
#pragma METAINFO("Destiny 2", 1, 0, "Munkee915")
 
#include "Auto Sprint.gph"
#include "Turbo Melee.gph"
#include "Easy Revive.gph"
#include "Remap.gph"
 
/************************    Interactive Configuration******************************************************************
<cfgdesc>
 
[General]
group       = true
shortdesc   = <br><b>Enable Easy Sprint</b>
byteoffset    = 5
bitsize        = 1
bitoffset    = 0
control        = checkbox
default        = 1
item        = Enable Easy Sprint
 
[Easy Sprint Type]
group       = true
shortdesc    = <br><b>Select Easy Sprint Type</b>
byteoffset    = 6
bitsize        = 8
control        = radiobox
default        = 1
item        = Fully Automatic
item        = Pressure Sensative
 
[Easy Sprint Pressure]
group       = true
shortdesc    = <br><b>Select pressure applied before easy sprint is applied:</b>
byteoffset    = 7
bitsize        = 32
control        = spinboxf
default        = 99000000
minimum        = 0
maximum        = 100000000
step        = 500000
 
[Easy Revive]
group        = true
byteoffset    = 3
bitsize        = 1
bitoffset    = 0
control        = checkbox
default        = 1
item            = Hold SQUARE for 1 sec will keep holding down square for 10 seconds.
shortdesc    = <br><b>Easy revive</b></b>
 
[Turbo Melee]
group        = true
byteoffset    = 4
bitsize        = 1
bitoffset    = 0
control        = checkbox
default        = 1
item        = Hold melee button for rapid melee.
shortdesc    = <br><b>Turbo Melee</b></b>
 
[Remap Stick Buttons]
shortdesc   = Remap L3/LS and R3/RS.<br>
collapsible = 1
 
[Remap L3/LS]
group       = true
shortdesc   = <br><b>L3/LS</b>
byteoffset    = 20
bitsize        = 8
control        = combobox
default        = 0
item        = None
item        = A/Cross
item        = B/Circle
item        = X/Square
item        = Y/Triangle
item        = LB
item        = RB
item        = LS
item        = RS
 
[Remap R3/RS]
group       = true
shortdesc   = <br><b>R3/RS</b>
byteoffset    = 21
bitsize        = 8
control        = combobox
default        = 0
item        = None
item        = A/Cross
item        = B/Circle
item        = X/Square
item        = Y/Triangle
item        = LB
item        = RB
item        = LS
item        = RS
 
[Remap Elite Paddles]
shortdesc   = Remap paddles on Elite controllers to game functions.  Paddles should first be mapped to nothing within Xbox controller app to avoid sending double signals.  <br>
collapsible = 1
 
[Remap Paddle 1]
group       = true
shortdesc   = <br><b>Upper Left Paddle</b>
byteoffset    = 22
bitsize        = 8
control        = combobox
default        = 0
item        = None
item        = A/Cross
item        = B/Circle
item        = X/Square
item        = Y/Triangle
item        = LB
item        = RB
item        = LS
item        = RS
 
[Remap Paddle 2]
group       = true
shortdesc   = <br><b>Lower Left Paddle</b>
byteoffset    = 23
bitsize        = 8
control        = combobox
default        = 0
item        = None
item        = A/Cross
item        = B/Circle
item        = X/Square
item        = Y/Triangle
item        = LB
item        = RB
item        = LS
item        = RS
 
[Remap Paddle 3]
group       = true
shortdesc   = <br><b>Upper Right Paddle</b>
byteoffset    = 24
bitsize        = 8
control        = combobox
default        = 0
item        = None
item        = A/Cross
item        = B/Circle
item        = X/Square
item        = Y/Triangle
item        = LB
item        = RB
item        = LS
item        = RS
 
 
[Remap Paddle 4]
group       = true
shortdesc   = <br><b>Lower Right Paddle</b>
byteoffset    = 25
bitsize        = 8
control        = combobox
default        = 0
item        = None
item        = A/Cross
item        = B/Circle
item        = X/Square
item        = Y/Triangle
item        = LB
item        = RB
item        = LS
item        = RS
 
</cfgdesc>
***********************************************************************************************************************/

 
init {
    pmem_load();
 
    port_inhibit_ffb(PORT_USB_B);
    port_inhibit_ffb(PORT_BT_A);
    port_inhibit_ffb(PORT_BT_B);
}
 
main {
 
}
 
// rumble once
combo Rumble {
    ffb_set(FFB_1, 100.0, 140);
    wait(200);
    ffb_set(FFB_1, 0.0, 140);
    wait(200);
}
 
// rumble twice
combo RumbleTwo {
  call(Rumble);
  call(Rumble);
}
 

Code: Select all
bool AutoSprintEnabled;
 
uint8 AutoSprintType, AutoSprintFlag, SparrowRide;
 
fix32 AutoSprintPressure;
 
init {
    pmem_load();
 
// -------------------------------------------------------------------------- //
// |                    Read Auto Sprint Settings                           | //
// -------------------------------------------------------------------------- //
    AutoSprintEnabled = pmem_read(5) & 0b1;
    AutoSprintType = pmem_read(6);
    pmem_read(7, &AutoSprintPressure);
 
    if(AutoSprintEnabled == TRUE) AutoSprintFlag = TRUE;
// ========================================================================== //
}
 
main {
// -------------------------------------------------------------------------- //
// |                     Auto Sprint Based On Selection                     | //
// |            Type 0 = Always On, Type 1 = Pressure Sensative             | //
// -------------------------------------------------------------------------- //
    if(AutoSprintEnabled == TRUE && AutoSprintType == 0 && AutoSprintFlag == TRUE) {
        combo_run(EasySprint);
    } else if(AutoSprintEnabled == TRUE && AutoSprintType == 1 && AutoSprintFlag == TRUE) {
        if(abs(get_val(STICK_2_Y)) >= AutoSprintPressure) combo_run(EasySprint);
    } else combo_stop(EasySprint);
// ========================================================================== //
 
 
// -------------------------------------------------------------------------- //
// |             Toggle Auto Sprint In Game - Double Tap L3                 | //
// -------------------------------------------------------------------------- //
    if(event_active(BUTTON_9) && time_release(BUTTON_9) < 250) {
        ToggleAutoSprint();
        combo_run(RumbleTwo);
    }
// ========================================================================== //
 
 
// -------------------------------------------------------------------------- //
// |                 Auto Sprint Cancel with ADS or Firing                  | //
// -------------------------------------------------------------------------- //
    if(get_actual(BUTTON_5) > 0.0 || get_actual(BUTTON_8) > 0.0) {
        AutoSprintFlag = FALSE;
        combo_stop(EasySprint);
    } else if(event_release(BUTTON_5) || event_release(BUTTON_8)) AutoSprintFlag = TRUE;
// ========================================================================== //
 
 
// -------------------------------------------------------------------------- //
// |                   Sprint Cancelation When On Sparrow                   | //
// -------------------------------------------------------------------------- //
    if((getLastPressed() == BUTTON_18 || getLastPressed() == BUTTON_2) && get_val(BUTTON_17)) {
        SparrowRide = TRUE;
        AutoSprintFlag = FALSE;
    }
 
    if (SparrowRide == TRUE && event_active(BUTTON_17)) {
        SparrowRide = FALSE;
        AutoSprintFlag = TRUE;
    }
 
    if(SparrowRide == TRUE) AutoSprintFlag = FALSE;
    else if(SparrowRide == FALSE && time_release(BUTTON_17) >= 1750) AutoSprintFlag = TRUE;
 
 
// ========================================================================== //
 
 
// -------------------------------------------------------------------------- //
// |                     Sprint Cancelation On Reload                       | //
// -------------------------------------------------------------------------- //
    if(get_val(BUTTON_17) && SparrowRide == FALSE) {
        AutoSprintFlag = FALSE;
        combo_stop(EasySprint);
        combo_run(rapidReloadDelay);
    }
// ========================================================================== //
}
 
combo EasySprint{
    set_val(BUTTON_9, 100.0);
    wait(200);
    set_val(BUTTON_9, 0.0);
    wait(800);
}
 
combo rapidReloadDelay {
    wait(2500);
    AutoSprintFlag = TRUE;
}
 
void ToggleAutoSprint() {
 
    if(AutoSprintEnabled == TRUE) {
        AutoSprintEnabled = FALSE;
        pmem_write(5, 0);
    } else if(AutoSprintEnabled == FALSE){
        AutoSprintEnabled = TRUE;
        pmem_write(5, 255);
    }
 
    pmem_save();
}
 
uint8 getLastPressed() {
    uint8 X;
    uint8 LastPressed = BUTTON_1;
 
    for (X = BUTTON_2; X <= BUTTON_21; ++X) {
        if(time_release(X) < time_release(LastPressed)) {
            LastPressed = X;
        }
    }
 
    return LastPressed;
}

Code: Select all
bool  EasyReviveEnabled= TRUE;
 
init {
    pmem_load();
 
// -------------------------------------------------------------------------- //
// |                    Read Easy Revive Settings                           | //
// -------------------------------------------------------------------------- //
    EasyReviveEnabled = pmem_read(3) & 0b1;
// ========================================================================== //
}
 
main {
// -------------------------------------------------------------------------- //
// |                     Easy Revive                                        | //
// -------------------------------------------------------------------------- //
    if (event_active(BUTTON_17) ) combo_stop(cmbRevive);
    if (EasyReviveEnabled && get_val(BUTTON_17) && time_active(BUTTON_17) > 500 ) {
        combo_run(cmbRevive);
    }
// ========================================================================== //
 
 
// -------------------------------------------------------------------------- //
// |             Toggle Easy Revive In Game - Double tap SQUARE                | //
// -------------------------------------------------------------------------- //
    if(event_active(BUTTON_17) && time_release(BUTTON_17) < 250) {
        ToggleEasyRevive();
        combo_run(RumbleTwo);
    }
// ========================================================================== //
 
}
 
combo cmbRevive {
    set_val(BUTTON_17,100);
    wait(10000);
}
 
void ToggleEasyRevive() {
 
    if(EasyReviveEnabled == TRUE) {
        EasyReviveEnabled = FALSE;
        pmem_write(3, 0);
    } else if(EasyReviveEnabled == FALSE){
        EasyReviveEnabled = TRUE;
        pmem_write(3, 255);
    }
 
    pmem_save();
}

Code: Select all
bool TurboMeleeEnabled;
 
init {
    pmem_load();
 
// -------------------------------------------------------------------------- //
// |                    Read Turbo Melee Settings                           | //
// -------------------------------------------------------------------------- //
    TurboMeleeEnabled = pmem_read(4) & 0b1;
// ========================================================================== //
}
 
main {
// -------------------------------------------------------------------------- //
// |                     Turbo Melee                                        | //
// -------------------------------------------------------------------------- //
    if(TurboMeleeEnabled == TRUE && get_actual(BUTTON_4)) {
        combo_run(cmbTurboMelee);
    } else combo_stop(cmbTurboMelee);
// ========================================================================== //
 
 
// -------------------------------------------------------------------------- //
// |             Toggle Turbo Melee In Game - Double Tap R2                    | //
// -------------------------------------------------------------------------- //
    if(event_active(BUTTON_4) && time_release(BUTTON_4) < 250) {
        ToggleTurboMelee();
        combo_run(RumbleTwo);
    }
// ========================================================================== //
 
}
 
combo cmbTurboMelee {
    set_val(BUTTON_4,100);
    wait(200);
    set_val(BUTTON_4,0);
    wait(200);
}
 
void ToggleTurboMelee() {
 
    if(TurboMeleeEnabled == TRUE) {
        TurboMeleeEnabled = FALSE;
        pmem_write(4, 0);
    } else if(TurboMeleeEnabled == FALSE){
        TurboMeleeEnabled = TRUE;
        pmem_write(4, 255);
    }
 
    pmem_save();
}

Code: Select all
#define REMAP1         BUTTON_16
#define REMAP2         BUTTON_15
#define REMAP3         BUTTON_17
#define REMAP4         BUTTON_14
#define REMAP5         BUTTON_7
#define REMAP6         BUTTON_4
#define REMAP7         BUTTON_9
#define REMAP8         BUTTON_6
 
uint8 REMAPP1, REMAPP2, REMAPP3, REMAPP4;
uint8 REMAPL3, REMAPR3;
 
init {
    pmem_load();
 
    REMAPP1 = pmem_read(22);
    REMAPP2 = pmem_read(23);
    REMAPP3 = pmem_read(24);
    REMAPP4 = pmem_read(25);
    REMAPL3 = pmem_read(20);
    REMAPR3 = pmem_read(21);
 
}
main {
//Remap L3/LS   
    if(get_actual(BUTTON_9) && (REMAPL3 == 1)) {
            set_val(BUTTON_9, 0);
            set_val(REMAP1, 100);
        }
    if(get_actual(BUTTON_9) && (REMAPL3 == 2)) {
            set_val(BUTTON_9, 0);
            set_val(REMAP2, 100);
        }
    if(get_actual(BUTTON_9) && (REMAPL3 == 3)) {
            set_val(BUTTON_9, 0);
            set_val(REMAP3, 100);
        }
    if(get_actual(BUTTON_9) && (REMAPL3 == 4)) {
            set_val(BUTTON_9, 0);
            set_val(REMAP4, 100);
        }
    if(get_actual(BUTTON_9) && (REMAPL3 == 5)) {
            set_val(BUTTON_9, 0);
            set_val(REMAP5, 100);
        }
    if(get_actual(BUTTON_9) && (REMAPL3 == 6)) {
            set_val(BUTTON_9, 0);
            set_val(REMAP6, 100);
        }
    if(get_actual(BUTTON_9) && (REMAPL3 == 7)) {
            set_val(BUTTON_9, 0);
            set_val(REMAP7, 100);
        }
    if(get_actual(BUTTON_9) && (REMAPL3 == 8)) {
            set_val(BUTTON_9, 0);
            set_val(REMAP8, 100);
        }
//Remap R3/RS       
    if(get_actual(BUTTON_6) && (REMAPP2 == 1)) {
            set_val(BUTTON_6, 0);
            set_val(REMAP1, 100);
        }
    if(get_actual(BUTTON_6) && (REMAPP2 == 2)) {
            set_val(BUTTON_6, 0);
            set_val(REMAP2, 100);
        }
    if(get_actual(BUTTON_6) && (REMAPP2 == 3)) {
            set_val(BUTTON_6, 0);
            set_val(REMAP3, 100);
        }
    if(get_actual(BUTTON_6) && (REMAPP2 == 4)) {
            set_val(BUTTON_6, 0);
            set_val(REMAP4, 100);
        }
    if(get_actual(BUTTON_6) && (REMAPP2 == 5)) {
            set_val(BUTTON_6, 0);
            set_val(REMAP5, 100);
        }
    if(get_actual(BUTTON_6) && (REMAPP2 == 6)) {
            set_val(BUTTON_6, 0);
            set_val(REMAP6, 100);
        }
    if(get_actual(BUTTON_6) && (REMAPP2 == 7)) {
            set_val(BUTTON_6, 0);
            set_val(REMAP7, 100);
        }
    if(get_actual(BUTTON_6) && (REMAPP2 == 8)) {
            set_val(BUTTON_6, 0);
            set_val(REMAP8, 100);
        }
 
// Lower left paddle
    if(get_actual(BUTTON_21) && (REMAPP2 == 1)) {
            set_val(BUTTON_21, 0);
            set_val(REMAP1, 100);
        }
    if(get_actual(BUTTON_21) && (REMAPP2 == 2)) {
            set_val(BUTTON_21, 0);
            set_val(REMAP2, 100);
        }
    if(get_actual(BUTTON_21) && (REMAPP2 == 3)) {
            set_val(BUTTON_21, 0);
            set_val(REMAP3, 100);
        }
    if(get_actual(BUTTON_21) && (REMAPP2 == 4)) {
            set_val(BUTTON_21, 0);
            set_val(REMAP4, 100);
        }
    if(get_actual(BUTTON_21) && (REMAPP2 == 5)) {
            set_val(BUTTON_21, 0);
            set_val(REMAP5, 100);
        }
    if(get_actual(BUTTON_21) && (REMAPP2 == 6)) {
            set_val(BUTTON_21, 0);
            set_val(REMAP6, 100);
        }
    if(get_actual(BUTTON_21) && (REMAPP2 == 7)) {
            set_val(BUTTON_21, 0);
            set_val(REMAP7, 100);
        }
    if(get_actual(BUTTON_21) && (REMAPP2 == 8)) {
            set_val(BUTTON_21, 0);
            set_val(REMAP8, 100);
        }
// Upper right paddle
    if(get_actual(BUTTON_18) && (REMAPP3 == 1)) {
            set_val(BUTTON_18, 0);
            set_val(REMAP1, 100);
        }
    if(get_actual(BUTTON_18) && (REMAPP3 == 2)) {
            set_val(BUTTON_18, 0);
            set_val(REMAP2, 100);
        }
    if(get_actual(BUTTON_18) && (REMAPP3 == 3)) {
            set_val(BUTTON_18, 0);
            set_val(REMAP3, 100);
        }
    if(get_actual(BUTTON_18) && (REMAPP3 == 4)) {
            set_val(BUTTON_18, 0);
            set_val(REMAP4, 100);
        }
    if(get_actual(BUTTON_18) && (REMAPP3 == 5)) {
            set_val(BUTTON_18, 0);
            set_val(REMAP5, 100);
        }
    if(get_actual(BUTTON_18) && (REMAPP3 == 6)) {
            set_val(BUTTON_18, 0);
            set_val(REMAP6, 100);
        }
    if(get_actual(BUTTON_18) && (REMAPP3 == 7)) {
            set_val(BUTTON_18, 0);
            set_val(REMAP7, 100);
        }
    if(get_actual(BUTTON_18) && (REMAPP3 == 8)) {
            set_val(BUTTON_18, 0);
            set_val(REMAP8, 100);
        }
//Lower right paddle
    if(get_actual(BUTTON_19) && (REMAPP4 == 1)) {
            set_val(BUTTON_19, 0);
            set_val(REMAP1, 100);
        }
    if(get_actual(BUTTON_19) && (REMAPP4 == 2)) {
            set_val(BUTTON_19, 0);
            set_val(REMAP2, 100);
        }
    if(get_actual(BUTTON_19) && (REMAPP4 == 3)) {
            set_val(BUTTON_19, 0);
            set_val(REMAP3, 100);
        }
    if(get_actual(BUTTON_19) && (REMAPP4 == 4)) {
            set_val(BUTTON_19, 0);
            set_val(REMAP4, 100);
        }
    if(get_actual(BUTTON_19) && (REMAPP4 == 5)) {
            set_val(BUTTON_19, 0);
            set_val(REMAP5, 100);
        }
    if(get_actual(BUTTON_19) && (REMAPP4 == 6)) {
            set_val(BUTTON_19, 0);
            set_val(REMAP6, 100);
        }
    if(get_actual(BUTTON_19) && (REMAPP4 == 7)) {
            set_val(BUTTON_19, 0);
            set_val(REMAP7, 100);
        }
    if(get_actual(BUTTON_19) && (REMAPP4 == 8)) {
            set_val(BUTTON_19, 0);
            set_val(REMAP8, 100);
        }
//Upper left paddle
    if(get_actual(BUTTON_20) && (REMAPP1 == 1)) {
            set_val(BUTTON_20, 0);
            set_val(REMAP1, 100);
        }
    if(get_actual(BUTTON_20) && (REMAPP1 == 2)) {
            set_val(BUTTON_20, 0);
            set_val(REMAP2, 100);
        }
    if(get_actual(BUTTON_20) && (REMAPP1 == 3)) {
            set_val(BUTTON_20, 0);
            set_val(REMAP3, 100);
        }
    if(get_actual(BUTTON_20) && (REMAPP1 == 4)) {
            set_val(BUTTON_20, 0);
            set_val(REMAP4, 100);
        }
    if(get_actual(BUTTON_20) && (REMAPP1 == 5)) {
            set_val(BUTTON_20, 0);
            set_val(REMAP5, 100);
        }
    if(get_actual(BUTTON_20) && (REMAPP1 == 6)) {
            set_val(BUTTON_20, 0);
            set_val(REMAP6, 100);
        }
    if(get_actual(BUTTON_20) && (REMAPP1 == 7)) {
            set_val(BUTTON_20, 0);
            set_val(REMAP7, 100);
        }
    if(get_actual(BUTTON_20) && (REMAPP1 == 8)) {
            set_val(BUTTON_20, 0);
            set_val(REMAP8, 100);
        }
    }
User avatar
Munkee915
Master Sergeant
Master Sergeant
 
Posts: 39
Joined: Sun Mar 26, 2017 3:26 am

Re: Can someone tell me why my script is crashing my T2?

Postby J2Kbr » Tue Jun 19, 2018 2:22 pm

I believe the issue is here:
Code: Select all
// rumble once
combo Rumble {
    ffb_set(FFB_1, 100.0, 140);
    wait(200);
    ffb_set(FFB_1, 0.0, 140);
    wait(200);
}

Try change to:
Code: Select all
// rumble once
combo Rumble {
    ffb_set(FFB_1, 100.0, 140);
    wait(0)wait(200);
    ffb_set(FFB_1, 0.0, 140);
    wait(0)wait(200);
}
ConsoleTuner Support Team
User avatar
J2Kbr
General of the Army
General of the Army
 
Posts: 20323
Joined: Tue Mar 18, 2014 1:39 pm


Return to GPC2 Script Programming

Who is online

Users browsing this forum: AZOV_ops and 125 guests