Free Use of Right stick

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

Free Use of Right stick

Postby 3rne5t0 » Fri Jan 05, 2018 4:49 pm

When i execute a combo like this. I cant move the stick up or down. I want a recoil compensation bud i still wants 2 use Stick _Y ios this possible?

Code: Select all
if(get_val(BUTTON_5)) {
        combo_run(QuickshotAuto);
    }
 
combo QuickshotAuto {
    set_val(STICK_1_Y, 55.0);
}
User avatar
3rne5t0
Sergeant Major of the Army
Sergeant Major of the Army
 
Posts: 210
Joined: Mon Jan 30, 2017 10:31 am

Re: Free Use of Right stick

Postby bonefisher » Fri Jan 05, 2018 5:17 pm

Take the anti-recoil out of my modspack to get what your looking for. COD's MODZPACK and scroll to get function anti_recoil then you wouldn't need combo just place in main..... :smile0517:
bonefisher
Lieutenant General
Lieutenant General
 
Posts: 5413
Joined: Thu Jan 29, 2015 10:49 am

Re: Free Use of Right stick

Postby 3rne5t0 » Sat Jan 06, 2018 8:20 am

i break it down 2 this! did i miss something?

Code: Select all
#pragma METAINFO("COD WWII MODzPACK", 1, 0, "bonefisher")
#include <display.gph>
 
bool    p_recoil;
bool    stop_anti_recoil;
 
int     rpm;
 
fix32   anti_precoil_V;
fix32   anti_precoil_H;
 
init
{
    pmem_load();
    p_recoil = (pmem_read(13) >> 7) & 0b1;
    pmem_read(14, &anti_precoil_V);
    pmem_read(18, &anti_precoil_H);
 
    rpm = p_rapid;
    tap_fire = p_burst * (1000 / (rpm / 60));
    RUN(BUTTON_5, p_burst, p_size);
}
 
main {
    if(get_actual(BUTTON_5)) {
        rpm = s_rapid;
        RUN(BUTTON_5, s_burst, s_size);
    }
    if(s_recoil == 1) {
    if(abs(get_actual(STICK_1_X)) > 25.0) {
        stop_anti_recoil = 0;
    }else{
        stop_anti_recoil = 1;
    }
    if(get_actual(BUTTON_8) && get_actual(BUTTON_5))
    {
        if(stop_anti_recoil == 1)
        {
        AntiRecoil(STICK_1_Y, anti_srecoil_V);
        AntiRecoil(STICK_1_X, anti_srecoil_H);
        }
    }
    if(!get_actual(BUTTON_8) && get_actual(BUTTON_5))
    {
        if(stop_anti_recoil == 1)
        {
        AntiRecoil(STICK_1_Y, anti_srecoil_V - 3.0);
        AntiRecoil(STICK_1_X, anti_srecoil_H);
        }
    }
    }
    } break;
 
void RUN(uint8 button, uint32 shots_per_burst, uint32 shots_per_magazine)
{
    uint32 sps = rpm/ 60; uint32 rate = 1000/ sps; uint32 hold = rate/ 2;
    uint32 ta = time_active(button); set_val(button, 100.0); while(ta > rate) {
    tap_fire = shots_per_burst * rate; ta -= rate;} if(ta > hold) {
    set_val(button, 0.0);} reload_delay = shots_per_magazine * rate;
}
void AntiRecoil(uint8 axis, fix32 recoil)
{
    if (get_val(BUTTON_5) && sqrt(pow(get_actual(STICK_1_X), 2.0) + pow(get_actual(STICK_1_Y), 2.0)) <= abs(recoil)) {
        if (abs(get_actual(STICK_1_Y)) <= abs(recoil))
        {
            set_val(axis,(recoil * (100.0 - abs(get_val(axis)))) / 100.0 + get_val(axis));
        }
    }
}
User avatar
3rne5t0
Sergeant Major of the Army
Sergeant Major of the Army
 
Posts: 210
Joined: Mon Jan 30, 2017 10:31 am

Re: Free Use of Right stick

Postby 3rne5t0 » Sat Jan 06, 2018 8:26 am

i just want Antirecoil when i press button 5 and button 5 && Button 8.
User avatar
3rne5t0
Sergeant Major of the Army
Sergeant Major of the Army
 
Posts: 210
Joined: Mon Jan 30, 2017 10:31 am

Re: Free Use of Right stick

Postby bonefisher » Sat Jan 06, 2018 1:38 pm

Do you need different settings when hip firing and ADS and firing?
bonefisher
Lieutenant General
Lieutenant General
 
Posts: 5413
Joined: Thu Jan 29, 2015 10:49 am

Re: Free Use of Right stick

Postby bonefisher » Sat Jan 06, 2018 2:06 pm

