There's no new VAP; not sure if the beta has a VAP in it (it should, but I didn't check) but you can just carry on with the existing one.
Thanks, health being a problem and the meds make my analytical brain very mushy
There's no new VAP; not sure if the beta has a VAP in it (it should, but I didn't check) but you can just carry on with the existing one.
Need a bit help here, it seems.
I have:
- a command in va that sets the integer: eddi_minimal to 0, saved to profile
- another that sets it to 1
- set Text variable 'State variable' to a variable: eddi_minimal
- execute the plugin with context: setstate
On jumping event in EDDI config i put the whole script into a conditional block, like:
{if eddi_minimal = 0:
{OneOf("Destination confirmed","Jump in progress","Telemetry obtained")}.
...
}
Am i missing something? The test function says nothing at all...
I want to extend the Jump event response with an option to tell the player if any of the items in the cargo bay are illegal in the destination system. I found no event, object or property in the raws that would get this info.
But, I found a property in the EDDB "stations.json" called "prohibited_commodities", that gives a list of the illegal wares at that station. The only problem is, I found no reference to this in the EDDI raws, the "station" object doesn't query for this property, so I can't access it from whitin EDDI. If it did, it would be possible to get the list of stations of the target system when jumping and then match the ship's cargo against the list of illegal wares for each station in the system.
Would it be possible to add this property to the station object?
State variables are put in the state object, so you need:
{if state.eddi_minimal = 0:
{if state.verbose:
{set regexfilter to "^(?!(.*Weekly|Report.*)|(.*Powerplay|Update.*)|(.*Starport|Update.*)).*$"}
{if len(event.items) = 1:
A new Galnet article has been published, entitled {event.items[0].title}.
{if match(event.items[item].title, regexfilter):
it reads
{Pause(1000)}
{event.items[0].content}.
}
|elif len(event.items) > 1:
{len(event.items)} new Galnet articles have been published.
{set item to 0}
{while item < len(event.items):
{if item = 0:
The first is entitled {event.items[item].title},
{if match(event.items[item].title, regexfilter):
and reads
{Pause(1000)}
{event.items[item].content}.
}
|elif item = 1:
The second is entitled {event.items[item].title},
{if match(event.items[item].title, regexfilter):
and reads
{Pause(1000)}
{event.items[item].content}.
}
|elif item = len(event.items) - 1:
The last is entitled {event.items[item].title},
{if not(match(event.items[item].title, regexfilter)):
and reads
{Pause(1000)}
{event.items[item].content}.
}
|else:
The next is entitled {event.items[item].title},
{if not(match(event.items[item].title, regexfilter)):
and reads
{Pause(1000)}
{event.items[item].content}
}
}
{set item to item + 1}
{Pause(1000)}
}.
}
|else:
{if len(event.items) = 1:
A new Galnet article has been published, entitled {event.items[0].title}.
|elif len(event.items) > 1:
{len(event.items)} new Galnet articles have been published. Their titles are
{set item to 0}
{while item < len(event.items):
{if item = len(event.items) - 1:
and {event.items[item].title}
|else:
{event.items[item].title},
}
{set item to item + 1}
}.
}
}
{set station to StationDetails(state.station)}
{if station.model = "Coriolis Starport" || station.model = "Orbis Starport" || station.model = "Ocellus Starport" || station.model = "Unknown Starport":
{Pause(500)}
Landing pad {state.landingpad} is at
{if state.landingpad = 1:
six o'clock near
|elif state.landingpad = 2:
six o'clock near
|elif state.landingpad = 3:
six o'clock far
|elif state.landingpad = 4:
six o'clock far
|elif state.landingpad = 5:
seven o'clock near
|elif state.landingpad = 6:
seven o'clock near
|elif state.landingpad = 7:
seven o'clock
|elif state.landingpad = 8:
seven o'clock far
|elif state.landingpad = 9:
eight o'clock near
|elif state.landingpad = 10:
eight o'clock far
|elif state.landingpad = 11:
nine o'clock near
|elif state.landingpad = 12:
nine o'clock near
|elif state.landingpad = 13:
nine o'clock
|elif state.landingpad = 14:
nine o'clock far
|elif state.landingpad = 15:
nine o'clock far
|elif state.landingpad = 16:
ten o'clock near
|elif state.landingpad = 17:
ten o'clock near
|elif state.landingpad = 18:
ten o'clock far
|elif state.landingpad = 19:
ten o'clock far
|elif state.landingpad = 20:
eleven o'clock near
|elif state.landingpad = 21:
eleven o'clock near
|elif state.landingpad = 22:
eleven o'clock
|elif state.landingpad = 23:
eleven o'clock far
|elif state.landingpad = 24:
twelve o'clock near
|elif state.landingpad = 25:
twelve o'clock far
|elif state.landingpad = 26:
one o'clock near
|elif state.landingpad = 27:
one o'clock near
|elif state.landingpad = 28:
one o'clock
|elif state.landingpad = 29:
one o'clock far
|elif state.landingpad = 30:
one o'clock far
|elif state.landingpad = 31:
two o'clock near
|elif state.landingpad = 32:
two o'clock near
|elif state.landingpad = 33:
two o'clock far
|elif state.landingpad = 34:
two o'clock far
|elif state.landingpad = 35:
three o'clock near
|elif state.landingpad = 36:
three o'clock near
|elif state.landingpad = 37:
three o'clock
|elif state.landingpad = 38:
three o'clock near
|elif state.landingpad = 39:
four o'clock near
|elif state.landingpad = 40:
four o'clock far
|elif state.landingpad = 41:
five o'clock near
|elif state.landingpad = 42:
five o'clock near
|elif state.landingpad = 43:
five o'clock
|elif state.landingpad = 44:
five o'clock far
|elif state.landingpad = 45:
five o'clock far
}
, as you enter with the green lights on your right.
}
I want to extend the Jump event response with an option to tell the player if any of the items in the cargo bay are illegal in the destination system. I found no event, object or property in the raws that would get this info.
But, I found a property in the EDDB "stations.json" called "prohibited_commodities", that gives a list of the illegal wares at that station. The only problem is, I found no reference to this in the EDDI raws, the "station" object doesn't query for this property, so I can't access it from whitin EDDI. If it did, it would be possible to get the list of stations of the target system when jumping and then match the ship's cargo against the list of illegal wares for each station in the system.
Would it be possible to add this property to the station object?
I've had the opportunity to 'pre-beta test' the 'setstate' functionality and I can attest that it's very powerful.
For example, in anticipation of 2.1.0 b1, I have written VA commands with turn off and on the speech responder...
VA Command 'Data Interface off' :
Execute external plugin 'EDDI 2.1.0-b1' and wait for return (with context = disablespeechresponder)
VA Command 'Data Interface on' :
Execute external plugin 'EDDI 2.1.0-b1' and wait for return (with context = enablespeechresponder)
Additionally, I've created a Boolean 'state object' variable called 'verbose', which controls how chatty the speech responder scripts can be...
VA Command 'Data Interface brief' :
Set Boolean [verbose] to False
Set Text [State Variable] to 'verbose'
Execute external plugin 'EDDI 2.1.0-b1' and wait for return (with context = setstate & Text Variables = State Variable)
VA Command 'Data Interface verbose' :
Set Boolean [verbose] to True
Set Text [State Variable] to 'verbose'
Execute external plugin 'EDDI 2.1.0-b1' and wait for return (with context = setstate & Text Variables = State Variable)
For example, using 'verbose', I can do this with the 'Galnet news published' script...
Code:{if state.verbose: {set regexfilter to "^(?!(.*Weekly|Report.*)|(.*Powerplay|Update.*)|(.*Starport|Update.*)).*$"} {if len(event.items) = 1: A new Galnet article has been published, entitled {event.items[0].title}. {if match(event.items[item].title, regexfilter): it reads {Pause(1000)} {event.items[0].content}. } |elif len(event.items) > 1: {len(event.items)} new Galnet articles have been published. {set item to 0} {while item < len(event.items): {if item = 0: The first is entitled {event.items[item].title}, {if match(event.items[item].title, regexfilter): and reads {Pause(1000)} {event.items[item].content}. } |elif item = 1: The second is entitled {event.items[item].title}, {if match(event.items[item].title, regexfilter): and reads {Pause(1000)} {event.items[item].content}. } |elif item = len(event.items) - 1: The last is entitled {event.items[item].title}, {if not(match(event.items[item].title, regexfilter)): and reads {Pause(1000)} {event.items[item].content}. } |else: The next is entitled {event.items[item].title}, {if not(match(event.items[item].title, regexfilter)): and reads {Pause(1000)} {event.items[item].content} } } {set item to item + 1} {Pause(1000)} }. } |else: {if len(event.items) = 1: A new Galnet article has been published, entitled {event.items[0].title}. |elif len(event.items) > 1: {len(event.items)} new Galnet articles have been published. Their titles are {set item to 0} {while item < len(event.items): {if item = len(event.items) - 1: and {event.items[item].title} |else: {event.items[item].title}, } {set item to item + 1} }. } }
Another example, I can now repeat the landing pad location after 'docking granted'...
VA Command 'Pad location' :
Set integer [landingpad] value to the value of [EDDI docking granted landingpad]
Set Text [station] to [EDDI docking granted station]
Set Text [State Variable] to 'landingpad'
Execute external plugin 'EDDI 2.1.0-b1' and wait for return (with context = setstate & Text Variables = State Variable)
Set Text [State Variable] to 'station'
Execute external plugin 'EDDI 2.1.0-b1' and wait for return (with context = setstate & Text Variables = State Variable)
Set Text [Script] to 'Pad location'
Execute external plugin 'EDDI 2.1.0-b1' and wait for return (with context = speech & Text Variables = Script)
Speech Responder script called 'Pad location'
Code:{set station to StationDetails(state.station)} {if station.model = "Coriolis Starport" || station.model = "Orbis Starport" || station.model = "Ocellus Starport" || station.model = "Unknown Starport": {Pause(500)} Landing pad {state.landingpad} is at {if state.landingpad = 1: six o'clock near |elif state.landingpad = 2: six o'clock near |elif state.landingpad = 3: six o'clock far |elif state.landingpad = 4: six o'clock far |elif state.landingpad = 5: seven o'clock near |elif state.landingpad = 6: seven o'clock near |elif state.landingpad = 7: seven o'clock |elif state.landingpad = 8: seven o'clock far |elif state.landingpad = 9: eight o'clock near |elif state.landingpad = 10: eight o'clock far |elif state.landingpad = 11: nine o'clock near |elif state.landingpad = 12: nine o'clock near |elif state.landingpad = 13: nine o'clock |elif state.landingpad = 14: nine o'clock far |elif state.landingpad = 15: nine o'clock far |elif state.landingpad = 16: ten o'clock near |elif state.landingpad = 17: ten o'clock near |elif state.landingpad = 18: ten o'clock far |elif state.landingpad = 19: ten o'clock far |elif state.landingpad = 20: eleven o'clock near |elif state.landingpad = 21: eleven o'clock near |elif state.landingpad = 22: eleven o'clock |elif state.landingpad = 23: eleven o'clock far |elif state.landingpad = 24: twelve o'clock near |elif state.landingpad = 25: twelve o'clock far |elif state.landingpad = 26: one o'clock near |elif state.landingpad = 27: one o'clock near |elif state.landingpad = 28: one o'clock |elif state.landingpad = 29: one o'clock far |elif state.landingpad = 30: one o'clock far |elif state.landingpad = 31: two o'clock near |elif state.landingpad = 32: two o'clock near |elif state.landingpad = 33: two o'clock far |elif state.landingpad = 34: two o'clock far |elif state.landingpad = 35: three o'clock near |elif state.landingpad = 36: three o'clock near |elif state.landingpad = 37: three o'clock |elif state.landingpad = 38: three o'clock near |elif state.landingpad = 39: four o'clock near |elif state.landingpad = 40: four o'clock far |elif state.landingpad = 41: five o'clock near |elif state.landingpad = 42: five o'clock near |elif state.landingpad = 43: five o'clock |elif state.landingpad = 44: five o'clock far |elif state.landingpad = 45: five o'clock far } , as you enter with the green lights on your right. }
This should give you a little taste as to the power of State objects. I hope you find this useful.
H/T to Cmdr Tkael for his excellent Galnet reader script.
jgm, the default scripts appear to be unchanged in the new beta?
For instance, the default script for "Docking denied" is still "We have been denied docking." with none of the described additions.
(I checked both my custom personality and the default personality, no difference to the default was found).
Yes, for some odd reason the updates weren't included in the package.
If you want you can grab them from https://www.mcdee.net/elite/eddi.json and put them in to your EDDI directory (replacing the existing one). It'll be packaged correctly in the next beta release.
This doesn't work. As soon as I start EDDI, it overwrites the downloaded eddi.json file with an almost empty one.
EDIT: Ok, what did work was changing the filename to beta.json and editing the 'name' inside the file to 'beta', then throwing it into the personalities folder.
Sorry, to be clear what I meant by 'EDDI directory' is wherever you installed EDDI (e.g. c:\Program files (x86)\VoiceAttack\Apps\EDDI). NOT your %APPDATA%\EDDI
jgm,
I have a feature request to add to your long list
I would like voice attack to have access to the utility mount variables, similar to the ship compartment variables
My interest is in writing a Voice Attack ((EDDI Shields down)) script which will scan the Utility Mount locations and automatically disable any Shield Boosters, keeping the shield recharge time to a minimum. When shields come back up, the shield boosters will be reactivated via ((EDDI Shields up)). These scripts would 'just work', regardless of the ship presently manned.
They should already be there, as tiny hardpoints (which is their official designation).
Ah, ok... I generally see them referred as Utility Mounts, hence the disconnect. Thanks!
That works fine for people who have api access, I can't do that though as not everyone has access to it. What do you do if the api is down? Good change though, well done
Even though you auto check for shield boosters, don't you still have to manually edit it anyway to indicate where in the module tab they are? AFAIK they are listed in power usage order and without a complicated script to work that out (including engineered things) there is no way of knowing, hence the necessity to still manually edit it.
- Added scripts for new events 'Entered CQC', 'Power commodity fast tracked', 'Power commodity delivered', 'Power commodity obtained', 'Power salary claimed', 'Power expansion vote cast', 'Power defected', 'Power left', and 'Power joined.