<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://wiki-de.moshellshocker.dns64.de/index.php?action=history&amp;feed=atom&amp;title=Linden_Scripting_Language</id>
	<title>Linden Scripting Language - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="https://wiki-de.moshellshocker.dns64.de/index.php?action=history&amp;feed=atom&amp;title=Linden_Scripting_Language"/>
	<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=Linden_Scripting_Language&amp;action=history"/>
	<updated>2026-05-21T14:13:06Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in Wikipedia (Deutsch) – Lokale Kopie</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://wiki-de.moshellshocker.dns64.de/index.php?title=Linden_Scripting_Language&amp;diff=2105739&amp;oldid=prev</id>
		<title>imported&gt;Aka: /* Variablen */ Leerzeichen vor Maßeinheit</title>
		<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=Linden_Scripting_Language&amp;diff=2105739&amp;oldid=prev"/>
		<updated>2026-02-14T22:51:55Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Variablen: &lt;/span&gt; Leerzeichen vor Maßeinheit&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Die &amp;#039;&amp;#039;&amp;#039;Linden Scripting Language&amp;#039;&amp;#039;&amp;#039; (oder kurz &amp;#039;&amp;#039;&amp;#039;LSL&amp;#039;&amp;#039;&amp;#039;) ist eine von [[Linden Lab]] entwickelte imperative [[Skriptsprache]], die der Steuerung von Objekten in der virtuellen 3D-Welt [[Second Life]] dient.&lt;br /&gt;
