Discussion EDDI + Voice Attack How to use variables

Hello everyone guys!
My name is Alessio Bardaro, I am Italian, and I returned to playing Elite Dangerous a short time ago. I play Elite Dangerous using a hotas. I would very much like to make the game more immersive, especially if I think of the possibility of being able to play in VR. To do this I decided to create a voice assistant using Voice Attack.
As everyone knows, Voice Attack does not automatically communicate with the game, but through macros, but I learned about EDDI as a program that allows you to read the game states from the Player Journal. I have the Voice Attack license and i installed EDDI correctly, but what I can't understand is the syntax I have to use to call up variables within the Voice Attack code.
For example if I wanted to create a command that allows me to extract and retract the landing gear, how do I check if this has already been extracted or retracted?
EDDI's documentation says that there's the {BOOL:Status landing gear down} variable that gives me a boolean value (true/false) if the landing gear si down or up, so how i use it in the Voice Attack code?
So logically the code would be the following:
when i say "deploy landing gear" (obviously using italian language, otherwise i would have used HCS Voicepacks)

Code:
Begin Boolean Compare : [{BOOL:Status landing gear down}] Equals False
    Press L key and hold for 0,1 seconds and release
    "Than it plays a self-recorded voice affermative response"
else
    "It plays another self-recorded voice negative response"
End Condition

or
Code:
Begin Boolean Compare : [Status landing gear down] Equals False
    Press L key and hold for 0,1 seconds and release
    "Than it plays a self-recorded voice affermative response"
else
    "It plays another self-recorded voice negative response"
End Condition

I take this opportunity to thank all the developers of the Elite Dangerous external tools that allow all players to enjoy the game better than the developers of the game themselves have imagined! ;)

P.S. I'm sorry for my English!!! I admit that i used google translate sometimes!!!! :D
 
Here's what I'm using...
141460

o7 commander. :)
 
Here's what I'm using...
View attachment 141460
o7 commander. :)

Thanks for sharing this. I've used VA for years but only downloaded EDDI last night, I've been meaning to do it for a very long time. Would you mind sharing the code for this command please?

If there's any other commands like this which you could share, it'd be very appreciated. o7

Thanks a lot! Evo
 
Another example to study...

Code:
Begin Condition : ([Status docked] Equals False AND [Status landed] Equals False AND [Status supercruise] Equals False)
    Begin Text Compare : [{LASTSPOKENCMD}] Ends With 'down'
        Set Boolean [~status] to False
        Set Text [Script] to 'Deploying landing gear.;Landing gear is down and locked.;Lowering landing gear.'
    Else If Text Compare : [{LASTSPOKENCMD}] Ends With 'up'
        Set Boolean [~status] to True
        Set Text [Script] to 'Landing gear coming up.;Landing gear is up.;Retracting landing gear.'
    End Condition
    
    Begin Boolean Compare : [Status landing gear down] Equals [~status]
        Execute command, '((Landing Gear))' (by name) (and wait until it completes)
        Set small int (condition) [~i] value to 20
        Start Loop While : ([Status landing gear down] Equals [~status] AND [~i] Is Greater Than 0)
            Pause 0.1 seconds
            Set small int (condition) [~i] value as decremented by 1
        End Loop
        Begin Small Integer Compare : [~i] Equals 0
            Set Text [Script] to 'No response.'
        End Condition
        Execute external plugin, 'EDDI 3.5.2-b1'
    End Condition - Exit when condition met
    
End Condition
Set Text [Script] to 'Unable to comply.'
Execute external plugin, 'EDDI 3.5.2-b1'
 
Voice attack + kics
What is the difference between using say as an example to Boost engine say " boost engine " ' when this command executes press TAB key ' and set TAB key in elite config. ( This works )
Or now this is what I don't understand if you look at command in kics for boost engine there is a whole script with begin boolean compare [ secure mode ]values, set integer etc in the script there is also unable to execute command .
Reason im asking is kics standard " boost engine command does not work but if I make my own command with TAB is does.
 