Code: Select all
 
#include <display.gph>
 
int    sps;
int    burst;
int    i;
bool   recoil;
bool   stop_anti_recoil;
bool   fire;
fix32  anti_precoil_V;
fix32  anti_precoil_H;
uint32 tap_fire;
uint32    IND[] = {
    _0_,                  // 0
    _1_,                  // 1
    _2_,                  // 2
    _3_,                  // 3
    _4_,                  // 4
    _5_                   // 5
};
init
{
    sps = 6;                       // default sps setting for rapid fire.
    i = 6;                         // sets blinks with sps setting.
    burst = 3;                     // default shot setting for tap burst.
    tap_fire = burst * 1000/sps;   // don't change.
 
    anti_precoil_V = 26.0;         // default when on: change with runtime.
    anti_precoil_H = 0.0;
}
 
main {
    // tap and release before 300ms to active combo.
    // hold pass 300ms to use for toggles and adjusting mods in game.
    set_val(BUTTON_7, 0.0);
    if(event_release(BUTTON_7) && time_active(BUTTON_7) < 300) {
        combo_run(left_bumper);
    }
    set_val(BUTTON_4, 0.0);
    if(event_release(BUTTON_4) && time_active(BUTTON_4) < 300) {
        combo_run(right_bumper);
    }
    // toggle rapid fire on/off.
    set_val(BUTTON_7, 0.0);
    if(get_actual(BUTTON_7) && time_active(BUTTON_7) > 300) {
        set_val(BUTTON_5, 0.0);
    if(event_active(BUTTON_5)) {
    if(fire == 0) {
        fire = 1;
        display (1);
    }else if(fire == 1) {
        fire = 0;
        display (0);
    }
    }
    }
    // toggle recoil on/off.
    set_val(BUTTON_7, 0.0);
    if(get_actual(BUTTON_7) && time_active(BUTTON_7) > 300) {
        set_val(BUTTON_10, 0.0);
    if(event_active(BUTTON_10)) {
    if(recoil == 0) {
        recoil = 1;
        display (1);
    }else if(recoil == 1) {
        recoil = 0;
        display (0);
    }
    }
    }
    set_val(BUTTON_4, 0.0);
    if(get_actual(BUTTON_4) && time_active(BUTTON_4) > 300) {
    if(event_release(BUTTON_10) || event_release(BUTTON_11)
    || event_release(BUTTON_12) || event_release(BUTTON_13)
    || event_release(BUTTON_14) || event_release(BUTTON_15)
    || event_release(BUTTON_2) || event_release(BUTTON_3)
    || event_release(BUTTON_16) || event_release(BUTTON_17)) {
        printf("shot_per_second: %d", sps);
        printf("shot_per_tap: %d", burst);
        printf("anti_precoil_V: %f", anti_precoil_V);
        printf("anti_precoil_H: %f", anti_precoil_H);
    }
    }
    set_val(BUTTON_4, 0.0);
    if(get_actual(BUTTON_4) && time_active(BUTTON_4) > 300) {
         set_val(BUTTON_10, 0.0);
    if(event_active(BUTTON_10)){
        sps = sps + 1;
        i = i + 1;
    if(sps > 20) sps = 20;
    if(i > 20) i = 20;
        pmem_write(1, sps);
        pmem_write(18, i);
        pmem_save();
        Blink(i);
    }
    }
    set_val(BUTTON_4, 0.0);
    if(get_actual(BUTTON_4) && time_active(BUTTON_4) > 300) {
         set_val(BUTTON_11, 0.0);
    if(event_active(BUTTON_11)){
        sps = sps - 1;
        i = i - 1;
    if(sps < 1) sps = 1;
    if(i < 1) i = 1;
        pmem_write(1, sps);
        pmem_write(18, i);
        pmem_save();
        Blink(i);
    }
    }
    set_val(BUTTON_4, 0.0);
    if(get_actual(BUTTON_4) && time_active(BUTTON_4) > 300) {
        set_val(BUTTON_13, 0.0);
    if(event_active(BUTTON_13)){
        burst = burst + 1;
    if(burst > 20) burst = 20;
        pmem_write(5, burst);
        pmem_save();
    }
    }
    set_val(BUTTON_4, 0.0);
    if(get_actual(BUTTON_4) && time_active(BUTTON_4) > 300) {
        set_val(BUTTON_12, 0.0);
    if(event_active(BUTTON_12)){
        burst = burst - 1;
    if(burst < 0) burst = 0;
        pmem_write(5, burst);
        pmem_save();
    }
    }
    set_val(BUTTON_4, 0.0);
    if(get_actual(BUTTON_4) && time_active(BUTTON_4) > 300) {
        set_val(BUTTON_16, 0.0);
    if(event_active(BUTTON_16)){
        anti_precoil_V = anti_precoil_V + 1.0;
    if(anti_precoil_V > 100.0) anti_precoil_V = 100.0;
        pmem_write(10, anti_precoil_V);
        pmem_save();
    }
    }
    set_val(BUTTON_4, 0.0);
    if(get_actual(BUTTON_4) && time_active(BUTTON_4) > 300) {
        set_val(BUTTON_14, 0.0);
    if(event_active(BUTTON_14)){
        anti_precoil_V = anti_precoil_V - 1.0;
    if(anti_precoil_V < -100.0) anti_precoil_V = -100.0;
        pmem_write(10, anti_precoil_V);
        pmem_save();
    }
    }
    set_val(BUTTON_4, 0.0);
    if(get_actual(BUTTON_4) && time_active(BUTTON_4) > 300) {
        set_val(BUTTON_15, 0.0);
    if(event_active(BUTTON_15)){
        anti_precoil_H = anti_precoil_H + 1.0;
    if(anti_precoil_H > 100.0) anti_precoil_H = 100.0;
        pmem_write(14, anti_precoil_H);
        pmem_save();
    }
    }
    set_val(BUTTON_4, 0.0);
    if(get_actual(BUTTON_4) && time_active(BUTTON_4) > 300) {
        set_val(BUTTON_17, 0.0);
    if(event_active(BUTTON_17)){
        anti_precoil_H = anti_precoil_H - 1.0;
    if(anti_precoil_H < -100.0) anti_precoil_H = -100.0;
        pmem_write(14, anti_precoil_H);
        pmem_save();
    }
    }
    if(fire == 0) {
    if(get_actual(BUTTON_5)) {
        set_val(BUTTON_5, 100.0);
    }else if(is_release(BUTTON_5) &&
     time_active(BUTTON_5) <= tap_fire) {
        tap_fire = burst * 1000/sps;
        AntiRecoil(STICK_1_Y, anti_precoil_V);
        set_val(BUTTON_5, 100.0);
    }
    }
    if(fire == 1) {
    if(get_actual(BUTTON_5)) {
        turbo(BUTTON_5);
    }else if(is_release(BUTTON_5) &&
     time_active(BUTTON_5) <= tap_fire) {
        AntiRecoil(STICK_1_Y, anti_precoil_V);
        turbo(BUTTON_5);
    }
    }
    if(recoil == 1) {
    if(abs(get_actual(STICK_1_X)) > 25.0) {
        stop_anti_recoil = 0;
    }else{
        stop_anti_recoil = 1;
    }
    if(get_actual(BUTTON_5))
    {
        if(stop_anti_recoil == 1)
        {
        AntiRecoil(STICK_1_Y, anti_precoil_V);
        AntiRecoil(STICK_1_X, anti_precoil_H);
        }
        }
    }
}
 
