The online racing simulator
Quote from EQ Worry :Aahh, right, looks like an ommission on my part, not taking into account the string may be empty. For now please use the default line, I'll correct the code in next release...

sounds good.

thanks again.
Well, actually the trouble is somewhere else than I thought, stay tuned...
Quote from EQ Worry :Well, actually the trouble is somewhere else than I thought, stay tuned...

dunno, putting the string back worked as you said it would.
Right, took me some time to recreate the cause. Your trouble was caused by two coinciding factors: Empty CustomCars string and empty DefaultCar on all leves. When either is defined, everything works as expected.

I corrected the code a bit making sure some default car (XFG, to be specific) is always used, even if none is defined. Having no car type can lead to other troubles so it is better to have this solved. I'll be posting updated 2.2.2 in a short while (DONE).

I plan to release 2.2.3 once it supports tab-separated (and not only line-separated) STA files format as requested.
Quote from EQ Worry :Right, took me some time to recreate the cause. Your trouble was caused by two coinciding factors: Empty CustomCars string and empty DefaultCar on all leves. When either is defined, everything works as expected.

I corrected the code a bit making sure some default car (XFG, to be specific) is always used, even if none is defined.

does that affect the StandardCars option at all? i'd hate to type !top and see XFG when the current config is LRF for example.

(or is it purely cosmetic for airio to function?)
Quote from bunder9999 :does that affect the StandardCars option at all? i'd hate to type !top and see XFG when the current config is LRF for example.

Default car is basically a car type assigned to every new connection. Only once that player joins race real used car is known and may be used in calculations/procedures.

It you type !sb (or !top and many other commands) without car type specified, YOUR current car type is used. That means if you just connected and never left pits, it may be XFG (but you can change this default car on server or track level). If you already joined at least once, your last used car type will be used in the command.

StandardCars option allows to overwrite car type(s) used if none is specified in e.g. !sb command. If StandardCars is not empty on particular server, this value is always replacing unspecified car types instead of your current car type.

So, if you e.g. run GTi-only server, you may specify in SRV file that StandardCars=XFG+XRG. If anyone types !sb then he sees combined list of XFG+XRG lap times regardless of the car type he uses. But there's always the option to type !sb xfg and see xfg-only list.

Hope this explanation makes sense.
Airio 2.2.3 is released, as always you'll find all changes in the change log.

Useful may be configurable support for line-separated and also tab-separated items of records in STA files. Tab-separation may be better for some post-processing, like importing into spreadsheet or reading from PHP scripts.

Major addition is a framework for driving safety ratings. It is a percentage value hinting on certain driver's abilities. The value is raised a bit by every completed lap and race, lowered by causing yellow flag and using bad language. Weights of these actions are configurable, just like overall responsiveness and start value of the system. Other rating actions may be added, ideas are welcome.

And yes, I know simply capturing yellow flags is not always right, because you cause yellow flag even if you're crashed by someone else. Still, over time it is a good indication of your abilities to evade yellow-flag situations,which are reported to you for reference.

FULL version adds the possibility to define safety rating ranges and assign them textual descriptions. Even the FREE version then supports warning and ban (for bad driving) rating levels which may help to get automatically rid of very poor drivers or crashers.

Also a new filter is added checking for equal nicknames among connected drivers, kicking the new drivers. This filter will prevent name stealing using empty characters, which LFS sees but which Airio (just like humans) ignores. Especially demo servers suffer from name stealing, when other drivers cannot simply differentiate the two people and decide if the poser is voting to ban the original or the other way.
EQ Worry, thank you for all the work!

Ok.. I had a working config for 2.1.3. Now Our hosting company upgraded to 2.2.0 and texts in several lines do not work anymore

If I write:

UsersMotd=^7Welcome to ^1M^7y^1D^7emo2^3 Patch Z^1! + ^7Please type ^3!help ^7to see commands. ^3** ^2UPDATED! ^3** + ^3PLEASE ^1read the rules ! ^7(^3Press Shift I^7) + ^3We may kick/ban for breaking rules, ^1DONT DO IT!

I get a "Out of Array" error and if I shorten the text into 2 lines the "+" is written as message in one line and the message stops somewhere in the middle of the text.
Yup, using single + as line separation char was not good, because it is a very usable character. You have two options to update the text:

1) See clearly the multilines:

UsersMotd=^7Welcome to ^1M^7y^1D^7emo2^3 Patch Z^1!
UsersMotd=+^7Please type ^3!help ^7to see commands. ^3** ^2UPDATED! ^3**
UsersMotd=+^3PLEASE ^1read the rules ! ^7(^3Press Shift I^7)
UsersMotd=+^3We may kick/ban for breaking rules, ^1DONT DO IT!

