Willkommen ~Gast!
Registrieren || Einloggen || Hilfe/FAQ || Staff
Probleme mit der Registrierung im Forum? Melde dich unter registerEin Bild.
Autor Beitrag
000
04.06.2009, 18:20
Killarulez



Hallo,
Ich hab MAL WIEDER eine kleine Frage..
Ist es möglich einen Tracer anzeigen zu lassen oder einen env_laser quasi direkt aus der waffe schiessen zu lassen?
Ich will eine Art Railgun machen, dafür ist ein anständiger Laser natürlich extrem wichtig.
Ich hab schon probiert aus dem Strider und Env_laser code was rauszubekommen, aber vergebens.
(Strider wegen seinem altfire)
Bitte helft mir! ~.~

--

Maps mit Fullbright sind wie Räume ohne etwas darin! Es ist zwar einfacher aber es fehlt immer was!
de_darkpipe 80% fertig
24h am Tag online auf 85.14.233.98:27015

zum Seitenanfang zum Seitenende Profil || Suche
001
04.06.2009, 18:38
Adrian_Broher
Admin


Schau dir den Code zur Gaussgun an.

--

There is nothing wrong with high standards. It's your problem that you don't meet them.
If you think it's simple, then you have misunderstood the problem.
When a customer says "nothing has changed", assume they're lying.

zum Seitenanfang zum Seitenende Profil || Suche
002
04.06.2009, 19:16
Killarulez



Zitat:
Adrian_Broher postete
Schau dir den Code zur Gaussgun an.
Ich hab nur eine Header Datei zur Gaussgun gefunden und sonst nur einen eintrag in weapon stubs ?!

--

Maps mit Fullbright sind wie Räume ohne etwas darin! Es ist zwar einfacher aber es fehlt immer was!
de_darkpipe 80% fertig
24h am Tag online auf 85.14.233.98:27015

zum Seitenanfang zum Seitenende Profil || Suche
003
05.06.2009, 22:02
Killarulez



BTW: es geht um den hl2dm code =)

--

Maps mit Fullbright sind wie Räume ohne etwas darin! Es ist zwar einfacher aber es fehlt immer was!
de_darkpipe 80% fertig
24h am Tag online auf 85.14.233.98:27015

zum Seitenanfang zum Seitenende Profil || Suche
004
08.06.2009, 00:24
Killarulez



will ja nicht dumm nerven aber ich finde den gaussgun code ECHT nicht.. den vom buggy ? vllt.? da guck ich jetzt mal rum

--

Maps mit Fullbright sind wie Räume ohne etwas darin! Es ist zwar einfacher aber es fehlt immer was!
de_darkpipe 80% fertig
24h am Tag online auf 85.14.233.98:27015

zum Seitenanfang zum Seitenende Profil || Suche
005
08.06.2009, 11:34
gza



Hi,
um sich tracelines anzeigen zu lassen gibt es einen Konsolenbefehl: r_visualizetraces 1

Edit:
Diese Methode ist aber nur zum testen geeignet, da der gezeigte Strahl wirklich nur die traceline ist und nicht einen grafischen Laser darstellt.

--


Dieser Beitrag wurde am 08.06.2009 um 12:13 von gza bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
006
08.06.2009, 14:44
Killarulez



Hmm ich habe es nun hinbekommen ihn einigermaßen anzeigen zu lassen, mit dem code:
In PrimaryAttack:
Quellcode:trace_t tr;
    Vector vecDir, attachpoint;
    QAngle vBeamAng;
    Vector vecSrc        = pPlayer->Weapon_ShootPosition();
    Vector vecAiming    = pPlayer->GetAutoaimVector( AUTOAIM_5DEGREES );

    CBaseViewModel *pViewModel = pPlayer->GetViewModel();

    pViewModel->GetAttachment( pViewModel->LookupAttachment("muzzle"), attachpoint, vBeamAng );
    AngleVectors( vBeamAng, &vecDir);
    Vector vecStop = attachpoint + (vecDir * MAX_TRACE_LENGTH);

    DrawBeam( vecSrc, vecStop, 1.0 );
Dann eine neue Definition DrawBeam:
Quellcode:void CWeapon357::DrawBeam( const Vector &startPos, const Vector &endPos, float width )
{
    //Tracer down the middle
    UTIL_Tracer( startPos, endPos, 0, TRACER_DONT_USE_ATTACHMENT, 6500, false, "GaussTracer" );

    //Draw the main beam shaft
    CBeam *pBeam = CBeam::BeamCreate( "sprites/laserbeam.vmt", 0.5 );
    
    pBeam->SetStartPos( startPos );
    pBeam->PointEntInit( endPos, this );
    pBeam->SetEndAttachment( LookupAttachment("Muzzle") );
    pBeam->SetWidth( width );
    pBeam->SetEndWidth( 0.05f );
    pBeam->SetBrightness( 255 );
    pBeam->SetColor( 255, 185+random->RandomInt( -16, 16 ), 40 );
    pBeam->RelinkBeam();
    pBeam->LiveForTime( 0.1f );
}
Ergebnis

