GPC Developer Guides
Constants
Trace
we updated trace which trace 1 , trace 2 , trace 3 are 32bit , trace 4 , trace 5 & trace 6 are 16 bit trace description range trace 1 32 bit trace 2 32 bit trace 3 32 bit trace 4 16 bit trace 5 16 bit trace 6 16 bit here is an example, of trace 2 32 bit gpc const int depracted\[] = {4444, 5555} const uint16 test\[] = {44444, 55555} const int32 test2\[] = {444444, 555555} const int8 test3\[] = {44, 55} const uint8 test4\[] = {44, 55} const uint16 test5\[]\[] = { 	 { 44444, 55555}, 	 { 56666, 57777}, 	 { 60000, 65535} 	 } const int32 test6\[]\[] = { 	 { 4444444, 555555}, 	 { 6666666, 777777}, 	 { 8888888, 999999} 	 } 		 main { 	// in 32bit mode, trace 1, 2 and 3 are 32bit, trace 4,5, 6 are 16bit 	set val(trace 2, 0xffffffff) 		 	if (get ptime(xb1 a) < 6666666) { 	 combo run(test combo); 	} 		 } combo test combo { 	set val(xb1 rt,100) 	wait(9999999); } example using trace 1 thru trace 6 gpc int a = 0xf0; int b = 0x11; int menu = 1; int c = 0x7fffffff; int d = 0xffffffff; main { set val(trace 1, c) set val(trace 2, d) 	set val(trace 3, a & b) 	set val(trace 4, a ^ b) 	set val(trace 5, a | b) 	set val(trace 6, a << 2) 	// set val(trace 6, a >> 2) 	// set val(trace 6, get ps4 lbar(ds4 blue)) 	 	if (get ps4 lbar(ps4 blue) > 0x20) { 	 set val(ps4 cross,100); 	} 	 	if (get keyboard(key a) || get modifiers(mod lctrl)) { 	 combo run(rumble); 	} 	 	 	if (get ival(ps4 cross)) { 	 if (menu) block all inputs(); 	}	 } combo rumble { 	set rumble(rumble a, 40) 	reset rumble(); } what are traces and what do they do? traces are boxes of information commonly used to debug a gpc, get the information you may want from a game or get information from mods that may be running, and more when in zen studio simply click tools > device monitor or press the shortcut f3 on your keyboard this will bring up device monitor where traces can be seen on the bottom right of the device monitor here is where information will be displayed depending on how you have traces set in a gpc script the example below is an example of using a trace to verify if a combo is running when the combo is running the value of trace 1 is 1 and when the mod is off the value of trace 1 is 0 16bit example gpc main { 	set val(trace 1,combo running(rapidfire)); 	 if(get ival(xb1 rt)){ combo run(rapidfire); } } combo rapidfire{ 	set val(xb1 rt,100); 	wait(40); 	set val(xb1 rt,0); 	wait(30); } in the gif below we can see that the value of trace 1 is going quickly between 1 and 0 due to the nature of the combo being re run while the right trigger is being held this is normal and what to look for when using a trace to verify the combo is running when the right trigger is not held the right trigger has a value of 0 and thus the value of the trace is 0 and with this information, we can determine the combo is running when it should be 32bit example gpc int ouput strength; main { 	set val(trace 1,ouput strength); 	 	ouput strength = get polar(polar rs,polar radius) 1000; 	 	if(get val(xb1 lt)){ if(abs(get ival(xb1 rx) < 20 && abs(get ival(xb1 rx)) < 20)) { set val(xb1 ry,20); } if(abs(get ival(xb1 rx) < 20 && abs(get ival(xb1 rx)) >= 20)) { set val(polar ry, ouput strength / 1000); } } } in this example is code of a basic dynamic anti recoil which takes advantage of the higher value limits of 32bit to scale a value up then back down to be accepted as a value to be used with a polar constant for a much greater degree of accuracy the value being traced is the radius of the right stick scaled up higher before being scaled back as the right stick is moved the value of the trace changes accordingly