Discussion Voice Attack + EDDI Command help

Ive been searching for a number of mind boggling hours trying to find some good examples of how to set up a command to both deploy and retract hardpoints while checking the true or false vaules relaying info such as when I say "deploy hardpoints" the AI responds with "hardpoints deployed" but if I repeat the command it states "hardpoints are already deployed" and then starts the next chain where if I say "retract hardpoints" it will retract them and say "hardpoints retracted"

Am I crazy, or just not understanding how to set any of this up?

Hopefully this isnt too confusing and I am also new to doing advanced commands with Booleans so be gentle please :)

Below is currently all I have figured out to do successfully and any help would be greatly appreciated!

1605435041049.png





{Edit}
Did some messing around with the command more after getting a reply and looking some more info up and got to this point but still confused on what exactly to do for the functions I want.

The command below opens/deploys hardpoints then runs text "hardpoints deployed" but if command is ran again check comes back true and then instead retracts the hardpoints and runs text "hardpoints retracted"

So from my understanding thus far, all ive done here is create a loop essentially
1605466101492.png



{Edit 2}

Since all of the replies and since the time since I posted the first two images, my understanding of how VA works improved by incorporating and using examples from other commands you all have shown me and thus, this is the result of said work.

1605843065089.png


1605843159962.png


1605843185440.png


1605843420327.png


The last picture being almost an exact copy of one example that was provided to me. After making it and studying it intensely (lol) I finally realized what I wasnt seeing and was doing wrong before and this reflects in the inara command I created that is posted above.

For those curious
I have Inara set to open as a separate window from google chrome and act like an app, then I put the "exe" in my start menu so when I hit the windows key its there for use.
1605843982150.png


Reason for this
When I tried to use a direct exe file for it, it wouldnt open it as a separate window like an "app" but instead open my existing chrome browser and tabs. Thus, this is my work around for that.

Any other advice anyone has is more than helpful as I am still pretty new to setting up voice attack commands this advanced. I appreciate all the vast responses so far though and it wont be wasted.

{EDIT 3}
Upon testing the "Inara" command I created, it seemed to work as functioned but then wouldnt relay the proper messages so I changed the sequence to as follows

Changing the second text script to a boolean compare

1605846910639.png
 
Last edited:
Sorry for my English. I hope I understood you correctly.
There is the EVENT "Hardpoints" at EDDI (at ED in the Status-Event). EDDI creates for VA the status variable
{BOOL:Status hardpoints deployed} a boolean value indicating whether hardpoints are currently deployed (true).
Do not set the variable yourself but take it from EDDI for VA. My command looks and works like this.

Begin Boolean Compare : [Status hardpoints deployed] Equals False
__Press B key and hold for 0,2 seconds and release
__Set text [Script] to 'Waffen ausgefahren'
/ ("weapon deployed")
__Execute external plugin, 'EDDI 3.7.1'
__Write [Orange] 'Waffen draussen ? = {BOOL:Status hardpoints deployed}' to log
/ (write to log "weapon deployed?" = true or false)
__Pause 3 seconds
End Condition - Exit when condition met
Press B key and hold for 0,2 seconds and release
Set text [Script] to 'Waffen eingefahren'
/ ("weapon retracted")
Execute external plugin, 'EDDI 3.7.1'
Write [Blue] 'Waffen draussen ? = {BOOL:Status hardpoints deployed}' to log
/ (write to log "weapon deployed?" = true or false)
 
Last edited:
I followed what you showed as an example but still stuck and even more confused now, I thought only 1 execute plugin was needed. Do I need to create separate entries for each command like one entry for deploy hardpoints and one for retract hardpoints? Also where does the code there tell it to pull from log to check value and change it back to normal state?
 
OK two explanations.
1.
Set text [Script] to 'Waffen ausgefahren'
Execute external plugin, 'EDDI 3.7.1'

these lines are only for EDDI to speak. You can delete the lines and instead output the message about VA,
let it speak, for example with "Say something with Text-to-Speech".
Edit command => right mouse-button => Other => Sounds => Say something with Text-to-Speech
2. EDDI creates variables for VA ! Please read the notes on the github page. VA can read these variables,
here is the bool-variable "Status hardpoints deployed" (true or false)

Try the following:

1605469202094.png
 
Last edited:
OK two explanations.
1.
Set text [Script] to 'Waffen ausgefahren'
Execute external plugin, 'EDDI 3.7.1'

these lines are only for EDDI to speak. You can delete the lines and instead output the message about VA,
let it speak, for example with "Say something with Text-to-Speech".
Edit command => right mouse-button => Other => Sounds => Say something with Text-to-Speech
2. EDDI creates variables for VA ! Please read the notes on the github page. VA can read these variables,
here is the bool-variable "Status hardpoints deployed" (true or false)

