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