Release EDDI Scripts and EDDI enabled VA Commands Thread

I made a va script using EDDI to honk the system for me if i have visited less then 3 time maybe it can be used

Code:
veabl command  "auto scan"
Begin Boolean Compare : [auto scan on] Equals False
    Set Boolean [auto scan on] to True
    Say, 'auto scan on'
Else
    Set Boolean [auto scan on] to False
    Say, 'auto scan off'
End Condition


none verbal command  ((EDDI Jumped))
Begin Boolean Compare : [auto scan on] Equals False
    Exit Command
End Condition
Begin Integer Compare : [{System visits}] Is Less Than 3
    Start Loop While : ([Game state] Does Not Equal 'supercruise' AND [Game state] Does Not Equal 'normal space')
        Pause 0.2 seconds
    End Loop
    Execute command, 'Scan the system' (by name) (and wait until it completes)
End Condition

verbal command "Scan the system"
Begin Text Compare : [Game state] Does Not Equal 'supercruise'
    Begin Text Compare : [Game state] Does Not Equal 'normal space'
        Execute command, '((command ignored))' (by name) (and wait until it completes)
    End Condition - Exit when condition met
End Condition
Execute command, '((RS - System Scan))' (by name)
Execute command, '((Discovery Scanner))' (by name)
Click left mouse button
Set Text [Script] to 'scann of {TXT:System name} completed '
Execute external plugin, 'EDDI 2.4.6-b2' and wait for return
 
Ok i found i workaround.a wee bit funny but 90% works... so one more question im trying to get a damagereport VA cmmand but when i want to set Being Condition block set Decimal {DEC:EDDI Ship health} Variable may not contain colons.i wrote exact way but somehow canne set....any help welcomed
 
Okay i worked out how can i make EDDI talk...if someone light me up how can i make him push thru numbers like Ship health equal 1.000
Play custom sound
Ship health equal 0.7500 etc etc
Thx in Advance
 
Hi,

Maybe I'm wrong, but I think, shiphealth is not updated in realtime, similarly like credits amount (credits are sometimes not refreshed, I experimented with that last autumn)... but I'm not perfectly up to date with the latest changes.

BR
 
you can push values from EDDI to VA with 'setstate':

setstate

This function pushes a state variable to EDDI's internal session state, allowing it to be shared with other responders.
To use this function in your own commands use the 'Execute an external plugin function' command with the plugin context set to 'setstate'. This function will read the text variable "State variable" and store the VoiceAttack variable named in there as a state variable. For example, if you wanted to store the VoiceAttack boolean variable "Verbose" as a state variable you would:
* set the text variable "State variable" to "Verbose"
* call EDDI with the context set to "setstate"
This function only supports integers, booleans, decimals and strings as state values. The name of the value will be altered if necessary to ensure that it is all lower-case, and that spaces are replace by underscores. For example, if you attempt to store a state variable "My variable" it will be stored as "my_variable".
State variables are made available in VoiceAttack with the prefix 'EDDI state'. For example, to access the text variable stored in the last paragraph you would use '{TXT:EDDI state my_variable}'.
Please note that state is transient, and is purposefully not persisted beyond the running instance of EDDI. This means that every time you start VoiceAttack the state will be empty. Also, because EDDI responders run asynchronously and concurrently there is no guarantee that, for example, the speech responder for an event will finish before the VoiceAttack responder for an event starts (or vice versa).
 
Thx for that info would u mind to write an example for that??after that i will manage my own.i see the damage check command only two state exist so 60 and 100 so if i want to use that would look like something like ....
Execute external plugin EDDI 2.4.5(SET STATE)What else should i set there there r a few option...
Being Decimal compare [EDDI Ship healt] is less than 0.60000
Play sound
End Condition.
Or i get something wrong here...
I cant use colon in Decimal compare so....thats why not [{DEC:EDDI Ship healt}]
 
Somehow i just cant get over it i managed to get work a lot of cmmd 2day so it wasnt a bad day at all and managed to get some event work in VA obviusly the easyones where u need to compare TXT cuz u can use {} there but not that one at all...😢
Cheers guys.
 