combo left_bumper
{
    set_val(BUTTON_7, 100.0);
    wait(200);
}
 
combo right_bumper
{
    set_val(BUTTON_4, 100.0);
    wait(200);
}
 
void turbo(uint8 button)
{
    uint32 rate = 1000 / sps;
    uint32 hold = rate / 2 ;
 
    uint32 ta = time_active(button);
    set_val(button, 0.0);
 
   while(ta > rate) {
        ta -= rate;
    }
    tap_fire = burst * 1000/sps;
 
    if(ta > hold) {
        set_val(button, 100.0);
    }
}
 
void AntiRecoil(uint8 axis, fix32 recoil)
{
    set_val(axis, (recoil * (100.0 - abs(get_val(axis)))) / 100.0 + get_actual(axis));
}
 
 // Display Numbers
void display (uint8 indc)
{
    uint8 VIE;
    VIE = IND[indc];
    display_overlay(VIE, 2000 );
}
 
bool blinking;
void Blink(uint8 no) {
    led_reset();
    if(no) led_vmset(LED_1, 175, 375, i+1);
    blinking = 1;
}
 
main {
    if(blinking && !led_vmget(LED_1)) {
    led_reset();
    blinking = 0;
    }
}
 

Here is something to tinker with adjusting on the fly in game.
bonefisher
Lieutenant General
Lieutenant General
 
Posts: 5413
Joined: Thu Jan 29, 2015 10:49 am

Re: Free Use of Right stick

Postby 3rne5t0 » Sat Jan 06, 2018 7:20 pm

Thinking about something like this just a setting for press only Button_5 and one L2 + R2 no ingame change needet. :innocent_smile_1:


