Willkommen ~Gast!
Registrieren || Einloggen || Hilfe/FAQ || Staff
Probleme mit der Registrierung im Forum? Melde dich unter registerEin Bild.
Autor Beitrag
000
31.08.2001, 17:01
Retro



Sorry für's unklare Topic... aber da kann man so schlecht zwei Fragen unterbringen! ;)

-1-
Wie kann ich mehrere Sachen nach einer kurzen Zeit machen lassen?
Also z.B. mehrere Animationen nacheinander abspielen lassen?Quellcode:
SendWeaponAnim( ANIMATION_1 );
//2 Sekunden vergehen
SendWeaponAnim( ANIMATION_2 );
//nochmal 2 Sekunden vergehen
SendWeaponAnim( ANIMATION_3 );

Also ich schätze ihr wisst was gemeint ist?!

-2-
Es geht um eine art Ausdauer-System:
Beim Springen soll von der int Variable "iAusdauer" ein wert vom 100 abgezogen werden. Das ist ja nicht alt so schwer... *g*

Aber wo schreibe ich mein:Quellcode:iAusdauer += -100;hin, wenn es jedesmal beim springen aufgerufen werden soll?

Das wars schon :) Also Thx für Hilfe.

--

shielding people from their own stupidity is an evolutionary step backwards anyway.

/* God is dead!............Nietzsche */
/* Nietzsche is dead!......God */
/* Nietzsche is God!.......The Dead */

zum Seitenanfang zum Seitenende Profil || Suche
001
31.08.2001, 17:21
devilm



sorry... zwar nix dazu... aba würde es nit heissen: iAusdauer -= 100; ?

--

zum Seitenanfang zum Seitenende Profil || Suche
002
31.08.2001, 17:26
Hellfire



1) Dazu benutzt du am besten eine float variable (z.b. flNextAnim). Dann müsste das ganze in einer Think() Funktion folgendermaßen aussehen: flNextAnim = gpGlobals->time + 2.0; Die nächste Animation führst du erst aus, wenn (gpGlobals->time >= flNextAnim). Wäre jetzt nur ein Kurzes Beispiel. Guck dazu am besten mal ein bisschen im Half-Life code rum (waffen code o.ä.) dort sind gute Beispiele drin (z.b. flNextPrimaryAttack).
2) musst du mal im den pm_* Dateien gucken, weil dort der Jump-Code drin ist (nach Änderung in einer dieser Dateien beide dlls neu erstellen!).

--

zum Seitenanfang zum Seitenende Profil || Suche
003
31.08.2001, 17:28
R2-D2



-1-
SendWeaponAnim(ANIM);
if (gpGlobals->time > (gpGlobals->time +2))
{
SendWeaponAnim(ANIM);
if (gpGlobals->time > (gpGlobals->time + 2))
{
SendWeaponAnim(ANIM);
}
}

könnte klappen :)
wenn nich probiers mit Think und m_flNextThink und so

-2-
probiers, in die CBasePlayer::Jump( void ) zu setzen.
genau dort soll er auch abfragn, ob die ausdauer kleiner lgeich 0 ist, wenn ja, return (->er darf nicht huepfen)

--

®2-D2
Believe in Retrieve :)

Projects:
Monkey-Strike (Leader/Coder)
Water Wars (Head Coder)
Mixed Mod (Coder)

zum Seitenanfang zum Seitenende Profil || Suche
004
31.08.2001, 17:30
R2-D2



sorry, dachte ich wuerde zuerst posten

--

®2-D2
Believe in Retrieve :)

Projects:
Monkey-Strike (Leader/Coder)
Water Wars (Head Coder)
Mixed Mod (Coder)

zum Seitenanfang zum Seitenende Profil || Suche
005
31.08.2001, 17:58
Retro



lol *schähm* CBasePlayer::Jump - klar, thx! :)

Aber deine nette if Lösung geht nicht, ich werd jetzt mal schnell Hellfire's Methode testen... trotzdem Thx.

Was Quellcode:iAusdauer += -100; angeht... es ist genau das selbe wie Quellcode:iAusdauer -= 100; So ziehe ich gleich 100 ab, und mit meiner Methode zähle ich einen negativen Wert hinzu, und somit wirds auch weniger! *g* Warum einfach wenns auch kompliziert geht? hehe

--

shielding people from their own stupidity is an evolutionary step backwards anyway.

/* God is dead!............Nietzsche */
/* Nietzsche is dead!......God */
/* Nietzsche is God!.......The Dead */

