Working with ini.

I know there's always someone prefering to work directly with ini instead of jumping from one menu to another. I, myself one of those. To avoid scrolling thorugh UT2004.ini, which sometimes may be very big, I moved all settings into one file - GameLogger.ini. I also ask if you will make your own plugin to use GameLogger.ini to store your settings. Now the classes and variables:

[GameLogger.MutStatsExporter] section
[GameLogger.EGameStats] section
[GameLogger.GameLoggerCTFSummary] section

[GameLogger.MutStatsExporter] section
These is the mutator settings

MyBlueTeamName
Type: string
Default value: "Blue Team"

Here you can specify the name of the blue team. If none specified, the default "Blue Team" will be used. Also, if you're setting up the 1 on 1 match, enter one of the player names here, and set bDuelMatch to true. This will enable "vs" heading even in non-team games allowing you to make a Player vs Player heading.

MyRedTeamName
Type: string
Default value: "Red Team"

The same as the above but for the red team

EGSLogFileName Type: string
Default value: "GameLog_%G_at_%A_(%Y_%M_%D_%H_%I_%S)"

Game log filename. You can use following variables in the name:
%G - will be replaced with gametype name
%N - will be replaced by server name
%A - will be replaced with level title
%Y - year
%M - month
%D - day
%H - hour
%I - minute
%W - day of week (numerical)
%S - second

ServerIP Type: string
Default value: empty ("")

Allows you to paste URL of your server to the gamelog. The user can get to your server by clicking the server name in server details. Note that this URL should be enetered without "ut2004://" prefix, for example "127.0.0.1" or "ut2004.ru". If you don't want to create link just leave the variable empty

bDuelMatch Type: boolean
Default value: false

Enables showing "vs" header even in non-team games. Designed specifically for 1-on-1 games. As player names logger takes names of the teams (MyRedTeamName and MyBlueTeamName).

bEGSUseColoredNames
Type: boolean
Default value: true

This option turns on colored names in team games, so the player name will be written in his team's color. By default true.

bEGSUseColoredTeamNames
Type: boolean
Default value: true

If this option is enabled, team names, when mentioned, will be written in appropriate color. By default is true.

EGSPlayerScoreEventsMode Type: integer
Default value: 1

This option defines the mode for logging players' score events. Values:
0 - Don't log players' score events
1 - Log all except kills
2 - Log every players' scoring event including kills

bDontLogKills
Type: boolean
Default value: false