Ok so a bit reading thru everything again i came up whit that.And so far works
and allow me to use custom audio files
[SUB]((EDDI Damage check))
Execute external plugin, 'EDDI 2.4.5' and wait for return
Set small int (condition) [FSD] value to the converted value of {DEC:Ship frame shift drive health}
Set small int (condition) [hull_health] value to the converted value of {DEC:Ship health}
Set small int (condition) [bulkheads] value to the converted value of {DEC:Ship bulkheads health}
Set small int (condition) [pp] value to the converted value of {DEC:Ship power plant health}
Set small int (condition) [thrusters] value to the converted value of {DEC:Ship thrusters health}
Set small int (condition) [life_support] value to the converted value of {DEC:Ship life support health}
Set small int (condition) [pd] value to the converted value of {DEC:Ship power distributor health}
Set small int (condition) [sensors] value to the converted value of {DEC:Ship sensors health}
Verbal command
Execute command, '((EDDI:Damage check))' (and wait until it completes)
Begin Small Integer Compare : [thrusters] Is Less Than Or Equals 95
End Condition
Begin Small Integer Compare : [thrusters] Is Less Than Or Equals 85
End Condition
Begin Small Integer Compare : [thrusters] Is Less Than Or Equals 60
End Condition
Begin Small Integer Compare : [pp] Is Less Than Or Equals 95
End Condition
Begin Small Integer Compare : [pp] Is Less Than Or Equals 85
End Condition
Begin Small Integer Compare : [pp] Is Less Than Or Equals 60
End Condition
Begin Small Integer Compare : [pd] Is Less Than Or Equals 95
End Condition
Begin Small Integer Compare : [pd] Is Less Than Or Equals 85
End Condition
Begin Small Integer Compare : [pd] Is Less Than Or Equals 60
End Condition
Begin Small Integer Compare : [life_support] Is Less Than Or Equals 95
End Condition
Begin Small Integer Compare : [life_support] Is Less Than Or Equals 85
End Condition
Begin Small Integer Compare : [life_support] Is Less Than Or Equals 60
End Condition
Begin Small Integer Compare : [FSD] Is Less Than Or Equals 95
End Condition
Begin Small Integer Compare : [FSD] Is Less Than Or Equals 85
End Condition
Begin Small Integer Compare : [FSD] Is Less Than Or Equals 60
End Condition
Begin Small Integer Compare : [hull_health] Is Less Than Or Equals 95
End Condition
Begin Small Integer Compare : [hull_health] Is Less Than Or Equals 85
End Condition
Begin Small Integer Compare : [hull_health] Is Less Than Or Equals 60
End Condition[/SUB]
 
Last edited:
Hi everyone!

Here is the very latest version of my Darkcyde's Defaults personality.

I'm just posting this for those that like to experiment, as this is a very rough update, or alpha version, to address the upcoming changes to Crime & Punishment in the beta tomorrow. It is primarily an initial try to update the Fines & Bounties section with the new way these are handled in game. Please note that this version is based on the 2.4.6-beta 2 of EDDI, and should be used with that.

As such, it is entirely based on the info we saw in the first live-stream last week, so it is quite possible that it will not work properly. I know that the paying of Bounties to ISF is not yet possible as EDDI has no event for this yet. However, I have included a rough draft of a script for it, so if/when EDDI gains this ability, it should hopefully work. Right now, the only way to remove Bounties Incurred from the database is to get killed, as these should be paid off as part of the death cost now.

I have been running this in current live, using EDDI 2.4.6-b2, and it seems to work as intended, so far at least! So giving it a bit more of a test with other players will help to iron out any kinks, so to speak.

Here is an excerpt of the changelog that relates to this version, detailing all the changes I've made since my last public release. Please note that anything in square brackets '[]' is mostly a note to myself for things that need checking and things to do in the future, as and when we learn more about the new v3.0 version of Elite. However, if anyone wants to check these out for me and give some feedback, it would be most welcome.
Code:
Release 24-01-18 - For EDDI v2.4.6-b2
======================================
- Version Number
 - Changed version number format. Will now be based on release date.
   Should make it easier to see which is the latest version, and which version of EDDI it was written for.
   Please note the date is in UK format (day-month-year).

- Crime & Punishment
 - First pass at updating the Fines & Bounties system to work with the new Crime & Punishment changes in Elite.
   Should be almost complete, as far as I can test pre-beta anyway.
   No real information available on the Power Bounties or Interstellar Bounties, so these will be added later (if possible).
   Please see the updates below for more information. Many events and functions have been updated.

