Must useful script

Post here your must useful scripts

Spawntimer/class selector/ artly script, or any other useful scripts


SHARE
Comments
29
bind k kill
bind mouse1 kill;forcetapout
bind mouse1 "say ^1BOOM HEADSHOT; kill; forcetapout; wait 250; vsay_team Ftreviveme"
/bind mwheeldown "+zoom;+attack;wait 2;-attack;-zoom;say_team ^6More spam coz Your journal is gay"
bind "capslock" vstr activate
set activate1 "set activate vstr activate0; set cg_autoactivate 1; echo ^1Autoactivate 1"
set activate0 "set activate vstr activate1; set cg_autoactivate 0; echo ^2Autoactivate 0; say_team ^1<^3TAKE THIS AMMO^1>"
vstr activate0
set m1 " vsay cheer ^0~^f:^1() ^6C^l===3; bind 0 vstr m2 "
set m2 " vsay cheer ^0~^f:^1()^6C^l===3; bind 0 vstr m3 "
set m3 " vsay cheer ^0~^f:^1(^6C^l===3; bind 0 vstr m4 "
set m4 " vsay cheer ^0~^f:^1(^l===3; bind 0 vstr m5 "
set m5 " vsay cheer ^0~^f:^1(^l==3; bind 0 vstr m6 "
set m6 " vsay cheer ^0~^f:^1(^l=3; bind 0 vstr m7 "
set m7 " vsay cheer ^0~^f:^1(^l3; bind 0 vstr m8 "
set m8 " vsay cheer ^0~^f:^1(9 ^o*^5SLURP^o*; bind 0 vstr m9 "
set m9 " vsay cheer ^1*^8*^3*^2*^5* ^6DICK EATER ^5*^2*^3*^8*^1*; unbind 0 "

set mm " bind 0 vstr m1 "
bind 9 "vstr mm"
bind leftarrow "vstr seis_speed-"
bind rightarrow "vstr seis_speed+"
bind downarrow "vstr seis_speed_0.0"
bind uparrow "vstr seis_speed_1.0"
set seis_speed- "vstr seis_speed_0.9"
set seis_speed+ "vstr seis_speed_2.0"
set seis_speed_0.0 "set timescale 0.0001; cl_freezedemo 1; set seis_speed- vstr seis_speed_0.0; set seis_speed+ vstr seis_speed_0.1;"
set seis_speed_0.1 "set timescale 0.1; cl_freezedemo 0; set seis_speed- vstr seis_speed_0.0; set seis_speed+ vstr seis_speed_0.2;"
set seis_speed_0.2 "set timescale 0.2; cl_freezedemo 0; set seis_speed- vstr seis_speed_0.1; set seis_speed+ vstr seis_speed_0.3;"
set seis_speed_0.3 "set timescale 0.3; cl_freezedemo 0; set seis_speed- vstr seis_speed_0.2; set seis_speed+ vstr seis_speed_0.4;"
set seis_speed_0.4 "set timescale 0.4; cl_freezedemo 0; set seis_speed- vstr seis_speed_0.3; set seis_speed+ vstr seis_speed_0.5;"
set seis_speed_0.5 "set timescale 0.5; cl_freezedemo 0; set seis_speed- vstr seis_speed_0.4; set seis_speed+ vstr seis_speed_0.6;"
set seis_speed_0.6 "set timescale 0.6; cl_freezedemo 0; set seis_speed- vstr seis_speed_0.5; set seis_speed+ vstr seis_speed_0.7;"
set seis_speed_0.7 "set timescale 0.7; cl_freezedemo 0; set seis_speed- vstr seis_speed_0.6; set seis_speed+ vstr seis_speed_0.8;"
set seis_speed_0.8 "set timescale 0.8; cl_freezedemo 0; set seis_speed- vstr seis_speed_0.7; set seis_speed+ vstr seis_speed_0.9;"
set seis_speed_0.9 "set timescale 0.9; cl_freezedemo 0; set seis_speed- vstr seis_speed_0.8; set seis_speed+ vstr seis_speed_1.0;"
set seis_speed_1.0 "set timescale 1.0; cl_freezedemo 0; set seis_speed- vstr seis_speed_0.9; set seis_speed+ vstr seis_speed_2.0;"
set seis_speed_2.0 "set timescale 2.0; cl_freezedemo 0; set seis_speed- vstr seis_speed_1.0; set seis_speed+ vstr seis_speed_4.0;"
set seis_speed_4.0 "set timescale 4.0; cl_freezedemo 0; set seis_speed- vstr seis_speed_2.0; set seis_speed+ vstr seis_speed_8.0;"
set seis_speed_8.0 "set timescale 8.0; cl_freezedemo 0; set seis_speed- vstr seis_speed_4.0; set seis_speed+ vstr seis_speed_16.0;"
set seis_speed_16.0 "set timescale 16.0; cl_freezedemo 0; set seis_speed- vstr seis_speed_8.0; set seis_speed+ vstr seis_speed_32.0;"
set seis_speed_32.0 "set timescale 32.0; cl_freezedemo 0; set seis_speed- vstr seis_speed_16.0; set seis_speed+ vstr seis_speed_64.0;"
set seis_speed_64.0 "set timescale 64.0; cl_freezedemo 0; set seis_speed- vstr seis_speed_32.0; set seis_speed+ vstr seis_speed_128.0;"
set seis_speed_128.0 "set timescale 128.0; cl_freezedemo 0; set seis_speed- vstr seis_speed_64.0; set seis_speed+ vstr seis_speed_128.0;"
whats this?
Parent
cant you read?
Parent
ah got it know ... thx ... forgot to read ...
Parent
I guess it's a movie making script?
Parent
// Press this key (o) to change your nickname in the game with only one button

set x1 "name ^0>^7------; set nick2 vstr x2"
set x2 "name ^0>^7------; set nick2 vstr x3"
set x3 "name ^7-^0>^7-----; set nick2 vstr x4"
set x4 "name ^7-^0>^7-----; set nick2 vstr x5"
set x5 "name ^7--^0>^7----; set nick2 vstr x6"
set x6 "name ^7--^0>^7----; set nick2 vstr x7"
set x7 "name ^7---^0>^7---; set nick2 vstr x8"
set x8 "name ^7---^0>^7---; set nick2 vstr x9"
set x9 "name ^7----^0>^7--; set nick2 vstr x10"
set x10 "name ^7----^0>^7--; set nick2 vstr x11"
Set x11 "name ^7-----^0>^7-; set nick2 vstr x12"
Set x12 "name ^7-----^0>^7-; set nick2 vstr x13"
Set x13 "name ^7------^0>; set nick2 vstr x14"
Set x14 "name ^7------^0>; set nick2 vstr x15"
Set x15 "name ^7-----^0<^7-; set nick2 vstr x16"
Set x16 "name ^7-----^0<^7-; set nick2 vstr x17"
Set x17 "name ^7----^0<^7--; set nick2 vstr x18"
Set x18 "name ^7----^0<^7--; set nick2 vstr x19"
Set x19 "name ^7---^0<^7---; set nick2 vstr x20"
Set x20 "name ^7---^0<^7---; set nick2 vstr x21"
Set x21 "name ^7--^0<^7----; set nick2 vstr x22"
Set x22 "name ^7--^0<^7----; set nick2 vstr x23"
Set x23 "name ^7-^0<^7-----; set nick2 vstr x24"
Set x24 "name ^7-^0<^7-----; set nick2 vstr x25"
Set x25 "name ^0<^7------; set nick2 vstr x26"
Set x26 "name ^0<^7------; set nick2 vstr x27"
Set x27 "name ^7-^0>^7-----; set nick2 vstr x28"
Set x28 "name ^7-^0>^7-----; set nick2 vstr x29"
Set x29 "name ^7--^0>^7----; set nick2 vstr x30"
Set x30 "name ^7--^0>^7----; set nick2 vstr x31"
Set x31 "name ^7---^0>^7---; set nick2 vstr x32"
Set x32 "name ^7---^0>^7---; set nick2 vstr x33"
Set x33 "name ^7----^0>^7--; set nick2 vstr x34"
Set x34 "name ^7----^0>^7--; set nick2 vstr x35"
Set x35 "name ^7-----^0>^7-; set nick2 vstr x36"
Set x36 "name ^7-----^0>^7-; set nick2 vstr x37"
Set x37 "name ^7------^0>; set nick2 vstr x38"
Set x38 "name ^7------^0>; set nick2 vstr x39"
Set x39 "name ^7-----^0<^7-; set nick2 vstr x40"
Set x40 "name ^7-----^0<^7-; set nick2 vstr x41"
Set x41 "name ^7----^0<^7--; set nick2 vstr x42"
Set x42 "name ^7----^0<^7--; set nick2 vstr x43"
Set x43 "name ^7---^0<^7---; set nick2 vstr x44"
Set x44 "name ^7---^0<^7---; set nick2 vstr x45"
Set x45 "name ^7--^0<^4N^7----; set nick2 vstr x46"
Set x46 "name ^7--^0<^4N^7----; set nick2 vstr x47"
Set x47 "name ^7-^0<^7-^.N^7----; set nick2 vstr x48"
Set x48 "name ^7-^0<^7-^.N^7----; set nick2 vstr x49"
Set x49 "name ^0<^7--^4N^7----; set nick2 vstr x50"
Set x50 "name ^0<^7--^4N^7----; set nick2 vstr x51"
Set x51 "name ^7-^0>^7-^4N^7----; set nick2 vstr x52"
Set x52 "name ^7-^0>^7-^4N^7----; set nick2 vstr x53"
Set x53 "name ^7--^0>^.N^7-----; set nick2 vstr x54"
Set x54 "name ^7--^0>^.N^7-----; set nick2 vstr x55"
Set x55 "name ^7--^4N^0>^7-----; set nick2 vstr x56"
Set x56 "name ^7--^4N^0>^7-----; set nick2 vstr x57"
Set x57 "name ^7--^.N^7-^0>^7----; set nick2 vstr x58"
Set x58 "name ^7--^.N^7-^0>^7----; set nick2 vstr x59"
Set x59 "name ^7--^4N^7--^0>^7---; set nick2 vstr x61"
Set x60 "name ^7--^4N^7--^0>^7---; set nick2 vstr x62"
Set x61 "name ^7--^.N^7---^0>--; set nick2 vstr x63"
Set x62 "name ^7--^.N^7---^0>--; set nick2 vstr x64"
Set x63 "name ^7--^4N^7----^0>^7-; set nick2 vstr x65"
Set x64 "name ^7--^4N^7----^0>^7-; set nick2 vstr x65"
Set x65 "name ^7--^.N^7-----^0>; set nick2 vstr x66"
Set x66 "name ^7--^.N^7-----^0>; set nick2 vstr x67"
Set x67 "name ^7--^4N^7----^0<^7-; set nick2 vstr x68"
Set x68 "name ^7--^4N^7----^0<^7-; set nick2 vstr x69"
Set x69 "name ^7--^.N^7---^0<^7--; set nick2 vstr x70"
Set x70 "name ^7--^.N^7---^0<^7--; set nick2 vstr x71"
Set x71 "name ^7--^4N^7--^0<^4B^7--; set nick2 vstr x72"
Set x72 "name ^7--^4N^7--^0<^4B^7--; set nick2 vstr x73"
Set x73 "name ^7--^.N^7-^0<^7-^.B^7--; set nick2 vstr x74"
Set x74 "name ^7--^.N^7-^0<^7-^.B^7--; set nick2 vstr x75"
Set x75 "name ^7--^4N^0<^7--^4B^7--; set nick2 vstr x76"
Set x76 "name ^7--^4N^0<^7--^4B^7--; set nick2 vstr x77"
Set x77 "name ^7-^0<^.N^7--^.B^7--; set nick2 vstr x78"
Set x78 "name ^7-^0<^.N^7--^.B^7--; set nick2 vstr x79"
Set x79 "name ^0<^7-^4N^7--^4B^7--; set nick2 vstr x80"
Set x80 "name ^0<^7-^4N^7--^4B^7--; set nick2 vstr x81"
Set x81 "name ^7-^0>^.N^7--^.B^7--; set nick2 vstr x82"
Set x82 "name ^7-^0>^.N^7--^.B^7--; set nick2 vstr x83"
Set x83 "name ^7--^4NO^0>^4B; set nick2 vstr x84"
Set x84 "name ^7--^4NO^0>^4B; set nick2 vstr x85"
Set x85 "name ^7--^.NOOB^0>^7--; set nick2 vstr x86"
Set x86 "name ^7--^.NOOB^0>^7--; set nick2 vstr x87"
Set x87 "name ^7--^4NOOB^7-^0>^7-; set nick2 vstr x88"
Set x88 "name ^7--^4NOOB^7-^0>^7-; set nick2 vstr x89"
Set x89 "name ^7--^.NOOB^7-^0>; set nick2 vstr x90"
Set x90 "name ^7--^.NOOB^7-^0>; set nick2 vstr x91"
Set x91 "name ^7--^4NOOB^7--; set nick2 vstr x92"
Set x92 "name ^7--^1N^7OO^1B^7--; set nick2 vstr x93"
Set x93 "name ^7--^1N^7OO^1B^7--; set nick2 vstr x94"
Set x94 "name ^7--^>N^0OO^>B^7--; set nick2 vstr x95"
Set x95 "name ^7--^>N^0OO^>B^7--; set nick2 vstr x96"
Set x96 "name ^7--^1N^7OO^1B^7--; set nick2 vstr x97"
Set x97 "name ^7--^1N^7OO^1B^7--; set nick2 vstr x98"
Set x98 "name ^7--^>N^0OO^>B^7--; set nick2 vstr x99"
Set x99 "name ^7--^>N^0OO^>B^7--; set nick2 vstr x100"
Set x100 "name ^7--^1N^7OO^1B^7--; set nick2 vstr x101"
Set x101 "name ^7--^1N^7OO^1B^7--; set nick2 vstr x102"
Set x102 "name ^7--^>N^0OO^>B^7--; set nick2 vstr x103"
Set x103 "name ^7--^>N^0OO^>B^7--; set nick2 vstr x104"
Set x104 "name ^7-^0NO^7_^0OB^7-; set nick2 vstr x105"
Set x105 "name ^7-^0NO^7_^0OB^7-; set nick2 vstr x106"
Set x106 "name ^0NO^7__^0OB; set nick2 vstr x107"
Set x107 "name ^0NO^7__^0OB; set nick2 vstr x108"
Set x108 "name ^0O^7___^0B; set nick2 vstr x109"
Set x109 "name ^0O^7___^0B; set nick2 vstr x110"
Set x110 "name ^7_______; set nick2 vstr x111"
Set x111 "name ^7_______; set nick2 vstr x112"
Set x112 "name ^7___i___ ; set nick2 vstr x113"
Set x113 "name ^7___i___; set nick2 vstr x114"
Set x114 "name ^7__ist___; set nick2 vstr x115"
Set x115 "name ^7__ist___; set nick2 vstr x116"
Set x116 "name ^7_^!w^7ist^!e^7_; set nick2 vstr x117"
Set x117 "name ^7_^!w^7ist^!e^7_; set nick2 vstr x118"
Set x118 "name ^!Tw^7ist^!er"


set nick2 "vstr x1"
bind "\" "vstr nick2"
bind mouse1 +attack
class selector/ bind ".." kill
#!/usr/bin/perl
##############################################################################
#
# ETS -- Wolfenstein: Enemy Territory Statistics
# (c) Vladi Shabanski <[email protected]> 2003
# http://soul.datamax.bg/~cade/away/ets
#
# Developed for play.evrocom.net server ET community
# http://play.evrocom.net
#
# This software is distributed under GPL license, see COPYING for details.
#
# $Id: ets.pl,v 1.68 2004/01/13 07:00:12 cade Exp $
#
##############################################################################
use Data::Dumper;
use strict;

### GET PARAMETERS ###########################################################

my $help = $ARGV[0];

my $log_file = shift || $ENV{ 'ETS_LOG_FILE' };
my $log_con_file = $ENV{ 'ETS_CON_FILE' };
my $log_pb_file = $ENV{ 'ETS_PB_FILE' };
my $output_dir = shift || $ENV{ 'ETS_OUTPUT_DIR' };
my $web_prefix = $ENV{ 'ETS_WEB_PREFIX' };
my $web_dir = $ENV{ 'ETS_WEB_DIR' };
my $theme = shift || $ENV{ 'ETS_THEME' } || "ets-default";
my $last_days = $ENV{ 'ETS_LAST_DAYS' };
my $motd_file = $ENV{ 'ETS_MOTD_FILE' };

print "CONFIG:
log_file = $log_file
output_dir = $output_dir
web_prefix = $web_prefix
web_dir = $web_dir
theme = $theme
";

die "usage1: $0 log-file html-output-dir [theme-name]
usage2: . config && $0
" if $help =~ /^--?h(elp)?/i or $log_file eq '';

### CONFIG ###################################################################

our $FLOOR = 50;

our $TOPS_FLOOR = 15;

our $SCORE_FLOOR = 100;

our %TC;
our $T;
our $PROFILE = 0;

# files_dir is the web path of the dir where the web-content should be written to
# my $files_dir = "/mk/gaming/stats/et";
#my $files_dir = "/etstats";

# Sascha:
# this dir is the one you use to call the referred pages from. There is no difference for
# $web_dir and $file_dir as long you do _not_ run in a postnuke (or considerable) content.
# Be sure you have htmlloader.php or a similar Content-Caller like PostWrap installed if
# you use this calling method!
#
# my $web_prefix = "/postnuke/html/htmlloader.php?content=" . $files_dir;
#my $web_prefix = $files_dir;

### CONFIG ###################################################################

my $html_header = "<html>
<meta http-equiv='content-type' content='text/html; charset=iso-8859-1'>
<title>Wolfenstein: Enemy Territory Statistics</title>
<link href=#$theme/styles/ets-default.css rel=stylesheet type=text/css>
<style type=text/css></style>
<center>
<p>
<h1>Wolfenstein: Enemy Territory Statistics</h1>
<h2>[ENV:ETS_SERVER]</h2>
<small>[T:This page has been generated on] [TIME]</small>
<p>
|
<a href=!tops.html>[T:top scores]</a> |
<a href=!games.html>[T:last games]</a> |
<a href=!players.html>[T:all players (long!)]</a> |
<a href=!kill.html>[T:kills/deaths/ratio]</a> |
<a href=!classide.html>[T:sides/classes]</a> |
<br>
|
<a href=!wep.html>[T:weapons]</a> |
<a href=!uniforms.html>[T:uniforms/disguise]</a> |
<a href=!kpm.html>[T:top kills per minute]</a> |
<a href=!noise.html>[T:noise]</a> |
<a href=!waste.html>[T:time waste]</a> |
<a href=!punks.html>[T:hall of shame]</a> |
<br>
|
<a href=!p_sides.html>[T:sides played]</a> |
<a href=!top_td.html>[T:'no friends' awards]</a> |
<p>
<table width=80%><td valign=top align=center>
";

my $html_footer = "</td></table><p><small>";
$html_footer .= "Note: Statistics data for last $last_days days only is used.<br>" if $last_days > 0;
$html_footer .= "Note: Limit is set to top $FLOOR entries (the rest are counted but not shown).<br>
Thanks to all players at <a href=http://play.evrocom.net>http://play.evrocom.net</a>!<br>
<a href=http://soul.datamax.bg/~cade/away/ets><b>ETS</b></a> by (c) <a href=mailto:cade\@bis.bg>&lt;cade\@bis.bg&gt;</a> 2003
</small>
</center>
</html>";

my $html_motd = $ENV{ 'ETS_MOTD' }
|| load_file( $ENV{ 'ETS_MOTD_FILE' } )
|| "<h2>Welcome to Wolfenstein: Enemy Territory server statistics!</h2>";

###STATIC#####################################################################

my %CLASS = (
0 => 'SOLDIER',
1 => 'MEDIC',
2 => 'ENGINEER',
3 => 'FIELD_OPS',
4 => 'COVERT_OPS',
);

my %SIDE = (
0 => 'UNKNOWN',
1 => 'AXIS',
2 => 'ALLIES',
3 => 'SPECTATORS',
);
my %WEAPON = (
0 => 'KNIFE',
1 => 'LUGER',
2 => 'COLT', # 8
3 => 'MP40', # 9
4 => 'THOMPSON', # 10
5 => 'STEN', # 11
6 => 'FG42', # 15
7 => 'PANZERFAUST',
8 => 'FLAMETHROWER',
9 => 'GRENADE',
10 => 'MORTAR',
11 => 'DYNAMITE', # 26
12 => 'AIRSTRIKE', # 28
13 => 'ARTY', # 30
14 => 'SYRINGE',
15 => 'SMOKECAN',
16 => 'SATCHEL',
17 => 'GRENADE_LAUNCHER', # 18
18 => 'LANDMINE', # 45
19 => 'MOBILE_MG42',
20 => 'GARAND',
21 => 'KAR98'
);
my %WEAPON_REV = reverse %WEAPON;

my %SKILL = (
0 => 'BATTLE SENSE',
1 => 'ENGINEERING (ENGINEER)',
2 => 'FIRST AID (MEDIC)',
3 => 'SIGNALS (FIELD OPS)',
4 => 'LIGHT WEAPONS',
5 => 'HEAVY WEAPONS (SOLDIER)',
6 => 'COVERT OPS (COVERT OPS)',
);
my %SKILL_IMG = (
0 => "<img src=#$theme/img/bs.gif border=0>",
1 => "<img src=#$theme/img/en.gif border=0>",
2 => "<img src=#$theme/img/fa.gif border=0>",
3 => "<img src=#$theme/img/si.gif border=0>",
4 => "<img src=#$theme/img/lw.gif border=0>",
5 => "<img src=#$theme/img/hw.gif border=0>",
6 => "<img src=#$theme/img/co.gif border=0>",
);

# thanx, furiozo :)
my %COLOR = (
'1' => 'f70400',
'2' => '02f702',
'3' => 'fdf900',
'4' => '0006f8',
'5' => '00f6f3',
'6' => 'f407f5',
'7' => 'f9f9f9',
'8' => 'ff7b06',
'9' => '7c7d81',
'0' => '000100',
'q' => 'f70303',
')' => 'f70303',
'w' => 'f4f6f1',
'e' => '8100fd',
'r' => '00f904',
't' => '0005f4',
'y' => '7b7d7a',
'u' => '00faf6',
'i' => 'fb0033',
'o' => 'eff174',
'p' => '060702',
'a' => 'fd9534',
's' => 'fbf904',
'd' => '007dfe',
'f' => '3795c8',
'&' => '3795c8',
'g' => 'c2fcc9',
'h' => '066432',
'(' => '066432',
'j' => 'ad1c17',
'k' => '9b3107',
'l' => 'cf9834',
';' => 'c0bfc7',
'z' => 'bcbdc2',
'x' => 'f98000',
'c' => '7b0484',
'v' => 'f900f9',
'b' => '037d7e',
'n' => 'faf9c0',
'm' => '9b9935',
',' => 'cf9a3a',
'.' => 'f7f8b6',
'/' => 'fbfc7c',
'-' => '98972d',
'=' => '7f7f00',
'\\' => '007f03',
'[' => 'bec0bb',
']' => '7f7c0b',
'\'' => 'c5f9c8',
'*' => 'ae181a',
);

