Release EDDI 3.3 - Bring your cockpit to life

EDDI appears to be crashing VoiceAttack. It works as a standalone, but when running through voice attack, it crashes. I'm including a partial log file.


Code:
2020-05-02T03:34:30 [Error] EDDI:passToRespondersAsync EDSM responder failed to handle event {"targetlocked":true,"ship":"Type-7 Transporter","scanstage":1,"name":"William McElney","rank":"Deadly","faction":null,"power":"None","legalstatus":"None","bounty":null,"shieldhealth":null,"hullhealth":null,"subsystem":null,"subsystemhealth":null,"CombatRank":{"edname":"Deadly"},"LegalStatus":{"edname":"None"},"Power":{"edname":"None"},"raw":"{ \"timestamp\":\"2020-04-28T05:30:35Z\", \"event\":\"ShipTargeted\", \"TargetLocked\":true, \"Ship\":\"type7\", \"Ship_Localised\":\"Type-7 Transporter\", \"ScanStage\":1, \"PilotName\":\"$npc_name_decorate:#name=William McElney;\", \"PilotName_Localised\":\"William McElney\", \"PilotRank\":\"Deadly\" }","timestamp":"2020-04-28T05:30:35Z","type":"Ship targeted","fromLoad":true} {"ClassName":"System.OutOfMemoryException","Message":null,"Data":null,"InnerException":null,"HelpURL":null,"StackTraceString":"   at System.Threading.Thread.StartInternal(IPrincipal principal, StackCrawlMark& stackMark)\r\n   at System.Threading.Thread.Start(StackCrawlMark& stackMark)\r\n   at System.Threading.Thread.Start()\r\n   at EddiStarMapService.StarMapService.sendEvent(String eventData)\r\n   at EddiEdsmResponder.EDSMResponder.Handle(Event theEvent)\r\n   at Eddi.EDDI.<>c__DisplayClass155_1.<passToRespondersAsync>b__0()","RemoteStackTraceString":null,"RemoteStackIndex":0,"ExceptionMethod":"8\nStartInternal\nmscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\nSystem.Threading.Thread\nVoid StartInternal(System.Security.Principal.IPrincipal, System.Threading.StackCrawlMark ByRef)","HResult":-2147024882,"Source":"mscorlib","WatsonBuckets":null}
2020-05-02T03:34:30 [Error] EDDI:passToRespondersAsync EDSM responder failed to handle event {"targetlocked":true,"ship":"Type-7 Transporter","scanstage":1,"name":"William McElney","rank":"Deadly","faction":null,"power":"None","legalstatus":"None","bounty":null,"shieldhealth":null,"hullhealth":null,"subsystem":null,"subsystemhealth":null,"CombatRank":{"edname":"Deadly"},"LegalStatus":{"edname":"None"},"Power":{"edname":"None"},"raw":"{ \"timestamp\":\"2020-04-28T05:30:35Z\", \"event\":\"ShipTargeted\", \"TargetLocked\":true, \"Ship\":\"type7\", \"Ship_Localised\":\"Type-7 Transporter\", \"ScanStage\":1, \"PilotName\":\"$npc_name_decorate:#name=William McElney;\", \"PilotName_Localised\":\"William McElney\", \"PilotRank\":\"Deadly\" }","timestamp":"2020-04-28T05:30:35Z","type":"Ship targeted","fromLoad":true} System.Collections.Generic.Dictionary`2[System.String,System.Object]
2020-05-02T03:34:30 [Error] EDDI:passToMonitorPostHandlersAsync Material monitor failed to post-handle event {"targetlocked":true,"ship":"Type-7 Transporter","scanstage":1,"name":"William McElney","rank":"Deadly","faction":null,"power":"None","legalstatus":"None","bounty":null,"shieldhealth":null,"hullhealth":null,"subsystem":null,"subsystemhealth":null,"CombatRank":{"edname":"Deadly"},"LegalStatus":{"edname":"None"},"Power":{"edname":"None"},"raw":"{ \"timestamp\":\"2020-04-28T05:30:35Z\", \"event\":\"ShipTargeted\", \"TargetLocked\":true, \"Ship\":\"type7\", \"Ship_Localised\":\"Type-7 Transporter\", \"ScanStage\":1, \"PilotName\":\"$npc_name_decorate:#name=William McElney;\", \"PilotName_Localised\":\"William McElney\", \"PilotRank\":\"Deadly\" }","timestamp":"2020-04-28T05:30:35Z","type":"Ship targeted","fromLoad":true} {"ClassName":"System.OutOfMemoryException","Message":null,"Data":null,"InnerException":null,"HelpURL":null,"StackTraceString":"   at System.Threading.Thread.StartInternal(IPrincipal principal, StackCrawlMark& stackMark)\r\n   at System.Threading.Thread.Start(StackCrawlMark& stackMark)\r\n   at System.Threading.Thread.Start()\r\n   at EddiMaterialMonitor.MaterialMonitor.PostHandle(Event event)\r\n   at Eddi.EDDI.<>c__DisplayClass156_1.<passToMonitorPostHandlersAsync>b__0()","RemoteStackTraceString":null,"RemoteStackIndex":0,"ExceptionMethod":"8\nStartInternal\nmscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\nSystem.Threading.Thread\nVoid StartInternal(System.Security.Principal.IPrincipal, System.Threading.StackCrawlMark ByRef)","HResult":-2147024882,"Source":"mscorlib","WatsonBuckets":null}
2020-05-02T03:34:30 [Error] EDDI:passToMonitorPostHandlersAsync Material monitor failed to post-handle event {"targetlocked":true,"ship":"Type-7 Transporter","scanstage":2,"name":"William McElney","rank":"Deadly","faction":null,"power":"None","legalstatus":"None","bounty":null,"shieldhealth":100.0,"hullhealth":100.0,"subsystem":null,"subsystemhealth":null,"CombatRank":{"edname":"Deadly"},"LegalStatus":{"edname":"None"},"Power":{"edname":"None"},"raw":"{ \"timestamp\":\"2020-04-28T05:30:37Z\", \"event\":\"ShipTargeted\", \"TargetLocked\":true, \"Ship\":\"type7\", \"Ship_Localised\":\"Type-7 Transporter\", \"ScanStage\":2, \"PilotName\":\"$npc_name_decorate:#name=William McElney;\", \"PilotName_Localised\":\"William McElney\", \"PilotRank\":\"Deadly\", \"ShieldHealth\":100.000000, \"HullHealth\":100.000000 }","timestamp":"2020-04-28T05:30:37Z","type":"Ship targeted","fromLoad":true} {"ClassName":"System.OutOfMemoryException","Message":null,"Data":null,"InnerException":null,"HelpURL":null,"StackTraceString":"   at System.Threading.Thread.StartInternal(IPrincipal principal, StackCrawlMark& stackMark)\r\n   at System.Threading.Thread.Start(StackCrawlMark& stackMark)\r\n   at System.Threading.Thread.Start()\r\n   at EddiMaterialMonitor.MaterialMonitor.PostHandle(Event event)\r\n   at Eddi.EDDI.<>c__DisplayClass156_1.<passToMonitorPostHandlersAsync>b__0()","RemoteStackTraceString":null,"RemoteStackIndex":0,"ExceptionMethod":"8\nStartInternal\nmscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\nSystem.Threading.Thread\nVoid StartInternal(System.Security.Principal.IPrincipal, System.Threading.StackCrawlMark ByRef)","HResult":-2147024882,"Source":"mscorlib","WatsonBuckets":null}
2020-05-02T03:34:30 [Error] EDDI:passToMonitorPostHandlersAsync Material monitor failed to post-handle event {"targetlocked":true,"ship":"Type-7 Transporter","scanstage":1,"name":"William McElney","rank":"Deadly","faction":null,"power":"None","legalstatus":"None","bounty":null,"shieldhealth":null,"hullhealth":null,"subsystem":null,"subsystemhealth":null,"CombatRank":{"edname":"Deadly"},"LegalStatus":{"edname":"None"},"Power":{"edname":"None"},"raw":"{ \"timestamp\":\"2020-04-28T05:30:35Z\", \"event\":\"ShipTargeted\", \"TargetLocked\":true, \"Ship\":\"type7\", \"Ship_Localised\":\"Type-7 Transporter\", \"ScanStage\":1, \"PilotName\":\"$npc_name_decorate:#name=William McElney;\", \"PilotName_Localised\":\"William McElney\", \"PilotRank\":\"Deadly\" }","timestamp":"2020-04-28T05:30:35Z","type":"Ship targeted","fromLoad":true} System.Collections.Generic.Dictionary`2[System.String,System.Object]
2020-05-02T03:34:30 [Error] EDDI:passToMonitorPostHandlersAsync Material monitor failed to post-handle event {"targetlocked":true,"ship":"Type-7 Transporter","scanstage":2,"name":"William McElney","rank":"Deadly","faction":null,"power":"None","legalstatus":"None","bounty":null,"shieldhealth":100.0,"hullhealth":100.0,"subsystem":null,"subsystemhealth":null,"CombatRank":{"edname":"Deadly"},"LegalStatus":{"edname":"None"},"Power":{"edname":"None"},"raw":"{ \"timestamp\":\"2020-04-28T05:30:37Z\", \"event\":\"ShipTargeted\", \"TargetLocked\":true, \"Ship\":\"type7\", \"Ship_Localised\":\"Type-7 Transporter\", \"ScanStage\":2, \"PilotName\":\"$npc_name_decorate:#name=William McElney;\", \"PilotName_Localised\":\"William McElney\", \"PilotRank\":\"Deadly\", \"ShieldHealth\":100.000000, \"HullHealth\":100.000000 }","timestamp":"2020-04-28T05:30:37Z","type":"Ship targeted","fromLoad":true} System.Collections.Generic.Dictionary`2[System.String,System.Object]
2020-05-02T03:34:30 [Warning] StarMapService:sendEvent The operation has timed out
2020-05-02T03:34:30 [Warning] StarMapService:sendEvent The operation has timed out
2020-05-02T03:34:30 [Warning] StarMapService:sendEvent The operation has timed out
2020-05-02T03:34:31 [Warning] StarMapService:sendEvent The operation has timed out
2020-05-02T03:34:31 [Warning] StarMapService:sendEvent The operation has timed out
2020-05-02T03:34:31 [Warning] StarMapService:sendEvent The operation has timed out
2020-05-02T03:34:31 [Info] ResourceBasedLocalizedEDName:FromEDName Unknown ED name publicholiday in resource EddiDataDefinitions.Properties.FactionStates
2020-05-02T03:34:31 [Warning] StarMapService:sendEvent The operation has timed out
2020-05-02T03:34:31 [Warning] StarMapService:sendEvent The operation has timed out
2020-05-02T03:34:31 [Warning] StarMapService:sendEvent The operation has timed out
2020-05-02T03:34:31 [Warning] StarMapService:sendEvent The operation has timed out
2020-05-02T03:34:31 [Warning] StarMapService:sendEvent The operation has timed out
2020-05-02T03:34:31 [Warning] StarMapService:sendEvent The operation has timed out
2020-05-02T03:34:31 [Warning] StarMapService:sendEvent The operation has timed out
2020-05-02T03:34:31 [Warning] StarMapService:sendEvent The operation has timed out
2020-05-02T03:34:31 [Warning] StarMapService:sendEvent The operation has timed out
2020-05-02T03:34:31 [Warning] StarMapService:sendEvent The operation has timed out
 
I Have a few question to EDDI VoiceAttack Plugin:

1. I don´t understand the Event mecanism.
I´m trying to create a VA command that when I say it, checks if the Event is triggered.
Is this even possible or do I have to create this ((EDDI: docking granted)) command that inside "Set boolean [Status docking granted] to true"
I tried already to create this
Code:
Begin Boolean Compare : [Status docking granted] Equals True
Say, `test succsessful`
Else
Play sound, `{VA_SOUNDS\denydeep4.mp3`
End Condition
but it doesn´t work

edit: Also when i log into the game all Status docked, undocked and landed are "not set" how do i change that?


2. Is there any way to check if i am inside the stations proximity so that i can trigger a automatic command to request docking?
Or to check it I am in proximity so that i can trigger this by voice or button?
I tried the "EDDI station no fire zone entered weaponsdeployed" and it kind a worked, but if i enter it with weapons deployed and than retract them it still sees me as entered and deployed. Then I have to fly out and inside again....
"EDDI station no fire zone entered" doesn´t recognize for some reason....

3. Ship size "small" is always "not set"
Large and medium always speaks out as "large" and "medium"
every time I check Ship size in a small ship it says "not set"

4. Is it possible to check the number of chaff, shieldzells and heatsink?
 
Last edited:
I Have a few question to EDDI VoiceAttack Plugin:

1. I don´t understand the Event mecanism.
I´m trying to create a VA command that when I say it, checks if the Event is triggered.
Is this even possible or do I have to create this ((EDDI: docking granted)) command that inside "Set boolean [Status docking granted] to true"
I tried already to create this
Code:
Begin Boolean Compare : [Status docking granted] Equals True
Say, `test succsessful`
Else
Play sound, `{VA_SOUNDS\denydeep4.mp3`
End Condition
but it doesn´t work

edit: Also when i log into the game all Status docked, undocked and landed are "not set" how do i change that?


2. Is there any way to check if i am inside the stations proximity so that i can trigger a automatic command to request docking?
Or to check it I am in proximity so that i can trigger this by voice or button?
I tried the "EDDI station no fire zone entered weaponsdeployed" and it kind a worked, but if i enter it with weapons deployed and than retract them it still sees me as entered and deployed. Then I have to fly out and inside again....
"EDDI station no fire zone entered" doesn´t recognize for some reason....

3. Ship size "small" is always "not set"
Large and medium always speaks out as "large" and "medium"
every time I check Ship size in a small ship it says "not set"

4. Is it possible to check the number of chaff, shieldzells and heatsink?

Hi F4QuArL,

While I don't do much with VA, I can try to help with your questions.


1. To use the Event mechanism, you must create a VA command called ((EDDI <event name>)) (and without the colon ':' you have). So in your case ((EDDI docking granted)). The event name must all be lowercase. To make sure things work best, it's a good idea to also set Event commands to have 'voice disabled' so that they only execute when the event happens in game. To do this, untick all four boxes at the top of the edit command window.

When the event happens in game (you request docking and the station grants it) then the VA command will execute. Part of the reason your command doesn't work, is because there is no Status variable called 'docking granted'.

By the look of your VA command, you want to play a sound if docking has not been granted. In which case, you can use the 'docking denied' event to play the sound, instead of using the compare in docking granted. Create a command called ((EDDI docking denied)) and put your play sound in that.

As for the docked, undocked and landed statuses, I just loaded into game to try them. I am in a station, docked is 'True', and landed is 'False'. There is no status for undocked, it is just docked = False. How are you trying to use these in your commands? They should look something like {BOOL:Status docked} if you want to write it to the VA log window, or just Status docked (as a Boolean) if you want to use it in an IF condition.


2. I'm not sure if you can check for being close enough to request docking. Docking can be requested at a distance of 7.5km, and by the time you slow down after exiting super cruise, you should already be within 7.5km.

The 'no fire zone' is 8km, and as you say, there are events for entering and exiting this. I just tried creating a command for ((EDDI station no fire zone entered)) and it worked fine. Can you take a screen shot of the edit command window for us to see? Maybe we can work out why yours doesn't work.


3. I just checked {TXT:Ship size} (writing to VA log window) in a Sidewinder, and it correctly shows as 'Small'. However, I did have to wait for a few seconds after swapping to a new Sidewinder before the change to a small ship was recognised.


4. Unfortunately, I don't think there is a way to know the level of 'ammunition' you have for those modules.

You can check the EDDI VA help page for a list of variables that are available to use:
 
Hi Darkcyde,

4. That is realy unfortunat, that would have been great.

3. For some reason does it now register correctly as "Small"

2. That is unfortunat too

1. Well that is kind of the problem.

I don´t want to an command that executes my docking prosedure when I enter the no fire zone or get a docking granted event.
I want a Boolean Value set.
So i can execute a Command that checks these Boolean Values.

I´ve testet the ((EDDI Station no fire zone entered)) again withoud the " : " and now it works.

But a still don´t understand why i can acsess the {BOOL:EDDI station no fire zone entered weaponsdeployed}
but {BOOL:EDDI station no fire zone entered} is always not set

the hickup with "Status docked" and "Status undocked" is solved, I thought if there is a Status for docked and a Event, so will be a Status for the Event Undocked. But ok, good to know.
 
I don´t want to an command that executes my docking prosedure when I enter the no fire zone or get a docking granted event.
I want a Boolean Value set.
So i can execute a Command that checks these Boolean Values.
Ah, ok. In that case, in either of the ((EDDI station no fire zone entered)) or ((EDDI docking granted)) event commands (whichever suits your purpose best) just set a variable to be True. You can call the variable anything, but preferably something that EDDI doesn't use already, so you could try 'docking_granted' or 'zone_entered' (using underscores instead of spaces between the words). Then in your other command, just check the variable. Remember to set the variable to False when you undock, so create a command for the Undock event ((EDDI undocked)) and set it there.

But a still don´t understand why i can acsess the {BOOL:EDDI station no fire zone entered weaponsdeployed}
but {BOOL:EDDI station no fire zone entered} is always not set
The reason {BOOL:EDDI station no fire zone entered} is not set is because it doesn't exist in the way you are trying to use it. You can't use event names as variables like that. Also, with the exception of a couple of 'Miscellaneous' variables, all built-in ones don't have 'EDDI' in them. That being said, I don't know why you can access {BOOL:EDDI station no fire zone entered weaponsdeployed}, as this should also be 'Not set', unless you have set it in another command. However, I just tried it exactly as you have it, and it reports as 'False' for me. Yet, if I try {BOOL:EDDI station no fire zone entered} or {BOOL:EDDI weaponsdeployed} (with or without the 'EDDI') they are both 'Not set', as expected. However, like I said, I don't do much with VA, so there may be a reason for this that I am not aware of.

If you want to check if your weapons are out, you can use {BOOL:Status hardpoints deployed}. This will be True if they are, and False if they are not.
 
Okay, with the Events set up correctly and the Boolean Values in Place it now works.
I still have to test if {BOOL:EDDI station no fire zone exited} will trigger if i jump out of the system, but I can set up another Event that looks out when I´m Jumping.


That being said, I don't know why you can access {BOOL:EDDI station no fire zone entered weaponsdeployed}, as this should also be 'Not set', unless you have set it in another command.
...
However, I just tried it exactly as you have it, and it reports as 'False' for me.
Well I can´t explain it either, but it did work, but I don´t use it. I like the Event-> Sets Value way more.


If you want to check if your weapons are out, you can use {BOOL:Status hardpoints deployed}. This will be True if they are, and False if they are not.
Yeah this Boolean Check was in my docking command from the beginning and didn´t cause any trouble.
Now its connected to my "zone_entered" Value and does its work like a charme
 
But a still don´t understand why i can acsess the {BOOL:EDDI station no fire zone entered weaponsdeployed}
but {BOOL:EDDI station no fire zone entered} is always not set

First thing: For testing and development, create a voice command for "Reset all saved variables" -- and use the VoiceAttack Action: Advanced>Clear Saved Values from Profile

This way you can get clean reset tests between your trials.

Use the EDDI Events to create VA Commands -- inside those commands, do your evaluations and set your personal variables for your profile to function, like a boolean that holds the value "ship_undocked" == true

You need to create two for each type if they exists, Docking and Undocking, Landed and Takeoff, etc. Absolutely no clue how you got a boolean variable from an EDDI event but I'm assuming it got set as a boolean to 'true' during testing, which is why I suggest the "clear" command for troubleshooting/testing.

examples:
oneForEach.PNG
EDDIundocked.PNG

EDDIbooleanOnEvent.PNG


Any questions, feel free to ask - I've been working with VA and EDDI for about four years, and the rabbit hole just keeps getting deeper :cool:
 
Yea I´ve set up Reset all saved variables and it cleared everything.

You need to create two for each type if they exists, Docking and Undocking, Landed and Takeoff, etc. Absolutely no clue how you got a boolean variable from an EDDI event but I'm assuming it got set as a boolean to 'true' during testing, which is why I suggest the "clear" command for troubleshooting/testing.

But even if i clear all values and load VA again {BOOL:EDDI station no fire zone exited} is still there and sets ether True or False


It works now.
Thanks to everyone who put time in my Questions
 
Last edited:
Hi EDDI community. Quick question ... I've literally just installed EDDI for the first time (I know, I know) and have it linked up to VoiceAttack, EDSM, INARA and the Frontier API. So, I'm pretty sure I've seen EDDI do this ... can I set things up so EDDI will tel me the position of my assigned landing pad (e.g. "2 o'clock, at the back" ... that kinda thing). I haven't actually had time to trial EDDI with the game running yet so maybe it just does this automatically?
 
Hi EDDI community. Quick question ... I've literally just installed EDDI for the first time (I know, I know) and have it linked up to VoiceAttack, EDSM, INARA and the Frontier API. So, I'm pretty sure I've seen EDDI do this ... can I set things up so EDDI will tel me the position of my assigned landing pad (e.g. "2 o'clock, at the back" ... that kinda thing). I haven't actually had time to trial EDDI with the game running yet so maybe it just does this automatically?

It certainly does what you are asking about the landing pad automatically.

It's a very cool and useful program. I run it independently (I use VA because I play VR), but otherwise don't connect to anything. Once you have time create a new profle for yourself (so you can edit scripts) and then take a look through some of the scripts which will give you an idea of some of the things it can do for you.
 
Hi EDDI community. Quick question ... I've literally just installed EDDI for the first time (I know, I know) and have it linked up to VoiceAttack, EDSM, INARA and the Frontier API. So, I'm pretty sure I've seen EDDI do this ... can I set things up so EDDI will tel me the position of my assigned landing pad (e.g. "2 o'clock, at the back" ... that kinda thing). I haven't actually had time to trial EDDI with the game running yet so maybe it just does this automatically?
Hi there,

Welcome to the wonderful world of EDDI! ;)

Yes the default EDDI personality will report your landing pad number for all stations and outposts. It will also say the "2 o'clock, at the back" for large space stations only.

I hope you have a lot of fun with what EDDI brings to the game.

-=] Darkcyde [=-
 
Hello,

I'm french but I play ED in english. I use VoiceAttack with EDDI as plugin. I can set the language to english and it works for the next game. But when I restart my computer, that setting falls back to french.
When it happens, I need to open the EDDI standalone and change the language back to english. The combo is blank at that time. Like it's unable to load the config file and falls back to default.
Any advice ?
 
Hello,

I'm french but I play ED in english. I use VoiceAttack with EDDI as plugin. I can set the language to english and it works for the next game. But when I restart my computer, that setting falls back to french.
When it happens, I need to open the EDDI standalone and change the language back to english. The combo is blank at that time. Like it's unable to load the config file and falls back to default.
Any advice ?

That shouldn't happen, please open a ticket at https://github.com/EDCD/EDDI/issues

I'm the 1/3 non-VA dev but I'm sure the others will be able to find the problem.
 
Hello,

I'm french but I play ED in english. I use VoiceAttack with EDDI as plugin. I can set the language to english and it works for the next game. But when I restart my computer, that setting falls back to french.
When it happens, I need to open the EDDI standalone and change the language back to english. The combo is blank at that time. Like it's unable to load the config file and falls back to default.
Any advice ?
I tried to test this with the latest current nightly build this evening. The current build seems to be remembering language just fine between runs and after restarting the PC, with no difference whether running under VoiceAttack or in standalone mode (so either it's fixed in the latest build or I'm not replicating the conditions on your PC well). You didn't mention which version of EDDI you are using but we're getting to release a new beta version within the next couple of days and we'd like to ask for your help to test that version for this issue. :)
 
Hi Commanders,
In EDDI, is there a way to have Voice Attack announce when a Human CMDR is detected ?
Not really. We can detect if message was received from a human, if you've been interdicted by a human, if you've escaped a human interdiction, or if you've interdicted another human player. That's about all that we can learn from the player journal about any nearby human commanders.
 
I tried to test this with the latest current nightly build this evening. The current build seems to be remembering language just fine between runs and after restarting the PC, with no difference whether running under VoiceAttack or in standalone mode (so either it's fixed in the latest build or I'm not replicating the conditions on your PC well). You didn't mention which version of EDDI you are using but we're getting to release a new beta version within the next couple of days and we'd like to ask for your help to test that version for this issue. :)
Ok. I've created an issue about that on github. I'll be happy to test the new version.
 
Back
Top Bottom