_terrorblade

Star Conflict chat-log Reader

Recommended Posts

Download  [ windows | linux | mac ]

Source [github]

 

NTnLn94.png
Features
-------------------------------------------------------------

  • Quick translate messages
  • Real-time chat update
  • Timestamps
  • filter chat by message type
  • Search in logs (Ctrl + F)
  • Notifications- on whisper receive & Battle start [configurable]
  • copy conversations

 

Installation
-------------------------------------------------------------
This is a portable app and is packaged inside a simple zip file. Just extract the zip and run LogReader.exe
 
IMPORTANT: simply opening the zip in some program and running logreader.exe will NOT work. You must extract all the files for the app to be able to read them

Download:
[ windows | linux | mac ]
 

Source code:

https://github.com/terrorblade-sc/starconflict-logreader/


Changelog

23/1/2015 - v1.0.2
- minor UI improvements
- fix font issue on russian interface
- fix auto update

 

28/1/2015 - v1.0.3

- added toggle switch for global chat

 

8/1/2018 - v2.0.0

- better performance

- faster and more accurate translation

- linux & mac builds

- OS Notifications for PM/battle (like so)

- easily change log path

 

10/4/2018 - v2.0.1

- handle nested logdir

- remember custom log path

 

  • Thanks 1
  • Sad 1
  • Upvote 8

Share this post


Link to post
Share on other sites

So this basically just puts the in-game chat into a prettier window, right? Sounds nifty.

Share this post


Link to post
Share on other sites
On 23/01/2015 at 5:12 AM, StatueofLibroty said:

So this basically just puts the in-game chat into a prettier window, right? Sounds nifty.

Would be great if you actually read the post before making assumptions like that. It does more than just put in-game chat in a perttier window

Share this post


Link to post
Share on other sites

Installing now :)  I'm hoping I will finally be able to read those insults in Russian that get fired at me every now and then!!

Share this post


Link to post
Share on other sites

Would be great if you actually read the post before making assumptions like that. It does more than just put in-game chat in a perttier window

I did in fact read it, but most of what I'm seeing is "putting chat in a prettier window" >.>

Share this post


Link to post
Share on other sites

The in game chat doesn't show all messages from current session let alone all the sessions

This app reads all available log so you can find a message from yesterday.

Say you want to find a link that someone in corp chat posted a day ago. Normally you'd have to look through each log folder's chat.log (unless you have a third party text editor app or IDE that allows searching in multiple files). With this you can just alt-tab to the app, Ctrl+f and directly click it instead of having to copy paste from log file

In game chat doesn't let you copy (translation assistance method just feels awkward) or click links or translate Russian messages with one click

This app also allows you to have notification sounds when you receive a message or your battle starts. So you can queue up, have this app running and do something else, watch a movie being assures you'll hear a sound when your game starts so you don't miss it

You cans also do what I do- move this app's window to a secondary screen (I moved it to my third, small screen that I use for console mostly.) Now I can make full use of both my monitors while being able to read chat as it goes

Switching to the game takes 2-3 seconds for me since I play in full screen mode with different resolution

Share this post


Link to post
Share on other sites

This chat reader is very useful, it even make web site link clickable and the UI is really nice. Thanks for the nice tool !

 

Moved to proper section.

Share this post


Link to post
Share on other sites

3+ points for the battle is starting sound

It's "TITANic"  :005j:

Share this post


Link to post
Share on other sites

3+ points for the battle is starting sound

I was like "WTF" when I heard that, couldn't figure out what it was at first.

Then I noticed it play when entering a sector.

Share this post


Link to post
Share on other sites

The sound is indeed a bit wtf-inducing. But I selected that sound so you could hear it even when watching a movie or playing another game :)

Joining invasion sectors creates same log as when entering a battle so my app can't distinguish

Share this post


Link to post
Share on other sites

Joining invasion sectors creates same log as when entering a battle so my app can't distinguish

If it helps, from one of my tools, parsing game.log here:

 

Match match = Regex.Match(line, @"^(\d{2}:\d{2}:\d{2}.\d{3})\s+\| ====== starting level: \'levels[/\\](\w+).*?[/\\](\w+)\' (\w*)", RegexOptions.Compiled);
if (match.Success == false || match.Groups[2].Value == "mainmenu" || match.Groups[4].Value != "FreeSpace")
{
	freeSpace = false;
Nice to see there's more public third party stuff out there now.

PS: No, I'm not back to the game, was just passing by checking whether it's worth it but looks like more of the same old. :)

Share this post


Link to post
Share on other sites
PS: No, I'm not back to the game, was just passing by checking whether it's worth it but looks like more of the same old. :)

 

Thats too bad, I really liked your combat log analyzer :)

Share this post


Link to post
Share on other sites

If it helps, from one of my tools, parsing game.log here:

 

