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



Ihr kennt doch alle bestimmt den nervigen bug an "selfgauss" zu sterben, der dadurch ensteht wenn man auf gewisse Oberflächen schießt.
Bei der pro-mod von Half-life 1 (Adrenaline Gamer) und bei Elite Half-Life wurde der bug gefixt. Kann mir jemand verraten was am cod zu ändern ist? Arbeite ja selbst an einer multiplayer mod und bräuchte unterstützung.

--

http://www.xen-raiders.com/news/

zum Seitenanfang zum Seitenende Profil || Suche
001
12.04.2011, 13:52
Bluthund



Das ist kein Bug sondern afaik per Design so gewuenscht (aber natuerlich aenderbar): vgl. gauss.cpp:433 ff.

edit: Die Zeile ist:Quellcode:if ( pEntity->ReflectGauss() ) in der Fire-Memberfunktion. Nur fuer den Fall, dass die Zeilenangabe in deinem HLSDK nicht passt durch bereits vorangegangene Aenderungen

--

The C language combines all the power of assembly language with all the ease-of-use of assembly language.
"humorig is n blödwort :>" by -CarniGGeLjumpR-


Dieser Beitrag wurde am 12.04.2011 um 13:54 von Bluthund bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
002
12.04.2011, 14:06
Crowbar



Das hat ich auch gefunden, aber was soll ich dran ändern?

--

http://www.xen-raiders.com/news/

zum Seitenanfang zum Seitenende Profil || Suche
003
12.04.2011, 14:10
m_iace



man könnte überprüfen ob das pEntity der spieler ist

--

zum Seitenanfang zum Seitenende Profil || Suche
004
12.04.2011, 17:56
Bluthund



Du hast in dem Branch da noch eine Selektion ob der Winkel zwischen Flaechennormale und an der Flaeche gespiegelten Einfallwinkel des Schusses groesser als 60° ist. Das ist der Reflexionsfall fuer die Gauss. Den kannst du entweder komplett entfernen aber dann sind reflektierte Schuesse mit der Gauss nicht mehr moeglich.
Oder aber du laesst das kurz vorherige Ueberschreiben des Pointers auf das Entity, welches ignoriert werden soll (pentIgnore), auf NULL aus. Damit bleibt es auf dem Initialwert, naemlich dem Player (siehe Zeile 378). Ausser fuer den Fall, dass im Verlauf des Tracing-Loops ein Entity getroffen wird, welches den Gaussschuss nicht reflektiert (in diesem Fall wird dieses Entity in pentIgnore vermerkt, da die Schleife fuer das Tracing sonst abhaengig von der Dicke des Entities nicht terminieren wuerde). Letzteres waere zu beachten wenn der Player (auch im Rahmen der Reflexion) durch ein solches Entity hindurchschiesst und anschliessend selbst getroffen wird.
Wenn du da garnicht dran herumbasteln willst, sondern einfach nur den direkten Schaden auf den Spieler abwenden willst, kannst du wie von m_iace vorgeschlagen vor der Berechnung des Schussschadens (pEntity->TraceAttack()) einfach pruefen ob sich der Player gerade selbst grillen wuerde und dann entsprechend entweder ganz aus der Schleife aussteigen oder nur die Schadensverteilung uebergehen.

In den letzteren beiden Varianten musst du auch noch auf den Blastdamage aufpassen, der im Reflexionsfall generiert wird (der RadiusDamage()-Aufruf bei "// explode a bit"). Damit kann sich der Spieler durchaus noch selbst erlegen wenn er nah genug an einer Wand steht an der sein Schuss reflektiert wird. Also entweder rausnehmen oder noch nen zusaetzlichen Skalierungsfaktor fuer den Schaden einbauen.

Aber auch an dieser Stelle auch nochmal: Es ist kein Bug, sondern durchaus gewollt, dass sich Leute bei unsachgemaessem Umgang mit der Gauss selbst erlegen.

--

The C language combines all the power of assembly language with all the ease-of-use of assembly language.
"humorig is n blödwort :>" by -CarniGGeLjumpR-

zum Seitenanfang zum Seitenende Profil || Suche
005
13.04.2011, 12:12
Crowbar



Danke vielmals. Funktioniert einwandfrei.

--

http://www.xen-raiders.com/news/

zum Seitenanfang zum Seitenende Profil || Suche