Free Use of Right stick
15 posts
• Page 1 of 2 • 1, 2
Free Use of Right stick
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);
}
-
3rne5t0 - Sergeant Major of the Army
- Posts: 210
- Joined: Mon Jan 30, 2017 10:31 am
Re: Free Use of Right stick
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.....
- bonefisher
- Lieutenant General
- Posts: 5413
- Joined: Thu Jan 29, 2015 10:49 am
Re: Free Use of Right stick
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));
}
}
}
-
3rne5t0 - Sergeant Major of the Army
- Posts: 210
- Joined: Mon Jan 30, 2017 10:31 am
Re: Free Use of Right stick
i just want Antirecoil when i press button 5 and button 5 && Button 8.
-
3rne5t0 - Sergeant Major of the Army
- Posts: 210
- Joined: Mon Jan 30, 2017 10:31 am
Re: Free Use of Right stick
Do you need different settings when hip firing and ADS and firing?
- bonefisher
- Lieutenant General
- Posts: 5413
- Joined: Thu Jan 29, 2015 10:49 am
Re: Free Use of Right stick
- 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
- Posts: 5413
- Joined: Thu Jan 29, 2015 10:49 am
Re: Free Use of Right stick
Thinking about something like this just a setting for press only Button_5 and one L2 + R2 no ingame change needet.
- 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));
}
-
3rne5t0 - Sergeant Major of the Army
- Posts: 210
- Joined: Mon Jan 30, 2017 10:31 am
Re: Free Use of Right stick
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));
}
-
3rne5t0 - Sergeant Major of the Army
- Posts: 210
- Joined: Mon Jan 30, 2017 10:31 am
Re: Free Use of Right stick
- 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
- Posts: 5413
- Joined: Thu Jan 29, 2015 10:49 am
15 posts
• Page 1 of 2 • 1, 2
Return to GPC2 Script Programming
Who is online
Users browsing this forum: No registered users and 89 guests