Hi All,

I've updated both my EDReadStatus.zip file and the new chat function in the original threads above.

Huge props for the improved chat function goes to ySfte over at the HOTAS/HOSAS/SIMPIT discord.
Thanks so much for your input dude, extremely valuable!

Cheers
Clicker
 
Last edited:
ModDB download link should be back up and operational in next few hours. Seems there was an issue with the mirror servers which has just had a fix deployed. Just need to wait for 18tb of mods to be processed!

Cheers, AD
 
Last edited:
ON my PC, this thread is rendered with a white background despite having the default theme.

Your post, it appears has white text....on a white background.

;-)

Cheers
 
Hello


I am not a pro of the script lol

some small improvement of the launch script:

use of environmental variable.

example:

"C: \ Users \ My User \ AppData \ Local \ Frontier Developments \ Elite Dangerous \ Options \ Bindings \ *. *"

By :

"%LOCALAPPDATA%\Frontier Developments\Elite Dangerous\Options\Bindings\*.*"

or :

"C:\Program Files (x86)\Thrustmaster\TARGET\x64"

By :

"%programfiles(x86)%\Thrustmaster\TARGET\x64"


replacement : PING -n 4 localhost>nul

By : timeout / nobreak / T 4

Use nircmd to reduce the windows in the stain bar.

Link : http://www.nirsoft.net/utils/nircmd.html

example for Targetgui.exe:

Add these lines after: If ERRORLEVEL 1 ECHO ...ERROR!!! ~Check TARGETGUI.exe path/installed/already running~

ECHO MINIMISE: REDUCTION DE LA FENETRE [Run Script]
If NOT ERRORLEVEL 1 START nircmd.exe win min process "TARGETGUI.exe"
timeout /nobreak /T 1
TASKLIST | FIND /I "nircmd.exe"
If NOT ERRORLEVEL 1 ECHO ...SUCCESS!

CMDR Ptimale

PS : I try to run elite dangerous client in silent mode, if you have any info
 
Hello


I am not a pro of the script lol

some small improvement of the launch script:

use of environmental variable.

example:

"C: \ Users \ My User \ AppData \ Local \ Frontier Developments \ Elite Dangerous \ Options \ Bindings \ *. *"

By :

"%LOCALAPPDATA%\Frontier Developments\Elite Dangerous\Options\Bindings\*.*"

or :

"C:\Program Files (x86)\Thrustmaster\TARGET\x64"

By :

"%programfiles(x86)%\Thrustmaster\TARGET\x64"


replacement : PING -n 4 localhost>nul

By : timeout / nobreak / T 4

Use nircmd to reduce the windows in the stain bar.

Link : http://www.nirsoft.net/utils/nircmd.html

example for Targetgui.exe:

Add these lines after: If ERRORLEVEL 1 ECHO ...ERROR!!! ~Check TARGETGUI.exe path/installed/already running~

ECHO MINIMISE: REDUCTION DE LA FENETRE [Run Script]
If NOT ERRORLEVEL 1 START nircmd.exe win min process "TARGETGUI.exe"
timeout /nobreak /T 1
TASKLIST | FIND /I "nircmd.exe"
If NOT ERRORLEVEL 1 ECHO ...SUCCESS!

CMDR Ptimale

PS : I try to run elite dangerous client in silent mode, if you have any info

Thanks a lot for the suggestions & feedback CMDR Ptimale!

Good idea regarding the environmental variables (totally forgot about those!). I'll update that for the next release.

Not sure what the difference between timeout and PING is for what I was using it for but will have a play around with it and check it out and see if it is any better. Had come across nircmd.exe for another script I run for my media center (super handy for hiding the command prompt window completely). Could look into adding a silent/stealth mode to the script but have to see if it is viable.

For the file I use elsewhere, I simply needed to create a second 'launch' bat file that calls on the main bat file, like this:

nircmd.exe exec hide YOURBATCHFILE.bat

