Willkommen ~Gast!
Registrieren || Einloggen || Hilfe/FAQ || Staff
Probleme mit der Registrierung im Forum? Melde dich unter registerEin Bild.
Autor Beitrag
000
26.04.2005, 09:18
-[Phoenix]-



Hallo nochmal! Ich hätte da mal eine Frage, die das Vgui und das Crossair betrifft. Ist es möglich das Crosssair synchron mit der Vgui Maus zu bewegen
und bei Benutzung der linken Maustaste sowohl einen Schuss abzugeben als
auch im Vgui einen Knopf zu betätigen? Wenn ja könntet ihr mir vielleicht sagen wie es geht? Für mein Vorhaben hatte ich auch schon an Tracelines gedacht, aber im Guten und Ganzen wäre die andere Methode sehr viel einfacher.

--

zum Seitenanfang zum Seitenende Profil || Suche
001
27.04.2005, 10:09
-[Phoenix]-



Hm, naja synchron steuern ist vielleicht ein wenig falsch ausgedrückt, es würde eigentlich schon reichen, eine Waffe mit der Vgui - Maus zu steuern und zu betätigen. Es kommt eigentlich das gleiche dabei raus, wie bei dem was ich vorher gefragt habe, aber vielleicht ist es einfacher eine solche Funktion in eine Waffe einzubauen.

--

zum Seitenanfang zum Seitenende Profil || Suche
002
27.04.2005, 15:14
Killing Me Softly



Sehe ich das richtig?
Normalerweise ist es so, das entweder der Mauszeiger für das VGUI zu sehen ist, oder man die Bewegung des Spielers mit der Maus steuert. Du möchtest es so, das er beides gleichzeitig macht?

Ob der Mauszeiger zu sehen ist oder nicht, wird in der Funktion void TeamFortressViewport::UpdateCursorState() geregelt. Dabei wird auch die globale Variable g_iVisibleMouse entsprechend gesetzt. Alle anderen Funktionen richten sich nach dieser globalen Variable. Falls du allso immer das Standardverhalten haben möchtest, egal ob VGUI-Mauszeiger zu sehen ist oder nicht, wäre ein Ansatzt, die Variable immer auf 'false' zu setzten.

Eine andere Möglichkeit wäre, die Abfrage der Variable g_iVisibleMouse in den Funktionen IN_MouseEvent() (für die Maustasten) und IN_MouseMove() (für die Bewegung) zu ändern. Beide Funktionen findet man übrigens in der inputw32.cpp.

Beispiel:
Quellcode:void DLLEXPORT IN_MouseEvent (int mstate)
{
    int        i;

    //if ( iMouseInUse || g_iVisibleMouse )  <== auskommentieren und durch
    if ( iMouseInUse ) // ersetzten
        return;
  
    ...
  
}

--

Der Horizont vieler Menschen ist ein Kreis mit Radius Null - und das nennen sie ihren Standpunkt.

zum Seitenanfang zum Seitenende Profil || Suche
003
28.04.2005, 12:11
-[Phoenix]-



Nocheinmal Danke für die Hilfe.
Sorry, meine Frage klang vielleicht ein bischen unverschämt, aber es hat mich doch mal interessiert, da ich mich schon halb zu tode gesucht habe. Auf jeden Fall hat es jetzt geklappt. Das einzige Problem mit dem ich aber schon gerechnet habe ist, dass der Mauszeiger des Vgui's jetzt am Crosshair festhängt. Na gut ich habe also nach einem Tutorial gesucht um das Crosshair zu "befreien" ("Complete freedom of rotation"; vielleicht kennt ihr das) http://articles.thewavelength.net/269/ . Nur leider funktionieren die Links auf die Quaternion.c und Quaternion.h nicht mehr, da wollte ich mal Fragen, ob es noch andere Tutorials zu diesem Thema (Crosshair über das Hud bewegen) gibt oder wie man es sonst programmieren könnte.

--

zum Seitenanfang zum Seitenende Profil || Suche
004
01.05.2005, 12:41
-[Phoenix]-



Ich denke mal ich kann das hier noch mitrein posten. Das Tut, dass ich ausprobiert habe war mehr auf einen Flugsimulator ausgelegt, deswegen habe ich wieder meine Grundidee verfolgt und frage mich nun, ob man den Mauszeiger statt an das Crosshair an einen "spot" (wie der beim RPG) binden kann. Hat das schon jemand ausprobiert?

--

zum Seitenanfang zum Seitenende Profil || Suche