1 registered members (Akow),
1,361
guests, and 9
spiders. |
Key:
Admin,
Global Mod,
Mod
|
|
|
Re: Herumfliegende Körperteile
#9207
06/06/02 00:07
06/06/02 00:07
|
Anonymous
OP
Unregistered
|
Anonymous
OP
Unregistered
|
Dann versuchen wir's mal anzugehen. Du brauchst ein Knochen-Modell (bone.mdl) und eine Blutflecken-Sprite (blut.bmp). Wie erschaffst Du die Knochen? Mit EMIT ?? -> dann musst Du halt selbst eine Knochen-Definition scheiben z.B. (definition_flying_bones). Ich hab den Code so geschrieben, dass Du einfach beispielsweise 7x einen Knochen erschaffen kannst, bevor Du das Ewige segnest, geht das ok. ... CREATE (<bone.mdl>, MY.X, flying_bones); CREATE (<bone.mdl>, MY.X, flying_bones); CREATE (<bone.mdl>, MY.X, flying_bones); CREATE (<bone.mdl>, MY.X, flying_bones); CREATE (<bone.mdl>, MY.X, flying_bones); CREATE (<bone.mdl>, MY.X, flying_bones); CREATE (<bone.mdl>, MY.X, flying_bones); ... wait 1; REMOVE (ME); ...
OK, dann mein Code (hab ihn nicht getestet, hat vielleicht noch ein paar Fehler drin).
//BIND <blut.bmp>; //BIND <bone.mdl>;
DEFINE _COUNTER_1, SKILL32; DEFINE _COUNTER_2, SKILL33; DEFINE _ARRAY_X,SKILL34; DEFINE _ARRAY_Y,SKILL35; DEFINE _ARRAY_Z,SKILL36; DEFINE _ARRAY_PAN,SKILL37; DEFINE _ARRAY_TILT,SKILL38; DEFINE _ARRAY_ROLL,SKILL39;
VAR angles[3]; VAR bounce_pos[3];
//Prototypes
FUNCTION flying_bones(); FUNCTION blut_function(); FUNCTION bone_bounce(); FUNCTION blut_init();
//FUNCTION der fliegenden Knochen
FUNCTION flying_bones { MY.SCALE_X = YOU.SCALE_X/2.5; MY.SCALE_Y = YOU.SCALE_Y/2.5; MY.SCALE_Z = YOU.SCALE_Z/2.5; MY._ARRAY_X = (40 - RANDOM (80)) * TIME; MY._ARRAY_Y= (40 - RANDOM (80)) * TIME; MY._ARRAY_Z= RANDOM (20) * TIME;
MY._ARRAY_PAN=(20 - RANDOM (40)) * TIME; MY._ARRAY_TILT=(20 - RANDOM (40)) * TIME; MY._ARRAY_ROLL=(20 - RANDOM (40)) * TIME; MY._COUNTER_1 = 1000; MY._COUNTER_2 = 1 + RANDOM (3);
MY.EVENT = bone_bounce; MY.ENABLE_BLOCK = ON; MY.ENABLE_ENTITY = ON;
WHILE (MY._COUNTER_1 > 0) { MY._COUNTER_1 -= MY._COUNTER_2; MY.PAN += MY._ARRAY_PAN; MY.TILT += MY._ARRAY_TILT; MY.ROLL += MY._ARRAY_ROLL; ent_move (NULLVECTOR, MY._ARRAY_X); wait (1); } REMOVE (ME); }
//FUNCTION der abprallenden Knochen
FUNCTION bone_bounce() { IF ((EVENT_TYPE == EVENT_BLOCK) || (EVENT_TYPE == EVENT_ENTITY)) { TO_ANGLE angles,BOUNCE; // BOUNCE MY.PAN -= MY._ARRAY_PAN; MY.TILT -= MY._ARRAY_TILT; MY.ROLL -= MY._ARRAY_ROLL; blut_init(); CREATE(<blut.bmp>,bounce_pos,blut_function); } }
//FUNCTION der blut sprites
FUNCTION blut_function { MY.FACING = ON; wait 200; REMOVE (ME); }
//FUNCTION der gebouncten Knochen (Vectorübergabe)
FUNCTION blut_init() { VEC_SET(blut_pos,MY.X); VEC_SET(NULLVECTOR, MY._ARRAY_X); }
|
|
|
Re: Herumfliegende Körperteile
#9208
06/06/02 18:38
06/06/02 18:38
|
Anonymous
OP
Unregistered
|
Anonymous
OP
Unregistered
|
|
|
|
Re: Herumfliegende Körperteile
#9209
06/06/02 21:47
06/06/02 21:47
|
Anonymous
OP
Unregistered
|
Anonymous
OP
Unregistered
|
In der FUNCTION flying_bones kannst Du die Geschwindigkeit und die Lebensdauer ändern
Geschwindigkeit: so halbierst Du die Geschwindigkeit
MY._ARRAY_X = (20 - RANDOM (40)) * TIME; MY._ARRAY_Y= (20 - RANDOM (40)) * TIME; MY._ARRAY_Z= RANDOM (10) * TIME;
Lebensdauer: so leben Deine Knochen nur noch 1/10
MY._COUNTER_1 = 100; (MY._COUNTER_1 = 1000; ist ja pervers lange!!!)
Du kannst natürlich den Knochen auch das FLAG TRANSPARENT = ON setzen und dann die Knochen ausblenden lassen, für MY.ALPHA setzt Du einfach MY._COUNTER_1 gleich (MY.ALPHA = MY._COUNTER_1;).
Mach mal ein Screenshot! Würd mich echt interessieren!!
|
|
|
Re: Herumfliegende Körperteile
#9210
06/06/02 23:45
06/06/02 23:45
|
Anonymous
OP
Unregistered
|
Anonymous
OP
Unregistered
|
@Evelyne Boo: Danke hast mir sehr geholfen. Hab jetzt schon einen schönen Effekt. Allerdings habe ich noch ein paar Problemchen bei den Blutspritzern. Diesen Effekt werde ich morgen oder übermorgen fertig haben. Wenn du interessiert bist, kann ich dir dann den rohen Code per Nachricht senden-weil du mir so geholfen hast! Und einen Screenshot werde ich auch noch hier reintun-aber heut habe ich keine Zeit mehr zum Coden!
|
|
|
Re: Herumfliegende Körperteile
#9211
06/07/02 14:28
06/07/02 14:28
|
Anonymous
OP
Unregistered
|
Anonymous
OP
Unregistered
|
Alles funktioniert wunderbar. Nur wenn ich die Blutspritzerfunktion einschalte, bekomme ich immer nur die Fehlermeldung: "Engine Crash - More than MAX_ENTITIES (300)". Aber ich erstelle doch garnicht so viele Entities, woran kann es liegen? Kann man den Wert nicht ein bißchen hochschrauben, oder ist der bei einer anderen Version höher?
|
|
|
Re: Herumfliegende Körperteile
#9212
06/07/02 16:37
06/07/02 16:37
|
Joined: Mar 2002
Posts: 1,774 Magdeburg
FlorianP
Serious User
|
Serious User
Joined: Mar 2002
Posts: 1,774
Magdeburg
|
Hi, Du musst schreiben: max.entities = 500; Ich glaube so war´s wenn nicht schau mal in der Referenz nach.
I <3 LINQ
|
|
|
Re: Herumfliegende Körperteile
#9213
06/07/02 17:33
06/07/02 17:33
|
Anonymous
OP
Unregistered
|
Anonymous
OP
Unregistered
|
Ja es funktioniert. Außerdem war der Fehler in der Blut_Sprite Funktion. Dort wird ein Create(<...pcx... ausgeführt, wenn die Einzelteile einen Block oder eine Entity berühren-und das tun sie doch die ganze Zeit, weil ich in meiner eigenen Funktion noch Schwerkraft eingebaut habe. Aber nochmals vielen Dank. Trotzdem sieht der Effekt bei mir irgendwie total scheiße aus. Ich habe jetzt auch noch trace verwendet, damit das Blut auf dem Boden kommt, aber ich weiß nicht wie ich es anstellen soll, dass es an den Wänden in der gleichen Schräglage hängenbleibt! Weiß jemand Rat?
|
|
|
Re: Herumfliegende Körperteile
#9214
06/08/02 00:36
06/08/02 00:36
|
Anonymous
OP
Unregistered
|
Anonymous
OP
Unregistered
|
Das Blut runterfliessen? Das würd ich mit EFFECT machen? Post mal ein Screenshot vom Gemetzel!
PS: TRACE würd ich vergessen, braucht viel zuviel Speicher.
|
|
|
Re: Herumfliegende Körperteile
#9215
06/08/02 01:30
06/08/02 01:30
|
Anonymous
OP
Unregistered
|
Anonymous
OP
Unregistered
|
OK, ich hab die FUNCTION blut_function verbessert. Mach mal eine zweite Blut-Bitmap (blut2.bmp) und häng das darunter. Irgendwie sollte das Blut ganz langsam runterlaufen. Hab's nicht ausprobiert ... aber versuchs mal, würd mich echt interessieren, ob's funktioniert! code:
BMAP blood_map,<blut2.bmp>;
VAR parray [1801]; VAR ppoint = 0;
//PROTOTYPEN FUNCTION array_function(); FUNCTION blut_function(); FUNCTION blut_function_2(); FUNCTION blood_particle();
FUNCTION array_function() { ppoint = 0; while (parray [ppoint*6] != 0) { ppoint += 1; } }
FUNCTION function_blut { MY.FACING = ON; blut_function_2(); wait 200; REMOVE (ME); }
FUNCTION blut_function_2 { MY.PASSABLE = ON; array_function(); if (ppoint >= 300) { END; } my.skill14 = ppoint; parray[my.skill14 * 6] = 1; if (my.skill8 == 0) { my.skill8 = 4; } if (my.skill7 == 0) { my.skill7 = 1; } if (my.skill7 < 0.2 && my.skill7 != -1) { my.skill7 = 0.2; } if (my.skill7 > 3) { my.skill7 = 3; } while(1) { if (my.skill7 > 0) {my.skill13 -= 1; if (my.skill13 <= 0) { my.skill13 = my.skill8 / TIME; parray[my.skill14 * 6 +2] = my.skill7; parray[my.skill14 * 6 +1] = my.x + (random(4) - 2) * my.skill7; my.skill10 = my.skill14; my.skill11 = my.y + (random(4) - 2) * my.skill7; my.skill12 = my.z; emit(1,my.skill10,blood_particle); } } wait(1); } }
FUNCTION blood_particle() { if(my_age == 0) {my_alpha = 0; my_color.blue = parray[my_pos.x * 6 + 2]; my_pos.x = parray[my_pos.x * 6 + 1]; my_speed.z = -((0.7+random(1)) * my_color.blue); my_color.red = random (80); my_color.green = random (80); my_size = (1100+random(200)) * my_color.blue; my_map = blut_map; my_flare = on; END; } if (my_age > 80) {MY_ACTION = NULL;} if (my_age > 17){my_alpha = 40 - my_age/2;} else { my_alpha = my_age * 2; } my_speed.x = (sin(my_age * 6 + my_color.red) / 2.5) * my_color.blue; my_speed.y = (cos(my_age * 7 + my_color.green) / 2) * my_color.blue; }
|
|
|
Re: Herumfliegende Körperteile
#9216
06/10/02 04:52
06/10/02 04:52
|
Anonymous
OP
Unregistered
|
Anonymous
OP
Unregistered
|
Hallo nochmal Habe jetzt ein Problem, dass die Körperteile die ganze Zeit den Boden und so berühren und keine Blutflecken, sondern Blutschlieren verursachen, weil andauernd Blutsprites generiert werden. Mein zweites Problem besteht darin, dass die Blutsprites sich mit den tilt,roll und pan Winkel nicht der Geometrie anpassen. Wie stelle ich das alles an? Schaut mal auf mein Screenshot!
|
|
|
|