-cvars (see xonotic.org/tools/cacs for more up-to-date information):
-______________
-
- sv_eventlog master switch
- sv_eventlog_files print frags, scores and captures for separate files each match
- sv_eventlog_console print frags, scores and captures to serverconsole during the match
- sv_logscores_bots choose whether bot are included in stats or not
-
- sv_eventlog_files_counter number of matches logged until now
- sv_eventlog_files_nameprefix file name prefix to be used
- sv_eventlog_files_namesuffix file name extension to be used
- sv_eventlog_files_timestamps prefix log lines in the files with :time events
-
-log format:
-______________
-
- :logversion:3
- :gamestart:<gametype>_<mapname>:<matchid>
- :gameinfo:mutators:LIST:mutator1:mutator2:...
-
- (note that mutators are listed by their cvar name with g_ removed,
- unless such a cvar is 1 by default - then the mutator is listed with
- a no_ prefix if the cvar is 0)
-
- :gameinfo:end
- :join:<ID>:<slot>:<ip>:<nickname>
- :join:<ID>:<slot>:bot:<nickname>
- :name:<ID>:<nickname>
- :part:<ID>
- :team:<ID>:<team>:<jointype>
- :kill:frag:<ID of killer>:<ID of victim>:type=<death type>:items=<itemstring of killer>:victimitems=<itemstring of victim>
- :kill:tk:<ID of killer>:<ID of victim>:type=<death type>:items=<itemstring of killer>:victimitems=<itemstring of victim>
- :kill:suicide:<ID>:<ID>:type=<death type>:items=<itemstring>
- :kill:accident:<ID>:<ID>:type=<death type>:items=<itemstring>
- :ctf:steal:<flagcolor>:<ID of attacker>
- :ctf:dropped:<flagcolor>:<ID of dropper>
- :ctf:pickup:<flagcolor>:<ID of attacker>
- :ctf:capture:<flagcolor>:<ID of attacker>
- :ctf:return:<flagcolor>:<ID of defender>
- :ctf:returned:<flagcolor>
- :dom:taken:<previouscolor>:<ID of player>
- :keyhunt:capture:<ID of player>:<points for player>:<ID of key owner>:<points for key owner>:<name of key>
- :keyhunt:carrierfrag:<ID of player>:<points for player>:<ID of key owner>:<points for key owner>:<name of key>
- :keyhunt:collect:<ID of player>:<points for player>:<ID of key owner>:<points for key owner>:<name of key>
- :keyhunt:destroyed:<ID of player>:<points for player>:<ID of key owner>:<points for key owner>:<name of key>
- :keyhunt:destroyed_holdingkey:<ID of player>:<points for player>:<ID of key owner>:<points for key owner>:<name of key>
- :keyhunt:dropkey:<ID of player>:<points for player>:<ID of key owner>:<points for key owner>:<name of key>
- :keyhunt:losekey:<ID of player>:<points for player>:<ID of key owner>:<points for key owner>:<name of key>
- :keyhunt:push:<ID of player>:<points for player>:<ID of key owner>:<points for key owner>:<name of key>
- :keyhunt:pushed:<ID of player>:<points for player>:<ID of key owner>:<points for key owner>:<name of key>
- :scores:<gametype>_<mapname>:<map runtime>
- :labels:player:<head1><flags>,<head2><flags>,...
- :player:see-labels:<score1>,<score2>,...:<playtime>:<team>:<ID>:<nickname>
- :player:see-labels:<score1>,<score2>,...:<playtime>:spectator:<ID>:<nickname>
- :labels:teamscores:<head1><flags>,<head2><flags>,...
- :teamscores:see-labels:<score1>,<score2>,...:<team>
- :end
- :restart
- :gameover
- :vote:suggested:<mapname>:<playerid>
- :vote:keeptwo:<mapname>:<mapvotes>:<mapname>:<mapvotes>:::<mapname>:<mapvotes>:...:didn't vote:<notvoters>
- :vote:finished:<mapname>:<mapvotes>:::<mapname>:<mapvotes>:<mapname>:<mapvotes>:...:didn't vote:<notvoters>
- :vote:suggestion_accepted:<mapname>
- :vote:vcall:<ID of player>:<vote command display string>
- :vote:vyes:<yescount>:<nocount>:<abstaincount>:<notvoters>:<mincount>
- :vote:vno:<yescount>:<nocount>:<abstaincount>:<notvoters>:<mincount>
- :vote:vtimeout:<yescount>:<nocount>:<abstaincount>:<notvoters>:<mincount>
- :vote:vstop:<ID of stopper>
- :vote:vlogin:<ID of player>
- :vote:vdo:<ID of player>:<do command display string>
- :time:<YYYY-MM-DD HH:MM:SS>
- :recordset:<ID of player>:<time in seconds>
-
- Note that only the :join and :player lines ever contain player names. The
- :time event only appears in the log files if sv_eventlog_files_timestamps
- is 1; there is no way to log these time stamps to the console (for console
- timestamps, set timestamps to 1).
-
-team colors:
- 1 = No Team (Domination)
- 5 = Red Team
- 14 = Blue Team
- 13 = Yellow Team
- 10 = Pink Team
-
-join types:
- 1 = connect
- 2 = auto
- 3 = manual
- 4 = spectating
- 6 = adminmove
-
-label flags:
- !! = primary sorting key
- <!! = primary sorting key, lower is better
- ! = secondary sorting key
- <! = secondary sorting key, lower is better
- < = lower is better
-
-itemstring:
- <weaponid><flags>
- or
- <weaponid><flags>|<runes>
-
- where flags can contain:
- F = player carries the flag
- S = player has strength
- I = player has the shield
- T = player is typing (console, menu or chat)
-
- and weapon IDs are:
- 1 = Laser
- 2 = Shotgun
- 3 = Machine Gun
- 4 = Mortar
- 5 = Electro
- 6 = Crylink
- 7 = Vortex
- 8 = Hagar
- 9 = Rocket Launcher
- 10 = Port-O-Launch
- 11 = Vaporizer
- 12 = Grappling Hook
- 13 = Heavy Laser Assault Cannon
- 14 = T.A.G. Seeker
-
-death type:
- either a weapon ID ORed with weapon death flags, or one of
- the notifications in common/deathtypes.qh in the form of a string.
-
- weapon death flags are:
- 256 = secondary fire
- 512 = splash damage
- 1024 = bounced projectile
- 2048 = head shot (MinstaNex only)
- 4096 = unused flag
-
-There will be a log analyzer parsing this file format soon. Note that weapon
-IDs are below 10000.
+cvars (see xonotic.org/tools/cacs for more up-to-date information):\r
+______________\r
+\r
+ sv_eventlog master switch\r
+ sv_eventlog_files print frags, scores and captures for separate files each match\r
+ sv_eventlog_console print frags, scores and captures to serverconsole during the match\r
+ sv_logscores_bots choose whether bot are included in stats or not\r
+ \r
+ sv_eventlog_files_counter number of matches logged until now\r
+ sv_eventlog_files_nameprefix file name prefix to be used \r
+ sv_eventlog_files_namesuffix file name extension to be used\r
+ sv_eventlog_files_timestamps prefix log lines in the files with :time events\r
+\r
+log format:\r
+______________\r
+\r
+ :logversion:3\r
+ :gamestart:<gametype>_<mapname>:<matchid>\r
+ :gameinfo:mutators:LIST:mutator1:mutator2:...\r
+\r
+ (note that mutators are listed by their cvar name with g_ removed,\r
+ unless such a cvar is 1 by default - then the mutator is listed with\r
+ a no_ prefix if the cvar is 0)\r
+\r
+ :gameinfo:end\r
+ :join:<ID>:<slot>:<ip>:<nickname>\r
+ :join:<ID>:<slot>:bot:<nickname>\r
+ :name:<ID>:<nickname>\r
+ :part:<ID>\r
+ :team:<ID>:<team>:<jointype>\r
+ :kill:frag:<ID of killer>:<ID of victim>:type=<death type>:items=<itemstring of killer>:victimitems=<itemstring of victim>\r
+ :kill:tk:<ID of killer>:<ID of victim>:type=<death type>:items=<itemstring of killer>:victimitems=<itemstring of victim>\r
+ :kill:suicide:<ID>:<ID>:type=<death type>:items=<itemstring>\r
+ :kill:accident:<ID>:<ID>:type=<death type>:items=<itemstring>\r
+ :ctf:steal:<flagcolor>:<ID of attacker>\r
+ :ctf:dropped:<flagcolor>:<ID of dropper>\r
+ :ctf:pickup:<flagcolor>:<ID of attacker>\r
+ :ctf:capture:<flagcolor>:<ID of attacker>\r
+ :ctf:return:<flagcolor>:<ID of defender>\r
+ :ctf:returned:<flagcolor>\r
+ :dom:taken:<previouscolor>:<ID of player>\r
+ :keyhunt:capture:<ID of player>:<points for player>:<ID of key owner>:<points for key owner>:<name of key>\r
+ :keyhunt:carrierfrag:<ID of player>:<points for player>:<ID of key owner>:<points for key owner>:<name of key>\r
+ :keyhunt:collect:<ID of player>:<points for player>:<ID of key owner>:<points for key owner>:<name of key>\r
+ :keyhunt:destroyed:<ID of player>:<points for player>:<ID of key owner>:<points for key owner>:<name of key>\r
+ :keyhunt:destroyed_holdingkey:<ID of player>:<points for player>:<ID of key owner>:<points for key owner>:<name of key>\r
+ :keyhunt:dropkey:<ID of player>:<points for player>:<ID of key owner>:<points for key owner>:<name of key>\r
+ :keyhunt:losekey:<ID of player>:<points for player>:<ID of key owner>:<points for key owner>:<name of key>\r
+ :keyhunt:push:<ID of player>:<points for player>:<ID of key owner>:<points for key owner>:<name of key>\r
+ :keyhunt:pushed:<ID of player>:<points for player>:<ID of key owner>:<points for key owner>:<name of key>\r
+ :scores:<gametype>_<mapname>:<map runtime>\r
+ :labels:player:<head1><flags>,<head2><flags>,...\r
+ :player:see-labels:<score1>,<score2>,...:<playtime>:<team>:<ID>:<nickname>\r
+ :player:see-labels:<score1>,<score2>,...:<playtime>:spectator:<ID>:<nickname>\r
+ :labels:teamscores:<head1><flags>,<head2><flags>,...\r
+ :teamscores:see-labels:<score1>,<score2>,...:<team>\r
+ :end\r
+ :restart\r
+ :gameover\r
+ :vote:suggested:<mapname>:<playerid>\r
+ :vote:keeptwo:<mapname>:<mapvotes>:<mapname>:<mapvotes>:::<mapname>:<mapvotes>:...:didn't vote:<notvoters>\r
+ :vote:finished:<mapname>:<mapvotes>:::<mapname>:<mapvotes>:<mapname>:<mapvotes>:...:didn't vote:<notvoters>\r
+ :vote:suggestion_accepted:<mapname>\r
+ :vote:vcall:<ID of player>:<vote command display string>\r
+ :vote:vyes:<yescount>:<nocount>:<abstaincount>:<notvoters>:<mincount>\r
+ :vote:vno:<yescount>:<nocount>:<abstaincount>:<notvoters>:<mincount>\r
+ :vote:vtimeout:<yescount>:<nocount>:<abstaincount>:<notvoters>:<mincount>\r
+ :vote:vstop:<ID of stopper>\r
+ :vote:vlogin:<ID of player>\r
+ :vote:vdo:<ID of player>:<do command display string>\r
+ :time:<YYYY-MM-DD HH:MM:SS>\r
+ :recordset:<ID of player>:<time in seconds>\r
+\r
+ Note that only the :join and :player lines ever contain player names. The\r
+ :time event only appears in the log files if sv_eventlog_files_timestamps\r
+ is 1; there is no way to log these time stamps to the console (for console\r
+ timestamps, set timestamps to 1).\r
+\r
+team colors:\r
+ 1 = No Team (Domination)\r
+ 5 = Red Team\r
+ 14 = Blue Team\r
+ 13 = Yellow Team\r
+ 10 = Pink Team\r
+\r
+join types:\r
+ 1 = connect\r
+ 2 = auto\r
+ 3 = manual\r
+ 4 = spectating\r
+ 6 = adminmove\r
+\r
+label flags:\r
+ !! = primary sorting key\r
+ <!! = primary sorting key, lower is better\r
+ ! = secondary sorting key\r
+ <! = secondary sorting key, lower is better\r
+ < = lower is better\r
+\r
+itemstring:\r
+ <weaponid><flags>\r
+ or\r
+ <weaponid><flags>|<runes>\r
+\r
+ where flags can contain:\r
+ F = player carries the flag\r
+ S = player has strength\r
+ I = player has the shield\r
+ T = player is typing (console, menu or chat)\r
+ \r
+ and weapon IDs are:\r
+ 1 = Laser\r
+ 2 = Shotgun\r
+ 3 = Machine Gun\r
+ 4 = Mortar\r
+ 5 = Electro\r
+ 6 = Crylink\r
+ 7 = Vortex\r
+ 8 = Hagar\r
+ 9 = Rocket Launcher\r
+ 10 = Port-O-Launch\r
+ 11 = Vaporizer\r
+ 12 = Grappling Hook\r
+ 13 = Heavy Laser Assault Cannon\r
+ 14 = T.A.G. Seeker\r
+\r
+death type:\r
+ either a weapon ID ORed with weapon death flags, or one of\r
+ the notifications in common/deathtypes.qh in the form of a string.\r
+\r
+ weapon death flags are:\r
+ 256 = secondary fire\r
+ 512 = splash damage\r
+ 1024 = bounced projectile\r
+ 2048 = head shot (MinstaNex only)\r
+ 4096 = unused flag\r
+\r
+There will be a log analyzer parsing this file format soon. Note that weapon\r
+IDs are below 10000.\r
-map download:
-______________
-
-
-CLIENT SIDE:
-
-Should already work without configuration. You can however use the following
-cvars for further tuning (see xonotic.org/tools/cacs for more up-to-date information):
-
- cl_curl_enabled download support enabled (master switch)
- cl_curl_maxdownloads maximum number of downloads at once
- cl_curl_maxspeed maximum total speed in KiB/s
-
-Downloaded packages end up in |Xonotic/data/dlcache/| or
-|~/.xonotic/data/dlcache/| and are only used till you exit Xonotic.
- If you want to play them localy or use them to setup a server of your
-own you can "accept" the packages by moving it one level up - right
-next to your config.cfg.
-
-You should regularily clean up your cache to save space and make the maps
-you really want available from the menu.
-
-
-SERVER SIDE:
-
-First of all, you need a HTTP or FTP server to host your PK3s. You can either
-use some web space provider, or set up your own. For this, use any FTP or HTTP
-server software you want (HTTP: lighttpd, Apache, thttpd; FTP: Filezilla,
-vsftpd). HTTP is to be preferred because it works better for firewalled
-players.
-
-On the server, you need to set up where to download the PK3s of the maps you
-are running. You can either use the cvar
-
- sv_curl_defaulturl default download URL
-
-to set it to some site, or put a file named "curl_urls.txt" in the data
-directory of the following format:
-
- pattern url
- pattern url
- pattern url
- ...
-
-where always the first wildcard pattern match is taken.
-
- data* -
- strale* http://stralemaps.invalid/
- * http://all.the.other.stuff.invalid/id/here.php?pak=
- foo* http://wont.get.here.invalid/
-
-The pk3 name will be appended to the URL by DarkPlaces. Note that you NEED to
-append a trailing slash if you refer to a directory. If you specify a "-" as
-URL, the package will not be offered for download.
-
-
-INFORMATION FOR MIRROR/MAP SERVER ADMINS:
-
-The Referer is always set to dp://serverhost:serverport/, the User-Agent
-always starts with "Xonotic". Look at this sample log line:
-
-141.2.16.3 - - [06/Jun/2006:19:43:14 +0000] "GET /~polzer/temp/nexmaps.php?filename=o-fun.pk3 HTTP/1.1" 302 - "dp://141.2.16.3:26000/" "Xonotic Linux 21:26:17 Jun 6 2006"
-
-
-If you want to set up a redirection service, here is a sample PHP code for you
-to start from:
-
-<?
-
-function findmap($filename)
-{
- # insert your database query or whatever you want here
- if($filename == "foo.pk3")
- return "http://barserver.invalid/foo.pk3";
- return FALSE;
-}
-
-function bailout($code, $title, $message)
-{
- header("HTTP/1.1 $code $title");
- echo "<html><title>$title</title><h1>$title</h1>$message</html>";
- exit(0);
-}
-
-$filename = $_GET['filename'];
-
-$useragent = getenv("HTTP_USER_AGENT");
-if(strpos($useragent, "Xonotic ") !== 0)
- bailout(403, "Forbidden", "You're not a Xonotic client.");
-
-$url = findmap($filename);
-if(!$url)
- bailout(404, "Not Found", "Well... try another file name?");
-
-header("HTTP/1.1 302 Moved Temporarily");
-header("Location: $url");
-
-?>
+map download:\r
+______________\r
+\r
+\r
+CLIENT SIDE:\r
+\r
+Should already work without configuration. You can however use the following\r
+cvars for further tuning (see xonotic.org/tools/cacs for more up-to-date information):\r
+\r
+ cl_curl_enabled download support enabled (master switch)\r
+ cl_curl_maxdownloads maximum number of downloads at once\r
+ cl_curl_maxspeed maximum total speed in KiB/s\r
+\r
+Downloaded packages end up in |Xonotic/data/dlcache/| or\r
+|~/.xonotic/data/dlcache/| and are only used till you exit Xonotic.\r
+ If you want to play them localy or use them to setup a server of your\r
+own you can "accept" the packages by moving it one level up - right\r
+next to your config.cfg.\r
+\r
+You should regularily clean up your cache to save space and make the maps\r
+you really want available from the menu.\r
+\r
+\r
+SERVER SIDE:\r
+\r
+First of all, you need a HTTP or FTP server to host your PK3s. You can either\r
+use some web space provider, or set up your own. For this, use any FTP or HTTP\r
+server software you want (HTTP: lighttpd, Apache, thttpd; FTP: Filezilla,\r
+vsftpd). HTTP is to be preferred because it works better for firewalled\r
+players.\r
+\r
+On the server, you need to set up where to download the PK3s of the maps you\r
+are running. You can either use the cvar\r
+\r
+ sv_curl_defaulturl default download URL\r
+\r
+to set it to some site, or put a file named "curl_urls.txt" in the data\r
+directory of the following format:\r
+\r
+ pattern url\r
+ pattern url\r
+ pattern url\r
+ ...\r
+\r
+where always the first wildcard pattern match is taken.\r
+\r
+ data* -\r
+ strale* http://stralemaps.invalid/\r
+ * http://all.the.other.stuff.invalid/id/here.php?pak=\r
+ foo* http://wont.get.here.invalid/\r
+\r
+The pk3 name will be appended to the URL by DarkPlaces. Note that you NEED to\r
+append a trailing slash if you refer to a directory. If you specify a "-" as\r
+URL, the package will not be offered for download.\r
+\r
+\r
+INFORMATION FOR MIRROR/MAP SERVER ADMINS:\r
+\r
+The Referer is always set to dp://serverhost:serverport/, the User-Agent\r
+always starts with "Xonotic". Look at this sample log line:\r
+\r
+141.2.16.3 - - [06/Jun/2006:19:43:14 +0000] "GET /~polzer/temp/nexmaps.php?filename=o-fun.pk3 HTTP/1.1" 302 - "dp://141.2.16.3:26000/" "Xonotic Linux 21:26:17 Jun 6 2006"\r
+\r
+\r
+If you want to set up a redirection service, here is a sample PHP code for you\r
+to start from:\r
+\r
+<?\r
+\r
+function findmap($filename)\r
+{\r
+ # insert your database query or whatever you want here\r
+ if($filename == "foo.pk3")\r
+ return "http://barserver.invalid/foo.pk3";\r
+ return FALSE;\r
+}\r
+\r
+function bailout($code, $title, $message)\r
+{\r
+ header("HTTP/1.1 $code $title");\r
+ echo "<html><title>$title</title><h1>$title</h1>$message</html>";\r
+ exit(0);\r
+} \r
+\r
+$filename = $_GET['filename'];\r
+\r
+$useragent = getenv("HTTP_USER_AGENT");\r
+if(strpos($useragent, "Xonotic ") !== 0)\r
+ bailout(403, "Forbidden", "You're not a Xonotic client.");\r
+ \r
+$url = findmap($filename);\r
+if(!$url)\r
+ bailout(404, "Not Found", "Well... try another file name?");\r
+ \r
+header("HTTP/1.1 302 Moved Temporarily");\r
+header("Location: $url");\r
+\r
+?>\r
-cvars (see xonotic.org/tools/cacs for more up-to-date information):
-______________
-
- sv_logscores_console print scores to serverconsole after each match (set to 1 to enable)
- sv_logscores_file print scores to a file after each match
- sv_logscores_filename filename of the output file if sv_logscores_file is enabled (the file will be stored in Xonotic/data/data or ~/.xonotic/data/data)
- sv_logscores_bots choose whether bot are included in stats or not
-
-
-commands:
-______________
-
- printstats print current scores to file/console (requires sv_logscores_console and/or
- sv_logscores_file to be enabled)
-
-
-log format:
-______________
-
-example:
-
- :scores:dm_nexdm01:131
- :player:1:7:129:1:GrooveMachine
- :player:1:4:129:1:DanceWithMe
- :player:10:1:130:3:Player
- :end
-
- start of a new section: :scores:<gametype>_<mapname>:<map runtime> (if the dump was triggered
- by "printstats", the line starts with :status:)
- player entry: :player:<frags>:<deaths>:<playtime>:<team>:<nickname> (playername might contain ":",
- so be sure your parser doesn't split them, playtime is messured in seconds)
- section end: :end
-
-team colors:
- Red Team = 5
- Blue Team = 14
- Yellow Team = 13
- Pink Team = 10
-
- other team numbers may appear in free for all games
-
- for an example parser (written in php, thanks to tChr) have a look at:
- http://excalibur.nvg.ntnu.no/nexuiz/statsparser
+cvars (see xonotic.org/tools/cacs for more up-to-date information):\r
+______________\r
+\r
+ sv_logscores_console print scores to serverconsole after each match (set to 1 to enable)\r
+ sv_logscores_file print scores to a file after each match \r
+ sv_logscores_filename filename of the output file if sv_logscores_file is enabled (the file will be stored in Xonotic/data/data or ~/.xonotic/data/data)\r
+ sv_logscores_bots choose whether bot are included in stats or not\r
+\r
+\r
+commands:\r
+______________\r
+\r
+ printstats print current scores to file/console (requires sv_logscores_console and/or \r
+ sv_logscores_file to be enabled)\r
+\r
+\r
+log format:\r
+______________\r
+\r
+example:\r
+ \r
+ :scores:dm_nexdm01:131\r
+ :player:1:7:129:1:GrooveMachine\r
+ :player:1:4:129:1:DanceWithMe\r
+ :player:10:1:130:3:Player\r
+ :end\r
+ \r
+ start of a new section: :scores:<gametype>_<mapname>:<map runtime> (if the dump was triggered\r
+ by "printstats", the line starts with :status:)\r
+ player entry: :player:<frags>:<deaths>:<playtime>:<team>:<nickname> (playername might contain ":",\r
+ so be sure your parser doesn't split them, playtime is messured in seconds)\r
+ section end: :end\r
+\r
+team colors:\r
+ Red Team = 5\r
+ Blue Team = 14\r
+ Yellow Team = 13\r
+ Pink Team = 10\r
+\r
+ other team numbers may appear in free for all games\r
+\r
+ for an example parser (written in php, thanks to tChr) have a look at:\r
+ http://excalibur.nvg.ntnu.no/nexuiz/statsparser\r