- Missions
 - Wing Missions will be added in the future, when more information is available.

VoiceAttack
-----------
- Load Fines and Bounties
 - Updated for changes in Crime & Punishment.
 - Removed reference to mission store initialisation, accidentally left from copy/paste.

- Update Fines and Bounties
 - Updated for changes in Crime & Punishment.

Updated Event Scripts
---------------------
- Bounty Incurred
 - Removed call to FinesBounties_CrimeType, as this is now obsolete.
 - Updated to use new event.crime variable.

- [Bounty Paid]
 - [Bounties can be paid at ISF. Event needs to be added to EDDI though. This is a placeholder script until then.]

- Commander Continued
 - Added ship ID as a state variable for use in Crime & Punishment.
 - Added call to FinesBounties_CheckShip.

- Died
 - Updated to call new FinesBounties_ClearShip function to remove all Fines, Bounties and Bonds from destroyed ship.
   Any fines or bounties incurred should be paid as part of the death cost now.
 - Removed call to FinesBounties_Died as it's now obsolete.

- Fine Incurred
 - Removed call to FinesBounties_CrimeType, as this is now obsolete.
 - Updated to use new event.crime variable.

- Jumped
 - Removed call to FinesBounties_TimerCheck, as this is now obsolete.

- Market Informationa Updated
 - Updated call to FinesBounties_ContactsCheck for renamed function, FinesBounties_CheckContacts.

- NPC Attack Commenced
 - Removed call to FinesBounties_UnderAttack, as this is now obsolete.

- Ship Delivered
 - Added ship ID as a state variable for use in Crime & Punishment.

- Ship Repurchased
 [Does ship ID change?]

- Ship Sold
 - Added call to new function "FinesBounties_ClearShip" to wipe crime stats from sold ship.
 [Remove fines & bounties? Do these get paid off when selling?]
 
- Ship Sold On Rebuy
 - Added call to new function "FinesBounties_ClearShip" to wipe crime stats from sold ship.
 [Remove fines & bounties? Do these get paid off when selling?]

- Ship Swapped
 - Added ship ID to a state variable for use in Crime & Punishment.
 - Added call to new function "FinesBounties_ClearShip" to wipe crime stats if ship sold as part of the swap.
 - Added call to new function "FinesBounties_CheckShip" to report if the ship you are swapping to has any fines or bounties incurred on it.

New Functions
-------------
- FinesBounties_CheckShip
 - Checks current ship for outstanding Fines or Bounties. Called from Ship Swapped and Commander Continued events.

- FinesBounties_ClearShip
 - Deletes Fines and Bounties from ship if sold or player died.
 - Deletes all Bonds & Bounties if player died.
 [What about if died in SRV? Do these get wiped still?]

Updated Functions
-----------------
- FinesBounties (all functions)
    Added shipID to record Fine/Bounties against current ship.
    Removed timers, no longer used.
    Removed subtype, no longer used.
  [Do Fines become Bounties still?]

   - Add
      Rewritten to accomodate new Crime & Punishment system.
    [Is max bounty of 1MCr still a thing?]
    [Add Power Bounties]
    [Add Interstellar Bounties]

   - CheckContacts
      Renamed from 'ContactsCheck' to match format with new 'CheckShip'.
      Streamlined code as I found parts no longer needed.

   - Delete
      Updated to use ship ID for deleting fines.
    [Add removal of Bounties Incurred if/when event is added to EDDI]

   - Reports
      Removed timer and 'On H-Jump' info as no longer used.
      Updated to consider fines and bounties incurred on your other ships.

- Honourific
 -  Updated to use the new Empire honorific function. Basically default now, with some additional 'commander name' usage.

