<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>http://wiki.osgrid.org/index.php?action=history&amp;feed=atom&amp;title=Scripting_Tutorial-08</id>
	<title>Scripting Tutorial-08 - Revision history</title>
	<link rel="self" type="application/atom+xml" href="http://wiki.osgrid.org/index.php?action=history&amp;feed=atom&amp;title=Scripting_Tutorial-08"/>
	<link rel="alternate" type="text/html" href="http://wiki.osgrid.org/index.php?title=Scripting_Tutorial-08&amp;action=history"/>
	<updated>2026-10-25T11:06:24Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.11</generator>
	<entry>
		<id>http://wiki.osgrid.org/index.php?title=Scripting_Tutorial-08&amp;diff=347&amp;oldid=prev</id>
		<title>Osgridadmin: /* Scripting Lesson #8 - Held August 25th, 2018 at Sandbox Plaza by Fu Barr */</title>
		<link rel="alternate" type="text/html" href="http://wiki.osgrid.org/index.php?title=Scripting_Tutorial-08&amp;diff=347&amp;oldid=prev"/>
		<updated>2018-09-07T15:43:09Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Scripting Lesson #8 - Held August 25th, 2018 at Sandbox Plaza by Fu Barr&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 15:43, 7 September 2018&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot;&gt;Line 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Scripting Lesson #8 - Held &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;August 25th&lt;/del&gt;, 2018 at Sandbox Plaza by Fu Barr ==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Scripting Lesson #8 - Held &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;September 1st&lt;/ins&gt;, 2018 at Sandbox Plaza by Fu Barr ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;source lang=&amp;quot;lsl&amp;quot;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;source lang=&amp;quot;lsl&amp;quot;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;/*&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;/*&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Osgridadmin</name></author>
	</entry>
	<entry>
		<id>http://wiki.osgrid.org/index.php?title=Scripting_Tutorial-08&amp;diff=346&amp;oldid=prev</id>
		<title>Osgridadmin: /* Scripting Lesson #8 - Held August 25th, 2018 at Sandbox Plaza by Fu Barr */</title>
		<link rel="alternate" type="text/html" href="http://wiki.osgrid.org/index.php?title=Scripting_Tutorial-08&amp;diff=346&amp;oldid=prev"/>
		<updated>2018-09-07T15:42:02Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Scripting Lesson #8 - Held August 25th, 2018 at Sandbox Plaza by Fu Barr&lt;/span&gt;&lt;/p&gt;
&lt;a href=&quot;http://wiki.osgrid.org/index.php?title=Scripting_Tutorial-08&amp;amp;diff=346&amp;amp;oldid=345&quot;&gt;Show changes&lt;/a&gt;</summary>
		<author><name>Osgridadmin</name></author>
	</entry>
	<entry>
		<id>http://wiki.osgrid.org/index.php?title=Scripting_Tutorial-08&amp;diff=345&amp;oldid=prev</id>
		<title>Osgridadmin: Created page with &quot;== Scripting Lesson #8 - Held August 25th, 2018 at Sandbox Plaza by Fu Barr == &lt;source lang=&quot;lsl&quot;&gt; /*      Fu&#039;s basic light switch      v0.2      - turn-off-the-lamp timeout...&quot;</title>
		<link rel="alternate" type="text/html" href="http://wiki.osgrid.org/index.php?title=Scripting_Tutorial-08&amp;diff=345&amp;oldid=prev"/>
		<updated>2018-09-07T15:40:53Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;== Scripting Lesson #8 - Held August 25th, 2018 at Sandbox Plaza by Fu Barr == &amp;lt;source lang=&amp;quot;lsl&amp;quot;&amp;gt; /*      Fu&amp;#039;s basic light switch      v0.2      - turn-off-the-lamp timeout...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== Scripting Lesson #8 - Held August 25th, 2018 at Sandbox Plaza by Fu Barr ==&lt;br /&gt;
