Willkommen ~Gast!
Registrieren || Einloggen || Hilfe/FAQ || Staff
Probleme mit der Registrierung im Forum? Melde dich unter registerEin Bild.
Autor Beitrag
000
29.12.2002, 21:38
fischKopf



hallo leute, habt ihr mich vermisst? bin wieder da ;-)))))) hab euch liep *gg*
hehe.. so, los gehts.

hab mir folgendes überlegt. diese schönen tripmine's sollen beim reinlaufen, folgendes nicht tun:

- Explodieren
- Verschwinden

sollen aber:

- Den Spieler trotzdem töten
- Das nächste mal wieder und wieder und wieder, so lange man reinläuft.

ich war der ansicht das sich dies irgenwie bei:
Quellcode:void CTripmineGrenade::DelayDeathThink( void )
{
    KillBeam();
    TraceResult tr;
    UTIL_TraceLine ( pev->origin + m_vecDir * 8, pev->origin - m_vecDir * 64,  dont_ignore_monsters, ENT(pev), & tr);

    Explode( &tr, DMG_BLAST );
}

abspielt. hab ich also mal "KillBeam();" auskomentiert. was passiert? der laser bleibt. schonmal gut. nun fehlt nur noch das dass teil nicht explodiert und verschwindet. ich hab alles gängige aus der funktion ausprobiert, doch ich krieg den gewünschten effekt nicht hin. kann mir das jemand genauer erklähren? wie ich vorgehen muss?

--

zum Seitenanfang zum Seitenende Profil || Suche
001
29.12.2002, 23:29
Killing Me Softly



Fast richtig *g*:

void CTripmineGrenade :: BeamBreakThink(void) kontrolliert permanent, ob der Strahl unterbrochen wurde. Falls ja, wird Killed(...) aufgerufen, was wiederrum DelayDeathThink(...) aufruft. Und damit es nicht ganz so einfach wird, ruft DelayDeathThink(...) die Funktion Explode(...) auf, diese wiederum RadiusDamage(..), welche den eigentlichen Schaden macht.

Was musst du tun? BeamBreakThink() darf beim unterbrechen des Strahles nicht Killed(..) aufrufen, sindern muss dem Spieler, welcher durch den Strahl gelatscht ist, selber den Schaden zufügen.
Quellcode:
if (bBlowup)
{
    CBaseEntity *pEntity = CBaseEntity::Instance( tr.pHit );
    if (pEntity)
        pEntity->TakeDamage(pev,m_hOwner->pev,200,DMG_BLAST);
}

müste einigermaßen funktionieren, hab's nicht getestet.

--

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

zum Seitenanfang zum Seitenende Profil || Suche
002
29.12.2002, 23:40
fischKopf



vielen dank für deine antwort. habs grad compiliert und getestet, funktioniert genau wie ich es mir vorgestellt habe. :-) danke nochmals.

nun muss ich nur noch eins machen. nähmlich das verhindern, damit man mit einer waffe die minen nicht kaputt machen kann *g*. ich werde sicher einen timer schreiben, der die minen irgendwann selbst zerstört, sonst wird es schon unfaer :)

--

zum Seitenanfang zum Seitenende Profil || Suche
003
29.12.2002, 23:45
Killing Me Softly



in der Spawn-Funktion findest du die Zeile
Quellcode:
pev->takedamage = DAMAGE_YES;

Änder das in DAMAGE_NO und man kann draufschießen, solange man will.

--

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

zum Seitenanfang zum Seitenende Profil || Suche
004
30.12.2002, 01:52
fischKopf



danke dir auch das klappt wunderbar. mir ist nun nur ein fehler noch aufgefallen. wenn ein enemy in die laser dinger läuft, bekomme ich keinen point, sondern er stirbt als hätte er sich selber mit der tripmine gekillt hm. ;-) :-/

--

zum Seitenanfang zum Seitenende Profil || Suche
005
30.12.2002, 08:10
Megge



bin zwar kein coder, aber rein ausm Bauch raus müsste dann das wieder rein:
Quellcode:
TraceResult tr;

--

zum Seitenanfang zum Seitenende Profil || Suche
006
30.12.2002, 10:07
Gott



lass doch am ende der killed dings wieder die mine neu spawnen am gleichen punkt

--

millirem und bequerel , kleine kinder sterben schnell

Arsch für alles bei War in Europe
www.warineuropemod.com

zum Seitenanfang zum Seitenende Profil || Suche
007
30.12.2002, 14:47
fischKopf



@Gott: hm, danke für den tip. hab das versucht und am ende "Spawn();" gemacht. der effekt ist immer noch nicht wie er soll. zwar hört man nach dem reinlaufen ein respawn der tripmine, aber trotzdem ist es immer noch nicht so wie erwünscht.

irgendwie hab ich so das gefühl das es an folgender zeile liegt:
Quellcode:pEntity->TakeDamage(pev,m_hOwner->pev,200,DMG_BLAST);
als müsste man aus dem "m_hOwner" eine art attacker machen? liege ich da fallsch? irgendwie klingt die teile für mich wie: "Töte den Owner, also den besitzer". ;-/

--

zum Seitenanfang zum Seitenende Profil || Suche
008
30.12.2002, 14:51
fischKopf



wo hab ich mein kopf ;-)
kann ja ned sein. diese zeile müsste eigentlich in der art so sein:

pEntity->TakeDamage(pev,m_hOwner->pev,200,DMG_BLAST);

TakeDamage | Also führe beschädigung aus.
m_hOwner | Wer hat die mine gelegt, um den point zu geben. (also das gehenteil)

richtig?

--

zum Seitenanfang zum Seitenende Profil || Suche