2) Replace single "+" for two pluses, that is "++", and have the text on just one line.
Oh, yes... that works... I guess I have a lot to read to get to know what changed until 2.2.0...

I still have problems with the user rights... I would like to configure limads with the right to kick and ban. Which level should I take in the Free version? I have chosen level 3 and 4 but both are showing me Level2 in "!players"...

Also it is not possible for them to perform kick or ban as limad2...

Last thing is that in 2.1.3 I somewhere found a point to configure own commands for several limad levels. Is this option gone in 2.2.0? I would like to configure "!hi" and "!bye" to print out a defined text when typed by a limad...

EDIT: I just discovered a little "cosmetical" problem: When I connect to my Server I get the message "PLAYERNAME, welcome to SERVERNAME". But if the servername is quite long it will be cut off... Perhaps just do not print out the Playername (I know my name) or print the servername in a new line...

Thank you for now
Quote from Crady :Oh, yes... that works... I guess I have a lot to read to get to know what changed until 2.2.0...

Just read the changelog. I'm afraid I was not updating docs recently, always rather adding new things than documenting them. But the change log, if read from your current version upwards, is very good source of information.

Quote from Crady :I still have problems with the user rights... I would like to configure limads with the right to kick and ban. Which level should I take in the Free version? I have chosen level 3 and 4 but both are showing me Level2 in "!players"...

In FREE version you may use only levels 0 (by defaul can only use team tag) and 2 (this one really has some rights). Level 1 is in FREE version switched to level 0 and level 3 to level 2. But anyway you should be able to give your limads lvl. 2 rights to kick and ban. Check the following items in Airio.cfg.txt file:

Limad2=limad_name
EnableBan=2
EnableKick=2

Quote from Crady :Also it is not possible for them to perform kick or ban as limad2...

Limads do actual kicking/banning by using Airio (not LFS) commands like !kick someone and !ban someone.

Quote from Crady :Last thing is that in 2.1.3 I somewhere found a point to configure own commands for several limad levels. Is this option gone in 2.2.0? I would like to configure "!hi" and "!bye" to print out a defined text when typed by a limad...

Custom commands are not yet supported, but are one of the planned features. It is only possible to define what of the existing commands may limads on different levels use.

Quote from Crady :EDIT: I just discovered a little "cosmetical" problem: When I connect to my Server I get the message "PLAYERNAME, welcome to SERVERNAME". But if the servername is quite long it will be cut off... Perhaps just do not print out the Playername (I know my name) or print the servername in a new line...

Right, another option would be to completely disable that message, server admins may always define their own messages to be shown to each new connection. Will think about it, but it really isn't a pressing matter. As experience shows most people do not read the messages anyway, even if they are BIG BUTTONS.

Quote from Crady :Thank you for now

LOL, understood.
hmmm strange... this is a part of my config:

# ================= LIMITED ADMIN RIGHTS - LIMADS ================= #

# In this section you can define people with limited admin rights,
# including the commands they can use and actions they may take at
# different levels.

# In FREE version you may use the following levels: < 0 = everyone,
# 0 = team member (only can have any name), 2 = mid limad, 4 = admin,
# > 4 = no one. FULL version supports finer limad tuning by adding:
# 1 = low limad, 3 = high limad.


# --------------------- Limad Names and Levels -------------------- #

# Usernames (registered) of limited admins aka limads. These names are
# checked upon connecting and exact case insensitive match is required.
# Default rights: Level 0 - can use prohibited names (good for team
# members), Level 1 - can kick, Level 2 - can ban anyone connected,
# Level 3 - can ban and unban anyone.

Limad2=Crady


# ---------------------- Managed LFS Commands --------------------- #

# These commands are further managed by Airio, simplifying the usage
# or grouping several server commands into one. Specify limad level
# for which (or higher) the command should be available. The commands
# will show in !lhelp1 (or just !l1) and !lhelp2 (!l2) output.

# Restrictive commands: !ban (/ban), !kk (/kick),
!se (/spec) + !pit (/pitlane)
EnableBan=2
EnableKick=2
EnableSpec=2

When I type !players I am shown as limad2 but !lhelp2 does not work for me and I am not able to !kick, !ban or !spec... Or is it not possible to kick another limad2, an Admin or myself for testing before going to public with this server?
Quote from Crady :When I type !players I am shown as limad2 but !lhelp2 does not work for me and I am not able to !kick, !ban or !spec... Or is it not possible to kick another limad2, an Admin or myself for testing before going to public with this server?

