Die geschweiften Klammern fassen eine Gruppe von Befehlen zusammen, die
gemeinsam ausgfeührt werden, wenn ein bestimmter Fall eintritt. Sie treten IMMER paarweise auf - machst du eine Gruppe mit { auf, wird sie auch mit }
wieder geschlossen.
Darum gibt es {{ nicht ohne Befehle dazwischen. Auch {} gibt es so nicht - jedenfalls nicht sinnvoll. }} bedeutet, 2 Gruppen werden abgeschlossen.
if_obj (irgendwas;3)
{
setobj (irgendwas;4)
playsound (Radau;50)
jiggle (2;1)
break()
}
Ohne Klammern würde bei zutreffender Bedingung (irgendwas=3)
nur der erste Befehl hinter der If Anweisung ausgeführt werden,
trifft die Bedingung dagegen NICHT zu, wird das Skript mit dem übernächsten Befehl ausgeführt :
if_obj (irgendwas;3)
setobj (irgendwas;4)
-----------------> Obj. irgendwas wird auf 4 gesetzt, wenn es auf 3 stand
und es geht mit dem nächsten Befehl weiter.
Wurde Irgendwas auf 4 gesetzt, geht es auch
mit dem nächsten Befehl weiter.
playsound (Radau;50)
jiggle (2;1)
break()
Hast Du mehrere Bedingungen, die abgefragt werden, schachtelst du sie ineinander :
on (link)
{
if_link (Schraubenschlüssel)
{
playsound (quietsch)
setobj (schraube;2)
setobj (Loch;1)
}
if_link (Hupe)
{
playsound (tüt)
setobj (hupe;2)
}
}
----Ich schreibe die letzten beiden Klammern direkt hintereinander, das
bleibt aber jedem selbst überlassen - so kommen dann meine }} zustande.
Die eckigen Klammern dienen dazu, den Inhalt eines Strings oder einer Variablen auszulesen :
setstring (Texteingabe;blablabla)
textout (1;[texteingabe];100;100;1;255;255;255)
Mit Klammern enthält der String "texteingabe" das angegebene
blablabla, und wird auch dann angezeigt. (z.B. wenn du etwas über die Tastatur eingeben willst, kannst du die Eingaben in einem String speichern und den Inhalt des Strings dann so ausgeben.
ohne die eckigen Klammern würde der Befehl folgendes ausgeben:
texteingabe
Bei Variablen :
setnum (Mausposition_x;[mousex])
mousex ist vordefiniert (siehe Befehlsreferenz ), das System schreibt
die x-Position der Maus automatisch in diese Variable. Wenn du sie
auf diese Art ausliest, hast du immer den aktuellen Wert, der ändert sich mit.
Das ist sher nützlich, wenn du Werte nutzt, die sich ändern.
Ich definiere z.B. die Bewegungsgeschwindigkeit im Startskript setnum (speed;9)
Dann bewege ich ein Objekt im Level 1 z.B. :
moveobj (objekt;20;20;[speed])
Im Level 2 setze ich per Skript den Wert Speed auf 5
Der Moveobj Befehl bleibt derselbe, aber das Objekt bewegt sich jetzt schneller, d.h. es kann ein und die selbe Funktion ohne Änderung benutzt werden.
Ich rate dir, die Skript Referenz ( Per klick auf Hilfe des Editors) im Punkt Variablen mal anzusehen, um die Vordefinierten zu sehen.
Noch Fragen ?