Willkommen ~Gast!
Registrieren || Einloggen || Hilfe/FAQ || Staff
Probleme mit der Registrierung im Forum? Melde dich unter registerEin Bild.
Autor Beitrag
000
14.01.2002, 00:13
M0n60



Wie's subject schon sagt, ich hab mp3 nachm thewall tut implementiert, funzt auch alles, sogar (:D) mit entity (startet mp3 file 1 sekunde nach start) aber wenn ich Save und Lade crasht mir die kacke mit: "SZ_GetSpace: Tried to write to an unitialized sizebuf_t ?"
Ich hab kein plan woran das liegt...
hier noch mein source zum entity (der andere source wie gesagt nachm tut):

class CMP3Music : public CBaseDelay
{
public:
void Use( CBaseEntity *pActivator, CBaseEntity *pCaller, USE_TYPE useType, float value );
void Spawn( void );
void Precache( void );
void Think( void );

virtual int Save( CSave &save );
virtual int Restore( CRestore &restore );
static TYPEDESCRIPTION m_SaveData[];
virtual int ObjectCaps( void ) { return (CBaseDelay :: ObjectCaps() & ~FCAP_ACROSS_TRANSITION); }

char* szSoundFile;
};

LINK_ENTITY_TO_CLASS( mp3_music, CMP3Music );

TYPEDESCRIPTION CMP3Music::m_SaveData[] =
{
DEFINE_FIELD( CMP3Music, szSoundFile, FIELD_STRING ),
};

IMPLEMENT_SAVERESTORE( CMP3Music, CBaseDelay );

void CMP3Music :: Spawn( void )
{
szSoundFile = (char*) STRING(pev->message);

if ( FStringNull( pev->message ) || strlen( szSoundFile ) < 1 )
{
ALERT( at_error, "EMPTY MP3 ENTITY AT: %f, %f, %f\n", pev->origin.x, pev->origin.y, pev->origin.z );
pev->nextthink = gpGlobals->time + 0.1;
SetThink( SUB_Remove );
return;
}
pev->solid = SOLID_NOT;
pev->movetype = MOVETYPE_NONE;

Precache( );
}

void CMP3Music :: Precache( void )
{
pev->nextthink = gpGlobals->time + 1;
}

void CMP3Music::Use( CBaseEntity *pActivator, CBaseEntity *pCaller, USE_TYPE useType, float value )
{
pev->nextthink = gpGlobals->time + 1;
}

void CMP3Music::Think( void )
{
char cmd[256];
szSoundFile = (char*) STRING(pev->message);
edict_t *pClient;

pClient = g_engfuncs.pfnPEntityOfEntIndex( 1 );

if ( FStringNull( pev->message ) || strlen( szSoundFile ) < 1 )
{
ALERT( at_error, "EMPTY MP3 ENTITY AT: %f, %f, %f\n", pev->origin.x, pev->origin.y, pev->origin.z );
return;
}

sprintf( cmd, "playmp3 %s\n", szSoundFile );

CLIENT_COMMAND( pClient, cmd );
}

hopefully dass das hilft zu helfen...
thx im vorraus

-Merlin

--

zum Seitenanfang zum Seitenende Profil || Suche
001
14.01.2002, 09:42
Rockefeller



Dein szSoundFile darf kein echter String bzw. ein Pointer auf nen nullterminierten String sein, sondern ein integer.

HL kann im m_SaveData nur HL-Strings verwalten, d.h. z.b.
ALLOC_STRING ("sound/lied.mp3")

--

zum Seitenanfang zum Seitenende Profil || Suche
002
14.01.2002, 13:35
fire_foxx



konkräät !! wusste gar nich', dass man mp3's in hl_maps einbinden kann <:)

--^..^--

--

fire_foxx --^..^--

zum Seitenanfang zum Seitenende Profil || Suche
003
15.01.2002, 19:47
Lio



Hilfe

ich hab das auch gemacht mit dem tut nur hab ich ein prob !
und zwar bekomme ich "Nichtaufgeloestes externes Symbol" zu jeder der 4 funktionen ? ich hab jetzt leider null plan was das soll ??????
hoffe mir kann wer helfen

--

Phantasie ist wichtiger als Wissen,
den Wissen ist begrentzt ...
(Albert Einstein)

zum Seitenanfang zum Seitenende Profil || Suche
004
15.01.2002, 19:51
Lio



ja und wen ich mich etwas mit den includes herumspiele bekomm ich genau hier :
CMP3 gMP3;
diese fehler :
.)Syntaxfehler : Fehlendes ';' vor Bezeichner 'gMP3'
.)error C2501: 'CMP3' : Fehlende Speicherklasse oder Typbezeichner
.)fatal error C1004: Unerwartetes Dateiende gefunden

--

Phantasie ist wichtiger als Wissen,
den Wissen ist begrentzt ...
(Albert Einstein)

zum Seitenanfang zum Seitenende Profil || Suche
005
16.01.2002, 17:53
M0n60



Ooops hier kam' ja sogar replies :) ;)
Thx@Rockefeller
@Lio hatte den selben Fehler auch, hab den auch behoben aber ich weiss net mehr wie, muss irgendwie beim uebermaessigen TEC Konsum verschwunden sein, sry.. vielleicht liegts daran dass du mp3.h in cl_dll #includen musst, kein plan.

-Merlin

--

