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

8.0Panels

Panels haben einen großen Anteil an einen Spiel auch wenn sie einen vielleicht nicht immer so wichtig vorkommen! Panels sind alle 2 Dimensionale Objekte in der Spielwelt! Also was wäre zum Beispiel ein RPG ohne eine Lebensanzeige ?? Hier mal eine Liste was Panels alles können: 

  • Menüs Darstellen
  • Einen Button darstellen
  • Einen Schieberegler machen mit dem man Werte verändern kann!
  • Es kann ein Hintergrundsbild in das Menü gestellt werden!
  • Es können alle Arten von Anzeigen (wie z.B. eine Lebensanzeige) dargestellt werden!
  • Rein Theoretisch könnte auch ein 2D Spiel NUR aus Panels gemacht werden!
  • Und zum Schluss: Es kann eine Zahlenanzeige gemacht werden die es ermöglicht zum Beispiel Den Lebenswert in Zahlen darzustellen!

Nun wie sie sehen kann man mit Panels sehr viel machen! Wir werden jetzt hier erst ein mal eine Stamina eine Ausdauer und eine Lebensanzeige machen!

8.1 Panels für das Spiel

8.1.1 Stamina Anzeige

Die Stamina Anzeige soll den Wert anzeigen wie viel Mana der Spieler noch für Zauber hat! Dazu braucht es als erstes einen festen Wert wie viel Stamina der Spieler am Anfang überhaupt hat! Dazu schreiben sie in die Player-Action ( move_me ) über die While-Schleife ( Der Wert soll ja nicht immer gleich bleiben!

my.stamina=100;

Nun hat der Spieler einen festen Wert an Stamina nun fehlt nur noch der Script! Alle Erklärungen finden sie unten!

//in as vars.wdl modul

font arial = <font.pcx>, 22, 29; //Diesen Font finden sie auf Seite 13 im Downloadberreich!

//in das panels.wdl modul

Panel stamina_anzeige
{
layer = 10;
pos_x = 150; pos_y =20;
flags = d3d, refresh;
digits = 0, 0, 5,arial, 1, player.stamina;
}

text Stamina_txt
{
layer=8;
pos_x=0; pos_y=20;
flags=d3d;font=arial;
string="Stamina:";
}

function show()
{
stamina_anzeige.visible=on;
stamina_txt.visible=on;
}

// In die Move.wdl ganz am anfang der while schleife:

my.stamina=100;
while(1)

show();
..............

vec_fire(temp);

//Also wir fügen nur show() dazu!

Ja wahrscheinlich werden sie nun gar nichts verstehen! Wenn sie sich das Script aber mal in ihres reinkopieren werden Sie sehen wie der Panel oben links in der Ecke Stamina: 100  dargestellt wird! Die 100 liegt daran das wir in unsere player-action  my.stamina=100; geschrieben haben! Wenn sie den Wert ändern sehen sie oben links die Zahl die sie stattdessen eingetragen haben!

Nun jetzt erkläre ich ihnen als erstes jede Zeile!

font arial = <font.pcx>, 22, 29;

Hier wird ein Font (Zeichensatz) definiert! Der Syntax dazu lautet: font name = <dateiname.dateiart>, Breite,Höhe; Diese Datei können sie sich auf der letzten Seite downloaden! 

Panel stamina_anzeige
{
}

So wird mit einem Panel angefangen wie bei einen Funktion!

layer = 10;

Das ist die Ebene! So können mehrere Ebenen wo die Panels sind platziert werden! (aufpoppende menüs!)

pos_x = 150; pos_y =20;

Die X und Y Position des Panels! Wenn Y und X Null sind, dann ist das Panel ganz genau in der oberen ecke! 

Die Fogende Zeichung sollte das verdeutlichen:

 


flags = d3d, refresh;

Flags ist wie ein Normale Flag bei einen Moddel! Hier hier der Syntax: FLAGS=......  Es gibt folgende Flags:

  • visibile - Nur wenn dieses Flag gesetzt ist, erscheint das Panel auf dem Bildschirm. 
  • overlay - Ist dieses Flag gesetzt, wird die Farbe 0 (schwarz) der Panel-BMAP nicht gezeichnet, so daß der Hintergrund des Panels als Overlay erscheint.
  • transparent - Ist dieses Flag gesetzt, so werden der Hintergrund des Panel und die Buttons halb durchsichtig über dem Bild angezeigt.
  • Refresh - Ist dieses Flag gesetzt, wird das Panel zu jedem Framezyklus neu gezeichnet. Dies ist nötig, wenn man ein Panel über einem View anzeigen oder z.B. einen Text über das Panel laufen lassen will, ohne dabei den Background zu überschreiben.
  • D3d - Ist dieses Flag gesetzt, wird das Panel per Hardware im 16- oder 32-Bit Modus dargestellt. Sonst wird es per Software gezeichnet. Darstellung per Hardware ist wesentlich schneller und sieht besser aus, verbraucht aber wertvollen Textur- Speicher.

digits = 0, 0, 5,arial, 1, player.stamina;

Dies hier ist die wichtigste Zeile! Sie sagt erst was das panel darstellen soll! Hier der Syntax:

digits =pos_x, pos_y, len, font, factor, var (oder skill);

POS_X und POS_Y sind die Positionen der Zahl die der Digit darstellt im Panel! len ist die Anzahl der Stellen die möglich sind! (1000=4 Stellen)! Font ist der Zeichensatz (oben definiert! ). Faktor: Um diesen Wert wird die Variable oder der Skill vor dem Anzeigen multipilziert!(Wir haben 1 Eingesetzt weil sich die Zahl nicht verändern soll!)  Var= Die Variable oder Skill die der Digit anzeigen soll!

text Stamina_txt
{
layer=8;
pos_x=0; pos_y=20;
flags=d3d;font=arial;
string="Stamina:";
}

Sehr ähnlich mit den Panel nur das der Text keinen Zahlenwert darstellt sondern dern Text "Stamina:"! (string="Stamina:"; )

 

Nun sollte der Rest kein Problem mehr sein! Mit der Funktion Show werden die Panels per visible Flag angezeigt! Dann wird diese Funktion in die Player-Action geschrieben! 

4.1.2 Die Ausdauer Anzeige:

Der Spieler soll nicht unendlich lange rennen können! Daher hier der Code der verhindert das der Spieler immer rennen kann!

panel ausdauer_anzeige
{
layer = 10;
pos_x = 150; pos_y =0;
flags = d3d, refresh;
digits = 0, 0, 5,arial, 1, player.ausdauer;
}

text Ausdauer_txt
{
layer=8;
pos_x=0; pos_y=0;
flags=d3d;font=arial;
string="Ausdauer:";
}

function show()
{
stamina_anzeige.visible=on; /*Die upgedatete Version von der Funktion show! Damit auch die anderen Panels dargestellt werden! */
stamina_txt.visible=on;
ausdauer_txt.visible=on;
ausdauer_anzeige.visible=on;
}

/*Das hier in das Move Modul! In die whileschleife rein und zwar nach 

dist.x=time*my.skill11;
dist.y = 0;
dist.z = time*my.skill13;  */

if(key_shift==1)
{
my.ausdauer-=0.1; //Wenn gerannt wird verliere 0.1 Ausdauer Pro 1/16 Sekunde!
if(my.ausdauer<=0)
{
my.ausdauer+=0.1; /*Wenn die Ausdauer Kleiner gleich 0 ist verliere keine Ausdauer mehr (der wert der abgezogen wird addieren wir hier einfach drauf!  */
dist.x/=2; //Teile den im move-Script definierten dist.X durch 2 Weil ja Ausdauer null ist! 
}
}else{ //wenn ausdauer größer als Null ist 
if(my.ausdauer>=100)
{ //Wenn Ausdauer 100 ist gewinne keine Ausdauer mehr! Sonst täte es ja unendlich hoch gehen!
my.ausdauer-=0.1; 
}
if(key_cud==1)||(key_cuu==1)
{ //Wenn man nach vorne oder nach hinten läuft erhöhe die Ausdauer nur noch um 0.05 pro Tick statt 0.1 pro Tick!
my.ausdauer-=0.05;
}
my.ausdauer+=0.1; //Zum schluss erhöhe die Ausdauer um 0.1!!! 
}

Durch die Kommentare sollte eigentlich alles verstanden werden! Bei Stamina läuft eigentlich alles genauso mit den abziehen nur das wir noch keinen Zauber haben der etwas abzieht daher machen wir das erst später!

 

4.1.3 Erfahrungsanzeige

Die Erfahrungsanzeige ist eigentlich nichts anderes als vorher schon die Anzeigen hier der Script: (Der Ausdauerscript wird hier upgedated! )

//in die Panel.wdl

panel Erfahrung_gech
{
layer = 10;
pos_x = 400; pos_y =60;
flags = d3d, refresh;
digits = 0, 0, 10,arial, 1, player.geschwindigkeit;
}

text Erfahrung_gesch
{
layer=8;
pos_x=0; pos_y=60;
flags=d3d;font=arial;
string="Erfahrung Geschwindigkeit:";
}

//in die vars.wdl

var stop3=0; //zum Stoppen der Aufstieg Funktion!

define limt,skill40;
define geschwindigkeit,skill41;

//die move.wdl

//schreibe zu der Funktion show() noch hinzu:

function show()
{
erfahrung_gech.visible=on;
erfahrung_gesch.visible=on;

//update die move.wdl!
action move_me
{
my.limit=100; //Das Limit an Ausdauerpunkten
my.geschwindigkeit=0;  //Am Anfang keine Erfahrung in Geschwindigkeit!

 

if(key_shift==1)
{
my.ausdauer-=0.1; //wenn gerannt wird erniedrige die ausdauer!
my.geschwindigkeit+=0.001;  //und erhöhe die Erfahrung in Geschwindigkeit!
if(my.ausdauer<=0)
{
my.ausdauer+=0.1; //wenn ausdauer 0 ist soll Ausdauer gleich bleiben!
my.geschwindigkeit-=0.001; //Die Erfahrung in Geschwindigkeit soll nicht mehr hochgehen!
dist.x/=2;
}
}else{
if(my.ausdauer>=my.limit)
{
my.ausdauer-=0.1; //Wenn die Außdauer größer als das Limit ist soll die Ausdauer gleich bleiben!
}
if(key_w==1)||(key_s==1)
{
my.ausdauer-=0.05;
}
my.ausdauer+=0.1; //erhöhe die Ausdauer!
}


if(my.geschwindigkeit>=50)
{
dist.x*=1.01; //Wenn die Geschwindigkeit größer als 50 ist erhöhe die Geschwindigkeit!
if(stop3==0)
{//Wenn stop3 0 ist (oben definiert) dann erhöhe das Limit an Ausdauer Punkten auf 102!
my.limit+=2;
stop3=1; //Nun setze stop3 auf 1 damit er nicht die ganze Zeit Limit erhöht!
}
}
if(my.geschwindigkeit>=100)
{
dist.x*=1.01; //Wenn Geschwindigkeit größer als 100 ist erhöhe dist.X nochmal!
if(stop3==1) 
{//Das gleiche wie oben..
my.limit+=2; //Setze Limit auf 104!
stop3=2;

/* Hier könnt ihr jetzt noch Effekte reinschreiben! Zum Beispiel das Partikel kommen (später erklärt) oder das eine Nachricht kommt (Macht das einfach mit Texten und den Visible Flag! ! Viel Spaß beim updaten dieser Funktion!! */
}
}

 

Damit will ich jetzt eigentlich die Panels abschließen und mich den Partikeln zuwenden! Viel Spaß noch bei denen!

 

                                                          Seite(9/20) zurück  weiter