Are you proposing to get the LFSTop window to foreground if it is running already? This is not the thing I would want to do, since I want to allow multiple instances (for example you want to run one instance for one group of LFS servers and another instance for another group of servers -- maybe you are running a hosting service or something like that), but I want to protect the folder containing all the databases and configs from multiple instances working on it.
That is true. To overcome this I might need to create watchdog process that will monitor the state of the server and clean up running.pid if it crashes. The watchdog thing is quite usefull thing for daemons (daemon term is translated as 'service' term for Windows world). Using watchdog I would be able to restart cleanly (not just rerunning the whole code that currently lays in the main() function) and do other fancy things. But those things are in future, so with current version you have to deal with crashes by yourself.
There is not really much point in making it work offline, apart from !stint feature (and being always #1 in !top if you don't provide pubstat key for WR downloading feature). I don't think it will work properly offline atm. But I will consider making it so.
Also I want to make it working with replays for debugging and being able to hotlap with historical heroes of online racing after you gather replay data and then run the app offline or on dedicated server.
All of those are future plans... And lately I can't contribute as much time as I want into this.
If you're talking about my insim, then I must clarify that it has draft checking (it is done kinda straightforward, so lap counts drafted if car in front is above 60km/hour and less than 40 meters ahead).
Checking custom layouts is a great challenge indeed - track creators can come up with a lot of ideas and moreover Insim protocol is not really complete enough to compute 100% legitimate checking. Airio developers have put a lot of effort to create their AIRW checking but yet it is way far from being easy to apply on custom layouts.
After several months of development I am ready to release first public version of my tracker.
Here is what it does and what it has:
Top server laps (!top)
Average of 3 consecutive laps (!avg)
Theoretical best lap (!tb)
Theoretical best lap during 1 stint (!tbs)
For all of the above there is separate table for each tyres compound combination as well as combined table where the best result of every driver is merged
Also, everything is split to clean-only and nonclean+clean,
Detailed stint information: lap-by-lap info, average lap and theoretical laps (!stint)
Custom cars and classes, using newly introduced IS_HCP packet, so you can set up easy to join balanced classes servers (handicap can be applied automatically, note: it doesn't clean up after you shutdown LFSTop so you might need to restart your server or just type !cars ALL before shutting down LFSTop)
Configurable Hot Lap Validation Check system. You can set different options for LFS stock tracks and custom tracks (per-track override is available, for example if you want to count drafting as clean on oval tracks)
User-configurable settings for laptimes notifications (!opt)
Airio importer (put your Airio.sta.* files in lfstop directory and run lfstop_airio_import)
Unicode chat logging
Can be translated to any of the language that is supported by LFS (and any others that can be used inside LFS chat)
Custom info windows (for custom commands like !info, !rules, etc)
The intention of this Yet Another tracker is to have a simple yet usable tool for racers and hotlappers.
Limitations and defects:
To change settings you have to restart the server (you can only change allowed cars list with !cars command, but can not define any cars and classes)
It is still in early development and haven't experienced any serious testing, so use it at your own risk : )
Note for linux admins: you need to run it from the directory where config.ini and others lay in, like this:
Funny how it went from a crowd funded project with cross-platform, open-source SDK, to a proprietary, closed-source SDK, then to a closed-sourced, non-cross-platform Facebook product. And then they ask loads of money for it.
That particular thing is not that hard to implement (since even I could do something similar huh )
But the thing is, putting every possible feature will take so much time to make it right, then some people might not even like it in some particular aspects. I wouldn't be against this stuff, yet I don't feel like I want developers to spend their time exactly on this thing.
TL;DR, use addons, since thats why Insim protocol was made -- so that developers can focus on things they have interest in.