###MAIN#######################################################################

my %name_map = split /(?<!\\)[=\n]+/, `cat $ENV{ETS_NAME_MAP}`
if -e $ENV{ETS_NAME_MAP};

my @clan_map = split /(?<!\\)[=\n]+/, `cat $ENV{ETS_CLAN_MAP}`
if -e $ENV{ETS_CLAN_MAP};
s/\\(.)/$1/g for @clan_map;
my %clan_map = @clan_map;

my %translation = split /(?<!\\)[=\n]+/, `cat $ENV{ETS_TRANSLATION}`
if -e $ENV{ETS_TRANSLATION};

my %kil;
my %ded;
my %kil2;
my %ded2;

my %wep; # weapon usage by players/clans -> weapon

my %nam;
my %nam_color;

my %unif_taken; # uniforms taken
my %unif_lost; # uniforms lost

my %noise; # noise in words :)

my %class_last; # last classes per player
my %class; # classes per player

my %side_last; # last side per player
my %side; # side per player

my %global_class;
my %global_side;

my %classes;
my %sides;

my %client; # clients info

my $href = 0;
my %href;

my $minute; # used for top kills per minute
my %kpm_temp;
my %kpm_game; # which minute in which game is
my %kpm;

my %top_td; # team damage

my %conn_time; # connect time
my %time_waste; # time "wasted" :)

my @games; # all games
my %games; # game time->game data
my @trans; # last game transcription

my %player; # stats from weapon stats, same as in @games

my %weapons; # stats total
my %skills; # skills total

my %members; # clan members

my %ip; # ip->name(s)
my %ip_rev; # name->ip(s)
my %guid; # guid->name(s)
my %guid_rev; # name->guid(s)
my %same_ip; # name->name(s) from the same ip
my %same_guid; # name->name(s) from the same guid

#-----------------------------------------------------------------------------

$T = time() if $PROFILE;

setpriority( 0, 0, 19 ) if ! $ENV{ 'ETS_FULL_SPEED' } and $^O ne "MSWin32";

my $time_now = time();

my $time_base = 0;
my $local_time = 0;
my $last_local_time = 0;
my $time = 0;

my $last_game_time;
my %last_server;
my %stats; # game statistics, temporary used to collect data
my %items; # items collected/processed during the game, temporary used to collect data
my %referees; # hold referees' names
my $exit = 0; # keep status wether the level is over

$last_days = $last_days * 24 * 60 * 60; # convert days into seconds

print STDERR "processing log file: $log_file\n";

open( my $i, $log_file ) or die "$0: cannot open log file: $log_file\n";
while(<$i>)
{
# print "line: $.\n" if $. % 10000 == 0;
next if /^[\s\r\n]*$/o;
s/<world>/*WORLD*/gio;
s/^"?\s*(\d+):(\d+)(\.\d+)?\s*//o; # get time (^"? is for the buggy shrubet teamdamage logging)
use integer;
$local_time = $1 * 60 + $2;
if( $last_local_time > $local_time )
{
$time_base = $time_base + $last_local_time;
}
$last_local_time = $local_time;
$time_base = $1 if /^TIME:(\d+)/o; # get time base
$time = $time_base + $local_time;
next if $last_days > 0 and $time_now - $last_days > $time;
no integer;
$minute = $time - $time % 60;
my $time_str = scalar localtime( $time );
$time_str =~ s/ / 0/o;

#print STDERR "$time_str ($time) [$time_base:$local_time] $_";

if( /^ClientConnect: (\d+)/io )
{
$TC{ 'CDo' }++ if $PROFILE;
#print STDERR "c: $1\n";
next if exists $conn_time{ $1 };
$conn_time{ $1 } = $time;
next;
}
if( /^ClientDisconnect: (\d+)/io )
{
$TC{ 'CDd' }++ if $PROFILE;
next unless exists $conn_time{ $1 };
my $wasted = int( $time - $conn_time{ $1 } );
delete $conn_time{ $1 };
my $name = $client{ $1 }{ 'n' };
#print STDERR "d: $1 ($name) $wasted\n";
next if $name eq ''; # anonymous
$time_waste{ $name } += $wasted;
$time_waste{ get_clan( $name ) } += $wasted;
next;
}
if( /^ShutdownGame:/o )
{
$TC{ 'SG' }++ if $PROFILE;
for my $k ( keys %conn_time )
{
my $wasted = int( $time - $conn_time{ $k } );
my $name = $client{ $k }{ 'n' };
next if $name eq '';
$time_waste{ $name } += $wasted;
$time_waste{ get_clan( $name ) } += $wasted;
#print STDERR "d: $k ($name) $wasted\n";
}
%conn_time = ();
# next; # nadolu ima oshte edin handler za shutdown game
}
if( /^ClientUserinfoChanged: (\d+) (.+)/io )
{
$TC{ 'CUC' }++ if $PROFILE;
# n\xwayBG\t\2\c\4\r\0\m\0000000\s\0000000\dn\chromosome\dr\0\w\10\lw\10\sw\41\mu\0\ref\0
my $id = $1;
my $data = $2;
$client{ $id } = { split /\\/, $data };

my ( $name, $color_name );
$name = $color_name = $client{ $id }{ 'n' };
$name =~ s/\^.//go; # clear colors etc.

$client{ $1 }{ 'n' } = $name = $name_map{ $name }
if( $name_map{ $name } );
$nam{ $name }++;
$nam{ get_clan( $name ) }++;

$nam_color{ $name } = $color_name if $name ne $color_name;

$client{ $id }{ 'n' } = $name;
$client{ $id }{ 'dn' } =~ s/\^.//go; # clear colors etc.

my $dn = $client{ $id }{ 'dn' };
my $class = $CLASS{ $client{ $id }{ 'c' } };
my $side = $SIDE{ $client{ $id }{ 't' } };
my $weapon = $WEAPON{ $client{ $id }{ 'w' } };
my $ref = $client{ $id }{ 'ref' };

my $info;
#$info .= "$time_str ^2$name: $side, $class, $weapon";
#$info .= ", ^1referee" if $ref;
$info .= "$time_str ^2$name has referee status" if $ref and ! $referees{ $id }++;
push @trans, $info if $info;

if( $dn )
{
$unif_taken{ $name }++;
$unif_lost{ $dn }++;
};
if( $class_last{ $name } ne $class )
{
$class{ $name }{ $class }++;
$class{ get_clan( $name ) }{ $class }++;
$class_last{ $name } = $class;
$global_class{ $class }++;
$classes{ $class }{ $name }++;
$classes{ $class }{ get_clan( $name ) }++;
}
if( $side_last{ $name } ne $side )
{
$side{ $name }{ $side }++;
$side{ get_clan( $name ) }{ $side }++;
$side_last{ $name } = $side;
$global_side{ $side }++;
$sides{ $side }{ $name }++;
$sides{ $side }{ get_clan( $name ) }++;
}
next;
}
s/\^.//g; # clear colors etc. this is after ClientUserinfoChanged to preserve original names
if( /^Item: (\d+) team_CTF_(red|blue)flag/o )
{
my $n = $client{ $1 }{ 'n' };
my $f = uc $2;

$items{ $n }{ "CAPTURES/FLAGS/$f" }++;
$items{ $n }{ "TOTAL" }++;
next;
}
if( /^Dynamite_Plant: +(\d+)/o )
{
my $n = $client{ $1 }{ 'n' };
$items{ $n }{ 'DYNA/PLANT' }++;
$items{ $n }{ "TOTAL" }++;
next;
}
if( /^Dynamite_Diffuse: +(\d+)/o )
{
my $n = $client{ $1 }{ 'n' };
$items{ $n }{ 'DYNA/DIFF' }++;
$items{ $n }{ "TOTAL" }++;
next;
}
if( /^Repair: (\d+)/o )
{
my $n = $client{ $1 }{ 'n' };
$items{ $n }{ 'REPAIR' }++;
$items{ $n }{ "TOTAL" }++;
next;
}

if( $exit and /WeaponStats:\s*(.+)$/o )
{
$TC{ 'WS' }++ if $PROFILE;
my $data = parse_weaponstats( $1, $last_game_time );
$stats{ $data->{ 'PLAYER' } } = $data if $data;
next;
}
if( /^InitGame:\s*(.*)$/o )
{
$TC{ 'IG' }++ if $PROFILE;
$exit = 0;
$last_game_time = $time;
%last_server = split /\\/, "\\$1";
next;
}
if( /Exit:/o )
{
$TC{ 'EX' }++ if $PROFILE;
$last_server{ 'TIMELIMIT' } = /Timelimit/ ? 1 : 0;
$exit = 1;
}
if( $exit and /^ShutdownGame/o )
{
$TC{ 'SG' }++ if $PROFILE;

# format items
$items{ 'HEAD' }{ 'NAME' } = '<1>[100%]Player';
$items{ 'HEAD' }{ 'CAPTURES/FLAGS/RED' } = "<2>[>]Red Flag";
$items{ 'HEAD' }{ 'CAPTURES/FLAGS/BLUE' } = "<3>[>]Blue Flag";
$items{ 'HEAD' }{ 'DYNA/PLANT' } = "<4>[>]Dyna Plant";
$items{ 'HEAD' }{ 'DYNA/DIFF' } = "<5>[>]Dyna Diff";
$items{ 'HEAD' }{ 'REPAIR' } = "<6>[>]Repairs";
$items{ 'HEAD' }{ 'TOTAL' } = "<7>[>]Total";

$items{ 'FOOT' }{ 'NAME' } = 'Totals:';
$items{ 'FOOT' }{ 'CAPTURES/FLAGS/RED' } = '(SUM)/i';
$items{ 'FOOT' }{ 'CAPTURES/FLAGS/BLUE' } = '(SUM)/i';
$items{ 'FOOT' }{ 'DYNA/PLANT' } = '(SUM)/i';
$items{ 'FOOT' }{ 'DYNA/DIFF' } = '(SUM)/i';
$items{ 'FOOT' }{ 'REPAIR' } = '(SUM)/i';
$items{ 'FOOT' }{ 'TOTAL' } = '(SUM)/i';

$items{ $_ }{ 'NAME' } = color_name( $_ ) || '*unknown*' for grep ! /^(HEAD|FOOT|COLS)$/, keys %items;

my @players = keys %stats;
my $pc = scalar @players;
if( $pc >= 4 )
{
push @games, { 'STATS' => { %stats },
'ITEMS' => { %items },
'TIME' => $last_game_time,
'PLAYERS' => $pc,
'MAP' => $last_server{ 'mapname' },
'AXIS_XP' => $last_server{ 'AXIS_XP' },
'ALLIES_XP' => $last_server{ 'ALLIES_XP' },
'TIMELIMIT' => $last_server{ 'TIMELIMIT' },
'TRANS' => [ @trans ],
};

for my $p ( grep ! /^(HEAD|FOOT|COLS)$/, keys %items )
{
my $v;
$v = $items{ $p }{ 'TOTAL' };
$v .= '.' . sprintf "%04d", $stats{ $p }{ 'SCORE' };
# top objectives
if( $v > $player{ $p }{ 'TOP_OBJ' } )
{
$player{ $p }{ 'TOP_OBJ' } = $v;
$player{ $p }{ 'TOP_OBJ_GAME' } = $last_game_time;
}
}
}
@trans = ();
%stats = ();
%items = ();
%referees = ();
next;
}
if( /red:(\d+) +blue:(\d+)/ )
{
$last_server{ 'AXIS_XP' } = $1;
$last_server{ 'ALLIES_XP' } = $2;
next;
}
if( /Kill: (\d+) (\d+) (\d+): (.+) killed (.+) by MOD_([A-Z_0-9]+)/io )
{
$TC{ 'KI' }++ if $PROFILE;
my $k = $name_map{ $4 } || $4;
my $d = $name_map{ $5 } || $5;
my $w = $6;

$kpm_temp{ $k }{ $minute }++;
$kpm_temp{ get_clan( $k ) }{ $minute }++;
$kpm_game{ $minute } = $last_game_time;

# kills
$kil{ $k }++;
$kil{ get_clan( $k ) }++;
$kil2{ $k }{ $d }++;
$kil2{ get_clan( $k ) }{ get_clan( $d ) }++;

# deaths
$ded{ $d }++;
$ded{ get_clan( $d ) }++;
$ded2{ $d }{ $k }++;
$ded2{ get_clan( $d ) }{ get_clan( $k ) }++;

# weapon usage
$wep{ $k }{ $w }++;
$wep{ get_clan( $k ) }{ $w }++;
=pod
# get names...
$nam{ $k }++;
$nam{ $d }++;
$nam{ get_clan( $k ) }++;
$nam{ get_clan( $d ) }++;
=cut

next;
}
if( /^say(team)?: (.+?): (.+)/io )
{
my $clr = $1 ? '^3' : '^5';

$TC{ 'SA' }++ if $PROFILE;
my $p = $2;
my $cnt = $3 =~ /\S+/g;
$noise{ $p } += $cnt;
$noise{ get_clan( $p ) } += $cnt;

push @trans, "$time_str $clr$_";
next;
}
#if( /^score: +(\d+) +ping: +(\d+) +client: (\d+) (.+)/ )
# {
# next;
# }
#if( /?? end/start of game ??/ )
# {
# %class_last = ();
# %side_last = ();
# next;
# }
}
close( $i );

if( $PROFILE )
{
use Data::Dumper;
print STDERR "profile counters:\n" . Dumper( \%TC ) . "\n";
}

print STDERR "profile: reading main log: ".(time()-$T)." seconds\n" and $T = time() if $PROFILE;

#-----------------------------------------------------------------------------

if( $log_con_file )
{
my $pbc = 0;
my $cnt = 0;
print STDERR "processing console log file: $log_con_file\n";
open my $i, $log_con_file;
while(<$i>)
{
next if /^[\s\r\n]*$/o;
s/\^.//g;

next unless /^Userinfo: \\(.+)/;
my %ui = split /\\/, $1;

$cnt++;
$pbc++ if $ui{'cl_punkbuster'};

my $n = $ui{'name'};
my $g = $ui{'cl_guid'};
my $i = $ui{'ip'};

$i =~ s/:\d+$//;

$ip{ $i }{ $n }++;
$ip_rev{ $n }{ $i }++;

$guid{ $g }{ $n }++;
$guid_rev{ $n }{ $g }++;
}
close $i;

while( my ( $n, $hr ) = each %ip_rev )
{
for my $i ( keys %$hr )
{
for my $nn ( keys %{ $ip{ $i } } )
{
$same_ip{ $n }{ $nn }++;
}
}
}

while( my ( $n, $hr ) = each %guid_rev )
{
for my $g ( keys %$hr )
{
next if $g eq 'unknown';
for my $nn ( keys %{ $guid{ $g } } )
{
$same_guid{ $n }{ $nn }++;
}
}
}

print STDERR sprintf "%.2f%% of players are using PB\n", ( 100.0 * $pbc ) / $cnt;
}

print STDERR "done (end virtual time is $time)\n";

print STDERR "profile: reading console log: ".(time()-$T)." seconds\n" and $T = time() if $PROFILE;

#-----------------------------------------------------------------------------

print STDERR "processing data...\n";

# remove fake players
for my $k ( keys %nam )
{
next if $k eq '*WORLD*';
next if $k =~ /^!/;
# 0 kills
delete $nam{ $k } unless exists $wep{ $k };
delete $nam{ $k } if $k eq 'unknown';
# never reached XP above 100
delete $nam{ $k } unless $player{ $k }{ 'TOP_SCORE' } > $SCORE_FLOOR;
}

$nam_color{ 'AXIS' } = "^1AXIS";
$nam_color{ 'ALLIES' } = "^4ALLIES";
$nam_color{ 'SPECTATORS' } = "^2SPECTATORS";

# fix names links
for my $k ( keys %nam )
{
my $k2 = $k;
$k2 =~ s/[^!a-z0-9\-\_]/_/gi;
$href{ $k } = $k2;

my $c = get_clan( $k );
$members{ $c }{ $k }++;
}

print STDERR "profile: processing data: ".(time()-$T)." seconds\n" and $T = time() if $PROFILE;

#-----------------------------------------------------------------------------

if( $log_pb_file )
{
my $pbc = 0;
my $cnt = 0;
print STDERR "processing PB log file: $log_pb_file\n";

my @data;

my %seen;

open my $i, $log_pb_file;
while(<$i>)
{
s/[\r\n]+$//o;
# [10.21.2003 18:14:40] VIOLATION (WALLHACK) #60184: ^$WARIOR (slot #2) Violation (WALLHACK) #60184 [9d92d8d22b8fc763555a4f0683b7af1c(-) 217.10.250.23:27960]
/\[([^\]]+)\]\s*VIOLATION\s*\(([^:]+)\)\s*#(\d+):\s*(.+?)\s*\(slot #\d+\).+?([\d\.\:]+)\]$/io;
my $time = $1;
my $viol = $2;
my $vid = $3;
my $name = $4;
my $addr = $5;

$name =~ s/\^.//g;

next unless $vid >= 50_000; # PB docs says violations over 50k are cheats

next if $seen{ "$viol|$name" }++;

# print STDERR "$time | $viol | $name | $addr\n";
my $cname = color_name( $name );
unshift @data, [ '', "<a href=!p_$href{$name}.html>$cname</a>", $viol, $vid, $name, $time, $addr ];
pop @data if @data > 50;
}
close( $i );

for( @data )
{
my $k = $_->[2] . '|' . $_->[4];
$_->[4] = $seen{ $k };
}

unshift @data, [ 'HEAD', "[30%]Player", "Violation", "VID", "Count", "Time", "IP" ];
html_save( 'punks', "<h3>hall of shame (busted punks)</h3>", html_table( \@data, SORT => 4 ) );
}
else
{
html_save( 'punks', "<h3>hall of shame (busted punks)</h3>", 'no information available' );
}
print STDERR "profile: reading PB log: ".(time()-$T)." seconds\n" and $T = time() if $PROFILE;

#-----------------------------------------------------------------------------

my %kpm_temp_game;
while( my ( $k, $v ) = each %kpm_temp )
{
my ( $max_k, $max_v ) = hash_max( $v );
# $k = sprintf "%s %s", scalar localtime( $max_k ), color_name( $k );
$kpm{ $k } = $max_v;
my $ti = $kpm_game{ $max_k };
$kpm_temp_game{ $k } = $ti;
}
%kpm_game = %kpm_temp_game;

print STDERR "done\n";

print STDERR "profile: calculating KPM: ".(time()-$T)." seconds\n" and $T = time() if $PROFILE;

#-----------------------------------------------------------------------------

exit if $PROFILE;

print STDERR "writing statistics...\n";

my @games_text;

push @games_text, [ 'HEAD',
'[>5%]#',
'[15%]Map',
'[25%]Finish Time',
'[>5%]IXP',
'[>5%]AXP',
'[5%]TLH',
'[40%]Players' ];
@games = reverse @games;
my $gc = 0; # game counter
for my $gr ( @games )
{
my $ti = $gr->{ 'TIME' };
my $ma = $gr->{ 'MAP' };
my $tm = localtime( $ti );
$tm =~ s/:\d\d / /; # remove seconds
my $pl = sprintf "%02d", $gr->{ 'PLAYERS' };
next unless $pl > 0;
my $ww = $pl * 8;

# now fix some links and info
$games{ $ti } = $gr;
my $des = $gr->{ 'DES' } = "$tm, $pl [T:pl.] [T:on] $ma";

push @games_text, [ '',
'(ROW)',
$ma,
"<a href=!game_$ti.html>$tm</a>&nbsp;(<a href=!game_$ti\_trans.html>T</a>)",
$gr->{ 'AXIS_XP' },
$gr->{ 'ALLIES_XP' },
$gr->{ 'TIMELIMIT' } ? 'Yes' : 'No',
"$pl <img src=#$theme/img/wp.gif height=10 width=$ww>"
];
html_save( "game_$ti", "<h2>[T:game at] $des</h2>",
mod_hash_stats_2d( 'Captures/Dynamites/Repairs', $gr->{ 'ITEMS' } ),
single_game_stats( $gr, TYPE => 'SKILLS', SIDE => 'ALLIES' ),
single_game_stats( $gr, TYPE => 'SKILLS', SIDE => 'AXIS' ),
single_game_stats( $gr, TYPE => 'SHOTS', SIDE => 'ALLIES' ),
single_game_stats( $gr, TYPE => 'SHOTS', SIDE => 'AXIS' ),
single_game_stats( $gr, TYPE => 'DAMAGE', SIDE => 'ALLIES' ),
single_game_stats( $gr, TYPE => 'DAMAGE', SIDE => 'AXIS' ),
single_game_stats( $gr, TYPE => 'DETAILS' ),
"<p><a href=!game_$ti\_trans.html>[T:Transcription]</a>" );
html_save( "game_$ti\_trans", "<h2>[T:game at] $tm [T:on] $ma [T:map], $pl [T:players]</h2>",
single_game_transcription( $gr, TYPE => 'TRANS' ) );
$gc++;
}

html_save( 'index', $html_motd );
html_save( 'games', $html_motd, "<p><h2>[T:Last games: (approx. last 24 hours)]</h2><p>",
html_table( [ grep /\S/, @games_text[0..50] ] ),
"<p><a href=!games_all.html>[T:show all] $gc [T:games (long!)]</a>" );
html_save( 'games_all', $html_motd . "<p><h2>[T:All] $gc [T:games]</h2><p>" . html_table( \@games_text, FLOOR => 1_000_000 ) );

for my $c ( '', 4..6 )
{
html_save( "kill$c", "sort by:
<a href=!kill4.html>[T:Kills]</a>
| <a href=!kill5.html>[T:Deaths]</a>
| <a href=!kill6.html>[T:K:D Ratio]</a>",
"<p><h2>[T:kills/deaths/ratio]</h2><p>",
mod_player_clan_stats( CLAN => 1, FLOOR => $FLOOR, SORT => $c || 4 ),
mod_player_clan_stats( CLAN => 0, FLOOR => $FLOOR, SORT => $c || 4 ) );
}

html_save( "players", "[T:*all* players]",
mod_player_clan_stats( CLAN => 0, FLOOR => 1_000_000, SORTA => 3 ) );

