Compatible controllers and back paddles question.

Titan Two general support. Questions, firmware update, feature request.

Compatible controllers and back paddles question.

Postby Longfellow78 » Wed Mar 25, 2020 8:59 am

Hi,
I am using a very complex Destiny 2 script that I have created over several years, writing a lot, and copying a lot from elsewhere.

In order to have persistent anti-recoil for different weapons the person who wrote that part of the script (not me) used 3 of the Xbox paddle channels to record the set/record levels of recoil. Which means they can't be used for mapping buttons.

On home made controllers, back buttons are simply directly wired to the face buttons, but with the elite, they are actually totally seperate buttons, which can be independently remapped - normally awesome, not so on my script (I only play Destiny - nothing else).

So since I added this part of the script in, it means I am unable to use my Xbox Elite v1 back paddles, whereas I could on my (now broken) home made xbox one controller with back buttons.

Sooo, my question is, (apart from using a strike pack plug in) can anyone please advise me on which controllers with back buttons, actually use the original channels, and not the xbox elite style additional 4 channels, so I can use my back buttons for destiny? Razer Raiju Tournament would be nice? Is it working yet? Scuf?

On a more technical level, I wonder if there is a way of doing my anti-recoil without using these 4 channels, as then I could use my elite controller.

Thanks a lot, sorry for long winded post!

edit: my scipt is below if anyone is interested:
Code: Select all
 
#include <titanone.gph>
/*
----------------------------------------------------------------------------------------------------------------------------------------------------------------------
 
        - AntiRecoil Vertical and Horizontal on the fly for all three weapon slots
        - RapidFire toggle and speed adjustable on the fly for all 3 weapon profiles
        - Save edited values and RapidFire ON or OFF status of each profile
        - Hair Triggers
        - Auto Melee
        - ADS and hipfire sensitivity decrease - default 93, run 10 sens in game = 3-4 ADS - gives "Traction" for free
        - Left Bumper and LS swapped - use jumper profile for vastly increased jump control (can be disabled as no other dependencies)
        - Shotgun melee toggle on/off
        - HUNTERS ONLY Xbox B mapped tap to crouch, hold to dodge instead of double tap. DISABLE ON WARLOCK OR TITAN
        - EXPERIMENTAL DISABLED BY DEFAULT - Rapid pressing LT fires bottom free tether - sometimes causes accidental super firing, do not use yet.
 
----------------------------------------------------------------------------------------------------------------------------------------------------------------------
 
    Version: 1.0
    Platform: PC/Xbox
    Controller: Xbox/Xinput (have not tested for PS4, will probably work as well excluding xbox paddle function)
    Game: Destiny 2
    Author: Shrike & Noozbar (anti-recoil and rapidfire) & LexLost (Shotgun Melee)
 
----------------------------------------------------------------------------------------------------------------------------------------------------------------------
 
                                                                INSTRUCTIONS XBOX:
 
    Use JUMPER button setup and set in game sens to 10
 
 
    Color indications: 
      Primary weapon = color Blue (if RapidFire is enabled, LED should flash)
      Secondary weapon = color Green (if RapidFire is enabled, LED should flash)
      Power = color Red (if RapidFire is enabled, LED should flash)
 
 
    Switch between each profiles:
      * Tap Y to switch between Primary and Secondary
      * Hold Y to switch to Power (single tap to return to previous weapon)
      * Tap UP to resync colour between primary and secondary mode if gets out of sync (e.g. when loading in the game will start with primary weapon, so weapon colour should be blue.
 
      Edit AntiRecoil values:
        * Hold LT + Hold X to edit Antirecoil values
                -Tap DOWN to INCREASE Vertical Antirecoil (+5 each tap on DOWN) (min val = 0, max val = 100, comtroller rumble at min/max values)
                -Tap UP to decrease Vertical Antirecoil (-5 each tap on UP) (min val = 0, max val = 100, comtroller rumble at min/max values)
                -Tap RIGHT to compensate Horizontal Antirecoil to the right (+X each tap on RIGHT) (min val = -100, max val = 100, comtroller rumble at min/max values)
                -Tap LEFT to compensate Horizontal Antirecoil to the left (+X each tap on LEFT) (min val = -100, max val = 100, comtroller rumble at min/max values)
 
      RapidFire toggle ON/OFF for the current weapon
        * Hold LT + Hold D-Pad UP
            -Tap RT to enable or disable RapidFire for the current weapon
 
 
      Edit Rate of Fire values (only if RapidFire is enabled) :
        * Hold LT + B to edit Rate of Fire values
                -Tap UP to increase Rate of Fire (+1 each tap on UP) (min val = 0, max val = 25, comtroller rumble at min/max values)
                -Tap DOWN to decrease Rate of Fire (-1 each tap on DOWN) (min val = 0, max val = 25, comtroller rumble at min/max values)
 
      Save edited values and RapidFire ON or OFF status of each profile
        * Hold LT
                -Tap MENU (with rumble and flash)
 
    Hold LT and press D-pad Right to toggle shotgun/melee on or off (no rumble)
 
 
    Hold RS to auto melee (e.g. for Liar's handshake)
 
 
 
 
 
 
----------------------------------------------------------------------------------------------------------------------------------------------------------------------
*/

 
//Remap LS and RB for better jump control. Now the finisher move executed with LS and RB, NOT LB and RB
remap XB1_LS -> XB360_LB;
remap XB1_LB -> XB360_LS;
 
