Release EDDI Scripts and EDDI enabled VA Commands Thread

OK, it's that time again for a new version of my EDDI & VA personality. ๐Ÿ˜Š

I had wanted to release this earlier in the week, but life got in the way, as it tends to do far too often.
Thanks for this update. I have enjoyed using your variation of the EDDI personality for some time now. Much appreciate the effort. WOZZ
 
Any way of getting EDDI to tell me how many Mission Reward Materials I have in storage on Mission Completion? You gave me one for Materials found that I can adjust depending on whether I want to hear it or not.
 
OK, it's that time again for a new version of my EDDI & VA personality. ๐Ÿ˜Š

I had wanted to release this earlier in the week, but life got in the way, as it tends to do far too often.

Here's the latest changes:
Released 06-05-22
=================

VoiceAttack
===========
((EDDI docked))
- Changed the keypress function calls for automatically entering the hangar to 'one left' instead of 'three right'. This is faster, and should stop instances of keypresses being messed up by the game (it sometimes lagged and ended up doing four right and clicking 'refuel' instead).

((EDDI npc interdiction commenced))
- Changed the name of this to use lowercase 'npc' as that is the correct format, so this should work as intended now.
- Added unblocking mouse and keyboard, in case this cancels 'Autoroute' halfway through, while the mouse and keyboard are blocked.

((EDDI shutdown))
- Copied the write to file code from the 'Update Mission Route' command. This makes things bit simpler than what I had originally.
- Removed setting [gameshutdown] as no longer needed.
- Added a 2 second pause to ensure that the 'missionsdata' variable is correctly set first.

((EDDI undocked))
- Changed setting to allow other commands to execute while this is running. This should stop the log spam when targetting other ships just after takeoff.
- Updated the launch speech section. Because there is no way to know if your Advanced Docking computer is set to work on launch, I've added a check for controls being used to take off. It's not 100% perfect, but close enough to work almost all of the time.
* Note: make sure your VA is set to use Joysticks if you use a joystick/flight stick. This is in Settings -> General -> Joystick Options button.

Update Mission Route
- Removed the [gameshutdown] check as no longer needed.

EDDI
====
General
- Updated all instances of 'ship.role' to 'ship.Role.invariantName' to be language independent.
This applies to the following scripts:
- Body mapped
- Discovery scan
- Location
- Market information updated
- Ring mapped
- Star scanned
- System scan complete

- New 'feature': Log off/on speech reduction.
For those farming materials who log off and on again quickly to respawn material sites, I have added some code in several events that should help to reduce the amount of speech done when loading a game. This was done at the request of (and with help from) CMDR Parduz from the ED forums.
Full speech will be performed when you first start a game, but be reduced when logging off/on. The full speech will be re-enabled if you enter supercruise/FSD, or be performed a single time when a 10 minute timer expires.
It mainly involves setting State variables, then checking them: state.eddi_logoff, state.eddi_relog, and state.eddi_logoff_time.
New code in:
- FSD engaged
- Location
- Mission check galaxy
- Music
- Shutdown
- Surface signals detected

Bodies to map
- Added full description of the mappable bodies, as suggested by Cmdr PHORO on the ED forums.
- Added two new variables for reporting: mapDistance and mapHighVal. Set in 'Body Mapping Preferences', see below.
- Rearranged the order items are reported in the full report. Makes it sound a bit better.
- Added the ability to give a short report or a fully detailed report. This uses a new configuration option for the report type: mapReportType. Set in 'Body Mapping Preferences', see below.
- Updated the check for "not yet scanned" in the 'reportNoBodies' section. This was occasionally being spoken even when all bodies had been scanned in systems with only stars in.
- Added the same checks to the speech in the "all bodies mapped" section. Sometimes there is no Journal event to say a body has been scanned, so EDDI doesn't know about it and thinks some bodies have not been scanned yet, even though they have. Proposed possible fix raised on Github #2315. (This should now be fixed in v4.0.2)
- Added a check for the 'Location' event, so that the short verison will be spoken on game start.
- Added Humanise() to the body's distance from arrival, if it's more than 800 Ls.

