El Muerte's UT2004 Creations
ServerExt
ServerExt
Copyright © 2004 Michiel "El Muerte" Hendriks 

ServerExt

ServerExt is a package containing extentions for UT2004 servers. It consist out of a couple of independed components: More components will be added in the future.
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.

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 v101

Changes since v100

General Installation

Copy the following files to the System directory of your UT2004 servers: Remove the old ServerExtClient.u file from you system and configuration.

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

Add ServerExt.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]
bFriendlyMessage=false
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"
bFriendlyMessage
Display a friendly message window when a player gets removed from the server.
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
Not all characters are supported in the filename, for example '.', these will be translated to an underscore '_'
The log file generated will start with a line with the date the log started: --- Log started on 2003/2/28 21:17:40 After that you will get the log files in there field (seperated by tabs) time tag playername message Tag is one of the following: CHAT, TEAMCHAT, SPAM, TEAMSPAM, MUTE, TEAMMUTE The lines are uncensored (the bad words are not filtered)

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

Add ServerExt.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:
%Pserver port
%Nserver name
%Pyear
%Mmonth
%Dday
%Wday of the week
%Hhour
%Iminute
%Ssecond

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 server
Reply for each bot: \bot_<id>\<bot name>\ping_<id>\<fake bot ping, if any>

\gamestatus\

Returns additional status of the current game
Reply: \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 query
Reply for each player: \phname_<id>\<player name>\phash_<id>\<player id hash>\phip_<id>\<player IP>\

\maplist\

Returns the current maplist in rotation
Reply 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 game
Reply for each team: \team_<id>\<team name>\score_<id>\<team score>\size_<id>\<number of team members>\

Installation

Add ServerExt.SQMSUplink to the Server Actors list in your system configuration
[Engine.GameEngine]
ServerActors=ServerExt.SQMSUplink
And 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_Nonenone
PT_PerFramemaximum queries in total per frame
PT_HostPerFramemaximum queries per host per frame
PT_Bothuse 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

Add ServerExt.StatsChatLog to the Server Actors list in your system configuration
[Engine.GameEngine]
ServerActors=ServerExt.StatsChatLog

Configuration

No configuration required

RSS 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.MutRSS
This mutator features a client side RSS Feed browser (only when installed as a mutator).

Configuration

Mutator configuration

If you use MutRSS this configuration should go in the server's configuration (UT2004.ini), if you use MutRSSCentral it should be in RSS.ini
Most of the configuration can also be set via the WebAdmin: defaults -> RSS Feeds
[ServerExt.MutRSS]
bEnabled=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
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)
After a feed has been updated the following additional entries will be saved to the RSS.ini file (for each feed). This information comes directly from the RSS files and should not be modified.
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>)
The package comes with a preconfigured RSS.ini file that contains configuration (disabled by default) for RSS feeds from:

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

License for LibHTTP2

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.