html_save( 'p_sides' , "<table cellspacing=5><tr><td width=50% valign=top>",
mod_hash_stats( "AXIS [T:(totals per clan)]", $sides{ 'AXIS' }, CLAN => 1 ),
"</td><td width=50% valign=top>",
mod_hash_stats( "ALLIES [T:(totals per clan)]", $sides{ 'ALLIES' }, CLAN => 1 ),
"</td></tr><tr><td width=50% valign=top>",
mod_hash_stats( "AXIS", $sides{ 'AXIS' } ),
"</td><td width=50% valign=top>",
mod_hash_stats( "ALLIES", $sides{ 'ALLIES' } ),
"</td></tr></table>" );

for my $k ( keys %nam )
{
my $text;
my $clan = 0;
$clan = 1 if $k =~ /^!/;
$text .= mod_clan_members( "[T:clan members of] " . color_name( $k ), $k ) if $clan;
$text .= mod_hash_stats( "[T:sides played by] " . color_name( $k ), $side{ $k } );
$text .= mod_top_scores_stats( "[T:top scores for] " . color_name( $k ), $k );
$text .= mod_weapons_stats( "[T:weapons top figures for] " . color_name( $k ), $k );
$text .= mod_kill_killed( "[T:public relations for] " . color_name( $k ), $k );
$text .= mod_games_for_player( "[T:last games in which participated] " . color_name( $k ), $k );

$text .= "<p><a href=!p_r_$href{$k}.html>([T:resolver])</a>" if $log_con_file;

html_save( 'p_' . $href{$k}, $text );

next unless $log_con_file;

$text = undef;

$text .= mod_hash_stats( "[T:aliases for player] " . color_name( $k ), $same_guid{ $k } );
$text .= mod_hash_stats( "[T:players from the same ip address(es)] " . color_name( $k ), $same_ip{ $k } );

html_save( 'p_r_' . $href{$k}, $text );
}

html_save( 'noise', mod_hash_stats( "[T:noise in words by clan]", \%noise, CLAN => 1 ),
mod_hash_stats( "[T:noise in words by player]", \%noise ) );

html_save( 'uniforms', "<table cellspacing=5><tr><td width=50% valign=top>",
mod_hash_stats( "[T:uniforms taken]", \%unif_taken ),
"</td><td width=50% valign=top>",
mod_hash_stats( "[T:uniforms lost]", \%unif_lost ),
"</td></tr></table>" );

html_save( 'kpm', mod_kpm_stats( "[T:top kills per minute by clan]", CLAN => 1 ),
mod_kpm_stats( "[T:top kills per minute by player]", ) );

html_save( 'waste', mod_hash_stats( "[T:time wasted by clan]", \%time_waste, TIMEFMT => 1, CLAN => 1, HEAD => "#,Player,Time,Percentage" ),
mod_hash_stats( "[T:time wasted by player]", \%time_waste, TIMEFMT => 1, HEAD => "#,Clan,Time,Percentage" ) );

html_save( 'classide', mod_hash_stats( "[T:sides played]", \%global_side ),
mod_hash_stats( "[T:classes played]", \%global_class ) );

html_save( 'top_td', mod_hash_stats( "[T:'no friends' awards by clan]", \%top_td, NOP => 1, CLAN => 1 ),
mod_hash_stats( "[T:'no friends' awards by player]", \%top_td, NOP => 1, ), );

my $skills_totals = mod_skills_totals( "[T:score totals]" );
for my $c ( '', 4..11 )
{
html_save( "tops$c", "[T:choose]:
<a href=!tops.html>[T:XP]</a>
| <a href=!tops4.html>[T:battle sense]</a>
| <a href=!tops5.html>[T:engineer]</a>
| <a href=!tops6.html>[T:medic]</a>
| <a href=!tops7.html>[T:field ops]</a>
| <a href=!tops8.html>[T:light weapons]</a>
| <a href=!tops9.html>[T:heavy weapons (soldiers)]</a>
| <a href=!tops10.html>[T:covert ops]</a>
| <a href=!tops11.html>[T:objectives]</a>",
mod_tops( "[T:top scores in single game]", SORT => $c || 3 ),
$skills_totals,
);
}

for my $c ( '', 3..9 )
{
html_save( "wep$c", "[T:sort by]:
<a href=!wep3.html>[T:Shots]</a>
| <a href=!wep4.html>[T:Hits]</a>
| <a href=!wep5.html>[T:Head]</a>
| <a href=!wep6.html>[T:Kills]</a>
| <a href=!wep7.html>[T:Acc.%]</a>
| <a href=!wep8.html>[T:HeadAcc.%]</a>",
mod_weapons_totals( "[T:weapons totals]", SORT => $c || 6 ) );
}

for my $w ( keys %WEAPON )
{
my $ww = lc $WEAPON{ $w };
for my $c ( '', 3..9 )
{
html_save( "w_$ww$c", "[T:sort by]:
<a href=!w_${ww}3.html>[T:Shots]</a>
| <a href=!w_${ww}4.html>[T:Hits]</a>
| <a href=!w_${ww}5.html>[T:Head]</a>
| <a href=!w_${ww}6.html>[T:Kills]</a>
| <a href=!w_${ww}7.html>[T:Deaths]</a>
| <a href=!w_${ww}8.html>[T:Acc.%]</a>
| <a href=!w_${ww}9.html>[T:HeadAcc.%]</a>",
# mod_weapons_usage( "[T:usage of weapon] $WEAPON{$w} [T:by clan]", $w, CLAN => 1, SORT => $c || 6),
mod_weapons_usage( "[T:top figures for weapon] $WEAPON{$w} [T:by player]", $w, CLAN => 0, SORT => $c || 6 ) );
}
}

html_save( 'p_', 'no info' ),

print STDERR "profile: writing output: ".(time()-$T)." seconds\n" and $T = time() if $PROFILE;

##############################################################################

sub mod_tops
{
my $title = shift;
my %opt = @_;
my $clan = $opt{ 'CLAN' };

my @data;

my @p = keys %nam;
@p = grep /^!/, @p if $clan;
@p = grep ! /^!/, @p if ! $clan;

push @data, [ 'HEAD', "[>5%]#", "[30%]Player/Clan",
"[>7%]XP",
map( { '[>7%]' . $SKILL_IMG{ $_ } } ( 0..6 ) ),
"[>7%]OBJ",
];

my $r = 0;
for my $p ( @p )
{
my $pc = color_name( $p );

my $og = $player{ $p }{ 'TOP_OBJ_GAME' };
my $ob = $player{ $p }{ 'TOP_OBJ' };

my $ti = $player{ $p }{ 'TOP_SCORE_GAME' };
my $xp = $player{ $p }{ 'TOP_SCORE' };

my @sk = map( { $player{ $p }{ 'TOP_SKILL' }{ $_ } } ( 0..6 ) );
my @sg = map( { $player{ $p }{ 'TOP_SKILL_GAME' }{ $_ } } ( 0..6 ) );

push @data, [ '', "(ROW)", "<a class=t href=!p_$href{$p}.html>$pc</a>",
"$xp<a href=game_$ti\.html>*</a>",
map( { $sk[$_] > 0 ? "$sk[$_]<a href=game_$sg[$_].html>*</a>" : undef } ( 0..6 ) ),
$ob > 0 ? "$ob<a href=game_$og\.html>*</a>" : undef,
];
}

return "<h2>$title</h2>" . html_table( \@data, SORT => $opt{ SORT }, FLOOR => $TOPS_FLOOR );
}

##############################################################################

sub mod_clan_members
{
my $title = shift;
my %opt = @_;
my $clan = shift;

my @data;

my @pl = keys %{ $members{ $clan } };

push @data, [ 'HEAD', "[25%]Player", "[25%]Player", "[25%]Player", "[25%]Player" ];

while( @pl )
{
my @r;
for( 1..4 )
{
my $p = shift @pl;
my $pc = color_name( $p );
push @r, "<a class=t href=!p_$href{$p}.html>$pc</a>";
}
push @data, [ '', @r ];
}

return "<h2>$title</h2>" . html_table( \@data );
}

##############################################################################

sub mod_player_clan_stats
{
my %opt = @_;
my $clan = $opt{ 'CLAN' };

my @data;

my $text;

$text .= "<p>";
$text .= $clan ? "<h2>Clans</h2>" : "<h2>Players</h2>";

push @data, [ 'HEAD', "[>5%]#", "[15%]Clan", "[30%]Player", "[>10%i]Kills", "[>10%i]Deaths", "[>10%]K/D", "[>20%]Preferred Weapon" ];
if( $clan )
{
$data[-1][2] = "[15%]";
$data[-1][3] = "[30%]Clan";
}

my @p = keys %nam;

for my $p ( @p )
{
next if $clan and $p !~ /^!/;
next if !$clan and $p =~ /^!/;

my $k = $kil{ $p } || 0;
my $d = $ded{ $p } || 0;
my $r = $d > 0 ? sprintf "%.2f", $k / $d : 'n/a'; #'

my $c = get_clan( $p );

my $target1 = $href{ $c };
my $target2 = $href{ $p };

$p =~ s/>/&gt;/go;
$p =~ s/</&lt;/go;

my $w;
( $w, undef ) = hash_max( $wep{ $p } );
$w ||= 'n/a';

my $class = tr_class();
$p = color_name( $p );
$c = color_name( $c );
push @data, [ '', '(ROW)', "<a class=t href=!p_$target1.html>$c</a>",
"<a class=t href=!p_$target2.html>$p</a>",
$k, $d, $r,
"<a class=t href=!wep.html>$w</a>" ];
}
push @data, [ 'FOOT', '', '', 'Totals:', '(SUM)/i', '(SUM)/i', '', '' ];
$text .= html_table( \@data, SORT => $opt{ 'SORT' }, SORTA => $opt{ 'SORTA' }, FLOOR => $opt{ 'FLOOR' } );
$text .= "\n\n\n\n";
return $text;
}

##############################################################################

sub single_game_stats
{
my $gr = shift; # game hash reference
my %opt = @_;

my $side = $opt{ 'SIDE' };
my $type = $opt{ 'TYPE' };

my $game = $gr->{ 'STATS' };

my $text;

#$text .= Dumper( $gr );
#$text = "<pre>$text</pre>";

my @data_w;
my @data_d;
my @data_s;

push @data_w, [ 'HEAD', '[>1%]#', '[30%]Player', '[1%]Side', '[>i]Shots', '[>i]Hits', '[>i]Head', '[>i]Kills', '[>i]Deaths', '[>p]Acc.%', '[>p]HeadAcc.%', ];
push @data_d, [ 'HEAD', '[>1%]#', '[30%]Player', '[1%]Side', '[>i]Damage Given', '[>i]Damage Received', '[>i]Team Damage', ];
push @data_s, [ 'HEAD', '[>1%]#', '[30%]Player', '[1%]Side', map( { '[>7%i]' . $SKILL_IMG{ $_ } } ( 0..6 ) ), '[>12%i]SCORE' ];

my @p = keys %$game;
@p = grep { $game->{ $_ }{ 'SIDE' } eq 'AXIS' } @p if $side eq 'AXIS';
@p = grep { $game->{ $_ }{ 'SIDE' } eq 'ALLIES' } @p if $side eq 'ALLIES';
#@p = sort { $game->{ $a }{ 'SIDE' } cmp $game->{ $b }{ 'SIDE' } } @p;
@p = sort { $game->{ $b }{ 'SCORE' } <=> $game->{ $a }{ 'SCORE' } } @p;

for my $p ( @p )
{
my $v = $game->{ $p };
my $wt = $v->{ 'WEAPONS_TOTALS' };
my $pc = color_name( $p );
my $sc = color_name( $v->{ 'SIDE' } );
push @data_w, [ '', '(ROW)',
"[<]<a class=t href=!p_$href{$p}.html>$pc</a>",
"<a class=t href=!p_sides.html>$sc</a>",
$wt->{ 'S' },
$wt->{ 'H' },
$wt->{ 'E' },
$wt->{ 'K' },
$wt->{ 'D' },
$wt->{ 'HA' },
$wt->{ 'EA' },
];

if( $type eq 'DETAILS' )
{
for my $w ( sort keys %{ $v->{ 'WEAPONS' } } )
{
$wt = $v->{ 'WEAPONS' }{ $w };
push @data_w, [ 'COMT', '(ROW)',
'[>]' . $WEAPON{ $w },
"<a class=t href=!p_sides.html>$sc</a>",
$wt->{ 'S' },
$wt->{ 'H' },
$wt->{ 'E' },
$wt->{ 'K' },
$wt->{ 'D' },
$wt->{ 'HA' },
$wt->{ 'EA' },
];
}
}
push @data_d, [ '', '(ROW)',
"<a class=t href=!p_$href{$p}.html>$pc</a>",
color_name( $v->{ 'SIDE' } ),
$v->{ 'DAMAGE' }{ 'SENT' },
$v->{ 'DAMAGE' }{ 'RECV' },
$v->{ 'DAMAGE' }{ 'TEAM' },
];
my @ss;
push @ss, $v->{ 'SKILL' }{ $_ } for ( 0..6 );
push @data_s, [ '', '(ROW)',
"<a class=t href=!p_$href{$p}.html>$pc</a>",
color_name( $v->{ 'SIDE' } ),
@ss,
$v->{ 'SCORE' }
];
}

push @data_w, [ 'FOOT', '', '', 'Total:', '(SUM)/i', '(SUM)/i', '(SUM)/i', '(SUM)/i', '(SUM)/i', '(AVE)/p', '(AVE)/p', ];
push @data_d, [ 'FOOT', '', '', 'Total:', '(SUM)/i', '(SUM)/i', '(SUM)/i', ];
push @data_s, [ 'FOOT', '', '', 'Total:', map { '(SUM)/i' } ( 0 .. 6 ), '(SUM)/i' ];

$side = color_name( $side );
$text .= "<h3>$side Shots and accuracy</h3>" . html_table( \@data_w ) if $type eq 'SHOTS';
$text .= "<h3>$side Damage</h3>" . html_table( \@data_d ) if $type eq 'DAMAGE';
$text .= "<h3>$side Skills</h3>" . html_table( \@data_s ) if $type eq 'SKILLS';
$text .= "<h3>Detailed Shots and accuracy</h3>" . html_table( \@data_w ) if $type eq 'DETAILS';

return $text;
}

sub single_game_transcription
{
my $gr = shift; # game hash reference
my %opt = @_;

my $text;

my @data_t;
for( @{ $gr->{ 'TRANS' } } )
{
push @data_t, [ '', '(ROW)', color_name( $_ ) ];
}
$text .= "<h3>Transcription</h3>" . html_table( \@data_t, FLOOR => 1_000_000 );

return $text;
}

#----------------------------------------------------------------------------

sub mod_top_scores_stats
{
my $title = shift;
my $p = shift; # player
my %opt = @_;

return undef unless $player{ $p };

my @data_s;

push @data_s, [ 'HEAD', '[>5%]#', '[<40%]Skill', '[>10%i]Top Score', 'In which game' ];

for my $s ( sort { $player{ $p }{ 'SKILL' }{ $b } <=> $player{ $p }{ 'SKILL' }{ $a } } 0..6 )
{
my $sc = $player{ $p }{ 'TOP_SKILL' }{ $s };
next unless $sc > 0;
my $ti = $player{ $p }{ 'TOP_SKILL_GAME' }{ $s };
my $des = $games{ $ti }{ 'DES' };
push @data_s, [ '', '(ROW)', $SKILL_IMG{ $s } . " " . $SKILL{ $s },
$sc,
"<a href=game_$ti\.html>$des</a>"
];
}
my $tot;
$tot .= $SKILL_IMG{ $_ } for ( 0..6 );
push @data_s, [ 'FOOT', '', "$tot TOTAL XP",
$player{ $p }{ 'TOP_SCORE' },
''
];

#push @data_s, [ 'FOOT', '', '', '' ];

return "<h2>$title</h2>" . html_table( \@data_s );
}

#----------------------------------------------------------------------------

sub mod_skills_totals
{
my $title = shift;
my %opt = @_;

my @data_s;

push @data_s, [ 'HEAD', '[>5%]#', 'Skill', '[>20%i]Score' ];

for my $s ( sort { $skills{ $b } <=> $skills{ $a } } keys %skills )
{
push @data_s, [ '', '(ROW)', $SKILL_IMG{ $s } . " " . $SKILL{ $s }, $skills{ $s } ];
}

my $tot;
$tot .= $SKILL_IMG{ $_ } for ( 0..6 );
push @data_s, [ 'FOOT', '', "[<]$tot TOTAL XP", '(SUM)/i' ];

return "<h2>$title</h2>" . html_table( \@data_s );
}

#----------------------------------------------------------------------------

sub mod_weapons_stats
{
my $title = shift;
my $p = shift; # player
my %opt = @_;

return undef unless $player{ $p };

my @data_w;

push @data_w, [ 'HEAD', '[>5%]#', '[40%]Weapon', '[>i]Shots', '[>i]Hits', '[>i]Head', '[>i]Kills', '[>i]Deaths', '[>p]Acc.%', '[>p]HeadAcc.%', ];

for my $w ( sort { $player{ $p }{ 'TOP_WEAPONS' }{ $b }{ 'K' } <=> $player{ $p }{ 'TOP_WEAPONS' }{ $a }{ 'K' } } keys %{ $player{ $p }{ 'TOP_WEAPONS' } } )
{
my $wt = $player{ $p }{ 'TOP_WEAPONS' }{ $w };
eval
{
$wt->{ 'HA' } = ( 100 * $wt->{ 'H' } ) / $wt->{ 'S' };
$wt->{ 'EA' } = ( 100 * $wt->{ 'E' } ) / $wt->{ 'S' };
};
my $wn = $WEAPON{ $w };
my $ww = lc $wn;
push @data_w, [ '', '(ROW)',
"<a href=!w_$ww.html>$wn</a>",
$wt->{ 'S' },
$wt->{ 'H' },
$wt->{ 'E' },
$wt->{ 'K' },
$wt->{ 'D' },
$wt->{ 'HA' },
$wt->{ 'EA' },
];
}

push @data_w, [ 'FOOT', '', 'Total:', '(SUM)/i', '(SUM)/i', '(SUM)/i', '(SUM)/i', '(SUM)/i', '(AVE)/p', '(AVE)/p', ];

return "<h2>$title</h2>" . html_table( \@data_w, SORT => 6 );
}

#----------------------------------------------------------------------------

sub mod_weapons_usage
{
my $title = shift;
my $w = shift; # weapon
my %opt = @_;

my $clan = $opt{ 'CLAN' };

my $ww = lc $WEAPON{ $w };

my @data_w;

push @data_w, [ 'HEAD', '[>5%]#', '[40%]Player/Clan', "[>i]Shots", "[>i]Hits", "[>i]Head", "[>i]Kills", "[>i]Deaths", "[>p]Acc.%", "[>p]HeadAcc.%", ];
#for my $p ( sort { $player{ $b }{ 'WEAPONS' }{ $w }{ 'K' } <=> $player{ $a }{ 'WEAPONS' }{ $w }{ 'K' } } keys %player )
for my $p ( keys %player )
{
next if $clan and $p !~ /^!/;
next if !$clan and $p =~ /^!/;

my $wt = $player{ $p }{ 'TOP_WEAPONS' }{ $w };
next if $wt->{ 'S' } == 0;
eval
{
$wt->{ 'HA' } = ( 100 * $wt->{ 'H' } ) / $wt->{ 'S' };
$wt->{ 'EA' } = ( 100 * $wt->{ 'E' } ) / $wt->{ 'S' };
};
my $pc = color_name( $p );
push @data_w, [ '', '(ROW)',
"<a class=t href=!p_$href{$p}.html>$pc</a>",
$wt->{ 'S' },
$wt->{ 'H' },
$wt->{ 'E' },
$wt->{ 'K' },
$wt->{ 'D' },
$wt->{ 'HA' },
$wt->{ 'EA' },
];
}

push @data_w, [ 'FOOT', '', 'Total:', '(SUM)/i', '(SUM)/i', '(SUM)/i', '(SUM)/i', '(SUM)/i', '(AVE)/p', '(AVE)/p', ];

return "<h2>$title</h2>" . html_table( \@data_w, SORT => $opt{ 'SORT' } );
}

#----------------------------------------------------------------------------

sub mod_weapons_totals
{
my $title = shift;
my %opt = @_;

my @data_w;

push @data_w, [ 'HEAD', '[>5%]#', '[40%]Weapon', '[>i]Shots', '[>i]Hits', '[>i]Head', '[>i]Kills', '[>p]Acc.%', '[>p]HeadAcc.%', ];

for my $w ( keys %weapons )
{
my $wt = $weapons{ $w };
eval
{
$wt->{ 'HA' } = ( 100 * $wt->{ 'H' } ) / $wt->{ 'S' };
$wt->{ 'EA' } = ( 100 * $wt->{ 'E' } ) / $wt->{ 'S' };
};
my $wn = $WEAPON{ $w };
my $ww = lc $wn;
push @data_w, [ '', '(ROW)',
"<a href=!w_$ww.html>$wn</a>",
$wt->{ 'S' },
$wt->{ 'H' },
$wt->{ 'E' },
$wt->{ 'K' },
$wt->{ 'HA' },
$wt->{ 'EA' },
];
}

push @data_w, [ 'FOOT', '', 'Total:', '(SUM)/i', '(SUM)/i', '(SUM)/i', '(SUM)/i', '(AVE)/p', '(AVE)/p', ];

return "<h2>$title</h2>" . html_table( \@data_w, SORT => $opt{ 'SORT' } );
}

##############################################################################