Body Mapping Preferences
- Added new configuration options:
mapDistance - Maximum distance in Ls from main star, to report bodies (default: 9999999)
mapHighVal - High value threshold for always reporting a mappable body (for overriding mapDistance) (default: 800000)
mapReportType
0 - Basic body report only (original EDDI default setting)
1 - Full body report first time and basic after that (new default setting)
2 - Full body report at all times

Community goal
- Updated the duration section to use the 'Time Remaining' function.
- Updated the reward section to report based on if the event has ended or not, and if Tier 1 has been reached or not.

Entered normal space
- Updated script to specify Community Goals as separate from normal missions.
- Updated the 'Station' section to add the word "the" if it is not already part of a megaship name, and not for starports also.
- Updated to use 'model' to store the '.invariant' station model names.

FSD engaged
- Updated 'not scoopable' section to only speak if a scoop is fitted to the ship (if you don't have one, you don't care if a star is scoopable).

Location
- Added a check for the last log off time, to skip speech if it's less than 10 minutes. See 'Music' below.

Market information updated
- Added code to prevent repeated speech in quick succession.

Material collected
- Removed the added (and unnecessary) hyphen from 'Obtained'.

Mission accepted
- Added a section near the end to report when all passenger cabins are now occupied.

Mission check station
- Added code to specify Community Goals as separate from normal missions.
- Updated the 'mission.status' variables to use 'mission.statusEDName' like the other 'Mission check...' scripts.

Mission completed
- Fixed initial check for 'active' missions in the last code block (line 138). If 'active' is void (can happen when taking missions from comms messages) this was triggering the wrong part, and would incorrectly say you still had "-1 missions".

Mission redirected
- Added code to set 'miss_name' from 'MissionDetails()', and check/use this instead of 'event.name'. 'event.name' seems to be bugged and never set (always void). Reported on Github #2296 (This should now be fixed in v4.0.2).

Missions Route Fast
- Updated the section reporting how many light years away your destination is. This should ignore '0' (zero) at the end of any distance less than 100 LY, for example "59.0" will be said as "59".
- Updated initial IF check in the missions FOR loop to ignore Community Goals.

Music
- Added a check for logging out to the main menu, and setting a State variable of the timestamp. This is then used to check for a relog in the 'Location' and 'Surface signals detected' events, allowing them to skip speech. This is useful when doing quick relogs. Thanks to CMDR Parduz from the forums for the idea.

Repair drone
- Updated script to use List() for reporting, instead of the loop at the end.

Shields down
- Returned "vun-erable" to the correct spelling of "vulnerable" as using a lexicon for my TTS makes this unnecessary.
- Corrected "shield" to "Shield" in the check for a shield generator.

Ship interdicted
- Corrected setting 'ship', instead of 'shiptype', to 'event.interdictor'.
- Updated to correct how 'Indepenent' pilots are described.

Ship repaired
- Removed the full stops from the 'paint' section near the beginning, as they are unnecessary.
- Updated script to collate same type items together, greatly shortening the report. No more 'Shield Booster' being repeated a dozen times! ;)
- Fixed broken weapon check. 'module.localizedname' was invalid, so this didn't work.
- Updated to check item/module health and only report if it is less than 100. This should stop it reporting all items/modules, when only a few were damaged.
Removed, as this does not work. Modules are usually back to 100 health from the repair, before this event triggers.
Additionally, I found that module health isn't always recorded when damage is taken.
- Added 'hull' to the repaired systems section.
- Removed the ship name from the repaired systems section, and added it to the report at the end. This shortens the code and makes the report a little shorter when there are multiple 'repaired systems'.

Surface signals detected
- Added a check for the last log off time, to skip speech if it's less than 10 minutes. See 'Music' above.
- Updated script to only say 'surface signals' at the end, removing all the repeats.

Swapout check
- Updated the module price check to be similar to the default. Fixes rare error when the price is set as 'void'.