Your config looks OK, your check using !players is good.

And yes, you can kick/ban only normal drivers and limads of lower level than you have yourself. And of course no limad can kick/ban an admin, such "rank violating" commands are simply ignored...
Oh... thank you... dunno why it didn´t work... but now it does

I think I am done with my config for nor and it seems to run quit good!

But I have some improvement suggestions / whishes:

- it would be nice to configure the track rotation via insim if you are connected as Admin
- else it would be nice to start/stop the track rotation by a command
- well especially the German translation has some too long words or sentences... So they are cut off Is it possible to increase the number of allowed characters or to automatically split a text in 2 lines if it is too long?

Well.. if I find some more time I will try to make a improved version 2.0 of the German language file.

But for that I need to know the current possible amount of characters....

@Raphsn: Don´t worry! I really admire your work to translate it so far!
Quote from Crady :- it would be nice to configure the track rotation via insim if you are connected as Admin

You can. There's a !cfg admin command available allowing to enter any item used in CFG or SRV file (not TCD file though). You may enter e.g. !cfg RotateTracks=BL1|5|FBM > BL2|5|XFG+XFX.

Confirmation is displayed and this will temporarily (in memory) change the RotateTracks item. The string used in config files will be again used after !rld or Airio restart.

Quote from Crady :- else it would be nice to start/stop the track rotation by a command

Possible in two ways:

1) !cfg RotateTracks= will temporarily erase rotation string, meaning no rotation will happen. Get back to rotation by !rld.

2) Rotation happens on race end. Race end is issued only when completed races = rotate races. You may use e.g. !track 100 to set completed races on current track to 100. Very probably then completed races > rotate races and /end will never be issued.

Quote from Crady :- well especially the German translation has some too long words or sentences... So they are cut off Is it possible to increase the number of allowed characters or to automatically split a text in 2 lines if it is too long?

Not possible to increase allowed chars, it is an InSim limitation, only 64 bytes may be sent. Count with additional 2 bytes on each color and language change, otherwise one char is one byte for you. Names can be up to 24 chars long.

While it would be possible to split longer messages to two lines (and on some places in Airio this happens when no part of info must be lost), it is generally not a good way to go. It should be possible to define sufficiently short messages so that they fit on one line and spamming and confusion and communication load is not increased by multiline output.
Oh, thank you! Then I will try to shorten some translations

An other suggestion came to my mind though:

You still have implemented the !sini (!si) command which is a very nice Idea, but not very useful for our servers...

To explain:

We normally have a standard config like Midracejoin = off, canreset = off, vote = on etc. however in some cases our team members (all Admin rights) change these settings for different reasons. But sometimes they leave the server without changing back to stadard.

It would be nice if it is possible to send lfs and/or Airio commands stored in a textfile (like the !sini funktion) in a special time interval configured in minutes.

So e.g. I could create one set of commads to set the server back to standard setup every 5 minutes and perhaps I could create one that e.g. restarts the server with all standard setups every 24 hours...

Another thing comming to my mind is the ban handling of LFS...

Well I hate the following: I try to connect to a server and only get the message "Connection refused"...

What I would like is an Airio controlled ban system... E.g. a text file is created with all guys that are banned. When the ban ends either by an unban command or when the ban time is over. this licence name will be deleted from this "black list".

So even a banned guy can join the server, gets a message that he is banned untill whenever and that he could contact the server owner on his webpage / email if he was wrongly banned. Then afer let´s say 10 or 15 sec. he will be kicked...

I think this is a great advatage because this "black list" would work on all connected servers and you don´t have to use the bann all command.

In oposit of this creating a "white list" might be usefull too to only allow guys listed there to come on our server...
Quote from Crady :You still have implemented the !sini (!si) command which is a very nice Idea, but not very useful for our servers...

Well, you may always create a default server/Airio setup using / and ! commands in a text file. Then you may say to youd admins: "Change whatever, but before you leave, type !si." FULL version supports automatic !si call several minutes after last driver disconnects.

Timed actions are one of the planned features. When implemented you'll be able to send any commands, including the !si x command calling some server/Airio setup. But I'm pretty sure scheduled actions will be available in FULL version only.

Quote from Crady :What I would like is an Airio controlled ban system... E.g. a text file is created with all guys that are banned. When the ban ends either by an unban command or when the ban time is over. this licence name will be deleted from this "black list".