// PRIMARY WEAPON:
 
// ANTIRECOIL:
int AR_Primary = 0;             // Antirecoil Vertical
int ARH_Primary = 0;             // AntiRecoil Horizontal
 
// RAPIDFIRE:
int RF_Primary_onoff = FALSE;    // Set TRUE to enable RapidFire by default on Primary else set FALSE
int RoF_Primary = 5;            // Range: 1 to 25 RPS (Round/s)
 
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
// SECONDARY WEAPON:
 
// ANTIRECOIL:
int AR_Secondary = 0;             // Antirecoil Vertical
int ARH_Secondary = 0;             // AntiRecoil Horizontal
 
// RAPIDFIRE:
int RF_Secondary_onoff = FALSE;    // Set TRUE to enable RapidFire by default on Primary else set FALSE
int RoF_Secondary = 5;            // Range: 1 to 25 RPS (Round/s)
 
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
// Power:
 
// ANTIRECOIL:
int AR_Power = 0;             // Antirecoil Vertical
int ARH_Power = 0;             // AntiRecoil Horizontal
 
// RAPIDFIRE:
int RF_Power_onoff = FALSE;     // Set TRUE to enable RapidFire by default on Primary else set FALSE
int RoF_Power = 5;            // Range: 1 to 25 RPS (Round/s)
 
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
// AntiRecoil Vertical Release
int ARV_Release =25;    // Minimum value = 10 (this value is added to the AntiRecoil value of the current weapon)
 
// AntiRecoil Horizontal Release
int ARH_Release = 100;    // Minimum value = 10 (this value is added to the AntiRecoil value of the current weapon)
 
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
////////// Do not modify //////////
 
define Off       = 0;
define Blue      = 1;
define Red       = 2;
define Green     = 3;
define Pink      = 4;
define SkyBlue   = 5;
define Yellow    = 6;
define White     = 7;
define FIRE_BTN  = XB1_RT;                                                                           
define ADS_BTN   = XB1_LT; 
define RIGHT_STICK_X = XB1_RX;
define RIGHT_STICK_Y = XB1_RY;
define Shotgun_Melee = XB1_RIGHT //
define FIRE_BTN  = XB1_RT;
 
// ADS or HIPFIRE SENS
 
define SENS = 93;
 
 
data(
  0,0,0,0, //0. Off
  2,0,0,0, //1. Blue
  0,2,0,0, //2. Red
  0,0,2,0, //3. Lime/Green
  0,0,0,2, //4. Fuchsia/Pink
  2,0,2,0, //5. SkyBlue
  0,2,2,0, //6. Yellow
  2,2,2,2  //7. White
);
 
int double_tap;
int weapon;
int power;
 
int ARV;
int ARH;
int arv;
int arh;
 
int idx;
 
int RATE_OF_FIRE;
int hold_time;
int rest_time;
int SHOT_MELEE_ONOFF  = FALSE;
 