This option disables logging usual kills with standard weapons (some ridiculos kills like killing by jumping on the victim's head, or making victim fall will be logged )

bEGSShowTeamScoreEvents
Type: boolean
Default value: True

This option enables logging of team score events like flag captures in CTF. Note that team score events aren't logged for simple frags in TDM even with this option enabled, as this produces too much team score spam in the log.

bEGSShowConnectsDisconnects
Type: boolean
Default value: True

This option enables showing players connecting and disconnecting from the game

bEGSReportWeaponPickups
Type: boolean
Default value: False

If this option is enabled, logger writes down who and when picked up a weapon and what weapon it was.

bEGSReportGameEvents
Type: boolean
Default value: True

This option enables reporting game events such as flag or bomb being picked.

bEGSReportItemPickups
Type: boolean
Default value: True

This option is defines if health, armor and other non-weapon pickups will be logged

bEGSShowSStatus
Type: boolean
Default value: True

If true, in certain cases after certain players' names will be added a tag, indicating this player's status. Currently there are 3 statuses - [ADMIN] for players who are currently logged in as administrators, [SPECTATOR] for spectators and [BOT] for bots. If the name is colored, the tag is unaffected.

bEGSUseGraphics
Type: boolean
Default value: True

If this option is true, the img tags will be used in log, and you'll have to include gameloggerimages folder when publishing logs.

bEGSExportDetailedStats
Type: boolean
Default value: False

If this option is set to true, and TTM2004 (support for UTComp is not ready yet) is used, after the player's individual stats there also will be written down his or her accuracy/damage stats.

bEnableWorldStatsLogging
Type: boolean
Default value: False

Enable if you want to send stats to the Global User Ranking system. Note that if true, those who will play on your server will have to enter their stats username and pass they use for World Stats Logging

bEGSdetailedplayerStats
Type: boolean
Default value: True

This option defines if the detailed pre-user stats is written after the scoreboard. Generally it's the same info you can see in game by pressing F3

bEGSLogTalks
Type: boolean
Default value: True

If true the players' chat will be included in the log. Note that logger doesn't log any messages after the match has ended, or before it's start if the option "Ignore warm-up events" is enabled.

bEGSRandomBGcolor
Type: boolean
Default value: False

This option works only if default HTML wrapper is used. Custom ones may ignore this option. If enabled, each match logger selects random background color for the log. When enabled, logger ignores background color set by "BackgroundColor" option.

BackgroundColor
Type: integer
Default value: 0

The number of background color in colors array. Note that if you'll provide a value out of array bounds a random color will be set.

EGSReportHeavyDamageMode
Type: integer
Default value: 1

The mode for reporting incidents when one of the players inficts heavy damage to another or himself. 0 disables logging of such events, 1 makes logger write them down only if the victim stays alive, if 2, logger will write them down always. If the provided value will be out of 0-2 range, the option will be disabled.

HDamagethreshold
Type: integer
Default value: 1

This option defines the damage threshold. If the damage is equal or greater than this threshold, it is being considered heavy, and appropriate line is written. Possible values:
0 - damage threshold is 65
1 - damage threshold is 70
2 - damage threshold is 75
3 - damage threshold is 80
4 - damage threshold is 85
5 - damage threshold is 90

bIgnoreWarmupEvents
Type: boolean
Default value: True

If true the game will ignore all events that happens before the start of the match. It also ignores UTComp warm-up.

bDontLogKills
Type: boolean
Default value: False

If true only some curious kills will be logged like kill of a typing victim or headshot or if the victim was pushed from the ledge and crashed, etc. Also suicides will be logged. Other common kills are ignored.

AvailableStatsPlugins
Type: class array
Default value: empty

This is the list of available plugins that provide additional stats. It is highly recommended that you remove plugins that won't be used or can't be loaded. This array can be filled only with subclasses of GameLoggerExtraStatsPlugin. There are two extra stats plugin, that comes with GameLogger. One is TTMStats for retrieving accuracy stats from TTM2004. If you would like to use it add

AvailableStatsPlugins=Class'GameLoggerTTM.GameLoggerTTMStats'

line to the section. Note the way class is named. Second plugin is JBStats that writes down JB-specific scoring stats - offence frags, defence frags and releases. To use this add

AvailableStatsPlugins=Class'GameLoggerJB.GameLoggerJBStats'

line to the section.

AvailableReportPlugins
Type: class array
Default value:
AvailableReportPlugins=Class'GameLogger.GameLoggerCTFSummary'
AvailableReportPlugins=Class'GameLoggerJB.GameLoggerJBReport'

This is the list of available plugins that provide additional report options. These won't load if they don't fit the gametype. JBReport allows Gamelogger to recognize Jailbreak2004 specific events, while CTF Summary provides a small summary of CTF matches.

AvailableDamagetypePlugins
Type: class array
Default value:
AvailableDamagetypePlugins=Class'GameLoggerECE.ECEDamageTypes'

This is list of plugins containing the information on some damagetypes that added with custom weapons, etc. ECEDamageTypes plugin should be removed, if you're using a server of version 3323 or earlier, or don't have ECE Bonuspack installed. It is highly recommended that you remove plugins that won't be used or can't be loaded due to the absence of required packages.


[GameLogger.EGameStats]
Now here comes the main logger class, which actually does all the stuff, manages plugins, etc. Note that nearly all settings here are being set from mutator, so it's no use changing them here. The names of the variables are very simialr, so you to check what they do just see the notes above. I'll mention here only those variables, that are not set from mutator.

myHTMLwrapperClass
Type: class
Default value: class'GameLogger.GameLoggerHTMLWrapper'

This is the class that contains nearly all code that works with HTML functions. Changing this you change the way logs looks. There's also another wrapper bundled with GameLogger which makes log look similar to UTXMP manual. To use it change the value of this variable to class'GameLogger.UTXMPManualStyledWrapper'

bTurnOff
Type: boolean
Default value: false

This completely turns off the main log. Use this if you're using GameLogger as a host for some plugin, that provides his own log, like CTF Summary.

bDebug
Type: boolean
Default value: false

This toggles the debug code in produced HTML log and UT2004.log. If something works wrong, enable this and check the UT2004.log, or source code if HTML log to see what event causes the problem.

bSortOffOnlySpecs
Type boolean
Default value: true

Used to sort off controllers with bOnlySpectator=true. Used to remove WebAdmin and DemoRecSpectator and other spectators from the endgame scoretable. If want them to appear - set the value to false.

bColoredMessages
Type boolean
Default value: true

Toggles writing different types of events in different colors for ease of recognizing them.

[GameLoggerCTFSummary]
This are the settings of CTF summary plugin. they're quite few

SummaryFileName
Type: string
Default value: SummaryOf_%G_at_%A_(%Y_%M_%D_%H_%I_%S)

This is the summary filename. You can use following variables in the name:
%G - will be replaced with gametype name
%N - will be replaced by server name
%A - will be replaced with level title
%Y - year
%M - month
%D - day
%H - hour
%I - minute
%W - day of week (numerical)
%S - second

HeadingsArray
Type: string array
Default value:
HeadingsArray=(Heading="%w shuts-out %l.",type=0)
HeadingsArray=(Heading="%l suffers humiliating defeat from %w.",type=0)
HeadingsArray=(Heading="%w hammers %l.",type=0)
HeadingsArray=(Heading="%l can't score against %w.",type=0)
HeadingsArray=(Heading="%w wins match against %l with a solid lead.",type=1)
HeadingsArray=(Heading="%w masterfully defeats %l.",type=1)
HeadingsArray=(Heading="%w defeats %l in a hard-fought battle.",type=2)
HeadingsArray=(Heading="%w wins over %l by one %p.",type=2)
HeadingsArray=(Heading="%w wins over %l by one %p in the overtime.",type=4)
HeadingsArray=(Heading="Capture in the overtime brings %w the victory over %l.",type=4)
HeadingsArray=(Heading="%w defeats %l.",type=6)
HeadingsArray=(Heading="%w is victorious over %l.",type=6)
HeadingsArray=(Heading="%w wins match against %l.",type=6)
HeadingsArray=(Heading="%l losts match against %w.",type=6)
HeadingsArray=(Heading="One %p brings %w the victory over %l.",type=2)
HeadingsArray=(Heading="%c's %p brings %w the victory over %l.",type=2)
HeadingsArray=(Heading="%c brings %w the victory over %l.",type=2)
HeadingsArray=(Heading="%w vs %l: both teams unable to score.",type=8)
HeadingsArray=(Heading="%w and %l couldn't find a winner.",type=7)
HeadingsArray=(Heading="No %ps, no assists as %w tied the match against %l.",type=8)
HeadingsArray=(Heading="%c's %p brings %w a draw in match against %l.",type=7)
HeadingsArray=(Heading="A rare draw match.",type=7)
HeadingsArray=(Heading="%c's %p brings %w the victory over %l in OT.",type=4)
HeadingsArray=(Heading="Both teams make %o %ps total as %w win over %l.",type=9)
HeadingsArray=(Heading="An all-out-attack game brings %w the victory over %l.",type=9)
HeadingsArray=(Heading="%c's %p brings %w the victory over %l in OT.",type=9)

This are the headings used for the summary depending on the endgame score. To see more on the headings, check the CTF-Summary plugin readme.

bDebug
Type: boolean
Default value: false
Toggles debug code