Probleme: Laser verfolgt den Spieler, Laser verschwindet nicht, Laser fängt ungefähr in Höhe der Knie an.
x____X

--

Maps mit Fullbright sind wie Räume ohne etwas darin! Es ist zwar einfacher aber es fehlt immer was!
de_darkpipe 80% fertig
24h am Tag online auf 85.14.233.98:27015


Dieser Beitrag wurde am 08.06.2009 um 14:50 von Killarulez bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
007
09.06.2009, 16:51
gza



Hi,
hab mir deinen code jetzt mal angeschaut, kann aber keinen Fehler beim Erzeugen des Tracers finden.
Las dir mal die Werte (sprich die Vektoren) die die GetAttechment Methode zurückliefert ausgeben. Vlt. steckt der Fehler ja da..

Den Beamer selbst hab ich allerdings noch nie benutzt und weis deshalb auch net wie der richtig funktioniert..

--

zum Seitenanfang zum Seitenende Profil || Suche
008
09.06.2009, 18:10
Killarulez



naja also.. mein größtes problem ist die position gefolgt von, dass der laser den spieler verfolgt und dann das er bleibt!

--

Maps mit Fullbright sind wie Räume ohne etwas darin! Es ist zwar einfacher aber es fehlt immer was!
de_darkpipe 80% fertig
24h am Tag online auf 85.14.233.98:27015

zum Seitenanfang zum Seitenende Profil || Suche
009
10.06.2009, 09:39
gza



Du musst den Tracer natürlich alle mehrmals in der Sekunde neuberechnen, damit die Position aktualisiert wird. Dann folgt der Laser dir normalerweise.
Zur Position an sich: Wie ich schon gesagt habe würde ich mir die Vektoren ausgeben lassen. Bsp.:
DevMsg("Startposition: (%f, %f, %f) ", vecSrc.x, vecSrc.y, vecSrc.z);

--

zum Seitenanfang zum Seitenende Profil || Suche
010
10.06.2009, 16:39
Killarulez



xD ich glaub wir reden etwas an ein ander vorbei..
Ich will NICHT das er den Spieler verfolgt, also quasi wie bei einer Railgun =)

--

Maps mit Fullbright sind wie Räume ohne etwas darin! Es ist zwar einfacher aber es fehlt immer was!
de_darkpipe 80% fertig
24h am Tag online auf 85.14.233.98:27015

zum Seitenanfang zum Seitenende Profil || Suche
011
10.06.2009, 16:52
Adrian_Broher
Admin


Quellcode:pBeam->SetEndAttachment( LookupAttachment("Muzzle") ); Riecht ziemlich nach dem Problem "Laser verfolgt den Spieler". Hol dir die Position des Attachments (und nicht das Attachment selbst) und starte den Trace wie auch den Beam von da.

"Laser fängt ungefähr in Höhe der Knie an." Ich tippe darauf, dass das Attachment nicht gefunden wird. Evtl heisst es "muzzle" und nicht "Muzzle".

Edit: Du hast bereits Start- und Endpunkt. Nimm einfach die og Zeile raus. Das sollte beide Probleme loesen.

--

There is nothing wrong with high standards. It's your problem that you don't meet them.
If you think it's simple, then you have misunderstood the problem.
When a customer says "nothing has changed", assume they're lying.


Dieser Beitrag wurde am 10.06.2009 um 16:59 von Adrian_Broher bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
012
10.06.2009, 17:16
Killarulez



Wenn ich die Zeile raus nehme sehe ich eigentlich gar keinen Unterschied wenn ich ehrlich sein soll o_O
Mein Aufruf sieht so aus:
Quellcode:DrawBeam( vecSrc, vecStop, 1.0 );
Ich hab echt keinen Plan mehr was ich falschen machen könnte

--

Maps mit Fullbright sind wie Räume ohne etwas darin! Es ist zwar einfacher aber es fehlt immer was!
de_darkpipe 80% fertig
24h am Tag online auf 85.14.233.98:27015


Dieser Beitrag wurde am 10.06.2009 um 17:22 von Killarulez bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
013
15.06.2009, 09:32
gza



