Einer langen Tradition folgend, mit einem Script anzufangen das „Hallo“ sagt, kommen auch wir an dieser Stelle auch nicht drum herum. Auch wenn es ansonsten keinen nützlichen Effekt hat, können wir an diesem Beispiel die folgenden Grundlagen studieren:
Wir fangen an, indem wir unser Inventar öffnen und „Create New Script“ aus dem Inventarmenü wählen. Das wird im „Scripts“ Ordner ein neues Script namens „New Script“ erstellen. Ein Doppelklick auf das Icon oder den Test des Scriptes öffnet es im Editor. Wenn Sie das Script zum ersten mal öffnen wird automatisch ein Skriptskelett für LSL erstellt. Das sieht ungefähr so aus:
default {
state_entry()
{
llSay(0, "Hello, Avatar!");
}
touch_start(integer total_number)
{
llSay(0, "Touched.");
}
}Eine genauere Betrachtung des Scripts zeigt, dass dieses Script vermutlich „Hello, Avatar“ bei der Ausführung und „Touched“ sagt, wenn das Objekt berührt wird. Aber da dies vermutlich das erste Mal ist, dass Sie ein Script ansehen, werden wir es einfach mal auseinanderpflücken und jeden Teil direkt betrachten.
default {
...
}alle LSL Scripte haben eine einfache Struktur mit einem oder mehreren States. Alle Scripte müssen ein default state beinhalten. Wenn ein Script nur ein State enthält, so wird es das default state sein. Wenn ein Script das erste Mal ausgeführt oder zurückgesetzt wird, startet es wieder im default state.
Das default state wird mit default auf der ersten Ebene des Dokumentes eingeleitet, beginnt der öffnenden geschweiften Klammer "{" und endet mit der schließenden Klammer "}". Durch seine Sonderstellung muss nicht erst deklariert werden, dass es sich um ein State handelt, wie es bei normalen States der Fall ist.
Jedes Mal, wenn ein State eingeleitet wird, löst die Script Engine das state_entry() ereignis aus und führt den Code aus, der dafür hinterlegt ist. Beim verlassen des States wird die Script Engine automatisch das state_exit() Ereignis vor dem Aufruf von state_entry() des nächsten States ausführen.
Anmerkung: Wenn von Handlern gesprochen wird, dann ist damit der Code gemeint, der aufgerufen wird, wenn ein entsprechendes Ereignis ausgelöst wird.
In unserem Beispiel rufen wir die llSay() Funktion im Handler state_entry() auf und kümmern uns nicht um die Definition eines Handlers für state_exit() (weil am Ende des States für dieses Beispiel nicht vorgesehen ist, dass etwas passiert). Es müssen also nur Handler für die Ereignisse definiert werden, auf die unser Script reagieren soll.
Die Handler für state_entry() und state_exit() sind gut geeignet dafür um allgemeine Variablen für die Anweisung einzuleiten und am Schluss wieder aufzuräumen.
In der LSL sind bereits gut über 200 Funktionen eingebaut, die Objekten und Scripten erlauben mit der Umgebung zu interagieren. All diese Funktionen beginnen mit ll.
Das Beispiel ruft die 'llSay()' Funktion zweimal auf. llSay() wird benötigt um Text auf dem angegebenen Kanal auszugeben.
llSay( integer channel, string text);
Gibt den text auf dem channel aus. Channel 0 ist der öffentliche Chatkanal, den alle Avatare als Chattext sehen. Die Channels 1,2,147,483,648 sind nicht öffentliche (private) Channels über die nicht an die Avatare gesendet wird, die allerdings von anderen Scripten abgehört werden können.
Sie können Ihre eigenen Funktionen definieren, solange deren Namen von den reservierten Wörtern, Standardkonstanten und Standardfunktionen abweichen.
touch_start(integer total_number)
{
llSay(0, "Touched.");
}Es gibt jede Menge Ereignisse die in Ihrem Script durch die Deklaration eines Handlers ausgewertet werden können. Das touch_start() Ereignis wird ausgelöst, wenn ein Benutzer das Objekt berührt.
Jetzt, da wir uns das Beispielscript im Detail betrachtet haben, ist die Zeit gekommen, es in Aktion zu sehen. Speichern Sie das Script durch einen Klick auf Save. Während des Speicherungsprozesses sichert der Editor den Text des Scriptes, kompiliert ihn in Bytecode und speichert diesen. Sobald die Nachricht Compile successful! im Vorschaufenster erscheint ist die Kompilierung und Speicherung abgeschlossen.
Um das Script zu testen muss es einem Objekt in der SL Welt zugewiesen werden. Erstellen Sie ein neues Objekt durch einen Rechtsklick in die Welt und die Auswahl Create. Mit dem Zauberstab können Sie einen einfachen Prim erstellen. Sobald das Objekt erschienen ist, können Sie Ihr Script per Drag & Drop auf das Objekt ziehen um es zu starten.
Kurz nachdem das Script auf dem Objekt abgelegt wurde werden Sie die Meldung Object: Hello Avatar! sehen.
Klicken Sie auf das Objekt um sicherzustellen, dass das Berührungsereignis ausgeführt wird. Sie sollten die Meldung Touched. im Chatbereich sehen.