
Warning: Undefined array key "media" in /volume1/web/wiki/feed.php on line 235

Warning: Undefined array key "media" in /volume1/web/wiki/feed.php on line 274

Warning: Undefined array key "media" in /volume1/web/wiki/feed.php on line 385

Warning: Undefined array key "media" in /volume1/web/wiki/feed.php on line 235

Warning: Undefined array key "media" in /volume1/web/wiki/feed.php on line 274

Warning: Undefined array key "media" in /volume1/web/wiki/feed.php on line 385

Warning: Undefined array key "media" in /volume1/web/wiki/feed.php on line 235

Warning: Undefined array key "media" in /volume1/web/wiki/feed.php on line 274

Warning: Undefined array key "media" in /volume1/web/wiki/feed.php on line 385

Warning: Undefined array key "media" in /volume1/web/wiki/feed.php on line 235

Warning: Undefined array key "media" in /volume1/web/wiki/feed.php on line 274

Warning: Undefined array key "media" in /volume1/web/wiki/feed.php on line 385

Warning: Undefined array key "media" in /volume1/web/wiki/feed.php on line 235

Warning: Undefined array key "media" in /volume1/web/wiki/feed.php on line 274

Warning: Undefined array key "media" in /volume1/web/wiki/feed.php on line 385

Warning: Undefined array key "media" in /volume1/web/wiki/feed.php on line 235

Warning: Undefined array key "media" in /volume1/web/wiki/feed.php on line 274

Warning: Undefined array key "media" in /volume1/web/wiki/feed.php on line 385

Warning: Undefined array key "media" in /volume1/web/wiki/feed.php on line 235

Warning: Undefined array key "media" in /volume1/web/wiki/feed.php on line 274

Warning: Undefined array key "media" in /volume1/web/wiki/feed.php on line 385

Warning: Undefined array key "media" in /volume1/web/wiki/feed.php on line 235

Warning: Undefined array key "media" in /volume1/web/wiki/feed.php on line 274

Warning: Undefined array key "media" in /volume1/web/wiki/feed.php on line 385

Warning: Undefined array key "media" in /volume1/web/wiki/feed.php on line 235

Warning: Undefined array key "media" in /volume1/web/wiki/feed.php on line 274

Warning: Undefined array key "media" in /volume1/web/wiki/feed.php on line 385

Warning: Undefined array key "media" in /volume1/web/wiki/feed.php on line 235

Warning: Undefined array key "media" in /volume1/web/wiki/feed.php on line 274

Warning: Undefined array key "media" in /volume1/web/wiki/feed.php on line 385

Warning: Undefined array key "media" in /volume1/web/wiki/feed.php on line 235

Warning: Undefined array key "media" in /volume1/web/wiki/feed.php on line 274

Warning: Undefined array key "media" in /volume1/web/wiki/feed.php on line 385

Warning: Undefined array key "media" in /volume1/web/wiki/feed.php on line 235

Warning: Undefined array key "media" in /volume1/web/wiki/feed.php on line 274

Warning: Undefined array key "media" in /volume1/web/wiki/feed.php on line 385

Warning: Undefined array key "media" in /volume1/web/wiki/feed.php on line 235

Warning: Undefined array key "media" in /volume1/web/wiki/feed.php on line 274

Warning: Undefined array key "media" in /volume1/web/wiki/feed.php on line 385
<?xml version="1.0" encoding="UTF-8"?>
<!-- generator="FeedCreator 1.8" -->
<?xml-stylesheet href="http://itclive.spdns.de/wiki/lib/exe/css.php?s=feed" type="text/css"?>
<rss version="2.0">
    <channel xmlns:g="http://base.google.com/ns/1.0">
        <title>move IT Home Base</title>
        <description></description>
        <link>http://itclive.spdns.de/wiki/</link>
        <lastBuildDate>Sun, 05 Apr 2026 23:26:19 +0000</lastBuildDate>
        <generator>FeedCreator 1.8</generator>
        <image>
            <url>http://itclive.spdns.de/wiki/lib/tpl/peanutbutter2/images/favicon.ico</url>
            <title>move IT Home Base</title>
            <link>http://itclive.spdns.de/wiki/</link>
        </image>
        <item>
            <title>Texture Dropper</title>
            <link>http://itclive.spdns.de/wiki/archiv/opensim/downloads/scripts/texture_dropper?do=revisions&amp;rev=1575021524</link>
            <description>
&lt;h2 class=&quot;sectionedit1&quot; id=&quot;texture_dropper&quot;&gt;Texture Dropper&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;// **** Texture Dropper Screen v1.11, by Mircea Kitsune &amp;amp; Sm0key ****

// -------- Settings: --------
// Modify these to adjust the properties of your screen. Unless a specific value is required, use TRUE or FALSE.

integer face = 0; //Primitive face to be used as screen.
integer text = 2; //0 means no text, 1 displays lock status, 2 displays lock status and image + creator names. Selecting 2 clears the image between script restarts.
integer notices = TRUE; //Echo information such as locking / unlocking of the screen and error messages in-world.

integer lockdefault = FALSE; //Set to TRUE if the screen is to be locked by default. Relevant in the case of script restarts and when using the &amp;quot;clear&amp;quot; command.
integer lockonpost = FALSE; //If TRUE the screen is locked once someone posts the first picture in it, useful for &amp;#039;find and claim&amp;#039; screens.
    integer creatorlock = TRUE; //When lockonpost is also TRUE, this allows the creator of the displayed image to lock / unlock or clear the screen.

string screenname = &amp;quot;screen&amp;quot;; //The name which best describes what your object is, used for info and text display (eg: screen, painting, monitor).
string sound = &amp;quot;&amp;quot;; //A sound to be played each time a new image is posted. Leave this string empty to disable sounds.
    float soundvol = 1; //Volume of the sound specified above, can be anything between 0 and 1.

// -------- Script: --------
// Modify anything below if you are a scripter and want to change something else in the script.

string ScriptName;
string InvName;
string InvCreator;
string Toucher;

string Blank = &amp;quot;5748decc-f629-461c-9a36-a35a221fe21f&amp;quot;; //UUID of the blank texture.
integer CmdChan = 9945; //System channel for llDialog.

default
{
    state_entry()
    {
        ScriptName = llGetScriptName();
        llPreloadSound(sound);
        if(text == 2) //Set texture to blank when names are used to avoid images with no names between script restarts.
        {
            llSetTexture(Blank, face);
            llPlaySound(sound, soundvol);
        }
        else if(text != 1 | text != 2)
        {
            llSetText(&amp;quot;&amp;quot;, &amp;lt;0,0,0&amp;gt;, 0);
        }
       
        if(lockdefault == TRUE)
        {
            state locked;
        }
        else
        {
            state unlocked;
        }
    }
}

state locked
{
    state_entry()
    {
        llAllowInventoryDrop(0);
        llListen(CmdChan, &amp;quot;&amp;quot;, NULL_KEY, &amp;quot;&amp;quot; );
        if(notices == 1)
        {
            llSay(0, &amp;quot;The &amp;quot; + screenname + &amp;quot; is now locked.&amp;quot;);
        }
       
        if(text == 2 &amp;amp; InvName != &amp;quot;&amp;quot;)
        {
            llSetText(&amp;quot;[&amp;quot; + screenname + &amp;quot; locked] - &amp;quot; + InvName + &amp;quot; by &amp;quot; + InvCreator, &amp;lt;1,0.5,0.5&amp;gt;, 1);
        }
        else if(text == 1 | text == 2 &amp;amp; InvName == &amp;quot;&amp;quot;)
        {
            llSetText(&amp;quot;[&amp;quot; + screenname + &amp;quot; locked]&amp;quot;, &amp;lt;1,0.5,0.5&amp;gt;, 1);
        }
    }
   
    touch_start(integer avatar)
    {
        Toucher = llDetectedKey(0);
        llSetTimerEvent(15);
        if (Toucher == llGetOwner())
        {
            llDialog(llDetectedKey(0) , &amp;quot;You are the owner of this screen. What do you wish to do?&amp;quot;, [&amp;quot;unlock&amp;quot;, &amp;quot;clear&amp;quot;], CmdChan);
        }
        else if(lockonpost == TRUE &amp;amp; creatorlock == TRUE &amp;amp; llKey2Name(Toucher) == InvCreator)
        {
            llDialog(llDetectedKey(0) , &amp;quot;You have been identified as the creator of the currently posted image. What do you wish to do?&amp;quot;, [&amp;quot;unlock&amp;quot;, &amp;quot;clear&amp;quot;], CmdChan);
        }
        else
        {
            llSay(0, &amp;quot;The &amp;quot; + screenname + &amp;quot; is locked. The owner must first unlock it before you can display new pictures.&amp;quot;);
        }
    }
   
    listen(integer channel, string name, key id, string message)
    {
        if(Toucher == llGetOwner() | lockonpost == TRUE &amp;amp; creatorlock == TRUE &amp;amp; llKey2Name(Toucher) == InvCreator)
        {
            Toucher = &amp;quot;&amp;quot;; //Protection so if an owner was the last to touch the object not anyone is able to manually chat an owner-only command on the channel.
            if(llToLower(message) == &amp;quot;unlock&amp;quot;)
            {
                state unlocked;
            }
            if(llToLower(message) == &amp;quot;clear&amp;quot;)
            {
                llSetTexture(Blank, face);
                llPlaySound(sound, soundvol);
                InvName = &amp;quot;&amp;quot;;
                InvCreator = &amp;quot;&amp;quot;;
                if(lockdefault == TRUE)
                {
                    llSetText(&amp;quot;[&amp;quot; + screenname + &amp;quot; locked]&amp;quot;, &amp;lt;1,0.5,0.5&amp;gt;, 1);
                }
                else
                {
                    state unlocked;
                }
            }               
        }
    }
   
    timer()
    {
        Toucher = &amp;quot;&amp;quot;; //Further protection so if an owner ignores the dialog the screen does not remain vulnerable for anyone to chat an owner-only command to.
        llSetTimerEvent(0);
    }
}