System Exploration Report
- Updated the IF check that sets 'scannedBodies' to use 'max()' so the higher of 'prescannedBodies' or 'totalBodies' will be used. This is more efficient.
- Updated IF check for the 'physical characteristics' section. This should now report if you've visited 5 or fewer times, or if your last visit was more than 10 hours ago. This stops frequent repeating when doing short runs between the same systems.
- Updated check for the initial speech when listing the bodies in a system, so that it says "This system" when there are bodies to map.
- Added an override variable for the 'Bodies to map' function call, so that will always give a full detailed report.
- Added a fallback section to the 'remaining bodies to scan' section, for the rare occasions where this value could be zero or less than zero due to reportSystem having incomplete data.

System state report
- Added a second full stop in the conflicts section. I found faction names that end in an abreviation (like Inc.) would not consider the single full stop as an end of sentence pause. Adding a second one fixes this.

Time Remaining
- Updated script to use an array and List(). This improves the output and fixes a rare problem that didn't use 'and' before the last element.
- Update initial IF check to make sure 't_remaining' actually exists.
- Added initialising all the timer variables to 0, so they will not be 'void' when checking them (I know, noob mistake!).
- Updated the seconds section to add 'just over' at the start of the time report, instead of speaking the seconds in certain situations. This makes it sound better for longer timers.

Touchdown
- Added section to warn of high/low surface temperatures if playing in Odyssey, for on-foot activities. Set the desired temperature scale in Preferences at the top. (Temperature limits may need tweaking)

Undocked
- Added an additional check for missions to the route recalc check. On rare occasions this was activating when it should not.

Once again, I had over 90 'views' of my last version, so thanks to all who chose to use this. As always, if you find any bugs, or have any suggestions, please let me know! ๐Ÿ˜
Wow! I just downloaded and installed your EDDI personality. It sounds great so far. I really admire the effort you invested in this, and that you're sharing it with us.

Much appreciate it, cmdr.
 
Any way of getting EDDI to tell me how many Mission Reward Materials I have in storage on Mission Completion? You gave me one for Materials found that I can adjust depending on whether I want to hear it or not.
Short answer is yes. However, I'm out today, so can't help you with code. If no one has given you an answer by tomorrow, then I'll cook something up for you. I already have a good idea of what needs to be done, so it shouldn't take long when I'm able to do so. ๐Ÿ™‚ I'll probably do anyway, just to add it to my personality, as it sounds like a good idea!
 
Short answer is yes. However, I'm out today, so can't help you with code. If no one has given you an answer by tomorrow, then I'll cook something up for you. I already have a good idea of what needs to be done, so it shouldn't take long when I'm able to do so. ๐Ÿ™‚ I'll probably do anyway, just to add it to my personality, as it sounds like a good idea!
No hurry. Thanks for the reply.
 
No hurry. Thanks for the reply.
Funny, I was just typing a reply! ๐Ÿ˜†

