
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

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

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://live.spdns.org/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://live.spdns.org/wiki/</link>
        <lastBuildDate>Sat, 04 Apr 2026 11:08:07 +0000</lastBuildDate>
        <generator>FeedCreator 1.8</generator>
        <image>
            <url>http://live.spdns.org/wiki/lib/tpl/peanutbutter2/images/favicon.ico</url>
            <title>move IT Home Base</title>
            <link>http://live.spdns.org/wiki/</link>
        </image>
        <item>
            <title>Binary Clock</title>
            <link>http://live.spdns.org/wiki/archiv/opensim/downloads/scripts/binary_clock?do=revisions&amp;rev=1575021518</link>
            <description>
&lt;h2 class=&quot;sectionedit1&quot; id=&quot;binary_clock&quot;&gt;Binary Clock&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;// Binary Clock Script
// By Fox Diller
// OMG INSANITY!
 
list bTime;
list oTime;
 
integer token;
 
string dec2bin(integer dec)
{
    if (dec == 0) return &amp;quot;0000&amp;quot;;
    if (dec == 1) return &amp;quot;0001&amp;quot;;
    if (dec == 2) return &amp;quot;0010&amp;quot;;
    if (dec == 3) return &amp;quot;0011&amp;quot;;
    if (dec == 4) return &amp;quot;0100&amp;quot;;
    if (dec == 5) return &amp;quot;0101&amp;quot;;
    if (dec == 6) return &amp;quot;0110&amp;quot;;
    if (dec == 7) return &amp;quot;0111&amp;quot;;
    if (dec == 8) return &amp;quot;1000&amp;quot;;
    if (dec == 9) return &amp;quot;1001&amp;quot;;
    return &amp;quot;0000&amp;quot;;
}
 
BuildClock()
{
    integer shiftraw = (integer)llGetWallclock();
 
    integer hours = shiftraw / 3600;
    integer minutes = (shiftraw % 3600) / 60;
    integer seconds = shiftraw % 60;
 
    bTime = [hours   / 10, hours   % 10,
             minutes / 10, minutes % 10,
             seconds / 10, seconds % 10];
 
}
 
displayBDC()
{
    integer current_rowA = llList2Integer(bTime, 0);
    integer old_rowA = llList2Integer(oTime, 0);
    if (current_rowA != old_rowA)
    {
        string rowA = dec2bin(current_rowA);
        integer Acol0 = (integer)llGetSubString(rowA, 3, 3);
        integer Acol1 = (integer)llGetSubString(rowA, 2, 2); 
        llMessageLinked(2, Acol0, &amp;quot;&amp;quot;, &amp;quot;&amp;quot;);
        llMessageLinked(3, Acol1, &amp;quot;&amp;quot;, &amp;quot;&amp;quot;);
    } else if (!current_rowA) {
        llMessageLinked(2, 0, &amp;quot;&amp;quot;, &amp;quot;&amp;quot;);
        llMessageLinked(3, 0, &amp;quot;&amp;quot;, &amp;quot;&amp;quot;);
    }
 
    integer current_rowB = llList2Integer(bTime, 1);
    integer old_rowB = llList2Integer(oTime, 1);
    if (current_rowB != old_rowB)
    {
        string rowB = dec2bin(current_rowB);
        integer Bcol0 = (integer)llGetSubString(rowB, 3, 3);
        integer Bcol1 = (integer)llGetSubString(rowB, 2, 2);
        integer Bcol2 = (integer)llGetSubString(rowB, 1, 1);
        integer Bcol3 = (integer)llGetSubString(rowB, 0, 0); 
        llMessageLinked(4, Bcol0, &amp;quot;&amp;quot;, &amp;quot;&amp;quot;);
        llMessageLinked(5, Bcol1, &amp;quot;&amp;quot;, &amp;quot;&amp;quot;);
        llMessageLinked(6, Bcol2, &amp;quot;&amp;quot;, &amp;quot;&amp;quot;);
        llMessageLinked(7, Bcol3, &amp;quot;&amp;quot;, &amp;quot;&amp;quot;);
    } else if (!current_rowB) {
        llMessageLinked(4, 0, &amp;quot;&amp;quot;, &amp;quot;&amp;quot;);
        llMessageLinked(5, 0, &amp;quot;&amp;quot;, &amp;quot;&amp;quot;);
        llMessageLinked(6, 0, &amp;quot;&amp;quot;, &amp;quot;&amp;quot;);
        llMessageLinked(7, 0, &amp;quot;&amp;quot;, &amp;quot;&amp;quot;);
    }
 
 
    integer current_rowC = llList2Integer(bTime, 2);
    integer old_rowC = llList2Integer(oTime, 2);
    if (current_rowC != old_rowC)
    {     
        string rowC = dec2bin(current_rowC);
        integer Ccol0 = (integer)llGetSubString(rowC, 3, 3);
        integer Ccol1 = (integer)llGetSubString(rowC, 2, 2);
        integer Ccol2 = (integer)llGetSubString(rowC, 1, 1);
        llMessageLinked(8, Ccol0, &amp;quot;&amp;quot;, &amp;quot;&amp;quot;);
        llMessageLinked(9, Ccol1, &amp;quot;&amp;quot;, &amp;quot;&amp;quot;);
        llMessageLinked(10, Ccol2, &amp;quot;&amp;quot;, &amp;quot;&amp;quot;);
    } else if (!current_rowC) {
        llMessageLinked(8, 0, &amp;quot;&amp;quot;, &amp;quot;&amp;quot;);
        llMessageLinked(9, 0, &amp;quot;&amp;quot;, &amp;quot;&amp;quot;);
        llMessageLinked(10, 0, &amp;quot;&amp;quot;, &amp;quot;&amp;quot;);
    }
 
    integer current_rowD = llList2Integer(bTime, 3);
    integer old_rowD = llList2Integer(oTime, 3);
    if (current_rowD != old_rowD)
    {
        string rowD = dec2bin(current_rowD);
        integer Dcol0 = (integer)llGetSubString(rowD, 3, 3);
        integer Dcol1 = (integer)llGetSubString(rowD, 2, 2);
        integer Dcol2 = (integer)llGetSubString(rowD, 1, 1);
        integer Dcol3 = (integer)llGetSubString(rowD, 0, 0); 
        llMessageLinked(11, Dcol0, &amp;quot;&amp;quot;, &amp;quot;&amp;quot;);
        llMessageLinked(12, Dcol1, &amp;quot;&amp;quot;, &amp;quot;&amp;quot;);
        llMessageLinked(13, Dcol2, &amp;quot;&amp;quot;, &amp;quot;&amp;quot;);
        llMessageLinked(14, Dcol3, &amp;quot;&amp;quot;, &amp;quot;&amp;quot;);
    } else if (!current_rowD) {
        llMessageLinked(11, 0, &amp;quot;&amp;quot;, &amp;quot;&amp;quot;);
        llMessageLinked(12, 0, &amp;quot;&amp;quot;, &amp;quot;&amp;quot;);
        llMessageLinked(13, 0, &amp;quot;&amp;quot;, &amp;quot;&amp;quot;);
        llMessageLinked(14, 0, &amp;quot;&amp;quot;, &amp;quot;&amp;quot;);
    }
 
    integer current_rowE = llList2Integer(bTime, 4);
    integer old_rowE = llList2Integer(oTime, 4);
    if (current_rowE != old_rowE)
    {
        string rowE = dec2bin(current_rowE);
        integer Ecol0 = (integer)llGetSubString(rowE, 3, 3);
        integer Ecol1 = (integer)llGetSubString(rowE, 2, 2);
        integer Ecol2 = (integer)llGetSubString(rowE, 1, 1);
        llMessageLinked(15, Ecol0, &amp;quot;&amp;quot;, &amp;quot;&amp;quot;);
        llMessageLinked(16, Ecol1, &amp;quot;&amp;quot;, &amp;quot;&amp;quot;);
        llMessageLinked(17, Ecol2, &amp;quot;&amp;quot;, &amp;quot;&amp;quot;);
    } else if (!current_rowE) {
        llMessageLinked(15, 0, &amp;quot;&amp;quot;, &amp;quot;&amp;quot;);
        llMessageLinked(16, 0, &amp;quot;&amp;quot;, &amp;quot;&amp;quot;);
        llMessageLinked(17, 0, &amp;quot;&amp;quot;, &amp;quot;&amp;quot;);
    }
 
    integer current_rowF = llList2Integer(bTime, 5);
    integer old_rowF = llList2Integer(oTime, 5);
    if (current_rowF != old_rowF)
    {
        string rowF = dec2bin(current_rowF);
        integer Fcol0 = (integer)llGetSubString(rowF, 3, 3);
        integer Fcol1 = (integer)llGetSubString(rowF, 2, 2);
        integer Fcol2 = (integer)llGetSubString(rowF, 1, 1);
        integer Fcol3 = (integer)llGetSubString(rowF, 0, 0); 
        llMessageLinked(18, Fcol0, &amp;quot;&amp;quot;, &amp;quot;&amp;quot;);
        llMessageLinked(19, Fcol1, &amp;quot;&amp;quot;, &amp;quot;&amp;quot;);
        llMessageLinked(20, Fcol2, &amp;quot;&amp;quot;, &amp;quot;&amp;quot;);
        llMessageLinked(21, Fcol3, &amp;quot;&amp;quot;, &amp;quot;&amp;quot;);
    } else if (!current_rowF) {
        llMessageLinked(18, 0, &amp;quot;&amp;quot;, &amp;quot;&amp;quot;);
        llMessageLinked(19, 0, &amp;quot;&amp;quot;, &amp;quot;&amp;quot;);
        llMessageLinked(20, 0, &amp;quot;&amp;quot;, &amp;quot;&amp;quot;);
        llMessageLinked(21, 0, &amp;quot;&amp;quot;, &amp;quot;&amp;quot;);
    }
 
}
 
default
{
    touch_start(integer total_number)
    {
        if (!token &amp;amp;&amp;amp; llDetectedKey(0) == llGetOwner())
        {
            oTime = [];
            bTime = [];
            llSetTimerEvent(1.0);
            token = 1;
            llOwnerSay(&amp;quot;On!&amp;quot;);
        }
 
        else if (token &amp;amp;&amp;amp; llDetectedKey(0) == llGetOwner())
        {
            llSetTimerEvent(0);
            token = 0;
            llOwnerSay(&amp;quot;Off!&amp;quot;);
        }
    }
 
    timer()
    {
        bTime = oTime;
        BuildClock();
        displayBDC();
    }
}&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:38 +0000</pubDate>
        </item>
        <item>
            <title>Prim Mover</title>
            <link>http://live.spdns.org/wiki/archiv/opensim/downloads/scripts/prim_mover?do=revisions&amp;rev=1575021522</link>
            <description>
&lt;h2 class=&quot;sectionedit1&quot; id=&quot;prim_mover&quot;&gt;Prim Mover&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;float   cnfSpeed        =   1.0;
string  cnfSitAnim      =   &amp;quot;backflip&amp;quot;;
 
///////////////////////////////////////////////////////////////////////////
vector  velocity    =   &amp;lt;0,0,0&amp;gt;;
 
warpPos( vector destpos ){
    integer jumps = (integer)(llVecDist(destpos, llGetPos()) / 10.0) + 1;
 
    if (jumps &amp;gt; 100 )
        jumps = 100;
 
    list rules = [ PRIM_POSITION, destpos ];
 
    integer count = 1;
    while ( ( count = count &amp;lt;&amp;lt; 1 ) &amp;lt; jumps)
        rules = (rules=[]) + rules + rules;
 
    llSetPrimitiveParams( rules + llList2List( rules, (count - jumps) &amp;lt;&amp;lt; 1, count) );
 
    if ( llVecDist( llGetPos(), destpos ) &amp;gt; .001 )
        while ( --jumps )
            llSetPos( destpos );
}
 