zum Seitenanfang zum Seitenende Profil || Suche
006
16.01.2002, 17:54
Lio



das lustige is ich hab die scho überall hin includet ! aber danke auf jeden fall mal :)

--

Phantasie ist wichtiger als Wissen,
den Wissen ist begrentzt ...
(Albert Einstein)

zum Seitenanfang zum Seitenende Profil || Suche
007
28.01.2002, 00:57
M0n60



Ähm... Des Thema is schon alt, ich weiß, aber zu Rockefellers antwort... wie bidde soll ich das anstellen, statt meinem char* nen integer zu nehmen? dann funzen gleich ne menge anderer dinge net mehr, wie z.B.
szSoundFile = (char*) STRING(pev->message);
oder
strlen( szSoundFile )
wie muss ich den shit converten/deklarieren damit das auch fehlerfrei in mein m_SaveData reinpasst (UND die andern funktionen auch noch funzen...)?
thx im vorraus

-Merlin

--

zum Seitenanfang zum Seitenende Profil || Suche
008
28.01.2002, 02:42
Another1



also, du kannst nen
halflife internen int (oder string_t,was auch immer)
mit charString = STRING(intString) in nen const char* (bzw mit (char*) davor in ne char* casten) und aus nem char* nen string_t (den integer string) mit hilfe von MAKE_STRING machen, wobei MAKE_STRING immer speicher alloziiert und den int handle wieder zurückgibt ... eek

--

Another1

...relaxing..atm =)
... und Schweiz suckt!

zum Seitenanfang zum Seitenende Profil || Suche
009
28.01.2002, 19:31
M0n60



MAKE_STRING geht net (mehr? (die util funktionen wurden glaub ich upgedatet...) ), STRING tuts aber auch.
Beim normalen starten eines levels (mit meinem mp3 entity drinne) wird think() ein paar sekunden später (wenn der client GARANTIERT bereits gespawned ist) gestartet und ein mp3 sound abgespielt. wenn ich das gleiche aber beim loaden vonnem save machen, crasht er (ohne wat zu "sagen"), kann das daran liegen dass er think() bereits früher ausführt, sprich nich erst 8 sekunden nachdem in precache() pev->nextthink = gpGlobals->time + 8 gesetzt wurde? (mp3 sound abspielen während der client noch nicht gespawned is = crash)
Welche Funktionen eines entitys werden beim loaden eines gesavten games aufgerufen, spawn() / think() ??? (oder ueberhaupt eine?)

-Merlin

--

zum Seitenanfang zum Seitenende Profil || Suche
010
02.02.2002, 15:32
M0n60



*schieb*
ja ich weiß dass das hier unerwünscht ist aber der thread ging während der panne letztens unter und warum soll ich nen neuen thread deswegen aufmachen..

-Merlin

[edit]
mein code immo... :

class CMP3Music : public CBaseDelay
{
public:
void Use( CBaseEntity *pActivator, CBaseEntity *pCaller, USE_TYPE useType, float value );
void Spawn( void );
void Precache( void );
void Think( void );

virtual int Save( CSave &save );
virtual int Restore( CRestore &restore );
static TYPEDESCRIPTION m_SaveData[];
virtual int ObjectCaps( void ) { return (CBaseDelay :: ObjectCaps() & ~FCAP_ACROSS_TRANSITION); }

string_t szSoundFile;
};

LINK_ENTITY_TO_CLASS( mp3_music, CMP3Music );

TYPEDESCRIPTION CMP3Music::m_SaveData[] =
{
DEFINE_FIELD( CMP3Music, szSoundFile, FIELD_STRING ),
};

IMPLEMENT_SAVERESTORE( CMP3Music, CBaseDelay );

void CMP3Music :: Spawn( void )
{
szSoundFile = pev->message;

if ( FStringNull( pev->message ) || strlen( (char*) STRING(szSoundFile) ) < 1 )
{
ALERT( at_error, "EMPTY MP3 ENTITY AT: %f, %f, %f\n", pev->origin.x, pev->origin.y, pev->origin.z );
pev->nextthink = gpGlobals->time + 0.1;
SetThink( SUB_Remove );
return;
}
pev->solid = SOLID_NOT;
pev->movetype = MOVETYPE_NONE;

Precache( );
}

void CMP3Music :: Precache( void )
{
pev->nextthink = gpGlobals->time + 8;
}

void CMP3Music::Use( CBaseEntity *pActivator, CBaseEntity *pCaller, USE_TYPE useType, float value )
{
pev->nextthink = gpGlobals->time + 8;
}

void CMP3Music::Think( void )
{
char cmd[256];
edict_t *pClient;
pClient = g_engfuncs.pfnPEntityOfEntIndex( 1 );

ClientPrint( &pClient->v, HUD_PRINTCENTER, UTIL_VarArgs( "!!! Think() !!!\n" ) );

if ( FStringNull( pev->message ) || strlen( (char*) STRING(szSoundFile) ) < 1 )
{
ALERT( at_error, "EMPTY MP3 ENTITY AT: %f, %f, %f\n", pev->origin.x, pev->origin.y, pev->origin.z );
return;
}

sprintf( cmd, "playmp3 %s\n", (char*) STRING(szSoundFile) );
CLIENT_COMMAND( pClient, cmd );
}

die use() könnt ihr euch da mal wegdenken
[/edit]

--


Dieser Beitrag wurde am 02.02.2002 um 15:38 von M0n60 bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche