Apex Legends CV Anti-Recoil Wonky As Hell!!!

GCV scripting for Gtuner IV and Titan Two. Configuration, examples, questions.

Apex Legends CV Anti-Recoil Wonky As Hell!!!

Postby pigy33 » Wed Apr 28, 2021 8:03 pm

Script: "HID Output" viewtopic.php?f=15&t=15226

Wonky Recoil: https://www.youtube.com/watch?v=dgn2IalSHtg

I'm using raw input and all I'm doing is aiming at the dummy and holding down left click. As you can see sometimes the anti-recoil works and pulls down to reduce recoil to almost nothing . However sometimes it just goes crazy! Like it goes to the left really far when my hscale = 0 so it shouldn't go to the left at all or randomly goes up really high rather than down.

Settings: Mouse to T2 to XIM to PS4, data_set = 2 (raw) , vscale = 0.023, hscale = 0, Output Protocol = USB Multi Interface HID, Device Options checked "Disable Joystick from Multi Interface HID output", CV detecting guns and rapid fire work fine.

Any help would be much appreciated, this new technology is out of this world and I would really like to use it :smile0203: :smile0202: :smile0203:
User avatar
pigy33
Sergeant First Class
Sergeant First Class
 
Posts: 25
Joined: Tue Mar 20, 2018 9:58 pm

Re: Apex Legends CV Anti-Recoil Wonky As Hell!!!

Postby Mad » Wed Apr 28, 2021 10:52 pm

Hi,

I don't think anyone tested that, it was just an example code.

You may have better luck modifying Scachi's HID anti recoil for CV: https://www.consoletuner.com/wiki/index ... il_decimal
ConsoleTuner Support Team || ConsoleTuner Discord || InputSense Discord (2K / FPS)
Mad
Major General
Major General
 
Posts: 4532
Joined: Wed May 22, 2019 5:39 am

Re: Apex Legends CV Anti-Recoil Wonky As Hell!!!

Postby pigy33 » Sat May 01, 2021 10:11 pm

Mad wrote:Hi,

I don't think anyone tested that, it was just an example code.

You may have better luck modifying Scachi's HID anti recoil for CV: https://www.consoletuner.com/wiki/index ... il_decimal


A lot of people said the anti-recoil worked flawlessly with the script on the main page as the anti-recoil is made for the mouse specifically rather than the controller. I feel like there is something majorly wrong if my aim is going left and right when I don't even have horizontal recoil enabled.
User avatar
pigy33
Sergeant First Class
Sergeant First Class
 
Posts: 25
Joined: Tue Mar 20, 2018 9:58 pm

Re: Apex Legends CV Anti-Recoil Wonky As Hell!!!

Postby ShakesB » Sun May 02, 2021 7:56 am

DontAtMe wrote:If you need to use the Xim in your setup.

Then note,
only the setup displayed on the left will work with theses GVC scripts.
The one on the right WILL NOT WORK. Don't waste your time.
Image


The CV wants to correct the AIM on ur T2, but the xim sends the Output to Console, Not the T2.
User avatar
ShakesB
Staff Sergeant
Staff Sergeant
 
Posts: 13
Joined: Fri Jun 19, 2020 4:21 am

Re: Apex Legends CV Anti-Recoil Wonky As Hell!!!

Postby pigy33 » Mon May 03, 2021 6:25 am

I saw that picture in the forums and it's for people who want to connect XIM/Controller for the non-HID anti-recoil, the one pictured on the right is the right choice for people who want to use the mouse settings for HID where you use the Titan 2 to read and edit raw mouse inputs with the macro and then just use the XIM to convert to the 1:1 curve
User avatar
pigy33
Sergeant First Class
Sergeant First Class
 
Posts: 25
Joined: Tue Mar 20, 2018 9:58 pm

Re: Apex Legends CV Anti-Recoil Wonky As Hell!!!

Postby Scachi » Mon May 03, 2021 10:07 am

*updated code*
try this one:
Code: Select all
#include <keyboard.gph>
#include <mouse.gph>
 
// adjust scale here !!! usb hid mouse/keyboard is a lot different than raw or controller data so it may not work at all !
#define HSCALE 0.02 // horizontal scale
#define VSCALE 0.02 // vertical scale
 
 
// DO NOT EDIT
bool    mb1;
bool    passthru, mouseout;
int32 m[] = { 0, 0, 0, 0, 0, 0};
#define M_X 0
#define M_Y 1
#define M_W 2
#define M_1 3
#define M_2 4
#define M_3 5
 