Match match = Regex.Match(line, @"^(\d{2}:\d{2}:\d{2}.\d{3})\s+\| ====== starting level: \'levels[/\\](\w+).*?[/\\](\w+)\' (\w*)", RegexOptions.Compiled);
if (match.Success == false || match.Groups[2].Value == "mainmenu" || match.Groups[4].Value != "FreeSpace")
{
	freeSpace = false;
Nice to see there's more public third party stuff out there now.

PS: No, I'm not back to the game, was just passing by checking whether it's worth it but looks like more of the same old. :)

 

Thanks for sharing. I actually didn't know game.log logs this information (never really looked into it)

Sadly the timestamps are slightly different for entering chat channel (in chat.log) and starting level (in game.log) and i'm not sure what time-range to cross-check, because it may be off by more seconds on other people's clients :/

 

#chat.log
15:25:24.325     CHAT| Join channel <#battle_128849030189>
#game.log
15:27:09.633         | ====== starting level: 'levels\mainmenu\mm_jericho' FreeSpace ======

Share this post


Link to post
Share on other sites

Thats too bad, I really liked your combat log analyzer :)

Maybe one day when they refocus on the PVP aspect of the game. Although seeing your new forum group tag you joined the dark side yourself, so it's all your fault anyway. <3 (and congrats old friend!)

 

Thanks for sharing. I actually didn't know game.log logs this information (never really looked into it)

Sadly the timestamps are slightly different for entering chat channel (in chat.log) and starting level (in game.log) and i'm not sure what time-range to cross-check, because it may be off by more seconds on other people's clients :/

Yep, synchronizing the different logs was a bit of a pain (my old invasion mode overlay did multi-threaded asynchronous real time parsing of the different logs, fun fun; luckily my chat reader didn't do alarms so I didn't have the issue there). But in your case it should be easy since you're guaranteed an entry in the game.log so I guess you could just ignore the chat.log entry for the purposes of determining when to ring the bell. :)

In your example I'm fairly certain those two lines don't go together btw, the chat channel joining should happen at roughly the same time as the "level started:" entry in the game log, which comes after the "starting level:" line. Unless the servers are even worse than they used to be I suppose.

Anyway, signing out again, enjoy the coding and the pew pew. :D

Share this post


Link to post
Share on other sites

But in your case it should be easy since you're guaranteed an entry in the game.log so I guess you could just ignore the chat.log entry for the purposes of determining when to ring the bell. :)

lol damn that's right. Thanks again

Share this post


Link to post
Share on other sites

FANTASTIC APP!!!  Just -- thank you!  +10,000,000 for the triangulation sound!  I've wanted that for more than two years!   I even filed an enhancement request a year ago or so.  Ability to translate and click links sounds nice too... but it's worth it to me just for the triangulation sound.   That way, I can turn down the game sound and do something else without missing the start of a battle.... which has happened dozens of times to me.

 

(It would be nice to put (28mb) next to the link to download)

Share this post


Link to post
Share on other sites

Can you add a right-click to translate TO Russian?  So many times I'll tell someone "good job." and they reply "не говорю по-английски"

Share this post


Link to post
Share on other sites

I actually had that feature in beta. But i removed it from release to keep API usage low (Yandex puts a limit on how many characters can be translated with one API key per month)

But since the usage seems fairly low so far, i'll put reverse translation back in

Share this post


Link to post
Share on other sites

comment out the current line that makes the new battle sound.

 

then add this at line 729 ... just after the end of the setInterval for the chat.log...

 

                // check for new battles.
                setInterval((function(){
                    var gamelogLastSize = 0;
                    var gamelogLastTime = new Date();
                    var stats, logData;
                    
                    return function(){
                        var lastFolder = logReader.getLogFoldersList().pop();
                        var path = logReader.logPath + "\\" + lastFolder + "\\game.log";
                        var ymd = lastFolder.split('.').join('-').substr(0,10);
                        if (fs.existsSync(path)) {
                            stats = fs.statSync(path);
                            if(stats.size > gamelogLastSize){
                                logData = fs.readFileSync(path, {encoding:"utf8"}).substr(gamelogLastSize, stats.size);
                                gamelogLastSize = stats.size;
                                logData.split(/\n/g).forEach(function(line){
                                    var lineDate = new Date(ymd + ' ' + line.substr(0, 12));
                                    if(lineDate - gamelogLastTime > 0 && /starting level.*?client/.test(line) && !/FreeSpace/.test(line)){
                                        gamelogLastTime = lineDate;
                                        // starting a 'real' battle, and not free roam.
                                        logReader.playSound('loudhorn');
                                    }
                                });
                            }
                        }
                    }
                })(), logReader.config.checkInterval);

Share this post


Link to post
Share on other sites

Can you make this cross platform? As you surely know SC is available in native Linux version and us Linux users could also find this app useful! :)

 

 

Can you add a right-click to translate TO Russian?  So many times I'll tell someone "good job." and they reply "не говорю по-английски"

Just say "Harasho!" ;)

Share this post


Link to post
Share on other sites

  • Recently Browsing   0 members

    No registered users viewing this page.