1.0 Einführung 

2.0 Die Anfänge

3.0 Der Hauptscript

4.0 Move-Script

5.0 Kamera

6.0DorfbewohnerKI

7.0 Erste Waffen

8.0 Panels

9.0 Der erste Quest

10.0 Partikel

11.0 Menü

12.0 Abschließung

13.0 Downloads

14.0 Codesammlung

15.0 Frei Belegbare

Steuerung

10.0 PARTIKEL

10.1 Erklärungen

Als erstes mach ich einen großen Teil mit Erklärungen über Partikel bevor ich mich den Partikel über RPGS zuwende!

Sie werden für jedes Spiel gebraucht! Partikel! Ohne sie wäre ein Spiel schrecklich eintönig
(in Sachen Grafik). In den jetzt folgenden Kapiteln versuche ich ihnen zu erklären wie 
man Partikel an besten einsetzt und nutzt!


3.Einfach Partikelaction! Erklärungen finden sie weiter unten und ihm Code!

Action Fadeout()
{
my.alpha-=random(4)+1; //er Partikel soll beständig an Durchsichtigkeit verlieren
if(my.alpha<=0)
{
my.lifespan=0; //wenn Partikel unsichtbar ist soll Lifespan null sein (wenn Lifespan null ist wird der Partikel gelöscht!)
}
}
Function Partikel
{
my.red=255; //farbe des Partikels! Der Partikel soll rot sein!
my.blue=0; // wenn man einen Partikelstrom mit Zufallsfarbe haben will muss man einfach bei allen Farben
my.green=0; // z.B. my.red=random(255)+0; schreiben!
MY.VEL_X=Random(6)-2; //Geschwindigkeit in die x,y,z Richtungen
MY.VEL_Y=Random(6)-2;
MY.VEL_Z=Random(6)-2;
MY.Gravitiy=-0.3; //Gravität mit den boden
MY.Alpha=1+Random(20); //Wie Transparent sind die Partikel?
my.flare=on; 
my.bright=on;
my.move=on; //die Partikel bewegen sich!
my.function=fadeout; // die Funktion der Partikel die sich so lange wider holt bis Lifespan (Lebensdauer) abgelaufen ist!
}
action effekt
{
effect(Partikel,1000,my.x,nullvector); // effect(funcion,anzahl der partikel,startpunkt,geschwindigkeit)
}


da ich nicht erwarte das sie das hier jetzt alles verstehen gehen wir den Code von unten bis nach oben durch!