Hmmm, I do not see much advantages in this except he will see for how long he is yet "banned". And people may just abuse this option, connecting, shouting a while, then get kicked. And again, and again. I usually think about demo environment in these matters, and people there are really reckless. Still, if more uses for this system are found, it may be implemented, very probably reserved for FULL version only.

Quote from Crady :I think this is a great advatage because this "black list" would work on all connected servers and you don´t have to use the bann all command.

In FULL Airio ban (and unban) on one server is propagated to all connected servers, making admin work much easier.

Hmmm, lots of mentions of the FULL version in this my answer. But you know, recently a guy was laughing and saying that I'm crazy offering so much in FREE version. That was after implementing custom cars, one of the most powerful Airio features, I think, and making it generally available.
Ok...

Here is an other suggestion I have:

Imagine you see a guy parking in the middle of the road while you are drivig. As limad you have to type !kick badguy or even spec or ban to get rid of him.

For this case it may be helpfull to just type !kl - for kicklist and you see a list of all connected racers and can kick him by mouse click...

Like this example a banlist or speclist would be nice too!

Real admins can kick and ban by mouse click limads cant...

Also having such a list for giving or removing penalties could be nice too.
A bit late here but ...

Thanks for the new version. I dwnlded and will install soon. Can't wait to play around with the new features.

Thanks for taking my tab format for the data files into account.

Hope we'll see the feature to limit access base on a list of authorized users along with setup limitations for those users (individually).

Great work!
Just an other question to because it is not clear for me:

In the file Airio.tcd.txt I don´t find any answer how to set the General options.

E.g. MaximumSpin=-1... What does -1 mean here? I would like to spec spinning cars on every track/car combination. Of course I might need to adjust this option later car/or track specific to allow more spin...

And - sorry for that question - what are Knobbly tires? Are these rally tires? And how to allow them on rally courses?

How do the 3 timed messages work?

I mean I changed some few things on the config and instead of !rld or !ani I quit Airio and started it again. After about a few seconds timed message 1 and 2 were displayed at the same time although Timer 1 is at 15, Timer 2 at 20 and Timer 3 at 30...

In my opinion the first message should be displayed every 15 minutes, the 2nd one every 20 minutes and the 3rd every 30 minutes... But not at the same time... When does the time start counting? Does it start when Airio was started, does it count when I conect to the server?


Ok... last Edit for today

I found another problem: I have a Track rotation from BL1 > AS2 > KY2 > SO6. But if a Admin changes the the track to e.g. FE5 the rotation stops working. Ok... I could reset the server to default once no one is connected, but I think it would be better that Airio "stores" the last RotateTracks track and will rotate to the next one after RotateRaces is done...
Kick/ban/spec/pen limad buttons: Good idea. A command could display all drivers, a click may select one and another click then do some forced action on that driver. I will think about it. Note that if kick/ban voting is allowed limads may have priority votes and in fact may use the voting buttons with immediate effect.

HINT: Best way to use !kick, !ban and other commands requiring names is to RIGHT-CLICK on that name in Connections list, then press HOME and type e.g. "!kk "... One click, 5 chars to type, not bad. Hm, I guess limads could as well define e.g. "!ban " as a hot key (bind). One click, two keys to use then. Better. Example: Right-click, Home, Ctrl+F1.

White list of allowed usernames/car: Uff, so many other things to improve/add, but I'll try to think about this one too. Along with some blacklist maybe.

MaximumSpin: It is a sort of crash check. Set the maximum value allowed in degrees per second. 360 seems a good value, anyone making more than one rotation a second clearly does not have the car under control. Maximum value is 720, LFS never reports higher rotation speeds.

This value supports track/car hierarchy. At the place where it is by default in TCD file there is no Track nor Car defined. That means it will apply to all tracks and all cars. Using Track and/or Car keys you may define it for individual tracks, car or combinations, as you need. Default value of -1 means this check does not run.

Knobbly tyres: Yes, these are rally tyres, but are rarely used, Hybrid are better for rallycross tracks. But Knobbly are allowed on rally tracks under default settings in TCD files. Here are the appropriate items:

ProhibitedTyres=Knobbly
Track=BL2
ProhibitedTyres=Normal+Super
Track=BL2R
ProhibitedTyres=Normal+Super
Track=FE5
ProhibitedTyres=Normal+Super
Track=FE5R
ProhibitedTyres=Normal+Super
Track=FE6
ProhibitedTyres=Normal+Super
Track=FE6R
ProhibitedTyres=Normal+Super

The first items is set when Track and Car are empty. That means Knobbly tyres are prohibited on all tracks. But the following items specify individual rallycross tracks and change ProhibitedTyres to Normal+Super, overwriting global default.

