<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.secondlife.com/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Vulcan+Viper</id>
	<title>Second Life Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.secondlife.com/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Vulcan+Viper"/>
	<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/wiki/Special:Contributions/Vulcan_Viper"/>
	<updated>2026-07-27T05:10:04Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.42.1</generator>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=LlInstantMessage/de&amp;diff=1198561</id>
		<title>LlInstantMessage/de</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=LlInstantMessage/de&amp;diff=1198561"/>
		<updated>2015-12-22T20:52:08Z</updated>

		<summary type="html">&lt;p&gt;Vulcan Viper: Just to see if everything that should be shown as LSL can be made to appear within the border.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{LSL_Function/de&lt;br /&gt;
|func_id=118|func_sleep=2.0|func_energy=10.0&lt;br /&gt;
|func=llInstantMessage&lt;br /&gt;
|p1_type=key|p1_name=user|p1_desc&lt;br /&gt;
|p2_type=string|p2_name=message|p2_desc&lt;br /&gt;
|func_desc=Sendet eine durch den string &#039;&#039;&#039;message&#039;&#039;&#039; spezifizierte Sofortnachricht zu einem durch &#039;&#039;&#039;key&#039;&#039;&#039; spezifizierten user.&lt;br /&gt;
|return_text&lt;br /&gt;
|spec&lt;br /&gt;
|caveats=**Für anwendungen wo dies problematisch ist, ist es möglich, den Aufruf von llInstantMessage in einem Child Script zu platzieren und die Infomationen via [[llMessageLinked/de|llMessageLinked]] an das Script weiterzuleiten.&lt;br /&gt;
*Die gesendete Nachricht kann nicht länger als 1024 bytes sein.&lt;br /&gt;
*Die Nachricht erscheint im Chat Fenster. Die Nachricht wird nicht als Teil des InstantMessage Systems geloggt.&lt;br /&gt;
|examples=Sag dem Besitzer, dass jemand das Objekt berührt hat:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&amp;gt;&lt;br /&gt;
key owner;&lt;br /&gt;
&lt;br /&gt;
default&lt;br /&gt;
{&lt;br /&gt;
    on_rez(integer start_param)&lt;br /&gt;
    {&lt;br /&gt;
        owner=llGetOwner();  // holt sich den key des Objektbesitzers.&lt;br /&gt;
    }&lt;br /&gt;
    touch_start(integer total_num)&lt;br /&gt;
    {        &lt;br /&gt;
        llInstantMessage(owner,llKey2Name(owner)+&amp;quot;, &amp;quot; + (string)total_num +&amp;quot; Avatar(s) touched me!&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/lsl&amp;gt;&lt;br /&gt;
Sendet eine Benachrichtung zu dem Avatar der das Objekt berührt hat, ohne andere Avatare zu spammen:&lt;br /&gt;
&amp;lt;lsl&amp;gt;&lt;br /&gt;
default&lt;br /&gt;
{&lt;br /&gt;
    touch_start(integer total_num)&lt;br /&gt;
    {        &lt;br /&gt;
        llInstantMessage(llDetectedKey(0),&amp;quot;Sie wurden registriert!&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
}&amp;lt;/lsl&amp;gt;&lt;br /&gt;
|helpers&lt;br /&gt;
|also_functions=&lt;br /&gt;
{{Template:LSL_Chatfunction_Links/de}}&lt;br /&gt;
|also_tests&lt;br /&gt;
|also_articles&lt;br /&gt;
|also_events&lt;br /&gt;
|notes=Sofortnachrichten (Instant Messages) haben den Vorteil, dass sie es einem Objekt erlauben, eine Nachricht an einen Avatar irgendwo auf dem Grid zu senden. Ein Objekt hingegen kann keine Sofortnachricht an ein Objekt senden. Die Kommunikation kann nur in eine Richtung stattfinden. Ebenfalls die Zwei-Sekunden Verzögerung kann in manchen Anwendungen als Negativaspekt gesehen werden.&lt;br /&gt;
|cat1=Communications&lt;br /&gt;
|cat2=Instant Message&lt;br /&gt;
|cat3&lt;br /&gt;
|cat4&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Vulcan Viper</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=A_Basic_LSL_Tutorial&amp;diff=1171661</id>
		<title>A Basic LSL Tutorial</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=A_Basic_LSL_Tutorial&amp;diff=1171661"/>
		<updated>2012-08-15T16:38:27Z</updated>

		<summary type="html">&lt;p&gt;Vulcan Viper: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Basic Tutorial on LSL.&lt;br /&gt;
By [[User:James Benedek|James Benedek]]&lt;br /&gt;
---------------------------------------------------------------------------------------------------&lt;br /&gt;
---------------------------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
When you create a new script, it will always start out like this:&lt;br /&gt;
&amp;lt;lsl&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 total_number)&lt;br /&gt;
    {&lt;br /&gt;
        llSay(0, &amp;quot;Touched.&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This script will basically say &amp;quot;Hello, Avatar!&amp;quot; on the public channel which is 0, &lt;br /&gt;
and will then say &amp;quot;Touched.&amp;quot; on the public channel when a user touches or clicks it.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Errors and how to fix them?&#039;&#039;&#039;&lt;br /&gt;
---------------------------&lt;br /&gt;
If you get an error while scripting at any time, it will usually be that you have missed&lt;br /&gt;
out a ; at the end of a function or a { or a } after or before an event. This is the most&lt;br /&gt;
common error (a syntax error). Sometimes this may not be the case though.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Basic understanding of terms&#039;&#039;&#039;:&lt;br /&gt;
-----------------------------&lt;br /&gt;
A function shown in red &lt;br /&gt;
&lt;br /&gt;
An event is shown in light blue&lt;br /&gt;
&lt;br /&gt;
A string is characters and should be in &amp;quot;&amp;quot;, like &amp;quot;hello bill!&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
A integer is a whole number like 1&lt;br /&gt;
&lt;br /&gt;
A float is a decimal number like 1.0, usually used in alpha and calculation.&lt;br /&gt;
&lt;br /&gt;
A vector is three floats enclosed in &amp;lt; pointy brackets &amp;gt; like so &amp;lt;0.0,0.0,0.0&amp;gt;, it can represent&lt;br /&gt;
colours and positions.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A key is a random generated UUID on the Linden Labs database mine is&lt;br /&gt;
d77442ea-5acc-4ed3-bbb4-1f2bf2c31bb6.&lt;br /&gt;
&lt;br /&gt;
TRUE and FALSE, FALSE is equal to the integer 0, and TRUE is equal to the integer 1.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;TASK 1&#039;&#039;&#039;:&lt;br /&gt;
-------&lt;br /&gt;
Let&#039;s begin by doing an easy task first off, let&#039;s make the box say something else&lt;br /&gt;
when you touch/click it, you can do this by editing the &amp;quot;llSay(0, &amp;quot;Touched.&amp;quot;);&amp;quot;.&lt;br /&gt;
Just edit in-between the &amp;quot;&amp;quot;. llSay&#039;s layout is like this llSay(Channel, &amp;quot;SAY STUFF&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
llSay is not the only function where the object can communicate you can also try out:&lt;br /&gt;
&lt;br /&gt;
llShout(Channel, &amp;quot;SHOUT STUFF&amp;quot;);&lt;br /&gt;
llWhisper(Channel, &amp;quot;WHISPER STUFF&amp;quot;);&lt;br /&gt;
llOwnerSay(&amp;quot;SAY STUFF TO YOU ONLY&amp;quot;);&lt;br /&gt;
llRegionSay(Channel, &amp;quot;REGION SAY STUFF&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;TASK 2&#039;&#039;&#039;:&lt;br /&gt;
-------&lt;br /&gt;
Let&#039;s just add some information after this explaining what it each thing does, &lt;br /&gt;
you can do this by adding // and anything after it will appear orange, this is a comment.&lt;br /&gt;
Your script should look something like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&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;); // says hello at start&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    touch_start(integer total_number)&lt;br /&gt;
    {&lt;br /&gt;
        llSay(0, &amp;quot;Touched.&amp;quot;); // says touched when someone touches it&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;TASK 3&#039;&#039;&#039;:&lt;br /&gt;
-------&lt;br /&gt;
Let&#039;s now try make it change its color when we click it, the function we will need is&lt;br /&gt;
llSetColor, its layout is like this llSetColor(vector color, integer face); this basically&lt;br /&gt;
means if i wanted the cube to be red i would use the vector &amp;lt;1,0,0&amp;gt;, green &amp;lt;0,1,0&amp;gt;, blue &amp;lt;0,0,1&amp;gt;.&lt;br /&gt;
For a full color chart see the link below:&lt;br /&gt;
&lt;br /&gt;
http://www.lslwiki.net/lslwiki/wakka.php?wakka=color&lt;br /&gt;
&lt;br /&gt;
If it was a linked object you could use llSetLinkColor, which its layout is &lt;br /&gt;
llSetLinkColor(integer linknumber, vector color, integer face).&lt;br /&gt;
Your script should look something like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&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 total_number)&lt;br /&gt;
    {&lt;br /&gt;
    llSetColor(&amp;lt;1,0,0&amp;gt;, ALL_SIDES);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;TASK 4&#039;&#039;&#039;:&lt;br /&gt;
-------&lt;br /&gt;
Let&#039;s now make it have text appear over it, you can do this by using the function&lt;br /&gt;
llSetText, its layout is llSetText(string text, vector color, float alpha).&lt;br /&gt;
Basically if you do this llSetText(&amp;quot;HELLO CAN YOU READ THIS&amp;quot;,&amp;lt;1,0,0&amp;gt;,1);&lt;br /&gt;
will appear as HELLO CAN YOU READ THIS in the colour red. Alpha is the transparency,&lt;br /&gt;
if you did llSetText(&amp;quot;HELLO CAN YOU READ THIS&amp;quot;,&amp;lt;1,0,0&amp;gt;,0); you wouldn&#039;t be able to see it.&lt;br /&gt;
0 = high transparency, 0.5 = in the middle, 1 = no transparency.&lt;br /&gt;
Your script should look something like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&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 total_number)&lt;br /&gt;
    {&lt;br /&gt;
    llSetText(&amp;quot;HELLO CAN YOU READ THIS&amp;quot;,&amp;lt;1,0,0&amp;gt;,1);    &lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;TASK 5&#039;&#039;&#039;:&lt;br /&gt;
-------&lt;br /&gt;
Now that you understand alpha we shall make our object disappear!&lt;br /&gt;
To do this we will use the function llSetAlpha, its layout is llSetAlpha(float alpha, integer face).&lt;br /&gt;
llSetAlpha(0, ALL_SIDES); would make all the faces of the object transparent.&lt;br /&gt;
If it was a linked object you could use llSetLinkAlpha, which its layout is&lt;br /&gt;
llSetLinkAlpha(integer linknumber, float alpha, integer face).&lt;br /&gt;
Your script should look something like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&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 total_number)&lt;br /&gt;
    {&lt;br /&gt;
    llSetAlpha(0, ALL_SIDES);     &lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Task 6&#039;&#039;&#039;:&lt;br /&gt;
-------&lt;br /&gt;
Let&#039;s try make our object texture itself, to do this we will use the function llSetTexture, its&lt;br /&gt;
layout is llSetTexture(string texture, integer face).You can do this two ways, you can place a &lt;br /&gt;
texture inside the object or use a UUID. To make it change to a texture you have placed inside &lt;br /&gt;
the object, do it like this llSetTexture(&amp;quot;NAME OF TEXTURE&amp;quot;, ALL_SIDES);&lt;br /&gt;
If you want to use a UUID, find a texture in your inventory, right click it &amp;gt; copy asset UUID,&lt;br /&gt;
then paste the UUID in the &amp;quot;&amp;quot; so it looks like this &lt;br /&gt;
llSetTexture(&amp;quot;j4m3s000-0000-0000-0000-b3n3d3k00000&amp;quot;, ALL_SIDES);&lt;br /&gt;
If it was a linked object you could use llSetLinkTexture, which its layout is&lt;br /&gt;
llSetLinkTexture(integer linknumber, string texture, integer face);&lt;br /&gt;
Your script should look something like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&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 total_number)&lt;br /&gt;
    {&lt;br /&gt;
    llSetTexture(&amp;quot;NAME OF TEXTURE&amp;quot;, ALL_SIDES);    &lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Task 7&#039;&#039;&#039;:&lt;br /&gt;
-------&lt;br /&gt;
Now let&#039;s move onto something more tricky, as you understand a bit about keys we will make out object&lt;br /&gt;
only respond when the owner clicks the object, this is called a if statement.&lt;br /&gt;
To do this we will need to use the functions llGetOwner() and llDetectedKey(0);, llGetOwner will&lt;br /&gt;
return your key UUID and llDetectedKey(0) when put under the touch event will return the key of who is&lt;br /&gt;
clicking/touching your object. So firstly lay it out your script like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&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 total_number)&lt;br /&gt;
    {&lt;br /&gt;
    if (llDetectedKey(0) == llGetOwner())&lt;br /&gt;
    {&lt;br /&gt;
        llSay(0, &amp;quot;Owner Touched.&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you want it to do something when someone else other than the owner touches it, use a else statement.&lt;br /&gt;
You can do this by, laying out your script like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&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 total_number)&lt;br /&gt;
    {&lt;br /&gt;
    if (llDetectedKey(0) == llGetOwner())&lt;br /&gt;
    {&lt;br /&gt;
        llSay(0, &amp;quot;Owner Touched.&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
    else&lt;br /&gt;
    {&lt;br /&gt;
    llSay(0, &amp;quot;Someone Else Touched.&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Task 8&#039;&#039;&#039;:&lt;br /&gt;
-------&lt;br /&gt;
Now let&#039;s try make a object do something when you say something, to do this&lt;br /&gt;
we will have to use a llListen function, its layout is this&lt;br /&gt;
llListen(integer channel, string name, key id, string msg);&lt;br /&gt;
We will firstly place this under the state_entry() event.&lt;br /&gt;
In this task we will just make it use the public channel, which is 0, and we will make it&lt;br /&gt;
listen to only you, which requires the llGetOwner() function we used previously.&lt;br /&gt;
We will then need to use a listen event, its layout is like this&lt;br /&gt;
listen(integer channel, string name, key id, string message) {, replace the touch event with this.&lt;br /&gt;
we will then make the object annoy you by it saying &amp;quot;Really?&amp;quot; whenever you type something XD&lt;br /&gt;
This will involve using a llSay like we used in task 1.&lt;br /&gt;
Your script should look something like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&amp;gt;&lt;br /&gt;
default&lt;br /&gt;
{&lt;br /&gt;
    state_entry()&lt;br /&gt;
    {&lt;br /&gt;
        llListen(0,&amp;quot;&amp;quot;,llGetOwner(),&amp;quot;&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    listen(integer channel, string name, key id, string message)&lt;br /&gt;
    {&lt;br /&gt;
&lt;br /&gt;
        llSay(0,&amp;quot;Really?&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To make it only listen for commands not on the public channel, which will be more secret and &lt;br /&gt;
which is less laggy in complex scripts, you can do this by changing the integer 0 to something&lt;br /&gt;
like 99, this time use a llOwnerSay instead of a llSay, which should make it secret.&lt;br /&gt;
Your script should look something like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&amp;gt;&lt;br /&gt;
default&lt;br /&gt;
{&lt;br /&gt;
    state_entry()&lt;br /&gt;
    {&lt;br /&gt;
        llListen(99,&amp;quot;&amp;quot;,llGetOwner(),&amp;quot;&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    listen(integer channel, string name, key id, string message)&lt;br /&gt;
    {&lt;br /&gt;
&lt;br /&gt;
        llOwnerSay(&amp;quot;Really?&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To chat in another channel, just type in the chat bar /channel before you type something,&lt;br /&gt;
in this case it will be &amp;quot;/99 hello&amp;quot; for example.To make it do only certain stuff when you say&lt;br /&gt;
certain commands we will have to use a if statement, like before but this time we will have &lt;br /&gt;
to check if the message equals the command, if (message == &amp;quot;Your Command Here&amp;quot;).&lt;br /&gt;
Your script should look something like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&amp;gt;&lt;br /&gt;
default&lt;br /&gt;
{&lt;br /&gt;
    state_entry()&lt;br /&gt;
    {&lt;br /&gt;
        llListen(99,&amp;quot;&amp;quot;,llGetOwner(),&amp;quot;&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    listen(integer channel, string name, key id, string message)&lt;br /&gt;
    {&lt;br /&gt;
    if (message == &amp;quot;hello&amp;quot;)&lt;br /&gt;
    {&lt;br /&gt;
        llOwnerSay(&amp;quot;Hello to you too!&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
    else&lt;br /&gt;
    {&lt;br /&gt;
        llOwnerSay(&amp;quot;INVALID COMMAND&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To learn more about llListen take a look at:&lt;br /&gt;
&lt;br /&gt;
https://wiki.secondlife.com/wiki/llListen&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;TASK 9&#039;&#039;&#039;:&lt;br /&gt;
-------&lt;br /&gt;
Now let&#039;s experiment with vectors, and make your object move non physically,&lt;br /&gt;
to do this we will need to use the function llSetPos, its layout is llSetPos(vector pos);&lt;br /&gt;
We will also use llGetPos() so we can make it move +1 of its current position.&lt;br /&gt;
Place the llSetPos function under a touch event with a vector &amp;lt;0,0,1&amp;gt; + llGetPos();.&lt;br /&gt;
Your script should look something like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&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 total_number)&lt;br /&gt;
    {&lt;br /&gt;
    llSetPos(llGetPos() + &amp;lt;0,0,1&amp;gt;);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A position vector layout is in the format x,y,z, so &amp;lt;0,0,1&amp;gt; will make it go up 1m.&lt;br /&gt;
to learn more take a look at:&lt;br /&gt;
&lt;br /&gt;
https://wiki.secondlife.com/wiki/llSetPos&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;TASK 10&#039;&#039;&#039;:&lt;br /&gt;
--------&lt;br /&gt;
Like when editing a object you can make it Phantom, Physical...&lt;br /&gt;
You can also do this with scripting, the function you have to use to do this is&lt;br /&gt;
llSetStatus, its layout is llSetStatus(integer status, integer value);, so if i wanted&lt;br /&gt;
to make my object go physical the integer status would be STATUS_PHYSICS or 1, if i wanted&lt;br /&gt;
to make my object go phantom i would use STATUS_PHANTOM or 16.&lt;br /&gt;
Your script should look something like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&amp;gt;&lt;br /&gt;
default&lt;br /&gt;
{&lt;br /&gt;
    state_entry()&lt;br /&gt;
    {&lt;br /&gt;
        llSetStatus(STATUS_PHYSICS, TRUE);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
---------------------------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
You now know pretty much the basics of scripting, &lt;br /&gt;
but there are still many more functions to use and experiment with yet!!!!!!&lt;br /&gt;
To know more functions and what they do, take a look at these links below:&lt;br /&gt;
&lt;br /&gt;
http://wiki.secondlife.com/wiki/LSL_Portal&lt;br /&gt;
&lt;br /&gt;
http://www.lslwiki.net/lslwiki/wakka.php?wakka=HomePage&lt;br /&gt;
&lt;br /&gt;
http://rpgstats.com/wiki/index.php?title=Main_Page&lt;br /&gt;
&lt;br /&gt;
---------------------------------------------------------------------------------------------------&lt;br /&gt;
{{LSLC|Tutorials}}&lt;/div&gt;</summary>
		<author><name>Vulcan Viper</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=A_Basic_LSL_Tutorial&amp;diff=1171660</id>
		<title>A Basic LSL Tutorial</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=A_Basic_LSL_Tutorial&amp;diff=1171660"/>
		<updated>2012-08-15T15:59:55Z</updated>

		<summary type="html">&lt;p&gt;Vulcan Viper: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Basic Tutorial on LSL.&lt;br /&gt;
By [[User:James Benedek|James Benedek]]&lt;br /&gt;
---------------------------------------------------------------------------------------------------&lt;br /&gt;
---------------------------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
When you create a new script, it will always start out like this:&lt;br /&gt;
&amp;lt;lsl&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 total_number)&lt;br /&gt;
    {&lt;br /&gt;
        llSay(0, &amp;quot;Touched.&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This script will basically say &amp;quot;Hello, Avatar!&amp;quot; on the public channel which is 0, &lt;br /&gt;
and will then say &amp;quot;Touched.&amp;quot; on the public channel when a user touches or clicks it.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Errors and how to fix them?&#039;&#039;&#039;&lt;br /&gt;
---------------------------&lt;br /&gt;
If you get an error while scripting at any time, it will usually be that you have missed&lt;br /&gt;
out a ; at the end of a function or a { or a } after or before an event. This is the most&lt;br /&gt;
common error (a syntax error). Sometimes this may not be the case though.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Basic understanding of terms&#039;&#039;&#039;:&lt;br /&gt;
-----------------------------&lt;br /&gt;
A function shown in red &lt;br /&gt;
&lt;br /&gt;
An event is shown in light blue&lt;br /&gt;
&lt;br /&gt;
A string is characters and should be in &amp;quot;&amp;quot;, like &amp;quot;hello bill!&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
A integer is a whole number like 1&lt;br /&gt;
&lt;br /&gt;
A float is a decimal number like 1.0, usually used in alpha and calculation.&lt;br /&gt;
&lt;br /&gt;
A vector is three floats enclosed in &amp;lt; pointy brackets &amp;gt; like so &amp;lt;0.0,0.0,0.0&amp;gt;, it can represent&lt;br /&gt;
colours and positions.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A key is a random generated UUID on the Linden Labs database mine is&lt;br /&gt;
d77442ea-5acc-4ed3-bbb4-1f2bf2c31bb6.&lt;br /&gt;
&lt;br /&gt;
TRUE and FALSE, FALSE is equal to the integer 0, and TRUE is equal to the integer 1.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;TASK 1&#039;&#039;&#039;:&lt;br /&gt;
-------&lt;br /&gt;
Let&#039;s begin by doing an easy task first off, let&#039;s make the box say something else&lt;br /&gt;
when you touch/click it, you can do this by editing the &amp;quot;llSay(0, &amp;quot;Touched.&amp;quot;);&amp;quot;.&lt;br /&gt;
Just edit in-between the &amp;quot;&amp;quot;. llSay&#039;s layout is like this llSay(Channel, &amp;quot;SAY STUFF&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
llSay is not the only function where the object can communicate you can also try out:&lt;br /&gt;
&lt;br /&gt;
llShout(Channel, &amp;quot;SHOUT STUFF&amp;quot;);&lt;br /&gt;
llWhisper(Channel, &amp;quot;WHISPER STUFF&amp;quot;);&lt;br /&gt;
llOwnerSay(&amp;quot;SAY STUFF TO YOU ONLY&amp;quot;);&lt;br /&gt;
llRegionSay(Channel, &amp;quot;REGION SAY STUFF&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;TASK 2&#039;&#039;&#039;:&lt;br /&gt;
-------&lt;br /&gt;
Let&#039;s just add some information after this explaining what it each thing does, &lt;br /&gt;
you can do this by adding // and anything after it will appear orange, this is a comment.&lt;br /&gt;
Your script should look something like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&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;); // says hello at start&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    touch_start(integer total_number)&lt;br /&gt;
    {&lt;br /&gt;
        llSay(0, &amp;quot;Touched.&amp;quot;); // says touched when someone touches it&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;TASK 3&#039;&#039;&#039;:&lt;br /&gt;
-------&lt;br /&gt;
Lets now try make it change its color when we click it, the function we will need is&lt;br /&gt;
llSetColor, its layout is like this llSetColor(vector color, integer face); this basically&lt;br /&gt;
means if i wanted the cube to be red i would use the vector &amp;lt;1,0,0&amp;gt;, green &amp;lt;0,1,0&amp;gt;, blue &amp;lt;0,0,1&amp;gt;.&lt;br /&gt;
For a full color chart see the link below:&lt;br /&gt;
&lt;br /&gt;
http://www.lslwiki.net/lslwiki/wakka.php?wakka=color&lt;br /&gt;
&lt;br /&gt;
If it was a linked object you could use llSetLinkColor, which its layout is &lt;br /&gt;
llSetLinkColor(integer linknumber, vector color, integer face).&lt;br /&gt;
Your script should look something like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&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 total_number)&lt;br /&gt;
    {&lt;br /&gt;
    llSetColor(&amp;lt;1,0,0&amp;gt;, ALL_SIDES);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;TASK 4&#039;&#039;&#039;:&lt;br /&gt;
-------&lt;br /&gt;
Lets now make it have text appear over it, you can do this by using the function&lt;br /&gt;
llSetText, its layout is llSetText(string text, vector color, float alpha).&lt;br /&gt;
Basically if you do this llSetText(&amp;quot;HELLO CAN YOU READ THIS&amp;quot;,&amp;lt;1,0,0&amp;gt;,1);&lt;br /&gt;
will appear as HELLO CAN YOU READ THIS in the colour red. Alpha is the transparency,&lt;br /&gt;
if you did llSetText(&amp;quot;HELLO CAN YOU READ THIS&amp;quot;,&amp;lt;1,0,0&amp;gt;,0); you wouldn&#039;t be able to see it.&lt;br /&gt;
0 = high transparency, 0.5 = in the middle, 1 = no transparency.&lt;br /&gt;
Your script should look something like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&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 total_number)&lt;br /&gt;
    {&lt;br /&gt;
    llSetText(&amp;quot;HELLO CAN YOU READ THIS&amp;quot;,&amp;lt;1,0,0&amp;gt;,1);    &lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;TASK 5&#039;&#039;&#039;:&lt;br /&gt;
-------&lt;br /&gt;
Now that you understand alpha we shall make our object disappear!&lt;br /&gt;
To do this we will use the function llSetAlpha, its layout is llSetAlpha(float alpha, integer face).&lt;br /&gt;
llSetAlpha(0, ALL_SIDES); would make all the faces of the object transparent.&lt;br /&gt;
If it was a linked object you could use llSetLinkAlpha, which its layout is&lt;br /&gt;
llSetLinkAlpha(integer linknumber, float alpha, integer face).&lt;br /&gt;
Your script should look something like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&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 total_number)&lt;br /&gt;
    {&lt;br /&gt;
    llSetAlpha(0, ALL_SIDES);     &lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Task 6&#039;&#039;&#039;:&lt;br /&gt;
-------&lt;br /&gt;
Lets try make our object texture itself, to do this we will use the function llSetTexture, its&lt;br /&gt;
layout is llSetTexture(string texture, integer face).You can do this two ways, you can place a &lt;br /&gt;
texture inside the object or use a UUID. To make it change to a texture you have placed inside &lt;br /&gt;
the object, do it like this llSetTexture(&amp;quot;NAME OF TEXTURE&amp;quot;, ALL_SIDES);&lt;br /&gt;
If you want to use a UUID, find a texture in your inventory, right click it &amp;gt; copy asset UUID,&lt;br /&gt;
then paste the UUID in the &amp;quot;&amp;quot; so it looks like this &lt;br /&gt;
llSetTexture(&amp;quot;j4m3s000-0000-0000-0000-b3n3d3k00000&amp;quot;, ALL_SIDES);&lt;br /&gt;
If it was a linked object you could use llSetLinkTexture, which its layout is&lt;br /&gt;
llSetLinkTexture(integer linknumber, string texture, integer face);&lt;br /&gt;
Your script should look something like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&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 total_number)&lt;br /&gt;
    {&lt;br /&gt;
    llSetTexture(&amp;quot;NAME OF TEXTURE&amp;quot;, ALL_SIDES);    &lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Task 7&#039;&#039;&#039;:&lt;br /&gt;
-------&lt;br /&gt;
Now lets move onto something more tricky, as you understand a bit about keys we will make out object&lt;br /&gt;
only respond when the owner clicks the object, this is called a if statement.&lt;br /&gt;
To do this we will need to use the functions llGetOwner() and llDetectedKey(0);, llGetOwner will&lt;br /&gt;
return your key UUID and llDetectedKey(0) when put under the touch event will return the key of who is&lt;br /&gt;
clicking/touching your object. So firstly lay it out your script like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&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 total_number)&lt;br /&gt;
    {&lt;br /&gt;
    if (llDetectedKey(0) == llGetOwner())&lt;br /&gt;
    {&lt;br /&gt;
        llSay(0, &amp;quot;Owner Touched.&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you want it to do something when someone else other than the owner touches it, use a else statement.&lt;br /&gt;
You can do this by, laying out your script like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&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 total_number)&lt;br /&gt;
    {&lt;br /&gt;
    if (llDetectedKey(0) == llGetOwner())&lt;br /&gt;
    {&lt;br /&gt;
        llSay(0, &amp;quot;Owner Touched.&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
    else&lt;br /&gt;
    {&lt;br /&gt;
    llSay(0, &amp;quot;Someone Else Touched.&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Task 8&#039;&#039;&#039;:&lt;br /&gt;
-------&lt;br /&gt;
Now lets try make a object do something when you say something, to do this&lt;br /&gt;
we will have to use a llListen function, its layout is this&lt;br /&gt;
llListen(integer channel, string name, key id, string msg);&lt;br /&gt;
We will firstly place this under the state_entry() event.&lt;br /&gt;
In this task we will just make it use the public channel, which is 0, and we will make it&lt;br /&gt;
listen to only you, which requires the llGetOwner() function we used previously.&lt;br /&gt;
We will then need to use a listen event, its layout is like this&lt;br /&gt;
listen(integer channel, string name, key id, string message) {, replace the touch event with this.&lt;br /&gt;
we will then make the object annoy you by it saying &amp;quot;Really?&amp;quot; whenever you type something XD&lt;br /&gt;
This will involve using a llSay like we used in task 1.&lt;br /&gt;
Your script should look something like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&amp;gt;&lt;br /&gt;
default&lt;br /&gt;
{&lt;br /&gt;
    state_entry()&lt;br /&gt;
    {&lt;br /&gt;
        llListen(0,&amp;quot;&amp;quot;,llGetOwner(),&amp;quot;&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    listen(integer channel, string name, key id, string message)&lt;br /&gt;
    {&lt;br /&gt;
&lt;br /&gt;
        llSay(0,&amp;quot;Really?&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To make it only listen for commands not on the public channel, which will be more secret and &lt;br /&gt;
which is less laggy in complex scripts, you can do this by changing the integer 0 to something&lt;br /&gt;
like 99, this time use a llOwnerSay instead of a llSay, which should make it secret.&lt;br /&gt;
Your script should look something like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&amp;gt;&lt;br /&gt;
default&lt;br /&gt;
{&lt;br /&gt;
    state_entry()&lt;br /&gt;
    {&lt;br /&gt;
        llListen(99,&amp;quot;&amp;quot;,llGetOwner(),&amp;quot;&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    listen(integer channel, string name, key id, string message)&lt;br /&gt;
    {&lt;br /&gt;
&lt;br /&gt;
        llOwnerSay(&amp;quot;Really?&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To chat in another channel, just type in the chat bar /channel before you type something,&lt;br /&gt;
in this case it will be &amp;quot;/99 hello&amp;quot; for example.To make it do only certain stuff when you say&lt;br /&gt;
certain commands we will have to use a if statement, like before but this time we will have &lt;br /&gt;
to check if the message equals the command, if (message == &amp;quot;Your Command Here&amp;quot;).&lt;br /&gt;
Your script should look something like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&amp;gt;&lt;br /&gt;
default&lt;br /&gt;
{&lt;br /&gt;
    state_entry()&lt;br /&gt;
    {&lt;br /&gt;
        llListen(99,&amp;quot;&amp;quot;,llGetOwner(),&amp;quot;&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    listen(integer channel, string name, key id, string message)&lt;br /&gt;
    {&lt;br /&gt;
    if (message == &amp;quot;hello&amp;quot;)&lt;br /&gt;
    {&lt;br /&gt;
        llOwnerSay(&amp;quot;Hello to you too!&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
    else&lt;br /&gt;
    {&lt;br /&gt;
        llOwnerSay(&amp;quot;INVALID COMMAND&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To learn more about llListen take a look at:&lt;br /&gt;
&lt;br /&gt;
https://wiki.secondlife.com/wiki/llListen&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;TASK 9&#039;&#039;&#039;:&lt;br /&gt;
-------&lt;br /&gt;
Now lets experiment with vectors, and make your object move non physically,&lt;br /&gt;
to do this we will need to use the function llSetPos, its layout is llSetPos(vector pos);&lt;br /&gt;
We will also use llGetPos() so we can make it move +1 of its current position.&lt;br /&gt;
Place the llSetPos function under a touch event with a vector &amp;lt;0,0,1&amp;gt; + llGetPos();.&lt;br /&gt;
Your script should look something like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&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 total_number)&lt;br /&gt;
    {&lt;br /&gt;
    llSetPos(llGetPos() + &amp;lt;0,0,1&amp;gt;);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A position vector layout is in the format x,y,z, so &amp;lt;0,0,1&amp;gt; will make it go up 1m.&lt;br /&gt;
to learn more take a look at:&lt;br /&gt;
&lt;br /&gt;
https://wiki.secondlife.com/wiki/llSetPos&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;TASK 10&#039;&#039;&#039;:&lt;br /&gt;
--------&lt;br /&gt;
Like when editing a object you can make it Phantom, Physical...&lt;br /&gt;
You can also do this with scripting, the function you have to use to do this is&lt;br /&gt;
llSetStatus, its layout is llSetStatus(integer status, integer value);, so if i wanted&lt;br /&gt;
to make my object go physical the integer status would be STATUS_PHYSICS or 1, if i wanted&lt;br /&gt;
to make my object go phantom i would use STATUS_PHANTOM or 16.&lt;br /&gt;
Your script should look something like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&amp;gt;&lt;br /&gt;
default&lt;br /&gt;
{&lt;br /&gt;
    state_entry()&lt;br /&gt;
    {&lt;br /&gt;
        llSetStatus(STATUS_PHYSICS, TRUE);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
---------------------------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
You now know pretty much the basics of scripting, &lt;br /&gt;
but there are still many more functions to use and experiment with yet!!!!!!&lt;br /&gt;
To know more functions and what they do, take a look at these links below:&lt;br /&gt;
&lt;br /&gt;
http://wiki.secondlife.com/wiki/LSL_Portal&lt;br /&gt;
&lt;br /&gt;
http://www.lslwiki.net/lslwiki/wakka.php?wakka=HomePage&lt;br /&gt;
&lt;br /&gt;
http://rpgstats.com/wiki/index.php?title=Main_Page&lt;br /&gt;
&lt;br /&gt;
---------------------------------------------------------------------------------------------------&lt;br /&gt;
{{LSLC|Tutorials}}&lt;/div&gt;</summary>
		<author><name>Vulcan Viper</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=A_Basic_LSL_Tutorial&amp;diff=1171657</id>
		<title>A Basic LSL Tutorial</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=A_Basic_LSL_Tutorial&amp;diff=1171657"/>
		<updated>2012-08-15T14:15:58Z</updated>

		<summary type="html">&lt;p&gt;Vulcan Viper: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Basic Tutorial on LSL.&lt;br /&gt;
By [[User:James Benedek|James Benedek]]&lt;br /&gt;
---------------------------------------------------------------------------------------------------&lt;br /&gt;
---------------------------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
When you create a new script, it will always start out like this:&lt;br /&gt;
&amp;lt;lsl&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 total_number)&lt;br /&gt;
    {&lt;br /&gt;
        llSay(0, &amp;quot;Touched.&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This script will basically say &amp;quot;Hello, Avatar!&amp;quot; on the public channel which is 0, &lt;br /&gt;
and will then say &amp;quot;Touched.&amp;quot; on the public channel when a user touches or clicks it.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Errors and how to fix them?&#039;&#039;&#039;&lt;br /&gt;
---------------------------&lt;br /&gt;
If you get an error while scripting at any time, it will usually be that you have missed&lt;br /&gt;
out a ; at the end of a function or a { or a } after or before an event. This is the most&lt;br /&gt;
common error (a syntax error). Sometimes this may not be the case though.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Basic understanding of terms&#039;&#039;&#039;:&lt;br /&gt;
-----------------------------&lt;br /&gt;
A function shown in red &lt;br /&gt;
&lt;br /&gt;
An event is shown in light blue&lt;br /&gt;
&lt;br /&gt;
A string is characters and should be in &amp;quot;&amp;quot;, like &amp;quot;hello bill!&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
A integer is a whole number like 1&lt;br /&gt;
&lt;br /&gt;
A float is a decimal number like 1.0, usually used in alpha and calculation.&lt;br /&gt;
&lt;br /&gt;
A vector is three floats enclosed in &amp;lt; pointy brackets &amp;gt; like so &amp;lt;0.0,0.0,0.0&amp;gt;, it can represent&lt;br /&gt;
colours and positions.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A key is a random generated UUID on the Linden Labs database mine is&lt;br /&gt;
d77442ea-5acc-4ed3-bbb4-1f2bf2c31bb6.&lt;br /&gt;
&lt;br /&gt;
TRUE and FALSE, FALSE is equal to the integer 0, and TRUE is equal to the integer 1.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;TASK 1&#039;&#039;&#039;:&lt;br /&gt;
-------&lt;br /&gt;
Lets begin by doing a easy task first off, lets make the box say something else&lt;br /&gt;
when you touch/click it, you can do this by editing the &amp;quot;llSay(0, &amp;quot;Touched.&amp;quot;);&amp;quot;.&lt;br /&gt;
Just edit in-between the &amp;quot;&amp;quot;. llSay&#039;s layout is like this llSay(Channel, &amp;quot;SAY STUFF&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
llSay is not the only function where the object can communicate you can also try out:&lt;br /&gt;
&lt;br /&gt;
llShout(Channel, &amp;quot;SHOUT STUFF&amp;quot;);&lt;br /&gt;
llWhisper(Channel, &amp;quot;WHISPER STUFF&amp;quot;);&lt;br /&gt;
llOwnerSay(&amp;quot;SAY STUFF TO YOU ONLY&amp;quot;);&lt;br /&gt;
llRegionSay(Channel, &amp;quot;REGION SAY STUFF&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;TASK 2&#039;&#039;&#039;:&lt;br /&gt;
-------&lt;br /&gt;
Let&#039;s just add some information after this explaining what it each thing does, &lt;br /&gt;
you can do this by adding // and anything after it will appear orange, this is a comment.&lt;br /&gt;
Your script should look something like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&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;); // says hello at start&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    touch_start(integer total_number)&lt;br /&gt;
    {&lt;br /&gt;
        llSay(0, &amp;quot;Touched.&amp;quot;); // says touched when someone touches it&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;TASK 3&#039;&#039;&#039;:&lt;br /&gt;
-------&lt;br /&gt;
Lets now try make it change its color when we click it, the function we will need is&lt;br /&gt;
llSetColor, its layout is like this llSetColor(vector color, integer face); this basically&lt;br /&gt;
means if i wanted the cube to be red i would use the vector &amp;lt;1,0,0&amp;gt;, green &amp;lt;0,1,0&amp;gt;, blue &amp;lt;0,0,1&amp;gt;.&lt;br /&gt;
For a full color chart see the link below:&lt;br /&gt;
&lt;br /&gt;
http://www.lslwiki.net/lslwiki/wakka.php?wakka=color&lt;br /&gt;
&lt;br /&gt;
If it was a linked object you could use llSetLinkColor, which its layout is &lt;br /&gt;
llSetLinkColor(integer linknumber, vector color, integer face).&lt;br /&gt;
Your script should look something like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&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 total_number)&lt;br /&gt;
    {&lt;br /&gt;
    llSetColor(&amp;lt;1,0,0&amp;gt;, ALL_SIDES);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;TASK 4&#039;&#039;&#039;:&lt;br /&gt;
-------&lt;br /&gt;
Lets now make it have text appear over it, you can do this by using the function&lt;br /&gt;
llSetText, its layout is llSetText(string text, vector color, float alpha).&lt;br /&gt;
Basically if you do this llSetText(&amp;quot;HELLO CAN YOU READ THIS&amp;quot;,&amp;lt;1,0,0&amp;gt;,1);&lt;br /&gt;
will appear as HELLO CAN YOU READ THIS in the colour red. Alpha is the transparency,&lt;br /&gt;
if you did llSetText(&amp;quot;HELLO CAN YOU READ THIS&amp;quot;,&amp;lt;1,0,0&amp;gt;,0); you wouldn&#039;t be able to see it.&lt;br /&gt;
0 = high transparency, 0.5 = in the middle, 1 = no transparency.&lt;br /&gt;
Your script should look something like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&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 total_number)&lt;br /&gt;
    {&lt;br /&gt;
    llSetText(&amp;quot;HELLO CAN YOU READ THIS&amp;quot;,&amp;lt;1,0,0&amp;gt;,1);    &lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;TASK 5&#039;&#039;&#039;:&lt;br /&gt;
-------&lt;br /&gt;
Now that you understand alpha we shall make our object disappear!&lt;br /&gt;
To do this we will use the function llSetAlpha, its layout is llSetAlpha(float alpha, integer face).&lt;br /&gt;
llSetAlpha(0, ALL_SIDES); would make all the faces of the object transparent.&lt;br /&gt;
If it was a linked object you could use llSetLinkAlpha, which its layout is&lt;br /&gt;
llSetLinkAlpha(integer linknumber, float alpha, integer face).&lt;br /&gt;
Your script should look something like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&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 total_number)&lt;br /&gt;
    {&lt;br /&gt;
    llSetAlpha(0, ALL_SIDES);     &lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Task 6&#039;&#039;&#039;:&lt;br /&gt;
-------&lt;br /&gt;
Lets try make our object texture itself, to do this we will use the function llSetTexture, its&lt;br /&gt;
layout is llSetTexture(string texture, integer face).You can do this two ways, you can place a &lt;br /&gt;
texture inside the object or use a UUID. To make it change to a texture you have placed inside &lt;br /&gt;
the object, do it like this llSetTexture(&amp;quot;NAME OF TEXTURE&amp;quot;, ALL_SIDES);&lt;br /&gt;
If you want to use a UUID, find a texture in your inventory, right click it &amp;gt; copy asset UUID,&lt;br /&gt;
then paste the UUID in the &amp;quot;&amp;quot; so it looks like this &lt;br /&gt;
llSetTexture(&amp;quot;j4m3s000-0000-0000-0000-b3n3d3k00000&amp;quot;, ALL_SIDES);&lt;br /&gt;
If it was a linked object you could use llSetLinkTexture, which its layout is&lt;br /&gt;
llSetLinkTexture(integer linknumber, string texture, integer face);&lt;br /&gt;
Your script should look something like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&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 total_number)&lt;br /&gt;
    {&lt;br /&gt;
    llSetTexture(&amp;quot;NAME OF TEXTURE&amp;quot;, ALL_SIDES);    &lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Task 7&#039;&#039;&#039;:&lt;br /&gt;
-------&lt;br /&gt;
Now lets move onto something more tricky, as you understand a bit about keys we will make out object&lt;br /&gt;
only respond when the owner clicks the object, this is called a if statement.&lt;br /&gt;
To do this we will need to use the functions llGetOwner() and llDetectedKey(0);, llGetOwner will&lt;br /&gt;
return your key UUID and llDetectedKey(0) when put under the touch event will return the key of who is&lt;br /&gt;
clicking/touching your object. So firstly lay it out your script like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&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 total_number)&lt;br /&gt;
    {&lt;br /&gt;
    if (llDetectedKey(0) == llGetOwner())&lt;br /&gt;
    {&lt;br /&gt;
        llSay(0, &amp;quot;Owner Touched.&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you want it to do something when someone else other than the owner touches it, use a else statement.&lt;br /&gt;
You can do this by, laying out your script like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&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 total_number)&lt;br /&gt;
    {&lt;br /&gt;
    if (llDetectedKey(0) == llGetOwner())&lt;br /&gt;
    {&lt;br /&gt;
        llSay(0, &amp;quot;Owner Touched.&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
    else&lt;br /&gt;
    {&lt;br /&gt;
    llSay(0, &amp;quot;Someone Else Touched.&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Task 8&#039;&#039;&#039;:&lt;br /&gt;
-------&lt;br /&gt;
Now lets try make a object do something when you say something, to do this&lt;br /&gt;
we will have to use a llListen function, its layout is this&lt;br /&gt;
llListen(integer channel, string name, key id, string msg);&lt;br /&gt;
We will firstly place this under the state_entry() event.&lt;br /&gt;
In this task we will just make it use the public channel, which is 0, and we will make it&lt;br /&gt;
listen to only you, which requires the llGetOwner() function we used previously.&lt;br /&gt;
We will then need to use a listen event, its layout is like this&lt;br /&gt;
listen(integer channel, string name, key id, string message) {, replace the touch event with this.&lt;br /&gt;
we will then make the object annoy you by it saying &amp;quot;Really?&amp;quot; whenever you type something XD&lt;br /&gt;
This will involve using a llSay like we used in task 1.&lt;br /&gt;
Your script should look something like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&amp;gt;&lt;br /&gt;
default&lt;br /&gt;
{&lt;br /&gt;
    state_entry()&lt;br /&gt;
    {&lt;br /&gt;
        llListen(0,&amp;quot;&amp;quot;,llGetOwner(),&amp;quot;&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    listen(integer channel, string name, key id, string message)&lt;br /&gt;
    {&lt;br /&gt;
&lt;br /&gt;
        llSay(0,&amp;quot;Really?&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To make it only listen for commands not on the public channel, which will be more secret and &lt;br /&gt;
which is less laggy in complex scripts, you can do this by changing the integer 0 to something&lt;br /&gt;
like 99, this time use a llOwnerSay instead of a llSay, which should make it secret.&lt;br /&gt;
Your script should look something like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&amp;gt;&lt;br /&gt;
default&lt;br /&gt;
{&lt;br /&gt;
    state_entry()&lt;br /&gt;
    {&lt;br /&gt;
        llListen(99,&amp;quot;&amp;quot;,llGetOwner(),&amp;quot;&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    listen(integer channel, string name, key id, string message)&lt;br /&gt;
    {&lt;br /&gt;
&lt;br /&gt;
        llOwnerSay(&amp;quot;Really?&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To chat in another channel, just type in the chat bar /channel before you type something,&lt;br /&gt;
in this case it will be &amp;quot;/99 hello&amp;quot; for example.To make it do only certain stuff when you say&lt;br /&gt;
certain commands we will have to use a if statement, like before but this time we will have &lt;br /&gt;
to check if the message equals the command, if (message == &amp;quot;Your Command Here&amp;quot;).&lt;br /&gt;
Your script should look something like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&amp;gt;&lt;br /&gt;
default&lt;br /&gt;
{&lt;br /&gt;
    state_entry()&lt;br /&gt;
    {&lt;br /&gt;
        llListen(99,&amp;quot;&amp;quot;,llGetOwner(),&amp;quot;&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    listen(integer channel, string name, key id, string message)&lt;br /&gt;
    {&lt;br /&gt;
    if (message == &amp;quot;hello&amp;quot;)&lt;br /&gt;
    {&lt;br /&gt;
        llOwnerSay(&amp;quot;Hello to you too!&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
    else&lt;br /&gt;
    {&lt;br /&gt;
        llOwnerSay(&amp;quot;INVALID COMMAND&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To learn more about llListen take a look at:&lt;br /&gt;
&lt;br /&gt;
https://wiki.secondlife.com/wiki/llListen&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;TASK 9&#039;&#039;&#039;:&lt;br /&gt;
-------&lt;br /&gt;
Now lets experiment with vectors, and make your object move non physically,&lt;br /&gt;
to do this we will need to use the function llSetPos, its layout is llSetPos(vector pos);&lt;br /&gt;
We will also use llGetPos() so we can make it move +1 of its current position.&lt;br /&gt;
Place the llSetPos function under a touch event with a vector &amp;lt;0,0,1&amp;gt; + llGetPos();.&lt;br /&gt;
Your script should look something like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&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 total_number)&lt;br /&gt;
    {&lt;br /&gt;
    llSetPos(llGetPos() + &amp;lt;0,0,1&amp;gt;);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A position vector layout is in the format x,y,z, so &amp;lt;0,0,1&amp;gt; will make it go up 1m.&lt;br /&gt;
to learn more take a look at:&lt;br /&gt;
&lt;br /&gt;
https://wiki.secondlife.com/wiki/llSetPos&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;TASK 10&#039;&#039;&#039;:&lt;br /&gt;
--------&lt;br /&gt;
Like when editing a object you can make it Phantom, Physical...&lt;br /&gt;
You can also do this with scripting, the function you have to use to do this is&lt;br /&gt;
llSetStatus, its layout is llSetStatus(integer status, integer value);, so if i wanted&lt;br /&gt;
to make my object go physical the integer status would be STATUS_PHYSICS or 1, if i wanted&lt;br /&gt;
to make my object go phantom i would use STATUS_PHANTOM or 16.&lt;br /&gt;
Your script should look something like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&amp;gt;&lt;br /&gt;
default&lt;br /&gt;
{&lt;br /&gt;
    state_entry()&lt;br /&gt;
    {&lt;br /&gt;
        llSetStatus(STATUS_PHYSICS, TRUE);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
---------------------------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
You now know pretty much the basics of scripting, &lt;br /&gt;
but there are still many more functions to use and experiment with yet!!!!!!&lt;br /&gt;
To know more functions and what they do, take a look at these links below:&lt;br /&gt;
&lt;br /&gt;
http://wiki.secondlife.com/wiki/LSL_Portal&lt;br /&gt;
&lt;br /&gt;
http://www.lslwiki.net/lslwiki/wakka.php?wakka=HomePage&lt;br /&gt;
&lt;br /&gt;
http://rpgstats.com/wiki/index.php?title=Main_Page&lt;br /&gt;
&lt;br /&gt;
---------------------------------------------------------------------------------------------------&lt;br /&gt;
{{LSLC|Tutorials}}&lt;/div&gt;</summary>
		<author><name>Vulcan Viper</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=UUID&amp;diff=1161341</id>
		<title>UUID</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=UUID&amp;diff=1161341"/>
		<updated>2012-01-14T19:51:45Z</updated>

		<summary type="html">&lt;p&gt;Vulcan Viper: /* The UUID and Secondlife */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Help |Glossary=*}}{{LSL Header}}&lt;br /&gt;
&lt;br /&gt;
UUID is an abbreviation for &#039;&#039;&#039;Universally Unique Identifier&#039;&#039;&#039;.  It is a 128-bit (16 byte) value which is generated in such a way as to make collisions very unlikely.  They are often represented as a string of 32 hex characters with four dashes interspersed.  See [http://en.wikipedia.org/wiki/UUID Wikipedia on UUIDs] for more information.&lt;br /&gt;
&lt;br /&gt;
In LSL they are stored in the [[key]] variable type (which is a specialized form of a string).&lt;br /&gt;
&lt;br /&gt;
== The UUID and Secondlife ==&lt;br /&gt;
In Second Life every object and every avatar has an UUID and they can be split up into four groups: Asset, Instance, Account and Land UUID&#039;s.&lt;br /&gt;
&lt;br /&gt;
SL uses Version 4 UUIDs as defined in {{RFC|4122|target=section-4.1.3}}, though there are some that are not V4.&lt;br /&gt;
&lt;br /&gt;
=== Inventory ===&lt;br /&gt;
Inventory as it is thought of is really only a permissions layer. The inventory item, is really just a wrapper around an [[asset]]. The wrapper contains the permissions, creator &amp;amp; owner of the asset and a link to the asset. The link is the asset UUID.&lt;br /&gt;
&lt;br /&gt;
=== Asset UUIDs ===&lt;br /&gt;
Asset UUIDs are used as the handle for all types that can be inventory items. The asset UUID is what is returned by [[llGetInventoryKey]] and by the &amp;quot;Copy UUID&amp;quot; feature in the client. Full (asset) permissions are required to get the UUID. Assets are immutable (they cannot be modified); when the user is editing an asset, they are in fact creating new assets. The appearance is that modified inventory items are assigned new UUIDs. &lt;br /&gt;
&lt;br /&gt;
* Animation&lt;br /&gt;
* Gestures&lt;br /&gt;
* Objects&lt;br /&gt;
* Notecards&lt;br /&gt;
* Scripts&lt;br /&gt;
* Sounds&lt;br /&gt;
* Textures (including sculpty textures)&lt;br /&gt;
----&lt;br /&gt;
*When an Object is modified in-world, it is not assigned a new asset UUID until it is derezzed, copied back to inventory or during sim-state save. Modifying an instance of an asset will not update other instances or inventory copies.&lt;br /&gt;
*Brand new notecards are just asset wrappers without an asset. That is to say, new notecards have an asset UUID of [[NULL_KEY]]. The asset isn&#039;t created until the notecard is edited and then saved.&lt;br /&gt;
*Assets that are no longer inventory and are not referenced by any script are eventually deleted. Before they are deleted they are place in a database where they await deletion but can still be revived.&lt;br /&gt;
&lt;br /&gt;
=== Instance UUIDs ===&lt;br /&gt;
Every time an object is [[rez]]zed, all of the prims (including the root prim) are assigned instance UUIDs. An avatar&#039;s attachments keeps it&#039;s instance UUIDs when the user teleports or moves from one region to another (they are not kept when an avatar logs off). The instance UUID is what is returned by [[llGetKey]] and other functions.&lt;br /&gt;
&lt;br /&gt;
=== Account UUIDs ===&lt;br /&gt;
Account UUIDs are assigned during the creation process and never change. They are generally public information.&lt;br /&gt;
* Avatar - Public&lt;br /&gt;
* Group - Public or private depending on setup.&lt;br /&gt;
The avatar UUID is returned by [[llGetOwner]] and other functions.&lt;br /&gt;
&lt;br /&gt;
=== Land UUIDs ===&lt;br /&gt;
* Parcel&lt;br /&gt;
* Region&lt;br /&gt;
----&lt;br /&gt;
* This information is technically available to the public but there is no interface to get at it directly (the UUIDs are sent to the client but consumed internally and never exposed to the user).&lt;br /&gt;
* Only one instance of these can exist in-world at any time.&lt;br /&gt;
** When copied, new UUIDs are assigned.&lt;br /&gt;
* Modification does not cause a new UUID to be assign.&lt;br /&gt;
&amp;lt;!--* Joining parcels causes a new UUID to be assigned. --&amp;gt;&lt;/div&gt;</summary>
		<author><name>Vulcan Viper</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=How_do_I_make_it_brighter%3F_It%27s_so_dark_I_can%27t_see_anything.&amp;diff=793232</id>
		<title>How do I make it brighter? It&#039;s so dark I can&#039;t see anything.</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=How_do_I_make_it_brighter%3F_It%27s_so_dark_I_can%27t_see_anything.&amp;diff=793232"/>
		<updated>2010-03-08T15:03:57Z</updated>

		<summary type="html">&lt;p&gt;Vulcan Viper: Updated the text of the last two menu options, to be in accordance with the latest SL viewer.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{KBmaster}}&lt;br /&gt;
This is how you do it!&lt;br /&gt;
&lt;br /&gt;
* Select &#039;&#039;&#039;World &amp;amp;gt; Environment Settings &amp;amp;gt; Midday&#039;&#039;&#039;. The sun will come out and shine for you.&lt;br /&gt;
[[Category:Moving Around]]&lt;br /&gt;
[[Category:Controls and Getting Around]]&lt;br /&gt;
[[Category:Menus and Controls]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Knowledge Base]]&lt;/div&gt;</summary>
		<author><name>Vulcan Viper</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Talk:What_does_%22SLT%22_stand_for%3F&amp;diff=649972</id>
		<title>Talk:What does &quot;SLT&quot; stand for?</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Talk:What_does_%22SLT%22_stand_for%3F&amp;diff=649972"/>
		<updated>2009-11-09T19:44:41Z</updated>

		<summary type="html">&lt;p&gt;Vulcan Viper: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;I could not hope to disagree more, with discouraging the use of SLT in Second Life. At least then you use the same short-cut, regardless of DST. What could possibly be more logical, than using &#039;&#039;&#039;Second Life&#039;&#039;&#039; Time in &#039;&#039;&#039;Second Life&#039;&#039;&#039;?&lt;br /&gt;
&lt;br /&gt;
Linden Lab...please, see the logic in using the term Second Life Time in Second Life. Put SLT back where it reads either PDT or PST now.&lt;/div&gt;</summary>
		<author><name>Vulcan Viper</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Talk:What_does_%22SLT%22_stand_for%3F&amp;diff=649962</id>
		<title>Talk:What does &quot;SLT&quot; stand for?</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Talk:What_does_%22SLT%22_stand_for%3F&amp;diff=649962"/>
		<updated>2009-11-09T19:43:46Z</updated>

		<summary type="html">&lt;p&gt;Vulcan Viper: Created page with &amp;#039;I could not hope to disagree more, with discouraging the use of SLT in Second Life. At least then you use the same short-cut, regardless of DST. What could possibly be more logic...&amp;#039;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;I could not hope to disagree more, with discouraging the use of SLT in Second Life. At least then you use the same short-cut, regardless of DST. What could possibly be more logical, then using &#039;&#039;&#039;Second Life&#039;&#039;&#039; Time in &#039;&#039;&#039;Second Life&#039;&#039;&#039;?&lt;br /&gt;
&lt;br /&gt;
Linden Lab...please, see the logic in using the term Second Life Time in Second Life. Put SLT back where it reads either PDT or PST now.&lt;/div&gt;</summary>
		<author><name>Vulcan Viper</name></author>
	</entry>
</feed>