my %seen_weaponstats = ();
sub parse_weaponstats
{
my $ws = shift;
my $game_time = shift; # to skip seen weponstats per game
# WeaponStats:
# 2 1 3145756 0 0 0 1 0 3 14 0 0 0 0 0 0 1 0 0 0 0 1 0 3 8 1 0 1 238 472 0 65 9 5
my @ws = split /\s+/, $ws;

my %data;

$data{ 'CLIENT' } = shift @ws;
$data{ 'PLAYER' } = $client{ $data{ 'CLIENT' } }{ 'n' };
$data{ 'SIDE' } = $SIDE{ $client{ $data{ 'CLIENT' } }{ 't' } };
$data{ 'CLASS' } = $CLASS{ $client{ $data{ 'CLIENT' } }{ 'c' } };
$data{ 'CARRY' } = shift @ws; # 0 = first round, 1 == carry, i.e. second or next round

my $p = $data{ 'PLAYER' };

next if $seen_weaponstats{ "$game_time:$ws" }++;

my @wep = reverse split //, sprintf '%b', shift @ws;
my $wc = -1; # weapon counter
for( @wep )
{
$wc++;
next unless $_;

my $h = $data{ 'WEAPONS' }{ $wc }{ 'H' } = shift @ws;
my $s = $data{ 'WEAPONS' }{ $wc }{ 'S' } = shift @ws;
$data{ 'WEAPONS' }{ $wc }{ 'K' } = shift @ws;
$data{ 'WEAPONS' }{ $wc }{ 'D' } = shift @ws;
my $e = $data{ 'WEAPONS' }{ $wc }{ 'E' } = shift @ws;
eval
{
$data{ 'WEAPONS' }{ $wc }{ 'HA' } = ( 100 * $h ) / $s;
$data{ 'WEAPONS' }{ $wc }{ 'EA' } = ( 100 * $e ) / $s;
};
}
for my $w ( keys %{ $data{ 'WEAPONS' } } )
{
for my $a ( qw( S H K D E ) )
{
my $wwa = $data{ 'WEAPONS' }{ $w }{ $a };
$data{ 'WEAPONS_TOTALS' }{ $a } += $wwa;
$player{ $p }{ 'WEAPONS_TOTALS' }{ $w }{ $a } += $wwa;
$weapons{ $w }{ $a } += $wwa;

if( $player{ $p }{ 'TOP_WEAPONS' }{ $w }{ $a } < $wwa )
{
$player{ $p }{ 'TOP_WEAPONS' }{ $w }{ $a } = $wwa;
$player{ $p }{ 'TOP_WEAPONS_GAME' }{ $w }{ $a } = $game_time;
}
}
}
eval
{
$data{ 'WEAPONS_TOTALS' }{ 'HA' } = ( 100 * $data{ 'WEAPONS_TOTALS' }{ 'H' } ) / $data{ 'WEAPONS_TOTALS' }{ 'S' };
$data{ 'WEAPONS_TOTALS' }{ 'EA' } = ( 100 * $data{ 'WEAPONS_TOTALS' }{ 'E' } ) / $data{ 'WEAPONS_TOTALS' }{ 'S' };
};
$data{ 'DAMAGE' }{ 'SENT' } = shift @ws;
$data{ 'DAMAGE' }{ 'RECV' } = shift @ws;
my $td = $data{ 'DAMAGE' }{ 'TEAM' } = shift @ws;

my $cp = get_clan( $p );
$top_td{ $p } = $td if $td > $top_td{ $p };
$top_td{ $cp } = $td if $td > $top_td{ $cp };

my @ski = reverse split //, sprintf '%b', shift @ws;
my $sc = -1; # skill counter
for( @ski )
{
$sc++;
next unless $_;
my $sk = shift @ws;
$data{ 'SKILL' }{ $sc } = $sk; # each skill for this game (xp)
$data{ 'SCORE' } += $sk; # score for this game (xp sum)

# skill totals
$skills{ $sc } += $sk;

# top skills
if( $sk > $player{ $p }{ 'TOP_SKILL' }{ $sc } )
{
$player{ $p }{ 'TOP_SKILL' }{ $sc } = $sk;
$player{ $p }{ 'TOP_SKILL_GAME' }{ $sc } = $game_time;
}
}
# top scores
if( $data{ 'SCORE' } > $player{ $data{ 'PLAYER' } }{ 'TOP_SCORE' } )
{
$player{ $p }{ 'TOP_SCORE' } = $data{ 'SCORE' };
$player{ $p }{ 'TOP_SCORE_GAME' } = $game_time;
}

return $data{ 'SCORE' } > 0 ? \%data : undef; # ako nqma tochki, ne e igral :)
}

#----------------------------------------------------------------------------

sub mod_kpm_stats
{
my $title = shift;
my %opt = @_;
my $clan = $opt{ 'CLAN' };

my @data;

push @data, [ 'HEAD', '[>5%]#', '[<40%]Player', '[>10%i]Top Kills', 'In which game' ];

for my $p ( sort { $kpm{ $b } <=> $kpm{ $a } } keys %kpm )
{
next if $clan and $p !~ /^!/;
next if !$clan and $p =~ /^!/;

my $pc = color_name( $p );
my $k = $kpm{ $p };
my $ti = $kpm_game{ $p };
my $des = $games{ $ti }{ 'DES' };

push @data, [ '',
'(ROW)',
"[<]<a class=t href=!p_$href{$p}.html>$pc</a>",
$k,
"<a href=game_$ti\.html>$des</a>"
];
}

return "<h2>$title</h2>" . html_table( \@data );
}

#----------------------------------------------------------------------------

sub mod_hash_stats
{
my $title = shift;
my $hr = shift;
my %opt = @_;
my $text;

my $clan = $opt{ 'CLAN' };
my $tfmt = $opt{ 'TIMEFMT' };
my $head = $opt{ 'HEAD' };

my $sum = hash_sum( $hr );

my @data;

$text .= "<p>";
$text .= "<h2>$title</h2>";

push @data, [ 'OPT', "width=05% align=right", "width=40%", "width=30% align=right", "width=25% align=right" ];
if( $head )
{
push @data, [ 'HEAD', split /\s*,\s*/, $head ];
}
else
{
push @data, [ 'HEAD', "#", "Name", "Value", "Percentage" ];
}

my $row = 0;
for my $k ( sort { $hr->{ $b } <=> $hr->{ $a } } keys %$hr )
{
next if $clan and $k !~ /^!/;
next if !$clan and $k =~ /^!/;

my $v = $hr->{ $k };
my $p = $sum > 0 ? sprintf "%.2f%%", 100 * $v / $sum : 'n/a'; # '

if( $href{ $k } )
{
$k = "<a class=t href=!p_$href{$k}.html>".color_name( $k )."</a>";
}
else
{
$k = color_name( $k );
}

$p = 'n/a' if $opt{ 'NOP' };

if ( $row < $FLOOR )
{
$row++;
my $class = tr_class();
$v = time_fmt( $v ) if $tfmt;
push @data, [ '', '(ROW)', $k, $v, $p ];
}
}
$sum = time_fmt( $sum ) if $tfmt;
if( $opt{ 'NOP' } )
{
pop( @$_ ) for ( @data );
}
else
{
push @data, [ 'FOOT', '', 'Total:', $sum, '' ];
}
$text .= html_table( \@data );
$text .= "\n\n\n\n";
return $text;
}

#----------------------------------------------------------------------------

sub mod_hash_stats_2d
{
my $title = shift;
my $hr = shift;
my %opt = @_;
my $text;

return '' unless $hr;
return '' unless %$hr;

my $head = $hr->{ 'HEAD' } || die "mod_hash_stats_2d: no HEAD info";
my $foot = $hr->{ 'FOOT' } || {};
my $cols = $hr->{ 'COLS' } || {};
my @cols = keys %$head;
while( my ( $k, $v ) = each %$head )
{
next unless $v =~ s/^<(\d+)>//;
$cols->{ $k } = $1;
$head->{ $k } = $v;
}
@cols = sort { $cols->{ $a } <=> $cols->{ $b } } @cols;

my $c = 1;
$cols->{ $_ } = $c++ for @cols;

my $text;
my @data;
my @temp;

my @list = grep ! /^(HEAD|FOOT|COLS)$/, keys %$hr;

return '' unless @list;

@temp = ( 'HEAD' );
push @temp, $head->{ $_ } for @cols;
push @data, [ @temp ];

for my $e ( @list )
{
@temp = ( '' );
push @temp, $hr->{ $e }{ $_ } for @cols;
push @data, [ @temp ];
}

@temp = ( 'FOOT' );
push @temp, $foot->{ $_ } for @cols;
push @data, [ @temp ];

$text .= "<h2>$title</h2>";
$text .= html_table( \@data, $opt{ 'SORT' } => $cols->{ $opt{ 'SORT' } },
$opt{ 'SORTA' } => $cols->{ $opt{ 'SORTA' } } );
$text .= "\n\n\n\n";
return $text;
}

#----------------------------------------------------------------------------

sub mod_kill_killed
{
my $title = shift;
my $p = shift; # player
my %opt = @_;

my @data;
push @data, [ 'HEAD', "[>5%]#", "[25%]Killed:", "[>10%]Times", "[>10%]%",
"[>5%]#", "[25%]Killed by:", "[>10%]Times", "[>10%]%" ];

my @killed = sort { $kil2{ $p }{ $b } <=> $kil2{ $p }{ $a } } keys %{ $kil2{ $p } };
my @killby = sort { $ded2{ $p }{ $b } <=> $ded2{ $p }{ $a } } keys %{ $ded2{ $p } };

my $sum_k = hash_sum( $kil2{ $p } );
my $sum_d = hash_sum( $ded2{ $p } );

my $c = 0;
while(4)
{
my $k = shift @killed;
my $d = shift @killby;

my $kv = $kil2{ $p }{ $k };
my $dv = $ded2{ $p }{ $d };

my $kp = $sum_k > 0 ? ( 100 * $kv ) / $sum_k : 0;
my $dp = $sum_d > 0 ? ( 100 * $dv ) / $sum_d : 0;

my $kc = color_name( $k );
my $dc = color_name( $d );

push @data, [ '', '(ROW)', "<a class=t href=!p_$href{$k}.html>$kc</a>", $kv, "$kp/p",
'(ROW)', "<a class=t href=!p_$href{$d}.html>$dc</a>", $dv, "$dp/p" ];

last unless @killed or @killby;
last if ++$c == $FLOOR;
}

push @data, [ 'FOOT', '', '[>]Total:', '(SUM)', '',
'', '[>]Total:', '(SUM)', '' ];

return "<h2>$title</h2>" . html_table( \@data );
}

#----------------------------------------------------------------------------

sub mod_games_for_player
{
my $title = shift;
my $p = shift; # player
my %opt = @_;

my @games_text;
push @games_text, [ 'HEAD',
'[>5%]#',
'[15%]Map',
'[25%]Finish Time',
'[>5%]IXP',
'[>5%]AXP',
'[5%]TLH',
'[40%]Players' ];

for my $gr ( @games )
{
next unless $gr->{ 'STATS' }{ $p };

my $ti = $gr->{ 'TIME' };
my $ma = $gr->{ 'MAP' };
my $tm = localtime( $ti );
$tm =~ s/:\d\d / /; # remove seconds
my $pl = sprintf "%02d", $gr->{ 'PLAYERS' };
my $ww = $pl * 8;

my $des = $gr->{ 'DES' } = "$tm, $pl [T:pl.] [T:on] $ma";

push @games_text, [ '',
'(ROW)',
$ma,
"<a href=!game_$ti.html>$tm</a>&nbsp;(<a href=!game_$ti\_trans.html>T</a>)",
$gr->{ 'AXIS_XP' },
$gr->{ 'ALLIES_XP' },
$gr->{ 'TIMELIMIT' } ? 'Yes' : 'No',
"$pl <img src=#$theme/img/wp.gif height=10 width=$ww>"
];
}

return "<h2>$title</h2>" . html_table( \@games_text );
}

#----------------------------------------------------------------------------

sub html_table_cmp
{
my $aa = shift;
my $bb = shift;
my $ta = shift;
my $tb = shift;
my $sa = shift;

return -1 if $ta eq 'HEAD';
return 1 if $tb eq 'HEAD';
return 1 if $ta eq 'FOOT';
return -1 if $tb eq 'FOOT';

$aa = $3 if $aa =~ /^(\[([^\]]+)\])?(.+)(\/([ip]))?$/o;
$bb = $3 if $bb =~ /^(\[([^\]]+)\])?(.+)(\/([ip]))?$/o;

return $sa ? $aa cmp $bb : $bb <=> $aa;
}

sub html_table
{
my $ar = shift;
my %opt = @_;

my $text;
$text .= "<table class=ets width=100% cellspacing=1 cellpadding=5>\n";
my @or; # options row
my @ft; # format type
my $r = -1; # row

my @ar = @$ar;

my $floor = $opt{ 'FLOOR' } || $FLOOR;

my $oc = $opt{ 'SORT' } || $opt{ 'SORTA' }; # sort/order column
@ar = sort { html_table_cmp( $a->[$oc], $b->[$oc], $a->[0], $b->[0], $opt{ 'SORTA' } ) } @ar if $oc > 0;

for my $rr ( @ar )
{
$r++ if $rr->[0] eq '';
if( $floor > 0 )
{
next if $rr->[0] eq 'COMT' and $r >= $floor;
next if $rr->[0] eq '' and $r >= $floor;
}
my $c = -1; # column
my $class = tr_class( $r );
@or = @$rr and next if $rr->[0] eq 'OPT';
$class = 'hh' if $rr->[0] eq 'HEAD'; # header
$class = 'ff' if $rr->[0] eq 'FOOT'; # footer
$class = 'cc' if $rr->[0] eq 'COMT'; # comments
$text .= "<tr class=$class>\n";
for( @$rr )
{
my $d = $_;
$c++;
next if $c == 0;

if( $d =~ s/^\[([^\]]+)\]// )
{
my $p = $1; # params
my $o; # opts
$o .= " align=right" if $p =~ />/o;
$o .= " width=$1" if $p =~ /(\d+%)/o;
$or[$c] = $o;
$ft[$c] = lc $1 if $p =~ /([ip])$/io;
#print STDERR "TABLE OPT: $p --> $o\n";
#$text .= "TABLE OPT: $p --> $o<br>";
}
my $f;
$f = $ft[$c] if $rr->[0] ne 'HEAD' and $rr->[0] ne 'FOOT';
$f = lc $1 if $d =~ s/\/([ip])$//io; # nt, [p]ercent
$d = table_sum( $ar, $c ) if $d eq '(SUM)';
$d = table_ave( $ar, $c ) if $d eq '(AVE)';
$d = table_med( $ar, $c ) if $d eq '(MED)';

$d = num_fmt( int $d ) if $f eq 'i';
$d = $d > 0 ? sprintf "%.2f%%", $d : '' if $f eq 'p';

$d = $r + 1 if $d eq '(ROW)';
$d = "<span class=hitext>$d</div>" if $oc > 1 and $c == $oc and ! $$rr[0];
$text .= "<td class=etstd $or[$c]>$d</td>\n";
}
$text .= "</tr>\n";
}
$text .= "</table>\n";
return $text;
}

sub table_sum
{
my $ar = shift;
my $col = shift;
my $sum = 0;
for my $rr ( @$ar )
{
next if $rr->[0] ne ''; # skip HEAD,FOOT
$sum += $rr->[$col];
}
return $sum;
}

sub table_ave
{
my $ar = shift;
my $col = shift;
my $sum = 0;
my $cnt = 0;
for my $rr ( @$ar )
{
next if $rr->[0] ne ''; # skip HEAD,FOOT
$sum += $rr->[$col];
$cnt++;
}
return $cnt > 0 ? $sum / $cnt : 0;
}

sub table_med
{
my $ar = shift;
my $col = shift;
my @sum;
for my $rr ( @$ar )
{
next if $rr->[0] ne ''; # skip HEAD,FOOT
push @sum, $rr->[$col];
}
@sum = sort { $b <=> $a } @sum;
return $sum[ @sum / 2 ];
}

##############################################################################

sub time_fmt
{
my $data = shift;
my $d = int($data / (24*60*60));
my $h = int(($data % (24*60*60)) / (60*60));
my $m = int(($data % (60*60)) / 60);
my $s = $data % 60;
return sprintf "%6dd %02dh %02dm %02ds", $d, $h, $m, $s;
}

sub num_fmt
{
my $s = shift;
$s = reverse $s;
1 while $s =~ s/(\d\d\d)(\d)([^']*)$/$1'$2$3/;
$s = reverse $s;
}

sub html_save
{
my $file = shift;
$file = "$output_dir/$file.html";
my $text = join '', $html_header, @_, $html_footer;
my $time = scalar localtime();
$text =~ s/\[TIME\]/$time/g;
$text =~ s/\[ENV:([^\]]+)\]/$ENV{$1}/g;
$text =~ s/href=!/href=$web_prefix/gio;
$text =~ s/href=#/href=$web_dir/gio;
$text =~ s/src=#/src=$web_dir/gio;
$text =~ s/\[T\:([^\]]*)\]/$translation{$1}||$1/gie; # \: is to avoid get_trans.pl
save_file( $file, $text ) or die "$0: cannot save html file: $file\n";
#print STDERR "file $file written ok\n";
}

sub color_name
{
my $s = shift;
my $cs = $nam_color{ $s } || $s;
# return $s unless $cs;
my $c = $cs =~ s/\^(.)/"<font color=#" . $COLOR{ lc $1 } . ">"/gie;
$cs .= "</font>" x $c;
return "<span class=name>$cs</name>";
}

sub tr_class
{
$_[0] % 2 ? 'r1' : 'r2';
}

sub hash_max
{
my $hr = shift;
my $max_k = undef;
my $max_v = undef;
while( my ( $k, $v ) = each %$hr )
{
if( $max_v eq '' or $v > $max_v )
{
$max_k = $k;
$max_v = $v;
next;
}
}
#print STDERR "$max_k, $max_v\n";
return ( $max_k, $max_v );
}

sub hash_sum
{
my $hr = shift;
my $sum = 0;
while( my ( $k, $v ) = each %$hr )
{
next if $k =~ /^!/;
$sum += $v;
}
return $sum;
}

our %CLAN_CACHE;
sub get_clan
{
my $s = shift;
my $cc = $CLAN_CACHE{ $s };
return $cc if $cc;
return uc '!' . $clan_map{ $s } if %clan_map;
my $c = '';
$c = $1 if $s =~ /^\[([^\]]+)\]/o;
$c = $1 if $s =~ /\[([^\]]+)\]$/o;
$c = $1 if $s =~ /^([A-Z]{2,3})[:\-\|]/io;
return $CLAN_CACHE{ $s } = uc "!$c";
}

sub load_file
{
my $file = shift;
my $i;
open( $i, $file ) or return undef;
local $/ = undef;
my $s = <$i>;
close $i;
return $s;
}

sub save_file
{
my $file = shift;
my $o;
open( $o, ">$file" ) or return 0;
print $o @_;
close $o;
return 1;
}

###TEST#######################################################################

=pod

Axis HELLS BELLS 0 1 0 0 0 0 0 125 0 0
4 0 1 0 0 0 1 0 0 125 0 0

Allies ValBo 2 4 0 1 33 17 360 800 66 31
0 1 133657 0 8 0 0 0 6 9 1 0 0 14 28 1 0 0 0 2 0 0 0 0 4 0 0 0 0 0 0 4 0 360 800 66 19 8 20 3

+++++++++
WS WeaponStats: 2 1 3145756 0 0 0 1 0 3 14 0 0 0 0 0 0 1 0 0 0 0 1 0 3 8 1 0 1 238 472 0 65 9 5
Axis [LUD]CADE 1 3 0 0 25 0 238 472 0 14
WS 2 1
3145756 (1100000000000000011100)
0 0 0 1 0
3 14 0 0 0
0 0 0 1 0
0 0 0 1 0
MP-40 3 8 1 0 1

238 472 0
65 9 5

Weapon Acrcy Hits/Atts Kills Deaths Headshots
-------------------------------------------------
Colt : 0 1 0
MP-40 : 21.4 3/14 0 0 0
Thompson : 0 1 0
Garand : 0 1 0
K43 Rifle: 37.5 3/8 1 0 1

Damage Given: 238 Team Damage: 0
Damage Recvd: 472

Rank: Schutze (14 XP)
Skills Level/Points
---------------------------
Battle Sense 0 (9/20)
Covert Ops 0 (5/20)

------------------------------------------------------------------------------

tova e po-skoro tehnicheska tema taka che ako na nqkoi ne mu e interesno da q
propusne oshte sega

mai uspqh da razbera kakvo oznachava WeaponStats ot log-a, bih iskal da go
post-na tuk v sluchai
che na nqkoi mu potrqbva ili mu e interesno

ta v loga nakraq na vsqka igra se poqvqva tova (t.e. podobni redove ):

WeaponStats: 2 1 3145756 0 0 0 1 0 3 14 0 0 0 0 0 0 1 0 0 0 0 1 0 3 8 1 0 1 238 472 0 65 9 5

i sega edno po edno:

2 -- nomer na client-a (player)
1 -- tova mai e za kolko rounds sa tezi danni
3145756 -- bitmap s izpolzvanite oryjiq (binarno e: 1100000000000000011100) t.e.
izpolzvani sa 5 oryjiq (colt,mp40,thompson,garand,k43) sledvat grupi
ot po 5 chisla za vsqko polzvano oryjie i
oznachavat: hits, shots, kills, deaths, headshots

t.e. gornite chisla predstavlqvat tova:

Weapon Acrcy Hits/Atts Kills Deaths Headshots
-------------------------------------------------
Colt : 0 1 0
MP-40 : 21.4 3/14 0 0 0
Thompson : 0 1 0
Garand : 0 1 0
K43 Rifle: 37.5 3/8 1 0 1

sledvashtite 3 chisla sa:

Damage Given: 238
Damage Recvd: 472
Team Damage: 0

sled tova pak ima bitmap na izpolzvanite abilities (clasove)
65 -- binarno e 1000001 i levelite za tezi abilities:

Skills Level/Points
---------------------------
Battle Sense 0 (9/20)
Covert Ops 0 (5/20)

Rank-a mai samo se sybira, t.e. e 14

voila

btw: thanx na Lg-Badluck che mi obyrna vnimanie na komandata /statsdump!

cheers!


=cut

###EOF########################################################################
n1 polakscript
Parent
?????

