ServerExt
ServerExt is a package containing extentions for UT2004 servers. It consist out of a couple of independed components:- Chat Filter
- Player join log
- Remote stats
- Reserved slots
- RSS Feed Mutator
- ServQuery
- Stats chat log
- Team Balance mutator
The ServerExt package is being developed by Michiel "El Muerte" Hendriks. This is an unofficial add-on and not supported by Atari support.
Downloads
New versions of this package can be downloaded from the ServerExt website.- Version 107 [zip] [ut4mod]
- Version 106 [zip] [ut4mod]
- Version 105b [zip] [ut4mod]
- Version 105a [zip] [ut4mod]
- Version 105 [zip] [ut4mod]
- Version 104 [zip] [ut2mod]
- Version 103 [zip] [ut2mod]
- Version 102 [zip] [ut2mod]
- Version 101 [zip] [ut2mod]
- Version 100 [zip]
License for ServerExt
Open Unreal Mod License Version 1, March 2004 0. Definitions "Program" the work, either in binary or source form, that has a notice attached to it stating that it has been released under this license it by the copyright holder. "Modification" a derivate of the Program or any other work based on the Program "Linking" using parts of the Program, or using parts of any other work, thus creating a direct dependency "You" the licensee "Runtime Environment" the virtual machine or operating system required to run the Program, as released by the Publisher or Creator of said runtime environment. This includes any extentions or updates for the runtime environment released by the Publisher or Creator. 1. License Herewith everybody is granted permission to copy and distribute verbatim copies of this document. The only restriction lies on changing the content, with the exception to translation of this license. This license applies to the Program that has been released under this license. The license only applies to copying, distribution and modification of the Program. Execution or output of the Program are not covered by this license, however the right for additional limitations on the use (that do not cover copying, distribution or modification) is granted to the copyright holder. This license is only valid when all terms in this license comply with the licenses of the dependecies of the Program. This includes the license of the possible required runtime environment. 2. Copying and distribution You are granted to copy or distribute verbatim copies of the Program, on any medium, or in any format as you see fit. You are not limited to charging a fee for the physical act of transferring the copy, nor are you limited to provide warranty for the Program in return of a fee. Unless this is prohibited by the license of the Runtime Environment. Any distribution of the program should be accompanied with a verbatim copy of this license. 3. Modification You are allowed to modify the Program, or portions of it, therefore making it a derivate of the Program. You are allowed to distribute your modifications under the following conditions: - You must clearly state that it is a modification or derivate of the Program - The original copyright notice must be kept intact - The modified files must contain notices of the changed made to it - The Modification must be released under the same license as the Program - Distribution happens in compliance with section 2 4. Source The original source of the Program or Modification must be freely available on request. 5. Linking The Program or Modification may only link with other work that have been released as free software. The license grants exclusive right to link with any part of the Runtime Environment, as provided by the publisher or creator of said Runtime Environment. Reusing pieces of source code available in the runtime environment in the Program is only allowed under the following terms: - the "borrowed" code is clearly marked to originate from the runtime environment, quoting the original copyright. - the following notice is added to the top of the file: "This file contains portions of code from the runtime environment." The right to "port" the Program to another runtime environment is reserved for the copyright holder. 6. NON WARRANTY THIS SOFTWARE DOES NOT COME WITH A WARRANTY OF ANY KIND, UNLESS NOTED OTHERWISE BY THE COPYRIGHT HOLDER OR WARRANTY PROVIDER. THE ENTIRE RISK OF THE PERFORMANCE AND QUALITY OF THE PROGRAM LIES WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU WILL ASSUME ALL COSTS FOR REQUIRED OF REPAIR OR CORRECTION.
Revision history
Changes since v106
- ReservedSlots: reserved slots users won't be kicked to make room
- Fixed ChatFilter's warning mutator not loading
- Fixed crash when you add too many reserved slots
- Removed log verbosity for remote stats
Changes since v105b
- Fixed BM_Sequential mode for mutRSS
- Client packages split up into two: one for ChatFilter and one for mutRSS
- mutRSS now uses LibHTTP3
- Fixed recursion issue in ChatFilter (e.g. replace xxx -> x doesn't crash the server anymore)
- Fixed an issue with spaces in bad words
- Fixed warning mutator for ChatFilter
- Added a new option: bWarnVoting, only when this is set the voting mutator will be used and allow people to vote on a judgement of a player.
- Fixed the Team Balancer where the wrong spawn points where used.
- Added a new module: Remote stats, this will POST the stats to a website
Changes since v105a
- ReservedSlots, ReservedSlotsIni and SlotManager are now compiled with `parseconfig`. This means you change the config file to use on the commandline:
-ReservedSlots=myini.ini
,-ReservedSlotsIni=myini.ini
,-SlotManager=myini.ini
. The settings in the system config are loaded before the specified config file.
Changes since v105
- Fixed a couple of issues with text fields in the webadmin
- Fixed reserved slots using name or password as check
Changes since v104
- Removed bFriendlymessage from ChatFilter, friendly messages are now always used and doesn't require the client side package
- Added reserved slot feature
- Added team balancer mutator
- Fixed chat logging for spectators, requires an updated version of utstatsdb before it work (any version newer than 2.21)
- Fixed gamepassword not being passed by ServQuery
Changes since v103
- Removed debug log spam
- Fixed a couple of accessed nones in chatfilter
Changes since v102
- The RSS Feed configuration can now also be saved in an other config file than the RSS.ini. This has been added for GISPs, if you do not host multiple servers from the same location with different admins, then you should not use this feature.
- Fixed "sequential" feed order with only one available feed
- Fixed the client side browser
- Added a new config option to MutRSS: bAnnounce
This will controll announcing this mutator to the master server - Fixed incorrect chatlogging in chatfilter
- Fixed a couple of accessed nones in chatfilter
Changes since v101
- Included the webadmin pages for MutRSS
- Fixed MutRSS webadmin removing admin\users tab
Changes since v100
- Fixed duplicate chat log entries
- Ported the ChatFilter from UT2003
General Installation
Copy the following files to the System directory of your UT2004 servers:- LibHTTP3_5.u
- ServerExt.int
- ServerExt.u
- ServerExt.ucl
- ServerExtClientA.u
- ServerExtClientA.int
- ServerExtClientB.u
- ServerExtClientB.int
- wUtils.u
Copy the following files to the Web\ServerAdmin directory of your UT2004 servers:
- rssfeeds.htm
- slotmanager.htm
- slotmanager-entry.inc
Chat Filter
ChatFilter is a server add-on to clean up the chatting on a server. ChatFilter has the power to reduce spamming on a server, it can also filter bad words from the line. On bad behavior the player will get a score assigned on a defined level actions can taken against the player. It's pretty much the same as ChatFilter for UT2003.Chat Filter requires version 3197 or higher, the retail contains a bug that prevents ChatFilter from working correctly.
Installation
AddServerExt.ChatFilter
to the Server Actors list in your system configuration
[Engine.GameEngine] ServerActors=ServerExt.ChatFilter
Configuration
UT2004.ini
The configuration of the behavior of ChatFilter resides in the server configuration file (UT2003.ini). Add the following lines to the file:[ServerExt.ChatFilter] fTimeFrame=1.0000 iMaxPerTimeFrame=2 iMaxRepeat=1 iScoreSpam=1 CencorWord=***** iScoreSwear=1 iKillScore=10 KillAction=CFA_Nothing BadWords=asshole BadWords=fuck ... bShowMuted=false bUseReplacementTable=false bCheckNicknames=false BadnickAction=BNA_Kick UnallowedNicks=Player UnallowedNicks=Admin ... bWildCardNicks=true sWarningNotification="ChatFilter: Please clean up your act" sWarningBroadcast="%s is chatting abusive, type 'mutate cf judge %i` to judge the player" WarningAction=CFA_Kick iMaxWarnings=2 fMinVote=0.5000 sMuteMessage="ChatFilter: You are muted the rest of the game" bLogChat=false sFileFormat="ChatFilter_%P_%Y_%M_%D_%H_%I_%S"
- fTimeFrame
- Set the number of seconds of a single time frame
- iMaxPerTimeFrame
- Maximum number of lines allowed per time frame
- iMaxRepeat
- The maximum times a player can say the same line in a row
- iScoreSpam
- The score to add when a player exceeds the iMaxRepeat value
- CencorWord
- Text to replace BadWords with
- iScoreSwear
- The score to add for every bad word
- iKillScore
- The maximum score a player may have before actions will be taken
- KillAction
- Action to take against the player:
- CFA_Nothing do nothing
- CFA_Kick kick the player
- CFA_Ban ban the player
- CFA_SessionBan ban the player for this game
- CFA_Defrag remove one point of the players score
- CFA_Warn the player will be warned
- CFA_Mute the player will be muted for the rest of the game
- BadWords
- Words that are considderd bad/swearing. By default no words are added
- bUseReplacementTable
- Uses the a per badword replacement, BadWords have to be divided with a ; to change the replacement, or the default if omitted. For example:
BadWords=shit;sh*t
BadWords=hate;love - bShowMuted
- Update the HUD to show when a player has been muted
- bCheckNicknames
- Check the players nick name for BadWords.
- BadnickAction
- Action to take on a bad nick name
- BNA_Kick kick the player
- BNA_Request request a nick change, don't kick
- BNA_Ban ban the player
- BNA_SessionBan ban the player for this game
- bWildCardNicks
- Accept wildcards in the bad nick name list
- UnallowedNicks
- List with nick names that are never allowed for players
- sWarningNotification
- The message a player will get when he gets warned
- sWarningBroadcast
- The message all players get when somebody get's warned. "%s" is replaced by the player name, and "%i" is replaced by the filter record contain information about this user, required for the `mutate cf judge` command
- WarningAction
- The action to take when a player get's voted off or exceeds the maximum warnings. You can choose from the same actions as KillAction, except CFA_Warn ofcourse
- iMaxWarnings
- The maximum number of warnings before the server automatically takes action
- fMinVote
- The minimum percentage of players on the server that have to vote before actions are taken against the warned player
- sMuteMessage
- The message a player get's when he's muted for the rest of the game
- bLogChat
- Save the chat to a log file
- sFileFormat
- The format for the log filename. You can use the following replacements:
- %P server Port
- %Y current Year
- %M current Month
- %Y current Day
- %H current Hour
- %I current mInute
- %S current Second
- %N server Name
Player Join Log
Player Join Log is the UT2004 equivalent of PlayerJoinDumpSE for UT2003. It will dump player joins/parts and nick changes to a log file.The following types of lines will be dumped to the log file:
[PLAYER_JOIN] <time stamp> <name> <IP> <net speed> <Player ID hash> [PLAYER_NAME_CHANGE] <time stamp> <old name> <new name> [PLAYER_PART] <time stamp> <name>The fields are seperated with TAB characters.
Spectator information is also dumped, but the following tags are used:
[SPECTATOR_JOIN]
, [SPECTATOR_NAME_CHANGE]
and [SPECTATOR_PART]
Installation
AddServerExt.PlayerJoinLog
to the Server Actors list in your system configuration
[Engine.GameEngine] ServerActors=ServerExt.PlayerJoinLog
Configuration
UT2004.ini
[ServerExt.PlayerJoinLog] bExternalLog=false sFileFormat="PlayerJoin_%P_%Y_%M_%D_%H_%I_%S"
- bExternalLog
- If set to true an external log file will be used instead of the standard log file. External log files will be saved in the UserLog directory.
- sFileFormat
- This set's the filename of the external log file. The following replacements can be used:
%P
server port %N
server name %P
year %M
month %D
day %W
day of the week %H
hour %I
minute %S
second
Remote stats
Remote stats allows you do send the stats to a remote server. The stats data will be send to a webserver that can then analyse the data. You can use this together with UT StatsDB.This feature will not obstruct with the normal stats logging.
Installation
To install Remote Stats you will have to change the stats logging class:[Engine.GameInfo] GameStatsClass=ServerExt.RemoteStatsIf you are using OLStats and you want to use the same feature (and no OLStats's upload feature) you will have to use:
ServerExtOL.OLRemoteStats
.
Configuration
There are a few things you can configure. Most important is to set the PostURL.[ServerExt.RStatsLink] BufferSize=2048 PostURL=http://location.to/RemoteLogDump.php fRetryDelay=30 SecretName=secret SecretValue=MySecret
- BufferSize
- The stats data will be send when it reaches this size (in bytes). This is used to reduce traffic. You don't want to set this to high because, but too low isn't very good too. A nice size would be 10% of the average log size. A value of 10000 would be too high. If you experience server lag when the stats are uploaded you might want to reduce the buffer size.
- PostURL
- This is the URL to post the data to. The script must return a HTTP 200 code or otherwise the internal caching will be triggered.
- fRetryDelay
- Number of seconds between retries. When posting of the data fails (e.g. HTTP code other than 200) it will try to repost it after this delay.
- SecretName and SecretValue
- This combination will be added to the post data. You can use this to validate the POST data in the script, like a password.
Usage
The data posted will have the following field:- serverHost
- the IP of the host (note, this can be an internal IP)
- serverName
- the name of the server
- serverPort
- the server's listen port
- gameDateTime
- The time this match started, you can use this to distinguish matches from the same server.
The date will be in the following format:DayName, Day MonthName Year Hour:Minute:Second
.
For example:Fri, 01 Oct 2004 11:51:37
- sequence
- The sequence number, this will be incremented for every post. You can use this to validate the data received to be in order. The first value is 0
- "SecretName"
- with as value "SecretValue"
- stats
- The stats data AS IS. Just like the log file usualy contains.
Help/ServerExt/RemoteLogDump.php
Reserved slots
This add-on allows you to add reserved slots. Players with the correct login details can still enter a server that is at capicity.This add-on replaces the AccessControl (both the single admin and multiple admin system are supported), so this mod doesn't work with other mods that replace the AccessControl.
Installation
If you are using the single admin system you will have to change the following setting:[Engine.GameInfo] AccessControlClass=ServerExt.ReservedSlotsIf you are using the multiple admin system (xAdmin) you will have to change it to:
[Engine.GameInfo] AccessControlClass=ServerExt.ReservedSlotsIni
Configuration
The reserved slots can be configured via the WebAdmin. A new page is added to the main list, this page allows you to edit the reserved slots. The other settings might be available via the "defaults" page.But you can also change the settings directly in the UT2004.ini file:
[ServerExt.SlotManager] AbsoluteMaxPlayers=0 AbsoluteMaxSpectators=0 Slots=(Data="12345678901234567890123456789012",Type=ST_Hash,specOnly=False,Method=SOM_Expand) Slots=(Data="192.168.*",Type=ST_IP,specOnly=False,Method=SOM_KickRandom) ...
- AbsoluteMaxPlayers
- This is the absolute maximum limit for players, the player count will never increase more than this value. If this value is zero or less there won't be a limit
- AbsoluteMaxSpectators
- Same as AbsoluteMaxPlayers but for spectators
- Slots
- This is a list of reserved slots. You can have an unlimited number of slot configuration. Each entry has the following fields:
- data
- This contains the information to check, the format depends on the type. You can use the following wildcards: * = zero or many characters, ? = one character
- type
- This is the type of the slot, it set what information to check.
- ST_IP - IP address
- ST_Hash - CDKey hash
- ST_Nick - Requested nick name
- ST_Password - The password entered on the connect url (?password=[somepassword])
- ST_Options - Match with the connect url. This can be usefull to keep the check comepletely secret. For example a the data contains "*MySecret=URLOption*", if the player joins the server with: ip.to.server?name=MyNick?MySecret=URLOption (or similar) it will match.
- specOnly
- if set to True this slot is for spectators only
- method
- The method to use to make room for this player.
- SOM_Expand - increase the max limit (adviced method)
- SOM_KickRandom - use a random kick method
- SOM_KickWorst - kick the player with the lowest score/death ration
- SOM_KickBest - kick the player with the highest score/death ration
- SOM_KickOldest - kick the player that been the longest on the server
- SOM_KickNewest - kick the player that joined last
[ServerExt.ReservedSlots] SlotManagerClasses=ServerExt.SlotManager SlotManagerClasses=MyExtentions.MySlotManager ...Note: if you installed the ReservedSlotsIni as AccessControl it should be the section "[ServerExt.ReservedSlotsIni]"
Information on writing a SlotManager can be found in the source code of ServerExt.
Alternative config file
To change the config file used by ReservedSlots, ReservedSlotsIni and SlotManager you have to specify the following option on your commandline:-class=myini.ini
. For ReservedSlots this would be for example:
ucc server dm-mymap?game=xgame.xteamgame?.... ini=server.ini log=server.log -ReservedSlots=MyPolicies.iniChanging the configuration file for ReservedSlots and ReservedSlotsIni will also save the IP and CDKey Hash Policies in that new configuration file.
ServQuery
ServQuery is a replacement for the default GameSpy query protocol that comes with UT2004. It adds quite some additional information, like team info, more detailed server information. And even the map list can be retrieved.For information about how to query a server using this interface refer to this UnrealWiki page. There are some tools that use the extended features of ServQuery, these tools incluse: UT2Monitor and UT Stats DB.
The following queries are added:
\about\
Returns about information, you can use this to check if a server has ServQuery installed, and what version.Reply:
\about\ServQuery <version>\author\Michiel 'El Muerte' Hendriks\authoremail\elmuerte@drunksnipers.com\HighestRequestCount\<count>
\bots\
Return information about the bots on the serverReply for each bot:
\bot_<id>\<bot name>\ping_<id>\<fake bot ping, if any>
\gamestatus\
Returns additional status of the current gameReply:
\elapsedtime\<elapsed time of the game>\timeseconds\<seconds the game is active>\starttime\<time the game started at>\overtime\<true if in overtime>\gamewaiting\<true if waiting to start>\nextmap\<next map>\
\playerhashes_???\
Returns the Player ID hashes, the ??? in the query is the password as set in the configuration to protect this queryReply for each player:
\phname_<id>\<player name>\phash_<id>\<player id hash>\phip_<id>\<player IP>\
\maplist\
Returns the current maplist in rotationReply for each map:
\maplist_<id>\<map name>\
\spectators\
Returns information about the connected spectators, if any.Reply for each spectator:
\spectator_<id>\<name>\specping_<id>\<spectator's ping>\
\teams\
Returns information about the teams, if it's a team gameReply for each team:
\team_<id>\<team name>\score_<id>\<team score>\size_<id>\<number of team members>\
Installation
AddServerExt.SQMSUplink
to the Server Actors list in your system configuration
[Engine.GameEngine] ServerActors=ServerExt.SQMSUplinkAnd make sure you remove the Server Actor
IpDrv.MasterServerUplink
Configuration
UT2004.ini
[ServerExt.ServQuery] bVerbose=false sReplyTo="TASGMEBH" ePType=PT_None iTimeframe=60 iMaxQueryPerFrame=180 iMaxQueryPerHostPerFrame=10 sPassword=
- bVerbose
- Set to true to increase the verbosity, this is only used when the flood propection is used
- sReplyTo
- Defines the extended queries ServQuery will respond to. It can contain the following values:
A
\about\ B
\bots\ E
\echo\ G
\gamestatus\ H
\playerhashes_???\ M
\maplist\ S
\spectators\ T
\teams\ - ePType
- Query flood protection. When this value is changed to anything other than PT_None a basic flood protection is enabled. When a set threshhold is reached ServQuery will not respond to queries for the rest of the time frame. Enabling flood protection generates a slight preformance decrease. The following values are allowed:
PT_None
none PT_PerFrame
maximum queries in total per frame PT_HostPerFrame
maximum queries per host per frame PT_Both
use both total maximum and per host - iTimeframe
- The length (in seconds) of a time frame.
- iMaxQueryPerFrame
- The threshold for PT_PerFrame
- iMaxQueryPerHostPerFrame
- The threshold for PT_HostPerFrame
- sPassword
- The secret string to get the player hashes, should be included in the query: \playerhashes_YOURPASSWORD\
Stats chat log
The standard stats logging that comes with UT2004 does not log the chats to the log file. This addon will enable chat logging into the stats log file. It will only log chats to the local log and does not disrupt the global logging. The logging is compatible with the old LocalLog and LocalStats chat logging.Installation
AddServerExt.StatsChatLog
to the Server Actors list in your system configuration
[Engine.GameEngine] ServerActors=ServerExt.StatsChatLog
Configuration
No configuration requiredRSS Feed Mutator
The RSS Feed mutator is a replacement for the ServerAdsSE server addon for UT2003. It has the same functionality, with the major exception that it will retrieve the content from so called RSS Feeds.A lot of sites and portal software provide a way to syndicate news via RSS files. This mutator allows you do display this news in the UT2004 game.
Installation
The mutator can either be installed as Mutator or as Server Actor.When installed as Server Actor you won't have the "mutate" functionality, and it won't show up in the mutator listing.
There are two versions of this mutator available, one stores it's configuration in the UT2004.ini (system) file:
ServerExt.MutRSS
and the other stores it's configuration in the RSS.ini files: ServerExt.MutRSSCentral
. If you run multiple servers and want the same configuration for all servers use the
ServerExt.MutRSSCentral
version.If you want to install this mutator the normal way (as a mutator) at it to the mutator list of your commandline:
?mutator=ServerExt.MutRSS
If you want to install it as a Server Actor add
ServerExt.MutRSS
to the server actor list in the server configuration (UT2004.ini):
[Engine.GameEngine] ServerActors=ServerExt.MutRSSThis mutator features a client side RSS Feed browser (only when installed as a mutator).
Configuration
Mutator configuration
If you useMutRSS
this configuration should go in the server's configuration (UT2004.ini), if you use MutRSSCentral
it should be in RSS.iniMost of the configuration can also be set via the WebAdmin: defaults -> RSS Feeds
[ServerExt.MutRSS] bEnabled=true bAnnounce=true sExlusiveFeeds= bBroadcastEnabled=true fBroadcastDelay=60 bInitialBroadcast=false BroadcastMethod=BM_Sequential iBroadcastMessages=2 iGroupSize=1 sBroadcastFormat="%title% [%ftitle%]" bInteractive=true bBrowserEnabled=true bUpdateEnabled=true iDefUpdateInterval=45
- bEnabled
- Global switch to enable/disable the mutator
- bAnnounce
- announce to the masterserver and clients that we are running this mutator
- sExlusiveFeeds
- Comma seperated list of RSS Feed names to use, leave blank to use all enabled RSS feeds
- bBroadcastEnabled
- If true the items in the RSS feeds will be broadcasted
- fBroadcastDelay
- the time, in seconds, between broadcasts
- bInitialBroadcast
- broadcast the first entry when the map has finished loading, usualy nobody has connect by then
- BroadcastMethod
- The method of broadcasting
BM_Linear
display the lines in a row BM_Random
display random lines from all feeds BM_RandomFeed
display random lines from a single (random) feed, every broadcast BM_Sequential
display lines from feeds in a row (feed 1, line 1; feed 2 line 1; feed 3 line 1; feed 1 line 2; ...) - iBroadcastMessages
- Number of groups of message to display per broadcast
- iGroupSize
- The number of lines in a group.
iGroupSize=1 means only one line at the time, a group size of n displays the the first min(n, length) entries starting from the selected index. The total number of lines displayed is: iBroadcastMessages * iGroupSize. When using BM_Linear you get the same result for iBroadcastMessages=1 ; iGroupSize=2 and iBroadcastMessages=2 ; iGroupSize=1 - sBroadcastFormat
- The format of the lines broadcasted. You can use the following replacements
%title%
the title of the message %link%
the link of the message %desc%
the content/description of the message, if any %no%
the index of the message in the feed %fno%
the index of the feed %ftitle%
the title of the feed %flink%
the link of the feed %fdesc%
the description of the feed - bInteractive
- If set to true the "mutate rss" console commands can be used (only when installed as mutator)
- bBrowserEnabled
- If set to true players can open the RSS Feed Browser ("mutate rss browser")
- bUpdateEnabled
- Should the mutator check for updates of the RSS Feed on start up?
- iDefUpdateInterval
- The default update interval of new RSS Feeds
RSS Feed configuration
RSS Feeds can also be configured via the WebAdmin, using the "RSS Feeds" sub page next to the "current" and "default" links.All RSS Feeds are saved in the RSS.ini file. You can virtually have as many RSS Feeds as you want. Each feed has it's own configuration section. Each section starts with:
[<feed_name> RSSFeedRecord]Where <feed_name> is a unique name of the feed. You may not use spaces in this name. However, this name will never be used when displaying information on screen (only in log files you will see this name again).
Each feed has the following user configurable options:
- rssHost
- The actual name of the feed. This will be used as fallback when it didn't receive the real name from the RSS feed.
- rssLocation
- The location to the RSS file
- rssEnabled
- True if this feed is enabled. Disabled feeds won't be used during broadcasting or updating.
- rssUpdateInterval
- Number of minutes between updates, don't set this too low. 45 minutes is a nice value. If this value is 0 the feed will never be updated, usefull for feeds that are not updated from a weblocation
- TextColor
- The color to use when showing the entries of this feed.
Format:(R=0,G=255,B=255,A=255)
- LastUpdate
- UNIX timestamp of the last update of the feed
- ChannelTitle
- Real title of the RSS Feed "channel"
- ChannelDescription
- Description of this channel
- ChannelLink
- Link to the homepage of this channel
- Entries
- These are the entries received from the RSS Feed file
It has the following format:Entries=(Title=<entry title>,Link=<entry link>,Desc=<entry description>)
Local RSS Feed configuration
When you host multiple servers from the same location but with different admins running the servers (normal GISP concept). You might want to store the RSS Feed Configuration to the server's configuration file.To set this up you need to add the following to the configuration of MutRSS
[ServerExt.MutRSS] RSSFeedRecordClassName=%clientpackage%.LocalRSSFeedRecord%clientpackage% is automatically renamed to the Client Side package for this release.
Usage
When installed as a mutator, and bInteractive set to true, users can use the RSS Feeds at their request via the "mutate" command.All commands start with
mutate rss
, after which the following commands are accepted:
help |
shows a help overview |
browser |
show client side browser, if it's enabled |
list |
show feed list |
show n [m] |
show m items from feed #n, m is 5 by default |
Admin commands | |
start |
start the mutator, when it's disabled |
stop |
stop the mutator |
update n |
force an update on RSS feed #n |
enable n |
enable RSS feed #n |
disable n |
disable RSS feed #n |
remove n |
remove RSS feed #n/td> |
add name location |
add a new RSS feed with name and download location |
ServerAdsSE like messages
To simply add lines to be broadcasted without using a remote RSS feed (like ServerAdSE used to work). Just create a feed like this:[SomeName RSSFeedRecord] rssEnabled=True rssUpdateInterval=0 ChannelTitle=Custom entries Entries=(Title="This is the first line") Entries=(Title="This is the second line") Entries=(Title="Even more lines")Note that the value of
rssUpdateInterval
is set to 0.
Team Balance mutator
The Team Balance mutator will correct the team sizes when needed. Key players/bots (flag carriers) will never be balanced.Installation
Since this is simply a mutator it works like any other mutator. The class name of this mutator isServerExt.mutTeamBalance
.
Configuration
[ServerExt.mutTeamBalance] bAnnounce=true fLingerTime=0 iSizeThreshold=2 bIgnoreWinning=false fTeamScoreThreshold=-1 bOnlyBalanceOnRequest=false fTeamBalanceDelay=5 bIgnoreReservedSlots=false bBotsBalance=true bAddBots=true iMaxBots=-1 bBotsFill=false bSwitchPlayersBack=true BalanceMethod=BM_Newest
- bAnnounce
- If true announce this mutator in the server details
- fLingerTime
- number seconds since the beginning of the game that the team balancer will remain inactive.
- iSizeThreshold
- The size difference between teams before it's considered uneven, 2 is really the minimum
- bIgnoreWinning
- If set to true, don't take into account if the smaller team is winning
- fTeamScoreThreshold
- Difference in teamscore before it's considered winning (used when checking if the smallest team is winning), should be 0 or less because with -1 the score difference has to be at least 2
- bOnlyBalanceOnRequest
- Only balance the teams when it's requested via: mutate balance
- fTeamBalanceDelay
- Number of seconds to wait befor balancing the team automatically
- bIgnoreReservedSlots
- If set to true, that entered bassed on a reserved slot (requires the Reserved Slots addon) will not be balanced. Only the reserved slots with IP, Hash or PlayerName can be checked. Reserved slots based on the password or any other part of the connect url can't be checked.
- bBotsBalance
- Balance bots first. This only works if there are bots on the server, or MinPlayers has been set.
- bAddBots
- Add bots to balance the teams first.
- iMaxBots
- The absolute maximum number of bots allowed. If set to -1 it will use the maximum recommended player count for the current map, if set to -2 it will use the minimum recommended player count (both corrected with the current player count).
- bBotsFill
- When the game isn't unbalanced, but the team sizes are not equal bots will correct the team size
- bSwitchPlayersBack
- If a user switches team when the teams are unbalanced switch the user back to his old team (when he tried to join the bigger team). If set to false it will use the standard balancing method.
- BalanceMethod
- Various balance methods:
Balance players based on their join time (BM_Oldest, BM_Newest).
Balance players based on their gaming performance, their performance is defined by their score/death ration (BM_Worst, BM_Best).
Or just randomly (BM_Random). Key players are never balanced. - bDebug
- If you add
bDebug=true
debug messages will be added to the log file. If you have problems with Team Balancer you might want to add this option to inspect the team balancer's actions.
License for LibHTTP3.5
Lesser Open Unreal Mod License Version 1, March 2004 0. Definitions "Program" the work, either in binary or source form, that has a notice attached to it stating that it has been released under this license it by the copyright holder. "Modification" a derivate of the Program or any other work based on the Program "Linking" using parts of the Program, or using parts of any other work, thus creating a direct dependency "You" the licensee "Runtime Environment" the virtual machine or operating system required to run the Program, as released by the Publisher or Creator of said runtime Environment. This includes any extentions or updates for the runtime Environment released by the Publisher or Creator. 1. License Herewith everybody is granted permission to copy and distribute verbatim copies of this document. The only restriction lies on changing the content, with the exception to translation of this license. This license applies to the Program that has been released under this license. The license only applies to copying, distribution and modification of the Program. Execution or output of the Program are not covered by this license, however the right for additional limitations on the use (that do not cover copying, distribution or modification) is granted to the copyright holder. This license is only valid when all terms in this license comply with the licenses of the dependecies of the Program. This includes the license of the possible required runtime Environment. 2. Copying and distribution You are granted to copy or distribute verbatim copies of the Program, on any medium, or in any format as you see fit. You are not limited to charging a fee for the physical act of transferring the copy, nor are you limited to provide warranty for the Program in return of a fee. Unless this is prohibited by the license of the Runtime Envoirement. Any distribution of the program should be accompanied with a verbatim copy of this license. 3. Modification You are allowed to modify the Program, or portions of it, therefore making it a derivate of the Program. You are allowed to distribute your modifications under the following conditions: - You must clearly state that it is a modification or derivate of the Program - The original copyright notice must be kept intact - The modified files must contain notices of the changed made to it - The Modification must be released under the same license as the Program - Distribution happens in compliance with section 2 4. Source The original source of the Program or Modification must be freely available on request. 5. Linking The license grants exclusive right to link with any part of the Runtime Environment, as provided by the publisher or creator of said Runtime Environment. Reusing pieces of source code available in the runtime environment in the Program is only allowed under the following terms: - the "borrowed" code is clearly marked to originate from the runtime environment, quoting the original copyright. - the following notice is added to the top of the file: "This file contains portions of code from the runtime environment." The right to "port" the Program to another runtime environment is reserved for the copyright holder. 6. NON WARRANTY THIS SOFTWARE DOES NOT COME WITH A WARRANTY OF ANY KIND, UNLESS NOTED OTHERWISE BY THE COPYRIGHT HOLDER OR WARRANTY PROVIDER. THE ENTIRE RISK OF THE PERFORMANCE AND QUALITY OF THE PROGRAM LIES WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU WILL ASSUME ALL COSTS FOR REQUIRED OF REPAIR OR CORRECTION.