As an addition to @nepomuk's reply, is your ship damaged? EDDI is supposed to sound distorted when your ship takes a certain amount of damage. I also seem to remember from a long time ago (so may not be relevant now) that EDDI sometimes got stuck using the 'damaged' voice even after a repair. Something to consider anyway.My EDDI voice (Ivona Amy) sounds like it's underwater when used by an EDDI script. HCS voicepacks are fine. Any ideas?
Cheers.
in the text to speech tab, is the option enabled to distort the voice on ship damage? And is the ship's hull damaged?My EDDI voice (Ivona Amy) sounds like it's underwater when used by an EDDI script. HCS voicepacks are fine. Any ideas?
Cheers.
that option is disabled and the ship isn't damaged.
It's possible that EDDI is falling back in some cases to your default voice when an error occurs trying to use another voice.Thanks i will try it too. My EDDI voice is IVONA 2 Brian. The thing is with orginal code :Brian, from time to time plays as NPC on radio like it gets not prevented at all.Code:VoiceDetails().name
BTW. Is there any repository of usefull additional scripts created by community?
That sorted it.View attachment 355335
Check your Speed of Speech and Level of processing options
Start with both at 0 and then adjust if desired.
{_ Context _}
{SetState('eddi_context_last_subject', 'fsd')}
{SetState('eddi_context_last_action', 'disengage')}
{SetState('eddi_context_system_name', event.systemname)}
{SetState('eddi_context_body_name', event.bodyname)}
{SetState('eddi_context_body_type', event.bodytype)}
{SetState('eddi_context_body_system', event.systemname)}
{_ Define notifications function _}
{set station_notifications to:
{set station_missions to F("Mission check station")}
{set station_crimes to F("Crime check station")}
{if station_missions || station_crimes:
{_ Pause for station ATC before speaking again _}
{if find(station.model, "Porto Estelar") > -1 || find(station.model, "Asteroide") > -1:
{Pause(10000)}
}
Informação:
{if station_missions:
{Pause(500)}
{station_missions}
}
{if station_crimes:
{Pause(500)}
{station_crimes}
}
}
}
{Pause(500)}
{OneOf("saindo da supervelocidade", "{OneOf('entramos no','retornnamos ao','saimos para o')} espaço normal")}
{if event.bodytype_invariant = "Planeta" || event.bodytype_invariant = "Lua":
{OneOf("perto de", "próximo de", "nas proximidades de")}
{set time to SecondsSince(0) - state.eddi_context_approach_time}
{if time < 60:
{set settlement to state.eddi_context_last_settlement}
{set reportStation to StationDetails(settlement, event.systemname)}
{if reportStation:
{SetState('eddi_context_body_name', settlement)}
{if reportStation.Model.invariantName != "Unknown Station":
{P(reportStation.model, "Estação")},
}
{P(settlement, "Estação")}
{station_notifications}
|else:
{P(settlement, "Estação")}.
}
|else:
{set reportBody to BodyDetails(event.bodyname, event.systemname)}
{if event.bodyname = state.d_name:
{event.bodytype)} {P(reportBody.shortname, "Corpo")}
|elif state.l_name !="" && state.d_name !="":
{state.l_name}{state.d_name}
|elif sate.l_name !="":
{state.l_name}
|else:
{state.d_name}
}.
}
|elif event.bodytype_invariant = "Estrela":
{set reportBody to BodyDetails(event.bodyname, event.systemname)}
{OneOf("perto de", "próximo de", "nas proximidades de")}
{if reportBody.shortname = event.system:
estrela primaria
|else:
estrela {P(reportBody.shortname, "Corpo")}
}.
|elif event.bodytype_invariant = "Estação":
{set reportStation to StationDetails(event.bodyname, event.systemname)}
{OneOf("perto de", "próximo de", "nas proximidades de")}
{P(reportStation.model, "Estação")}, {P(event.bodyname, "Corpo")}.
{station_notifications}
|elif event.bodytype_invariant = "Anel Planetario":
Anel-{P(token(event.bodyname, " Anel", 0), "Corpo")}, de {P(reportBody.shortname, "Corpo")}.
|elif event.bodytype = "None":
{set body to slice(event.bodyname, len(event.systemname) + 1)}
{if len(body) > 1:
, proximo a estrelas
{set cur to 0}
{set length to len(body) - 1}
{while cur < len(body):
{slice(body, cur, 1)}
{set cur to cur + 1}
{if cur = length: e
|elif cur < length:,
}
}.
}
|elif state.l_name != "" :
Nas Proximidades de {state.l_name}
|elif state.d_name !="":
Nas Proximidades de {state.d_name}
}
{SetState("l_name",event.localizedName)}
{SetState("d_name",event.name)}
Hi MrOz!I don't know, someone already made a script for this, I was bothered because eddi didn't recognize the fleet carriers in Entered normal space, so I tweaked the scripts and found a way to make it work, I used the script next destination to save the name of the destination in which we are going to exit the supercruise, so when we exit the Entered normal space script will check if the name of the destination matches event.bodyname, if that is the case it will say the name of the body, if not it will say the name of the destination selected before .
I used Commander Darkcyde's Entered normal space script as a base (I'm Brazilian so I translated the lines into Portuguese, I also don't understand much about programming or how eddi works, I just looked at the scripts and tested to see how it worked, so it could be that have a better way to do this)
Entered normal space script
{_ Context _} {SetState('eddi_context_last_subject', 'fsd')} {SetState('eddi_context_last_action', 'disengage')} {SetState('eddi_context_system_name', event.systemname)} {SetState('eddi_context_body_name', event.bodyname)} {SetState('eddi_context_body_type', event.bodytype)} {SetState('eddi_context_body_system', event.systemname)} {_ Define notifications function _} {set station_notifications to: {set station_missions to F("Mission check station")} {set station_crimes to F("Crime check station")} {if station_missions || station_crimes: {_ Pause for station ATC before speaking again _} {if find(station.model, "Porto Estelar") > -1 || find(station.model, "Asteroide") > -1: {Pause(10000)} } Informação: {if station_missions: {Pause(500)} {station_missions} } {if station_crimes: {Pause(500)} {station_crimes} } } } {Pause(500)} {OneOf("saindo da supervelocidade", "{OneOf('entramos no','retornnamos ao','saimos para o')} espaço normal")} {if event.bodytype_invariant = "Planeta" || event.bodytype_invariant = "Lua": {OneOf("perto de", "próximo de", "nas proximidades de")} {set time to SecondsSince(0) - state.eddi_context_approach_time} {if time < 60: {set settlement to state.eddi_context_last_settlement} {set reportStation to StationDetails(settlement, event.systemname)} {if reportStation: {SetState('eddi_context_body_name', settlement)} {if reportStation.Model.invariantName != "Unknown Station": {P(reportStation.model, "Estação")}, } {P(settlement, "Estação")} {station_notifications} |else: {P(settlement, "Estação")}. } |else: {set reportBody to BodyDetails(event.bodyname, event.systemname)} {if event.bodyname = state.d_name: {event.bodytype)} {P(reportBody.shortname, "Corpo")} |elif state.l_name !="" && state.d_name !="": {state.l_name}{state.d_name} |elif sate.l_name !="": {state.l_name} |else: {state.d_name} }. } |elif event.bodytype_invariant = "Estrela": {set reportBody to BodyDetails(event.bodyname, event.systemname)} {OneOf("perto de", "próximo de", "nas proximidades de")} {if reportBody.shortname = event.system: estrela primaria |else: estrela {P(reportBody.shortname, "Corpo")} }. |elif event.bodytype_invariant = "Estação": {set reportStation to StationDetails(event.bodyname, event.systemname)} {OneOf("perto de", "próximo de", "nas proximidades de")} {P(reportStation.model, "Estação")}, {P(event.bodyname, "Corpo")}. {station_notifications} |elif event.bodytype_invariant = "Anel Planetario": Anel-{P(token(event.bodyname, " Anel", 0), "Corpo")}, de {P(reportBody.shortname, "Corpo")}. |elif event.bodytype = "None": {set body to slice(event.bodyname, len(event.systemname) + 1)} {if len(body) > 1: , proximo a estrelas {set cur to 0} {set length to len(body) - 1} {while cur < len(body): {slice(body, cur, 1)} {set cur to cur + 1} {if cur = length: e |elif cur < length:, } }. } |else: Nas Proximidades de {state.l_name} {state.d_name} }
Next destination script
{SetState("l_name",event.localizedName)} {SetState("d_name",event.name)}
{if event.musictrack = "DestinationFromSupercruise":
{set reportSystem to SystemDetails(system.systemname)}
{if find(reportSystem.carriersignalsources, status.destination_localized_name) > -1:
{if status.destination_localized_name = carrier.name:
Welcome back to your carrier, {F("Honorific")}.
|else:
{Occasionally(2, "The")} Fleet Carrier
{status.destination_localized_name} is
{OneOf("{OneOf('located', 'orbiting', 'stationed')} here",
"{OneOf('orbiting', 'stationed')} at this location",
"in orbit {OneOf('here', 'at this location')}")}.
}
|elif status.destination_localized_name:
Arrived at {status.destination_localized_name}.
}
|elif event.musictrack = "GalaxyMap":
{SetState('eddi_onfoot_gui_status', "GalaxyMap")}
|elif event.musictrack = "SystemMap":
{SetState('eddi_onfoot_gui_status', "SystemMap")}
|elif event.musictrack = "MainMenu":
{SetState('eddi_relog', false)}
{SetState('eddi_logoff_time', SecondsSince(0))}
|elif event.musictrack = "NoTrack":
{SetState('eddi_onfoot_gui_status', "NoTrack")}
}
Hi MrOz!
I'm glad you like my EDDI personality. I put a lot of work into it for my own personal enjoyment of the game (and enjoyment of programming it!), and only released it because others said they would like to try it out. Now many people like to use it, or base their own from it.
I like your idea, but did you know my personality already has this function? It is in the Music script, at the top:
It uses variables already in the default EDDI personality, so no need to make any new ones for it to work, and no need to make any changes to other scripts. You can try it, and see what you think.Code:{if event.musictrack = "DestinationFromSupercruise": {set reportSystem to SystemDetails(system.systemname)} {if find(reportSystem.carriersignalsources, status.destination_localized_name) > -1: {if status.destination_localized_name = carrier.name: Welcome back to your carrier, {F("Honorific")}. |else: {Occasionally(2, "The")} Fleet Carrier {status.destination_localized_name} is {OneOf("{OneOf('located', 'orbiting', 'stationed')} here", "{OneOf('orbiting', 'stationed')} at this location", "in orbit {OneOf('here', 'at this location')}")}. } |elif status.destination_localized_name: Arrived at {status.destination_localized_name}. } |elif event.musictrack = "GalaxyMap": {SetState('eddi_onfoot_gui_status', "GalaxyMap")} |elif event.musictrack = "SystemMap": {SetState('eddi_onfoot_gui_status', "SystemMap")} |elif event.musictrack = "MainMenu": {SetState('eddi_relog', false)} {SetState('eddi_logoff_time', SecondsSince(0))} |elif event.musictrack = "NoTrack": {SetState('eddi_onfoot_gui_status', "NoTrack")} }
{_ Context }
{SetState('eddi_context_last_subject', 'fsd')}
{SetState('eddi_context_last_action', 'glide')}
{SetState('eddi_context_system_name', event.system)}
{SetState('eddi_context_body_name', event.body)}
{SetState('eddi_context_body_system', event.system)}
{if event.gliding:
Glide {Occasionally(2, "mode")}
{OneOf("engaged.", "initiated.")}
{Pause(1000)}
{set body to BodyDetails(event.body, event.system)}
{if !body.name || body.name = "" || !body.gravity:
Planetary approach data not available.
|else:
{if body.landable:
{set gravity to round(body.gravity,2)}
{if gravity > 4:
Danger! {body.bodytype} {P(body.shortname, "body")} is an extremely high gravity world, at {gravity} G.
|elif gravity > 2:
Caution! {body.bodytype} {P(body.shortname, "body")} is a high gravity world, at {gravity} G.
|elif gravity > 0.5:
Warning! {body.bodytype} {P(body.shortname, "body")} is a medium gravity world, at {gravity} G.
|else:
{body.bodytype} {P(body.shortname, "body")} is a low gravity world, at {gravity} G.
}
}
}
|else:
Glide completed.
}
{Occasionally(10,
OneOf
(
{Play('Music_Cue_1.mp3', true, 100),
{Play('Music_Cue_2.mp3', true, 100),
{Play('Music_Cue_3.mp3', true, 100)
)
}
Play
function inside a OneOf
. Do any of you have any idea if this is achievable, and if so, how?If you wish to use VoiceAttack along with the EDDI EventHello.
My name is Eridani5, and I am a Nerd.
As such, making my experience playing Elite as immersive as possible goes a long way towards my enjoyment of the game. Obviously, EDDI does a lot to further this. So here is my question. I have an idea for a script that will sometimes, play a different piece of music, specifically, while lifting off or undocking.
In my mind, the script should look something like this:
Code:{Occasionally(10, OneOf ( {Play('Music_Cue_1.mp3', true, 100), {Play('Music_Cue_2.mp3', true, 100), {Play('Music_Cue_3.mp3', true, 100) ) }
Unfortunately, it seems I can't use thePlay
function inside aOneOf
. Do any of you have any idea if this is achievable, and if so, how?
Thanks to everyone who contributes on these boards and, thank you in advance for any pointers regarding my question.
- Eridani5
liftoff
then you could just use this, you'd have to add whatever audio files you wantedundocked
eventI want to support this pattern (though it does need a few syntax corrections) but the nested custom functions seem to be creating some issues with how the data is being passed through the Cottle rendering engine. It might be possible to correct this with a rewrite of the rendering engine but I'm not certain. I'll have to tinker with it and see what I can come up with.Hello.
My name is Eridani5, and I am a Nerd.
As such, making my experience playing Elite as immersive as possible goes a long way towards my enjoyment of the game. Obviously, EDDI does a lot to further this. So here is my question. I have an idea for a script that will sometimes, play a different piece of music, specifically, while lifting off or undocking.
In my mind, the script should look something like this:
Code:{Occasionally(10, OneOf ( {Play('Music_Cue_1.mp3', true, 100), {Play('Music_Cue_2.mp3', true, 100), {Play('Music_Cue_3.mp3', true, 100) ) }
Unfortunately, it seems I can't use thePlay
function inside aOneOf
. Do any of you have any idea if this is achievable, and if so, how?
Thanks to everyone who contributes on these boards and, thank you in advance for any pointers regarding my question.
- Eridani5
You can get around this by programming the code in a different way. Take theHello.
My name is Eridani5, and I am a Nerd.
As such, making my experience playing Elite as immersive as possible goes a long way towards my enjoyment of the game. Obviously, EDDI does a lot to further this. So here is my question. I have an idea for a script that will sometimes, play a different piece of music, specifically, while lifting off or undocking.
In my mind, the script should look something like this:
Code:{Occasionally(10, OneOf ( {Play('Music_Cue_1.mp3', true, 100), {Play('Music_Cue_2.mp3', true, 100), {Play('Music_Cue_3.mp3', true, 100) ) }
Unfortunately, it seems I can't use thePlay
function inside aOneOf
. Do any of you have any idea if this is achievable, and if so, how?
Thanks to everyone who contributes on these boards and, thank you in advance for any pointers regarding my question.
- Eridani5
Play()
out of the Occasionally()
, and set your file path.{Occasionally(4, "{set file to OneOf('Music_Cue_1.mp3', 'Music_Cue_2.mp3', 'Music_Cue_3.mp3')}")}
{if file:
{Play(cat('C:\\Users\\Jason\\AppData\\Roaming\\EDDI\\Sounds\\Music\\', file), true, 100)}
}
Occasionally()
otherwise you'll almost never hear it. Having tested the above a bit, I found 3 or 4 to be better, although it is down to personal preference.Play()
function doesn't like it. So for example, if your path has a single quote in, like \\jay's
, then using the \ to escape it \\jay\'s
will not work. I guess this may be a limitation of Play()
. Something to be aware of.Play()
code more efficient.Sorry to hear you're having such misfortune.They say bad things happen in threes...
1. So a month ago I fractured my wrist at work. This meant I couldn't play, and more importantly, I couldn't really do much testing of the things I want to do in my EDDI personality. The two fractures were in one of the long forearm bones (the Radius) at the wrist end, running lengthways down the bone. Very uncommon apparently.
2. Two weeks ago, the doctors found it wasn't healing, and was in fact getting worse. The fractured parts were actually splitting off even more, so I had to have emergency surgery, and metal plate bolted in. For some reason they wouldn't let me install Predator wrist blades, or Wolverine claws. Spoilsports. So, I still have another four weeks of resting my wrist, and still no gaming.
3. Yesterday, my second monitor decided that it was going to be an ass, and now the HDMI interface will only detect as 640x480 @ 32Hz. I've tried everything I can find online to try fixing it, but no luck. It's a no-so-expensive Asus gaming monitor, so only has HDMI, DVI, and VGA. My GPU only has HDMI and DP. I think I may have an HDMI to DVI adapter somewhere, but I think it's in the loft, which is not really easy to get to while only using one hand.
So, I'm really hoping those are the three bad things that are going to happen. And I really hope I can get back to Elite soon and carry on with my EDDI personality. I wanted to make a new release at the end of August, but then this all happened. Hopefully I can do it after my wrist is fully healed.
I know this is kind of an odd post, and not really script related, but I wanted you to know that I've not forgotten about EDDI and Elite, and that I do intend to keep posting my personality for others to use for the foreseeable future (considering it's been a very long time since my last release).
Happy gaming everyone, and I hope to be back soon.
DC