The online racing simulator
AIRIO - Advanced LFS Tracker
(2362 posts, started )
I have a problem with implementing data import from cr.txt to MySQL. cr.txt contains A LOT of data and it continues to grow by time. Not all data is updated after a race but there is no easy way to tell what data without external help. It will cause ugly dependencies and I want to prevent that.

At the moment all data is updated after every race which impacts the MySQL database quite heavily while it is completely unnecessary to empty and reimport all data every time....

...As long as there is a date field where the last-time-data-has-changed is stored. Sadly there isn't, only a PB unix timestamp.

Is it possible to use field 33 (not used) to store an unix timestamp of the last update of any field data from the specific racer?

---
Btw, I will test the RotateFull parameter you provided until there is a better solution. Keep up the good work
Right, I see the problem. What you suggest is now implemented in Airio 2.3.6c, using 33rd field in STA.CR file. Default zero is replaced by value corresponding to 1.1.2010 and updated on every record update (e.g. on every lap finish). The statistic files are stored regularly every 5 minutes, when updates held in memory are persisted to disk.
Excellent
Quote from EQ Worry :...This way I was able to update WE1, BL1 and AS3 (plus reversed versions) paths and offer them for download. If you think there are some other tracks with PTH needing revision, let me know.

Well, of course KY2 and KY2r:
Attached images
ky2pthfail.jpg
Victor has already replied to this and said something like he told it to Scawen, as far as I know.
Quote from VoiD :Well, of course KY2 and KY2r:

WOW! I never noticed this... uhm... substantial imprecision of PTH on KY2. Path file version 1.2 is now available on Airio downloads page correcting this. Appended are pictures of new proper paths.

I'm really not sure if Victor is following this thread, but of course he's free to use the updated PTH files e.g. in the cool Remote application.
Attached images
_KY2_.jpg
_KY2R_.jpg
By the way, are those coordinates got directly from the PTH file? I always get random points
Yes, directly from PTH files, according to specifications...
I´m speechless, you simply rule!

< downloading
I have a question, hope you guys can help.

I want to invalidate laps that the racer has cut. I saw restricted zones, then limited zones, then pth files...

It seems like the pth files are the easiest, as they are already defined. How do I enable them? I tried changing the pth offset but it had no effect?
Quote from jasonmatthews :It seems like the pth files are the easiest, as they are already defined. How do I enable them? I tried changing the pth offset but it had no effect?

Yes, indeed. It is not 100% reliable due to small lags which result in cars seen by server for a short while on some other place than they really are, but using a bit of tweaking path checks work quite well.

First, you need to copy the files into PTH directory under Airio, use version 1.2 availabe on download page.

Then activate path check using CheckRacePath=true in the appropriate SRV file.

That is basically all, only you can adjust RacePathDelay value setting for how long (in 1/10 seconds) it is ignored being outside proper path. Default value seems to work good though.

There is no need (I think) to change OffPath value for any track in TCD file, if updated path definitions are used.

To check the system works activate for yourself path check info. Do !opt and enable Path Check button (combined with Distance). Then you'll see in chat when you're leaving proper path and getting back. Time of laps with failed path check are ignored, driver is notified about the fact if that would be his PB.

-
(jasonmatthews) DELETED by jasonmatthews
Quote from EQ Worry :Right, I see the problem. What you suggest is now implemented in Airio 2.3.6c, using 33rd field in STA.CR file.

It reduced processing by more than 50%

14+ secs => 6 secs ...

Faster is not possible because it has to loop through the complete STA.CR file.

---
Only further improvement is possible when you are able to write the STA.CR based on that timestamp, newest first. So it aborts looping when it detects older timestamps than already processed. But the server load has decreased dramatically now and that is the most important thing. Looping costs time but isn't 'heavy'.
Something is not right on KY2 racing path anyway, I was checking the WR for MRT/KY2 yesterday and there is a nasty cut in to pit exit...strange because it is done in HL mode with no lag...

Also have to disable the pit exit check from giving penalties, but that's probably due to lag...
Quote from cargame.nl :It reduced processing by more than 50% 14+ secs => 6 secs ...

Ha! Good! One thing you should change in your setup: Move calling the stats update script from SRV file to CFG file, where it belongs. There's and item for this and also it is logically correct to use CFG, common file, because stats are also common. Furtermore, there'll be no "DB updated succesfully" public message, the text will be only in the LOG file.

Quote from Framaris :KY2 ... there is a nasty cut in to pit exit... Also have to disable the pit exit check from giving penalties, but that's probably due to lag...

Hm, I guess that is around node 522 (see the pictures a few posts above)? Concerning pit exit check, on KY2 it is, unfortunately, almost unusable, because of the way the track turns and the fact that small lags result in virtual straight movement of the car going from pits, right to the racing path. An option could be to use longer delay, say 10 equal to 1 second.
Hi!

I've upgraded the version and now it seems that all is working fine with the AVG from lap 2... in race mode

But in the other server, configured on qualification and free practice, the AVG is recorded from lap 3 yet