default
{
 
    state_entry()
    {
        llSitTarget(&amp;lt;0,0,-110&amp;gt;,&amp;lt;0,0,0,0&amp;gt;);
        llSetCameraEyeOffset(&amp;lt;0.0, 0.0, -108&amp;gt;);
        llSetCameraAtOffset(&amp;lt;0.0, 0.0, -108&amp;gt;);
        llListen(4,&amp;quot;&amp;quot;,llGetOwner(),&amp;quot;&amp;quot;);
    }
 
    changed(integer c)
    {
        if(c &amp;amp; CHANGED_LINK &amp;amp;&amp;amp; llAvatarOnSitTarget() == llGetOwner())
        {
            llRequestPermissions(llAvatarOnSitTarget(),PERMISSION_TRIGGER_ANIMATION | PERMISSION_TAKE_CONTROLS | PERMISSION_CONTROL_CAMERA);
            warpPos(llGetPos() + &amp;lt;0,0,110&amp;gt;);
        } else if(c &amp;amp; CHANGED_LINK &amp;amp;&amp;amp; llAvatarOnSitTarget() == NULL_KEY){
            warpPos(llGetPos() - &amp;lt;0,0,110&amp;gt;);
        }
    }
 
    listen(integer c, string n, key id, string msg){
        cnfSpeed = (float)msg;
    }
 
    run_time_permissions(integer perm){
        if(perm &amp;amp; PERMISSION_TRIGGER_ANIMATION &amp;amp;&amp;amp; llAvatarOnSitTarget() == llGetOwner()){
            llStopAnimation(&amp;quot;Sit&amp;quot;);
            llStartAnimation(cnfSitAnim);
        }
        if(perm &amp;amp; PERMISSION_TAKE_CONTROLS &amp;amp;&amp;amp; llAvatarOnSitTarget() == llGetOwner()){
            llTakeControls(CONTROL_FWD | CONTROL_BACK | CONTROL_LEFT | CONTROL_RIGHT | CONTROL_UP | CONTROL_DOWN | CONTROL_ROT_LEFT | CONTROL_ROT_RIGHT,TRUE,FALSE);
        }
    }
 
    touch_start(integer n){
        llRequestPermissions(llAvatarOnSitTarget(),PERMISSION_TRIGGER_ANIMATION | PERMISSION_TAKE_CONTROLS | PERMISSION_CONTROL_CAMERA);
    }
 
    control(key id, integer held, integer change){
        rotation rot;
        if(held &amp;amp; CONTROL_FWD)
            velocity.x = velocity.x + cnfSpeed;
        else
            velocity.x *= 0.75;
 
        if(held &amp;amp; CONTROL_BACK)
            velocity.x = velocity.x - cnfSpeed;
        else
            velocity.x *= 0.75;
 
        if(held &amp;amp; CONTROL_LEFT)
            velocity.y = velocity.y - cnfSpeed;
        else
            velocity.y *= 0.75;
 
        if(held &amp;amp; CONTROL_RIGHT)
            velocity.y = velocity.y + cnfSpeed;
        else
            velocity.y *= 0.75;
 
        if(held &amp;amp; CONTROL_UP)
            llSetPos(llGetPos() + &amp;lt;0,0,cnfSpeed&amp;gt;);
 
        if(held &amp;amp; CONTROL_DOWN)
            llSetPos(llGetPos() + &amp;lt;0,0,-cnfSpeed&amp;gt;);
 
        if(held &amp;amp; CONTROL_ROT_LEFT)
        {
            rot = llGetRot() * llEuler2Rot(&amp;lt;0,0,0.12&amp;gt;);
            llSetRot(rot);
        }
 
        if(held &amp;amp; CONTROL_ROT_RIGHT)
        {
            rot = llGetRot() * llEuler2Rot(&amp;lt;0,0,-0.12&amp;gt;);
            llSetRot(rot);
        }
 
        llSetPos(velocity * llGetRot() + llGetPos());
    }
}&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>Dimmen</title>
            <link>http://live.spdns.org/wiki/archiv/opensim/downloads/scripts/dimmen?do=revisions&amp;rev=1575021519</link>
            <description>
&lt;h2 class=&quot;sectionedit1&quot; id=&quot;dimmen&quot;&gt;Dimmen&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Mit dem diesem Script kann ein Objekt generiert werden dass bei Berührung ein Menü öffnet und mit dem dann die Transparanz anderer Objekte kontrolliert werden kann.
&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;Dimmen&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;dimmen&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-189&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit2&quot; id=&quot;kontrollobjekt&quot;&gt;Kontrollobjekt&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Dieses Script muss in das Objekt, das quasi als Fernbedienung dienen soll. Die Namen werden dabei im Array WALL_OPTIONS festgelegt.
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;// This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License
// as published by the Free Software Foundation; either version 2
// of the License, or (at your option) any later version.
//
// 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.
//
// (C) 2007 Abba Thiebaud&amp;gt;SecondLifer  
// Please remember, I do not offer support for this script; your use of
// this script is your acknowledgement and agreement to the above
// terms.
//
// DO NOT REMOVE THE ABOVE HEADER FOR ANY REASON WHATSOEVER.
 
// Window Controller Script (put into controller prim)
list TINT_OPTIONS = [&amp;quot;40%&amp;quot;, &amp;quot;20%&amp;quot;, &amp;quot;None&amp;quot;, &amp;quot;100%&amp;quot;, &amp;quot;80%&amp;quot;, &amp;quot;60%&amp;quot;];
list WALL_OPTIONS = [&amp;quot;Lower Front&amp;quot;, &amp;quot;Lower Back&amp;quot;, &amp;quot;Lower Sides&amp;quot;, &amp;quot;Upper Front&amp;quot;, &amp;quot;Upper Back&amp;quot;, &amp;quot;Upper Sides&amp;quot;, &amp;quot;Ceiling&amp;quot;, &amp;quot;All&amp;quot;];
integer UPPER_FRONT = -28394;
integer LOWER_FRONT = -28395;
integer UPPER_BACK  = -28396;
integer LOWER_BACK  = -28397;
integer UPPER_SIDE  = -28398;
integer LOWER_SIDE  = -28399;
integer CEILING     = -28400;
integer CHANNEL     = -28393;
integer wallChannel;
integer allWalls;
 
PaintAllWalls(string tintLevel)
{
    integer i;
    integer j;
    
    j = -28394;
 
    for (i = 0; i &amp;lt; 7; i++)
    {
        llSay(j, tintLevel);
        j--;
    } // end for
} // end PaintAllWalls
   
default {
    state_entry()
    {
        llListen(CHANNEL, &amp;quot;&amp;quot;, NULL_KEY, &amp;quot;&amp;quot;); // listen for dialog answers (from multiple users)
    } // end state_entry()
 
    touch_start(integer total_number)
    {
        llDialog(llDetectedKey(0), &amp;quot;Which wall would you like to tint?&amp;quot;, WALL_OPTIONS, CHANNEL); // present dialog on click
        allWalls = 0;
    } // end touch_start()
 
    listen(integer channel, string name, key id, string message)
    {
        if (llListFindList(TINT_OPTIONS + WALL_OPTIONS, [message]) != -1)  // verify dialog choice
        {
            if (message == &amp;quot;Upper Front&amp;quot;)
            {
                llDialog(id, &amp;quot;How much tint would you like?&amp;quot;, TINT_OPTIONS, CHANNEL);
                wallChannel = UPPER_FRONT;
            }
            else if (message == &amp;quot;Upper Back&amp;quot;)
            {
                llDialog(id, &amp;quot;How much tint would you like?&amp;quot;, TINT_OPTIONS, CHANNEL);
                wallChannel = UPPER_BACK;
            }
            else if (message == &amp;quot;Upper Sides&amp;quot;)
            {
                llDialog(id, &amp;quot;How much tint would you like?&amp;quot;, TINT_OPTIONS, CHANNEL);
                wallChannel = UPPER_SIDE;
            }
            else if (message == &amp;quot;Lower Front&amp;quot;)
            {
                llDialog(id, &amp;quot;How much tint would you like?&amp;quot;, TINT_OPTIONS, CHANNEL);
                wallChannel = LOWER_FRONT;
            }
            else if (message == &amp;quot;Lower Back&amp;quot;)
            {
                llDialog(id, &amp;quot;How much tint would you like?&amp;quot;, TINT_OPTIONS, CHANNEL);
                wallChannel = LOWER_BACK;
            }
            else if (message == &amp;quot;Lower Sides&amp;quot;)
            {
                llDialog(id, &amp;quot;How much tint would you like?&amp;quot;, TINT_OPTIONS, CHANNEL);
                wallChannel = LOWER_SIDE;
            }
            else if (message == &amp;quot;Ceiling&amp;quot;)
            {
                llDialog(id, &amp;quot;How much tint would you like?&amp;quot;, TINT_OPTIONS, CHANNEL);
                wallChannel = CEILING;
            }
            else if(message == &amp;quot;All&amp;quot;)
            {
                llDialog(id, &amp;quot;How much tint would you like?&amp;quot;, TINT_OPTIONS, CHANNEL);
                allWalls = 1;
             }
 
            if (message == &amp;quot;100%&amp;quot;)
            {
                if(allWalls == 1)
                {
                    PaintAllWalls(&amp;quot;100&amp;quot;);
                }
                else
                {
                    llSay(wallChannel, &amp;quot;100&amp;quot;);
                }
             }
            else if (message == &amp;quot;80%&amp;quot;)
            {
                if(allWalls == 1)
                {
                    PaintAllWalls(&amp;quot;80&amp;quot;);
                }
                else
                {
                    llSay(wallChannel, &amp;quot;80&amp;quot;);
                }
             }
            else if (message == &amp;quot;60%&amp;quot;)
            {
                if(allWalls == 1)
                {
                    PaintAllWalls(&amp;quot;60&amp;quot;);
                }
                else
                {
                    llSay(wallChannel, &amp;quot;60&amp;quot;);
                }
             }
            else if (message == &amp;quot;40%&amp;quot;)
            {
                if(allWalls == 1)
                {
                    PaintAllWalls(&amp;quot;40&amp;quot;);
                }
                else
                {
                    llSay(wallChannel, &amp;quot;40&amp;quot;);
                }
             }
            else if (message == &amp;quot;20%&amp;quot;)
            {
                if(allWalls == 1)
                {
                    PaintAllWalls(&amp;quot;20&amp;quot;);
                }
                else
                {
                    llSay(wallChannel, &amp;quot;20&amp;quot;);
                }
             }
            else if (message == &amp;quot;None&amp;quot;)
            {
                if(allWalls == 1)
                {
                    PaintAllWalls(&amp;quot;0&amp;quot;);
                }
                else
                {
                    llSay(wallChannel, &amp;quot;0&amp;quot;);
                }
             }
          } // end if (valid message)
    }  // end listen
} // end default&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Kontrollobjekt&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;kontrollobjekt&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;190-5776&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit3&quot; id=&quot;dimm-objekt&quot;&gt;Dimm-Objekt&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Dieses Script muss in alle wählbaren Objekte. Dabei muss ein Channel durch Entfernen des Platzhalters aktiviert werden, wodurch das Objekt durch das Kontrollscript ansprechbar wird.
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;//Here the target aka Windows, put this script into them.
//integer chan = -28394; // uncomment for UPPER_FRONT
//integer chan = -28395; // uncomment for LOWER_FRONT
//integer chan = -28396; // uncomment for UPPER_BACK
//integer chan = -28397; // uncomment for LOWER_BACK
//integer chan = -28398; // uncomment for UPPER_SIDE
//integer chan = -28399; // uncomment for LOWER_SIDE
//integer chan = -28400; // uncomment for CEILING
 
default
{
        state_entry()
        {
                llListen(chan, &amp;quot;&amp;quot;, NULL_KEY, &amp;quot;&amp;quot; );
        }
 
        listen( integer channel, string name, key id, string message )
        {
                if ( message == &amp;quot;100&amp;quot; )
                {
                        llSetAlpha(1.0, ALL_SIDES);
                }
                else if ( message == &amp;quot;80&amp;quot; )
                {
                        llSetAlpha(0.8, ALL_SIDES);
                }
                else if ( message == &amp;quot;60&amp;quot; )
                {
                        llSetAlpha(0.6, ALL_SIDES);
                }
                else if ( message == &amp;quot;40&amp;quot; )
                {
                        llSetAlpha(0.4, ALL_SIDES);
                }
                else if ( message == &amp;quot;20&amp;quot; )
                {
                        llSetAlpha(0.2, ALL_SIDES);
                }
                else if ( message == &amp;quot;0&amp;quot; )
                {
                        llSetAlpha(0.0, ALL_SIDES);
                }
        }
}&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Dimm-Objekt&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;dimm-objekt&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;5777-&amp;quot;} --&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>Sensor Door</title>
            <link>http://live.spdns.org/wiki/archiv/opensim/downloads/scripts/sensor_door?do=revisions&amp;rev=1575021523</link>
            <description>
&lt;h2 class=&quot;sectionedit1&quot; id=&quot;sensor_door&quot;&gt;Sensor Door&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;// Fixyou Kit&amp;#039;s sensor door script with unknown avatar detection.
// Door can be opened by up to 10 avatars, set up by name in the list.
// The door scans for any avatars witin a distance of &amp;quot;scandist&amp;quot; and reports any avatar that is not on the access list
// If known avatars get within a distance of &amp;quot;distdoor&amp;quot; to the door, it will open
//plz IM me if you have questions! Have fun!

//set names of avatars you want to allow access:
string access1 = &amp;quot;Fixyou Kit&amp;quot;;
string access2 = &amp;quot; &amp;quot;;
string access3 = &amp;quot; &amp;quot;;
string access4 = &amp;quot; &amp;quot;;
string access5 = &amp;quot; &amp;quot;;
string access6 = &amp;quot; &amp;quot;;
string access7 = &amp;quot; &amp;quot;;
string access8 = &amp;quot; &amp;quot;;
string access9 = &amp;quot; &amp;quot;;
string access10 = &amp;quot; &amp;quot;;
integer distodoor = 3; // set distance (meters) between avatar and door to open
integer scandist = 500; //set scanning distance
string Ava_detected;
integer ava_known = 0;