Try the following:

View attachment 195420
Perhaps something like this?
Code:
Begin Text Compare : [{TXT:Environment}] Equals 'Supercruise'
    Set text [Script] to 'Cannot comply. The ship is in supercruise.'
Else If Text Compare : [{TXT:Environment}] Equals 'Witch space'
    Set text [Script] to 'Cannot comply. The ship is in witch space.'
Else If Boolean Compare : [Status docked] Equals True
    Set text [Script] to 'Cannot comply. The ship is docked.'
Else
    Begin Boolean Compare : [Status hardpoints deployed] Equals False
        Begin Condition : ([{LASTSPOKENCMD}] Does Not Contain 'retract' AND [{LASTSPOKENCMD}] Does Not Contain 'stow')
            Set text [Script] to 'Weapons [hot;deployed];[Readying;Deploying] [weapons;hardpoints;armaments;guns]'
            Execute command, '((Hardpoints))' (by name) (and wait until it completes)
        Else
            Set text [Script] to '[The;] [Hardpoints;weapons] are already [retracted;stowed]'
        End Condition
    Else
        Begin Condition : ([{LASTSPOKENCMD}] Does Not Contain 'deploy' AND [{LASTSPOKENCMD}] Does Not Contain 'ready')
            Set text [Script] to 'Weapons [stowed;retracted];[Stowing;Retracting] [weapons;hardpoints;armaments;guns]'
            Execute command, '((Hardpoints))' (by name) (and wait until it completes)
        Else
            Set text [Script] to '[The;] [Hardpoints;weapons] are already [deployed;ready]'
        End Condition
    End Condition
End Condition
Execute external plugin, 'EDDI 3.7.1'
Notes:
  • "When I say" contains: [Deploy;ready;retract;stow] [the;] [hardpoints; hard points; weapons; armaments; guns]
  • The plugin is being invoked to say the text in the Script variable, as @nepomuk explained above
  • ((Hardpoints)) is a separate command containing just the key binding for hardpoints
 
In your first example, if you remove the "retract" check, the code will work fine.
You would then need to create a similar but seperate command for retract.

Otherwise, because you are using both deploy and retract to fire the code, you need logic to check which phrase you actually said.

T'kael's solution should do what you need and adds additional checks in a single command.

Clicker
 
In your first example, if you remove the "retract" check, the code will work fine.
You would then need to create a similar but seperate command for retract.

Otherwise, because you are using both deploy and retract to fire the code, you need logic to check which phrase you actually said.

T'kael's solution should do what you need and adds additional checks in a single command.

Clicker

You do not need to set the variable. EDDI passes the status of the variable to VA. That the problem in its code.
But you are right, if he takes out the SET command for the variable, everything should work.
 
Last edited:
So if im understanding this all correctly, i have to create an entry for hardpoints and then a separate command to run the chain like the above example?
 
So if im understanding this all correctly, i have to create an entry for hardpoints and then a separate command to run the chain like the above example?

No, you don't have to, you can if you want.
The retraction or deployment of the weapons can be accompanied linguistically with a command. T'kael has shown a very elegant example, with a query whether you are in supercruise or not. :cool:

Take your text from the first image, remove the SET command for the variable (Set Bolean [Status Hardpoints deployed]) and test. You will see it works. ;)

One more important question: You use Voice Attack with EDDI as a plug-in ? :unsure:
This is important for the function !

Translated with www.DeepL.com/Translator (free version)
 
So if im understanding this all correctly, i have to create an entry for hardpoints and then a separate command to run the chain like the above example?

Hello CMDR, this is what I do for exactly what you wanted to do. So glad fellow gamers gets the efficiency of speech.

1605569738439.png


You can ignore the Set small int, that's just for me. The Ship Deploy Hardpoints - bindED is the "key" VA presses.

As TK showed hardpoints deployed is a BOOL that you can check. The crazy thing about VoiceAttack though is, it doesn't allow BOOL var with colons. So instead of booleaning, I used Text Compare to achieve the same thing. For retract:

1605569748640.png


If you'd like to study other stuffs, my profile is free here: https://forums.frontier.co.uk/threads/3-7-voiceattack-profile-sharing-eddi-binded.557121/

If you'd like to know where the BOOL came from, it's here: https://github.com/EDCD/EDDI/wiki/VoiceAttack-Integration
 

Attachments

  • 1605569386532.png
    1605569386532.png
    72 KB · Views: 230
  • 1605569502829.png
    1605569502829.png
    71 KB · Views: 213