Gather with the above example you have added, that would also hide the other windows like Target GUI etc. Could see how that could be handy if you didn't want it all showing when starting ED. I did use the minimise command for EDDI if I recall, that may be another simple option to keep windows but out of the way.

Thanks mate.

Cheers, AD
 
“Timeout” is not available natively in Windows 7 as far as I know.

Sleep.exe was available via the Resource Kits for Windows Server 2003 if I recall.

Ping works universally though not really created as a delay mechanism in batch files!
;-)

Clicker
 
FSSMODE Suggestion: Automatic DX-SLIDER (ie radar) curves.

I find the Linear curves best for DSS mode and non-linear is best when in normal supercruise.
So I wrote a function to change this on the fly.

Code:
// TOGGLE: Enter/Exit FSS Mode
int fnToggleFSSMode() {
	FSSMode = !FSSMode;
	if (FSSMode) {
		ActKey(KEYON+PULSE+FSSModeON);
		SetSCurve(&Throttle, THR_FC, 0, 0, 0, 0, -2); // DX-SLIDER Linear progression. Low sensitivity
		printf("FSS Mode:		ON		>>\x0a");
	}
	else {
		ActKey(KEYON+PULSE+FSSModeOFF);
		SetCustomCurve(&Throttle, THR_FC, LIST(0,0, 33,25, 66,50, 80,75, 100,100));	// DX-SLIDER Non-Linear progression
		printf("FSS Mode:		OFF		>>\x0a");
	}
}

I'm sure you could easily toggle back to original user setting without too much extra trouble.

Something to think about.

Cheers
Clicker

p.s. quack.
 
Very cool idea Clicker!

Took a look but I have the hat switch for those functions only mapped in ED and not the script so not something I can use directly at the moment. I have added another Throttle mode based off the DX Curve one you used. Although I use it for the Radar, never considered it for the actual throttle. Gonna try it out.

Going to give the MapKeyUMD a try as well for the Primary Trigger/Fire Modes like your suggestion. Got most of it coded up with a few changes to incorporate the current AdvancedFireMode code a bit better.

I assume I need to add: SetShiftButton(&Joystick, S4, &Throttle, PSF, PSB, UDTOGGLE); ?

To setup the Pinky Trigger Switch on the Throttle as the Shift key and Pinky Trigger on Joystick for the IO (although not used at the moment).

Cheers, AD
 
Hi AD,

Once you start using KeyMapUMD you'll wonder why you used all the "if" statements!

;-)

And, your assumption is correct re SetShiftButton (according to the manual).
In my scripts I currently only use UMD (and not IO or IOUMD) and I've found you don't actually need to declare "UDTOGGLE" and it just works.
This is likely due to the backward compatibility for the Cougar.

ie SetShiftButton(&Joystick, S4, &Throttle, PSF, PSB); works fine for MapKeyUMD

One thing I should have mentioned in regards to the dynamic curves which I only found out after I posted.
The manual states that you can't use SetCustomCurve(); from an EXEC...presumably due to the LIST component.
However, in the section called 'Creating your own function' within the manual it shows how we can work around this.
Something to keep in mind.

Cheers
Clicker
 
Last edited:
Thanks Clicker!

I've made the further modifications for the LIST limitations. Compile Succeeded. :)

Hopefully get to play some time today and see if all the changes work. Been doing some script reorganisation and clean-up so will look into using UMD elsewhere if seems viable change too.

Cheers, AD
 
Hi again,

Based on your question about SetShiftButton(), I included the UDTOGGLE in my script to check if there's any difference.

There is!

Flicking the PSF/PSB modifier started playing up (or, more accurately probably started acting as intended).
I found I had to cycle the PSF several times before my intended function fired.
That is (I think) that you cycle PSF (or PSB) first time for the toggle, then again to toggle off.

Without UDTOGGLE it acts like a HOLD rather than TOGGLE.

You may well have known and expected this, I didn't...so, now I know.

I've reverted to not using UDTOGGLE

Cheers
Clicker