zum Seitenanfang zum Seitenende Profil || Suche
006
31.08.2001, 18:07
devilm



hehe jo... hab ma nur dacht du hast dich vertan oda sowas....
ich finds irgendwie merkwürdig... +- =)

--

zum Seitenanfang zum Seitenende Profil || Suche
007
31.08.2001, 18:09
devilm



ps.: braucht wer das tut für ein buy system?
passt gut zum "cash im client anzeigen" =)

ich hab ma da eins zammenbaut.... cs 5.1 like =)
also nix vgui... aba wirkungsvoll....
wenns wer braucht mach ichs mal für alle hl waffen

--

zum Seitenanfang zum Seitenende Profil || Suche
008
31.08.2001, 18:24
Retro



*meld*

Ich würds gern haben - egal mit welchen Waffen es im Moment ist =)
Einfach mal um zu gucken wie es gemacht wurde, und um es dann nach zu machen. *g*

Aber mit dem Animationsproblem steh ich auf Null ;(

--

shielding people from their own stupidity is an evolutionary step backwards anyway.

/* God is dead!............Nietzsche */
/* Nietzsche is dead!......God */
/* Nietzsche is God!.......The Dead */

zum Seitenanfang zum Seitenende Profil || Suche
009
31.08.2001, 18:26
Zeeke



Hm, ich hab auch so ein Kaufmenü, mein BFF :D
Aber halt auch kein VGui, sondern die alten Menüs, die ich eh viel besser finde :)

--

zum Seitenanfang zum Seitenende Profil || Suche
010
31.08.2001, 18:36
devilm



jo sin wirklich viel geiler... auch das das man sie in meheren farben machen kann (ich tus ned... weiss is eh schön)

--

zum Seitenanfang zum Seitenende Profil || Suche
011
31.08.2001, 18:38
devilm



@ retro: komm mal im icq online....
dann kann ichs da schicken...

ps.: es is echt DAU sicher =)

--

zum Seitenanfang zum Seitenende Profil || Suche
012
31.08.2001, 18:45
Retro



Hmm, wie war das gleich?

Wenn jemand etwas idiotensicher macht, wird es bald einen noch dümmeren Idioten geben! :)

P.S.: Bin gleich da *g*

--

shielding people from their own stupidity is an evolutionary step backwards anyway.

/* God is dead!............Nietzsche */
/* Nietzsche is dead!......God */
/* Nietzsche is God!.......The Dead */

zum Seitenanfang zum Seitenende Profil || Suche
013
31.08.2001, 23:40
R2-D2



umstaendlich aber muesste gehn:

Quellcode:
bla
...
bla
...
SendWeaponAnim(ANIM);
SetThink(Anim2Think);
pev->nextthink = gpGlobals->time + 2;
}

void Anim2Think( void )
{
SendWeaponAnim(ANIM);
SetThink(Anim3Think);
pev->nextthink = gpGlobals->time + 2;
}

void Anim3Think( void )
{
SendWeaponAnim(ANIM);
SetThink(ContinueThink);
pev->nextthink = gpGlobals->ime + 2;
}

void ContinueThink( void )
{
...
bla
...bla
...
}

--

®2-D2
Believe in Retrieve :)

Projects:
Monkey-Strike (Leader/Coder)
Water Wars (Head Coder)
Mixed Mod (Coder)

zum Seitenanfang zum Seitenende Profil || Suche
014
01.09.2001, 11:53
DBug



Yo, so könnte es vielleicht gehen (das ist ja eigentlich Hellfires methode). Aber das da oben geht niemals, denn überleg mal, wie soll

time > time + 2 sein ???? ;))

--

zum Seitenanfang zum Seitenende Profil || Suche
015
01.09.2001, 14:31
Retro



Hmm, is logisch! :D

Aber ich will möchte das beim Nachladen der Waffe:Quellcode:
CPlasmagun::Reload( void )
{
// BlaBlaBla
}

Drei Animationen hintereinander gespielt werden...

--

shielding people from their own stupidity is an evolutionary step backwards anyway.

/* God is dead!............Nietzsche */
/* Nietzsche is dead!......God */
/* Nietzsche is God!.......The Dead */


Dieser Beitrag wurde am 01.09.2001 um 14:31 von Retro bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
016
01.09.2001, 23:29
R2-D2



dann wuerd ich ne neue DefaultReload funktion extra fuer die plasmagun schreiben, bastel da einfach mal n bischen rum, mit meinem/hellfire's ;) code und der reload funktion, dann muesste dat gehn

--

®2-D2
Believe in Retrieve :)