default
{
state_entry()
{
llSensorRepeat(&amp;quot;&amp;quot;,&amp;quot;&amp;quot;,AGENT,scandist,TWO_PI,10.0);
llWhisper(0,&amp;quot;Scanner is active&amp;quot;);
}

sensor(integer total_number)
{
integer x;
for (x = 0; x &amp;lt; total_number; x++)
{
vector pos = llGetPos();
string Ava_detected = llDetectedName(x);
float diff = llVecDist(pos,llDetectedPos(x));
integer dist = llRound(diff);
if(Ava_detected==access1 || Ava_detected==access2 || Ava_detected==access3 || Ava_detected==access4 || Ava_detected==access5 || Ava_detected==access6 || Ava_detected==access7 || Ava_detected==access8 || Ava_detected==access9 || Ava_detected==access10)
{
ava_known = 1;
}
if(ava_known == 0)
{
string detected = Ava_detected + &amp;quot; @ &amp;quot; + ((string)dist) + &amp;quot;m&amp;quot;;
llWhisper(0,detected);
}
if(dist &amp;lt; distodoor)
{
if(ava_known == 1)
{
llWhisper(0,((string)dist)+&amp;quot; &amp;quot; + ((string)distodoor));
llPlaySound(&amp;quot;startrekdoor&amp;quot;, 0.5);
llSay(0, &amp;quot;Door open for &amp;quot;+(llDetectedName(0)));
llSetPrimitiveParams([PRIM_PHANTOM, TRUE]);
llSleep (15);
llSetPrimitiveParams([PRIM_PHANTOM, FALSE]);
dist = 100;
}
else
{
llSetPrimitiveParams([PRIM_PHANTOM, FALSE]);
llSay(0, &amp;quot;Sorry &amp;quot;+(llDetectedName(0))+&amp;quot;, can&amp;#039;t let you enter, you are not on the access list&amp;quot;);
}
}
}
}


no_sensor()
{
llWhisper(0,&amp;quot;No activity within &amp;quot; + ((string)scandist) + &amp;quot;m&amp;quot;);
}

}&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>Besucherzähler mit E-Mail Benachrichtigung</title>
            <link>http://live.spdns.org/wiki/archiv/opensim/downloads/scripts/besucherzaehler_email?do=revisions&amp;rev=1575021518</link>
            <description>
&lt;h2 class=&quot;sectionedit1&quot; id=&quot;besucherzaehler_mit_e-mail_benachrichtigung&quot;&gt;Besucherzähler mit E-Mail Benachrichtigung&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Damit dieses Script funktionieren kann muss zuerst in der OpenSIM-Konfigurationsdatei opensim.ini die E-Mail Funktion im Abschnitt SMTP eingeschaltet und konfiguriert werden. 
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;// Besucherzähler mit E-Mail Benachrichtung
// von Blub Blinker, www.swiss-sl.ch

float range = 100; // sucht im Radius von 100 Metern nach Besuchern
float rate = 10.0; // Zeitabstand in der erneut gesucht wird, 1,0 = 1 Sekunde

// E-Mail Adresse auf die eigene anpassen
string email_address = &amp;quot;adresse@domain.xyz&amp;quot;;

// Name der zu kontrollierenden Region
// Die versandte E-Mail beinhaltet die Koordinaten
string location_name = &amp;quot;OpenSIM-Region&amp;quot;;

list single_name_list;
list visitor_list;

integer isNameOnList( string name )
{
list single_name_list;
single_name_list += name;

return (-1 != llListFindList( visitor_list, single_name_list ) );
}

sendEmail()
{
string csv = llList2CSV( visitor_list );
llEmail( email_address, &amp;quot;Visitor List: &amp;quot; + location_name, csv );
}

resetList()
{
single_name_list = llDeleteSubList(single_name_list, 0, llGetListLength(single_name_list));
llSay( 0, &amp;quot;Reset abgeschlossen&amp;quot;);
}

// Hilfe Befehle
sayHelp( integer is_owner )
{
if( is_owner )
{
llSay( 0, &amp;quot;Dieses Objekt speichert die Namen von jedem Avatars der&amp;quot; );
llSay( 0, &amp;quot;in den Bereich von &amp;quot;+ (string)((integer)range) + &amp;quot; Metern kommt.&amp;quot; );
llSay( 0, &amp;quot;Kommandos die der Besitzer sagen kann:&amp;quot; );
llSay( 0, &amp;quot;&amp;#039;help&amp;#039; - Zeigt diese Anleitung&amp;quot; );
llSay( 0, &amp;quot;&amp;#039;say list&amp;#039; - Zeigt die Namen aller Avatare auf der Liste&amp;quot;);
llSay( 0, &amp;quot;&amp;#039;reset list&amp;#039; - Loescht die Namen auf der Liste&amp;quot; );
llSay( 0, &amp;quot;&amp;#039; email list&amp;#039; - Sendet die Namen auf der Liste als E-Mail&amp;quot; );
}
else
{
llSay( 0, &amp;quot;Sorry, nur der Besitzer kann editieren.&amp;quot; );
}
}

// Script-Start
default
{
state_entry()
{
llSay(0, &amp;quot;Besucherzaehler wurde gestartet.&amp;quot;);
llSay(0, &amp;quot;Der Besitzer kann mit &amp;#039;help&amp;#039; eine Kurzanleitung anfordern.&amp;quot;);
llSensorRepeat( &amp;quot;&amp;quot;, &amp;quot;&amp;quot;, AGENT, range, TWO_PI, rate );
llListen(0, &amp;quot;&amp;quot;, llGetOwner(), &amp;quot;&amp;quot;);

// Wechsle hier das Zeitintervall in der die E-Mail Benachrichtigung zugesandt werden soll (Standard ist 60x60 Sekunden)
// = 3600 Sekunden = 1x pro Stunde
llSetTimerEvent( 60 * 60 );
}

// Sendet die E-Mail im oben angegebenem Zeitintervall
timer()
{
sendEmail();
resetList();

}

// Gibt den Hilfe-Befehl aus beim anklicken
touch_start( integer num_detected )
{
integer i;
for( i = 0; i &amp;lt; num_detected; i++ )
{
sayHelp( llDetectedKey(i) == llGetOwner() );
}
}

// Erfasst die Avatare mit Zeitstempel
sensor( integer number_detected )
{
integer i;
for( i = 0; i &amp;lt; number_detected; i++ )
{

// Den Eigentümer nicht mitzählen
if( llDetectedKey( i ) != llGetOwner() )
{
string detected_name = llDetectedName( i );
if( isNameOnList( detected_name ) == FALSE ) // Ja oder Nein, TRUE oder FALSE
{
float seconds = llGetWallclock();
float minutes = seconds / 60.0;
float hours = minutes / 60.0;
integer hours_int = (integer) hours;
integer minutes_int = ((integer)minutes) % 60;
if( minutes_int &amp;lt; 10 )
{
visitor_list += (string) hours_int + &amp;quot;:0&amp;quot; + (string) minutes_int;
}
else
{
visitor_list += (string) hours_int + &amp;quot;:&amp;quot; + (string) minutes_int;
}

visitor_list += detected_name;
}
}
}
}

// Besitzer-Befehle
listen( integer channel, string name, key id, string message )
{
if( id != llGetOwner() )
{
return;
}

if( message == &amp;quot;help&amp;quot; ) // Tippe im Chat /0 help und Du erhälst Hilfe zu den Befehlen
{
sayHelp( TRUE );
}
else
if( message == &amp;quot;say list&amp;quot; ) // Tippe im Chat /0 say list und Du erhälst eine Liste aller Avatare
{
llSay( 0, &amp;quot;Avatar-Liste:&amp;quot; );
integer len = llGetListLength( visitor_list );
integer i;
for( i = 0; i &amp;lt; len; i++ )
{
llSay( 0, llList2String(visitor_list, i) );
}
llSay( 0, &amp;quot;Gesamt = &amp;quot; + (string)len );
}
else
if( message == &amp;quot;email list&amp;quot; )
{
sendEmail();
llSay(0, &amp;quot;E-Mail wird versendet.&amp;quot;);

}

else
if( message == &amp;quot;reset list&amp;quot; ) // Tippe im Chat /0 reset list um die Liste zurückzusetzen
{
visitor_list = llDeleteSubList(visitor_list, 0, llGetListLength(visitor_list));
llSay( 0, &amp;quot;Reset erfolgreich.&amp;quot;);
}
}
}&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:38 +0000</pubDate>
        </item>
        <item>
            <title>Randomly Moving</title>
            <link>http://live.spdns.org/wiki/archiv/opensim/downloads/scripts/randomly_moving?do=revisions&amp;rev=1575021522</link>
            <description>
&lt;h2 class=&quot;sectionedit1&quot; id=&quot;randomly_moving&quot;&gt;Randomly Moving&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Dieses Script lässt ein Prim durch Zufall bewegen.
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;void default_event_state_entry()
{
    llSetTimerEvent(0.1);
}

public void default_event_timer() {
    llSetTimerEvent(0.0);
    x += 0.2;
    y += 0.1;

    Prim.Position.x = System.Math.Sin(x) * 10 + 100;
    Prim.Position.y = System.Math.Cos(y) * 10 + 100;
    llSetTimerEvent(0.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:42 +0000</pubDate>
        </item>
        <item>
            <title>Simple Radar</title>
            <link>http://live.spdns.org/wiki/archiv/opensim/downloads/scripts/simple_radar?do=revisions&amp;rev=1575021523</link>
            <description>
&lt;h2 class=&quot;sectionedit1&quot; id=&quot;simple_radar&quot;&gt;Simple Radar&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;//Sable Till - Radar/scannar script.
//You can get a copy of the license this script is under at http://www.gnu.org/copyleft/gpl.html
//Copyright (C) 2006 Sable Till

//This program is free software; you can redistribute it and/or
//modify it under the terms of the GNU General Public License
//as published by the Free Software Foundation; either version 2
//of the License, or (at your option) any later version.

//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, write to the Free Software
//Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.

string status=&amp;quot;none&amp;quot;;
list people;
integer maxScanDistance;
vector color = &amp;lt;0,1,1&amp;gt;;
integer maxPeople = 8;
integer scanType = AGENT;
integer scanFreq=1;

integer count(string name) {
integer i = llListFindList(people, [name]);
if(i ==-1){
people+=[name, 0];
return 0;
} else {
integer count = llList2Integer(people, i+1);
people=llListReplaceList(people, [count+scanFreq], i+1, i+1);
return count;
}
}

//calculate time strings with proper units that are sensibly rounded
string time(integer cnt) {
if(cnt&amp;gt;3600) {
return (string)(cnt/3600)+&amp;quot;hr &amp;quot; + (string)((cnt%3600)/60) +&amp;quot;min&amp;quot;;
}else {
if(cnt&amp;gt;60) {
return (string)(cnt/60)+&amp;quot;min&amp;quot;;
} else {
return (string)cnt+&amp;quot;s&amp;quot;;
}
}
}

//I&amp;#039;m pretty sure there&amp;#039;s a better way to do this but I&amp;#039;m trying to calculate the angle between
//North and the target so I can work out which direction it is in.
float getAngle(vector me, vector target) {
float hyp = llVecDist(me, target);
float yDiff = target.y-me.y;
float xDiff = target.x-me.x;
float angle = llSin(yDiff/hyp);
if(xDiff&amp;gt;0 &amp;amp;&amp;amp; yDiff&amp;gt;0) {
return angle*RAD_TO_DEG;
}
if(xDiff&amp;gt;0 &amp;amp;&amp;amp; yDiff&amp;lt;0) {
return 90-angle*RAD_TO_DEG;
}
if(xDiff&amp;lt;0 &amp;amp;&amp;amp; yDiff&amp;gt;0) {
return angle*RAD_TO_DEG+270;
}
if(xDiff&amp;lt;0 &amp;amp;&amp;amp; yDiff&amp;lt;0) {
return angle*RAD_TO_DEG + 270;
}
return angle*RAD_TO_DEG;
}

default
{
state_entry()
{
llSensorRepeat(&amp;quot;&amp;quot;, &amp;quot;&amp;quot;,scanType, 96, PI, scanFreq);
llSetTimerEvent(6);
}

sensor(integer num_detected) {
people=[];
string result;
integer n=-1;
integer distance=0;
integer detDist;
string name;

vector pos = llGetPos();
//get the dist, name and direction of everyone we just scanned.
for(n=0;n&amp;lt;num_detected &amp;amp;&amp;amp; n&amp;lt;maxPeople;++n) {
vector detPos = llDetectedPos(n);
detDist = (integer)llVecDist(pos, detPos);
float angle = getAngle(llGetPos(), detPos);
name = llKey2Name(llDetectedKey(n));
if(detDist&amp;lt;96) {
people+=detDist;
people+=name;
people+=angle;
}
}
//sort the strided list
people = llListSort(people, 3, TRUE);
//construct settext
num_detected = llGetListLength(people)/3;
for(n=0;n&amp;lt;num_detected;++n) {
detDist=llList2Integer(people, n*3);
name = llList2String(people, n*3+1);
float dir = llList2Float(people, n*3+2);
if(detDist&amp;gt;20 &amp;amp;&amp;amp; distance&amp;lt;=20) {
result+=&amp;quot;&amp;lt;- Chat Range Limit -&amp;gt;\n&amp;quot;;
}
result+=name;
if(detDist&amp;lt;20) {
integer cnt = count(name);
result+=&amp;quot; [&amp;quot;+time(cnt)+&amp;quot;]&amp;quot;;
}
result+=&amp;quot; [&amp;quot;+(string)detDist+&amp;quot;m]&amp;quot;;

if(dir &amp;lt; 0 || dir &amp;gt; 360) {
llOwnerSay(&amp;quot;Error:&amp;quot;+(string)dir+&amp;quot;:&amp;quot;+name);
}
//determine which compass direction they are in.
if(dir &amp;lt;= 22.5) {
result+=&amp;quot; N\n&amp;quot;;
} else {
if(dir &amp;gt; 22.5 &amp;amp;&amp;amp; dir &amp;lt;= 67.5) {
result+=&amp;quot; NE\n&amp;quot;;
} else {
if(dir &amp;gt; 67.5 &amp;amp;&amp;amp; dir &amp;lt;= 112.5) {
result+=&amp;quot; E\n&amp;quot;;
} else {
if(dir &amp;gt; 112.5 &amp;amp;&amp;amp; dir &amp;lt;= 157.5) {
result+=&amp;quot; SE\n&amp;quot;;
} else {
if(dir &amp;gt; 157.5 &amp;amp;&amp;amp; dir &amp;lt;= 202.5) {
result+=&amp;quot; S\n&amp;quot;;
} else {
if(dir &amp;gt; 202.5 &amp;amp;&amp;amp; dir &amp;lt;= 247.5) {
result+=&amp;quot; SW\n&amp;quot;;
} else {
if(dir &amp;gt; 247.5 &amp;amp;&amp;amp; dir &amp;lt;= 292.5) {
result+=&amp;quot; W\n&amp;quot;;
} else {
if(dir &amp;gt; 292.5 &amp;amp;&amp;amp; dir &amp;lt;= 337.5) {
result+=&amp;quot; NW\n&amp;quot;;
} else {
if(dir &amp;gt; 337.5 &amp;amp;&amp;amp; dir &amp;lt; 360) {
result+=&amp;quot; N\n&amp;quot;;
}
}
}

}}}}}}

distance=detDist;
}


//If we detected more (or the same number of) people as maxPeople then shrink down the scan distance to just
//the distance to the furthest one. Otherwise increment it a bit in case there are people further out.
if(num_detected&amp;gt;=maxPeople) {
maxScanDistance=distance+10;
} else {
maxScanDistance+=10;
}

result+=&amp;quot;\nStatus:&amp;quot;+status;
//adjust max people based on the length of result
if(llStringLength(result)&amp;gt;254) {
maxPeople--;
llOwnerSay(&amp;quot;Length is &amp;quot;+(string)llStringLength(result) +
&amp;quot; Decrementing maxPeople to &amp;quot;+(string)maxPeople);
} else {
if(llStringLength(result)&amp;lt;200 &amp;amp;&amp;amp; num_detected&amp;gt;maxPeople) {
maxPeople++;
llOwnerSay(&amp;quot;Length is &amp;quot;+(string)llStringLength(result) +
&amp;quot; Incrementing maxPeople to &amp;quot;+(string)maxPeople);
}
}
llSetText(result, color, 1);
}

no_sensor() {
llSetText(&amp;quot;Status:&amp;quot;+status, color, 1);
maxScanDistance+=10;
llSensorRepeat(&amp;quot;&amp;quot;, &amp;quot;&amp;quot;, scanType, maxScanDistance, PI, scanFreq);
}

//all we do here is check the sims fps and dilation and tone down our scanning if necessary.
timer() {
float fps = llGetRegionFPS();
float timeDilation = llGetRegionTimeDilation();

integer scanDistance;
if(fps&amp;lt;35 || timeDilation &amp;lt;0.9) {
if(maxScanDistance&amp;gt;30) {
scanDistance=30;
}
scanFreq=240;
status = &amp;quot;poor&amp;quot;;
llSetTimerEvent(240);
color=&amp;lt;1,0,0&amp;gt;;
} else
{
if(fps&amp;lt;40 || timeDilation&amp;lt;0.95) {
if(maxScanDistance&amp;gt;64) {
scanDistance=64;
} else {
scanDistance=maxScanDistance;
}
scanFreq=30;
status = &amp;quot;ok&amp;quot;;
llSetTimerEvent(120);
color=&amp;lt;1,1,0&amp;gt;;
} else
{
if(maxScanDistance&amp;gt;96) {
scanDistance=96;
} else {
scanDistance=maxScanDistance;
}
scanFreq=1;
llSetTimerEvent(60);
status = &amp;quot;good&amp;quot;;
color=&amp;lt;0,1,1&amp;gt;;
}}
llSensorRepeat(&amp;quot;&amp;quot;, &amp;quot;&amp;quot;, scanType, scanDistance, PI, scanFreq);
}

}&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>Elevator</title>
            <link>http://live.spdns.org/wiki/archiv/opensim/downloads/scripts/elevator?do=revisions&amp;rev=1575021519</link>
            <description>
&lt;h2 class=&quot;sectionedit1&quot; id=&quot;elevator&quot;&gt;Elevator&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Elevator&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;elevator&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-22&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit2&quot; id=&quot;elevator_main_script&quot;&gt;Elevator Main Script&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;// From the book:
//
// Scripting Recipes for Second Life
// by Jeff Heaton (Encog Dod in SL)
// ISBN: 160439000X
// Copyright 2007 by Heaton Research, Inc.
//
// This script may be freely copied and modified so long as this header
// remains unmodified.
//
// For more information about this book visit the following web site:
//
// http://www.heatonresearch.com/articles/series/22/

integer CHANNEL = 42; // dialog channel
list MENU_MAIN = [&amp;quot;Floor 1&amp;quot;, &amp;quot;Floor 2&amp;quot;, &amp;quot;Floor 3&amp;quot;, &amp;quot;Floor 4&amp;quot;, &amp;quot;Floor 5&amp;quot;, &amp;quot;Floor 6&amp;quot;, &amp;quot;Floor 7&amp;quot;, &amp;quot;Floor 8&amp;quot;, &amp;quot;Floor 9&amp;quot;, &amp;quot;Floor 10&amp;quot;,&amp;quot;Roof&amp;quot;]; // the main menu

float BOTTOM = 22.260;
float FLOOR_HEIGHT = 10;
float SPEED = 2;
float target;


default
{
    state_entry()
    {
        llListen(CHANNEL, &amp;quot;&amp;quot;, NULL_KEY, &amp;quot;&amp;quot;); // listen for dialog answers (from multiple users)
        llSitTarget(&amp;lt;0,-0.5,0.5&amp;gt;, llEuler2Rot(&amp;lt;0,0,-90&amp;gt;) );
        llSetText(&amp;quot;Sit Here to Ride Elevator&amp;quot;,&amp;lt;0,0,0&amp;gt;,1.0);
        target = BOTTOM;
    }
   
    listen(integer channel, string name, key id, string message)
    {
        integer idx = llListFindList(MENU_MAIN, [message]);
        if( idx!=-1 )
        {
            llSay(0,&amp;quot;Elevator heading to &amp;quot; + message + &amp;quot;.&amp;quot; );
            target = BOTTOM + (idx*10);
            state moving;
        }
    }

    changed(integer Change)
    {
        llDialog(llAvatarOnSitTarget(), &amp;quot;Where to?&amp;quot;, MENU_MAIN, CHANNEL);
    }
   
}

state moving
{
   
   
    state_entry()
    {
        llSetTimerEvent(0.1);
    }
   
    timer()
    {
        vector pos = llGetPos();
       
        if( pos.z!=target )
        {
            if( pos.z&amp;gt;target )
            {
                pos.z = pos.z - SPEED;
            }
            else
            {
                pos.z = pos.z + SPEED;
            }
        }
       
        if(  llFabs(pos.z - target) &amp;lt; SPEED )
        {
            pos.z = target;
            llSetTimerEvent(0);
            llSetPos(pos);
            llSay(0,&amp;quot;Elevator has reached its target.&amp;quot; );
            state default;
        }   
       
        llSetPos(pos);
       
    }
}&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Elevator Main Script&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;elevator_main_script&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;23-2117&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit3&quot; id=&quot;elevator_call_button&quot;&gt;Elevator Call Button&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;integer CHANNEL = 42; // dialog channel

default
{
    state_entry()
    {
        llSetText(&amp;quot;Touch to Call Elevator&amp;quot;,&amp;lt;0,0,0&amp;gt;,1.0);
    }

    touch_start(integer total_number)
    {
               
        llRegionSay(42, &amp;quot;Floor 1&amp;quot;);
    }
}&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Elevator Call Button&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;elevator_call_button&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;2118-&amp;quot;} --&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>Invisible Prim 2</title>
            <link>http://live.spdns.org/wiki/archiv/opensim/downloads/scripts/invisible_prim_2?do=revisions&amp;rev=1575021521</link>
            <description>
&lt;h2 class=&quot;sectionedit1&quot; id=&quot;invisible_prim_2&quot;&gt;Invisible Prim 2&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;// Invisible Prim Public v1.1b
// last updated Mar. 22, 2006

init()
{
llSetPrimitiveParams([PRIM_BUMP_SHINY, ALL_SIDES, PRIM_SHINY_NONE, PRIM_BUMP_BRIGHT]);
llOffsetTexture(0.468, 0.0, ALL_SIDES);
llScaleTexture(0.0, 0.0, ALL_SIDES);
llSetAlpha(1.0, ALL_SIDES);
}

refresh()
{
llSetTexture(&amp;quot;38b86f85-2575-52a9-a531-23108d8da837&amp;quot;, ALL_SIDES);
llSleep(30);
llSetTexture(&amp;quot;e97cf410-8e61-7005-ec06-629eba4cd1fb&amp;quot;, ALL_SIDES);
}

default
{
state_entry()
{
init();
llSetTimerEvent(5);
}

on_rez(integer start_param)
{
init();
}

timer()
{
if ((integer)llGetWallclock() % 60 &amp;lt; 10)
{
refresh();
}
}
} &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>Avatar Trace Cam</title>
            <link>http://live.spdns.org/wiki/archiv/opensim/downloads/scripts/avatar_trace_cam?do=revisions&amp;rev=1575021518</link>
            <description>
&lt;h2 class=&quot;sectionedit1&quot; id=&quot;avatar_trace_cam&quot;&gt;Avatar Trace Cam&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Überwachungskamera die automatisch in die Richtung zu einem Avatar zeigt.
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;default {
    state_entry()
    {
        llSetStatus(STATUS_PHYSICS,TRUE); // Gibt dem Objekt physikalische Eigenschaften.
        llSetHoverHeight(1.0,FALSE,1); // Das objekt schwebt einen Meter über dem Boden.
        llSensorRepeat(&amp;quot;&amp;quot;,&amp;quot;&amp;quot;,AGENT,10,PI,11); // Ein Sensor sucht nach Agenten im Umkeis von 10 Metern im 11 Sekunden Takt.
    }
 
    sensor(integer det)
    {
        vector pos = llDetectedPos(0); // Die Position des am nachsten stehenden Avatars wird zugewiesen.
        llLookAt(pos,1,1); // Das Objekt zeigt in Richtung des Avatars.
    }
}&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:38 +0000</pubDate>
        </item>
        <item>
            <title>Fire Particle</title>
            <link>http://live.spdns.org/wiki/archiv/opensim/downloads/scripts/fire_particle?do=revisions&amp;rev=1575021520</link>
            <description>
&lt;h2 class=&quot;sectionedit1&quot; id=&quot;fire_particle&quot;&gt;Fire Particle&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;//// &amp;quot;Fire&amp;quot; PARTICLE TEMPLATE v1 - by Jopsy Pendragon - 4/8/2008
//// You are free to use this script as you please, so long as you include this line:
//** The original &amp;#039;free&amp;#039; version of this script came from THE PARTICLE LABORATORY. **//

// SETUP:  Drop one optional particle texture and this script into a prim.
// Particles should start automatically. (Reset) the script if you insert a
// particle texture later on.  Add one or more CONTROLLER TEMPLATES to any
// prims in the linked object to control when particles turn ON and OFF.

// Customize the particle_parameter values below to create your unique 
// particle effect and click SAVE.  Values are explained along with their
// min/max and default values further down in this script.


string  CONTROLLER_ID = &amp;quot;A&amp;quot;; // See comments at end regarding CONTROLLERS.
integer AUTO_START = TRUE;   // Optionally FALSE only if using CONTROLLERS.

list particle_parameters=[]; // stores your custom particle effect, defined below.
list target_parameters=[]; // remembers targets found using TARGET TEMPLATE scripts.

default {
    state_entry() {
        particle_parameters = [  // start of particle settings
           // Texture Parameters:
           PSYS_SRC_TEXTURE, llGetInventoryName(INVENTORY_TEXTURE, 0), 
           PSYS_PART_START_SCALE, &amp;lt;.4,.4,FALSE&amp;gt;,  PSYS_PART_END_SCALE, &amp;lt;.5,.5, FALSE&amp;gt;, 
           PSYS_PART_START_COLOR, &amp;lt;1,1,1&amp;gt;,    PSYS_PART_END_COLOR, &amp;lt;.4,.1,0&amp;gt;, 
           PSYS_PART_START_ALPHA, (float).8,            PSYS_PART_END_ALPHA, (float).0,     
         
           // Production Parameters:
           PSYS_SRC_BURST_PART_COUNT, (integer)1, 
           PSYS_SRC_BURST_RATE, (float) 0.0,  
           PSYS_PART_MAX_AGE, (float)1.5, 
           PSYS_SRC_MAX_AGE,(float) 0.0,  
        
           // Placement Parameters:
           PSYS_SRC_PATTERN, (integer)2, // 1=DROP, 2=EXPLODE, 4=ANGLE, 8=ANGLE_CONE,
           
           // Placement Parameters (for any non-DROP pattern):
           PSYS_SRC_BURST_SPEED_MIN, (float).1,   PSYS_SRC_BURST_SPEED_MAX, (float).3, 
        // PSYS_SRC_BURST_RADIUS, 0.0,
        
           // Placement Parameters (only for ANGLE &amp;amp; CONE patterns):
           PSYS_SRC_ANGLE_BEGIN, (float) .03*PI,     PSYS_SRC_ANGLE_END, (float)0.00*PI,  
        // PSYS_SRC_OMEGA, &amp;lt;0,0,0&amp;gt;, 
        
           // After-Effect &amp;amp; Influence Parameters:
           PSYS_SRC_ACCEL, &amp;lt;0.0,0.0,1.5&amp;gt;,  
        // PSYS_SRC_TARGET_KEY,      llGetLinkKey(llGetLinkNum() + 1),       
              
           PSYS_PART_FLAGS, (integer)( 0         // Texture Options:     
                                | PSYS_PART_INTERP_COLOR_MASK   
                                | PSYS_PART_INTERP_SCALE_MASK   
                                | PSYS_PART_EMISSIVE_MASK   
                                | PSYS_PART_FOLLOW_VELOCITY_MASK
                                                  // After-effect &amp;amp; Influence Options:
                                | PSYS_PART_WIND_MASK            
                                | PSYS_PART_BOUNCE_MASK          
                             // | PSYS_PART_FOLLOW_SRC_MASK     
                             // | PSYS_PART_TARGET_POS_MASK     
                             // | PSYS_PART_TARGET_LINEAR_MASK   
                            ) 
            //end of particle settings                     
        ];
        
        if ( AUTO_START ) llParticleSystem( particle_parameters );
        
    }
    
    link_message( integer sibling, integer num, string mesg, key target_key ) {
        if ( mesg != CONTROLLER_ID ) { // this message isn&amp;#039;t for me.  Bail out.
            return;
        } else if ( num == 0 ) { // Message says to turn particles OFF:
            llParticleSystem( [ ] );
        } else if ( num == 1 ) { // Message says to turn particles ON:
            llParticleSystem( particle_parameters + target_parameters );
        } else if ( num == 2 ) { // Turn on, and remember and use the key sent us as a target:
            target_parameters = [ PSYS_SRC_TARGET_KEY, target_key ];
            llParticleSystem( particle_parameters + target_parameters );
        } else { // bad instruction number
            // do nothing.
        }            
    }
        
}


//============================= About Parameters =============================
// There are 22-ish NAMED attributes that affect a particle display.
// To customize a display you give each a VALUE.
// For example: PSYS_PART_START_COLOR is a named attribute,
// and &amp;lt;1.0, 0.5, 0.0&amp;gt; is a color VALUE (orange, in this case).
// 
// As long as your &amp;#039;names&amp;#039; and &amp;#039;values&amp;#039; are paired up properly, they can
// be in any order!  Any you omit a pair, it reverts to a default value.

//============================= Texture Parameters =============================
//
// TEXTURE, can be an &amp;quot;Asset UUID&amp;quot; key copied from a texture 
//          that you have full permissions to, or the name of
//          a texture in the prim&amp;#039;s inventory.
//
// SCALE, (size) 0.0 to 4.0 meters wide, by 0.0 to 4.0 meters tall. (default 1x1)
//          Textures are FLAT, so the &amp;#039;z&amp;#039; part of the vector is ignored.
//          Values smaller than 0.04x0.04 may not get rendered at all.
//          Tiny particles vanish if the viewer is not near them.
//
// BEGIN_SCALE sets particle start size.  
// END_SCALE (end size) is ignored, if the INTERP_SCALE_MASK option is disabled.
//
// COLOR, &amp;lt; RED, GREEN, BLUE &amp;gt; from &amp;lt;0.00,0.00,0.00&amp;gt; (black) to &amp;lt;1.00,1.00,1.00&amp;gt; (white/default)
// ALPHA, 1.0 = 100% visible(default), 0.0 = invisible.  Less than 0.1 might not get seen.
// START_COLOR and START_ALPHA set the color and transparency of newly created particles. 
// END_COLOR and END_ALPHA are ignored, if the INTERP_COLOR_MASK option is disabled.
         
         
//============================= Production Parameters =============================
//
// BURST_PART_COUNT: quantity of particles per burst, 1 to 4096 (default 1), 
//
// BURST_RATE: seconds to delay between particle bursts. 0.0 to 30.0 (default 0.1)
//
// PART_MAX_AGE: particle lifespan in seconds, 0.00 to 30.0 (default=10.0)
//               PART_MAX_AGE less than 0.5 might not be visible.
//
// The default total number of particles that can be seen is 4096, if one or more 
// emitters try to create more than that, many will not be seen, and it may cause
// viewer lag.  Use as few particles as you can for your effect:
// AGE/RATE * COUNT will tell you approximately how many particles your emitter creates.
//
// SRC_MAX_AGE: emitter auto shut-off timer. 1.0 to 60.0 seconds. 0.0 = never stop. (default)


//============================= Placement Parameters =============================
//                
// PATTERN:   
//      DROP, ignores all other placement settings.
//      EXPLODE, spray particles in all directions
//      ANGLE, sprays a flat &amp;quot;fan&amp;quot; shape defined by ANGLE_BEGIN and END values
//      CONE, sprays &amp;quot;ring&amp;quot; or &amp;quot;cone&amp;quot; shapes defined by ANGLE_BEGIN and END values
//
// RADIUS:  0.0 to 50.0?  distance from emitter to create new particles
//      (RADIUS is disabled with DROP pattern and the FOLLOW_SRC &amp;amp; TARGET_LINEAR options)
//        
// SPEED: 0.00 to 50.0?  Sets min/max starting velocities for non-drop patterns. (default: 1.0)
//        
// ANGLE_BEGIN &amp;amp; END:  0.00*PI (up) to 1.00*PI (down),  (Only for ANGLE &amp;amp; CONE patterns)
//       (Values work much like the Sphere-prim&amp;#039;s DIMPLE attributes.) (defaults: 0.0)
//
// OMEGA: &amp;lt;x,y,z&amp;gt; Sets how much to rotate angle/cone spray direction after
//                every burst. 0.0 to PI?  (default: &amp;lt;0,0,0&amp;gt;)

//======================== After-Effects &amp;amp; Influence Parameters ================
//
// ACCEL, x,y,z 0.0 to 50.0?  sets a constant force, (affects all patterns)
//          Causes particles to drift up/down or in a compass direction.
//          Use ACCEL to create the illusion of (anti-)gravity or a directional wind.
//          (ineffective with TARGET_LINEAR option)
//       
// TARGET_KEY,  &amp;quot;key&amp;quot;, (requires the TARGET option be enabled).  
//       &amp;quot;key&amp;quot; can be a variety of many different things:
         // llGetOwner()
         // llGetKey() target self 
         // llGetLinkKey(1) target parent prim
         // llGetLinkKey(llGetLinkNum() + 1) target next prim in link set 
         //
         // WARNING: New copies of objects get new keys, you can&amp;#039;t simply paste
         // a prim&amp;#039;s key into your script and expect it to always work.  Visit
         // the Particle Laboratory&amp;#039;s section on TARGETS for a variety of ways
         // to dynamically find your target&amp;#039;s key. There are different &amp;#039;best ways&amp;#039;
         // depending on if your target is linked to your emitter or not.


//============================= About Options =============================
//    
// Each option may be ON/ENABLED (no leading // )
// or OFF/DISABLED (by putting a // in front of it.)
// Options are combined together in a special way, (using the | symbol).
// This creates one single Parameter for PSYS_PART_FLAGS.

              
//============================= Texture Options =============================
//
// EMISSIVE: identical to &amp;quot;full bright&amp;quot; setting on prims     
//   
// FOLLOW_VELOCITY: particle texture &amp;#039;tilts&amp;#039; towards the direction it&amp;#039;s moving
//
// INTERP_COLOR: causes particle COLOR and ALPHA(transparency) to change over it&amp;#039;s lifespan
//
// INTERP_SCALE: causes particle SCALE(size) to change over it&amp;#039;s lifespan


//======================== After-Effects &amp;amp; Influences Options ================
//
// BOUNCE:  particles bounce up from the z-altitude of emitter, and cannot fall below it.
//
// WIND: the sim&amp;#039;s wind will push particles around
//
// FOLLOW_SRC: makes particles move (but not rotate) if their emitter moves, (disables RADIUS)
//
// TARGET_POS: causes particles to arrive at a some target at end of of their lifespan.
//
// TARGET_LINEAR: forces particles to form into an even line from emitter to target
//                and forces a DROP-like pattern and disables effects of WIND and ACCEL



//========================================================================
//======================== USING CONTROL TEMPLATES =======================
//
// Want to control when your particles turn ON and OFF?   You can!
// 
// Drop one (or more) of the CONTROL TEMPLATES from the particle laboratory
// into your object containing this script.  That&amp;#039;s it!

// Your controls should be effective immediately.  (Some controllers can be
// adjusted and tuned, open them and read the USAGE notes to see.)
//
// One control template can control several particle templates in the
// same object.   (keep in mind that each prim can only have ONE
// particle effect active at a time).
//
// The &amp;#039;particle_effect_name&amp;#039; value must be the same in both the control
// and particle template to work.  You can change that value and have
// a controller for one effect, and a different controller for a different
// effect in the same object.
//


//======================================== END ===============================default&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>Flashlight</title>
            <link>http://live.spdns.org/wiki/archiv/opensim/downloads/scripts/flashlight?do=revisions&amp;rev=1575021520</link>
            <description>
&lt;h2 class=&quot;sectionedit1&quot; id=&quot;flashlight&quot;&gt;Flashlight&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Ideal für Disco´s etc.
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;/// Flashlight
default { 
state_entry() { 
llSetTimerEvent( 1.0 ); 
llSetPrimitiveParams([PRIM_POINT_LIGHT,TRUE, 
&amp;lt;1.0,1.0,1.0&amp;gt;, 1.0, 10.0, 0.00 ]); 
// color, intensity, radius, fall-off 
} 
 
timer() { state blink_off; } 
} 
 
state blink_off { 
state_entry() { 
llSetTimerEvent( 1.0 ); 
llSetPrimitiveParams([PRIM_POINT_LIGHT, TRUE, 
&amp;lt;0.0,1.0,0.0&amp;gt;, 1.0, 10.0, 0.00 ]); 
// color, intensity, radius, fall-off 
} 
 
timer() { state default; } 
}&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>Freeview Media Screen</title>
            <link>http://live.spdns.org/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>Sleep</title>
            <link>http://live.spdns.org/wiki/archiv/opensim/downloads/scripts/sleep?do=revisions&amp;rev=1575021524</link>
            <description>
&lt;h2 class=&quot;sectionedit1&quot; id=&quot;sleep&quot;&gt;Sleep&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Schlaf-Stellung.
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;// Francis wuz here
integer broadcast = 20;

// A More Neutral Sleeping Position
//vector target = &amp;lt;-1.06585, 0.71774, 0.18293&amp;gt;;
//rotation targetRot = &amp;lt;0.50028, -0.49972, -0.50028, 0.49972&amp;gt;;

// A More relaxed sleeping position
vector target = &amp;lt;-1.15419, 0.56328, -0.25744&amp;gt;;
rotation targetRot = &amp;lt;0.52105, -0.49829, -0.46875, 0.51038&amp;gt;;

integer debugRotation = FALSE;
key sitAgent = NULL_KEY;
integer gotPermission = FALSE;

integer time = 0;
default
{
    state_entry()
    {
        llSetSitText( &amp;quot;Sleep&amp;quot; );
        llSitTarget( target, targetRot );
        if ( debugRotation ) {
            llListen( 1977, &amp;quot;Rotation Broadcaster&amp;quot;, NULL_KEY, &amp;quot;&amp;quot; );
            llListen( 1978, &amp;quot;Rotation Broadcaster&amp;quot;, NULL_KEY, &amp;quot;&amp;quot; );
        }
    }
    listen(integer channel, string name, key id, string message ) {
        if ( channel == 1977 )
            targetRot = (rotation) message;
        else
            target = (vector) message;
            
        llSitTarget( target, targetRot ); 
        if ( time == 0 )
            llSay(0, (string) targetRot + &amp;quot;, &amp;quot; + (string)target );
        time = (time +1) % 50;
    }
    changed(integer change) {
        if (change &amp;amp; CHANGED_LINK)
        {
            key agent = llAvatarOnSitTarget();
            if ( sitAgent == NULL_KEY &amp;amp;&amp;amp; agent != NULL_KEY ) {
                // Someone new sitting down
                sitAgent = agent;
                llRequestPermissions(sitAgent,PERMISSION_TRIGGER_ANIMATION);
            }
            else if ( sitAgent != NULL_KEY &amp;amp;&amp;amp; agent == NULL_KEY) {
                // sitting down person got up - wake up :)
                if ( gotPermission )
                    llStopAnimation(&amp;quot;sleep&amp;quot;);
                // Reset the script because we don&amp;#039;t have a way of releasing permissions :)
                llResetScript();
            }
        }        
    }
    run_time_permissions(integer parm) {
        if(parm == PERMISSION_TRIGGER_ANIMATION) {
            gotPermission = TRUE;
            llStartAnimation(&amp;quot;sleep&amp;quot;);
        }
    }
    
}&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>Snow 2 (Schnee)</title>
            <link>http://live.spdns.org/wiki/archiv/opensim/downloads/scripts/snow_2?do=revisions&amp;rev=1575021524</link>
            <description>
&lt;h2 class=&quot;sectionedit1&quot; id=&quot;snow_2_schnee&quot;&gt;Snow 2 (Schnee)&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;Snow
{
	quota	30000
	material	Flare
	particle_width	0.3
	particle_height	0.3
	cull_each	true
	renderer	billboard
	sorted	true
	local_space	false
	iteration_interval	0
	nonvisible_update_timeout	0
	billboard_type	point
	billboard_origin	center
	billboard_rotation_type	texcoord
	common_up_vector	0 1 0
	point_rendering	false
	accurate_facing	false

	emitter Box
	{
		angle	0
		colour	1 1 1 1
		colour_range_start	1 1 1 1
		colour_range_end	1 1 1 1
		direction	0 -1 0
		emission_rate	1250
		position	0 5 0
		velocity	10
		velocity_min	10
		velocity_max	15
		time_to_live	20
		time_to_live_min	20
		time_to_live_max	20
		duration	0
		duration_min	0
		duration_max	0
		repeat_delay	0
		repeat_delay_min	0
		repeat_delay_max	0
		width	200
		height	200
		depth	1
	}

	affector DeflectorPlane
	{
		plane_point	0 0 0
		plane_normal	0 1 0
		bounce	0
	}

	affector DirectionRandomiser
	{
		randomness	7
		scope	1
		keep_velocity	true
	}
}&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>Sounds</title>
            <link>http://live.spdns.org/wiki/archiv/opensim/downloads/sounds?do=revisions&amp;rev=1575021526</link>
            <description>
&lt;h2 class=&quot;sectionedit1&quot; id=&quot;sounds&quot;&gt;Sounds&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Sound-Clips für OpenSIM dürfen maximal 10 Sekunden lang sein und müssen im Dateiformat .WAV vorliegen, bei einer Samplingrate von 44,1 kHZ, Mono oder Stereo. Um sich passende Sound-Clips zurechtzuschneiden, zu konvertieren, mit Effekten versehen wie z.B. Hall, oder Loop (Endlosschleife) und für OpenSIM zu speichern, eignet sich unter anderem das kostenlose Audio-Programm „&lt;a href=&quot;http://audacity.sourceforge.net/?lang=de&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;http://audacity.sourceforge.net/?lang=de&quot; rel=&quot;ugc nofollow noopener&quot;&gt;Audacity&lt;/a&gt;“.
&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;Sounds&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;sounds&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-456&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit2&quot; id=&quot;sound-sammlungen&quot;&gt;Sound-Sammlungen&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;http://www.computermusictutorials.com&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;http://www.computermusictutorials.com&quot; rel=&quot;ugc nofollow noopener&quot;&gt;http://www.computermusictutorials.com&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;http://www.soundsnap.com&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;http://www.soundsnap.com&quot; rel=&quot;ugc nofollow noopener&quot;&gt;http://www.soundsnap.com&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;http://www.delamar.de/category/free-samples&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;http://www.delamar.de/category/free-samples&quot; rel=&quot;ugc nofollow noopener&quot;&gt;http://www.delamar.de/category/free-samples&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;http://www.light2art.de/downloads.html&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;http://www.light2art.de/downloads.html&quot; rel=&quot;ugc nofollow noopener&quot;&gt;http://www.light2art.de/downloads.html&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Sound-Sammlungen&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;sound-sammlungen&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;457-&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>Bounce</title>
            <link>http://live.spdns.org/wiki/archiv/opensim/downloads/scripts/bounce?do=revisions&amp;rev=1575021518</link>
            <description>
&lt;h2 class=&quot;sectionedit1&quot; id=&quot;bounce&quot;&gt;Bounce&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;default {
    state_entry() {
        llSetTimerEvent( 15 );
   
    }
    timer() {
            float mass = llGetMass();
           
           
           
            vector force = &amp;lt;0,0,10.0&amp;gt;;
            vector result = mass * force;
           
            result.x = (float) result.x;
            result.y = (float) result.y;
            result.z = (float) result.z;
           
         llApplyImpulse(result,FALSE);
    }

}


// *MAKE SURE PRIM IS SET TO PHYSICAL&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:38 +0000</pubDate>
        </item>
        <item>
            <title>Fireworks</title>
            <link>http://live.spdns.org/wiki/archiv/opensim/downloads/scripts/fireworks?do=revisions&amp;rev=1575021520</link>
            <description>
&lt;h2 class=&quot;sectionedit1&quot; id=&quot;fireworks&quot;&gt;Fireworks&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;//inspired by Xah Lee (http://xahlee.org/sl/)
 
 
default
{
    state_entry() {
    llListen(0, &amp;quot;&amp;quot;, NULL_KEY, &amp;quot;&amp;quot;);
    }
    listen(integer channel, string name, key id, string message) {
        if (message == &amp;quot;off&amp;quot;) {
        llParticleSystem([]);
        }
        else {
            if (message == &amp;quot;on&amp;quot;) {
            integer bounce = 0;
            integer glow = 1;        
            integer interpColor = 1;    
            integer interpSize = 1;    
            integer followSource = 0;    
            integer followVel = 1;
            integer wind = 1;        
            integer pattern = PSYS_SRC_PATTERN_EXPLODE;
            key target = &amp;quot;&amp;quot;;
            float age = 9.0;
            float maxSpeed = 3.0;            
            float minSpeed = 3.0;            
            string texture = &amp;quot;168e6813-096e-07ea-97ae-fd416826f627&amp;quot;;           
            float startAlpha = 0.9;           
            float endAlpha = 0.0;            
            float SC1 = llFrand(1.0);                //makes the color random
            float SC2 = llFrand(1.0);               //you can comment out this section
            float SC3 = llFrand(1.0);                //and set the start color to your choice
            vector startColor = &amp;lt;SC1,SC2,SC3&amp;gt;;       //change this to set a particular start color
            vector endColor = &amp;lt;0.0,0.0,1.0&amp;gt;;      
            vector startSize = &amp;lt;0.3,0.3,0&amp;gt;;     
            vector endSize = &amp;lt;0.1,0.1,0&amp;gt;;       
            vector push = &amp;lt;0.0,0.0,-0.8&amp;gt;;          
            float life = 0;           
            integer count = 100;       
            float rate = 3.5;                         //sets the rate of bursts
            float radius = 0.1;       
            float outerAngle = 1;   
            float innerAngle = 0.9;    
            vector omega = &amp;lt;0,0,1&amp;gt;;
            integer flags = 0;
            if (target == &amp;quot;owner&amp;quot;) target = llGetOwner();
            if (target == &amp;quot;self&amp;quot;) target = llGetKey();
            if (glow == 1) flags = flags | PSYS_PART_EMISSIVE_MASK;
            if (bounce == 1) flags = flags | PSYS_PART_BOUNCE_MASK;
            if (interpColor == 1) flags = flags | PSYS_PART_INTERP_COLOR_MASK;
            if (interpSize == 1) flags = flags | PSYS_PART_INTERP_SCALE_MASK;
            if (wind == 1) flags = flags | PSYS_PART_WIND_MASK;
            if (followSource == 1) flags = flags | PSYS_PART_FOLLOW_SRC_MASK;
            if (followVel == 1) flags = flags | PSYS_PART_FOLLOW_VELOCITY_MASK;
            if (target != &amp;quot;&amp;quot;) flags = flags | PSYS_PART_TARGET_POS_MASK;
            llParticleSystem([  PSYS_PART_MAX_AGE,7,
                PSYS_PART_FLAGS,flags,
                PSYS_PART_START_COLOR, startColor,
                PSYS_PART_END_COLOR, endColor,
                PSYS_PART_START_SCALE,startSize,
                PSYS_PART_END_SCALE,endSize,
                PSYS_SRC_PATTERN, pattern,
                PSYS_SRC_BURST_RATE,(float)rate,
                PSYS_SRC_ACCEL, push,
                PSYS_SRC_BURST_PART_COUNT,count,
                PSYS_SRC_BURST_RADIUS,(float)radius,
                PSYS_SRC_BURST_SPEED_MIN,(float)minSpeed,
                PSYS_SRC_BURST_SPEED_MAX,(float)maxSpeed,
                PSYS_SRC_TARGET_KEY,target,
                PSYS_SRC_INNERANGLE,(float)innerAngle,
                PSYS_SRC_OUTERANGLE,(float)outerAngle,
                PSYS_SRC_OMEGA, omega,
                PSYS_SRC_MAX_AGE, (float)life,
                PSYS_SRC_TEXTURE, texture,
                PSYS_PART_START_ALPHA, (float)startAlpha,
                PSYS_PART_END_ALPHA, (float)endAlpha]);
            }
        }
    }
}&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>Grafitti Board</title>
            <link>http://live.spdns.org/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>Invisible Prim</title>
            <link>http://live.spdns.org/wiki/archiv/opensim/downloads/scripts/invisible_prim?do=revisions&amp;rev=1575021521</link>
            <description>
&lt;h2 class=&quot;sectionedit1&quot; id=&quot;invisible_prim&quot;&gt;Invisible Prim&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;default
{
    state_entry()
    {
        llSetPrimitiveParams([PRIM_BUMP_SHINY, ALL_SIDES, PRIM_SHINY_NONE]);
        llScaleTexture(0.0, 0.0, ALL_SIDES);
        llSetAlpha(1.0, ALL_SIDES);
        llSetTexture(&amp;quot;38b86f85-2575-52a9-a531-23108d8da837&amp;quot;, 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:41 +0000</pubDate>
        </item>
        <item>
            <title>Message Board</title>
            <link>http://live.spdns.org/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>Online Indicator</title>
            <link>http://live.spdns.org/wiki/archiv/opensim/downloads/scripts/online_indicator?do=revisions&amp;rev=1575021521</link>
            <description>
&lt;h2 class=&quot;sectionedit1&quot; id=&quot;online_indicator&quot;&gt;Online Indicator&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;////////////////////////////////////////////////////////////////////////////////////////////////
//    Copyright (c) 2008 by Kristy Fanshaw                                                    //
////////////////////////////////////////////////////////////////////////////////////////////////
//   This program is free software: you can redistribute it and/or modify                     //
//    it under the terms of the GNU General Public License as published by                    //
//    the Free Software Foundation, either version 3 of the License, or                       //
//    (at your option) any later version.                                                     //
//                                                                                            //
//    Vendor System 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.                                            //
//                                                                                            //
//    To get a copy of the GNU General Public License, see &amp;lt;http://www.gnu.org/licenses/&amp;gt;.    //
////////////////////////////////////////////////////////////////////////////////////////////////
 
key user_key = &amp;quot;00000000-0000-0000-0000-000000000000&amp;quot;;       // must be agent UUID whose status it will indicate
integer time = 30;                                           // time within the message should be written.
string url = &amp;quot;http://world.secondlife.com/resident/&amp;quot;;
key blank = &amp;quot;5748decc-f629-461c-9a36-a35a221fe21f&amp;quot;;
string name;
key toucher;
string status;
 
default
{
    state_entry()
    {
        llSetText(&amp;quot;&amp;quot;, &amp;lt;1,0,0&amp;gt;, 1.0);
        llSetTexture(blank, ALL_SIDES);
        llRequestAgentData( user_key, DATA_NAME);   
    }
    dataserver(key queryid, string data)
    {
        name = data;
        llSetObjectName(name + &amp;quot;&amp;#039;s Online Detector&amp;quot;);
        state show;
    }
}
state show
{   
    state_entry()
    {
        llSetTimerEvent(10);
    } 
    timer()
    {
        llHTTPRequest( url + (string)user_key,[HTTP_METHOD,&amp;quot;GET&amp;quot;],&amp;quot;&amp;quot;);
        llRequestAgentData( user_key, DATA_ONLINE);   
    } 
    on_rez(integer start_param)
    {
        llSetText(&amp;quot;&amp;quot;, &amp;lt;1,0,0&amp;gt;, 1.0);
        llSetTexture(blank, ALL_SIDES);
    } 
    http_response(key request_id,integer status, list metadata, string body)
    { 
        if (llSubStringIndex(body, &amp;quot;blank.jpg&amp;quot;) == -1)
                {
                        integer start_UUID = llSubStringIndex(body,&amp;quot;&amp;lt;img alt=\&amp;quot;profile image\&amp;quot; src=\&amp;quot;http://secondlife.com/app/image/&amp;quot;) + llStringLength(&amp;quot;&amp;lt;img alt=\&amp;quot;profile image\&amp;quot; src=\&amp;quot;http://secondlife.com/app/image/&amp;quot;);
                        integer end_UUID = llSubStringIndex(body,&amp;quot;\&amp;quot; class=\&amp;quot;parcelimg\&amp;quot; /&amp;gt;&amp;quot;) - 3;
                        string profile_pic = llGetSubString(body, start_UUID, end_UUID);
                        llSetTexture((key)profile_pic, ALL_SIDES);
                }
        else
        {
            llSetTexture(blank, ALL_SIDES);
        }
    }
    dataserver(key queryid, string data)
    {
        if ( data == &amp;quot;1&amp;quot; ) 
        {
            status = &amp;quot; is online&amp;quot;;
 
            llSetText(name + status, &amp;lt;0,1,0&amp;gt;, 1.0);
        }
        else if (data == &amp;quot;0&amp;quot;)
        {
            status = &amp;quot; is offline&amp;quot;;
 
            llSetText(name + status, &amp;lt;1,0,0&amp;gt;, 1.0);
        }
 
    }
    touch_start(integer num_detected)
    {
        toucher = llDetectedKey(0);
        state msg;
    }
}
state msg
{
     state_entry()
    {
        llListen(0,&amp;quot;&amp;quot;,toucher,&amp;quot;&amp;quot;);
        llInstantMessage(toucher, &amp;quot;write your message to &amp;quot; + name +&amp;quot; - you have &amp;quot; +(string)time + &amp;quot; seconds&amp;quot;);
        llInstantMessage(toucher, &amp;quot;to see &amp;quot; + name +&amp;quot;&amp;#039;s profile, click this link here: secondlife:///app/agent/&amp;quot; + (string)user_key + &amp;quot;/about&amp;quot;);
        llSetTimerEvent(time);   
    }
    listen(integer ch, string name, key id, string msg)
    {
        llInstantMessage(user_key, llKey2Name(toucher) + &amp;quot; sent you a message from &amp;quot; + llGetRegionName() + &amp;quot;: &amp;quot; + msg);
        llInstantMessage(toucher, &amp;quot;message is sent.&amp;quot;);
        llListenRemove(0);
        state show;
    }
    timer()
    {
        llInstantMessage(toucher, &amp;quot;time is up - touch again to write a message&amp;quot;);
        llListenRemove(0); 
        state show;
    }
}&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>Particle System</title>
            <link>http://live.spdns.org/wiki/archiv/opensim/downloads/scripts/particle_system?do=revisions&amp;rev=1575021522</link>
            <description>
&lt;h2 class=&quot;sectionedit1&quot; id=&quot;particle_system&quot;&gt;Particle System&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;//Originally by Ama Omega
default
{
    state_entry()
    {
        llSleep(1); // Do something..
    }
    touch_start(integer total_number)
    {
        // mask flags - set to TRUE (or 1) to enable
        integer bounce = 0;    // Make particles bounce on Z plane of object
        integer glow = 1;        // Make the particles glow
        integer interpColor = 1;    // Go from start to end color
        integer interpSize = 1;    // Go from start to end size
        integer followSource = 1;    // Particles follow the source
        integer followVel = 1;    // Particles turn to velocity direction
        integer wind = 0;        // Particles affected by wind
        //pattern:
        //integer pattern = PSYS_SRC_PATTERN_ANGLE;
        //integer pattern = PSYS_SRC_PATTERN_ANGLE_CONE_EMPTY;
        //integer pattern = PSYS_SRC_PATTERN_ANGLE_CONE;
        //integer pattern = PSYS_SRC_PATTERN_DROP;
        integer pattern = PSYS_SRC_PATTERN_EXPLODE;
        // Select a target for particles to go towards
        // &amp;quot;&amp;quot; for no target, &amp;quot;owner&amp;quot; will follow object owner
        //    and &amp;quot;self&amp;quot; will target this object
        //    or put the key of an object for particles to go to
        //key target = &amp;quot;&amp;quot;;
        key target = &amp;quot;self&amp;quot;;
        //key target = &amp;quot;owner&amp;quot;;
        // particle parameters
        float age = 20;                  // Life of each particle
        float maxSpeed = 1;            // Max speed each particle is spit out at
        float minSpeed = 1;            // Min speed each particle is spit out at
        string texture = &amp;quot;168e6813-096e-07ea-97ae-fd416826f627&amp;quot;;  // Texture used for particles
        float startAlpha = 0;           // Start alpha (transparency) value
        float endAlpha = 1;           // End alpha (transparency) value (if interpColor = TRUE)
        vector startColor = &amp;lt;0,0,1&amp;gt;;    // Start color of particles &amp;lt;R,G,B&amp;gt;
        vector endColor = &amp;lt;1,0,0&amp;gt;;      // End color of particles &amp;lt;R,G,B&amp;gt; (if interpColor = TRUE)
        vector startSize = &amp;lt;1,1,0&amp;gt;;     // Start size of particles &amp;lt;x,y&amp;gt;
        vector endSize = &amp;lt;1,1,0&amp;gt;;       // End size of particles (if interpSize == TRUE)
        vector push = &amp;lt;0,0,0.05f&amp;gt;;          // Force pushed on particles
        // system parameters
        float life = 0;             // Life in seconds for the system to make particles
        integer count = 10;        // How many particles to emit per BURST
        float rate = 0.03f;            // How fast (rate) to emit particles
        float radius = 0.5;          // Radius to emit particles for BURST pattern
        float outerAngle = 1.54;    // Outer angle for all ANGLE patterns
        float innerAngle = 1.55;    // Inner angle for all ANGLE patterns
        vector omega = &amp;lt;0,0,1&amp;gt;;    // Rotation of ANGLE patterns around the source
        integer flags = 0;
        if (target == &amp;quot;owner&amp;quot;) target = llGetOwner();
        if (target == &amp;quot;self&amp;quot;) target = llGetKey();
        if (glow == 1) flags = flags | PSYS_PART_EMISSIVE_MASK;
        if (bounce == 1) flags = flags | PSYS_PART_BOUNCE_MASK;
        if (interpColor == 1) flags = flags | PSYS_PART_INTERP_COLOR_MASK;
        if (interpSize == 1) flags = flags | PSYS_PART_INTERP_SCALE_MASK;
        if (wind == 1) flags = flags | PSYS_PART_WIND_MASK;
        if (followSource == 1) flags = flags | PSYS_PART_FOLLOW_SRC_MASK;
        if (followVel == 1) flags = flags | PSYS_PART_FOLLOW_VELOCITY_MASK;
        if (target != &amp;quot;&amp;quot;) flags = flags | PSYS_PART_TARGET_POS_MASK;
        llParticleSystem([  PSYS_PART_MAX_AGE,7,
            PSYS_PART_FLAGS,flags,
            PSYS_PART_START_COLOR, startColor,
            PSYS_PART_END_COLOR, endColor,
            PSYS_PART_START_SCALE,startSize,
            PSYS_PART_END_SCALE,endSize,
            PSYS_SRC_PATTERN, pattern,
            PSYS_SRC_BURST_RATE,(float)rate,
            PSYS_SRC_ACCEL, push,
            PSYS_SRC_BURST_PART_COUNT,count,
            PSYS_SRC_BURST_RADIUS,(float)radius,
            PSYS_SRC_BURST_SPEED_MIN,(float)minSpeed,
            PSYS_SRC_BURST_SPEED_MAX,(float)maxSpeed,
            PSYS_SRC_TARGET_KEY,target,
            PSYS_SRC_INNERANGLE,(float)innerAngle,
            PSYS_SRC_OUTERANGLE,(float)outerAngle,
            PSYS_SRC_OMEGA, omega,
            PSYS_SRC_MAX_AGE, (float)life,
            PSYS_SRC_TEXTURE, texture,
            PSYS_PART_START_ALPHA, (float)startAlpha,
            PSYS_PART_END_ALPHA, (float)endAlpha
                ]);
    }
}&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>Pool Water</title>
            <link>http://live.spdns.org/wiki/archiv/opensim/downloads/scripts/pool_water?do=revisions&amp;rev=1575021522</link>
            <description>
&lt;h2 class=&quot;sectionedit1&quot; id=&quot;pool_water&quot;&gt;Pool Water&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;default
{
    state_entry()
    {
        llSetAlpha(0.50, ALL_SIDES);
        llSetTexture(&amp;quot;00000000-0000-2222-3333-100000001041&amp;quot;, ALL_SIDES);
        llSetTextureAnim(ANIM_ON | SMOOTH | LOOP, ALL_SIDES,1,1,1.0, 1,0.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:42 +0000</pubDate>
        </item>
        <item>
            <title>Rotating Texture</title>
            <link>http://live.spdns.org/wiki/archiv/opensim/downloads/scripts/rotating_texture?do=revisions&amp;rev=1575021523</link>
            <description>
&lt;h2 class=&quot;sectionedit1&quot; id=&quot;rotating_texture&quot;&gt;Rotating Texture&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;default
{
    state_entry()                                   
    {                                               
       float SPEED = 0.2; 
       llSetTextureAnim(ANIM_ON | SMOOTH | LOOP, ALL_SIDES, 0, 0, 1.0, 1000, SPEED);
    }
}&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>Sim Crash Logger</title>
            <link>http://live.spdns.org/wiki/archiv/opensim/downloads/scripts/sim_crash_logger?do=revisions&amp;rev=1575021523</link>
            <description>
&lt;h2 class=&quot;sectionedit1&quot; id=&quot;sim_crash_logger&quot;&gt;Sim Crash Logger&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;//********************************************************
//This Script was pulled out for you by YadNi Monde from the SL FORUMS at http://forums.secondlife.com/forumdisplay.php?f=15, it is intended to stay FREE by it s author(s) and all the comments here in ORANGE must NOT be deleted. They include notes on how to use it and no help will be provided either by YadNi Monde or it s Author(s). IF YOU DO NOT AGREE WITH THIS JUST DONT USE!!!
//********************************************************

/////////////////////////////////////////
//SIM CRASH/REBOOT LOGGER
//by: Kyrah Abattoir
/////////////////////////////////////////

integer timering = 10;//the polling rate, put the speed you wish, in seconds

//there we go...
integer UNIX;
string _buffer;
list log;
integer span = 0;
float fps;
float dilation;
integer crash = 0;
string date;
//2004-08-27T00:56:21.785886Z

default
{
    state_entry()
    {
        llSetTimerEvent(timering);//starting our timer
    }
    timer()
    {
        string timestamp = llGetTimestamp();
        list temp = llParseString2List(timestamp,[&amp;quot;T&amp;quot;,&amp;quot;:&amp;quot;,&amp;quot;:&amp;quot;,&amp;quot;.&amp;quot;],[]);
        integer _hour = llList2Integer(temp,1) + 4;
        if(_hour &amp;gt; 24) //getting the hours
            _hour = _hour - 24 ;

        string _date = llList2String(temp,0);
        integer _min = llList2Integer(temp,2);
        integer _sec = llList2Integer(temp,3);
        string buffer;

        if(date == _date) //daily reset of the average fps and dilation
            span++;
        else
        {
            span = 1;
            date = _date;
            fps = 0;
            dilation = 0;
        }

        fps += llGetRegionFPS();
        dilation += llGetRegionTimeDilation();
        integer avg_FPS = (integer)(fps/span);
        string avg_dilation= llGetSubString((string)(dilation/span),0,3);

        buffer += llGetRegionName();
        buffer += &amp;quot;\n FPS:&amp;quot;+(string)avg_FPS;
        buffer += &amp;quot; dil. :&amp;quot;+(string)avg_dilation;
        //buffer += &amp;quot;\n&amp;quot; + llDumpList2String(log,&amp;quot;\n&amp;quot;);

        integer _UNIX = _sec + _min * 60 + _hour * 3600;//making our timestamp
       
        if (_UNIX - UNIX &amp;gt; timering + 5 &amp;amp;&amp;amp; UNIX != 0)//okay the delay has been waaay too olong, it probably crashed or rebooted
        {
            crash++;
            log += (string)_date + &amp;quot; - &amp;quot; + (string)_hour+ &amp;quot;:&amp;quot;+(string)_min+&amp;quot;:&amp;quot;+(string)_sec;
            if(llGetListLength(log) &amp;gt; 9)
                log = llDeleteSubList(log,0,0);
        }
        buffer += &amp;quot;\n sim crashes: &amp;quot; + (string)crash + &amp;quot;\n last crash: \n&amp;quot; + llDumpList2String(log,&amp;quot;\n&amp;quot;);
        if(_buffer != buffer); //display
        {
            llSetText(buffer,&amp;lt;1,1,1&amp;gt;,1.0);
            _buffer = buffer;   
        }
        UNIX = _UNIX;
    }
}&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>Simple Vendor</title>
            <link>http://live.spdns.org/wiki/archiv/opensim/downloads/scripts/simple_vendor?do=revisions&amp;rev=1575021523</link>
            <description>
&lt;h2 class=&quot;sectionedit1&quot; id=&quot;simple_vendor&quot;&gt;Simple Vendor&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;//Simple Vendor 
//Version: 1.0.0 
// 
string name = &amp;quot;name of person&amp;quot;; 
integer price = 10; // adjust accordingly 
string item = &amp;quot;nameofitem&amp;quot;; 
 
default 
{ 
   state_entry() 
   { 
      llRequestPermissions( llGetOwner(), PERMISSION_DEBIT ); 
   } 
   run_time_permissions(integer perms) 
   { 
      if (perms &amp;amp; PERMISSION_DEBIT) 
         state run; 
   } 
} 
 
state run 
{ 
   money(key id, integer amount) 
   { 
      if (llKey2Name(id) == name) 
      { 
         if (amount != price) 
         { 
            llWhisper(0,&amp;quot;Sorry!  The price is $&amp;quot; + (string)price); 
            llGiveMoney(id,amount); 
         } 
         else 
         { 
            llGiveInventory(id,item); 
            llInstantMessage(llGetOwner(),name + &amp;quot; bought their item.&amp;quot;); 
            state sold; 
         } 
      } 
      else 
      { 
         llWhisper(0,&amp;quot;Sorry I&amp;#039;m only selling this to &amp;quot; + name); 
         llGiveMoney(id,amount); 
      } 
   } 
} 
 
state sold 
{ 
   state_entry() { } 
}&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>Snow Particle Generator (Schnee)</title>
            <link>http://live.spdns.org/wiki/archiv/opensim/downloads/scripts/snow?do=revisions&amp;rev=1575021524</link>
            <description>
&lt;h2 class=&quot;sectionedit1&quot; id=&quot;snow_particle_generator_schnee&quot;&gt;Snow Particle Generator (Schnee)&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Lässt Schnee fallen.
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;default
{
state_entry()
{
llParticleSystem([
PSYS_PART_FLAGS , 0
//| PSYS_PART_BOUNCE_MASK //Bounce on object&amp;#039;s z-axis
| PSYS_PART_WIND_MASK //Particles are moved by wind
| PSYS_PART_INTERP_COLOR_MASK //Colors fade from start to end
| PSYS_PART_INTERP_SCALE_MASK //Scale fades from beginning to end
| PSYS_PART_FOLLOW_SRC_MASK //Particles follow the emitter
| PSYS_PART_FOLLOW_VELOCITY_MASK//Particles are created at the velocity of the emitter
//| PSYS_PART_TARGET_POS_MASK //Particles follow the target
| PSYS_PART_EMISSIVE_MASK //Particles are self-lit (glow)
//| PSYS_PART_TARGET_LINEAR_MASK//Undocumented--Sends particles in straight line?
,

//PSYS_SRC_TARGET_KEY , NULL_KEY,//The particles will head towards the specified key
//Select one of the following for a pattern:
//PSYS_SRC_PATTERN_DROP Particles start at emitter with no velocity
//PSYS_SRC_PATTERN_EXPLODE Particles explode from the emitter
//PSYS_SRC_PATTERN_ANGLE Particles are emitted in a 2-D angle
//PSYS_SRC_PATTERN_ANGLE_CONE Particles are emitted in a 3-D cone
//PSYS_SRC_PATTERN_ANGLE_CONE_EMPTY Particles are emitted everywhere except for a 3-D cone

PSYS_SRC_PATTERN, PSYS_SRC_PATTERN_ANGLE_CONE

,PSYS_SRC_TEXTURE, &amp;quot;b03ed4c1-6384-408f-9db9-2d4f6fee164d&amp;quot; //UUID of the desired particle texture, or inventory name
,PSYS_SRC_MAX_AGE, 0.0 //Time, in seconds, for particles to be emitted. 0 = forever
,PSYS_PART_MAX_AGE, 15.0 //Lifetime, in seconds, that a particle lasts
,PSYS_SRC_BURST_RATE, .01 //How long, in seconds, between each emission
,PSYS_SRC_BURST_PART_COUNT, 24 //Number of particles per emission
,PSYS_SRC_BURST_RADIUS, 10.0 //Radius of emission
,PSYS_SRC_BURST_SPEED_MIN, 0.1 //Minimum speed of an emitted particle
,PSYS_SRC_BURST_SPEED_MAX, 0.5 //Maximum speed of an emitted particle
,PSYS_SRC_ACCEL, &amp;lt;0,0,-.20&amp;gt; //Acceleration of particles each second
,PSYS_PART_START_COLOR, &amp;lt;1,1,1&amp;gt; //Starting RGB color
,PSYS_PART_END_COLOR, &amp;lt;1,1,1&amp;gt; //Ending RGB color, if INTERP_COLOR_MASK is on
,PSYS_PART_START_ALPHA, 1.0 //Starting transparency, 1 is opaque, 0 is transparent.
,PSYS_PART_END_ALPHA, 1.0 //Ending transparency
,PSYS_PART_START_SCALE, &amp;lt;.05,.05,.05&amp;gt; //Starting particle size
,PSYS_PART_END_SCALE, &amp;lt;.05,.05,.05&amp;gt; //Ending particle size, if INTERP_SCALE_MASK is on
,PSYS_SRC_ANGLE_BEGIN, 90 * DEG_TO_RAD //Inner angle for ANGLE patterns
,PSYS_SRC_ANGLE_END, 90 * DEG_TO_RAD//Outer angle for ANGLE patterns
,PSYS_SRC_OMEGA, &amp;lt;0.0,0.0,0.0&amp;gt; //Rotation of ANGLE patterns, similar to llTargetOmega()
]);
}
}&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>Teleport</title>
            <link>http://live.spdns.org/wiki/archiv/opensim/downloads/scripts/teleport?do=revisions&amp;rev=1575021524</link>
            <description>
&lt;h2 class=&quot;sectionedit1&quot; id=&quot;teleport&quot;&gt;Teleport&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;//Teleport v2.02 by Pablo Pharmanaut
//based on code by Cubey Terra

integer totalPos = 4;                    //This integer should equal total number of positions
integer currentPos = 1;
string currentpos;

vector vPos1 = &amp;lt;117,152,22&amp;gt;;             //These are vectors for the positions to
vector vPos2 = &amp;lt;81,23, 103&amp;gt;;             //which you wish to teleport
vector vPos3 = &amp;lt;83, 49.00, 29&amp;gt;;
vector vPos4 = &amp;lt;67,120,22&amp;gt;;
//vector vPos5 = &amp;lt;143.3,238.8,50.2&amp;gt;;

string sPos1 = &amp;quot;Position One&amp;quot;;           //name of positions, if desired.  This helps
string sPos2 = &amp;quot;Position Two&amp;quot;;           //you to know where you are going!
string sPos3 = &amp;quot;Position Three&amp;quot;;
string sPos4 = &amp;quot;Position Four&amp;quot;;
//string sPos5 = &amp;quot;Position Five&amp;quot;;

vector currentvPos;

setPos()
{
    if (currentPos == 1)
    {
        currentpos = sPos1;
        currentvPos = vPos1;
    }
    else if (currentPos == 2)             
    {                                     
        currentpos = sPos2;               
        currentvPos = vPos2;             
    }                                     
    else if (currentPos == 3)
    {
        currentpos = sPos3;
        currentvPos = vPos3;
    }
    else if (currentPos == 4)
    {
        currentpos = sPos4;
        currentvPos = vPos4;
    }
//  else if (currentPos == 5)
//  {
//      currentpos = sPos5;
//      currentvPos = vPos5;
//  }
   
    //add else if section here with higher currentPos integer to add TP destinations.
    //Don&amp;#039;t forget to increase totalPos integer at top of script

    vector pos = llGetPos();
    llSetText(&amp;quot;Teleport to &amp;quot;+currentpos+&amp;quot;\nTouch me to change destination&amp;quot;,&amp;lt;1,1,1&amp;gt;,1.0);
    vector offset = currentvPos - pos;
    llSitTarget(offset, ZERO_ROTATION);
}

default
{
    state_entry()
    {
        llSetSitText(&amp;quot;Teleport&amp;quot;);            //This changes HUD display from &amp;quot;sit&amp;quot; to &amp;quot;Teleport&amp;quot;
    }
    touch_start(integer total_number)
    {
        currentPos += 1;
        if (currentPos &amp;gt; totalPos) currentPos = 1;
        setPos();
    }
    changed(integer change)
    {
        if ((change &amp;amp; CHANGED_LINK)==CHANGED_LINK)
        {
            if (llAvatarOnSitTarget() != NULL_KEY)
            {
                llUnSit(llAvatarOnSitTarget());
            }
        }
    }
}&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>Teleport to Sim</title>
            <link>http://live.spdns.org/wiki/archiv/opensim/downloads/scripts/teleport_to_sim?do=revisions&amp;rev=1575021524</link>
            <description>
&lt;h2 class=&quot;sectionedit1&quot; id=&quot;teleport_to_sim&quot;&gt;Teleport to Sim&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;string teleport_message = &amp;quot;Sie teleportieren nun zur Sim M34&amp;quot;;
string destination_name = &amp;quot;Sim M34 von OpenSIM&amp;quot;;
vector destination_landing_point = &amp;lt;170,156,23&amp;gt;;
vector landing_point_facing = &amp;lt;150,120,34&amp;gt;;
default
{
    state_entry()
    {
        llSay(0, &amp;quot;Script running&amp;quot;);
        llSetText(&amp;quot;Teleport zu\n&amp;quot; + destination_name, &amp;lt;1,1,1&amp;gt;, 1);
        llSetTextureAnim(ANIM_ON | SMOOTH | ROTATE | LOOP, ALL_SIDES, 0, 0, 1.0, 1000, 0.07);
    }
    
    touch_start(integer number)
    {   llRegionSay(-1, &amp;quot;occulus,&amp;quot; + llDetectedKey(0) + &amp;quot;,&amp;quot; + destination_name);
        llMapDestination(&amp;quot;DOMAIN:9090&amp;quot;, destination_landing_point, landing_point_facing);
        
    }
    

}&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>Visitor List Recorder</title>
            <link>http://live.spdns.org/wiki/archiv/opensim/downloads/scripts/visitor_list_recorder?do=revisions&amp;rev=1575021525</link>
            <description>
&lt;h2 class=&quot;sectionedit1&quot; id=&quot;visitor_list_recorder&quot;&gt;Visitor List Recorder&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;// Global variables
list visitor_list;
float range = 10.0; // in meters
float rate = 1.0; // in seconds


// Functions
integer isNameOnList( string name )
{
    integer len = llGetListLength( visitor_list );
    integer i;
    for( i = 0; i &amp;lt; len; i++ )
    {
        if( llList2String(visitor_list, i) == name )
        {
            return TRUE;
        }
    }
    return FALSE;
}

// States
default
{
    state_entry()
    {
        llSay(0, &amp;quot;Visitor List Maker started...&amp;quot;);
        llSay(0, &amp;quot;The owner can say &amp;#039;help&amp;#039; for instructions.&amp;quot;);
        llSensorRepeat( &amp;quot;&amp;quot;, &amp;quot;&amp;quot;, AGENT, range, TWO_PI, rate );
        llListen(0, &amp;quot;&amp;quot;, llGetOwner(), &amp;quot;&amp;quot;);
    }
     
               
    sensor( integer number_detected )
    {
        integer i;
        for( i = 0; i &amp;lt; number_detected; i++ )
        {
            if( llDetectedKey( i ) != llGetOwner() )
            {
                string detected_name = llDetectedName( i );
                if( isNameOnList( detected_name ) == FALSE )
                {
                    visitor_list += detected_name;
                }
            }
        }   
    }
   
    listen( integer channel, string name, key id, string message )
    {
        if( id != llGetOwner() )
        {
            return;
        }
       
        if( message == &amp;quot;help&amp;quot; )
        {
            llSay( 0, &amp;quot;This object records the names of everyone who&amp;quot; );
            llSay( 0, &amp;quot;comes within &amp;quot;+ (string)range + &amp;quot; meters.&amp;quot; );
            llSay( 0, &amp;quot;Commands the owner can say:&amp;quot; );
            llSay( 0, &amp;quot;&amp;#039;help&amp;#039;  - Shows these instructions.&amp;quot; );
            llSay( 0, &amp;quot;&amp;#039;say list&amp;#039;   - Says the names of all visitors on the list.&amp;quot;);
            llSay( 0, &amp;quot;&amp;#039;reset list&amp;#039; - Removes all the names from the list.&amp;quot; );
        }
        else
        if( message == &amp;quot;say list&amp;quot; )
        {
            llSay( 0, &amp;quot;Visitor List:&amp;quot; );
            integer len = llGetListLength( visitor_list );
            integer i;
            for( i = 0; i &amp;lt; len; i++ )
            {
                llSay( 0, llList2String(visitor_list, i) );
            }
            llSay( 0, &amp;quot;Total = &amp;quot; + (string)len );
        }
        else
        if( message == &amp;quot;reset list&amp;quot; )
        {
            visitor_list = llDeleteSubList(visitor_list, 0, llGetListLength(visitor_list));
            llSay( 0, &amp;quot;Done resetting.&amp;quot;);
        }
    }       
}&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>