&amp;lt;source lang=&amp;quot;lsl&amp;quot;&amp;gt;&lt;br /&gt;
/*&lt;br /&gt;
&lt;br /&gt;
    Fu&amp;#039;s basic light switch&lt;br /&gt;
&lt;br /&gt;
    v0.2 &lt;br /&gt;
    - turn-off-the-lamp timeout&lt;br /&gt;
    - expanded setup&lt;br /&gt;
&lt;br /&gt;
    v0.1&lt;br /&gt;
    - basic on/off toggle&lt;br /&gt;
&lt;br /&gt;
*/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
integer DEBUG = TRUE;&lt;br /&gt;
&lt;br /&gt;
integer DIALOG_CHANNEL;&lt;br /&gt;
integer dialog_listen_id;&lt;br /&gt;
&lt;br /&gt;
float   LAMP_TIMEOUT = 5.0;&lt;br /&gt;
list    lamps;&lt;br /&gt;
&lt;br /&gt;
list    colours_names = [&amp;quot;red&amp;quot;, &amp;quot;blue&amp;quot;, &amp;quot;green&amp;quot;];&lt;br /&gt;
list    colours_rgb   = [&amp;lt;1.0, 0, 0&amp;gt;, &amp;lt;0, 0, 1.0&amp;gt;, &amp;lt;0, 1.0, 0&amp;gt;]; &lt;br /&gt;
float   colours_glow  = 0.20;&lt;br /&gt;
&lt;br /&gt;
set_lamps(string colour_name) {&lt;br /&gt;
&lt;br /&gt;
    vector  rgb;&lt;br /&gt;
    float   glow;&lt;br /&gt;
&lt;br /&gt;
    if(colour_name == &amp;quot;none&amp;quot;) {&lt;br /&gt;
&lt;br /&gt;
        rgb = &amp;lt;1,1,1&amp;gt;;&lt;br /&gt;
        glow = 0.0;&lt;br /&gt;
&lt;br /&gt;
    } else {&lt;br /&gt;
&lt;br /&gt;
        integer id = llListFindList(colours_names, [colour_name]);&lt;br /&gt;
        &lt;br /&gt;
        if(id &amp;gt; -1) {&lt;br /&gt;
&lt;br /&gt;
            rgb  = llList2Vector(colours_rgb, id);&lt;br /&gt;
            glow = colours_glow;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    integer i   = 0;&lt;br /&gt;
    integer end = llGetListLength(lamps);&lt;br /&gt;
&lt;br /&gt;
    while(i &amp;lt; end) {&lt;br /&gt;
&lt;br /&gt;
        llSetLinkPrimitiveParamsFast(llList2Integer(lamps, i), &lt;br /&gt;
&lt;br /&gt;
            // the UUID here is the OSgrid specific one for &amp;#039;Blank Texture&amp;#039;&lt;br /&gt;
&lt;br /&gt;
            [ PRIM_FULLBRIGHT,  ALL_SIDES, FALSE,&lt;br /&gt;
              PRIM_TEXTURE,     ALL_SIDES, &amp;quot;5748decc-f629-461c-9a36-a35a221fe21f&amp;quot;, &amp;lt;1,1,0&amp;gt;, &amp;lt;0,0,0&amp;gt;, 0,&lt;br /&gt;
              PRIM_COLOR,       ALL_SIDES, rgb, 1.0, &lt;br /&gt;
              PRIM_GLOW,        ALL_SIDES, glow ]&lt;br /&gt;
        );&lt;br /&gt;
&lt;br /&gt;
        i++;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
default {&lt;br /&gt;
&lt;br /&gt;
    state_entry() {&lt;br /&gt;
&lt;br /&gt;
        llOwnerSay(&amp;quot;running: &amp;quot; + llGetScriptName());&lt;br /&gt;
&lt;br /&gt;
        // 0. setup lamps&lt;br /&gt;
        integer i   = 1;    // linked prims are numbered from 1&lt;br /&gt;
        integer end = llGetNumberOfPrims();&lt;br /&gt;
&lt;br /&gt;
        while(i &amp;lt;= end) {&lt;br /&gt;
&lt;br /&gt;
            if(llGetLinkName(i) == &amp;quot;lamp&amp;quot;) {&lt;br /&gt;
&lt;br /&gt;
                lamps += i;&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
            i++;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        if(DEBUG){llOwnerSay(llDumpList2String(lamps, &amp;quot;,&amp;quot;));}&lt;br /&gt;
&lt;br /&gt;
        // 1. generate random DIALOG_CHANNEL&lt;br /&gt;
        DIALOG_CHANNEL = ((integer) llFrand(10000000)) * -1;&lt;br /&gt;
&lt;br /&gt;
        // 2. showtime!&lt;br /&gt;
        state unlit;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
state unlit {&lt;br /&gt;
&lt;br /&gt;
    state_entry() {&lt;br /&gt;
&lt;br /&gt;
        set_lamps(&amp;quot;none&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    touch_end(integer num_touches) {&lt;br /&gt;
&lt;br /&gt;
        if(llDetectedKey(0) == llGetOwner()) {&lt;br /&gt;
&lt;br /&gt;
            llDialog(llGetOwner(), &amp;quot;\npick a colour&amp;quot;, colours_names, DIALOG_CHANNEL);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        dialog_listen_id = llListen(DIALOG_CHANNEL, &amp;quot;&amp;quot;, llGetOwner(), &amp;quot;&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    listen(integer channel, string name, key uuid, string msg) {&lt;br /&gt;
&lt;br /&gt;
        set_lamps(msg);&lt;br /&gt;
        &lt;br /&gt;
        state lit;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
state lit {&lt;br /&gt;
&lt;br /&gt;
    state_entry() {&lt;br /&gt;
&lt;br /&gt;
        // 1. setup timer event&lt;br /&gt;
        llSetTimerEvent(LAMP_TIMEOUT);&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    timer() {&lt;br /&gt;
&lt;br /&gt;
        set_lamps(&amp;quot;none&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
        state unlit;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Osgridadmin</name></author>
	</entry>
</feed>