Elite Observatory - Search your journal for potentially interesting objects, or notify you of new ones on the fly while exploring!

Hi there, I just started to use this great tool when exobioing. Thanks for this!
However I've run into a problem. Whenever I jump I get various error message popups that disrupts the game. They seem to relate to the Evaluator plug. Everything else seems to work fine.
Anything I missed or can do to resolve this?

See image for example of errors, and thanks in advance.
 

Attachments

  • ederrors.jpg
    ederrors.jpg
    203.6 KB · Views: 81
Hi there, I just started to use this great tool when exobioing. Thanks for this!
However I've run into a problem. Whenever I jump I get various error message popups that disrupts the game. They seem to relate to the Evaluator plug. Everything else seems to work fine.
Anything I missed or can do to resolve this?

See image for example of errors, and thanks in advance.

Have you tried deleting the plugin and re-downloading it, making sure you have the version that goes with your Observatory version. There's current released version and the beta version for testing I believe. I haven't seen that error since I started using it, which was shortly after it was released.

Also make sure you have downloaded the "old reliable version" not the "rewrite from scratch" version of Observatory, the plugins were written for the old version.
 
Hi there, I just started to use this great tool when exobioing. Thanks for this!
However I've run into a problem. Whenever I jump I get various error message popups that disrupts the game. They seem to relate to the Evaluator plug. Everything else seems to work fine.
Anything I missed or can do to resolve this?

See image for example of errors, and thanks in advance.
That error is saying the method AddGridItems is not being found. That particular method was added in the very latest release of Observatory (which is actually over a year old at this point, but still...). So it seems highly likely you don't have the latest release - go grab the latest release from here - it's the one in the Export Options section. Not sure if you're using the standalone version (which is ObservatoryCore.zip) or the installer (which is ObservatorySetup.exe) - if the former then just copy the entire contents of the zip over what you have alerady or if the latter just run the installer (in both cases, make sure Observatory is closed beforehand).
 
That error is saying the method AddGridItems is not being found. That particular method was added in the very latest release of Observatory (which is actually over a year old at this point, but still...). So it seems highly likely you don't have the latest release - go grab the latest release from here - it's the one in the Export Options section. Not sure if you're using the standalone version (which is ObservatoryCore.zip) or the installer (which is ObservatorySetup.exe) - if the former then just copy the entire contents of the zip over what you have alerady or if the latter just run the installer (in both cases, make sure Observatory is closed beforehand).
Thank you sir. I somehow didn't have the latest one. Had to uninstall, delete the folder and install the new one from scratch and it appears to work flawless now.
Again thanks for this great tool and fly safe o7.
 
I would like to ask a question about custom criteria. First thing: I know absolutely nothing about Lua, and am generally a horrible programmer...

I'm trying to let Observatory notify me about all terraformable bodies I find. I tried it like this:

Code:
::Terraformable body::
if scan.TerraformState == 'Terraformable' then
  return true, 'Terraformable ' .. scan.PlanetClass
end
::Detail::
'Terraformable body'

Now Observatory Core fails to notify me about anything and logs the following error in its ObservatoryCrashLog.txt:

Code:
Exception message: [string "chunk"]:2: unexpected symbol near 'if'
Stack trace:
   at NLua.Lua.ThrowExceptionFromError(Int32 oldTop)
   at NLua.Lua.DoString(String chunk, String chunkName)
   at Observatory.Explorer.CustomCriteriaManager.RefreshCriteria(String criteriaPath)

I guess I'm just doing something wrong, but I'm not seeing what exactly (because zero experience). Also, is this supposed to work with text-to-speech as well? Like, I'd expect it to tell me something like "Terraformable high metal content world" upon detection of such a body. I assume it's the return value that it would read out to me, but I'm just not sure.

Thank you very much!
 
Since its only one criteria the filter is very simple:

Code:
:: Terraformable body ::
scan.TerraformState == 'Terraformable'

Speech output does work with it.

If you want to have specific speech outputs for tf hmc, tf ww and tf landables you need to ask someone else.
 
I'm very new to this app and I have tried to look this up elsewhere. I keep getting logs for planets after probing them that show more biologicals that signals (i.e. only one signal on the planet but Bioinsights shows Frutexa and Stratum as being on the planet. Does that mean that there are both and I just need to keep looking or is Bioinsights incorrect?
 
I'm very new to this app and I have tried to look this up elsewhere. I keep getting logs for planets after probing them that show more biologicals that signals (i.e. only one signal on the planet but Bioinsights shows Frutexa and Stratum as being on the planet. Does that mean that there are both and I just need to keep looking or is Bioinsights incorrect?

No, it says that all the bio listed "could" occur on the planet, but once you surface map the planet it will eliminate the ones that aren't there. You are doing the FSS bit but missing out the DSS bit. The FSS results just give all "possible" bio that "might" be on the planet, the DSS narrows it down to the exact bio.
 
Since its only one criteria the filter is very simple:

Code:
:: Terraformable body ::
scan.TerraformState == 'Terraformable'

Speech output does work with it.

If you want to have specific speech outputs for tf hmc, tf ww and tf landables you need to ask someone else.
The planet class would have just been the icing on the cake, but this is good enough if it works. Will try it tomorrow, thank you!
 
No, it says that all the bio listed "could" occur on the planet, but once you surface map the planet it will eliminate the ones that aren't there. You are doing the FSS bit but missing out the DSS bit. The FSS results just give all "possible" bio that "might" be on the planet, the DSS narrows it down to the exact bio.
1000019090.png

So does this mean it removed them after I DSSd the planet? I had already DSS the planets and was just looking for clarification.
 
View attachment 392027
So does this mean it removed them after I DSSd the planet? I had already DSS the planets and was just looking for clarification.

The red X shows that the bio aren't present on the planet, if you go down to the setting for bio-insights you will see there is a legend that explains what each symbol means, once you have scanned the planet bio that's not there is marked with a red cross.
 
Since its only one criteria the filter is very simple:

Code:
:: Terraformable body ::
scan.TerraformState == 'Terraformable'

Speech output does work with it.

If you want to have specific speech outputs for tf hmc, tf ww and tf landables you need to ask someone else.
Seems to work. I didn't find any actual terraformable bodies, because I had too little time, but Observatory Core no longer logs any errors, not even after a restart, so I guess it's fine.

Weird that I can't even get simple conditionals or a return statement with string concatenation to work in that Lua language, I feel like a complete imbecile here. o_O
 
Seems to work. I didn't find any actual terraformable bodies, because I had too little time, but Observatory Core no longer logs any errors, not even after a restart, so I guess it's fine.

Weird that I can't even get simple conditionals or a return statement with string concatenation to work in that Lua language, I feel like a complete imbecile here. o_O

It looks like you're trying to conflate the Simple and Complex criteria formats. For simple, you don't put the if in the criteria, just the thing(s) you want to check, so it'd look like Alkibiades suggested. You could also have added the type in the Detail (though I don't think that gets read out, it just appears in the output), something like this:

Code:
::Terraformable body::
scan.TerraformState == 'Terraformable'
end
::Detail::
'Terraformable ' .. scan.PlanetClass



Personally, I prefer the Complex format as you get more control. For that, you'd want something like this:
Code:
::Criteria::
if scan.TerraformState and Scan.PlanetClass and scan.TerraformState == 'Terraformable' then
  return true, 'Terraformable ' .. scan.PlanetClass, scan.PlanetClass
end
::End::

The first part of the clause (if scan.TerraformState and Scan.PlanetClass) just checks the values aren't null (e.g. a Gas Giant doesn't have a TerraformState, and a Star doesn't have a PlanetClass). I think Observatory actually does this check itself now but it never used to and it's a good habit to get into - more complex criteria might still trip you up with unexpected nulls. I also added an extra argument in the return as the complex criteria allows for 3 return variable - the extra one just appears in the detail column so it could be improved.
 
Thanks a lot! I will try it, likely today!

Not sure if I and Lua are going to become friends though. 😅

I wasn't aware that I seemingly switched the format by changing those ::something:: lines. So I have to stick to one format strictly.
 
Thanks a lot! I will try it, likely today!

Not sure if I and Lua are going to become friends though. 😅

I wasn't aware that I seemingly switched the format by changing those ::something:: lines. So I have to stick to one format strictly.

If you get stuck, come visit the Observatory Discord. Plenty of people there to help debug or come up with custom criteria, as well as some pre-made examples to do various things. Lua is not everyone's cup of tea - but it's so much nicer than the old XML method :)
 
Thanks a lot! I will try it, likely today!

Not sure if I and Lua are going to become friends though. 😅

I wasn't aware that I seemingly switched the format by changing those ::something:: lines. So I have to stick to one format strictly.
Right. The Lua ::Label:: syntax is used here in a non-standard way. In standard Lua they are just goto targets, but I've repurposed them for criteria annotation. In retrospect it may have been more sensible to use comments so that if anyone wanted to they could still use goto in their criteria without it being kind of an ambiguous mess? But I digress.

In Observatory's Lua they indicate criteria blocks and have two forms, one for simple criteria that only need a single line true/false statement and basic output, and a multi-line form that allows for more complex logic.

The simple form is:

Code:
::Criteria Name::
scan.whatever > 10
::Detail::
'Some other information: ' .. scan.whatever

With the third and fourth lines being optional. The text contained in the first label will be what shows up in the "Description" column when the criteria triggers, the second line is a simple true/false statement that will trigger the criteria when true. The ::Detail:: label indicates that the following line is an expression to evaluate to put in the "Details" column.
The criteria condition and detail expression must be single lines in this form.

The more complex form is:

Code:
::Criteria::
if (more complex evaluation) then
  -- As complex code as you like
  return 'Description', 'Detail'
end
::End::

Multi-line criteria must start with ::Criteria:: and end with ::End:: on their own lines. The return value from the criteria must be in the form of either boolean, string, string, or just string, string. You can use the first form if you're more comfortable sending back an explicit true or false, or the second if you're fine with anything that comes back being implicity a "true" criteria and simply falling out of the function with no return value is equivalent to "false".
The "Detail" and "Description" strings can be constructed however you like and will appear in their respective columns.
 
Aaah, that makes it so much more clear, thanks! I think I definitely prefer the complex format. It seems more well-structured and more like the procedural programming style I am so used to! :)

If I get stuck again (which I likely will, considering I suck at programming), I'll join that Discord, so thanks @MattG ! :)
 
Hmm, this doesn't appear to work after all. Here's my custom criterium:

Code:
::Criteria::
if scan.TerraformState and Scan.PlanetClass and scan.TerraformState == 'Terraformable' then
  return true, 'Terraformable ' .. scan.PlanetClass, scan.PlanetClass
end
::End::

When I start Observatory Core, it logs the following error and stops processing custom criteria:

Code:
[2024/05/08 17:25:12] Error encountered in Elite Observatory from plugin Explorer while processing custom criteria 'Criteria0' on scan:
{ "timestamp":"2019-03-24T17:56:02Z", "event":"Scan", "ScanType":"AutoScan", "BodyName":"Hepa 2", "BodyID":8, "Parents":[ {"Star":0} ], "DistanceFromArrivalLS":388.145691, "TidalLock":false, "TerraformState":"", "PlanetClass":"Sudarsky class I gas giant", "Atmosphere":"", "AtmosphereComposition":[ { "Name":"Hydrogen", "Percent":69.190788 }, { "Name":"Helium", "Percent":30.809208 } ], "Volcanism":"", "MassEM":7.705753, "Radius":25729286.000000, "SurfaceGravity":4.639476, "SurfaceTemperature":21.134399, "SurfacePressure":0.000000, "Landable":false, "SemiMajorAxis":116363403264.000000, "Eccentricity":0.000009, "OrbitalInclination":0.146388, "Periapsis":330.440338, "OrbitalPeriod":70189312.000000, "RotationPeriod":102962.531250, "AxialTilt":-0.262425, "Rings":[ { "Name":"Hepa 2 A Ring", "RingClass":"eRingClass_Icy", "MassMT":7.9732e+10, "InnerRad":4.6691e+07, "OuterRad":6.8762e+07 } ], "ReserveLevel":"CommonResources" }
NOTE: Custom criteria processing has been disabled to prevent further errors.

Exception message: [string "chunk"]:2: attempt to index a nil value (global 'Scan')
Stack trace:
   at NLua.Lua.ThrowExceptionFromError(Int32 oldTop)
   at NLua.Lua.CallFunction(Object function, Object[] args, Type[] returnTypes)
   at Observatory.Explorer.CustomCriteriaManager.CheckInterest(Scan scan, Dictionary`2 scanHistory, Dictionary`2 signalHistory, ExplorerSettings settings)

Could be a helium-rich gas giant triggering this, not sure, just guessing by it's >30% helium content in the atmosphere.
 
Back
Top Bottom