000
09.01.2009, 23:00
Froggi
|
Hey Leute, also ich hab in HL2DM (ep2) mithilfe der .patch Datei aus dem Valvewiki unter "Fixing AI in Multiplayer" die AI für HL2DM gefixt (war ja nicht schwer^^). So wunderbar AI funktioniert aber wenn ich mittels npc_create npc_combine versuche einen Combine spawnen zu lassen crasht das Game wegen einer Zugriffsverletzung. Diese Zugriffsverletzung passiert durch einen NULL Pointer in der Studio.h in der Methode
inline float mass() const { return m_pStudioHdr->mass; }; Ich hab mithilfe des debugers folgendes herausgefunden. Also als erstes die Funktion
inline CStudioHdr *CBaseAnimating::GetModelPtr( void ) in der baseanimating.h aus dem serverprojekt wird mehrmals aufgerufen und liefert (nur bei den combines bei antlions klappt es) NULL zurück:
return ( m_pStudioHdr && m_pStudioHdr->IsValid() ) ? m_pStudioHdr : NULL; IsValid ist folgendermasen definiert:
inline bool IsValid( void ) { return (m_pStudioHdr != NULL); }; Eigentlich eine unsinnige abfrage oben oder? Naja auf jeden fall ist m_pStudioHdr überall NULL und ich weis nicht wo er initialisiert werden soll. Er ist wie folgt in der Klasse CStudioHdr deklariert:
private: mutable const studiohdr_t *m_pStudioHdr;
Ich kann ihn nicht "per Hand" initialisieren da der "Konstruktor" von der Struktur auf die er zeigt private ist. Hmm das ist alles sehr in einander verschachtelt deswegen fällt es mir schwer hier jedes Detail aufzulisten falls ihr zusätzliche Informationen braucht sagt mir bitte bescheid. Wer das Problem noch nicht erkannt hat es ist das m_pStudioHdr NULL ist und ich nicht weis wo/wie er initialisiert wird bzw. werden muss/sollte. Ich bin für jede Hilfe dankbar.
Froggi
--
|
|
Profil || Suche
|