Discussion Journal docs for v3.7 (Fleet Carriers) Beta

Why am i constantly getting this or similar problems when inara tries to import my data, i have jumped through all hoops i can think off including resetting account link multiple times and adjusting my commander name to be identical in typo on site and game. ... Inara says theres nothing they can do and i can only upload by putting my logs in there manually ..which will not grab the fleet carrier data?

Is there something broken with my profile in FD database?

GameDataUpdate error: There was a problem with Frontier's service while requesting the data. Please try to re-link your account (reset account link in the Settings) and repeat your request.
[httpCode: 0, fetchCode: 28]
 
Or at least a way to reset the tab focus back to start so it can be macro'd. I've seen various macros for it but they all rely on the first tab having initial focus when opening.
Yes...this has been requested several times in the past (by others as well as myself).

As @Psyral has indicated...quite a few of my macros require initial focus being at "home panel + top/left selection" focussed.
I've also coded my macros to return 'home' after doing what I need them to which obviously therefore require twice as many keystrokes in the macro as should be required.

Then, I've developed a habit of always returning to start when using any of the panels manually...but it'd be nice if I didn't have to via a "UIHome" keybind that works for every panel.

Clicker
 
Latest journal documentation:

Journal Manual v27 (Doc)
Journal Manual v27 (PDF)
  • Added events relating to Fleet Carriers (§11)
  • New CargoTransfer event (§12.52)
  • Change to Repair event (§8.38)
  • Added some station services (see ‘Docked’ §4.2)
Humble request: can you add surface composition to prospecting reports, including surface and subsurface deposits? These would be quite useful now that the meta has shifted from laser mining to ssd.

(edit) Not to speak for him, but FankX (responding to my DM) said he has received lots of requests to extend his Mining Analyzer with this information, and would add it, if ED were to provide this info.

Thank you!
 
Last edited:
FDevs, any chance we will have conflict zones events in a journal? It would help a lot with tracking conflict progress and pilot coordination in BGS game if we had such events as 'enter conflict zone', 'choose a side in conflict', 'conflict zone win/loose', 'exit conflict zone', 'conflict zone quest added', 'conflict zone quest progress', 'conflict zone quest success/fail'.
What is the reason that we have plenty of unimportant events like a change of background music, but nothing about conflict zones?

Thanks...
 
Holy Hannah, I didn't even know there was a Journal Manual! Does this cover converting journal values for orbit revolution and planet rotation to "normal" (1.3 days) values? I've been meaning to write my own discovery cataloger.
 
Why am i constantly getting this or similar problems when inara tries to import my data, i have jumped through all hoops i can think off including resetting account link multiple times and adjusting my commander name to be identical in typo on site and game. ... Inara says theres nothing they can do and i can only upload by putting my logs in there manually ..which will not grab the fleet carrier data?

Is there something broken with my profile in FD database?

GameDataUpdate error: There was a problem with Frontier's service while requesting the data. Please try to re-link your account (reset account link in the Settings) and repeat your request.
[httpCode: 0, fetchCode: 28]

Did you find a fix for this? I am getting the exact same error out of the blue when it's worked 100% fine up until now. I've had similar problems in the past with Inara that seemed to resolve after a day or two so hopefully this is the same.
 
Can you fix the moudulesInfo.json please.

This file is only written one time. Currently this is only written the moment you look at your ship's module power. After the initial file is written, it's never updated, even if you switch ships or update the power priorities.
 
Can you fix the loadout json data too please.
Currently the "LessIsGood" is not reliable and is usually 1 when it should be 0 for some cases.

example json from the game:
DamagePerSecond, Damage, AmmoMaxium are examples where LessIsGood should be 0. There are plenty of others too (resistances).


"Item": "hpt_slugshot_fixed_medium",
"On": true,
"Power": 0,
"Priority": 2,
"Health": 1,
"Engineering": {
"Engineer": "Zacariah Nemo",
"EngineerID": 300050,
"BlueprintID": 128673459,
"BlueprintName": "Weapon_Overcharged",
"Level": 5,
"Quality": 0.8,
"ExperimentalEffect": "special_corrosive_shell",
"Modifiers": [
{
"Label": "DamagePerSecond",
"Value": 300.888,
"OriginalValue": 179.1,
"LessIsGood": 1
},
{
"Label": "Damage",
"Value": 5.0148,
"OriginalValue": 3,
"LessIsGood": 1
},
{
"Label": "DistributorDraw",
"Value": 0.4995,
"OriginalValue": 0.4,
"LessIsGood": 1
},
{
"Label": "ThermalLoad",
"Value": 0.851,
"OriginalValue": 0.7,
"LessIsGood": 1
},
{
"Label": "AmmoMaximum",
"Value": 144,
"OriginalValue": 180,
"LessIsGood": 1
}
]
}
},
 
Is there a way to pipe the journal log to another program, the way I can use " | " (vertical line) to pipe in Linux? Or, using Windows terminology, can I "hook" into the journal log? There's so much I could do with this if I could just receive this data in real time rather than continually parsing the journal file every n seconds. Surely there must be a way.
 