init {
    AR_Primary = get_pvar(SPVAR_1, -100, 100, 0);   
    ARH_Primary = get_pvar(SPVAR_4, -100, 100, 0);   
    RoF_Primary = get_pvar(SPVAR_7, 0, 25, 0);   
    RF_Primary_onoff = get_pvar(SPVAR_10, 0, 1, 0);
    AR_Secondary = get_pvar(SPVAR_2, -100, 100, 0);
    ARH_Secondary = get_pvar(SPVAR_5, -100, 100, 0);
    RoF_Secondary = get_pvar(SPVAR_8, 0, 25, 0);
    RF_Secondary_onoff = get_pvar(SPVAR_11, 0, 1, 0);
    AR_Power = get_pvar(SPVAR_3, -100, 100, 0);   
    ARH_Power = get_pvar(SPVAR_6, -100, 100, 0);   
    RoF_Power = get_pvar(SPVAR_9, 0, 25, 0);   
    RF_Power_onoff = get_pvar(SPVAR_12, 0, 1, 0);
}
 
main {
 
    set_val(TRACE_1, ARV);
    set_val(TRACE_2, ARH);
    set_val(TRACE_3, RATE_OF_FIRE);
 
    if(event_press(XB1_Y) || (!get_val(XB1_LT) && event_press(XB1_UP)))
    {
        weapon=!weapon;
        power = FALSE;
    }
    if(get_val(XB1_Y) && get_ptime(XB1_Y) > 300)
    {
        power = TRUE;
        weapon=TRUE;
    }
 
    if(get_val(XB1_LT) && get_val(XB1_MENU)){
        combo_run(Vibrate);             
        combo_run(Flash);
        set_pvar(SPVAR_1, AR_Primary);   
        set_pvar(SPVAR_4, ARH_Primary);   
        set_pvar(SPVAR_7, RoF_Primary);   
        set_pvar(SPVAR_10, RF_Primary_onoff);
        set_pvar(SPVAR_2, AR_Secondary);
        set_pvar(SPVAR_5, ARH_Secondary);
        set_pvar(SPVAR_8, RoF_Secondary);
        set_pvar(SPVAR_11, RF_Secondary_onoff);
        set_pvar(SPVAR_3, AR_Power);   
        set_pvar(SPVAR_6, ARH_Power);   
        set_pvar(SPVAR_9, RoF_Power);   
        set_pvar(SPVAR_12, RF_Power_onoff);
 
        set_val(XB1_MENU, 0);
    }
 
    if(get_val(XB1_RT))
        combo_run(AntiRecoil);
            else
                combo_stop(AntiRecoil);
 
    hold_time = 500 / RATE_OF_FIRE;
    rest_time = hold_time - 20;
    if(rest_time < 0) rest_time = 0;
 
    if(power)
    {
        AR_Power = edit_val (0, XB1_LT, XB1_X, AR_Power, XB1_DOWN, XB1_UP, 0, 100);
        ARH_Power = edit_val (1, XB1_LT, XB1_X, ARH_Power, XB1_RIGHT, XB1_LEFT, -100, 100);
 
        if(RF_toggle (XB1_LT, XB1_UP, XB1_RT))
        RF_Power_onoff = !RF_Power_onoff;
 
        if(RF_Power_onoff)
        {
            RoF_Power = edit_val (2, XB1_LT, XB1_B, RoF_Power, XB1_UP, XB1_DOWN, 0, 25)
            RF ();
        }
    }
        else
        {
            if(!weapon)
            {
                AR_Primary = edit_val (0, XB1_LT, XB1_X, AR_Primary, XB1_DOWN, XB1_UP, 0, 100);
                ARH_Primary = edit_val (1, XB1_LT, XB1_X, ARH_Primary, XB1_RIGHT, XB1_LEFT, -100, 100);
 
                if(RF_toggle (XB1_LT, XB1_UP, XB1_RT))
                    RF_Primary_onoff = !RF_Primary_onoff;
 
                if(RF_Primary_onoff)
                {
                    RoF_Primary = edit_val (2, XB1_LT, XB1_B, RoF_Primary, XB1_UP, XB1_DOWN, 0, 25);
                    RF ();
                }   
            }
 
            if(weapon)
            {
                AR_Secondary = edit_val (0, XB1_LT, XB1_X, AR_Secondary, XB1_DOWN, XB1_UP, 0, 100);
                ARH_Secondary = edit_val (1, XB1_LT, XB1_X, ARH_Secondary, XB1_RIGHT, XB1_LEFT, -100, 100);
 
                if(RF_toggle (XB1_LT, XB1_UP, XB1_RT))
                    RF_Secondary_onoff = !RF_Secondary_onoff;
 
                if(RF_Secondary_onoff)
                {
                    RoF_Secondary =  edit_val (2, XB1_LT, XB1_B, RoF_Secondary, XB1_UP, XB1_DOWN, 0, 25);
                    RF ();
               }   
            }
        }
 
    if(abs(get_val(XB1_RY)) > (ARV_Release) || abs(get_val(XB1_RX)) > (ARH_Release))
        combo_stop (AntiRecoil);
 
    if(power) LED(Red);
        else if(!weapon) LED(Blue);
            else LED(Green);
 
// Lower sensitivity when the ADS/Fire Button is held down   
    if((get_val(ADS_BTN)) || (get_val(FIRE_BTN)))   
    {       
        sensitivity(RIGHT_STICK_X, NOT_USE, SENS);       
        sensitivity(RIGHT_STICK_Y, NOT_USE, SENS);   
    }
 
// Hair Triggers
//|-------------------------------|
 
 
    if((get_val(XB1_LT)) > 01) { 
        set_val(XB360_LT, 100);
    }
 
 
    if((get_val(XB1_RT)) > 01) {
        set_val(XB360_RT, 100);
    }
 
    if(get_val(XB1_LT) && event_press(Shotgun_Melee))  {
        SHOT_MELEE_ONOFF=!SHOT_MELEE_ONOFF;                 
 
    }
 
    if(get_val(XB1_RT)&&(SHOT_MELEE_ONOFF)){
        combo_run(SHOT_MELEE); set_val(FIRE_BTN, 0);
        } else { combo_stop(SHOT_MELEE);
        }
 
// Rapid LT press for mobieus quiver multishot. EXPERIMENTAL DISABLED BY DEFAULT
//    if((event_release(XB1_LT)) && (get_ptime(XB1_LT)) <= 250) {
  //      combo_run(Tap_902);
   //        }
 
 
// Auto Melee
//|-------------------------------|
 
    if(get_val(XB1_RS)) {
        combo_run(Turbo_1);
    }
 
// Lower sensitivity when the ADS/Fire Button is held down   
    if((get_val(ADS_BTN)) || (get_val(FIRE_BTN)))   
    {       
        sensitivity(RIGHT_STICK_X, NOT_USE, SENS);       
        sensitivity(RIGHT_STICK_Y, NOT_USE, SENS);   
    }
// Map paddle 1 to crouch
 
if((get_val(XB1_P1)) > 01) { 
        set_val(XB360_B, 100);
    }
 
 
// Hold to hunter dodge instead of double tap. DISABLE IF USING TITAN OR WARLOCK
 
if (get_val(XB1_B) && get_ptime(XB1_B)>=400) {        // <== This line will check if you are still holding it beyond the block time.
        set_val(XB360_B, 0);                                   // Instantly stops RT before issuing alternate combo.
        combo_run(Tap_Dodge1);
        combo_run(Tap_Dodge2);
    } else if (get_val(XB1_B) && get_ptime(XB1_B)<400) {  // Runs this line if Press Time is less than 500 MS
        block (XB1_B, 500);                                  // Press time and Block time are same to "suppress" button press and pass it to combo.
        combo_run(Tap_Crouch);
    }
 
 
}
 