This is what I've come up with quickly. I don't have much time, so I've not tested it at all, but in theory it should work.
Code:
{if len(event.materialsrewards) > 0:
    {_ Function to obtain a material from inventory _}
    {set _inventory(required) to:
        {for material in materials:
            {if material.material = required: {return material}}
        }
    }
    {for material in materialrewards:
        {set inventory to _inventory(material)}
        {if inventory.maximum = inventory.amount:
            You have reached your maximum capacity of {material}.
        |elif inventory && inventory.amount > 0:
            {Occasionally(2, "You have {inventory.amount} {if inventory.amount = 1: unit |else: units}
                              of {material} {OneOf('on board', 'in your inventory', 'in your storage')}.")}
        }
    }
}
Add the above just after the rewards report code in the 'Mission completed' script. So about line 108 in my version, or line 94 in the default script.

I've basically cannibalised code from the 'Material collected' script, and tweaked it slightly.

Let me know how you get on with it. I may have more time tomorrow evening to look at it, if needed. :)

Edit: I forgot to mention, if you want to hear it every time you get material for a reward, you'll need to change the number in Occassionally() from 2 to 1. Also, this will only work for ship materials, not the on-foot micro-resources.
 
Last edited:
Funny, I was just typing a reply! ๐Ÿ˜†

This is what I've come up with quickly. I don't have much time, so I've not tested it at all, but in theory it should work.
Code:
{if len(event.materialsrewards) > 0:
    {_ Function to obtain a material from inventory _}
    {set _inventory(required) to:
        {for material in materials:
            {if material.material = required: {return material}}
        }
    }
    {for material in materialrewards:
        {set inventory to _inventory(material)}
        {if inventory.maximum = inventory.amount:
            You have reached your maximum capacity of {material}.
        |elif inventory && inventory.amount > 0:
            {Occasionally(2, "You have {inventory.amount} {if inventory.amount = 1: unit |else: units}
                              of {material} {OneOf('on board', 'in your inventory', 'in your storage')}.")}
        }
    }
}
Add the above just after the rewards report code in the 'Mission completed' script. So about line 108 in my version, or line 94 in the default script.

I've basically cannibalised code from the 'Material collected' script, and tweaked it slightly.

Let me know how you get on with it. I may have more time tomorrow evening to look at it, if needed. :)

Edit: I forgot to mention, if you want to hear it every time you get material for a reward, you'll need to change the number in Occassionally() from 2 to 1. Also, this will only work for ship materials, not the on-foot micro-resources.
Perfect. Thanks so much. I will try it and let you know WOZZ.
EDIT Didn't seem to work? Unusual, but maybe I put it in wrong place?
Line 108

{if len(event.materialsrewards) > 0:
{_ Function to obtain a material from inventory _}
{set _inventory(required) to:
{for material in materials:
{if material.material = required: {return material}}
}
}
{for material in materialrewards:
{set inventory to _inventory(material)}
{if inventory.maximum = inventory.amount:
You have reached your maximum capacity of {material}.
|elif inventory && inventory.amount > 0:
{Occasionally(2, "You have {inventory.amount} {if inventory.amount = 1: unit |else: units}
of {material} {OneOf('on board', 'in your inventory', 'in your storage')}.")}
}
}
}

???
Take your time, I am in NO hurry. LOL
 
Last edited:
Perfect. Thanks so much. I will try it and let you know WOZZ.
EDIT Didn't seem to work? Unusual, but maybe I put it in wrong place?
Line 108

{if len(event.materialsrewards) > 0:
{_ Function to obtain a material from inventory _}
{set _inventory(required) to:
{for material in materials:
{if material.material = required: {return material}}
}
}
{for material in materialrewards:
{set inventory to _inventory(material)}
{if inventory.maximum = inventory.amount:
You have reached your maximum capacity of {material}.
|elif inventory && inventory.amount > 0:
{Occasionally(2, "You have {inventory.amount} {if inventory.amount = 1: unit |else: units}
of {material} {OneOf('on board', 'in your inventory', 'in your storage')}.")}
}
}
}

???
Take your time, I am in NO hurry. LOL
Right, I've had time to go over this properly now, and yes, I found I had made a few mistakes. So here is a fully working, and tested (this time!), version of the code:
Code:
{if len(event.materialsrewards) > 0:
    {_ Function to obtain a material from inventory _}
    {set _inventory(required) to:
        {for material in materials:
            {if material.material = required: {return material}}
        }
    }
    {for material in event.materialsrewards:
        {set inventory to _inventory(material.material)}
        {if inventory.maximum = inventory.amount:
            You have reached your maximum capacity of {inventory.material}.
        |elif inventory && inventory.amount > 0:
            {Occasionally(1, "You have {inventory.amount} {if inventory.amount = 1: unit |else: units}
                              of {inventory.material} {OneOf('on board', 'in your inventory', 'in your storage')}.")}
        }
    }
}

I'm not sure I'm 100% happy with it though. The speech just doesn't 'feel' quite right. It results in speech like this:
"Data Courier mission completed. You have received 4 units of Anomalous Bulk Scan Data and over 46 and a half thousand credits. You have 213 units of Anomalous Bulk Scan Data in your storage."

I'm thinking it would be better to slightly change things about to get something like this instead:
"Data Courier mission completed. You have received over 46 and a half thousand credits, and 4 units of Anomalous Bulk Scan Data. You have 213 units in your storage."
I think I'm going to test this out a bit, and see how it turns out.

Edit: OK, I've made some changes to the whole script, and I'm happy with how it sounds now. I'm getting speech like this:
"You have successfully completed the Data Courier mission for Kokobii Empire Pact. You have received over 12 thousand credits and 5 units of Specialised Legacy Firmware. You have 117 units in your storage."
I'll post the script if anyone wants it. :)
 
Last edited:
Right, I've had time to go over this properly now, and yes, I found I had made a few mistakes. So here is a fully working, and tested (this time!), version of the code:
Code:
{if len(event.materialsrewards) > 0:
    {_ Function to obtain a material from inventory _}
    {set _inventory(required) to:
        {for material in materials:
            {if material.material = required: {return material}}
        }
    }
    {for material in event.materialsrewards:
        {set inventory to _inventory(material.material)}
        {if inventory.maximum = inventory.amount:
            You have reached your maximum capacity of {inventory.material}.
        |elif inventory && inventory.amount > 0:
            {Occasionally(1, "You have {inventory.amount} {if inventory.amount = 1: unit |else: units}
                              of {inventory.material} {OneOf('on board', 'in your inventory', 'in your storage')}.")}
        }
    }
}

I'm not sure I'm 100% happy with it though. The speech just doesn't 'feel' quite right. It results in speech like this:
"Data Courier mission completed. You have received 4 units of Anomalous Bulk Scan Data and over 46 and a half thousand credits. You have 213 units of Anomalous Bulk Scan Data in your storage."

I'm thinking it would be better to slightly change things about to get something like this instead:
"Data Courier mission completed. You have received over 46 and a half thousand credits, and 4 units of Anomalous Bulk Scan Data. You have 213 units in your storage."
I think I'm going to test this out a bit, and see how it turns out.

Edit: OK, I've made some changes to the whole script, and I'm happy with how it sounds now. I'm getting speech like this:
"You have successfully completed the Data Courier mission for Kokobii Empire Pact. You have received over 12 thousand credits and 5 units of Specialised Legacy Firmware. You have 117 units in your storage."
I'll post the script if anyone wants it. :)
Absolutely, positively marvellous. Just what I needed. Works brilliantly. Thanks so much. WOZZ
 
Can someone help me I'm almost giving up trying to do this, I'm trying to create "event" commands for eddi to read so I can use my own custom voice pack sound bytes in my custom profile, I'm using the Tetko voice pack and there are certain "status events" like ship docked or scanning system or taking heat damage an so on I'd like her to respond to in game without me asking her like she automatically tells me what's happening as some of her sound bytes are specifically for in game events as described previously.

I used GitHub Wiki to try and understand EDDI, here's an example - under status variables {BOOL:Status overheating} a boolean value indicating whether the commander's vehicle is overheating, I need to create this and get the voice pack to respond but I'm struggling, I'd be made up if it was as simple as here's the event commands to import now add your own voice to it and it'll work, I got HCS packs too and you can't import or edit them, I know you can use the commands as an external for a different profile but that still means my own voice pack isn't the one talking, anyway I took some screen shots to show how I've attempted to edit and create my own event commands and just failing miserably, hopefully gives some additional insight to what I'm doing wrong ๐Ÿ˜‚ please if anyone can help me I'd appreciate it so much - Regards Nomadik
 

Attachments

  • example.png
    example.png
    353.8 KB · Views: 114
  • example 2.png
    example 2.png
    379.7 KB · Views: 100
  • example 3.png
    example 3.png
    366.1 KB · Views: 99
You need to use the Event generated by EDDI, see this for an example https://github.com/EDCD/EDDI/wiki/Docked-event there are also events for Heat damage which you'd create a command with this ((EDDI heat damage)) in the When I say field you'd then untick the 'When I say' box as you won't be ever saying bracket bracket EDDI heat damage bracket bracket the event will be auto triggered when the event happens in game. You can then use the variable Status overheating like this;
Code:
Begin Boolean Compare : [Status overheating] Equals True
    Say, 'things are getting a little toasty'
End Condition
You'd obviously set the voice you wish to use in the Say command. Or you could use the play a sound option if there's a sound file you wished to play instead of using TTS.

And just as an FYI ... you don't always need to include the variable type when testing variables, for example;
When using {TXT:Status vehicle} you can usually drop the {TXT: and the trailing } and just use the variable itself, the 'TXT' prefix also indicates that you should perform a text compare on the value, for a 'BOOL' you'd use a Boolean compare etc. There are exceptions to this where you do sometimes need to include the variable type such as when you want to output the value to the VA log window you'd then use;
Code:
Write [Blue] 'Status overheating is: {BOOL:Status overheating}' to log
Which would output Status overheating is: False for example.

I've also attached the ((EDDI docked)) event I use in Elite.
 

Attachments

  • VaCommandExample_1.jpg
    VaCommandExample_1.jpg
    52.1 KB · Views: 84
  • VaCommandExample_2.jpg
    VaCommandExample_2.jpg
    81 KB · Views: 82
Last edited:
You need to use the Event generated by EDDI, see this for an example https://github.com/EDCD/EDDI/wiki/Docked-event there are also events for Heat damage which you'd create a command with this ((EDDI heat damage)) in the When I say field you'd then untick the 'When I say' box as you won't be ever saying bracket bracket EDDI heat damage bracket bracket the event will be auto triggered when the event happens in game. You can then use the variable Status overheating like this;
Code:
Begin Boolean Compare : [Status overheating] Equals True
    Say, 'things are getting a little toasty'
End Condition
You'd obviously set the voice you wish to use in the Say command.

And just as an FYI ... you don't always need to include the variable type when testing variables, for example;
When using {TXT:Status vehicle} you can usually drop the {TXT: and the trailing } and just use the variable itself, there are exceptions to this where you do sometimes need to include the variable type such as when you want to output the value to the VA log window you'd then use;
Code:
Write [Blue] 'Status overheating is: {BOOL:Status overheating}' to log
Which would output Status overheating is False for example.
Yes. You probably don't need to check the status variable at all, just set up a command to respond to the ((EDDI heat damage)) event and you should be good to go.
 
Thanks guy I really appreciate the help I understand it a bit better now thanks to your insightful responses and I've managed to get some commands running so far

I did however run into something else while creating a command for landing gear ๐Ÿ˜ฃ as far as I can tell unless I'm blind there is only one command for the landing gear event which covers deployed and retracted and I have a sound file for each, but because they are both under the same umbrella of command - ((EDDI landing gear)) its made it a bit tricky for me as this will always be set to true for both retracting and deploying I can't have both sound files responding to the same event saying different things, I'll leave an example below to show how I thought I could work around this ๐Ÿ˜‚ is there a way around this? thanks again guys for taking time to respond to me on what is probably easy for the advanced users of va. Regards Nomadik
 

Attachments

  • landing gear under same command.png
    landing gear under same command.png
    1.6 MB · Views: 93
Thanks guy I really appreciate the help I understand it a bit better now thanks to your insightful responses and I've managed to get some commands running so far

I did however run into something else while creating a command for landing gear ๐Ÿ˜ฃ as far as I can tell unless I'm blind there is only one command for the landing gear event which covers deployed and retracted and I have a sound file for each, but because they are both under the same umbrella of command - ((EDDI landing gear)) its made it a bit tricky for me as this will always be set to true for both retracting and deploying I can't have both sound files responding to the same event saying different things, I'll leave an example below to show how I thought I could work around this ๐Ÿ˜‚ is there a way around this? thanks again guys for taking time to respond to me on what is probably easy for the advanced users of va. Regards Nomadik
Hi Nomadik,

The first thing I notice looking at your code, is that you don't need to have those lines "Execute external plugin..." in this instance, as they're not doing anything. The VA command will execute at the same time as the EDDI event script because of the 'When I say...' command name. Also, (as far as I'm aware) there is no "...using context ((EDDI <event name>))". Take a look at this page, for more details on how to use the plugin https://github.com/EDCD/EDDI/wiki/VoiceAttack-Integration

You can actually make this much simpler, like this:
1654024460656.png
I just added code to write to the log for my test, but just add your play sound lines in their place. You could probably make it a little simpler still by just using a ELSE rather than an 'ELSE IF...', but this way is probably a bit safer to make sure it works correctly. This should work just as you need. ๐Ÿ˜Š
 
Thanks guy I really appreciate the help I understand it a bit better now thanks to your insightful responses and I've managed to get some commands running so far

I did however run into something else while creating a command for landing gear ๐Ÿ˜ฃ as far as I can tell unless I'm blind there is only one command for the landing gear event which covers deployed and retracted and I have a sound file for each, but because they are both under the same umbrella of command - ((EDDI landing gear)) its made it a bit tricky for me as this will always be set to true for both retracting and deploying I can't have both sound files responding to the same event saying different things, I'll leave an example below to show how I thought I could work around this ๐Ÿ˜‚ is there a way around this? thanks again guys for taking time to respond to me on what is probably easy for the advanced users of va. Regards Nomadik
You're getting confused.

The example text in your image covers two different things ... EDDI scripting using the Cottle language AND VoiceAttack integration. You need to make sure you're using the correct part of the example, in this case the part that starts with To respond to this event in VoiceAttack is the part dealing with VA and any variables that are then available for VA to use will be listed here.

As Darkcyde mentions the example he gave can just have one test for either True or False and an Else for the other case, for example this is how I have it;
Code:
-- Landing Gear Event
Begin Boolean Compare : [EDDI landing gear deployed] Equals True
    -- Play a retracting/raising/deactivating sound file
    Play random sound (3 items)
Else
    -- Play a deploying/lowering/activating sound file
    Play random sound (3 items)
End Condition
 
Ahh nice one guys that's cleared things up for me, can't thank you enough, I'm really new to this va software, got it a week ago and I'm obsessed with it ๐Ÿ˜… learning as much as I can but also itching to get into elite with the companion ai to help along the way, as soon as I realized that was possible I had to make my own, its been a fun, interesting and frustrating experience ๐Ÿ˜‚
 
Ahh nice one guys that's cleared things up for me, can't thank you enough, I'm really new to this va software, got it a week ago and I'm obsessed with it ๐Ÿ˜… learning as much as I can but also itching to get into elite with the companion ai to help along the way, as soon as I realized that was possible I had to make my own, its been a fun, interesting and frustrating experience ๐Ÿ˜‚
Also ... using the link provided by Darkcyde above, the one to VoiceAttack-Integration, you can make a command that stops the annoying message and not being able to jump to either Supercruise or Hyperspace due to the 'hardpoints/landing gear/cargo scoop being deployed'. You simply create a command, for example, Retract Everything and then within the command test using the Status variables if things are indeed deployed and if they are retract them.

You then just toggle the FSD so you end up with something like this, the When I say bit = Frame shift;punch it;puch it chewie;jump;warp;engage which does;
Code:
Execute command, 'Retract Everything' (and wait until it completes)
Execute command, 'Toggle Frame Shift Drive'
The Retract Everything command;
Code:
Begin Boolean Compare : [Status landing gear down] Equals True
    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
    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
    Execute command, 'retract cargo scoop' (by name) - passing values (and wait until it completes)
    Pause 0.05 seconds
End Condition
No more annoying message informing you that you cannot do that.

Edit: Forgot to add the retract everything bit.
 
Last edited:
Back
Top Bottom