Release EDDI Scripts and EDDI enabled VA Commands Thread

Noticing some weird behavior when modifying the System Report script, which reads during hyperspace. It will see the Government type as "None" if it's the first time entering a system, and will see the Economy type as "None" if it is NOT the first time entering a system.

In other words, the first time into a system, the reportsystem.primaryeconomy reads back correctly, but on subsequent visits reads back as "None". Meanwhile, the reportsystem.government reads back as "None" the first time into a system, but reads back correctly on subsequent visits.

I can move both into the Jumped script (and have done for now), but that doesn't read until after arriving in the system. I would prefer to have them both read while en route.

Any ideas as to why this happens?
 
Ah ok. Then try this updated version. You should be able to configure the options to more easily achieve what you want with this one.

Code:
{_ Context }
{SetState('eddi_context_last_subject', 'message')}
{SetState('eddi_context_last_action', 'receive')}
{SetState('eddi_context_message_name', event.from)}
{SetState('eddi_context_message_content', event.message)}

{_ Setup channel list to speak. Only messages received on these channels will be spoken _}
{_ Options: direct, friend, local, multicrew, npc, player, squadron, starsystem, voicechat, wing _}
{set channellist to ["direct", "friend", "multicrew", "npc", "player", "squadron", "voicechat", "wing"]}

{_ Setup sender list to speak. Only messages FROM these will be spoken _}
{_ Messages from Players will always be spoken _}
{_ Options: Ambushed pilot, Bounty hunter, Capital ship, Cargo hunter _}
{_ Civilian pilot, Commander, Cruise liner, Escort, Exploration convoy _}
{_ Hitman, Messenger, Military, Miner, NPC, Passenger hunter, Passenger liner _}
{_ Pirate, Police, Propagandist, Protester, Refugee, Rival power's agent _}
{_ Search and rescue, Starship One, Station, Wedding convoy, Wing mate _}
{set senderlist to ["Bounty hunter", "Commander", "Military", "Pirate", "Police"]}


{if find(channellist, event.channel) > -1 && find(senderlist, event.source) > -1:

    {if event.player = true:
        {if event.message = "o7":
            {event.from} salutes
            {if event.channel = "player":
                you
            }.
        |else:
            {event.source} {event.from} sends: {event.message}.
        }
    |else:
        From {event.from}: {Transmit(event.message)}
    }
}


Thanks very much I'll give it try.
 
hey there folks i have just noticed something thats maybe messing up my scripts a little.

it seems that the body mapped and body scanned get triggered right after each other when I map a body. This throws off my body scanned scripts which keep a count of how many bodies I've scanned. Anyway to stop body mapped from trigging body scanned?
 
Heh. That's where I am now.

One other question - is there a way to stop EDDI talking, if it goes on a long ramble?


shutup

This function stops any active EDDI speech.
To use this function in your own commands use the 'Execute an external plugin function' command with the plugin context set to 'shutup'.


I just made a VA command When I say: Shut UP

Execute external plugin, 'EDDI 3.3.4-rc3'


I dont know if this will stop all the "you can save millions selling..." with one shut up or not, I use it mainly when starts reading me galnet news I'm not in the mood to hear.


Edit: tested it with planet scans, have to tell it to shutup with each planet so end up yelling SHUT UP 10+ times on larger systems.

 
Last edited:
Hi all,

Does one of you know if the number of jumps required to reach the end of a plotted route is available in EDDI as a variable ?

Long time ago I made a VA-command for making a series of jumps in succession. So I set a route to a system let's say 7 jumps away and then say "7 jumps" and the loop starts end ends after 7 jumps are made.
Now to know the number of jumps required after I planned the route I have to look at the navigation panel to see that number but it would be nice if I could use a variable and have my AI tell me that number.
I noticed a mention in the documentation about it but, as far as I can tell, that only works if the destination is in a mission.
 
Hi all,

Does one of you know if the number of jumps required to reach the end of a plotted route is available in EDDI as a variable ?

Long time ago I made a VA-command for making a series of jumps in succession. So I set a route to a system let's say 7 jumps away and then say "7 jumps" and the loop starts end ends after 7 jumps are made.
Now to know the number of jumps required after I planned the route I have to look at the navigation panel to see that number but it would be nice if I could use a variable and have my AI tell me that number.
I noticed a mention in the documentation about it but, as far as I can tell, that only works if the destination is in a mission.

Hi,

I was experimenting with this too, I'm using the same method what you've described. To make it more comfortable, you can write a command in VA 'set jumps', make VA to open Nav panel, then it asks you 'number of jumps?', you say the number, then confirm it, and exit nav panel automatically. This is how I'm using it. I'm using the Other/advanced/get user input/wait for spoken response for the 'conversation'.

I'm curious too, if there is a more elegant way to solve this?

Best regards!
 
Wait wait wait.

Are you messing with in game code?

Thats what it sounds like. Which is by the way, highly ILLEGAL.

Careful guys.
No, no, no. ;)