Don't know if that makes sense to you. If you need some info (logs, replays, etc...) just let me know
Quote from EQ Worry :...Well, in TracksRotateFull you can use any command, including the one changing a server parameter. That means when you rotate to BL1R you may add there !cfg FlagWeight=-10 to substantially reduce effect of all yellow flags, and when moving elsewhere you may get back to !cfg FlagWeight=-100 (or maybe simply !rld #, reverting server number # to default state).

So its basicly
#
RotateTracksFull=AS3|!len 5 ; !FlagWeight=-100 > BL1R|!len 7 ; !FlagWeight=-10
#

Could I use "/laps=x" instead of "len"?

..do I need the "!" ..?
Almost correct, but not quite. I believe the following should work:

RotateTracksFull=AS3|!len 5; !cfg FlagWeight=-100 > BL1R|!len 7; !cfg FlagWeight=-10

And yes, you can use also / commands, however using !len is preferred over /laps because it will set LFS correctly even after racing for minutes instead of laps.
Airio ranking system
In need of a little help. It's probaly something that I'm missing or leaving out all together, but I can't seen to get the ranks/classes working on the server. We are a small group of players that like to get together and have fun and would prefer to use a ranking system. We bought the full airio version after using it for a while and were really impressed with it, Thanks EQ, your doing a great job. But my problem is that the !rk, !lc, and !rt all show to be working when called, but the car selection does not work. I saw in another post to set the lfs cfg to all for car selection did that and still no luck. When you joined it would show the proper class but in the garage there would be FXO and XRT set for selection. So for time being I just did a !/cars XFG+XRG+RB4+FXO+XRT and am just running those cars till I can figure it out. Like I said it's got to be something I'm not doing right, so any help on this would really be appreciated!
Below is a 2 class version of what I'm trying to do.

From: Airio.srv.txt file

RankByPlaying=false
RankByDriving=false
RankRequired=0
RatingRequired=0
ExperienceSpecific=
ExperienceRequired=
LicenceSpecific=XFG+XRG|Class1 RB4+FXO|Class2,XFG,XRG
RankSpecific=XFG+XRG|Class1 FXO+RB4|Class2
RatingSpecific=FXO+RB4|75

From: Airio.tcd.txt file

LicenceTimesText=
LicenceTimesRel=
LicenceRanksText=Class1,Class2
LicenceRanksPoints=0,175
LicenceRatesText=Class1,Class2
LicenceRatesLevels=0,75

Ver. is full v. 2.3.6a at 500servers

Again thanks for any help on this!
remove the word "Class" from your .srv file

and for your rating, it wont be 75, it will be whatever integer the 75% is.

for example: if in .tcd file your ratings are:
LicenseRatesText=35%,55%,75%,95% your
LicenseRatesLevels=35,55,75,95
and they would be considered 1,2,3,4. so for rating level in .srv you could put RB4|3 for 75% rating requirement
Really appreciate the fast response guy. Thanks for the help. Should have made this post before I pulled out what little hair I had left !
No problem.
Quote from hillhopper :
From: Airio.tcd.txt file

LicenceTimesText=
LicenceTimesRel=
LicenceRanksText=Class1,Class2
LicenceRanksPoints=0,175
LicenceRatesText=Class1,Class2
LicenceRatesLevels=0,75

From: Airio.srv.txt file

RankByPlaying=false
RankByDriving=false
RankRequired=0
RatingRequired=0
ExperienceSpecific=
ExperienceRequired=
LicenceSpecific=XFG+XRG|Class1 RB4+FXO|Class2,XFG,XRG
RankSpecific=XFG+XRG|Class1 FXO+RB4|Class2
RatingSpecific=FXO+RB4|75

There's several problems in these definitions. First, to use licence/rank/rate requirements in SRV you must first define in TCD file what levels will exist. You have no licence times defined, so you cannot use LicenceSpecific. Also rate levels are set in percents * 100. Then, as z-ro says, you use just number of licence/rank/rating, not its name. Also licence cannot be based on two cars the way you have it. Overall, the setup may work with the following changes:

From: Airio.tcd.txt file

LicenceTimesText=Licence1, Licence2, Licence3
LicenceTimesRel=500, 400, 300
# these are % * 100 over current WR

LicenceRanksText=Rank1, Rank2, Rank3
LicenceRanksPoints=0, 175, 500
# these are simply points (total, !ptt)

LicenceRatesText=Class1, Class2, Class3
LicenceRatesLevels=0, 7500, 8500
# where 7500 = 75%

From: Airio.srv.txt file

LicenceSpecific=RB4+FXO|2,XRG RB4+FXO|2,XFG
# 2nd licence (WR+4%) in XRG or XFG required for RB4 and FXO

RankSpecific=FXO+RB4|2
# 2nd rank also required (175 pts)

RatingSpecific=FXO+RB4|2
# Also 2nd rating level required (75%)

There's no need to say what is required for XFG+XRG, these cars are simply always available. Also note that under default config limads and admins are allowed to join regardless of licence/rank/tating requirements. To make everyone equal use AllowJoining=6 in CFG file.
To my suprise Airio does not log real race point totals as championship competition. It includes all points gathered during a race, also improvement, climber and I think support points.

I think that is wrong. All other points than race points are individual and should not be counted in a championship league table.

Another thing, I would like to see that Limads could influence safety ratings directly with a command. Sometimes racers in faster cars suddenly become dangerous and it would be great if Limads can reset that safety rating (I prefer even under default). Now most of the time people who crash someone else don't get a bad rating because the one who gets crashed causes a yellow flag but the one who actually crashed the other one will get away with nothing.

It will be also a great tool to give light punishments (for example; -5% or -10%) and is far better to create clean racing than just kicking or banning. In my opinion.
Quote from RocksGt :Hi!

I've upgraded the version and now it seems that all is working fine with the AVG from lap 2... in race mode

But in the other server, configured on qualification and free practice, the AVG is recorded from lap 3 yet

Don't know if that makes sense to you. If you need some info (logs, replays, etc...) just let me know

Hi, with AVG, I think it would be better not record from a particular lap, all laps are valid, including the exit lap of the pits. don´t think?

AIRIO - Advanced LFS Tracker
(2362 posts, started )
FGED GREDG RDFGDR GSFDG