heyey
Weitere Script-Tutorials von mirFlipelyFlip's Scripting Tutorial 1 - GrundkursFlipelyFlip's Scripting Tutorial 2 - "for..in.."-SchleifenVorwortWillkommen bei meinem wunderfollen Script-Tutorial.
Ihr lest richtig, ich bringe euch scripten bei

Nein ernsthaft, das hier ist nur der Grundkurs, mit welchem ich euch in die Welt des RGSS einleiten will. Er ist zwar sehr trocken und oft recht schwer zu lesen, aber es lohnt sich, hoffentlich! ._.
Hier in diesem Grundkurs werdet ihr wie schon erwartet einfache Operationen des RGSS lernen. Unter anderem auch viele Grundbegriffe bzw. Grundkenntnisse die ihr für später benötigen werdet (:
Fangen wir mal schön brav an.
Scripting Lektion Nummero Uno: wichtige Zeichen & GrundbegriffeFangen wir mal mit den wichtigen Zeichen an (:
# ich bin ein Kommentar :D
p printet eine Nachricht, einen Text oder andere Sachen.
"" wandeln eine Variable in einen Wert um
+ ich adiere etwas
- ich subtrahiere etwas
* ich multipliziere
/ ich dividiere
% ich rechne den Restwert der Division aus
= ich setzte etwas gleich
== ich überprüfe ob etwas exakt ist
>= ich überprüfe ob etwas größer oder gleich ist
<= ich überprüfe ob etwas kleiner oder gleich sit
> ich überprüfe ob etwas größer ist
< ich überprüfe ob etwas kleiner ist
&& ich hänge noch eine Kondition für eine Abfrage an
$ ich mache eine Globale Variable
@ ich mache nur eine Klassenvariable
Das sind die hauptsächlichen Dinge die wir benötigen werden. Die letzten 2 Zeichen, werde ich später im Tutorial genauer abklären. Aber es ist überaus nützlich diese Zeichen, die ihr oben seht zu kennen.
Es gibt zwar auch weitere Zeichen die im Scripten verwendet werden, aber zu dennen komm ich in späteren Tutorials zu sprechen, da sie nicht so ganz geeignet sind für den Grundkurs.
Aber nun zu den wichtigen Begriffen die man kennen sollte:
class # erstellt eine Klasse
def # erstellt eine Methode
loop do # erstellt einen loop
if # erstellt eine Abfrage
else # Sonstiges was ausgeführt werden soll, wenn die Abfrage nicht true ergibt
end # schließt eine Abfrage, einen Loop, eine Methode oder eine Klasse
break if # beendet einen Loop, wenn die Abfrage zutrifft
true # gibt Wahr zurück
false # gibt Falsch zurück
nil # gibt Undefiniert zurück
and # zwei Abfragen müssen übereinstimmen damit true wiedergegeben werden kann
or # eine der zwei Abfragen muss zutreffen, damit true wiedergegeben werden kann
return # gibt einen Wert zurück, wird bei loops gern verwendet
for .. in # eine Art des Loops von dem aus Datensätze aus einem Array in eine Variable gespeichert werden
array # 2 Dimensionale abspeicherung von mehreren Werten
hash # Mehrdimensionale abspeicherung von mehreren Werten
Das sind die wichtigsten Grundbegriffe. Die letzten zwei werden später im Tutorial noch genauer erklärt (:
Hier ist es nützlich euch die wichtigsten Sachen wie zum Beispiel "class, def, if, else, end, true, false und nil".
Diese 8 Begriffe bestimmen oftmals das gesamte Script. (:
Scripting Lektion Nummero 2: Klassen & Methodenclass Klassenname
end
Hier haben wir eine Klasse. Die Klasse ist der Teil des scriptes, welcher meist aussagt was das Script macht. Da gibts zum Beispiel folgendes:
class Window_Base
end
class Scene_Base
end
class Game_System
end
class Flipstuff
end
das sind wie unerwartet alles klassen. Das erraten der Funktionen ist nicht schwer, eigentlich. Nehmen wir die Window_Base her. Richtig, die hat die Grundinformationen von Windows bzw. Fenstern die im Maker erstellt werden.
Scene_Base hat die Grundinformationen für Klassen. Diese wären zum Beispiel die updatefunktionen der Klassen, das starten der Klasse, das beenden der Klasse und ein paar anderen Sachen mehr, zu dennen ich aber später komme (:
Game_System hat viele wichtige Informationen die zum allgemeinen Funktionieren des Spiels benötigt werden. Es ladet bestimmte Klassen oder schließt auch andere Prozesse die für den Anfang nötig sind, damit das Spiel rund läuft. Aber da kommen wir später auch noch genauer zu sprechen. Zurzeit dient es einfach nur als Beispielklasse (:
Flipstuff ist auch eine Klasse, aus der man nichts herauslesen kann. Das heißt es erschwert allen anderen Scriptern und auch dem User herauszulesen was diese Klasse macht. Natürlich existiert kein Standardscript mit diesem Klassennamen, jedoch diente es nur der Veranschaulichung. (:
So, nun wissen wir was Klassen sind, aber wir brauchen zu den Klassen noch etwas, den nur mit Klassen können wir nicht arbeiten oder nur erschwert!
def methodenname
end
dies ist eine Methode, die macht das was eine Methode eben so macht. Die bestimmen was die Klassen machen sollen (:
Window_Klassenname und
Game_Klassennamen benötigen
immer!! eine
def initialize um zu funktionieren
Scene_Klassenname benötigt eine
def main und def start.
Das war eigentlich das wichtigste zu den Methoden ._.
Scripting Lession Nummero 3: Variablen & OperationenMein Lieblingsthema, die Variablen. Mit ihnen muss man immer arbeiten. eigentlich ist alles eine Variable beim Scripten. Jedoch versteckt sich hinter jeder Variable eine bestimmte Funktion. Viele Variablen haben ihre Funktion schon vordefiniert und viele neue werden wir als Scripter noch erstellen (:
Es gibt 3 Arten von Variablen (:
$Global_Variable
die Globale Variable kann man von überall aus zugreifen. Wenn die einen Wert erhält, so kann ich den dann zB. im Script Game_Battler abfragen, aber auch im Scene_Menu. Der Wert wird immer der selbe sein. Recht nützlich für Sachen die man immer braucht.
Die bekannteste Variable ist die Game_Variable. Denn Scripttechnisch betrachtet wird sie so verwendet:
$game_variables[id]
@Klassenvariable
Diese Klassenvariabel wird intern von Klassen verwendet. Das heißt wenn ich in der Klasse Game_Actor die Klassenvariable @hp_actor1 definieren würde, dann könnte ich diese in der gesamten Klasse abfragen und würde einen bestimmten Wert erhalten. Frage ich diese Variable aber in der Game_System nach, erhalte ich nil als Wert.
methodenvariabel
Diese Variablen wirken nur innerhalb einer Methode. Um Sie in anderen Methoden auch verwenden zu können, kann man ein @ davor setzten, dann wäre es eine Klassenvariable oder man geht den einfacheren Weg, indem man diese weiter gibt indem die neu aufgerufene Methode einen Wert benötigt um funktionieren zu können wie zum Beispiel hier:
def blahblah
methodenvariable = 5
blahblahbluh(methodenvariable)
end
def blahblahbluh(wert)
p wert
end
So würde man den vorher definierten Wert 5 aus der Methode blahblah an die Methode blahblahbluh weiter geben. Aber dazu werde ich später einmal genauer eingehen.
Kommen wir nun zu den Operatoren. Diese sind sehr wichtig beim Scripten. Dadurch lassen sich verschiedene Werte festlegen, die aus vielen anderen Faktoren zusammen hängen. Zum Beispiel kann man so die halben MP errechnen von Held A (:
die einfachste Art ist diese hier:
methodenvariable = 5
was ich hier mache? Ich lege den Wert der Methodenvariable auf 5.
methodenvariable += 1
Hier addiere ich nun zur methodenvariable 1
methodenvariable -= 3
Subtrahieren

methodenvariable *= 4
Multiplizieren

methodenvariable /= 2
Dividieren (:
Man kann die Variablen auch abfragen, was dann so funktionieren würde:
if methodenvariable == 2
p "yes"
else
p "no"
end
Dadurch wird nun überprüft ob der Wert der methodenvariable gleich 2 ist. wenn ja, dann wird yes ausgegeben wenn nicht, dann eben no.
if methodenvariable >= 2
p "yes"
else
p "no"
end
Hier wird nun überprüft ob der Wert größer oder gleichgroß wie 2 ist. Wenn ja, dann wird Yes ausgegeben, wenn nicht, dann eben no.
if methodenvariable <= 2
p "yes"
else
p "no"
end
Hier wird nun überprüft ob der Wert kleiner als 2 ist. Wenn ja, dann gibts ein yes, wenn nicht dann eben ein no.
if methodenvariable <> 2
p "yes"
else
p "no"
end
Hier wird nur geguckt ob der Wert nicht 2 ist. wenn es ein anderer Wert ausser 2 ist, dann wird yes wiedergegeben, ansonsten gibts ein no.
Daraus kann man sich noch viele andere tolle sachen basteln, ihr werdet es schon beim selber versuchen rausfinden (:
Scripting Lession Nummero 4: Arrays und HashsNun der letzte Punkt aus dem Grundgerüst des RGSS. Unsere allseits gefürchteten Arrays & Hashes.
Fangen wir aber erstmals bei unseren lieben Freunden, den Arrays an.
apfel = [1, 2, 3, 4, 5]
p apfel # 1,2,3,4,5
Das ist ein schöner array. Er hat 5 verschiedene Werte. Diese Werte wurden in einem Array abgespeichert und können als gesamtes abgefragt werden, oder aber auch als Einzelnes, wie es sehr oft verwendet wird.
apfel = [1, nil, 2, nil, 3]
p apfel[1] # nil
Hier haben wir nun den Array mit Zahlen und nil gefüllt. Wenn wir jetzt zum Beispiel wissen wollen, was für ein Wert an 2ter Stelle liegt, müssen wir den Print-Befehl befolgen. Der Grund warum hier eine 1 in der Klammer ist, ist jener, dass Ruby immer bei 0 anfängt zu zählen. Da wir aber den zweiten Wert wissen wollen, verwenden wir nun eine 1. Natürlich wird da der Wert nil zurückgegeben.
Wir können aber auch 2 arrays miteinander Kombinieren, wenn wir wollen. das würde dann zB. so aussehen:
a = [1, 2]
b = [3, 4]
p a + b # 1, 2, 3, 4
Wie ihr hier seht, werden beide arrays miteinander adiert und als 1 einziger Array ausgegeben.
Wenn wir zum Beispiel aber bei einem Array the Wert an 3ter Stelle ändern wollen, funktioniert das so:
a = [1, 2, nil, 4]
a[2] = ["a","b","c"]
p a # 1,2,["a","b","c"],4
Warum funktioniert das? Ganz einfach, da es eine nützliche Funktion ist von arrays, dass man bestimmte Stellen abändern kann, indem man ihren index angibt, kann man so auch jeden beliebigen Platz des Arrays ändern. Existiert einmal ein Platz nicht, wird er automatisch erstellt und die fehlenden Plätze bis dorthin mit nil belegt.
Das heißt folgendes:
a = [1, 2, 3, 4]
a[5] = 9
p a # 1,2,3,4,nil,9
Nütlich nicht?
Nun unsere lieben Hashs, denn diese sind recht simpel aufgebaut und denoch sehr Kraftvoll zu verwenden (:
a = {1=>2, 2=>3, 3=>4}
p a[1] # 2
Dadurch könnt ihr zum Beispiel eigene Werte erstellen und für jeden Helden den Wert zuordnen, oder aber auch für jeden Gegner.
Das tolle am Hash ist, es hat eine einfache Struktur, die man befolgen muss und zwar diese hier:
Hashname = {Index => Wert, Index => Wert}
Den Beistrich zwischen 2 Werten darf man ja nicht vergessen, ansonstne würde es zu einem Fehler kommen (:
Hashs verhalten sich grundlegend gleich wie Arrays, jedoch haben Sie die besonderheit über einen Index-Wert einen anderen Wert aufzurufen, wie zum Beispiel falls ein Skill per Script einen Status hinzufügen soll, dann wäre zum Beispiel der Index, die ID-Nummer des Skills und der Wert der da raus kommen soll, der Wert für die ID des Status.
Nützlich würde ich sagen, sehr nützlich sogar (:
AbschlussworteIm großen und ganzen, wars dies nun mit dem Tutorial, ich hoffe es hat euch gefallen und euch das Scripten um einiges näher gelegt. Ich bin für Kritik offen und würde mich über ein paar Vorschläge für das nächste Tutorial freuen. Bitte postet keine Vorschläge zu Kampfsystemen, da dies zu Aufwendig für ein Tutorial wäre, das ganze so zu verpacken, dass es nicht zu viel wird.
lg Flip