157 lines
4.1 KiB
Plaintext
157 lines
4.1 KiB
Plaintext
main()
|
|
{
|
|
// Rank fixes.
|
|
replacefunc(scripts\mp\menus::addtoteam, ::addtoteam_stub);
|
|
replacefunc(scripts\mp\menus::watchforteamchange, ::watchforteamchange_stub);
|
|
|
|
// Bypass check for sessionteam
|
|
replacefunc(scripts\mp\playerlogic::connect_validateplayerteam, ::connect_validateplayerteam_stub);
|
|
}
|
|
|
|
addtoteam_stub( team, firstConnect, changeTeamsWithoutRespawning )
|
|
{
|
|
if ( isdefined( self.team ) )
|
|
{
|
|
scripts\mp\playerlogic::removefromteamcount();
|
|
|
|
if ( isdefined( changeTeamsWithoutRespawning ) && changeTeamsWithoutRespawning )
|
|
scripts\mp\playerlogic::decrementalivecount( self.team );
|
|
}
|
|
|
|
if ( isdefined( self.pers["team"] ) && self.pers["team"] != "" && self.pers["team"] != "spectator" )
|
|
self.pers["last_team"] = self.pers["team"];
|
|
|
|
self.pers["team"] = team;
|
|
self.team = team;
|
|
|
|
// bypass session team is readonly in ranked matches if "teambased" is set on the playlist
|
|
if ( level.teambased )
|
|
self.sessionteam = team;
|
|
else if ( team == "spectator" )
|
|
self.sessionteam = "spectator";
|
|
else
|
|
self.sessionteam = "none";
|
|
|
|
if ( game["state"] != "postgame" )
|
|
{
|
|
scripts\mp\playerlogic::addtoteamcount();
|
|
|
|
if ( isdefined( changeTeamsWithoutRespawning ) && changeTeamsWithoutRespawning )
|
|
scripts\mp\playerlogic::incrementalivecount( self.team );
|
|
}
|
|
|
|
if ( isgamebattlematch() )
|
|
setmatchdata( "players", self.clientid, "team", team );
|
|
|
|
scripts\mp\utility::updateobjectivetext();
|
|
|
|
if ( isdefined( firstConnect ) && firstConnect )
|
|
waittillframeend;
|
|
|
|
scripts\mp\utility::updatemainmenu();
|
|
|
|
if ( team == "spectator" )
|
|
{
|
|
self notify( "joined_spectators" );
|
|
level notify( "joined_team", self );
|
|
}
|
|
else
|
|
{
|
|
self notify( "joined_team" );
|
|
level notify( "joined_team", self );
|
|
}
|
|
}
|
|
|
|
watchforteamchange_stub()
|
|
{
|
|
self endon( "disconnect" );
|
|
level endon( "game_ended" );
|
|
|
|
//------------------
|
|
// 0 = axis
|
|
// 1 = allies
|
|
// 2 = auto
|
|
// 3 = spectate
|
|
//------------------
|
|
|
|
for (;;)
|
|
{
|
|
self waittill( "luinotifyserver", channel, teamSelected );
|
|
|
|
if ( channel != "team_select" )
|
|
continue;
|
|
|
|
var_2 = 0;
|
|
|
|
if ( teamSelected >= 3 )
|
|
var_2 = 1;
|
|
|
|
if ( var_2 )
|
|
{
|
|
self setclientomnvar( "ui_spectator_selected", 1 );
|
|
self setclientomnvar( "ui_loadout_selected", -1 );
|
|
self.spectating_actively = 1;
|
|
}
|
|
else
|
|
{
|
|
self setclientomnvar( "ui_spectator_selected", -1 );
|
|
self.spectating_actively = 0;
|
|
}
|
|
|
|
var_3 = self ismlgspectator();
|
|
var_4 = !var_3 && isdefined( self.team ) && self.team == "spectator";
|
|
var_5 = var_3 && teamSelected == 3 || var_4 && teamSelected == 4;
|
|
|
|
if ( teamSelected == 4 )
|
|
{
|
|
teamSelected = 3;
|
|
self setmlgspectator( 1 );
|
|
}
|
|
else
|
|
self setmlgspectator( 0 );
|
|
|
|
self setclientomnvar( "ui_team_selected", teamSelected );
|
|
|
|
if ( teamSelected == 0 )
|
|
teamSelected = "axis";
|
|
else if ( teamSelected == 1 )
|
|
teamSelected = "allies";
|
|
else if ( teamSelected == 2 )
|
|
teamSelected = "random";
|
|
else
|
|
teamSelected = "spectator";
|
|
|
|
if ( !var_5 && isdefined( self.pers["team"] ) && teamSelected == self.pers["team"] )
|
|
continue;
|
|
|
|
self setclientomnvar( "ui_loadout_selected", -1 );
|
|
thread scripts\mp\menus::logteamselection( teamSelected );
|
|
|
|
if ( teamSelected == "axis" )
|
|
{
|
|
thread scripts\mp\menus::setteam( "axis" );
|
|
continue;
|
|
}
|
|
|
|
if ( teamSelected == "allies" )
|
|
{
|
|
thread scripts\mp\menus::setteam( "allies" );
|
|
continue;
|
|
}
|
|
|
|
if ( teamSelected == "random" )
|
|
{
|
|
thread scripts\mp\menus::autoassign();
|
|
continue;
|
|
}
|
|
|
|
if ( teamSelected == "spectator" )
|
|
thread scripts\mp\menus::setspectator( var_5 );
|
|
}
|
|
}
|
|
|
|
connect_validateplayerteam_stub()
|
|
{
|
|
if ( !isdefined( self ) )
|
|
return;
|
|
} |