Code: Select all
#pragma METAINFO("<author_name>", 1, 0, "")
int    sps;
int    burst;
bool   stop_anti_recoil;
fix32  anti_precoil_V;
fix32  anti_precoil_H;
uint32 tap_fire;
init
{
    sps = 6;                       // default sps setting for rapid fire.
    burst = 3;                     // default shot setting for tap burst.
    tap_fire = burst * 1000/sps;   // don't change.
    anti_precoil_V = 26.0;         // default when on: change with runtime.
    anti_precoil_H = 0.0;
}
main {
    if(get_actual(BUTTON_5)) {
        turbo(BUTTON_5);
    }else if(is_release(BUTTON_5) &&
     time_active(BUTTON_5) <= tap_fire) {
        AntiRecoil(STICK_1_Y, anti_precoil_V);
        turbo(BUTTON_5);
    }
    if(abs(get_actual(STICK_1_X)) > 25.0) {
        stop_anti_recoil = 0;
    }else{
        stop_anti_recoil = 1;
    }
    if(get_actual(BUTTON_5))
    {
        if(stop_anti_recoil == 1)
        {
        AntiRecoil(STICK_1_Y, anti_precoil_V);
        AntiRecoil(STICK_1_X, anti_precoil_H);
        }
        }
}
void turbo(uint8 button)
{
    uint32 rate = 1000 / sps;
    uint32 hold = rate / 2 ;
 
    uint32 ta = time_active(button);
    set_val(button, 0.0);
 
   while(ta > rate) {
        ta -= rate;
    }
    tap_fire = burst * 1000/sps;
 
    if(ta > hold) {
        set_val(button, 100.0);
    }
}
void AntiRecoil(uint8 axis, fix32 recoil)
{
    set_val(axis, (recoil * (100.0 - abs(get_val(axis)))) / 100.0 + get_actual(axis));
}
User avatar
3rne5t0
Sergeant Major of the Army
Sergeant Major of the Army
 
Posts: 210
Joined: Mon Jan 30, 2017 10:31 am

Re: Free Use of Right stick

Postby bonefisher » Sat Jan 06, 2018 7:46 pm

:smile0517:
bonefisher
Lieutenant General
Lieutenant General
 
Posts: 5413
Joined: Thu Jan 29, 2015 10:49 am

Re: Free Use of Right stick

Postby 3rne5t0 » Sun Jan 07, 2018 7:57 am

How can i make 2 States this example dont give me right values? I even dont need stop recoil because i can move the stick around still while it always sets the 26.0 Force down very nice.


Code: Select all
fix32  anti_precoil2_V;
fix32  anti_precoil_V;
fix32  anti_precoil_H;
 
init
{
    anti_precoil2_V = 36.0;
    anti_precoil_V = 26.0;         // default when on: change with runtime.
    anti_precoil_H = 0.0;
}
main {
    if(get_actual(BUTTON_5)) {
        AntiRecoil(STICK_1_Y, anti_precoil_V);
        AntiRecoil(STICK_1_X, anti_precoil_H);
        }
    if(get_actual(BUTTON_5) && get_actual(BUTTON_8)) {
        AntiRecoil(STICK_1_Y, anti_precoil2_V);
        AntiRecoil(STICK_1_X, anti_precoil_H);
        }
}
void AntiRecoil(uint8 axis, fix32 recoil)
{
    set_val(axis, (recoil * (100.0 - abs(get_val(axis)))) / 100.0 + get_actual(axis));
}
User avatar
3rne5t0
Sergeant Major of the Army
Sergeant Major of the Army
 
Posts: 210
Joined: Mon Jan 30, 2017 10:31 am

Re: Free Use of Right stick

Postby bonefisher » Sun Jan 07, 2018 11:47 am

Code: Select all
 
fix32  anti_precoil2_V;
fix32  anti_precoil2_H;
fix32  anti_precoil_V;
fix32  anti_precoil_H;
 
init
{
    anti_precoil2_V = 36.0;
    anti_precoil2_H = 0.0;
    anti_precoil_V = 26.0;         // default when on: change with runtime.
    anti_precoil_H = 0.0;
}
main {
    if(!get_actual(BUTTON_8) && get_actual(BUTTON_5)) {
        AntiRecoil(STICK_1_Y, anti_precoil_V);
        AntiRecoil(STICK_1_X, anti_precoil_H);
        }
    if(get_actual(BUTTON_8) && get_actual(BUTTON_5)) {
        AntiRecoil(STICK_1_Y, anti_precoil2_V);
        AntiRecoil(STICK_1_X, anti_precoil2_H);
        }
}
void AntiRecoil(uint8 axis, fix32 recoil)
{
    set_val(axis, (recoil * (100.0 - abs(get_val(axis)))) / 100.0 + get_actual(axis));
}
 
bonefisher
Lieutenant General
Lieutenant General
 
Posts: 5413
Joined: Thu Jan 29, 2015 10:49 am

Next

Return to GPC2 Script Programming

Who is online

Users browsing this forum: No registered users and 89 guests