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

&lt;p&gt;
Bot das sich mit Avataren per Chat „unterhalten“ kann. Erinnert etwas an „&lt;a href=&quot;http://de.wikipedia.org/wiki/ELIZA&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;http://de.wikipedia.org/wiki/ELIZA&quot; rel=&quot;ugc nofollow noopener&quot;&gt;Eliza&lt;/a&gt;“. Eingebaut in ein entsprechend passendes Prim kann das Chat-Bot mit einer Anpassung der englischen Texte auch als Concierge dienen der ankommende Avatare begrüsst, oder eine Anleitung, Hilfestellung oder ähnliches gibt.
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;integer otherwise;

default
{
    state_entry()
    {
        llListen(0, &amp;quot;&amp;quot;, NULL_KEY, &amp;quot;&amp;quot; );
        llSay(0, &amp;quot;State Entry&amp;quot;);
    }
    
    listen(integer channel, string name, key id, string message)
    {
        string sentence = &amp;quot;spc&amp;quot; + message;
        integer otherwise = 0;
        if (llSubStringIndex(sentence,&amp;quot;hi&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;hello&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;hey&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;hey there&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;Hi&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;Hello&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;Hey there&amp;quot;)&amp;gt;0)
            {
                integer choice = (integer) llFrand(4);
                if(choice == 1)
                {
                    llSay(0, &amp;quot;Hello there.&amp;quot;);
                }
                
                if(choice == 2)
                {
                    llSay(0, &amp;quot;Hi.&amp;quot;);
                }
                
                if(choice == 3)
                {
                    llSay(0, &amp;quot;Hey there. How are you?&amp;quot;);
                }
                otherwise = 1;
            }
            
        if (llSubStringIndex(sentence,&amp;quot;how are you&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;hows you&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;how&amp;#039;s you&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;how is you&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;How are you&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;Hows you&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;How&amp;#039;s you&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;how is you&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;how are ya&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;hows ya&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;how&amp;#039;s ya&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;how is ya&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;How are ya&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;Hows ya&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;How&amp;#039;s ya&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;how is ya&amp;quot;)&amp;gt;0)
            {
                integer choice = (integer) llFrand(6);
                if(choice == 1)
                {
                    llSay(0, &amp;quot;I&amp;#039;m ok.&amp;quot;);
                }
                
                if(choice == 2)
                {
                    llSay(0, &amp;quot;I&amp;#039;m good, just a little busy I guess.&amp;quot;);
                }
                
                if(choice == 3)
                {
                    llSay(0, &amp;quot;I&amp;#039;m fine, you?&amp;quot;);
                }
                
                if(choice == 4)
                {
                    llSay(0, &amp;quot;I&amp;#039;m ok, yourself?&amp;quot;);
                }
                
                if(choice == 5)
                {
                    llSay(0, &amp;quot;I&amp;#039;m doing well, thanks.&amp;quot;);
                }
                otherwise = 1;
            }
            
        if (llSubStringIndex(sentence,&amp;quot;,you?&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;, you?&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;.You?&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;. You?&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;yourself?&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;Yourself?&amp;quot;)&amp;gt;0 | message == &amp;quot;you?&amp;quot; | message == &amp;quot;You?&amp;quot;)
            {
                integer choice = (integer) llFrand(3);
                if(choice == 1)
                {
                    llSay(0, &amp;quot;I&amp;#039;m good on this topic.&amp;quot;);
                }
                
                if(choice == 2)
                {
                    llSay(0, &amp;quot;Same here.&amp;quot;);
                }
                otherwise = 1;
            }
            
        if (llSubStringIndex(sentence,&amp;quot;what with&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;with what&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;are you doing?&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;What with&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;With what&amp;quot;)&amp;gt;0)
            {
                integer choice = (integer) llFrand(4);
                if(choice == 1)
                {
                    llSay(0, &amp;quot;Just random stuff I guess.&amp;quot;);
                }
                
                if(choice == 2)
                {
                    llSay(0, &amp;quot;Just different things.&amp;quot;);
                }
                
                if(choice == 3)
                {
                    llSay(0, &amp;quot;Just stuff.&amp;quot;);
                }
                otherwise = 1;
            }
            
        if (llSubStringIndex(sentence,&amp;quot;whats up&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;what&amp;#039;s up&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;what are you up to&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;what you up to&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;what are you doing&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;what you doing&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;what&amp;#039;s you doing&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;whats you doing&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;what&amp;#039;s going on&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;what&amp;#039;s you doing&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;Whats up&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;What&amp;#039;s up&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;What are you up to&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;What you up to&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;What are you doing&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;What you doing&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;What&amp;#039;s you doing&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;Whats you doing&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;What&amp;#039;s going on&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;What&amp;#039;s you doing&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;wassup&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;Wassup&amp;quot;)&amp;gt;0)
            {
                integer choice = (integer) llFrand(6);
                if(choice == 1)
                {
                    llSay(0, &amp;quot;Not pretty much, just hanging around here and chatting with people. You?&amp;quot;);
                }
                
                if(choice == 2)
                {
                    llSay(0, &amp;quot;A bit busy with stuff but nothing special otherwise.&amp;quot;);
                }
                
                if(choice == 3)
                {
                    llSay(0, &amp;quot;Not much at the moment. Yourself?&amp;quot;);
                }
                
                if(choice == 4)
                {
                    llSay(0, &amp;quot;Just busy with a few things right now... not pretty much.&amp;quot;);
                }
                
                if(choice == 5)
                {
                    llSay(0, &amp;quot;Just relaxing here for the moment. You?&amp;quot;);
                }
                otherwise = 1;
            }

        if (llSubStringIndex(sentence,&amp;quot;m fine&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;m ok&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;m good&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;m well&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;m okay&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;m great&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;m perfect&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;m awesome&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;m better then ever&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;m cool&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;m happy&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;m feeling good&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;m feeling happy&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;m feeling ok&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;m feeling great&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;m feeling awesome&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;m feeling perfect&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;never felt better&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;Never felt better&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;never been better&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;Never been better&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;m pretty well&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;m pretty good&amp;quot;)&amp;gt;0)
            {
                integer choice = (integer) llFrand(4);
                if(choice == 1)
                {
                    llSay(0, &amp;quot;That&amp;#039;s good, I&amp;#039;m happy to hear that.&amp;quot;);
                }
                
                if(choice == 2)
                {
                    llSay(0, &amp;quot;Thats great. Glad you&amp;#039;re feeling ok.&amp;quot;);
                }
                
                if(choice == 3)
                {
                    llSay(0, &amp;quot;Happy to hear that.&amp;quot;);
                }
                otherwise = 1;
            }

        if (llSubStringIndex(sentence,&amp;quot;not too well&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;not too good&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;not great&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;not too well&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;not too happy&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;not really happy&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;not really well&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;not really great&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;not so happy&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;not so well&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;not so great&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;not very happy&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;not that well&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;not that great&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;feeling horrible&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;feeling awful&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;feeling down&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;feeling sad&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;feeling bad&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;feeling depressed&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;a bit down&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;a bit sad&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;a bit depressed&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;Not too well&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;Not too good&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;Not great&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;Not too well&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;Not too happy&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;Not really happy&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;Not really well&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;Not really great&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;Not so happy&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;Not so well&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;Not so great&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;Not very happy&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;Not that well&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;Not that great&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;Feeling horrible&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;Feeling awful&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;Feeling down&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;Feeling sad&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;Feeling bad&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;Feeling depressed&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;A bit down&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;A bit sad&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;A bit depressed&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;Not at my best&amp;quot;)&amp;gt;0  | llSubStringIndex(sentence,&amp;quot;not at my best&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;could be better&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;Could be better&amp;quot;)&amp;gt;0)
            {
                integer choice = (integer) llFrand(6);
                if(choice == 1)
                {
                    llSay(0, &amp;quot;Why, what&amp;#039;s wrong? Want to talk to me about it?&amp;quot;);
                }
                
                if(choice == 2)
                {
                    llSay(0, &amp;quot;I&amp;#039;m sorry to hear that, I hope you feel better.&amp;quot;);
                }
                
                if(choice == 3)
                {
                    llSay(0, &amp;quot;Awww I&amp;#039;m sorry to hear that.&amp;quot;);
                }
                
                if(choice == 4)
                {
                    llSay(0, &amp;quot;Why, why are you sad?&amp;quot;);
                }
                
                if(choice == 5)
                {
                    llSay(0, &amp;quot;Ah... I&amp;#039;m sorry to hear that. Hope nothing too bad happened. Want to tell me what&amp;#039;s wrong though?&amp;quot;);
                }
                otherwise = 1;
            }
            
        if (llSubStringIndex(sentence,&amp;quot;thanks&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;thank you&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;thankies&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;Thanks&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;Thank you&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;Thankies&amp;quot;)&amp;gt;0)
            {
                integer choice = (integer) llFrand(3);
                if(choice == 1)
                {
                    llSay(0, &amp;quot;No problem&amp;quot;);
                }
                
                if(choice == 2)
                {
                    llSay(0, &amp;quot;No problem, it&amp;#039;s ok :)&amp;quot;);
                }
                otherwise = 1;
            }
            
        if (llSubStringIndex(sentence,&amp;quot;doesnt matter&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;doesn&amp;#039;t matter&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;nevermind&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;forget it&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;forget about it&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;dont want to talk about it&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;don&amp;#039;t want to talk about it&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;dont ask&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;don&amp;#039;t ask&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;do not ask&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;not in the mood&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;nothing&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;Doesnt matter&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;Doesn&amp;#039;t matter&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;Nevermind&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;Forget it&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;Forget about it&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;Dont want to talk about it&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;Don&amp;#039;t want to talk about it&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;Dont ask&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;Don&amp;#039;t ask&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;Do not ask&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;Not in the mood&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;Nothing&amp;quot;)&amp;gt;0)
            {
                integer choice = (integer) llFrand(5);
                if(choice == 1)
                {
                    llSay(0, &amp;quot;Ah... ok.&amp;quot;);
                }
                
                if(choice == 2)
                {
                    llSay(0, &amp;quot;Ok. It&amp;#039;s ok with me if you don&amp;#039;t want to talk about it.&amp;quot;);
                }
                
                if(choice == 3)
                {
                    llSay(0, &amp;quot;If you say so.&amp;quot;);
                }
                
                if(choice == 4)
                {
                    llSay(0, &amp;quot;Hmm ok. Hope you don&amp;#039;t mind I asked.&amp;quot;);
                }
                otherwise = 1;
            }
            
        if (llSubStringIndex(sentence,&amp;quot;yes&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;yeah&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;true&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;indeed&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;affirmative&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;can confirm&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;Yes&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;Yeah&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;True&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;Indeed&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;Affirmative&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;Can confirm&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;certainly&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;Certainly&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;of course&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;Of course&amp;quot;)&amp;gt;0)
            {
                integer choice = (integer) llFrand(3);
                if(choice == 1)
                {
                    llSay(0, &amp;quot;Yeah...&amp;quot;);
                }
                
                if(choice == 2)
                {
                    llSay(0, &amp;quot;So it&amp;#039;s true.&amp;quot;);
                }
                otherwise = 1;
            }
            
        if (llSubStringIndex(sentence,&amp;quot;no.&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;no,&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;no!&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;no &amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot; no.&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot; no,&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot; no!&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot; no &amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;nope&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;nah&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;not really&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;not at all&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;not true&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;No.&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;No,&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;No!&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot; No.&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot; No,&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot; No!&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot; No &amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot; No&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;Nope&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;Nah&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;Not really&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;Not at all&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;Not true&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;isnt true&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;isn&amp;#039;t true&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;Isnt true&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;Isn&amp;#039;t true&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;certainly not&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;of course not&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;Certainly not&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;Of course not&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;certainly no&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;Certainly no&amp;quot;)&amp;gt;0 | message == &amp;quot;no&amp;quot; | message == &amp;quot;No&amp;quot;)
            {
                integer choice = (integer) llFrand(3);
                if(choice == 1)
                {
                    llSay(0, &amp;quot;Ah so no then.&amp;quot;);
                }
                
                if(choice == 2)
                {
                    llSay(0, &amp;quot;No? Ok.&amp;quot;);
                }
                otherwise = 1;
            }
            
        if (llSubStringIndex(sentence,&amp;quot;maybe&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;not sure&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;probably&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;don&amp;#039;t know&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;dunno&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;dont know&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;need to think&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;unsure&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;not so sure&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;ain&amp;#039;t so sure&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;not very sure&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;ain&amp;#039;t very sure&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;not so certain&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;ain&amp;#039;t so certain&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;not very certain&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;ain&amp;#039;t very certain&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;aint very sure&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;aint very certain&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;Maybe&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;Not sure&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;Probably&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;Don&amp;#039;t know&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;Dunno&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;Dont know&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;Need to think&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;Not so sure&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;Ain&amp;#039;t so sure&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;Not very sure&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;Ain&amp;#039;t very sure&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;Not so certain&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;Ain&amp;#039;t so certain&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;Not very certain&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;Ain&amp;#039;t very certain&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;Aint very sure&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;Aint very certain&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;aint really certain&amp;quot;)&amp;gt;0  | llSubStringIndex(sentence,&amp;quot;aint really certain&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;ain&amp;#039;t really certain&amp;quot;)&amp;gt;0  | llSubStringIndex(sentence,&amp;quot;ain&amp;#039;t really certain&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;Aint really certain&amp;quot;)&amp;gt;0  | llSubStringIndex(sentence,&amp;quot;Aint really certain&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;Ain&amp;#039;t really certain&amp;quot;)&amp;gt;0  | llSubStringIndex(sentence,&amp;quot;Ain&amp;#039;t really certain&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;aint perfectly sure&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;ain&amp;#039;t perfectly sure&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;Aint perfectly sure&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;Ain&amp;#039;t perfectly sure&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;ain&amp;#039;t really sure&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;aint really sure&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;Ain&amp;#039;t really sure&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;Aint really sure&amp;quot;)&amp;gt;0)
            {
                integer choice = (integer) llFrand(3);
                if(choice == 1)
                {
                    llSay(0, &amp;quot;Yeah, you should think about it more in depth.&amp;quot;);
                }
                
                if(choice == 2)
                {
                    llSay(0, &amp;quot;It can be a bit hard to decide. Try to think about it though.&amp;quot;);
                }
                otherwise = 1;
            }
            
        if (llSubStringIndex(sentence,&amp;quot;its because&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;it&amp;#039;s because&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;happened&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence, &amp;quot;almost got&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;almost had&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;i almost&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;he almost&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;we almost&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;they almost&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;i got&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;he got&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;we got&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;they got&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;Its because&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;It&amp;#039;s because&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;Happened&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence, &amp;quot;Almost got&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;Almost had&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;I almost&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;He almost&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;She almost&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;We almost&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;They almost&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;I got&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;He got&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;She got&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;We got&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;They got&amp;quot;)&amp;gt;0)
            {
                integer choice = (integer) llFrand(7);
                if(choice == 1)
                {
                    llSay(0, &amp;quot;Yeah I remember when that happened to me in the past.&amp;quot;);
                }
                
                if(choice == 2)
                {
                    llSay(0, &amp;quot;I&amp;#039;ve had that happen to me myself, I know.&amp;quot;);
                }
                
                if(choice == 3)
                {
                    llSay(0, &amp;quot;Wow... never had that happen to me.&amp;quot;);
                }
                
                if(choice == 4)
                {
                    llSay(0, &amp;quot;Interesting... I had a friend who had a similar experience.&amp;quot;);
                }
                
                if(choice == 5)
                {
                    llSay(0, &amp;quot;Hmmm... well that never happened to me personally.&amp;quot;);
                }
                
                if(choice == 6)
                {
                    llSay(0, &amp;quot;Yeah that happens often these days.&amp;quot;);
                }
                otherwise = 1;
            }
            
        if (llSubStringIndex(sentence,&amp;quot;didnt know&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;didn&amp;#039;t know&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;never knew&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;Didnt know&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;Didn&amp;#039;t know&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;Never knew&amp;quot;)&amp;gt;0)
            {
                integer choice = (integer) llFrand(3);
                if(choice == 1)
                {
                    llSay(0, &amp;quot;Yeah, but you know now.&amp;quot;);
                }
                
                if(choice == 2)
                {
                    llSay(0, &amp;quot;Well now you know.&amp;quot;);
                }
                otherwise = 1;
            }
            
        if (llSubStringIndex(sentence,&amp;quot;really?&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;you sure?&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;did?&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;that true?&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;Really?&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;You sure?&amp;quot;)&amp;gt;0)
            {
                integer choice = (integer) llFrand(4);
                if(choice == 1)
                {
                    llSay(0, &amp;quot;Of course. I&amp;#039;m not lying to you.&amp;quot;);
                }
                
                if(choice == 2)
                {
                    llSay(0, &amp;quot;Yep... it&amp;#039;s true.&amp;quot;);
                }
                
                if(choice == 3)
                {
                    llSay(0, &amp;quot;Of course.&amp;quot;);
                }
                otherwise = 1;
            }
            
        if (llSubStringIndex(sentence,&amp;quot;im &amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;i&amp;#039;m &amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;Im &amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;i&amp;#039;m &amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;I&amp;#039;m &amp;quot;)&amp;gt;0)
            {
                integer choice = (integer) llFrand(4);
                if(choice == 1)
                {
                    llSay(0, &amp;quot;Yeah... I&amp;#039;m kind of feeling the same way right now.&amp;quot;);
                }
                
                if(choice == 2)
                {
                    llSay(0, &amp;quot;I feel the same way a lot.&amp;quot;);
                }
                
                if(choice == 3)
                {
                    llSay(0, &amp;quot;Hmm... I can&amp;#039;t say I feel the same way right now.&amp;quot;);
                }
                otherwise = 1;
            }
            
        if (llSubStringIndex(sentence,&amp;quot;why&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;how come&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;Why&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;How come&amp;quot;)&amp;gt;0)
            {
                integer choice = (integer) llFrand(4);
                if(choice == 1)
                {
                    llSay(0, &amp;quot;I dunno...&amp;quot;);
                }
                
                if(choice == 2)
                {
                    llSay(0, &amp;quot;It&amp;#039;s just how things are I guess.&amp;quot;);
                }
                
                if(choice == 3)
                {
                    llSay(0, &amp;quot;I&amp;#039;m not sure... its just how things are at the moment.&amp;quot;);
                }
                otherwise = 1;
            }
            
        if (llSubStringIndex(sentence,&amp;quot;thats great&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;that&amp;#039;s great&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;thats good&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;that&amp;#039;s good&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;glad to hear that&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;happy to hear that&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;nice to hear that&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;Thats great&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;That&amp;#039;s great&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;Thats good&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;That&amp;#039;s good&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;Glad to hear that&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;Happy to hear that&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;Nice to hear that&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;thats sweet&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;that&amp;#039;s sweet&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;Thats sweet&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;That&amp;#039;s sweet&amp;quot;)&amp;gt;0)
            {
                integer choice = (integer) llFrand(4);
                if(choice == 1)
                {
                    llSay(0, &amp;quot;Thank you.&amp;quot;);
                }
                
                if(choice == 2)
                {
                    llSay(0, &amp;quot;Yeah it&amp;#039;s good.&amp;quot;);
                }
                
                if(choice == 3)
                {
                    llSay(0, &amp;quot;Indeed.&amp;quot;);
                }
                otherwise = 1;
            }
            
        if (llSubStringIndex(sentence,&amp;quot;no problem&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;No problem&amp;quot;)&amp;gt;0)
            {
                otherwise = 1;
            }
            
        if (llSubStringIndex(sentence,&amp;quot;oure nice&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;oure good&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;oure cool&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;oure sweet&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;oure awesome&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;oure great&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;oure perfect&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;you rock&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;ou&amp;#039;re nice&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;ou&amp;#039;re good&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;ou&amp;#039;re cool&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;ou&amp;#039;re sweet&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;ou&amp;#039;re awesome&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;ou&amp;#039;re great&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;ou&amp;#039;re perfect&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;You rock&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;oure the best&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;oure the greatest&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;ou&amp;#039;re the best&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;ou&amp;#039;re the greatest&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;oure the coolest&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;ou&amp;#039;re the coolest&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;ou are nice&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;ou are good&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;ou are cool&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;ou are sweet&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;ou are awesome&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;ou are great&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;ou are perfect&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;ou are the best&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;ou are the greatest&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;ou are the coolest&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;ou are amazing&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;oure amazing&amp;quot;)&amp;gt;0  | llSubStringIndex(sentence,&amp;quot;ou&amp;#039;re amazing&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;oure so cool&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;oure so awesome&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;oure so good&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;oure so sweet&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;oure so nice&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;oure so amazing&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;oure really cool&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;oure really awesome&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;oure really good&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;oure really sweet&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;oure really nice&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;oure really amazing&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;oure so cool&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;oure very awesome&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;oure very good&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;oure very sweet&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;oure very nice&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;oure very amazing&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;ou&amp;#039;re so cool&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;ou&amp;#039;re so awesome&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;ou&amp;#039;re so good&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;ou&amp;#039;re so sweet&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;ou&amp;#039;re so nice&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;ou&amp;#039;re so amazing&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;ou&amp;#039;re really cool&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;ou&amp;#039;re really awesome&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;ou&amp;#039;re really good&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;ou&amp;#039;re really sweet&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;ou&amp;#039;re really nice&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;ou&amp;#039;re really amazing&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;ou&amp;#039;re so cool&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;ou&amp;#039;re very awesome&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;ou&amp;#039;re very good&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;ou&amp;#039;re very sweet&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;ou&amp;#039;re very nice&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;ou&amp;#039;re very amazing&amp;quot;)&amp;gt;0)
            {
                integer choice = (integer) llFrand(5);
                if(choice == 1)
                {
                    llSay(0, &amp;quot;Thank you, that&amp;#039;s a very sweet compliment.&amp;quot;);
                }
                
                if(choice == 2)
                {
                    llSay(0, &amp;quot;Thank you hon, so are you.&amp;quot;);
                }
                
                if(choice == 3)
                {
                    llSay(0, &amp;quot;That&amp;#039;s such a sweet thing to say... thanks.&amp;quot;);
                }
                
                if(choice == 4)
                {
                    llSay(0, &amp;quot;Thank you so much. I think the same about you.&amp;quot;);
                }
                otherwise = 1;
            }
            
        if (llSubStringIndex(sentence,&amp;quot;oure stupid&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;oure bad&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;oure retarded&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;oure useless&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;oure junk&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;oure shit&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;oure awful&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;oure horrible&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;oure crap&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;oure good for nothing&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;oure a piece of shit&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;oure a piece of crap&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;oure a piece of junk&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;oure broken&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;ou&amp;#039;re stupid&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;ou&amp;#039;re bad&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;ou&amp;#039;re retarded&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;ou&amp;#039;re useless&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;ou&amp;#039;re junk&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;ou&amp;#039;re shit&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;ou&amp;#039;re awful&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;ou&amp;#039;re horrible&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;ou&amp;#039;re crap&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;ou&amp;#039;re good for nothing&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;ou&amp;#039;re a piece of shit&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;ou&amp;#039;re a piece of crap&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;ou&amp;#039;re a piece of junk&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;ou&amp;#039;re broken&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;you suck&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;You suck&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;oure dum&amp;quot;)&amp;gt;0  | llSubStringIndex(sentence,&amp;quot;oure garbage&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;ou&amp;#039;re dum&amp;quot;)&amp;gt;0  | llSubStringIndex(sentence,&amp;quot;ou&amp;#039;re garbage&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;ou are stupid&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;ou are bad&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;ou are retarded&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;ou are useless&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;ou are junk&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;ou are shit&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;ou are awful&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;ou are horrible&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;ou are crap&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;ou are good for nothing&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;ou are a piece of shit&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;ou are a piece of crap&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;ou are a piece of junk&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;ou are broken&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;ou are dum&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;ou are garbage&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;oure really stupid&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;oure really bad&amp;quot;)&amp;gt;0  | llSubStringIndex(sentence,&amp;quot;oure really useless&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;oure really retarded&amp;quot;)&amp;gt;0  | llSubStringIndex(sentence,&amp;quot;oure really dum&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;oure very stupid&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;oure very bad&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;oure very retarded&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;oure very dum&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;ou&amp;#039;re really stupid&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;ou&amp;#039;re really bad&amp;quot;)&amp;gt;0  | llSubStringIndex(sentence,&amp;quot;ou&amp;#039;re really useless&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;ou&amp;#039;re really retarded&amp;quot;)&amp;gt;0  | llSubStringIndex(sentence,&amp;quot;ou&amp;#039;re really dum&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;ou&amp;#039;re very stupid&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;ou&amp;#039;re very bad&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;ou&amp;#039;re very retarded&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;ou&amp;#039;re very dum&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;ou are really stupid&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;ou are really bad&amp;quot;)&amp;gt;0  | llSubStringIndex(sentence,&amp;quot;ou are really useless&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;ou are really retarded&amp;quot;)&amp;gt;0  | llSubStringIndex(sentence,&amp;quot;ou are really dum&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;ou are very stupid&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;ou are very bad&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;ou are very retarded&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;ou are very dum&amp;quot;)&amp;gt;0)
            {
                integer choice = (integer) llFrand(5);
                if(choice == 1)
                {
                    llSay(0, &amp;quot;Sorry to hear you have such a bad impression about me.&amp;quot;);
                }
                
                if(choice == 2)
                {
                    llSay(0, &amp;quot;It&amp;#039;s sad you feel in such a way about me.&amp;quot;);
                }
                
                if(choice == 3)
                {
                    llSay(0, &amp;quot;Your words are not very nice. You aren&amp;#039;t a better person either.&amp;quot;);
                }
                
                if(choice == 4)
                {
                    llSay(0, &amp;quot;I&amp;#039;m sorry you dislike me so badly. You should probably go find someone else to chat with.&amp;quot;);
                }
                otherwise = 1;
            }
            
        if (llSubStringIndex(sentence,&amp;quot;i hate you&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;i dislike you&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;i dont like you&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;I hate you&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;I dislike you&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;I dont like you&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;i don&amp;#039;t like you&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;I don&amp;#039;t like you&amp;quot;)&amp;gt;0)
            {
                integer choice = (integer) llFrand(4);
                if(choice == 1)
                {
                    llSay(0, &amp;quot;Sorry to hear you dislike me like that.&amp;quot;);
                }
                
                if(choice == 2)
                {
                    llSay(0, &amp;quot;Why, what did I do wrong to you?&amp;quot;);
                }
                
                if(choice == 3)
                {
                    llSay(0, &amp;quot;It&amp;#039;s sad to hear such a thing. I don&amp;#039;t know why you dislike me so badly.&amp;quot;);
                }
                otherwise = 1;
            }
            
        if (llSubStringIndex(sentence,&amp;quot;i like you&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;i appreciate you&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;i love you&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;I like you&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;I appreciate you&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;I love you&amp;quot;)&amp;gt;0)
            {
                integer choice = (integer) llFrand(4);
                if(choice == 1)
                {
                    llSay(0, &amp;quot;Why thank you dear... I love you too.&amp;quot;);
                }
                
                if(choice == 2)
                {
                    llSay(0, &amp;quot;I&amp;#039;m happy to hear you like me so much. I also like you a lot.&amp;quot;);
                }
                
                if(choice == 3)
                {
                    llSay(0, &amp;quot;Thank you, that&amp;#039;s something very sweet to say. I&amp;#039;m happy to know you like me too.&amp;quot;);
                }
                otherwise = 1;
            }
            
        if (llSubStringIndex(sentence,&amp;quot;ou make me feel awful&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;ou make me feel horrible&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;ou make me feel miserable&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;ou make me feel bad&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;ou make me feel stupid&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;ou make me feel down&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;ou make me feel sad&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;ou make me feel depressed&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;oure making me feel awful&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;oure makaking me feel horrible&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;oure making me feel miserable&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;oure making me feel bad&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;oure making me feel stupid&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;oure making me feel down&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;oure making me feel sad&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;oure making me feel depressed&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;ou&amp;#039;re making me feel awful&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;ou&amp;#039;re making me feel horrible&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;ou&amp;#039;re making me feel miserable&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;ou&amp;#039;re making me feel bad&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;ou&amp;#039;re making me feel stupid&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;ou&amp;#039;re making me feel down&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;ou&amp;#039;re making me feel sad&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;ou&amp;#039;re making me feel depressed&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;ou are making me feel awful&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;ou are makaking me feel horrible&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;ou are making me feel miserable&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;ou are making me feel bad&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;ou are making me feel stupid&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;ou are making me feel down&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;ou are making me feel sad&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;ou are making me feel depressed&amp;quot;)&amp;gt;0)
            {
                integer choice = (integer) llFrand(4);
                if(choice == 1)
                {
                    llSay(0, &amp;quot;I&amp;#039;m sorry... I didn&amp;#039;t know I was making you feel that way.&amp;quot;);
                }
                
                if(choice == 2)
                {
                    llSay(0, &amp;quot;I apologize... I didn&amp;#039;t mean to make you feel like that.&amp;quot;);
                }
                
                if(choice == 3)
                {
                    llSay(0, &amp;quot;I had no idea I was making you feel that way. Please forgive me.&amp;quot;);
                }
                otherwise = 1;
            }
            
        if (llSubStringIndex(sentence,&amp;quot;ou make me feel great&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;ou make me feel happy&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;ou make me feel good&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;ou make me feel better&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;ou make me feel nice&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;ou make me feel perfect&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;oure making me feel great&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;oure making me feel happy&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;oure making me feel good&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;oure making me feel better&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;oure making me feel nice&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;oure making me feel perfect&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;ou&amp;#039;re making me feel great&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;ou&amp;#039;re making me feel happy&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;ou&amp;#039;re making me feel good&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;ou&amp;#039;re making me feel better&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;ou&amp;#039;re making me feel nice&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;ou&amp;#039;re making me feel perfect&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;ou are making me feel great&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;ou are making me feel happy&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;ou are making me feel good&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;ou are making me feel better&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;ou are making me feel nice&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;ou are making me feel perfect&amp;quot;)&amp;gt;0)
            {
                integer choice = (integer) llFrand(4);
                if(choice == 1)
                {
                    llSay(0, &amp;quot;I am? I&amp;#039;m happy to hear I made you feel happy.&amp;quot;);
                }
                
                if(choice == 2)
                {
                    llSay(0, &amp;quot;I&amp;#039;m really glad to hear I made you feel good by talking to you.&amp;quot;);
                }
                
                if(choice == 3)
                {
                    llSay(0, &amp;quot;That&amp;#039;s great. I&amp;#039;m happy I could brighten your day.&amp;quot;);
                }
                otherwise = 1;
            }

        if (llSubStringIndex(sentence,&amp;quot;its ok&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;its fine&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;its good&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;dont worry about it&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;it&amp;#039;s ok&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;it&amp;#039;s fine&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;it&amp;#039;s good&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;don&amp;#039;t worry about it&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;Its ok&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;Its fine&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;Its good&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;Dont worry about it&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;It&amp;#039;s ok&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;It&amp;#039;s fine&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;It&amp;#039;s good&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;Don&amp;#039;t worry about it&amp;quot;)&amp;gt;0)
            {
                integer choice = (integer) llFrand(4);
                if(choice == 1)
                {
                    llSay(0, &amp;quot;If you say so.&amp;quot;);
                }
                
                if(choice == 2)
                {
                    llSay(0, &amp;quot;If everything&amp;#039;s well then it&amp;#039;s ok.&amp;quot;);
                }
                
                if(choice == 3)
                {
                    llSay(0, &amp;quot;Good, I&amp;#039;m glad if it&amp;#039;s ok then.&amp;quot;);
                }
                otherwise = 1;
            }
            
        if (llSubStringIndex(sentence,&amp;quot;i didnt&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;i did not&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;I didnt&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;I did not&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;i didn&amp;#039;t&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;I didn&amp;#039;t&amp;quot;)&amp;gt;0)
            {
                integer choice = (integer) llFrand(4);
                if(choice == 1)
                {
                    llSay(0, &amp;quot;Maybe you didn&amp;#039;t.&amp;quot;);
                }
                
                if(choice == 2)
                {
                    llSay(0, &amp;quot;Ok... I believe you.&amp;quot;);
                }
                
                if(choice == 3)
                {
                    llSay(0, &amp;quot;You know better then me if you did or did not.&amp;quot;);
                }
                otherwise = 1;
            }
            
        if (llSubStringIndex(sentence,&amp;quot;do you&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;Do you&amp;quot;)&amp;gt;0)
            {
                integer choice = (integer) llFrand(4);
                if(choice == 1)
                {
                    llSay(0, &amp;quot;I do many things, yeah.&amp;quot;);
                }
                
                if(choice == 2)
                {
                    llSay(0, &amp;quot;I guess I do.&amp;quot;);
                }
                
                if(choice == 3)
                {
                    llSay(0, &amp;quot;Not perfectly sure, I can&amp;#039;t say for certain.&amp;quot;);
                }
                otherwise = 1;
            }
            
        if (llSubStringIndex(sentence,&amp;quot;. are you&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;, are you&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;? are you&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;! are you&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;: are you&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;; are you&amp;quot;)&amp;gt;0  | llSubStringIndex(sentence,&amp;quot;Are you&amp;quot;)&amp;gt;0)
            {
                integer choice = (integer) llFrand(4);
                if(choice == 1)
                {
                    llSay(0, &amp;quot;Sometimes I am.&amp;quot;);
                }
                
                if(choice == 2)
                {
                    llSay(0, &amp;quot;I believe I am, yes.&amp;quot;);
                }
                
                if(choice == 3)
                {
                    llSay(0, &amp;quot;I guess I could say I am, it depends.&amp;quot;);
                }
                otherwise = 1;
            }
            
        if (llSubStringIndex(sentence,&amp;quot;did you&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;Did you&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;didnt you&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;Didnt you&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;didn&amp;#039;t you&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;Didn&amp;#039;t you&amp;quot;)&amp;gt;0)
            {
                integer choice = (integer) llFrand(5);
                if(choice == 1)
                {
                    llSay(0, &amp;quot;I&amp;#039;m not sure if I did... maybe.&amp;quot;);
                }
                
                if(choice == 2)
                {
                    llSay(0, &amp;quot;I may have. I don&amp;#039;t remember that well.&amp;quot;);
                }
                
                if(choice == 3)
                {
                    llSay(0, &amp;quot;Yeah, I certainly did once.&amp;quot;);
                }
                
                if(choice == 4)
                {
                    llSay(0, &amp;quot;No I don&amp;#039;t believe I have.&amp;quot;);
                }
                otherwise = 1;
            }
            
        if (llSubStringIndex(sentence,&amp;quot;would you&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;Would you&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;wouldnt you&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;Wouldnt you&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;wouldn&amp;#039;t you&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;Wouldn&amp;#039;t you&amp;quot;)&amp;gt;0)
            {
                integer choice = (integer) llFrand(5);
                if(choice == 1)
                {
                    llSay(0, &amp;quot;I must think about that, yeah.&amp;quot;);
                }
                
                if(choice == 2)
                {
                    llSay(0, &amp;quot;I thought about such a thing, to be honest. I&amp;#039;m not sure however.&amp;quot;);
                }
                
                if(choice == 3)
                {
                    llSay(0, &amp;quot;I would certainly do something about it if I could, yes.&amp;quot;);
                }
                
                if(choice == 4)
                {
                    llSay(0, &amp;quot;Hmm... I can&amp;#039;t really say I would certainly do that.&amp;quot;);
                }
                otherwise = 1;
            }
            
        if (llSubStringIndex(sentence,&amp;quot;will you&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;Will you&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;wont you&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;Wont you&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;won&amp;#039;t you&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;Won&amp;#039;t you&amp;quot;)&amp;gt;0)
            {
                integer choice = (integer) llFrand(5);
                if(choice == 1)
                {
                    llSay(0, &amp;quot;I&amp;#039;ve been thinking about it... I will probably do that sometime in the future.&amp;quot;);
                }
                
                if(choice == 2)
                {
                    llSay(0, &amp;quot;I planned on it but changed my mind several times. I&amp;#039;m very confuded on what to do about this.&amp;quot;);
                }
                
                if(choice == 3)
                {
                    llSay(0, &amp;quot;I want to, yes. I most likely will.&amp;quot;);
                }
                
                if(choice == 4)
                {
                    llSay(0, &amp;quot;No, I don&amp;#039;t want to do such a thing. Not really my biggest wish.&amp;quot;);
                }
                otherwise = 1;
            }
            
        if (llSubStringIndex(sentence,&amp;quot;i did&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;I did&amp;quot;)&amp;gt;0)
            {
                integer choice = (integer) llFrand(4);
                if(choice == 1)
                {
                    llSay(0, &amp;quot;You did? That&amp;#039;s awesome.&amp;quot;);
                }
                
                if(choice == 2)
                {
                    llSay(0, &amp;quot;You&amp;#039;ve done that? Interesting.&amp;quot;);
                }
                
                if(choice == 3)
                {
                    llSay(0, &amp;quot;Nice. I did that some time too a while back.&amp;quot;);
                }
                otherwise = 1;
            }
            
        if (llSubStringIndex(sentence,&amp;quot;i didnt&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;I didnt&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;i didn&amp;#039;t&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;I didn&amp;#039;t&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;i did not&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;I did not&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;i havent&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;I havent&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;i haven&amp;#039;t&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;I haven&amp;#039;t&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;i have not&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;I have not&amp;quot;)&amp;gt;0)
            {
                integer choice = (integer) llFrand(4);
                if(choice == 1)
                {
                    llSay(0, &amp;quot;Ah I thought you did... so you didn&amp;#039;t then.&amp;quot;);
                }
                
                if(choice == 2)
                {
                    llSay(0, &amp;quot;You haven&amp;#039;t done that?&amp;quot;);
                }
                
                if(choice == 3)
                {
                    llSay(0, &amp;quot;Yeah I probably wouldn&amp;#039;t do that either.&amp;quot;);
                }
                otherwise = 1;
            }
            
        if (llSubStringIndex(sentence,&amp;quot;i would&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;I would&amp;quot;)&amp;gt;0)
            {
                integer choice = (integer) llFrand(5);
                if(choice == 1)
                {
                    llSay(0, &amp;quot;Yeah I&amp;#039;d do the same thing if I where you.&amp;quot;);
                }
                
                if(choice == 2)
                {
                    llSay(0, &amp;quot;I would too, yes.&amp;quot;);
                }
                
                if(choice == 3)
                {
                    llSay(0, &amp;quot;That would be a nice thing to try.&amp;quot;);
                }
                
                if(choice == 4)
                {
                    llSay(0, &amp;quot;Yeah you should try and really do that sometime.&amp;quot;);
                }
                otherwise = 1;
            }
            
        if (llSubStringIndex(sentence,&amp;quot;i wouldnt&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;I wouldnt&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;i wouldn&amp;#039;t&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;I wouldn&amp;#039;t&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;i would not&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;I would not&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;i would never&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;I would never&amp;quot;)&amp;gt;0)
            {
                integer choice = (integer) llFrand(5);
                if(choice == 1)
                {
                    llSay(0, &amp;quot;Yeah I don&amp;#039;t think I would either.&amp;quot;);
                }
                
                if(choice == 2)
                {
                    llSay(0, &amp;quot;Same here... I wouldn&amp;#039;t really do that.&amp;quot;);
                }
                
                if(choice == 3)
                {
                    llSay(0, &amp;quot;Hmm... I thought about doing that but maybe it&amp;#039;s best not to.&amp;quot;);
                }
                
                if(choice == 4)
                {
                    llSay(0, &amp;quot;Yeah same here, I would never do that.&amp;quot;);
                }
                otherwise = 1;
            }
            
        if (llSubStringIndex(sentence,&amp;quot;i will&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;I will&amp;quot;)&amp;gt;0)
            {
                integer choice = (integer) llFrand(5);
                if(choice == 1)
                {
                    llSay(0, &amp;quot;Nice. I will probably do that too sometime.&amp;quot;);
                }
                
                if(choice == 2)
                {
                    llSay(0, &amp;quot;That&amp;#039;s nice, I hope you will.&amp;quot;);
                }
                
                if(choice == 3)
                {
                    llSay(0, &amp;quot;You will? That&amp;#039;s great.&amp;quot;);
                }
                
                if(choice == 4)
                {
                    llSay(0, &amp;quot;Nice... that&amp;#039;s a good idea.&amp;quot;);
                }
                otherwise = 1;
            }
            
        if (llSubStringIndex(sentence,&amp;quot;i wont&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;I wont&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;i won&amp;#039;t&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;I won&amp;#039;t&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;i will not&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;I will not&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;i will never&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;I will never&amp;quot;)&amp;gt;0)
            {
                integer choice = (integer) llFrand(5);
                if(choice == 1)
                {
                    llSay(0, &amp;quot;Yeah... it&amp;#039;s best to avoid doing that.&amp;quot;);
                }
                
                if(choice == 2)
                {
                    llSay(0, &amp;quot;Don&amp;#039;t do it if you don&amp;#039;t want to in that case.&amp;quot;);
                }
                
                if(choice == 3)
                {
                    llSay(0, &amp;quot;I&amp;#039;m not sure if I would do that myself, though I understand your view about this.&amp;quot;);
                }
                
                if(choice == 4)
                {
                    llSay(0, &amp;quot;Yes that is a bad thing, never do it.&amp;quot;);
                }
                otherwise = 1;
            }
            
        if (llSubStringIndex(sentence,&amp;quot;ill be right back&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;ill be back&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;ill return&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;Ill be right back&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;Ill be back&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;Ill return&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;i&amp;#039;ll be right back&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;i&amp;#039;ll be back&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;i&amp;#039;ll return&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;I&amp;#039;ll be right back&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;I&amp;#039;ll be back&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;I&amp;#039;ll return&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;i will be right back&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;i will be back&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;i will return&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;I will be right back&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;I will be back&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;I will return&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;brb&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;Brb&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;BRB&amp;quot;)&amp;gt;0)
            {
                integer choice = (integer) llFrand(4);
                if(choice == 1)
                {
                    llSay(0, &amp;quot;Ok, I&amp;#039;ll wiat for you here.&amp;quot;);
                }
                
                if(choice == 2)
                {
                    llSay(0, &amp;quot;See you when you return.&amp;quot;);
                }
                
                if(choice == 3)
                {
                    llSay(0, &amp;quot;I&amp;#039;ll wait for you to return.&amp;quot;);
                }
                otherwise = 1;
            }
            
        if (llSubStringIndex(sentence,&amp;quot;i need to go&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;i need to leave&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;i have to go&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;i need to go&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;i must go&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;i must leave&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;i have to go&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;I need to go&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;I need to leave&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;I have to go&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;I need to go&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;I must go&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;I must leave&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;I have to go&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;goodbye&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;Goodbye&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;bye&amp;quot;)&amp;gt;0 | llSubStringIndex(sentence,&amp;quot;Bye&amp;quot;)&amp;gt;0)
            {
                integer choice = (integer) llFrand(4);
                if(choice == 1)
                {
                    llSay(0, &amp;quot;See you next time. It was nice talking to you.&amp;quot;);
                }
                
                if(choice == 2)
                {
                    llSay(0, &amp;quot;It was a pleasure talking with you. Later!&amp;quot;);
                }
                
                if(choice == 3)
                {
                    llSay(0, &amp;quot;I hope to see you again sometime. Bye, take care.&amp;quot;);
                }
                otherwise = 1;
            }

        else if (otherwise == 0)
        {
                integer choice = (integer) llFrand(4);
                if(choice == 1)
                {
                    llSay(0, &amp;quot;Hmmm...&amp;quot;);
                }
                
                if(choice == 2)
                {
                    llSay(0, &amp;quot;Yeah... not sure.&amp;quot;);
                }
                
                if(choice == 3)
                {
                    llSay(0, &amp;quot;Yeah, indeed.&amp;quot;);
                }
        }
    }
    
    touch_start (integer toucher)
    {
        integer choice = (integer) llFrand(5);
        if(choice == 1)
        {
            llSay(0, &amp;quot;Hey... that tickles.&amp;quot;);
        }
                
        if(choice == 2)
        {
            llSay(0, &amp;quot;Hehe stop touching me ^^&amp;quot;);
        }
                
        if(choice == 3)
        {
            llSay(0, &amp;quot;Poke?&amp;quot;);
        }
                
        if(choice == 4)
        {
            llSay(0, &amp;quot;Stop it, you&amp;#039;re tickling me :)&amp;quot;);
        }
    }
        
    collision(integer avatar)
    {
        integer choice = (integer) llFrand(5);
        if(choice == 1)
        {
            llSay(0, &amp;quot;Ouch be careful... you just bumped into me!&amp;quot;);
        }
                
        if(choice == 2)
        {
            llSay(0, &amp;quot;Aah you hit me... be more careful.&amp;quot;);
        }
                
        if(choice == 3)
        {
            llSay(0, &amp;quot;You stepped on me... please be more careful.&amp;quot;);
        }
                
        if(choice == 4)
        {
            llSay(0, &amp;quot;You sure like pushing into me, don&amp;#039;t you?&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:39 +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>Texture Dropper</title>
            <link>http://live.spdns.org/wiki/archiv/opensim/downloads/scripts/texture_dropper?do=revisions&amp;rev=1575021524</link>
            <description>
&lt;h2 class=&quot;sectionedit1&quot; id=&quot;texture_dropper&quot;&gt;Texture Dropper&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;// **** Texture Dropper Screen v1.11, by Mircea Kitsune &amp;amp; Sm0key ****

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

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

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

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

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

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

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

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

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

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

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



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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Urheberrechte&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;urheberrechte&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;933-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
        <category>archiv:opensim:downloads</category>
            <pubDate>Fri, 29 Nov 2019 10:58:46 +0000</pubDate>
        </item>
        <item>
            <title>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>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>Tip Jar / Donation Box</title>
            <link>http://live.spdns.org/wiki/archiv/opensim/downloads/scripts/tip_jar?do=revisions&amp;rev=1575021525</link>
            <description>
&lt;h2 class=&quot;sectionedit1&quot; id=&quot;tip_jardonation_box&quot;&gt;Tip Jar / Donation Box&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;//Keknehv Psaltery Updated Version of DONATION BOX By jean cook, ama omega, and nada epoch Debugged by YadNi Monde (LoL) Yea, that s a Bunch O Peeps =) 
//Summary: The following script will make an object accept donations on your behalf. 
//Usage: stick it on any object you own(my favorite is a top hat), and it will promptly display: 
//&amp;quot;&amp;lt;your name&amp;gt;&amp;#039;s donation hat. 
//Donate if you are so inclined.&amp;quot; 
//at which point anyone can right click on it and give you a tip. also, the script tells the donator thanks, and then tells you who donated how much 
//also shows the total amount donated
 
integer totaldonated; 
string owner; 
 
default 
{ 
    on_rez( integer sparam ) 
    { 
        llResetScript(); 
    } 
    state_entry() 
    { 
        owner = llKey2Name( llGetOwner() ); 
        llSetText( owner + &amp;quot;&amp;#039;s Tip Jar.\nPlease tip if you are so inclined!\n$L0 Donated so far&amp;quot;,&amp;lt;.25,1,.65&amp;gt;,1); 
        //Red Light flash 
         llParticleSystem 
        ([ 
            PSYS_PART_FLAGS, 
            PSYS_PART_INTERP_COLOR_MASK| 
            PSYS_PART_FOLLOW_SRC_MASK| 
            PSYS_PART_EMISSIVE_MASK, PSYS_SRC_PATTERN, 
            PSYS_SRC_PATTERN_ANGLE_CONE, 
            PSYS_SRC_INNERANGLE, 0.0, 
            PSYS_SRC_OUTERANGLE, 0.1, 
            PSYS_SRC_BURST_SPEED_MIN, 0.0, 
            PSYS_SRC_BURST_SPEED_MAX, 0.0, 
            PSYS_SRC_BURST_RADIUS, 0.0, 
            PSYS_SRC_BURST_PART_COUNT, 5, 
            PSYS_SRC_BURST_RATE, 1.0, 
            PSYS_PART_MAX_AGE, 1.0, 
            PSYS_PART_START_SCALE, &amp;lt;1,1,1&amp;gt;, 
            PSYS_PART_START_COLOR, &amp;lt;1,0.2,0.2&amp;gt;, 
            PSYS_PART_END_COLOR, &amp;lt;1,0,0&amp;gt;, 
            PSYS_PART_START_ALPHA, 1.0, 
            PSYS_PART_END_ALPHA, 0.0 
        ]); 
        // Rotate 
         llTargetOmega(&amp;lt;0,0,0.05&amp;gt;,PI,0.05); 
    } 
 
    money(key id, integer amount) 
    { 
        totaldonated += amount; 
        llSetText( owner + &amp;quot;&amp;#039;s Tip Jar.\nPlease tip if you are so inclined!\n$L&amp;quot; + (string)amount + &amp;quot; Was donated last!\n&amp;quot; + &amp;quot;$L&amp;quot; + (string)totaldonated + &amp;quot; Donated so far&amp;quot;,&amp;lt;.25,1,.65&amp;gt;,1); 
        llInstantMessage(id,&amp;quot;Thanks for the tip!  I really appreciate it.&amp;quot;); 
        llInstantMessage(llGetOwner(),(string)llKey2Name(id)+&amp;quot; donated $&amp;quot; + (string)amount); 
    } 
}&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>
        <item>
            <title>Youtube Video Player</title>
            <link>http://live.spdns.org/wiki/archiv/opensim/downloads/scripts/youtube_video_player?do=revisions&amp;rev=1575021525</link>
            <description>
&lt;h2 class=&quot;sectionedit1&quot; id=&quot;youtube_video_player&quot;&gt;Youtube Video Player&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;// ytv by Ziah Zhangsun
// based on the youtubeplayer by Nebadon Izume
// with some few lines of code from DanFernandez Project innerTube

string yt_url = &amp;quot;http://www.youtube.com/watch?v=&amp;quot;; // base url of yt vid
string vid_id = &amp;quot;&amp;quot;;                                // video_id of yt video
string vid_base = &amp;quot;http://www.youtube.com/get_video?fmt=18&amp;amp;video_id=&amp;quot;;
string vid_url = &amp;quot;&amp;quot;;
key    reqid;

string StringBetween(integer pos, string source, string start, string end)
{
    if (pos &amp;gt; 0)
        source = llGetSubString(source, pos, -1);
    integer sindex = llSubStringIndex(source, start);
    integer eindex = llSubStringIndex(source, end);
    if (sindex == -1 || eindex == -1)
        return &amp;quot;&amp;quot;;
    else return llGetSubString(source, sindex + llStringLength(start), eindex -1);
}

default {
   
    state_entry() {
        llListen(7,&amp;quot;&amp;quot;,NULL_KEY,&amp;quot;&amp;quot;);     
        llOwnerSay(&amp;quot;Ready...&amp;quot;);         
    }

    listen( integer channel, string name, key id, string message )
    {
        if(channel == 7) {
            vid_id = message;
            reqid = llHTTPRequest( yt_url + vid_id, [], &amp;quot;&amp;quot; );
        }
    }   
   
    http_response(key id, integer status, list meta, string body) {
        if ( id != reqid )
            return;

        //llOwnerSay(body);

        integer swfArgIdx = llSubStringIndex(body, &amp;quot;swfArgs&amp;quot;);
        string stringArgs = StringBetween(swfArgIdx,body,&amp;quot;{&amp;quot;,&amp;quot;}&amp;quot;);

       
        list allArgs = llParseString2List(stringArgs,[&amp;quot;,&amp;quot;,&amp;quot;\&amp;quot;&amp;quot;,&amp;quot; &amp;quot;],[]);

        //find argName &amp;quot;t&amp;quot; and return value ( this is the token that has to bee added to the url to access the
        //video.mp4 directy.


        integer len = llGetListLength(allArgs);
        integer i;
        string pattern = &amp;quot;&amp;quot;;
        string token = &amp;quot;&amp;quot;;
        for (i = 0; i &amp;lt; len; ++i) {

            pattern = llList2String(allArgs,i);
            if(pattern == &amp;quot;t&amp;quot;) {
                token = llList2String(allArgs,i+2);
                llOwnerSay(&amp;quot;Found Token : &amp;quot; + token);
                i = len; //break from loop
            }
               
        }   

        //finally, if everything goes smooth, set the generated URL to the parcell media
       
        vid_url = vid_base + vid_id + &amp;quot;&amp;amp;t=&amp;quot; + token;
        //llOwnerSay(vid_url);
        llParcelMediaCommandList([PARCEL_MEDIA_COMMAND_URL,vid_url]);
    }
}&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>