Bulgaria is the new Poland eh?
Parent
bind mouse1 "play sound/etpro/headshot"
bind mouse5 "kill; forcetapout"
bind mouse1 "+attack"
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="pl" lang="pl">
<head>
<!-- <![CDATA[
********************************************************************************************
* Jezeli widzisz ten komunikat lecz nie wybrales opcji "pokaz zrodlo strony" oznacza to, *
* ze zetknales sie z niezwykle rzadkim bledem w przegladarce Microsoft Internet Explorer. *
* *
* Aby usunac ow blad i moc prawidlowo ogladac kompresowane strony WWW powinienes *
* zainstalowac poprawke firmy Microsoft, ktora dostepna jest pod adresem: *
* http://reklama.wp.pl/as/gzip_page.html lub http://reklama.wp.pl/as/gzip_patch.html *
********************************************************************************************
// ]]> -->
<title>Wirtualna Polska - www.wp.pl</title>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=iso-8859-2" />
<meta http-equiv="Expires" content="0" />
<meta http-equiv="Pragma" content="no-cache" />
<meta http-equiv="Cache-Control" content="no-cache" />
<meta name="author" content="Wirtualna Polska" />
<meta name="Keywords" content="wp.pl,wp,Wirtualna Polska,Wirtualna,Polska,Katalog,Katalog WWW,Firmy,Encyklopedia,Pogoda,Wiadomosci,Sklep,Kawiarenka,MP3" />
<meta name="description" content="Pierwszy horyzontalny portal internetowy w Polsce. Skuteczne medium reklamowe. Bogactwo serwisow informacyjnych i finansowych. Centrum wyszukiwania, komunikacji i rozrywki: wiadomosci, wyszukiwarki, poczta, webpark, czat, komunikator, SMS, randki, kartki, krzy&#380;ówki, mp3, gry, gry on-line, muzyka, film. Platforma e-commerce: aukcje, zakupy, przetargi, oferty, turystyka." />
<link rel="shortcut icon" href="http://www.wp.pl/favicon.ico" />
<meta http-equiv="pics-label" content='(pics-1.1 "http://www.icra.org/ratingsv02.html" l gen true for "http://www.wp.pl" r (nz 1 vz 1 lz 1 oz 1 cz 1))' />
<script src="i/const/js/wpjslib.js" type="text/javascript"></script>
<script type="text/javascript">
WP.stat.gemius('coWacc7R.xHk.xzhRC.LgpQJ38OGWzuyOAxvi8UATAr.s7');
WP.stat.dot('wpx_glowna','1234712191.652');
</script>

<style type="text/css" id="mainStyles">
/* <![CDATA[ */
body { background-color:#fff; }
body, p, td, ul, li, form {
font: normal 12px/120% Arial, Helvetica, sans-serif;
color:#505050;
padding:0;
margin:0;
}
h1, h2, h3, h4, h5, h6 { margin: 0; padding: 0; }
a:link, a:active { color:#044e8e; text-decoration:none; }
a:visited { color:#6f7887; text-decoration:none; }
a:hover { text-decoration: underline; }
img { border:0; }
ul { list-style:none; }
ul li { background: transparent url(http://www.wp.pl/i/const/200612/dot.gif) no-repeat top left; padding: 0 0 4px 8px; }
.mt5 { margin-top:5px; }
.fl { float:left; }
.fr { float:right; }
.clr { font-size:0; clear:both; height:0; line-height:0; }
.off { display:none; }
.bb { border:1px solid red; }

.more { font:bold 10px/13px Tahoma, Helvetica, sans-serif; text-align:right; padding-right:10px; }
.more a { white-space:nowrap; }
.more a strong { color: #fb8800; }

.newN { color:#e31115; font-weight:bold; background:url(http://www.wp.pl/i/const/200612/nowy.gif) no-repeat top right; padding-right:9px; margin-right:2px; }
.new { color:#e31115; font-weight:bold; }
.red { color:#e31115; }
.newLink { color:#e31115; font-weight:bold; background:url(http://www.wp.pl/i/const/200612/nowy.gif) no-repeat top right; padding-right:9px; margin-right:2px; }
.beta { color:#e31115; font-weight:bold; background:url(http://www.wp.pl/i/const/200612/beta.gif) no-repeat top right; padding-right:15px; margin-right:2px; }

.btnLong, .btnLong:link, .btnLong:visited, .btnLong:active { display:block; width:94px; height:19px; padding-top:3px; background-image:url(http://www.wp.pl/i/const/200612/kaf_btn2.gif); background-repeat:no-repeat; background-position:-66px 0; float:right; color:white; font-size:12px; text-align:center; text-decoration:none; }


/**** CUE ****/
.cueTab { position:relative; }
.cueTab a.dostosuj {position:absolute; right:12px; top:-22px; cursor:pointer;z-index:2; }
* html body .cueTab a.dostosuj { top:-23px; }
.cueTab a:link, .cueTab a:active, .cueTab a:visited {
font: normal 10px/10px Tahoma, Arial, Helvetica, sans-serif; text-decoration: none; color:#8892A3;
}
.cueTab a:hover { color: #a0a8b5; }
.cueBar {position:absolute; width:340px; background-color: #e9ebee; padding: 5px 5px; margin-top: 1px;
font: normal 10px/10px Tahoma, Arial, Helvetica, sans-serif;color:#687282;
}
.cueTab .labelMn { float:left; margin:5px 5px 0 0; }
.cueTab .cueBarA:link, .cueTab .cueBarA:visited, .cueTab .cueBarA:active
{ font-size:11px; display:block; float:left; width:17px; height:19px; padding-top:4px; padding-bottom:1px; text-align:center; vertical-align:bottom; }
.cueTab .cueBarA:hover { background-color:#e4e6ea; }
.cueTab .cueBarAct:link, .cueTab .cueBarAct:visited, .cueTab .cueBarAct:active
{ color:white; background: transparent url(http://www.wp.pl/i/const/200612/cueAct.gif) no-repeat top left;
font-size:11px; display:block; float:left; width:19px; height:20px; padding-top:4px; text-align:center; vertical-align:baseline; }
* html body .cueBarAct, * html body .cueBarAct:visited, * html body .cueBarAct:active { padding-left:1px; margin-top: 2px;}
.dynamicBxUp { position:absolute; display:block; width:51px; height:13px; top:2px; left:287px; background:transparent url(http://www.wp.pl/i/const/200612/cueArr.gif) no-repeat top left; }
.dynamicBxDown { position:absolute; display:block; width:51px; height:13px; top:16px; left:287px; background:transparent url(http://www.wp.pl/i/const/200612/cueArr.gif) no-repeat bottom left; }
.dynamicBxUp:hover, .dynamicBxDown:hover { opacity:.8; }
#bxTlo { display:none; opacity:.3; z-index:5; position:absolute; width:0; height:0; top:0; left:0; overflow:hidden; background-color:#000; }

/***** STRUKTURA *****/
.wpMain { width:770px; margin:0 auto; padding:0; clear:both; background-color:#fff; }
.wpMain:after { clear:both; display:block; content:''; }
#wpTop, #wpBottom { width:770px; background-color:#fff; text-align:center; margin:0 auto; border-bottom:1px solid #fff; }
.wpLeft { width: 420px; float:left; text-align:left; }
.wpRight { width: 340px; float:right; text-align:left; }
#wpServiceBox { margin-bottom:10px; }
#wpServiceBox img { display:block; }
/* wpAdv*/
.wpAdv { display:none; margin:0 auto 10px auto; text-align:center; font:0px/0px arial,sans-seif; text-align:center; }
#adv05 { min-height:145px; }
* html body #adv05 { height:145px; }
/* wpHeader */
#wpHeader { width:770px; height:86px; position:relative; overflow:hidden; margin:0 auto; padding-bottom:10px; text-align:left; background:#fff url(http://www.wp.pl/i/const/200612/wpheaderbg2.gif) repeat-x 0 0;}
#wpHeader .wpLogo { margin: 0; }
#wpHeader #wpHeaderSzukaj { position:absolute; top:7px; right:9px; width:475px; height:69px; background:#fdfdfd url(http://www.wp.pl/i/const/200612/wpheaderbg2.gif) repeat-x 0 -96px; }
#wpHeader .wpHeaderSzukajRight { float:right; width:3px; height:69px; background:transparent url(http://www.wp.pl/i/const/200612/wpheaderbg2.gif) no-repeat 0 -254px; }
#wpHeader .wpHeaderSzukajLeft { float:left; width:3px; height:69px; background:transparent url(http://www.wp.pl/i/const/200612/wpheaderbg2.gif) no-repeat 0 -175px; }
#wpHeader .netsprintLogo { position:absolute; top:11px; right:16px; }
#wpHeader .szukaj { position:absolute; left:12px; top:5px; }
#wpHeader .szukaj li { background:none; padding:0; float:left; vertical-align:top; font-size:16px; }
#wpHeader .szukaj li.on a { font-weight: bold; }
#wpHeader .szukaj li img { vertical-align:top; width:3px; }
#wpHeader .szukaj li a { font-size: 12px; padding: 0px 5px; border-right:1px solid #ccd2d5; }
#wpHeader .szukaj li a.last { border-right:0; color:#044e8e; }
#wpHeader .szukaj li a.last:hover { text-decoration:underline; }
#wpHeader .szukaj li a.last span { color:#8893a4; }
#wpHeader .szukaj li.on a { color:#687282; }
#wpHeader .szukaj a:hover { color:#687282; text-decoration:none; }
#wpHeader .szukaj a.pkt { padding-right:23px; background: transparent url(http://www.wp.pl/i/const/200612/pkt_logo.gif) no-repeat 40px 1px; }
#wpHeader .labelLeft { position:absolute; width:280px; text-align:left; top:51px; left:16px }
#wpHeader .labelRight { position:absolute; width:100px; text-align:right; top:51px; left:294px }
#wpHeader .label a { font: 11px/12px Arial, Verdana, Arial, Helvetica, sans-serif }
#wpHeader .label span { color:#ccd2d5; }

#wpHeader #szukajKatalogLink { background: transparent url(http://www.wp.pl/i/const/200612/arrd.gif) no-repeat right 30%; padding-right:12px; }
#wpHeader .form { position:absolute; left:11px; top:28px; vertical-align:middle; }
#wpHeader input.input { vertical-align:middle; font-size:13px; color:#555; padding:1px 1px 0px 1px; }
#wpHeader select { vertical-align:middle; font-size:13px; color:#555; }
#wpHeader input.btnSzukaj { vertical-align:middle; padding:0; margin:0 0 1px 5px; border:0; width:62px; height:22px; background:transparent url(http://www.wp.pl/i/const/200612/kaf_btn2.gif) no-repeat 0 0; cursor:pointer; color:white; font-size:12px; }
#wpHeader input.btnSzukaj:hover { opacity:.88; }
#wpHeader .opis { font:normal 10px Tahoma, Arial, Helvetica, sans-serif; color:#404244; }
#wpHeader #szukajd1 .input { width:380px; }
#wpHeader #szukajd2 input.firma { width:200px; margin:0 5px 0 2px; }
#wpHeader #szukajd2 input.miasto { width:114px; margin-left:2px; }
#wpHeader #szukajd2 .logo { position:absolute; top:-19px; left:391px; }
#wpHeader #szukajd3 .input { width:280px; margin-right:5px; }
#wpHeader #szukajd3 select { width:95px; }
#wpHeader #szukajd4 .input { width:270px; margin-right:5px; }
#wpHeader #szukajd4 select { width:105px; }
#wpHeader #szukajd5 .ogloszeniaTyp { position:absolute; top:0px; left:0px; width:220px; font-size:10px; vertical-align:middle; }
#wpHeader #szukajd5 .ogloszeniaIn { position:absolute; top:0px; left:205px; width:300px; }
#wpHeader #szukajd5 input { vertical-align:middle; }
#wpHeader #szukajd5 div.opis { position:absolute; top:-12px; left:1px; width:220px; }
#wpHeader #szukajd5 #szOMoto .input { width:80px; }
#wpHeader #szukajd5 #szOMoto select { width:93px; }
#wpHeader #szukajd5 #szONieru .input { width:80px; }
#wpHeader #szukajd5 #szONieru select { width:93px; }
#wpHeader #szukajd5 #szOPraca .input{ width:176px; }
#wpHeader #szukajd5 .btnSzukaj { position:absolute; top:-1px; right:50px; }
* html body #wpHeader #szukajd6 .btnSzukaj { top:1px;}
#wpHeader #szukajd6 input.firma { width:192px; margin:0 5px 0 2px; }
#wpHeader #szukajd6 input.miasto { width:114px; margin-left:2px; }
#wpHeader #szukajd6 .logo { position:absolute; top:-19px; left:391px; }
#wpHeader #szukajd6 .input { width:280px; margin-right:5px; }
/* wpFooter */
#wpFooter { width:760px; clear:both; position:relative; margin:0 auto; text-align:left; font-size:11px; border-top:1px solid #d5dade; padding:7px 5px 15px 5px; background-color:#fff; }
#wpFooter a:link, #wpFooter a:active, #wpFooter a:visited { font-size:11px; padding:0px 4px; }
#wpFooter a:hover { text-decoration:underline; }
#wpFooter .copyright { float:right; color:#252525; text-decoration: none; padding:0px; margin-right:2px; }
#wpFooter .copyright a:link, #wpFooter .copyright a:visited, #wpFooter .copyright a:hover {
color:#252525; text-decoration:none; padding:0px; font-weight: bold; }
#wpFooter .copyright a:hover { text-decoration:underline; }
#wpFooter .validator { margin-top:8px; }
#wpFooterGemius { top:0px; right:0px; position:absolute; }

/***** BOXY *****/
.bx { margin-bottom:10px; }
/* naglowek */
.bx .ng { height:32px; overflow:hidden; position:relative; background:#cdd1d8 url(http://www.wp.pl/i/const/200612/bxC.gif) repeat-x top; border-bottom:1px solid #a1a9b5; }
/* naglowek - grafika na jasnym tle */
.bx .ng .ngL { width:15px; height:45px; float:left; background: transparent url(http://www.wp.pl/i/const/200612/bxL.gif) no-repeat top left; }
.bx .ng .ngR { width:15px; height:45px; float:right; background: transparent url(http://www.wp.pl/i/const/200612/bxR.gif) no-repeat top left; }
/* headery i zawartosc naglowka */
.bx .ng h2 { position:absolute; left:0; z-index:1; padding: 10px 12px 10px 12px; height:12px; font-size:11px; line-height:15px; }
.bx .ng h2, .bx .ng h2 a:link, h2 a:active, h2 a:visited { font: bold 12px/14px 'Trebuchet MS', Arial, Helvetica, sans-serif; color: #6f7887; text-transform:uppercase; }
.bx .ng .opcje { position:absolute; right:12px; top:8px; }
.bx .ng .opcje li { background:none; display:inline; padding:0; }
.bx .ng .opcje a:link, .bx .ng .opcje a:visited, .bx .ng .opcje a:active { font: normal 10px/10px Tahoma, Arial, Helvetica, sans-serif; color:#687282; padding-left:4px; }
/* content */
.bx .cnt { background:transparent url(http://www.wp.pl/i/const/200612/bxbg.gif) repeat-x top left; padding-top:8px; width:340px; }

.bx .cnt .opcje { position:absolute; bottom:8px; }
.bx a.galeria { display:block; width:85px; overflow:hidden; float:left; background:transparent url(http://www.wp.pl/i/const/200612/bulgal.gif) no-repeat left; padding-left:19px; font: 10px Tahoma, Helvetica, sans-serif; }
.bx a.video { display:block; width:85px; overflow:hidden; float:left; background:transparent url(http://www.wp.pl/i/const/200612/bulvid.gif) no-repeat left; padding-left:21px; font: 10px Tahoma, Helvetica, sans-serif; }
.bx a.posluchaj { display:block; width:80px; overflow:hidden; float:left; background:transparent url(http://www.wp.pl/i/const/200612/bulpos.gif) no-repeat left; padding-left:18px; font: 10px Tahoma, Helvetica, sans-serif; }
.bx .cnt .first img { float:left; border:1px solid #6d7686; margin-right:10px; margin-top:3px; }
.bx .cnt .first .txt { width:220px; position:relative; float:left; padding-bottom:10px; min-height:76px; }
.gray .cnt .first .txt { position:static; }
* html body .txt { height:70px; }
* html body .wpRight .cnt .first { padding-bottom:4px; }
.bx .cnt h3, .bx .cnt2 h3, .bx .cnt h3 a, .bx .cnt2 h3 a, .bx .cnt h3, .bx .cnt2 h3, .bx .cnt h3 a:hover, .bx .cnt2 h3 a:hover {
font-weight:bold; font-size:16px; line-height:17px; padding-bottom:2px; letter-spacing:-1px;
}
.bx .bxStopka { margin:3px 0 0 0; color:#505050; font:bold 10px/13px Tahoma, Helvetica, sans-serif; }
.bx .bxStopka a { padding-left:8px; white-space:nowrap; color:#044e8e; }
.cnt .img img, .cnt2 .img img { float: left; margin: 3px 10px 1px 0px; }
.bx a.ngr, a.ngr:visited, a.ngr:hover, span.ngr { color:#656971; background-color:transparent; font-weight:normal; font-size:10px; text-decoration:none; }

.kamerka { padding-right:20px; background:transparent url(http://www.wp.pl/i/const/200612/kamerka.gif) no-repeat right bottom; }

/***** boxy na szarym tle *****/
.gray { background-color:#f1f2f4; padding:10px 10px 1px 10px; margin-bottom:0; }
.grayLast { padding-bottom:8px; margin-bottom:10px; }
* html body .grayLast { padding-bottom:1px; }
.gray .cnt { background:transparent url(http://www.wp.pl/i/const/200612/bxbgc.gif) repeat-x top left; width:400px; }
/* bxPasazfin */
#bxPasazfin { }
#bxPasazfin .txt { position:static; width:285px; }
#bxPasazfin .first .opcje { position:absolute; width:285px; bottom:6px; }
/* bxWppoleca */
#bxWppoleca { }
#bxWppoleca .cnt { padding-bottom:3px; }
#bxWppoleca .cnt .fl { width:190px; }
#bxWppoleca .cnt h3 { padding:0 0 4px 0px; }
#bxWppoleca .cnt h3 a { font:bold 11px/12px 'Trebuchet MS', Arial, Helvetica, sans-serif; color:#7F8795; text-transform:uppercase; letter-spacing:0px; }
#bxWppoleca .cnt2 .fl { width:400px; }
#bxWppoleca .cnt2 { padding-top:7px; border-top: 1px solid #e1e2e4; }
#bxWppoleca .cnt2 h3 { padding-bottom:5px; }

/***** boxy na bialym tle *****/
/* bxProfil */
#bxProfil .bxProfilIcons { width:420px; height:60px; position:relative; background:#f1f3f4 url(http://www.wp.pl/i/const/200612/bxproficobg.gif) repeat-x top; overflow:hidden; }
* html body #bxProfil .bxProfilIcons { float:left; }
#bxProfil .bxProfilIcons .brdl { float:left; }
#bxProfil .bxProfilIcons .brdr { float:right; }
#bxProfil .bxProfilIcons a { display:block; width:59px; float:left; background:transparent url(http://www.wp.pl/i/const/200612/bxproficok.gif) no-repeat top left; font:normal 10px Tahoma, Arial, Helvetica, sans-serif; text-align:center; }
#bxProfil .bxProfilIcons a img.ico { display:block; margin: 3px 2px 0 2px; }
#bxProfil .bxProfilIcons a:hover img { opacity:.87; /* dla MSIE w komentarzu warunkowym */}
#bxProfil .bxProfilIcons a.first { background-image:none; }
#bxProfil .bxProfilIcons .poczta { margin:10px 0 0 10px; display:block; }
#bxProfil .cnt { height:84px; width:418px; overflow:hidden; border:1px solid #cfd3d8; border-top:0; background:#fff url(http://www.wp.pl/i/const/200612/bxprofbg.gif) repeat-x top; padding:0; margin:0;overflow:hidden; }
#bxProfil ul.menu { width:97px; background-color:#e8ebed; }
#bxProfil ul.menu li { background:transparent url(http://www.wp.pl/i/const/200612/bxprofpo.gif) no-repeat top right; padding:0 0 1px 0; border-right:1px solid #c9ccd2; }
#bxProfil ul.menu li.on, #bxProfil ul.menu li.on:hover { border:0; background-color:#fff; }
#bxProfil ul.menu li a { font-size:11px; display:block; height:18px; padding:8px 0 1px 10px; text-decoration:none; }
#bxProfil ul.menu li:hover { background-color:#eff2f2; }
#bxProfil ul.menu li.on a.first { background: transparent url(http://www.wp.pl/i/const/200612/bxprofbg.gif) repeat-x top; }
#bxProfil .loading { margin:25px 0 0 115px; }

#bxProfil .profilCnt { float:left; width:321px; overflow:hidden; padding-top:0px; font:11px Tahoma, Arial, Helvetica, sans-serif; }
#bxProfil .profilCnt .ng { height:auto; border:0; text-align:right; margin:1px 0 0 0; line-height:100%; font-weight:normal; color:#505050; padding:4px 5px 5px 10px; background:#fff url(http://www.wp.pl/i/const/200612/bxprofbg2.gif) repeat-y right; }
#bxProfil .profilCnt .ng span { color:#bbb; }
* html body #bxProfil .profilCnt .ng { margin-top:0; }
#bxProfil .profilCnt h4 { font:11px Tahoma, Arial, Helvetica, sans-serif; padding:0 0 4px 0; margin:0 0 1px 0; }
#bxProfil .profilCnt small { font-size:11px; line-height:12px; }
#bxProfil .profilCnt .cnt2 { padding: 1px; }
#bxProfil .profilCnt .cnt2 .pcnt {position:relative; padding:14px 0 10px 63px; }
#bxProfil .profilCnt .cnt2 .pcnt .pocztaico { position:absolute; top:9px; left:7px; }
* html body #bxProfil .profilCnt .cnt2 .pcnt .pocztaico { left:-55px; }
#bxProfil #bxProfilD2 .ng { text-align:right; }
#bxProfil #bxProfilD2 .ng .arrow { background: transparent url(http://www.wp.pl/i/const/200612/arrd.gif) no-repeat right 30%; padding-right:7px; }
#bxProfil #bxProfilD2 .ng .more { font-weight:normal; padding-left:15px; }
#bxProfil #bxProfilD2 .ng .more strong { color:#fb8800; }

.winDiv { position:relative; z-index:3; }
.winDivCnt { display:none; position:absolute; top:79px; left:273px; z-index:4; width:125px; border:1px solid #cfd3d8; padding:3px; text-align:left; background-color:#fff; }
#katalogStron { top:-24px; }
.winDivCnt li { background-image:none; background-color:#f7f8fa; }
.winDivCnt li a { display:block; width:115px; font-size:11px; text-decoration:none; }
.winDivCnt li a:hover { background-color:#f3f4f7; }
.winDiv .more { font-weight:normal; border-top:1px solid #f0f0f0; padding-right:0; }

#bxProfil #bxProfilD2 .pogoda { width:145px; text-align:left; margin:0 5px; }
#bxProfil #bxProfilD2 .pogoda h4 { margin:0; border-bottom:1px solid #f0f0f0; font-weight:normal; text-transform:uppercase; text-align:center; }
#bxProfil #bxProfilD2 .pogoda h4 a { font:normal 10px Tahoma, Arial, Helvetica, sans-serif; color:#8c8c8c; }
#bxProfil #bxProfilD2 .pogoda img { display:block; margin:2px 8px 0 8px; float:right; }
#bxProfil #bxProfilD2 .pogoda .temp { width:75px; margin-top:8px; float:right; }
#bxProfil #bxProfilD2 .pogoda .temp div { width:22px; float:left; padding: 1px 0 2px 0; }
#bxProfil #bxProfilD2 .pogoda .dy { color:#044e8e; border:1px solid #e9eaeb; border-right:none; background-color:#fff;}
#bxProfil #bxProfilD2 .pogoda .nt { color:#e9eaeb; border:1px solid #e9eaeb; border-right:none; background-color:#044e8e;}
#bxProfil #bxProfilD2 .pogoda div.cl { padding:2px; text-align:left; }
/*Horoskop */
#bxProfil #bxProfilD3 .ng { text-align:right; }
#bxProfil #bxProfilD3 .ng .arrow { background: transparent url(http://www.wp.pl/i/const/200612/arrd.gif) no-repeat right 30%; padding-right:7px; }
#bxProfil #bxProfilD3 .ng .more { font-weight:normal; padding-left:15px; }
#bxProfil #bxProfilD3 .ng .more strong { color:#fb8800; }
#bxProfil #bxProfilD3 .cnt3 { padding:5px 4px 1px 10px; }
#bxProfil #bxProfilD3 .sign img { float:left; }
/* bxMain */
#bxMain .wpNavi { position:relative; width:100%; }
#bxMain .wpNavi:after { display:block; clear:both; font:0px/0px arial,sans-seif; height:0; content:""; }
#bxMain .wpNavi .bxtnl { position:absolute;top:0;left:0; }
#bxMain .wpNavi .bxtnr { position:absolute;top:0;right:0; }
#bxMain .wpNavi li { float:left; height:32px; padding:0; text-align:center; background:#f1f2f4 url(http://www.wp.pl/i/const/200612/bxgs_off.gif) repeat-x top left; }
#bxMain .wpNavi .dziubek { position:absolute; top:32px; left: 49px;}
#bxMain .wpNavi li img.bxgr { float:right; }
#bxMain .wpNavi li img.bxgl { float:left; }
/*wpTab off*/
#bxMain .wpNavi ul.wpTab_off li { width:25%; }
#bxMain .wpNavi ul.wpTab_off li.wpTabLi { display: none; }
/*wpTab on*/
#bxMain .wpNavi ul.wpTab_on li { width:20%; }
#bxMain .wpNavi ul.wpTab_on li.wpTabLi { display:block; }
#bxMain .wpNavi li a, .wpNavi li a:active, .wpNavi li a:visited { height:22px; display:block; padding-top:9px; color:#687282; }
#bxMain .wpNavi li a:hover { background-color:#dde0e6; text-decoration:none; color:#313438; }
#bxMain .wpNavi li.on { background: #828a98 url(http://www.wp.pl/i/const/200612/bxgs_on.gif) repeat-x top left; }
#bxMain .wpNavi li.on a, #bxMain .wpNavi li.on a:active, #bxMain .wpNavi li.on a:visited, #bxMain .wpNavi li.on a:hover { color:#fff; background-color: transparent; }
/*bxMain Tabs cnt */
#bxMain .mainTabCnt { width:418px; min-height:330px; border:1px solid #cfd3d8; border-top:0; background:#f7f8f9 url(http://www.wp.pl/i/const/200612/bxgtbg.gif) repeat-x top left; padding:12px 0 2px 0; }
* html body #bxMain .mainTabCnt { height:320px; }
#bxMain .mainTabCnt .loading { margin:60px 0 0 172px; }
#bxMain .mainTabCnt .cnt { padding: 0 5px 2px 10px; background-image:none; }
#bxMain .mainTabCnt .first .txt { width:208px; min-height:125px; padding-bottom:17px; }
* html body #bxMain .mainTabCnt .first .txt { height:125px; }
#bxMain .mainTabCnt .first { position:relative; width:400px; padding-bottom:1px; }
#bxMain .mainTabCnt .first img { width:180px; }
#bxMain .mainTabCnt .first .opcje { position:absolute; width:285px; bottom:5px; }
#bxMain .mainTabCnt .tabBar { height:25px; padding-top: 0px; background:#fafafa url(http://www.wp.pl/i/const/200612/tabbar.gif) repeat-x bottom; }
#bxMain .mainTabCnt .zajawka { position:absolute; bottom:-24px; width:280px; height:16px; overflow:hidden; font-size:11px; }
#bxMain .mainTabCnt .tabBar .btns div { padding-top:6px; float:right; padding-bottom:3px; }
#bxMain .mainTabCnt .tabBar .btns div:hover { background-color:#f7f8f9; background-image:none; }
#bxMain .mainTabCnt .tabBar .btns a { text-align:center; padding: 0 6px 3px 6px; border-left:1px solid #fff;}
#bxMain .mainTabCnt .tabBar .btns a.next { display:block; width:10px; height:16px; padding-bottom:0; background:transparent url(http://www.wp.pl/i/const/200612/tabbarr.gif) no-repeat 50% 50%; }
#bxMain .mainTabCnt .tabBar .btns a.prev { display:block; width:10px; height:16px; padding-bottom:0; background:transparent url(http://www.wp.pl/i/const/200612/tabbarl.gif) no-repeat 50% 50%; }
#bxMain .mainTabCnt .tabBar .btns div.on { background:transparent url(http://www.wp.pl/i/const/200612/tabbard.gif) no-repeat top center; }
#bxMain .mainTabCnt .tabBar .btns div.on a { color:white; text-decoration:none; padding-top: 3px; }
#bxMain .mainTabCnt .cnt2 { padding:10px 10px 5px 10px; }
#bxMain .mainTabCnt .mgaleria { float:right; width:127px; margin: 10px 3px 5px 0; overflow:hidden; }
#bxMain .mainTabCnt .mgaleria img { border:1px solid #6d7686; margin: 3px 4px 0 0; }
#bxMain .mainTabCnt .footer { border-top:1px solid #c7ccd3; margin: 0 8px 0 8px; padding: 5px 2px 0 2px; }
#bxMain .mainTabCnt .footer a { font-size:92%; color:#505050; }
#bxMain .mainTabCnt a.typ, #bxMain .mainTabCnt a.typ:active, #bxMain .mainTabCnt a.typ:visited { display:block; float:left; width:35px; color:#044e8e; }
#bxMain .zakupy { margin: 0 10px 0 10px; }
#bxMain .zakupy ul { height:112px; overflow:auto; }
* html body #bxMain .zakupy { position: relative; }
#bxMain .label { display:block; color:#6a7183; position:relative; padding:7px 10px 7px 10px; font-size:11px; }
#bxMain .zakupy ul { position:relative; width:390px; }
#bxMain .zakupy li { color: #ec1d23; font-size:12px; padding:0 10px 2px 10px; margin-bottom:1px; border-bottom: 1px solid #e3e7ea; }
#bxMain .zakupy li.last { border: none; }
#bxMain .zakupy li a { text-align:left; overflow:hidden; }
#bxMain .zakupy li span { float:right; }

/* trzy linki w glonews */
.bxMainMore { width:210px; overflow:hidden; border:0; margin:0; padding:0; position:absolute; display:block; bottom:4px; }
.bxMainMore li { margin:0; padding:1px 0 0 10px; font:11px Arial, Helvetica, sans-serif }
.bxMainMore li a { font-family:Tahoma, Arial, Helvetica, sans-serif }
.bxMainMore li.first { padding-left:0; background-image:none; font-weight:bold; }

/* nowa galeria foto/wideo */
.nGaleriaCnt { float:right; width:132px; margin:5px 5px 0 0; }
* html body .nGaleriaCnt { margin-right:3px; }
.nGaleriaFotoCnt { position:relative; height:137px; background-color:#fff; border:1px solid #cfd0d0; border-width:0 1px 0 1px; clear:right; padding-bottom:3px; }
.nGaleriaFotoCnt img { border:1px solid #6d7686; margin:3px 1px 1px 5px; width:55px; height:40px; float:left;}
.nGaleriaFotoCnt a { padding:0; }
.nGaleriaFotoCnt .nGPlay { position:absolute; display:block; border:0; width:14px; height:14px; opacity:.75; cursor:pointer; background:url(http://www.wp.pl/i/const/200612/nGalPlay.png) no-repeat top left; }
.nGaleriaFotoCnt a:hover .nGPlay { opacity:1; }
.nGP1 { top:19px; left:27px; }
.nGP2 { top:19px; left:90px; }
.nGP3 { top:64px; left:27px; }
.nGP4 { top:64px; left:90px; }
.nGP5 { top:110px; left:27px; }
.nGP6 { top:110px; left:90px; }
.nGaleriaRGora { font-size:0;height:1px;overflow:hidden; }
.nGR1 { background-color:#cfd0d0;border-left:2px solid #f6f8fa;border-right:2px solid #f6f8fa; }
.nGR2 { clear:right;float:left; width:1px;border-left:1px solid #f6f8fa;background-color:#cfd0d0; }
.nGR3 { float:right;width:1px;border-right:1px solid #f6f8fa;background-color:#cfd0d0; }
.ngaleria .ngaleriaTop { background-color:#fff; margin:0 -1px; }
.ngaleria .ngaleriaTop b { display:block; height:1px; font-size:0; line-height:0; }
.ngaleria .ngaleriaTop .ngt1 { margin:0 2px 0 2px; border:1px solid #e5e6e7; border-width:0 1px 0 1px; background-color:#cfd0d0; }
.ngaleria .ngaleriaTop .ngt2 { margin:0 1px 0 1px; border:1px solid #cfd0d0; border-width:0 1px 0 1px; }
.ngaleria .ngaleriaTop .ngt3 { margin:0; border:1px solid #e5e6e7; border-width:0 1px 0 1px; }
.on { border-top:0; }
.ngaleriaTab { display:block; height:1px; width:66px; float:left; text-align:center; }
.icoGaleriaTab { height:14px; border:1px solid #cfd0d0; border-width:1px 1px 0 1px; opacity:.65; cursor:pointer; }
.icoGaleria { background:transparent url(http://www.wp.pl/i/const/200612/iGalerieTxt.gif) no-repeat center 0px; }
.icoVideo { background:transparent url(http://www.wp.pl/i/const/200612/iGalerieTxt.gif) no-repeat center -15px; }
.nGaleriaCnt .on { border-top:0; background-color:#fff; height:16px; }
.nGaleriaCnt .on .icoGaleriaTab { height:16px; border-top:0; opacity:1; }
* html body .nGaleriaCnt .on .icoGaleriaTab { height:16px; border-top:0; opacity:1; }
.nGaleriaCnt .on .icoGaleria { background-position:center 2px; }
.nGaleriaCnt .on .icoVideo { background-position:center -13px; }
.ngaleriaTabs { height:19px; font-size:0px; }
.ngaleriaTabs span { display:block; }
.nGalTabBot { font-size:0;height:1px;width:1px;overflow:hidden;border-left:1px solid #f6f8fa;background-color:#cfd0d0; }
.nGalTabBotL { float:left;border-left:1px solid #f6f8fa; }
.nGalTabBotR { float:right;border-right:1px solid #f6f8fa; }
.nGalTabBotB { clear:both; font-size:0;height:1px;width:62px;overflow:hidden;background-color:#cfd0d0;border-left:2px solid #f6f8fa;border-right:2px solid #f6f8fa; }

/* bxSerwisy - lista serwisów */
#bxSerwisy { padding:3px; background-color:#fff; border:1px solid #a9bfd2; }
.serwisyCnt { background-color:#edf3f7; background-image:none; border-bottom:1px solid #e7eef4; padding:2px 0 0 10px; }
#bxSerwisy .serwisyCnt li { background-image:none; padding:2px 0 4px 0; }
#bxSerwisy .serwisyCnt li a { padding: 2px 0 2px 22px; }
/*serwisy ikonki*/
#bxSerwisy .serwisyCnt li a { background-image:url(http://www.wp.pl/i/const/200612/iKafle.gif); background-repeat:no-repeat }
#bxSerwisy li a.aukcje { background-position:0 0 }
#bxSerwisy li a.dzieci { background-position:0 -20px }
#bxSerwisy li a.erotyka { background-position:0 -40px }
#bxSerwisy li a.facet { background-position:0 -60px }
#bxSerwisy li a.film { background-position:0 -80px }
#bxSerwisy li a.gielda { background-position:0 -100px }
#bxSerwisy li a.gierki { background-position:0 -120px }
#bxSerwisy li a.gry { background-position:0 -140px }
#bxSerwisy li a.gwiazdy { background-position:0 -160px }
#bxSerwisy li a.hity { background-position:0 -180px }
#bxSerwisy li a.horoskop { background-position:0 -200px }
#bxSerwisy li a.kartki { background-position:0 -220px }
#bxSerwisy li a.kobieta { background-position:0 -240px }
#bxSerwisy li a.ksiazki { background-position:0 -260px }
#bxSerwisy li a.moto { background-position:0 -280px }
#bxSerwisy li a.mp3 { background-position:0 -300px }
#bxSerwisy li a.muzyka { background-position:0 -320px }
#bxSerwisy li a.ogloszenia { background-position:0 -340px }
#bxSerwisy li a.poczta { background-position:0 -360px }
#bxSerwisy li a.pogoda { background-position:0 -380px }
#bxSerwisy li a.praca { background-position:0 -400px }
#bxSerwisy li a.randki { background-position:0 -420px }
#bxSerwisy li a.sport { background-position:0 -440px }
#bxSerwisy li a.turystyka { background-position:0 -460px }
#bxSerwisy li a.tv { background-position:0 -480px }
#bxSerwisy li a.wptv { background-position:0 -500px }
#bxSerwisy li a.waluty { background-position:0 -520px }
#bxSerwisy li a.wiadomosci { background-position:0 -540px }
#bxSerwisy li a.mobi { background-position:0 -560px }
#bxSerwisy li a.tech { background-position:0 -580px }
#bxSerwisy li a.formula1 { background-position:0 -600px }
#bxSerwisy li a.kultura { background-position:0 -620px }
#bxSerwisy li a.polonia { background-position:0 -640px }
#bxSerwisy li a.studio { background-position:0 -660px }
#bxSerwisy li a.delirium { background-position:0 -680px }
#bxSerwisy li a.ekstraklasa { background-position:0 -700px }
#bxSerwisy li a.radio { background-position:0 -720px }
#bxSerwisy li a.ulubiency { background-position:0 -740px }
#bxSerwisy li a.nocoty { background-position:0 -760px }
#bxSerwisy li a.kuchnia { background-position:0 -780px }
#bxSerwisy li a.fitness { background-position:0 -800px }
#bxSerwisy li a.wirtualni { background-position:0 -820px }
#bxSerwisy li a.forum { background-position:0 -840px }
#bxSerwisy li a.docelu { background-position:0 -860px; }
#bxSerwisy li a.dom { background-position:0 -880px; }
#bxSerwisy li a.hityczykity { background-position:0 -900px; }
#bxSerwisy li a.amisexy { background-position:0 -920px; }
#bxSerwisy li a.narty { background-position:0 -940px; }
#bxSerwisy li a.pikeo { background-position:0 -960px; }
#bxSerwisy li a.whosegame { background-position:0 -980px; }
/**/
.serwisyCnt ul { width:393px; border-bottom:1px solid #cbd9e4; padding:4px 0 1px 0; }
.serwisyCnt ul.last { border:0; }
.serwisyCnt ul:after { display:block; clear:both; font:0px/0px arial,sans-seif; height:0; content:""; }
.serwisyCnt li { display:block; width:98px; float:left; overflow:hidden; white-space:nowrap; }
.serwisyCnt li a, .serwisyFooter li a { font: normal 11px Tahoma, Arial, Helvetica, sans-serif; }

.serwisyFooter { height:20px; background:#e0e9f0 url(http://www.wp.pl/i/const/200612/bxSerwisybg.gif) repeat-x top; margin-top:1px; padding:10px 10px 11px 10px; }

.serwisyFooter ul { padding-top:4px; }
.serwisyFooter li { display:inline; margin-left:2px; }
.serwisyFooter li.first { background-image:none; padding-left:2px; }
#bxSerwisy #bxSerwisyBtn { vertical-align:middle; margin-top:0px; margin-right:1px; }

#bxSerwisyBtn:hover { opacity:.88; text-decoration:none; }

#bxSerwisy .promoIkony { height:22px; background:#e1eaf1; border-top:1px solid #dae4eb; border-bottom:1px solid #dae4eb; margin-top:1px; padding-top:1px; padding-bottom:1px; }
#bxSerwisy .promoIkony ul { border:0 }
#bxSerwisy .promoIkony ul li { padding:0 0 2px 0 }
#bxSerwisy .promoIkony ul li a {color: #0b3c7c }

.promoSerwisy { height:17px; background-color:#e1eaf1; background-image:none; padding-top:1px; padding-bottom:6px; }
.promoSerwisy ul { width:395px; height:15px; overflow:hidden; }

/* serwisy2 - dyn */
#bxSerwisy2 { display:none; z-index:7; position:absolute; width:690px; top:400px; left:200px; overflow:hidden; border:1px solid #a1a9b5; text-align:left; }
#bxSerwisy2 h2 { height:21px; padding:3px 5px 0 10px; background:#dcdfe4 url(http://www.wp.pl/i/const/200612/bxgs_off.gif) repeat-x bottom; font:bold 12px 'Trebuchet MS',Arial,sans-serif; color:#6f7887; text-transform:uppercase; }
#bxSerwisy2 .cnt { padding:1px; background-color:#fafafa; }
#bxSerwisy2 .serwisyCnt { background-color:#fafafa; padding:5px 5px 0 5px; border:0; }
#bxSerwisy2 .serwisyCnt ul { width:125px; border:0; margin:0 5px 0 5px; float:left; }
#bxSerwisy2 .serwisyCnt li { padding:2px 0 3px 14px; background-position:4px 3px; height:15px; width:111px; border-bottom:1px solid #ededed; }
#bxSerwisy2 .serwisyCnt li.last { border:0; }
/* kafelki */
#bxSerwisy2 li.ng { padding:0; margin-top:1px; border-bottom:1px solid #cfd0cf; height:19px; width:125px; background:transparent url(http://www.wp.pl/i/const/200612/serwisy2bg_kfl.gif) no-repeat; }
#bxSerwisy2 li.informacje { background-position:0 0; }
#bxSerwisy2 li.rozrywka { background-position:0 -20px; }
#bxSerwisy2 li.hobby { background-position:0 -40px; }
#bxSerwisy2 li.turystyka { background-position:0 -60px; }
#bxSerwisy2 li.biznes { background-position:0 -80px; }
#bxSerwisy2 li.zakupy { background-position:0 -100px; }
#bxSerwisy2 li.ludzie{ background-position:0 -120px; }
#bxSerwisy2 li.wyszukiwanie { background-position:0 -140px; }
#bxSerwisy2 li.specjalne { background-position:0 -160px; }
/* footer */
#bxSerwisy2 .serwisyFooter { border-top:1px solid #cfd0cf; height:24px; background-color:#fafafa; background-image:none; margin:0 11px; padding:10px 0 10px 0; }
#bxSerwisy2 .serwisyFooter ul { margin-left:-5px; }
#bxSerwisy2 .serwisyFooter ul a { color:#c00; font-weight:bold; }
#bxSerwisy2 .zamknij { position:absolute; top:7px; right:6px; }
#bxSerwisy2Btn { display:block; width:94px; margin-top:1px; height:22px; background-image:url(http://www.wp.pl/i/const/200612/kaf_btn2.gif); background-repeat:no-repeat; background-position:-66px 0; float:right; }
#bxSerwisy2Btn:hover { opacity:.88; }

/* bxKiF */
#bxKiF .cnt { width:420px; height:42px; padding:5px 0 1px 0 }
#bxKiF .ng .kobieta { width:210px; float:left; }
#bxKiF .ng .facet { width:194px; float:right; position:relative; height:32px; border-left:1px solid #dbdee3; }
#bxKiF .ng .opcje { margin-top:1px; right:auto; }
#bxKiF .ng .kobieta .opcje { left:60px; }
#bxKiF .ng .facet .opcje { left:48px; }
#bxKiF .ng .opcje li { background:none; display:inline; padding:0; margin:0;}
#bxKiF .ng .opcje li a {font: normal 10px/10px Tahoma, Arial, Helvetica, sans-serif; color:#687282; padding:0 0 0 4px; margin:0; }
#bxKiF .cnt .kobieta { float:left; width:202px; height:44px; overflow:hidden; margin-left:7px; }
#bxKiF .cnt .facet { float:right; width:202px; height:44px; overflow:hidden; }
#bxKiF img { float:left; margin-top:3px }
#bxKiF ul { float:right; margin:0 0 0 3px; width:142px }
#bxKiF ul li { padding:0 0 1px 7px; }
#bxKiF ul li a { font:11px Tahoma, Arial, Helvetica, sans-serif; }
#bxKiF ul li.first { background:none; padding:0 0 1px 0; }
#bxKiF ul li.first a { font:bold 11px Tahoma, Arial, Helvetica, sans-serif; }

/* bxWiadomosci */
#bxWiadomosci .cnt .first img { width:105px; }
#bxWiadomosci .bxStopka a { color:#505050; padding-left:0; }
#bxWiadomosci .bxStopka a.link { color:#044e8e; padding-left:5px; }
/* bxSport */
#bxSport .cnt .first img { width:100px; }
/* bxBiznes */
#bxBiznes .cnt .first img { width:100px; }
#bxBiznes .bxStopka2 { border-top:1px solid #d5d9de; font:10px Tahoma, Helvetica, sans-serif; margin-top:10px; padding:6px 0 0 0px; text-align:center; }
#bxBiznes .bxStopka2 small { padding-left:8px; font:10px Tahoma, Helvetica, sans-serif; }
#bxBiznes a.waluta, #bxBiznes a.waluta:link, #bxBiznes a.waluta:active, #bxBiznes a.waluta:visited { font:bold 10px Tahoma, Helvetica, sans-serif; color:#505050; text-decoration:none; }
#bxBiznes a.waluta:hover .nazwa { text-decoration:underline; }
* html body #bxBiznes a.waluta:hover { text-decoration:underline; }
#bxBiznes a.waluta .kurs { font-weight:normal; }
#bxBiznes a.waluta span.up { color:#00a817; }
#bxBiznes a.waluta span.down { color:#dc0008; }
/* bxTech */
#bxTech .cnt .first img { width:100px; }
/* bxRozrywka */
#bxRozrywka .cnt .first img { width:100px; }
/*** boxy zakupowe ***/
#wpMainBottom { border-bottom:1px solid #e6e8ea; padding-bottom:3px; }
#wpMainBottomLeft { width:525px; }
#wpMainBottomLeft .bx .cnt { width:525px; }
#wpMainBottomRight { width:235px; }
#wpMainBottomRight .cnt { width:235px; }
#bxTurystyka, #bxOgloszenia { margin-bottom:5px; }
/* bxZakupy */
#bxZakupy .cnt { position:static; height:210px; overflow:hidden; }
#bxZakupy .cnt a.img { float:right; }
#bxZakupy .cnt img { margin:0; }
#bxZakupy .cnt .oferta { float:left; width:206px; margin-left:8px; }
#bxZakupy .cnt .oferta .img { float:left; margin:0 6px 4px 0; }
* html body #bxZakupy .cnt .oferta .img { margin-right:4px; }
#bxZakupy .cnt .oferta h3 { margin-bottom:3px; }
#bxZakupy .cnt ul li { margin-left:5px; }
#bxZakupy .cnt .oferta .first { margin:3px 0 4px 0; padding-top:3px; border-top:1px solid #d9dce2; border-bottom:1px solid #d9dce2; }
#bxZakupy .cnt .oferta .first a { font-weight:bold; }
#bxZakupy .cnt .oferta .marka { font-weight:bold; }
#bxZakupy .cnt #bxZakupyAjax { position:relative; border:1px solid #d9dce2; width:195px; height:206px; padding:1px; margin:0; float:left; }
#bxZakupy .cnt #bxZakupyAjax .loading { margin:57px 0 0 57px;}
#bxZakupy .cnt #bxZakupyAjax .footer { position:absolute; bottom:0; background-color:#f4f6f7; width:195px; height:20px; }
#bxZakupy .cnt #bxZakupyAjax .footer .btn { width:18px; height:14px; background:#d5d8de url(http://www.wp.pl/i/const/200612/bxZakupyBtn.gif) no-repeat; margin:3px 2px 0 2px;
cursor:pointer; }
#bxZakupy .cnt #bxZakupyAjax .footer .next { float:right; background-position:top right; }
#bxZakupy .cnt #bxZakupyAjax .footer .prev { float:left; background-position:top left; margin-right:66px; }
#bxZakupy .cnt #bxZakupyAjax .bm { width:3px; height:3px; border:1px solid #6f7887; font-size:1px; line-height:1px; margin:9px 2px; float:left; }
#bxZakupy .cnt #bxZakupyAjax a { vertical-align:bottom; float:left; display:block; width:92px; height:88px; float:left; margin:5px 0 0 2px; font:bold 10px Ta
homa, Arial, Helvetica, sans-serif; color:#687282; text-align:center; overflow:hidden; }
#bxZakupy .cnt #bxZakupyAjax a img { display:block; text-decoration:none; margin:auto; }
#bxZakupy .cnt2 { background-color:#f1f2f4; padding:7px 10px 10px 10px; border-top: 1px solid #e1e2e4; }
#bxZakupy .cnt2 .fl { width:200px; }
#bxZakupy .cnt2 h3 { padding-bottom:3px; }
#bxZakupy .cnt2 h3 a { font-weight:bold; font-size: 15px; letter-spacing:-1px; }
#bxZakupy .cnt2 ul { margin-top: 1px; }
#bxZakupy .cnt2 .polecane { float:left; width:178px; padding:5px; margin:3px 10px 0 0; border:1px solid #aaa; background-color:#fff; }
#bxZakupy .oferta h4 { font:bold 12px/16px Arial,helvetica,sans-serif; margin-bottom:3px; }
#bxZakupy .oferta h4 a { font: bold 12px/16px Arial,helvetica,sans-serif; letter-spacing:0; }

/* bxTurystyka */
#bxTurystyka .cnt a, #bxTurystyka .cnt li { font-size:11px; }
#bxTurystyka .cnt .miejsce { font-size:12px; color:#555; font-weight:bold; }
#bxTurystyka .cnt span { color:#d70008; font-weight:bold; }
#bxTurystyka .cnt .oferty { float:left; width:254px; overflow:hidden; }
#bxTurystyka .cnt .loty { float:right; width:264px; overflow:hidden; }
#bxTurystyka .cnt ul { display:block; float:left; margin-top:5px; }
#bxTurystyka .cnt ul li { padding:0 0 2px 10px; }
#bxTurystyka .cnt .oferty ul { width:144px; border-top:1px solid #e0e0e0; margin-top:4px; padding-top:4px; }
#bxTurystyka .cnt .loty ul li a { font-weight:bold; }
#bxTurystyka .cnt li.uwaga { color:#99a; font-size:9px; background-image:none; padding:2px 0 0 0; }

/* bxAukcje */
#bxAukcje { height:250px; border-bottom:1px solid #e1e3e8; }
#bxAukcje .cnt { padding:5px 0; }
#bxAukcje .cnt .ramka { border:1px solid #e0e0e0; padding:3px 0 0 3px; height:68px; overflow:hidden; }
#bxAukcje .cnt .ramka img { margin:0 6px 0 0; }
#bxAukcje .cnt .ramka .cena { padding-top:2px; }
#bxAukcje .cnt .rejestracja { display:block; padding:0 0 5px 10px; }
#bxAukcje .cnt ul li a.marka { font-weight:bold; }
#bxAukcje .cnt ul { width:235px; margin-top:5px; }

#bxAukcje .cnt li { background:#fff none; padding:2px 10px 2px 6px; margin-bottom:1px; }
#bxAukcje .footer { padding:10px 0 4px 10px; border-top:1px solid #e1e3e8; }
#bxAukcje .footer .more { float:right; font-weight:normal; font-size:11px; }

/* bxOgloszenia */
#bxOgloszenia .cnt a.towar { color:#555; font-size:12px; font-weight:bold; }
#bxOgloszenia .cnt ul { display:block; width:124px; float:left; border-top:1px solid #e0e0e0; margin-top:4px; padding-top:4px; }
#bxOgloszenia .cnt ul li { padding: 0 0 2px 10px; font-size:11px; }
/* bxKatalog */
#bxKatalog .cnt { width:760px; text-align:left; padding-left:10px; }
#bxKatalog .cnt ul { float:left; width:103px; }
#bxKatalog .cnt ul li.more { background-image:none; }
#bxKatalog .cnt2 { float:left; width:330px; padding-left:10px; }
#bxKatalog .cnt2 ul { width:215px; margin-top:5px; }
#bxKatalog .cnt2 ul li { background-image:none; border-top:1px solid #d9d9d9; padding-left:3px; }
#bxKatalog .cnt2 ul li.first { border-top:0; }
#bxKatalog .cnt2 h3 a { font-size:14px; }

/** box WPtv **/
#dynBoxWPtv { border:1px solid #dfe1e5; height:63px; overflow:hidden; position:relative; }
#dynBoxWPtv .cnt:after {content:''; clear:both; display:block; height:0;}
#dynBoxWPtv .cnt { width:338px; padding:0; margin:0; }
#dynBoxWPtv .cnt .first img { float:left; margin:4px 6px 0 4px; border:1px solid #737b8b; }
#dynBoxWPtv .cnt .first h3 a { font-size:14px; }
#dynBoxWPtv .cnt .pasek { width:210px; height:15px; padding:2px 0 0 5px; position:absolute; right:42px; bottom:4px; background-color:#edf0f4; overflow:hidden; font:10px Tahoma, Arial, Helvetica, sans-serif; color:#6f7887; }
#dynBoxWPtv .cnt .pasek a { font:normal 10px Tahoma, Arial, Helvetica, sans-serif; }
#dynBoxWPtv .cnt .logo { position:absolute; right:2px; bottom:1px; z-index:1; }

/* !patch */
#bxSerwisyBtn:hover { opacity:.88; text-decoration:none; }
/* !----- */

/********* ADV *********/
/**[ wpTab Swieta ]**/
#bxMain .wpNavi #bxMainW5 { background:transparent url(http://www.wp.pl/i/const/200612/wptab_walentynki08.gif) no-repeat top left;}
#bxMain .wpNavi #bxMainW5:hover { opacity:.89; }
#bxMain .wpNavi #bxMainW5 a:hover { background:none; }

.s0 { display:none; }

.playeFLV180 { float:left; border:1px solid #6d7686; margin-right:10px; margin-top:3px; width: 180px; height: 130px;}

/* !patch main event */

#bxMain #bxMainEvent { background:#EAF7FE url(http://www.wp.pl/i/ivar/t/200805/580750.gif) repeat-x top left; height:33px; }
#bxMain #bxMainEvent h3 { padding:0 0 0 1px; margin:0; color:#044E8E; }
#bxMain #bxMainEvent a { color:#044E8E; }
#bxMain .mainTabCntEvent { min-height:295px; background:#EAF7FE url(http://www.wp.pl/i/ivar/t/200805/580751.gif) no-repeat top right; }
* html body #bxMain .mainTabCntEvent { height:296px; }
* html body #bxMain .mainTabCntEvent .first .txt { height:108px; }
#bxMain .mainTabCntEvent .first img { width:138px; }
#bxMain .mainTabCntEvent .first .txt { min-height:108px; height:108px; padding:0; }
#bxMain .mainTabCntEvent .first .txt h3 a { color:#044E8E; }
#bxMain .mainTabCntEvent .first .txt ul { margin-top:10px; }
#bxMain .mainTabCntEvent .first .txt ul a { color:#044E8E; }
#bxMain .mainTabCntEvent .first .txt ul li { position:relative; background: transparent url(http://www.wp.pl/i/const/200612/dot.gif) no-repeat 0 6px; padding: 0 0 4px 8px; }
/* !----- */

#wosp { background: transparent url(http://www.wp.pl/i/const/200612/wosp09_bg.gif) no-repeat top left; text-align:right; width:415px; padding-right:5px; height:25px; padding-top:5px; color:#fff; overflow:hidden; font: bold 15px arial, tahoma, helvetica, sans-serif }
#wosp span { line-height: 21px; }
#wosp .slot { display:block; width:12px; height:20px; color:#222; font-size:15px; text-align:left; margin-right:1px; padding:1px 0 0 3px; float:right; background: transparent url(http://www.wp.pl/i/const/200612/wosp09_slot.gif) no-repeat top center; }


/* Polonia */
.polonia li { margin:0; padding:2px 0 0 0; background:none; }
.polonia li img { float:left; margin:-4px 5px 0 0; }

/* ftKultura w bxRozrywka */
#ftKultura li { padding-left:0; background-image:none; }

#dynWybory2007 .cnt { position:relative; height:122px; overflow:hidden; background:#fff url(http://www.wp.pl/i/const/200612/bxwyb07.gif) no-repeat top left; }
#dynWybory2007 .cnt img { position:absolute; top:15px; left:11px; border:1px solid #505050; }
#dynWybory2007 .cnt ul.zajawki { position:absolute; top:18px; left:116px; }
#dynWybory2007 .cnt ul.zajawki li { font:12px "Courier New", Courier, monospace; color:#fff; background-image:none; }
#dynWybory2007 .cnt ul.zajawki li.first { padding-bottom: 11px; }
#dynWybory2007 .cnt ul.zajawki li.first a { font-weight: bold; }
#dynWybory2007 .cnt ul.zajawki a { font:11px Tahoma, Arial, Helvetica, sans-serif; color:#fff; }
#dynWybory2007 ul.linki { position:absolute; top:107px;}
#dynWybory2007 ul.linki li { background-image:none; float:left; text-align:center; padding:0; }
#dynWybory2007 ul.linki li a { font:bold 11px Tahoma, Arial, Helvetica, sans-serif; color:#ae0e0c; }


/* radioBar */
#bxRadio { margin:10px 0; width:340px; height:30px; position:relative; }
#bxRadio #radioWybrane { position:absolute; left:106px; top:8px; width:90px; height:12px; overflow:hidden; font:normal 10px Tahoma, Arial, Helvetica, sans-serif; text-align:center; text-transform:uppercase; }
#bxRadio img { display:block; }
#radioStacje { width:101px; top:21px; left:106px; }
#radioStacje li { padding:2px 4px; margin:0; }
#radioStacje li a { text-transform:uppercase; width:95px; font:normal 10px Tahoma, Arial, Helvetica, sans-serif; color:#5a5a5a; }
#radioStacje li a:hover { background-color:#fff; color:#111; }

/*]]>*/
</style>

<!--[if gte IE 6]>
<style type="text/css">
#adv04 { height:150px; }
.gray, .grayLast { zoom:1; }
#bxProfil .bxProfilIcons a:hover img { filter:alpha(opacity=87); zoom: 1; }
/* mGaleria */
.icoGaleriaTab { filter:alpha( opacity=65); }
.nGaleriaFotoCnt .nGPlay { background:expression("none"); filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='i/const/200612/nGalPlay.png', sizingMethod='scale', enabled=true); }
.nGaleriaCnt .on .icoGaleriaTab { filter:alpha(opacity=100); }
/**[ wpTab hover ]**/
#bxMain .wpNavi #bxMainW5 a:hover { background-color:#fff; filter:alpha(opacity=8); }
#bxProfil { zoom: 1; }
/* NSG */
#cache { width:770px; margin:0 auto; height:1px; overflow:hidden }
#cache span { width:10px; float:left }
.e01 { background: #fff url(http://www.wp.pl/i/ivar/layout/200812/lsSerwisy.gif) no-repeat }
.e02 { background: #fff url(http://www.wp.pl/i/ivar/layout/200812/skin_1_ng.png) no-repeat }
.e03 { background: #fff url(http://www.wp.pl/i/ivar/layout/200812/xlsbg.gif) no-repeat }
.e04 { background: #fff url(http://www.wp.pl/i/ivar/layout/200812/ppsmall.png) no-repeat }
</style>
<![endif]-->

<script type="text/javascript">
/*<![CDATA[*/
var PWAd=document;var PWAr=Math.round(Math.random()*1E17);if(navigator.product=="Gecko"){window.onunload=function(){return true;}}function PWAjel(en,ec){ return true;}PWAd.write('<'+'img src="http://rek.www.wp.pl/rgr.html?PWAr='+PWAr+'" width="1" height="1" border="0" alt="" style="position:absolute;">');try{var PWAgd=PWAd.location.href;function PB(PWAk){}function JB(PWAk){return false;}function NJB(PWAk){return JB(PWAk);}function PWAgchuid(){return '';}function PWAgs(){ var s=screen; return "&PWAsw="+s.width+"&PWAsh="+s.height;}function PWAcs(){var PWAcsa=PWAd.cookie.split('; ');var PWAcss=''; for(var PWAi=0;PWAi<PWAcsa.length;PWAi++){if(PWAcsa[PWAi].indexOf('reksticket=')!=-1){PWAcss=PWAcss+'&'+PWAcsa[PWAi]; }}return PWAcss; }function PWAss(dn,st){PWAd.getElementById(dn).style.display=st;}function PWAge(en){return PWAd.getElementById(en);}function PWAgPH(){var PWAhtml;if(PWAgd.indexOf('?')>0){PWAhtml=PWAgd.substr(7,PWAgd.indexOf('?')-7);}else{PWAhtml=PWAgd.substr(7);}return '&phtml='+PWAhtml;}function PWAgPI(){if(this.rekid!=null){return rekid;}else{ return 7757;}}function PWAgQ(){var PWAquery;if(PWAgd.indexOf("?")>0){PWAquery=PWAgd.substr(PWAgd.indexOf("?")+1);}else{return "";}var PWAqarray=PWAquery.split("&");PWAquery="";for(var PWAi=0;PWAi<PWAqarray.length;PWAi++){if(PWAqarray[PWAi].indexOf("ticket=")==-1 && PWAqarray[PWAi].indexOf("<")==-1){PWAquery=PWAquery+"&"+PWAqarray[PWAi];}}return PWAquery;}function PWAgUI(){if(this.login!=null){return '&login='+login;}else{return '';}}function PWAgUP(){if(this.advpref!=null){return '&advpref='+advpref;}else{return '';}}function PWAbn(){var bn="";var nua=navigator.userAgent;if(nua.match('MSIE')) bn="ie";if(nua.match('Firefox')) bn="firefox";if(nua.match('Chrome')) bn="chrome";if(nua.match('Opera')) bn="opera";if(nua.match('iPod')) bn="ipod";if(nua.match('iPhone')) bn="iphone";return "&PWAbn="+bn;}function NPB(PWAk,PWAd){try{if((PWAk=='001')){PB('onload',PWAd);}if((PWAk=='002')){PB('baner',PWAd);}if((PWAk=='003')){PB('billboard',PWAd);}if((PWAk=='004')){PB('box',PWAd);}if((PWAk=='005')){PB('srodtekst',PWAd);}if((PWAk=='006')){PB('banerdol',PWAd);PWAko();}if((PWAk=='007')){PB('skyscraper',PWAd);}if((PWAk=='008')){PB('pop',PWAd);}if((PWAk=='009')){PB('toplayer',PWAd);}if((PWAk=='010')){PB('extra10',PWAd);}if((PWAk=='011')){PB('extra11',PWAd);}if((PWAk=='012')){PB('extra12',PWAd);}if((PWAk=='013')){PB('extra13',PWAd);}if((PWAk=='014')){PB('extra14',PWAd);}if((PWAk=='015')){PB('extra15',PWAd);}if((PWAk=='016')){PB('extra16',PWAd);}if((PWAk=='017')){PB('extra17',PWAd);}if((PWAk=='018')){PB('extra18',PWAd);}if((PWAk=='019')){PB('extra19',PWAd);}if((PWAk=='020')){PB('extra20',PWAd);}if((PWAk=='031')){PB('logo',PWAd);}if((PWAk=='034')){PB('megabox',PWAd);}if((PWAk=='037')){PB('megasky',PWAd);}}catch(e){PWAjel('jsfile_p-NPB',e);}}function NJB(PWAk){return JB(PWAk);}function PWAko(){try{var d=document;if(PWAge('adv01')!=null){if(NJB('onload')==false){PWAss('adv01','none');}else{PWAss('adv01','block');}}if(PWAge('adv02')!=null){if(NJB('baner')==false){PWAss('adv02','none');}else{PWAss('adv02','block');}}if(PWAge('adv03')!=null){if(NJB('billboard')==false){PWAss('adv03','none');}else{PWAss('adv03','block');}}if(PWAge('adv04')!=null){if(NJB('box')==false){PWAss('adv04','none');}else{PWAss('adv04','block');}}if(PWAge('adv05')!=null){if(NJB('srodtekst')==false){PWAss('adv05','none');}else{PWAss('adv05','block');}}if(PWAge('adv06')!=null){if(NJB('banerdol')==false){PWAss('adv06','none');}else{PWAss('adv06','block');}}if(PWAge('adv07')!=null){if(NJB('skyscraper')==false){PWAss('adv07','none');}else{PWAss('adv07','block');}}if(PWAge('adv08')!=null){if(NJB('pop')==false){PWAss('adv08','none');}else{PWAss('adv08','block');}}if(PWAge('adv09')!=null){if(NJB('toplayer')==false){PWAss('adv09','none');}else{PWAss('adv09','block');}}if(PWAge('adv10')!=null){if(NJB('extra10')==false){PWAss('adv10','none');}else{PWAss('adv10','block');}}if(PWAge('adv11')!=null){if(NJB('extra11')==false){PWAss('adv11','none');}else{PWAss('adv11','block');}}if(PWAge('adv12')!=null){if(NJB('extra12')==false){PWAss('adv12','none');}else{PWAss('adv12','block');}}if(PWAge('adv13')!=null){if(NJB('extra13')==false){PWAss('adv13','none');}else{PWAss('adv13','block');}}if(PWAge('adv14')!=null){if(NJB('extra14')==false){PWAss('adv14','none');}else{PWAss('adv14','block');}}if(PWAge('adv15')!=null){if(NJB('extra15')==false){PWAss('adv15','none');}else{PWAss('adv15','block');}}if(PWAge('adv16')!=null){if(NJB('extra16')==false){PWAss('adv16','none');}else{PWAss('adv16','block');}}if(PWAge('adv17')!=null){if(NJB('extra17')==false){PWAss('adv17','none');}else{PWAss('adv17','block');}}if(PWAge('adv18')!=null){if(NJB('extra18')==false){PWAss('adv18','none');}else{PWAss('adv18','block');}}if(PWAge('adv19')!=null){if(NJB('extra19')==false){PWAss('adv19','none');}else{PWAss('adv19','block');}}if(PWAge('adv20')!=null){if(NJB('extra20')==false){PWAss('adv20','none');}else{PWAss('adv20','block');}}if(PWAge('adv31')!=null){if(NJB('logo')==false){PWAss('adv31','none');}else{PWAss('adv31','block');}}if(PWAge('adv34')!=null){if(NJB('megabox')==false){PWAss('adv34','none');}else{PWAss('adv34','block');}}if(PWAge('adv37')!=null){if(NJB('megasky')==false){PWAss('adv37','none');}else{PWAss('adv37','block');}} }catch(e){PWAjel('jsfile-PWAko',e);}}function PWAbeq(){var PWAs1='';return PWAs1;}function PWAgMU(PWAmt){return "http://rek.www.wp.pl/index.html?rekid="+PWAgPI()+PWAgUI()+PWAgUP()+"&rektype="+PWAmt+PWAgPH()+PWAcs()+PWAgQ()+PWAbeq()+PWAgs()+PWAgchuid()+PWAbn();}PWAd.write('<scri'+'pt language="Javascript" src="'+ PWAgMU(1) +'&PWAr='+PWAr+'"></scr'+'ipt>');function getFlashVersion(){var PWAfv=0;if(navigator.plugins&&(n=navigator.plugins).length){for(x=0;x<n.length;x++){if(n[x].name.indexOf('Shockwave Flash')!=-1){PWAfv=n[x].description.split('Shockwave Flash ')[1].split('.')[0];}}}else{for(var PWAi=20;PWAi>0;PWAi--){PWAfv=0;try{var flash=new ActiveXObject("ShockwaveFlash.ShockwaveFlash."+PWAi);PWAfv=PWAi;break;}catch(e){}}}return PWAfv;}function getBrowserType(){uAgt='';browserType="";uAgt=navigator.userAgent.toLowerCase();if(uAgt.indexOf("opera")!=-1){browserType="opera";return browserType;}else if(uAgt.indexOf("msie")!=-1){browserType="msie";return browserType;}else if(uAgt.indexOf("mozilla")!=-1){browserType="mozilla";return browserType;}else{browserType="other";return browserType;}}function isWin(){return navigator.platform.indexOf('Win')!=-1;}var i;var selekty=[];if(PWAd.getElementsByTagName){selekty=PWAd.getElementsByTagName("SELECT");}else if(PWAd.all){selekty=PWAd.all.tags("SELECT");}function setSelects(visMode){ if(selekty && selekty.length>0){for(i=0;i<selekty.length;i++){if(selekty.style){selekty.style.visibility=visMode;}} }}}catch(e){PWAjel('jsfile',e);}function PWAhE(e,u,l){PWAjel('PWAhE',e+' '+u+' '+l);return true;}if(window.onerror==null){window.onerror=PWAhE;}else{var oer=window.onerror;window.onerror=function(e,u,l){oer(e,u,l);PWAhE(e,u,l);};};/*]]>*/
</script><script type="text/javascript">
// <![CDATA[

/*************************************************************************************/
/* wpCorelib (c) 2006 by Wirtualna Polska S.A. www.wp.pl &#321;ukasz W&#281;grzy&#324;ski-&#346;cibiorek */
/* Do not copy or modify any part of the following code without permission v1.08 */
/*************************************************************************************/

var ns=(navigator.product=="Gecko");
var opera=(navigator.userAgent.indexOf("Opera")>-1);
var ie=(document.all&&!opera);
var errors=false;
function returnFalse() { return false; }
function dd(id) { if (document.getElementById(id)) return document.getElementById(id); else return false; }
function a(a,b,c,d,e,f) { alert(a+"\n"+b+"\n"+c+"\n"+d+"\n"+e+"\n"+f+"\n"); }
function setEvent ( tb, zd, obj, fn ) {
if (dd(obj)) obj = dd(obj);
if (window.addEventListener) { // Gecko
if (tb) {obj.addEventListener( zd.substr(2), fn, false )} else {obj.removeEventListener( zd.substr(2), fn, false )}
} else { // MSIE, Opera
if (tb) {obj.attachEvent( zd, fn )} else {obj.detachEvent( zd, fn )}
}
}
function getEventNode(e) {
var n;
if (!e) var e = window.event;
if (e.target) n = e.target;
else if (e.srcElement) n = e.srcElement;
if (n.nodeType == 3) // anty-bug w Safari
n = targ.parentNode;
return n;
}
function oCookie() {
this.get = function (name) {
var start = document.cookie.indexOf(name+"=");
var len = start+name.length+1;
if ((!start) && (name != document.cookie.substring(0,name.length))) return null;
if (start == -1) return null;
var end = document.cookie.indexOf(";",len);
if (end == -1) end = document.cookie.length;
return unescape(document.cookie.substring(len,end));
}
this.set = function (name,value,expires,path,domain,secure) {
var cookieString = name + "=" +escape(value) +
((expires) ? ";expires=" + expires.toGMTString() : "") +
((path) ? ";path=" + path : "") +
((domain) ? ";domain=" + domain : "") +
((secure) ? ";secure" : "");
document.cookie = cookieString;
}
this.del = function (name) {
if (this.get(name)) document.cookie = name + "=" +
((path) ? ";path=" + path : "") +
((domain) ? ";domain=" + domain : "") +
";expires=Thu, 01-Jan-70 00:00:01 GMT";
}
this.noexpire = function () {
return expire(60*24*30*12); //rok
}
function expire( min ) {
var today = new Date();
var zero_date = new Date(0,0,0);
today.setTime(today.getTime() - zero_date.getTime());
var cookie_ExpireDate = new Date(today.getTime() + ( min * 1000 * 60 ));
return cookie_ExpireDate;
}
}
if(typeof(wpCookie)=='undefined') var wpCookie = new oCookie(); else errors+='Blad: Zadeklarowano juz zmienna wpCookie'+"\n";
function newClass(id, c) {
if(dd(id)) { dd(id).className=c; } else errors+='Brak id: '+id+"\n";
}
/* whHeader szukaj */
var szukajActiveTab = 1;
function szukajCC(n) {
newClass('szukajP' + szukajActiveTab, '');
dd('szukajd'+szukajActiveTab).style.display='none';
newClass('szukajP' + n, 'on');
dd('szukajd'+ n).style.display='';
//przenoszenie frazy
if (dd('wpSzukaj'+szukajActiveTab).onkeypress!=null) {dd('wpSzukaj'+szukajActiveTab).onkeypress=null;dd('wpSzukaj'+szukajActiveTab).value='';}
dd('wpSzukaj'+n).value = dd('wpSzukaj'+szukajActiveTab).value;
//focus na ostaniej literze
dd('wpSzukaj'+n).focus();
var iLen = dd('wpSzukaj'+n).value.length;
if (dd('wpSzukaj'+n).setSelectionRange)
dd('wpSzukaj'+n).setSelectionRange(iLen,iLen);
else if (dd('wpSzukaj'+n).createTextRange) {
var range = dd('wpSzukaj'+n).createTextRange();
range.collapse(true);
range.moveEnd('character', iLen);
range.moveStart('character', iLen);
range.select();
}
szukajActiveTab=n;
return false;
}
/* tabClick stats */
var tabClickStatTab = new Array();
tabClickStatTab['bxProfil'] = new Array('','prpc','prpg','prhr');
tabClickStatTab['bxMain'] = new Array('','zkgl','zkrz','zkbz','zkzk','zkwt');
tabClickStatTab['dynamicBx'] = new Array('');
tabClickStatTab['bxSerwisy'] = new Array('btls');
tabClickStatTab['dynamicLayer'] = new Array();
tabClickStatTab['bxZakupy'] = new Array('zkzk');
tabClickStatTab['dynamicLayer']['katalogStron']='dlks';
tabClickStatTab['dynamicLayer']['PogodaMiasto']='dlpm';
tabClickStatTab['dynamicLayer']['HoroskopZnak']='dlhz';
function tabClickStats(b, t, st) { // bx, tab_nr, subtab_nr
if (st==undefined) st='';
var SH_DOT=new Image(1,1), r=Math.random();
SH_DOT.src="http://dot.wp.pl/s"+Math.round(r*1E10)+"/show.gif?srv=sg&action="+tabClickStatTab[t]+st;
}
/* bxProfil */
var bxProfilActiveTab = 1;
function bxProfilTabClick(n, stat) {
if(typeof(stat)=='undefined') stat=true;
//ukryj
newClass("bxProfilD"+bxProfilActiveTab,'profilCnt off');
newClass("bxProfilT"+bxProfilActiveTab,'');
//pokaz
newClass("bxProfilD"+n,'profilCnt');
newClass("bxProfilT"+n,'on');
if (dd('bxProfilD'+n).innerHTML.length<120) wpAjax.get(
{
'plik':'bxProfilTab'+n+'.html',
'onSuccess':function(ax) {
dd('bxProfilD'+n).innerHTML=ax.ajaxText;
if (dd('PogodaMiastoAct')) winDivActive['PogodaMiasto'] = dd('PogodaMiastoAct').innerHTML;
if (dd('HoroskopZnakAct')) winDivActive['HoroskopZnak'] = dd('HoroskopZnakAct').innerHTML;
}
}
);
bxProfilActiveTab = n;
winDiv('all', false);
if (stat) tabClickStats('bxProfil', n);
}
var winDivActive= new Array();
winDivActive['PogodaMiasto'] = 1;
winDivActive['HoroskopZnak'] = 1;
winDivActive['katalogStron'] = 1;
var winDivTS= new Array();
winDivTS['PogodaMiasto'] = -1;
winDivTS['HoroskopZnak'] = -1;
winDivTS['katalogStron'] = -1;
function winDiv(id,n) {
if (id=='all') {
//ukryj wszystkie
for (nazwa in winDivActive) dd(nazwa).style.display='none';
} else if (n==false||n==null&&dd(id).style.display=='block') {
//ukryj
dd(id).style.display='none';
} else if (n==true||dd(id).style.display=='none') {
//pokaz
dd(id).style.display='block';
tabClickStats('dynamicLayer',id);
}
return false;
}
function winDivClick(id,n) {
winDiv(id);
dd(id+'Txt').innerHTML=dd(id+'A'+n).innerHTML;
dd(id+'D'+winDivActive[id]).style.display='none';
dd(id+'D'+n).style.display='block';
winDivActive[id] = n;
winDivMouseOver(id);
}
function winDivMouseOut (id) {
if (winDivTS[id]==-1) winDivTS[id] = setTimeout("winDivClose('"+id+"')", 500);
}
function winDivMouseOver (id) {
if (winDivTS[id]!=-1) {
clearTimeout(winDivTS[id]);
winDivTS[id]=-1;
}
}
function winDivClose (id) {
winDiv(id, false);
}
var clickts = -1;
function winDivMouseLinkOver(id) {
if (dd(id).style.display=='none'&&clickts==-1) clickts = setTimeout("winDiv('"+id+"',true)",300);
if (winDivTS[id]>-1) winDivMouseOver(id);
}
function winDivMouseLinkOut(id) {
if (clickts>-1) {
clearTimeout(clickts);
clickts=-1;
}
winDivMouseOut(id);
}

/* wpMain */
var wpTabActive = false;
var bxMainActiveTab = 1; // domyslna zakladka
var bxMainTabCount = 5; // zawsze doliczamy wpTab, nawet jezeli jest niewidoczny
var bxMainActiveSubTab = new Array(0, 1,1,1,1,1); // tu niech zostana same jedynki - [0] nieu&#380;ywane
var bxMainSubTabCount = new Array(0, 0,0,0,0,0); // ile podzakladek - obliczane automatycznie
var bxMainTabImages = new Array();
bxMainTabImages[0]= new Image();bxMainTabImages[0].src='i/const/200612/bxgl_off.gif';
bxMainTabImages[1]= new Image();bxMainTabImages[1].src='i/const/200612/bxgr_off.gif';
bxMainTabImages[2]= new Image();bxMainTabImages[2].src='i/const/200612/bxgs_on.gif';
bxMainTabImages[3]= new Image();bxMainTabImages[3].src='i/const/200612/bxgr_on.gif';
var wpTabShowDziubek = true;
var wpTabDziubek = new Array();
wpTabDziubek[true] = new Array(0,39,122,206,290,373);
wpTabDziubek[false]= new Array(0,49,154,258,363);
var bxMainTabEvent = false;
function bxMainTabClick(n, stat) {
if(stat==undefined) stat=true;
//ukryj
newClass("bxMainTab"+bxMainActiveTab,'mainTabCnt off');
if (dd('bxMainL'+bxMainActiveTab)) dd('bxMainL'+bxMainActiveTab).src=bxMainTabImages[0].src;
if (dd('bxMainR'+bxMainActiveTab)) dd('bxMainR'+bxMainActiveTab).src=bxMainTabImages[1].src;
newClass("bxMainW"+bxMainActiveTab,'');
//pokaz
newClass("bxMainTab"+n,'mainTabCnt');
if (dd('bxMainL'+n)) dd('bxMainL'+n).src=bxMainTabImages[2].src;
if (dd('bxMainR'+n)) dd('bxMainR'+n).src=bxMainTabImages[3].src;
newClass('bxMainW'+n,'on');
if (!wpTabShowDziubek&&n==bxMainTabCount) {
dd('bxMainD').style.display='none';
} else {
dd('bxMainD').style.display='';
dd('bxMainD').style.left=wpTabDziubek[wpTabActive][n]+'px';
}
var evt = ((n==2&&bxMainTabEvent)?'euro2008':'');
if (dd('bxMainTab'+n).innerHTML.length<200) wpAjax.get(
{
'plik':'bxMainTab'+n+evt+'.html',
'onSuccess':function(ax) {
dd('bxMainTab'+n).innerHTML=ax.ajaxText;
if (n!=5) bxMainSubTabsCount();
}
}
);
bxMainActiveTab=n;
if (stat) tabClickStats('bxMain', n);
bxMainEvent(bxMainActiveSubTab[bxMainActiveTab], n);
//czas rotator'a od nowa
i
bind ALT "vstr stats1"
set stats1 "+stats; +topshots; bind ALT vstr stats2"
set stats2 "-topshots; -stats; bind ALT vstr stats1"
//[ Scripts ]
// weaponbank script
set is_sidearm "vstr is_sidearm1"
set is_sidearm0 "set is_sidearm vstr is_sidearm1"
set is_sidearm1 "vstr is_gunhide; weaponbank 2; set is_sidearm vstr is_sidearm2"// Pistol
set is_sidearm2 "vstr is_gunshow; weaponbank 1; set is_sidearm vstr is_sidearm1"// Knife
set is_primary "vstr is_gunshow; weaponbank 3; vstr is_sidearm0" // SMG, rifle, heavy weapons
set is_nade "vstr is_gunshow; weaponbank 4; vstr is_sidearm0" // Grenade
set is_weap5 "vstr is_gunshow; weaponbank 5; vstr is_sidearm0" // Syringe, Plier, Cannist, Smoke
set is_weap6 "vstr is_gunshow; weaponbank 6; vstr is_sidearm0" // Medpack, Ammo, Dyno, Satchel
set is_weap7 "vstr is_gunshow; weaponbank 7; vstr is_sidearm0" // Mines
set is_weap8 "vstr is_gunshow; weaponbank 8; vstr is_sidearm0" // Binoc
vstr is_primary //default weapon at load
// mouse3 mode script
set is_weapalt "set set_weapaltmode vstr is_weapmed; echo ^s<<^7Mouse3 Mode^<::^7Weapon Alternate^S>>; bind MOUSE3 weapalt"
set is_weapmed "set set_weapaltmode vstr is_weaparty; echo ^s<<^7Mouse3 Mode^<::^7Pack^S>>; bind MOUSE3 +vstr is_packstart is_packstop"
set is_weaparty "set set_weapaltmode vstr is_weapalt; echo ^s<<^7Mouse3 Mode^<::^7Arty^S>>; bind MOUSE3 vstr do_arty"
set is_packstart "vstr is_weap6; wait 10; +attack"
set is_packstop "-attack; vstr is_primary"
set do_arty "+zoom;+attack;-attack;-zoom"
set set_weapaltmode "vstr is_weapalt"
vstr set_weapaltmode //default mouse3 function
// seppuku script
set do_seppuku "kill; forcetapout; vstr is_primary"
// gib script
set do_gib "vstr is_sidearm2; wait 10; +attack"
set do_normal "-attack; wait 20; vstr is_primary"
// drawgun toggle script
set is_gunshow "cg_drawgun 1; set set_gunvisibility vstr is_gunhide"
set is_gunhide "cg_drawgun 0; set set_gunvisibility vstr is_gunshow"
set set_gunvisibility "vstr is_gunshow"
vstr is_gunhide
// pmove_fixed script
set is_pmovefixed0 "set pmove_fixed 0; set set_pmovefixed vstr is_pmovefixed1"
set is_pmovefixed1 "set pmove_fixed 1; set set_pmovefixed vstr is_pmovefixed0"
set set_pmovefixed "vstr is_pmovefixed1"
vstr is_pmovefixed0
// walk toggle script
set is_walk "+speed; set set_speed vstr is_run"
set is_run "-speed; set set_speed vstr is_walk"
set set_speed "vstr is_walk"
// sprint toggle script
set is_normal "vstr is_pmovefixed0; -sprint; vstr is_run; set set_sprint vstr is_sprint"
set is_sprint "vstr is_pmovefixed1; vstr is_run; +sprint; set set_sprint vstr is_normal"
set set_sprint "vstr is_normal"
// fov toggle script
set is_fovwide "cg_fov 105; cg_drawcrosshair 5; cg_crosshairSize 38; cg_crosshairColor red; cg_crosshairColorAlt black; cg_crosshairAlpha 1.0; cg_crosshairAlphaAlt 1.000000; sensitivity 3.45"
set is_fovnarrow "cg_fov 90; cg_drawcrosshair 5; cg_crosshairSize 36; cg_crosshairColor cyan; cg_crosshairColorAlt black; cg_crosshairAlpha 1.0; cg_crosshairAlphaAlt 1.000000; sensitivity 3.45"
// command map toggle script
set is_mapshow "+mapexpand; set set_map vstr is_maphide"
set is_maphide "-mapexpand; set set_map vstr is_mapshow"
set set_map "vstr is_mapshow"
// scoreboard toggle script
set is_scoresshow "+scores; set set_scoreboard vstr is_scoreshide"
set is_scoreshide "-scores; set set_scoreboard vstr is_scoresshow"
set set_scoreboard "vstr is_scoresshow"
// statistic toggle script
set is_statsshow "+stats; set set_stats vstr is_statshide"
set is_statshide "-stats; set set_stats vstr is_statsshow"
set set_stats "vstr is_statsshow"
// topshots toggle script
set is_topshow "+topshots; set set_topshots vstr is_tophide"
set is_tophide "-topshots; set set_topshots vstr is_topshow"
set set_topshots "vstr is_topshow"
// voice message mode script
set is_vsayteam "bind V "mp_quickmessage"; echo "^r<<^7Radio mode^<::^7Normal^r>>"; set set_vsaymode vstr is_vsayfireteam"
set is_vsayfireteam "bind V "mp_fireteammsg"; echo "^r<<^7Radio mode^\::^7Fireteam^r>>"; set set_vsaymode vstr is_vsayteam"
set set_vsaymode "vstr is_vsayfireteam"
vstr is_vsayteam
// class selector script
set is_teamaxis "team r 1; vstr is_medic; echo "^Q<<^7Team^Q::^7Axis^Q>>""
set is_teamallied "team b 1l vstr is_medic; echo "^D<<^7Team^D::^7Allied^D>>""
set is_teamspec "team s; vstr is_spec; echo "^9<<^7Spectator^9>>""
set is_medic "class m 1; say_team "^1<<^7Class^1::^7Medic^1>>""
set is_fieldop "class f 1; say_team "^2<<^7Class^2::^7Field ops^2>>""
set is_engineer "vstr is_eng1"
set is_eng2 "class e 2; set is_engineer vstr is_eng1; say_team "^4<<^7Class^4::^7Engineer Rifle^4>>""
set is_eng1 "class e 1; set is_engineer vstr is_eng2; say_team "^4<<^7Class^4::^7Engineer SMG^4>>""
set is_covertop "vstr is_cov2"
set is_cov2 "class c 2; set is_covertop vstr is_cov3; say_team "^e<<^7Class^e::^7CovertOps FG-42^e>>""
set is_cov3 "class c 3; set is_covertop vstr is_cov1; say_team "^e<<^7Class^e::^7CovertOps Sniper^e>>""
set is_cov1 "class c 1; set is_covertop vstr is_cov2; say_team "^e<<^7Class^e::^7CovertOps Sten^e>>""
set is_soldier "vstr is_sol4"
set is_sol4 "class s 4; set is_soldier vstr is_sol2; say_team "^3<<^7Class^3::^7Soldier Panzerfaust^3>>""
set is_sol2 "class s 2; set is_soldier vstr is_sol5; say_team "^3<<^7Class^3::^7Soldier MG-42^3>>""
set is_sol5 "class s 5; set is_soldier vstr is_sol3; say_team "^3<<^7Class^3::^7Soldier Mortar^3>>""
set is_sol3 "class s 3; set is_soldier vstr is_sol1; say_team "^3<<^7Class^3::^7Soldier Flame^3>>""
set is_sol1 "class s 1; set is_soldier vstr is_sol4; say_team "^3<<^7Class^3::^7Soldier SMG^3>>""
// name selector script
set is_nshelpinfo "echo "^l<<^7Use the scrollwheel to choose a nick & hit MOUSE2 to select^l>>""
set do_selectname "vstr is_nshelpinfo; vstr use_mwnameselector"
set myname "echo "^l<<^7Name^z:: ^7Choose a nick first! ^l>>""
set is_name1 "set myname name "^9Shu"; echo "^l<<^7Name^z:: ^9Shu ^l>>""
set is_name2 "set myname name "^OBody^alotion^fWiFi"; echo "^l<<^7Name^z:: ^OBody^alotion^fWiFi ^l>>""
set is_name3 "set myname name "^0tgr^d'^0nexu"; echo "^l<<^7Name^z:: ^0tgr^d'^0nexu ^l>>""
set is_name4 "set myname name "^9~^1x^0_o ^9ne^0x^9u"; echo "^l<<^7Name^z:: ^9~^1x^0_o ^9ne^0x^9u ^l>>""
set is_name5 "set myname name "^8HMB^0|^7Ne^dx^7u"; echo "^l<<^7Name^z:: ^8HMB^0|^7Ne^dx^7u ^l>>""
set is_name6 "set myname name "^0HMB^d|^0Nexu"; echo "^l<<^7Name^z:: ^0HMB^d|^0Nexu ^l>>""
set is_name7 "set myname name "^0:^7ne^dx^7u^0:"; echo "^l<<^7Name^z:: ^0:^7ne^dx^7u^0: ^l>>""
set is_name8 "set myname name "^7:^0ne^dx^0u^7:"; echo "^l<<^7Name^z:: ^7:^0ne^dx^0u^7: ^l>>""
set is_name9 "set myname name "^0:^7ve^dn^7om^0:"; echo "^l<<^7Name^z:: ^0:^7ve^dn^7om^0: ^l>>""
set is_nameA "set myname name "^7:^0ve^dn^0om^7:"; echo "^l<<^7Name^z:: ^7:^0ve^dn^0om^7: ^l>>""
set is_nameB "set myname name "^3#"; echo "^l<<^7Name^z:: ^3# ^l>>""
set do_name1 "vstr is_name1; set is_namenext vstr do_name2; set is_nameprev vstr do_nameB"
set do_name2 "vstr is_name2; set is_namenext vstr do_name3; set is_nameprev vstr do_name1"
set do_name3 "vstr is_name3; set is_namenext vstr do_name4; set is_nameprev vstr do_name2"
set do_name4 "vstr is_name4; set is_namenext vstr do_name5; set is_nameprev vstr do_name3"
set do_name5 "vstr is_name5; set is_namenext vstr do_name6; set is_nameprev vstr do_name4"
set do_name6 "vstr is_name6; set is_namenext vstr do_name7; set is_nameprev vstr do_name5"
set do_name7 "vstr is_name7; set is_namenext vstr do_name8; set is_nameprev vstr do_name6"
set do_name8 "vstr is_name8; set is_namenext vstr do_name9; set is_nameprev vstr do_name7"
set do_name9 "vstr is_name9; set is_namenext vstr do_nameA; set is_nameprev vstr do_name8"
set do_nameA "vstr is_nameA; set is_namenext vstr do_nameB; set is_nameprev vstr do_name9"
set do_nameB "vstr is_nameB; set is_namenext vstr do_name1; set is_nameprev vstr do_nameA"
set is_namenext "vstr do_name1"
set is_nameprev "vstr do_name15"
// demo recording script
set rec_start "set recdemo vstr rec_stop; record"
set rec_stop "set recdemo vstr rec_start; stoprecord"
set recdemo "vstr rec_start"
// brightness script
set is_screenbright "seta r_mapOverbrightBits 3; seta r_overBrightBits 1; seta r_intensity 1.0; set use_bright vstr is_screennormal; vid_restart; echo Lights ^3on"
set is_screennormal "seta r_mapOverbrightBits 2; seta r_overBrightBits 1; seta r_intensity 1.0; set use_bright vstr is_screenbright; vid_restart; echo Lights ^1off"
set set_brightness "vstr is_screenbright"
// audio mute script
set is_audiofull "s_volume 0.95; echo "Game Volume ^7[^3|||||||||-^7]"; set set_audiovolume vstr is_audiohalf"
set is_audiohalf "s_volume 0.47; echo "Game Volume ^7[^3|||||-----^7]"; set set_audiovolume vstr is_audiomute"
set is_audiomute "s_volume 0.01; echo "Game Volume ^7[^3|---------^7]"; set set_audiovolume vstr is_audiofull"
set set_audiovolume "vstr is_audiohalf"
// music mute script
set is_musicfull "s_musicvolume 0.95; echo "Music Volume ^7[^L|||||||||-^7]"; set set_musicvolume vstr is_musichalf"
set is_musichalf "s_musicvolume 0.47; echo "Music Volume ^7[^L|||||-----^7]"; set set_musicvolume vstr is_musicmute"
set is_musicmute "s_musicvolume 0.00; echo "Music Volume ^7[^L----------^7]"; set set_musicvolume vstr is_musicfull"
set set_musicvolume "vstr is_audiohalf"
bind 1 "weaponbank 1; r_Fastsky 1"
bind 2 "weaponbank 2; r_Fastsky 1"
bind 3 "weaponbank 3; r_Fastsky 1"
bind 4 "weaponbank 4; r_Fastsky 0"
bind 5 "weaponbank 5; r_Fastsky 1"
bind 6 "weaponbank 6; r_Fastsky 1"
bind 7 "weaponbank 7; r_Fastsky 1"
bind alt "kill; forcetapout"
Back to top