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


Hi,
Also in der Variable gHUD.m_iKeyBits wird ja meines Wissens gespeichert, welche Taste der Spieler gedrückt hat.
mit (gHUD.m_iKeyBits & IN_ATTACK) kann man z.B. abfragen, ob der Spieler die +attack Taste gedrückt hat.

Soweit so gut.
Mein Problem ist, das wenn der Spieler die Taste drückt, die Funktion viel zu oft aufgerufen wird.
Ich will aber, das der Spieler die Taste drückt, die Funktion einmal aufgerufen wird, und der Spieler die Taste dann wieder drücken muß, um noch mal ein IN_ATTACK 'senden' zu können. Wie macht man das ?

--

www.d3opencoop.com - A Doom3 Cooperative Mod

zum Seitenanfang zum Seitenende Profil || Suche
001
24.02.2002, 15:38
hausi



Quellcode:
if ((gHUD.m_iKeyBits & IN_ATTACK) && (!WasAttacking))
{
AttackFunc(true);
WasAttacking=true; //Sollte vorher definiert werden ;)
}
else if ((!gHUD.m_iKeyBits & IN_ATTACK) && (WasAttacking))
{
AttackFunc(false);
WasAttacking=false;
}

Sollte so gehen, habs aber nicht getestet.

--


Dieser Beitrag wurde am 24.02.2002 um 15:39 von Superhausi bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
002
24.02.2002, 15:41
[RMen]OneStone



HOOK_COMMAND("+attack", Attack);

__Cmd_Func_Attack( ... )
{
// old code

MeineCodeFunc();
}

--

georg-wicherski@pixel-house.net | http://www.pixel-house.net/ - Coding Resource| http://www.google.de/

zum Seitenanfang zum Seitenende Profil || Suche
003
27.02.2002, 13:46
Nicemice
Moderator


ok, ich habs jetzt so wie Superhausi. Das Problem ist, das trotzdem noch die Waffe abgefeuert wird, obwohl ich die Bits zurücksetze. Wie kann ich verhindern, das unter bestimmten Umständen(Waffenmenü ist offen) nicht die Waffe abgefeuert wird ?

--

www.d3opencoop.com - A Doom3 Cooperative Mod

zum Seitenanfang zum Seitenende Profil || Suche
004
27.02.2002, 13:53
hausi



Habe hier den Source nicht, ich denke aber, dass es auch ein Bit gibt, ob das Menu offen ist. Wenn ich wieder zu hause bin, werde ich mal danach suchen...

--

zum Seitenanfang zum Seitenende Profil || Suche
005
27.02.2002, 15:43
[RMen]OneStone



Noch ein dritter Ansatz:

Quellcode:void [i]CMyClass[/i]::[i]ShootCheck[/i]( ... )
{
if(m_flNextShootCheck > gpGlobals->time)
  return;

if([i]MenuOpen[/i]())
  return;

if(gHUD.m_iKeyBits & IN_ATTACK)
  Shoot( ... );

m_flNextShootCheck = gpGlobals->time + [b]3.0[/b];
}

Du musst natürlich in der Klasse CMyClass nen float m_flNextShootCheck definiert haben. Das ist übrigens die elegantere Version, da sie mit einer festen Zeit arbeitet. Alles kursive sind beispiele und müssen modifiziert werden.

ICH WILL WIEDER CODE-EINRÜCKUNGEN

--

georg-wicherski@pixel-house.net | http://www.pixel-house.net/ - Coding Resource| http://www.google.de/


Dieser Beitrag wurde am 27.02.2002 um 15:48 von [RMen]OneStone bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
006
28.02.2002, 10:17
Nicemice
Moderator


@OneStone: Das Problem ist, daß ich diese 'Shoot(...)' Funktion eben noch nicht gefunden hab. Kann jemand mal erklären an welcher Stelle im Code steht, das keine Waffe abgefeuert werden soll, wenn man im Waffenmenü eine Waffe auswählt ?

--

www.d3opencoop.com - A Doom3 Cooperative Mod

zum Seitenanfang zum Seitenende Profil || Suche
007
28.02.2002, 14:32
[RMen]OneStone



Das Shoot( ... ); war exemplarisch.
Das ganze wird soweit ich weiss in der __CmdFunc_Attack() geregelt.

--

georg-wicherski@pixel-house.net | http://www.pixel-house.net/ - Coding Resource| http://www.google.de/

zum Seitenanfang zum Seitenende Profil || Suche
008
10.03.2002, 13:39
Nicemice
Moderator


is mir auch klar, das shoot exemplarisch gemeint war. Und eine Funktion, die __CmdFunc_Attack() oder so ähnlich heißt gibts nicht.

Irgendwo muß doch stehen, das keine Waffe abgefeuert wird, wenn man im Menü ist.

--

www.d3opencoop.com - A Doom3 Cooperative Mod

zum Seitenanfang zum Seitenende Profil || Suche