Press "Enter" to skip to content

VSP Stats Processor for Enemy Territory

VSP Stats Processor stands for Voodoo Stats Processor created in 2004 by Krillin. It’s a web script that compiles the log files from variety of games into a nice-looking website with all the stats from a particular server and its game.

It requires a basic webserver to work, including PHP and MySQL database, you just have to download the script and upload the files using the FTP and follow the instrustions contained in the readme.txt file. Here’s an example of how the website works with this script:

You can find the download in here, it’s been updated in 2014:,135.0.html

And below are the readme files.

vsp stats processor – vsp(c) 2004-2005 by myrddin(myrddin8 <AT> gmail <DOT> com)

vsp stats processor is a multi game – log analyzer/stats generator/log parser.
It can process log files from several games including Quake 3 Arena (q3a),
Halflife 1, 2, Counter Strike Source (hl), Wolfenstein: Enemy Territory (wet),
Return to Castle Wolfenstein (rtcw), Call Of Duty, COD: United Offensive (cod),
Medal of Honor Allied Assault, MOHAA: Spearhead, MOHAA: BreakThrough (moh),
Soldier of Fortune 2 (sof2), etc. It reads the log files generated by a game
and displays various game statistics. vsp also supports both server logs (ex:-
games.log for Q3A) and client logs (ex:- qconsole.log for Q3A).


Lead Programming/Design : myrddin (myrddin8 <AT> gmail <DOT> com)
Programming : react
Hosting : gouki
Website :
Irc : #vsp on


Installation and Usage Instructions:

0. requirements