// ** Hunter dodge DISABLE IF USING TITAN OR WARLOCK
 
combo Tap_Dodge1 {
    set_val(XB360_B, 0);
    wait(10);
    set_val(XB360_B, 100);
    wait(10);
    set_val(XB360_B, 100);
}
 
combo Tap_Dodge2 {
    set_val(XB360_B, 0);
    wait(10);
    set_val(XB360_B, 100);
    wait(10);
    set_val(XB360_B, 100);
}
 
combo Tap_Crouch {
    set_val(XB360_B, 0);
    wait(10);
    set_val(XB360_B, 100);
    wait(100);
    set_val(XB360_B, 100);
}
 
// Other Combos
 
combo RAPID_FIRE {
    wait(hold_time);
    set_val(XB1_RT, 0);
    wait(rest_time);
}
 
combo Vibrate {
    set_rumble(RUMBLE_A, 50);
    wait(300);
    reset_rumble();
}
 
combo Flash {
    wait(300);
    LED(Off);
    wait(500);
}
 
combo AntiRecoil {
    arv = get_val(10) + ARV;
    if(arv > 100) arv = 100;
    set_val(10, arv);
    arh = get_val(9) + ARH;
    if(arh > 100) arh = 100;
    set_val(9, arh);
}
 
combo Turbo_1 {
    set_val(XB360_RS, 100);
    wait(100);
    set_val(XB360_RS, 0);
    wait(100);
    set_val(XB360_RS, 0);
} 
 