int16 hoffset, voffset;
fix32 hf, vf;
fix32 hr, vr;
int8 arDirX=0;
int8 arDirY=0;
fix32 ValYreal;
fix32 ValXreal;
 
init {
    keymapping();
    const uint8 mmap[] = {
        MBUTTON_1, BUTTON_5,
    }; mousemapping(mmap);   
}
 
main {   
    key_passthru();
 
    static bool rapidfire;
 
    if(gcv_ready()) {
        switch(gcv_read(0)) {
            case 0: {
                rapidfire = gcv_read(1);
            } break;
            case 1: {
                printf("unsupported data set selected in .py");
            } break;
            case 2: {
                gcv_read(1, &hoffset);
                gcv_read(3, &voffset);
                hf = HSCALE * (fix32)hoffset;
                vf = VSCALE * (fix32)voffset;
            } break;
        }
    }
 
        if (elapsed_time()) {
 
        m[M_X]=0;
        m[M_Y]=0;
        m[M_W]=0;
        m[M_1]=0;
        m[M_2]=0;
        m[M_3]=0;
 
        if (mouse_status(MREPORT_UPDATED)) {
            passthru = TRUE;
            m[M_X]=mouse_status(MOUSE_X);
            m[M_Y]=mouse_status(MOUSE_Y);
            m[M_W]=mouse_status(MOUSE_WHEEL);
            m[M_1]=mouse_status(MBUTTON_1);
            m[M_2]=mouse_status(MBUTTON_2);
            m[M_3]=mouse_status(MBUTTON_3);
        }
 
 
        if(mouse_status(MBUTTON_1)) {
            if(rapidfire) combo_run(c_Rapidfire);
            fMouseAntiRecoil();
        } else {
            hr = 0.0; vr = 0.0;
            combo_stop(c_Rapidfire);
        }
 
        if (passthru || mouseout) {
            passthru = FALSE;
            mouseout = FALSE;
            fMouseOut();
        }
    }
}
 
void fMouseAntiRecoil() {
    static bool lastMB1=FALSE;
    if (!lastMB1 && mouse_status(MBUTTON_1)) {
        lastMB1=TRUE;
        ValXreal = ValYreal = 0.0;
    }
 
    if (!mouse_status(MBUTTON_1)) { lastMB1=FALSE; return; }
 
    ValXreal += (fix32)(hf);
    ValYreal += (fix32)(vf);
 
    if (abs(ValYreal) >= 1.0) {
        mouseout=TRUE;
        if (vf < 0.0) {
            if (arDirY != -1) ValYreal = 0.0;
            arDirY = -1;
            m[M_Y] += (int)ceil((ValYreal));
        }
        else if (vf > 0.0) {
            if (arDirY != 1) ValYreal = 0.0;
            arDirY = 1;
            m[M_Y] += (int)floor((ValYreal));
        }
        ValYreal = mod(ValYreal,1.0);
    } 
 
    if (abs(ValXreal) >= 1.0) {
        mouseout=TRUE;
        if (hf < 0.0) {
            if (arDirX != -1) ValXreal = 0.0;
            arDirX = -1;
            m[M_X] += (int)ceil((ValXreal));
        }
        else if (hf > 0.0) {
            if (arDirX != 1) ValXreal = 0.0;
            arDirX = 1;
            m[M_X] += (int)floor((ValXreal));
        }
        ValXreal = mod(ValXreal,1.0);
    }
}
 
combo c_Rapidfire {
    mb1 = TRUE;
    mouseout = TRUE;
    wait(0);
    wait(24);
    mb1 = FALSE;
    mouseout = TRUE;
    wait(0);
    wait(16);
}
 
void fMouseOut() {
    mouse_set(MOUSE_X,m[M_X]);
    mouse_set(MOUSE_Y,m[M_Y]);
    mouse_set(MOUSE_WHEEL,m[M_W]);
    if (c_Rapidfire) {
        mouse_set(MBUTTON_1, mb1);
    } else {
        mouse_set(MBUTTON_1, mouse_status(MBUTTON_1));
    }
    uint8 mb;
    for (mb=MBUTTON_2;mb<=MBUTTON_16;mb++) {
        mouse_set(mb,mouse_status(mb));
    }
}
 
User avatar
Scachi
Brigadier General
Brigadier General
 
Posts: 3044
Joined: Wed May 11, 2016 6:25 am
Location: Germany


Return to Gtuner Computer Vision

Who is online

Users browsing this forum: No registered users and 54 guests