&lt;br /&gt;
== Aufbau und Eigenschaften ==&lt;br /&gt;
&lt;br /&gt;
LSL ist eine [[Ereignis (Programmierung)|ereignisgesteuerte]] Sprache, die in Anlehnung an [[Deterministischer endlicher Automat|endliche Automaten]] entwickelt wurde. Jedes Skript besteht dabei aus mindestens einem Standardzustand mit der Bezeichnung &amp;#039;&amp;#039;default&amp;#039;&amp;#039;, welcher zugleich den Anfangszustand des Automaten darstellt.&lt;br /&gt;
&lt;br /&gt;
=== Zustände ===&lt;br /&gt;
&lt;br /&gt;
Wie bei deterministischen endlichen Automaten hat jedes LSL-Skript eine feste, endliche Anzahl von eindeutig benannten Zuständen, allen voran der &amp;#039;&amp;#039;default&amp;#039;&amp;#039;-Zustand, welcher den Initialzustand darstellt und zwingend vorhanden sein muss. Zustandswechsel werden mit der &amp;#039;&amp;#039;state&amp;#039;&amp;#039;-Anweisung vollzogen, welche den Namen des Zielzustands als Parameter erwartet.&lt;br /&gt;
&lt;br /&gt;
=== Variablen ===&lt;br /&gt;
&lt;br /&gt;
LSL kennt [[Lokale Variable|lokale]] und [[Globale Variable|globale Variablen]]. Variablen können folgende Datentypen haben:&lt;br /&gt;
* &amp;#039;&amp;#039;integer&amp;#039;&amp;#039;: vorzeichenbehaftete 32-bit-Ganzzahlen im Wertebereich von −2&amp;lt;sup&amp;gt;31&amp;lt;/sup&amp;gt; bis 2&amp;lt;sup&amp;gt;31&amp;lt;/sup&amp;gt;−1 (also von −2.147.483.648 bis +2.147.483.647, oder 0x80000000 bis 0x7FFFFFFF [[Hexadezimalsystem|hexadezimal]]).&lt;br /&gt;
* &amp;#039;&amp;#039;float&amp;#039;&amp;#039;: 32-bit-Fließkommazahlen im [[IEEE 754|IEEE-754]]-Format (also absolut von 1,175494351·10&amp;lt;sup&amp;gt;−38&amp;lt;/sup&amp;gt; bis 3,402823466&amp;amp;nbsp;10&amp;amp;nbsp;&amp;lt;sup&amp;gt;+38&amp;lt;/sup&amp;gt;).&lt;br /&gt;
* &amp;#039;&amp;#039;string&amp;#039;&amp;#039;: Zeichenketten. Die Länge von Zeichenketten ist theoretisch unbegrenzt, praktisch jedoch durch die Größe des für das Programm reservierten Speichers beschränkt. Da sich der Bytecode, Heap sowie Stack diesen Speicherbereich teilen, kann die maximale Länge für Zeichenketten –&amp;amp;nbsp;je nach Skript&amp;amp;nbsp;– zur Ausführung beliebig klein werden.&lt;br /&gt;
* &amp;#039;&amp;#039;key&amp;#039;&amp;#039;: UUID ([[UUID|Universally Unique ID]]), welche zeitlich sowie räumlich eindeutige 16-byte-Schlüssel im Second Life-Universum darstellen. Sie dienen der Identifikation von Objekten, Avataren, Texturen, Audiodateien sowie logischen Konstrukten/Anbindungen ([[Hypertext Transfer Protocol|HTTP]]- und [[Remote Procedure Call|RPC-Verbindungen]], Listener,&amp;amp;nbsp;…) und anderen.&lt;br /&gt;
* &amp;#039;&amp;#039;vector&amp;#039;&amp;#039;: [[Tupel|Tripel]] aus jeweils drei benannten &amp;#039;&amp;#039;float&amp;#039;&amp;#039;-Komponenten &amp;#039;x&amp;#039;, &amp;#039;y&amp;#039; und &amp;#039;z&amp;#039;; sie dienen primär der Darstellung von Vektoren im naiven [[3D|dreidimensionalen]] Sinne, der Farbdarstellung im [[RGB-Farbraum]], teilweise auch als Offset- und Positionsvektoren zur Ausrichtung von Texturen.&lt;br /&gt;
* &amp;#039;&amp;#039;rotation&amp;#039;&amp;#039;: [[Quaternion]] als Typ zur Darstellung komplexer Rotationen.&lt;br /&gt;
* &amp;#039;&amp;#039;list&amp;#039;&amp;#039;: ein Typ zur Darstellung linearer Listen. LSL-Listen können als [[Feld (Datentyp)|Arrays]] aufgefasst werden, d.&amp;amp;nbsp;h., sie stellen Folgen der festen Länge n von LSL-Werten dar, deren Komponenten von 0 bis n−1 adressiert sind. LSL-Listen können keine weiteren Listen enthalten.&lt;br /&gt;
&lt;br /&gt;
=== Ereignisse ===&lt;br /&gt;
&lt;br /&gt;
In jedem Zustand eines LSL-Skripts können [[Ereignis (Programmierung)|Ereignisse]] (&amp;#039;&amp;#039;events&amp;#039;&amp;#039;) deklariert werden. Die Menge der definierten Ereignisse wird von Linden Lab vorgegeben, wie etwa &amp;#039;&amp;#039;state_entry()&amp;#039;&amp;#039; (das Skript nimmt den benannten Zustand an), &amp;#039;&amp;#039;touch_start( integer num)&amp;#039;&amp;#039; (&amp;#039;num&amp;#039; Avatare haben das enthaltende Objekt &amp;#039;&amp;#039;berührt&amp;#039;&amp;#039;, also angeklickt) oder &amp;#039;&amp;#039;http_response( key id, integer status, list metaData, string body)&amp;#039;&amp;#039; (ein HTTP-Server hat seine Antwort gesendet).&lt;br /&gt;
&lt;br /&gt;
Mit jedem Ereignis ist ein Anweisungsblock assoziiert, welcher beim Eintreten des Ereignisses ausgeführt wird und vom Programmierer frei definierbar ist. LSL-Skripte sind derart synchronisiert, dass nie mehr als ein Ereignis zeitgleich eintritt; damit können keine Kollisionen bei Operationen auf globalen Variablen auftreten.&lt;br /&gt;
&lt;br /&gt;
=== Funktionen ===&lt;br /&gt;
&lt;br /&gt;
Linden Lab bietet eine relativ umfangreiche Funktionsbibliothek, die vom Programmierer frei verwendet werden kann. Dabei gibt es sowohl &amp;#039;&amp;#039;reine&amp;#039;&amp;#039; [[Funktion (Mathematik)|Funktionen]] nach klassischer Auffassung (zum Beispiel llSin(float x) zur Berechnung der [[Sinus und Kosinus|Sinusfunktion]]) wie auch Funktionen mit [[Prozedur (Programmierung)|Prozedurcharkteristik]] (zum Beispiel llTargetOmega(…), welche zum Starten einer autarken Objektrotation genutzt werden kann).&lt;br /&gt;
&lt;br /&gt;
Des Weiteren ist es möglich, eigene Funktionen zu definieren, welche auch Mischformen aus Funktion und Prozedur sein können und auf globalen Variablen des Skripts operieren dürfen.&lt;br /&gt;
&lt;br /&gt;
== Beispiel ==&lt;br /&gt;
&lt;br /&gt;
Anbei folgt das Standard-Beispielskript von Linden Lab, welches dem üblichen [[Hallo-Welt-Programm]] entspricht.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lsl&amp;quot;&amp;gt;&lt;br /&gt;
 default&lt;br /&gt;
 {&lt;br /&gt;
    state_entry()&lt;br /&gt;
    {&lt;br /&gt;
        llSay(0, &amp;quot;Hello, Avatar!&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    touch_start(integer num_detected)&lt;br /&gt;
    {&lt;br /&gt;
        llSay(0, &amp;quot;Touched.&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== LSL und Mono ==&lt;br /&gt;
&lt;br /&gt;
Im Herbst 2008 begann Linden Lab damit, die bis dato verwendete LSL-Implementierung durch die [[Open Source|Open-Source]]-Software [[Mono-Projekt|Mono]] zu ersetzen, welche eine .NET-kompatible Laufzeitumgebung darstellt und durch die erhebliche Laufzeitverbesserungen verzeichnet wurden. Des Weiteren vervierfachte sich damit der für jedes Skript verfügbare Speicher von 16&amp;amp;nbsp;KiB auf 64&amp;amp;nbsp;KiB. Etwa gleichzeitig begann der Mono-basierte Nachbau von LSL für [[OpenSimulator]], dem Open-Source-Pendant von Second Life.&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
&lt;br /&gt;
* [http://wiki.secondlife.com/wiki/LSL_Portal wiki.secondlife.com] Offizielles LSL-Portal von Second Life/Linden Lab&lt;br /&gt;
* [http://lslwiki.net/lslwiki/wakka.php?wakka=HomePage lslwiki.net] Inoffizielles LSL-Wiki (Nicht mehr aktuell, Offline)&lt;br /&gt;
* [http://lslwiki.net/lslwiki/wakka.php?wakka=memory Speicheraufteilung bei Standard-LSL] lslwiki.net (Nicht mehr aktuell, Offline)&lt;br /&gt;
* [http://wiki.secondlife.com/wiki/LlGetFreeMemory Speicheraufteilung mit und ohne Mono] wiki.secondlife.com&lt;br /&gt;
* [http://wiki.secondlife.com/wiki/Mono Second Life: Mono Wiki] wiki.secondlife.com&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Skriptsprache]]&lt;/div&gt;</summary>
		<author><name>imported&gt;Aka</name></author>
	</entry>
</feed>