Deleted Functions
-----------------
- FinesBounties_CrimeType
 - New event.crime variable replaces this function. (Although, I've not tested it thoroughly to check).

- FinesBounties_Died
 - Replaced with FinesBounties_ClearShip.

- FinesBounties_TimerCheck
 - No longer required for E:D v3.0 as they no longer go dormant or mature.

- FinesBounties_UnderAttack
 - No longer required for E:D v3.0 as they don't go dormant to reactivate.


Unreleased v4.1 - For EDDI 2.4.2
================================
VoiceAttack
-----------
- Course Selection
 - Renamed catagory to 'Navigation'.

- Deploy/Retract Weapons
 - This had become broken at some point and I hadn't noticed.  Should be fixed now.

- Navigation
 - Added command to clear route.
 - Added command to check distance from current system, to one in a predetermined list.
   Unfortunately, it was impractical (and virtually impossible) to get the destination system as a spoken variable.
   Edit this command to add your own list of destination systems.  Use the default set as a guide on how to do it.

Updated Event Scripts
---------------------
- Docking Granted
 - Added speech for landing pads at other stations.

- Entered Normal Space
 - Added call to 'Body Name Tidy' for planet and star names.

- Entered Signal Source
 - Changed speech to add 'location' as an alternative to 'signal's source'.
 - Moved 'Honorific' into the pirate trap section.

- FSD Engaged
 - Updated to check number of visits to the destination system.
   If over set threshold (default set at 5) then do not speak 'System Report'.
   This number can be changed to suit your preferance. It's near the end of the script.
   This shortens the script speech if you've visited many times and don't want to keep hearing the same information.

- Fuel Check
 - Updated to use whole percentages, instead of fractionated.
   (1% instead of 1.3%, or 76% instead of 75.8%)

- Hull Damaged
 - Tweaked damage levels so that they are spoken when they hit 80/60/40, not when they drop below these figures.

- Message Received
 - Added sender and receiver lists, to make it easier to select what messages are read out.
 - Tweaked to not speak the source type.

- Mission Completed
 - Moved the Missions_Delete function to the end of the script, so that your next destination is said after everything else.

- Mission Redirected
 - Added slight variations to speech.

- Module Arrived
 - Fixed default script to work as intended, and made a little more efficient.
   (Now fixed in the EDDI default)

- Ship Arrived
 - Fixed default script to work as intended, and made a little more efficient.
   (Now fixed in the EDDI default)

- Ship Refuelled
 - Updated to use whole percentages, instead of fractionated.
   (1% instead of 1.3%, or 76% instead of 75.8%)

- Ship Transfer Initiated
 - Moved full stop (period) out of IF statement, and removed Pause(1000), to make the flow of speech more natural.

Updated Functions
-----------------
- Body Name Tidy
 - Updated to consider binary/trinary/etc planets.
 - Updated to put hyphen '-' between body type and name. This makes 'A' spoken as 'Ayy', not 'Ah'.

- Body Report
 - Amended material reports to remove extra comma after list is finished.
 - Moved 'rotational period' speech, so it can be spoken if it's available, not only when the body is landable.

- Fuel Check
 - Added missing description.

- List Launchbays
 - Split the bay types into separate parts, this allows for a shorter, more concise, SRV description.
 - Tweaked the speech for fighter and loadout, to sound more natural.

- Missions_CheckGalaxy
 - Updated to use List() function.

- Missions_CheckNearMost
 - Removed 'Zerotrim' subroutine, and replaced with simpler IF statement.

- Mission Redirected
 - Updated to consider being redirected while docked.

- Missions_RouteReport
 - Updated to use List() function.
Have fun Commanders, and good luck to those trying the beta tomorrow! o7

Download it here:- https://www.dropbox.com/s/5vf2aqmf4ps0k3f/Darkcydes_Defaults_24-01-18.rar?dl=0

-=] Darkcyde [=-
 
Last edited:
Thanks Darkcyde! Obviously in tomorrow's beta all bets are off given FD's past record of breaking stuff without telling us 3rd party devs. But that's what betas are for.
 
Ok so a bit reading thru everything again i came up whit that.And so far works
and allow me to use custom audio files
[SUB]((EDDI Damage check))
Execute external plugin, 'EDDI 2.4.5' and wait for return
Set small int (condition) [FSD] value to the converted value of {DEC:Ship frame shift drive health}
Set small int (condition) [hull_health] value to the converted value of {DEC:Ship health}
Set small int (condition) [bulkheads] value to the converted value of {DEC:Ship bulkheads health}
Set small int (condition) [pp] value to the converted value of {DEC:Ship power plant health}
Set small int (condition) [thrusters] value to the converted value of {DEC:Ship thrusters health}
Set small int (condition) [life_support] value to the converted value of {DEC:Ship life support health}
Set small int (condition) [pd] value to the converted value of {DEC:Ship power distributor health}
Set small int (condition) [sensors] value to the converted value of {DEC:Ship sensors health}
Verbal command
Execute command, '((EDDI:Damage check))' (and wait until it completes)
Begin Small Integer Compare : [thrusters] Is Less Than Or Equals 95
End Condition
Begin Small Integer Compare : [thrusters] Is Less Than Or Equals 85
End Condition
Begin Small Integer Compare : [thrusters] Is Less Than Or Equals 60
End Condition
Begin Small Integer Compare : [pp] Is Less Than Or Equals 95
End Condition
Begin Small Integer Compare : [pp] Is Less Than Or Equals 85
End Condition
Begin Small Integer Compare : [pp] Is Less Than Or Equals 60
End Condition
Begin Small Integer Compare : [pd] Is Less Than Or Equals 95
End Condition
Begin Small Integer Compare : [pd] Is Less Than Or Equals 85
End Condition
Begin Small Integer Compare : [pd] Is Less Than Or Equals 60
End Condition
Begin Small Integer Compare : [life_support] Is Less Than Or Equals 95
End Condition
Begin Small Integer Compare : [life_support] Is Less Than Or Equals 85
End Condition
Begin Small Integer Compare : [life_support] Is Less Than Or Equals 60
End Condition
Begin Small Integer Compare : [FSD] Is Less Than Or Equals 95
End Condition
Begin Small Integer Compare : [FSD] Is Less Than Or Equals 85
End Condition
Begin Small Integer Compare : [FSD] Is Less Than Or Equals 60
End Condition
Begin Small Integer Compare : [hull_health] Is Less Than Or Equals 95
End Condition
Begin Small Integer Compare : [hull_health] Is Less Than Or Equals 85
End Condition
Begin Small Integer Compare : [hull_health] Is Less Than Or Equals 60
End Condition[/SUB]
I'm sorry to say so, but you may have limited mileage with this approach. Module health is only written for "Loadout" events when you start the game or when you swap ships, or when EDDI requests data from to the Frontier API (this is something that EDDI does very rarely, at FDev's request). Thus, even though EDDI can track the health of modules it's unlikely to be able to be able to provide accurate data in the middle of combat. If you'd like more timely data on the health of your modules, the best approach is probably going to be to ask Frontier to include a "ModuleDamaged" event in a future update to the player journal.
 