Hi,
ok..jetzt hab ich das Problem verstanden (Stichwort Railgun war gut!) :-)
Du darfst die Vektoren für en Tracer dann natürlich nur einmal erstellen (also beim Schuss) aber den Beamer selbst dann solange erneut Zeichnen wie der Laser sichtbar sein soll.
Bsp: Spieler schießt-> Erzeuge alle Vektoren( start, stop, richtung)
Beamer erstellen-> mit gerade erzeugten Vektoren
Beim zweiten zeichnen-> die selben Vektoren wie beim Erzeugen benutzen (und nicht neue berechnen!!)

So müsste es dann gehen.

--

zum Seitenanfang zum Seitenende Profil || Suche
014
17.06.2009, 21:20
Killarulez



Zitat:
gza postete
Hi,
ok..jetzt hab ich das Problem verstanden (Stichwort Railgun war gut!) :-)
Du darfst die Vektoren für en Tracer dann natürlich nur einmal erstellen (also beim Schuss) aber den Beamer selbst dann solange erneut Zeichnen wie der Laser sichtbar sein soll.
Bsp: Spieler schießt-> Erzeuge alle Vektoren( start, stop, richtung)
Beamer erstellen-> mit gerade erzeugten Vektoren
Beim zweiten zeichnen-> die selben Vektoren wie beim Erzeugen benutzen (und nicht neue berechnen!!)

So müsste es dann gehen.

Uff ich bin noch zu dumm tracer komplett zu verstehen, bin halt nicht lange dabei aber genau aus dem Grund frag ich ja hier ^.^
Kannst du mir vllt. erklären welcher code die erzeuger vektoren definiert?
o_O
und wo der beam das zweite mal gezeichnet wird x_x

--

Maps mit Fullbright sind wie Räume ohne etwas darin! Es ist zwar einfacher aber es fehlt immer was!
de_darkpipe 80% fertig
24h am Tag online auf 85.14.233.98:27015

zum Seitenanfang zum Seitenende Profil || Suche
015
18.06.2009, 09:34
gza



Du hast doch vorher mal folgendes geschrieben:

Zitat:
Killarulez postete
......
Quellcode:trace_t tr;
    Vector vecDir, attachpoint;
    QAngle vBeamAng;
    Vector vecSrc        = pPlayer->Weapon_ShootPosition();
    Vector vecAiming    = pPlayer->GetAutoaimVector( AUTOAIM_5DEGREES );

    CBaseViewModel *pViewModel = pPlayer->GetViewModel();

    pViewModel->GetAttachment( pViewModel->LookupAttachment("muzzle"), attachpoint, vBeamAng );
    AngleVectors( vBeamAng, &vecDir);
    Vector vecStop = attachpoint + (vecDir * MAX_TRACE_LENGTH);

    DrawBeam( vecSrc, vecStop, 1.0 );
Dann eine neue Definition DrawBeam:
Quellcode:void CWeapon357::DrawBeam( const Vector &startPos, const Vector &endPos, float width )
{
    //Tracer down the middle
    UTIL_Tracer( startPos, endPos, 0, TRACER_DONT_USE_ATTACHMENT, 6500, false, "GaussTracer" );

    //Draw the main beam shaft
    CBeam *pBeam = CBeam::BeamCreate( "sprites/laserbeam.vmt", 0.5 );
    
    pBeam->SetStartPos( startPos );
    pBeam->PointEntInit( endPos, this );
    pBeam->SetEndAttachment( LookupAttachment("Muzzle") );
    pBeam->SetWidth( width );
    pBeam->SetEndWidth( 0.05f );
    pBeam->SetBrightness( 255 );
    pBeam->SetColor( 255, 185+random->RandomInt( -16, 16 ), 40 );
    pBeam->RelinkBeam();
    pBeam->LiveForTime( 0.1f );
}
Im ersten abschnitt definierst du die Vektoren die dann die Methode DrawBeamer, im zweiten Abschnitt, dazu benutzt den Laser zu zeichnen.
So wie ich dass sehe reicht es die beiden Methoden nur ein einziges mal auszuführen und in der DrawBeamer Methode ganz unten bei : pBeam->LifeForTime( float time); die gewünschte Zeit einzufügen. Wichtig ist dass du den erten Teil nur ein einziges mal pro Laser durchführst!!! (Dort werden die Vektoren definiert)

--


Dieser Beitrag wurde am 18.06.2009 um 09:35 von gza bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
016
20.09.2009, 13:17
Killarulez



Problem ist, wie führe ich sie nur EINMAL aus? wenn ich sie in einer anderen Funktion ausführe geht es nicht..

--

Maps mit Fullbright sind wie Räume ohne etwas darin! Es ist zwar einfacher aber es fehlt immer was!
de_darkpipe 80% fertig
24h am Tag online auf 85.14.233.98:27015

zum Seitenanfang zum Seitenende Profil || Suche