also fangen wir an bei Action Effekt 
effect(Parikel,1000,my.x,nullvector); (Syntax= EFFECT(PARTIKELFUNKTION,ANZAHL,STARTPOSITION,BESCHLEUNIGUNG)
Mit dieser Zeile wird die Partikelaktion aufgerufen! "Partikel" ist die Funktion (obendrüber sehen sie die Funktion schon!) die der Partikel ausführt! Es werden
"1000,my.x" bedeutet das 1000 Partikel an der my.x Position erstellt werden! Da keine extra Beschleunigung notwendig ist wird Nullvektor eingetragen!

nun kommen wir zu der Partikelfunktion:
"my.red=255;
my.blue=0;
my.green=0;"
Dazu da um den Partikel Farbe zu geben! In diesem Fall wird ein vollkommen roter Partikel erzeugt!
"MY.VEL_X=RANDOM(6)-2;
MY.VEL_X=Random(6)-2;
MY.VEL_Y=Random(6)-2;
MY.VEL_Z=Random(6)-2;"
Diese drei Werte sind einfach nur die Beschleunigung in Richtung der x,y,z Achsen! Ich bestimme den Script per Random da es besser aussieht wenn nicht
alle Partikel die gleiche Geschwindigkeit haben!
"MY.Gravity=-0.3"
Gravitiy ist einfach nur die Erdahnziehungskraft! (beschleunigt oder verlangsamt die Partikel zusätzlich noch zu VEL_X etc.)
"MY.Alpha=1+random(20);"
hiermit bestimmen wir Alpha des Partikels wieder per Zufallsprinzip! Alpha soll hier bei jedem Partikel unterschiedlich zwischen 1 und 20 liegen!
"my.flare=on;"
Wenn Flare aktiviert ist werden dunkle bereiche transparenter dargestellt! Wenn transparent auch noch aktiviert ist 
sind hellere bereiche transparenter!
"my.bright=on;"
Wenn Flare und Transparent aktiviert beleuchtet bright die Partikel! Kann gut für Funken und Feuereffekte gebraucht werden!
"my.move=on";
Alle vorher gesetzten werte die mit Geschwindigkeit zu tun haben werden erst dadurch ermöglicht wenn move auf ON gesetzt ist!
"my.function=fadeout;"
die Function der Partikel! Wird solange wiederholt bis Lifespan Null ist!

nun zu der Fadeoutaction die dazu da ist das die Partikel nach einer zeit verschwinden!

MY.Alpha-=random(4)+1;
Von Alpha wird ein Zufallswert abgezogen der dazu da ist das die Partikel nach einer Zeit Unsichtbar sind!

if(my.alpha<=0) {my.lifespan=0; }
Dieser if Satz ist dazu da das wenn Alpha dann tatsächlich null erreicht hat das der Partikel gelöscht wird! Dazu ist My.Lifespan=0 verantwortlich!
Wenn sie Lifespan nicht auf null setzten würden wäre der Partikel zwar unsichtbar aber er täte noch existieren!

Hier kommen jetzt noch ein paar Werte die ich ihnen noch nicht erklärt habe!

BMAP:
Man kann auch eine Grafik als Partikel nehmen! Wenn das nicht gemacht wird ist der Partikel einfach nur ein weißes leeres Kästchen das man
mit red Green Blue füllen kann! Wenn man übrigens an red Green und Blue zufallswerte einsetzt dann Kommt ein bunter Partikelstrom!

FLAG1-8
Gleiche Bedeutung wie bei Entities!

SKILL_X,SKILL_Y,SKILL_Z
Wie Sill1-48 bei Entities nur das es nur 3gibt!

10.2 Zauber die den Gegner Leben abziehen

Nun kommt unsere erster Zauber! Hier die To-Do liste für den Zauber:

  • Es soll eine Feuerzauber werden..
  • der aus Partikeln besteht
  • der sich immer den pan Wert den Spielers richtet
  • und den Gegner schaden abzieht!

Nun werden sie sich denken das das ziemlich schwer ist, ist es aber nicht! Hier mal der Code für einen normalen Feuerzauber:


//in die Vars.wdl

var Feuer_angle[3]; //Erstelle 2 Vektoren
var abschusspos[3]; 
entity* partikel; //Erstelle Pointer Partikel

bmap ms_fire=<feuer.bmp>; //in den Download Bereich 

//in die Partikel.wdl

function Feuer_effekt; //Erstelle den Prototypen von 2 Funktionen
function entferne_feuer;


function energy_fire_beam() //war zuvor Action Fire
{
partikel=my;  //Partikel ist ich
player.invisible = off; // Der Spieler soll nicht unsichtbar sein!
while (key_T) //wenn T gedrückt ist!
{
player.passable=off; //Der spieler darf nicht passabel sein
temp.x = player.x; //Weiße den Vektor temp die X,Y,Z Werte des Spieles zu!
temp.y = player.y; 
temp.z = player.z;

Feuer_angle.pan = player.pan - 90; // Flamme dem Player ausrichten
Feuer_angle.roll = camera.tilt; // Höhenwinkel der Flamme an Kamera ausrichten
vec_for_vertex(abschusspos,player,2606); /*setze die Abschussposion auf den Vertex 2606 des moddels! */
effect(feuer_effekt,450*time,temp,nullvector);  //Mache den Effekt
wait(1);
}
}

function vec_fire(&vec)
{
vec[0] = random(6) +6; //Diese Funktion wird unten behandelt
vec[1] = random(25) +30;
vec[2] = random(6) +6;
}

function feuer_effekt()
{
vec_fire(temp); //Genauso wie diese Anweisung
vec_set(my.vel_x,temp); /*Die X Geschwindigkeit wird auf die Geschwindigkeit von Temp gesetzt*/
vec_rotate(my.pan,feuer_angle); //Ausrichten der Flamme
my.lifespan = 50; 
my.flare = on; 
my.bright = on; //Der Partikel soll leuchten (Feuer leuchtet)
my.move = on; //Der Partikel soll sich bewegen!
my.streak = on; 
my.bmap = ms_fire; //Der Bmapa ist der Oben definierte Ms_Fire bmap!
my.gravity =0; //Keine Gravität
my.alpha = 50; //Der Partikel soll halbtransparent sein!
my.size = 5; //Die Größe des Partikels soll 5 sein!
my.function = entferne_feuer; //Die Funktion des Partikels soll entferne_Feuer sein!
}

function entferne_feuer()
{
waitt (1);
my.alpha -=3*time; //Verringere alpha!

if(my.alpha < 0)
{
my.lifespan = 0; //Wenn alpha null ist soll der Partikel nicht mehr exsitieren!
}
}

on_t=energy_fire_beam(); // Auf T wird der Effekt ausgelöst!

 

Anhand der Erklärungen sollte der Script verstanden werden außer dieser Funktion:

function vec_fire(&vec)
{
vec[0] = random(6) +6; //Diese Funktion wird unten behandelt
vec[1] = random(25) +30;
vec[2] = random(6) +6;
}

........
vec_fire(temp);

Dies ist eine besondere Funktion! Die Erklärung:

Die Funktion vec_fire(&vec) macht aus der Ersten bis 3ten Zahl eine Zufallszahl

In der Zeile vec_fire(temp); wird ganz genauso das mit Temp gemacht!

               zurück     weiter