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
|