|
|
@ -555,12 +555,13 @@ void ClientCommand( edict_t *pEntity ) |
|
|
|
GetClassPtr( (CBasePlayer *)pev )->SelectLastItem(); |
|
|
|
GetClassPtr( (CBasePlayer *)pev )->SelectLastItem(); |
|
|
|
} |
|
|
|
} |
|
|
|
else if( FStrEq( pcmd, "spectate" ) ) // clients wants to become a spectator
|
|
|
|
else if( FStrEq( pcmd, "spectate" ) ) // clients wants to become a spectator
|
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
CBasePlayer *pPlayer = GetClassPtr( (CBasePlayer *)pev ); |
|
|
|
|
|
|
|
if( !pPlayer->IsObserver() ) |
|
|
|
{ |
|
|
|
{ |
|
|
|
// always allow proxies to become a spectator
|
|
|
|
// always allow proxies to become a spectator
|
|
|
|
if( ( pev->flags & FL_PROXY ) || allow_spectators.value ) |
|
|
|
if( ( pev->flags & FL_PROXY ) || allow_spectators.value ) |
|
|
|
{ |
|
|
|
{ |
|
|
|
CBasePlayer *pPlayer = GetClassPtr( (CBasePlayer *)pev ); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
edict_t *pentSpawnSpot = g_pGameRules->GetPlayerSpawnSpot( pPlayer ); |
|
|
|
edict_t *pentSpawnSpot = g_pGameRules->GetPlayerSpawnSpot( pPlayer ); |
|
|
|
pPlayer->StartObserver( pev->origin, VARS( pentSpawnSpot )->angles ); |
|
|
|
pPlayer->StartObserver( pev->origin, VARS( pentSpawnSpot )->angles ); |
|
|
|
|
|
|
|
|
|
|
@ -571,6 +572,15 @@ void ClientCommand( edict_t *pEntity ) |
|
|
|
else |
|
|
|
else |
|
|
|
ClientPrint( pev, HUD_PRINTCONSOLE, "Spectator mode is disabled.\n" ); |
|
|
|
ClientPrint( pev, HUD_PRINTCONSOLE, "Spectator mode is disabled.\n" ); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
else |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
pPlayer->StopObserver(); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// notify other clients of player left spectators
|
|
|
|
|
|
|
|
UTIL_ClientPrintAll( HUD_PRINTNOTIFY, UTIL_VarArgs( "%s has left spectator mode\n", |
|
|
|
|
|
|
|
( pev->netname && ( STRING( pev->netname ) )[0] != 0 ) ? STRING( pev->netname ) : "unconnected" ) ); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
else if( FStrEq( pcmd, "specmode" ) ) // new spectator mode
|
|
|
|
else if( FStrEq( pcmd, "specmode" ) ) // new spectator mode
|
|
|
|
{ |
|
|
|
{ |
|
|
|
CBasePlayer *pPlayer = GetClassPtr( (CBasePlayer *)pev ); |
|
|
|
CBasePlayer *pPlayer = GetClassPtr( (CBasePlayer *)pev ); |
|
|
|