I'm sorry to say so, but you may have limited mileage with this approach. Module health is only written for "Loadout" events when you start the game or when you swap ships, or when EDDI requests data from to the Frontier API (this is something that EDDI does very rarely, at FDev's request). Thus, even though EDDI can track the health of modules it's unlikely to be able to be able to provide accurate data in the middle of combat. If you'd like more timely data on the health of your modules, the best approach is probably going to be to ask Frontier to include a "ModuleDamaged" event in a future update to the player journal.

i know and it isnt for that....well basicly my VA command actually run when u docked or undock from station and if one of `em has damage might warning you to do a reapair if you want so...obviusly it isnt complete and just wanted to show what i worked out.I`ve red the previous pages and i know it isnt working real-time but worth a shot anyway....My VA profile far from done anyway but thanks for the heads up.[up]
 
The Report Station script posted here
{P(station.name)}, in the {P(system.name)} system is controlled by the {P(station.faction)} faction, in a state of {P(station.state)}, with a {P(station.government)} government, and {system.security} security level. It is a {station.model}. This station is {(station.distancefromstar)} light seconds from the star and alligned to {P(station.allegiance)}, with an economy of

{for economy in station.economies:
{economy}
}
does not work for me; is it maybe missing some "set station" declarement at beginning?. Trying to use it same way that Report Body, that means, target and ask info on demand.
So am I doing it wrong or some things missing in the code?
Btw, having same issue with Star Report, just getting the "don't know which star are you asking about".
 
Last edited:
The Report Station script posted here
{P(station.name)}, in the {P(system.name)} system is controlled by the {P(station.faction)} faction, in a state of {P(station.state)}, with a {P(station.government)} government, and {system.security} security level. It is a {station.model}. This station is {(station.distancefromstar)} light seconds from the star and alligned to {P(station.allegiance)}, with an economy of

