first round of new documentation!

This commit is contained in:
alterNERDtive 2021-01-21 15:42:00 +01:00
parent da81ae5985
commit 580abc8300
35 changed files with 1499 additions and 188 deletions

1
.gitignore vendored
View file

@ -357,3 +357,4 @@ MigrationBackup/
/alterNERDtive-VoiceAttack-profiles.vax
/Makefile
/site
/src

183
README.md
View file

@ -5,184 +5,27 @@ to enhance my Elite experience. They give me important info, facilitate
day-to-day gaming and do some special things for [Fuel
Rats](https://fuelrats.com) and [Hull Seals](https://hullseals.space) work.
Each of the profiles is documented in `docs/`.
## Available Profiles ##
* [EliteDangerous](docs/EliteDangerous.md): My main Elite VA profile. Here be
dragons; things may be heavily tailored towards how _I_ play the game and may
not apply to how you play it. Included for reference and as a baseline or
inspiration to create your own stuff.
* [RatAttack](docs/RatAttack.md): profile for interactions with the Fuel Rats
IRC server.
* [SpanshAttack](docs/SpanshAttack.md): profile to plot and follow trips along
the neutron highway using [spansh](https://spansh.co.uk/plotter).
* [StreamAttack](docs/StreamAttack.md): profile for writing various things to
files that can then be read by streaming software like OBS.
* EliteAttack: The main Elite VA profile. Anything related to “just” playing the
game.
* RatAttack: Manages interactions with the FuelRats IRC server.
* SpanshAttack: Plots and follows trips along the neutron highway using
[Spanshs neutron plotter](https://spansh.co.uk/plotter).
* StreamAttack: Writes various status things to files that can then be read by
streaming software like OBS.
## Requirements ##
## Documentation
* [VoiceAttack](https://voiceattack.com): absolutely required (duh).
* [bindED](https://forum.voiceattack.com/smf/index.php?topic=564.0): required
for EliteDangerous and SpanshAttack; makes anything involving hitting E:D key
binds portable. You can also use [my updated fork of
that](https://github.com/alterNERDtive/bindED); read the README over there for
more information.
* [EDDI](https://github.com/EDCD/EDDI) installed as a VoiceAttack plugin:
required for EliteDangerous, SpanshAttack and Streamattack, optional for
RatAttack.
* [ED-NeutronRouter](https://github.com/sc-pulgan/ED-NeutronRouter): required
for SpanshAttack. **Make sure to [grab the pre-release
1.02](https://github.com/sc-pulgan/ED-NeutronRouter/releases/tag/1.02)** since
1.01 has a bug with a hardcoded 50ly jump range.
* [elite-scripts](https://github.com/alterNERDtive/elite-scripts): required for
EliteDangerous, SpanshAttack and StreamAttack, recommended for RatAttack
(included).
Additionally, you need to have keyboard binds setup at least as secondary
bindings in Elites controls options. VA _cannot_ “push” joystick buttons for
you, it can only do keyboard inputs. Hence its only way to interact with Elite
is through keyboard emulation, even if you otherwise play the game with
a controller or HOTAS. Or racing wheel. Or Rock Band set. Or bananas.
## Installing ##
1. Install [VoiceAttack](https://voiceattack.com).
1. Install the plugins listed in [Requirements](#Requirements).
1. Download the profile package (`alterNERDtive-voiceattack-profiles.vax`) from
the [release
page](https://github.com/alterNERDtive/VoiceAttack-profiles/releases/latest)
and import it as a profile into VoiceAttack. This will install all included
profiles, the referenced sound files and the Python scripts.
(You can also download the profiles individually from the `profiles/` folder on
github.)
## Getting Started ##
You will want to create your own profile and then import the downloaded ones
into your custom profile. This way you can easily add commands (to your custom
profile), change commands (by copying them into your custom profile and editing
them) and change settings (by overriding them in your custom profile). Note that
most settings can be changed with voice commands. If you find any that cannot
but you feel should, please file an issue or report it on Discord.
### Creating a Custom Profile ###
Hit the second button next to the profile dropdown menu and choose “Create new
Profile”. Give it a name and add some commands if you want to.
You can also just keep using a profile you have already created.
### Importing profiles ###
First off, create a startup command. You can name it anything you want, but
I recommend calling it “startup” or similar, and to deactivate the “when i say”
checkbox in the command options to make sure you dont accidentally run it via
voice. We will need this command later.
While editing the profile, hit the “Options” button. On the section labeled
“Include commands from other profiles”, hit the “…” button and add all profiles
(`EliteDangerous`, `RatAttack`, `SpanshAttack`, `StreamAttack`). All commands
defined in these profiles will be available to you. Make sure that
“EliteDangerous” is on top of the list.
Now switch to the “Profile Exec” tab. Tick the “Execute a command each time this
profile is loaded” checkbox, and select the “startup” command you have created
earlier.
Edit your startup command. Add a new action using “Other” → “VoiceAttack Action”
→ “Execute Another Command”. Choose “Execute by name (Advanced)” and enter
“EliteDangerous.startup”.
### Settings ###
All profiles will load sane defaults if you havent changed anything. You no
longer need to fiddle with the `startup` commands of each profile, instead you
can use voice commands to change settings! See the `docs/` and the
`_configuration` commands section of each profile.
Basically all the settings are available using the `customize settings` prefix,
then saying `[enable;disable] <setting>` for on/off switches and `set <setting>`
for text variables.
One caveat applies: settings will only be saved in the profile you have
selected, but be preserved if you switch around.
### Making changes ###
If you want to edit a command or add your own, _do not edit the profiles
directly_. Instead create commands in your custom profile, and copy commands you
want to change over to that before editing them. This will make sure no changes
are lost if you update the profiles.
Because of limitations of VoiceAttack itself, only the first matching command
found will be executed, _including EDDI events_. That means that if you create
commands to handle EDDI events, you are going to have to check the imported
profiles if they rely on these event handlers as well, and call them manually if
they do.
E.g. if you want to create a custom `((EDDI Message sent))` handler in your
profile, you will have to make it excute the `EliteDangerous.EDDI Message sent`
and `RatAttack.EDDI Message sent` commands. Otherwise stuff _will_ break.
If you have no idea what the previous two paragraphs were about, you can most
likely just ignore them.
## Updating ##
### The Best™ Way ###
Say “check for profiles update”. If it finds one, say “download profiles
update”. Restart VoiceAttack.
There will also be an update check every time `EliteDangerous.startup` is run.
**Note**: This is temporarily disabled because version 4.0 will introduce
breaking changes that need manual upgrade steps.
### The Manual Way ###
If you dont like automation or do not use all provided profiles, youll have to
update semi-manually.
Say “open VoiceAttack import folder”. Download the current release profile
package, drop it in there. Restart VoiceAttack.
### Note about Admin Privileges ###
The update process will run VoiceAttack with admin privileges. If you do not
usually run VoiceAttack with admin privileges, do _not_ have it start
VoiceAttack for you after importing the profiles update. It will keep running
with elevated privileges. Instead restart it manually. If you are not sure if
you are running with elevated privileges check the “VoiceAttack Information”
dialog in VoiceAttack General settings → “System Info >”. It will include a line
about running with admin prvileges if it does.
### Major Version Changes ###
If a profiles major version number changes (e.g. SpanshAttack 1.x.x to 2.0.0)
there _will_ be changes to the profile that include one or any amount of the
following changes:
* command names / command invocation have changed
* configuration variable name or format have changed
* features removed
* _major_ features added
**If you see a major version number change in the release notes, please pay
attention to said notes to know what you might have to change to get it to
work!**
You can find [comprehensive documentation on Github
Pages](https://alternerdtive.github.io/VoiceAttack-profiles).
## Need Help / Want to Contribute? ##
If you run into any errors, please try running the profile in question on its
own / get a fresh version. If that doesnt fix the error, look at the
[devel](https://github.com/alterNERDtive/VoiceAttack-profiles/tree/devel) branch
and see if its fixed there already.
If you run into any errors, please make sure you are running the latest version
of the profiles and all requirements.
If you have no idea what I was saying in that last parargraph and / or the
things mentioned there dont fix your problem, please [file an
If your problem persists, please [file an
issue](https://github.com/alterNERDtive/VoiceAttack-profiles/issues). Thanks! :)
You can also [say “Hi” on Discord](https://discord.gg/kXtXm54) if that is your

View file

@ -1,6 +1,6 @@
# StreamAttack #
This profile uses the [EDDI](https://github.com/EDCD/EDI) plugin to write
This profile uses the [EDDI](https://github.com/EDCD/EDDI) plugin to write
a bunch of information about your commander, your current location and your ship
to files that can be accessed e.g. by your streaming software to be displayed on
stream.

View file

@ -0,0 +1,465 @@
# EliteAttack #
This is my personal VoiceAttack profile for Elite: Dangerous. It started out
ages ago as a modification of [MalicVRs public
profile](https://forums.frontier.co.uk/threads/malics-voice-attack-profile-for-vr.351050/),
then looked less and less and less like that and I added and cleaned up a lot of
things while removing the stuff I didnt use anyway. By now it would have
probably been simpler to start from scratch.
Some of it has grown to a state that it might be useful to others in its own
package, so Ive separated the neutron jumping and Seals stuff into their own
profiles.
The rest is a random conglomerate of all things VA and E:D; from various voice
commands to lots of EDDI event handlers.
Speaking of EDDI; it has become in integral part of my Elite experience,
especially the plethora of information it extracts from the games journal and
presents to you via lots and lots of status variables and by firing various
events that can then be handled through VA commands. Its great. Check it out.
(You might want to make it talk a lot less in its personality options, or
disable the speech responder entirely like I have.)
## Requirements ##
In addition to the bindED and EDDI VoiceAttack plugins, this profiles needs my
[Python elite-scripts](https://github.com/alterNERDtive/elite-scripts) to do
everything properly. The release page here includes a compiled version for
Windows that does not need Python installed. If you use the profile package from
the release page, they will be installed automatically.
## Settings ##
Because Elites keyboard handling is … weird youll have to set the key to use
for pasting text into Elite:Dangerous. If you are not using a “standard”
QWERT[YZ] layout, you will have to change it back to the key that is physically
in the place where `v` would be on QWERTY.
For other settings, see the [Configuration Variables](#Configuration-Variables)
section.
## Including the Profile In Another Profile ##
This is meant to be a standalone profile, including the others in this repo (and
a couple more). It was never designed to be included into your existing profile.
Nevertheless, it _should_ work properly if you follow some guide lines:
* Run the startup command. You will need to have a startup command in your
profile (= one that is run on profile loading) and call
`EliteDangerous.startup` by name from that one.
* Make sure all EDDI events that EliteDangerous needs are correctly handled. For
all events used in EliteDangerous that you already have handlers for in your
profile, youll have to include a call to `EliteDangerous.<event name>`. E.g.
for “EDDI Jumped”, call `EliteDangerous.EDDI Jumped` by name from your `((EDDI
Jumped))` command.
## Usage ##
### Chat Commands ###
Theres a bunch of commands in here to send certain things to chat. Unless
stated otherwise, they will only work with the comms panel active, and you
should be in the edit window ready to send. They will _not_ hit Enter on their
own.
* `clear [chat;text]`: Clears the chat window. Use from outside the comms panel.
* `[local;squad;system;wing] chat`: Puts you into the chosen chat channel.
* `paste text`: Pastes your clipboard into Elite. Works outside the comms panel
too, e.g. on the galaxy map inside the search field.
* `salute; oh seven`: Will put “o7” into the chat.
### Engineering/Materials ###
* `how many [<g5 manufactured materials list>] do i have`: Tells you how many of
the given g5 manufactured material you currently have on board. Ive
restricted it to just those to not spam speech recognition with too many
phrases, and because those are the ones I usually want to know while jumping
around the bubble and having an eye on any HGE that might be around.
* `open e d engineer`: Opens the ED Engineer tool.
* `what [mats;materials] do i need?`: Runs the EDDI responder that tells you
which materials are below wanted threshold. Needs setting those first. Gets
very spammy if you do it for all of them; personally I only set them for g5
manufactured, so I can quickly check if its worth looking for HGE in a system
Im in.
### Events ###
The main point of this profile is to react to Elites journal events (powered by
EDDI). Each of the events listed here will trigger a `((EDDI <event>))` command
in VoiceAttack which in turn triggers `EliteDangerous.EDDI <event>` and all
included profiles similar commands, e.g. `SpanshAttack.EDDI <event>`.
The actual `((EDDI <event>))` command will only be executed once by VoiceAttack,
the first one it can find. Keeping it separate from the actual code to be run
makes it easier to handle (multiple) included profiles.
If the command for an event will send key presses to Elite, it focuses the
client window first to make sure they get registered properly. If it is not in
focus, the first key press might be swallowed otherwise.
For other commands, the profile just assumes that you are actively doing
something in game and it is already focused :)
#### Body Mapped ####
Announces an estimate for high-value bodies payouts and the remaining mapping
candidates in the system as given by EDDI.
#### Body scanned ####
Announces any interesting body traits found when scanning:
* terraformable
* Earth-like World, Ammonia World or Water World
* landable and >5g
* semimajor axis <1.5ls (only really interesting for planets, but theres no
proper way to separate them from moons, sadly)
* radius <300km
Feel free to suggest more!
#### Carrier Cooldown ####
Tells you when your carrier is able to do its next jump. Technically only works
if you were docked at it when it performed the jump, but Im doing some
behind-the-scenes magic if you werent :)
Might be slightly off (too early) in the latter case.
#### Carrier Jumped ####
Announces system and body your carrier has just jumped to.
#### Carrier Jump Engaged ####
This event fires when your carrier jumps but you are _not_ docked at it. It
provides way less information than the `Carrier Jumped` event, but hey, I dont
use most of it anyway.
Basically just calls `Carrier Jumped` (and makes sure that a `Carrier cooldown`
event is triggered manually at approximately the right time).
#### Carrier Jump Request ####
Announces the system and body your carrier has just been scheduled to jump to.
Use this to double check ingame information; Ive had my carrier accept a body
as jump target, but then end up around the star. This _might_ give you a heads
up on that.
#### Carrier Pads Locked ####
Announces your carriers lockdown procedures. This _might_ only work when you are
docked (which would make it pretty useless). Feel free to open in issue if
thats the case.
#### Discovery Scan ####
Announces the number of bodies (and non-body signals) found in the system. Also
compares the number of bodies to the amount reported by EDSM (requires Python
scripts).
#### Docked ####
Automatically gets your ship into the hangar and opens station services.
#### Docking Denied ####
Tells you the reason for docking denial.
#### Entered Normal Space ####
Throttles to 0 upon dropping from SC, if `EliteDangerous.hyperSpaceDethrottle` is set.
#### Fighter Launched ####
Orders your ship to hold position so it doesnt chase after you immediately.
#### Jet Cone Boost ####
Sets your ship to full throttle immediately after you have supercharged.
#### Jumped ####
* zeroes throttle
* gets the systems body count from EDSM (requires Python scripts)
* gets stations with outdated data (older than 1 year) from Spanshs API
* if you havent visited the systems, starts a discovery scan (see the discovery
scan command)
* last but not least tells you about planets worth scanning if you are on the
R2R
#### Liftoff ####
Retracts landing gear for you. Seriously, is there any occasion in which you
_dont_ immediately want to retract it after takeoff?
#### Low Fuel ####
Warns you when you reach 25% fuel. Also reports number of jumps you have left or
the (rough) range you still have on the fumes left in your tank.
#### Material Threshold ####
Warns you when a monitored material falls below its minimum stock level. You
will have to set a minimum desired amount in EDDIs material monitor options
first for all materials you wish to be monitored.
#### Message Sent ####
Checks any message you send for a chat prefix and sends it to the proper chat
window. Probably largely useless to you without modification.
* `.nc`: Actually doesnt send anything, but runs the
`RatAttack.announceNearestCMDR` command with the system given in the rest of
the message.
* `.dc`: Sends the message to the Discord window.
* `.tc`: Sends the message to my twitch channel window (IRC #alternerdtive).
There are similar event commands in RatAttack and SealAttack handling other chat
windows.
#### Ship FSD ####
This event actually is several different events in one. Currently the following
are handled:
* charging: Warns you if your target systems main star is not scoopable,
including an extra warning at low fuel levels. (__Note__: This only works if
the target system is in EDSM. So its kind of useless for its intended use
(exploration) and probably going to be removed at some point.)
* cooldown complete: Announces FSD cooldown if you are currently in normal
space.
#### Ship interdicted ####
Tells you when you have been interdicted by a player. Is also supposed to target
the interdictor automatically, but randomly sometimes just doesnt work. Yay!
#### Ship targeted ####
This currently doesnt do anything. I was fiddling around with automatically
targeting a certain module on ship targeting, but it was more hassle than I had
thought.
#### SRV Launched ####
Toggles SRV lights off after launching. Might not work if you drop particularly
far after deployment because it works off a timer. Conversely might take
a second to turn your lights off on a short drop and/or in high gravity.
#### System Scan Complete ####
Lists you all bodies EDDI considers worth mapping in the current system.
#### Undocked ####
Retracts landing gear for you. Seriously, is there any occasion in which you
_dont_ immediately want to retract it after takeoff?
#### VA initialized ####
Fires when the EDDI VoiceAttack plugin is loaded. Makes sure that EDDI is set to
quite mode even if the profile was loaded before plugin initialization had
completed.
### Misc ###
The commands in here do random more or less useful things.
* `bind keys;reset key binds`: Reloads your key binds through the bindED plugin.
You should do that after changing anything in the controls options.
* `copy current system`: Copies the current system name into the clipboard.
* `distance [from;to] […]`: Tells you the distance from your current position to
the other thing you mentioned and is supported in the command. (requires
Python scripts)
* `do a barrow roll`: WHOOOOOOO!
* `fix window dimensions`: When you start the game in VR, it forces into
windowed mode with weird resolution. This changes it back. Hover the “PLAY”
entry in the main menu, then run this. Will need adjustment for different
graphics cards/drivers and the resolution you want.
* `neutron [jump;trip] time`: Shorter version of the same thing in SpanshAttack.
* `neutron jumps left`: Shorter version of the same thing in SpanshAttack.
* `open copied system on EDSM`: Opens the system in your clipboard on EDSM in
your default browser.
* `open coriolis`: Opens Coriolis in your default browser.
* `open [current;] system on EDSM`: Opens your current system on EDSM in your
default browser.
* `open EDDI options; configure EDDI`: Opens the EDDI configuration window.
* `open e d d b [station;system;faction;] [search;]`: Opens EDDB in your default
browser.
* `open e d s m`: Opens EDSM in your default browser.
* `open inara`: Opens Inara in your default browser.
* `open materials finder`: Opens EDTutorials materials finder in your default
browser.
* `open miners tool`: Opens https://edtools.ddns.net/miner in your default
browser.
* `reload bindings`: Reloads your bindings for bindED.
* `shut up EDDI`: Immediately stops any ongoing (and queued) EDDI speech.
* `[start;stop] [EDISON;navigation]`: Hits `CTRL+ALT+E` which just so happens to
be the start/stop hotkey I have set in E.D.I.S.O.N.
* `[bodies;whats;what is] left to [map;be mapped;scan]`: Tells you which bodies
EDDI thinks are worth mapping in the system that you havent mapped yet.
### Navigation ###
There are so many navigation-focused commands now, they deserve there own
category. Basically anything that helps you plot anywhere. A lot of those are
powered by awesome EDDI so I dont have to do the work myself!
* `plot course;[target;] next [waypoint;way point]`: Plots a course to the
system set in `~~system` or the one in your clipboard. The former way is
usually used by other commands to not interfere with your clipboard.
* `[find;target] nearest [encoded;manufactured;raw] material trader`: Targets
the nearest respective material trader.
* `[find;target] nearest [guardian;human] tech broker`: Targets the nearest respective
tech broker.
* `[find;target] nearest [interstellar factor;mission system;scoopable star]`: Well,
you know the drill by now.
* `[find;target] nearest mission system`: Targets the nearest system that has a mission
target.
* `[find;target] [<system>]`: Targets the given system on the galaxy map. Theres
a bunch in there, the list is easily extensible. Drop me a note if you want
something included.
### Ship Controls ###
Basically anything that is related to directly doing something with your ship.
* `[abort;cancel;stop] jumping`: Stops a currently charging FSD jump.
* `[buggy;exploration] power`: Sets your PD to 0/4/2 or 2/4/0 respectively.
Works in SRV too.
* `[close;deploy;extend;open;retract;] […] [up;down;]`: Overly complicated
command to handle everything related to Cargo Scoop, Hard Points, Landing
Gear. You get the gist, I guess. Works in SRV too.
* `[disco;discovery scan]`: Executes a discovery scan. To work properly, youll
have to set the Discovery Scanner to your first fire group, secondary fire.
* `[dis;]engage silent running`: Turns silent running on and off.
* `[head;spot;] lights [on;off]`: Turns your lights on and off. Works in SRV
too, kinda; turning lights off there relies on the state updating fast enough,
which sometimes leads to weird results.
* `[jump;engage;get me out;punch it chewie] [and scan;] [when ready;]`: Retracts
everything that might be protruding from your ship, then jumps to the next
system. If the FSD isnt charging within 1s, it gets you into SC instead (e.g.
if your target is obstructed). If given “and scan” runs a discovery scan. If
given “when ready” waits for mass lock to clear, your FSD to cool down and you
to leave scoop range before jumping.
* `night vision [on;off]`: Toggles your night vision on/off. Works in SRV too.
* `power to [engines;shields;systems;weapons`: Sets 4 pips to the thing you told
it, 1 to the others.
* `rapid fire lights`: Flashes your lights 5 times in a row.
* `retract [all;everything]`: Retracts, well, everything.
* `[start;stop] [firing;mining]`: Starts/stops holding down primary fire. Mostly
useful when mining. When triggered with “mining”, also deploys the cargo
scoop.
* `[super;] cruise [when ready;]`: Retracts everything, then jumps to SC. If
given “when ready” will wait for mass lock to clear and your FSD to cool down
first.
### SRV controls ###
Things relevant to your SRV, but not your ship.
* `[recall;dismiss] ship`: Recalls or dismisses ship. Currently does the same
thing regardless of the state of your ship. I wish it would be possible to
restrict it to doing one thing each, but thats currently not possible sadly.
* `[toggle;enable;disable] drive assist`: Handles all your drive assist needs!
### Targeting ###
Well … targeting stuff, I guess. Not really sure why I made that its own
category, but oh well :)
* `target next system`: Selects the next system on your route.
* `target wing man [1;2;3]`: Targets your wing men.
* `targets target`: Targets your targets target.
* `wing man [1;2;3] target`: Targets your wing mens target.
* `wing man nav lock`: Toggles wing man nav lock on the selected wing member.
### UI Commands ###
Everything handling stuff thats not related to controlling your ship, but
manipulating some UI element(s).
* `controls options`: Opens the controls options menu.
* `docking request;request dock[ing;]`: Sends a docking request.
* `[enter;leave] F S S`: Opens/closes FSS.
* `galaxy map`: Opens the galaxy map.
* `[main;game] menu`: Opens the ESC menu.
* `[relog;reset] to [open;solo]`: Relogs to Open or Solo mode, respectively.
* `restart from Desktop`: Quits the game and restarts from an open launcher by
clicking the play button.
* `set […] filter`: Sets a nav panel filter setting. See the command or just try
different things for what is possible. You need to clear filters and hover
over the filter button, then run this.
* `system map`: Opens the system map.
* `take [high res;] screenshot`: Takes a (high res) screenshot.
* `toggle orbit lines`: Toggles the visibility of orbit lines.
* `[toggle;show;hide] interface`: Toggles the cockpit interface (CTRL+ALT+G).
Probably needs to be adjusted if you are not playing with Neo2 keyboard layout
:)
### Update Commands ###
* `check for profiles update`: Does just that. Is also automatically run each
time the profile is started.
* `download profiles update`: Downloads a profiles update if applicable. Will
prompt you to restart VoiceAttack when the download has finished to import the
updated profiles.
* `open profiles change log`: Opens `CHANGELOG.md` on Github.
## Logging ##
The profile supports logging a bunch of stuff to the VoiceAttack event log. By
default, logging is concise and constrained to basically error messages.
If you need more logging (usually for debugging purposes), say `enable logging`.
If you want to enable verbose logging _by default_, call the
`Logging.enableLogging` command from your custom profiles `startup` command.
## Configuration Variables ##
There are a bunch of configuration variables. You should not overwrite those
manually, instead use the provided commands in the `_configuration` section!
Basically all the settings are available using the `customize settings` prefix,
then saying `[enable;disable] <setting>` for on/off switches and `set <setting>`
for text variables.
* `EDDI.quietMode` (boolean): whether or not to set EDDI to quite mode. Default:
true.
* `Elite.pasteKey` (string): the key used for pasting into Elite. On QWERTY this
is `v`. Default: `p`.
* `EliteDangerous.announceEdsmSystemStatus` (boolean): whether to announce the
system or some of its bodies missing on EDSM. Default: true.
* `EliteDangerous.announceMappingCandidates` (boolean): whether to announce
mapping candidates when they are scanned. Default: true.
* `EliteDangerous.announceOutdatedStationData` (boolean): whether to announce
stations with outdated data in systems you jump to. Default: true.
* `EliteDangerous.announceR2RMappingCandidates` (boolean): whether to announce
planets worth mapping when jumping into a known system. This is useful for
doing some R2R on the side. Default: false.
* `EliteDangerous.enableCarrierAnnouncements` (boolean): whether or not to
process fleet carrier events. Default: true.
* `EliteDangerous.enableAutoUpdateCheck` (boolean): whether or not to
automatically check for updates on profile startup. Default: true.
* `EliteDangerous.flightAssistOff` (boolean): whether to automatically toggle
FlightAssist off on liftoff. Default: true.
* `EliteDangerous.hyperspaceDethrottle` (boolean): same thing as the SC assist
setting; if on, will throttle to 0 automatically after jumping. Default: true.
* `EliteDangerous.oldStationThreshold` (int): Age in days that will cause
station data to be considered outdated. Default: 365 (1year).
* `python.ScriptPath` (string): the path you have placed the compiled python
scripts in. Default: “{VA_DIR}\Sounds\scripts” (the “\Sounds\scripts” folder
in your VoiceAttack installation directory).
#### Delays / Pauses ####
Delays needed e.g. between key presses in UI navigation can vary wildly
depending on your PCs specs and configuration. Therefore they should be
configurable, shouldnt they?
So far those actually are:
* `EliteDangerous.delays.quitToDesktop`: Delay between quitting to desktop and hitting the
play button in the launcher.

View file

@ -0,0 +1,283 @@
# RatAttack #
This profile facilitates [Fuel Ratting](https://www.fuelrats.com). It aims to
eliminate as much of the required manual task and attention switching as
possible via automation and voice commands.
If you dont know what the Fuel Rats are, come hang out and ask :)
## Requirements ##
Only vanilla VoiceAttack is absolutely required to use this profile. Optionally
you can install EDDI and my elite scripts for advanced features.
* [EDDI](https://github.com/EDCD/EDDI) installed as a VoiceAttack plugin: This
will give you a better (IMO) way of using TTS. Be sure to set
`RatAttack.useEddiForVoice`. It will also enable you to have ingame chat be
transferred to IRC; see below.
* [elite-scripts](https://github.com/alterNERDtive/elite-scripts): Using the
Python scripts will give RatAttack a way to be aware of where your CMDRs are
and give you the nearest one to a rat case. Thats only really needed if you
actually _have_ multiple CMDRs, obviously. If you are using the profile
package from the release page, they will be installed automatically.
### EDDI speech responder ###
For the convenience of people that have not been using EDDI in the past,
RatAttack will deactivate the speech responder automatically to not clutter them
with unwanted TTS.
If you are already an EDDI user and want to keep the default speech responder
functionality, you will have to disable the `EDDI.quietMode` setting by running
the `customize settings disable eddi quiet mode` command.
## Settings ##
There are a lot of preferences you can set, including some you really want to
concern yourself with before you start using the profile. Some of the more
advanced features heavily rely on you giving it the correct things to work with.
See the [Configuration Variables](#Configuration-Variables) section.
## Including the Profile ##
When including the profile, be sure to
* Run the startup command. You will need to have a startup command in your
profile (= one that is run on profile loading) and call `RatAttack.startup`
from that one.
* Make sure all EDDI events that RatAttack needs are correctly handled. For all
events used in RatAttack that you already have handlers for in your profile,
youll have to include a call to `RatAttack.<event name>`. E.g. for “EDDI
Message sent”, call `RatAttack.EDDI Message sent` by name from your `((EDDI
Message sent))` command.
## Usage ##
### Going On/Off Duty ###
When you are on duty, RatAttack will automatically announce cases coming in
through IRC. When off duty, it wont.
* `[enable;disable] rat duty`: puts you on/off duty.
* `open [rat;] dispatch board`: opens the web dispatch board.
### Handling a Case ###
#### Getting Case Data From IRC ####
You can setup your IRC client to pass incoming RATSIGNALS to VoiceAttack by
writing them to a file (`%appdata%\Ratattack\ratsignal.pipe`), then calling the
appropriate command (`RatAttack.announceCaseFromRatsignal` for notification,
`RatAttack.getInfoFromRatsignal` for silently putting it into the case list).
This has two purposes:
1. announcing a new incoming case
1. storing case data and making it available to VoiceAttack, e.g. for copying
the cases system into the clipboard
You need to make your IRC client
1. wait until the file disappears (for several cases coming in at once)
1. write the RATSIGNAL to the file
1. run the VoiceAttack command
In my case I am running AdiIRC and have the following script setup for handling
this:
```
on *:TEXT:RATSIGNAL - CMDR*(??_SIGNAL):#fuelrats:{
/mkdir C:\users\<user>\appdata\roaming\RatAttack\
/handleratsignal $1-
}
alias handleratsignal {
if ( $exists(C:\users\<user>\appdata\roaming\RatAttack\ratsignal.pipe) ) {
/sleep 1 /handleratsignal $1-
}
else {
/write C:\users\<user>\appdata\roaming\RatAttack\ratsignal.pipe $1-
if ( $away ) {
/run -h "X:\path\to\VoiceAttack\VoiceAttack.exe" -nofocus -command "RatAttack.getInfoFromRatSignal"
}
else {
/run -h "X:\path\to\VoiceAttack\VoiceAttack.exe" -nofocus -command "RatAttack.announceCaseFromRatSignal"
}
}
}
```
You get the gist; if not and you dont know how to do the same thing for your
IRC client or it doesnt support copying the control characters in the ratsignal
that the profile uses to split the information, either switch to AdiIRC or bribe
me to include some other way to get case data into VoiceAttack.
**Note**: If you are running VoiceAttack as admin you need to run your IRC
client as admin, too! Otherwise it cant talk to VoiceAttack for security
reasons. You really should _not_ run VoiceAttack with elevated privileges
though. Or anything.
#### Internal Case List ####
If you have your IRC client setup properly, VoiceAttack will hold a list with
all rat cases that have come in while you had it running. It will save the case
number, CMDR name, system, O₂ status and platform. There are several commands
you can run on this list, giving it a case number:
* `rat case number [0..19] details`: Will give you all stored info on a case.
* `[current;] rat case details`: Will give you all stored info on the currently
open case.
* `distance to current rat case`: Will give you the distance from your current
location to the currently opened rat case. Requires the use of my
`elite-scripts` Python scripts.
* `distance to rat case number [0..19]`: Will give you the distance from your
current system to a cases system. Requires the use of my `elite-scripts`
Python scripts.
* `nearest commander to rat case number [0..19]`: Will give you the nearest of
your CMDRs with their distance to a cases system. Requires some setup and the
use of my `elite-scripts` Python scripts.
* `nearest commander to [the;] rat case`: Will give you the nearest of your
CMDRs with their distance to the current cases system. Requires some setup
and the use of my `elite-scripts` Python scripts.
#### Opening a Case ####
* `open rat case number [0..19]`: Opens rat case with the given number. If there
is no case data for that case (e.g. because you dont have your IRC client set
up properly), it will still open it, just not have any data on it.
* `open [latest;] rat case`: Opens the latest rat case that has come in through
IRC. Will probably error out in creative ways if you dont have your IRC
client set up properly. Too tired right now to have proper error handling so
just open an issue if you run into problems (its 7am, I havent slept and
want to finish this doc to get the release out (yes, you are allowed to laugh
at this section)).
#### Closing a Case ####
* `[close;clear] rat case`: Closes the currently open rat case.
### Making Calls ###
There are a bunch of calls you can make for a case, the most common are modelled
through VoiceAttack commands. The descriptive commands (e.g. “system confirmed”)
will be shortened to the usual IRC short hands (e.g. “sysconf”). If you need
something more unusual you can either still manually type it into your IRC
client or use the “General IRC Integration”, see below.
* `call [1..20] jumps [and login;and takeoff;left;]`: Calls jump for the
currently open case. You can optionally include that you will still have to
login to the game or have to take off from your current
station/port/outpost/planet.
* `call friend [positive;negative] [in pg;in private group;in solo;in main
meu;sysconf;system confirmed]`: Friend request confirmations, with all the
things you might want to / should call with it.
* `call [beacon;fuel;instance;pos;position;prep;sys;system;wing]
[positive;negative]`: All the stuff you usually need for ratting after you
have received the friend request.
* `call wing pending`: Calls “wr pending” for when it takes 30s again to
actually show up.
* `call client in [exclusion zone;main menu;open;open sysconf;pg;private
group;solo;super cruise]`: Callouts for all the various things a client could
get themselves into.
* `call [client destroyed;client offline;sysconf;system confirmed]`: This is the
command you dont want to use. Include sysconf in your “friend+” or “in open”
calls, and make sure you will never have to call “client destroyed”, would
you?
### General IRC Interaction ###
(requires EDDI)
Using EDDI to read the games journal, you can send messages to IRC from Elites
ingame chat.
**Be aware that the chat message will still appear in the ingame chat channel
you send it to!**
I recommend using local chat and limiting the use to instances that will
probably not have other players in it (e.g. instanced in normal space with the
client or in SC in some remote system out in the black on a long range rescue).
* #fuelrats: Use “.fr \<message\>” to have VoiceAttack send “#\<caseNumber\>
\<message\>” to the #fuelrats channel or yell at you when you are not on
a case.
* #ratchat: Use “.rc \<message\>” to have VoiceAttack send “\<message\>” to
#ratchat.
These commands send their text to windows with “#fuelrats” and “#ratchat” in
their title, respectively. If your IRC client does not do that, you will have to
change the “target” window of the `RatAttack.sendToFuelrats` and
`RatAttack.sendToRatchat` commands to reflect the actual window titles on your
system. I will look into making this more elegant to change in the future.
## Logging ##
The profile supports logging a bunch of stuff to the VoiceAttack event log. By
default, logging is concise and constrained to basically error messages.
If you need more logging (usually for debugging purposes), say `enable logging`.
If you want to enable verbose logging _by default_, call the
`Logging.enableLogging` command from your custom profiles `startup` command.
## Exposed Variables ##
The following Variables are _global_ and thus readable (and writeable! Please
dont unless its a config variable …) from other profiles.
### Configuration Variables ###
There are a bunch of configuration variables. You should not overwrite those
manually, instead use the provided commands in the `_configuration` section!
Basically all the settings are available using the `customize settings` prefix,
then saying `[enable;disable] <setting>` for on/off switches and `set <setting>`
for text variables.
* `EDDI.quietMode` (boolean): whether or not to set EDDI to quite mode. Default:
true.
* `EDDI.useEddiForVoice` (boolean): whether to use the EDDI plugin to handle
text-to-speech over VoiceAttacks built-in speech function. Default: false.
* `Elite.pasteKey` (string): the key used for pasting into Elite. On QWERTY this
is `v`. Default: `v`.
* `RatAttack.announceNearestCMDR` (boolean): whether or not to automatically
announce your nearest CMDR to a case. Requires the `elite-scripts` Python
scripts. Will probably break in creative ways if you dont have them and turn
it on anyway. Default: false.
* `RatAttack.announcePlatform` (boolean): whether or not to announce the cases
platform by default. Useful to set if you are active on more than one
platform. Even with this off, you will still be warned when you open a case
that is _not_ on one of your platforms. Default: false.
* `RatAttack.CMDRs` (string): list of your CMDR names, delimited by spaces. If
your names include spaces, you will have to put them in quotes. Default: “"J
Jora Jameson" NameWithNoSpace”.
* `RatAttack.confirmCalls` (boolean): whether VoiceAttack should ask you before
posting to #fuelrats to make sure there hasnt been an error in voice
recognition and you accidentally post the wrong thing. Default: true.
* `RatAttack.autoCloseCase` (boolean): whether or not to automatically close an
open rat case on calling “fuel+”. Default: false.
* `RatAttack.onDuty` (boolean): whether or not you are currently on rat duty.
Default: true.
* `RatAttack.platforms` (string): the platforms you want to be informed of
incoming cases for. If you are on console, you can still have VoiceAttack
running on the PC that you are using for IRC and handle calls and stuff using
voice! Delimited by whatever you want. Can include “PC”, “XB”, “PS4”.
Default: “PC”.
* `python.scriptPath` (string): the path you put the Python scripts in. Default:
“{VA_DIR}\Sounds\scripts”.
### Other Variables ###
Current case data:
* `RatAttack.caseNumber` (int): the number of the case you are currently on.
Will be `Not Set` if you are not on a case.
* `RatAttack.onCase` (boolean): whether or not you are currently on a case.
Case list:
* `RatAttack.caseList.<case#>.cmdr` (string)
* `RatAttack.caseList.<case#>.system` (string)
* `RatAttack.caseList.<case#>.platform` (string)
* `RatAttack.caseList.<case#>.codeRed` (boolean)
… with `<case#>` being a number between 0 and 19.

View file

@ -0,0 +1,241 @@
# SpanshAttack #
This profile uses the
[ED-NeutronRouter](https://github.com/sc-pulgan/ED-NeutronRouter) plugin to plot
neutron jumps using [spansh](https://spansh.co.uk/plotter). It fully does
everything you need from within the game and VoiceAttack, you wont have to
visit the site at any point.
## Requirements ##
In addition to VoiceAttack, you will need the following plugins to use this
profile:
* [bindED](https://forum.voiceattack.com/smf/index.php?topic=564.0)
* [EDDI](https://github.com/EDCD/EDDI) installed as a VoiceAttack plugin
* [ED-NeutronRouter](https://github.com/sc-pulgan/ED-NeutronRouter): required
for SpanshAttack. **Make sure to [grab the pre-release
1.02](https://github.com/sc-pulgan/ED-NeutronRouter/releases/tag/1.02)** since
1.01 has a bug with a hardcoded 50ly jump range.
### EDDI speech responder ###
For the convenience of people that have not been using EDDI in the past,
SpanshAttack will deactivate the speech responder automatically to not clutter
them with unwanted TTS.
If you are already an EDDI user and want to keep the default speech responder
functionality, you will have to disable the `EDDI.quietMode` setting by running
the `customize settings disable eddi quiet mode` command.
## Settings ##
Because Elites keyboard handling is … weird youll have to set the key to use
for pasting text into Elite:Dangerous. If you are not using a “standard”
QWERT[YZ] layout, you will have to change it back to the key that is physically
in the place where `v` would be on QWERTY.
For other settings, see the [Configuration Variables](#Configuration-Variables)
section.
The last “setting” in the not-so-strict sense of the word is the
`SpanshAttack.getShipRange` command. Any ship listed in there will automatically
have its jump range used instead of VA prompting you for it. Since, again, VA
will execute the first matching command found, you can create this command in
your own profile when you are using SpanshAttack by including it. You can
override a saved range for your ship by using the `plot neutron
[course;route;trip] with custom range` command.
The ED-NeutronRouter plugin is technically supposed to read the current jump
range from EDDI; sadly a) its
[bugged](https://github.com/sc-pulgan/ED-NeutronRouter/issues/3) right now, and
b) EDDI is storing the _maximum_ distance for your ship instead of the current
/ full on fuel one.
## Including the Profile ##
When including the profile, be sure to
* Run the startup command. You will need to have a startup command in your
profile (= one that is run on profile loading) and call `SpanshAttack.startup`
from that one.
* Make sure all EDDI events that SpanshAttack needs are correctly handled. For
all events used in SpanshAttack that you already have handlers for in your
profile, youll have to include a call to `SpanshAttack.<event name>`. E.g.
for “EDDI Jumped”, call `SpanshAttack.EDDI Jumped` by name from your `((EDDI
Jumped))` command.
* (Optional) Have a `SpanshAttack.getShipRange` command in your profile to
overwrite the default one with your ships ranges. See the default command for
pointers.
## Usage ##
### Plotting a Route ###
1. _Target_ the system you want to be routed to (target, do not plot to it).
1. Either exit the galaxy map or make sure you are on its first tab (or
auto-plotting will break).
1. Trigger the `SpanshAttack.plotRoute` command either by voice (`plot neutron
[course;route;trip] [with custom range;]`) or calling it from another
command.
1. Enter your ships jump range if prompted.
1. Wait for the route to be calculated. The command will automatically open the
galaxy map and jump to the first waypoint on your route. If you run into
weird behaviour, its probably because your target system is not in EDDB.
1. Either target the first waypoint or plot to it.
1. Start jumping!
#### Plotting to a System Unknown to the Neutron Router ####
The router can only plot a route to a system that is in its data base (obviously
can also only give you way points that are). If your target system is not, there
are several levels of fallback handling to find a system that is.
1. Check `Next system` coordinates provided by EDDI. If the system is in EDSM,
but has for some reason not been sent over EDDN to other sites including
Spansh we can get coordinates here.
1. If the system is not in EDSM check EDTS. It can calculate approximate
coordinates for a given procedurally generated system name.
1. If that fails prompt the user for input.
1. Query Spansh API for the closest system to these coordinates.
1. Plot a route to the closest system.
Generally you should almost never be asked to input coordinates manually. If
EDTS provides coordinates with an accuracy that is worse than ±100ly per axis,
you will be prompted to make sure you are going roughly to the right
coordinates. You will find the system that is used for plotting, its
coordinates and the accuracy in VoiceAttacks log window.
### Neutron Jumping ###
With standard settings, just supercharge off a neutron cone. You should
automatically be taken to the galaxy map with the next waypoint selected.
In case you have disabled auto-plotting to the next waypoint, manually invoke
the `SpanshAttack.targetNextNeutronWaypoint` command by voice (`[target;] next
neutron [waypoint; way point]`) or calling it from another command.
Additionally, you can use the `SpanshAttack.copyNextNeutronWaypoint`
/ `[get;copy] next neutron [waypoint;way point]` command to copy the next
neutron waypoint to the clipboard.
#### Manual Re-Plot ####
Trigger the `SpanshAttack.replotRoute` command either by voice (`replot neutron
[course;route;trip]`) or calling it from another command. This will start
a re-plot of the current route with the same target system and jump range.
### Refueling ###
Whenever you refuel off a scoopable star, the profile will automatically
throttle back up to 100% speed. Unless you have disabled it in your
configuration, you will also automatically target the next system on your route
and jump to it once you leave fuel scoop range.
### Clearing a Route ###
When you reach your target system, the neutron route will automatically be
cleared. If you want to prematurely end your trip, call the
`SpanshAttack.clearRoute` / `clear neutron [course;route;trip]` command.
## Other Commands ##
### Announcing Jumps Left ###
You can have VoiceAttack tell you the amount of jumps left on the current route
by invoking `SpanshAttack.announceJumpsLeft` or saying
`how many [neutron;] jumps [are;] left?`.
**Note**: Because its pretty much impossible to calculate a 100% accurate value
for the total jumps left, it will just tell you the jump count _from the current
neutron waypoint_.
### Announce elapsed time on the trip ###
SpanshAttack keeps track of your start time, even if you have the option to time
your trip turned off. This way you can get the time youve been jumping with the
`SpanshAttack.announceTripTime` or
`how long have i been [jumping;on this trip;on this neutron trip]?` commands.
### Reload bindings ###
If you change any relevant bindings (e.g. the galaxy map key), you should run
the `reload bindings` command to make sure that SpanshAttack presses the right
thing for you.
Eh, just do it every time you edit your controls without re-starting
VoiceAttack, just to be sure.
### Helper Functions ###
The profile contains a lot of helper functions that get called by the
aforementioned commands. Have a look around, maybe learn something about
VoiceAttack :)
## Logging ##
The profile supports logging a bunch of stuff to the VoiceAttack event log. By
default, logging is concise and constrained to basically error messages.
If you need more logging (usually for debugging purposes), say `enable logging`.
If you want to enable verbose logging _by default_, call the
`Logging.enableLogging` command from your custom profiles `startup` command.
## Exposed Variables ##
The following Variables are _global_ and thus readable (and writeable! Please
dont unless its a config variable …) from other profiles:
### Configuration Variables ###
There are a bunch of configuration variables. You should not overwrite those
manually, instead use the provided commands in the `_configuration` section!
Basically all the settings are available using the `customize settings` prefix,
then saying `[enable;disable] <setting>` for on/off switches and `set <setting>`
for text variables.
* `EDDI.quietMode` (boolean): whether or not to set EDDI to quite mode. Default:
true.
* `EDDI.useEddiForVoice` (boolean): whether to use EDDI over VAs builtin `say`
command. Default: false.
* `Elite.pasteKey` (string): the key used for pasting into Elite. On QWERTY this
is `v`. Default: `v`.
* `SpanshAttack.timeTrip` (boolean): whether to automatically tell you at the
end of a trip how long it took you to get there. Default: false.
* `SpanshAttack.announceWaypoints` (boolean): whether to announce each waypoint
of the neutron route. Default: true.
* `SpanshAttack.announceJumpsLeft` (string): `;`-separated list of remaining
jumps to announce when said amounts are reached. Right now only works if they
are _exactly_ reached when supercharging off a neutron. Note the extra `;` at
the beginning and end of the string. Default: `;1;3;5;10;15;20;30;50;75;100;`
* `SpanshAttack.autoJumpAfterScooping` (boolean): whether to automatically jump
after fuel scooping (and moving out of scoop range). Default: true.
* `SpanshAttack.autoPlot` (boolean): whether to automatically plot to the next
waypoint on supercharging. Default: true.
* `SpanshAttack.clearOnShutdown` (boolean): whether or not to automatically
clear an active neutron route on Elite client shutdown. Default: true.
* `SpanshAttack.defaultToLadenRange` (boolean): whether or not to default to
your ships laden range (as reported by EDDI) instead of asking for user
input. Sadly its with _current_ fuel, not full. Setting a ships jump range
in the `SpanshAttack.getShipRange` command will still overrule this. Default:
false.
* `SpanshAttack.copyWaypointToClipboard` (boolean): whether to copy the next
waypoint into the Windows clipboard for use in other programs. Default: false.
* `python.scriptPath` (string): the path you put the Python scripts in.
Default: “{VA_DIR}\Sounds\scripts”.
### Other Variables ###
These variables can be used to get information about the current neutron route.
Please do not set them manually and / or from outside the SpanshAttack profile.
* `SpanshAttack.plotSystem` (string): the system actually plotted towards using
the neutron router (onley used/set if the target system is not in the data
base)
* `SpanshAttack.targetSystem` (string): the target system for the current
neutron route
* `SpanshAttack.nextNeutronWaypoint` (string): the next waypoint on the current
neutron route
* `SpanshAttack.neutronJumpMode` (boolean): neutron jump mode active/inactive
* `SpanshAttack.jumpRange` (decimal): the current ships jump range

View file

@ -0,0 +1,120 @@
# StreamAttack #
This profile uses the [EDDI](https://github.com/EDCD/EDDI) plugin to write
a bunch of information about your commander, your current location and your ship
to files that can be accessed e.g. by your streaming software to be displayed on
stream.
Default folder is `%appdata%\StreamAttack\`.
## Requirements ##
In addition to VoiceAttack, you will need the following plugins to use this
profile:
* [EDDI](https://github.com/EDCD/EDDI) installed as a VoiceAttack plugin
### EDDI speech responder ###
For the convenience of people that have not been using EDDI in the past,
StreamAttack will deactivate the speech responder automatically to not clutter
them with unwanted TTS.
If you are already an EDDI user and want to keep the default speech responder
functionality, you will have to disable the `EDDI.quietMode` setting by running
the `customize settings disable eddi quiet mode` command.
## Settings ##
See the [Configuration Variables](#Configuration-Variables) section.
## Including the Profile ##
When including the profile, be sure to
* Run the startup command. You will need to have a startup command in your
profile (= one that is run on profile loading) and call `StreamAttack.startup`
from that one.
* Make sure all EDDI events that StreamAttack needs are correctly handled. For
all events used in StreamAttack that you already have handlers for in your
profile, youll have to include a call to `StreamAttack.<event name>`. E.g.
for “EDDI Jumped”, call `StreamAttack.EDDI Jumped` by name from your `((EDDI
Jumped))` command.
## Commands ##
* `clear jump target`: clears the current jump target.
* `set jump target`: sets the jump target to the currently targeted system.
Distance will be written to the configured file.
* `[copy;open] ship build`: copies the current ship build (coriolis) or opens it
in your default browser.
* `open StreamAttack folder`: opens the configured folder in Explorer.
## Files the Profile Provides ##
### Elite ###
#### Commander ####
* `Elite\cmdr\name`: the current commanders name.
#### Jump Target ####
* `Elite\jumpTarget\distance`: distance to current jump target in light years.
* `Elite\jumpTarget\full`: pretty-printed `<distance> ly to <name>`.
* `Elite\jumpTarget\name`: the current jump targets system name.
#### Location ####
* `Elite\location\full`: depending on your status, either the station you are
currently docked at (+ system), the body you are currently near, or the system
you are currently in.
* `Elite\location\system`: the system you are currently in.
#### Ship ####
* `Elite\ship\build`: your current ships loadout (link to coriolis).
* `Elite\ship\full`: `“<name>” | <model> | <build>`.
* `Elite\ship\model`: your current ships model.
* `Elite\ship\name`: your current ships name.
## Logging ##
The profile supports logging a bunch of stuff to the VoiceAttack event log. By
default, logging is concise and constrained to basically error messages.
If you need more logging (usually for debugging purposes), say `enable logging`.
If you want to enable verbose logging _by default_, call the
`Logging.enableLogging` command from your custom profiles `startup` command.
## Exposed Variables ##
The following Variables are _global_ and thus readable (and writeable! Please
dont unless its a config variable …) from other profiles:
### Configuration Variables ###
There are a bunch of configuration variables. You should not overwrite those
manually, instead use the provided commands in the `_configuration` section!
Basically all the settings are available using the `customize settings` prefix,
then saying `[enable;disable] <setting>` for on/off switches and `set <setting>`
for text variables.
* `EDDI.quietMode` (boolean): whether or not to set EDDI to quite mode. Default:
true.
* `EDDI.useEddiForVoice` (boolean): whether to use EDDI over VAs builtin `say`
command. Default: false.
* `StreamAttack.outputDir` (string): the directory StreamAttack will save its
information to. Default: `%appdata%\StreamAttack\`.
* `python.ScriptPath` (string): the path you have placed the compiled Python
scripts in. Default: “{VA_DIR}\Sounds\scripts” (the “\Sounds\scripts” folder
in your VoiceAttack installation directory).
### Other Variables ###
These variables can be used to get information about the current neutron route.
Please do not set them manually and / or from outside the StreamAttack profile.
* `StreamAttack.Elite.jumpTarget` (string): the current jump target.

View file

@ -0,0 +1 @@
# VoiceAttack

View file

@ -0,0 +1,42 @@
# General Configuration
Additionally, you need to have keyboard binds setup at least as secondary
bindings in Elites controls options. VA _cannot_ “push” joystick buttons for
you, it can only do keyboard inputs. Hence its only way to interact with Elite
is through keyboard emulation, even if you otherwise play the game with
a controller or HOTAS. Or racing wheel. Or Rock Band set. Or bananas.
### Settings ###
All profiles will load sane defaults if you havent changed anything. You no
longer need to fiddle with the `startup` commands of each profile, instead you
can use voice commands to change settings! See the `docs/` and the
`_configuration` commands section of each profile.
Basically all the settings are available using the `customize settings` prefix,
then saying `[enable;disable] <setting>` for on/off switches and `set <setting>`
for text variables.
One caveat applies: settings will only be saved in the profile you have
selected, but be preserved if you switch around.
### Making changes ###
If you want to edit a command or add your own, _do not edit the profiles
directly_. Instead create commands in your custom profile, and copy commands you
want to change over to that before editing them. This will make sure no changes
are lost if you update the profiles.
Because of limitations of VoiceAttack itself, only the first matching command
found will be executed, _including EDDI events_. That means that if you create
commands to handle EDDI events, you are going to have to check the imported
profiles if they rely on these event handlers as well, and call them manually if
they do.
E.g. if you want to create a custom `((EDDI Message sent))` handler in your
profile, you will have to make it excute the `EliteDangerous.EDDI Message sent`
and `RatAttack.EDDI Message sent` commands. Otherwise stuff _will_ break.
If you have no idea what the previous two paragraphs were about, you can most
likely just ignore them.

Binary file not shown.

After

Width:  |  Height:  |  Size: 47 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 97 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 51 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 87 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 86 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

View file

@ -1,17 +1,33 @@
# Welcome to MkDocs
# Elite Dangerous VoiceAttack Profiles
For full documentation visit [mkdocs.org](https://mkdocs.org).
These are various profiles for [VoiceAttack](https://voiceattack.com) (VA) I use
to enhance my Elite experience. They give me important info, facilitate
day-to-day gaming and do some special things for [Fuel
Rats](https://fuelrats.com) and [Hull Seals](https://hullseals.space) work.
## Commands
## Available Profiles
* `mkdocs new [dir-name]` - Create a new project.
* `mkdocs serve` - Start the live-reloading docs server.
* `mkdocs build` - Build the documentation site.
* `mkdocs help` - Print this help message.
* [EliteAttack](EliteAttack): The main Elite VA profile. Anything related to
“just” playing the game.
* [RatAttack](RatAttack): Manages interactions with the FuelRats IRC server.
* [SpanshAttack](SpanshAttack): Plots and follows trips along the neutron
highway using [Spanshs neutron plotter](https://spansh.co.uk/plotter).
* [StreamAttack](StreamAttack): Writes various status things to files that can
then be read by streaming software like OBS.
## Project layout
They all require the `alterNERDtive-base` profile that, well, provides basic
functionality common to all of the above.
mkdocs.yml # The configuration file.
docs/
index.md # The documentation homepage.
... # Other markdown pages, images and other files.
## Need Help / Want to Contribute?
Well, you are in the right place. You can find comprehensive documentation right
here.
If you run into any errors, please make sure you are running the latest version
of the profiles and all requirements.
If your problem persists, please [file an
issue](https://github.com/alterNERDtive/VoiceAttack-profiles/issues). Thanks! :)
You can also [say “Hi” on Discord](https://discord.gg/kXtXm54) if that is your
thing.

194
docs/installing.md Normal file
View file

@ -0,0 +1,194 @@
# Installing
## Install VoiceAttack
Grab the [most recent VoiceAttack beta
version](https://voiceattack.com/#download-1) off the official site and install
it. Right now 32bit vs. 64bit does not make any difference, but there is no
reason not to choose 64bit unless you are running a 32bit version of Windows (is
that even still a thing?).
If you are using the standalone version you should probably download the
executable installer. If you are using the Steam version of VoiceAttack, you
will have to download the zipped folder and replace your installed version with
its contents.
![[VoiceAttack-download.png]]
[Here is the first hit on a Google search for finding the installation
folder](https://steamcommunity.com/sharedfiles/filedetails/?id=760447682). It is
for a completely unrelated game, but the steps are the same.
You can potentially also install the latest non-beta version; but I often use
features that have only just been added to the beta, so some things might break
for you if you are not using that.
Make sure you have plugin support enabled:
1. Go to VoiceAttack settings. ![[VoiceAttack-settings.png]]
1. Check “enable plugin support” ![[VoiceAttack-settings-plugin-support.png]]
While you are there, you might also want to enable the automatic update checks.
![[VoiceAttack-settings-updates.png]]
## Install EDDI
Install [the latest release](https://github.com/EDCD/EDDI/releases/latest) from
Github (The `EDDI-X.Y.Z.exe` under “Assets”). You will need to [install it as a
VoiceAttack
plugin](https://github.com/EDCD/EDDI/wiki/VoiceAttack-Integration#using-eddi-with-voiceattack).
If you do not want to install it into the VoiceAttack installation folder (or
already have it installed somewhere else) you can also just make a symbolic
link. Open a CMD prompt (Windows key + `R`, enter “cmd”, hit `Enter`) and do
```cmd
>cd x:\path\to\VoiceAttack\Apps
>mklink /J EDDI x:\path\to\EDDI
```
If you have installed the non-Steam version of VoiceAttack to the default folder
within “ProgramFiles” you will have to run the CMD prompt as admin (Windows key
+ `R`, enter “cmd”, hit `Control` + `Shift` + `Enter`).
## Install ED-NeutronRouter
**Make sure to [grab the pre-release
1.02](https://github.com/sc-pulgan/ED-NeutronRouter/releases/tag/1.02)** since
1.01 has a bug with a hardcoded 50ly jump range (the
`EDNeutronRouter.vX.YZ.zip` under “Assets”).
You will have to extract the contents of the release .zip file to your
VoiceAttack Apps folder:
1. Go into VoiceAttack settings. ![[VoiceAttack-settings.png]]
1. Click the folder set as “Apps Folder”. ![[VoiceAttack-apps.png]]
Now extract the contents of the downloaded file into there. Make sure that they
are not naked files under “Apps”, but have their own folder
“Apps\ED-NeutronRouter”! The exact folder name does not matter as long as they
_are_ in a subfolder. Otherwise the plugin will not load.
![[ED-NeutronRouter-folder.png]]
Leave the “Apps” folder open in Windows Explorer, you will need it for the next step.
## Import Profiles Package
Acquire [the latest
release](https://github.com/alterNERDtive/VoiceAttack-profiles/releases/latest)
from Github (the `alterNERDtive-voiceattack-profiles.vax` file under “Assets”).
1. Go into VoiceAttack settings. ![[VoiceAttack-settings.png]]
1. Click the folder set as “Apps Folder”. ![[VoiceAttack-apps.png]]
1. Create a sub folder named “Import” if it does not exist yet.
1. Drop the downloaded .vax file into the “Import” folder.
1. Restart VoiceAttack.
1. When prompted, import the profile package. VoiceAttack will restart when completed.
## Create a Custom Profile
Last but not least you are going to create your own custom VoiceAttack profile
for Elite. It will allow you to add your own commands, override any commands in
the profiles that you want to change and add voice triggers or hotkeys.
You can either use an existing profile, create a new one or use the provided
profile example as a basis.
Regardless of which way you choose, make sure to read the [[#Import Profiles]]
section and follow the instructions there!
### Create a New Custom Profile
1. Click the “Profile Actions” button, then “Create New Profile”.
![[VoiceAttack-new-profile.png]]
1. Give it a name and add some commands if you want to.
1. Hit “Done” to create the new profile.
### Use the Profile Example
1. Click the “Profile Actions” button, then “Import Profile”.
![[VoiceAttack-import-profile.png]]
1. Navigate to your VoiceAttack Apps folder (see above), go into the
“alterNERDtive” subfolder, choose the profile example and hit “Open”.
![[VoiceAttack-import-profile-open.png]]
Once you are done with the setup and configuration process, you can find a bunch
of example commands with comments on how to do things in this profile. Make sure
to also rename it to something more exciting than “Custom Profile Example”!
### Import Profiles
In order to use my profiles with your custom profiles, you will need to take two
additional steps:
1. Include the profiles in your custom profiles. That will make all commands
available when your custom profile is active.
1. Create a startup command for your custom profile. You can use it to do
anything you want when your profile loads, but it will also have to run the
startup command for my profiles.
#### Create a Startup Command
First off, hit the “Edit” button in VoiceAttack.
![[VoiceAttack-edit.png]]
If you are using your existing profile (or have just created a fresh one) you
will now have to create the startup command. Hit the “New Command” button.
![[VoiceAttack-edit-new-command.png]]
You can name it anything you want but I recommend calling it “startup” or
similar, and to deactivate the “when i say”checkbox in the command options to
make sure you do not accidentally run it via voice.
![[VoiceAttack-edit-startup.png]]
Add a new action using “Other” → “VoiceAttack Action”→ “Execute Another Command”.
![[VoiceAttack-edit-startup-execute.png]]
Choose “Execute by name (Advanced)” and enter “alterNERDtive-base.startup”.
![[VoiceAttack-edit-startup-action.png]]
Make sure to leave “Wait until this command completes before continuing” on and
have this action at the top of the action list for the command. That way you can
be sure that my profiles are initialized properly before your personal startup
actions are processed.
![[VoiceAttack-edit-startup-actionlist.png]]
You can add anything else you want your profile to do when it loads below this
action. You do not have to set any configuration options, this can be done way
more elegantly! More on this [later on](general.md).
#### Set Profile Options
While editing the profile, hit the “Options” button.
![[VoiceAttack-profile-options.png]]
On the section labeled“Include commands from other profiles”, hit the “…”
button.
![[VoiceAttack-profile-options-include.png]]
Add all my profiles (“EliteDangerous”, “RatAttack”, “SpanshAttack”,
`StreamAttack`).
![[VoiceAttack-profile-options-includelist.png]]
Technically you can leave out anything you are not planning on using.
Practically it probably will nott hurt you to just include everything, and it
will then available for you in the future if you choose to check it out! Make
sure that“alterNERDtive-base” is on top of the list, the order of the others
does not matter. But I like it nice and alphabetical …
Now switch to the “Profile Exec” tab. Tick the “Execute a command each time this
profile is loaded” checkbox, and select the “startup” command you have created
earlier.
![[VoiceAttack-profile-options-startup.png]]

59
docs/requirements.md Normal file
View file

@ -0,0 +1,59 @@
# Requirements
## VoiceAttack
Obviously you will need to install [VoiceAttack](https://voiceattack.com). There
is a free trial version available, but that one is limited to a single profile
and a few commands. This is 4 profiles and … a lot of commands. You will need the
full version, available for $10 (official site) or €11.99 (Steam, IIRC $14.99
for our US-based friends).
I recommend buying on the site. Why? Because on Steam, Valve gets a 30% cut.
Unlike many other developers Gary (the developer of VoiceAttack) remedies that
by having a price on Steam that ends up paying $10 to him. So basically, you are
paying Valve out of your own pocket. Many other developers do not do that, and
by buying from them directly instead of on Steam you are literally giving them
extra money. Please do keep that in mind in the future!
You also will generally need to opt into the beta version. I am usually at the
forefront of bug reports and feature requests, and I do rely on the
fixes/additions in beta versions quite often.
## EDDI
[EDDI](https://github.com/EDCD/EDDI) is a companion application for Elite:
Dangerous, providing responses to events that occur in-game using data from the
game as well as various third-party tools.
EDDI also regularly publishes beta versions. Unless a profiles release
explicitly states it, you will _not_ have to run EDDI beta.
## bindED
[bindED](https://github.com/alterNERDtive/bindED) reads your Elite Dangerous
binding files and makes them available to VoiceAttack as variables. That way
commands can be portable and you do not have to manually go through them and
change any actions that you happen to not have the standard binds for.
This plugin is _included_ in the release package.
## Elite Scripts
I have wrote a [collection of Python
scripts](https://github.com/alterNERDtive/elite-scripts) to interface with
various 3ʳᵈ party services like EDSM or Spansh. Those are called by the profiles
for various tasks, like checking a systems body count.
In the future they will be replaced by VoiceAttack plugin code.
The scripts are _included_ in the release package.
## ED-NeutronRouter
(required for SpanshAttack)
[ED-NeutronRouter](https://github.com/sc-pulgan/ED-NeutronRouter) interfaces
with [Spanshs neutron plotter](https://spansh.uk/plotter) and makes the result
available to VoiceAttack.
This will also eventually replaced by my own plugins.

1
docs/troubleshooting.md Normal file
View file

@ -0,0 +1 @@
# Troubleshooting

4
docs/upgrading.md Normal file
View file

@ -0,0 +1,4 @@
# Upgrading #
## 4.0.0 ##

View file

@ -1,7 +1,48 @@
edit_uri: ""
site_name: "alterNERDtive VA profiles"
site_url: https://alterNERDtive.github.io/VoiceAttack-profiles
repo_url: https://github.com/alterNERDtive/VoiceAttack-profiles
edit_uri: "edit/release/docs/"
site_description: "alterNERDtive VoiceAttack profiles for Elite: Dangerous"
site_author: "alterNERDtive"
remote_name: "ssh-origin"
theme:
name: readthedocs
prev_next_buttons_location: both
site_name: My Docs
theme: readthedocs
plugins:
- search
- roamlinks
#- htmlproofer
- search
- roamlinks
- mkpdfs:
author: 'alterNERDtive'
markdown_extensions:
- toc:
permalink: True
- sane_lists
nav:
- 'Home': 'index.md'
- 'Install':
- 'requirements.md'
- 'installing.md'
- 'upgrading.md'
- 'Configure':
- 'configuration/VoiceAttack.md'
- 'configuration/general.md'
- 'configuration/EliteAttack.md'
- 'configuration/RatAttack.md'
- 'configuration/SpanshAttack.md'
- 'configuration/StreamAttack.md'
- 'Use':
- 'EliteAttack.md'
- 'RatAttack.md'
- 'SpanshAttack.md'
- 'StreamAttack.md'
- 'Issues':
- 'troubleshooting.md'
- 'Report a Bug': 'https://github.com/alterNERDtive/VoiceAttack-profiles/issues/new'
- 'Watch in Action':
- 'Twitch': 'https://twitch.tv/alterNERDtive'
- 'Youtube': 'https://www.youtube.com/channel/UC3XNZA7xWed1zM1AWOOdmog'