000
21.08.2001, 18:48
The_Overmind
|
Hi ho Ich bräuchte mal ein wenig Hilfe mit dem Hud. Ich hab nun eine neue Hud Funktion gemacht, die ne Traceline in die Blickrichtung "abfeuert", die End-Koordinaten sowie die Player Koordinaten dazu benutzt die Länge der Traceline zu ermitteln, die Länge in Meter umrechnet und dann im Hud ausgiebt. Das alles is 100% Client-Seitig.
Alles funktioniert wunderbar, nur komischerweise wird die Traceline nach unten anstatt in Blickrichtung abgefeuert. Ich habe keine Ahnung wieso das passiert. Die Vectoren usw. sind eigentlich alle richtg, trotzdem wird die Traceline nach unten abgefeuert.
Hier mal die Funktion mit der ich die Entfernung usw. bestimme:
float CHudDis::GetDistance( void ) { float m_flXDifference, m_flYDifference, m_flZDifference; float m_flFDistance, m_flFinalDistance; cl_entity_t *player;
player = gEngfuncs.GetLocalPlayer();
if ( !player ) { gEngfuncs.Con_Printf( "nix GetLocalPlayer!\n" ); }
vec3_t vecSrc = player->origin; vec3_t vecDest; vec3_t up, right, forward;
AngleVectors( player->angles, forward, right, up ); VectorMA( vecSrc, 8192, forward, vecDest );
pmtrace_t tr;
gEngfuncs.pEventAPI->EV_PlayerTrace( vecSrc, vecDest, PM_STUDIO_BOX, -1, &tr );
if ( vecSrc.x > tr.endpos.x ) m_flXDifference = vecSrc.x - tr.endpos.x; else m_flXDifference = tr.endpos.x - vecSrc.x;
if ( vecSrc.y > tr.endpos.y ) m_flYDifference = vecSrc.y - tr.endpos.y; else m_flYDifference = tr.endpos.y - vecSrc.y;
if ( vecSrc.z > tr.endpos.z ) m_flZDifference = vecSrc.z - tr.endpos.z; else m_flZDifference = tr.endpos.z - vecSrc.z;
m_flFDistance = sqrt( ( m_flXDifference * m_flXDifference ) + ( m_flYDifference * m_flYDifference) ); m_flFinalDistance = sqrt( ( m_flFDistance * m_flFDistance ) + ( m_flZDifference * m_flZDifference ) );
m_flFinalDistance /= 40; return m_flFinalDistance; }
Wäre nett wenn mir dabei mal jemand helfen könnte :))
Thx schonmal im Vorraus MfG [-XHP-]The Overmind
--
|
|
Profil || Suche
|
001
21.08.2001, 19:08
Polymorph
|
Hm.. also ich seh da so eigentlich nicht so direkt nen Fehler, die Winkel Sachen sind auch OK, ich hab jetzt keinen Bock das nachzugucken. Nur muss man vorher doch z.b. die PM States pushen etc. hier der kram direkt aus EV_HLDM_FireBullets:
gEngfuncs.pEventAPI->EV_SetUpPlayerPrediction( false, true );
// Store off the old count gEngfuncs.pEventAPI->EV_PushPMStates(); // Now add in all of the players. gEngfuncs.pEventAPI->EV_SetSolidPlayers ( idx - 1 ); gEngfuncs.pEventAPI->EV_SetTraceHull( 2 );
Dann packst du hier den TraceLine code rein.
gEngfuncs.pEventAPI->EV_PopPMStates ();
Könnte sein, das es das ist...
--
----------------------------------------
[url="mailto:polymorph@gdnmail.net"]Polymorph[/url]
Lead Programmer of Paroxysm - Alien Encounters
|
|
Profil || Suche
|
002
21.08.2001, 19:49
TheTinySteini
|
Hm, ja entweder der Code von Polymorph hilft dir, oder, wenn es immer noch nicht geht, dann folgendes: player->angles enthält nicht unbedingt die richtigen Winkel, hab ich gehört. Mach mal ein extern vec3_t v_angles; vor deine Funktion und probier's dann mit der Variable v_angles.
--
TheTinySteini Coder Poke646 "Don't Panic" - Hitchhiker's Guide to the Galaxy
|
|
Profil || Suche
|
003
21.08.2001, 20:32
The_Overmind
|
So funktioniert nun danke nochmal :))
--
|
|
Profil || Suche
|
004
21.08.2001, 20:57
Diablo_bth
|
woher hast du nur das
"nix GetLocalPlayer!\n"
*tststs* :)
--
|
|
Profil || Suche
|
005
21.08.2001, 21:08
The_Overmind
|
Blah! :) Hatte grad dein Tutorial noch offen als ich an der TraceLine gearbeitet hab. Aber ich werd das noch umändern damit du nicht zu sehr genötigt wirst bzw. mich auf Kopierrecht verklagen kannst =)
--
|
|
Profil || Suche
|
006
21.08.2001, 21:33
Diablo_bth
|
*gg* *Geschäft widder*
also sagen wir 30 Euro-Cents pro Abrufer?
--
|
|
Profil || Suche
|
007
21.08.2001, 22:12
The_Overmind
|
Zuuu Späääät! Schon geändert ;))
--
|
|
Profil || Suche
|