Not messing with game code. Basically, Voice Attack allows you to control the game by simulating keyboard/mouse/joystick inputs using voice commands. It's also a powerful command language allowing you to create code to do different things when you say certain commands. Extremely useful when using VR and you can't see the keyboard, but can also be very useful in most other situations.

Personally, I mostly use VA to load and save EDDI data between game sessions, with the odd thing here and there to do a bit more, but many people use it way more deeply than I do.

Brigetiol1 and myself have collaborated on a couple of things in the past. What he is describing is simply getting VA to press the key for Nav Panel, then await voice input (number of jumps), store that number, then press the key to return to forward view. It's pretty simple to code really.

So, nothing illegal going on here! ;)

As for getting the number of jumps, this doesn't seem to be available in the ED Journal, so unless it's something that can be taken from the API, I'm not sure you can get this info in a reliable way, other than use VA and tell it the number as mentioned above.
 
Last edited:
Hi all,

Does one of you know if the number of jumps required to reach the end of a plotted route is available in EDDI as a variable ?

Long time ago I made a VA-command for making a series of jumps in succession. So I set a route to a system let's say 7 jumps away and then say "7 jumps" and the loop starts end ends after 7 jumps are made.
Now to know the number of jumps required after I planned the route I have to look at the navigation panel to see that number but it would be nice if I could use a variable and have my AI tell me that number.
I noticed a mention in the documentation about it but, as far as I can tell, that only works if the destination is in a mission.

In 3.3.4, 'set' and 'cancel' commands were added to the Cottle 'RouteDetails()' function and the VA 'missionsroute' external plugin call. Th only issue is that there is no way via ED to get your galaxy map plotted destination so, unfortunately, you still need to enter that manually. Also, as of 3.3.4, the ((EDDI Jumped)) event has `EDDI jumped destination` and `EDDI jumped destdistance` variables.

Via VA, you can do something like this, as a 'Set destination' command...

Code:
Set Text [System variable] to '{CLIP}'
Begin Condition : ([EDDI destination] Does Not Equal '' AND [EDDI destination] Does Not Equal 'System variable')
         Set Text [Script] to 'Your destination is already set to {TXT:EDDI destination}.'
         Execute external plugin, 'EDDI 3.3.4'    (Context = 'say')
End Condition - Exit when condition met
Set Text [Type variable] to 'set'
Execute external plugin, 'EDDI 3.3.4' and wait for return    (Context = 'missionsroute')

Pause 0.2 seconds
Begin Text Compare : [EDDI destination] Equals ''
         Set Text [Script] to 'Destination system not found.'
         Execute external plugin, 'EDDI 3.3.4'    (Context = 'say')
Else If Decimal Compare : [EDDI distance] Is Greater Than 0
         Set Text [Script] to 'Your destination is set to {TXT:EDDI destination}.'
         Execute external plugin, 'EDDI 3.3.4'    (Context = 'say')
Else
         Set Text [Script] to 'You are presently located in the designated system.'
         Execute external plugin, 'EDDI 3.3.4'    (Context = 'say')
End Condition


You need to add a VA ((EDDI missions route)) command to set `EDDI destination` and `EDDI distance`:

Code:
Set Text [EDDI destination] to [EDDI missions route system] (save value to profile)
Set decimal [EDDI distance] value to the value of [EDDI missions route distance] (save value to profile)
Write [Blue] 'EDDI Destination = {TXT:EDDI destination}' to log
Write [Blue] 'EDDI Distance = {DEC:EDDI distance}' to log


