mirror of
https://github.com/JezuzLizard/BO2-Reimagined.git
synced 2025-07-03 18:39:34 -05:00
Encounter: change spawn point on team change during pregame
Encounter: add ready up for team change option
This commit is contained in:
@ -129,7 +129,6 @@ menuautoassign( comingfrommenu )
|
||||
self.ffateam = assignment;
|
||||
}
|
||||
|
||||
self.joined_team = true;
|
||||
self notify( "joined_team" );
|
||||
level notify( "joined_team" );
|
||||
self notify( "end_respawn" );
|
||||
|
@ -565,7 +565,7 @@ fade_out_intro_screen_zm( hold_black_time, fade_out_time, destroyed_afterwards )
|
||||
if ( isDedicated() && isDefined( level.pregame_minplayers ) )
|
||||
{
|
||||
pregame_hud = createServerFontString( "objective", 1.5 );
|
||||
pregame_hud setPoint( "CENTER", "CENTER", 0, -40 );
|
||||
pregame_hud setPoint( "CENTER", "CENTER", 0, -100 );
|
||||
pregame_hud.foreground = 1;
|
||||
pregame_hud.color = ( 1, 1, 1 );
|
||||
pregame_hud.hidewheninmenu = true;
|
||||
@ -573,6 +573,12 @@ fade_out_intro_screen_zm( hold_black_time, fade_out_time, destroyed_afterwards )
|
||||
num_players = get_number_of_valid_players();
|
||||
while ( num_players < level.pregame_minplayers )
|
||||
{
|
||||
players = get_players();
|
||||
for ( i = 0; i < players.size; i++ )
|
||||
{
|
||||
players[i] freezecontrols( 1 );
|
||||
}
|
||||
|
||||
num_waiting_for = level.pregame_minplayers - num_players;
|
||||
|
||||
if (level.intermission)
|
||||
@ -593,12 +599,60 @@ fade_out_intro_screen_zm( hold_black_time, fade_out_time, destroyed_afterwards )
|
||||
num_players = get_number_of_valid_players();
|
||||
}
|
||||
|
||||
if ( level.allow_teamchange )
|
||||
{
|
||||
ready_up_hud = createServerFontString( "objective", 1.5 );
|
||||
ready_up_hud setPoint( "CENTER", "CENTER", 0, -120 );
|
||||
ready_up_hud.foreground = 1;
|
||||
ready_up_hud.color = ( 1, 1, 1 );
|
||||
ready_up_hud.hidewheninmenu = true;
|
||||
ready_up_hud setText("PRESS ^3[{+gostand}]^7 OR ^3[{+activate}]^7 TO READY UP");
|
||||
|
||||
num_ready = 0;
|
||||
players = get_players();
|
||||
while ( num_ready < players.size )
|
||||
{
|
||||
for ( i = 0; i < players.size; i++ )
|
||||
{
|
||||
players[i] freezecontrols( 1 );
|
||||
|
||||
if ( players[i] jumpbuttonpressed() || players[i] usebuttonpressed() )
|
||||
{
|
||||
players[i].ready = 1;
|
||||
}
|
||||
|
||||
if ( is_true(players[i].ready) )
|
||||
{
|
||||
num_ready++;
|
||||
players[i].statusicon = "menu_mp_killstreak_select";
|
||||
}
|
||||
else
|
||||
{
|
||||
players[i].statusicon = "menu_mp_contract_expired";
|
||||
}
|
||||
}
|
||||
|
||||
num_waiting_for = players.size - num_ready;
|
||||
|
||||
pregame_hud setText("WAITING FOR " + num_waiting_for + " PLAYERS TO BE READY [" + num_ready + "/" + players.size + "]");
|
||||
|
||||
wait 0.05;
|
||||
|
||||
num_ready = 0;
|
||||
players = get_players();
|
||||
}
|
||||
|
||||
ready_up_hud destroy();
|
||||
}
|
||||
|
||||
pregame_hud destroy();
|
||||
}
|
||||
|
||||
players = get_players();
|
||||
for ( i = 0; i < players.size; i++ )
|
||||
{
|
||||
players[i].statusicon = "";
|
||||
|
||||
if ( !( isdefined( level.host_ended_game ) && level.host_ended_game ) )
|
||||
{
|
||||
if ( isdefined( level.player_movement_suppressed ) )
|
||||
@ -1055,7 +1109,7 @@ getfreespawnpoint( spawnpoints, player )
|
||||
if ( !isdefined( self.playernum ) )
|
||||
{
|
||||
num = 0;
|
||||
players = get_players();
|
||||
players = get_players(self.team);
|
||||
|
||||
for(num = 0; num < 4; num++)
|
||||
{
|
||||
@ -1063,7 +1117,7 @@ getfreespawnpoint( spawnpoints, player )
|
||||
|
||||
foreach(player in players)
|
||||
{
|
||||
if(is_true(player.joined_team) && player != self && player.team == self.team && player.playernum == num)
|
||||
if(player != self && isdefined(player.playernum) && player.playernum == num)
|
||||
{
|
||||
valid_num = false;
|
||||
break;
|
||||
|
@ -233,21 +233,7 @@ menu_onmenuresponse()
|
||||
{
|
||||
self closemenu();
|
||||
self closeingamemenu();
|
||||
|
||||
if ( !level.allow_teamchange )
|
||||
{
|
||||
teamplayers = countplayers( self.pers["team"] );
|
||||
otherteamplayers = countplayers( getotherteam( self.pers["team"] ) );
|
||||
|
||||
if ( teamplayers - 1 <= otherteamplayers )
|
||||
{
|
||||
self iprintln( "Can only change teams if unbalanced." );
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
set_team( getotherteam( self.pers["team"] ) );
|
||||
|
||||
self thread do_team_change();
|
||||
continue;
|
||||
}
|
||||
|
||||
@ -386,6 +372,68 @@ menu_onmenuresponse()
|
||||
}
|
||||
}
|
||||
|
||||
do_team_change()
|
||||
{
|
||||
if ( !level.allow_teamchange )
|
||||
{
|
||||
teamplayers = countplayers( self.pers["team"] );
|
||||
otherteamplayers = countplayers( getotherteam( self.pers["team"] ) );
|
||||
|
||||
if ( teamplayers - 1 <= otherteamplayers )
|
||||
{
|
||||
self iprintln( "Can only change teams if unbalanced." );
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
self.playernum = undefined;
|
||||
|
||||
level notify( "team_change", self.pers["team"] );
|
||||
|
||||
num = 0;
|
||||
valid_num = false;
|
||||
other_team = getotherteam(self.pers["team"]);
|
||||
players = get_players(other_team);
|
||||
|
||||
for(num = 0; num < 4; num++)
|
||||
{
|
||||
valid_num = true;
|
||||
|
||||
foreach(player in players)
|
||||
{
|
||||
if(isdefined(player.playernum) && player.playernum == num)
|
||||
{
|
||||
valid_num = false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if(valid_num)
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (!valid_num)
|
||||
{
|
||||
self iprintln( "Waiting for other player to change teams." );
|
||||
|
||||
level waittill( "team_change", team );
|
||||
|
||||
if (team == self.pers["team"])
|
||||
{
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
set_team( getotherteam( self.pers["team"] ) );
|
||||
|
||||
if ( !flag( "initial_blackscreen_passed" ) )
|
||||
{
|
||||
self [[ level.spawnplayer ]]();
|
||||
}
|
||||
}
|
||||
|
||||
set_team(team)
|
||||
{
|
||||
if ( team == "axis" )
|
||||
|
@ -54,6 +54,9 @@ init()
|
||||
level.player_spawn_sound = "zmb_spawn_powerup";
|
||||
}
|
||||
|
||||
precacheStatusIcon( "menu_mp_killstreak_select" );
|
||||
precacheStatusIcon( "menu_mp_contract_expired" );
|
||||
|
||||
setDvar("ui_scorelimit", 1);
|
||||
|
||||
setteamscore("axis", 0);
|
||||
|
Reference in New Issue
Block a user