mirror of
https://github.com/nillerusr/source-engine.git
synced 2026-08-10 18:59:36 +00:00
add source-sdk-2013
This commit is contained in:
@@ -23,8 +23,6 @@ IMPLEMENT_SERVERCLASS_ST_NOBASE(CPlayerResource, DT_PlayerResource)
|
||||
SendPropArray3( SENDINFO_ARRAY3(m_iTeam), SendPropInt( SENDINFO_ARRAY(m_iTeam), 4 ) ),
|
||||
SendPropArray3( SENDINFO_ARRAY3(m_bAlive), SendPropInt( SENDINFO_ARRAY(m_bAlive), 1, SPROP_UNSIGNED ) ),
|
||||
SendPropArray3( SENDINFO_ARRAY3(m_iHealth), SendPropInt( SENDINFO_ARRAY(m_iHealth), -1, SPROP_VARINT | SPROP_UNSIGNED ) ),
|
||||
SendPropArray3( SENDINFO_ARRAY3(m_iAccountID), SendPropInt( SENDINFO_ARRAY(m_iAccountID), 32, SPROP_UNSIGNED ) ),
|
||||
SendPropArray3( SENDINFO_ARRAY3(m_bValid), SendPropInt( SENDINFO_ARRAY(m_bValid), 1, SPROP_UNSIGNED ) ),
|
||||
END_SEND_TABLE()
|
||||
|
||||
BEGIN_DATADESC( CPlayerResource )
|
||||
@@ -56,7 +54,12 @@ void CPlayerResource::Spawn( void )
|
||||
{
|
||||
for ( int i=0; i < MAX_PLAYERS+1; i++ )
|
||||
{
|
||||
Init( i );
|
||||
m_iPing.Set( i, 0 );
|
||||
m_iScore.Set( i, 0 );
|
||||
m_iDeaths.Set( i, 0 );
|
||||
m_bConnected.Set( i, 0 );
|
||||
m_iTeam.Set( i, 0 );
|
||||
m_bAlive.Set( i, 0 );
|
||||
}
|
||||
|
||||
SetThink( &CPlayerResource::ResourceThink );
|
||||
@@ -64,19 +67,6 @@ void CPlayerResource::Spawn( void )
|
||||
m_nUpdateCounter = 0;
|
||||
}
|
||||
|
||||
void CPlayerResource::Init( int iIndex )
|
||||
{
|
||||
m_iPing.Set( iIndex, 0 );
|
||||
m_iScore.Set( iIndex, 0 );
|
||||
m_iDeaths.Set( iIndex, 0 );
|
||||
m_bConnected.Set( iIndex, 0 );
|
||||
m_iTeam.Set( iIndex, 0 );
|
||||
m_bAlive.Set( iIndex, 0 );
|
||||
m_iHealth.Set( iIndex, 0 );
|
||||
m_iAccountID.Set( iIndex, 0 );
|
||||
m_bValid.Set( iIndex, 0 );
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose: The Player resource is always transmitted to clients
|
||||
//-----------------------------------------------------------------------------
|
||||
@@ -103,62 +93,38 @@ void CPlayerResource::ResourceThink( void )
|
||||
//-----------------------------------------------------------------------------
|
||||
void CPlayerResource::UpdatePlayerData( void )
|
||||
{
|
||||
for ( int i = 1; i <= MAX_PLAYERS; i++ )
|
||||
for ( int i = 1; i <= gpGlobals->maxClients; i++ )
|
||||
{
|
||||
CBasePlayer *pPlayer = (CBasePlayer*)UTIL_PlayerByIndex( i );
|
||||
|
||||
if ( pPlayer && pPlayer->IsConnected() )
|
||||
{
|
||||
UpdateConnectedPlayer( i, pPlayer );
|
||||
m_iScore.Set( i, pPlayer->FragCount() );
|
||||
m_iDeaths.Set( i, pPlayer->DeathCount() );
|
||||
m_bConnected.Set( i, 1 );
|
||||
m_iTeam.Set( i, pPlayer->GetTeamNumber() );
|
||||
m_bAlive.Set( i, pPlayer->IsAlive()?1:0 );
|
||||
m_iHealth.Set(i, MAX( 0, pPlayer->GetHealth() ) );
|
||||
|
||||
// Don't update ping / packetloss everytime
|
||||
|
||||
if ( !(m_nUpdateCounter%20) )
|
||||
{
|
||||
// update ping all 20 think ticks = (20*0.1=2seconds)
|
||||
int ping, packetloss;
|
||||
UTIL_GetPlayerConnectionInfo( i, ping, packetloss );
|
||||
|
||||
// calc avg for scoreboard so it's not so jittery
|
||||
ping = 0.8f * m_iPing.Get(i) + 0.2f * ping;
|
||||
|
||||
|
||||
m_iPing.Set( i, ping );
|
||||
// m_iPacketloss.Set( i, packetloss );
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
UpdateDisconnectedPlayer( i );
|
||||
m_bConnected.Set( i, 0 );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose:
|
||||
//-----------------------------------------------------------------------------
|
||||
void CPlayerResource::UpdateConnectedPlayer( int iIndex, CBasePlayer *pPlayer )
|
||||
{
|
||||
m_iScore.Set( iIndex, pPlayer->FragCount() );
|
||||
m_iDeaths.Set( iIndex, pPlayer->DeathCount() );
|
||||
m_bConnected.Set( iIndex, 1 );
|
||||
m_iTeam.Set( iIndex, pPlayer->GetTeamNumber() );
|
||||
m_bAlive.Set( iIndex, pPlayer->IsAlive()?1:0 );
|
||||
m_iHealth.Set( iIndex, MAX( 0, pPlayer->GetHealth() ) );
|
||||
m_bValid.Set( iIndex, 1 );
|
||||
|
||||
// Don't update ping / packetloss every time
|
||||
|
||||
if ( !(m_nUpdateCounter%20) )
|
||||
{
|
||||
// update ping all 20 think ticks = (20*0.1=2seconds)
|
||||
int ping, packetloss;
|
||||
UTIL_GetPlayerConnectionInfo( iIndex, ping, packetloss );
|
||||
|
||||
// calc avg for scoreboard so it's not so jittery
|
||||
ping = 0.8f * m_iPing.Get( iIndex ) + 0.2f * ping;
|
||||
|
||||
m_iPing.Set( iIndex, ping );
|
||||
// m_iPacketloss.Set( iSlot, packetloss );
|
||||
}
|
||||
|
||||
CSteamID steamID;
|
||||
pPlayer->GetSteamID( &steamID );
|
||||
m_iAccountID.Set( iIndex, steamID.GetAccountID() );
|
||||
}
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose:
|
||||
//-----------------------------------------------------------------------------
|
||||
void CPlayerResource::UpdateDisconnectedPlayer( int iIndex )
|
||||
{
|
||||
m_bConnected.Set( iIndex, 0 );
|
||||
m_iAccountID.Set( iIndex, 0 );
|
||||
m_bValid.Set( iIndex, 0 );
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user