1 #insert scripts\shared\shared.gsh;
3 #using scripts\shared\rank_shared;
5 #using scripts\shared\bots\_bot;
21 game[
"gameRepInitialized"] =
true;
23 game[
"gameRep"][
"players"] = [];
24 game[
"gameRep"][
"playerNames"] = [];
25 game[
"gameRep"][
"max"] = [];
26 game[
"gameRep"][
"playerCount"] = 0;
33 if ( !isdefined( game[
"gameRepInitialized"] ) || !game[
"gameRepInitialized"] )
44 if ( !level.rankedMatch )
53 THRESHOLD_EXCEEDED_SCORE = 0;
54 THRESHOLD_EXCEEDED_SCORE_PER_MIN = 1;
55 THRESHOLD_EXCEEDED_KILLS = 2;
56 THRESHOLD_EXCEEDED_DEATHS = 3;
57 THRESHOLD_EXCEEDED_KD_RATIO = 4;
58 THRESHOLD_EXCEEDED_KILLS_PER_MIN = 5;
59 THRESHOLD_EXCEEDED_PLANTS = 6;
60 THRESHOLD_EXCEEDED_DEFUSES = 7;
61 THRESHOLD_EXCEEDED_CAPTURES = 8;
62 THRESHOLD_EXCEEDED_DEFENDS = 9;
63 THRESHOLD_EXCEEDED_TOTAL_TIME_PLAYED = 10;
64 THRESHOLD_EXCEEDED_TACTICAL_INSERTION_USE = 11;
65 THRESHOLD_EXCEEDED_JOIN_ATTEMPTS = 12;
66 THRESHOLD_EXCEEDED_XP = 13;
67 THRESHOLD_EXCEEDED_SPLITSCREEN = 14;
70 game[
"gameRep"][
"params"] = [];
72 game[
"gameRep"][
"params"][0] =
"score";
73 game[
"gameRep"][
"params"][1] =
"scorePerMin";
74 game[
"gameRep"][
"params"][2] =
"kills";
75 game[
"gameRep"][
"params"][3] =
"deaths";
76 game[
"gameRep"][
"params"][4] =
"killDeathRatio";
77 game[
"gameRep"][
"params"][5] =
"killsPerMin";
78 game[
"gameRep"][
"params"][6] =
"plants";
79 game[
"gameRep"][
"params"][7] =
"defuses";
80 game[
"gameRep"][
"params"][8] =
"captures";
81 game[
"gameRep"][
"params"][9] =
"defends";
82 game[
"gameRep"][
"params"][10] =
"totalTimePlayed";
83 game[
"gameRep"][
"params"][11] =
"tacticalInsertions";
84 game[
"gameRep"][
"params"][12] =
"joinAttempts";
85 game[
"gameRep"][
"params"][13] =
"xp";
90 game[
"gameRep"][
"ignoreParams"] = [];
91 game[
"gameRep"][
"ignoreParams"][0] =
"totalTimePlayed";
94 game[
"gameRep"][
"gameLimit"] = [];
95 game[
"gameRep"][
"gameLimit"][
"default"] = [];
96 game[
"gameRep"][
"gameLimit"][
"tdm"] = [];
97 game[
"gameRep"][
"gameLimit"][
"dm"] = [];
98 game[
"gameRep"][
"gameLimit"][
"dom"] = [];
99 game[
"gameRep"][
"gameLimit"][
"hq"] = [];
100 game[
"gameRep"][
"gameLimit"][
"sd"] = [];
101 game[
"gameRep"][
"gameLimit"][
"dem"] = [];
102 game[
"gameRep"][
"gameLimit"][
"ctf"] = [];
103 game[
"gameRep"][
"gameLimit"][
"koth"] = [];
104 game[
"gameRep"][
"gameLimit"][
"conf"] = [];
107 game[
"gameRep"][
"gameLimit"][
"id"][
"score"] = THRESHOLD_EXCEEDED_SCORE;
108 game[
"gameRep"][
"gameLimit"][
"default"][
"score"] = 20000;
111 game[
"gameRep"][
"gameLimit"][
"id"][
"scorePerMin"] = THRESHOLD_EXCEEDED_SCORE_PER_MIN;
112 game[
"gameRep"][
"gameLimit"][
"default"][
"scorePerMin"] = 250;
113 game[
"gameRep"][
"gameLimit"][
"dem"][
"scorePerMin"] = 1000;
114 game[
"gameRep"][
"gameLimit"][
"tdm"][
"scorePerMin"] = 700;
115 game[
"gameRep"][
"gameLimit"][
"dm"][
"scorePerMin"] = 950;
116 game[
"gameRep"][
"gameLimit"][
"dom"][
"scorePerMin"] = 1000;
117 game[
"gameRep"][
"gameLimit"][
"sd"][
"scorePerMin"] = 200;
118 game[
"gameRep"][
"gameLimit"][
"ctf"][
"scorePerMin"] = 600;
119 game[
"gameRep"][
"gameLimit"][
"hq"][
"scorePerMin"] = 1000;
120 game[
"gameRep"][
"gameLimit"][
"koth"][
"scorePerMin"] = 1000;
121 game[
"gameRep"][
"gameLimit"][
"conf"][
"scorePerMin"] = 1000;
124 game[
"gameRep"][
"gameLimit"][
"id"][
"kills"] = THRESHOLD_EXCEEDED_KILLS;
125 game[
"gameRep"][
"gameLimit"][
"default"][
"kills"] = 75;
126 game[
"gameRep"][
"gameLimit"][
"tdm"][
"kills"] = 40;
127 game[
"gameRep"][
"gameLimit"][
"sd"][
"kills"] = 15;
128 game[
"gameRep"][
"gameLimit"][
"dm"][
"kills"] = 31;
131 game[
"gameRep"][
"gameLimit"][
"id"][
"deaths"] = THRESHOLD_EXCEEDED_DEATHS;
132 game[
"gameRep"][
"gameLimit"][
"default"][
"deaths"] = 50;
133 game[
"gameRep"][
"gameLimit"][
"dm"][
"deaths"] = 15;
134 game[
"gameRep"][
"gameLimit"][
"tdm"][
"deaths"] = 40;
137 game[
"gameRep"][
"gameLimit"][
"id"][
"killDeathRatio"] = THRESHOLD_EXCEEDED_KD_RATIO;
138 game[
"gameRep"][
"gameLimit"][
"default"][
"killDeathRatio"] = 30;
139 game[
"gameRep"][
"gameLimit"][
"tdm"][
"killDeathRatio"] = 50;
140 game[
"gameRep"][
"gameLimit"][
"sd"][
"killDeathRatio"] = 20;
143 game[
"gameRep"][
"gameLimit"][
"id"][
"killsPerMin"] = THRESHOLD_EXCEEDED_KILLS_PER_MIN;
144 game[
"gameRep"][
"gameLimit"][
"default"][
"killsPerMin"] = 15;
147 game[
"gameRep"][
"gameLimit"][
"id"][
"plants"] = THRESHOLD_EXCEEDED_PLANTS;
148 game[
"gameRep"][
"gameLimit"][
"default"][
"plants"] = 10;
151 game[
"gameRep"][
"gameLimit"][
"id"][
"defuses"] = THRESHOLD_EXCEEDED_DEFUSES;
152 game[
"gameRep"][
"gameLimit"][
"default"][
"defuses"] = 10;
155 game[
"gameRep"][
"gameLimit"][
"id"][
"captures"] = THRESHOLD_EXCEEDED_CAPTURES;
156 game[
"gameRep"][
"gameLimit"][
"default"][
"captures"] = 30;
159 game[
"gameRep"][
"gameLimit"][
"id"][
"defends"] = THRESHOLD_EXCEEDED_DEFENDS;
160 game[
"gameRep"][
"gameLimit"][
"default"][
"defends"] = 50;
163 game[
"gameRep"][
"gameLimit"][
"id"][
"totalTimePlayed"] = THRESHOLD_EXCEEDED_TOTAL_TIME_PLAYED;
164 game[
"gameRep"][
"gameLimit"][
"default"][
"totalTimePlayed"] = 10 * 60;
165 game[
"gameRep"][
"gameLimit"][
"dom"][
"totalTimePlayed"] = 10 * 60;
166 game[
"gameRep"][
"gameLimit"][
"dem"][
"totalTimePlayed"] = 19 * 60;
169 game[
"gameRep"][
"gameLimit"][
"id"][
"tacticalInsertions"] = THRESHOLD_EXCEEDED_TACTICAL_INSERTION_USE;
170 game[
"gameRep"][
"gameLimit"][
"default"][
"tacticalInsertions"] = 20;
173 game[
"gameRep"][
"gameLimit"][
"id"][
"joinAttempts"] = THRESHOLD_EXCEEDED_JOIN_ATTEMPTS;
174 game[
"gameRep"][
"gameLimit"][
"default"][
"joinAttempts"] = 3;
177 game[
"gameRep"][
"gameLimit"][
"id"][
"xp"] = THRESHOLD_EXCEEDED_XP;
178 game[
"gameRep"][
"gameLimit"][
"default"][
"xp"] = 25000;
181 game[
"gameRep"][
"gameLimit"][
"id"][
"splitscreen"] = THRESHOLD_EXCEEDED_SPLITSCREEN;
182 game[
"gameRep"][
"gameLimit"][
"default"][
"splitscreen"] = 8;
193 if ( !isdefined( game[
"gameRep"][
"players"][
name] ) )
195 game[
"gameRep"][
"players"][
name] = [];
197 for( j = 0; j < game[
"gameRep"][
"params"].size; j++ )
199 paramName = game[
"gameRep"][
"params"][j];
200 game[
"gameRep"][
"players"][
name][ paramName ] = 0;
203 game[
"gameRep"][
"players"][
name][
"splitscreen"] =
self IsSplitScreen();
204 game[
"gameRep"][
"players"][
name][
"joinAttempts"] = 1;
205 game[
"gameRep"][
"players"][
name][
"connected"] =
true;
208 game[
"gameRep"][
"playerNames"][ game[
"gameRep"][
"playerCount"] ] =
name;
209 game[
"gameRep"][
"playerCount"]++;
213 if ( !game[
"gameRep"][
"players"][
name][
"connected"] )
215 game[
"gameRep"][
"players"][
name][
"joinAttempts"]++;
216 game[
"gameRep"][
"players"][
name][
"connected"] =
true;
229 if( !isdefined( game[
"gameRep"][
"players"][
name] )
230 || !isdefined(
self.pers[
"summary"] ) )
238 game[
"gameRep"][
"players"][
name][
"connected"] =
false;
244 if ( !isdefined( game[
"gameRep"][
"players"][
name] ) )
247 game[
"gameRep"][
"players"][
name][
"totalTimePlayed"] +=
self.timePlayed[
"total"];
249 if ( isdefined(
self.tacticalInsertionCount ) )
250 game[
"gameRep"][
"players"][
name][
"tacticalInsertions"] +=
self.tacticalInsertionCount;
262 if ( !isdefined( game[
"gameRep"][
"players"][
name] ) )
265 if ( game[
"gameRep"][
"players"][
name][
"totalTimePlayed"] != 0 )
266 timePlayed = game[
"gameRep"][
"players"][
name][
"totalTimePlayed"];
270 game[
"gameRep"][
"players"][
name][
"score"] =
self.score;
271 game[
"gameRep"][
"players"][
name][
"scorePerMin"] = int( game[
"gameRep"][
"players"][
name][
"score"] / ( timePlayed / 60 ) );
273 game[
"gameRep"][
"players"][
name][
"kills"] =
self.kills;
274 game[
"gameRep"][
"players"][
name][
"deaths"] =
self.deaths;
276 if ( game[
"gameRep"][
"players"][
name][
"deaths"] != 0 )
277 game[
"gameRep"][
"players"][
name][
"killDeathRatio"] = int( ( game[
"gameRep"][
"players"][
name][
"kills"] / game[
"gameRep"][
"players"][
name][
"deaths"] ) * 100 );
279 game[
"gameRep"][
"players"][
name][
"killDeathRatio"] = game[
"gameRep"][
"players"][
name][
"kills"] * 100;
282 game[
"gameRep"][
"players"][
name][
"killsPerMin"] = int( game[
"gameRep"][
"players"][
name][
"kills"] / ( timePlayed / 60 ) );
284 game[
"gameRep"][
"players"][
name][
"plants"] =
self.plants;
285 game[
"gameRep"][
"players"][
name][
"defuses"] =
self.defuses;
287 game[
"gameRep"][
"players"][
name][
"captures"] =
self.captures;
288 game[
"gameRep"][
"players"][
name][
"defends"] =
self.defends;
306 if ( isdefined( game[
"gameRep"][
"players"][playerName][paramName] ) )
307 return game[
"gameRep"][
"players"][playerName][paramName];
309 assertmsg(
"Unknown parameter " + paramName +
"for individual player" );
314 gametype = level.gametype;
316 if ( !isdefined( game[
"gameRep"] ) )
319 if ( !isdefined( game[
"gameRep"][
"gameLimit"] ) )
322 if ( !isdefined( game[
"gameRep"][
"gameLimit"][gametype] ) )
325 if ( !isdefined( game[
"gameRep"][
"gameLimit"][gametype][paramName] ) )
328 if ( !isdefined( game[
"gameRep"][
"gameLimit"][gametype][paramName] ) && !isdefined( game[
"gameRep"][
"gameLimit"][
"default"][paramName] ) )
336 if ( isdefined( game[
"gameRep"][
"ignoreParams"][paramName] ) )
344 gametype = level.gametype;
346 if ( isdefined( game[
"gameRep"][
"gameLimit"][gametype] ) )
348 if ( isdefined( game[
"gameRep"][
"gameLimit"][gametype][paramName] ) )
349 return game[
"gameRep"][
"gameLimit"][gametype][paramName];
352 if ( isdefined( game[
"gameRep"][
"gameLimit"][
"default"][paramName] ) )
353 return game[
"gameRep"][
"gameLimit"][
"default"][paramName];
355 assertmsg(
"Default values for parameter " + paramName +
" is not defined." );
360 if ( !isdefined( game[
"gameRep"][
"max"][paramName] ) )
362 game[
"gameRep"][
"max"][ paramName ] = value;
366 if ( game[
"gameRep"][
"max"][ paramName ] < value )
368 game[
"gameRep"][
"max"][ paramName ] = value;
378 players = GetPlayers();
379 for( i = 0; i < players.size; i++ )
393 players = GetPlayers();
394 for( i = 0; i < players.size; i++ )
400 splitscreenPlayerCount = 0;
402 for ( i = 0; i < game[
"gameRep"][
"playerNames"].size; i++ )
404 playerName = game[
"gameRep"][
"playerNames"][i];
407 for ( j = 0; j < game[
"gameRep"][
"params"].size; j++ )
409 paramName = game[
"gameRep"][
"params"][j];
415 paramName =
"splitscreen";
423 for ( j = 0; j < game[
"gameRep"][
"params"].size; j++ )
425 paramName = game[
"gameRep"][
"params"][j];
435 paramName =
"splitscreen";
444 if ( !isdefined( game[
"gameRep"][
"gameLimit"][
"id"][paramName] ) )
450 gameRepThresholdExceeded( game[
"gameRep"][
"gameLimit"][
"id"][ paramName ] );