void CSDKPlayer::State_Enter_WELCOME() { // Important to set MOVETYPE_NONE or our physics object will fall while we're sitting at one of the intro cameras. SetMoveType( MOVETYPE_NONE ); AddSolidFlags( FSOLID_NOT_SOLID ); PhysObjectSleep(); // Show info panel if ( IsBot() ) { // If they want to auto join a team for debugging, pretend they clicked the button. CCommand args; args.Tokenize( "joingame" ); ClientCommand( args ); } else { const ConVar *hostname = cvar->FindVar( "hostname" ); const char *title = (hostname) ? hostname->GetString() : "MESSAGE OF THE DAY"; // open info panel on client showing MOTD: KeyValues *data = new KeyValues("data"); data->SetString( "title", title ); // info panel title data->SetString( "type", "1" ); // show userdata from stringtable entry data->SetString( "msg", "motd" ); // use this stringtable entry data->SetString( "cmd", "joingame" );// exec this command if panel closed ShowViewPortPanel( PANEL_INFO, true, data ); data->deleteThis(); } }
void CSDKPlayer::ShowClassSelectMenu() { #if defined ( SDK_USE_TEAMS ) if ( GetTeamNumber() == SDK_TEAM_BLUE ) { ShowViewPortPanel( PANEL_CLASS_BLUE ); } else if ( GetTeamNumber() == SDK_TEAM_RED ) { ShowViewPortPanel( PANEL_CLASS_RED ); } #else if ( GetTeamNumber() == TEAM_UNASSIGNED ) ShowViewPortPanel( PANEL_CLASS_NOTEAMS ); #endif }
void CSDKPlayer::InitialSpawn( void ) { BaseClass::InitialSpawn(); const ConVar *hostname = cvar->FindVar( "hostname" ); const char *title = (hostname) ? hostname->GetString() : "MESSAGE OF THE DAY"; // open info panel on client showing MOTD: KeyValues *data = new KeyValues("data"); data->SetString( "title", title ); // info panel title data->SetString( "type", "1" ); // show userdata from stringtable entry data->SetString( "msg", "motd" ); // use this stringtable entry data->SetString( "cmd", "impulse 101" );// exec this command if panel closed ShowViewPortPanel( PANEL_INFO, true, data ); data->deleteThis(); }
void CSDKPlayer::State_Enter_PICKINGTEAM() { ShowViewPortPanel( PANEL_TEAM ); PhysObjectSleep(); }
// returns true if the selection has been handled and the player's menu // can be closed...false if the menu should be displayed again bool CSDKPlayer::HandleCommand_JoinTeam( int team ) { CSDKGameRules *mp = SDKGameRules(); int iOldTeam = GetTeamNumber(); if ( !GetGlobalTeam( team ) ) { Warning( "HandleCommand_JoinTeam( %d ) - invalid team index.\n", team ); return false; } #if defined ( SDK_USE_TEAMS ) // If we already died and changed teams once, deny if( m_bTeamChanged && team != TEAM_SPECTATOR && iOldTeam != TEAM_SPECTATOR ) { ClientPrint( this, HUD_PRINTCENTER, "game_switch_teams_once" ); return true; } #endif if ( team == TEAM_UNASSIGNED ) { // Attempt to auto-select a team, may set team to T, CT or SPEC team = mp->SelectDefaultTeam(); if ( team == TEAM_UNASSIGNED ) { // still team unassigned, try to kick a bot if possible ClientPrint( this, HUD_PRINTTALK, "#All_Teams_Full" ); team = TEAM_SPECTATOR; } } if ( team == iOldTeam ) return true; // we wouldn't change the team #if defined ( SDK_USE_TEAMS ) if ( mp->TeamFull( team ) ) { if ( team == SDK_TEAM_BLUE ) { ClientPrint( this, HUD_PRINTTALK, "#BlueTeam_Full" ); } else if ( team == SDK_TEAM_RED ) { ClientPrint( this, HUD_PRINTTALK, "#RedTeam_Full" ); } ShowViewPortPanel( PANEL_TEAM ); return false; } #endif if ( team == TEAM_SPECTATOR ) { // Prevent this if the cvar is set if ( !mp_allowspectators.GetInt() && !IsHLTV() ) { ClientPrint( this, HUD_PRINTTALK, "#Cannot_Be_Spectator" ); ShowViewPortPanel( PANEL_TEAM ); return false; } ChangeTeam( TEAM_SPECTATOR ); return true; } // If the code gets this far, the team is not TEAM_UNASSIGNED // Player is switching to a new team (It is possible to switch to the // same team just to choose a new appearance) #if defined ( SDK_USE_TEAMS ) if (mp->TeamStacked( team, GetTeamNumber() ))//players are allowed to change to their own team so they can just change their model { // The specified team is full ClientPrint( this, HUD_PRINTCENTER, ( team == SDK_TEAM_BLUE ) ? "#BlueTeam_full" : "#RedTeam_full" ); ShowViewPortPanel( PANEL_TEAM ); return false; } #endif // Switch their actual team... ChangeTeam( team ); #if defined ( SDK_USE_PLAYERCLASSES ) // Force them to choose a new class m_Shared.SetDesiredPlayerClass( PLAYERCLASS_UNDEFINED ); m_Shared.SetPlayerClass( PLAYERCLASS_UNDEFINED ); #endif return true; }