Last edited:
As requested, the contents of my ((Hardpoints)) command is as follows:
Code:
Begin Text Compare : [edDeployHardpointToggle] Has Been Set
    Press variable key(s) [edDeployHardpointToggle] and hold for 0.1 seconds and release
Else
    Press U key and hold for 0.03 seconds and release
End Condition
This command preferentially uses keybindings set from the BindED plugin, which you can learn more about here. It falls back to a hard-coded key if the BindED plugin isn't installed.
 
You guys have been amazing with the responses, I am gonna go over all this info and go from there and post some updates when I have finished. I think I got a way better understanding of what to do now after reading all this though so thanks guys!
 
No, you don't have to, you can if you want.
The retraction or deployment of the weapons can be accompanied linguistically with a command. T'kael has shown a very elegant example, with a query whether you are in supercruise or not. :cool:

Take your text from the first image, remove the SET command for the variable (Set Bolean [Status Hardpoints deployed]) and test. You will see it works. ;)

One more important question: You use Voice Attack with EDDI as a plug-in ? :unsure:
This is important for the function !

Translated with www.DeepL.com/Translator (free version)


Yes, I use Eddi as a plugin for VA and I actually did end up removing the Set boolean status the other night, but I didnt know thats what you were meaning to do. Since I removed that one command it seems to be working without any issue, so now I may just improve the command by using examples of what others have posted here to "enhance" the command if you will. I just didnt understand exactly how boolean worked along with a few other features of VA, I'm more of a visual learner rather than a read it and learn it guy.
 
Greetings,

Here's how I have my [deploy;retract]weapons command setup (note I also use the bindED plugin, hence the variable keys, along with EDDI)
Code:
Set Boolean [edExecute] to False
Begin Condition : ([{CMDSEGMENT:0}] Equals 'deploy' AND [Status hardpoints deployed] Equals False)
    Play sound, '{VA_SOUNDS}\Ripley Galactic\KICS 4\Audio\Weapons_DeployingHardpoints.mp3'
    Set Boolean [edExecute] to True
Else If : ([{CMDSEGMENT:0}] Equals 'deploy' AND [Status hardpoints deployed] Equals True)
    Say, 'the hardpoints are already deployed'
    Write [Gray] 'Hardpoints are already deployed, not check the HUD?' to log
Else If : ([{CMDSEGMENT:0}] Equals 'retract' AND [Status hardpoints deployed] Equals True)
    Play sound, '{VA_SOUNDS}\Ripley Galactic\KICS 4\Audio\Weapons_RetractingHardpoints.mp3'
    Set Boolean [edExecute] to True
Else If : ([{CMDSEGMENT:0}] Equals 'retract' AND [Status hardpoints deployed] Equals False)
    Say, 'the hardpoints are already retracted'
    Write [Gray] 'Hardpoints are already retracted, not check the HUD?' to log
End Condition
Pause 1 second
Begin Boolean Compare : [edExecute] Equals True
    Begin Text Compare : [edDeployHardpointToggle] Has Been Set
        Press variable key(s) [edDeployHardpointToggle] and hold for 0.1 seconds and release
    Else
        Write [Gray] 'Variable keypress not set. Using default keypress.' to log
        Press # ~ key and hold for 0.1 seconds and release
    End Condition
End Condition
Pause 0.05 seconds

I then use the above in the [hyperspace;supercruise] command as I check to see if anything that can stop the command working, i.e. hardpoints being deployed, are checked to see if they are deployed and if so then retract them ...
Code:
Begin Boolean Compare : [Status landing gear down] Equals True
    Write [Purple] 'retracting landing gear' to log
    Execute command, 'retract landing gear' (by name) (and wait until it completes)
    Pause 0.05 seconds
End Condition
Begin Boolean Compare : [Status hardpoints deployed] Equals True
    Write [Purple] 'retracting hardpoints' to log
    Execute command, 'retract weapons' (by name) (and wait until it completes)
    Pause 0.05 seconds
End Condition
Begin Boolean Compare : [Status cargo scoop deployed] Equals True
    Write [Purple] 'retracting cargo scoop' to log
    Execute command, 'retract scoop' (by name) (and wait until it completes)
    Pause 0.05 seconds
End Condition
Play sound, '{VA_SOUNDS}\Ripley Galactic\KICS 4\Audio\FlightMisc_SpinningUpDrive.mp3'
Begin Text Compare : [{CMDSEGMENT:0}] Equals 'hyperspace'
    Begin Text Compare : [edHyperspace] Has Been Set
        Press variable key(s) [edHyperspace] and hold for 0.1 seconds and release
    Else
        Write [Gray] 'Variable keypress not set. Using default keypress.' to log
        Press . > key and hold for 0.1 seconds and release
    End Condition