Lastly, some time back the `max jump distance` and the `max fuel used` variables were added for each ship in the `Ship` object, and updated after each jump. While you can't get the actual jumps to a destination from ED, you can calculate the number of `max jumps remaining`, which is about as close as you're gonna get.

Add this to the Cottle `Jumped` script...

Code:
{if event.destination && event.destination != "":
    {if event.destdistance = 0:
        {ShipName()} has arrived at the {P(event.destination)} system.
    |else:
        {set jumps_left to ceil(event.destdistance / ship.maxjump)}
        Distance to {P(event.destination)} is {round(event.destdistance, 1)} light years,
        with {jumps_left} max jump{if jumps_left > 1:s} remaining.
    }

    {_ Update route list if system is not mission-related }
    {set next to RouteDetails("update")}
}


Again, this requires you to 'set' the destination.


Happy scripting!
 
Last edited:
Thanks. Not exactly what I was looking for :) but maybe I'll use the "max jumps remaining" part to build in a warning about having to use the fuelscoop if the number of jumps I want to make exceeds that maximum.

What you're looking for does not exist. if FDEV doesn't provide it, EDDI doesn't have it... 'max jumps remaining' is as close as you're going to get. :)
 
Thanks. Not exactly what I was looking for :) but maybe I'll use the "max jumps remaining" part to build in a warning about having to use the fuelscoop if the number of jumps I want to make exceeds that maximum.


This isn't exactly what you're looking for either, but I had a similar itch about looping jumps. Instead of telling VA how may jumps to loop through, I use the {TXT:EDDI next jump system} to keep jumping until I reach my destination system.

First, in another command, I set a Boolean [AutoJump] to indicate whether to use auto-jumping or go to manual. Then I set another Boolean when the FSD is ready. I find it works better to check the FSD status after the event has triggered.
Code:
((EDDI ship fsd))

Begin Text Compare : [{TXT:Status fsd status}] Equals 'ready'
    Set Boolean [FSDReady] to True
Else
    Set Boolean [FSDReady] to False
End Condition

Then I have the ((EDDI jumped)) event see if we're there yet. (Not perfected, the loop-pause is a workaround for now.)
Code:
((EDDI jumped))

Begin Boolean Compare : [AutoJump] Equals True
    Begin Text Compare : [{TXT:EDDI jumped system}] Does Not Equal '{TXT:EDDI next jump system}'
        Start Loop While : [FSDReady] Equals False
            Pause 3 seconds
        End Loop
        Begin Boolean Compare : [FSDReady] Equals True
            Execute command, 'Jump'
        End Condition
    Else If Text Compare : [{TXT:EDDI jumped system}] Equals '{TXT:EDDI next jump system}'
        Write [Blue] 'Auto jump route completed' to log
    End Condition
End Condition

I think getting it to stop auto-jumping when fuel levels reach a certain level could work, maybe even throw in an auto-scoop command.

Here's what I use to set the [AutoJump] and other Booleans.
Code:
[Disable;Enable] Auto [Fsd;Jump;Service;Dock;Heatsink;Docking Computer]

Set Text [AutoFunction] to 'Auto{TXTTITLE:"{CMDSEGMENT:2}"}'
Begin Text Compare : [{CMDSEGMENT:0}] Equals 'Disable'
    Set Boolean [Auto{CMDSEGMENT:2}] to False
    Say, '{TXT:AutoFunction} disabled.'
Else If Text Compare : [{CMDSEGMENT:0}] Equals 'Enable'
    Set Boolean [Auto{CMDSEGMENT:2}] to True
    Say, '{TXT:AutoFunction} enabled.'
End Condition
Write [Gray] '{TXT:AutoFunction}: {BOOL:Auto{CMDSEGMENT:2}}' to log
Set Text [AutoFunction] to [Not Set]
 
sorry if it's already been asked before but i tried to use the search thread and nothing showed up...
got a couple of questions:

-how can i DISABLE the localization in my default language? i would like very much to have all the messages in english than a mix of english and italian... it's terrible hearing Zira saying "body number xyz is a ghiacciato corpo celestiale"

-also is there a way to delay a bit some of the phrases? e.g. when it executes the Body Mapped command it tends to overlap it's voice with my COVAS' one
 
sorry if it's already been asked before but i tried to use the search thread and nothing showed up...
got a couple of questions:

-how can i DISABLE the localization in my default language? i would like very much to have all the messages in english than a mix of english and italian... it's terrible hearing Zira saying "body number xyz is a ghiacciato corpo celestiale"

-also is there a way to delay a bit some of the phrases? e.g. when it executes the Body Mapped command it tends to overlap it's voice with my COVAS' one

Hi mrmauz,

To 'disable' the localisation, on the main EDDI tab there is a drop-down selection of the languages to use. Just choose English instead of Automatic (the default).

To delay any speech, you can add a pause into the script. You can't edit the default personality, so if you have not yet done so, you need to make a copy. Go to the Speech Responder tab and click the Copy Personality button, and name it to whatever you want. Then go to the Body Mapped script and click the Edit button on the right. In the new window that pops up, add {Pause(1000)} at the very top. Enter it just as it is here. The time is in milliseconds, so 1000 is one second. Now adjust the time until the delay is long enough for you.

Hope that helps!

o7

-=] Darkcyde [=-
 
thanks a lot Darkcyde, also big up for the fast response!

p.s. EDDI rocks

p.p.s the first one was indeed just there in plain view just as a lot of things in my life! sorry for this humongous show of n00biness
8p
 
Last edited:
I am sorry to disturb you but.. does the function "disablespeechresponder" still work?

I tried adding a command on my VA profile start, so EDDI wouldn't be verbose as usual. However, as soon as I jump to a system, just an example, EDDI starts talking like usual.

The command which users that function is the 3rd to be executed and I don't have its counterpart (enablespeechresponder) anywhere in my profile.

Am I doing anything wrong?
 
I am sorry to disturb you but.. does the function "disablespeechresponder" still work?

I tried adding a command on my VA profile start, so EDDI wouldn't be verbose as usual. However, as soon as I jump to a system, just an example, EDDI starts talking like usual.

The command which users that function is the 3rd to be executed and I don't have its counterpart (enablespeechresponder) anywhere in my profile.

Am I doing anything wrong?
Yes, it still works. That said, it cancels speech before it is added to the speech queue so if you already have several in the queue it wouldn't affect those items (the "shut up" command is what you would want there).
 
Yes, it still works. That said, it cancels speech before it is added to the speech queue so if you already have several in the queue it wouldn't affect those items (the "shut up" command is what you would want there).

Hi, Tkael.

As I said, the command with "disablespeechresponder" is executed as soon as my profile is loaded in VA. So, I assumed EDDi wouldn't say anything after that, unless VA asks for it, right? But then as soon as event happens in the game, EDDI starts talking. I usualy execute VA way before I start the game. So, EDDI wouldn't have anything on its queue.

What I want to do is:

- EDDI is kept quiet the whole time
- When VA uses it to say something (let's say a custom text I wrote), it will talk
- When VA call an EDDI script, it will talk.

So, to achieve the above I have to use "disablespeechresponder" or "shutup"?
 
Last edited:
Good evening Cmdrs!

I have been through quite a bit of this thread looking at some of the cool stuff you have accomplished with the scripts!

Is there a source/reference/example(s) I can look at in order to understand the syntax, variables, information/data flow between ED/EDDI/VA? I just can't seem to pull it all together in my head. :(

Thanks in advance and appreciate your patience!
 
What I want to do is:

- EDDI is kept quiet the whole time
- When VA uses it to say something (let's say a custom text I wrote), it will talk
- When VA call an EDDI script, it will talk.

So, to achieve the above I have to use "disablespeechresponder" or "shutup"?

"disablespeechresponder" will prevent EDDI responding speech responder scripts, so I'm not sure "disablespeechresponder" is really what you want.
If there are specific scripts that you would like EDDI to not respond to, you should disable those scripts in the speech responder tab of EDDI's UI.
That said, I'll make sure in the code that we're clearing pending speech when "disablespeechresponder" is invoked.

Good evening Cmdrs!

I have been through quite a bit of this thread looking at some of the cool stuff you have accomplished with the scripts!

Is there a source/reference/example(s) I can look at in order to understand the syntax, variables, information/data flow between ED/EDDI/VA? I just can't seem to pull it all together in my head. :(

Thanks in advance and appreciate your patience!

Have you already reviewed the readme and the wiki?
This thread (though long) is also quite instructive.
 
Top Bottom