combo SHOT_MELEE {
    set_val(XB1_RT, 100);
    wait(100);
    wait(100);
    set_val(XB1_RS, 100);
    wait(100);
    wait(100);
} 
 
 
 
//LT moebius quiver rapid press LT. EXPERIMENTAL DISABLED BY DEFAULT
 
//    combo Tap_902 {
 //   set_val(XB360_A, 0);
//    wait(10);
 //   set_val(XB360_A, 100);
 //   wait(20);
 //   set_val(XB360_A, 100);
//}
 
 
function edit_val (f_idx, f_btn1, f_btn2, f_var, f_inc, f_dec, f_min, f_max) {
    idx = f_idx;
 
    if(idx == 0)
        ARV = f_var;
    if(idx == 1)
        ARH =  f_var;
    if(idx == 2)
        RATE_OF_FIRE = f_var;
 
    if(get_val(f_btn1) && get_lval(f_btn2))
    {
        if(event_press(f_inc))
            f_var += 5;       
        if(event_press(f_dec))
            f_var -= 5;
        set_val(f_inc, 0); set_val(f_dec, 0);
 
        if(f_var < f_min)
        {
            f_var = f_min;
            combo_run(Vibrate);
        }
        if(f_var > f_max)
        {
            f_var = f_max;
            combo_run(Vibrate);
        }
        set_val(f_btn2, 0);
    }
    return f_var;
}
 
function RF_toggle (f_hbtn1, f_hbtn2, f_pbtn) {
    if((get_val(f_hbtn1) && get_val(f_hbtn2)) && event_press(f_pbtn))
    {
        combo_run(Vibrate);
        return TRUE;
    }
    return FALSE;
} 
 
function RF () {
    combo_run(Flash);
 
    if(get_val(XB1_RT))
        combo_run(RAPID_FIRE);
        else
            combo_stop(RAPID_FIRE);
}
 
 
function LED(Colour) {
    set_led(LED_1,dbyte(Colour*4));
    set_led(LED_2,dbyte((Colour*4) + 1));
    set_led(LED_3,dbyte((Colour*4) + 2));
    set_led(LED_4,dbyte((Colour*4) + 3));
}
Last edited by Longfellow78 on Wed Mar 25, 2020 9:11 am, edited 1 time in total.
User avatar
Longfellow78
Master Sergeant
Master Sergeant
 
Posts: 41
Joined: Fri Mar 15, 2019 2:24 pm

Re: Compatible controllers and back paddles question.

Postby Mad » Wed Mar 25, 2020 9:09 am

Use the xbox accessories app to map to in game buttons.

Change the script to use unused buttons instead of P1-P4.

Here's a list of compatible controllers: https://www.consoletuner.com/wiki/index ... lity_table
ConsoleTuner Support Team || ConsoleTuner Discord || InputSense Discord (2K / FPS)
Mad
Major General
Major General
 
Posts: 4533
Joined: Wed May 22, 2019 5:39 am

Re: Compatible controllers and back paddles question.

Postby Longfellow78 » Wed Mar 25, 2020 9:39 am

Thanks you for the speedy reply.
I am a moron. I didn't think of using the accessories app.
User avatar
Longfellow78
Master Sergeant
Master Sergeant
 
Posts: 41
Joined: Fri Mar 15, 2019 2:24 pm

Re: Compatible controllers and back paddles question.

Postby Mad » Wed Mar 25, 2020 9:51 am

Longfellow78 wrote:Thanks you for the speedy reply.
I am a moron. I didn't think of using the accessories app.

No problem. Thanks for sharing your script with us. :joia:
ConsoleTuner Support Team || ConsoleTuner Discord || InputSense Discord (2K / FPS)
Mad
Major General
Major General
 
Posts: 4533
Joined: Wed May 22, 2019 5:39 am

Re: Compatible controllers and back paddles question.

Postby Longfellow78 » Wed Mar 25, 2020 1:48 pm

Thanks. I'm super happy with it and it does everything I want. The only bug is that the xbox guide button flashes constantly when the profile is loaded.
I've another version for warlock and hunter which is slightly different.
User avatar
Longfellow78
Master Sergeant
Master Sergeant
 
Posts: 41
Joined: Fri Mar 15, 2019 2:24 pm


Return to Titan Two Device

Who is online

Users browsing this forum: No registered users and 95 guests