For more of an update on this: I've removed the Initialize function of a
different hud element, and it gets way farther now, only crashing upon
beginning the render. Again, the problem seems to be that HUD elements
keep losing pointers or something. I'll get an access error while
accessing something like hSprite in CHudHealth. The variables in the hud
element classes just sort of disappear. What could be causing this?

Persuter
Lead Coder of Hostile Intent

> -----Original Message-----
> From: [EMAIL PROTECTED] [mailto:hlcoders-
> [EMAIL PROTECTED]] On Behalf Of Persuter
> Sent: Saturday, February 09, 2002 7:09 PM
> To: [EMAIL PROTECTED]
> Subject: [hlcoders] More Message Problems
>
> I'm having message problems of my own. I decided against the bsp
reader,
> since I just need to get one value. I set up a HUD element that would
> keep track of the map type (the keyvalue info), so the HUD functions
> that needed to know could hook into that.
>
> However, now I'm having a problem where CHud::Init() will crash in
> seemingly random places while running through all the hud elements
init
> functions. Generally one or more of them (m_Speed, m_AmmoSecondary,
> etc.) will not be anything, but simply contain empty pointers and
> whatnot, and the program will crash out with an access violation when
it
> tries to access the Init function.
>
> The especially weird thing is that these objects worked before I put
the
> new message in and even if I remove the Init function for the new
> object, it still crashes.
>
> On the server-side:
>
> In player.cpp:
>
> int gmsgMapType = 0;
>
> In LinkUserMessages():
>
>       gmsgMapType = REG_USER_MSG( "MapType", 1 );
>
> OK, now I think this is my problem, I really didn't know where to put
> this:
>
> I have in CBasePlayer::UpdateClientData():
>
>       if (m_fInitHUD)
>       {
>               m_fInitHUD = FALSE;
>               gInitHUD = FALSE;
>
>               MESSAGE_BEGIN( MSG_ONE, gmsgResetHUD, NULL, pev );
>                       WRITE_BYTE( 0 );
>               MESSAGE_END();
>
>               if ( !m_fGameHUDInitialized )
>               {
>                       MESSAGE_BEGIN( MSG_ONE, gmsgInitHUD, NULL, pev
> );
>                       MESSAGE_END();
>
>                       g_pGameRules->InitHUD( this );
>                       m_fGameHUDInitialized = TRUE;
>                       if ( g_pGameRules->IsMultiplayer() )
>                       {
>                               FireTargets( "game_playerjoin", this,
> this, USE_TOGGLE, 0 );
>                       }
>               }
>               FireTargets( "game_playerspawn", this, this, USE_TOGGLE,
> 0 );
>
>               CBaseEntity* pMapType = NULL;
>               pMapType = UTIL_FindEntityByClassname( pMapType,
> "hi_maptype" );
>
>
>               MESSAGE_BEGIN( MSG_ONE, gmsgMapType, NULL, pev );
>                       if( pMapType )
>                               WRITE_BYTE(
> ((CMapType*)pMapType)->m_iMapType );
>                       else
>                               WRITE_BYTE( 5 ); // Otherwise any models
> may be used.
>               MESSAGE_END();
>       }
>
> On the client-side:
>
> In hud.cpp:
>
>       m_MapType.Init();
>
> In hud.h:
>
> class CHudMapType : public CHudBase
> {
> public:
>       int m_iMapType;
>       int Init( void );
>       int MsgFunc_MapType( const char *pszName, int iSize, void* pbuf
> );
> };
>
> In hud.h, in the definition of CHud:
>
>       CHudMapType m_MapType;
>
> Further down, same place:
>
>       int      _cdecl MsgFunc_MapType( const char *pszName, int iSize,
> void *pbuf );
>
> In maptype.cpp:
>
> DECLARE_MESSAGE( m_MapType, MapType );
>
> int CHudMapType::Init( void )
> {
>       HOOK_MESSAGE( MapType );
>
>       gHUD.AddHudElem( this );
>
>       return 1;
>
> }
>
> int CHudMapType::MsgFunc_MapType( const char *pszName, int iSize,
void*
> pbuf )
> {
>       BEGIN_READ( pbuf, iSize );
>
>       m_iMapType = READ_BYTE();
>
>       return 1;
>
> }
>
>
>
>
> _________________________________________________________
> Do You Yahoo!?
> Get your free @yahoo.com address at http://mail.yahoo.com
>
> _______________________________________________
> To unsubscribe, edit your list preferences, or view the list archives,
> please visit:
> http://list.valvesoftware.com/mailman/listinfo/hlcoders


_________________________________________________________
Do You Yahoo!?
Get your free @yahoo.com address at http://mail.yahoo.com

_______________________________________________
To unsubscribe, edit your list preferences, or view the list archives, please visit:
http://list.valvesoftware.com/mailman/listinfo/hlcoders

Reply via email to