| Team | Wins | Real Wins* |
| Axis | 138 | 119 |
| Allies | 174 | 126 |
| Map | Axis Wins (Real Wins) | Allied Wins (Real Wins) |
| venice | 34 (28) | 20 (15) |
| fueldump | 21 (20) | 25 (17) |
| glider | 24 (15) | 24 (10) |
| mlb_temple | 15 (14) | 33 (24) |
| mlb_daybreak | 12 (11) | 31 (30) |
| goldrush | 20 (20) | 18 (17) |
| oasis | 12 (11) | 23 (13) |
Undoubtedly I would be accused of pulling these numbers out of my ass if I didn't show how I came up with them. Below are all of the tools I used in generating the page you see here. I would hope that the fact that this updates every hour is proof enough that it is using the actual server log file. I suppose it's possible that I've done something wrong, but don't bitch about these numbers being wrong unless you can explain why (you have the source).
#!/bin/sh
# Path to et game log
GAMELOG="/data/et/home/et/.etwolf/etmain/game.log"
# Path to output file
OUTDATE=`date "+%Y%m"`
OUTFILE="/home/tjw/HTML/et/teamwins${OUTDATE}.txt"
printf "%-20s %-25s %-9s %-12s %-8s\n" \
"MAP" "EXIT" "WINNER" "AXXP/ALXP" "OTHER" > $OUTFILE
nice -19 grep -e "InitGame: " -e "Exit: " -e "red:" $GAMELOG | \
awk \
'BEGIN {
# axis almost always defend
mapdef["battery"] = "axis";
mapdef["fueldump"] = "axis";
mapdef["goldrush"] = "axis";
mapdef["oasis"] = "axis";
mapdef["temple_final"] = "axis";
mapdef["mlb_temple"] = "axis";
mapdef["radar"] = "axis";
mapdef["fun_beach_final"] = "axis";
mapdef["stalingrad"] = "axis";
mapdef["venice"] = "axis";
mapdef["venice_b4"] = "axis";
mapdef["transmitter-beta2"] = "axis";
mapdef["transmitter"] = "axis";
mapdef["rhine_bridge"] = "axis";
mapdef["northpole"] = "allies";
mapdef["railgun"] = "allies";
mapdef["glider"] = "axis";
mapdef["saberpeak_final"] = "axis";
mapdef["1944_beach"] = "axis";
mapdef["caen"] = "allies";
mapdef["alpine_assault_beta"] = "axis";
mapdef["transmitter"] = "axis";
mapdef["mlb_daybreak"] = "allies";
mapdef["xdam"] = "axis";
mapdef["caen2"] = "allies";
mapdef["Goldrush-GA"] = "axis";
}
{
if(index($0, "InitGame:") > 1) {
axis = 0;
allied = 0;
tail = substr($0, index($0, "\\mapname\\") + 9);
mapname = substr(tail, 0, index(tail, "\\") -1);
}
else if(index($0, "Exit:") > 1) {
reason = substr($0, index($0, "Exit: ") + 6);
if(reason == "Allied team eliminated.") {
axis = 1;
allies_elim++;
}
else if(reason == "Axis team eliminated.") {
allied = 1;
axis_elim++;
}
else if(reason == "Allies Surrender") {
axis = 1;
allies_elim++;
}
else if(reason == "Axis Surrender") {
allied = 1;
axis_elim++;
}
if(mapdef[mapname] != "") {
if(reason == "Wolf EndRound.") {
if(mapdef[mapname] == "axis") allied = 1;
else axis = 1;
}
else if(reason == "Timelimit hit.") {
if(mapdef[mapname] == "allies") allied = 1;
else axis = 1;
}
}
}
else if(index($0, "red:") && index($0, "blue:")) {
if(axis) {
axis_wins++;
winner="[AXIS]";
}
else if(allied) {
allied_wins++;
winner="[ALLIES]";
}
else winner = "[UNKNOWN]";
tail = substr($0, index($0, "red:") + 4);
red = substr(tail, 0, index(tail, " ") -1);
blue = substr($0, index($0, "blue:") + 5);
xp = sprintf("[%s/%s]", red, blue);
other = "";
if(blue/1 < 200 || red/1 < 200) {
other = "[XPLOW]";
}
printf("%-20s %-25s %-9s %-12s %-8s\n",
mapname, reason, winner, xp, other);
}
}' >> $OUTFILE
<?
if($_GET["MONTH"]) $MONTH = $_GET["MONTH"];
else $MONTH = date("Ym");
$OUTFILE="teamwins".$MONTH.".txt";
$wf = @file($OUTFILE);
if(is_array($wf)) while(list(,$line) = each($wf)) {
$map = trim(substr($line, 0, 20));
$reason = trim(substr($line, 20, 25));
$winner = trim(substr($line, 46, 9));
$xp = trim(substr($line, 56, 12));
$other = trim(substr($line, 69));
if($winner == "[ALLIES]") {
$map_wins[$map]["allied"]++;
$allied_wins["total"]++;
if($other == "[XPLOW]") {
$map_wins[$map]["alliedxplow"]++;
$allied_wins["xplow"]++;
}
}
if($winner == "[AXIS]") {
$map_wins[$map]["axis"]++;
$axis_wins["total"]++;
if($other == "[XPLOW]") {
$map_wins[$map]["axisxplow"]++;
$axis_wins["xplow"]++;
}
}
}
?>
<?
require_once("teamwins.php");
?>
<dl>
<dt>
<b>Team Wins For <?echo $MONTH;?></b>
<dd>
<table border=1 cellspacing=0 cellpadding=3>
<tr>
<td class=header><b>Team</b></td>
<td class=header><b>Wins</b></td>
<td class=header><b>Real Wins*</b></td>
</tr>
<tr>
<td>Axis</td>
<td><?echo $axis_wins["total"];?></td>
<td>
<?echo $axis_wins["total"] - $axis_wins["xplow"];?>
</td>
</tr>
<tr>
<td>Allies</td>
<td><?echo $allied_wins["total"];?></td>
<td>
<?echo $allied_wins["total"] - $allied_wins["xplow"];?>
</td>
</tr>
</table>
<i>* Real Wins are for games that had both Axis and Allied team XP above 200.</i><br>
</dl>
<link rel="stylesheet" href="/et.css">
<h2>et.tjw.org team wins statistics</h2>
<a href="/"><< Back</a>
<br>
<?require("teamwins_short.php");?>
<dl>
<dt><b>Per Map Wins</b>
<dd>
<table border=1 cellspacing=0 cellpadding=3>
<tr>
<td class=header><b>Map</b></td>
<td class=header><b>Axis Wins (Real Wins)</b></td>
<td class=header><b>Allied Wins (Real Wins)</b></td>
</tr>
<?
if(is_array($map_wins)) while(list($map, $team) = each($map_wins)) {
?>
<tr>
<td><?echo $map;?></td>
<td><?echo $team["axis"];?>
(<?echo $team["axis"] - $team["axisxplow"];?>)</td>
<td><?echo $team["allied"];?>
(<?echo $team["allied"] - $team["alliedxplow"];?>)</td>
</tr>
<?
}
?>
</table>
</dl>
<dl>
<dt><b>Source</b>
<dd>
<p>
Undoubtedly I would be accused of pulling these numbers out of my ass if I
didn't show how I came up with them. Below are all of the tools I used
in generating the page you see here. I would hope that the fact that this
updates every hour is proof enough that it is using the actual server
log file. I suppose it's possible that I've done something wrong, but
don't bitch about these numbers being wrong unless you can explain why
(you have the source).
</p>
<dl>
<dt><b>teamwins.sh</b>
<dd>This script runs every hour from my cron. It parses the game.log
and writes the file
<a href="teamwins<?echo date("Ym");?>.txt">teamwinsYYYYMM.txt</a>.
<pre><?readfile("teamwins.sh");?>
</pre>
<dt><b>teamwins.php</b>
<dd>This script parses the teamwinsYYYYMM.txt file into some usable
arrays.<br>
<div class="code">
<?show_source("teamwins.php");?>
</div>
<dt><b>teamwins_short.php</b>
<dd>
This script draws the simple table displayed on the top of this page.
<div class="code">
<?show_source("teamwins_short.php");?>
</div>
<dt><b>teamwins_long.php</b>
<dd>
You're looking at it.
<div class="code">
<?show_source("teamwins_long.php");?>
</div>
</dl>
</dl>