MOAR DOCS (we’re getting there :D)

This commit is contained in:
alterNERDtive 2021-01-25 12:04:28 +01:00
parent 53d6472e01
commit ddc5bd9bcb
12 changed files with 239 additions and 1081 deletions

View file

@ -24,7 +24,7 @@ able to invoke that plugin. [You can safely ignore that](https://github.com/alte
### Added ### Added
* `alterNERDtive-base` plugin. FIXXME * `alterNERDtive-base` plugin. Provides functionality common to all profiles.
* Proper logging to the VoiceAttack log. You will notice a lot of useful * Proper logging to the VoiceAttack log. You will notice a lot of useful
information, more is available if you change the log level configuration information, more is available if you change the log level configuration
option. Logging to a file for troubleshooting will be added at a later date. option. Logging to a file for troubleshooting will be added at a later date.
@ -64,7 +64,7 @@ profile will keep the old name. Feel free to manually rename it.
### Added ### Added
* `EliteAttack` plugin. FIXXME * `EliteAttack` plugin. Doesnt do a lot yet.
* `where is my landing pad` command: Will use EDDI to tell you about the landing * `where is my landing pad` command: Will use EDDI to tell you about the landing
pad location on star ports in relation to the mail slot. pad location on star ports in relation to the mail slot.
@ -82,7 +82,10 @@ profile will keep the old name. Feel free to manually rename it.
### Added ### Added
* `RatAttack` plugin. FIXXME * `RatAttack` plugin. Responsible for handling case data instead of having a way
too long and convoluted list of VoiceAttack variables. Also provides a way to
send RATSIGNALs to VoiceAttack via IPC.
* `RatAttack-cli.exe` helper tool. Used to send RATSIGNALs to the plugin via IPC.
* Will now announce permit locks, including the name of the permit if available. * Will now announce permit locks, including the name of the permit if available.
* Now supports manually injected cases that might not provide a system. You will * Now supports manually injected cases that might not provide a system. You will
still have to manually copy the system from \#fuelrats or the dispatch board still have to manually copy the system from \#fuelrats or the dispatch board

View file

@ -1,465 +1,34 @@
# EliteAttack # # EliteAttack
This is my personal VoiceAttack profile for Elite: Dangerous. It started out ## Settings
ages ago as a modification of [MalicVRs public
profile](https://forums.frontier.co.uk/threads/malics-voice-attack-profile-for-vr.351050/), Toggles:
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 * `auto honk all systems`: Automatically honk upon entering a system, each jump
probably been simpler to start from scratch. without constraints. Default: false.
* `auto honk new systems`: Automatically honk upon entering as system if it is
Some of it has grown to a state that it might be useful to others in its own your first visit. Default: true.
package, so Ive separated the neutron jumping and Seals stuff into their own * `auto restock`: Automatically restock after docking at a station. You will
profiles. always refuel, repair and enter the Station Services menu. Default: true.
* `edsm system status`: Pull system data from EDSM and compare it
The rest is a random conglomerate of all things VA and E:D; from various voice against your discovery scan. Default: true.
commands to lots of EDDI event handlers. * `discovery scan on primary fire`: Use primary fire for honking instead of
secondary. Default: false.
Speaking of EDDI; it has become in integral part of my Elite experience, * `flight assist off`: Permanent Flight Assist off mode. You should really do
especially the plethora of information it extracts from the games journal and that, its great. Default: false.
presents to you via lots and lots of status variables and by firing various * `hyper space dethrottle`: Throttle down after a jump and when dropping from
events that can then be handled through VA commands. Its great. Check it out. SC. Like the SC Assist module does. Default: true.
(You might want to make it talk a lot less in its personality options, or * `mapping candidates`: Announce bodies worth mapping when youve finished
disable the speech responder entirely like I have.) scanning a system. (Terraformables, Water Worlds, Earth-Like Worlds and
Ammonia Worlds that have not been mapped yet.) Default: true.
## Requirements ## * `outdated stations`: Announce stations with outdated data in the online
databases. Default: true.
In addition to the bindED and EDDI VoiceAttack plugins, this profiles needs my * `road to riches`: Announce bodies worth scanning if you are looking for some
[Python elite-scripts](https://github.com/alterNERDtive/elite-scripts) to do starting cash on the Road to Riches. Default: false.
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 Other settings:
the release page, they will be installed automatically.
* `outdated station threshold`: The threshold for station data to count as
## Settings ## “outdated”, an days. Default: 365.
* `scanner fire group`: The fire group your discovery scanner is assigned to.
Because Elites keyboard handling is … weird youll have to set the key to use Default: 0 (the first one).
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

@ -1,283 +1,92 @@
# RatAttack # # RatAttack
This profile facilitates [Fuel Ratting](https://www.fuelrats.com). It aims to ## Getting Case Data From IRC
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 :) You can setup your IRC client to pass incoming RATSIGNALS to VoiceAttack by calling the
`RatAttack-cli.exe` helper tool with the RATSIGNAL as first argument and an
## Requirements ## optional boolean that triggers a TTS case announcement. You can find it under
your VoiceAttack “Apps” folder, `\alterNERDtive\RatAttack-cli.exe`.
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: This has two purposes:
1. announcing a new incoming case 1. Announcing a new incoming case (if passing `true` as second argument).
1. storing case data and making it available to VoiceAttack, e.g. for copying 1. Storing case data and making it available to VoiceAttack, e.g. for copying
the cases system into the clipboard the cases system into the clipboard.
You need to make your IRC client For my AdiIRC, it looks like this (obviously change the path, please):
1. wait until the file disappears (for several cases coming in at once) ```adiirc
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:{ on *:TEXT:RATSIGNAL - CMDR*(??_SIGNAL):#fuelrats:{
/mkdir C:\users\<user>\appdata\roaming\RatAttack\ if ( $away ) {
/handleratsignal $1- /run -h "X:\path\to\VoiceAttack\Apps\alterNERDtive\RatAttack-cli.exe" " $+ $replace($1-,","") $+ " false
} }
alias handleratsignal { else {
if ( $exists(C:\users\<user>\appdata\roaming\RatAttack\ratsignal.pipe) ) { /run -h "X:\path\to\VoiceAttack\Apps\alterNERDtive\RatAttack-cli.exe" " $+ $replace($1-,","") $+ " true
/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 If I am away it will just add the new case to the list. If I am not away, it
IRC client or it doesnt support copying the control characters in the ratsignal will announce it using TTS.
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 The “replace” part handles the fact that announcements now put the system in
client as admin, too! Otherwise it cant talk to VoiceAttack for security quotes. They have to be escaped as double quotes (`""`) to create a correct
reasons. You really should _not_ run VoiceAttack with elevated privileges command invocation.
though. Or anything.
#### Internal Case List #### You get the gist; if not and you dont know how to do the same thing for your
IRC client, either switch to AdiIRC or bribe me to make an example for yours.
If you have your IRC client setup properly, VoiceAttack will hold a list with Note: If you are not on duty (see below) you will _not_ get case announcements.
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. ## Announcing Your Nearest CMDR
* `[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 #### In case you have more than one CMDR registered as a Fuel Rat, you can have
VoiceAttack announce the nearest one to a case and the distance. You will have
to go through a couple steps to set that up:
* `open rat case number [0..19]`: Opens rat case with the given number. If there 1. Have all CMDRs on EDSM.
is no case data for that case (e.g. because you dont have your IRC client set 1. Have all profiles on EDSM set to _public_ including your flight log (which
up properly), it will still open it, just not have any data on it. includes the current location).
* `open [latest;] rat case`: Opens the latest rat case that has come in through 1. Set the CMDR names you want to use (“customize setting set fuel rat
IRC. Will probably error out in creative ways if you dont have your IRC commanders”).
client set up properly. Too tired right now to have proper error handling so 1. Enable the nearest CMDR announcements (“customize setting enable nearest
just open an issue if you run into problems (its 7am, I havent slept and commander to fuel rat case”).
want to finish this doc to get the release out (yes, you are allowed to laugh
at this section)).
#### Closing a Case #### You can use this for a single CMDR, too. A less convoluted setup for announcing
the distance to your location in that case is on the list™ but does not have an
ETA yet.
* `[close;clear] rat case`: Closes the currently open rat case. Currently there is no way to specify a platform for each CMDR.
### Making Calls ### ## Ingame chat → FuelRats IRC
There are a bunch of calls you can make for a case, the most common are modelled You can send messages from ingame chat directly to the “\#fuelrats” and
through VoiceAttack commands. The descriptive commands (e.g. “system confirmed”) “\#ratchat” channels on FuelRats IRC. (See [[#FIXXME]])
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 That will send text to windows with “#fuelrats” and “#ratchat” in
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 their title, respectively. If your IRC client does not do that, you will have to
change the “target” window of the `RatAttack.sendToFuelrats` and change the “target” window of the `RatAttack.sendToFuelrats` and
`RatAttack.sendToRatchat` commands to reflect the actual window titles on your `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. system. I will look into making this more elegant to change in the future.
## Logging ## ## Settings
The profile supports logging a bunch of stuff to the VoiceAttack event log. By Toggles:
default, logging is concise and constrained to basically error messages.
If you need more logging (usually for debugging purposes), say `enable logging`. * `auto close fuel rat case`: Automatically close a rat case when sending
If you want to enable verbose logging _by default_, call the “fuel+” via voice command or ingame chat. Default: false.
`Logging.enableLogging` command from your custom profiles `startup` command. * `fuel rat call confirmation`: Only make calls in #fuelrats after vocal
confirmation to prevent mistakes. Default: true.
## Exposed Variables ## * `fuel rat duty`: Set FuelRats duty to active when the profile is loaded.
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. Default: true.
* `RatAttack.platforms` (string): the platforms you want to be informed of * `nearest commander to fuel rat case`: Announce the nearest commander to
incoming cases for. If you are on console, you can still have VoiceAttack incoming rat cases. Default: false.
running on the PC that you are using for IRC and handle calls and stuff using * `platform for fuel rat case`: Announce the platform for incoming rat cases.
voice! Delimited by whatever you want. Can include “PC”, “XB”, “PS4”. Default: false.
Default: “PC”.
* `python.scriptPath` (string): the path you put the Python scripts in. Default:
“{VA_DIR}\Sounds\scripts”.
### Other Variables ### Other Settings:
Current case data: * `fuel rat commanders`: All your CMDRs that are ready to take rat cases. Use
; as separator, e.g. “Bud Spencer;Terrence Hill”. Default: "".
* `RatAttack.caseNumber` (int): the number of the case you are currently on. * `fuel rat platforms`: The platform(s) you want to get case announcements for
Will be `Not Set` if you are not on a case. (PC, Xbox, Playstation). Use ; as separator, e.g. “PC;Xbox”. Default: "PC".
* `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

@ -1,241 +1,50 @@
# SpanshAttack # # SpanshAttack
This profile uses the ## Supplying Your Ships Range
[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 ## 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.
In addition to VoiceAttack, you will need the following plugins to use this The “default to laden range” option works reasonably well, but it has a few
profile: quirks. It always assumes full cargo, and it will take your _current_ fuel
levels for range calculations, disregrading the range loss if you fill your tank.
* [bindED](https://forum.voiceattack.com/smf/index.php?topic=564.0) For any ships that you regularly use for neutron jumping, e.g. long range Fuel
* [EDDI](https://github.com/EDCD/EDDI) installed as a VoiceAttack plugin Rat ships, I recommend telling SpanshAttack about the range they are supposed to
* [ED-NeutronRouter](https://github.com/sc-pulgan/ED-NeutronRouter): required have with full fuel and your preferred amount of cargo/limpets.
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 ### In oder to do that, copy the `SpanshAttack.getShipRange` command from
SpanshAttack or the example profile to your custom profile and add your ships.
Any ship listed in there will automatically have its jump range used instead of
EDDIs reported laden range or VoiceAttack prompting you to manually supply it.
For the convenience of people that have not been using EDDI in the past, ![[SpanshAttack-getshiprange.png]]
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 You can override a saved range for your ship by using the
functionality, you will have to disable the `EDDI.quietMode` setting by running `plot neutron [course;route;trip] with custom range` command.
the `customize settings disable eddi quiet mode` command.
## Settings ## ## Settings
Because Elites keyboard handling is … weird youll have to set the key to use Toggles:
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) * `auto jump after scooping`: Automatically accelerate and jump out when fuel
section. scooping is complete. Default: true.
* `auto plot`: Automatically plot to the next waypoint after supercharging.
Default: true.
* `clear neutron route on shutdown`: Clear an active neutron route when the game
is shut down. Default: true.
* `copy neutron waypoints to clipboard`: Copy each neutron waypoint into the
Windows clipboard. Default: false.
* `default to laden range`: Default to the current ships laden range as
reported by EDDI instead of prompting for input. Default: false.
* `time neutron route`: Keep track of how long a neutron route takes you to
complete. Default: false.
* `waypoint announcements`: Announce each waypoint by name. Default: true.
The last “setting” in the not-so-strict sense of the word is the Other Settings:
`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 * `announce jumps left`: Estimated jumps left to announce when reached. NEEDS to
range from EDDI; sadly a) its have leading and trailing “;”. Default: ";1;3;5;10;15;20;30;50;75;100;"
[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

@ -1,120 +1,6 @@
# StreamAttack # # StreamAttack
This profile uses the [EDDI](https://github.com/EDCD/EDDI) plugin to write ## Settings
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\`. * `StreamAttack output directory`: The directory the status files are written
to. Default: "%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

@ -33,14 +33,28 @@ selected, but be preserved if you switch around.
Toggles: Toggles:
* `auto update check`: Automatically check Github for profiles updates.
* `eddi quiet mode`: Make EDDI shut up. Disables all built-in speech responders. * `eddi quiet mode`: Make EDDI shut up. Disables all built-in speech responders.
Other settings: Other settings:
* `elite paste key`: The key used to paste in conjunction with CTRL. The * `elite paste key`: The key used to paste in conjunction with CTRL. The
physical key in your layout that would be 'V' on QWERTY. physical key in your layout that would be 'V' on QWERTY. Default: 'v'.
* `log level`: The level of detail for logging to the VoiceAttack log. Valid * `log level`: The level of detail for logging to the VoiceAttack log. Valid
levels are "ERROR", "WARN", "NOTICE", "INFO" and "DEBUG". Default: "NOTICE". levels are "ERROR", "WARN", "NOTICE", "INFO" and "DEBUG". Default: "NOTICE".
Default: "NOTICE".
* `quit to desktop delay`: The delay before restarting the game after hitting
“Exit to Desktop”. Default: 10.0seconds. (Used by the `restart from desktop`
command)
## Note on Non-Standard Keyboard Layouts
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.
To set the key, say “customize setting set elite paste key”.
## Adding Commands ## Adding Commands

View file

@ -1 +1,40 @@
# General Commands # General Commands
## Configuration
The base profile provides voice commands for changing the profiles’ settings.
See [the configuration section](/configuration/general#settings).
## Chat
* `paste text`: Pastes the contents of your current clipboard. Note that this
command is supposed to be used for pasting _into Elite_ and hence uses the
configured paste key. If youre using a non-standard layout that means that
you can _not_ use this command to paste text into other applications.
## Updating
* `check for profiles update`: Checks Github for a new version, and alerts you
if there is one.
* `download profiles update`: Opens the latest release on Github and the
VoiceAttack import folder where you can drop it.
* `open profiles [docs;documentation;help] [file;site;]`: Opens this
documentation, either on the web or the PDF file supplied with the installed
release.
* `open profiles change log`: Opens the CHANGELOG on Github.
* `open voiceattack [apps;import;sounds] [folder;directory]`: Opens the
respective VoiceAttack-related folder.
## Miscellaneous
* `generate missing key binds report`: Generates a report of missing key binds
and places it on your Desktop. Note that this currently uses bindEDs built-in
report which will output _any_ bind that does not have a keyboard key set,
including axis binds and binds that are not actually used by the profiles.
* `open EDDI options;configure EDDI`: Displays EDDIs configuration window.
* `open elite bindings folder`: Opens Elites bindings folder
(`%localappdata%\Frontier Developments\Elite Dangerous\Options\Bindings`)
* `reload elite key binds`: Forces a reload of your Elite binds. Should not be
necessary.
* `shut up EDDI`: Immediately interrupts any current and pending speech on
EDDIs end.

Binary file not shown.

After

Width:  |  Height:  |  Size: 41 KiB

View file

@ -10,6 +10,10 @@ to enhance my Elite experience. They give me important info, facilitate
day-to-day gaming and do some special things for [Fuel day-to-day gaming and do some special things for [Fuel
Rats](https://fuelrats.com) and [Hull Seals](https://hullseals.space) work. Rats](https://fuelrats.com) and [Hull Seals](https://hullseals.space) work.
You can find the full
[Changelog](https://github.com/alterNERDtive/VoiceAttack-profiles/blob/release/CHANGELOG.md)
on Github.
## Available Profiles ## Available Profiles
* [EliteAttack](EliteAttack): The main Elite VA profile. Anything related to * [EliteAttack](EliteAttack): The main Elite VA profile. Anything related to

View file

@ -8,7 +8,7 @@ To upgrade to the latest version, follow these steps:
1. Restart VoiceAttack. 1. Restart VoiceAttack.
In general, migration from old versions will be handled automatically. If there In general, migration from old versions will be handled automatically. If there
is something you have to do manually, you will find the information below. is something you have to do manually you will find the necessary steps below.
## 3.x.x to 4.0 ## 3.x.x to 4.0
@ -20,11 +20,33 @@ If you have not … well, you will unfortunately have to take note of your
settings, and recreate them after creating a custom profile and including settings, and recreate them after creating a custom profile and including
everything. everything.
Please do not fiddle with the configuration variables from your startup command
(or any other, really). It _should_ not break anything, but it might. And it is
entirely unnecessary since configuration will be saved to and loaded from the
profile anyway.
### bindED ### bindED
If you have done anything non-standard with bindED before, it might break. The If you have done anything non-standard with bindED before, it might break. The
profiles now include my fork of bindED which has a lot more features, but profiles now include my fork of bindED which has a lot more features, but
doesnt support a bunch of plugin invocations that have become obsolete. does no longer support a bunch of plugin invocations that have become obsolete.
Please [file an issue with
bindED](https://github.com/alterNERDtive/bindED/issues/new/choose) on Github if
your use case does not work anymore.
### EliteDangerous
The “EliteDangerous” profile is no longer the main profile. Instead you will
_have_ to create a custom profile, and the new “base” profile that the others
require to be included in your custom profile is “alterNERDtive-base”. That way
you can use e.g. RatAttack without having to also use the general Elite profile.
It has also been renamed to “EliteAttack” to be consistent with the others. If
you are upgrading from an older version the name will not change for you in the
profiles list. I recommend renaming your “EliteDangerous” profile to
“EliteAttack” to prevent confusion in the future, but it is not strictly
necessary to do so.
### RatAttack ### RatAttack

View file

@ -1,7 +1,7 @@
site_name: "alterNERDtive VA profiles" site_name: "alterNERDtive VA profiles"
site_url: https://alterNERDtive.github.io/VoiceAttack-profiles site_url: https://alterNERDtive.github.io/VoiceAttack-profiles
repo_url: https://github.com/alterNERDtive/VoiceAttack-profiles repo_url: https://github.com/alterNERDtive/VoiceAttack-profiles
edit_uri: "edit/release/docs/" edit_uri: "edit/devel/docs/"
site_description: "alterNERDtive VoiceAttack profiles for Elite: Dangerous" site_description: "alterNERDtive VoiceAttack profiles for Elite: Dangerous"
site_author: "alterNERDtive" site_author: "alterNERDtive"
remote_name: "ssh-origin" remote_name: "ssh-origin"

View file

@ -20,10 +20,13 @@ namespace alterNERDtive.util
{ {
"alterNERDtive-base", "alterNERDtive-base",
new OptDict<string, Option>{ new OptDict<string, Option>{
{ new Option<decimal>("delays.keyPressDuration", (decimal)0.01, voiceTrigger: "key press duration", description: "The time keys will be held down for.") },
{ new Option<decimal>("delays.quitToDesktop", (decimal)10.0, voiceTrigger: "quit to desktop delay",
description: "The delay before restarting the game after hitting “Exit to Desktop”.\nDefault: 10.0seconds. (Used by the `restart from desktop` command)") },
{ new Option<bool>("eddi.quietMode", true, voiceTrigger: "eddi quiet mode", description: "Make EDDI shut up. Disables all built-in speech responders.") }, { new Option<bool>("eddi.quietMode", true, voiceTrigger: "eddi quiet mode", description: "Make EDDI shut up. Disables all built-in speech responders.") },
{ new Option<decimal>("keyPressDuration", (decimal)0.01, voiceTrigger: "key press duration", description: "The time keys will be held down for.") },
{ new Option<string>("elite.pasteKey", "v", voiceTrigger: "elite paste key", { new Option<string>("elite.pasteKey", "v", voiceTrigger: "elite paste key",
description: "The key used to paste in conjunction with CTRL. The physical key in your layout that would be 'V' on QWERTY.") }, description: "The key used to paste in conjunction with CTRL. The physical key in your layout that would be 'V' on QWERTY.") },
{ new Option<bool>("enableAutoUpdateCheck", true, voiceTrigger: "auto update check", description: "Automatically check Github for profiles updates.") },
{ new Option<string>("log.logLevel", "NOTICE", voiceTrigger: "log level", validValues: new List<string>{ "ERROR", "WARN", "NOTICE", "INFO", "DEBUG" }, { new Option<string>("log.logLevel", "NOTICE", voiceTrigger: "log level", validValues: new List<string>{ "ERROR", "WARN", "NOTICE", "INFO", "DEBUG" },
description: @"The level of detail for logging to the VoiceAttack log.\nValid levels are ""ERROR"", ""WARN"", ""NOTICE"", ""INFO"" and ""DEBUG"".\nDefault: ""NOTICE"".") }, description: @"The level of detail for logging to the VoiceAttack log.\nValid levels are ""ERROR"", ""WARN"", ""NOTICE"", ""INFO"" and ""DEBUG"".\nDefault: ""NOTICE"".") },
} }
@ -36,18 +39,17 @@ namespace alterNERDtive.util
{ new Option<bool>("announceMappingCandidates", true, voiceTrigger: "mapping candidates", { new Option<bool>("announceMappingCandidates", true, voiceTrigger: "mapping candidates",
description: "Announce bodies worth mapping when youve finished scanning a system.\n(Terraformables, Water Worlds, Earth-Like Worlds and Ammonia Worlds that have not been mapped yet.)") }, description: "Announce bodies worth mapping when youve finished scanning a system.\n(Terraformables, Water Worlds, Earth-Like Worlds and Ammonia Worlds that have not been mapped yet.)") },
{ new Option<bool>("announceOutdatedStationData", true, voiceTrigger: "outdated stations", description: "Announce stations with outdated data in the online databases.") }, { new Option<bool>("announceOutdatedStationData", true, voiceTrigger: "outdated stations", description: "Announce stations with outdated data in the online databases.") },
{ new Option<bool>("announceR2RMappingCandidates", true, voiceTrigger: "road to riches", { new Option<bool>("announceR2RMappingCandidates", false, voiceTrigger: "road to riches",
description: "Announce bodies worth scanning if you are looking for some starting cash on the Road to Riches.") }, description: "Announce bodies worth scanning if you are looking for some starting cash on the Road to Riches.") },
{ new Option<bool>("autoHonkAllSystems", false, voiceTrigger: "auto honk all systems", description: "Automatically honk upon entering a system, each jump without constraints.") }, { new Option<bool>("autoHonkAllSystems", false, voiceTrigger: "auto honk all systems", description: "Automatically honk upon entering a system, each jump without constraints.") },
{ new Option<bool>("autoHonkNewSystems", true, voiceTrigger: "auto honk new systems", description: "Automatically honk upon entering as system if it is your first visit.") }, { new Option<bool>("autoHonkNewSystems", true, voiceTrigger: "auto honk new systems", description: "Automatically honk upon entering as system if it is your first visit.") },
{ new Option<bool>("autoRestock", true, voiceTrigger: "auto restock", description: { new Option<bool>("autoRestock", true, voiceTrigger: "auto restock", description:
"Automatically restock after docking at a station.\nYou will alywas refuel, repair and enter the Station Services menu.") }, "Automatically restock after docking at a station.\nYou will always refuel, repair and enter the Station Services menu.") },
{ new Option<decimal>("delays.quitToDesktop", (decimal)10.0, voiceTrigger: "quit to desktop delay",
description: "The delay before restarting the game after hitting “Exit to Desktop”.\nDefault: 10.0seconds.") },
{ new Option<bool>("enableAutoUpdateCheck", true, voiceTrigger: "auto update check", description: "Automatically check Github for profiles updates.") },
{ new Option<bool>("flightAssistOff", false, voiceTrigger: "flight assist off", description: "Permanent Flight Assist off mode. You should really do that, its great.") }, { new Option<bool>("flightAssistOff", false, voiceTrigger: "flight assist off", description: "Permanent Flight Assist off mode. You should really do that, its great.") },
{ new Option<bool>("hyperspaceDethrottle", true, voiceTrigger: "hyper space dethrottle", description: "Throttle down after a jump and when dropping from SC. Like the SC Assist module does.") }, { new Option<bool>("hyperspaceDethrottle", true, voiceTrigger: "hyper space dethrottle",
{ new Option<int>("outdatedStationThreshold", 365, voiceTrigger: "outdated station threshold", description: "The threshold for station data to count as “outdated”.\nDefault: 365days.") }, description: "Throttle down after a jump and when dropping from SC. Like the SC Assist module does.") },
{ new Option<int>("outdatedStationThreshold", 365, voiceTrigger: "outdated station threshold",
description: "The threshold for station data to count as “outdated”, in days.\nDefault: 365.") },
{ new Option<int>("scannerFireGroup", 0, voiceTrigger: "scanner fire group", description: "The fire group your discovery scanner is assigned to.\nDefault: 0 (the first one).") }, { new Option<int>("scannerFireGroup", 0, voiceTrigger: "scanner fire group", description: "The fire group your discovery scanner is assigned to.\nDefault: 0 (the first one).") },
{ new Option<bool>("usePrimaryFireForDiscoveryScan", false, voiceTrigger: "discovery scan on primary fire", description: "Use primary fire for honking instead of secondary.") }, { new Option<bool>("usePrimaryFireForDiscoveryScan", false, voiceTrigger: "discovery scan on primary fire", description: "Use primary fire for honking instead of secondary.") },
} }
@ -69,10 +71,11 @@ namespace alterNERDtive.util
{ {
"SpanshAttack", "SpanshAttack",
new OptDict<string, Option>{ new OptDict<string, Option>{
{ new Option<string>("announceJumpsLeft", ";1;3;5;10;15;20;30;50;75;100;", voiceTrigger: "announce jumps left") }, { new Option<string>("announceJumpsLeft", ";1;3;5;10;15;20;30;50;75;100;", voiceTrigger: "announce jumps left",
description: "Estimated jumps left to announce when reached.\nNEEDS to have leading and trailing “;”.") },
{ new Option<bool>("announceWaypoints", true, voiceTrigger: "waypoint announcements", description: "Announce each waypoint by name.") }, { new Option<bool>("announceWaypoints", true, voiceTrigger: "waypoint announcements", description: "Announce each waypoint by name.") },
{ new Option<bool>("autoJumpAfterScooping", true, voiceTrigger: "auto jump after scooping", description: "Automatically accelerate and jump out when fuel scooping is complete.") }, { new Option<bool>("autoJumpAfterScooping", true, voiceTrigger: "auto jump after scooping", description: "Automatically accelerate and jump out when fuel scooping is complete.") },
{ new Option<bool>("autoPlot", true, voiceTrigger: "auto plot", description: "Automatically plot to the next waypoint after super charging.") }, { new Option<bool>("autoPlot", true, voiceTrigger: "auto plot", description: "Automatically plot to the next waypoint after supercharging.") },
{ new Option<bool>("clearOnShutdown", true, voiceTrigger: "clear neutron route on shutdown", description: "Clear an active neutron route when the game is shut down.") }, { new Option<bool>("clearOnShutdown", true, voiceTrigger: "clear neutron route on shutdown", description: "Clear an active neutron route when the game is shut down.") },
{ new Option<bool>("copyWaypointToClipboard", false, voiceTrigger: "copy neutron waypoints to clipboard", description: "Copy each neutron waypoint into the Windows clipboard.") }, { new Option<bool>("copyWaypointToClipboard", false, voiceTrigger: "copy neutron waypoints to clipboard", description: "Copy each neutron waypoint into the Windows clipboard.") },
{ new Option<bool>("defaultToLadenRange", false, voiceTrigger: "default to laden range", { new Option<bool>("defaultToLadenRange", false, voiceTrigger: "default to laden range",