Else If Text Compare : [{CMDSEGMENT:0}] Equals 'supercruise'
    Begin Text Compare : [edSupercruise] Has Been Set
        Press variable key(s) [edSupercruise] and hold for 0.1 seconds and release
    Else
        Write [Gray] 'Variable keypress not set. Using default keypress.' to log
        Press , < key and hold for 0.1 seconds and release
    End Condition
End Condition
Pause 0.05 seconds

and then I also have an EDDI event function ((EDDI fsd engaged)) which contains the following;
Code:
Begin Text Compare : [{TXT:EDDI fsd engaged target}] Equals 'Supercruise'
    Write [Gray] 'entering Supercruise' to log
    Play random sound (3 items)
Else If Text Compare : [{TXT:EDDI fsd engaged target}] Equals 'Hyperspace'
    Write [Black] 'entering Hyperspace' to log
    Play random sound (2 items)
End Condition

All the sounds are from the Ripley Galactic collection available from here: https://www.alpha-orbital.com/kics

Edit: Here's the command I use to toggle the FSD [disengage;drop;engage;jump]
Code:
Begin Boolean Compare : [Status docked] Equals False
    Begin Condition : [{CMDSEGMENT:0}] Equals 'engage' OR [{CMDSEGMENT:0}] Equals 'jump'
        Begin Boolean Compare : [{Status landing gear down}] Equals True
            Write [Purple] '[drop;engage;jump] retracting landing gear' to log
            Execute command, 'retract landing gear' (by name) (and wait until it completes)
        End Condition
        Begin Boolean Compare : [{Status hardpoints deployed}] Equals True
            Write [Purple] '[drop;engage;jump] retracting hardpoints' to log
            Execute command, 'retract weapons' (by name) (and wait until it completes)
        End Condition
        Begin Boolean Compare : [{Status cargo scoop deployed}] Equals True
            Write [Purple] '[drop;engage;jump] retracting cargo scoop' to log
            Execute command, 'retract scoop' (by name) (and wait until it completes)
        End Condition
    End Condition
Else
    Write [Red] 'checks skipped, ship is currently docked' to log
End Condition
Begin Condition : [{CMDSEGMENT:0}] Equals 'engage' OR [{CMDSEGMENT:0}] Equals 'jump'
    Begin Condition : ([Status docked] Equals False AND [Status fsd status] Does Not Equal 'masslock')
        Play sound, '{VA_SOUNDS}\Ripley Galactic\KICS 4\Audio\FlightMisc_Engaging.mp3'
        Begin Text Compare : [edHyperSuperCombination] Has Been Set
            Press variable key(s) [edHyperSuperCombination] and hold for 0.1 seconds and release
        Else
            Write [Gray] 'Variable keypress not set. Using default keypress.' to log
            Press J key and hold for 0.1 seconds and release
        End Condition
    Else
        Write [Red] 'ship currently docked or still masslocked, command ignored' to log
    End Condition
Else If : [{CMDSEGMENT:0}] Equals 'disengage' OR [{CMDSEGMENT:0}] Equals 'drop'
    Begin Boolean Compare : [{Status supercruise}] Equals True
        Play sound, '{VA_SOUNDS}\Ripley Galactic\KICS 4\Audio\FlightMisc_Disengaging.mp3'
        Begin Text Compare : [edHyperSuperCombination] Has Been Set
            Press variable key(s) [edHyperSuperCombination] and hold for 0.1 seconds and release
        Else
            Write [Gray] 'Variable keypress not set. Using default keypress.' to log
            Press J key and hold for 0.1 seconds and release
        End Condition
    Else
        Write [Red] 'not in Supercruise - command ignored' to log
    End Condition
End Condition
 
Last edited:
I updated the entire post to reflect the changes and knowledge gained because of all the help you guys gave! I was going insane till you guys came along lol!!
In the command:
Retract hardpoints; no guns; holster; guns in
you have:
Code:
Begin Text Compare : [{BOOL:Status hardpoints deployed}] Equals 'False'

Have you tried using the boolean compare instead of the text compare as the value is a boolean value?

So you'd end up with something this:
Code:
Begin Boolean Compare : [Status hardpoints deployed] Equals False

See the attached image, the boolean tab is the active one
 

Attachments

  • VA_OtherStuff.jpg
    VA_OtherStuff.jpg
    67.1 KB · Views: 223
Last edited:
Back
Top Bottom