int prob

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

int prob

Postby yohimbe » Sat Sep 24, 2016 11:23 pm

in the gpc i used this
Code: Select all
      if (get_val(ADS) ) {       
            sensitivity( 9, MIDPOINT+add_timem, ADS_SENS+add_time);       
            sensitivity(10, MIDPOINT+add_timem, ADS_SENS+add_time);


Now it gives me a GPC error: j.gpc(196): Illegal operation '+'. How can I add this?
User avatar
yohimbe
Sergeant Major
Sergeant Major
 
Posts: 84
Joined: Sun Mar 01, 2015 7:27 pm

Re: int prob

Postby UK_Wildcats » Sat Sep 24, 2016 11:53 pm

I had a similar issue. You need to pass variables to the function like the below example.

variable1 = MIDPOINT+add_timem;
variable2 = ADS_SENS+add_time;
sensitivity( 9, variable1, variable2);
User avatar
UK_Wildcats
Brigadier General
Brigadier General
 
Posts: 2243
Joined: Thu Jan 08, 2015 6:53 pm

Re: int prob

Postby J2Kbr » Sun Sep 25, 2016 6:48 am

It should be possible resolve expressions in the function parameters, example:

Code: Select all
main {
    func(3, 2 * 9, 3 - 1 / 2);
}

int func(int p1, int p2, int p3) {
    return p1 + p2 - p3;
}
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: int prob

Postby yohimbe » Sun Sep 25, 2016 10:32 am

well this function i dont get really

i got this which worked in gpc

Code: Select all
   
      if (get_val(ADS) ) {       
            sensitivity( 9, MIDPOINT+add_timem, ADS_SENS+add_time);       
            sensitivity(10, MIDPOINT+add_timem, ADS_SENS+add_time);
        }else{
        // OVERALL SENS
            sensitivity( 9, MIDPOINT+add_timem, OVE_SENS+add_times);
            sensitivity(10, MIDPOINT+add_timem, OVE_SENS+add_times);
        }


and this i want to change on the fly like i did in t1

Code: Select all
    if(get_val(XB1_LT)){
    if(event_press(XB1_Y)){add_times = add_times + 5;}
   
    if(event_press(XB1_B)){
                    add_times = add_times - 5;
                }  }
    if(get_val(XB1_LS)){
    if(event_press(XB1_Y)){add_timem = add_timem + 5;}
   
    if(event_press(XB1_B)){
                    add_timem = add_timem - 5;
                }  }
                 
    if(get_val(XB1_P4)){
    if(event_press(XB1_Y)){add_time = add_time + 5;}
   
    if(event_press(XB1_B)){
                    add_time = add_time - 5;
                }  }
User avatar
yohimbe
Sergeant Major
Sergeant Major
 
Posts: 84
Joined: Sun Mar 01, 2015 7:27 pm

Re: int prob

Postby Scachi » Sun Sep 25, 2016 1:47 pm

yohimbe wrote:in the gpc i used this
Code: Select all
      if (get_val(ADS) ) {       
            sensitivity( 9, MIDPOINT+add_timem, ADS_SENS+add_time);       
            sensitivity(10, MIDPOINT+add_timem, ADS_SENS+add_time);


Now it gives me a GPC error: j.gpc(196): Illegal operation '+'. How can I add this?

Just a wild guess.. I think this error "Illegal operation" happens when you are trying to do math with variables of different types like fix32 + int.

Non working example, fix32 and int can't be used with operator "+":
Code: Select all
int t1 = 5;
fix32 t2 = 5.5;
int r1;

main {
    r1 = t1 + t2;
}


Working example, casted fix32 to int:
Code: Select all
int t1 = 5;
fix32 t2 = 5.5;
int r1;

main {
    r1 = t1 + (int)t2;
}
User avatar
Scachi
Brigadier General
Brigadier General
 
Posts: 3044
Joined: Wed May 11, 2016 6:25 am
Location: Germany

Re: int prob

Postby yohimbe » Sun Sep 25, 2016 9:17 pm

I dont get this to work. Maybe you can explain with my example how this must be changed.
Thanks
User avatar
yohimbe
Sergeant Major
Sergeant Major
 
Posts: 84
Joined: Sun Mar 01, 2015 7:27 pm

Re: int prob

Postby UK_Wildcats » Sun Sep 25, 2016 9:19 pm

yohimbe wrote:I dont get this to work. Maybe you can explain with my example how this must be changed.
Thanks


Please post your script, and I will try to modify it for you.
User avatar
UK_Wildcats
Brigadier General
Brigadier General
 
Posts: 2243
Joined: Thu Jan 08, 2015 6:53 pm

Re: int prob

Postby yohimbe » Sun Sep 25, 2016 9:44 pm

these are the relevant parts which i got frommyworkin t1 script

Code: Select all

int add_time; 
int add_times; 

  define ADS_SENS = 100;
    define OVE_SENS = 100
    define MIDPOINT = 50;     

 if (get_val(ADS) ) {       
            sensitivity( 9, MIDPOINT, ADS_SENS+add_time);       
            sensitivity(10, MIDPOINT, ADS_SENS+add_time);
        }else{
        // OVERALL SENS
            sensitivity( 9, MIDPOINT, OVE_SENS+add_times);
            sensitivity(10, MIDPOINT, OVE_SENS+add_times);
        }

    if(get_val(XB1_LT)){
    if(event_press(XB1_Y)){add_times = add_times + 5;}
   
    if(event_press(XB1_B)){
                    add_times = add_times - 5;
                }  }
    if(get_val(XB1_LS)){
    if(event_press(XB1_Y)){add_timem = add_timem + 5;}
   
    if(event_press(XB1_B)){
                    add_timem = add_timem - 5;
                }  }
                 
    if(get_val(XB1_P4)){
    if(event_press(XB1_Y)){add_time = add_time + 5;}
   
    if(event_press(XB1_B)){
                    add_time = add_time - 5;
                }

so its an on the fly sensivity adjustment which i dont get to work anymore.
User avatar
yohimbe
Sergeant Major
Sergeant Major
 
Posts: 84
Joined: Sun Mar 01, 2015 7:27 pm

Re: int prob

Postby UK_Wildcats » Sun Sep 25, 2016 10:13 pm

I took your code and modfied it in order to get it to compile without any errors. This should give an idea of how to do it.

Code: Select all

#define ADS     BUTTON_7
#define XB1_LT     BUTTON_8
#define XB1_LS     BUTTON_9
#define XB1_P4     BUTTON_1  // don't know what button this is
#define XB1_Y    BUTTON_14
#define XB1_B    BUTTON_15

#define    NOT_USE            0
#define TRUE            !FALSE


int add_time, add_times, add_timem;


uint32 ADS_SENS = 100;
uint32 OVE_SENS = 100
uint32 MIDPOINT = 50;

uint32 Sens1, Sens2;

main{

    if (get_val(ADS)) {
            Sens1 = ADS_SENS +add_time;
            sensitivity( 9, MIDPOINT, Sens1);       
            sensitivity(10, MIDPOINT, Sens1);
        }
    else{
        // OVERALL SENS
            Sens2 = OVE_SENS + add_times;
            sensitivity( 9, MIDPOINT, Sens2);
            sensitivity(10, MIDPOINT, Sens2);
        }

    if(get_val(XB1_LT)){
        if(event_active(XB1_Y)){add_times = add_times + 5;}
        if(event_active(XB1_B)){add_times = add_times - 5;}
    }
    if(get_val(XB1_LS)){
        if(event_active(XB1_Y)){add_timem = add_timem + 5;}
        if(event_active(XB1_B)){add_timem = add_timem - 5;}
    }
                 
    if(get_val(XB1_P4)){
        if(event_active(XB1_Y)){add_time = add_time + 5;}
        if(event_active(XB1_B)){add_time = add_time - 5;}
    }
}

void sensitivity(uint8 input, uint32 midpoint, uint32 sens)
{
    uint32 value = (uint32) get_val(input);
    bool signed = (value < 0);
    if (signed) {value = abs(value);}
    if (midpoint != NOT_USE)
    {
        if (value > midpoint) {value = (50 / (100 - midpoint)) * (value - midpoint) + 50;}
        else {value = (50 / midpoint) * value;}
    }
      if (sens) {value = (sens / 100) * value;}
    if (value > 100) {value = 100;}
    if (signed) {value = -value;}
    set_val(input, value);
}
User avatar
UK_Wildcats
Brigadier General
Brigadier General
 
Posts: 2243
Joined: Thu Jan 08, 2015 6:53 pm

Re: int prob

Postby pablosscripts » Mon Sep 26, 2016 5:10 am

This is mine and it compiles perfectly:

Code: Select all
#include <ps4.gph>

uint32  NOT_USE;
#define MOV_RY_AXIS PS4_RY
#define MOV_RX_AXIS PS4_RX
#define xim_ads_sensitivity 84
#define ADS PS4_L2
#define SPRINT PS4_L3

main {
   
    if(get_val(ADS) && get_val(SPRINT)) {
        sensitivity(MOV_RY_AXIS, NOT_USE, xim_ads_sensitivity);
        sensitivity(MOV_RX_AXIS, NOT_USE, xim_ads_sensitivity);
    }
}

void sensitivity(uint8 input, uint32 midpoint, uint32 sens)
{
    uint32 value = (uint32) get_val(input);
    bool signed = (value < 0);

    if (signed)
    {
        value = abs(value);
    }
   
    if (midpoint != NOT_USE)
    {
        if (value > midpoint)
        {
            value = (50 / (100 - midpoint)) * (value - midpoint) + 50;
        }
        else
        {
            value = (50 / midpoint) * value;
        }
    }
 
    if (sens)
    {
        value = (sens / 100) * value;
    }
   
    if (value > 100)
    {
        value = 100;
    }
   
    if (signed)
    {
        value = -value;
    }
   
    set_val(input, value);
}
Setup: XIM Apex, T2, K780 keyboard, G Pro Wireless mouse, SteelSeries 4HD pad, DXRacer armrest, LucidSound LS30 headset, Netduma router, Ubiquiti UniFi AP LR

My R6 script: https://youtu.be/x-9NtxyySVM
User avatar
pablosscripts
Brigadier General
Brigadier General
 
Posts: 1976
Joined: Tue Nov 24, 2015 6:27 am

Next

Return to GPC2 Script Programming

Who is online

Users browsing this forum: No registered users and 41 guests