1 #using scripts\codescripts\struct;
3 #using scripts\shared\callbacks_shared;
4 #using scripts\shared\hud_util_shared;
5 #using scripts\shared\system_shared;
6 #using scripts\shared\util_shared;
8 #insert scripts\shared\shared.gsh;
10 #using scripts\zm\gametypes\_globallogic;
11 #using scripts\zm\gametypes\_globallogic_player;
12 #using scripts\zm\gametypes\_spectating;
14 #using scripts\zm\_util;
16 #precache( "string", "MP_HALFTIME" );
17 #precache( "string", "MP_OVERTIME" );
18 #precache( "string", "MP_ROUNDEND" );
19 #precache( "string", "MP_INTERMISSION" );
20 #precache( "string", "MP_SWITCHING_SIDES_CAPS" );
21 #precache( "string", "MP_FRIENDLY_FIRE_WILL_NOT" );
22 #precache( "string", "MP_RAMPAGE" );
23 #precache( "string", "MP_ENDED_GAME" );
24 #precache( "string", "MP_HOST_ENDED_GAME" );
25 #precache( "eventstring", "medal_received" );
26 #precache( "eventstring", "killstreak_received" );
27 #precache( "eventstring", "player_callout" );
28 #precache( "eventstring", "score_event" );
29 #precache( "eventstring", "rank_up" );
30 #precache( "eventstring", "gun_level_complete" );
31 #precache( "eventstring", "challenge_complete" );
33 #namespace globallogic_ui;
54 if ( isdefined(
self.perkicon ) )
56 for ( numSpecialties = 0; numSpecialties < level.maxSpecialties; numSpecialties++ )
58 if ( isdefined(
self.perkicon[ numSpecialties ] ) )
66 if ( isdefined(
self.perkHudelem ) )
72 if ( isdefined(
self.killstreakicon ) )
74 if ( isdefined(
self.killstreakicon[0] ) )
78 if ( isdefined(
self.killstreakicon[1] ) )
82 if ( isdefined(
self.killstreakicon[2] ) )
86 if ( isdefined(
self.killstreakicon[3] ) )
90 if ( isdefined(
self.killstreakicon[4] ) )
97 if ( isdefined(
self.lowerMessage ) )
99 if ( isdefined(
self.lowerTimer ) )
103 if ( isdefined(
self.proxBar ) )
105 if ( isdefined(
self.proxBarText ) )
109 if ( isdefined(
self.carryIcon ) )
119 foreach( team
in level.teams )
121 if ( !isdefined( count ) )
123 count = playerCounts[team];
126 if ( count != playerCounts[team] )
136 lowest_team = undefined;
138 foreach( team
in level.teams )
140 if ( count > playerCounts[team] )
142 count = playerCounts[team];
152 teamKeys = GetArrayKeys( level.teams );
153 assignment = teamKeys[randomInt(teamKeys.size)];
157 if( isdefined(level.forceAllAllies) && level.forceAllAllies )
159 assignment =
"allies";
161 else if ( level.teamBased )
163 if ( GetDvarint(
"party_autoteams" ) == 1 )
167 if( level.allow_teamchange ==
"1" && (
self.hasSpawned || comingFromMenu ) )
176 team = getAssignedTeam(
self );
181 assignment = teamKeys[1];
186 assignment = teamKeys[0];
191 assignment = teamKeys[2];
197 if ( !isdefined( level.forceAutoAssign ) || !level.forceAutoAssign )
199 self SetClientScriptMainMenu( game[
"menu_start_menu" ] );
205 if( isdefined( level.teams[team] ) )
209 else if ( team ==
"spectator" && (!level.forceAutoAssign) )
211 self SetClientScriptMainMenu( game[
"menu_start_menu" ] );
219 if ( assignment ==
"" || GetDvarint(
"party_autoteams" ) == 0 )
221 if ( SessionModeIsZombiesGame() )
223 assignment =
"allies";
283 if ( assignment ==
self.pers[
"team"] && (
self.sessionstate ==
"playing" ||
self.sessionstate ==
"dead") )
291 if ( GetDvarint(
"party_autoteams" ) == 1 )
294 if( level.allow_teamchange !=
"1" || ( !
self.hasSpawned && !comingFromMenu ) )
296 team = getAssignedTeam(
self );
297 if( isdefined( level.teams[team] ) )
301 else if ( team ==
"spectator" && (!level.forceAutoAssign) )
303 self SetClientScriptMainMenu( game[
"menu_start_menu" ] );
310 if ( assignment !=
self.pers[
"team"] && (
self.sessionstate ==
"playing" ||
self.sessionstate ==
"dead") )
312 self.switching_teams =
true;
313 self.joining_team = assignment;
314 self.leaving_team =
self.pers[
"team"];
318 self.pers[
"team"] = assignment;
319 self.team = assignment;
320 self.pers[
"class"] = undefined;
321 self.curClass = undefined;
322 self.pers[
"weapon"] = undefined;
323 self.pers[
"savedmodel"] = undefined;
327 self.sessionteam = assignment;
329 if ( !isAlive(
self ) )
330 self.statusicon =
"hud_status_dead";
332 self notify(
"joined_team");
333 level notify(
"joined_team" );
335 self notify(
"end_respawn");
338 self SetClientScriptMainMenu( game[
"menu_start_menu" ] );
346 foreach( team
in level.teams )
348 if ( !isdefined( score ) )
350 score = getTeamScore(team);
353 if ( score != getTeamScore(team) )
363 lowest_team = undefined;
365 foreach( team
in level.teams )
367 if ( score > getTeamScore(team ) )
376 assignment =
"allies";
379 assignment = teams[randomInt(teams.size)];
388 for ( index = 0; index < level.players.size; index++ )
390 if ( !isdefined(level.players[index]) )
393 if ( level.players[index] ==
self )
396 if ( !(
self IsPlayerOnSameMachine( level.players[index] )) )
399 team = level.players[index].sessionteam;
402 if ( team !=
"spectator" )
411 if ( SessionModeIsZombiesGame() || (
self.pers[
"team"] ==
"spectator") )
413 self SetClientCGObjectiveText(
"" );
417 if( level.scorelimit > 0 )
430 self closeInGameMenu();
435 assert( isdefined( level.teams[
self.pers[
"team"]] ) );
437 team =
self.pers[
"team"];
439 if ( level.disableCAC == 1 )
443 self.pers[
"class"] = level.defaultClass;
444 self.curClass = level.defaultClass;
449 if (
self.sessionstate !=
"playing" && game[
"state"] ==
"playing" )
450 self thread [[level.spawnClient]]();
459 self openMenu( game[
"menu_changeclass_" + team ] );
469 assert( isdefined( level.teams[
self.pers[
"team"]] ) );
471 team =
self.pers[
"team"];
476 self openMenu( game[
"menu_changeclass_" + team ] );
483 if ( !level.console && level.allow_teamchange ==
"0" && (isdefined(
self.hasDoneCombat) &&
self.hasDoneCombat) )
488 if(
self.pers[
"team"] != team)
491 if ( level.inGracePeriod && (!isdefined(
self.hasDoneCombat) || !
self.hasDoneCombat) )
492 self.hasSpawned =
false;
494 if(
self.sessionstate ==
"playing")
496 self.switching_teams =
true;
497 self.joining_team = team;
498 self.leaving_team =
self.pers[
"team"];
502 self.pers[
"team"] = team;
504 self.pers[
"class"] = undefined;
505 self.curClass = undefined;
506 self.pers[
"weapon"] = undefined;
507 self.pers[
"savedmodel"] = undefined;
511 self.sessionteam = team;
513 self SetClientScriptMainMenu( game[
"menu_start_menu" ] );
515 self notify(
"joined_team");
516 level notify(
"joined_team" );
518 self notify(
"end_respawn");
528 if(
self.pers[
"team"] !=
"spectator")
532 self.switching_teams =
true;
533 self.joining_team =
"spectator";
534 self.leaving_team =
self.pers[
"team"];
538 self.pers[
"team"] =
"spectator";
539 self.team =
"spectator";
540 self.pers[
"class"] = undefined;
541 self.curClass = undefined;
542 self.pers[
"weapon"] = undefined;
543 self.pers[
"savedmodel"] = undefined;
547 self.sessionteam =
"spectator";
549 [[level.spawnSpectator]]();
553 self SetClientScriptMainMenu( game[
"menu_start_menu" ] );
555 self notify(
"joined_spectators");
676 self endon(
"disconnect");
680 self endon(
"end_respawn");