state unlocked
{
    state_entry()
    {
        llAllowInventoryDrop(1);
        llListen(CmdChan, &amp;quot;&amp;quot;, NULL_KEY, &amp;quot;&amp;quot; );
        if(notices == 1)
        {
            llSay(0, &amp;quot;The &amp;quot; + screenname + &amp;quot; is now unlocked.&amp;quot;);
        }
       
        if(text == 2 &amp;amp; InvName != &amp;quot;&amp;quot;)
        {
            llSetText(&amp;quot;[&amp;quot; + screenname + &amp;quot; unlocked] - &amp;quot; + InvName + &amp;quot; by &amp;quot; + InvCreator, &amp;lt;0.5,1,0.5&amp;gt;, 1);
        }
        else if(text == 1 | text == 2 &amp;amp; InvName == &amp;quot;&amp;quot;)
        {
            llSetText(&amp;quot;[&amp;quot; + screenname + &amp;quot; unlocked]&amp;quot;, &amp;lt;0.5,1,0.5&amp;gt;, 1);
        }
    }
   
    changed(integer mask)
    {
        if(mask &amp;amp; (CHANGED_ALLOWED_DROP | CHANGED_INVENTORY))
        {
            if(llGetInventoryNumber(0)) //Texture dropped
            {
                InvName = llGetInventoryName(INVENTORY_TEXTURE, 0);
                key InvKey = llGetInventoryKey(InvName);
                InvCreator = llKey2Name(llGetInventoryCreator(InvName));
                llRemoveInventory(InvName);
                llSetTexture(InvKey, face);
                llPlaySound(sound, soundvol);
                if(lockonpost == TRUE)
                {
                    state locked;
                }
                else if(text == 2)
                {
                    llSetText(&amp;quot;[&amp;quot; + screenname + &amp;quot; unlocked] - &amp;quot; + InvName + &amp;quot; by &amp;quot; + InvCreator, &amp;lt;0.5,1,0.5&amp;gt;, 1);
                }
            }
            else //Something else dropped
            {
                integer Items = llGetInventoryNumber(-1);
                do
                {
                    string InvName = llGetInventoryName(INVENTORY_ALL, --Items);
                    if (InvName != ScriptName &amp;amp; InvName != sound)
                    {
                        llRemoveInventory(InvName);
                        if(notices == 1)
                        {
                            llSay(0, &amp;quot;Error - Only textures may be dropped inside the &amp;quot; + screenname + &amp;quot;.&amp;quot;);
                        }
                    }
                }
                while(Items);
            }
        }
    }
   
    touch_start(integer avatar)
    {
        Toucher = llDetectedKey(0);
        llSetTimerEvent(15);
        if (Toucher == llGetOwner())
        {
            llDialog(llDetectedKey(0) , &amp;quot;You are the owner of this screen. What do you wish to do?&amp;quot;, [&amp;quot;lock&amp;quot;, &amp;quot;clear&amp;quot;], CmdChan);
        }
        else if(lockonpost == TRUE &amp;amp; creatorlock == TRUE &amp;amp; llKey2Name(Toucher) == InvCreator)
        {
            llDialog(llDetectedKey(0) , &amp;quot;You have been identified as the creator of the currently posted image. What do you wish to do?&amp;quot;, [&amp;quot;lock&amp;quot;, &amp;quot;clear&amp;quot;], CmdChan);
        }
        else
        {
            llSay(0, &amp;quot;The &amp;quot; + screenname + &amp;quot; is unlocked. Control + drag textures onto it to display them.&amp;quot;);
        }
    }
   
    listen(integer channel, string name, key id, string message)
    {
        if(Toucher == llGetOwner() | lockonpost == TRUE &amp;amp; creatorlock == TRUE &amp;amp; llKey2Name(Toucher) == InvCreator)
        {
            Toucher = &amp;quot;&amp;quot;; //Protection so if an owner was the last to touch the object not anyone is able to manually chat an owner-only command on the channel.
            if(llToLower(message) == &amp;quot;lock&amp;quot;)
            {
                state locked;
            }
            if(llToLower(message) == &amp;quot;clear&amp;quot;)
            {
                llSetTexture(Blank, face);
                llPlaySound(sound, soundvol);
                InvName = &amp;quot;&amp;quot;;
                InvCreator = &amp;quot;&amp;quot;;
                if(lockdefault == TRUE)
                {
                    state locked;
                }
                else
                {
                    llSetText(&amp;quot;[&amp;quot; + screenname + &amp;quot; unlocked]&amp;quot;, &amp;lt;0.5,1,0.5&amp;gt;, 1);
                }
            }               
        }
    }
   
    timer()
    {
        Toucher = &amp;quot;&amp;quot;; //Further protection so if an owner ignores the dialog the screen does not remain vulnerable for anyone to chat an owner-only command to.
        llSetTimerEvent(0);
    }
}&lt;/pre&gt;

&lt;/div&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
        <category>archiv:opensim:downloads:scripts</category>
            <pubDate>Fri, 29 Nov 2019 10:58:44 +0000</pubDate>
        </item>
        <item>
            <title>Grafitti Board</title>
            <link>http://itclive.spdns.de/wiki/archiv/opensim/downloads/scripts/grafitti_board?do=revisions&amp;rev=1575021521</link>
            <description>
&lt;h2 class=&quot;sectionedit1&quot; id=&quot;grafitti_board&quot;&gt;Grafitti Board&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Zeigt einen Text auf einem Prim der im Chat eingegeben wird.
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;// Grafitti board 0.0.2 for OpenSim
// By Justin Clark-Casey (justincc)
// http://justincc.wordpress.com

// This script is available under the BSD License

string text = &amp;quot;&amp;quot;;

integer LISTENING_CHANNEL = 43;

// XXX Only putting this here as well to get around OpenSim&amp;#039;s int -&amp;gt; string casting oddness
string LISTENING_CHANNEL_STRING = &amp;quot;43&amp;quot;;

// FIXME: Should be dynamic!
integer CHARS_WIDTH = 42;

// Add some additional graffiti
addGraffiti(string message)
{
while (llStringLength(message) &amp;gt; CHARS_WIDTH)
{
text += &amp;quot;\n\n&amp;quot; + llGetSubString(message, 0, CHARS_WIDTH - 1);
message = llDeleteSubString(message, 0, CHARS_WIDTH - 1);
}

text += &amp;quot;\n\n&amp;quot; + message;
}

// Clear the existing graffiti
clearGraffiti()
{
text = &amp;quot;&amp;quot;;
}

// Actually fires the graffiti out to the dynamic texture module
draw()
{
//llSay(0, text);
string drawList = &amp;quot;PenColour BLACK; MoveTo 40,220; FontSize 32; Text &amp;quot; + text + &amp;quot;;&amp;quot;;

osSetDynamicTextureData(&amp;quot;&amp;quot;, &amp;quot;vector&amp;quot;, drawList, &amp;quot;1024&amp;quot;, 0);
}