Timed messages: Your assumption is correct. Only every change of definition updated using !rld or Airio restart sets counters so that initially all defined messages are displayed at the latest after 1 minute. This allows you to check if they are defined OK, it is a feature. Once displayed they will obey the defined intervals, still sometimes two or even three timed messages may be shown at the same time when the intervals overlap.

Rotation: Again, the described behavior is correct by design. If a track not used in rotation string is selected, there will be no rotation. I'm not sure it would be nice to force on admins rotation even if they went outside the track in rotation previously and now want to go to some other track. They would call /end and suddenly something else will load, every time. To get back into rotation one of the rotated tracks must be selected.
Well... can´t say anything more for the moment... Everything seems to be clear now...

Now: Testing, Testing and again Testing

Thank you!
HA! Get a new version for testing then, because Airio 2.2.4 is released with some new features as mentioned in detail in the changelog.

Airio 2.2.3 FREE dearly missed commands for showing safety ratings and total points of connected people, so I enabled these called !rate (!rt) and !rank (!rk). They are simplified versions of the same commands from the FULL version.

The above and other commands showing overview of connected people (such as !session or !time) now allow to see even drivers that do not fit withing the first 24 buttons by allowing to specify list start position. Good for heavily loaded servers. Example: !ss 20 will show best sesssion lap times from place 20, or simply last 24 people, whatever applies.

New default configuration is made so that speedtraps are installed into split points of any track. My experience shows this is much better because you can compare your speed at splits with others during race/practice. You can see your speed at every split in the rightmost button at the top of the screen when splitting data are shown. In my view this is more useful than seeing how fast was someone going using drafting or after a crash.

FULL version contains possibility to define multiple pitstops required during one race together with pit windows - specifying race minutes when a valid pit stop can be made. Drivers are informed about pit requirements at the race start and during race pitlane status changes are displayed. This is accompanied by possibility to define required actions in pits, specifically changing all tyres (useful to make pitstops more realistic) and refueling. Unfortunately repairs cannot be forced this way using available InSim info.

Also FULL version makes use of safety ratings (that seem to be working pretty good). It is possible to limit race joins by required safety rating both on server level and specific car type level. This allows to create tiered servers or tiered car types on one server (where tiered means splitting drivers by safety rating ranges). This is done by configuration items functioning exactly as those limiting race joins by rank (points) or licence (lap time).
Cool, nice update

Is there anyway to show your own points? The rank shows total points, but people need to see their own playing points.. They can find it on our website but I can't see anyway to show it on airio unless they know which position they are in via the !ptp command.
Yup, the Personal Info command !pi shows all information about a driver as they apply to the running instance as a whole, not depending on track/car. So in !pi you see your among other info your (or anyone else's) total laps, total points, points for playing, and rating. All these values are accompanied by your current position and total number of such items:

Overview of: мicнaeι (lokalhorst)
Raced: 20.05.2009 01:19 Laps: 4478
Points: 17304 (5/10666) | 581 (17/1103)
Ranks: Air General + 2696 = Air Marshal
Podiums: 551-63-21 (11/6674) | 23-0-0 (21/714)
Series: 117-19-14 (15/3521) | 6-0-1 (21/322)
Drifts: 117 (1278/3966)
[B]Playing: 15041 (1/6779)[/B]
Rating: 86.51% (31/3105) [298] | Pure Air (+8.49/-1.51%)
Tracks/Cars: BL2 XRG XFG (32) BL1 FBM (17272)

Most people know just about the Personal Best command !pb. That one is limited strictly to certain track/car though, showing data pertaining only to that combo:

Stats for: мicнaeι (lokalhorst)
Track: BL1 Car: FBM Laps: 4451
PB: 1:12.39 Date: 27.04.2009 22:03
PB: 23.51 29.07 19.81 (0:52.58) 4/9408
TB: 1:12.15 Raced: 20.05.2009 01:19
TB: 23.47 28.92 19.76 (0:52.39) 3/9408
Licences: Air Platinum
Points: 17272 (1/6651) | 581 (12/711)
Lap time: 1:12.39 (3/6932) | 1:12.52 (3/814)
Race time: 6:08.96 (1/4850) | 6:09.04 (1/662)
Podiums: 550-63-20 (3/4075) | 23-0-0 (13/452)
Series: 117-19-14 (4/2031) | 6-0-1 (14/186)

So, in !pi you see your playing points and your current position. Based on this you can then use !ptp position command to see drivers around you in this caregory...

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