EDDiscovery / EDDiscovery

Captains log and 3d star map for Elite Dangerous
Apache License 2.0
769 stars 171 forks source link

Action files `GMO EXISTS <name>` and `TARGET GMO <name>` don't accept a full system name #2924

Closed Californ1a closed 4 years ago

Californ1a commented 4 years ago

I'm trying to get the last system in the route when plotted in-game (via Journal->NavRoute event), which I can do with Set targetSystem = %Expand(EventClass_Route[%(EventClass_RouteCount)]_StarSystem) (& Print %(targetSystem) shows the right info), but trying to use that for the name needed in either gmo exists or target gmo results in either it targeting the wrong system or "GMO 'name' not found".

For example, Target GMO San Tu sets the target to Scheau Proo OZ-O e6-1350 (matches the "san" in "Sang" of the system's alias) and Target LHS 306 gives back GMO 'LHS' not found. Putting the name within quotes, single or double, always gives not found, same with replacing spaces with _, -, or +.


Ultimately what I'm trying to do is just import the in-game plotted route, to get an overlay with just the remaining hop info without needing to manually hit the "Import nav route" button on the Expedition tab. It doesn't seem like there's any way to programmatically add/change entries on the route, and can only do it manually with the UI. I'd love if there was a way for something like the trip computer overlay to just auto-import your currently plotted (in-game) route and list all remaining hops. Maybe it already can I'm just totally missing an option somewhere.

I'm probably sorely misunderstanding how some of this works but this is what I've been messing with until I ran into the issue with Target GMO:

PROGRAM NavRoute

Set targetsystem = %Expand(EventClass_Route[%(EventClass_RouteCount)]_StarSystem)
Print Targeted System %(targetsystem)

Target GMO %(targetsystem)

Print Set start marker on JID %(EventJID)
Event FROM %(EventJID) SETSTARTMARKER
Perform Refresh

END PROGRAM

I just really can't figure out how to get it to target the right system.

robbyxp1 commented 4 years ago

Hi,

Thanks for the report.

First, not written in the document (i've fixed it), for names with spaces, it should be TARGET GMO "Name of GMO".

Remember GMO objects are not always system objects, they are a different list of systems apart from the system list. So your script using StarSystem to make a GMO target name prob wont work.

Californ1a commented 4 years ago

I've tried it with quotes like that as well Target GMO "%(targetsystem)", same "GMO 'name' not found" error. I do know GMO aren't always system names, but surely searching the GMO list with the exact system name from the navroute should at least return something, no?

robbyxp1 commented 4 years ago

There are a limited number of GMO objects downloaded from EDSM, you can see them in %LOCALAPPDATA%\eddiscovery\galacticmapping.json. (open with firefox/chrome and it will present a json tree for you).

The name in TARGET GMO must match one of these objects. Plenty of stars won't.

Californ1a commented 4 years ago

Ah, that explains it then, limited data set. I thought it was either querying the EDDSystem.sqlite or using a direct api request to either EDDB or EDSM before returning a "not found" error. That makes more sense then why it wouldn't find them if it's only checking against a few.

Maybe it would be possible to expose a direct api request to EDDB or EDSM as an action file command, or maybe an sql query to EDDSystem.sqlite? Return back as a GMO so it can be used for targeting (and possibly programmatic routes if that's ever a possibility). Or it might be better to do it without action files, just have a direct api request as a fallback for not found before returning the error.

robbyxp1 commented 4 years ago

There is an SCAN EDSM command which does a lookup of a particular star from EDSM (incurring a penalty delay due to the lookup though). It gives all the info EDSM returns on a system..

robbyxp1 commented 4 years ago

Closing. Not going to change anything at this point.