default
{
state_entry()
{
llSetText(
&amp;quot;Say /&amp;quot; + LISTENING_CHANNEL_STRING + &amp;quot; &amp;lt;message&amp;gt; to add text.&amp;quot;
+ &amp;quot; Say /&amp;quot; + LISTENING_CHANNEL_STRING
+ &amp;quot; !clear to clear board&amp;quot;,
&amp;lt;0.0, 1.0, 0.0&amp;gt;, 1.0);

llListen(LISTENING_CHANNEL, &amp;quot;&amp;quot;, NULL_KEY, &amp;quot;&amp;quot;);

addGraffiti(&amp;quot;justincc&amp;#039;s graffiti board v0.0.2&amp;quot;);
addGraffiti(&amp;quot;Now with primitive word wrap!&amp;quot;);
draw();
}

listen(integer channel, string name, key id, string message)
{
if (message == &amp;quot;!clear&amp;quot;)
{
clearGraffiti();
}
else
{
addGraffiti(message);
}

draw();
}
}&lt;/pre&gt;

&lt;/div&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
        <category>archiv:opensim:downloads:scripts</category>
            <pubDate>Fri, 29 Nov 2019 10:58:41 +0000</pubDate>
        </item>
        <item>
            <title>Message Board</title>
            <link>http://itclive.spdns.de/wiki/archiv/opensim/downloads/scripts/message_board?do=revisions&amp;rev=1575021521</link>
            <description>
&lt;h2 class=&quot;sectionedit1&quot; id=&quot;message_board&quot;&gt;Message Board&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;default
{
    string title = &amp;quot;Aktuelle Termine&amp;quot;;
    string subtitle = &amp;quot;September 2008&amp;quot;;
    string text = &amp;quot;&amp;quot;;
    string draw = &amp;quot;&amp;quot;;
 
    state_entry()
    {
        llListen(42, &amp;quot;&amp;quot;, llGetOwner(), &amp;quot;&amp;quot;);
        llListen(43, &amp;quot;&amp;quot;, llGetOwner(), &amp;quot;&amp;quot;);
        llListen(44, &amp;quot;&amp;quot;, llGetOwner(), &amp;quot;&amp;quot;);
    }
 
    listen( integer channel, string name, key id, string message )
    {
        llOwnerSay(&amp;quot;Chan: &amp;quot; + channel + &amp;quot;, Msg: &amp;quot; + message);
        if (channel == 44) {
            title = message;
        }        
        if (channel == 43) {
            text = &amp;quot;&amp;quot;;
            redoBoard();
        }
        if (channel == 42) {
            text += message + &amp;quot;\n&amp;quot;;
            redoBoard();
        }
    }
 
    void redoBoard()
    {
        resetText();
        drawTitle(title);
        drawSubTitle(subtitle);
        drawText(text);
        commitText();
    }
 
    void drawTitle(string s)
    {
        draw += &amp;quot;MoveTo 40,80; PenColour RED; FontSize 48; Text &amp;quot; + s + &amp;quot;;&amp;quot;;
    }
 
    void drawSubTitle(string s)
    {
        draw += &amp;quot;MoveTo 160,160; FontSize 32; Text &amp;quot; + s + &amp;quot;;&amp;quot;;
    }
 
    void drawText(string s)
    {
        draw += &amp;quot;PenColour BLACK; MoveTo 40,220; FontSize 32; Text &amp;quot; + text + &amp;quot;;&amp;quot;;
    }
 
    void resetText()
    {
        draw = &amp;quot;&amp;quot;;
    }
 
    void commitText()
    {
         osSetDynamicTextureData(&amp;quot;&amp;quot;, &amp;quot;vector&amp;quot;, draw, &amp;quot;1024&amp;quot;, 0);
    }
}&lt;/pre&gt;

&lt;/div&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
        <category>archiv:opensim:downloads:scripts</category>
            <pubDate>Fri, 29 Nov 2019 10:58:41 +0000</pubDate>
        </item>
        <item>
            <title>Pose</title>
            <link>http://itclive.spdns.de/wiki/archiv/opensim/downloads/scripts/pose?do=revisions&amp;rev=1575021522</link>
            <description>
&lt;h2 class=&quot;sectionedit1&quot; id=&quot;pose&quot;&gt;Pose&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;// The most basic of pose scripts

// change to the name of animation contained within your sittable object
string pose = &amp;quot;tpose2&amp;quot;;

// change to x,y,z offset of object center where you want to appear (never all 0)
vector target = &amp;lt;0.0, 0.0, 1.5&amp;gt;;

// optional sit text to appear over object
string text = &amp;quot;sit&amp;quot;;

default {
    state_entry()
    {
        llSitTarget(target, ZERO_ROTATION);
        llSetSitText(text);
        llSetText(text,&amp;lt;1.0,0.0,0.0&amp;gt;,1.0);
        llSetAlpha(1.0, ALL_SIDES);
    }

    changed(integer change)
    {
        if (change &amp;amp; CHANGED_LINK)
        {
            if (llAvatarOnSitTarget() != NULL_KEY)
            {
                llRequestPermissions(llAvatarOnSitTarget(), PERMISSION_TRIGGER_ANIMATION);
                llStopAnimation(&amp;quot;1a5fe8ac-a804-8a5d-7cbd-56bd83184568&amp;quot;);
                llStartAnimation(pose);
                llSetText(&amp;quot;&amp;quot;,&amp;lt;1.0,0.0,0.0&amp;gt;,1.0);
                llSetAlpha(0, ALL_SIDES);
            }
            else
            {
                llStopAnimation(pose);
                llSetText(text,&amp;lt;1.0,0.0,0.0&amp;gt;,1.0);
                llSetAlpha(1.0, ALL_SIDES);
            }
        }
    }
}&lt;/pre&gt;

&lt;/div&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
        <category>archiv:opensim:downloads:scripts</category>
            <pubDate>Fri, 29 Nov 2019 10:58:42 +0000</pubDate>
        </item>
        <item>
            <title>Hover Text</title>
            <link>http://itclive.spdns.de/wiki/archiv/opensim/downloads/scripts/hover_text?do=revisions&amp;rev=1575021521</link>
            <description>
&lt;h2 class=&quot;sectionedit1&quot; id=&quot;hover_text&quot;&gt;Hover Text&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;//Set Text

default {
    state_entry() {
        llSetText(&amp;quot;Your text here&amp;quot;,&amp;lt;1,1,1&amp;gt;,1);
    }
}&lt;/pre&gt;

&lt;/div&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
        <category>archiv:opensim:downloads:scripts</category>
            <pubDate>Fri, 29 Nov 2019 10:58:41 +0000</pubDate>
        </item>
        <item>
            <title>Scripts</title>
            <link>http://itclive.spdns.de/wiki/archiv/opensim/downloads/scripts?do=revisions&amp;rev=1575021526</link>
            <description>
&lt;h2 class=&quot;sectionedit1&quot; id=&quot;scripts&quot;&gt;Scripts&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Mit Scripts ist es möglich Funktionen Inworld auszuführen. Das Script wird dabei in einem Prim gespeichert, das dann die im Script programmierten Funktionen ausführen kann. So können Prims z.B. interaktiv reagieren, ständig sich wiederholende Funktionen ausführen und vieles andere mehr. So kann man z.B. mit einem Script eine Türe bauen, die sich auf anklicken öffnet und hinter einem wieder automatisch schliesst. Auf dieser Webseite haben wir exemplarisch einige Scripts zum Download zusammengefasst.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Scripts&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;scripts&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-534&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit2&quot; id=&quot;scripts_anwenden&quot;&gt;Scripts anwenden&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;
&lt;ol&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Script aussuchen&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Script-Text markieren und mit der Tastenkombination STRG-C in die Zwischenablage speichern&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; 3D-Viewer starten&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Ein Prim generieren&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Eigenschaften des Prims aufrufen und dort die Script-Funktion im Menü aufrufen&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Neues Script anlegen und den Script-Text aus der Zwischenablage mit STRG-V einfügen&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Script speichern&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Fertig !&lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Scripts anwenden&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;scripts_anwenden&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;535-932&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit3&quot; id=&quot;urheberrechte&quot;&gt;Urheberrechte&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Die Scripts sind lizenzfrei zu verwenden, stammen aus frei zugänglichen Quellen und unterliegen den Rechten der jeweiligen Autoren die diese Scripts als Open Source freigegeben haben. Wer noch zusätzliche, freie Quellen für Scripte kennt die in OpenSIM laufen, kann gerne dazu die Kommentarfunktion nutzen.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Urheberrechte&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;urheberrechte&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;933-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
        <category>archiv:opensim:downloads</category>
            <pubDate>Fri, 29 Nov 2019 10:58:46 +0000</pubDate>
        </item>
        <item>
            <title>Skype Online Status</title>
            <link>http://itclive.spdns.de/wiki/archiv/opensim/downloads/scripts/skype?do=revisions&amp;rev=1575021523</link>
            <description>
&lt;h2 class=&quot;sectionedit1&quot; id=&quot;skype_online_status&quot;&gt;Skype Online Status&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;string skype_handle = &amp;quot;PUT-SKYPE-NAME-HERE&amp;quot;;

key skype_request_id = NULL_KEY; // id of http request

showStatus(string skype_status)
{
    // build up our message
    string message = &amp;quot;Skype&amp;quot;;
    message += &amp;quot;\nName: &amp;quot; + skype_handle;
    message += &amp;quot;\nStatus: &amp;quot; + skype_status;
    
    // write out the message as hovering text
    llSetText(message, &amp;lt;.5,.5,1&amp;gt;, 1);
}
default
{
    touch_start(integer total_number)
    {
        // make sure owner has specified handle
        if(skype_handle == &amp;quot;&amp;quot;)
        {
            // send message to debugger
            llWhisper(DEBUG_CHANNEL, &amp;quot;skype_handle can not be empty.&amp;quot;);
            return;
        }
        
        // prevent extra requests happening at the same time
        if(skype_request_id != NULL_KEY) return;
        
        // make a request over the internet
        skype_request_id = llHTTPRequest(&amp;quot;http://mystatus.skype.com/&amp;quot; + skype_handle + &amp;quot;.txt&amp;quot;, [HTTP_METHOD, &amp;quot;GET&amp;quot;], &amp;quot;&amp;quot;);
        
        // set a timeout for http request
        llSetTimerEvent(5);
    }
    http_response(key request_id, integer status, list metadata, string body)
    {
        // is this a response to our request?
        if(request_id == skype_request_id) 
        {
            // show status
            showStatus(body);
            
            // change to view state
            state viewing;
        }

    }
    timer()
    {
        // didn&amp;#039;t get a response in time.
        showStatus(&amp;quot;No Response&amp;quot;);
        
        // change to view state
        state viewing;
    }
}
state viewing
{
    state_entry()
    {
        // set next timer for 3 minutes
        llSetTimerEvent(180);
    }
    timer()
    {
        state default;
    }
    state_exit()
    {
        // stop the timer
        llSetTimerEvent(0);

        // hide the text
        llSetText(&amp;quot;&amp;quot;, ZERO_VECTOR, 0);
        
        // reset the request id
        skype_request_id = NULL_KEY;
    }
}&lt;/pre&gt;

&lt;/div&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
        <category>archiv:opensim:downloads:scripts</category>
            <pubDate>Fri, 29 Nov 2019 10:58:43 +0000</pubDate>
        </item>
        <item>
            <title>Skype Online Status - Multi-User Version</title>
            <link>http://itclive.spdns.de/wiki/archiv/opensim/downloads/scripts/skype_multiuser?do=revisions&amp;rev=1575021523</link>
            <description>
&lt;h2 class=&quot;sectionedit1&quot; id=&quot;skype_online_status_-_multi-user_version&quot;&gt;Skype Online Status - Multi-User Version&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;// zwischen die Anführungszeichen Deinen Skype-Name einfügen
string skype_handle = &amp;quot;&amp;quot;;
// you are done!  no more changes!

key     notecode;
string  notecard;
integer noteline;
key skype_request_id = NULL_KEY; // id of http request

showStatus(string skype_status)
{
    // build up our message
    string message = &amp;quot;Skype&amp;quot;;
    message += &amp;quot;\nName: &amp;quot; + skype_handle;
    message += &amp;quot;\nStatus: &amp;quot; + skype_status;
    
    // write out the message as hovering text
    llSetText(message, &amp;lt;.5,.5,1&amp;gt;, 1);
}

// AMD64 ADD: readnotecard() liest eine zeile
// Im Dataserver Event wird die gewünschte Variable dann gefüllt
// Sollte einmal beim rezzen/reseten und Inventory Change durchgeführt werden
readnotecard()
{
    // Der name der NC ist egal
    notecard = llGetInventoryName(INVENTORY_NOTECARD, 0);
    // Wenn aber keine da ist, setze die Variable auch auf leer und beende das ganze
    if (notecard == &amp;quot;&amp;quot;)
    {
        skype_handle = &amp;quot;&amp;quot;;
        return;
    }
    // Lesen beginnen bei Zeile Null (anfang)
    noteline = 0;
    // Ab hier gehts im Dataserver Event weiter
    notecode = llGetNotecardLine(notecard, noteline);
}

default
{
    on_rez(integer start_param)
    {
        readnotecard();
    }
    state_entry()
    {
        llSetTimerEvent(0);
        readnotecard();
    }
    changed(integer change)
    {
        // Änderung im Inventar des Objekts
        if (change &amp;amp; CHANGED_INVENTORY)
        {
            // NC am besten neu einlesen
            readnotecard();
        }
    }
    dataserver(key queryid, string data)
    {
        if (queryid == notecode)
        {
            // Für den Fall dass die NC leer ist
            if (data != EOF) 
            {
                skype_handle = data;
            }
            else
            {
                skype_handle = &amp;quot;&amp;quot;;
            }
        }
    }
    touch_start(integer total_number)
    {
        // make sure owner has specified handle
        if(skype_handle == &amp;quot;&amp;quot;)
        {
            // send message to debugger
            llWhisper(DEBUG_CHANNEL, &amp;quot;skype_handle can not be empty.&amp;quot;);
            return;
        }
        
        // prevent extra requests happening at the same time
        if(skype_request_id != NULL_KEY) return;
        
        // make a request over the internet
        skype_request_id = llHTTPRequest(&amp;quot;http://mystatus.skype.com/&amp;quot; + skype_handle + &amp;quot;.txt&amp;quot;, [HTTP_METHOD, &amp;quot;GET&amp;quot;], &amp;quot;&amp;quot;);
        
        // set a timeout for http request
        llSetTimerEvent(5);
    }
    http_response(key request_id, integer status, list metadata, string body)
    {
        // is this a response to our request?
        if(request_id == skype_request_id) 
        {
            // show status
            showStatus(body);
            
            // change to view state
            state viewing;
        }

    }
    timer()
    {
        // Didn&amp;#039;t get a response in time.
        showStatus(&amp;quot;No Response&amp;quot;);
        
        // change to view state
        state viewing;
    }
}
state viewing
{
    state_entry()
    {
        // Set next timer for 3 minutes
        llSetTimerEvent(180);
    }
    timer()
    {
        state default;
    }
    state_exit()
    {
        // stop the timer
        llSetTimerEvent(0);

        // hide the text
        llSetText(&amp;quot;&amp;quot;, ZERO_VECTOR, 0);
        
        // reset the request id
        skype_request_id = NULL_KEY;
    }
}&lt;/pre&gt;

&lt;/div&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
        <category>archiv:opensim:downloads:scripts</category>
            <pubDate>Fri, 29 Nov 2019 10:58:43 +0000</pubDate>
        </item>
        <item>
            <title>E-Mail</title>
            <link>http://itclive.spdns.de/wiki/archiv/opensim/downloads/scripts/e-mail?do=revisions&amp;rev=1575021519</link>
            <description>
&lt;h2 class=&quot;sectionedit1&quot; id=&quot;e-mail&quot;&gt;E-Mail&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Damit dieses Script funktionieren kann muss zuvor die E-Mail Funktion in der Konfigurationsdatei opensim.ini eingeschaltet und konfiguriert werden.
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;string email_address = &amp;quot;adresse@domain.xyz&amp;quot;; // who will receive the messages
string hname = &amp;quot;User Name&amp;quot;; // name that will be displayed in hover text as receiver of mail
string date;
string name;
string sim;
default
{
    state_entry() {

        //Send an email to a normal email account
        llSetText(&amp;quot;click to send &amp;quot; + hname + &amp;quot; an email&amp;quot;,&amp;lt;1,1,1&amp;gt;,1);
        llEmail( email_address, &amp;quot;Initializing Email Module&amp;quot;, &amp;quot;[STARTUP COMPLETE]&amp;quot;);
    }

    touch_start( integer num_detected ) {
        integer i = 0;
        date = llGetDate();
        name = llDetectedName(i);
        sim = llGetRegionName();

        // Send another email, telling who touched the prim.
        do
            llEmail( email_address, &amp;quot;Prim Touched&amp;quot;, &amp;quot;I was touched by: &amp;quot; + llDetectedName(i) + &amp;quot;\nKey: &amp;quot; + (string) llDetectedKey(i) + &amp;quot;\n On the Following Date: &amp;quot; + date);
        while(++i &amp;lt; num_detected);
        llSay(0,&amp;quot;------------------------&amp;gt;&amp;quot;);
        llSay(0,&amp;quot;E-Mail sent from &amp;quot; + name + &amp;quot;@&amp;quot; + sim + &amp;quot;.DOMAIN&amp;quot;);
        llSay(0,&amp;quot;------------------------&amp;gt;&amp;quot;);
        llPlaySound(&amp;quot;Boing&amp;quot;, 1.0);
    }
}&lt;/pre&gt;

&lt;/div&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
        <category>archiv:opensim:downloads:scripts</category>
            <pubDate>Fri, 29 Nov 2019 10:58:39 +0000</pubDate>
        </item>
        <item>
            <title>Freeview Media Screen</title>
            <link>http://itclive.spdns.de/wiki/archiv/opensim/downloads/scripts/freeview_media_screen?do=revisions&amp;rev=1575021520</link>
            <description>
&lt;h2 class=&quot;sectionedit1&quot; id=&quot;freeview_media_screen&quot;&gt;Freeview Media Screen&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;//XEngine:
//FreeView 1.2 WebGuide (revision 3) - By CrystalShard Foo
//Multifunctional Picture viewer and Video control script with webguide support
//This script is distributed for free and must stay that way. 

//              *** DO NOT SELL THIS SCRIPT UNDER ANY CIRCUMSTANCE. ***

//Help for using this script can be obtained at: http://www.slguide.com/help

//Feel free to modify this script and post your improvement. Leave the credits intact but feel free to add your name at its bottom.
 
//Whats new:
//- Now using FULL_BRIGHT instead of PRIM_MATERIAL_LIGHT for the screen display
//- Added an ownership-change code to handle cases where FreeView gets deeded to group post Video Init.
//- Renamed WebGuide to TV-Guide to reflect what this thing does better.
//- Added a &amp;#039;Fix Scale&amp;#039; button to Picture mode to help against user texture-scale changes.
//- Additional minor help-tips and code improvements

//Enjoy!


//Constants
integer PICTURE_ROTATION_TIMER = 60;   //In whole seconds

integer DISPLAY_ON_SIDE = ALL_SIDES; //Change this to change where the image will be displayed

key VIDEO_DEFAULT = &amp;quot;71b8ff26-087d-5f44-285b-d38df2e11a81&amp;quot;;  //Test pattern - Used as default video texture when one is missing in parcel media
key BLANK = &amp;quot;5748decc-f629-461c-9a36-a35a221fe21f&amp;quot;; //Blank texture - Used when there are no textures to display in Picture mode
string NOTECARD = &amp;quot;bookmarks&amp;quot;;  //Used to host URL bookmarks for video streams

integer VIDEO_BRIGHT = TRUE;    //FULL_BRIGHT status for Video
integer PICTURE_BRIGHT = TRUE;  //FULL_BRIGHT status for Picture

integer REMOTE_CHANNEL = 9238742;

integer mode = 0;           //Freeview mode.
                            //Mode 0 - Power off
                            //Mode 1 - Picture viewer
                            //Mode 2 - Video

integer listenHandle = -1;      //Dialog menu listen handler
integer listenUrl = -1;         //listen handler for channel 1 for when a URL is being added
integer listenTimer = -1;       //Timer variable for removing all listeners after 2 minutes of listener inactivity
integer listenRemote = -1;      //listen handler for the remote during initial setup
integer encryption = 0;
integer numberofnotecardlines = 0;  //Stores the current number of detected notecard lines.
integer notecardline = 0;       //Current notecard line

integer loop_image = FALSE;     //Are we looping pictures with a timer? (picture mode)
integer current_texture = 0;    //Current texture number in inventory being displayed (picture mode)
integer chan;                   //llDialog listen channel
integer notecardcheck = 0;
key video_texture;              //Currently used video display texture for parcel media stream

string moviename;
string tempmoviename;
key notecardkey = NULL_KEY;
key tempuser;                   //Temp key storge variable
string tempurl;                 //Temp string storge variable

integer isGroup = TRUE;
key groupcheck = NULL_KEY;
key last_owner;
key XML_channel;

pictures()      //Change mode to Picture Viewer
{
    //Initilize variables
    
    //Change prim to Light material while coloring face 0 black to prevent light-lag generation.
    llSetPrimitiveParams([PRIM_BUMP_SHINY, DISPLAY_ON_SIDE, PRIM_SHINY_NONE, PRIM_BUMP_NONE, PRIM_COLOR, DISPLAY_ON_SIDE, &amp;lt;1,1,1&amp;gt;, 1.0, PRIM_MATERIAL, PRIM_MATERIAL_PLASTIC, PRIM_FULLBRIGHT, DISPLAY_ON_SIDE, PICTURE_BRIGHT]);

    integer check = llGetInventoryNumber(INVENTORY_TEXTURE);
     
    if(check == 0)
    {
        report(&amp;quot;No pictures found.&amp;quot;);
        llSetTexture(BLANK,DISPLAY_ON_SIDE);
        return;
    }
    else    
        if(current_texture &amp;gt; check)
            //Set to first texture if available
            current_texture = 0;
            
    display_texture(current_texture);
}

video()         //Change mode to Video
{
    //Change prim to Light material while coloring face 0 black to prevent light-lag generation.
    llSetPrimitiveParams([PRIM_BUMP_SHINY, DISPLAY_ON_SIDE, PRIM_SHINY_NONE, PRIM_BUMP_NONE, PRIM_COLOR, DISPLAY_ON_SIDE, &amp;lt;1,1,1&amp;gt;, 1.0, PRIM_MATERIAL, PRIM_MATERIAL_PLASTIC, PRIM_FULLBRIGHT, DISPLAY_ON_SIDE, VIDEO_BRIGHT, PRIM_TEXTURE, DISPLAY_ON_SIDE, &amp;quot;62dc73ca-265f-7ca0-0453-e2a6aa60bb6f&amp;quot;, llGetTextureScale(DISPLAY_ON_SIDE), llGetTextureOffset(DISPLAY_ON_SIDE), llGetTextureRot(DISPLAY_ON_SIDE)]);
    
    report(&amp;quot;Video mode&amp;quot;+moviename+&amp;quot;: Stopped&amp;quot;);
    if(finditem(NOTECARD) != -1)
        tempuser = llGetNumberOfNotecardLines(NOTECARD);
    video_texture = llList2Key(llParcelMediaQuery([PARCEL_MEDIA_COMMAND_TEXTURE]),0);
    if(video_texture == NULL_KEY)
    {
        video_texture = VIDEO_DEFAULT;
        llParcelMediaCommandList([PARCEL_MEDIA_COMMAND_TEXTURE,VIDEO_DEFAULT]);
        llSay(0,&amp;quot;No parcel media texture found. Setting texture to default: &amp;quot;+(string)VIDEO_DEFAULT);
        if(llGetLandOwnerAt(llGetPos()) != llGetOwner())
            llSay(0,&amp;quot;Error: Cannot modify parcel media settings. &amp;quot;+llGetObjectName()+&amp;quot; is not owned by parcel owner.&amp;quot;);
    }
    
    llSetTexture(video_texture,DISPLAY_ON_SIDE);
}

off()
{
    report(&amp;quot;Click to power on.&amp;quot;);
    llSetPrimitiveParams([PRIM_BUMP_SHINY, DISPLAY_ON_SIDE, PRIM_SHINY_LOW, PRIM_BUMP_NONE, PRIM_COLOR, DISPLAY_ON_SIDE, &amp;lt;0.1,0.1,0.1&amp;gt;, 1.0,PRIM_MATERIAL, PRIM_MATERIAL_PLASTIC, PRIM_FULLBRIGHT, DISPLAY_ON_SIDE, FALSE, PRIM_TEXTURE, DISPLAY_ON_SIDE, BLANK, llGetTextureScale(DISPLAY_ON_SIDE), llGetTextureOffset(DISPLAY_ON_SIDE), llGetTextureRot(DISPLAY_ON_SIDE)]);
}

integer finditem(string name)   //Finds and returns an item&amp;#039;s inventory number
{
    integer i;
    for(i=0;i&amp;lt;llGetInventoryNumber(INVENTORY_NOTECARD);i++)
        if(llGetInventoryName(INVENTORY_NOTECARD,i) == NOTECARD)
            return i;
    return -1;
}

seturl(string url, key id)  //Set parcel media URL
{
    if(mode != 2)
    {
        video();
        mode = 2;
    }
    moviename = tempmoviename;
    if(moviename)
        moviename = &amp;quot; [&amp;quot;+moviename+&amp;quot;]&amp;quot;;
    tempmoviename = &amp;quot;&amp;quot;;
    string oldurl = llList2String(llParcelMediaQuery([PARCEL_MEDIA_COMMAND_URL]),0);
    if(oldurl != &amp;quot;&amp;quot;)
        llOwnerSay(&amp;quot;Setting new media URL. The old URL was: &amp;quot;+oldurl);

    llParcelMediaCommandList([PARCEL_MEDIA_COMMAND_URL,url]);
    if(id!=NULL_KEY)
        menu(id);
    else
    {
        report(&amp;quot;Video mode&amp;quot;+moviename+&amp;quot;: Playing&amp;quot;);
        llParcelMediaCommandList([PARCEL_MEDIA_COMMAND_PLAY]);
    }
       
    if(isGroup)
        llSay(0,&amp;quot;New media URL set.&amp;quot;);
    else
        llOwnerSay(&amp;quot;New media URL set: &amp;quot;+url);
}

string mediatype(string ext)    //Returns a string stating the filetype of a file based on file extension
{
    ext = llToLower(ext);
    if(ext == &amp;quot;swf&amp;quot;)
        return &amp;quot;Flash&amp;quot;;
    if(ext == &amp;quot;mov&amp;quot; || ext == &amp;quot;avi&amp;quot; || ext == &amp;quot;mpg&amp;quot; || ext == &amp;quot;mpeg&amp;quot; || ext == &amp;quot;smil&amp;quot;)
        return &amp;quot;Video&amp;quot;;
    if(ext == &amp;quot;jpg&amp;quot; || ext == &amp;quot;mpeg&amp;quot; || ext == &amp;quot;gif&amp;quot; || ext == &amp;quot;png&amp;quot; || ext == &amp;quot;pict&amp;quot; || ext == &amp;quot;tga&amp;quot; || ext == &amp;quot;tiff&amp;quot; || ext == &amp;quot;sgi&amp;quot; || ext == &amp;quot;bmp&amp;quot;)
        return &amp;quot;Image&amp;quot;;
    if(ext == &amp;quot;txt&amp;quot;)
        return &amp;quot;Text&amp;quot;;
    if(ext == &amp;quot;mp3&amp;quot; || ext == &amp;quot;wav&amp;quot;)
        return &amp;quot;Audio&amp;quot;;
    return &amp;quot;Unknown&amp;quot;;
}

browse(key id)      //Image browser function for picture viewer mode
{
    integer check = llGetInventoryNumber(INVENTORY_TEXTURE);
    string header;
    if(check &amp;gt; 0)
        header = &amp;quot;(&amp;quot;+(string)(current_texture+1)+&amp;quot;/&amp;quot;+(string)check+&amp;quot;) &amp;quot;+llGetInventoryName(INVENTORY_TEXTURE,current_texture);
    else
        header = &amp;quot;No pictures found.&amp;quot;;
    llDialog(id,&amp;quot;** Monitor Control **\n Picture Viewer mode\n- Image browser\n- &amp;quot;+header,[&amp;quot;Back&amp;quot;,&amp;quot;Next&amp;quot;,&amp;quot;Menu&amp;quot;],chan);
    extendtimer();
}

report(string str)
{
    llSetObjectDesc(str);
}

extendtimer()       //Add another 2 minute to the Listen Removal timer (use when a Listen event is triggered)
{
    if(listenHandle == -1)
        listenHandle = llListen(chan,&amp;quot;&amp;quot;,&amp;quot;&amp;quot;,&amp;quot;&amp;quot;);
    listenTimer = (integer)llGetTime() + 120;
    if(loop_image == FALSE)
        llSetTimerEvent(45);
}

config(key id)      //Configuration menu
{
    extendtimer();
    llDialog(id,&amp;quot;Current media URL:\n&amp;quot;+llList2String(llParcelMediaQuery([PARCEL_MEDIA_COMMAND_URL]),0)+&amp;quot;\nTip: If the picture is abit off, try &amp;#039;Align ON&amp;#039;&amp;quot;,[&amp;quot;Set URL&amp;quot;,&amp;quot;Align ON&amp;quot;,&amp;quot;Align OFF&amp;quot;,&amp;quot;Menu&amp;quot;,&amp;quot;Set Remote&amp;quot;],chan);
}

tell_remote(string str)
{
    llShout(REMOTE_CHANNEL,llXorBase64Strings(llStringToBase64((string)encryption + str), llStringToBase64((string)encryption)));
}

menu(key id)        //Dialog menus for all 3 modes
{
    list buttons = [];
    string title = &amp;quot;** Monitor control **&amp;quot;;
    
    extendtimer();

    if(mode != 0)
    {
        if(mode == 1)       //Pictures menu
        {
            title+=&amp;quot;\n  Picture Viewer mode&amp;quot;;
            buttons+=[&amp;quot;Browse&amp;quot;];
            if(loop_image == FALSE)
                buttons+=[&amp;quot;Loop&amp;quot;];
            else
                buttons+=[&amp;quot;Unloop&amp;quot;];
            buttons+=[&amp;quot;Video&amp;quot;,&amp;quot;Power off&amp;quot;,&amp;quot;Help&amp;quot;,&amp;quot;Fix scale&amp;quot;];
        }
        else                //Video menu
        {
            title+=&amp;quot;\n Video display mode\n&amp;quot;+moviename+&amp;quot;\nTip:\nClick &amp;#039;TV Guide&amp;#039; to view the Online bookmarks.&amp;quot;;
            buttons+=[&amp;quot;Pictures&amp;quot;,&amp;quot;Configure&amp;quot;,&amp;quot;Power off&amp;quot;,&amp;quot;Loop&amp;quot;,&amp;quot;Unload&amp;quot;,&amp;quot;Help&amp;quot;,&amp;quot;Play&amp;quot;,&amp;quot;Stop&amp;quot;,&amp;quot;Pause&amp;quot;,&amp;quot;TV Guide&amp;quot;,&amp;quot;Bookmarks&amp;quot;,&amp;quot;Set URL&amp;quot;];
        }
    }
    else
        buttons += [&amp;quot;Pictures&amp;quot;,&amp;quot;Video&amp;quot;,&amp;quot;Help&amp;quot;];
    
    llDialog(id,title,buttons,chan);
}

display_texture(integer check)  //Display texture and set name in description (picture mode)
{                               //&amp;quot;Check&amp;quot; holds the number of textures in contents. The function uses &amp;quot;current_texture&amp;quot; to display.
    string name = llGetInventoryName(INVENTORY_TEXTURE,current_texture);
    llSetTexture(name,DISPLAY_ON_SIDE);
    report(&amp;quot;Showing picture: &amp;quot;+name+&amp;quot; (&amp;quot;+(string)(current_texture+1)+&amp;quot;/&amp;quot;+(string)check+&amp;quot;)&amp;quot;);
}
    

next()  //Change to next texture (picture mode)
{       //This function is used twice - by the menu and timer. Therefor, it is a dedicated function.
    current_texture++;
    integer check = llGetInventoryNumber(INVENTORY_TEXTURE);
    if(check == 0)
    {
        llSetTexture(BLANK,DISPLAY_ON_SIDE);
        current_texture = 0;
        report(&amp;quot;No pictures found.&amp;quot;);
        return;
    }
    if(check == current_texture)
        current_texture = 0;
    
    display_texture(check);
    return;
}

default
{
    state_entry()
    {
        chan = (integer)llFrand(1000) + 1000;   //Pick a random listen channel for the listener
        if(PICTURE_ROTATION_TIMER &amp;lt;= 0)         //Ensure the value is no less or equal 0
            PICTURE_ROTATION_TIMER = 1;
        llListenRemove(listenHandle);
        listenHandle = -1;
        last_owner = llGetOwner();
        groupcheck = llRequestAgentData(llGetOwner(),DATA_NAME);
        off();
        llOpenRemoteDataChannel();
    }
    
    on_rez(integer i)
    {
        llResetScript();
    }

    touch_start(integer total_number)
    {
        //-------------------------------------------------------------------------------
        //Listen only to owner or group member. Edit this code to change access controls.
        if(llDetectedKey(0) != llGetOwner() &amp;amp;&amp;amp; llDetectedGroup(0) == FALSE)
            return;
        //-------------------------------------------------------------------------------

        if(llGetOwnerKey(llGetKey()) != last_owner)  //Sense if object has been deeded to group for Web Guide function
        {
            isGroup = TRUE;
            last_owner = llGetOwner();
            groupcheck = llRequestAgentData(llGetOwner(),DATA_NAME);
            
            if(mode == 2)
            {
                llSay(0,&amp;quot;Detected change in ownership. Attempting to obtain current parcel media texture...&amp;quot;);
                video();
            }
        }

        menu(llDetectedKey(0));
    }
    
    changed(integer change)
    {
        if(change == CHANGED_INVENTORY) //If inventory change
            if(mode == 1)   //If picture mode
            {
                integer check = llGetInventoryNumber(INVENTORY_TEXTURE);
                if(check != 0)
                {
                    current_texture = 0;
                    display_texture(check);
                }
                else
                {
                    llSetTexture(BLANK,DISPLAY_ON_SIDE);
                    report(&amp;quot;No pictures found.&amp;quot;);
                }
            }
            else
                if(mode == 2)   //If video mode
                    if(finditem(NOTECARD) != -1)    //And bookmarks notecard present
                        if(notecardkey != llGetInventoryKey(NOTECARD))
                            tempuser = llGetNumberOfNotecardLines(NOTECARD);    //Reload number of lines
    }
    
    listen(integer channel, string name, key id, string message)
    {
        if(message == &amp;quot;Pictures&amp;quot;)
        {
            if(mode == 2)
                llParcelMediaCommandList([PARCEL_MEDIA_COMMAND_STOP]);
            pictures();
            mode = 1;
            menu(id);
            return;
        }
        if(message == &amp;quot;Video&amp;quot;)
        {
            video();
            mode = 2;
            menu(id);
            return;
        }
        if(message == &amp;quot;Power off&amp;quot;)
        {
            if(mode == 2)
                llParcelMediaCommandList([PARCEL_MEDIA_COMMAND_UNLOAD]);
            off();
            mode = 0;
            return;
        }
        if(message == &amp;quot;Help&amp;quot;)
        {
            llSay(0,&amp;quot;Help documentation is available at: http://www.slguide.com/help&amp;quot;);
            if(isGroup)
            {
                if(id == NULL_KEY)
                {
                    llSay(0,&amp;quot;FreeView cannot load help pages while set to group without the remote.&amp;quot;);
                    llSay(0,&amp;quot;For further assistance, please consult: http://slguide.com/help&amp;quot;);
                }
                else
                    tell_remote(&amp;quot;HELP&amp;quot;+(string)id+(string)XML_channel);
            }
            else
                llLoadURL(id,&amp;quot;Help pages for FreeView&amp;quot;,&amp;quot;http://www.slguide.com?c=&amp;quot;+(string)XML_channel+&amp;quot;&amp;amp;help=1&amp;quot;);
        }
        if(mode == 1)
        {
            if(message == &amp;quot;Browse&amp;quot;)
            {
                loop_image = FALSE;
                browse(id);
                return;
            }
            if(message == &amp;quot;Next&amp;quot;)
            {
                extendtimer();
                next();
                browse(id);
            }
            if(message == &amp;quot;Back&amp;quot;)
            {
                extendtimer();
                current_texture--;
                integer check = llGetInventoryNumber(INVENTORY_TEXTURE);
                if(check == 0)
                {
                    llSetTexture(BLANK,DISPLAY_ON_SIDE);
                    current_texture = 0;
                    report(&amp;quot;No pictures found.&amp;quot;);
                    return;
                }
                if(current_texture &amp;lt; 0)
                    current_texture = check - 1;
                
                display_texture(check);
                
                browse(id);
                return;
            }
            if(message == &amp;quot;Menu&amp;quot;)
            {
                menu(id);
                return;
            }
            if(message == &amp;quot;Loop&amp;quot;)
            {
                llSetTimerEvent(PICTURE_ROTATION_TIMER);
                loop_image = TRUE;
                llOwnerSay(&amp;quot;Picture will change every &amp;quot;+(string)PICTURE_ROTATION_TIMER+&amp;quot; seconds.&amp;quot;);
                return;
            }
            if(message == &amp;quot;Unloop&amp;quot;)
            {
                loop_image = FALSE;
                llOwnerSay(&amp;quot;Picture loop disabled.&amp;quot;);
                return;
            }
            if(message == &amp;quot;Fix scale&amp;quot;)
            {
                llSay(0,&amp;quot;Setting display texture to 1,1 repeats and 0,0 offset.&amp;quot;);
                llScaleTexture(1, 1, DISPLAY_ON_SIDE);
                llOffsetTexture(0, 0, DISPLAY_ON_SIDE);
                return;
            }
        }
        if(mode == 2)
        {
            if(channel == REMOTE_CHANNEL)
            {
                if(encryption == 0)
                    encryption = (integer)message;
                llListenRemove(listenRemote);
                listenRemote = -1;
                llSay(0,&amp;quot;Remote configured (&amp;quot;+(string)id+&amp;quot;)&amp;quot;);
            }
                
            if(message == &amp;quot;TV Guide&amp;quot;)
            {
                if(isGroup)
                {
                    if(!encryption)
                    {
                        llSay(0,&amp;quot;** Error - This FreeView object has been deeded to group. You must use a Remote control to open the TV Guide.&amp;quot;);
                        llSay(0,&amp;quot;You can set up the remote control from the Video -&amp;gt; Configuration menu. Please refer to the notecard for further assistance.&amp;quot;);
                        return;
                    }
                    tell_remote((string)id+(string)XML_channel+(string)llGetOwner());
                }
                else
                    llLoadURL(id, &amp;quot;Come to the Guide to Start Your Viewer Playing!&amp;quot;, &amp;quot;http://slguide.com/index.php?v=&amp;quot; + (string)llGetKey() + &amp;quot;&amp;amp;c=&amp;quot; + (string)XML_channel + &amp;quot;&amp;amp;o=&amp;quot; + (string)llGetOwner() + &amp;quot;&amp;amp;&amp;quot;);
                return;
            }

            string header = &amp;quot;Video mode&amp;quot;+moviename+&amp;quot;: &amp;quot;;
            
            if(message == &amp;quot;&amp;lt;&amp;lt; Prev&amp;quot;)
            {
                notecardline--;
                if(notecardline &amp;lt; 0)
                    notecardline = numberofnotecardlines - 1;
                tempuser = id;
                llGetNotecardLine(NOTECARD,notecardline);
                return;
            }
            if(message == &amp;quot;Next &amp;gt;&amp;gt;&amp;quot;)
            {
                notecardline++;
                if(notecardline &amp;gt;= numberofnotecardlines)
                    notecardline = 0;
                tempuser = id;
                llGetNotecardLine(NOTECARD,notecardline);
                return;
            }
            if(message == &amp;quot;Use&amp;quot;)
            {
                if(tempurl == &amp;quot;** No URL specified! **&amp;quot;)
                    tempurl = &amp;quot;&amp;quot;;
                seturl(tempurl,id);
                return;
            }
                    
            if(message == &amp;quot;Menu&amp;quot;)
            {
                menu(id);
                return;
            }
            if(message == &amp;quot;Configure&amp;quot;)
            {
                config(id);
                return;
            }
            if(message == &amp;quot;Bookmarks&amp;quot;)
            {
                if(notecardcheck != -1)
                {
                    llDialog(id,&amp;quot;Error: No valid bookmark data found in notecard &amp;#039;&amp;quot;+NOTECARD+&amp;quot;&amp;#039;.&amp;quot;,[&amp;quot;Menu&amp;quot;],chan);
                    return;
                }
                if(finditem(NOTECARD) != -1)                
                {
                    tempuser = id;
                    if(numberofnotecardlines &amp;lt; notecardline)
                        notecardline = 0;
                    llGetNotecardLine(NOTECARD,notecardline);
                }
                else
                    llDialog(id,&amp;quot;Error: No notecard named &amp;quot;+NOTECARD+&amp;quot; found in contents.&amp;quot;,[&amp;quot;Menu&amp;quot;],chan);
                return;
            }
            
            if(llGetLandOwnerAt(llGetPos()) != llGetOwner())    //If we do not have permissions to actually do the following functions
            {
                llSay(0,&amp;quot;Error: Cannot modify parcel media settings. &amp;quot;+llGetObjectName()+&amp;quot; is not owned by parcel owner.&amp;quot;);
                menu(id);
                return; //Abort
            }
            
            if(listenUrl != -1 &amp;amp;&amp;amp; channel == 1) //Incoming data from &amp;quot;Set URL&amp;quot; command (user spoke on channel 1)
            {
                llListenRemove(listenUrl);
                listenUrl = -1;
                tempmoviename = &amp;quot;&amp;quot;;
                seturl(message,id);
            }
            if(message == &amp;quot;Play&amp;quot;)
            {
                report(header+&amp;quot;Playing&amp;quot;);
                llParcelMediaCommandList([PARCEL_MEDIA_COMMAND_PLAY]);
                return;
            }
            if(message == &amp;quot;Stop&amp;quot;)
            {
                report(header+&amp;quot;Stopped&amp;quot;);
                llParcelMediaCommandList([PARCEL_MEDIA_COMMAND_STOP]);
                return;
            }
            if(message == &amp;quot;Pause&amp;quot;)
            {
                report(header+&amp;quot;Paused&amp;quot;);
                llParcelMediaCommandList([PARCEL_MEDIA_COMMAND_PAUSE]);
                return;
            }
            if(message == &amp;quot;Unload&amp;quot;)
            {
                report(header+&amp;quot;Stopped&amp;quot;);
                llParcelMediaCommandList([PARCEL_MEDIA_COMMAND_UNLOAD]);
                return;
            }
            if(message == &amp;quot;Loop&amp;quot;)
            {
                llParcelMediaCommandList([PARCEL_MEDIA_COMMAND_LOOP]);
                return;
            }
            //URL , Auto-Scale, 
            if(message == &amp;quot;Set URL&amp;quot;)
            {
                report(header+&amp;quot;Stopped&amp;quot;);
                listenUrl = llListen(1,&amp;quot;&amp;quot;,id,&amp;quot;&amp;quot;);
                llDialog(id,&amp;quot;Please type the URL of your choice with /1 in thebegining. For example, /1 www.google.com&amp;quot;,[&amp;quot;Ok&amp;quot;],938);
                return;
            }
            if(message == &amp;quot;Align ON&amp;quot;)
            {
                report(header+&amp;quot;Stopped&amp;quot;);
                llParcelMediaCommandList([PARCEL_MEDIA_COMMAND_AUTO_ALIGN,TRUE]);
                menu(id);
                return;
            }
            if(message == &amp;quot;Align OFF&amp;quot;)
            {
                report(header+&amp;quot;Stopped&amp;quot;);
                llParcelMediaCommandList([PARCEL_MEDIA_COMMAND_AUTO_ALIGN,FALSE]);
                menu(id);
                return;
            }
            if(message == &amp;quot;Set Remote&amp;quot;)
            {
                llSay(0,&amp;quot;Configuring remote...&amp;quot;);
                encryption = 0;
                llListenRemove(listenRemote);
                listenRemote = llListen(REMOTE_CHANNEL,&amp;quot;&amp;quot;,&amp;quot;&amp;quot;,&amp;quot;&amp;quot;);
                llSay(REMOTE_CHANNEL,&amp;quot;SETUP&amp;quot;);
            }
        }
    }
    
    dataserver(key queryid, string data)
    {
        if(queryid == groupcheck)       //Test if object is deeded to group
        {
            groupcheck = NULL_KEY;
            isGroup = FALSE;
            return;
        }
        
        if(queryid == tempuser) //If just checking number of notecard lines
        {
            numberofnotecardlines = (integer)data;
            notecardkey = llGetInventoryKey(NOTECARD);
            notecardcheck = 0;
            llGetNotecardLine(NOTECARD,notecardcheck);
            return;
        }
        if(notecardcheck != -1)
        {
            if(data != EOF)
            {
                if(data == &amp;quot;&amp;quot;)
                {
                    notecardcheck++;
                    llGetNotecardLine(NOTECARD,notecardcheck);
                }
                else
                {
                    notecardcheck = -1;
                    return;
                }
            }
            else
                return;
        }

        if(data == &amp;quot;&amp;quot; &amp;amp;&amp;amp; notecardline &amp;lt; numberofnotecardlines)    //If user just pressed &amp;quot;enter&amp;quot; in bookmarks, skip
        {
            notecardline++;
            llGetNotecardLine(NOTECARD,notecardline);
            return;
        }
        
        if(data == EOF)
        {
            notecardline = 0;
            llGetNotecardLine(NOTECARD,notecardline);
            return;
        }
        list parsed = llParseString2List(data,[&amp;quot;|&amp;quot;,&amp;quot;| &amp;quot;,&amp;quot; |&amp;quot;,&amp;quot; | &amp;quot;],[]);    //Ensure no blank spaces before &amp;quot;http://&amp;quot;.
        string name = llList2String(parsed,0);
        tempurl = llList2String(parsed,1);
        if(tempurl == &amp;quot;&amp;quot;)
            tempurl = &amp;quot;** No URL specified! **&amp;quot;;
            
        tempmoviename = name;
                
        llDialog(tempuser,&amp;quot;Bookmarks notecard (&amp;quot;+(string)(notecardline+1)+&amp;quot;/&amp;quot;+(string)numberofnotecardlines+&amp;quot;)\n&amp;quot;+name+&amp;quot; (&amp;quot;+mediatype(llList2String(llParseString2List(tempurl,[&amp;quot;.&amp;quot;],[]),-1))+&amp;quot;)\n&amp;quot;+tempurl,[&amp;quot;&amp;lt;&amp;lt; Prev&amp;quot;,&amp;quot;Use&amp;quot;,&amp;quot;Next &amp;gt;&amp;gt;&amp;quot;,&amp;quot;Menu&amp;quot;],chan);
    }
    
    remote_data(integer type, key channel, key message_id, string sender, integer ival, string sval)
    {
        if (type == REMOTE_DATA_CHANNEL)
        {
            XML_channel = channel;
        } 
        else if(type == REMOTE_DATA_REQUEST)
        {
            list media_info = llParseString2List(sval, [&amp;quot;|&amp;quot;], []);
            tempmoviename = llList2String(media_info,0);
            seturl(llList2String(media_info,1),NULL_KEY);
            llRemoteDataReply(channel, message_id, sval, 1);
        }
    }
    
    timer()
    {
        if(llGetTime() &amp;gt; listenTimer)       //If listener time expired...
        {
            llListenRemove(listenHandle);   //Remove listeneres.
            llListenRemove(listenUrl);
            llListenRemove(listenRemote);
            listenHandle = -1;
            listenUrl = -1;
            listenRemote = -1;
            listenTimer = -1;
            if(loop_image == FALSE || mode != 1) //If we&amp;#039;re not looping pictures or are in picture mode at all
                llSetTimerEvent(0.0);   //Remove timer
        }
        
        if(loop_image == TRUE &amp;amp;&amp;amp; mode == 1) //If we&amp;#039;re looping pictures and and we&amp;#039;re in picture mode...
            next(); //Next picture
    }
}&lt;/pre&gt;

&lt;/div&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
        <category>archiv:opensim:downloads:scripts</category>
            <pubDate>Fri, 29 Nov 2019 10:58:40 +0000</pubDate>
        </item>
        <item>
            <title>Poseball</title>
            <link>http://itclive.spdns.de/wiki/archiv/opensim/downloads/scripts/poseball?do=revisions&amp;rev=1575021522</link>
            <description>
&lt;h2 class=&quot;sectionedit1&quot; id=&quot;poseball&quot;&gt;Poseball&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;// Jippen Faddoul&amp;#039;s Poseball script - Low ram/lag posepall thats just drag-and drop simple
// Copyright (C) 2007 Jippen Faddoul
//    This program is free software: you can redistribute it and/or modify
//    it under the terms of the GNU General Public License version 3, as
//    published by the Free Software Foundation.
//
//    This program is distributed in the hope that it will be useful,
//    but WITHOUT ANY WARRANTY; without even the implied warranty of
//    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
//    GNU General Public License for more details.
//
//   You should have received a copy of the GNU General Public License
//    along with this program.  If not, see &amp;lt;http://www.gnu.org/licenses/&amp;gt;



//This text will appear in the floating title above the ball
string TITLE=&amp;quot;Sit here&amp;quot;;           
//You can play with these numbers to adjust how far the person sits from the ball. ( &amp;lt;X,Y,Z&amp;gt; )
vector offset=&amp;lt;0.0,0.0,0.5&amp;gt;;           

///////////////////// LEAVE THIS ALONE \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
string ANIMATION;
integer visible = TRUE;
key avatar;

vector COLOR = &amp;lt;1.0,1.0,1.0&amp;gt;;
float ALPHA_ON = 1.0;
float ALPHA_OFF = 0.0;

show(){
    visible = TRUE;
    llSetText(TITLE, COLOR,ALPHA_ON);       
    llSetAlpha(ALPHA_ON, ALL_SIDES);
}

hide(){
    visible = FALSE;
    llSetText(&amp;quot;&amp;quot;, COLOR,ALPHA_ON);       
    llSetAlpha(ALPHA_OFF, ALL_SIDES);
}

default{
    state_entry() {
        llSitTarget(offset,ZERO_ROTATION);
        if((ANIMATION = llGetInventoryName(INVENTORY_ANIMATION,0)) == &amp;quot;&amp;quot;){
            llOwnerSay(&amp;quot;Error: No animation&amp;quot;);
            ANIMATION = &amp;quot;sit&amp;quot;;
            }
        llSetSitText(TITLE);
        show();
    }

    touch_start(integer detected) {
        //llOwnerSay(&amp;quot;Memory: &amp;quot; + (string)llGetFreeMemory());
        if(visible){ hide(); }
        else       { show(); }
    }

    changed(integer change) {
        if(change &amp;amp; CHANGED_LINK) {
            avatar = llAvatarOnSitTarget();
            if(avatar != NULL_KEY){
                //SOMEONE SAT DOWN
                hide();
                llRequestPermissions(avatar,PERMISSION_TRIGGER_ANIMATION);
                return;
            }else{
                //SOMEONE STOOD UP
                if (llGetPermissionsKey() != NULL_KEY){ llStopAnimation(ANIMATION); }
                show();
                return;
            }
        }
        if(change &amp;amp; CHANGED_INVENTORY) { llResetScript(); }
        if(change &amp;amp; CHANGED_OWNER)     { llResetScript(); }
    }

    run_time_permissions(integer perm) {
        if(perm &amp;amp; PERMISSION_TRIGGER_ANIMATION) {
            llStopAnimation(&amp;quot;sit&amp;quot;);
            llStartAnimation(ANIMATION);
            hide();
        }
    }
}&lt;/pre&gt;

&lt;/div&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
        <category>archiv:opensim:downloads:scripts</category>
            <pubDate>Fri, 29 Nov 2019 10:58:42 +0000</pubDate>
        </item>
        <item>
            <title>Rotating Prim</title>
            <link>http://itclive.spdns.de/wiki/archiv/opensim/downloads/scripts/rotating_prim?do=revisions&amp;rev=1575021523</link>
            <description>
&lt;h2 class=&quot;sectionedit1&quot; id=&quot;rotating_prim&quot;&gt;Rotating Prim&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;default 
  {
    state_entry()
     {
      llSetText(&amp;quot;put your text in here&amp;quot;, &amp;lt;1,1,1&amp;gt;,1);
      llTargetOmega(&amp;lt;0,0,1&amp;gt;, 0.2, 2);
     }
  }&lt;/pre&gt;

&lt;/div&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
        <category>archiv:opensim:downloads:scripts</category>
            <pubDate>Fri, 29 Nov 2019 10:58:43 +0000</pubDate>
        </item>
        <item>
            <title>Zero Lag Poseball</title>
            <link>http://itclive.spdns.de/wiki/archiv/opensim/downloads/scripts/zero_lag_poseball?do=revisions&amp;rev=1575021525</link>
            <description>
&lt;h2 class=&quot;sectionedit1&quot; id=&quot;zero_lag_poseball&quot;&gt;Zero Lag Poseball&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;// Jippen Faddoul&amp;#039;s Poseball script - Low ram/lag posepall thats just drag-and drop simple
// Copyright (C) 2007 Jippen Faddoul
//    This program is free software: you can redistribute it and/or modify
//    it under the terms of the GNU General Public License version 3, as 
//    published by the Free Software Foundation.
//
//    This program is distributed in the hope that it will be useful,
//    but WITHOUT ANY WARRANTY; without even the implied warranty of
//    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
//    GNU General Public License for more details.
//
//   You should have received a copy of the GNU General Public License
//    along with this program.  If not, see &amp;lt;http://www.gnu.org/licenses/&amp;gt;
 
 
 
//This text will appear in the floating title above the ball
string TITLE=&amp;quot;Sit here&amp;quot;;            
//You can play with these numbers to adjust how far the person sits from the ball. ( &amp;lt;X,Y,Z&amp;gt; )
vector offset=&amp;lt;0.0,0.0,0.5&amp;gt;;            
 
///////////////////// LEAVE THIS ALONE \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
string ANIMATION;
integer visible = TRUE;
key avatar;
 
vector COLOR = &amp;lt;1.0,1.0,1.0&amp;gt;;
float ALPHA_ON = 1.0;
float ALPHA_OFF = 0.0;
 
show(){
    visible = TRUE;
    llSetText(TITLE, COLOR,ALPHA_ON);        
    llSetAlpha(ALPHA_ON, ALL_SIDES);
}
 
hide(){
    visible = FALSE;
    llSetText(&amp;quot;&amp;quot;, COLOR,ALPHA_ON);        
    llSetAlpha(ALPHA_OFF, ALL_SIDES);
}
 
default{
    state_entry() {
        llSitTarget(offset,ZERO_ROTATION);
        if((ANIMATION = llGetInventoryName(INVENTORY_ANIMATION,0)) == &amp;quot;&amp;quot;){
            llOwnerSay(&amp;quot;Error: No animation&amp;quot;);
            ANIMATION = &amp;quot;sit&amp;quot;;
            }
        llSetSitText(TITLE);
        show();
    }
 
    touch_start(integer detected) {
        //llOwnerSay(&amp;quot;Memory: &amp;quot; + (string)llGetFreeMemory());
        if(visible){ hide(); }
        else       { show(); }
    }
 
    changed(integer change) {
        if(change &amp;amp; CHANGED_LINK) {
            avatar = llAvatarOnSitTarget();
            if(avatar != NULL_KEY){
                //SOMEONE SAT DOWN
                hide();
                llRequestPermissions(avatar,PERMISSION_TRIGGER_ANIMATION);
                return;
            }else{
                //SOMEONE STOOD UP
                if (llGetPermissionsKey() != NULL_KEY){ llStopAnimation(ANIMATION); }
                show();
                return;
            }
        }
        if(change &amp;amp; CHANGED_INVENTORY) { llResetScript(); }
        if(change &amp;amp; CHANGED_OWNER)     { llResetScript(); }
    }
 
    run_time_permissions(integer perm) {
        if(perm &amp;amp; PERMISSION_TRIGGER_ANIMATION) {
            llStopAnimation(&amp;quot;sit&amp;quot;);
            llStartAnimation(ANIMATION);
            hide();
        }
    }
}&lt;/pre&gt;

&lt;/div&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
        <category>archiv:opensim:downloads:scripts</category>
            <pubDate>Fri, 29 Nov 2019 10:58:45 +0000</pubDate>
        </item>
    </channel>
</rss>
