Further troubles... I tried making this a non-static function, but that
didn't work either. But here's the REALLY weird part. I was stepping
through the new function in the debugger:

CSprite* CStreetlamp::MakeSprite( const char* pSpriteName, const Vector
&origin, BOOL animate  )
{
        CSprite* pSprite = GetClassPtr( (CSprite *)NULL );
        pSprite->SpriteInit( pSpriteName, origin );
        pSprite->pev->classname = MAKE_STRING("env_sprite");
        pSprite->pev->solid = SOLID_NOT;
        pSprite->pev->movetype = MOVETYPE_NOCLIP;
        if ( animate )
                pSprite->TurnOn();

        return pSprite;
}

It has the exact same error as before. However, I noticed that as I step
through the function that the value of this, i.e., the street lamp,
changes three times. First it goes to some seemingly random memory
location, then it changes to 1, then it goes back to its regular
location. Is that CRAZY or what?

Upon further inspection, I found that in addition to this calamity, the
Keyvalue function for the entity is not being called at all. This, too,
seems a bit odd. My suspicion was that somehow the game is stumbling
over some of the fgd files and somehow, some way, that's messing up the
files.

However, I then dropped into the disassembler to check what the assembly
had to say about it, and learned to my shock that CSprite* pSprite =
GetClassPtr( (CSprite *)NULL ); has absolutely no assembly counterpart.
In other words, the compiler is somehow skipping right the f**k over it.

I have absolutely no clue. I'm going to try recompiling all the maps and
the models involved in the hopes that somehow this will fix itself. Is
there anyone who's had a similar problem with GetClassPtr? The rest of
them seem to be compiling so I can't imagine it's a problem with the
template implementation, but the problems like KeyValue suggest to me
that it's a run-time problem of some sort, because the fact that
GetClassPtr didn't compile shouldn't do anything to KeyValue...

Persuter

> -----Original Message-----
> From: [EMAIL PROTECTED] [mailto:hlcoders-
> [EMAIL PROTECTED]] On Behalf Of Persuter
> Sent: Monday, April 22, 2002 6:42 PM
> To: [EMAIL PROTECTED]
> Subject: [hlcoders] Sprite problems
>
> Hey all, having a bit of a problem here:
>
> CSprite *CSprite::SpriteCreate( const char *pSpriteName, const Vector
> &origin, BOOL animate )
> {
>       CSprite* pSprite = GetClassPtr( (CSprite *)NULL ); <-- This line
>       pSprite->SpriteInit( pSpriteName, origin );
>       pSprite->pev->classname = MAKE_STRING("env_sprite");
>       pSprite->pev->solid = SOLID_NOT;
>       pSprite->pev->movetype = MOVETYPE_NOCLIP;
>       if ( animate )
>               pSprite->TurnOn();
>
>       return pSprite;
> }
>
> For some reason, when I execute the following code with
> "sprites/glow01.spr", multiple times, the indicated line doesn't
execute
> at all except for one instance, the last that is tried. When I use the
> debugger, it completely steps over the line, even when I try to step
> into GetClassPtr. It's like the line doesn't exist... I try pleading
> with the debugger, pointing at the line very insistently and so forth,
> but to no avail.
>
> Anyway, so it doesn't execute the line, which means that pSprite does
> not exist. This does not trouble the program, however, which happily
> goes along executing the rest of the code, even while the debugger
shows
> that pSprite doesn't exist. If I step into the function and check the
> value of this, I find that indeed it DOES have an address. But that
> address is never returned, and the program proceeds as if nothing had
> been returned from the function at all! It doesn't even throw errors.
> It's very odd.
>
> Any ideas?
>
> Persuter
>
>
> _________________________________________________________
> 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