o!Blut Effekte

Posted By: littlejacky

o!Blut Effekte - 01/02/10 18:48

Hallo!
(Syr für den Topic Namen. Habe mich verdrückt ^^)

Also.
In vielen Spielen schlägt bzw. ballert man den Gegner nieder und Blut strömt.
Dann tropft es auf den Boden oder auf die Wand und bleibt dort hängen.
Kann mir bitte jemand einen Script, wo man so einen Effeckt findet.
BITTE!
Posted By: alpha_strike

Re: o!Blut Effekte - 01/04/10 08:13

sick ?!? Wie alt bist Du denn?
Posted By: the_clown

Re: o!Blut Effekte - 01/04/10 12:35

Originally Posted By: alpha_strike
sick ?!? Wie alt bist Du denn?


Gute Frage. grin
Technisch gesehen funktioniert so was mit einer Kombination aus Partikeleffekten, decals sowie klugem Einsatz der c_trace Funktion.
Wenn du aber nicht selbst programmierst, sondern die Templates nutzt, sollte ein leichter Blutefekt bereits vorhanden sein.
Posted By: littlejacky

Re: o!Blut Effekte - 01/04/10 15:51

War mir schon klar, das sowas irgendwie mit Partikeln funktioniert.
Aber wie "erkennen" die Partikel, dass sie mit einem Model bzw. einer Wand zusammenprallen?
Posted By: Hummel

Re: o!Blut Effekte - 01/04/10 17:12

c_trace
Posted By: littlejacky

Re: o!Blut Effekte - 01/05/10 09:06

Aber wie sollte der Code aussehen???

Und was sind "decals"?
Posted By: alpha_strike

Re: o!Blut Effekte - 01/05/10 14:28

Mit c_trace ermittelst Du Kollisionsbereiche in der Umgebung Deines „Opfers“.
Mit ent_decal kannst Du an Flächen Sprites ansetzen, die sich der Oberflächenstruktur anpassen ( Blut- oder Dreckflächen). Mit einfachen Partikeln simulierst Du Blutspritzer.

Jemand, der Dir so einen Code abliefert, ein Code, der nicht nur Standart ist, der wird viel, viel Geld dafür verlangen können. Umsonst wird Dir hier niemand ein gutes Skript abliefern. Sorry, aber das ist die Wahrheit.
Posted By: littlejacky

Re: o!Blut Effekte - 01/05/10 15:44

Ja. Die Wahrheit schmerzt.^^

Die Partikeln habe ich schon in einen Script eingebaut und "decals" sind mir jetzt auch schon klar.
Das einzige ist eben das "c_trace".

Gibt es irgendwo ein Beispiel über "c_trace", das mit diesem Code vielleicht irgendwie zu tun hat???
Posted By: alpha_strike

Re: o!Blut Effekte - 01/05/10 15:55

Wenn Du auf einen Gegner oder an eine Wand schießt, dann kannst Du per c_trace den Trefferpunkt ermitteln (hit oder target). An diesen Ziel-Vektor setzt Du Dein Decal. Wenn Du Dich noch eine oder zwei Stunden geduldest, kann ich Dir hier einen Video mit Beispiel-Code posten.
Posted By: achaziel

Re: o!Blut Effekte - 01/05/10 16:03

lies dir mal n paar aum durch, da muss schon fast was drin stehn.
Posted By: littlejacky

Re: o!Blut Effekte - 01/05/10 16:07

In allen meiner Ego-shooter Games(meist nur Tests) benutze ich c_trace (wüsste auch nicht wie man Einschusslöcher oder Wunden anders macht).
Aber wohin schreibe ich das c_trace bei den Partikeln und WIE???

Auf das Video mit dem Beispiel-Code freue ich mich schon.
Posted By: the_clown

Re: o!Blut Effekte - 01/05/10 17:06

c_trace für die Partikel selbst zu nutzen wäre nicht gut - das führt innerhalb einiger Sekunden zum Framdrop-Overkill. grin
Die Kunst ist vielmehr korrektes Timing:
Wenn du einen Charakter mmit c_trace triffst (deine normale Schussfunktion), musst du in der Event - Funktion einen weiteren Trace in Schussrichtung starten, mit dem du dann die Blutflecken platzierst.
Wird in alphas Code wahrscheinlich zu sehen sein. wink
Posted By: alpha_strike

Re: o!Blut Effekte - 01/05/10 17:11

Brauche gar keinen code zu schreiben... unter Ent_decal stehen in der Anleitung die besten Beispiele...#

BMAP* bmMark = "blood.dds";
SOUND* sndShot = "bullet.wav";

// control a decal-placing gun with the camera
function use_decal_gun()
{
while (1)
{
// calculate the target vector
VECTOR trace_target;
vec_set(trace_target,vector(5000,0,0)); // the weapon has a firing range of 5000 quants
vec_rotate(trace_target, camera.pan);
vec_add(trace_target, camera.x);

// display a red spot at the target position
if (c_trace(camera.x,trace_target, IGNORE_PASSABLE | USE_POLYGON| SCAN_TEXTURE) > 0) // hit something?
draw_point3d(hit.x,vector(50,50,255),100,3);

// fire and then place a decal at the hit position
if (key_ctrl) // fire
{
if (HIT_TARGET) // target hit?
{
PARTICLE* p = ent_decal(you,bmMark,7+random(3),random(360)); // place a random sized decal at the hit entity
p->lifespan = 1600; // remove decal after 100 seconds
}
snd_play (sndShot,100,0); // play the shot sound at a volume of 100
wait(-0.5); // reload
}
wait(1);
}
}
Posted By: alpha_strike