– php ( – version 4
– mysql (
– a php compatible web server (
– a web browser (

vsp uses php and mysql to store and retrieve stats, so you need to
install both php and mysql on your server/system.
You may also need a webserver that is compatible with php if you dont
already have one. Apache is a good one and is the recommended web server.
php, mysql and apache can be downloaded and used for free.
Download the latest version of the php, mysql & apache(or another webserver)

php can be downloaded from
mysql can be downloaded from
apache can be downloaded from
You can also get a free webserver from , which may be
easier to setup than apache.

Install the webserver first. In windows, the PHP setup program can
automatically detect the webserver and configure it accordingly.
Install mysql and php on your system.

Check the installation instructions that comes with php, mysql and apache,
for further instructions. is a good resource as well.

It is recommended that you run php as a module from apache.

1. mysql setup

If you already have a mysql username/password/hostname/database set up,
then you may skip this step. Usually your website host will provide you
with this information.

a. Read the section (section 5?) that deals with MySQL Database
Administration from the mysql manual which can be found C:/mysql/Docs or
online at or
This section deals with user priveleges and tells you how to make mysql
more secure and add a new user etc. You can simplify this process using
an application called MySQL Control Center which can be found at

You need to setup a user AND a password in mysql. If you are planning
to run mysql as user ‘root’ then you have to set up a password for user
‘root’ if it isn’t already setup.

The following is from the mysql documentation:-

The default privileges on Windows give all local users full privileges
to all databases without specifying a password. To make MySQL more
secure, you should set a password for at least the root accounts.
You should also remove the row in the mysql.user table that has
Host=’localhost’ and User=”. This account allows anonymous access
but has full privileges, so removing it improves security.

The following example shows how to remove the anonymous-user account
that has all privileges, and then assigns a password to the root

C:\> C:\mysql\bin\mysql -u root mysql
mysql> DELETE FROM user WHERE Host=’localhost’ AND User=”;
mysql> QUIT
C:\> C:\mysql\bin\mysqladmin -u root password “newpwd”
C:\> C:\mysql\bin\mysqladmin -u root -h host_name password “newpwd”

Replace “newpwd” with the actual root password that you want to use.
The double quotes are not always necessary, but they are helpful if
the password contains spaces or other characters that are special
to your command interpreter. In the second mysqladmin command,
replace host_name with the name of the server host.

If you are running mysql as root, you *MUST* have a root password set up
as indicated above

Test to see if you can load up mysql with the username and the password
you have set up. Open up a command prompt and do the following:

mysql -u Username -pPassword

Note: Username = your username
Password = your password
There is no space between the -p and your password

If it goes to the mysql> prompt, mysql is properly set up on your system.
Quit mysql by typing QUIT in the mysql> prompt and that should return to
the command prompt.

mysql> QUIT

Close the command prompt window.

Further help on how to set up mysql can be found at

2. php setup

If you already have php set up on your host then you may skip this step.

a. The following step is not required but it is recommended to make things
easier. If you dont do the following, then you have to type the full
php path whenever you want to execute vsp. (i.e. Instead of typing
php vsp.php, you have to type C:/php/php vsp.php.

Add the php command path (c:/php/ is the default) to your
environment variable PATH.
In windows 2000/XP you can specify the PATH in
control panel->
environment variables->
user variables->
In win9x versions, you can specify the PATH in autoexec.bat:

i.e, when you type php -v from the command prompt (from any directory),
it should display the php version you have installed.
Test it! Open up a command prompt window, and from C:\ or any other
directory, type php -v and press enter. It should display your php version.

b. Make sure you have configured your webserver to intercept .php files.
This should automatically be done by the php installation program. Read
the ReadMe file that comes with php. You may have to configure some things
manually depending on the webserver you have on your system.

***WARNING*** If php is not set up properly, your username/password for
mysql may be compromised!

There is a file called test.php in this distribution under the pub
sub-folder. After setting up php, start your webserver and configure it
to give public access to the pub folder. Then load up the test.php file
using your internet browser. If php is set up properly, you should see
a whole lot of tables with variables and its values. If instead you see a
line saying that “php is not set up properly” followed by “phpinfo();”,
then php is not set up properly! Once you confirm php is working properly,
you can and should delete the test.php file from your system (more secure).

Further help on how to set up php can be found at

3. vsp setup

If you installed mysql, php, apache or another webserver or made any
changes to your system configuration, its a good idea to reboot your
system before you continue any further.

a.  i) Download the vsp core zip file and extract it to a folder of your choice.

ii) Download all the game media zip files that you want vsp to work with and
extract to the same folder you chose in step (3a.i), overwriting existing
files if necessary. If there is no media file for the game you are
looking for, you can ignore this step.

b. Open up pub/configs/cfg-default.php file using a text editor and
specify your mysql database username, password and other preferences.
Further decription of what each setting in the cfg file mean, can be
found in cfg-default.php itself. Before you start parsing the logs, you
must make sure that you set the variable $cfg[‘game’][‘name’] in the config
file properly. Read the comments beside that variable in cfg-default.php

c. To analyze a log file and generate stats

There are two available methods to update your stats:-

i) If you have command line shell access to server where you installed vsp…

Lets say you want to generate stats from a log file for Quake 3 Arena and
your games.log file is in c:/games/quake iii arena/osp/
To analyze this file, go to the directory where you unzipped vsp and type:

php vsp.php -l q3a-osp “c:/games/quake iii arena/osp/games.log”

ii) If you dont have command line shell access…

You have to run vsp.php using your web browser ( Firefox is good – :D ).
Inorder to run vsp via your web browser, you will require a password.
There is a file called “” in the main vsp folder.
You must edit this file using a text editor and choose a password that
is atleast six character long to enable web access to vsp.php
Make sure you upload the edited “” to the web server.

Lets say you want to generate stats from a Quake 3 Arena log file called
games.log that you transferred to the vsp folder on the server

To analyze this file, load
(ofcourse this url and path will depend on your website host and wherever
you uploaded VSP to on the web server) in your web browser, then
-l q3a-osp “games.log”
into the first text box following the phrase “php vsp.php”.
Make sure to enter the password below as well.
Hit the “Submit (Process Stats)” button.

d. If you want to access your stats from the www, give public access to the
pub/themes, pub/games and pub/images subfolder including its sub-directories
using your webserver. NOTE:- if you still get access problems try giving
public access to the entire pub/ folder.

The default theme that php uses is pub/themes/bismarck/index.php
index.php is the main stats webpage. If no config file is specified,
index.php reads cfg-default.php and uses the information in that to access
the mysql stats database. You can make several different php config files
with different database settings and other preferences and tell index.php
to read your preferences from the specified config file. All the config
files should be put in pub/configs/ folder

ex: If you have a config file called cfg-myconfig.php with your
preferences, then you can tell index.php to read from that config
file by accessing:


You can customize the theme further by editing pub/themes/bismarck/settings.php

NOTE: In order to display all the options and games that vsp supports, type:

php vsp.php

Usage: php vsp.php [options] [-p parserOptions] [logFilename]


-c                 specify config file (must be in pub/configs/)

-l                 specify logType (gamecode-gametype)


client           Client Logs (Any game)
cod              Call Of Duty, United Offensive
hl               HalfLife 1 & 2, CS:Source etc.
moh              Medal Of Honor AA,SH,BT,PA? etc.
q3a              Quake 3 Arena
q3a-battle       Quake 3 Arena BattleMod
q3a-cpma         Quake 3 Arena CPMA (Promode)
q3a-freeze       Quake 3 Arena (U)FreezeTag etc.
q3a-lrctf        Quake 3 Arena Lokis Revenge CTF
q3a-osp          Quake 3 Arena OSP
q3a-ra3          Quake 3 Arena Rocket Arena 3
q3a-threewave    Quake 3 Arena Threewave
q3a-ut           Quake 3 Arena UrbanTerror
q3a-xp           Quake 3 Arena Excessive Plus
rtcw             Return to Castle Wolfenstein
sof2             Soldier of Fortune 2
wet              Wolfenstein: Enemy Territory

-a                 specify action
perform a specific predefined action
*make sure this is the last option specified!*
[logFilename] is not needed if this option is used


clear_db         Clear the database in config
ie. Reset Stats

-p [parserOptions]

savestate       1
disable/enable savestate processing
(remembers previously scanned logs and events)
If this option is enabled, VSP will remember the
location in the log file where the last stats was
parsed from. So the next time VSP is run with the
savestate 1 option against the same log file, it will
start parsing the stats from the previous saved
If you want VSP to forget this save state, then you
have to delete the corresponding save state file from
the logdata/ folder. The name is in the format
Deleting that file and running VSP again with
savestate 1 option will reparse the whole log again
from the beginning. Also note that each logfile will
have a separate save state file under the logdata
folder. Do not edit/modify the savestate files! If
you dont want it, just delete it.

check ReadME or first few lines of a particular parser php for other
valid options for that particular parser

[logFilename] could be an FTP link/url. Set FTP username/password in config
[logFilename] may be a logDirectory for some games. ex:- *HalfLife*

Usage: php vsp.php [options] [-p parserOptions] [logFilename]
Example: php vsp.php -l q3a -p savestate 1 “c:/quake iii arena/games.log”

Further help on how to set up vsp can be found at


Frequently Asked Questions (F.A.Q.)

Visit for updated FAQ and additional help.



26 Mar 2005 – v0.45 (beta)

– add: -l cod: workaround for sdm mode for COD swat mod.
– fix: -l wet: In ETPRO mod, stats were logged under a different player in certain
situations. Thanks Lukey.

24 Feb 2005 – v0.44 (beta)

– fix: -p savestate 1 routine for write access check for logdata/ folder.
– fix: Game start date/time for some games/mods (ETPRO) were wrong sometimes.
– fix: Disabled q3 style color codes for MOH. There are no color codes for MOH?
– fix: suppressed some annoying warning messages.

18 Feb 2005 – v0.43 (beta)

– fix: Valid kills getting counted as team kills in Call of Duty DM gametype.
Thanks Ragnarius & Mike.

08 Feb 2005 – v0.42 (beta)

– fix: Kills not getting counted during “single team” gametypes (death match)
in some games (q3a,rtcw,wet,sof2). This bug was introduced in 0.41 when
the Call of Duty kill/teamkill issue was fixed.

04 Feb 2005 – v0.41 (beta)

– add: You can specify some basic conditions for listing of players in the main
index.php using variable $settings[‘display’][‘playerlist_conditions’]
in settings.php. ex:- setting that variable to “games>=10” will display
only players with at least 10 games played.
– add: Stat for the first killer and victim in a game.
– add: $cfg[‘ftp’][‘overwrite’] option to config for overwriting existing logs
during FTP remote download.
– add: Misc. changes / verbose messages to minimize user errors.
– fix: Valid kills getting counted as team kills in rare occasions in cod.
– fix: Disabled team assignment in MOH which was causing problems because the
logs dont output proper teams when player auto joins. This change
should fix most of the problems with wrong stats. However, team kills
cannot be detected anymore…
– fix: Team deaths getting counted in Kills/Deaths in Easiest Prey/Worst Enemy.
Thanks Lukey.
– fix: -l q3a-osp Clan Arena parsing
– fix: COD color codes.
– fix: FTP remote downloading did not ignore named pipes, sockets etc and
created duplicate files to download list. Thanks Arzka.

02 Jan 2005 – v0.40 (beta)

– add: various database and query optimization. Should result in smaller db
size and faster db access. You have to reset current stats and reparse
the logs.
– add: sortable fields in playerstat.php etc. Thanks to the DOM script by
Stuart Langridge.
– add: workaround for hl2 dm where kill lines are missing the weapon used.
– add: workaround for cod where kill lines are improperly logged with the
wrong client id. Seems to be happening in BAS gametypes only. The guid
in the damage line is also wrong but that shouldn’t affect VSP.
The workaround should work in most cases. The cod engine has to log this
properly for a complete fix.
– add: HalfLife Team scoring and Player roles,icons etc, if available.
– add: Added -n option to vsp.php. If used, vsp will not ask for confirmation
for certain actions you specify like reset database etc. ex:-
php vsp.php -n -a clear_db
will clear the database right away and will not prompt for y/n? input.
– add: more verbose messages when using FTP remote downloading of logs.
– add: misc html fine-tuning
– chg: all the skin files have been updated to be more flexible.
– chg: simplified banlist specification.
Look in pub/include/
– chg: Easiest Preys / Worst Enemies is now based on a mix of both kills (or
deaths) AND efficiency. The topmost players are first retrieved based on
highest kills (or deaths) AND that limited result is then sorted by
efficiency. This may seem to not work properly in the beginning when
there aren’t many players in the database. However, it should get better
as more games get logged. Also, you can no longer be your own
easiest prey / worst enemy.
– chg: Awards in playerstat.php is listed in a different, more readable way.
– fix: Potential security issue in vsp.php web mode.
– fix: -l hl: HalfLife pathname appearing in game type/mod in gameslist
– fix: -l hl: HalfLife player vs player actions parsed properly now.
– fix: -l hl: PreMatch events are ignored now. Log must indicate match start
with the line – World triggered “Match_Begins_Now”
– fix: Remote downloading skipped the first log in a directory. affected hl.
– fix: vsp.php errors out when log file or ftp link is specified in double
quotes in web mode. It should work with or without double quotes now.

10 Dec 2004 – v0.36 (beta)

– add: misc html fine-tuning
– add: Player quotes in playerstat.php will only show if
$settings[‘display’][‘quotes’] is set to a value other than 0.
Quotes with a number or @ symbol in it are ignored now as well.
– fix: erroneous stats when player renames and tracking by playerName. This was
quite a major bug. The bug affected the stats of all players that
interacted with the renamed player. So everyone should update to this
version for accurate stats. Hopefully its fixed now but need to test
this more.
– fix: playerName/alias not working properly. Name Search did not work sometimes
– fix: Better detection routine for vsp.php web access mode. You can also force
web mode by accessing vsp.php?mode=web
– fix: force skin to default_skin when $settings[‘display’][‘skin_selector’] is
– fix: misc html fixes

02 Dec 2004 – v0.35 (beta)

– add: a visible default award image.
– add: wet: Merged a few enemy territory weapons.
– fix: some character decoding problems in html and misc html fine-tuning
– fix: q3a-xp: Filtered out the client number and sound wav macros in chat
messages in excessive plus mod.
– fix: q3a-xp: freeze tag thaw event being counted as kill. Thanks DeeXGod.
– fix: sof2: player name colors should work properly now.

28 Nov 2004 – v0.34 (beta)

– add: Player Awards are now shown in the player profile as well.
– add: Player count in Games Stats List
– add: Better Tooltips. Thanks to the nice DOM Tooltip Library by Dan Allen.
Added option to enable/disable this feature in settings.php
– add: More workarounds for HalfLife 2, Counter Strike Source Logs. Seems the
source logs are missing more stuff than I initially thought. Hopefully,
VSP should compensate for everything now.
– add: -p savestate 1 option for HalfLife engine
If the option is enabled, vsp will remember previousely scanned logs and
will not parse them again.
– chg: -p livelog option has been renamed to -p savestate. Using livelog will
also work for now, but may be disabled in future releases. So get used to
using -p savestate 1 instead of -p livelog 1.
– chg: disabled -p backup option. No longer needed?
– chg: changed internal adodb from pub/adodb/ to pub/lib/adodb/. If you update
to this version without a clean install, then you can delete your existing
pub/adodb/ folder, if there is one. Also updated adodb to version 4.54
– fix: Improved ftp remote downloading of logs. You can now specify a directory
or a single file to download. If the ftp path supplied by the user ends
with a / or a \, then its assumed to be a directory and all the files
inside that directory will be downloaded (non-recursive). So remote
downloading of logs should work properly with games like Half life which
has separate logs for each game.
– fix: playerstats.php display problems in IE (Internet Explorer sucks!).

23 Nov 2004 – v0.33 (beta)

– add: Support for HalfLife 2, Counter Strike Source Logs. Use -l hl option.
CS Source logs are in similar format as the original HalfLife logs.
However, there are some missing entries in the logs of the source
engine, but they should be compensated for by VSP now and should work
fine. So for both the original Counter Strike and Counter Strike:Source
or any other HalfLife 1 or 2 mods, use the -l hl option.
– add: HalfLife 1 & 2 Player Tracking by Player name and GUID(steam_id/won_id)
– add: Default media for MOH.
– add: q3a accuracies in old OSP format are read properly now.
– add: q3a-osp clan arena gametype support.
You must use the -l q3a-osp option, gamename must contain osp and
g_gametype must be 5 in the InitGame: string for this to take effect.
– add: Merged a few more COD weapons and added a workaround for wrong team
assignment by COD engine in dm games (its in the damage line in the log).
– add: More display configuration options to settings.php
– chg: Removed the last few of remaining game media from the vsp core zip.
All of the game media packs has been updated as well. Some of the media
were also moved to different paths for consistency.
– fix: Award Description in Awards page not displayed when colors are disabled.
– fix: config variable was not saved when browsing through gamestat.php list

19 Nov 2004 – v0.32 (beta)

– fix: COD log parsing logic was wrong. Hopefully I got it right this time!
Thanks Dirtneck & jtripper.
– fix: q3a excessive plus accuracies for certain weapons merged properly.

18 Nov 2004 – v0.31 (beta)

– add: $settings[‘display’][‘server_info’] option to settings.php
Enable/Disable display of server info on all pages
– add: Default media for COD. Can track players by GUID now.
– fix: Improved COD parser.
– fix: Max string length in settings.php not working when colors were disabled.
– fix: Clicking on IPs in playerstat.php did not perform search.
– fix: missed some stats if playerID/name was longer than 100 characters.
– chg: All the award definitions (default-awards.php in pub/games/*) has been
updated to allow more flexibilty.

12 Nov 2004 – v0.30 (beta)

– add: Support for Call Of Duty and COD: United Offensive. Use -l cod option.
– add: Support for Medal Of Honor Allied Assault, Spearhead, Breakthrough etc?
Use -l moh option.
– add: Clicking on IPs in playerstat will perform a search.
– fix: misc. html validation problems. Thanks fjoggen.
– chg: Award image extensions are not stored in the db anymore. So, now you can
quickly change the award image to a different image format (gif,jpg,png)
without having to update the awards db again. All the award definitions
(default-awards.php in pub/games/*) has been updated.
– chg: Code clean up, merges etc. – Hopefully it didn’t break anything.

06 Nov 2004 – v0.22 (beta)

– add: Config option to enable/disable ftp passive mode for remote downloading.
You may have to enable passive mode on some ftp servers.
– add: Settings.php options to enable/disable mini gameslist and awardslist
on main page.
– add: Support for Quake 3 Arena: Excessive Plus mod. Thanks Easy for the color
codes and character translations.
– add: Support for Quake 3 Arena: CPMA mod (accuracies work properly now).
– add: SOF2 Hitbox, Damage parsing.
– chg: HitBox improved and redefined to be more flexible. You need to reset
and reparse the logs again for hitbox to work properly.
– fix: Events are categorized better in sof2 (rocmod specifically)
– fix: Stats were not counted if playerID/name was longer than 100 characters.
Capped max playerID length to 100 for now.

01 Nov 2004 – v0.21 (beta)

– fix: problems with the password routine of web access to vsp.php.
ReadME.txt has been updated with information regarding the new routine.

31 Oct 2004 – v0.20 (beta)

– add: Ability to update the stats even without shell access. Check ReadME.txt
– add: Remote downloading of logs, if log name provided is an FTP link/url.
Set the FTP username, password and download path in the config.
– add: HitBox to display player hit locations if the game log supports it.
Added support for Half life, Enemy Territory (headshots only)
– add: Half Life media and definitions. Thanks Krillin!
– add: Various new entries to the config (pub/configs/cfg-default.php) and to
the theme settings (pub/themes/bismarck/settings.php).
– add: Random quotes on main page. Check settings.php
– add: A spiffy new avalanche logo and a couple more skins (camo & swat),
courtesy of frostbite.
I have also included some other skins i found on various sites. If the
authors of these skins have a problem with this, please email me and
I will remove it in the next release.
– chg: Changed some vsp settings so its less user error prone!
ex:- you don’t have to set up the adodb_path in the cfg anymore, unless
you want to use your own path for it.
– chg: Bismarck theme uses slightly altered avalanche skin by default now.
– fix: Fixed “cannot establish database connection” problems when using newer
PHP versions. If you got that error before even if everything on your
end was right, try again with this version.
– fix: q3a 3wave damage given/taken > 9999 should work now.
– fix: lots of misc formatting of theme for better display.

23 Jun 2004 – v0.10 (beta)

– add: Various improvements to the Half Life Parser.
Partial Accuracy info added
– fix: Possible bug with Player renaming in HalfLife.
– fix: Newer Halflife logging format caused vsp to not work properly and
display the game is empty message.
It was caused by STEAM_ID_PENDING in the connect line
– fix: GUID searches in index.php
Show complete GUIDs etc in playerstat etc on mouse hover

16 Jun 2004 – v0.09 (beta)

– add: -l q3a-battle option for Q3A BattleMod. You can track by ip, guid now.
– add: -l q3a-lrctf option for Q3A Loki’s Revenge CTF.
– fix: Player Name searches with HalfLife should work now.
– fix: VSP did not work properly if script was not run from its own folder.
Cron jobs, Award updates etc should work properly now even if VSP is
not run from its folder.

25 Apr 2004 – v0.08 (beta)

– add: sof2 media. Thanks rc!
– add: $cfg[‘parser’][‘use_most_used_playerName’] in config to use the
most used playerName OR newest playerName as primary playerName
– add: -l client option for client logs – qconsole.log
(currently only supports default q3a and osp/threewave events).
If you want more games to be added, post a request and link to a sample
log in the forums.
– add: wet – ETPRO log files should work now. You can track players by GUID
and IP as well.
– fix: misc. fixes and improvements in default theme php files.
– fix: playerName and I.P. search fixed and improved.
– fix: -l wet option should work now without erroring out.
– fix: custom config files were not working when called from default theme.

13 Apr 2004 – v0.07 (beta)

– add: $settings[‘display’][‘default_sort’] to settings.php. Can make the
default sort to fields other than skill now.
– add: search by GUID, if available.
– add: -l q3a-ra3 option for the newer Rocket Arena 3 versions (post v1.5).
You can track ra3 stats by playerName and ip for now. Tracking by GUID
does not work. Game Time cannot be properly detected from the games.log
Also, its a good idea to disable gamestats from displaying
for ra3. It doesnt make much sense since teams in ra3 keeps changing
a lot.
Stats from the ra3.db file like accuracy and such are not supported yet
because i dont think its possible to accurately match up the games.log
with the stats in there. So ask the ra3 author to change the way the
stats are stored in the ra3.db as I cannot do much.
The way it is right now is either you use the stats in games.log OR you
use the one in ra3.db. And since ra3.db doesnt have enough stats, I chose
to use the games.log stats unless ofcourse they make it so i can match
them up properly.
Also, in the future if you want to retrieve additional stats from the
ra3.db file, then you have to install and load php_sqlite.dll extension
from your php.ini
You can get the dll for windows from
If you are using linux (or if the above link failed for windows)
visit and
for more info on how to install it.
For windows, basically you download the dll and put it in your
php extensions directory ( for example:- c:/php/extensions/ )
Then, in your php.ini specify:-
extension_dir = “c:/php/extensions/”
– add: vsp version number and last update time displayed in default theme.
– add: -l wet option for Wolfenstein: Enemy Territory. Currently only
processes the default ET log entries. If anyone has log files that
uses the ETPRO mod, send them to me via the forums.
– add: $settings[‘display’][‘color_names’] to default theme settings.php
enable/disable colors in player names etc.
– add: display KillChart for 1v1s and FFAs as well.
– fix: -l q3a-threewave, ng = nailgun in accuracy stats. You need to rebuild
the db again for older entries to be considered as the same.
– fix: role/icon images not displaying properly.
– fix: misc. problems in default theme php files.
– fix: Awards and Skill definitions for games other than q3a were broken

31 Mar 2004 – v0.06 (beta)

– add: $cfg[‘parser’][‘trackID’] option in cfg. You can now track players using
their playerName, guid or ip (if available for that mod/game). If you
change this option to use guid or ip, make sure that info gets logged in
the logfile *AND* VSP has support for it, otherwise VSP will completely
ignore the current game since it cannot find the ID for a player.
$cfg[‘parser’][‘trackID’] = ‘playerName’ is the default and that should
work with any game/mod.
– add: -l q3a-freeze option to count all the MOD_UNKNOWN Kill: events as THAW
instead of TeamKill for Freeze Tag and other such variants.
– add: -l q3a-ut option, partial support for Quake 3 Urban Terror Logs.
I dont know what the line:-
47:14 Flag: 8 1: team_CTF_blueflag
means in the log. I’m guessing thats how CTF events are logged. One
of them is probably the client id of the player and the other one
probably is the CTF event ID (capture,touch etc). Well, if
anyone knows what the 8 and 1 in the above line means, let me know
– add: q3a-threewave, q3a-ut guid tracking, although threewave seems to log two
different guids per cd key?
– chg: playerName search now searches through all the aliases as well.

24 Mar 2004 – v0.05 (beta)

– add: $cfg[‘parser’][‘use_original_playerID’] option in cfg to specify which
playerID to use as the primary ID (originalPlayerID or currentPlayerID)
– chg: Display descriptive weapon names instead of weapon IDs in Awards
– chg: Games that are not yet defined by vsp will use pub/games/default/
– chg: Changed all the database/table name references to use lower case only
inorder to avoid windows/unix portability issues
– chg: sof2: the Warmup: line doesn’t reset the game and consider it invalid.
If this is not right, let me know.
– fix: Display weapon accuracy even if there are no kills with that weapon
– fix: Award images are not fixed to be in images folder in awardset

17 Mar 2004 – v0.04 (beta)

– fix: Awards not updating properly when user defined variables are used.

16 Mar 2004 – v0.03 (beta)

– chg: Rewrote live log processing routines.
New routines will not modify the log file at all. Instead it
creates save states for the logfiles that you process in the
logdata/ folder. As of now, if VSP is run with the option
-p livelog 1
it will remember the location in the log file where the last stats
was parsed from. If you want VSP to forget this save state, then you
have to delete the corresponding save state file from the logdata/
folder. The name is in the format savestate_<specialFormOfLogfileName>.
Deleting that file and running vsp again with livelog 1 option will
reparse the whole log again from the beginning. Also note that each
logfile will have a separate save state file under the logdata folder.
Do not edit/modify the savestate files! If you dont want it, just
delete it. This also means the backuppath option is pretty much pointless
now. The backuppath option does not do anything any more and is disabled
for q3 engine based games.
– fix: Display of wrong playerNames in playerstats listings.
– fix: Misc. bugs :)

12 Mar 2004 – v0.02 (beta)

– add: More Awards to default q3 award definition.
– add: Ban List for Players.
Ignores all events by and against players listed in
pub/include/ (default list).
– add: pub/themes/bismarck/settings.php for default theme settings.
You can enable/disable display of game stats/list using
$settings[‘display’][‘gamestats’] in pub/themes/bismarck/settings.php
– add: Iconsets for q3 FFA (assuming Team 0 is FFA for q3)
– add: Overall accuracy award added to default award definition for  Quake 3.
– add: added a default index.html in the pub subfolder that will redirect
visitors to themes/bismarck/index.php via a simple java script.
– chg: Changed some of the skill values in default q3 skill definition.
– fix: Fixed handling of the character ^ in q3, hopefully.
– fix: Loads the default images properly for awards, roles, icons etc in default
theme. Default images for these must be provide by the author of the
corresponding awardset, roleset or iconset.
– fix: The order in which awards were generated did not match the order in the
definition php. Hence some awards did not have any value and did not
work. The order is preserved now.
– fix: Awards were not updating because data was not quoted properly.
– fix: fixed some php/html errors in default theme. Disabled NOTICE and WARNING
errors in scripts.
– rem: Removed incomplete skins – camo, classic, swat. Will be back when
frostbite updates it!

01 Mar 2004 – v0.01 (beta)

– Initial Public Beta


Disclaimer/Legal Info/License Agreement:

The Software is provided on an “AS IS” basis, without warranty of any kind,
including without limitation the warranties of merchantability, fitness for a
particular purpose and non-infringement. The entire risk as to the quality and
performance of the Software is borne by you. Should the Software prove
defective, you alone will assume the entire cost of any service and repair.
In addition, the security mechanisms implemented in VSP have inherent
limitations, and you must determine that the Software sufficiently meets your
requirements. This disclaimer of warranty constitutes an essential part of the

This program is free for personal non-profit use only.

Commercial use is strictly prohibited.

Redistribution of modified modules/package is strictly prohibited.

If you plan to use this program for a sponsored/commercial event/website,
you must get written consent from the author.

You may:

* customize the Software’s design and operation to suit the internal needs
of your web site
* produce and distribute modification instructions, Themes or Skins provided
that they contain notification that they were originally created by VSP.
* create applications which interface with the operation of the Software
provided said application is an original work

You may not:

* permit other individuals to use the Software except under the terms listed
* reverse engineer, disassemble, or create derivative works based on the
Software for distribution or usage outside your web site excluding those
applications described here
* modify and/or remove any copyright notices, links or labels on the Software
on each page and in the header/footer of each script source file
* distribute modified versions of the Software
* distribute individual copies of files, libraries, or other programming
material in the Software package
* distribute or modify proprietary graphics, HTML, or CSS packaged with the
Software for use in Software applications other than VSP or web sites
without written permission from the author(s) of VSP.
* use the Software in such as way as to condone or encourage terrorism,
promote or provide pirated Software, or any other form of illegal or
damaging activity

This Agreement will terminate automatically if you fail to comply with the
limitations described herein. On termination, you must destroy all copies of
the Software within 48 hours.

For questions, email myrddin8 AT gmail DOT com


// VPS 0.45 ExcessivePlus Community Edition 1.0


– vsp core 0.45 –
– q3a +expansions media pack –
– q3a 3wave map image pack –
– q3a cpma map image pack –
– q3a ctfspak1 map image pack –
– q3a excessiveplus upgrade
– Lots of custom map screenshots


– Added parser option: xp_version. Must be an integer containing the excessiveplus log version to be parsed, i.e. 103, 104. Default value is 103.
– Fixed special characters for both 1.03 and 1.04.
– Removed writting of temporary log file for non-1.03 version (bug is fixed on 1.04beta4).

– Fixed some charset problems and set utf8 as the charset.
– Added first and last seen fields to player profile based on the start time of the games they played.
– Added country flags. Using as the ip to country table.
– Added ip2country table and fields configuration options so multiple vsp installations can share the same table and it also can be on another database.
– Added use_most_used_playerIP config option so if set to 1 the country displayed is from the most used ip, or the last ip if set to 0.
– Replaced baseq3 maps screenshots with new 1.04 screenshots.
– Added icons for thaws and shame hall rewards by dakini.
– Fixed possible negative skill problem.
– Optimized database inserts.
– Fixed posible database sql injection exploit.
– Added search by country field.

– Slightly changed formula for skill calculation.
– Tweaks on the skill file definition.

– Improved accuracy awards calculation.
– Fixed double guids for players.
– Corrected some locale-related bugs.
– Added skin by fest.

– ExcessivePlus 1.03 logs support. This requires a pre-parsing of the file, and the writting of a temporary file that be used for the parsing. This causes a perfomance hit of like 10 seconds for every 10 mbs of log file size, so it’s not a big deal.
– Added player_exclude_list support. Personally, i prefer this method of excluding players from the stats instead of banning the players (player_ban_list). When a player is banned all the events in wich he takes part (kill, items, thaws, etc.) are ignored, but not accuracy stats, so the stats at the end turn innacurate. When using player_exclude_list, the process of parsing is independent of the player excluding, so you can change the list at any time without affecting the stats.
– Skills system changed completely. New skill system explained below.
– Increased perfomance of the awards generation subroutine by an exponential factor – a database created by a log of 20 mbs that lasted 1.5 minutes generating awards only, with some queries of 20 seconds duration that presented a potential problem when the database grow, now lasts only 1 second.
– Added gen_awards action that only generates the awards. Useful when updating the player_exclude_list or the awards definition.
– Added awards for thaws. Also added the “Hall of Shame” section of the awards, but the awards of that section ship disabled by default.
– Added new fields for several awards with too little information.
– Savestate system changed from file-driven to database driven. Now there is no need to have any writable file by the program, only read access is enough for the system to work properly. You don’t have to mess anymore with the savestate files stored on the logdata folder. Only works with q3a gamecode.
– Added clear_savestate action that clears the savestate information for one or all of the files.
– Added skill events by game, so you can now track your skill variation from game to game. Also added max and min skill fields to the profile information.
– Added rank field to the profile information.
– Added all possible skill-related modifiers to the skill file definition.
– Fixed several related bugs about stats being parsed incorrectly when two or more players with same ids play on same match.
– Fixed bug that occassionaly caused accuracy stats to be parsed twice.
– Fixed bug that showed frags caused by suicide explosions to be parsed as thaws. Also added “Suicide Frag” to the weapons definition so the weapon won’t be listed as UNKNOWN in the stats.
– Fixed bug that caused conflicts on the stats of the grapple.
– Fixed bug when empty awards were given to players with empty id.
– Fixed several bugs and added several improvements to the bismark theme.
– Added skin an theme modifications by WaspKiller so several links don’t point to non-existent pages.
– Added all map image packs available for q3a, and also included tons of new map images – all i could find in my hard drive.
– Added several fixes and improvements posted on the forums (,,,


– It’s quite probably that support for other gamecodes or even mods inside q3a may be broken. That’s because the interest was focused 100% on excessiveplus mod for quake3 and openarena, so testing with other games/mods was not done.

Skill system:

The main idea was taking from here: However, i went further and applied the same concepts for events and team events. This was done in such a way that skill points are now “transferred” among players, so the final sum of all the players of the system remain the same at every time. The purpose if this change is that it can be suitable to keep the stats indefinitely without resetting them in some period basis, because the skill of each player is based on the quality of the opponents he plays against, not the quantity of frags he makes.

All the skills configuration are placed in the default-skills.php file. The first 2 parameters are the mean and variance for the logistical distribution used to compute the probability of winning. When a new player encountered, he is given the value of the mean, and his skill changes depending of the type of event he plays on.

– For frag events, the most basic case, first you compute the probability of the killer of fragging the victim with both players skills as parameters along with the variance, like this:
prob_winning = 1/(1+e^((looser_skill-winner_skill)/variance))
Then, the the killer gets his skill points increased in (1-prob_winning)*weapon_factor, and the victim skills decrease on the same ammount. Use of negative weapon factors are allowed, so if you decide that killing someone with the grapple (to say an example) is lame you can penalty the killer for making a frag. The good thing about the system is that if you kill someone with higher skill points than you, you’ll get more skill points, but if you keep fragging noobs, your skill points will increase too little.

– For normal events (thaw, ctf events, suicide, teamkills, item pickup, ammo pickup, weapon pickup and a few more), a variant of the above calculation is used: you (the player to which the event is awarded) get your skill points increased (or decreased in case of negative values, i.e. for suicides of team kills) by the same (1-prob_winning)*event_factor, using an average of the skill of the hole enemy team in the probability calculation, and the same points are substracted (or added) to the enemy team, making individual calculation for probability of losing against you to calculate how much will actually be substracted (or added) to each player of the enemy team, so that the sum of the ammounts are the same that will be increased (or decreased) to your points. Also, if the enemy team has less players than the winner, the skill points you’ll earn will be reduced by the factor players_of_loser_team/players_of_winner_team, so that the points are more carefully awarded on unbalanced teams. However, the opposite its not true: you won’t earn more points if the enemy team has more players than your team.

– Team events are events that affects the hole team. They are only three: score (for round based and flag gametypes only, i.e. all team gametypes except team deathmatch), wins, and loses. They all are fired at the end of the match. The points are increased/decreased for every one of the team (even players that left earlier in the game or players that switched sides in the middle of the game) using the system explained in the previous section, and multiplied by the ammount of events (wins and loses will allways be one per game, but not for score). Also, team unbalance penalties/rewards are applied.


vsp 0.45:
Lead Programming/Design : myrddin (myrddin8 <AT> gmail <DOT> com)
Programming : react
Hosting : gouki
Website :
Irc : #vsp on

xp 1.0:
WaspBeast –

Leave a Reply

Your email address will not be published. Required fields are marked *