Can anyone help with how to access the multi level variables in EDDI ?
I am using the Boolean variables as above, but how can you code behaviour based on, for example, the gui_focus variable, which can have several sub states, like galmap (in other words, to stop landing gear being triggered while in the galaxy map)
These do not appear to be boolean (obviously) and I cant even get the variable to be written to the log in order to figure out what they
might be..

Any help much appreciated.. using VA and EDDI together allows a far deeper level of customisation (particularly with Hotas setuos which have hard toggle switches) than the game alone would suggest possible..
 
I take it you're using this: https://github.com/EDCD/EDDI/wiki/VoiceAttack-Integration for information on the EDDI variables?

And to use them in VA take a little practice as sometimes you need to include the variable type and at others you don't. So to see what gui focus is currently set to by writing the value to the VA log you'd use this;
Code:
Write [Blue] 'GUI is currently set to: {TXT:Status gui focus}' to log
to handle all the options gui focus can have you'd use something like;
Code:
Write [Blue] 'GUI is currently set to: {TXT:Status gui focus}' to log
Begin Text Compare : [Status gui focus] Equals 'none'
    -- do stuff in here
Else If Text Compare : [Status gui focus] Equals 'internal panel'
    -- do stuff in here
Else If Text Compare : [Status gui focus] Equals 'external panel'
    -- do stuff in here
Else If Text Compare : [Status gui focus] Equals 'communications panel'
    -- do stuff in here
Else If Text Compare : [Status gui focus] Equals 'role panel'
    -- do stuff in here
End Condition
And the TXT/INT/DEC/BOOL prefix to the variable tells you the type of comparison you should be doing, for example {BOOL:Status docked} would be tested with a boolean compare;
Code:
Begin Boolean Compare : [Status docked] Equals True
    Say, 'command not available while ship is docked'
End Condition - Exit when condition met
The above could be placed at the top of a command which should not be executed while the ship is docked, deploy/raise landing gear for example, if the condition is met (true) then the command will exit.

Edit: Fixed the gui focus in the write to log parts as it should have been Status gui focus and not 'gui focus'
 
Last edited:
@UseLessUK - many thanks for this - exactly what I was looking for. I was using a syntax of [Status gui focus galmap] or variations of that - but I can see what I need to do from here...
 
Last edited:
@UseLessUK - hmmn

I'm still getting "none set" written to the log., and the If statement resolves to Else regardless of what the Gui Focus state is.. whatever panel or if the Gal map is open...

Hmmr - now I just noticed your edit.. I'll try again..
 

Attachments

  • 1614873236446.png
    1614873236446.png
    10 KB · Views: 132
Hey.... finally got the game to tell me I was in the galaxy map... thanks..
Yes, via the status.json file.


... also transferable to VA via EDDI variables and readable in VA

  • {TXT:Status gui focus} the commander's current focus. Can be one of "none", "internal panel" (right panel), "external panel" (left panel), "communications panel" (top panel), "role panel" (bottom panel), "station services", "galaxy map", "system map", "orrery", "fss mode", "saa mode", or "codex"
 
Last edited:
Assuming anyone is checking this thread -

I'm looking into ways to give the ships in E:D a better sense of realism (compared with DCS) and have so far gotten EDDI and VA together to require a locking down of the modules and hull before I can spool up the FSD. (as an example)

I am looking for a way to have a meaningful startup procedure - nothing too onerous or repetitive, but something like:
1) Switch on APU (completely fictitious - would give feedback and set a variable in VA)
2) Switch on electrical systems (would turn on the HUD)
3) Engage thrusters (all my axes are diverted to Vjoy - this would be a physical toggle that would be a condition in Joystick Gremlin)

To get to the point - I can do all of that - but I need a way to have the game start with no HUD. I know how to toggle the hud - how can I have this happen at game start reliably?
 
The only way I can think would be to control it with VoiceAttack and have VoiceAttack save the state of the variable. There is no state information visible to EDDI that would help with determining whether the HUD is active or not.
 
Top Bottom