Willkommen ~Gast!
Registrieren || Einloggen || Hilfe/FAQ || Staff
Probleme mit der Registrierung im Forum? Melde dich unter registerEin Bild.
Autor Beitrag
000
23.12.2000, 05:16
gropi



hi !

ich hab ein neues entity programmiert das sprite anzeigt. dieser ba(h)nbrechenden neuerung möchte ich gerne soetwas wie einen fadecounter einbauen, also das das sprite nach einer bestimmten zeit ausfadet. wie geht das ???? hilfe !

--

zum Seitenanfang zum Seitenende Profil || Suche
001
23.12.2000, 09:44
apfelkorn



sollte nicht so schwer sein. Du hast ja sicher den alpha-wert (transparenz) zu verfügung. Jetzt kannst du mit einem code-counter (wird jeden frame um 1 verringert) den aphawert des sprites bei jeder neuen Think-Funktion nei einstellen, und sobald der aphawert 0 ist, das ganze Sprite auch entfernen.

Hier ein kleines Code-Schema:

Quellcode:
void CBaseEnitity::StartFade( entity_t *pEntity )
{
   f_fadeamount = 255;
   SetThink( Fade ); // Jeden Frame die Funktion Frame aufrufen
}

void CBaseEntity::Fade( entity_t *pEnitity )
{
   f_fadeamount--; // den Wert verringern...

   if (f_fadeamount != 0) {
      f_spritealpha = f_fadeamount; // ... und den alphawert anpassen
   }else {
      f_spritealpha = 0;
      EntitySpriteDelete( pEntity ); // Oder wie auch immer du das machen willst
      SetThink ( NULL ); // Die Fadefunktion auf jeden Fall nicht mehr aufrufen!
   }
}

Du solltest das ganze hier natürlich nur als ein Schema betrachten und keinesfalls als fertigen Code und ich habs nur hier geschrieben, damit du dich daran ein wenig orientieren kannst. Die ganzen Variablen und Funktionen musst du natürlich noch deklarieren in der Header-Datei. Viel Spaß!

--

zum Seitenanfang zum Seitenende Profil || Suche
002
23.12.2000, 19:14
gropi



danke, soweit klappt das, aber wie schaffe ich es das erst nach einer bestimmten sekundenanzahl ausgefadet wird ?

--

zum Seitenanfang zum Seitenende Profil || Suche
003
24.12.2000, 14:42
apfelkorn



du meinst, das sprite soll für eine bestimmte sekundenzahl stehen bleiben, und dann erst ausfaden...

Ganz einfach: Um mit dem ausfaden zu beginnen, rufst du ja nach meinem Schema die Funktion "StartFade" auf. Wenn du aber erst nach einer bestimmten Zeit das ausfaden willst, dann machst du es so:

Quellcode:
// Die Stelle im Code, welche durchgegangen wird, wenn das Sprite initialisiert (oder das entity) ist

if (!b_alreadyfaded) {
   f_timebeforestartfade = gpGlobals->time + 5; // 5 sekunden, f_timebeforestartfade muss float sein
   b_alreadyfaded = TRUE;

// Dann in einer Think-Funktion (o.ä.)
if (f_timeveforestartfade <= gpGlobals->time && b_alreadyfaded)
   StartFade( pEntity );

--

zum Seitenanfang zum Seitenende Profil || Suche
004
24.12.2000, 15:55
gropi



danke das du dir die mühe machst, aber ich kann mit solchen codefetzen nicht besonders viel anfangen. könntest du das nochmal irgendwie alles im zusammenhang posten oder mir mailen ?

--

zum Seitenanfang zum Seitenende Profil || Suche
005
25.12.2000, 12:19
apfelkorn



ne, das geht leider nicht... du musst dir schon selber die Mühe machen und das ganze interpretieren... Ich kann ja leider nicht deinen Quelltext einsehen...

--

zum Seitenanfang zum Seitenende Profil || Suche
006
25.12.2000, 20:10
gropi



das mit dem interpretieren ist leider nicht so einfach, da ich gerade erst mit coden angefangen habe, trotzdem danke

--

zum Seitenanfang zum Seitenende Profil || Suche
007
28.12.2000, 13:01
WareWolf



Mann gropi,
APFELKORN reißt sich hier doch schon den Arsch auf!!!
soll er auch noch vorkauen ??
(sorry)

--

Sig as a brick ┴┬┴┬┴┬┴┬┴┬┴┬┴
WW

zum Seitenanfang zum Seitenende Profil || Suche
008
28.12.2000, 16:38
gropi



sorry, aber ich habe leider keine ahnung wo ich dieses ding eintragen muss, und wo ich die variablen definieren muss !

--

zum Seitenanfang zum Seitenende Profil || Suche
009
28.12.2000, 18:02
feigling



Ich habe mal ne kleine Frage. Was bedeutet eigentlich dieses -> Zeichen hier in diesem Code:
f_timebeforestartfade = gpGlobals->time + 5;
Was macht es ?

--

zum Seitenanfang zum Seitenende Profil || Suche
010
28.12.2000, 22:53
tHeONe



Auch wenn es nicht zum thema passt:
Soweit ich weiss ist -> ein elementverweiss-operator =)
und ist nur eine kurzschreibweise um per pointer auf elemente von klassen zu zugreifen. also in dem fall *(gpGlobals).time entspricht gpGlobals->time .
Bitte berichtigt mich wenn ich da irgendwas falsches sag.

--

zum Seitenanfang zum Seitenende Profil || Suche
011
29.12.2000, 00:13
apfelkorn



Nö, ich glaube das war richtig, du einer...
[edit]
Ich habe übrigens noch vergessen im code die nextthink-variable zu setzen:
das sieht dann etwa so aus:
Quellcode:
pev->nextthink = gpGlobals->time + 0.1;

Das ganze kommt dann in die Startfade-Funktion und in die fade-Funktion meines Codeschnipsels rein!

--

zum Seitenanfang zum Seitenende Profil || Suche