Is there a way to pipe the journal log to another program, the way I can use " | " (vertical line) to pipe in Linux? Or, using Windows terminology, can I "hook" into the journal log? There's so much I could do with this if I could just receive this data in real time rather than continually parsing the journal file every n seconds. Surely there must be a way.
Theoretically, yes. Though it wouldn't be by piping/redirection but monitoring API calls. No clue if Windows has a Hook for I/O calls but Detours might be able to do that (never used it myself though and FDev might not be happy about using something like that).
Constant file parsing isn't particularly elegant but with some optimization you should be able to parse everything in a few milliseconds at most. Stuff like not closing the file handle between function calls, keeping a file pointer to avoid re-reading old entries etc.
Option 3 would be a local WebAPI Server (technically the same but you wouldn't have to worry about rolling your own parser). EDEngineer has a partial one and a couple of years ago there was this project but that hasn't seen any updates in well over a year.
 
Is there a way to pipe the journal log to another program, the way I can use " | " (vertical line) to pipe in Linux? Or, using Windows terminology, can I "hook" into the journal log? There's so much I could do with this if I could just receive this data in real time rather than continually parsing the journal file every n seconds. Surely there must be a way.
If you'd rather not ping the file system, there is an option to get the data broadcast via UDP (copied from a Discord message):
Code:
When the player logs into the game, if enabled, the game will broadcast a packet something like this:
{"Publish":"EliteDangerous","Version":"r166031 ","CommanderName":"HRC-2"}

If a third-party tool wishes to receive data from the game, they should reply to this Publish packet with a Subscribe packet, also json-encoded,
eg: {"Subscribe":true,"All":true}

This packet can provide more fine-grained control over which data is required: it can contain boolean vales named "Journal", "Status", "Shipyard", "Outfitting" and "Market". (The "All" flag is checked first, and provides a default value for these flags)
eg: {"Subscribe":true, "Journal":true, "Status":true}
or: {"Subscribe":true, "All":true, "Shipyard":false, "Outfitting":false}
After the external tool has subscribed to the data feed, the game will send UDP packets to the address that replied. If a very long line is written to the journal, it may be split into multiple packets, and the receiver will need to reassemble the data into json. The game will only send one packet per frame.
[11:59 PM]
If there are no subscribers, the game will not transmit anything more, until the player quits to the main menu, then restarts the game, at which point it will broadcast another 'Publish' packet.
This requires an entry in AppConfig, with <Journal "address"=xxx "port"=xxx />
    address = "0.0.0.0" disables all transmit
    address = "127.0.0.1" sends only to home machine, useful on a PC
    address = "255.255.255.255" will attempt broadcast on LAN
    address = specific address will only send to that address
Unfortunately, this sort of network traffic is not allowed by the console manufacturers certification standards, so this feature is not supported for consoles.
Only one subscriber is supported. UDP connection.
 
Last edited:
Wow! So this is going to be much simpler than I thought. Took me less than 30 minutes to write this (.Net Core 3.1 c#). I'll probably change it since I would rather write it with an async UDP call... but this was just something quick to do a proof of concept. I added "<Journal address="127.0.0.1" port="45455" />" to the AppConfig.xml in the "C:\Program Files (x86)\Steam\steamapps\common\Elite Dangerous\Products\elite-dangerous-64" folder and for good measure opened that port in the firewall of localhost (probably didn't need to do that - I'll have to remove the exception and try to see if it works without that)

C#:
static void Main(string[] args)
{
    Console.WriteLine("Starting");
    new Thread(() =>
    {
        Thread.CurrentThread.IsBackground = true;
        StartServer();
    }).Start();

    Console.WriteLine("Press Any Key to Exit");
    Console.ReadKey();
}

private static void StartServer()
{
    byte[] replyBytes = Encoding.ASCII.GetBytes("{\"Subscribe\":true,\"All\":true}");
    UdpClient udpServer = new UdpClient(45455);

    string fulldata = "";
    string data;
    int openCount = 0;
    int closeCount = 0;

    while (true)
    {
        IPEndPoint remoteEP = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 45455);
        data = Encoding.Default.GetString(udpServer.Receive(ref remoteEP));
        fulldata += data;
        foreach (char c in data)
        {
            if (c == '{') openCount++;
            if (c == '}') closeCount++;
        }
        // Only process once the fulldata is complete
        if (openCount == closeCount)
        {
            if (data.StartsWith("{\"Publish\""))
            {
                // Subscribe to ED UDP
                udpServer.Send(replyBytes, replyBytes.Length, remoteEP);
            }
            else
            {
                // Process information
                Thread thread = new Thread(Process);
                thread.IsBackground = true;
                thread.Start(fulldata);
            }
            fulldata = "";
            openCount = 0;
            closeCount = 0;
        }
    }
}

private static object processLock = new object();
private static void Process(object data)
{
    lock (processLock)
    {
        // Just displaying it for now ... Will setup Json Deserialization Processing
        Console.WriteLine(DateTime.Now.ToString("hh:mm:ss.fff"));
        Console.WriteLine((string)data);
        Console.WriteLine();
    }
}

I had been getting the data before using the FileSystemWatcher to fire an event on file changes within the journal and status file folder. I like this method better.
 
Last edited:
Back
Top Bottom