17 |
my $near0 = 70; |
my $near0 = 70; |
18 |
my $near1 = 200; |
my $near1 = 200; |
19 |
my $thumbsize = 400; |
my $thumbsize = 400; |
20 |
|
my $html_extension = ''; |
21 |
|
|
22 |
# from damageTypes.cs |
# from damageTypes.cs |
23 |
my @DamageTypeText; |
my @DamageTypeText; |
90 |
'W' => 'vehicle destroyed', |
'W' => 'vehicle destroyed', |
91 |
'G' => 'entered " . vehicle_link($p1) . " as ${seat{$p2}}', |
'G' => 'entered " . vehicle_link($p1) . " as ${seat{$p2}}', |
92 |
'J' => 'ejected from vehicle', |
'J' => 'ejected from vehicle', |
93 |
'GG' => '<a href=\'" . safe_name($p1) . ".html#t$time\'>$p1</a> entered as ${seat{$p2}}', |
'GG' => '<a href=\'" . safe_name($p1) . $html_extension . "#t$time\'>$p1</a> entered as ${seat{$p2}}', |
94 |
'JJ' => '<a href=\'" . safe_name($p1) . ".html#t$time\'>$p1</a> ejected', |
'JJ' => '<a href=\'" . safe_name($p1) . $html_extension . "#t$time\'>$p1</a> ejected', |
95 |
'C' => '<strong>${melink}captured the $team_name[$p1] flag!</strong>', |
'C' => '<strong>${melink}captured the $team_name[$p1] flag!</strong>', |
96 |
'R' => '${melink}returned the $team_name[$p1] flag',); |
'R' => '${melink}returned the $team_name[$p1] flag',); |
97 |
my @teamcol = (0xffffff, 0x0000ff, 0xff00ff); |
my @teamcol = (0xffffff, 0x0000ff, 0xff00ff); |
98 |
my %seat = ('' => 'a passenger', 'p' => 'pilot', 'w' => 'gunner'); |
my %seat = ('' => 'a passenger', 'p' => 'pilot', 'w' => 'gunner'); |
99 |
my %veh_name = ('BomberFlyer' => 'Bomber', |
my %veh_name = ('bomberflyer' => 'Bomber', |
100 |
'HAPCFlyer' => 'Havoc', |
'hapcflyer' => 'Havoc', |
101 |
'MobileBaseVehicle' => 'MPB', |
'mobilebasevehicle' => 'MPB', |
102 |
'ScoutFlyer' => 'Shrike', |
'scoutflyer' => 'Shrike', |
103 |
'AssaultVehicle' => 'Tank', |
'assaultvehicle' => 'Tank', |
104 |
'ScoutVehicle' => 'Wildcat'); |
'scoutvehicle' => 'Wildcat'); |
105 |
|
|
106 |
my ($mission, $mission_type, $mission_name, $mission_type_name, $x0, $y0, $width, $height); |
my ($mission, $mission_type, $mission_name, $mission_type_name, $x0, $y0, $width, $height); |
107 |
my (@landmarks, @waypoints); |
my (@landmarks, @waypoints); |
228 |
push @events, [$time, 'KK', $name{$player_veh{$name{$killer}}}, |
push @events, [$time, 'KK', $name{$player_veh{$name{$killer}}}, |
229 |
$name{$victim}, $weapon]; |
$name{$victim}, $weapon]; |
230 |
} |
} |
231 |
|
delete $player_flag{$name{$victim}}; |
232 |
# if (defined $player_veh{$name}) TODO |
# if (defined $player_veh{$name}) TODO |
233 |
# delete $name{$victim}; |
# delete $name{$victim}; |
234 |
|
|
245 |
|
|
246 |
} elsif ($cmd eq 'I') { # inventory changed |
} elsif ($cmd eq 'I') { # inventory changed |
247 |
my ($id, $item, $count) = split / /, $params; |
my ($id, $item, $count) = split / /, $params; |
248 |
if ($item =~ m/(Pack|SatchelCharge)$/ and $count == 1) { |
if ($item =~ m/(Pack|SatchelCharge|Deployable)$/ and $count == 1) { |
249 |
$item =~ s/Pack$/ pack/; |
$item =~ s/(Pack|Deployable)$/ pack/; |
250 |
push @events, [$time, 'P', $name{$id}, $item]; |
push @events, [$time, 'P', $name{$id}, $item]; |
251 |
} |
} |
252 |
|
|
255 |
|
|
256 |
} elsif ($cmd eq 'V') { # new vehicle |
} elsif ($cmd eq 'V') { # new vehicle |
257 |
my ($id, $team, $name) = split / /, $params, 3; |
my ($id, $team, $name) = split / /, $params, 3; |
258 |
|
$name = lc $name; |
259 |
$vehicle{"$team $name"}++; |
$vehicle{"$team $name"}++; |
260 |
$name{$id} = "$team $name " . $vehicle{"$team $name"}; |
$name{$id} = "$team $name " . $vehicle{"$team $name"}; |
261 |
$team{$name{$id}} = $team; |
$team{$name{$id}} = $team; |
307 |
} elsif ($cmd eq 'R') { # flag returned (CTF) |
} elsif ($cmd eq 'R') { # flag returned (CTF) |
308 |
my ($team, $id) = split / /, $params; |
my ($team, $id) = split / /, $params; |
309 |
push @events, [$time, 'R', exists $name{$id} ? $name{$id} : '', $team]; |
push @events, [$time, 'R', exists $name{$id} ? $name{$id} : '', $team]; |
310 |
$returns{$name{$id}}++; |
$returns{$name{$id}}++ if exists $name{$id}; |
311 |
|
|
312 |
} else { # player / vehicle position |
} else { # player / vehicle position |
313 |
my $id = $cmd; |
my $id = $cmd; |
374 |
$html .= '</div>'; |
$html .= '</div>'; |
375 |
} |
} |
376 |
|
|
377 |
save_html(safe_name($player) . '.html', $html); |
save_html(safe_name($player) . $html_extension, $html); |
378 |
} |
} |
379 |
|
|
380 |
#################################################################################################### |
#################################################################################################### |
392 |
my $html = write_events($player, \@evs, $im); |
my $html = write_events($player, \@evs, $im); |
393 |
|
|
394 |
save_image($im, $imname); |
save_image($im, $imname); |
395 |
|
undef $im; |
396 |
|
|
397 |
return $html; |
return $html; |
398 |
} |
} |
423 |
$ev = 'KS' if ($ev eq 'K' and defined $p1 and $p1 eq $player); |
$ev = 'KS' if ($ev eq 'K' and defined $p1 and $p1 eq $player); |
424 |
if (defined $me and $me ne $player) { |
if (defined $me and $me ne $player) { |
425 |
my $sname_me = safe_name($me); |
my $sname_me = safe_name($me); |
426 |
$melink = "<a href='$sname_me.html#t$time'>$me</a> "; |
$melink = "<a href='$sname_me$html_extension#t$time'>$me</a> "; |
427 |
} |
} |
428 |
if (defined $p1) { |
if (defined $p1) { |
429 |
my $sname_en = safe_name($p1); |
my $sname_en = safe_name($p1); |
430 |
$enemy = "<a href='$sname_en.html#t$time'>$p1</a>"; |
$enemy = "<a href='$sname_en$html_extension#t$time'>$p1</a>"; |
431 |
} |
} |
432 |
my $desc = eval '"' . $desc{$ev} . '"'; |
my $desc = eval '"' . $desc{$ev} . '"'; |
433 |
my $hexcol = sprintf "%.6lx", $colour{$ev}; |
my $hexcol = sprintf "%.6lx", $colour{$ev}; |
532 |
$html .= '</div>'; |
$html .= '</div>'; |
533 |
} |
} |
534 |
|
|
535 |
save_html("${team}_$sname.html", $html); |
save_html("${team}_$sname$html_extension", $html); |
536 |
} |
} |
537 |
|
|
538 |
#################################################################################################### |
#################################################################################################### |
540 |
sub vehicle_link { |
sub vehicle_link { |
541 |
my $s = shift; |
my $s = shift; |
542 |
my ($team, $name, $run) = split / /, $s; |
my ($team, $name, $run) = split / /, $s; |
543 |
return "<a href='${team}_$name.html#life$run'>$team_name[$team] $veh_name{$name} $run</a>"; |
return "<a href='${team}_$name$html_extension#life$run'>$team_name[$team] $veh_name{$name} $run</a>"; |
544 |
} |
} |
545 |
|
|
546 |
#################################################################################################### |
#################################################################################################### |
566 |
$at_stand = 1; |
$at_stand = 1; |
567 |
} |
} |
568 |
} |
} |
569 |
|
push @return, $end_time; |
570 |
|
|
571 |
for (my $grab = 0; $grab != @grab; $grab++) { |
for (my $grab = 0; $grab != @grab; $grab++) { |
572 |
my $nicetime = nice_time($grab[$grab]); |
my $nicetime = nice_time($grab[$grab]); |
600 |
$html .= '</div>'; |
$html .= '</div>'; |
601 |
|
|
602 |
save_image($im, "${team}_flag_$grab1.png"); |
save_image($im, "${team}_flag_$grab1.png"); |
603 |
|
undef $im; |
604 |
} |
} |
605 |
|
|
606 |
save_html("${team}_flag.html", $html); |
save_html("${team}_flag$html_extension", $html); |
607 |
} |
} |
608 |
|
|
609 |
#################################################################################################### |
#################################################################################################### |
627 |
|
|
628 |
my $team; |
my $team; |
629 |
foreach $team (keys %flag) { |
foreach $team (keys %flag) { |
630 |
$html .= "<p><a href=\"${team}_flag.html\">${team_name[$team]} flag</a></p>\n"; |
$html .= "<p><a href=\"${team}_flag$html_extension\">${team_name[$team]} flag</a></p>\n"; |
631 |
} |
} |
632 |
|
|
633 |
$html .= <<END; |
$html .= <<END; |
646 |
|
|
647 |
foreach $name (sort keys %player) { |
foreach $name (sort keys %player) { |
648 |
my $sname = safe_name($name); |
my $sname = safe_name($name); |
649 |
$html .= "<tr><td><a href=\"$sname.html\">$name</a></td>" . |
$html .= "<tr><td><a href=\"$sname$html_extension\">$name</a></td>" . |
650 |
"<td>$team_name[$team{$name}]</td>" . |
"<td>$team_name[$team{$name}]</td>" . |
651 |
lookup(\%score, $name) . |
lookup(\%score, $name) . |
652 |
lookup(\%deaths, $name) . |
lookup(\%deaths, $name) . |
661 |
|
|
662 |
if (keys %vehicle) { |
if (keys %vehicle) { |
663 |
$html .= "<table><tr><th>Vehicles</th><th>Total used</th></tr>\n"; |
$html .= "<table><tr><th>Vehicles</th><th>Total used</th></tr>\n"; |
664 |
foreach $vehicle (sort keys %vehicle) { |
foreach my $vehicle (sort keys %vehicle) { |
665 |
my ($team, $name) = split / /, $vehicle, 2; |
my ($team, $name) = split / /, $vehicle, 2; |
666 |
my $sname = safe_name($name); |
my $sname = safe_name($name); |
667 |
$html .= <<END; |
$html .= <<END; |
668 |
<tr><td><a href="${team}_$sname.html">$team_name[$team] $veh_name{$name}s</a></td><td>${vehicle{"$team $name"}}</td></tr> |
<tr><td><a href="${team}_$sname$html_extension">$team_name[$team] $veh_name{$name}s</a></td><td>${vehicle{"$team $name"}}</td></tr> |
669 |
END |
END |
670 |
} |
} |
671 |
$html .= "</table>\n"; |
$html .= "</table>\n"; |
672 |
} |
} |
673 |
|
|
674 |
save_html('index.html', $html); |
save_html("index$html_extension", $html); |
675 |
save_image($imall, 'Overview.png'); |
save_image($imall, 'Overview.png'); |
676 |
|
undef $imall; |
677 |
} |
} |
678 |
|
|
679 |
#################################################################################################### |
#################################################################################################### |
793 |
|
|
794 |
sub safe_name { |
sub safe_name { |
795 |
my $s = shift; |
my $s = shift; |
796 |
$s =~ tr/[a-zA-Z0-9]/_/cs; |
$s =~ tr/a-zA-Z0-9/_/cs; |
797 |
return $s; |
return $s; |
798 |
} |
} |
799 |
|
|