Projects:
Monkey-Strike (Leader/Coder)
Water Wars (Head Coder)
Mixed Mod (Coder)

zum Seitenanfang zum Seitenende Profil || Suche
017
01.09.2001, 23:57
DBug



Sag doch dem Animierer er soll ne extra Animation einbauen die diese 3 anims vereint :)...

--

zum Seitenanfang zum Seitenende Profil || Suche
018
02.09.2001, 01:03
TheTinySteini



Oder mach es mit SetThinks:

In der Reload prüfst du, ob eine bestimmte Variable auf 0 steht. Wenn ja, dann soll er die erste Animation abspielen, danach SetThink auf eine Funktion, die die zweite Animation abspielt und pev->nextthink auf die Dauer der ersten Animation + gpGlobals->time setzen. Außerdem die Variable auf 1 setzen.
Die Reload-Funktion wird nämlich so oft aufgerufen, bis tatsächlich nachgeladen wurde.
So, die Think macht nun folgendes:
Sie spielt die zweite Animation ab, setzt die Variable auf 2 oder so und macht dann wiederum SetThink, auf eine Funktion, die die dritte Animation abspielt und die Variable auf 3 setzt. Die Reload checkt nun so lange, bis diese 3 in der Variable ist, dann erst wird nachgeladen.

Naja... bisschen umständlich jetzt erklärt. Also ich hab auch sowas, und zwar bei einer Waffe, die vor dem Nachladen erst in eine bestimmte Position gebracht werden soll (1. Animation), dann nachgeladen wird (2. Animation) und schließlich wieder in die Standardlage gebracht wird (3. Animation). Es sind deshalb 3 Animationen, weil die 1. Animation nicht unbedingt nötig ist. Denn nach jedem Schuss ist die Waffe bereits in dieser bestimmten Position, nur wenn man bereits einen weiteren Schuss vorbereitet hatte, dann muss die 1. Animation abgespielt werden.
So hab ich das realisiert:
- nach jedem Schuss wird m_fDrawn auf false gesetzt (also nicht schussbereit)
- in der WeaponIdle() wird dann die Waffe wieder schussbereit gemacht
- in der reload:
----
if( m_fDrawn )
{
if( m_fWaiting ) return;
SetThink( Toggle );
pev->nextthink = gpGlobals->time + 1.4;
SendWeaponAnim( UNSET ); // 1. Animation
m_fWaiting = true;
return;
}

DefaultReload(....); // 2. Animation
----
- in der Toggle():
SetThink( NULL );
m_fDrawn = !m_fDrawn;

if(m_fWaiting)
{
m_fWaiting = false;
Reload();
}

- und dann nur noch nach dem DefaultReload die Idle-Time runtersetzen, damit die WeaponIdle() die Waffe gleich wieder schussbereit macht (3. Animation)

Muss man halt ein bisschen mit den Zeiten und Animationen rumspielen... aber es geht.

--

TheTinySteini
Coder Poke646
"Don't Panic" - Hitchhiker's Guide to the Galaxy

zum Seitenanfang zum Seitenende Profil || Suche
019
02.09.2001, 01:48
Retro



Stimmt, bei mir ist das mit den Animationen fast genauso!

Ich kann das jetzt nicht gleich testen (muss erstmal alles auf 2.2 porten) aber es ist mir bestimmt ne große Hilfe! Thx an alle die mir geholfen habe.

--

shielding people from their own stupidity is an evolutionary step backwards anyway.

/* God is dead!............Nietzsche */
/* Nietzsche is dead!......God */
/* Nietzsche is God!.......The Dead */

zum Seitenanfang zum Seitenende Profil || Suche
020
03.09.2001, 13:12
Mazze



Hi!
Ich habe es jetzt geschafft, dass meine Waffe zuerst schiesst und dann nachläd!
Aber halt nur beim 1. Mal!
Wenn ich eine 2. Granate abschiesse wird gar keine Animation gespielt!
Der Code sieht so aus:
Quellcode:
void CImperator::ReloadThink( void )
{
if(!m_flReload)
{
SendWeaponAnim( IMPERATOR_FIREGRENADE );
m_flReload = 1;
}

if(m_flReload)
{
SendWeaponAnim( IMPERATOR_RELOADGRENADES );
m_flReload = 0;
SetThink( NULL );
}

pev->nextthink = gpGlobals->time + 1;
}

Wisst ihr wieso das nur 1 Mal abgespielt wird?

--

BattleTech-MOD:
http://bthl.unitedgaming.net/

zum Seitenanfang zum Seitenende Profil || Suche