time_release() from Titan 2 on Titan 1?

GPC1 script programming for Titan One. Code examples, questions, requests.

time_release() from Titan 2 on Titan 1?

Postby creedkiller » Wed Apr 08, 2020 9:24 am

Does anyone have a custom function which mimics the time_release() function from Titan 2 language for the Titan 1?
creedkiller
Lieutenant
Lieutenant
 
Posts: 293
Joined: Fri Mar 17, 2017 4:08 pm

Re: time_release() from Titan 2 on Titan 1?

Postby J2Kbr » Wed Apr 08, 2020 9:32 am

Here is how you can implement this functionality on the Titan One:
Code: Select all
define BUTTON = PS4_CROSS;
 
int time_release;
 
main {
    if(event_release(BUTTON)) {
        time_release = 0;
    } else if(!get_val(BUTTON)) {
        if(time_release < 30000) {
            time_release = time_release + get_rtime();
        }
    }
 
    if(get_val(BUTTON) && time_release < 200) {
        combo_run(ex);
    }
}
 
combo ex {
 
}
ConsoleTuner Support Team
User avatar
J2Kbr
General of the Army
General of the Army
 
Posts: 20323
Joined: Tue Mar 18, 2014 1:39 pm

Re: time_release() from Titan 2 on Titan 1?

Postby creedkiller » Wed Apr 08, 2020 10:15 am

J2Kbr wrote:Here is how you can implement this functionality on the Titan One:
Code: Select all
define BUTTON = PS4_CROSS;
 
int time_release;
 
main {
    if(event_release(BUTTON)) {
        time_release = 0;
    } else if(!get_val(BUTTON)) {
        if(time_release < 30000) {
            time_release = time_release + get_rtime();
        }
    }
 
    if(get_val(BUTTON) && time_release < 200) {
        combo_run(ex);
    }
}
 
combo ex {
 
}

I am trying to convert a variation of your "Double Tap" example from the Manual (https://www.consoletuner.com/wiki/index ... double_tap)
Code: Select all
bool toggle;
 
main {
    if(event_active(L1) && time_release(L1) < 120) { toggle = TRUE; }
    if(toggle) {
        combo_run(ex);
        if(event_release(L1)) { toggle = FALSE; }
    }
}
 
combo ex {
}
creedkiller
Lieutenant
Lieutenant
 
Posts: 293
Joined: Fri Mar 17, 2017 4:08 pm

Re: time_release() from Titan 2 on Titan 1?

Postby Mad » Wed Apr 08, 2020 11:27 am

You'd still have to hold the button so using event_active / event_press + a toggle is void when using event_release.

You're better of using J2Kbr's script with get_val.

Or toggle on/off with a double tap like this:
Code: Select all
define BUTTON = PS4_L1;
 
int time_release;
int toggle;
 
main {
    if(event_release(BUTTON)) {
        time_release = 0;
    } else if(!get_val(BUTTON)) {
        if(time_release < 30000) {
            time_release = time_release + get_rtime();
        }
    }
 
    if(event_press(BUTTON) && time_release < 200) {
        toggle = !toggle;
    }
 
    if(toggle) {
        combo_run(ex);
    }
 
}
 
combo ex {
 
}
ConsoleTuner Support Team || ConsoleTuner Discord || InputSense Discord
Mad
Major General
Major General
 
Posts: 4536
Joined: Wed May 22, 2019 5:39 am

Re: time_release() from Titan 2 on Titan 1?

Postby creedkiller » Wed Apr 08, 2020 5:55 pm

Mad wrote:You'd still have to hold the button so using event_active / event_press + a toggle is void when using event_release.

You're better of using J2Kbr's script with get_val.

Or toggle on/off with a double tap like this:
Code: Select all
define BUTTON = PS4_L1;
 
int time_release;
int toggle;
 
main {
    if(event_release(BUTTON)) {
        time_release = 0;
    } else if(!get_val(BUTTON)) {
        if(time_release < 30000) {
            time_release = time_release + get_rtime();
        }
    }
 
    if(event_press(BUTTON) && time_release < 200) {
        toggle = !toggle;
    }
 
    if(toggle) {
        combo_run(ex);
    }
 
}
 
combo ex {
 
}

Exactly what I needed, thank You.
creedkiller
Lieutenant
Lieutenant
 
Posts: 293
Joined: Fri Mar 17, 2017 4:08 pm

Re: time_release() from Titan 2 on Titan 1?

Postby DontAtMe » Tue Apr 21, 2020 6:46 am

Code: Select all
int release_array[21];
main {
  update_release_buttons(0);
 
  set_val(TRACE_1, time_release(XB1_A));
  set_val(TRACE_2, time_active(XB1_A));
  set_val(TRACE_3, check_release(XB1_A, 4000));
  set_val(TRACE_4, check_active(XB1_A4000));
}
 
function update_release_buttons(i) {
 while (i = (i + 1) % 21) {
    if (i == 9) i = 13;
    if (!get_val(i)) release_array[i] = (release_array[i] + get_rtime()) * !(event_release(i));
    if (release_array[i] < 0) release_array[i] = 32767;
 }
 return;
}
 
function time_release(io) { return release_array[io]; }
 
function time_active(io) { return get_ptime(io); }
 
function check_release(io, t) { return !get_val(io) && time_release(io) >= t; }
 
function check_active(io, t) { return get_val(io) && get_ptime(io) >= t; }
User avatar
DontAtMe
Captain
Captain
 
Posts: 502
Joined: Tue Oct 02, 2018 4:49 am

Re: time_release() from Titan 2 on Titan 1?

Postby creedkiller » Sat May 09, 2020 9:56 pm

DontAtMe wrote:
Code: Select all
int release_array[21];
main {
  update_release_buttons(0);
 
  set_val(TRACE_1, time_release(XB1_A));
  set_val(TRACE_2, time_active(XB1_A));
  set_val(TRACE_3, check_release(XB1_A, 4000));
  set_val(TRACE_4, check_active(XB1_A4000));
}
 
function update_release_buttons(i) {
 while (i = (i + 1) % 21) {
    if (i == 9) i = 13;
    if (!get_val(i)) release_array[i] = (release_array[i] + get_rtime()) * !(event_release(i));
    if (release_array[i] < 0) release_array[i] = 32767;
 }
 return;
}
 
function time_release(io) { return release_array[io]; }
 
function time_active(io) { return get_ptime(io); }
 
function check_release(io, t) { return !get_val(io) && time_release(io) >= t; }
 
function check_active(io, t) { return get_val(io) && get_ptime(io) >= t; }


That function is elegant, thank you.
creedkiller
Lieutenant
Lieutenant
 
Posts: 293
Joined: Fri Mar 17, 2017 4:08 pm


Return to GPC1 Script Programming

Who is online

Users browsing this forum: No registered users and 67 guests