{for economy in station.economies:
{economy}
}
does not work for me; is it maybe missing some "set station" declarement at beginning?. Trying to use it same way that Report Body, that means, target and ask info on demand.
So am I doing it wrong or some things missing in the code?
Btw, having same issue with Star Report, just getting the "don't know which star are you asking about".

Hi Kroiden,

I've loaded this script into EDDI, and using it in Live (not beta 3.0) I get the following:
Code:
Gaiman Station, in the Varpet system is controlled by the Varpet Industries faction, in a state of, with a Corporate government,
and High security level. It is a Coriolis Starport. This station is 519 light seconds from the star and alligned to Federation,
with an economy of

I've noted that there is no 'station.economies' variable, it's just 'station.primaryeconomy', so just add "... with an economy of {station.primaryeconomy}" at the end instead of the FOR loop.

As you can see, from my read-out, everything works, except for 'station.state'. This is possibly just because the station I'm currently at has a state of 'None'.

What kind of output are you getting? How exactly is it not working for you? What version of EDDI are you using, and are you using it in Live or in the new beta?

-=] Darkcyde [=-
 
Last edited:
The problem is it doesn't read ANY variable, I mean, my output is exactly "In the system is controlled by the faction, in a state of, with a goverment, and security level. It is a. This station is light seconds from the star and alligned to, with an economy of".
I'm using Eddi 2.4.5, live game, and triggering the script in normal space, just out of station, with the station targetted. Even inside the result is the same. That's why I was asking if the script needs some "set" to recognize the station.

Edit: Ok, just entering the game, inside the station's hangar the script works, once I go to the station's surface lvl no longer works nor if I back to hangar.
 
Last edited:
Hi, everyone just wanted to thank you for some great work and keep it up. I’m not a programmer but have been able to tweak things thanks to the help. When I do a body scan using a DSS I get an update with the number of rings and what the reserves are (pristine,etc) but I cannot work out how to get it to tell me the type of rings (metallic,etc). Can anyone point me in the right direction please?
 
Are you running your tests right as you begin a play session? It might take a mode change (landing, takeoff, supercruise entry, supercruise exit, or similar before EDDI fully orients and populates the station and system objects.

Hi, everyone just wanted to thank you for some great work and keep it up. I’m not a programmer but have been able to tweak things thanks to the help. When I do a body scan using a DSS I get an update with the number of rings and what the reserves are (pristine,etc) but I cannot work out how to get it to tell me the type of rings (metallic,etc). Can anyone point me in the right direction please?

Here's what I use:
Code:
    {if len(reportbody.rings):
        with {if len(reportbody.rings) = 1: a}
        {if find(reportbody.reserves, "Pristine") >= 0:
            pristine
        |elif find(reportbody.reserves, "Major") >= 0:
            rich
        }
        {set ringname to []}
        {set ringcomposition to []}
        {for Ring in reportbody.rings:
            {set ringcomposition to cat(ringcomposition, [Ring.composition])}
        }
        {if len(ringcomposition) > 0:
            {List(ringcomposition)}
        }
        {if find(ringname[0], "Belt") >= 0: 
            {set ring to "belt"}
        |else:
            {set ring to "ring"}
        }
        {ring}{if len(reportbody.rings) > 1 || len(event.rings) > 1:s}
    }
Example output: "with pristine rocky and metallic rings"
 
Last edited:
Are you running your tests right as you begin a play session? It might take a mode change (landing, takeoff, supercruise entry, supercruise exit, or similar before EDDI fully orients and populates the station and system objects.

I thought something like that would be happening, but anyway I find weird how just undocking makes the recently information dissapears; currently the station report is giving me info only when docked, so I assume that is the intended use?
 
I thought something like that would be happening, but anyway I find weird how just undocking makes the recently information dissapears; currently the station report is giving me info only when docked, so I assume that is the intended use?
I can't speak to JGM's original intentions, but that appears to be be in-line with what I'm seeing in the code. EDDI only fills the station object when it detects that you are docked, and removes that station object information once you undock (I imagine that his purpose for doing this was to prevent EDDI from acting on, or reporting, stale data).

Have you looked into the ReportStation() function yet? It allows you to query the server for information about a station even when you are not docked.
 
Back
Top Bottom