EDIT:
Just re-read the manual and that's exactly what is says! DOH!
 
Last edited:
Hey Clicker,

Yep, I had to remove the UDTOGGLE too after it stopped firing a couple times too. All seems to be working now though, and integrated with the AdvancedFireModule for the other fire modes I have. Next steps to do some testing in game. Only thing I couldn't do was put the REXEC code behind a Modifier key. I wanted to keep it aligned with my other fire modes using the S4, but seems to be ignored in the REXEC when I push the code out to the function. I think the reason for this is that the repeat call to the function does not have the S4 still held down, so does not fire again unless you keep holding the S4 else the code goes down a different path, which is a bit useless really. Not sure if there is a way around that, but for now I get some testing done and validate the code changes and take another look later.

Cheers, AD
 
Hi,

Using S4 as the modifier is the IO function.
You need to MapkeyIOUMD for that to work (assuming your setshiftbutton statement hasn’t changed).

Example:
MapKeyIOUMD(&Joystick, TG1,
“Function1”, //IU
“Function2”, //OU
“Function3”, //IM
“Function4”, //OM
“Function5”, //ID
“Function6”); //OD

I’m sure you know this, so, perhaps you can show us the MapKey and function code?

Clicker
 
Last edited:
Ah, never really looked at IOUMD much (didnt think it was what I needed). Makes sense now you have called it out lol.

Here is the main code so far:

Code:
SetShiftButton(&Joystick, S4, &Throttle, PSF, PSB);                                                                [COLOR=#32cd32]// Set Shift Button (Pinky Toggle Switch) for MapKeyUMD    (With UDTOGGLE is Toggle, without is a Hold - See Page 22 of manual)    [/COLOR]

    MapKeyUMD(&Joystick, TG1,                                                                                        [COLOR=#32cd32]// Trigger 1 [Main Trigger][/COLOR]
                            EXEC(                [COLOR=#EAAEAE]"initAdvancedFireModule();"[/COLOR]),
                            EXEC(                [COLOR=#EAAEAE]"initAdvancedFireModule();"[/COLOR]),                              
                            SEQ[COLOR=#ffffff]([/COLOR]REXEC[COLOR=#ffffff]([/COLOR][COLOR=#ffffff]0[/COLOR], [COLOR=#ffffff]7000[/COLOR],    [COLOR=#EAAEAE]"ActKey(KEYON+PULSE+PrimaryFire); printf("Repeater Fire: AUTO-PULSE WAVE    ^FIRED^    .^.^.^.        (PRIMARY) ^^\\x0a");"[/COLOR], RNOSTOP), EXEC([COLOR=#EAAEAE]"StopAutoRepeat(0); printf("Repeater Fire: AUTO-PULSE WAVE    DISABLE    ._._._.        (PRIMARY)\\x0a");"[/COLOR])));
    MapKeyR(&Joystick, TG1, EXEC(                [COLOR=#EAAEAE]"if(RepeaterAutoRelease < 2) initAdvancedFireModule();"[/COLOR]));            [COLOR=#32cd32]// Release Primary Trigger[/COLOR]
[COLOR=#32cd32]//    MapKey(&Joystick,  TG2, SecondaryFire);                                                                            // Trigger 2 [Secondary Trigger] (Mapped in initAdvancedFireModule())[/COLOR]
    MapKeyR(&Joystick,  TG2, EXEC([COLOR=#EAAEAE]"initAdvancedFireModule();"[/COLOR]));                                                    [COLOR=#32cd32]// Release Secondary Trigger (Keeps Primary firing after releasing Secondary Tier)[/COLOR]

When it calls the AdvancedFireModule, it will determine if S4 is down (at least for the Explorer & Combat repeater fire modes) then action as needed. RepeaterAutoRelease is set on toggle change.

Code:
    [COLOR=#3D9FFF][B]int[/B][/COLOR] initAdvancedFireModule() {                                                                [COLOR=#32cd32]// FUNCTION: Advanced Weapon Fire Module[/COLOR]
        [COLOR=#3D9FFF][B]if[/B][/COLOR][COLOR=#ffffff]([/COLOR]Joystick[COLOR=#ffffff][[/COLOR]TG1]) {                                                                        [COLOR=#32cd32]//    [Integrates Combo Fire & Repeater Fire into Primary/Secondary Fire Buttons][/COLOR]
            [COLOR=#3D9FFF][B]if[/B][/COLOR][COLOR=#ffffff]([/COLOR]Joystick[COLOR=#ffffff][[/COLOR]S4]) {                                                                    
                rAutoP=!rAutoP;
                [COLOR=#3D9FFF][B]if[/B][/COLOR][COLOR=#ffffff]([/COLOR]RepeaterAutoRelease < [COLOR=#ffffff]2[/COLOR]) {                                                    [COLOR=#32cd32]// *Not really needed, but remains in case I add code for RepeaterAutoRelease = 2 in the future.[/COLOR]
                    [COLOR=#3D9FFF][B]if[/B][/COLOR](!rFireP & rAutoP) {
                        ActKey[COLOR=#ffffff]([/COLOR]KEYON[COLOR=#ffffff]+[/COLOR]DOWN[COLOR=#ffffff]+[/COLOR]PrimaryFire);                                            [COLOR=#32cd32]// Pinky Trigger + Primary = REPEATING FIRE[/COLOR]
                        rFireP = [COLOR=#ffffff]1[/COLOR]; }
                    [COLOR=#3D9FFF][B]if[/B][/COLOR][COLOR=#ffffff]([/COLOR]rFireP & rAutoP) {
                        [COLOR=#3D9FFF][B]if[/B][/COLOR][COLOR=#ffffff]([/COLOR]RepeaterAutoRelease == [COLOR=#ffffff]1[/COLOR]) printf([COLOR=#EAAEAE]"Repeater Fire: EXPLORER SCANNER    MODE ON    .^...^.        (PRIMARY) ^^\x0a"[/COLOR]);
                        [COLOR=#3D9FFF][B]if[/B][/COLOR][COLOR=#ffffff]([/COLOR]RepeaterAutoRelease == [COLOR=#ffffff]0[/COLOR]) printf([COLOR=#EAAEAE]"Repeater Fire: COMBAT ENDLESS    MODE ON    .^^^^^.        (PRIMARY) ^^\x0a"[/COLOR]); }
                    [COLOR=#3D9FFF][B]if[/B][/COLOR][COLOR=#ffffff]([/COLOR]rFireP & !rAutoP) {
                        ActKey[COLOR=#ffffff]([/COLOR]KEYON[COLOR=#ffffff]+[/COLOR]UP[COLOR=#ffffff]+[/COLOR]PrimaryFire);
                        rFireP = [COLOR=#ffffff]0[/COLOR];
                        printf([COLOR=#EAAEAE]"Repeater Fire: COMBAT ENDLESS    MODE OFF    ._____.        (PRIMARY)\x0a"[/COLOR]); } } }    
            [COLOR=#3D9FFF][B]if[/B][/COLOR][COLOR=#ffffff]([/COLOR]Joystick[COLOR=#ffffff][[/COLOR]H4P]) {
                initSetCombinedFire[COLOR=#ffffff]([/COLOR][COLOR=#ffffff]1[/COLOR]);    }                                                        [COLOR=#32cd32]// CMS Hat Switch + Primary = COMBINE TOGGLE[/COLOR]
            [COLOR=#3D9FFF][B]if[/B][/COLOR](!Joystick[COLOR=#ffffff][[/COLOR]H4P] & !Joystick[COLOR=#ffffff][[/COLOR]S4]) {
                rAutoP = [COLOR=#ffffff]0[/COLOR];
                [COLOR=#3D9FFF][B]if[/B][/COLOR](!rFireP) {
                    ActKey[COLOR=#ffffff]([/COLOR]KEYON[COLOR=#ffffff]+[/COLOR]DOWN[COLOR=#ffffff]+[/COLOR]PrimaryFire); } }     }                                    [COLOR=#32cd32]// Primary Only = STANDARD FIRE (Releases Repeating Fire when on Manual User Preference)[/COLOR]
        [COLOR=#3D9FFF][B]if[/B][/COLOR](!Joystick[COLOR=#ffffff][[/COLOR]TG1]) {                                                                    [COLOR=#32cd32]//     [Set 'RepeaterAutoRelease' value in the User Preferences][/COLOR]
            [COLOR=#3D9FFF][B]if[/B][/COLOR][COLOR=#ffffff]([/COLOR]RepeaterAutoRelease == [COLOR=#ffffff]1[/COLOR]) {                                                            [COLOR=#32cd32]// Auto Primary Release ENABLED[/COLOR]
                [COLOR=#3D9FFF][B]if[/B][/COLOR][COLOR=#ffffff]([/COLOR]rFireP & rAutoP) {
                    DeferCall[COLOR=#ffffff]([/COLOR]RepeaterTimer,     &ActKey, KEYON[COLOR=#ffffff]+[/COLOR]UP[COLOR=#ffffff]+[/COLOR]PrimaryFire);                 [COLOR=#32cd32]// Automatic timer delay to release Primary Fire after a 6 second hold[/COLOR]
                    DeferCall[COLOR=#ffffff]([/COLOR]RepeaterTimerOff, &ActKey, KEYON[COLOR=#ffffff]+[/COLOR]PULSE[COLOR=#ffffff]+[/COLOR]EXEC([COLOR=#EAAEAE]"rFireP = 0;"[/COLOR]));        [COLOR=#32cd32]// Slight offset timing of +200ms to ensure triggering after event[/COLOR]
                    DeferCall[COLOR=#ffffff]([/COLOR]RepeaterTimerOff, &ActKey, KEYON[COLOR=#ffffff]+[/COLOR]PULSE[COLOR=#ffffff]+[/COLOR]EXEC([COLOR=#EAAEAE]"rAutoP = 0;"[/COLOR]));
                    DeferCall[COLOR=#ffffff]([/COLOR]RepeaterTimer,     &ActKey, KEYON[COLOR=#ffffff]+[/COLOR]PULSE[COLOR=#ffffff]+[/COLOR]EXEC([COLOR=#EAAEAE]"printf(\"Repeater Fire: EXPLORER SCANNER    MODE OFF    ._..._.        (PRIMARY)\\x0a\");"[/COLOR])); }
                [COLOR=#3D9FFF][B]if[/B][/COLOR](!rFireP) {
                    ActKey[COLOR=#ffffff]([/COLOR]KEYON[COLOR=#ffffff]+[/COLOR]UP[COLOR=#ffffff]+[/COLOR]PrimaryFire); }    }
            [COLOR=#3D9FFF][B]if[/B][/COLOR][COLOR=#ffffff]([/COLOR]RepeaterAutoRelease != [COLOR=#ffffff]1[/COLOR]) {                                                            [COLOR=#32cd32]// Manual Primary Release ENABLED[/COLOR]
                  [COLOR=#3D9FFF][B]if[/B][/COLOR](!rFireP & !rAutoP) {                                                            [COLOR=#32cd32]// Checks if Repeater Fire was enabled, if NO, only release primary fire button[/COLOR]
                    ActKey[COLOR=#ffffff]([/COLOR]KEYON[COLOR=#ffffff]+[/COLOR]UP[COLOR=#ffffff]+[/COLOR]PrimaryFire); } } }
        [COLOR=#3D9FFF][B]if[/B][/COLOR][COLOR=#ffffff]([/COLOR]Joystick[COLOR=#ffffff][[/COLOR]S3]) {
            [COLOR=#3D9FFF][B]if[/B][/COLOR][COLOR=#ffffff]([/COLOR]Joystick[COLOR=#ffffff][[/COLOR]S4]) {
                rAutoS=!rAutoS;
                [COLOR=#3D9FFF][B]if[/B][/COLOR](!rFireS) {
                    ActKey[COLOR=#ffffff]([/COLOR]KEYON[COLOR=#ffffff]+[/COLOR]DOWN[COLOR=#ffffff]+[/COLOR]SecondaryFire);                                            [COLOR=#32cd32]// Pinky Trigger + Secondary = REPEATING FIRE[/COLOR]
                    rFireS = [COLOR=#ffffff]1[/COLOR]; }
                [COLOR=#3D9FFF][B]if[/B][/COLOR][COLOR=#ffffff]([/COLOR]rAutoS) {
                    printf([COLOR=#EAAEAE]"Repeater Fire: AUTO ON  (SECONDARY) ^^\x0a"[/COLOR]); } }
            [COLOR=#3D9FFF][B]if[/B][/COLOR](!Joystick[COLOR=#ffffff][[/COLOR]S4]) {
                rAutoS = [COLOR=#ffffff]0[/COLOR];
                [COLOR=#3D9FFF][B]if[/B][/COLOR](!rFireS) {
                    ActKey[COLOR=#ffffff]([/COLOR]KEYON[COLOR=#ffffff]+[/COLOR]DOWN[COLOR=#ffffff]+[/COLOR]SecondaryFire); } } }                                        [COLOR=#32cd32]// Secondary Only = STANDARD FIRE (Releases Repeating Fire)[/COLOR]
        [COLOR=#3D9FFF][B]if[/B][/COLOR](!Joystick[COLOR=#ffffff][[/COLOR]S3]) {
            [COLOR=#3D9FFF][B]if[/B][/COLOR][COLOR=#ffffff]([/COLOR]RepeaterAutoRelease) {                                                            [COLOR=#32cd32]// Auto Secondary Release ENABLED[/COLOR]
                [COLOR=#3D9FFF][B]if[/B][/COLOR][COLOR=#ffffff]([/COLOR]rFireS & rAutoS) {
                    DeferCall[COLOR=#ffffff]([/COLOR]RepeaterTimer,     &ActKey, KEYON[COLOR=#ffffff]+[/COLOR]UP[COLOR=#ffffff]+[/COLOR]SecondaryFire);                 [COLOR=#32cd32]// Automatic timer delay to release Secondary Fire after a 6 second hold[/COLOR]
                    DeferCall[COLOR=#ffffff]([/COLOR]RepeaterTimerOff, &ActKey, KEYON[COLOR=#ffffff]+[/COLOR]PULSE[COLOR=#ffffff]+[/COLOR]EXEC([COLOR=#EAAEAE]"rFireS = 0;"[/COLOR]));        [COLOR=#32cd32]// Slight offset timing of +200ms to ensure triggering after event[/COLOR]
                    DeferCall[COLOR=#ffffff]([/COLOR]RepeaterTimerOff, &ActKey, KEYON[COLOR=#ffffff]+[/COLOR]PULSE[COLOR=#ffffff]+[/COLOR]EXEC([COLOR=#EAAEAE]"rAutoS = 0;"[/COLOR]));
                    DeferCall[COLOR=#ffffff]([/COLOR]RepeaterTimer,     &ActKey, KEYON[COLOR=#ffffff]+[/COLOR]PULSE[COLOR=#ffffff]+[/COLOR]EXEC([COLOR=#EAAEAE]"printf(\"Repeater Fire: AUTO OFF (SECONDARY)\\x0a\");"[/COLOR])); }
                [COLOR=#3D9FFF][B]if[/B][/COLOR](!rFireS) {
                    ActKey[COLOR=#ffffff]([/COLOR]KEYON[COLOR=#ffffff]+[/COLOR]UP[COLOR=#ffffff]+[/COLOR]SecondaryFire); } }                
            [COLOR=#3D9FFF][B]if[/B][/COLOR](!RepeaterAutoRelease) {                                                            [COLOR=#32cd32]// Manual Secondary Release ENABLED[/COLOR]
                [COLOR=#3D9FFF][B]if[/B][/COLOR](!rFireS & !rAutoS) {                                                            [COLOR=#32cd32]// Checks if Repeater Fire was enabled, if NO, only release secondary fire button[/COLOR]
                    ActKey[COLOR=#ffffff]([/COLOR]KEYON[COLOR=#ffffff]+[/COLOR]UP[COLOR=#ffffff]+[/COLOR]SecondaryFire); }
                [COLOR=#3D9FFF][B]if[/B][/COLOR][COLOR=#ffffff]([/COLOR]rFireS & !rAutoS) {                                                            [COLOR=#32cd32]// Checks if Repeater Fire was enabled, if YES, also reset flag & print[/COLOR]
                    ActKey[COLOR=#ffffff]([/COLOR]KEYON[COLOR=#ffffff]+[/COLOR]UP[COLOR=#ffffff]+[/COLOR]SecondaryFire);
                    rFireS = [COLOR=#ffffff]0[/COLOR];
                    printf([COLOR=#EAAEAE]"Repeater Fire: AUTO OFF (SECONDARY)\x0a"[/COLOR]); } } } }

I had previously tried to add the code for when RepeaterAutoFire = 2 (Mining Pulse Mode), and put that behind a if(Joystick(S4) similar to way the others are setup, so any time the modifier is not held, it will do standard primary fire, but if S4 is down it will do the special repeater fire mode (based on Shift key position).

Cheers, AD
 
Last edited:
Take 2:


Code:
    MapKeyIOUMD(&Joystick,  TG1,                                                                                    [COLOR=#32cd32]// Trigger 1 [Main Trigger][/COLOR]
                            EXEC(                [COLOR=#EAAEAE]"initAdvancedFireModule();"[/COLOR]),
                            EXEC(                [COLOR=#EAAEAE]"initAdvancedFireModule();"[/COLOR]),
                            EXEC(                [COLOR=#EAAEAE]"initAdvancedFireModule();"[/COLOR]),
                            EXEC(                [COLOR=#EAAEAE]"initAdvancedFireModule();"[/COLOR]),
                            EXEC(                [COLOR=#EAAEAE]"initAdvancedFireModule();"[/COLOR]),
                            SEQ[COLOR=#ffffff]([/COLOR]REXEC[COLOR=#ffffff]([/COLOR][COLOR=#ffffff]0[/COLOR], [COLOR=#ffffff]7000[/COLOR],    [COLOR=#EAAEAE]"ActKey(KEYON+PULSE+PrimaryFire); printf(\"Repeater Fire: AUTO-PULSE WAVE    ^FIRED^    .^.^.^.        (PRIMARY) ^^\\x0a\");"[/COLOR], RNOSTOP), EXEC([COLOR=#EAAEAE]"StopAutoRepeat(0); printf(\"Repeater Fire: AUTO-PULSE WAVE    DISABLE    ._._._.        (PRIMARY)\\x0a\");"[/COLOR])));
    MapKeyR(&Joystick, TG1, EXEC(                [COLOR=#EAAEAE]"if(RepeaterAutoRelease < 2) initAdvancedFireModule();"[/COLOR]));            [COLOR=#32cd32]// Release Primary Trigger[/COLOR]

Looking at the AdvanceFireModule with new eyes, I think much of that logic can now be handled by the IOUMD directly, cutting out most of the code, but need to possibly keep it to run the secondary modifier:

Code:
            [COLOR=#3D9FFF][B]if[/B][/COLOR][COLOR=#ffffff]([/COLOR]Joystick[COLOR=#ffffff][[/COLOR]H4P]) {
                initSetCombinedFire[COLOR=#ffffff]([/COLOR][COLOR=#ffffff]1[/COLOR]);    }

Funny how one change to a fire mode might lead to complete rewrite lol .. down the rabbit hole...

Edit: Actually, should be able to manage H4P via an IF statement since its not using REXEC. Doh.

AD
 
Last edited:
Back
Top Bottom