curstate.health
not pev->health

ie:
    for (int i = 1; i < MAX_PLAYERS; i++)
    {
        cl_entity_t *pl = gEngfuncs.GetEntityByIndex(i);
        if ( pl && pl->player )
        {
             ALERT( at_console, "[%s] has %i health\n",
g_PlayerInfoList[i].name, pl->curstate.health );
         }
      }





On Wed, May 14, 2014 at 9:35 PM, Matas Lešinskas <peon...@gmail.com> wrote:

> Hi hlcoders, I have 1 problem with my goldsrc mod, I am trying to make hp
> shown like in left 4 dead, question how to get other players hp’s? maybe I
> can do something with it?
>
> void CBasePlayer::UpdateStatusBar()
>
> {
>
>       int newSBarState[ SBAR_END ];
>
>       char sbuf0[ SBAR_STRING_SIZE ];
>
>       char sbuf1[ SBAR_STRING_SIZE ];
>
>
>
>       memset( newSBarState, 0, sizeof(newSBarState) );
>
>       strcpy( sbuf0, m_SbarString0 );
>
>       strcpy( sbuf1, m_SbarString1 );
>
>
>
>       // Find an ID Target
>
>       TraceResult tr;
>
>       UTIL_MakeVectors( pev->v_angle + pev->punchangle );
>
>       Vector vecSrc = EyePosition();
>
>       Vector vecEnd = vecSrc + (gpGlobals->v_forward * MAX_ID_RANGE);
>
>       UTIL_TraceLine( vecSrc, vecEnd, dont_ignore_monsters, edict(), &tr);
>
>
>
>       if (tr.flFraction != 1.0)
>
>       {
>
>             if ( !FNullEnt( tr.pHit ) )
>
>             {
>
>                   CBaseEntity *pEntity = CBaseEntity::Instance( tr.pHit );
>
>
>
>                   if (pEntity->Classify() == CLASS_PLAYER )
>
>                   {
>
>                         newSBarState[ SBAR_ID_TARGETNAME ] = ENTINDEX(
> pEntity->edict() );
>
>                         strcpy( sbuf1, "1 %p1\n2 Health: %i2%%\n3 Armor:
> %i3%%" );
>
>
>
>                         // allies and medics get to see the targets health
>
>                         if ( g_pGameRules->PlayerRelationship( this,
> pEntity ) == GR_TEAMMATE )
>
>                         {
>
>                               newSBarState[ SBAR_ID_TARGETHEALTH ] = 100 *
> (pEntity->pev->health / pEntity->pev->max_health);
>
>                               newSBarState[ SBAR_ID_TARGETARMOR ] =
> pEntity->pev->armorvalue; //No need to get it % based since 100 it's the
> max.
>
>                         }
>
>
>
>                         m_flStatusBarDisappearDelay = gpGlobals->time +
> 1.0;
>
>                   }
>
>             }
>
>             else if ( m_flStatusBarDisappearDelay > gpGlobals->time )
>
>             {
>
>                   // hold the values for a short amount of time after
> viewing the object
>
>                   newSBarState[ SBAR_ID_TARGETNAME ] = m_izSBarState[
> SBAR_ID_TARGETNAME ];
>
>                   newSBarState[ SBAR_ID_TARGETHEALTH ] = m_izSBarState[
> SBAR_ID_TARGETHEALTH ];
>
>                   newSBarState[ SBAR_ID_TARGETARMOR ] = m_izSBarState[
> SBAR_ID_TARGETARMOR ];
>
>             }
>
>       }
>
>
>
>       BOOL bForceResend = FALSE;
>
>
>
>       if ( strcmp( sbuf0, m_SbarString0 ) )
>
>       {
>
>             MESSAGE_BEGIN( MSG_ONE, gmsgStatusText, NULL, pev );
>
>                   WRITE_BYTE( 0 );
>
>                   WRITE_STRING( sbuf0 );
>
>             MESSAGE_END();
>
>
>
>             strcpy( m_SbarString0, sbuf0 );
>
>
>
>             // make sure everything's resent
>
>             bForceResend = TRUE;
>
>       }
>
>
>
>       if ( strcmp( sbuf1, m_SbarString1 ) )
>
>       {
>
>             MESSAGE_BEGIN( MSG_ONE, gmsgStatusText, NULL, pev );
>
>                   WRITE_BYTE( 1 );
>
>                   WRITE_STRING( sbuf1 );
>
>             MESSAGE_END();
>
>
>
>             strcpy( m_SbarString1, sbuf1 );
>
>
>
>             // make sure everything's resent
>
>             bForceResend = TRUE;
>
>       }
>
>
>
>       // Check values and send if they don't match
>
>       for (int i = 1; i < SBAR_END; i++)
>
>       {
>
>             if ( newSBarState[i] != m_izSBarState[i] || bForceResend )
>
>             {
>
>                   MESSAGE_BEGIN( MSG_ONE, gmsgStatusValue, NULL, pev );
>
>                         WRITE_BYTE( i );
>
>                         WRITE_SHORT( newSBarState[i] );
>
>                   MESSAGE_END();
>
>
>
>                   m_izSBarState[i] = newSBarState[i];
>
>             }
>
>       }
>
> }
>
> Or  something with this part and make pev->health to  pEntity->pev->health,
> but how get player id ect…
>
>       if (pev->health != m_iClientHealth)
>
>       {
>
>             int iHealth = max( pev->health, 0 );  // make sure that no
> negative health values are sent
>
>
>
>             // send "health" update message
>
>             MESSAGE_BEGIN( MSG_ONE, gmsgHealth, NULL, pev );
>
>                   WRITE_BYTE( iHealth );
>
>             MESSAGE_END();
>
>
>
>             m_iClientHealth = pev->health;
>
>       }
>
>
>
> _______________________________________________
> To unsubscribe, edit your list preferences, or view the list archives,
> please visit:
> https://list.valvesoftware.com/cgi-bin/mailman/listinfo/hlcoders
>
>
>


-- 
-Tony
_______________________________________________
To unsubscribe, edit your list preferences, or view the list archives, please 
visit:
https://list.valvesoftware.com/cgi-bin/mailman/listinfo/hlcoders

Reply via email to