by oorf I f*ckfish aka Alexander P.
Since I don't have enough work with the menu and the widgets and the following issue quite bugged me, I had to write this plugin in the hope, a lot of people will use it.
The situation: A lot of guys will already have realized, that higher ranked servers are sometimes pretty hard to join since they are constantly full of players. If you enter as a spectator, you'll have to lay something on your "Enter" key and still there are people that join faster than you.
The solution: This plugin is an automatic management system for chronically overpopulated servers. It creates a spectator queue to let those players join first who came first. It also contains some idle kicking features.
This plugin contains no fancy graphical output, just plain old chat messages and functionality =)
AutoQueue All Versions
- The list didn't work due to a debug line I did not comment out, sorry
- I removed XFA from the version name since it should be known by now that the queue works with XAseco, Fast and Aseco
- Added a self-updating list that shows the current content of the queue, its properties can be configured inside "autoqueue_config.xml" (see "Configuration" section below)
- removed inconsistency check since it only produced errors
- Added a chat command "/queuelist" to show beforementioned list
- Added a chat command "/queueversion" that outputs the current autoqueue version
- changed the Worstkick (again...), now there's no safetime anymore, if a player enters a runnig round, he is automatically safe for this race, he will be made "kickable" as soon as the next track starts
- deactivated the plugin for the time the next track is loading since I experienced a few rare abnormalities in this timeframe
- idlekick won't kick Referees anymore
- added a little version info at the queuebutton
- added some console messages
- Dedicated Server 2008-10-07 or better required
- changed the Worstkick to only kick the x worst positions if possible, so with a player count of 8 and a Worstkick of two it will always only try to kick position 7 and 8, it will not kick better positions
- removed the safetime for new players and changed it to kick only official players
- /play command in FAST won't circumvent the queue anymore
- idlekick bugs in WarmUp should be fixed, see this post for more details
- from now on every joining player will be put into the queue first, no matter if he joined as a player or spectator, again, for more details, see this post
- added an experimental inconsistency check that searches for differences between the lists used in the queue plugin and the actual player list on the server and reacts appropriately (I hope^^), see the "inconsistencyinterval" parameter in the XML
- removed the ladder serverlimit setting from the config since from now on the ladder limit is read directly out of the dedicated server via XMLRPC
- the IdleKicker shouldn't kick relay servers anymore
- in (X)Aseco, the worstkick was buggy for WarmUp, fixed
- again some small structural changes
- probably some other stuff, I forgot to mention
- I used a faulty named event in the IdleKicker for Aseco (therefore it didn't work properly)-> fixed
- No functional changes but I added some clickable ManiaLinks that replace the chat commands and messages since I heard from an admin that some players don't read the chat lines, this manialink stuff is optional and can be configured in the xml file (see the "Configuration" section below)
- Admin check for KickWorst was faulty, so admins were also kicked, even if "kickadmin" was false -> fixed
- IdleKicker crashed FAST, sorry about that ->fixed
- Added a new functionality: If a player joins the race he gets a "safetime" in which he won't be kicked by the KickWorst function, this should give new players the chance to be able to drive a few rounds (especially when they enter at the end of a race), the xml parameter for that is "newplayers_safetime"
- little fix for Aseco, where I forgot to properly check for admins, so they were always kicked, too, no matter what setting
- Apparently the ForceSpectator method works too straight forward and even lets players in, that are below the needed rank, this is fixed now:
In the config file, there's a new parameter called "serverlimitmin" which should be set to your minimum point limit, FAST users won't need to do this, since the plugin gets this value from the Dedicated config file there
- Uh, another letter, this time it stands for Aseco, so from now on this plugin will run on XAseco, Aseco and FAST
- Idlekicker in FAST was faulty -> fixed
- KickWorst: Noone will be kicked after the WarmUp, only after real races
- some small structural changes
- Again some useless letters after the version number, this time they stand for XAseco&FAST since from now on, both of them are supported =)
- Fixed some inconsistency in the chatlines
- "ox" stands for "older XAsecos" and it only works for XAsecos prior to 1.03 (this will be the only version working there, I won't make an alternative for future releases, so update your XAseco )
If you don't follow the steps carefully, the plugin will not be working properly.
- Unrar the archive into the ASECO or FAST folder (FAST users can now proceed to step 3)
- Insert the following line into "plugins.xml" (after all other plugins)
Code: Select all
- Configure some stuff if you like to (see "Configuration" section below)
- Done! Have fun!
Every spectator will be put into forced spectator mode, so constantly hitting "Enter" won't accomplish anything.
If a spot on the server opens, the first one who came will automatically exit spectator mode and enter the driving.
After that the second one who joined... and so on...
If a player choses to put himself into spectator mode to take a break from driving, he'll be put into the "Unqueue" mode.
That means, to rejoin the game he'll have to reenter the queue by typing "/queue".
A player in the queue can exit the queue and be a normal spectator by typing "/unqueue".
The Kicking Functions
I know, XAseco already has an Idlekicker, but I kinda wanted a time based one and since it matches this plugin I implemented it. Therefore inside the config file you can configure your idle kicking preferences (find details in the "Configuration" section below). You can of course deactivate the kicking.
Another thing I implemented is a Kick-Worst function. That means after each race the plugin checks if there are players in the queue and if this is the case, the plugin kicks the x worst players from the last race. This is still experimental since I don't know how it reacts in some Game Modes and especially I did not try WarmUp.
Inside the main XAseco/FAST folder, you'll find a file called "autoqueue_config.xml". Inside this file you can configure everything you want to customize the plugin to your needs:
- kickinterval: The time interval in which the plugin checks for "kickable" players, if set to "0", the whole idle kicking is disabled
- idletime: Time, until an idle player is kicked. A player is set active if he does one of the following things:
- pass a checkpoint
- write a chat line
- finish a race
- click a manialink
- unqeued_spec_idletime: The same like the beforementioned, but for spectators. This functionality won't kick players that are waiting in the queue
- kickworst: Maximum number of players kicked after a race is finished (the plugin takes the race ranking and kicks the worst players)
- kickadmins: Determines whether admins can be automatically kicked or not
- use_manialinks: set true to use ManiaLink display and buttons instead of chat display and chat commands
- str_*: Some strings for the chat and ManiaLink output
- buttonxml: the ManiaLink code used for the queue output and button, you can of course change it if you like to
- listconfig: some settings for the display of the queue list
- autoshow: If true the list will be shown automatically to a player that joins the queue
- title: the string that will be used as the caption for the list
- style: the Manialink style for the list background
- substyle: the Manialink substyle for the list background
- highlitestyle: the ManiaLink style for the background of a listentry
- highlitesubstyle: the ManiaLink substyle for the background of a listentry
- posx, posy: the position of the queue list window
- rows: the number of rows in the list
- maxcols: the maximum number of columns in the list (the plugin will automatically remove empty columns)
- maxwidth: the width the list uses if all columns are filled
- scale: (0..1) scales the whole list by the given factor