Re: o!Blut Effekte - 01/05/10 17:23

Hier sind 2 Videos, die prinzipiell auf dem Code aufbauen.

[video:youtube]http://www.youtube.com/watch?v=ur3YYW0Ee2Y[/video]

[video:youtube]http://www.youtube.com/watch?v=5XlYOf-DxXg[/video]
Posted By: littlejacky

Re: o!Blut Effekte - 01/05/10 17:24

Danke!

@ alpha_strike:
Den Code habe ich schon etwas früher im Handbuch gesehen.
Sry.
(Durch den Code verstehe ich die "decals" so einigermaßen)

@the_clown:
Was meinst du mit:
"... musst du in der Event - Funktion einen weiteren Trace in Schussrichtung starten, mit dem du dann die Blutflecken platzierst."
Posted By: the_clown

Re: o!Blut Effekte - 01/05/10 17:36

Nehmen wir an, dein Gegner hat eine Aktion:

action enemy()
{
//// ....
/// Hier das Event:
my.emask |= ENABLE_SHOOT;
my.event = enemyEvent;
}

Dann ist die Funktion enemyEvent das Event. Klar?
Also, das sähe dann so aus:
Code:
function enemyEvent()
{
    if(event_type == EVENT_SHOOT)
    {
         // tue folgendes bei Beschuss:
         VECTOR trace_to;
         vec_set(trace_to,vector(100,0,0));
         vec_rotate(trace_to,you.pan);
         vec_add(trace_to,target);
         c_trace(target.x,trace_to,IGNORE_ME | IGNORE_PASSABLE);

        
         if (HIT_TARGET) // target hit?
         {
          PARTICLE* p = ent_decal(you,bmMark,7+random(3),random(360)); // place a random sized decal at the hit entity 
          p->lifespan = 1600; // remove decal after 100 seconds
         }
      }
}



Das würde beim Anschießen einen Blutfleck an der Wand hinter dem Gegner erstellen.
Mit ein paar wait() Anweisungen und etwas mehr traces zu mehr Orten kann man so, schön getimt, viele viele Flecken an viele viele Wände und Decken machen... grin
Bei Unklarheiten, frag noch mal nach.
Posted By: littlejacky

Re: o!Blut Effekte - 01/05/10 17:41

Danke!
Ich probiers mal aus.
Posted By: littlejacky

Re: o!Blut Effekte - 01/05/10 17:48

Muss man im "Player-Script" irgendetwas Notwendiges noch hinzufügen oder so?
Posted By: alibaba

Re: o!Blut Effekte - 01/05/10 18:03

nee eigendlich nicht. es muss nur vorrausgesetzt sein, das du beim schießen ACTIVATE_SHOOT aktivierst.
Posted By: littlejacky

Re: o!Blut Effekte - 01/05/10 18:43

Das war klar.

Es wird jatzt zwar ein Blutfleck an der Wand abgebildet, aber auf dem Model ist nicht mal mehr ne Wunde. frown
Posted By: alibaba

Re: o!Blut Effekte - 01/05/10 19:34

dann check mit dem c_trce der von der waffe kommt, ob der player getroffen wird. wenn ja, dann ein decal setzen.
Posted By: littlejacky

Re: o!Blut Effekte - 01/05/10 19:42

Die Wunde entsteht nur nicht, wenn der Blutfleck an der Wand entsteht.
Posted By: littlejacky

Re: o!Blut Effekte - 01/07/10 08:16

Vielleicht hilft das:

Wenn ich den Gegner eine Kugel ins Hirn ballere entsteht ein decal auf der gewünschten Stelle, falls hinter ihm keine Wand ist.
Falls doch entsteht ein decal an der Wand, aber nicht am Gegner.

Das decal, das die Wunde zeigt, habe ich in meine Waffen-Function geschrieben.
Das mit dem Blutfleck an der Wand direkt beim Gegner. In beiden Fällen habe ich Partikeln.

Kennt vlt jemand den Fehler???
Posted By: alpha_strike

Re: o!Blut Effekte - 01/07/10 09:06

Ich bin kein Meister im Skripten, vielleicht gibt es tausend bessere Möglichkeiten... so bin ich an das Problem gegangen...

1.
Ich trace auf den Gegner - treffe ich ihn, dann platziere ich eine Wunde am Kopf und lasse Partikel ausströhmen (für das Blutgespritze).

2. Im selben frame-Zyklus setze ich nun das getroffene Objekt auf ignorieren.
Jetzt ein Trace vom Zielobjekt auf einen hinteren Vektor. Wird ein weiteres Objket erkannt (Block oder MDL), platziere ich dort ebenfalls einen Fleck.

Der Gag ist also, egal, ob im selben oder folgenden Zyklus - ein zweiter Trace stattfindet. Und dieser Trace - der auf den gleichen Ziel-Vektor wie zuvor gerichtet ist, muß aber das zuvor getroffene Objekt ignorieren.
Posted By: littlejacky

Re: o!Blut Effekte - 01/08/10 07:56

OK
Ich probiers mal mit dem ignorieren.
© 2023 lite-C Forums