tag:blogger.com,1999:blog-29470259429123545292024-03-05T07:13:05.476-08:00Black Tulip - ScriptsAuryn Beornhttp://www.blogger.com/profile/02832014326094809370noreply@blogger.comBlogger39125tag:blogger.com,1999:blog-2947025942912354529.post-34903375609697058192017-12-31T03:30:00.000-08:002017-05-18T02:21:28.996-07:00Scripts DocumentationBlack Tulip has added to its stock an interesting collection of scripts for designers and general tools. In order to make it easier for you to refer at any time to the documentation of the scripts you purchase, you'll find in this page a link to all the documentation for all of Black Tulip's scripts, not depending on whether notecards will load or not, or even if you are connected to SL.<br />
<br />
If there are any updates to the scripts' documentation, said updates will be done in this website <i>only</i>. Web is more convenient for documentation, as it makes it easier to create linked sections for your ease of navigation through the information, as well as offering a better formatting than what we can obtain in the inworld notecards.<br />
<br />
<div style="border: 2px solid black;padding: 5px"><h2>Categories</h2><ul><li><a href="#featured">Featured</a> (A selection)</li>
<li><a href="http://blacktulip-scripts.blogspot.com/p/light-control.html">Light Control (with optional sounds)</a></li>
<li><a href="http://blacktulip-scripts.blogspot.com/p/clocks.html">Clock Scripts</a></li>
<li><a href="http://blacktulip-scripts.blogspot.com/p/sound-and-music.html">Sound and Music Control</a></li>
<li><a href="http://blacktulip-scripts.blogspot.com/p/indoor.html">Indoors</a></li>
<li><a href="http://blacktulip-scripts.blogspot.com/p/outdoor.html">Outdoors (Watering, barbeques, etc.)</a></li>
<li><a href="http://blacktulip-scripts.blogspot.com/p/seasonal.html">Seasonal (Halloween, Christmas, etc.)</a></li>
<li><a href="#tools">Tools (Business, Education)</a></li>
<li><a href="#freeScripts">Free Scripts and Tools</a></li>
</ul></div><br />
<a name="featured"></a><br />
<h2>Scripts: Featured</h2><ul><li>Indoor, Outdoor: <a href="http://blacktulip-doors.blogspot.com/">Multi-Door Tool v2</a>, <a href="https://marketplace.secondlife.com/p/Black-Tulip-Multi-DoorDrawerCurtain-Tools-V2/2891315">Door script in Marketplace</a>.</li>
<li>Indoor, Outdoor: <a href="http://blacktulip-scripts.blogspot.com/2014/11/script-fireplaces-full-edition.html">Fireplaces (Full Edition)</a>, <a href="https://marketplace.secondlife.com/p/Black-Tulip-Fireplaces-Full-Edition/5485653">Fireplaces script in Marketplace</a>.</li>
<li>Indoor, Outdoor: <a href="http://blacktulip-scripts.blogspot.com/2015/02/script-theme-texture-change-materials.html">Theme texture change, with materials support</a>, <a href="https://marketplace.secondlife.com/p/Black-Tulip-Script-Theme-Texture-Change-Materials/6890527">Theme texture change script, with materials support, in Marketplace</a>.</li>
<li>Clock Scripts: <a href="http://blacktulip-clock-scripts.blogspot.com/p/grandfather.html">Grandfather Clock Script</a>, <a href="https://marketplace.secondlife.com/p/Black-Tulip-Script-Analog-Clock-Grandfather-Clock-Edition/6865640">Grandfather Clock Script in Marketplace</a>.</li>
<li>Sound and Music: <a href="http://blacktulip-scripts.blogspot.com/2014/10/script-my-music-box-basic-edition.html">My music box (Basic Edition)</a>, <a href="https://marketplace.secondlife.com/p/Black-Tulip-My-Music-Box-Basic-Edition/3747357">Music script in Marketplace</a>.</li>
<li>Light Control: <a href="http://blacktulip-scripts.blogspot.com/2014/02/script-lamps-controller.html">Lamps Controller</a>, <a href="https://marketplace.secondlife.com/p/Black-Tulip-Lamps-Controller/5770993">Lamps Controller script in Marketplace</a>.</li>
<li>Indoor: <a href="http://blacktulip-scripts.blogspot.com/2014/08/script-bathtub-controller.html">Bathtub Controller</a>, <a href="https://marketplace.secondlife.com/p/Black-Tulip-Bathtub-Controller-Script/6023230">Bathtub Controller script in Marketplace</a>.</li>
<li>Outdoor: <a href="http://blacktulip-scripts.blogspot.com/2014/08/script-barbeque-controller-full-edition.html">Barbeque Controller (Full Edition)</a>, <a href="https://marketplace.secondlife.com/p/Black-Tulip-Barbeque-Controller-Script-Full-Edition/5818866">Barbeque Controller, Full Edition script, in Marketplace</a>.</li>
</ul><br />
<a name="tools"></a><br />
<h2>Scripts: Tools (Business, Education)</h2><ul><li><a href="http://blacktulip-scripts.blogspot.com/2014/11/tool-simple-teleport-system.html">Simple Teleport System</a>, <a href="https://marketplace.secondlife.com/p/Black-Tulip-Simple-Teleport-System/6234473">Simple Teleport System Tool in Marketplace</a>.</li>
<li><a href="http://blacktulip-presenter.blogspot.com/">Presenter</a>, <a href="https://marketplace.secondlife.com/p/Black-Tulip-Presenter/2891255">Presenter Tool in Marketplace</a>.</li>
<li><a href="http://blacktulip-scripts.blogspot.com/2014/11/tool-messengersender-tool.html">Messenger/Sender Tool</a>, <a href="https://marketplace.secondlife.com/p/Black-Tulip-MessengerSender-Tool/3830459">Messenger/Sender Tool in Marketplace</a>.</li>
<li><a href="http://blacktulip-scripts.blogspot.com/2014/11/tool-information-point.html">Information Point</a>, <a href="https://marketplace.secondlife.com/p/Black-Tulip-Information-Point/3228985">Information Point Tool in Marketplace</a>.</li>
<li><a href="http://blacktulip-scripts.blogspot.com/2014/02/tool-color-hud.html">Color HUD</a>, <a href="https://marketplace.secondlife.com/p/Black-Tulip-Color-HUD/3228971">Color HUD Tool in Marketplace</a>.</li>
</ul><br />
<a name="freeScripts"></a><br />
<h2>Scripts: Free Scripts and Tools</h2><ul><li><a href="http://auryn-beorn.blogspot.com/2013/10/creator-resource-how-to-create-zero-lag.html">How to create ZERO lag animated water</a>, <a href="https://marketplace.secondlife.com/p/Black-Tulip-How-to-create-ZERO-LAG-animated-water/3602890">How to create ZERO lag animated water in Marketplace</a>.</li>
<li>Your very basic Particle templates, <a href="https://marketplace.secondlife.com/p/Black-Tulip-Your-Very-Basic-Particle-Templates/4101430">Your vary basic Particle templates in Marketplace</a>.</li>
<li><a href="http://auryn-beorn.blogspot.com/2013/09/creator-resource-low-lag-scripts-for.html">Low lag scripts for builders</a>, <a href="https://marketplace.secondlife.com/p/Black-Tulip-Low-Lag-Scripts-For-Builders/3022538">Low lag scripts for builders, in Marketplace</a>.</li>
</ul><br />
<!--
<li><a href=""></a>, <a href="">in Marketplace</a>.</li><br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
//-->Auryn Beornhttp://www.blogger.com/profile/02832014326094809370noreply@blogger.comtag:blogger.com,1999:blog-2947025942912354529.post-33029279278206479092017-06-15T12:00:00.000-07:002017-06-15T16:10:40.915-07:00Script: Shower AVsitter Plugin<script>
LayersList = [
"div-whatIsIncludedInYourPurchase"
, "div-featuresList"
, "div-stepByStepGuide"
, "div-advancedSetup"
, "div-descriptionFormat"
, "div-notecardConfigurationInDetail"
, "div-troubleshooting"
];
function DoNothing() // It does nothing indeed. Its purpose is to save warnings in <a> elements
{
}
function Layers_ShowHide(theLayer, LayersList)
{
var theLayerDisplay = theLayer.style.display;
var totalLayersList = LayersList.length;
var i;
for(i = 0; i < totalLayersList; i++)
{
document.getElementById(LayersList[i]).style.display = "none";
}
if(theLayerDisplay != "block") theLayer.style.display = "block";
else theLayer.style.display = "none";
}
</script>
<div class="myPost">
<h2>
Documentation · Shower AVsitter Plugin</h2><p>
<a href="https://marketplace.secondlife.com/p/Black-Tulip-Script-Shower-AVsitter-Plugin/12030828">Shower AVsitter Plugin script in Marketplace.</a></p><p>
Thank you for having considered this script to enhance the quality of your products. Please read the following instructions carefully, especially the ones explaining which permissions to apply to the scripts for the next owner. Failure to complete this task INVALIDATES the license governing your use of this set of scripts. Should you have problems, please <a href="http://blacktulip-store.blogspot.com/p/customer-support.html">fill the scripts assistance form, explaining what you did and what happened</a>, and I'll get back to you.</p><b>IMPORTANT!</b>
The script contains a check to prevent accidental give-aways. If you haven't set permissions correctly in your inventory, then the script will self delete when you try to use it. The best way to ensure you set permissions correctly is by doing it NOW in your inventory.
<p>
Follow these directions carefully. Complete the <i>Step by Step Guide</i> in the first place and then go to the <i>Advanced Setup</i> section for a detailed explanation of all the features. There's a <i>Troubleshooting</i> section at the end. Before asking for help, check that your problem isn't one of the problems described in there.</p><h2 class="clickForInfo">
License of Use: <a href="">Click here to read the License of use.</a></h2><h2 onclick="Layers_ShowHide(getElementById('div-whatIsIncludedInYourPurchase'), LayersList);" class="clickForInfo">
What's included in your purchase</h2><div id="div-whatIsIncludedInYourPurchase" class="info">
<p>
Check that your box contains the following assets:</p><ul>
<li>[Black Tulip] Shower - AVsitter Plugin</li>
<li>[Black Tulip] Shower - AVsitter Plugin ~CFG~</li>
<li>[Black Tulip] Proof Of Purchase - Shower Plugin v1</li>
<li>[Black Tulip] Shower - AVsitter Plugin ~DOC~</li>
<li>[Black Tulip] Water Particle Shower #1</li>
<li>[Black Tulip] Water Particle Shower #2</li>
<li>[Black Tulip] Water Particle Shower #3</li>
</ul><p>
and these <b>sample</b> assets, necessary to follow the step-by-step guide:</p><ul>
<li>[Black Tulip] Shower #1 - START HERE</li>
<li>[Black Tulip] Water Sounds - Flow #01</li>
<li>[Black Tulip] Water Sounds - Flow #03</li>
<li>[Black Tulip] Water Sounds - Flow #05</li>
<li>[Black Tulip] Water Sounds - Flow #06</li>
<li>[Black Tulip] Shower #1 - FINISHED SAMPLE</li>
<li>[Black Tulip] Shower #1 - WITH MOVING DOOR</li>
</ul><p>
If any of these is missing, contact Auryn Beorn for a replacement. Keep in mind that sample assets are never provided in full perms state. They're included to illustrate how to use the script. The soundclips in particular, are part of a set that is a group gift.</p></div><h2 onclick="Layers_ShowHide(getElementById('div-featuresList'), LayersList);" href="javascript:DoNothing();" class="clickForInfo">
Features list</h2><div id="div-featuresList" class="info">
<p>
Sit on the shower and the water will run. Access from AVsitter to a menu that will let you:</p><ul>
<li>Turn the water on/off while in the shower</li>
<li>Select one from up to nine sound clips - or no sound at all</li>
<li>Change the sound volume</li>
<li>Have up to two particles effects (falling water and steam)</li>
</ul><p>
The water is particles based. Three particles textures are included.</p></div><h2 onclick="Layers_ShowHide(getElementById('div-stepByStepGuide'), LayersList);" href="javascript:DoNothing();" class="clickForInfo">
Step by Step Guide</h2><div id="div-stepByStepGuide" class="info">
<p>
Rez the sample object <tt>[Black Tulip] Shower #1 - START HERE</tt>, which is already prepared with a couple of animations and the AVsitter engine:</p><div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEibMWYgMcorfWuIL88rp24Zd6gpblmpiMndni7D7wakzhxV9TVcJzgVBTrp609KBITCi-7HgFKWGbo2I6Gf-_xZ0vQ6jgAr3dceQEMwhxPuTSRkgkL6_MQadUrxJxlVizIELJMeef7kor8/s1600/Shower_AVsitterPlugin_001.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEibMWYgMcorfWuIL88rp24Zd6gpblmpiMndni7D7wakzhxV9TVcJzgVBTrp609KBITCi-7HgFKWGbo2I6Gf-_xZ0vQ6jgAr3dceQEMwhxPuTSRkgkL6_MQadUrxJxlVizIELJMeef7kor8/s640/Shower_AVsitterPlugin_001.png" width="640" height="539" data-original-width="849" data-original-height="715" /></a></div><p>
Our goal will be preparing the object so the following actions are possible:</p><ul>
<li>We'll decide on which sounds we want to offer, and add them to the configuration notecard.</li>
<li>We'll make a particles effect that will fall from the shower head.</li>
<li>We'll make a particles fog effect on the shower floor, where the drain is placed.</li>
<li>We'll add a button under the [ADJUST] menu of AVsitter, to access to our shower menu.</li>
</ul><h3>
Offering sounds to the user</h3><p>
We'll offer the following sounds (available as <i>samples</i>, for the sake of demonstration):</p><ul>
<li>[Black Tulip] Water Sounds - Flow #01</li>
<li>[Black Tulip] Water Sounds - Flow #03</li>
<li>[Black Tulip] Water Sounds - Flow #05</li>
<li>[Black Tulip] Water Sounds - Flow #06</li>
</ul><p>
The sounds must show on the menu, so we have to give them a name. How? For example, writing this on the <tt>[Black Tulip] Shower - AVsitter Plugin ~CFG~</tt> configuration notecard</p><pre>sound = Water 1 | [Black Tulip] Water Sounds - Flow #03
sound = Water 2 | [Black Tulip] Water Sounds - Flow #01
sound = Water 3 | [Black Tulip] Water Sounds - Flow #05
sound = Water 4 | [Black Tulip] Water Sounds - Flow #06
</pre><p>
Notice the format. First we write the keyword <tt>sound</tt>, then an = sign, and then we write the rest of the line following the format:</p><pre>MenuLabel | SoundclipInObject</pre><p>
The first part is what will show as a menu button (so don't write anything larger than 24 bytes), and the second part is the name of the sound clip, the file name of the sound clip we'll drop in the object.</p><p>
The <tt>[Black Tulip] Shower - AVsitter Plugin ~CFG~</tt> configuration notecard is actually prepared to be used, so we're explaining what are the parts you see there, to know what to modify in your own builds.</p><h3>
Particles effect that will fall from the shower head</h3><p>
First, we have to give a specific <b>description</b> to the prim where the particles will emit. This description is:</p><div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh6Dcitfx3dZCwRQHn70BpZpGahkxsmXLTogUf-z14GrIUTJo2VZ77ZKqxfZ11gHniCDJ8P1d5YfS4IbyDMCdeINs5jrLaF93DsLgyFQgBirR4Q9n3zzm-k9wjNEyqDPqLMn7X4Q74gUNE/s1600/Shower_AVsitterPlugin_002.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh6Dcitfx3dZCwRQHn70BpZpGahkxsmXLTogUf-z14GrIUTJo2VZ77ZKqxfZ11gHniCDJ8P1d5YfS4IbyDMCdeINs5jrLaF93DsLgyFQgBirR4Q9n3zzm-k9wjNEyqDPqLMn7X4Q74gUNE/s640/Shower_AVsitterPlugin_002.png" width="640" height="405" data-original-width="580" data-original-height="367" /></a></div><p>
Our shower sample has been designed so particles will emit exactly from the shower head, but if your object isn't ready this way, you can always rez a box, make it small, transparent, and place it where particles should emit.</p><p>
Then we would need to tweak the <tt>[Black Tulip] Shower - AVsitter Plugin ~CFG~</tt> configuration notecard, all the parameters beginning by <tt>p1</tt> that are under the comment line:</p><pre># Particles definition of the SHOWER effect</pre><p>
However, preparing particles effects might be complicated, so the configuration notecard is already prepared with this effect for you :-)</p><p>
We must check one line, though. This one:</p><pre>p1Texture = [Black Tulip] Water Particle Shower #2</pre><p>
Change the permissions to the <tt>[Black Tulip] Water Particle Shower #2</tt> texture (the one indicated in that configuration line of the notecard), and add it in <b>two</b> places. Drop it in the root prim with the AVsitter script, animations...</p><div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiQTeDYn3ZeDEZTMK_pHDz2kqYg_Kp9lMwnWzkAWE_NykkyLdWkhyphenhyphenIIhqDufo-_UtK8cD2pEqh3UPpzCz-rb-T68gRLWjEG7o4FCewm3ExGmEUfOYH54pOMkiL49uqt4sgDC0vEClamm6c/s1600/Shower_AVsitterPlugin_004.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiQTeDYn3ZeDEZTMK_pHDz2kqYg_Kp9lMwnWzkAWE_NykkyLdWkhyphenhyphenIIhqDufo-_UtK8cD2pEqh3UPpzCz-rb-T68gRLWjEG7o4FCewm3ExGmEUfOYH54pOMkiL49uqt4sgDC0vEClamm6c/s640/Shower_AVsitterPlugin_004.png" width="395" height="640" data-original-width="320" data-original-height="518" /></a></div><p>
and now <b>also</b> drop this texture on the shower head prim, the prim from where particles will emit:</p><div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgcF9z2oW8fOgcSXh2WAn5_mc71zSaLxcs5YS2Jq4aIvjmkXOGnsxborBiCyOUtCdRiYMPQNZN5-kdDXVOy3upCa1yjAM-1PUlsX3QQnubZk9d9zbYJkufES3wUHh11Q2-CvdKSq6zKRsI/s1600/Shower_AVsitterPlugin_005.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgcF9z2oW8fOgcSXh2WAn5_mc71zSaLxcs5YS2Jq4aIvjmkXOGnsxborBiCyOUtCdRiYMPQNZN5-kdDXVOy3upCa1yjAM-1PUlsX3QQnubZk9d9zbYJkufES3wUHh11Q2-CvdKSq6zKRsI/s640/Shower_AVsitterPlugin_005.png" width="640" height="407" data-original-width="600" data-original-height="382" /></a></div><p>
If we don't do this, then we would see big white dots instead of our particles.</p><h3>
Particles fog effect on the shower floor, where the drain is placed</h3><p>
This part is similar to the shower effect. First, we have to give a specific <b>description</b> to the prim where the fog/steam particles will emit. This description is:</p><div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhIpQc_t8E4ETdp8LVt2eDFu0iPJwwOPWxgJB4Hv8rqDf37GPKHil3dh9LM_1VC5mZaM1Q1Uj8sFYR6OYb4Fl3X9MTm4Aywm5L_VEzCb4Nfvodsb-HMyvEENQ5sHaUOVu9z1mOIG1HzMxM/s1600/Shower_AVsitterPlugin_003.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhIpQc_t8E4ETdp8LVt2eDFu0iPJwwOPWxgJB4Hv8rqDf37GPKHil3dh9LM_1VC5mZaM1Q1Uj8sFYR6OYb4Fl3X9MTm4Aywm5L_VEzCb4Nfvodsb-HMyvEENQ5sHaUOVu9z1mOIG1HzMxM/s640/Shower_AVsitterPlugin_003.png" width="640" height="351" data-original-width="682" data-original-height="374" /></a></div><p>
Notice that we're giving the description to a transparent box that is strategically placed so the steam will come from the shower floor.</p><p>
Then we would need to tweak the <tt>[Black Tulip] Shower - AVsitter Plugin ~CFG~</tt> configuration notecard, all the parameters beginning by <tt>p2</tt> that are under the comment line:</p><pre># Particles definition of the FOG (BOTTOM) effect</pre><p>
Just like before, preparing particles effects might be complicated, so the configuration notecard has too the fog/steam effect already prepared for you :-)</p><p>
Similarly to the previous case, we must check one line, this one:</p><pre>p2Texture = [Black Tulip] Water Particle Shower #1</pre><p>
Change the permissions to the <tt>[Black Tulip] Water Particle Shower #1</tt> texture (the one indicated in that configuration line of the notecard), and add it in <b>two</b> places. Drop it in the root prim with the AVsitter script, animations...</p><div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEibfW0OUXfwuKrgqtNLQ03JehiLgiygyEnSXH2l1rbZO5hKViE1X12woiFU4MI5Vm0Sjn7HoM11y9QayBmfV85KCqrssWyJKgnyb8CVEv0YyxVFXqkW-CdFB8iHvOy2XRIY_1wSQgJeR2w/s1600/Shower_AVsitterPlugin_006.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEibfW0OUXfwuKrgqtNLQ03JehiLgiygyEnSXH2l1rbZO5hKViE1X12woiFU4MI5Vm0Sjn7HoM11y9QayBmfV85KCqrssWyJKgnyb8CVEv0YyxVFXqkW-CdFB8iHvOy2XRIY_1wSQgJeR2w/s640/Shower_AVsitterPlugin_006.png" width="640" height="484" data-original-width="600" data-original-height="454" /></a></div><p>
and now <b>also</b> drop this texture on the transparent box prim, the prim from where particles will emit:</p><div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjNlajbtbIkuPvwXCd7kazvcCxU-APxX4LRh9NAikK-f8mYczj7ScQA8N8sN9FgKYLsh1_bMIxc3hy4FgNNiOtneC_-zLKdg95cejXD7S-kVaS2_p52qzjmYAR3it-XUA2LaeORkv2pjjQ/s1600/Shower_AVsitterPlugin_007.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjNlajbtbIkuPvwXCd7kazvcCxU-APxX4LRh9NAikK-f8mYczj7ScQA8N8sN9FgKYLsh1_bMIxc3hy4FgNNiOtneC_-zLKdg95cejXD7S-kVaS2_p52qzjmYAR3it-XUA2LaeORkv2pjjQ/s640/Shower_AVsitterPlugin_007.png" width="640" height="425" data-original-width="820" data-original-height="544" /></a></div><p>
Like in the other case, if we don't do this, then we would see big white dots instead of our particles.</p><h3>
Pro-Tip: Preloading the particle textures</h3><p>
Since the box is completely transparent (by adjusting the transparency value to 100%), we could texture one face with one of the particle textures, and another face with the other particle texture. The box remains invisible, but this forces loading those textures, so when people sit on the shower for the first time, the particles textures are already loaded and will avoid the ugly loading time where we see gray rectangles.</p><h3>
Adding a button under the [ADJUST] menu of AVsitter, to access to our shower menu.</h3><p>
This part is really simple. Edit the <tt>AVpos</tt> notecard, and make sure of having this text <b>at the top of the notecard</b>:</p><pre>ADJUST [SHOWER]|-31430000</pre><p>
Now drop the <tt>[Black Tulip] Shower - AVsitter Plugin ~CFG~</tt> configuration notecard in the shower object, together with AVsitter and the animations. Drop the soundclip files as well.</p><p>
Then, change permissions correctly to the <tt>[Black Tulip] Shower - AVsitter Plugin</tt> script, and drop it in the shower object, with all the other assets.</p><div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh4rI1qpoI8Jqj96BxahBZgp4v0o4z_CYOp4yOoZ9ajQC_BFKHQRtr65g6t2qeF5AMwu5HcD5dIua124D0FGy3h7yGBvl-H2_vNw4wd056ClDBHws-NNR14iDm-wCK8vi96YqzgcqFjFhM/s1600/Shower_AVsitterPlugin_008.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh4rI1qpoI8Jqj96BxahBZgp4v0o4z_CYOp4yOoZ9ajQC_BFKHQRtr65g6t2qeF5AMwu5HcD5dIua124D0FGy3h7yGBvl-H2_vNw4wd056ClDBHws-NNR14iDm-wCK8vi96YqzgcqFjFhM/s640/Shower_AVsitterPlugin_008.png" width="514" height="640" data-original-width="601" data-original-height="748" /></a></div><p>
Reset the AVsitter scripts, and once they've reloaded the <tt>AVpos</tt> notecard, jump in the shower (effects should start then!) and there will be a [SHOWER] button under AVsitter's [ADJUST] menu:</p><div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhnCEpbyN9qd3guqgRv5mnZbUTHU5LcSaj6IuFrTFlqirnoWsDt8pp4eiTGT0OJqi8v7s5xexx7ke7CifIE4agq6Me798YO-qtgGuIlii6Hb3lFqspvEPHY-oFPDlasRPJA0uApnHUPt6Q/s1600/Shower_AVsitterPlugin_009.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhnCEpbyN9qd3guqgRv5mnZbUTHU5LcSaj6IuFrTFlqirnoWsDt8pp4eiTGT0OJqi8v7s5xexx7ke7CifIE4agq6Me798YO-qtgGuIlii6Hb3lFqspvEPHY-oFPDlasRPJA0uApnHUPt6Q/s640/Shower_AVsitterPlugin_009.png" width="623" height="640" data-original-width="902" data-original-height="926" /></a></div><p>
which, when clicked, shows the shower menu:</p><div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgTbYfKMycHzCHe07IMApOl5FCeCgdsSI2IGNatIqasBsz6VnDUOtW8cy4bm_g5e6wy8hK4XFVIda0LZSbtAqYbgwsLBQZr7QwOuQeYYP0TZXcCUWGgjDW8ie1g5GbgksBjB2h0Cywi-zo/s1600/Shower_AVsitterPlugin_010.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgTbYfKMycHzCHe07IMApOl5FCeCgdsSI2IGNatIqasBsz6VnDUOtW8cy4bm_g5e6wy8hK4XFVIda0LZSbtAqYbgwsLBQZr7QwOuQeYYP0TZXcCUWGgjDW8ie1g5GbgksBjB2h0Cywi-zo/s640/Shower_AVsitterPlugin_010.png" width="496" height="640" data-original-width="702" data-original-height="905" /></a></div><p>
The shower menu has a button to go back to AVsitter.</p><h3>
Other things you could do</h3><p>
If you have our <a href="https://marketplace.secondlife.com/p/Black-Tulip-Script-Moving-Parts-AVsitter-Plugin/10319587">Moving Parts AVsitter plugin</a>, you can create effects like having the glass door open when no avatars are using the shower, but closing it when there are avatars inside the shower. The sample <tt>[Black Tulip] Shower #1 - WITH MOVING DOOR</tt> object shows the effect.</p></div><h2 onclick="Layers_ShowHide(getElementById('div-advancedSetup'), LayersList);" href="javascript:DoNothing();" class="clickForInfo">
Advanced Setup</h2><div id="div-advancedSetup" class="info">
<p>
Tweaking the particles effects requires of particles knowledge. It's not the purpose of this documentation to teach particles, so we'll mention a few relevant parameters and how to write them correctly in the notecard.</p></div><h3 onclick="Layers_ShowHide(getElementById('div-descriptionFormat'), LayersList);" class="clickForInfoIndent">
Description Format</h3><div id="div-descriptionFormat" class="infoIndent">
<p>
This script can be used in conjunction with many other of Black Tulip's scripts as long as we remember this: If two scripts need using the description field, we will separate their values with the <b>#</b> character. Each script will read the part of the description needed and both will be able to coexist together. If it's three, then same rule applies: separate each description part with <b>#</b></p><p>
For example, if we're using the texture change and this script in the same object, the description of a prim that both emits the water shower effect and changes textures should be written like this (example values):</p><tt>t;mirror#shower</tt>
</div><h3 onclick="Layers_ShowHide(getElementById('div-notecardConfigurationInDetail'), LayersList);" class="clickForInfoIndent">
Notecard Configuration in Detail</h3><div id="div-notecardConfigurationInDetail" class="infoIndent">
<p>
SECTION UNDER CONSTRUCTION</p></div><h2 onclick="Layers_ShowHide(getElementById('div-troubleshooting'), LayersList);" class="clickForInfo">
Troubleshooting</h2><div id="div-troubleshooting" class="info">
<p>
We haven't been notified of issues at the moment.</p></div><p>
If after having followed the directions and checked the troubleshooting list, you have problems making the script work, please <a href="">click here for the customer service form</a>.</p></div><!-- class = post -->
Auryn Beornhttp://www.blogger.com/profile/02832014326094809370noreply@blogger.comtag:blogger.com,1999:blog-2947025942912354529.post-70944836438175776122017-05-19T02:22:00.000-07:002019-01-08T04:20:20.521-08:00Script: Hand Poses AVsitter Plugin<script>
LayersList = [
"div-whatIsIncludedInYourPurchase"
, "div-featuresList"
, "div-stepByStepGuide"
, "div-advancedSetup"
, "div-notecardConfigurationInDetail"
, "div-newIn1_1version"
, "div-troubleshooting"
];
function DoNothing() // It does nothing indeed. Its purpose is to save warnings in <a> elements
{
}
function Layers_ShowHide(theLayer, LayersList)
{
var theLayerDisplay = theLayer.style.display;
var totalLayersList = LayersList.length;
var i;
for(i = 0; i < totalLayersList; i++)
{
document.getElementById(LayersList[i]).style.display = "none";
}
if(theLayerDisplay != "block") theLayer.style.display = "block";
else theLayer.style.display = "none";
}
</script>
<div class="myPost">
<h2>
Documentation · Hand Poses AVsitter Plugin</h2><p>
<a href="https://marketplace.secondlife.com/p/Black-Tulip-Script-Bento-Hand-Poses-AVsitter-Plugin/11979532">Hand Poses AVsitter Plugin script in Marketplace.</a></p><p>
Bento's arrival to SL opened a whole world of possibilities to make our creations even more featured than before. With this script, you can play Bento hand poses together with older animations in AVsitter so your engines become more realistic and fun. The best of all is that you don't have to ditch your old animations because they don't have hand poses. All you need is adding Bento hand poses specifically designed, like <a href="https://marketplace.secondlife.com/p/Black-Tulip-Poses-FP-BENTO-Hand-Poses-Kit-1/11976553">our hand poses kit to enhance dining animations like holding a spoon, a wine glass, a knife and a fork, and more (Marketplace)</a>.</p><p>
Thank you for having considered this script to enhance the quality of your products. Please read the following instructions carefully, especially the ones explaining which permissions to apply to the scripts for the next owner. Failure to complete this task INVALIDATES the license governing your use of this set of scripts. Should you have problems, please <a href="http://www.blacktulip-virtual.com/CustomerArea/customer-service-form.php">fill the scripts assistance form, explaining what you did and what happened</a>, and I'll get back to you.</p><b>IMPORTANT!</b>
The script contains a check to prevent accidental give-aways. If you haven't set permissions correctly in your inventory, then the script will self delete when you try to use it. The best way to ensure you set permissions correctly is by doing it NOW in your inventory.
<p>
Follow these directions carefully. Complete the <i>Step by Step Guide</i> in the first place and then go to the <i>Advanced Setup</i> section for a detailed explanation of all the features. There's a <i>Troubleshooting</i> section at the end. Before asking for help, check that your problem isn't one of the problems described in there.</p><h2 class="clickForInfo">
License of Use: <a href="">Click here to read the License of use.</a></h2><h2 onclick="Layers_ShowHide(getElementById('div-whatIsIncludedInYourPurchase'), LayersList);" class="clickForInfo">
What's included in your purchase</h2><div id="div-whatIsIncludedInYourPurchase" class="info">
<p>
Check that your box contains the following assets:</p><ul>
<li>[Black Tulip] Hand Poses - AVsitter Plugin 1.0</li>
<li>[Black Tulip] Hand Poses - AVsitter Plugin ~CFG~</li>
<li>[Black Tulip] Hand Poses Notecard Aux. Tool</li>
<li>[Black Tulip] Hand Poses - AVsitter Plugin ~DOC~</li>
<li>[Black Tulip] Proof Of Purchase - Bento Hand Poses Plugin v1</li>
</ul><p>
and these <b>sample</b> assets, necessary to follow the step-by-step guide:</p><ul>
<li>[Black Tulip] Dining Set #2 - Sample w.AVsitter</li>
<li>[Black Tulip] Hand Poses - Wine #3 (P5)</li>
<li>[Black Tulip] Hand Poses - Spoon #2 (P5)</li>
<li>[Black Tulip] Dining Set #2 - Sample w.AVsitter - COMPLETE</li>
</ul><p>
If any of these is missing, contact Auryn Beorn for a replacement. Keep in mind that sample assets are never provided in full perms state. They're included to illustrate how to use the script.</p></div><h2 onclick="Layers_ShowHide(getElementById('div-featuresList'), LayersList);" href="javascript:DoNothing();" class="clickForInfo">
Features list</h2><div id="div-featuresList" class="info">
<ul>
<li>Define one or more hand poses to be played when a specific animation has been selected in AVsitter</li>
<li>If an animation has no assigned hand poses, then the default hand position takes over</li>
<li>AVsitter 2 ONLY</li>
</ul></div><h2 onclick="Layers_ShowHide(getElementById('div-stepByStepGuide'), LayersList);" href="javascript:DoNothing();" class="clickForInfo">
Step by Step Guide</h2><div id="div-stepByStepGuide" class="info">
<p>
The first thing we need is a finished AVsitter engine. When you're done setting up your engine with all the animations, props, etc., then you can begin using this script. There's a finished AVsitter engine already set up to learn using this script, so we'll use it for this purpose. Rez the <tt>[Black Tulip] Dining Set #2 - Sample w.AVsitter</tt> sample object:</p><div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgNbATldqXmsRhfFoMkIHyYqujWuvP5XXnErom45M6nNqe5C6a3cKRcN3HB4RcZzyZ5LCrK0RK4DHyWJv9vuoKNjeEYCsxI45BKRNoLgTet9UDcRHS0Lb4couCrf6sX-x4Co5xOZFlZm8A/s1600/BentoHandPoses_Doc_000.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgNbATldqXmsRhfFoMkIHyYqujWuvP5XXnErom45M6nNqe5C6a3cKRcN3HB4RcZzyZ5LCrK0RK4DHyWJv9vuoKNjeEYCsxI45BKRNoLgTet9UDcRHS0Lb4couCrf6sX-x4Co5xOZFlZm8A/s640/BentoHandPoses_Doc_000.png" width="640" height="408" data-original-width="1039" data-original-height="662" /></a></div><p>
and inspect its contents: it contains poses, wearable props and the AVpos notecard.</p><div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhXSDI0BkHQp58RbtU6xvcVaaXzq07gHtWhBt3KOBPF77EMVV3keYAKgNBwyvSVL6tukjBrKAVDe4Qev4jID83X09Nw9MPXsQtxgWYO7e6PuitQWvQdn3hx893dai5CltACST2zZfRu_qM/s1600/BentoHandPoses_Doc_001.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhXSDI0BkHQp58RbtU6xvcVaaXzq07gHtWhBt3KOBPF77EMVV3keYAKgNBwyvSVL6tukjBrKAVDe4Qev4jID83X09Nw9MPXsQtxgWYO7e6PuitQWvQdn3hx893dai5CltACST2zZfRu_qM/s640/BentoHandPoses_Doc_001.png" width="309" height="640" data-original-width="324" data-original-height="671" /></a></div><p>
Extract the AVpos notecard in your inventory:</p><div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiM5EqynMIoTLH-XepxKGB4VmxGDuJ_AxW-hBoTeV-w38GM2tN7YP3pqxRW2E1Yv0UHF0a_rlDvL1PNoqxolhYqpAQc8UpcI5udCLH1xHjAeO3PGQA5-mVuMrpx0VKI5C3jiCgov5c86Kc/s1600/BentoHandPoses_Doc_002.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiM5EqynMIoTLH-XepxKGB4VmxGDuJ_AxW-hBoTeV-w38GM2tN7YP3pqxRW2E1Yv0UHF0a_rlDvL1PNoqxolhYqpAQc8UpcI5udCLH1xHjAeO3PGQA5-mVuMrpx0VKI5C3jiCgov5c86Kc/s640/BentoHandPoses_Doc_002.png" width="640" height="73" data-original-width="334" data-original-height="38" /></a></div><p>
Now rez a box, drop the AVpos notecard in its contents:</p><div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjNaFgF_A7WAvht04clrZyj7LjQVkyQgSYNj2X3_0MT3a9ZXp_-SY88cgSszARwilEOVcrAbrIEZJd7hdBbyAgy1PSvDoBxIJS5vqLF7Jzaq7tZKbzCZRdYtLJ2lw1NocWWkfzJKhyphenhypheniQfM/s1600/BentoHandPoses_Doc_003.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjNaFgF_A7WAvht04clrZyj7LjQVkyQgSYNj2X3_0MT3a9ZXp_-SY88cgSszARwilEOVcrAbrIEZJd7hdBbyAgy1PSvDoBxIJS5vqLF7Jzaq7tZKbzCZRdYtLJ2lw1NocWWkfzJKhyphenhypheniQfM/s640/BentoHandPoses_Doc_003.png" width="640" height="509" data-original-width="494" data-original-height="393" /></a></div><p>
Then drop the <tt>[Black Tulip] Hand Poses Notecard Aux. Tool</tt> auxiliary script to help us build the configuration notecard that the hand poses script needs. We will get something like this in local (nearby) chat:</p><div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhUyuVEKM3vd2BHPed9GsrJsv0Ossy-kcuu0ZnFt3e_EeA9Bv08eo-X0iZSVC36YFE3C9JhiD6r_Fx5GGThTiytQsW8VaRoYkBl6rHUoU9OPH2mWSJFT3_6YcYuvmY-53SBGkmsUC2do84/s1600/BentoHandPoses_Doc_004.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhUyuVEKM3vd2BHPed9GsrJsv0Ossy-kcuu0ZnFt3e_EeA9Bv08eo-X0iZSVC36YFE3C9JhiD6r_Fx5GGThTiytQsW8VaRoYkBl6rHUoU9OPH2mWSJFT3_6YcYuvmY-53SBGkmsUC2do84/s640/BentoHandPoses_Doc_004.png" width="640" height="263" data-original-width="713" data-original-height="293" /></a></div><p>
We can now delete that box. Let's copy the text on a plain text editor in our computer:</p><div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiYZXrQTP49-ShxDqwFUI0172AknWBbnVXtwxdUIjSPDoSA8dWshv-ImcvTRO-zTlZFgrDyPuud79ryn6sHfFJB-13UbDgv-qmqpsgUhfLMOLOjeYUcfbtrqWDh_mYC8U3Lr9MgtOAlIgk/s1600/BentoHandPoses_Doc_005.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiYZXrQTP49-ShxDqwFUI0172AknWBbnVXtwxdUIjSPDoSA8dWshv-ImcvTRO-zTlZFgrDyPuud79ryn6sHfFJB-13UbDgv-qmqpsgUhfLMOLOjeYUcfbtrqWDh_mYC8U3Lr9MgtOAlIgk/s640/BentoHandPoses_Doc_005.png" width="640" height="146" data-original-width="1125" data-original-height="256" /></a></div><p>
We do some clean-up:</p><div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjSzdGCvUI7b6lL9-IRioLtt2Fd2IlMSBy8unrvnAxWQZPZ4c1VVH7gwi3A5FYC8WVgpE21FMCzHzz6jle_2VaBfNxJkyKkpxYYhPvUpNjrRoCwfkVBEOGdUY1QzGqmpRGfPQAJai2u-HU/s1600/BentoHandPoses_Doc_006.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjSzdGCvUI7b6lL9-IRioLtt2Fd2IlMSBy8unrvnAxWQZPZ4c1VVH7gwi3A5FYC8WVgpE21FMCzHzz6jle_2VaBfNxJkyKkpxYYhPvUpNjrRoCwfkVBEOGdUY1QzGqmpRGfPQAJai2u-HU/s640/BentoHandPoses_Doc_006.png" width="640" height="146" data-original-width="1125" data-original-height="256" /></a></div><p>
and now it's time to complete the information to then copy on the configuration notecard. The first question to answer is, what's the maximum number of sitters using this engine? In this case is 2, for it's ready for a couple, so we write the following in the <tt>maxSitters</tt> line:</p><div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEju19jIhpCmpTGb1T0dE6AUYlWf6tSrNTRXBnTG2X_8ue8Scdu1CqpgWsT5yew6B4FIsXChdWtiXcKAuVDth0_tISQMop2bU7ucL-8uYhNtIqNnGYKB9HWkFnchbyP1bh2LP3FFls2NSWk/s1600/BentoHandPoses_Doc_007.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEju19jIhpCmpTGb1T0dE6AUYlWf6tSrNTRXBnTG2X_8ue8Scdu1CqpgWsT5yew6B4FIsXChdWtiXcKAuVDth0_tISQMop2bU7ucL-8uYhNtIqNnGYKB9HWkFnchbyP1bh2LP3FFls2NSWk/s640/BentoHandPoses_Doc_007.png" width="640" height="78" data-original-width="295" data-original-height="36" /></a></div><p>
If your engine is meant to be used by five avatars, you would write <tt>maxSitters = 5</tt> and so on.</p><p>
The next step is deciding which sitter will be using an additional hand pose for every animation in the AVsitter menu. Our sample engine has three animations that play for both sitters 0 and 1:</p><ul>
<li>Wine for her</li>
<li>The Spoon</li>
<li>Wine for him</li>
</ul><p>
For the sake of our learning example, our decision is that:</p><ul>
<li>When the animation <tt>Wine for her</tt> plays, we'll also play the <tt>[Black Tulip] Hand Poses - Wine #3 (P5)</tt> hand pose on the female avatar.</li>
<li>When the animation <tt>The Spoon</tt> plays, we'll also play the <tt>[Black Tulip] Hand Poses - Spoon #2 (P5)</tt> hand pose on the female avatar.</li>
</ul><p>
and that:</p><ul>
<li>When the animation <tt>The Spoon</tt> plays, we'll also play the <tt>[Black Tulip] Hand Poses - Spoon #2 (P5)</tt> hand pose on the male avatar.</li>
<li>When the animation <tt>Wine for him</tt> plays, we'll also play the <tt>[Black Tulip] Hand Poses - Wine #3 (P5)</tt> hand pose on the male avatar.</li>
</ul><p>
Sitter 0 is the female avatar and sitter 1 is the male avatar, so we locate first the lines our auxiliary tool wrote for sitter 0, the female (realize about the number 0 written in these lines):</p><div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgj_xh9xSPwUPysUhXrXxIZhMmzUa6VjwYBm6GMDVUiOxLWQ_rjGTIDUl-Q7R6xCve7ufVZqB4FzpqIO3xZFkKgGh4rbxA7xPSJZjjs53LsXXKwWFxqzeu1uWfSavOOoVBk0op7mA2oHm4/s1600/BentoHandPoses_Doc_008.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgj_xh9xSPwUPysUhXrXxIZhMmzUa6VjwYBm6GMDVUiOxLWQ_rjGTIDUl-Q7R6xCve7ufVZqB4FzpqIO3xZFkKgGh4rbxA7xPSJZjjs53LsXXKwWFxqzeu1uWfSavOOoVBk0op7mA2oHm4/s640/BentoHandPoses_Doc_008.png" width="640" height="111" data-original-width="266" data-original-height="46" /></a></div><p>
delete those we won't be adding hand poses to:</p><div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhDv1iYBBCbyiT6R1ltaiDxuDUwUmBGmihBC9HiF-Al8rHmWNJ-R3gF2dGCS3Q1gIxhdbOYKQ3ayYZoCGh-XLGWH9hWueiQVO30GfdWmdENSVB2LqjOblX4MffjuVOHYfpCjYWOWHxAwKk/s1600/BentoHandPoses_Doc_009.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhDv1iYBBCbyiT6R1ltaiDxuDUwUmBGmihBC9HiF-Al8rHmWNJ-R3gF2dGCS3Q1gIxhdbOYKQ3ayYZoCGh-XLGWH9hWueiQVO30GfdWmdENSVB2LqjOblX4MffjuVOHYfpCjYWOWHxAwKk/s640/BentoHandPoses_Doc_009.png" width="640" height="111" data-original-width="266" data-original-height="46" /></a></div><p>
and then write the corresponding hand pose file name per <tt>Animation</tt> line, at the end:</p><div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgf-cmL3salz65HOAE2t7j6Heb2CUe9aa_JjAtr1pEpoA1DvDuGzBAHkep8iUh_2jWXxzrtCvH3SXQ7sHD5PCUU1An_-CCGROFAg8ha4hDR6EOLdNLK1p4K-VHuoyZ12AMRahPnlQnpg5U/s1600/BentoHandPoses_Doc_010.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgf-cmL3salz65HOAE2t7j6Heb2CUe9aa_JjAtr1pEpoA1DvDuGzBAHkep8iUh_2jWXxzrtCvH3SXQ7sHD5PCUU1An_-CCGROFAg8ha4hDR6EOLdNLK1p4K-VHuoyZ12AMRahPnlQnpg5U/s640/BentoHandPoses_Doc_010.png" width="640" height="46" data-original-width="645" data-original-height="46" /></a></div><p>
We now locate the lines our auxiliary tool wrote for sitter 1, the male (notice the number 1 written in these lines):</p><div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgDaHMrsyaFaS5ySQta4laVGTsmA2IhqtxdIoFxPtHpg0U8WeSJ-pnvVpuAHoNY2yzKS-Ns_0nxJLHn_vxjm1CU89k79WI2G-YN7JcRrlPqcyuS_G3ek9E6vgrWPdaqmnV_vORGucRlVlw/s1600/BentoHandPoses_Doc_011.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgDaHMrsyaFaS5ySQta4laVGTsmA2IhqtxdIoFxPtHpg0U8WeSJ-pnvVpuAHoNY2yzKS-Ns_0nxJLHn_vxjm1CU89k79WI2G-YN7JcRrlPqcyuS_G3ek9E6vgrWPdaqmnV_vORGucRlVlw/s640/BentoHandPoses_Doc_011.png" width="640" height="99" data-original-width="277" data-original-height="43" /></a></div><p>
delete those we won't be adding hand poses to:</p><div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgIVOgufIf5g5tzlECGQf4uK1bQ4kchjIbQfi7dPblobExoBkSktWl3B4gNO4G1KcuHvCdFoSxWl8gkRjZMumrLpC-ewOhHXZHN9R9BkaodCtguZtzf1F69OKc7LKR_XsrSEOLVhpAaYvs/s1600/BentoHandPoses_Doc_012.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgIVOgufIf5g5tzlECGQf4uK1bQ4kchjIbQfi7dPblobExoBkSktWl3B4gNO4G1KcuHvCdFoSxWl8gkRjZMumrLpC-ewOhHXZHN9R9BkaodCtguZtzf1F69OKc7LKR_XsrSEOLVhpAaYvs/s640/BentoHandPoses_Doc_012.png" width="640" height="136" data-original-width="277" data-original-height="59" /></a></div><p>
and then write the corresponding hand pose file name per <tt>Animation</tt> line, at the end:</p><div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhWJNcrSdQTQ6VEkR1ava4uzhzcAo8F-ymGTbv2S56ioV0QiepxlrsAQGVpaA0-W0sEI3Tpec-s7akmMH0q9_A39wa804cEt6boQf3-_rs2b5GblSqlzsD2kCYJYPfGEVgYRZyfmNCSJlw/s1600/BentoHandPoses_Doc_013.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhWJNcrSdQTQ6VEkR1ava4uzhzcAo8F-ymGTbv2S56ioV0QiepxlrsAQGVpaA0-W0sEI3Tpec-s7akmMH0q9_A39wa804cEt6boQf3-_rs2b5GblSqlzsD2kCYJYPfGEVgYRZyfmNCSJlw/s640/BentoHandPoses_Doc_013.png" width="640" height="65" data-original-width="584" data-original-height="59" /></a></div><p>
Notice on the AVpos notecard that there are different objects assigned to be attached to the female and male avatars:</p><pre>PROP1 Wine for her|[Black Tulip] Din.Att#1 - Wine Glass - Full - POSITIONED|GROUP1|
PROP1 The Spoon|[Black Tulip] Din.Att#1 - Cutlery - Spoon - POSITIONED|GROUP1|
PROP1 The Spoon|[Black Tulip] Din.Att#1 - Cutlery - Spoon - Him - POSITIONED|GROUP1|
PROP1 Wine for him|[Black Tulip] Din.Att#1 - Wine Glass - Full - Him - POSITIONED|GROUP1|
</pre><p>
Although the object is the same, two copies are needed, since the male and female avatars need them positioned differently. Keep this detail in mind when you create your own engines.</p><p>
We're almost done! Lets have a look at the complete text we've been working on our plain text editor:</p><div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEggQudvrWSnfSELZd7Ad0knPmS1iSzN7cnLOzQWbYT0-Y_tIPElqX2kTEOkdkRXYeQXde_O75C6fbv6_S2_GASw48NpmlkjwJSHQl5apVkZf1jHN3XbXPjg6ELqX0ZCq2BY8p9OD1P2SeQ/s1600/BentoHandPoses_Doc_014.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEggQudvrWSnfSELZd7Ad0knPmS1iSzN7cnLOzQWbYT0-Y_tIPElqX2kTEOkdkRXYeQXde_O75C6fbv6_S2_GASw48NpmlkjwJSHQl5apVkZf1jHN3XbXPjg6ELqX0ZCq2BY8p9OD1P2SeQ/s640/BentoHandPoses_Doc_014.png" width="640" height="155" data-original-width="584" data-original-height="141" /></a></div><p>
Now make a copy of the <tt>[Black Tulip] Hand Poses - AVsitter Plugin ~CFG~</tt> notecard, open it:</p><div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEig4JhDZZO6MWdjhuqoM7YXoOM76YmQ6ashJNC28J_5jmwAIcVMd9aeBFvmSvrmJT5TuQKr0gALYX3QbZgqfC116akBavKp0-OPsknkw2KxhISsTRlcPWxQEM3Mo3QWrKRpD92L16yjirk/s1600/BentoHandPoses_Doc_015.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEig4JhDZZO6MWdjhuqoM7YXoOM76YmQ6ashJNC28J_5jmwAIcVMd9aeBFvmSvrmJT5TuQKr0gALYX3QbZgqfC116akBavKp0-OPsknkw2KxhISsTRlcPWxQEM3Mo3QWrKRpD92L16yjirk/s640/BentoHandPoses_Doc_015.png" width="640" height="181" data-original-width="1063" data-original-height="300" /></a></div><p>
Copy and paste on it the text from the plain text editor:</p><div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhaPlyyMt-iHBlSEUMFaHPNh3T4hXrVZlQ7iOA0TxOEUrRtULLCQpmBm0hPQNA7nKI0v9Qsc_YMqOI7qgMHM7UVA4h9BARng3NjiEtlxzgyLu9dGmQKSMMuRJie-L6RiDqS7P8Hd4ilaYQ/s1600/BentoHandPoses_Doc_016.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhaPlyyMt-iHBlSEUMFaHPNh3T4hXrVZlQ7iOA0TxOEUrRtULLCQpmBm0hPQNA7nKI0v9Qsc_YMqOI7qgMHM7UVA4h9BARng3NjiEtlxzgyLu9dGmQKSMMuRJie-L6RiDqS7P8Hd4ilaYQ/s640/BentoHandPoses_Doc_016.png" width="640" height="181" data-original-width="1063" data-original-height="300" /></a></div><p>
and save it.</p><p>
When the notecard is saved, drop it into the <tt>[Black Tulip] Dining Set #2 - Sample w.AVsitter</tt> sample object, together with the AVsitter scripts. Also, drop the two hand poses that will be used, <tt>[Black Tulip] Hand Poses - Spoon #2 (P5)</tt> and </tt>[Black Tulip] Hand Poses - Wine #3 (P5)</tt>:</p><div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj2bkC17D1QrjiF0o4S4UtVKxEALXWnVZAF5BJTqFhQX3DcAkibaXeircxM2rRAUAwZqkbT6XAl6KfEDXT0fRoL6r4VE3CjoN_pSW0itHyKiYzzNOp8-yTTWESbqEeUi66Nn71up57eYCI/s1600/BentoHandPoses_Doc_017.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj2bkC17D1QrjiF0o4S4UtVKxEALXWnVZAF5BJTqFhQX3DcAkibaXeircxM2rRAUAwZqkbT6XAl6KfEDXT0fRoL6r4VE3CjoN_pSW0itHyKiYzzNOp8-yTTWESbqEeUi66Nn71up57eYCI/s640/BentoHandPoses_Doc_017.png" width="640" height="272" data-original-width="781" data-original-height="332" /></a></div><p>
Finally, drop the <tt>[Black Tulip] Hand Poses - AVsitter Plugin 1.0</tt> script after having changed its permissions... and because we have two sitters... Drop it AGAIN! Yes, we have two sitters, so we need TWO copies of the script in our engine:</p><div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhKpVzBHrSyve_RpSY5KRcv1JWM7ISwTIyu5P0H78b84IXua9M24lNAnicihV7O4iAvkcrSSXE0F00djVbFLLchyphenhyphenT-W7k2ce8xeZDKcMOtGyTbyLOaG04w-nuNM25W66wuN-cYJF2TsmrI/s1600/BentoHandPoses_Doc_018.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhKpVzBHrSyve_RpSY5KRcv1JWM7ISwTIyu5P0H78b84IXua9M24lNAnicihV7O4iAvkcrSSXE0F00djVbFLLchyphenhyphenT-W7k2ce8xeZDKcMOtGyTbyLOaG04w-nuNM25W66wuN-cYJF2TsmrI/s640/BentoHandPoses_Doc_018.png" width="640" height="79" data-original-width="439" data-original-height="54" /></a></div><p>
Notice how SL renames the second copy of the script by adding a number 1 to the end. This is completely normal. You have five sitters? Then you drop five copies. The last one would have a number 4 to the end.</p><p>
Wait for both scripts to load, and it's ready to go! Now sit two avatars and observe how the hand poses change depending on the selected pose, according to the configuration notecard.</p><div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhuvMmq8OEpsX4at01ssCUaXE5lpOC23AlqVAjcZZLyj994mfuCH0Cgw3oMfDBu4RQy7dglHTSXfXfinus_YxFFCCfIuZvGcJkKbSiwCcHXm2XbPotIEhcQbbeE1YAvzTKzmLQcKe0DtK0/s1600/BentoHandPoses_Doc_019.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhuvMmq8OEpsX4at01ssCUaXE5lpOC23AlqVAjcZZLyj994mfuCH0Cgw3oMfDBu4RQy7dglHTSXfXfinus_YxFFCCfIuZvGcJkKbSiwCcHXm2XbPotIEhcQbbeE1YAvzTKzmLQcKe0DtK0/s640/BentoHandPoses_Doc_019.png" width="640" height="455" data-original-width="1007" data-original-height="716" /></a></div><p>
Included, there's a finished object with everything ready, <tt>[Black Tulip] Dining Set #2 - Sample w.AVsitter - COMPLETE</tt>. You can use it to compare your set up when practicing this step by step guide.</p><p>
May you create wonderful things with this script :-)</p></div><h2 onclick="Layers_ShowHide(getElementById('div-advancedSetup'), LayersList);" href="javascript:DoNothing();" class="clickForInfo">
Advanced Setup</h2><div id="div-advancedSetup" class="info">
<p>
We've learned how to add one hand pose per animation in AVsitter, but the script can play several hand poses per animation. Think for example of holding a knife and a fork, having separate animations for holding the knife and the fork. You then need this advanced bit.
</p></div><h3 onclick="Layers_ShowHide(getElementById('div-notecardConfigurationInDetail'), LayersList);" class="clickForInfoIndent">
Notecard Configuration in Detail</h3><div id="div-notecardConfigurationInDetail" class="infoIndent">
<p>
The format of an animation line is as follows:</p><pre>Animation = AnimationNameInAVsitter | Sitter | PoseFileName,PoseFileName,...</pre><p>
This is, when we want to play more than one hand pose at once, all we have to do is writing the animation file names at the end, one after the other, separated each one by a comma.</p><p>
Two warnings:</p><ul>
<li>Because the comma is the separator character, <b>do not use</b> a comma as part of the animation file name.</li>
<li>While you can have more than one pose at once, the script won't read more than 255 bytes per line (this is a SL limit): keep the file names short if you need many. You can rename the hand poses to make their names shorter.</li>
</ul></div><h2 onclick="Layers_ShowHide(getElementById('div-newIn1_1version'), LayersList);" href="javascript:DoNothing();" class="clickForInfo">
New in v1.1</h2><div id="div-newIn1_1version" class="info">
<p>
Use this line on top of the AVSitter notecard:</p><pre>ADJUST HANDS|-31450000</pre><p>
to get a HANDS button under AVsitter's [ADJUST] menu that will turn on/off the hands plugin.</p><p>
Once all sitting avatars have abandoned the furniture, HANDS mode turns back to on.</p></div><h2 onclick="Layers_ShowHide(getElementById('div-troubleshooting'), LayersList);" class="clickForInfo">
Troubleshooting</h2><div id="div-troubleshooting" class="info">
<p>
We haven't been notified of issues at the moment.</p></div><p>
If after having followed the directions and checked the troubleshooting list, you have problems making the script work, please <a href="http://www.blacktulip-virtual.com/CustomerArea/customer-service-form.php">click here for the customer service form</a>.</p></div><!-- class = post -->
Auryn Beornhttp://www.blogger.com/profile/02832014326094809370noreply@blogger.comtag:blogger.com,1999:blog-2947025942912354529.post-90478907103964406022017-04-20T03:00:00.000-07:002017-06-21T05:11:44.294-07:00Show/Hide AVsitter plugin<script>
LayersList = [
"div-whatIsIncludedInYourPurchase"
, "div-featuresList"
, "div-stepByStepGuide"
, "div-updateToV1.05"
, "div-advancedSetup"
, "div-descriptionFormat"
, "div-notecardConfigurationInDetail"
, "div-troubleshooting"
];
function DoNothing() // It does nothing indeed. Its purpose is to save warnings in <a> elements
{
}
function Layers_ShowHide(theLayer, LayersList)
{
var theLayerDisplay = theLayer.style.display;
var totalLayersList = LayersList.length;
var i;
for(i = 0; i < totalLayersList; i++)
{
document.getElementById(LayersList[i]).style.display = "none";
}
if(theLayerDisplay != "block") theLayer.style.display = "block";
else theLayer.style.display = "none";
}
</script>
<div class="myPost">
<h2>
Documentation · Show/Hide Faces (AVsitter plugin)</h2><p>
<a href="">Show/Hide Faces (Avsitter plugin) script in Marketplace.</a></p><p>
Thank you for having considered this script to enhance the quality of your products. Please read the following instructions carefully, especially the ones explaining which permissions to apply to the scripts for the next owner. Failure to complete this task INVALIDATES the license governing your use of this set of scripts. Should you have problems, please <a href="http://blacktulip-store.blogspot.com/p/customer-support.html">fill the scripts assistance form, explaining what you did and what happened</a>, and I'll get back to you.</p><b>IMPORTANT!</b>
The script contains a check to prevent accidental give-aways. If you haven't set permissions correctly in your inventory, then the script will self delete when you try to use it. The best way to ensure you set permissions correctly is by doing it NOW in your inventory.
<p>
Follow these directions carefully. Complete the <i>Step by Step Guide</i> in the first place and then go to the <i>Advanced Setup</i> section for a detailed explanation of all the features. There's a <i>Troubleshooting</i> section at the end. Before asking for help, check that your problem isn't one of the problems described in there.</p><h2 class="clickForInfo">
License of Use: <a href="">Click here to read the License of use.</a></h2><h2 onclick="Layers_ShowHide(getElementById('div-whatIsIncludedInYourPurchase'), LayersList);" class="clickForInfo">
What's included in your purchase</h2><div id="div-whatIsIncludedInYourPurchase" class="info">
<p>
Check that your box contains the following assets:</p><ul>
<li>[Black Tulip] Show/Hide Faces - AVsitter Plugin</li>
<li>[Black Tulip] Show/Hide Faces - AVsitter Plugin ~CFG~</li>
<li>[Black Tulip] Show/Hide Faces - AUXILIARY TOOL</li>
<li>[Black Tulip] Show/Hide Faces - AUXILIARY TOOL ~CFG~</li>
<li>[Black Tulip] Proof Of Purchase - Show/Hide Faces Plugin v1</li>
<li>[Black Tulip] Show/Hide Faces - AVsitter Plugin - DOCS</li>
</ul><p>
and these <b>sample</b> assets, necessary to follow the step-by-step guide:</p><ul>
<li>[Black Tulip] Window and Curtain (Show/Hide ready) - SAMPLE</li>
<li>[Black Tulip] Standing by the window #2</li>
<li>[Black Tulip] Standing by the window #4</li>
<li>[Black Tulip] Standing by the window #6</li>
<li>[Black Tulip] Standing by the window #7</li>
<li>[Black Tulip] Standing by the window #9</li>
<li>[Black Tulip] Standing by the window #10</li>
<li>AVpos</li>
</ul><p>
If any of these is missing, contact Auryn Beorn for a replacement. Keep in mind that sample assets are never provided in full perms state. They're included to illustrate how to use the script.</p></div><h2 onclick="Layers_ShowHide(getElementById('div-featuresList'), LayersList);" href="javascript:DoNothing();" class="clickForInfo">
Features list</h2><div id="div-featuresList" class="info">
<p>
The main purpose of this tool is allowing you to show some faces of your object and hiding others when certain animations are being played.</p><p>
For example, think of a BDSM bed (or post, or cross, or...) with chains. You may want that the chains only show when there are people using the bed, but when no one is on the bed, no chains would show. Or showing open cuffs left in a messy way.</p><p>
You may want too that the chains show only when certain animations are being played, but invisible for the rest. If you're looking for a similar use to this (or exactly that one), and your sitter of choice is AVsitter, this is the script you're looking for.</p><ul>
<li>Define a configuration of faces for a setting we call the <i>default</i> setting: How will the object look like when no avatars are sitting on it? We can define this.</li>
<li>Define a configuration of faces per animation. Several animations may have the same configuration, and there <i>can be</i> different configurations.</li>
<li>If an animation has no assigned configuration, then the <i>default</i> one is used.</li>
<li>The transparency in the configuration can be any value between 0 and 1: We're not limited to completely show or completely hide a face. We can <i>partially</i> show a face.</li>
<li>In addition to changing the transparency value, we can also change the glow value per face. Check the Advanced Setup section of this documentation for that.</li>
</ul></div><h2 onclick="Layers_ShowHide(getElementById('div-stepByStepGuide'), LayersList);" href="javascript:DoNothing();" class="clickForInfo">
Step by Step Guide</h2><div id="div-stepByStepGuide" class="info">
<p>
The auxiliary tool makes quite simple to set up the script, so we'll use it always and only if we want to retouch something manually, we will check the Advanced Setup section (although we could use the auxiliary tool for that too.)
</p><p>
We recommend, though, that you edit your notecard in an offline text editor <i>in your computer</i>. This is: open your favorite <i>plain text</i> editor in your computer, and prepare your notecard in there. Saving offline is way quicker and less prone to errors than saving notecards in SL. When your notecard is ready, you can paste the content into a SL notecard.
</p><p>
The object we'll be working with to learn this script is not as fancy as the BDSM bed mentioned, but it shows everything you need to know and gives <i>yet more ideas</i> about what this script can be used for.</p><h3>
Setting up: Preliminaries</h3><p>
Rez the <tt>[Black Tulip] Window and Curtain (Show/Hide ready) - SAMPLE</tt> object and observe it. It consists of two <i>linked</i> prims: a curtain, and a window. It initially shows this way:</p><div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg_ysu_fRE02ez5sbT6Fc9mhM_dMB_UT6VuWQl6tEVD6POvl6k0BqUtUCIosdIcCQ1A_VRZgkbKjUWIWEP7Yd49hVQyf_G2y7xFq8fvDSRjMgzya02piCHAYLZkfqM0SvqZ7jPMHyzkgEI/s1600/ShowHideFaces_001.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg_ysu_fRE02ez5sbT6Fc9mhM_dMB_UT6VuWQl6tEVD6POvl6k0BqUtUCIosdIcCQ1A_VRZgkbKjUWIWEP7Yd49hVQyf_G2y7xFq8fvDSRjMgzya02piCHAYLZkfqM0SvqZ7jPMHyzkgEI/s640/ShowHideFaces_001.png" width="640" height="517" /></a></div><p>
The object looks a little strange because of the faces that we show colored here:</p><div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjXRueg10v7iu-6_qEKBzr_EuW1VaSLEe0hA56T1qoEcSSXc_2ojFzY6YFey2VyuhW4LiwuxjUoYx-Mg_TucOJ0D0IvmJrc8QuSSz51h-1BcynJcpta4qX8tnwtk26vODvqoBOLq-ebM9w/s1600/ShowHideFaces_002.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjXRueg10v7iu-6_qEKBzr_EuW1VaSLEe0hA56T1qoEcSSXc_2ojFzY6YFey2VyuhW4LiwuxjUoYx-Mg_TucOJ0D0IvmJrc8QuSSz51h-1BcynJcpta4qX8tnwtk26vODvqoBOLq-ebM9w/s640/ShowHideFaces_002.png" width="640" height="512" /></a></div><p>
(the curtain would look the same way from behind, also with an overlapped face)</p><p>
The sample object begins showing <i>all of its faces</i>. Our goal will be show ones and hide others depending on the situation.</p><p>
This is the behaviour we will make the script produce:</p><ul>
<li>Show the window closed and the curtain closed when no one is sitting on the object:
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjhKb0sxZ3WDSL2fNXZRFYWIuqfd-iTVggfqYDTzo25HVNv8bQ61i2zA0oN1wnyQzjL-XwUspxzlCRpSnKa0bIQ3V65cNC4nmiA2ZVhPUoUIMpWLGq4kPUGD_GV1igmMfbaPHM61wUPmzU/s1600/ShowHideFaces_003.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjhKb0sxZ3WDSL2fNXZRFYWIuqfd-iTVggfqYDTzo25HVNv8bQ61i2zA0oN1wnyQzjL-XwUspxzlCRpSnKa0bIQ3V65cNC4nmiA2ZVhPUoUIMpWLGq4kPUGD_GV1igmMfbaPHM61wUPmzU/s640/ShowHideFaces_003.png" width="478" height="640" /></a></div><div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh4hyUSHc3CO73kO37sA6sDbXWftIUza0Jb9zJYgD8rViaG-Kdn-Hj-r3oTjPohOseOv2Av78AtBV0kztMsTbPKofuUtJrHdqX02OTQaECGrxOZnmT6b4tOMzD_uuUbORFII8o7YfpsfGE/s1600/ShowHideFaces_004.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh4hyUSHc3CO73kO37sA6sDbXWftIUza0Jb9zJYgD8rViaG-Kdn-Hj-r3oTjPohOseOv2Av78AtBV0kztMsTbPKofuUtJrHdqX02OTQaECGrxOZnmT6b4tOMzD_uuUbORFII8o7YfpsfGE/s640/ShowHideFaces_004.png" width="469" height="640" /></a></div></li>
<li>Show the window closed and the curtain <i>open</i> when AVsitter plays some animations we specify:
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj32iLIuiIirFjkq_oRBX0_yeFRzEUSo0ZILkgIZ7ysOvKAE_4B1IZZEgZaGl8q7lt8SJXCbJXQ5gqh4d6L7EnV6xSrk_ZD67EtqNZ7OhwHH7p038Fk2XzFsBsHXq__vyeGUTGzz3llQJE/s1600/ShowHideFaces_005.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj32iLIuiIirFjkq_oRBX0_yeFRzEUSo0ZILkgIZ7ysOvKAE_4B1IZZEgZaGl8q7lt8SJXCbJXQ5gqh4d6L7EnV6xSrk_ZD67EtqNZ7OhwHH7p038Fk2XzFsBsHXq__vyeGUTGzz3llQJE/s640/ShowHideFaces_005.png" width="447" height="640" /></a></div></li>
<li>Show the window <i>open</i> and the curtain <i>open</i> too when AVsitter plays other animations we also specify:
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjPcIm83ZG5z7-Xuha8IXzLb8BQ70dhRj9ny_GRWqhV3JSoSZFMfzcp3xOeyE5S4DM8xHkHREq4ixfPEIoIZpUYiaKl5b6C1stoS273kes1djmg7CdOUP6cqNHIayJ4HV0mEKYXa6hxhAI/s1600/ShowHideFaces_006.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjPcIm83ZG5z7-Xuha8IXzLb8BQ70dhRj9ny_GRWqhV3JSoSZFMfzcp3xOeyE5S4DM8xHkHREq4ixfPEIoIZpUYiaKl5b6C1stoS273kes1djmg7CdOUP6cqNHIayJ4HV0mEKYXa6hxhAI/s640/ShowHideFaces_006.png" width="465" height="640" /></a></div></li>
<li>We will <b>not</b> assign a configuration for two animations. When AVsitter plays any of those, the script will show the <i>default</i> configuration, which will be the one when no one sits: closed window, closed curtain.</li>
</ul><p>
Notice that the behaviour we want to produce looks good once the prims are correctly positioned, which is what the pictures above show. But while we work, we will do with the <i>linked prims</i> positioned with some distance between them, so it's easier for us to select faces when we have to.</p><p>
We can work this way and not worry because the script does not change position/rotation: it will affect to the transparency setting. Once we're done, we'll reposition prims so the window looks all fancy with the curtain :-)</p><h3>
Setting up: Changing prim descriptions</h3><p>
The next thing we're doing is changing the prim descriptions so the scripts recognize them. This is very important: we will change the description <b>only of the involved prims</b>. We won't change the description of those prims that have nothing to do with showing and hide.</p><p>
Ideally, we must cover all of our prims and ask ourselves the question: <i>will any face of this prim show or hide depending on the animation played?</i> If the answer is <i>no</i>, then we ignore that prim and check next. If the answer is <i>yes</i>, then we must write a description with this format:</p><tt>showHide=Identifier</tt>
<p>
<tt>Identifier</tt> is a string that we choose. We recommend that this string is as short as possible, to avoid issues. Each involved prim must have its own <b>unique</b> identifier. In other words: <b>do not use the same identifier in more than one prim</b>.</p><p>
We will be using short identifiers for our prims. The curtain will be <tt>a1</tt>, so the description is changed to what the picture shows:</p><div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhz-xkZCBObKUtrLkP58w6pEqoDflACmkGK0dx0nPr168_KbQN6I3bmNCwyAYgyz-bk0uGKCmix3SyAap-H4Ru-UUp7DqAihWAzRHin_g-kJfYiEtPKwNSe-hkRtjeGD2ttgGRk5MCxjVg/s1600/ShowHideFaces_012.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhz-xkZCBObKUtrLkP58w6pEqoDflACmkGK0dx0nPr168_KbQN6I3bmNCwyAYgyz-bk0uGKCmix3SyAap-H4Ru-UUp7DqAihWAzRHin_g-kJfYiEtPKwNSe-hkRtjeGD2ttgGRk5MCxjVg/s640/ShowHideFaces_012.png" width="640" height="427" /></a></div><p>
and the window will be <tt>b1</tt>, so the correct description to write is:</p><div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi23OXUdfWYrNZBxRs-KZOKRACZhgETnJV3wJkfb8Tw9LDkgVBn3piVqhkaGTYpPtixv6r0KmelB3zLuNAR8_1mNrR5BvQwn4yo5D7zg7tyYbjyJupVGyAcjM5ajfD7fEWmDFHwIyJ_K9U/s1600/ShowHideFaces_013.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi23OXUdfWYrNZBxRs-KZOKRACZhgETnJV3wJkfb8Tw9LDkgVBn3piVqhkaGTYpPtixv6r0KmelB3zLuNAR8_1mNrR5BvQwn4yo5D7zg7tyYbjyJupVGyAcjM5ajfD7fEWmDFHwIyJ_K9U/s640/ShowHideFaces_013.png" width="640" height="391" /></a></div><p>
Let's study now how to use the auxiliary tool</p><h3>
Setting up: The auxiliary tool</h3><p>
The auxiliary tool needs a couple of things:</p><ul>
<li>That you have not forgotten to set the prims' descriptions correctly.</li>
<li>That you edit the <tt>[Black Tulip] Show/Hide Faces - AUXILIARY TOOL ~CFG~</tt> notecard if needed. Normally, you won't need it (it's prepared for the most common case).</li>
</ul><p>
We will <i>not</i> need to edit the configuration notecard for our example, and probably won't need to edit it in many projects. It's there for that rare occasion when you would need that <i>all faces</i> in all prims, or just some prims, have the same alpha values, or if you also want to use the glow feature. Check the Advanced Setup section of the documentation for that, and worry not about editing that notecard now.</p><p>
At this point, our sample object should have the descriptions correctly set as explained before. Right click on it to edit, click on the Content tab, and drop the following assets in its contents, in this order:</p><ul>
<li>The <tt>[Black Tulip] Show/Hide Faces - AUXILIARY TOOL ~CFG~</tt> notecard</li>
<li>The <tt>[Black Tulip] Show/Hide Faces - AUXILIARY TOOL</tt> script</li>
</ul><p>
When you have them in the object and see these messages in chat:</p><div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhc_1a9K5461_Lnb2fjw7l4PnpwCS6jf8BL1-JyZHEMWNyzQwnvgewWUtq1A6kbCiPs7fPfLm23N67wjaZa1xSmKF1nowh0szCQ5ETVtRB8OV2M6YWR6sMNVbl9fBeEwA_0RRGxkjCCYys/s1600/ShowHideFaces_014.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhc_1a9K5461_Lnb2fjw7l4PnpwCS6jf8BL1-JyZHEMWNyzQwnvgewWUtq1A6kbCiPs7fPfLm23N67wjaZa1xSmKF1nowh0szCQ5ETVtRB8OV2M6YWR6sMNVbl9fBeEwA_0RRGxkjCCYys/s640/ShowHideFaces_014.png" width="640" height="331" /></a></div><p>
close the edit window.</p><p>
Now we're going to edit our object to make completely transparent the faces that will not show on the default pose. Remember that this means: two curtain sides (in red, some pictures above) and the middle window frame with its glass. If you have difficulty doing this, remember that it's perfectly okay to tint the prims and make the faces easy to spot. Once we have it:</p><div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhCPoQaui5nw7B18ttpnRh1L7JLGEc336LVMGuH0qPk1TnoU0AS2UwPvZoAQymL6LU6HCRoUvhPpTtnuMD9SVgN9IPtxaXxGMcuVaLEVVMU72w8nNNS75G3-PTn_mPEyoyTSn8y-WIWdUU/s1600/ShowHideFaces_015.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhCPoQaui5nw7B18ttpnRh1L7JLGEc336LVMGuH0qPk1TnoU0AS2UwPvZoAQymL6LU6HCRoUvhPpTtnuMD9SVgN9IPtxaXxGMcuVaLEVVMU72w8nNNS75G3-PTn_mPEyoyTSn8y-WIWdUU/s640/ShowHideFaces_015.png" width="640" height="499" /></a></div><p>
we click on it to bring up the auxiliary tool's menu, which gives us the following options:</p><div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhLXOfag8a_y8TNnxtE37t1t2h4l0ZVaiV76oajnTuoaZ7gsZYeTul5jTtTEQYXiy63fGfmsNPJUpFWXNCnAAebnDBH0T7g8TH1dY4jOgziqXqJTmPsrPdOQJUmoWSxiaLa68Q3xb4ygGs/s1600/ShowHideFaces_016.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhLXOfag8a_y8TNnxtE37t1t2h4l0ZVaiV76oajnTuoaZ7gsZYeTul5jTtTEQYXiy63fGfmsNPJUpFWXNCnAAebnDBH0T7g8TH1dY4jOgziqXqJTmPsrPdOQJUmoWSxiaLa68Q3xb4ygGs/s640/ShowHideFaces_016.png" width="640" height="554" /></a></div><p>
Since we want this configuration to be the default one, click on the <tt>SHAVE SHOW D</tt> button to obtain some text in local (nearby) chat:</p><div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgariv7F7JrNhjLzund7h2TBAy725m8HfoPgFOyIL27i2nMZRZUIQ-q0dwbOpj5k5QNajBbmiEPmfI6kA7bHfmfp3jX3KfRvK1LWIj5W2eh5lpk8auOhXsvdJsAj2Vua53UhiKPbNZyCK0/s1600/ShowHideFaces_017.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgariv7F7JrNhjLzund7h2TBAy725m8HfoPgFOyIL27i2nMZRZUIQ-q0dwbOpj5k5QNajBbmiEPmfI6kA7bHfmfp3jX3KfRvK1LWIj5W2eh5lpk8auOhXsvdJsAj2Vua53UhiKPbNZyCK0/s640/ShowHideFaces_017.png" width="640" height="160" /></a></div><p>
Copy that text in a plain text file in your computer and save the file. We'll work it once we have all the information that we need. Then set the transparency of the faces like this, for a different configuration for certain animations (<b>open curtains, closed window</b>):</p><div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj0DeOeeedSMvMH3ZdJz7eabMC-GD0ieJIA5bxZOqoQ2loDhJJNbOgfGk0-DD5LnoaMno4wHYMxHjvkCKNpoBYY2W6YvaPlI0Mmby9ppBk__a0EfVCsXzzTImcnjT_b6-izzw5Lnc6M-9g/s1600/ShowHideFaces_018.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj0DeOeeedSMvMH3ZdJz7eabMC-GD0ieJIA5bxZOqoQ2loDhJJNbOgfGk0-DD5LnoaMno4wHYMxHjvkCKNpoBYY2W6YvaPlI0Mmby9ppBk__a0EfVCsXzzTImcnjT_b6-izzw5Lnc6M-9g/s640/ShowHideFaces_018.png" width="640" height="516" /></a></div><p>
click to bring up again the menu, and select <tt>SAVE SHOW</tt>. Then copy the text it outputs in your plain text file (and save it):</p><div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiHzrLhDmJM2qCtoA7sbChOSe33Cs0kfjP3oK_KE6cJ3f7ZQZzYcFCcKufH4-YKHhKP_Ymmj8CZeuvfNqge5_fisIFMQzCQmY-p7IotA4L7AMDfzaRhNFFtXfedpiBndGzQmPoeZnGnGoc/s1600/ShowHideFaces_019.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiHzrLhDmJM2qCtoA7sbChOSe33Cs0kfjP3oK_KE6cJ3f7ZQZzYcFCcKufH4-YKHhKP_Ymmj8CZeuvfNqge5_fisIFMQzCQmY-p7IotA4L7AMDfzaRhNFFtXfedpiBndGzQmPoeZnGnGoc/s640/ShowHideFaces_019.png" width="640" height="188" /></a></div><p>
and then change the transparency so these faces show (<b>open curtains, open window</b>):</p><div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj8p45mlYXwr5VBkH8vJ2lErGNjc1s1VZK_BLBwZYubus4MS9XxQcK9agxXhi7NmoOsi2MI67R8X0yW4R_OYHN__AsJv12qI-D27PVgAPvjbCEL7Cg476trNkNyiep2lLDzQChyeC9dLhw/s1600/ShowHideFaces_020.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj8p45mlYXwr5VBkH8vJ2lErGNjc1s1VZK_BLBwZYubus4MS9XxQcK9agxXhi7NmoOsi2MI67R8X0yW4R_OYHN__AsJv12qI-D27PVgAPvjbCEL7Cg476trNkNyiep2lLDzQChyeC9dLhw/s640/ShowHideFaces_020.png" width="640" height="506" /></a></div><p>
Bring up the menu again, and again click on <tt>SAVE SHOW</tt>, then copy the text it outputs in your text file (then save):</p><div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEih91m0B-XTbDAj09IIaIkLEoGrRW3NBeHfKdeUUDRO_YK_rynd85s46HtZC7pHklcY0Uzy5bdr8ha1BmgfCUQAOKI60ChalQj6yN_jqsjhFYuMn9jqQjw8co7AU_bKAR5mdSoqkGUnoYU/s1600/ShowHideFaces_021.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEih91m0B-XTbDAj09IIaIkLEoGrRW3NBeHfKdeUUDRO_YK_rynd85s46HtZC7pHklcY0Uzy5bdr8ha1BmgfCUQAOKI60ChalQj6yN_jqsjhFYuMn9jqQjw8co7AU_bKAR5mdSoqkGUnoYU/s640/ShowHideFaces_021.png" width="640" height="191" /></a></div><p>
We don't have more different configurations to save, so now we bring up the menu and click on <tt>[DELETE]</tt>, which deletes the script and configuration notecard from our object:</p><div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjvA50YhaA3laDfVaG-8V0S0naIlnW81yo8d66eJoufLY-kniRuCl9PW7N7CmZ1UmZV4r6ym1lXCSMOMvs2oVnt8fLRPVKSb_yCpc3FT2LtOo84t_VYbc5bKgkzqxhb-hjd3tuKUTVxJvs/s1600/ShowHideFaces_023.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjvA50YhaA3laDfVaG-8V0S0naIlnW81yo8d66eJoufLY-kniRuCl9PW7N7CmZ1UmZV4r6ym1lXCSMOMvs2oVnt8fLRPVKSb_yCpc3FT2LtOo84t_VYbc5bKgkzqxhb-hjd3tuKUTVxJvs/s640/ShowHideFaces_023.png" width="640" height="393" /></a></div><p>
Now we move the prims so they look more <i>logical</i>:</p><div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEib_4vxTITv9rVt7WpD14QNebPmixL2o7PG8_lSMSABsRzbW04mutpA3IaqxhEE4kNP5E5c9VHPSZUX7x052U9ovcHp3KtsZGcYZFtt6how7nR9LwhaBSl0DM_vSkhMUbaXtaOQPP7pVBI/s1600/ShowHideFaces_022.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEib_4vxTITv9rVt7WpD14QNebPmixL2o7PG8_lSMSABsRzbW04mutpA3IaqxhEE4kNP5E5c9VHPSZUX7x052U9ovcHp3KtsZGcYZFtt6how7nR9LwhaBSl0DM_vSkhMUbaXtaOQPP7pVBI/s640/ShowHideFaces_022.png" width="476" height="640" /></a></div><p>
and let's study how to make the final configuration notecard.</p><h3>
Setting up: The main configuration notecard</h3><p>
We do this part in a plain text editor in our computer. If you've followed the process explained before, you should have something like this showing in your text editor:</p><div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiM5C_A58Kzo1HWE68PJAYvBg6bPasdIsnR1sH-ICdDCylOZQBsc-p_KV-y2CVvvtQLdUvqJ_hwd8h84N0BaozetE2OlVjBSh2kOAN0UgXvrMXpVlNh1Pcz6p4Vtzi3qXHnmmOLCo1L3Tk/s1600/ShowHideFaces_024.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiM5C_A58Kzo1HWE68PJAYvBg6bPasdIsnR1sH-ICdDCylOZQBsc-p_KV-y2CVvvtQLdUvqJ_hwd8h84N0BaozetE2OlVjBSh2kOAN0UgXvrMXpVlNh1Pcz6p4Vtzi3qXHnmmOLCo1L3Tk/s640/ShowHideFaces_024.png" width="640" height="257" /></a></div><p>
If you haven't followed that process, do it now because we are going to prepare the configuration notecard :-)</p><p>
First, let's clean this up a little, removing all the lines with directions and timestamps until we have something like this:</p><div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgfBDBDt13yQi2SOPBRDseOaAK61jehdjal7eVlsEP0bdP7vZ9JEImTnHanEP5N9N8qSUAUFxzrPIA8Yop1C-DF_D5Ae1Rilqi3c_0vHbM6l7Qe6MA2ANFoEz22jmFB5cWP_OkWtVjkgHY/s1600/ShowHideFaces_025.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgfBDBDt13yQi2SOPBRDseOaAK61jehdjal7eVlsEP0bdP7vZ9JEImTnHanEP5N9N8qSUAUFxzrPIA8Yop1C-DF_D5Ae1Rilqi3c_0vHbM6l7Qe6MA2ANFoEz22jmFB5cWP_OkWtVjkgHY/s640/ShowHideFaces_025.png" width="640" height="257" /></a></div><p>
What do we do with this? If we haven't set up the animations with AVsitter, then <i><b>now</b> it's the time to do it</i>. Set up the AVsitter engine because we need the list of animation names on the AVsitter menu. There's an <tt>AVpos</tt> notecard included with this script, ready with all the animations, for the purposes of this documentation. In your own projects, you would need to create the AVpos notecard yourself.</p><p>
Open the included <tt>AVpos</tt> notecard. It should look like this:</p><div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiQVW-mzxrklsgHbT-_uR_cYcSbVMRrPBsKxwJ0LAcHSqaUEoD6IQyJn5Ctjdq5kM0TUoIS57XZmsOGff6QiG_aA9i1KlwXSWkOzreV3ws_tTPaDYgyYHXtoLbBKi0hhcUehruc5gnDEPY/s1600/ShowHideFaces_026.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiQVW-mzxrklsgHbT-_uR_cYcSbVMRrPBsKxwJ0LAcHSqaUEoD6IQyJn5Ctjdq5kM0TUoIS57XZmsOGff6QiG_aA9i1KlwXSWkOzreV3ws_tTPaDYgyYHXtoLbBKi0hhcUehruc5gnDEPY/s640/ShowHideFaces_026.png" width="640" height="402" /></a></div><p>
The names of the animations are these:</p><pre>Stand 2
Stand 4
Stand 6
Stand 7
Stand 9
Stand 10
</pre><p>
Yes, when we say here "the name of the animation", we refer to the identifier we give to it that shows as a button on the AVsitter menu. So it's not the asset name itself, but the identifier we choose.</p><p>
We have now to decide:</p><ul>
<li>Which animations are good with the default configuration. For the purposes of this documentation, we decide that <tt>Stand 6</tt> and <tt>Stand 9</tt> don't need a different configuration than the default. <b>They will not show</b> on the configuration notecard, as a consequence of this decision (and the notecard will be faster to read by the script, having this one more available memory).</li>
<li>Which animations will have the "open curtains, closed window" configuration. For the purposes of this documentation, we decide that <tt>Stand 2</tt> and <tt>Stand 4</tt> will have it.</li>
<li>Which animations will have the "open curtains, open window" configuration. For the purposes of this documentation, we decide that <tt>Stand 7</tt> and <tt>Stand 10</tt> will have it.</li>
</ul><p>
If we review the process, we have that after retrieving the data corresponding to the default position, the first ANIMATION block we obtained was the one for "open curtains, closed window", and we want that configuration for the <tt>Stand 2</tt> and <tt>Stand 4</tt> animations. So we locate the first ANIMATION block in our text editor and select it:</p><div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgn2l-Bb-1y5JZ6ZoOMIWtjdCVHlcYtmH4WSQATQoJpBjzTutohWgKO4Zj9Jnuif-Npq72BvtjOB0mY7hwuyVZyZVosM_cCyUsYMLqmLN16ROa6ENJGzIOqAbQGsniISJoDst9TG1DienU/s1600/ShowHideFaces_027.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgn2l-Bb-1y5JZ6ZoOMIWtjdCVHlcYtmH4WSQATQoJpBjzTutohWgKO4Zj9Jnuif-Npq72BvtjOB0mY7hwuyVZyZVosM_cCyUsYMLqmLN16ROa6ENJGzIOqAbQGsniISJoDst9TG1DienU/s640/ShowHideFaces_027.png" width="640" height="228" /></a></div><p>
copy and paste it below to duplicate the block:</p><div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhvFHFOc0773uRU_QjkWfIkGtMPoT8lHppQ6IO0XbvK1JdlFXQfx4-2mlmEQpjc5JkrflO6UYLnxQAsapFTUYKTJMSC5QtsCvQf6o5j_n3HPmff9lBmo46ztfA9f2a2vUk-NlW-0R8uczY/s1600/ShowHideFaces_028.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhvFHFOc0773uRU_QjkWfIkGtMPoT8lHppQ6IO0XbvK1JdlFXQfx4-2mlmEQpjc5JkrflO6UYLnxQAsapFTUYKTJMSC5QtsCvQf6o5j_n3HPmff9lBmo46ztfA9f2a2vUk-NlW-0R8uczY/s640/ShowHideFaces_028.png" width="640" height="228" /></a></div><p>
and then write down the animation names after the <tt>ANIMATION =</tt> text:</p><div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgTfwDnVIpYQdch02FTT4R_qb6k_1pOJ2HWEYs7UNexXqdDeT3z0wFwIXNLhowPD0CCiQz0OjtnX-Hjz_ZIua6quRtqCsMQMcDbmcnhyrHvrmImlw87P7emHHCEOPP_sSjym2GMSIbPVt0/s1600/ShowHideFaces_029.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgTfwDnVIpYQdch02FTT4R_qb6k_1pOJ2HWEYs7UNexXqdDeT3z0wFwIXNLhowPD0CCiQz0OjtnX-Hjz_ZIua6quRtqCsMQMcDbmcnhyrHvrmImlw87P7emHHCEOPP_sSjym2GMSIbPVt0/s640/ShowHideFaces_029.png" width="640" height="228" /></a></div><p>
Now you do the same with the remaining block, to practice :-)
Make the second ANIMATION block configuration be ready for the <tt>Stand 7</tt> and <tt>Stand 10</tt> animations.</p><p>
Once we have our final text ready (save often!):</p><div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhw2Fzz5nihGn3sgzlaxTO6buE70p6XvwEaJI7CEojN_ST5H1pq0giV14LEnMkRRleY8opJfJrWXJhxN8bCsYVWalDiakUE53sG4DQLgkhDp7WLF1r351qfk5DcFMx7h8hRkQA9Ig3AFr0/s1600/ShowHideFaces_030.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhw2Fzz5nihGn3sgzlaxTO6buE70p6XvwEaJI7CEojN_ST5H1pq0giV14LEnMkRRleY8opJfJrWXJhxN8bCsYVWalDiakUE53sG4DQLgkhDp7WLF1r351qfk5DcFMx7h8hRkQA9Ig3AFr0/s640/ShowHideFaces_030.png" width="640" height="228" /></a></div><p>
we make a copy of the included <tt>[Black Tulip] Show/Hide Faces - AVsitter Plugin ~CFG~</tt> notecard, open it:</p><div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi-aqnBr8MDeMBzjrYoyQu2kVc_gqXWpNDR0VtxslFv9UxVRpa1dE87lxofmrWo_cIrkK6VPDSLR2fUmO6NOuXBB68ASWKCDvk0r1SFnMC7uINth4pU0IjF_TtueMppLfVZcHtHoU7pV2w/s1600/ShowHideFaces_031.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi-aqnBr8MDeMBzjrYoyQu2kVc_gqXWpNDR0VtxslFv9UxVRpa1dE87lxofmrWo_cIrkK6VPDSLR2fUmO6NOuXBB68ASWKCDvk0r1SFnMC7uINth4pU0IjF_TtueMppLfVZcHtHoU7pV2w/s640/ShowHideFaces_031.png" width="640" height="399" /></a></div><p>
and then copy/paste the complete information from our text editor, this way:</p><div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiuXPchhB1L-3EVze_FYCfswhXS-O55xcEV7vLLMxRE4R0N-PH1D_Z5597YJ3gCIQkJCTc2Kg84zZ9bLyHmIerkRWT5KgrX2af9xhFnuhIdD6TKd-7Vp2r3I63hswBwNG_txQf3eubY4Cw/s1600/ShowHideFaces_032.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiuXPchhB1L-3EVze_FYCfswhXS-O55xcEV7vLLMxRE4R0N-PH1D_Z5597YJ3gCIQkJCTc2Kg84zZ9bLyHmIerkRWT5KgrX2af9xhFnuhIdD6TKd-7Vp2r3I63hswBwNG_txQf3eubY4Cw/s640/ShowHideFaces_032.png" width="640" height="399" /></a></div><p>
Now we save the notecard. We're almost done!</p><h3>
Setting up: Prepare AVsitter, drop the Show/Hide notecard and script</h3><p>
Drop in the contents of the object all the sample animation files included in this package, the AVpos notecard, and your AVsitter scripts:</p><div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjxU-5yJ8mPC2F3I7-5xau_56iwDys_HpeOiXeha4VWWnnmESRK0aaFOonrEa0Vjgn5rxoFPhYzZ6DNboES5YoZOE4Nb2Nef_IYljZbZ2LgkHlj4jPMs_LmD8FY-faUzS6YlzyTm2XNFaI/s1600/ShowHideFaces_033.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjxU-5yJ8mPC2F3I7-5xau_56iwDys_HpeOiXeha4VWWnnmESRK0aaFOonrEa0Vjgn5rxoFPhYzZ6DNboES5YoZOE4Nb2Nef_IYljZbZ2LgkHlj4jPMs_LmD8FY-faUzS6YlzyTm2XNFaI/s640/ShowHideFaces_033.png" width="640" height="564" /></a></div><p>
Now drop the <tt>[Black Tulip] Show/Hide Faces - AVsitter Plugin ~CFG~</tt> notecard and then, the <tt>[Black Tulip] Show/Hide Faces - AVsitter Plugin</tt> script.</p><div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi8M8gkcieZh2Rhr2rJJgvJK3piTIpajTbUiTHRRNNuGb1O8mhBmaLpPPZjoTa0tlw4U4UyFmfGrWJegK_IpXg7U-hcB_xp7LDMlfq3P5wbWGQJ4fDBhPS1doFwbaemKgsKBtl1WR2PXRQ/s1600/ShowHideFaces_034.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi8M8gkcieZh2Rhr2rJJgvJK3piTIpajTbUiTHRRNNuGb1O8mhBmaLpPPZjoTa0tlw4U4UyFmfGrWJegK_IpXg7U-hcB_xp7LDMlfq3P5wbWGQJ4fDBhPS1doFwbaemKgsKBtl1WR2PXRQ/s640/ShowHideFaces_034.png" width="640" height="494" /></a></div><p>
Once the script finishes reading the notecard, the window and curtain will close if they weren't closed already.</p><p>
Now we sit on the window and the script changes the configuration to the corresponding one for <tt>Stand 2</tt> (first animation on the menu):</p><div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiH8LLEgu5vPPQiz9kkCQN_VESj-z2bi2WKWx30EFFVzQLABcdGuKn-PqR8VjdsnuKZ8_JNVX_1JeraZjEQCbATaJ50X5E-eLedLzBT7Z3AFLgzR1jGQ97-HqAPM0JTOm5uZjK4WTP7CuQ/s1600/ShowHideFaces_035.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiH8LLEgu5vPPQiz9kkCQN_VESj-z2bi2WKWx30EFFVzQLABcdGuKn-PqR8VjdsnuKZ8_JNVX_1JeraZjEQCbATaJ50X5E-eLedLzBT7Z3AFLgzR1jGQ97-HqAPM0JTOm5uZjK4WTP7CuQ/s640/ShowHideFaces_035.png" width="436" height="640" /></a></div><p>
Change the animations and check that all the configurations correspond to the animations you wanted:</p><div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgTfkLcJ59ZeIX2cIIEF1y-MASYl_ibwNcns2UgIuUvrSVUc_1rj6HwpO_Oke6wJ92YGU9e0WsabC_6-BtjnWhkLeXsHuHE4yfZVXaPK-tGoeXyGxvR-7v96OstVtw0Jlwh6u6mjn9QjNc/s1600/ShowHideFaces_036.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgTfkLcJ59ZeIX2cIIEF1y-MASYl_ibwNcns2UgIuUvrSVUc_1rj6HwpO_Oke6wJ92YGU9e0WsabC_6-BtjnWhkLeXsHuHE4yfZVXaPK-tGoeXyGxvR-7v96OstVtw0Jlwh6u6mjn9QjNc/s640/ShowHideFaces_036.png" width="436" height="640" /></a></div><p>
And now yes... We're done! May you create wonderful things with this script :-)</p></div><h2 onclick="Layers_ShowHide(getElementById('div-updateToV1.05'), LayersList);" href="javascript:DoNothing();" class="clickForInfo">
Update to V1.05</h2><div id="div-updateToV1.05" class="info">
<p>
Upon customer request, there has been an update to this script. The first version allowed to do this:</p><ul>
<li>Define a configuration of faces for a setting we call the <i>default</i> setting: How will the object look like when no avatars are sitting on it? We can define this.</li>
<li>Define a configuration of faces per animation. Several animations may have the same configuration, and there <i>can be</i> different configurations.</li>
<li>If an animation has no assigned configuration, then the <i>default</i> one is used.</li>
</ul>
<p>
But what if we would like that a specific configuration is the <i>most used</i> when avatars are sitting? With version 1, we would have to write a long list of animations with the corresponding transparency et all definition, per face. This impacts in the available memory of the script. So this version 1.05 gives a step forward in making the script even easier, and using less memory.</p><p>
Version 1.0 had this kind of block to define the default configuration when no one sits (for example):</p><pre>DEFAULT STATE BEGIN
b1:0@0.2,1@0.2,2@0.0,3@1.0,4@1.0,5@0.0;a1:0@1.0,1@0.0,2@1.0,3@0.0,4@1.0
DEFAULT STATE END
</pre><p>
In version 1.05, we're adding a default configuration when at least one avatar is sitting, like this:</p><pre>DEFAULT STATE AVS_ON BEGIN
b1:0@0.2,1@0.2,2@0.0,3@1.0,4@1.0,5@0.0;a1:0@1.0,1@0.0,2@1.0,3@0.0,4@1.0
DEFAULT STATE AVS_ON END
</pre><p>
The auxiliary tool (also updated) shows [SAV SHOWDAV] as the button to have us record this configuration. (The other button names have been reduced a little, they all say SAV instead of SAVE.)</p><p>
Then, in version 1.05, the default configuration when someone is sitting has this format:</p><pre>DEFAULT STATE AVS_ON BEGIN
b1:0@0.2,1@0.2,2@0.0,3@1.0,4@1.0,5@0.0;a1:0@1.0,1@0.0,2@1.0,3@0.0,4@1.0
DEFAULT STATE AVS_ON END
</pre><p>
and the auxiliary tool shows the [SAV SHOWDAV] button to have us record this configuration.</p><p>
The rest is the same: the ANIMATION blocks have exactly the same structure.</p><p>
Hopefully, this update will make your building time even easier :-)</p><p>
If you have purchased the first version and have NOT received this update, please contact Auryn Beorn to receive it.</p></div>
<h2 onclick="Layers_ShowHide(getElementById('div-advancedSetup'), LayersList);" href="javascript:DoNothing();" class="clickForInfo">
Advanced Setup</h2><div id="div-advancedSetup" class="info">
<p>
</p></div><h3 onclick="Layers_ShowHide(getElementById('div-descriptionFormat'), LayersList);" class="clickForInfoIndent">
Description Format</h3><div id="div-descriptionFormat" class="infoIndent">
<p>
This script can be used in conjunction with many other of Black Tulip's scripts as long as we remember this: If two scripts need using the description field, we will separate their values with the <b>#</b> character. Each script will read the part of the description needed and both will be able to coexist together. If it's three, then same rule applies: separate each description part with <b>#</b></p><p>
For example, if we're using the texture change and this script in the same object, the description of a prim that both shows/hides faces and changes textures should be written like this (example values):</p><tt>t;mirror#showHide=m1</tt>
</div><h3 onclick="Layers_ShowHide(getElementById('div-notecardConfigurationInDetail'), LayersList);" class="clickForInfoIndent">
Notecard Configuration in Detail</h3><div id="div-notecardConfigurationInDetail" class="infoIndent">
<p>
The complete format of a notecard line with show/hide data is:</p><pre>primDesc1:face0@alpha+glow,face1@alpha+glow,...;primDesc2:face0@alpha+glow,face1@alpha+glow,...;...</pre><p>
The information relative to each prim is delimited by these tokens:</p><p>
<tt><b>primDesc1</b></tt> and <tt><b>;</b></tt> for the first prim in the list, <tt><b>primDesc2</b></tt> and <tt><b>;</b></tt> for the second, and so on.</p><p>
Let's analyze the information for the first prim: the rest have the same format. It's this, the text enclosed between <tt><b>primDesc1</b></tt> and <tt><b>;</b></tt>:</p><pre>face0@alpha+glow,face1@alpha+glow,...</pre></div><h2 onclick="Layers_ShowHide(getElementById('div-troubleshooting'), LayersList);" class="clickForInfo">
Troubleshooting</h2><div id="div-troubleshooting" class="info">
<p>
We haven't been notified of issues at the moment.
</p></div><p>
If after having followed the directions and checked the troubleshooting list, you have problems making the script work, please <a href="">click here for the customer service form</a>.</p></div><!-- class = post -->
Auryn Beornhttp://www.blogger.com/profile/02832014326094809370noreply@blogger.comtag:blogger.com,1999:blog-2947025942912354529.post-81729321519393332412016-11-11T04:30:00.000-08:002017-06-15T23:06:39.926-07:00Script: Moving Parts AVsitter Plugin<script>
LayersList = [
"div-whatIsIncludedInYourPurchase"
, "div-featuresList"
, "div-stepByStepGuide"
, "div-updateToV1.05"
, "div-advancedSetup"
, "div-descriptionFormat"
, "div-notecardConfigurationInDetail"
, "div-troubleshooting"
];
function DoNothing() // It does nothing indeed. Its purpose is to save warnings in <a> elements
{
}
function Layers_ShowHide(theLayer, LayersList)
{
var theLayerDisplay = theLayer.style.display;
var totalLayersList = LayersList.length;
var i;
for(i = 0; i < totalLayersList; i++)
{
document.getElementById(LayersList[i]).style.display = "none";
}
if(theLayerDisplay != "block") theLayer.style.display = "block";
else theLayer.style.display = "none";
}
</script>
<div class="myPost">
<h2>
Documentation · Moving Parts (AVsitter plugin)</h2><p>
<a href="https://marketplace.secondlife.com/p/Black-Tulip-Script-Moving-Parts-AVsitter-Plugin/10319587">Moving Parts AVsitter Plugin script in Marketplace.</a></p><p>
Thank you for having considered this script to enhance the quality of your products. Please read the following instructions carefully, especially the ones explaining which permissions to apply to the scripts for the next owner. Failure to complete this task INVALIDATES the license governing your use of this set of scripts. Should you have problems, please <a href="http://blacktulip-store.blogspot.com/p/customer-support.html">fill the scripts assistance form, explaining what you did and what happened</a>, and I'll get back to you.</p><b>IMPORTANT!</b>
The script contains a check to prevent accidental give-aways. If you haven't set permissions correctly in your inventory, then the script will self delete when you try to use it. The best way to ensure you set permissions correctly is by doing it NOW in your inventory.
<p>
Follow these directions carefully. Complete the <i>Step by Step Guide</i> in the first place, using the provided sample object. When you feel comfortable with it, check the <i>Advanced Setup</i> section for a detailed explanation of all the features. There's a <i>Troubleshooting</i> section at the end. Before asking for help, check that your problem isn't one of the problems described in there.</p><h2 class="clickForInfo">
License of Use: <a href="">Click here to read the License of use.</a></h2><h2 onclick="Layers_ShowHide(getElementById('div-whatIsIncludedInYourPurchase'), LayersList);" class="clickForInfo">
What's included in your purchase</h2><div id="div-whatIsIncludedInYourPurchase" class="info">
<p>
Check that your box contains the following assets:</p><ul>
<li><tt>[Black Tulip] Moving Parts - AVsitter Plugin</tt> (the main script)</li>
<li><tt>[Black Tulip] Moving Parts - AVsitter Plugin ~CFG~</tt> (the configuration notecard)</li>
<li><tt>[Black Tulip] Moving Parts - AUXILIARY TOOL</tt> (the auxiliary tool script)</li>
<li><tt>[Black Tulip] Sample Object for Moving Parts (AVsitter loaded)</tt> (the starting sample object)</li>
<li><tt>[Black Tulip] Sample Object for Moving Parts (FINISHED)</tt> (the sample object, after setting it up by following the Step by Step Guide)</li>
<li><tt>[Black Tulip] Proof Of Purchase - Moving Parts Plugin v1</tt> (proof of purchase gesture)</li>
<li><tt>[Black Tulip] Moving Parts - AVsitter Plugin - DOCS</tt> (notecard with link to this documentation)</li>
<li><tt>[Black Tulip] Script - Moving Parts - AVsitter Plugin (ad)</tt> (product ad)</li>
</ul><p>
If any of these is missing, contact Auryn Beorn for a replacement.</p></div><h2 onclick="Layers_ShowHide(getElementById('div-featuresList'), LayersList);" href="javascript:DoNothing();" class="clickForInfo">
Features list</h2><div id="div-featuresList" class="info">
<ul>
<li>Selected parts in a linked object move to a specific position depending on the animation selected in AVsitter</li>
<li>Parts can be one or more prims</li>
<li>Parts can be moved differently depending on the animation</li>
<li>Each animation may move different prims</li>
<li>AVsitter ONLY</li>
</ul></div><h2 onclick="Layers_ShowHide(getElementById('div-stepByStepGuide'), LayersList);" href="javascript:DoNothing();" class="clickForInfo">
Step by Step Guide</h2><div id="div-stepByStepGuide" class="info">
<p>
Before starting to set things up, take note of this requirement, perhaps the most important one: We can move as many prims as we want, but <b>none of them</b> can be the <b>root prim</b>. When you plan your object, if all prims need to move, then add an extra invisible prim to be the root.
</p><p>
Rez the <tt>[Black Tulip] Sample Object for Moving Parts (AVsitter loaded)</tt> sample object. This object is already prepared with AVsitter, and the poses are set. Right click on the object for the Edit window and click on the Content tab to check this.
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhXkzCsSoSSenPScmjMlqACd3qf5Fip4GBGmPkpTWot1zAcdYJxkeCtiRC9BxGYOgnFc65GG2k4lkFcTAOVkRpQeGPepB0pMu7i17otOHi-TB1PPpyLWfAulX_lQ3W686ReKtEhNXDwLAw/s1600/MovingParts_AVsitterPlugin_00.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhXkzCsSoSSenPScmjMlqACd3qf5Fip4GBGmPkpTWot1zAcdYJxkeCtiRC9BxGYOgnFc65GG2k4lkFcTAOVkRpQeGPepB0pMu7i17otOHi-TB1PPpyLWfAulX_lQ3W686ReKtEhNXDwLAw/s640/MovingParts_AVsitterPlugin_00.png" width="640" height="620" /></a></div></p><p>
For the purposes of demonstration, this object has two animations. In one of them, the object will stay intact, and in the other one, we move the join prim as if it had fallen to the ground. That is, the legs stay in the same position <i>all the time</i> so they are not a moving part. The join prim will move in one animation, so this prim <b>is</b> a moving part. Now that we have decided which are our moving parts, we have to identify them. To do this, edit the object, click on <i>Edit linked</i>, click on the join prim, and change the description the way the picture shows:
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjvKq9QLGZbo5wVyjshP7PxCODUykfjrpEFVJgRlyVjCQDhOxpUWnjQBMfjIFGVrHsAsrRJVuQzn47wn3IZodTYVIVP6klompnBe8vFlVeRVKpXq95ofkz8ZIl8nDpbYAaHgwUTk-AFVW4/s1600/MovingParts_AVsitterPlugin_01.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjvKq9QLGZbo5wVyjshP7PxCODUykfjrpEFVJgRlyVjCQDhOxpUWnjQBMfjIFGVrHsAsrRJVuQzn47wn3IZodTYVIVP6klompnBe8vFlVeRVKpXq95ofkz8ZIl8nDpbYAaHgwUTk-AFVW4/s640/MovingParts_AVsitterPlugin_01.png" width="640" height="620" /></a></div></p><p>
After doing this, we untick <i>Edit linked</i>, click on the Content tab and drop the <tt>[Black Tulip] Moving Parts - AUXILIARY TOOL</tt> script. When we see a message like this in chat, we can continue:
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjHIMQePNA1VMXF-KoCjwGJRxFwwI0iXL9MZURkPJOG8sB_nPdJoWv5FkDxy9omufQ9zKTlqfJJ1heHorSivY-u5-I0tUieqimGvvlN_GY8LVQPS2oUO_rn2Zr1C3vylFHO0QBwwkE9Cog/s1600/MovingParts_AVsitterPlugin_02.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjHIMQePNA1VMXF-KoCjwGJRxFwwI0iXL9MZURkPJOG8sB_nPdJoWv5FkDxy9omufQ9zKTlqfJJ1heHorSivY-u5-I0tUieqimGvvlN_GY8LVQPS2oUO_rn2Zr1C3vylFHO0QBwwkE9Cog/s640/MovingParts_AVsitterPlugin_02.png" width="640" height="447" /></a></div></p><p>
It can be easier adjusting parts with our avatar <i>sitting on the object</i> so go ahead, jump on the item, click to get the menu and ignore the AVsitter menu because the two menus will come up at once.
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhLqrvh9mzqlLyIFquFy363gb_7tJ5o_ynUsGVM20w_ZAh7WrTolUmJZBAWm3R4V4VtnybHYKDAbVM4iP-UXalNha14dheWvW7_IWuBXZWNRdam_RUAL-OZ4XrQP1ehILH5RVXkZSb03IA/s1600/MovingParts_AVsitterPlugin_03.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhLqrvh9mzqlLyIFquFy363gb_7tJ5o_ynUsGVM20w_ZAh7WrTolUmJZBAWm3R4V4VtnybHYKDAbVM4iP-UXalNha14dheWvW7_IWuBXZWNRdam_RUAL-OZ4XrQP1ehILH5RVXkZSb03IA/s640/MovingParts_AVsitterPlugin_03.png" width="564" height="640" /></a></div></p><p>
This is the <i>default position</i>, that is, the base position where no parts are moving. So we click on [SAVE DEF.] on the menu and get some text in local (nearby) chat. We get to the meaning of this text in a moment:
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiwOuhMxqmgwG1p9a6I5DMIxCeMqAkEc6yiELxqVdV5321DVtNagHxDuiW0EBGL26poh3frdJoi232mERGbpSUGljmx9wuQ9onAFIJOTRY9J1JlDfBpHyd1c6N_wHcWTx3AiR6ClgblCU8/s1600/MovingParts_AVsitterPlugin_04.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiwOuhMxqmgwG1p9a6I5DMIxCeMqAkEc6yiELxqVdV5321DVtNagHxDuiW0EBGL26poh3frdJoi232mERGbpSUGljmx9wuQ9onAFIJOTRY9J1JlDfBpHyd1c6N_wHcWTx3AiR6ClgblCU8/s640/MovingParts_AVsitterPlugin_04.png" width="640" height="201" /></a></div></p><p>
Now we click so the AVsitter menu shows up, change our pose to <i>Oooops</i> (yes, that's the name of the pose on the menu), dismiss the AVsitter menu and stay with the auxiliary tool menu. Then we <i>Edit linked</i> and place the join prim, for example, this way:
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEje_g1JsuBEg5I__bLbr9Op7ETlHH7-cc9grMY1VNkHSF5xb6n9uOfZxDvCTCOaNOVOxgzVCG-EfzsZOvv_3SlL3YMOVTqUF-pYAAPOPMvBlSLuN-_WjI7dJuay4JF0BUgdNll4VRqmdRE/s1600/MovingParts_AVsitterPlugin_05.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEje_g1JsuBEg5I__bLbr9Op7ETlHH7-cc9grMY1VNkHSF5xb6n9uOfZxDvCTCOaNOVOxgzVCG-EfzsZOvv_3SlL3YMOVTqUF-pYAAPOPMvBlSLuN-_WjI7dJuay4JF0BUgdNll4VRqmdRE/s640/MovingParts_AVsitterPlugin_05.png" width="640" height="478" /></a></div></p><p>
Now we click [SAVE] and get this text in local (nearby) chat:
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjBEYfu0lXyqTttHaQDooFux68SbQl9kWRDoMYQZcr1unmNavoJKNTU7zEaCIL-rdE_nGi2cbgwQMlRGs9DFV-7m9hMxn9V8He0BBX_81aUNrqtt5bimNtN0NMti06BRud5CpVnXR9Tlqo/s1600/MovingParts_AVsitterPlugin_06.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjBEYfu0lXyqTttHaQDooFux68SbQl9kWRDoMYQZcr1unmNavoJKNTU7zEaCIL-rdE_nGi2cbgwQMlRGs9DFV-7m9hMxn9V8He0BBX_81aUNrqtt5bimNtN0NMti06BRud5CpVnXR9Tlqo/s640/MovingParts_AVsitterPlugin_06.png" width="640" height="216" /></a></div></p><p>
If we had more animations and different positions for our prim(s), we would continue. Once we're done, we click on the [DELETE] button so the auxiliary tool removes itself from the object. After confirming the action on the next menu that asks us to make sure, text shows up in local chat to let us know about it:
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhcGWJLiszoFHiOAJjF1PLk-lbiYPIvnMIHbTMJIcy93gLnBxYAIjoqARnUzO8RmhnmOjDIoxEqGBvuTnCJOgL-436N_VQwHvB5NGAb6DmDELRjipgfWrujjpugjNujnYf0GkniQbKcJF8/s1600/MovingParts_AVsitterPlugin_07.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhcGWJLiszoFHiOAJjF1PLk-lbiYPIvnMIHbTMJIcy93gLnBxYAIjoqARnUzO8RmhnmOjDIoxEqGBvuTnCJOgL-436N_VQwHvB5NGAb6DmDELRjipgfWrujjpugjNujnYf0GkniQbKcJF8/s640/MovingParts_AVsitterPlugin_07.png" width="640" height="74" /></a></div></p><p>
What do we do now? Now it's time to prepare the configuration notecard. Make a copy of the base <tt>[Black Tulip] Moving Parts - AVsitter Plugin ~CFG~</tt> one included in your package and open this copy. It should read like this:
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhu0F4KW5kCOIj96IPWrojC1RLhDEOXt8grTqROWTaeqJVsLAWRl-xLx4HvRAd2PCYN4a1cU7jNMmXChZGFqesF5jxuMmE-jQO-Ndxd0chCHxVN8tpg3kNotTanB8ZhUwYpl-RdPhRYGCY/s1600/MovingParts_AVsitterPlugin_08.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhu0F4KW5kCOIj96IPWrojC1RLhDEOXt8grTqROWTaeqJVsLAWRl-xLx4HvRAd2PCYN4a1cU7jNMmXChZGFqesF5jxuMmE-jQO-Ndxd0chCHxVN8tpg3kNotTanB8ZhUwYpl-RdPhRYGCY/s640/MovingParts_AVsitterPlugin_08.png" width="640" height="306" /></a></div></p><p>
The first we can see in the notecard is a DEFAULT section. We replace it with the text we obtained before in chat, after clicking on [SAVE DEF.]. After saving our notecard, it looks like this:
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjtSQM5Vtkk12IWu1zMPTKqzYx9Ckt7CwgmYMidBf83aPkbj_F_xbf7TEA47Ojoyrd2ffZ29qJTiqUW6VohEzhG6Nh0lVK7HCE7gB68lns8y0SvfPekkofudiDFIj4tiuh6P4cqM70WH3I/s1600/MovingParts_AVsitterPlugin_09.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjtSQM5Vtkk12IWu1zMPTKqzYx9Ckt7CwgmYMidBf83aPkbj_F_xbf7TEA47Ojoyrd2ffZ29qJTiqUW6VohEzhG6Nh0lVK7HCE7gB68lns8y0SvfPekkofudiDFIj4tiuh6P4cqM70WH3I/s640/MovingParts_AVsitterPlugin_09.png" width="640" height="306" /></a></div></p><p>
We're not done yet. Now we're going to substitute the <i>dummy</i> text:</p><pre>ANIMATION = animName
Prim1 = pos | rot
Prim2 = pos | rot
ANIMATION END
</pre><p>
with the corresponding ANIMATION text that the auxiliary tool has written in local chat. After saving our notecard, this is how it looks like:
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgOP69YbRjDpu6p4uGrWTi-hZr1Z6XuDu2ROOyaBgxnGg53kjlqafNCsrhAEmv2xitHBtH8Z-u-iWANiqF0KNXgIN3JpwaJm9rItZignGzlDbE_A2_ePEaWqQkQTdlsvG0WdBpXVHvF_8k/s1600/MovingParts_AVsitterPlugin_10.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgOP69YbRjDpu6p4uGrWTi-hZr1Z6XuDu2ROOyaBgxnGg53kjlqafNCsrhAEmv2xitHBtH8Z-u-iWANiqF0KNXgIN3JpwaJm9rItZignGzlDbE_A2_ePEaWqQkQTdlsvG0WdBpXVHvF_8k/s640/MovingParts_AVsitterPlugin_10.png" width="640" height="306" /></a></div></p><p>
Careful: We're not done yet. We still have to add the animation name after the <tt>ANIMATION =</tt> text that opens the ANIMATION block. The name we have to write after the = sign is the animation name according to our AVpos notecard. In this case, the animation that makes the prims move is <tt>Oooops</tt>, so we should write this after the equal sign. This way, the configuration notecard reads now this way:
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgk2plJ7iYudx6-Gelms5ui0ruhrLLOWXOKtf_SSunXu1jT3UBwvp_iyhDuAIIcvAfdjj4jR1Cg3n6AFHmJkTMb2ueOFhdXvI94k-ZxDZnOmy2JVY02XjzRKJ2TTuOR5lz1xKRxsUSRNsc/s1600/MovingParts_AVsitterPlugin_11.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgk2plJ7iYudx6-Gelms5ui0ruhrLLOWXOKtf_SSunXu1jT3UBwvp_iyhDuAIIcvAfdjj4jR1Cg3n6AFHmJkTMb2ueOFhdXvI94k-ZxDZnOmy2JVY02XjzRKJ2TTuOR5lz1xKRxsUSRNsc/s640/MovingParts_AVsitterPlugin_11.png" width="640" height="306" /></a></div></p><p>
We're almost done. Now right click on the <tt>[Black Tulip] Moving Parts - AVsitter Plugin</tt> script and change its permissions to next owner this way:
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh6ujI-Btck_iPta5DdnPObAoVkxC6xKraGiOihOQ6i8HOhIUGataS5WOn5kKUI8kJLUHDlxJLogt-o-QZCJkl-iVHTXkdSQuJawxFceFAfvHvygGDDGH2C61Uyx_e0o1a8u9e-0X2C1XA/s1600/MovingParts_AVsitterPlugin_12.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh6ujI-Btck_iPta5DdnPObAoVkxC6xKraGiOihOQ6i8HOhIUGataS5WOn5kKUI8kJLUHDlxJLogt-o-QZCJkl-iVHTXkdSQuJawxFceFAfvHvygGDDGH2C61Uyx_e0o1a8u9e-0X2C1XA/s640/MovingParts_AVsitterPlugin_12.png" width="591" height="640" /></a></div></p><p>
Right click to edit the object, go to the Content tab and drop first the <tt>[Black Tulip] Moving Parts - AVsitter Plugin ~CFG~</tt> configuration notecard, then the <tt>[Black Tulip] Moving Parts - AVsitter Plugin</tt> script. When the script finishes loading the configuration, the prims will move to their default position:
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEipFGEZP6EaTgUSxcYbbRwtXnhYrrqQas2vOcPUu2ttlcn_HaUYzOCINw5esiATnV2u0a8cTgmwfZMGChFxt8rAPlmfQMCkDid5YJuFAFcqwsDjXrJam67kdtMX2W1dUQHXuZoXjACLLjw/s1600/MovingParts_AVsitterPlugin_13.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEipFGEZP6EaTgUSxcYbbRwtXnhYrrqQas2vOcPUu2ttlcn_HaUYzOCINw5esiATnV2u0a8cTgmwfZMGChFxt8rAPlmfQMCkDid5YJuFAFcqwsDjXrJam67kdtMX2W1dUQHXuZoXjACLLjw/s640/MovingParts_AVsitterPlugin_13.png" width="640" height="405" /></a></div></p><p>
The object is ready! Now you can jump on it and go over all animations to have parts changing as they should:
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjCDv3XdLTUDBOQL78Tl6qA6tW0FW5RusjbC6L2fLiqX7ocTxy6oQjkCdDeq79tZGFlGgUHKQU5qls8sNYbu9j65uZ1pRbEgbnlSLrZjQ_oglQR1byE1hm9umw9fey4Z1kUY2pqkvmBD6Q/s1600/MovingParts_AVsitterPlugin_14.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjCDv3XdLTUDBOQL78Tl6qA6tW0FW5RusjbC6L2fLiqX7ocTxy6oQjkCdDeq79tZGFlGgUHKQU5qls8sNYbu9j65uZ1pRbEgbnlSLrZjQ_oglQR1byE1hm9umw9fey4Z1kUY2pqkvmBD6Q/s640/MovingParts_AVsitterPlugin_14.png" width="556" height="640" /></a></div></p><p>
When all avatars stand up, the object will come back to the default position:
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhkKn5n-TeztfFUKHePx-aFm3gc3AJ-iy6tjsmDhABjmuijaaDYEVv7Sf_dr1TWbIEa7YO6AccW9UxvPkUa2RV4bV4F2ALQy0LX2KuPzll3UP5IOd25YDgXKwGPnkr6mmcHSJbTCiDISgw/s1600/MovingParts_AVsitterPlugin_15.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhkKn5n-TeztfFUKHePx-aFm3gc3AJ-iy6tjsmDhABjmuijaaDYEVv7Sf_dr1TWbIEa7YO6AccW9UxvPkUa2RV4bV4F2ALQy0LX2KuPzll3UP5IOd25YDgXKwGPnkr6mmcHSJbTCiDISgw/s640/MovingParts_AVsitterPlugin_15.png" width="603" height="640" /></a></div></p><p>
</p><p>
</p></div>
<h2 onclick="Layers_ShowHide(getElementById('div-updateToV1.05'), LayersList);" href="javascript:DoNothing();" class="clickForInfo">
Update to V1.05</h2><div id="div-updateToV1.05" class="info">
<p>Upon customer request, there has been an update to this script. The first version allowed to do this:</p>
<ul>
<li>Define a default position of the prims when no one sits</li>
<li>Define one position per animation when they're sitting</li>
</ul>
<p>But what if we would like that a specific configuration is the <i>most used</i> when avatars are sitting? With version 1, we would have to write a long list of animations, positions and rotations. This impacts in the available memory of the script. So this version 1.05 gives a step forward in making the script even easier, and using less memory.</p>
<p>Version 1.0 had this kind of block to define the default configuration when no one sits:</p>
<pre>DEFAULT STATE BEGIN
Prim1 = pos | rot
Prim2 = pos | rot
DEFAULT STATE END
</pre>
<p>In version 1.05, this default configuration when no one sits has been renamed this way:</p>
<pre>DEFAULT_NO_AVS STATE BEGIN
Prim1 = pos | rot
Prim2 = pos | rot
DEFAULT_NO_AVS STATE END
</pre>
<p>The auxiliary tool (also updated) shows [SAVE NOAV] as the button to have us record this configuration.</p>
<p>Then, in version 1.05, the default configuration when someone is sitting has this format:</p>
<pre>DEFAULT STATE BEGIN
Prim1 = pos | rot
Prim2 = pos | rot
DEFAULT STATE END
</pre>
<p>and the auxiliary tool shows the [SAVE DEF.] button to have us record this configuration.</p>
<p>The rest is the same: the ANIMATION blocks have exactly the same structure.</p>
<p>Hopefully, this update will make your building time even easier :-)</p>
<p>If you have purchased the first version and have NOT received this update, please contact Auryn Beorn to receive it.</p></div>
<h2 onclick="Layers_ShowHide(getElementById('div-advancedSetup'), LayersList);" href="javascript:DoNothing();" class="clickForInfo">
Advanced Setup</h2><div id="div-advancedSetup" class="info">
<p>
There are a few extra options in the auxiliary tool that are good to know.
[RESTORE D]
This option will restore whichever position you've saved with [SAVE DEF.]
This is useful to go back to our default position and then move prims from there.
</p></div><h3 onclick="Layers_ShowHide(getElementById('div-descriptionFormat'), LayersList);" class="clickForInfoIndent">
Description Format</h3><div id="div-descriptionFormat" class="infoIndent">
<p>
The description format allows for the # character as a separator, so you can use this script in conjunction with other scripts. For example, you could want to have a moving part whose texture changes. You can have both scripts working together as long as you use the # character to separate each description block.
</p></div><h3 onclick="Layers_ShowHide(getElementById('div-notecardConfigurationInDetail'), LayersList);" class="clickForInfoIndent">
Notecard Configuration in Detail</h3><div id="div-notecardConfigurationInDetail" class="infoIndent">
<p>
The notecard format in this script has no extras that need to be detailed.
</p></div><h2 onclick="Layers_ShowHide(getElementById('div-troubleshooting'), LayersList);" class="clickForInfo">
Troubleshooting</h2><div id="div-troubleshooting" class="info">
<p>
<i>Q: When I select an animation, all the prims go crazy, what's happening?</i>
A: Make sure that the root isn't one of the moving parts. If it is, then you have to use a different prim as the root prim. This may require readjusting all your animations.
</p><p>
<i>Q: I save the position and rotation data on the notecard but when I drop the main script, the prims don't move.</i>
A: Make sure that the prims have the description correctly written and it matches the one on the notecard. Check that there aren't any leading or trailing spaces in it.
</p></div><p>
If after having followed the directions and checked the troubleshooting list, you have problems making the script work, please <a href="http://blacktulip-store.blogspot.com/p/customer-support.html">click here for the customer service form</a>.</p></div><!-- class = post -->
Auryn Beornhttp://www.blogger.com/profile/02832014326094809370noreply@blogger.comtag:blogger.com,1999:blog-2947025942912354529.post-88693299798227321652015-07-27T03:00:00.000-07:002015-07-27T07:55:05.696-07:00Script: Unpacker Scripts<h2>[Black Tulip] Script - Unpacker Scripts (Script for Designers)</h2>(c) 2015 Auryn Beorn<br />
<br />
<a href="https://marketplace.secondlife.com/p/Black-Tulip-Script-Unpacker-Scripts/7482150">Script - Unpacker Scripts in Marketplace.</a><br />
<br />
Thank you for having considered this script to enhance the quality of your products. Please read the following instructions carefully, especially the ones explaining which permissions to apply to the scripts for the next owner. Failure to complete this task INVALIDATES the license governing your use of this set of scripts.<br />
<br />
<b>IMPORTANT!</b><br />
Each script contains a check to prevent accidental give-aways. If you haven't set permissions correctly in your inventory, then the scripts will self delete when you try to use them. The best way to ensure you set permissions correctly is by doing it NOW in your inventory.<br />
<br />
<h2>TABLE OF CONTENTS</h2><ul><li><a href="#changePermissions">CHANGE PERMISSIONS FOR NEXT OWNER</a></li>
<li><a href="#aboutMeshAndTextures">ABOUT THE SUPPLIED MESH ITEMS, TEXTURES, AND POSE</a></li>
<li><a href="#giveFolder_Basic">GIVE FOLDER ON TOUCH - BASIC</a></li>
<li><a href="#giveFolder">GIVE FOLDER ON TOUCH</a></li>
<li><a href="#giveFolder_Wear_Basic">GIVE FOLDER ON TOUCH - WEAR AND ANIMATE - BASIC</a></li>
<li><a href="#giveFolder_Wear">GIVE FOLDER ON TOUCH - WEAR AND ANIMATE</a></li>
<li><a href="#giveFolder_HUD">GIVE FOLDER ON TOUCH - HUD VERSION</a></li>
<li><a href="#troubleshooting">TROUBLESHOOTING</a></li>
</ul><br />
<a name="changePermissions"></a><br />
<h2>CHANGE PERMISSIONS FOR NEXT OWNER</h2><br />
<a href="http://blacktulip-scripts.blogspot.com/p/common-parts.html#changePermissions">Check the following section on this page</a>, knowing that each <tt>[Black Tulip] ASSET</tt> refers to the scripts contained in the package as well as the supplied mesh boxes and pose. The textures shouldn't be distributed.<br />
<br />
<b>IMPORTANT:</b> If you include any <i>no copy</i> assets in your package box, the script will not attempt to send them, and so they will remain inside the box. The script will warn the user about this, per no-copy item that it founds. Since you're using an unpacker script, you should be always working with COPY assets for next owner.<br />
<br />
<a name="aboutMeshAndTextures"></a><br />
<h2>ABOUT THE SUPPLIED MESH ITEMS, TEXTURES, AND POSE</h2><br />
In the event that you don't have yet any unpacking box to deliver to your customers, and/or a pose for wearable ones, you can use the included ones.<br />
<br />
<ul><li><tt>[Black Tulip] Holding</tt> is a priority 4 pose that you can use in conjunction with the scripts that work with animations (It's explained after this which ones are those).</li>
<li><tt>[Black Tulip] Unpacker Box</tt> is a mesh box with a face reserved to drop your product vendor. It's textured with the UV Layout, in case you want to create your own textures for it.</li>
<li><tt>[Black Tulip] Unpacker Box - TEXTURED</tt> is the same mesh box, with the included baked texture applied to it.</li>
<li><tt>[Black Tulip] Unpacker Box - Add/Wear - TEXTURED</tt> is again the same mesh box, already positioned and rotated to be used with the unpacker scripts that also pose your avatar and the included <tt>[Black Tulip] Holding</tt> pose.</li>
<li><tt>[Black Tulip] Unpacker Box - UV</tt> is a texture you can download to your computer with the guides to create your own box textures. It's color-coded so you can easily relate which parts of the mesh correspond with which parts of the UV layout texture.</li>
<li><tt>[Black Tulip] Unpacker Box - AO</tt> is the corresponding ambient occlusion map, to add shading if you create your own box textures.</li>
<li><tt>[Black Tulip] Unpacker Box - BAKED</tt> is a baked texture that you can use directly. The <tt>[Black Tulip] Unpacker Box - TEXTURED</tt> and <tt>[Black Tulip] Unpacker Box - Add/Wear - TEXTURED</tt> mesh items have this texture already applied.</li>
</ul><br />
If you've never used/textured mesh objects, you may want to check out the following documentation posts:<br />
<br />
<ul><li><a href="http://blacktulip-store.blogspot.com/2010/09/doc-mesh-using-your-mesh-objects.html">Using your Mesh Objects</a></li>
<li><a href="http://blacktulip-store.blogspot.com/2010/09/doc-mesh-ambient-occlusion-map-uv.html">Ambient Occlusion Map? UV Layout? How to use them</a></li>
</ul><br />
<b>IMPORTANT:</b> The space reserved for your product vendor picture is expecting an 1:1 <a href="http://en.wikipedia.org/wiki/Aspect_ratio_%28image%29">aspect ratio</a> texture. Product ads having a different <a href="http://en.wikipedia.org/wiki/Aspect_ratio_%28image%29">aspect ratio</a> may show distorted.<br />
<br />
<a name="giveFolder_Basic"></a><br />
<h2>GIVE FOLDER ON TOUCH - BASIC</h2><br />
If you simply want a script that will deliver contents in a folder to the owner of the object, use the <tt>[Black Tulip] Unpacker - Give items on touch in folder BASIC</tt> script included in the package. The unpacker script itself isn't delivered in the folder.<br />
<br />
<a name="giveFolder"></a><br />
<h2>GIVE FOLDER ON TOUCH</h2><br />
The <tt>[Black Tulip] Unpacker - Give items on touch in folder</tt> script gives a couple of configuration choices that the <tt>[Black Tulip] Unpacker - Give items on touch in folder BASIC</tt> script doesn't include. It allows us to add hover text indicating that the box is ready to be clicked for unpacking, and that the unpacking operation has been performed once the folder is sent.<br />
<br />
We can decide the text by writing it in the <i>description</i> of the prim with the unpacker script (and the assets to be delivered in a folder) something like this:<br />
<br />
<tt>rdy=Click to unpack#done=Unpacking complete\nEnjoy!</tt><br />
<br />
Notice the <b>#</b> character: it's separating the two fields that the script needs:<br />
<br />
<tt>rdy=Click to unpack<br />
done=Unpacking complete\nEnjoy!</tt><br />
<br />
The <tt>rdy=</tt> part is what tells the script <i>the text you write after, will show as hover text when rezzing the box to unpack</i>. The <tt>done=</tt> is what tells the script <i>the text you write after, will show as hover text when the folder with items has been sent</i>. Note that by writing <tt>\n</tt> we're introducing a carriage return in the hover text: we would use this to separate text in lines.<br />
<br />
Try keeping your hover text concise: <a href="http://wiki.secondlife.com/wiki/Limits#Building">The description field of a prim only allows for a maximum of 127 characters</a>.<br />
<br />
<a name="giveFolder_Wear_Basic"></a><br />
<h2>GIVE FOLDER ON TOUCH - WEAR AND ANIMATE - BASIC</h2><br />
The <tt>[Black Tulip] Unpacker - Play Anim & Give items on touch BASIC</tt> script is meant for attached unpacking boxes that will play a pose/animation while attached. Neither the script nor the configured animation/pose will be sent in the folder delivered to our customer.<br />
<br />
In order to achieve this, we need to type one <i>command</i> in the unpacking box description field. Before seeing what exactly, let's talk about the other feature of this script:<br />
<br />
When setting the unpacking box to be attached, likely we've changed its rotation, so it fits with the pose. But our customers could rez the box anyway. This would leave the box rezzed in a <i>strange rotation</i>, like the picture shows:<br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjnvvDEmKxqGRiouSNeQphK-yhT0pCTvK2mVUYHS8-7gD3Nraou3-AMq1BjX37kcIBfyS33ukqfbfPFKHEr8A6Pg7TFxcsQOkSDK9FrINzHoGmBya6WX84-UfmnGPnL37v8QAuLYjgJJPY/s1600/Unpacker_AddOption_000.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjnvvDEmKxqGRiouSNeQphK-yhT0pCTvK2mVUYHS8-7gD3Nraou3-AMq1BjX37kcIBfyS33ukqfbfPFKHEr8A6Pg7TFxcsQOkSDK9FrINzHoGmBya6WX84-UfmnGPnL37v8QAuLYjgJJPY/s1600/Unpacker_AddOption_000.png" /></a></div><br />
If you would like that the box is rezzed with a correct rotation:<br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhMT4cLI_QMySX1e4DaTZw94WpiAVkiCPoENFGcG7hSsa04OyUOjdiOOYiT-8EXkVFEaigPwaPLwletysnaw9yJONIGz1_rFKC3k9zU26ryZN1UK6MCqZI1iqRNHYev5SF3ymA02AAW_xk/s1600/Unpacker_AddOption_001.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhMT4cLI_QMySX1e4DaTZw94WpiAVkiCPoENFGcG7hSsa04OyUOjdiOOYiT-8EXkVFEaigPwaPLwletysnaw9yJONIGz1_rFKC3k9zU26ryZN1UK6MCqZI1iqRNHYev5SF3ymA02AAW_xk/s1600/Unpacker_AddOption_001.png" /></a></div><br />
you have to supply a certain parameter also in the unpacking box description field. Let's see that now, together with how to indicate which is the animation to use as "hold" pose (Remember: This pose won't be a part of the contents of the unpacked folder.)<br />
<br />
We can write the description of the item as follows:<br />
<br />
<tt>anim=[Black Tulip] Holding#rot=<0,0,180></tt><br />
<br />
As we can see, again the <b>#</b> character is separating fields, so in this case we have:<br />
<br />
<tt>anim=[Black Tulip] Holding<br />
rot=<0,0,180></tt><br />
<br />
The first one is pretty obvious: after the <tt>anim=</tt> part, we write the name of the animation included to pose when wearing the unpacking box. Then after the <tt>rot=</tt> part, we have <b>three</b> numbers between < and > and separated by commas. How do we know which numbers?<br />
<br />
We know which numbers by editing our object, and taking note of the numbers showing under the <i>Rotation</i> edit boxes:<br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhjLlb4sUZyyLlsW135EyZPZXm1sBArTpu_sWxAVPpJ1RN_ajk72kzLz46LT9rouMOs971xJ9Dqe1OX0qravgpSqMHkV9sQfTPrBh2rAPW7t9ThNlfumwNUFkK2TDw4FkOGGK3MjMfxPfA/s1600/Unpacker_AddOption_002.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhjLlb4sUZyyLlsW135EyZPZXm1sBArTpu_sWxAVPpJ1RN_ajk72kzLz46LT9rouMOs971xJ9Dqe1OX0qravgpSqMHkV9sQfTPrBh2rAPW7t9ThNlfumwNUFkK2TDw4FkOGGK3MjMfxPfA/s1600/Unpacker_AddOption_002.png" /></a></div><br />
We must type them in the same XYZ order they show in the <i>Edit</i> window, this way:<br />
<br />
<tt>rot=<X_Value,Y_Value,Z_Value></tt><br />
<br />
<a name="giveFolder_Wear"></a><br />
<h2>GIVE FOLDER ON TOUCH - WEAR AND ANIMATE</h2><br />
The <tt>[Black Tulip] Unpacker - Play Anim & Give items on touch</tt> script gives the same functionality than the <tt></tt> script explained above, plus the <tt>rdy</tt> and <tt>done</tt> parameters explained for the <tt>[Black Tulip] Unpacker - Give items on touch in folder</tt> script, to show hover text. Try keeping the description brief: <a href="http://wiki.secondlife.com/wiki/Limits#Building">the description field of a prim only allows for a maximum of 127 characters</a>.<br />
<br />
<a name="giveFolder_HUD"></a><br />
<h2>GIVE FOLDER ON TOUCH - HUD VERSION</h2><br />
Creating a HUD version is not so different than creating a regular unpacking box. For starters, if you've never created a HUD and don't know how to go about it, <a href="http://auryn-beorn.blogspot.com/2013/12/creator-resource-creating-huds-builders.html">check this tutorial about creating HUDs in SL</a>.<br />
<br />
There's a sample HUD supplied, <i>no transfer</i>, to show how you could create your own: <tt>[Black Tulip] Test HUD to Inspect - Add/Wear</tt>. Knowledge about working with linked sets and what a child prim is, is assumed here. The basic idea is, you will create different prims for the different buttons you want to include:<br />
<br />
<ul><li>In the button that should be your product vendor picture, you include all the items to deliver <b>plus</b> the <tt>[Black Tulip] Unpacker - Give items on touch in folder BASIC</tt> script.</li>
<li>You may have different buttons to give a landmark to your store, a notecard with information... In all those instances of giving a <b>single item</b> upon touch of the button, you will drop that single item (landmark, notecard...) <i>and</i> the <tt>[Black Tulip] Very Simple Single-Item Giver</tt> script (with permissions correctly adjusted; green prims on the sample HUD).</li>
<li>You may also want that other buttons open a website upon touch. In that case, when editing your HUD object <b>inworld</b>, first, in the DESCRIPTION field of the prim, you write the web address, as-is. Again, remember that <a href="http://wiki.secondlife.com/wiki/Limits#Building">the description field of a prim only allows for a maximum of 127 characters</a>. If you have large web addresses, you may consider services like <a href="http://tinyurl.com/">http://tinyurl.com/</a> to reduce it. After this, you drop the <tt>[Black Tulip] Click for Web Address</tt> script in that prim.<br />
<br />
This script will write the website address in local (nearby) chat, and will also show a dialog menu offering to open the web page. If you don't want that the popup shows, simply add <tt>#no-popup</tt> in the prim's description field, after the web address you write. You find the examples to inspect on the purple prims on the sample HUD.</li>
</ul><br />
<a name="troubleshooting"></a><br />
<h2>TROUBLESHOOTING</h2><br />
<b>Q:</b> The hover text showing isn't the one I've specified.<br />
<br />
<i>A: Make sure that you're using the DESCRIPTION field of the prim, not the name field.</i><br />
<br />
<b>Q:</b> I change descriptions on the HUD, but the scripts don't read them.<br />
<br />
<i>A: Make sure that you're changing the description field of those prims when the HUD is rezzed inworld, not attached to your avatar.</i><br />
<br />
<br />
-- Auryn Beorn<br />
Auryn Beornhttp://www.blogger.com/profile/02832014326094809370noreply@blogger.comtag:blogger.com,1999:blog-2947025942912354529.post-87473489927727853992015-05-20T00:02:00.000-07:002015-05-21T01:46:27.862-07:00Script: Washbasin AVsitter Plugin - Basic Edition<h2>[Black Tulip] Washbasin - BASIC - AVsitter Plugin (Script for Designers)</h2>(c) 2015 Auryn Beorn<br />
<br />
<a href="https://marketplace.secondlife.com/p/Black-Tulip-Script-Washbasin-BASIC-AVsitter-Plugin/7221306">Washbasin AVsitter Plugin basic edition script in Marketplace.</a><br />
<br />
Thank you for having considered this script to enhance the quality of your products. Please read the following instructions carefully, especially the ones explaining which permissions to apply to the scripts for the next owner. Failure to complete this task INVALIDATES the license governing your use of this set of scripts. Should you have problems, please <a href="http://blacktulip-store.blogspot.com/p/customer-support.html">fill the scripts assistance form, explaining what you did and what happened</a>, and I'll get back to you.<br />
<br />
<b>IMPORTANT!</b><br />
The script contains a check to prevent accidental give-aways. If you haven't set permissions correctly in your inventory, then the script will self delete when you try to use it. The best way to ensure you set permissions correctly is by doing it NOW in your inventory.<br />
<br />
<h2>TABLE OF CONTENTS</h2><ul><li><a href="#features">FEATURES</a></li>
<li>STEP-BY-STEP SET UP<br />
<ul><li><a href="#changePermissions">CHANGE PERMISSIONS FOR NEXT OWNER</a></li>
<li><a href="#changeDescriptions">CHANGE THE PRIMS' DESCRIPTION</a></li>
<li><a href="#editConfigurationNotecard">EDIT THE CONFIGURATION NOTECARD</a></li>
</ul></li>
<li><a href="#animateTextureOptionsInDetail">ANIMATED TEXTURE OPTIONS, IN DETAIL</a></li>
<li><a href="#configurationNotecardOptionsInDetail">THE CONFIGURATION NOTECARD FORMAT, IN DETAIL</a></li>
<li><a href="#setupModule">THE MAIN SCRIPT, AS A MODULE YOU CAN USE FROM ANOTHER SCRIPT</a></li>
<li><a href="#troubleshooting">TROUBLESHOOTING</a></li>
</ul><br />
<a name="features"></a><br />
<h2>FEATURES</h2><br />
<ul><li>Water functions start/stop when an avatar sits/stands up from the object</li>
<li>You may have several prims with animated textures, each one having its own animation settings</li>
<li>Menu shows as an option under the AVsitter menu</li>
<li>Turn on/off the animated water texture effects when the user is sitting on the object</li>
<li>Define up to nine sounds that the final user can select via menu</li>
<li>Change the sound volume via menu</li>
<li>Go back to AVsitter's menu from the script's menu</li>
<li>Add up to SIX buttons to call other scripts</li>
<li>Menu timeout to reduce lag - no open listeners after timeout (0.001 ms script time when idle)</li>
<li>Final user can change access to owner only/everybody/group</li>
<li>Menu can be integrated into AVsitter & AVsitter 2 (It work under other systems, but please check notes)</li>
</ul><br />
<a name="whatScriptToUse"></a><br />
<h2>STEP-BY-STEP SET UP: WHAT SCRIPT TO USE?</h2><br />
There is one copy/no modify/transfer script contained in your folder, that will work together with any AVsitter system that you may have installed:<br />
<br />
<pre>[Black Tulip] Washbasin - BASIC - AVsitter Plugin</pre><br />
(The other script is just a sample to try out a feature - nothing that you would eventually use in a finished product.)<br />
<br />
<a name="changePermissions"></a><br />
<h2>SETUP: CHANGE PERMISSIONS FOR NEXT OWNER</h2><br />
<a href="http://blacktulip-scripts.blogspot.com/p/common-parts.html#changePermissions">Check the following section on this page</a>, knowing that each <tt>[Black Tulip] ASSET</tt> refers to the following script:<br />
<br />
<pre>[Black Tulip] Washbasin - BASIC - AVsitter Plugin</pre><br />
<a name="changeDescriptions"></a><br />
<h2>STEP-BY-STEP SETUP: CHANGE THE PRIMS' DESCRIPTION</h2><br />
There are a few sample objects ready to help understand the stages to setup our object. Let's begin by rezzing the <tt>[Black Tulip] Washbasin - UNSCRIPTED SAMPLE</tt> object, and inspect it. It's made of two prims, their names being:<br />
<br />
<pre>[Black Tulip] Washbasin - UNSCRIPTED SAMPLE
Cylinder for flowing water</pre><br />
The first prim listed is the root (a mesh washbasin), and the second listed prim is a regular SL-Cylinder, with some taper.<br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEir1LM9pH7RxUxqIaPW9I7ITWo5IRxySQo4KYteJ9rdCTjnr6aSpKsDXyROwkCVD5PPKEWERrk8em-dizi3XnROocLPKPtjJpPpd27T5V8zg_0cJcG-kwd2ZZREJZtRhagp6dMUAOxgZ4E/s1600/Washbasin_BASIC_000.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEir1LM9pH7RxUxqIaPW9I7ITWo5IRxySQo4KYteJ9rdCTjnr6aSpKsDXyROwkCVD5PPKEWERrk8em-dizi3XnROocLPKPtjJpPpd27T5V8zg_0cJcG-kwd2ZZREJZtRhagp6dMUAOxgZ4E/s640/Washbasin_BASIC_000.png" /></a></div><br />
There are two prims because the animated water effect will consist in static water on the sink, plus the water falling from the faucet. We cannot have two different animated water effects in the same prim, so we need the secondary prim, the cylinder, for this.<br />
<br />
For now, we'll just change the descriptions of the prims to something we'll say here. Once you've completed setting up the sample, please check the <a href="#animateTextureOptionsInDetail">ANIMATED TEXTURE OPTIONS, IN DETAIL</a> section, for details on the descriptions format.<br />
<br />
Change the description of the root prim to:<br />
<br />
<b><tt>water;3;4;4;10;2;0.6</tt></b><br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgxngrxGRXa62LyPm05vqsZlwercDTpVXQ10lN_0U8f8oViTwGChlJJG0cC39tvzslku9YcfpfSldlm-JSXVrzX3KYBt2F-2k1FtKFoyNroPTSyT3aJldj794tisWPtUbSD9FcUMI-EtV4/s1600/Washbasin_BASIC_001.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgxngrxGRXa62LyPm05vqsZlwercDTpVXQ10lN_0U8f8oViTwGChlJJG0cC39tvzslku9YcfpfSldlm-JSXVrzX3KYBt2F-2k1FtKFoyNroPTSyT3aJldj794tisWPtUbSD9FcUMI-EtV4/s640/Washbasin_BASIC_001.png" /></a></div><br />
and change the description of the cylinder prim to:<br />
<br />
<b><tt>water;19;0;0;0.25;1;0.4</tt></b><br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEipF1q0KpU28DnWRfby6dEqXuZX4lYLVNP8v9aTCQJ8-rM1aLqDE7cvRpLfhoRmAtgeC9gK8Swen-d8Fxy_71xB8dy_MPZxVxHRFAVbK0th8iFvGSwIj7EWKsoHUGLVIs35RnXM1yl-wnM/s1600/Washbasin_BASIC_002.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEipF1q0KpU28DnWRfby6dEqXuZX4lYLVNP8v9aTCQJ8-rM1aLqDE7cvRpLfhoRmAtgeC9gK8Swen-d8Fxy_71xB8dy_MPZxVxHRFAVbK0th8iFvGSwIj7EWKsoHUGLVIs35RnXM1yl-wnM/s640/Washbasin_BASIC_002.png" /></a></div><br />
Got them?<br />
<br />
Perfect. Now you can add AVsitter and some animations, and the following line in the AVpos notecard:<br />
<br />
<b><tt>BUTTON [WASHBASIN]|-28640987</tt></b><br />
<br />
Or you can rez the next sample object, <tt>[Black Tulip] Washbasin - UNSCRIPTED SAMPLE/AVsitter in</tt>, which already has AVsitter installed, with a couple of sample poses and the AVpos notecard. We will continue by using this object.<br />
<br />
<a name="editConfigurationNotecard"></a><br />
<h2>STEP-BY-STEP SETUP: EDIT THE CONFIGURATION NOTECARD</h2><br />
Apart than turning water on/off, the script also allows to select one sound to play among several. The first one defined in the configuration notecard will be the sound to be played when the script resets. After that, final users can change this from the menu.<br />
<br />
All this means that you have to define <i>somewhere</i> which sound options exist. We do this in the <tt>[Black Tulip] Washbasin - BASIC - AVsitter Plugin ~CFG~</tt> notecard. Open the notecard included with your package, which should look like this as you open it:<br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEglCSxVK8yRR_dVtedJQ6QOg_VckKRt81t7YkjRE6vF2cDw5AIiVv3_Cq_A-pZQJjtHGoJ8tz-_Yk-0eXZxesi6kBvQVgFKLBf9puWYLEVXbAS-HaklWLRYFgRo6zhkLCbkB5Oj3-Kxin8/s1600/Washbasin_BASIC_003.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEglCSxVK8yRR_dVtedJQ6QOg_VckKRt81t7YkjRE6vF2cDw5AIiVv3_Cq_A-pZQJjtHGoJ8tz-_Yk-0eXZxesi6kBvQVgFKLBf9puWYLEVXbAS-HaklWLRYFgRo6zhkLCbkB5Oj3-Kxin8/s640/Washbasin_BASIC_003.png" /></a></div><br />
(There's more text when you scroll down, but the one showing is relevant.)<br />
<br />
Pay attention to these lines:<br />
<br />
<pre>sound = Water 1 | [Black Tulip] Water Sounds - Sink #04
sound = Water 2 | [Black Tulip] Water Sounds - Sink #03
sound = Water 3 | [Black Tulip] Water Sounds - Flow #01
sound = Water 4 | [Black Tulip] Water Sounds - Flow #03
sound = Water 5 | [Black Tulip] Water Sounds - Flow #05
sound = Water 6 | [Black Tulip] Water Sounds - Flow #06</pre><br />
These lines define the buttons showing under the <i>Sounds</i> menu of the script. First, the name to show on the menu button, then, the name of the soundclip contained in the same prim where the script is. The exact format, together with all the options that can be set up in the notecard (like the extra buttons), is explained in the <a href="#configurationNotecardOptionsInDetail">THE CONFIGURATION NOTECARD FORMAT, IN DETAIL</a> section.<br />
<br />
Once we have the <tt>[Black Tulip] Washbasin - BASIC - AVsitter Plugin ~CFG~</tt> configuration notecard ready, we would drop it in the same prim where AVsitter is, then the soundclips (with permissions correctly adjusted) if we haven't done yet, and finally, the <tt>[Black Tulip] Washbasin - BASIC - AVsitter Plugin</tt> script.<br />
<br />
There's a finished <tt>[Black Tulip] Washbasin - SCRIPTED</tt> sample object included, with all the configuration completed. You may want to check out this one if something along this process came out differently to you.<br />
<br />
In the next sections, we discuss more details and advanced options, but with this step-by-step guide, you should have the basics to start setting up your own objects, now.<br />
<br />
<a name="animateTextureOptionsInDetail"></a><br />
<h2>SETUP: ANIMATED TEXTURE OPTIONS, IN DETAIL</h2><br />
<br />
<br />
<br />
<a name="configurationNotecardOptionsInDetail"></a><br />
<h2>SETUP: THE CONFIGURATION NOTECARD FORMAT, IN DETAIL</h2><br />
<br />
<br />
<br />
<a name="setupModule"></a><br />
<h2>SETUP: THE MAIN SCRIPT, AS A MODULE YOU CAN USE FROM ANOTHER SCRIPT</h2><br />
Although this script is designed with AVsitter in mind, because the <tt>[*To AVSit*]</tt> button will open up the AVsitter menu, the truth is that you can incorporate this script in <i>any</i> system that allows for linked messages. The <tt>[*To AVSit*]</tt> button is very specific, but you can open this menu from other scripts, like MLP.<br />
<br />
<a href="http://blacktulip-scripts.blogspot.com/p/common-parts.html#setupModule">Check the following section on this page</a>, knowing that:<br />
<br />
<tt>[Black Tulip] ***Script Name*** [MODULE]</tt> refers to <tt>[Black Tulip] Washbasin - BASIC - AVsitter Plugin</tt><br />
<tt>CODE_NUMBER</tt> is <tt>-28640987</tt><br />
<tt>NAME_ON_MENU</tt> is <tt>Washbasin</tt><br />
<br />
AVSitter line looks like: <tt>BUTTON Washbasin|-28640987</tt><br />
AVSitter 2 line looks like: <tt>ADJUST Washbasin|-28640987</tt><br />
MLP line looks like: <tt>LINKMSG Washbasin | 1,-4,-28640987,fromMLP</tt><br />
<br />
You have example AVpos and .MENUITEMS notecards with your purchase.<br />
<br />
<a name="troubleshooting"></a><br />
<h2>TROUBLESHOOTING</h2><br />
<b>Q:</b> I click the particle/animated texture options on the menu, but no visible outcome shows. What's going wrong?<br />
<br />
<i>A: Most likely, there's not a particles source/animated textures source defined in the object. Double-check the DESCRIPTION of the prim you expect to be a SL light point/particles source/animated texture.</i><br />
<br />
<b>Q:</b> Particles are still not showing. What happens?<br />
<br />
<i>A: Check that you haven't deactivated particles visibility in your viewer.</i><br />
<br />
<b>Q:</b> I hear no sound when I change the volume from the menu. What could be going wrong?<br />
<br />
<i>A: Make sure that there's a sound clip on the <i>Content</i> tab of the prim with the script.</i><br />
<br />
<br />
For any other problem not described here, please <a href="http://blacktulip-store.blogspot.com/p/customer-support.html">give a complete description of your issue in the following online form</a>.<br />
<br />
I'll get back to you after I have read your report and replicated your issue inworld, according to your description of it. Please, be detailed.<br />
<br />
-- Auryn BeornAuryn Beornhttp://www.blogger.com/profile/02832014326094809370noreply@blogger.comtag:blogger.com,1999:blog-2947025942912354529.post-79671695420692129432015-05-20T00:00:00.000-07:002015-05-21T01:46:06.693-07:00Script: Washbasin AVsitter Plugin - Full Edition<h2>[Black Tulip] Washbasin - FULL - AVsitter Plugin (Script for Designers)</h2>(c) 2015 Auryn Beorn<br />
<br />
<a href="https://marketplace.secondlife.com/p/Black-Tulip-Script-Washbasin-FULL-AVsitter-Plugin/7221369">Washbasin AVsitter Plugin full edition script in Marketplace.</a><br />
<br />
Thank you for having considered this script to enhance the quality of your products. Please read the following instructions carefully, especially the ones explaining which permissions to apply to the scripts for the next owner. Failure to complete this task INVALIDATES the license governing your use of this set of scripts. Should you have problems, please <a href="http://blacktulip-store.blogspot.com/p/customer-support.html">fill the scripts assistance form, explaining what you did and what happened</a>, and I'll get back to you.<br />
<br />
<b>IMPORTANT!</b><br />
The script contains a check to prevent accidental give-aways. If you haven't set permissions correctly in your inventory, then the script will self delete when you try to use it. The best way to ensure you set permissions correctly is by doing it NOW in your inventory.<br />
<br />
<h2>TABLE OF CONTENTS</h2><ul><li><a href="#features">FEATURES</a></li>
<li>STEP-BY-STEP SET UP<br />
<ul><li><a href="#changePermissions">CHANGE PERMISSIONS FOR NEXT OWNER</a></li>
<li><a href="#changeDescriptions">CHANGE THE PRIMS' DESCRIPTION</a></li>
<li><a href="#editConfigurationNotecard">EDIT THE CONFIGURATION NOTECARD</a></li>
</ul></li>
<li><a href="#animateTextureOptionsInDetail">ANIMATED TEXTURE OPTIONS, IN DETAIL</a></li>
<li><a href="#configurationNotecardOptionsInDetail">THE CONFIGURATION NOTECARD FORMAT, IN DETAIL</a></li>
<li><a href="#setupModule">THE MAIN SCRIPT, AS A MODULE YOU CAN USE FROM ANOTHER SCRIPT</a></li>
<li><a href="#troubleshooting">TROUBLESHOOTING</a></li>
</ul><br />
<a name="features"></a><br />
<h2>FEATURES</h2><br />
<ul><li>Water functions start/stop when an avatar sits/stands up from the object</li>
<li>You may have several prims with animated textures, each one having its own animation settings: There are two groups, for the script. Still water, and flowing water. The relevance is explained in the setup section.</li>
<li>You may also have several prims with <i>one</i> particles effect: it will be the same effect in all particles prims</li>
<li>Menu shows as an option under the AVsitter menu</li>
<li>Turn on/off the animated water texture, and particle effects when the user is sitting on the object - You can turn them on/off independently</li>
<li>Define up to nine sounds that the final user can select via menu</li>
<li>Change the sound volume via menu</li>
<li>Go back to AVsitter's menu from the script's menu</li>
<li>Add up to THREE buttons to call other scripts</li>
<li>Menu timeout to reduce lag - no open listeners after timeout (0.001 ms script time when idle)</li>
<li>Final user can change access to owner only/everybody/group</li>
<li>Menu can be integrated into AVsitter & AVsitter 2 (It work under other systems, but please check notes)</li>
</ul><br />
<a name="whatScriptToUse"></a><br />
<h2>STEP-BY-STEP SET UP: WHAT SCRIPT TO USE?</h2><br />
There is one copy/no modify/transfer script contained in your folder, that will work together with any AVsitter system that you may have installed:<br />
<br />
<pre>[Black Tulip] Washbasin - FULL - AVsitter Plugin</pre><br />
(The other script is just a sample to try out a feature - nothing that you would eventually use in a finished product.)<br />
<br />
<a name="changePermissions"></a><br />
<h2>SETUP: CHANGE PERMISSIONS FOR NEXT OWNER</h2><br />
<a href="http://blacktulip-scripts.blogspot.com/p/common-parts.html#changePermissions">Check the following section on this page</a>, knowing that each <tt>[Black Tulip] ASSET</tt> refers to the following script:<br />
<br />
<pre>[Black Tulip] Washbasin - FULL - AVsitter Plugin</pre><br />
<a name="changeDescriptions"></a><br />
<h2>STEP-BY-STEP SETUP: CHANGE THE PRIMS' DESCRIPTION</h2><br />
There are a few sample objects ready to help understand the stages to setup our object. Let's begin by rezzing the <tt>[Black Tulip] Washbasin - UNSCRIPTED SAMPLE</tt> object, and inspect it. It's made of three prims, their names being:<br />
<br />
<pre>[Black Tulip] Washbasin - UNSCRIPTED SAMPLE
Cylinder for flowing water
box for particles splash</pre><br />
The first prim listed is the root (a mesh washbasin), the second listed prim is a regular SL-Cylinder, with some taper, and the third prim is just a box, for the particles effect.<br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiFTkYTmM97fvMh96CIAzDxdQ187dcAlx4F4GoSmbTs1ktLXdwORmE1StyPKq5zgjIlmsizwTxDxXtbVq13r_7dw7p4VjKgIvjfjgmoWOdiCKX0xMfr9xkZT2G-7hIGQwyO4TvYcF5h7JY/s1600/Washbasin_FULL_000.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiFTkYTmM97fvMh96CIAzDxdQ187dcAlx4F4GoSmbTs1ktLXdwORmE1StyPKq5zgjIlmsizwTxDxXtbVq13r_7dw7p4VjKgIvjfjgmoWOdiCKX0xMfr9xkZT2G-7hIGQwyO4TvYcF5h7JY/s640/Washbasin_FULL_000.png" /></a></div><br />
There are three prims because the animated water effect will consist in static water on the sink, plus the water falling from the faucet, and then we have the particles prim. We cannot have two different animated water effects in the same prim, so we need the secondary prim, the cylinder, for this. We could use the slice end property of the cylinders to get a cylinder that serves us both as particles source and prim for animated texture: think about <i>how</i> as a building exercise. To keep things simple, we're using a separate prim for particles.<br />
<br />
For now, we'll just change the descriptions of the prims to something we'll say here. Once you've completed setting up the sample, please check the <a href="#animateTextureOptionsInDetail">ANIMATED TEXTURE OPTIONS, IN DETAIL</a> section, for details on the descriptions format.<br />
<br />
Change the description of the root prim to:<br />
<br />
<b><tt>wStill;3;4;4;10;2;0.6</tt></b><br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiARtKs0mk4xAVv6HATqxWZEtxCLPpd1_g3i-bZBfLWIWg_GzYJkkxrTyJS7l1seC7qBBrjexWm4s6wp4-rkyclrpHGdBYXxoiCWh0NZ0x5-f3m3FZIOEAyYbRvHjzqWc_UNT5A5UBv1OE/s1600/Washbasin_FULL_001.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiARtKs0mk4xAVv6HATqxWZEtxCLPpd1_g3i-bZBfLWIWg_GzYJkkxrTyJS7l1seC7qBBrjexWm4s6wp4-rkyclrpHGdBYXxoiCWh0NZ0x5-f3m3FZIOEAyYbRvHjzqWc_UNT5A5UBv1OE/s640/Washbasin_FULL_001.png" /></a></div><br />
the description of the cylinder prim to:<br />
<br />
<b><tt>wFlow;19;0;0;0.25;1;0.4</tt></b><br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhL2ad0WQIkMp_4NPapW41_S1gtlYc_LjI2bW_KbowbwwHGwlWACXyRiaC-YJWVBfV-24qM-SOwQeZ9H7JS32FjKqItze-Z7myPeFJpmy1UZo6xSvJ12kacVExhF_pq-S9_A5yj3Dt6OHg/s1600/Washbasin_FULL_002.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhL2ad0WQIkMp_4NPapW41_S1gtlYc_LjI2bW_KbowbwwHGwlWACXyRiaC-YJWVBfV-24qM-SOwQeZ9H7JS32FjKqItze-Z7myPeFJpmy1UZo6xSvJ12kacVExhF_pq-S9_A5yj3Dt6OHg/s640/Washbasin_FULL_002.png" /></a></div><br />
and the description of the particles prim to:<br />
<br />
<b><tt>particles</tt></b><br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhoRb-e5q8BNQWISRXmJhXH7dp3ENrYQjDQ-qwEPLjKgkFjvfaCI4ekvei6tbEIE_DekwXnsU0MHOe4VOLd-DyKMPOwxKn4ZMIZ7kji9Gz0y5YFqKT8nsMAvs0uwVMcD_G9fQpdQS751zw/s1600/Washbasin_FULL_003.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhoRb-e5q8BNQWISRXmJhXH7dp3ENrYQjDQ-qwEPLjKgkFjvfaCI4ekvei6tbEIE_DekwXnsU0MHOe4VOLd-DyKMPOwxKn4ZMIZ7kji9Gz0y5YFqKT8nsMAvs0uwVMcD_G9fQpdQS751zw/s640/Washbasin_FULL_003.png" /></a></div><br />
Got them?<br />
<br />
Perfect. Now you can add AVsitter and some animations, and the following line in the AVpos notecard:<br />
<br />
<b><tt>BUTTON [WASHBASIN]|-28640987</tt></b><br />
<br />
Or you can rez the next sample object, <tt>[Black Tulip] Washbasin FULL - UNSCRIPTED SAMPLE/AVsitter in</tt>, which already has AVsitter installed, with a couple of sample poses and the AVpos notecard. We will continue by using this object.<br />
<br />
<a name="editConfigurationNotecard"></a><br />
<h2>STEP-BY-STEP SETUP: EDIT THE CONFIGURATION NOTECARD</h2><br />
Apart than turning water and particles on/off, the script also allows to select one sound to play among several. The first one defined in the configuration notecard will be the sound to be played when the script resets. After that, final users can change this from the menu.<br />
<br />
All this means that you have to define <i>somewhere</i> which sound options exist. We do this in the <tt>[Black Tulip] Washbasin - FULL - AVsitter Plugin ~CFG~</tt> notecard. Open the notecard included with your package, which should look like this as you open it:<br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjYmu4wQng00hs1wUHko9xCMCihKhJP9RCUrHMzSdZfB1D68H5CEZD8ssTYAWw75HLHCtBgg9B9AKdadpxj3eshfxUrcduP9n1TS0aUkQlwrPjQ1XNsU2AqNbXcv6Gawfc8158QmtLjxVk/s1600/Washbasin_FULL_004.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjYmu4wQng00hs1wUHko9xCMCihKhJP9RCUrHMzSdZfB1D68H5CEZD8ssTYAWw75HLHCtBgg9B9AKdadpxj3eshfxUrcduP9n1TS0aUkQlwrPjQ1XNsU2AqNbXcv6Gawfc8158QmtLjxVk/s640/Washbasin_FULL_004.png" /></a></div><br />
(There's more text when you scroll down, but the one showing is relevant.)<br />
<br />
Pay attention to these lines:<br />
<br />
<pre>sound = Water 1 | [Black Tulip] Water Sounds - Sink #04
sound = Water 2 | [Black Tulip] Water Sounds - Sink #03
sound = Water 3 | [Black Tulip] Water Sounds - Flow #01
sound = Water 4 | [Black Tulip] Water Sounds - Flow #03
sound = Water 5 | [Black Tulip] Water Sounds - Flow #05
sound = Water 6 | [Black Tulip] Water Sounds - Flow #06</pre><br />
These lines define the buttons showing under the <i>Sounds</i> menu of the script. First, the name to show on the menu button, then, the name of the soundclip contained in the same prim where the script is. The exact format, together with all the options that can be set up in the notecard (like the extra buttons), is explained in the <a href="#configurationNotecardOptionsInDetail">THE CONFIGURATION NOTECARD FORMAT, IN DETAIL</a> section.<br />
<br />
Below that, you will find all the particles configuration. Ignore it for now: it is also explained in the <a href="#configurationNotecardOptionsInDetail">THE CONFIGURATION NOTECARD FORMAT, IN DETAIL</a> section.<br />
<br />
Once we have the <tt>[Black Tulip] Washbasin - FULL - AVsitter Plugin ~CFG~</tt> configuration notecard ready, we would drop it in the same prim where AVsitter is, then the soundclips (with permissions correctly adjusted) if we haven't done yet, and finally, the <tt>[Black Tulip] Washbasin - FULL - AVsitter Plugin</tt> script.<br />
<br />
There's a finished <tt>[Black Tulip] Washbasin FULL - SCRIPTED</tt> sample object included, with all the configuration completed. You may want to check out this one if something along this process came out differently to you.<br />
<br />
In the next sections, we discuss more details and advanced options, but with this step-by-step guide, you should have the basics to start setting up your own objects, now.<br />
<br />
<a name="animateTextureOptionsInDetail"></a><br />
<h2>SETUP: ANIMATED TEXTURE OPTIONS, IN DETAIL</h2><br />
<br />
<br />
<br />
<a name="configurationNotecardOptionsInDetail"></a><br />
<h2>SETUP: THE CONFIGURATION NOTECARD FORMAT, IN DETAIL</h2><br />
<br />
<br />
<br />
<a name="setupModule"></a><br />
<h2>SETUP: THE MAIN SCRIPT, AS A MODULE YOU CAN USE FROM ANOTHER SCRIPT</h2><br />
Although this script is designed with AVsitter in mind, because the <tt>[*To AVSit*]</tt> button will open up the AVsitter menu, the truth is that you can incorporate this script in <i>any</i> system that allows for linked messages. The <tt>[*To AVSit*]</tt> button is very specific, but you can open this menu from other scripts, like MLP.<br />
<br />
<a href="http://blacktulip-scripts.blogspot.com/p/common-parts.html#setupModule">Check the following section on this page</a>, knowing that:<br />
<br />
<tt>[Black Tulip] ***Script Name*** [MODULE]</tt> refers to <tt>[Black Tulip] Washbasin - FULL - AVsitter Plugin</tt><br />
<tt>CODE_NUMBER</tt> is <tt>-28640987</tt><br />
<tt>NAME_ON_MENU</tt> is <tt>Washbasin</tt><br />
<br />
AVSitter line looks like: <tt>BUTTON Washbasin|-28640987</tt><br />
AVSitter 2 line looks like: <tt>ADJUST Washbasin|-28640987</tt><br />
MLP line looks like: <tt>LINKMSG Washbasin | 1,-4,-28640987,fromMLP</tt><br />
<br />
You have example AVpos and .MENUITEMS notecards with your purchase.<br />
<br />
<a name="troubleshooting"></a><br />
<h2>TROUBLESHOOTING</h2><br />
<b>Q:</b> I click the particle/animated texture options on the menu, but no visible outcome shows. What's going wrong?<br />
<br />
<i>A: Most likely, there's not a particles source/animated textures source defined in the object. Double-check the DESCRIPTION of the prim you expect to be a SL light point/particles source/animated texture.</i><br />
<br />
<b>Q:</b> Particles are still not showing. What happens?<br />
<br />
<i>A: Check that you haven't deactivated particles visibility in your viewer.</i><br />
<br />
<b>Q:</b> I hear no sound when I change the volume from the menu. What could be going wrong?<br />
<br />
<i>A: Make sure that there's a sound clip on the <i>Content</i> tab of the prim with the script.</i><br />
<br />
<br />
For any other problem not described here, please <a href="http://blacktulip-store.blogspot.com/p/customer-support.html">give a complete description of your issue in the following online form</a>.<br />
<br />
I'll get back to you after I have read your report and replicated your issue inworld, according to your description of it. Please, be detailed.<br />
<br />
-- Auryn BeornAuryn Beornhttp://www.blogger.com/profile/02832014326094809370noreply@blogger.comtag:blogger.com,1999:blog-2947025942912354529.post-7510779792843502912015-02-15T05:29:00.003-08:002020-10-22T02:24:43.247-07:00Script: Theme Texture Change - Materials & Basic<h2>[Black Tulip] Theme Texture Change<br />
&<br />
[Black Tulip] Theme Texture Change - Materials<br />
(Scripts for Designers)</h2>(c) 2015 Auryn Beorn<br />
<br />
<ul><li><a href="https://marketplace.secondlife.com/p/Black-Tulip-Script-Theme-Texture-Change/6890515">Theme Texture Change script in Marketplace.</a></li>
<li><a href="https://marketplace.secondlife.com/p/Black-Tulip-Script-Theme-Texture-Change-Materials/6890527">Theme Texture Change - Materials script in Marketplace.</a></li>
</ul><br />
Thank you for having considered this script to enhance the quality of your products. Please read the following instructions carefully, especially the ones explaining which permissions to apply to the scripts for the next owner. Failure to complete this task INVALIDATES the license governing your use of this set of scripts. Should you have problems, please <a href="http://blacktulip-store.blogspot.com/2013/06/script-assistance-form.html">fill the scripts assistance form, explaining what you did and what happened</a>, and I'll get back to you.<br />
<br />
<b>IMPORTANT!</b><br />
The script contains a check to prevent accidental give-aways. If you haven't set permissions correctly in your inventory, then the script will self delete when you try to use it. The best way to ensure you set permissions correctly is by doing it NOW in your inventory.<br />
<br />
Because the materials and non-materials version of this script are so similar to setup, we'll document both in this page, referring to differences when they exist.<br />
<br />
<h2>TABLE OF CONTENTS</h2><ul><li><a href="#features">FEATURES</a></li>
<li>SET UP<br />
<ul><li><a href="#whatScriptToUse">WHAT SCRIPT TO USE?</a></li>
<li><a href="#changePermissions">CHANGE PERMISSIONS FOR NEXT OWNER</a></li>
<li><a href="#creatingThemes">CREATING TEXTURE THEMES</a></li>
<li><a href="#preparingFinishedObject">PREPARING OUR FINISHED OBJECT</a></li>
</ul></li>
<li><a href="#optionsInDetail">TEXTURE CHANGE OPTIONS, IN DETAIL</a></li>
<li><a href="#setupModule">THE MAIN SCRIPT, AS A MODULE YOU CAN USE FROM ANOTHER SCRIPT</a></li>
<li><a href="#troubleshooting">TROUBLESHOOTING</a></li>
</ul><br />
<a name="features"></a><br />
<h2>FEATURES</h2><br />
<ul><li>Define as many texture themes as you need, grouped in the categories you need. They are stored in notecards, but UUIDs do not show in the notecards.</li>
<li>Menu timeout to reduce lag - no open listeners after timeout (0.001 ms script time when idle)</li>
<li>Final user can change access to owner only/everybody/group</li>
<li>Menu can be integrated into tools such as MLPv2, AVsitter... (AVsitter version 2 works too!)</li>
</ul><br />
<a name="whatScriptToUse"></a><br />
<h2>SET UP: WHAT SCRIPT TO USE?</h2><br />
There are two scripts contained in your folder:<br />
<br />
Materials version:<br />
<br />
<pre>[Black Tulip] Theme Texture Change - Materials
[Black Tulip] Theme Texture Change - Materials [MODULE]</pre><br />
Non-Materials version:<br />
<br />
<pre>[Black Tulip] Theme Texture Change
[Black Tulip] Theme Texture Change [MODULE]</pre><br />
We need to use ONLY ONE of them in a given product.<br />
<br />
Which one? How to choose?<br />
<br />
The <tt><b>[MODULE]</b></tt> version, as explained in the <a href="#setupModule">THE MAIN SCRIPT, AS A MODULE YOU CAN USE FROM ANOTHER SCRIPT</a> section, will allow you to use this script integrated with other scripts that allow sending linked messages, such as the Multi Love Pose (MLP) or AVSitter for multiavatar, multianimation devices.<br />
<br />
So, depending on what we need, we'll use the following script as main one:<br />
<br />
Normal use - We want the menu to show <b>when the object is clicked</b>:<br />
<tt>[Black Tulip] Theme Texture Change - Materials</tt> (Materials version)<br />
<tt>[Black Tulip] Theme Texture Change</tt> (Non materials version)<br />
<br />
The menu should show up <b>after clicking a button from another script</b>, like MLP, AVSitter:<br />
<tt>[Black Tulip] Theme Texture Change - Materials [MODULE]</tt> (Materials version)<br />
<tt>[Black Tulip] Theme Texture Change [MODULE]</tt> (Non materials version)<br />
<br />
Once we've chosen the right main script, we have to set some descriptions in the primitives of the object, following the instructions below.<br />
<br />
<a name="changePermissions"></a><br />
<h2>SETUP: CHANGE PERMISSIONS FOR NEXT OWNER</h2><br />
<a href="http://blacktulip-scripts.blogspot.com/p/common-parts.html#changePermissions">Check the following section on this page</a>, knowing that each <tt>[Black Tulip] ASSET</tt> refers to the following scripts:<br />
<br />
Materials version:<br />
<br />
<pre>[Black Tulip] Theme Texture Change - Materials
[Black Tulip] Theme Texture Change - Materials [MODULE]</pre><br />
Non-Materials version:<br />
<br />
<pre>[Black Tulip] Theme Texture Change
[Black Tulip] Theme Texture Change [MODULE]</pre><br />
<a name="creatingThemes"></a><br />
<h2>SETUP: CREATING TEXTURE THEMES</h2><br />
You will need a full permissions object for this. That's why no sample has been included. Rez your full permissions object (permissions for next owner <i>can</i> and <i>should</i> be different!) If it looks like plywood at this moment, that is okay. We will make the screenshots starting with a plywood object too :-)<br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi7OkrUGd9-YsblatiW-NKdRN9PaDZR1lyVUJh0fcoOSXT4eCXPYSo9CgY8CGROVsqdFd-4fvV-6i1d56apv9NdZn8mXT-RnoI_I9G1miquW6aNbwDXc-nxoVbUQwMub03cWh5zS6mDRQY/s1600/TextureChange_Doc_000.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi7OkrUGd9-YsblatiW-NKdRN9PaDZR1lyVUJh0fcoOSXT4eCXPYSo9CgY8CGROVsqdFd-4fvV-6i1d56apv9NdZn8mXT-RnoI_I9G1miquW6aNbwDXc-nxoVbUQwMub03cWh5zS6mDRQY/s640/TextureChange_Doc_000.png" /></a></div><br />
Your object may be just one prim, or several linked prims. It matters not. This does matter, though: those prims you want to be affected by the texture change routine... Change their <i>description</i>.<br />
<br />
How should we change the description?<br />
<br />
Let's look at the example object to get the first idea:<br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhdPq8ZnB4i3hmRb5wNaF3xpH8rvM5C05ishu3ibe5K850GhudR69InmWBVSbU7juR7v3veHspev7fDdVzGMrIA9ZS582mQIRwg9U1IyI4VjDHRWAzQ3rMbf5WvMgz4WDsT9qSAdITD-cA/s1600/TextureChange_Doc_001.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhdPq8ZnB4i3hmRb5wNaF3xpH8rvM5C05ishu3ibe5K850GhudR69InmWBVSbU7juR7v3veHspev7fDdVzGMrIA9ZS582mQIRwg9U1IyI4VjDHRWAzQ3rMbf5WvMgz4WDsT9qSAdITD-cA/s640/TextureChange_Doc_001.png" /></a></div><br />
Pay attention to the description:<br />
<br />
<tt>t;bed</tt><br />
<br />
That is, <b>t;</b> and then, <b>bed</b>. This means, <b>t;</b> indicates that the prim will react to texture changes. We can write the name we wish after that, but it's recommended to keep it short, and not to leave leading or trailing spaces around it. Also, do not repeat texts after <b>t;</b> If one prim has <b>bed</b>, then other prims shouldn't have <b>bed</b> as well.<br />
<br />
<i>(<b>NOTE:</b> Some of my scripts allow for multiple parts in the descriptions, separated by the # character. You can use the texture change script together with them, but the <b>t;</b> part needs to be the first one, always.)</i><br />
<br />
Once all our prims have their description changed, following this simple rule, let's go for the next steps.<br />
<br />
Edit the object, and drop the <tt>[Black Tulip] Theme Creator - Materials - AUXILIARY TOOL</tt> script in it (<tt>[Black Tulip] Theme Creator - AUXILIARY TOOL</tt> for the non-materials version).<br />
<br />
Next, texture your object as you prefer.<br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgxYXxoWAZt7A2L4UzgJSPQjxjjz6a1VVeWjUasip2HVKSjL8hM0xaeoP7zjJ7dbl43Lyu9PPzprlaiUEYMe3xTD1xJX7wk8j1aLuRUh0qoJQphX9PX4ia5AZLsw3ImL33-Vp_xOQpfQVo/s1600/TextureChange_Doc_002.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgxYXxoWAZt7A2L4UzgJSPQjxjjz6a1VVeWjUasip2HVKSjL8hM0xaeoP7zjJ7dbl43Lyu9PPzprlaiUEYMe3xTD1xJX7wk8j1aLuRUh0qoJQphX9PX4ia5AZLsw3ImL33-Vp_xOQpfQVo/s640/TextureChange_Doc_002.png" /></a></div><br />
and click for a menu.<br />
<br />
Materials version shows:<br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgyXHDbxNEl5c7Sr0V3R1kEgaG4EzABNjjjmvXgsCu2kimqEDmUMu7YEcsnW5voEAVsAIE9C7RZJWTakLyOEE9NmA8GXu4rYBpFincaJCaCzCO_tLHTMXkp2kfARRLO_ky9uh3NbC8GMno/s1600/TextureChange_Doc_004.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgyXHDbxNEl5c7Sr0V3R1kEgaG4EzABNjjjmvXgsCu2kimqEDmUMu7YEcsnW5voEAVsAIE9C7RZJWTakLyOEE9NmA8GXu4rYBpFincaJCaCzCO_tLHTMXkp2kfARRLO_ky9uh3NbC8GMno/s640/TextureChange_Doc_004.png" /></a></div><br />
And non materials version shows:<br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhny4ZdCmoJbynDitFOmwmhyUY2BmpuPrOttxSSZ3ug_c34Pvkf1qKtmTH1I3fJWHwjursuBHudO6xU2at-44Wj_hx93t59f3Nc29JmEYtcoVy7KIjuEQrR6czabTm5_Gf1zKJsJPi9Dck/s1600/TextureChange_Doc_003.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhny4ZdCmoJbynDitFOmwmhyUY2BmpuPrOttxSSZ3ug_c34Pvkf1qKtmTH1I3fJWHwjursuBHudO6xU2at-44Wj_hx93t59f3Nc29JmEYtcoVy7KIjuEQrR6czabTm5_Gf1zKJsJPi9Dck/s640/TextureChange_Doc_003.png" /></a></div><br />
The difference is that the materials version shows an extra <i>Create NoAlpha</i> button. We'll explain what that extra button is for once we're familiar with the procedure.<br />
<br />
Let's just click <i><b>Create!</b></i> for now.<br />
<br />
This tells <i>things</i> in local (nearby) chat:<br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgL-JKO6D1W2gE9hWxkBcGJ5Ql5m09X4zvKg3NUP4og8I7bdnu5hPsZY0U-6cenj0h0TR5aMrFynUL6VXb-x8OyNQFdE-2Nz0C6ww__Jf5bv_AetI0mcG5KFQH_LaaBYemxgyAWdcsWsdI/s1600/TextureChange_Doc_005.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgL-JKO6D1W2gE9hWxkBcGJ5Ql5m09X4zvKg3NUP4og8I7bdnu5hPsZY0U-6cenj0h0TR5aMrFynUL6VXb-x8OyNQFdE-2Nz0C6ww__Jf5bv_AetI0mcG5KFQH_LaaBYemxgyAWdcsWsdI/s640/TextureChange_Doc_005.png" /></a></div><br />
<i>(The materials version outputs more text than the non materials version, for it adds all the normal, specular and alpha mode information.)</i><br />
<br />
What do we do with those lines?<br />
<br />
We save them in a notecard, as tidy as we can. We can leave the timestamp lines if we want, but the notecard will read faster if we remove them.<br />
<br />
<b>IMPORTANT NOTE: </b> <i>Because of deciding on a different base name for the notecards and forgetting to change that in the script, the local chat says something about a <tt><b>BT_THEME</b></tt> notecard. That's not correct. It should say something about a <tt><b>BT_TEXTURE</b></tt> notecard. Please keep this mind, so you're not confused about the notecard name! The correct base name is <tt><b>BT_TEXTURE</b></tt>. Apologies for this typo.</i><br />
<br />
Notecard with timestamps:<br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg9G9cRsaYnF4gJHHjACCszGB4QAZrowP1f0uvdLcWkrIk-YydfPAyDUJrUbZhew-i2ceEHq_Lqb4DASjkIV7gyolw_dkNlq6bQt1UXA0zIJUtLMBQUaikoWPxkzQOFPlbWH6GOa3hbIk8/s1600/TextureChange_Doc_006.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg9G9cRsaYnF4gJHHjACCszGB4QAZrowP1f0uvdLcWkrIk-YydfPAyDUJrUbZhew-i2ceEHq_Lqb4DASjkIV7gyolw_dkNlq6bQt1UXA0zIJUtLMBQUaikoWPxkzQOFPlbWH6GOa3hbIk8/s640/TextureChange_Doc_006.png" /></a></div><br />
Notecard without timestaps:<br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg8rjDYB7TCzpJ_kN0-9e1TPD2RxejhlLdVlXax1S7iN0ti9-pVrqF1cOeMvVlfzuApZBKQlvtypknKutonnAdelxPtyk3DXK_jNjLq7v00Sud-SEnz5GrIP2fpPHfSftU7BZ8GUqCCwA0/s1600/TextureChange_Doc_007.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg8rjDYB7TCzpJ_kN0-9e1TPD2RxejhlLdVlXax1S7iN0ti9-pVrqF1cOeMvVlfzuApZBKQlvtypknKutonnAdelxPtyk3DXK_jNjLq7v00Sud-SEnz5GrIP2fpPHfSftU7BZ8GUqCCwA0/s640/TextureChange_Doc_007.png" /></a></div><br />
<b>IMPORTANT:</b> If you leave the timestamp line <i>without</i> the opening bracket delimiting the time, the textures will not be read correctly. For example, if instead of this timestamp line:<br />
<br />
<tt>[19:19:19] My Sample Object to test scripts:</tt><br />
<br />
we remove the initial [ character and leave something like this (which can happen easily when copying/pasting from chat):<br />
<br />
<tt>19:19:19] My Sample Object to test scripts:</tt><br />
<br />
or this:<br />
<br />
<tt>My Sample Object to test scripts:</tt><br />
<br />
the textures will not be read correctly.<br />
<br />
If unsure, then remove entirely the timestamp line and leave only the texture data, as shown on the above "Notecard without timestamps" picture.<br />
<br />
<br />
Does this notecard need a specific name? It does. It needs to begin, always, by <tt><b>BT_TEXTURE</b></tt>. Then we write <tt>:</tt> and then, the name we want for our theme. For example, we can call this notecard <tt><b>BT_TEXTURE:Bed 0</b></tt>. That means, <tt><b>Bed 0</b></tt> will show up as a menu option, once we're done.<br />
<br />
If we change our mind about how this theme should look like, all we have to do is change the texturing, and again, click the <i><b>Create!</b></i> button, then replace the notecard content.<br />
<br />
What if we add prims later, but that don't have any <b>t;</b> parts in their description? Then you're good to go. What if those prims have any <b>t;</b> parts in their descriptions? We texture and again click <i><b>Create!</b></i>, then replace the notecard content.<br />
<br />
Let's create another theme, this time, calling the notecard, <b>BT_TEXTURE:Bed 1</b></tt>, for a <tt><b>Bed 1</b></tt> option on the menu.<br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg8_kQpMTNHHQkHc3uVxS2yW4KeVEV2J7LvilwTg8Q4EwaKm4qKG8kkROA1VDjHJpPjQoTpq_cLYL-XofsY_NriCastY_-N92H0SKiYakPZn1v5NZk146AP_961du9GN5KerSdesx3RHU0/s1600/TextureChange_Doc_009.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg8_kQpMTNHHQkHc3uVxS2yW4KeVEV2J7LvilwTg8Q4EwaKm4qKG8kkROA1VDjHJpPjQoTpq_cLYL-XofsY_NriCastY_-N92H0SKiYakPZn1v5NZk146AP_961du9GN5KerSdesx3RHU0/s640/TextureChange_Doc_009.png" /></a></div><br />
With these two theme notecards, we're ready to try out our texture change script! Click one more time for the menu, select <i>[*DELETE*]</i> and then confirm:<br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiMp4i6oqiplfPDh6NgFTf5FKxL0bhZVlzEil3gmiScfzsj4Fywb-yVOHpXVCPWoHAMbXqTqhyphenhyphenVgzdh7Jo1-EPctKwVaIW0GsxqkBarvzmHc_byyU6hRIFlWacgM5yODmW9s76XcABj1dM/s1600/TextureChange_Doc_008.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiMp4i6oqiplfPDh6NgFTf5FKxL0bhZVlzEil3gmiScfzsj4Fywb-yVOHpXVCPWoHAMbXqTqhyphenhyphenVgzdh7Jo1-EPctKwVaIW0GsxqkBarvzmHc_byyU6hRIFlWacgM5yODmW9s76XcABj1dM/s640/TextureChange_Doc_008.png" /></a></div><br />
The object is now ready for the theme texture change script.<br />
<br />
<a name="preparingFinishedObject"></a><br />
<h2>PREPARING OUR FINISHED OBJECT</h2><br />
Now that we've deleted the auxiliary script, we begin by editing our object and dropping the theme notecards in it:<br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgParIwyDXhbr0LeduHL9tAxZsDMEaIr4X3P8lRhh3uat-wAdDwSKZRx5_jGEwQFclmSDHGvcHL9ZwXikP0PD7c0ycb3dsXvLT69VOLs7DwP9B690gcbhw0Ax0WLX2S3G5hHpAWpfHxJg8/s1600/TextureChange_Doc_010.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgParIwyDXhbr0LeduHL9tAxZsDMEaIr4X3P8lRhh3uat-wAdDwSKZRx5_jGEwQFclmSDHGvcHL9ZwXikP0PD7c0ycb3dsXvLT69VOLs7DwP9B690gcbhw0Ax0WLX2S3G5hHpAWpfHxJg8/s640/TextureChange_Doc_010.png" /></a></div><br />
Then we add the corresponding script to the object (depending on if Materials version, or not, if [MODULE], or not):<br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjrhmPH95I5yJ2wPKPODBv34eBEQbTl_Noyj8mTs94k82HO6_hm0SQp4JKiF8umv_JnZBBSFpp2cY4oSmCPMJXHNDBY99A0ddgFV9JWq0FxSKEpu0yrXXY41nVCMyiFEHdNGOC7AqYCrI8/s1600/TextureChange_Doc_011.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjrhmPH95I5yJ2wPKPODBv34eBEQbTl_Noyj8mTs94k82HO6_hm0SQp4JKiF8umv_JnZBBSFpp2cY4oSmCPMJXHNDBY99A0ddgFV9JWq0FxSKEpu0yrXXY41nVCMyiFEHdNGOC7AqYCrI8/s640/TextureChange_Doc_011.png" /></a></div><br />
And when we click on the object, there they show: the buttons that will apply the stored texture choices, when clicked.<br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEijtepQ1zwL9fZNFTf8MH0VNFr1j4CKW_cYtRbRcVLHRT96Yb0YrZeEwPmuM2jwLWIsFIIbALFC1bI4-K_zrbIh6VzaE8b4MF6ora4KIbbU-YH5rDWZdo7O1_zwEU9r_n3HG02pVusIPbw/s1600/TextureChange_Doc_012.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEijtepQ1zwL9fZNFTf8MH0VNFr1j4CKW_cYtRbRcVLHRT96Yb0YrZeEwPmuM2jwLWIsFIIbALFC1bI4-K_zrbIh6VzaE8b4MF6ora4KIbbU-YH5rDWZdo7O1_zwEU9r_n3HG02pVusIPbw/s640/TextureChange_Doc_012.png" /></a></div><br />
Easy!<br />
<br />
<b>NOTE:</b> Actually, we can drop the theme texture notecards <i>at any time, without having to reset the script</i>. The script will silently reload the list to rebuild the menus.<br />
<br />
<a name="optionsInDetail"></a><br />
<h2>TEXTURE CHANGE OPTIONS, IN DETAIL</h2><br />
Now that we've seen how easy it is to create themes and have them added, let's explore in detail what else we can do, and how.<br />
<br />
The first thing we're going to learn is how to create submenus of options.<br />
<br />
The allowed notecard names for this script should begin by <b>BT_TEXTURE</b>, then followed by the <b>:</b> character, as we've already seen when creating our first theme notecard. Then we write <i>something</i>, and that something shows up as a menu button.<br />
<br />
For example, we've written:<br />
<br />
<pre>BT_TEXTURE:Bed 0
BT_TEXTURE:Bed 1</pre><br />
and that made for two buttons to show on the main menu: <i>Bed 0</i> and <i>Bed 1</i><br />
<br />
If we're creating more themes for the complete bed, but then we want also themes only for the bed cover, we may want to have these <i>Bed 0</i>, <i>Bed 1</i>, etc... under a <i>Bed</i> submenu. How do we do that?<br />
<br />
Simply renaming the notecards to this:<br />
<br />
<pre>BT_TEXTURE:Bed:Bed 0
BT_TEXTURE:Bed:Bed 1</pre><br />
will make for it.<br />
<br />
Notice how now we have a <i>Bed</i> submenu:<br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi2Q30VuHve9u-acMSg9Hq9_Mlbwwj5p4cJ1UAT33IMby2udzm3fIywC2-Dqa2E5MNxvoEA2ZH5KO51aWlstU4wtPu__CHH8QxEKNJVDmx4QXSWYXbyrnvUYYOJN3tFvpnvs83gslW38Wg/s1600/TextureChange_Doc_013.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi2Q30VuHve9u-acMSg9Hq9_Mlbwwj5p4cJ1UAT33IMby2udzm3fIywC2-Dqa2E5MNxvoEA2ZH5KO51aWlstU4wtPu__CHH8QxEKNJVDmx4QXSWYXbyrnvUYYOJN3tFvpnvs83gslW38Wg/s640/TextureChange_Doc_013.png" /></a></div><br />
and when we click, the <i>Bed 0</i> and <i>Bed 1</i> options show. The menu also tells us that we're inside the <i>Bed</i> submenu:<br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgFWRQkdpz8HWUoYP-bbqO0iHT3ec-jCNadjbEk5uGn6Z65zUifcaexkVaFVNgkXfkjO91Tgbmaz6_BWBB3GVpbcjth8W3-a0gaeheS9Wjc16STRjKWJIDPV28ZFQLH4hafvQ5P-Cy0Ntw/s1600/TextureChange_Doc_014.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgFWRQkdpz8HWUoYP-bbqO0iHT3ec-jCNadjbEk5uGn6Z65zUifcaexkVaFVNgkXfkjO91Tgbmaz6_BWBB3GVpbcjth8W3-a0gaeheS9Wjc16STRjKWJIDPV28ZFQLH4hafvQ5P-Cy0Ntw/s640/TextureChange_Doc_014.png" /></a></div><br />
In order to give clues to our users, as to whether they will be applying a final texture, or will be entering a submenu, we can rename the notecards this way:<br />
<br />
<pre>BT_TEXTURE:Bed *:Bed 0
BT_TEXTURE:Bed *:Bed 1</pre><br />
and have the buttons show this way (I've added two more theme notecards to show the difference):<br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjNbUxYTa6rbkjLZHU6xAsNw3LZoJVcHNo8YoEQ3CyqxlP-l50fMESDYedHwk9F9LDiT7Zzoks7hDzz-iKCpySMJdiFlZBBvWnZjXvVPZ8lCDpMhYJUUwH6d2LWppmlIN2xDu-oj0fN9w4/s1600/TextureChange_Doc_015.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjNbUxYTa6rbkjLZHU6xAsNw3LZoJVcHNo8YoEQ3CyqxlP-l50fMESDYedHwk9F9LDiT7Zzoks7hDzz-iKCpySMJdiFlZBBvWnZjXvVPZ8lCDpMhYJUUwH6d2LWppmlIN2xDu-oj0fN9w4/s640/TextureChange_Doc_015.png" /></a></div><br />
We can create nested submenus by simply separating the names with the <b>:</b> character. This implies, the <b>:</b> will never be part of a menu/theme name. We're limited into how many submenu levels we can use by the notecard length name, <a href="http://wiki.secondlife.com/wiki/Limits#Inventory">which is 63</a>. If we use short names, we'll be able to nest more submenus than if we use long names.<br />
<br />
<br />
Now, let's suppose that we want to create a texture theme, but we would like that some faces of the involved prims remain unchanged.<br />
<br />
Just drop the included <tt>[Black Tulip] Theme Texture Change - Texture to Ignore</tt> texture on the faces that should not be included as part of a theme. Click on <b>Create!</b>, and notice how the information for those faces isn't output, then save the content to a theme notecard.<br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg2bbGKae2r1INWmONZkNyJnAcFUSdMr5kW6uQ3fMHbwBXEDKm23DGNLG69CY7llOfekGtqXS5ZJ4GMSTy4yKAT2hb6LNbw2-b_oJqTB-3ih8xqbJGNsje-6GOIFYutRxIQuHn53OM01iQ/s1600/TextureChange_Doc_016.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg2bbGKae2r1INWmONZkNyJnAcFUSdMr5kW6uQ3fMHbwBXEDKm23DGNLG69CY7llOfekGtqXS5ZJ4GMSTy4yKAT2hb6LNbw2-b_oJqTB-3ih8xqbJGNsje-6GOIFYutRxIQuHn53OM01iQ/s640/TextureChange_Doc_016.png" /></a></div><br />
When we use this theme, the cover won't change its texture. We can exclude as many faces as we need.<br />
<br />
Remember this: <b>Only</b> those prims having their description to begin by <b>t;</b> and your text choice, will be acknowledged as prims that will have their texture changing. The other prims will not be a part of the themes.<br />
<br />
We can recreate themes at any time. We can link, unlink, recreate in case of doubt... The auxiliary tool is pretty flexible, thanks to the <b>t;</b> part of the description of the involved prims.<br />
<br />
<br />
And, to finish with the extra options... What's the <i>Create NoAlpha</i> button for, in the materials auxiliary tool?<br />
<br />
This option is to help bypassing a current bug in the viewers. When ALM (Advanced Lighting Mode) is on, because of this bug, we may notice that non-alpha textures will show as alpha anyway, having the annoying Open GL alpha bug to happen (this alpha bug isn't related to SL but to the used graphics library, Open GL).<br />
<br />
If all of your textures being part of a theme are completely flat, then use this option, <i>Create NoAlpha</i>, instead of <i>Create!</i> It will cause for a specific value to be set to 0.<br />
<br />
If we have a mix of alpha and non alpha textures, and/or transparency settings, then use <i>Create!</i>, and make sure of setting to 0 a specific value of the texture lines corresponding to that texture and face. <a href="http://blacktulip-scripts.blogspot.com/p/common-parts.html#faceNumber">If you don't know how to obtain a face number, then click here</a>.<br />
<br />
Observe the highlighted number 1 almost at the end of the <i>two lines</i> that have all the information for that texture face, having two <b>|</b> characters around. When your texture is flat, when it is not alpha, that 1 should be set to 0 instead.<br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjjQOlhyphenhyphen7thQv7R6hVh5Uk7s4tlPTbjgrLV4ZJgIYE-jPykJqtrHCj5zZLB1v5WKAxvoPbXIo2WdGX1aB9J15wHbZNKU8cSw0pyg7xHVnCsuEMN_ym_0BLxroVsL4qROdWge-dXYl-Rx44/s1600/TextureChange_Doc_017.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjjQOlhyphenhyphen7thQv7R6hVh5Uk7s4tlPTbjgrLV4ZJgIYE-jPykJqtrHCj5zZLB1v5WKAxvoPbXIo2WdGX1aB9J15wHbZNKU8cSw0pyg7xHVnCsuEMN_ym_0BLxroVsL4qROdWge-dXYl-Rx44/s640/TextureChange_Doc_017.png" /></a></div><br />
We will have to do this manually if our object presents a combination of alpha-non alpha textures and/or transparency options. The bug may not necessarily happen <i>with all the textures</i>, but it's better to be aware of this and how to bypass it.<br />
<br />
This, of course, affects <i>only</i> to the materials version. The non-materials version doesn't even have the <i>Create NoAlpha</i> button.<br />
<br />
<a name="setupModule"></a><br />
<h2>SETUP: THE MAIN SCRIPT, AS A MODULE YOU CAN USE FROM ANOTHER SCRIPT</h2><a href="http://blacktulip-scripts.blogspot.com/p/common-parts.html#setupModule">Check the following section on this page</a>, knowing that:<br />
<br />
<tt>[Black Tulip] ***Script Name*** [MODULE]</tt> refers to <tt>[Black Tulip] Theme Texture Change - Materials [MODULE]</tt> (Materials version) or <tt>[Black Tulip] Theme Texture Change [MODULE]</tt> (Non materials version)<br />
<tt>CODE_NUMBER</tt> is <tt>-1864098</tt><br />
<tt>NAME_ON_MENU</tt> is <tt>Texture</tt><br />
<br />
AVSitter line looks like: <tt>BUTTON Texture|-1864098</tt><br />
MLP line looks like: <tt>LINKMSG Texture | 1,-4,-1864098,fromMLP</tt><br />
<br />
You have example AVpos and .MENUITEMS notecards with your purchase. Remember that this works too with AVSitter 2.<br />
<br />
<b>IMPORTANT:</b> If you want the texture menu under the [ADJUST] menu of AVsitter 2, then the line to write is:<br />
<br />
<tt>ADJUST Texture|-1864098</tt><br />
<br />
or<br />
<br />
<tt>ADJUST [Texture]|-1864098</tt><br />
<br />
or any other writing you prefer for it.<br />
<br />
<a name="troubleshooting"></a><br />
<h2>TROUBLESHOOTING</h2><br />
<b>Q:</b> When I'm using the auxiliary tool and click <i>Create!</i>, no texture information is output. What could be happening?<br />
<br />
<i>A: Make sure that the description of the prims that should be affected by the texture theme, begins by <b>t;</b> and then the text you want (but try to keep it short.) The auxiliary tool only outputs information when the description begins by <b>t;</b></i><br />
<br />
<br />
For any other problem not described here, please <a href="http://blacktulip-store.blogspot.com/2013/06/script-assistance-form.html">give a complete description of your issue in the following online form</a>.<br />
<br />
I'll get back to you after I have read your report and replicated your issue inworld, according to your description of it. Please, be detailed.<br />
<br />
-- Auryn BeornAuryn Beornhttp://www.blogger.com/profile/02832014326094809370noreply@blogger.comtag:blogger.com,1999:blog-2947025942912354529.post-63106659506161449722014-12-14T15:00:00.000-08:002015-02-05T12:18:57.174-08:00Script: Candles - Animated Texture Edition<h2>[Black Tulip] Candles - Animated Texture Edition (Script for Designers)</h2>(c) 2014 Auryn Beorn<br />
<br />
<a href="https://marketplace.secondlife.com/p/Black-Tulip-Script-Candles-Animated-Texture-Edition/6690107">Candles - Animated Texture Edition script in Marketplace.</a><br />
<br />
Thank you for having considered this script to enhance the quality of your products. Please read the following instructions carefully, especially the ones explaining which permissions to apply to the scripts for the next owner. Failure to complete this task INVALIDATES the license governing your use of this set of scripts. Should you have problems, please <a href="http://blacktulip-store.blogspot.com/2013/06/script-assistance-form.html">fill the scripts assistance form, explaining what you did and what happened</a>, and I'll get back to you.<br />
<br />
<b>IMPORTANT!</b><br />
The script contains a check to prevent accidental give-aways. If you haven't set permissions correctly in your inventory, then the script will self delete when you try to use it. The best way to ensure you set permissions correctly is by doing it NOW in your inventory.<br />
<br />
<h2>TABLE OF CONTENTS</h2><ul><li><a href="#features">FEATURES</a></li>
<li>SET UP<br />
<ul><li><a href="#whatScriptToUse">WHAT SCRIPT TO USE?</a></li>
<li><a href="#changePermissions">CHANGE PERMISSIONS FOR NEXT OWNER</a></li>
<li><a href="#examineSampleObject">EXAMINING THE SAMPLE OBJECT</a></li>
<li><a href="#descriptionsFormat">FORMAT OF THE DESCRIPTIONS</a></li>
<li><a href="#configurationNotecard">THE CONFIGURATION NOTECARD</a></li>
<li><a href="http://blacktulip-scripts.blogspot.com/p/common-parts.html#faceNumber">HOW TO GET THE FACE NUMBER</a></li>
<li><a href="http://blacktulip-scripts.blogspot.com/p/common-parts.html#colorCode">HOW TO WRITE THE COLOR CODE</a></li>
</ul></li>
<li><a href="#setupModule">THE MAIN SCRIPT, AS A MODULE YOU CAN USE FROM ANOTHER SCRIPT</a></li>
<li><a href="#troubleshooting">TROUBLESHOOTING</a></li>
</ul><br />
<a name="features"></a><br />
<h2>FEATURES</h2><br />
<ul><li>Start/Stop at the same time:<br />
<ul><li>Candle flames</li>
<li>Sound</li>
<li>Light (SL light point)</li>
</ul></li>
<li>Start/Stop independently the effects listed above when the global effect is ON</li>
<li>Change the light color, radius, intensity and fall off of this SL-light point.</li>
<li>Change the sound volume.</li>
<li>Personalize the SL light point colors to show on the menu, in the configuration notecard.</li>
<li>Add up to three extra buttons to call other scripts.</li>
<li>Menu timeout to reduce lag - no open listeners after timeout (0.001 ms script time when idle)</li>
<li>Final user can change access to owner only/everybody/group</li>
<li>Menu can be integrated into tools such as MLPv2, AVsitter... (AVsitter version 2 works too!)</li>
</ul><br />
<b>NOTE:</b> It is NOT mandatory to add a sound. The included sample object, indeed, has no sound clips at all.<br />
<br />
<a name="whatScriptToUse"></a><br />
<h2>SET UP: WHAT SCRIPT TO USE?</h2><br />
There are two scripts contained in your folder:<br />
<br />
<pre>[Black Tulip] Candles - Animated Texture Edition
[Black Tulip] Candles - Animated Texture Edition [MODULE]</pre><br />
We need to use ONLY ONE of them in a given product.<br />
<br />
Which one? How to choose?<br />
<br />
The <tt><b>[MODULE]</b></tt> version, as explained in the <a href="#setupModule">THE MAIN SCRIPT, AS A MODULE YOU CAN USE FROM ANOTHER SCRIPT</a> section, will allow you to use this script integrated with other scripts that allow sending linked messages, such as the Multi Love Pose (MLP) or AVSitter for multiavatar, multianimation devices.<br />
<br />
So, depending on what we need, we'll use the following script as main one:<br />
<br />
Normal use - We want the menu to show <b>when the object is clicked</b>:<br />
[Black Tulip] Candles - Animated Texture Edition<br />
<br />
The menu should show up <b>after clicking a button from another script</b>, like MLP, AVSitter:<br />
[Black Tulip] Candles - Animated Texture Edition [MODULE]<br />
<br />
Once we've chosen the right main script, we have to set some descriptions in the primitives of the object, following the instructions below.<br />
<br />
<a name="changePermissions"></a><br />
<h2>SETUP: CHANGE PERMISSIONS FOR NEXT OWNER</h2><br />
<a href="http://blacktulip-scripts.blogspot.com/p/common-parts.html#changePermissions">Check the following section on this page</a>, knowing that each <tt>[Black Tulip] ASSET</tt> refers to the following scripts:<br />
<br />
<tt>[Black Tulip] Candles - Animated Texture Edition</tt><br />
<tt>[Black Tulip] Candles - Animated Texture Edition [MODULE]</tt><br />
<br />
<a name="examineSampleObject"></a><br />
<h2>SETUP: EXAMINING THE SAMPLE OBJECT</h2><br />
With this script, you may control the following:<br />
<br />
<ul><li>One light point</li>
<li>As many animated-texture flames as you could need</li>
</ul><br />
We'll understand better what this means by examining the <tt>[Black Tulip] Candles - SCRIPTED SAMPLE</tt> object. Rez it, and let's follow this explanation.<br />
<br />
First of all, click it to get the menu. You'll see, as soon as you select <i>ON/OFF</i> to start all the effects, that the flames show and are animated, the sound is on (if there's a sound and the selected volume isn't <i>Off</i>, of course :-) ) and the SL light emits. But there it is only one prim that will be the SL light point.<br />
<br />
How is this done? Let's examine the object. Right click the sample object to edit it, then click the "Content" tab. When we do this, we're inspecting the contents of the ROOT PRIM. You should see:<br />
<br />
<ul><li>The <tt>[Black Tulip] Candles - Animated Texture Edition</tt> script</li>
<li>The <tt>[Black Tulip] Candles - Animated Texture Edition ~CFG~</tt> configuration notecard</li>
<li>A sample script, <tt>[Black Tulip] Particle Snow Example for Buttons</tt>, which is absolutely <b>not necessary</b> to make your flames work. It's included to illustrate how to add extra buttons with extra functionality, but by all means remove it and the associated entry menus in your own objects.</li>
</ul><br />
What does this mean?<br />
That all the necessary assets, this is, candles script, the configuration notecard, and soundclip if any, have to be dropped into the ROOT PRIM. This is the default when we simply right click an object, then select "Edit" from the menu.<br />
<br />
Having this clear, now let's examine the sample object in detail. It consists of four linked prims: different candlesticks and candle setups, all of them prepared to hold texture animated flames. Right click to edit, click "Edit linked", and now:<br />
<br />
<ul><li>Inspect the root prim, which should be the three candles on a plate with an adornment. This is the SL-light point.</li>
<li>Inspect now the description of this prim. It says:</li>
</ul><br />
<tt><b>candleFlame;3;4;4;15;2#light</b></tt><br />
<br />
<ul><li>This means, this prim contains animated candle flames, and is also the SL-light point. Later we go in more detail about how the description is built exactly.</li>
<li>Inspect now <i>any</i> of the other child prims (they will highlight in blue). Inspect the description. It says:</li>
</ul><br />
<tt><b>candleFlame;3;4;4;15;1</b></tt><br />
<br />
<ul><li>This means, each of these prims will have animated textures. Later we go in more detail for this.</li>
</ul><br />
Now that we've inspected the object, let's study the details of the descriptions format.<br />
<br />
<a name="descriptionsFormat"></a><br />
<h2>SETUP: FORMAT OF THE DESCRIPTIONS</h2><br />
To tell the script which of the linked primitives are relevant (particle effects, animated texture effects or SL-light point), we have to write specific words (CASE SENSITIVE) in the DESCRIPTION of each primitive (DESCRIPTION - not the name, don't confuse them!)<br />
<br />
The format of the descriptions is as follows:<br />
<br />
<tt><b>parameter</b></tt><br />
<br />
or<br />
<br />
<tt><b>parameter1#parameter2</b></tt><br />
<br />
It doesn't matter the order the parameters are written, as long as a # character separates them.<br />
<br />
As we've seen, when inspecting the sample object, the following parameter-keyword would indicate that the prim is a SL-light point:<br />
<br />
<tt><b>light</b></tt><br />
<br />
There is another possibility (explained below): <tt>animFire</tt>.<br />
<br />
If we want a primitive having, for example, animated candle flames, and being at the same time a SL light point, then we write the:<br />
<br />
<tt>candleFlame;3;4;4;15;2#light</tt><br />
<br />
combination. The <tt><b>#</b></tt> character will separate parameters, and it does not matter the order we choose to write the parameters.<br />
<br />
This:<br />
<br />
<tt>light#candleFlame;3;4;4;15;2</tt><br />
<br />
would have the same effect.<br />
<br />
<br />
The possible descriptions this script recognizes are:<br />
<br />
Expected description for a light point: <tt>light</tt><br />
Expected description for animated-texture flames: <tt>candleFlame</tt> (there's more to this one, explained next)<br />
<br />
Set the DESCRIPTIONS according to these simple rules, drop the main script and the configuration notecard in your linked object, and your object is ready to go!<br />
<br />
<b>NOTE:</b> Setting the description for the animated-texture candle flames takes a little more work. We explain this now.<br />
<br />
Animated candle flames in SL are often created by animating a texture, which consists of a texture containing different "frames" of the fire animation (we call this "cell animation")<br />
<br />
Whenever we want an animated texture, we have to tell the script:<br />
<br />
<ul><li>The type of texture animation</li>
<li>The speed (low numbers for a slow animation, high for a faster animation)</li>
<li>In which face the animation should play (or if it should play in all the faces at once)</li>
</ul><br />
Apart from this, when we want a cell animation, the script needs to know how many vertical frames (we call this <i>x</i>) and how many horizontal frames (we call this <i>y</i>) the texture contains.<br />
<br />
To avoid entering into technical details that may confuse at this point, let's just see the description format when we want animated textures as flames, and then a very common example that, most likely, will be the one you will use :-)<br />
<br />
General format:<br />
<br />
<tt><b>candleFlame;code_for_animation_type;x;y;speed;face</b></tt><br />
<br />
<b>candleFlame</b><br />
This is the <i>code word</i> for the script. Write it as is. Case sensitive!<br />
<br />
<b>code_for_animation_type</b><br />
We're using cell animation in this case, so: <b>3</b><br />
<br />
<b>x</b><br />
For cell animation: we type here how many VERTICAL frames the animation has<br />
<br />
<b>y</b><br />
For cell animation: we type here how many HORIZONTAL frames the animation has<br />
<br />
<b>speed</b><br />
Here we type the frames per second to show for this cell animation<br />
<br />
<b>face</b><br />
<b>-1</b>: The animation will be applied to ALL THE FACES of the prim<br />
<b>face_number</b>: The animation will be applied to the face <tt>face_number</tt> of the prim (you type here the face number!)<br />
<br />
<h2>EXAMPLE</h2><br />
<tt><b>candleFlame;3;4;4;9;-1</b></tt><br />
<br />
This is a cell animation (code <b>3</b>) having <tt>x = 4</tt> vertical frames, <tt>y = 4</tt> horizontal frames. The speed is <b>9</b> frames per second. It will show in face <b>-1</b>, which is the code for ALL THE FACES of the prim.<br />
<br />
(Why just one or all faces? This is a scripting limitation. The animated texture can work only in all faces at once, or in just one of them. If you hear otherwise than one-or-all at once, it's true that there's a trick, but it's not a reliable one, and may get "fixed" by LL at any time!)<br />
<br />
<a name="configurationNotecard"></a><br />
<h2>THE CONFIGURATION NOTECARD</h2><br />
The configuration notecard is named <tt>[Black Tulip] Candles - Animated Texture Edition ~CFG~</tt>, and it allows us to:<br />
<br />
<ul><li>Write comment lines, for our own clarifications. Comment lines always begin with a <tt><b>#</b></tt> character.</li>
<li>Define what colors we want to be shown as menu options. for the SL light point.</li>
<li>Define which extra buttons we want to add to the menu, to call other scripts from them, having a maximum of 2 buttons.</li>
</ul><br />
With the exception of comment lines, all of the other lines have the structure:<br />
<br />
<tt><b>parameter = value</b></tt><br />
<br />
The accepted parameter keywords are:<br />
<br />
<table cellspacing="5px" cellpadding="5px"><tr> <td valign="top">sound</td><td>In here, we specify the name of a soundclip that will sound when the SL light point turns on, if any</td> </tr>
<tr> <td valign="top">button</td><td>In here, we decide which extra buttons will show up in our menu, and what other scripts they will call</td> </tr>
</table><br />
Now, let's explain how the values are written and what they mean.<br />
<br />
<tt>lightColor = button_label|color_code</tt><br />
<br />
The SL light point may have a color we specify. There's a submenu entry, <i>L.Color</i>, that will show a list of colors we define in the notecard. We define the colors by specifying, separated by the <b><tt>|</tt></b> character, what name should show on the menu, and the actual color code for that menu entry.<br />
<br />
What text will show on the menu button?<br />
That is button_label in the notecard line.<br />
IMPORTANT: It should not have more than 24 characters.<br />
<br />
How do we write the color code? Check <a href="http://blacktulip-scripts.blogspot.com/p/common-parts.html#colorCode">HOW TO WRITE THE COLOR CODE</a> and examine the configuration notecard with the examples.<br />
<br />
<br />
<tt>button = button_label|link_msg_number|link_prim|text_to_send|show_menu_again</tt><br />
<br />
This one is a little more complicated, and it is only required if you plan to add extra buttons that call other scripts. Skip this part if you are not doing this for now, making sure that no <tt>button</tt> lines are in the configuration notecard.<br />
<br />
In order to "call", "execute" or "launch" another script from our main script, we have to use a communication mechanism called <i>linked messages</i>. This is a mechanism that allows scripts to send messages to other scripts in the same linked object, and to listen to possible messages coming from other scripts in the same linked object.<br />
<br />
When we use a <tt>button</tt> line, it means that it will add a button on the menu. This button menu, upon click, will SEND a message to ANOTHER SCRIPT that could be in ANY of the prims of our linked object. That another script should be listening, and will expect to know from us:<br />
<br />
A code number that should be specified in the script documentation. That is <tt>link_msg_number</tt> in the notecard line.<br />
A message. That is <tt>text_to_send</tt> in the notecard line.<br />
A UUID. The barbeque controller script sends the UUID of the avatar having clicked the menu.<br />
If the main menu should show up after executing the action. That is <tt>show_menu_again</tt> in the notecard line. We type there 0 if the menu should <i>not</i> show up after the action, and we type 1 if the menu should show again after the action. To better understand this, check what happens when clicking the example <i>Snow Red</i>, <i>Snow Green</i> and <i>Stop Snow</i> do. <i>Snow Red</i> and <i>Snow Green</i> show the candles menu again after calling the particles script: if you check the configuration notecard, they have a value of 1 for <tt>show_menu_again</tt>. When clicking <i>Stop Snow</i>, the candles menu doesn't show. If you check the configuration notecard, it has a value of 0 for <tt>show_menu_again</tt>.<br />
<br />
Apart from this, the main script needs a couple more data items to know about:<br />
<br />
What text will show on the menu button?<br />
That is button_label in the notecard line.<br />
IMPORTANT: It should not have more than 24 characters.<br />
<br />
To what primitive this message is being sent.<br />
That is link_prim in the notecard line.<br />
<br />
Unless your application has very specific requirements, this link_prim code will be one of the following, meaning:<br />
<br />
<table cellspacing="5px" cellpadding="5px"><tr> <td valign="top">1</td><td>This will send the message to the root prim IF our object consists of more than one prim linked (Or there's an avatar sitting on a single-prim item)</td> </tr>
<tr> <td valign="top">-1</td><td>This will send the message to all prims in the linked object</td> </tr>
<tr> <td valign="top">-2</td><td>This will send the message to all prims BUT the one containing the SENDER (this controller) script</td> </tr>
<tr> <td valign="top">-3</td><td>This will send the message to all child prims (that is, all prims BUT the root prim)</td> </tr>
<tr> <td valign="top">-4</td><td>This will send the message to the prim where the SENDER (this controller) script is in (-4 could be seen as the opposite code of -2)</td> </tr>
</table><br />
Please check the documentation of the other scripts you wish to send linked messages from this one, to make sure of how exactly you should write the line. The lines explained above are the generic ideas valid for every script accepting linked messages, but this documentation cannot replace any other script's documentation for their own interface. Check with the creator of the other script how this should be done.<br />
<br />
<a name="setupModule"></a><br />
<h2>SETUP: THE MAIN SCRIPT, AS A MODULE YOU CAN USE FROM ANOTHER SCRIPT</h2><a href="http://blacktulip-scripts.blogspot.com/p/common-parts.html#setupModule">Check the following section on this page</a>, knowing that:<br />
<br />
<tt>[Black Tulip] ***Script Name*** [MODULE]</tt> refers to <tt>[Black Tulip] Candles - Animated Texture Edition [MODULE]</tt><br />
<tt>CODE_NUMBER</tt> is <tt>-38640983</tt><br />
<tt>NAME_ON_MENU</tt> is <tt>Candles</tt><br />
<br />
AVSitter line looks like: <tt>BUTTON Candles|-38640983</tt><br />
MLP line looks like: <tt>LINKMSG Candles | 1,-4,-38640983,fromMLP</tt><br />
<br />
You have example AVpos and .MENUITEMS notecards with your purchase. Remember that this works too with AVSitter 2.<br />
<br />
<a name="troubleshooting"></a><br />
<h2>TROUBLESHOOTING</h2><br />
<b>Q:</b> I click the light/animated texture options on the menu, but no visible outcome shows. What's going wrong?<br />
<br />
<i>A: Most likely, there's not a light source/animated textures source defined in the object. Double-check the DESCRIPTION of the prim you expect to be a SL light point/particles source/animated texture.</i><br />
<br />
<br />
<b>Q:</b> I hear no sound when I change the volume from the menu. What could be going wrong?<br />
<br />
<i>A: Make sure that there's a sound clip on the <i>Content</i> tab of the prim with the script.</i><br />
<br />
<br />
For any other problem not described here, please <a href="http://blacktulip-store.blogspot.com/2013/06/script-assistance-form.html">give a complete description of your issue in the following online form</a>.<br />
<br />
I'll get back to you after I have read your report and replicated your issue inworld, according to your description of it. Please, be detailed.<br />
<br />
-- Auryn BeornAuryn Beornhttp://www.blogger.com/profile/02832014326094809370noreply@blogger.comtag:blogger.com,1999:blog-2947025942912354529.post-54608281085510752732014-11-10T02:02:00.000-08:002014-11-26T05:10:48.980-08:00Script: Coffee House Sign Switch<h2>[Black Tulip] Coffee House Sign Switch (Script for Designers)</h2>(c) 2014 Auryn Beorn<br />
<br />
<a href="https://marketplace.secondlife.com/p/Black-Tulip-Script-Coffee-House-Signs-Switch/6615600">Coffee House Sign switch script in Marketplace.</a><br />
<br />
Thank you for having considered this script to enhance the quality of your products. Please read the following instructions carefully, especially the ones explaining which permissions to apply to the scripts for the next owner. Failure to complete this task INVALIDATES the license governing your use of this set of scripts. Should you have problems, please <a href="http://blacktulip-store.blogspot.com/2013/06/script-assistance-form.html">fill the scripts assistance form, explaining what you did and what happened</a>, and I'll get back to you.<br />
<br />
<b>IMPORTANT!</b><br />
The script contains a check to prevent accidental give-aways. If you haven't set permissions correctly in your inventory, then the script will self delete when you try to use it. The best way to ensure you set permissions correctly is by doing it NOW in your inventory.<br />
<br />
<h2>TABLE OF CONTENTS</h2><ul><li><a href="#features">FEATURES</a></li>
<li>SET UP<br />
<ul><li><a href="#changePermissions">CHANGE PERMISSIONS FOR NEXT OWNER</a></li>
<li><a href="#examineSampleObject">EXAMINING THE SAMPLE OBJECT</a></li>
<li><a href="#descriptionsFormat">FORMAT OF THE DESCRIPTIONS</a></li>
<li><a href="http://blacktulip-scripts.blogspot.com/p/common-parts.html#faceNumber">HOW TO GET THE FACE NUMBER</a></li>
</ul></li>
<li><a href="#troubleshooting">TROUBLESHOOTING</a></li>
</ul><br />
<a name="features"></a><br />
<h2>FEATURES</h2><br />
<ul><li>Show the Open/Closed text by selecting on the menu.</li>
<li>Turn glow on/of when the open/closed text is visible.</li>
<li>Change the light color, radius, intensity and fall off of the SL-light point.</li>
<li>Menu timeout to reduce lag - no open listeners after timeout (0.001 ms script time when idle)</li>
<li>Final user can change access to owner only/everybody/group</li>
</ul><br />
<a name="changePermissions"></a><br />
<h2>SETUP: CHANGE PERMISSIONS FOR NEXT OWNER</h2><br />
<a href="http://blacktulip-scripts.blogspot.com/p/common-parts.html#changePermissions">Check the following section on this page</a>, knowing that each <tt>[Black Tulip] ASSET</tt> refers to the following script:<br />
<br />
<tt>[Black Tulip] Coffee House Signs - Switch</tt><br />
<br />
<a name="examineSampleObject"></a><br />
<h2>SETUP: EXAMINING THE SAMPLE OBJECT</h2><br />
With this script, you may control the following:<br />
<br />
<ul><li>One light point</li>
<li>One prim that should have at least two different faces, one to show the Open text, the other one to show the Closed text</li>
</ul><br />
We'll understand better what this means by examining the <tt>[Black Tulip] Coffee Sign - SCRIPTED SAMPLE</tt> object. Rez it, and let's follow this explanation.<br />
<br />
Right click the sample object to edit it, then click the "Content" tab. When we do this, we're inspecting the contents of the ROOT PRIM. You should see:<br />
<br />
<ul><li>The <tt>[Black Tulip] Coffee House Signs - Switch</tt> script</li>
</ul><br />
What does this mean?<br />
That the script has to be dropped into the ROOT PRIM. This is the default when we simply right click an object, then select "Edit" from the menu.<br />
<br />
Having this clear, now let's examine the sample object in detail. It consists of two linked prims: a mesh neon sign having both the Open and Closed texts, in separate faces (only one will show, but with the menu you can see the other one) and a white, regular box, which is the root prim. Right click to edit, click "Edit linked", and now:<br />
<br />
<ul><li>Inspect the root prim. It only contains the script.</li>
<li>Inspect the mesh sign prim.</li>
<li>Inspect now the description of this prim. It says:</li>
</ul><br />
<tt><b>sign;2;0.1;0;3;0.1;0#light</b></tt><br />
<br />
There are two parts in this description, separated by the # character. This means, this prim will feature both effects (open/closed sign and SL light point).<br />
<br />
Now that we've inspected the object, let's study the details of the description format.<br />
<br />
<a name="descriptionsFormat"></a><br />
<h2>SETUP: FORMAT OF THE DESCRIPTIONS</h2><br />
To tell the script which of the linked primitives are relevant (open/closed text effects, SL-light point), we have to write specific words (CASE SENSITIVE) in the DESCRIPTION of each primitive (DESCRIPTION - not the name, don't confuse them!)<br />
<br />
The format of the descriptions is as follows:<br />
<br />
<tt><b>parameter</b></tt><br />
<br />
or<br />
<br />
<tt><b>parameter1#parameter2</b></tt><br />
<br />
It doesn't matter the order the parameters are written, as long as a # character separates them.<br />
<br />
As we've seen, when inspecting the sample object, the following parameter-keyword would indicate that the prim is a SL-light point:<br />
<br />
<tt><b>light</b></tt><br />
<br />
There is another possibility, which tells that the primitive contains the open/closed text (explained below): <tt>sign</tt>.<br />
<br />
If we want to specify that a primitive is, at the same time, the open/closed text and a SL light point, then we write the:<br />
<br />
<tt>sign;2;0.1;0;3;0.1;0#light</tt><br />
<br />
combination. The <tt><b>#</b></tt> character will separate parameters, and it does not matter the order we choose to write the parameters.<br />
<br />
This:<br />
<br />
<tt>light#sign;2;0.1;0;3;0.1;0</tt><br />
<br />
would have the same effect.<br />
<br />
<br />
The possible descriptions this script recognizes are:<br />
<br />
Expected description for a light point: <tt>light</tt><br />
Expected description for the prim containing the open/closed text: <tt>sign</tt> (there's more to this one, explained next)<br />
<br />
When we type <tt>sign</tt> in the description, we have to add more information: what face contains the open text, what face contains the closed text, and which values of glow each of them have, when glow is turned on/off.<br />
<br />
How do we do this?<br />
<br />
First, we type sign, to indicate "this is the prim with the open/closed text". Then we type a semicolon. Then we type a number: the face number of the face with the open text (<a href="http://blacktulip-scripts.blogspot.com/p/common-parts.html#faceNumber">Click here if you don't know how to get the face number of a prim</a>.) Then we type another semicolon. Then we type how much glow when glow is "on" for the open text (range is from 0 -no glow- to 1 -full glow-). Then, a semicolon. Then, how much glow when glow is "off" for the open text. Then, semicolon. Then, the face number of the face with the closed text. Semicolon. How much glow when glow is "on" for the closed text. Semicolon. Finally, how much glow when glow is "off" for the closed text.<br />
<br />
The general format, perhaps easier to understand, is:<br />
<br />
<b><tt>sign;openText_faceNumber;openText_glowONvalue;openText_glowOFFvalue;closedText_faceNumber;closedText_glowONvalue;closedText_glowOFFvalue</tt></b><br />
<br />
<b>IMPORTANT:</b> The order is relevant in this format! Do not type <tt>sign</tt> to the end, for example. Values are expected in that order.<br />
<br />
So the following, in the sample object description:<br />
<br />
<b><tt>sign;2;0.1;0;3;0.1;0</tt></b><br />
<br />
means:<br />
<br />
<ul><li><tt>sign</tt> indicates the prim has the open/closed text</li>
<li>The number 2 means that the open text is in face 2 of said prim</li>
<li>The number 0.1 next to it means that glow on the open text will be 0.1 when chosen to be ON</li>
<li>The number 0 next to it means that glow on the open text will be 0 when chosen to be OFF</li>
<li>The number 3 next to it means that the closed text is in face 3 of said prim</li>
<li>The number 0.1 next to it means that glow on the closed text will be 0.1 when chosen to be ON</li>
<li>The number 0 next to it means that glow on the closed text will be 0 when chosen to be OFF</li>
</ul><br />
Set the DESCRIPTIONS according to these simple rules, reset the script if needed, and your object is ready to go!<br />
<br />
<a name="troubleshooting"></a><br />
<h2>TROUBLESHOOTING</h2><br />
<b>Q:</b> I click the light options on the menu, but no visible outcome shows. What's going wrong?<br />
<br />
<i>A: Most likely, there's not a light source defined in the object. Double-check the DESCRIPTION of the prim you expect to be a SL light point. Make also sure that the light radius and intensity are not zero, by changing their values on the menu.</i><br />
<br />
<br />
For any other problem not described here, please <a href="http://blacktulip-store.blogspot.com/2013/06/script-assistance-form.html">give a complete description of your issue in the following online form</a>.<br />
<br />
I'll get back to you after I have read your report and replicated your issue inworld, according to your description of it. Please, be detailed.<br />
<br />
-- Auryn BeornAuryn Beornhttp://www.blogger.com/profile/02832014326094809370noreply@blogger.comtag:blogger.com,1999:blog-2947025942912354529.post-28899711682068668902014-11-03T04:42:00.000-08:002014-11-15T05:14:14.873-08:00Tool: Simple Teleport System<h2>[Black Tulip] Simple Teleport System</h2>(c) 2014 Sei Lisa, Auryn Beorn<br />
<br />
<a href="https://marketplace.secondlife.com/p/Black-Tulip-Simple-Teleport-System/6234473">Simple Teleport System, in Marketplace</a>.<br />
<br />
If you're planning on setting up a teleport system, and all of your destination locations have Teleport Routing set to Anywhere, the simplest solution might be the most effective and user friendly for your customers, and that is what this script offers to you. Set up an object that will be the teleport panel via a notecard, and you can rez copies of this object, already set up, at all places where you need your teleport board.<br />
<br />
Please read the following instructions carefully. There's a sample object included to guide you through an example set up, so you can then set up your own teleport board. If the script isn't working as it should, please read first the Troubleshooting section of this documentation. If your problem isn't described there, then <a href="http://blacktulip-store.blogspot.com/2013/06/script-assistance-form.html">fill the following form</a>, explaining exactly what you did and what happened, and I'll get back to you.<br />
<br />
<h2>TABLE OF CONTENTS</h2><br />
<ul><li><a href="#features">FEATURES</a></li>
<li>SET UP<br />
<ul><li><a href="#whatIsNeededForThisSystem">WHAT ELEMENTS DO I NEED FOR THIS SYSTEM?</a></li>
<li><a href="#examiningSampleObject">EXAMINING THE SAMPLE OBJECT</a></li>
<li><a href="#configurationNotecard">THE CONFIGURATION NOTECARD</a></li>
<li><a href="#obtainingTheRegionData">HOW TO OBTAIN THE REGION DATA</a></li>
<li><a href="http://blacktulip-scripts.blogspot.com/p/common-parts.html#faceNumber">HOW TO GET THE FACE NUMBER</a></li>
<li><a href="#dropScriptAndNotecard">DROPPING THE SCRIPT AND NOTECARD</a></li>
</ul></li>
<li><a href="#troubleshooting">TROUBLESHOOTING</a></li>
</ul><br />
<a name="features"></a><br />
<h2>FEATURES</h2><br />
<b>IMPORTANT:</b> You need <b>Teleport Routing</b> set to <b>Anywhere</b> in all of your destination locations, in order for this script to work.<br />
<br />
<ul><li>Configure several teleport points, anywhere (each destination location requires the Teleport Routing setting specified above)</li>
<li>Each teleport point has owner only/group/everybody (all) access</li>
<li>Menu shows allowing the user to click the location and so being teleported to it</li>
<li>Location shows in private chat too (the text will not be seen by others, only by the avatar clicking)</li>
</ul><br />
<a name="whatIsNeededForThisSystem"></a><br />
<h2>SET UP: WHAT ELEMENTS DO I NEED FOR THIS SYSTEM?</h2><br />
You need three items to set up the teleport system:<br />
<br />
<ul><li>An object that you will use as teleport board</li>
<li>The <tt>[Black Tulip] Simple Teleport System</tt> script</li>
<li>The <tt>[Black Tulip] Simple Teleport System ~CFG~</tt> configuration notecard</li>
</ul><br />
Included with this package, there's a teleport board ready for up to EIGHT destinations, the <tt>[Black Tulip] Simple Teleport SAMPLE OBJECT</tt> object. You can use that one if you prefer so.<br />
<br />
We will have to:<br />
<br />
<ul><li>Type an identifier we choose in the DESCRIPTION field of the prims that contain teleport panels</li>
<li>Use that identifier in the configuration notecard, to define the teleport points</li>
</ul><br />
There can be more than one prim containing teleport panels. Make sure that each prim has a DIFFERENT description than the rest.<br />
<br />
<a name="examiningSampleObject"></a><br />
<h2>SETUP: EXAMINING THE SAMPLE OBJECT</h2><br />
Rez the <tt>[Black Tulip] Simple Teleport SAMPLE OBJECT</tt> object. Inspect it, and pay attention to the DESCRIPTION field of the prims.<br />
<br />
The root prim has no description.<br />
The prim with the teleport panels has the following description:<br />
<br />
<tt><b>tp</b></tt><br />
<br />
This description, <b>tp</b>, will be relevant to the configuration notecard.<br />
<br />
If you were working with your own teleport panel object, and you have more prims that will contain teleport destinations, this is what you have to remember: give each teleport prim an UNIQUE description.<br />
<br />
For example, the following descriptions would be okay in different prims:<br />
<br />
<pre>tp
tp1
tp2
tpMainArea</pre><br />
while the following ones would not be okay:<br />
<br />
<pre>tp
tp1
tp1
tp2</pre><br />
because <tt>tp1</tt> shows twice. Make sure your descriptions are UNIQUE in the same object.<br />
<br />
<a name="configurationNotecard"></a><br />
<h2>SETUP: THE CONFIGURATION NOTECARD</h2><br />
The configuration notecard is named <tt>[Black Tulip] Simple Teleport System ~CFG~</tt>, and it allows us to:<br />
<br />
<ul><li>Write comment lines, for our own clarifications. Comment lines always begin with a # character.</li>
<li>Define the teleport points: what prim, face (showing one panel) correspond to a specific location, and the access type.</li>
<li>Define a default text other than <i>Would you like to:</i> showing on the menu.</li>
</ul><br />
With the exception of comment lines, all of the other lines have the structure:<br />
<br />
<tt><b>parameter = value</b></tt><br />
<br />
The accepted parameter keywords are:<br />
<br />
<b>TP</b><br />
In here, we relate prim+face with a specific location and access type for it<br />
<br />
<b>txtMenu</b><br />
In here, we define a text other than the default <i>Would you like to:</i> that shows on the menu.<br />
<br />
Now, let's explain how the values are written and what they mean.<br />
<br />
<br />
<tt><b>TP = Prim-Desc|Face-Number|Region Name|X|Y|Z|Access</b></tt><br />
<br />
We specify the definition of a teleport destination after the <b>=</b> sign after the <b>TP</b> key word. We have to write down a series of values and separate them with the <b>|</b> character. What do all those <i>Prim-Desc</i>, <i>Face-Number</i>, etc. mean?<br />
<br />
<b>Prim-Desc</b><br />
The description we have written for a teleport prim<br />
<br />
<b>Face-Number</b><br />
The face number of a prim showing a teleport panel to be clicked upon<br />
<br />
<b>Region Name</b><br />
The region name of the destination location<br />
<br />
<b>X</b><br />
The X coordinate of the destination location<br />
<br />
<b>Y</b><br />
The Y coordinate of the destination location<br />
<br />
<b>Z</b><br />
The Z coordinate of the destination location<br />
<br />
<b>Access</b><br />
A number identifying the type of access:<br />
<ul><li>0: Everyone will get the teleport menu when clicking on that panel</li>
<li>1: Only those with the group tag activated will get the teleport menu when clicking on that panel</li>
<li>2: Only the owner of the object will get the teleport menu when clicking on that panel</li>
</ul><br />
We write ONE of this lines PER teleport destination. If you don't know how to obtain Region Name, X, Y and Z, check the following section, <a href="#obtainingTheRegionData">How to obtain the region data</a>. In a moment we analyze the meaning of the lines in the included <tt>[Black Tulip] Simple Teleport System ~CFG~</tt> configuration notecard. Before that, let's complete the notecard specification, with the other possible value.<br />
<br />
<tt><b>txtMenu = Text to show on the menu</b></tt><br />
<br />
By default, the menu shows the <i>Would you like to:</i> text, and then the teleport link. If you would like a different text before the teleport link, write it after the <b>=</b> sign, and do NOT write in separate lines! All the text should be together on the same line. If you're fine with the default text, then just leave the line commented, as it is in the supplied configuration notecard.<br />
<br />
Let's examine now the <b>TP =</b> lines from the supplied <b>[Black Tulip] Simple Teleport System ~CFG~</b> configuration notecard:<br />
<br />
<pre>TP = tp|0|Casablanca Estates|193|112|25|0
TP = tp|1|Casablanca Estates|215|150|35|0
TP = tp|2|Casablanca Estates|185|170|26|0
TP = tp|3|Casablanca Estates|204|90|35|0
TP = tp|4|Casablanca Estates|225|148|25|0
TP = tp|5|Casablanca Estates|199|168|36|0
TP = tp|6|Casablanca Estates|124|126|22|0
TP = tp|7|Casablanca Estates|167|172|25|0</pre><br />
If we count the <b>TP =</b> lines, we see that we have EIGHT of them. This means that the panel object will hold eight different locations.<br />
<br />
The first line says:<br />
<br />
<tt><b>TP = tp|0|Casablanca Estates|193|112|25|0</b></tt><br />
<br />
This means: When we click on the prim with description tp, the face number 0, we will be offered to teleport to <i>Casablanca Estates</i> region, position <i>X = 193, Y = 112, Z = 25</i>, and everybody will get this menu, for the access is set to 0, in the last field.<br />
<br />
The second line says:<br />
<br />
<tt><b>TP = tp|1|Casablanca Estates|215|150|35|0</b></tt><br />
<br />
This means: When we click on the prim with description tp, the face number 1, we will be offered to teleport to <i>Casablanca Estates</i> region, position <i>X = 215, Y = 150, Z = 35</i>, and everybody will get this menu, for the access is set to 0, in the last field.<br />
<br />
and similarly, we can now understand what the other lines mean.<br />
<br />
If we had another prim with description, for example, tp1, we could add more lines like:<br />
<br />
<tt><b>TP = tp1|0|Casablanca Estates|215|140|25|1</b></tt><br />
<br />
which would mean, when we click on the prim with description <b>tp1</b>, the face number 0, we will be offered to teleport to <i>Casablanca Estates</i> region, position <i>X = 215, Y = 140, Z = 25</i>, and only those with their group tag on would get this menu, for the access is set to 1, in the last field.<br />
<br />
<b>REMEMBER:</b> *YOU* decide what description you want to give to your prims, and then you use those descriptions in the configuration notecard.<br />
<br />
<b>IMPORTANT:</b> Do not use the <b>=</b> character in the description of the prim, and do not leave spaces around the <b>|</b> characters of the notecard. Be particularly careful with possible spaces at the end of the lines, for those are easily unnoticed.<br />
<br />
If you ever lose your configuration notecard, your documentation has an embedded copy.<br />
<br />
<a name="obtainingTheRegionData"></a><br />
<h2>SETUP: THE CONFIGURATION NOTECARD - HOW TO OBTAIN THE REGION DATA</h2><br />
Let's take as an example the landmark included with your purchase.<br />
<br />
In your inventory, right click on it and select the <i>Show on Map</i> option. This opens the world map, showing you a red circle highlighting the location. To the right, you have some information:<br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiuk6P8K-L8jqWWv9SkrouthH3XMCKnJ6-V5VglBw_HGOLBI4TIBDHWk38aJE2gjZqnzb15r3xdkGNoVrwGB8LSrJmsxjTbRSLJmFU-nV23KBBGugRNMYRnl5h6lP76inGAJbY_ndwgTaU/s1600/%5BBlack+Tulip%5D+Destination+Information+-+Map+window.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiuk6P8K-L8jqWWv9SkrouthH3XMCKnJ6-V5VglBw_HGOLBI4TIBDHWk38aJE2gjZqnzb15r3xdkGNoVrwGB8LSrJmsxjTbRSLJmFU-nV23KBBGugRNMYRnl5h6lP76inGAJbY_ndwgTaU/s640/%5BBlack+Tulip%5D+Destination+Information+-+Map+window.png" /></a></div><br />
Highlighted, there's the name <i>Casablanca Estates</i> followed by a <i>Find</i> button. Casablanca Estates is the region name. We would write it exactly that way. Then, under Location, we see three numbers. They correspond, respectively, to the X, Y and Z position of the destination location. So 171 would be the number to write down for X, 128, the number for Y, and finally, 25, the number for Z.<br />
<br />
<a name="dropScriptAndNotecard"></a><br />
<h2>SETUP: DROPPING THE SCRIPT AND NOTECARD</h2><br />
Now that the configuration notecard is ready, this is how we have to proceed:<br />
<br />
<ul><li>Right click the LINKED panel object to Edit it.</li>
<li>Do NOT tick Edit Linked. This is to ensure that script and notecard will go to the root prim.</li>
<li>Click the Content tab of the Edit window.</li>
<li>Drag from your inventory and drop on said Content tab the <tt>[Black Tulip] Simple Teleport System ~CFG~</tt> notecard.</li>
<li>Now, drag from your inventory and drop on the Content tab the <tt>[Black Tulip] Simple Teleport System</tt> script.</li>
<li>Close the Edit window.</li>
</ul><br />
You will see a message show up in your local/nearby chat window telling you when the script is ready.<br />
<br />
If you need to change/add/remove locations, you can edit the notecard inside the object, or delete it, then edit the notecard in your inventory and drag and drop it again.<br />
<br />
<a name="troubleshooting"></a><br />
<h2>TROUBLESHOOTING</h2><br />
<i><b>Q:</b> The script does not recognize the name I have given to the teleport prims. What happens?</i><br />
<br />
<b>A:</b> Make sure you have written the name in the DESCRIPTION field of the prims. If you use the Name field, the script will not know those are your teleport points.<br />
<br />
<br />
<i><b>Q:</b> I have double-checked: I've written the names in the DESCRIPTION field of the prims, but the script does not work. What's wrong?</i><br />
<br />
<b>A:</b> Make sure that name coincides exactly with the one you write in the notecard lines. Careful with spaces at the end of the description field, for those would go unnoticed.<br />
<br />
<br />
<i><b>Q:</b> My customers say that they get the menu and click on the teleport link, but they're not teleported to the exact location. What's happening?</i><br />
<br />
<b>A:</b> Make sure that the Teleport Routing setting of the land properties for that destination is set to ANYWHERE.<br />
<br />
<br />
<i><b>Q:</b> I have a customer telling me that no link shows on the menu. What's wrong here?</i><br />
<br />
<b>A:</b> It could be that your customer is using a way outdated viewer. They should update their viewer, but in any case, they also receive in local chat a link that they can click to teleport to the destination. Let them know about this.<br />
<br />
<br />
For any other problem not described here, please <a href="http://blacktulip-store.blogspot.com/2013/06/script-assistance-form.html">give a complete description of your issue in the customer service online form</a>. I'll get back to you after I have read your report and replicated your issue inworld, according to your description of it. Please, be detailed.<br />
<br />
-- Auryn BeornAuryn Beornhttp://www.blogger.com/profile/02832014326094809370noreply@blogger.comtag:blogger.com,1999:blog-2947025942912354529.post-38658831088739860532014-11-02T14:12:00.001-08:002014-11-26T03:26:28.700-08:00Script: Fireplaces - Particles Edition<h2>[Black Tulip] Fireplaces - Particles Edition (Script for Designers)</h2>(c) 2013 Auryn Beorn<br />
<br />
<a href="https://marketplace.secondlife.com/p/Black-Tulip-Script-Fireplaces-Particles-Edition/6466697">Fireplaces - Particles Edition script in Marketplace.</a><br />
<br />
Thank you for having considered this script to enhance the quality of your products. Please read the following instructions carefully, especially the ones explaining which permissions to apply to the scripts for the next owner. Failure to complete this task INVALIDATES the license governing your use of this set of scripts. Should you have problems, please <a href="http://blacktulip-store.blogspot.com/2013/06/script-assistance-form.html">fill the scripts assistance form, explaining what you did and what happened</a>, and I'll get back to you.<br />
<br />
<b>IMPORTANT!</b><br />
The script contains a check to prevent accidental give-aways. If you haven't set permissions correctly in your inventory, then the script will self delete when you try to use it. The best way to ensure you set permissions correctly is by doing it NOW in your inventory.<br />
<br />
<h2>TABLE OF CONTENTS</h2><ul><li><a href="#features">FEATURES</a></li>
<li>SET UP<br />
<ul><li><a href="#whatScriptToUse">WHAT SCRIPT TO USE?</a></li>
<li><a href="#changePermissions">CHANGE PERMISSIONS FOR NEXT OWNER</a></li>
<li><a href="#examineSampleObject">EXAMINING THE SAMPLE OBJECT</a></li>
<li><a href="#descriptionsFormat">FORMAT OF THE DESCRIPTIONS</a></li>
<li><a href="#configurationNotecard">THE CONFIGURATION NOTECARD</a></li>
<li><a href="http://blacktulip-scripts.blogspot.com/p/common-parts.html#particlesInNC">FILLING THE PARTICLES SECTION</a></li>
<li><a href="http://blacktulip-scripts.blogspot.com/p/common-parts.html#importantNoteAboutParticles">IMPORTANT NOTE ABOUT THE PARTICLES</a></li>
</ul></li>
<li><a href="#setupModule">THE MAIN SCRIPT, AS A MODULE YOU CAN USE FROM ANOTHER SCRIPT</a></li>
<li><a href="#troubleshooting">TROUBLESHOOTING</a></li>
</ul><br />
<a name="features"></a><br />
<h2>FEATURES</h2><br />
<ul><li>Start/Stop at the same time:<br />
<ul><li>Particle flames and smoke</li>
<li>Sound</li>
<li>Light (SL light point)</li>
</ul></li>
<li>Start/Stop independently the effects listed above when the global effect is ON</li>
<li>Change the light color, radius, intensity and fall off of this SL-light point.</li>
<li>Change the sound volume.</li>
<li>Menu timeout to reduce lag - no open listeners after timeout (0.001 ms script time when idle)</li>
<li>Final user can change access to owner only/everybody/group</li>
<li>Menu can be integrated into tools such as MLPv2, AVsitter... (AVsitter version 2 works too!)</li>
</ul><br />
<b>NOTE:</b> It is NOT mandatory to add a sound. The included sample sound is the well known <tt>Crackling Fire</tt> from Philip Linden, which you can use if you wish in your builds.<br />
<br />
<a name="whatScriptToUse"></a><br />
<h2>SET UP: WHAT SCRIPT TO USE?</h2><br />
There are two scripts contained in your folder:<br />
<br />
<pre>[Black Tulip] Fireplaces - Particles Edition
[Black Tulip] Fireplaces - Particles Edition [MODULE]</pre><br />
We need to use ONLY ONE of them in a given product.<br />
<br />
Which one? How to choose?<br />
<br />
The <tt><b>[MODULE]</b></tt> version, as explained in the <a href="#setupModule">THE MAIN SCRIPT, AS A MODULE YOU CAN USE FROM ANOTHER SCRIPT</a> section, will allow you to use this script integrated with other scripts that allow sending linked messages, such as the Multi Love Pose (MLP) or AVSitter for multiavatar, multianimation devices.<br />
<br />
So, depending on what we need, we'll use the following script as main one:<br />
<br />
Normal use - We want the menu to show <b>when the object is clicked</b>:<br />
[Black Tulip] Fireplaces - Particles Edition<br />
<br />
The menu should show up <b>after clicking a button from another script</b>, like MLP, AVSitter:<br />
[Black Tulip] Fireplaces - Particles Edition [MODULE]<br />
<br />
Once we've chosen the right main script, we have to set some descriptions in the primitives of the object, following the instructions below, and modify the parameters in the configuration notecard.<br />
<br />
This configuration notecard is named "[Black Tulip] Fireplaces - Particles Edition ~config~"<br />
Embedded in the documentation notecard, you have a copy. Keep it in a safe place, should you need a fresh copy at any time.<br />
<br />
<a name="changePermissions"></a><br />
<h2>SETUP: CHANGE PERMISSIONS FOR NEXT OWNER</h2><br />
<a href="http://blacktulip-scripts.blogspot.com/p/common-parts.html#changePermissions">Check the following section on this page</a>, knowing that each <tt>[Black Tulip] ASSET</tt> refers to the following scripts:<br />
<br />
<tt>[Black Tulip] Fireplaces - Particles Edition</tt><br />
<tt>[Black Tulip] Fireplaces - Particles Edition [MODULE]</tt><br />
<br />
<a name="examineSampleObject"></a><br />
<h2>SETUP: EXAMINING THE SAMPLE OBJECT</h2><br />
With this script, you may control the following:<br />
<br />
<ul><li>One light point</li>
<li>Up to two particle effects (for example, sparks and smoke, particle flames and smoke, only sparks, only smoke...)</li>
</ul><br />
We'll understand better what this means by examining the <tt>[Black Tulip] Fireplaces Particles Edition SAMPLE</tt> object. Rez it, and let's follow this explanation.<br />
<br />
First of all, click it to get the menu. You'll see, as soon as you select <i>ON/OFF</i> to start all the effects, that the sound is on (if the selected volume isn't <i>Off</i>, of course :-) ), the particles emit, and the SL light emits. But there it is only one prim that will be the SL light point.<br />
<br />
How is this done? Let's examine the object. Right click the sample object to edit it, then click the "Content" tab. When we do this, we're inspecting the contents of the ROOT PRIM. You should see:<br />
<br />
<ul><li>The <tt>[Black Tulip] Fireplaces - Particles Edition</tt> script</li>
<li>The <tt>[Black Tulip] Fireplaces - Particles Edition ~config~</tt> configuration notecard</li>
<li>The well known sample sound called <tt>Crackling Fire</tt></li>
</ul><br />
What does this mean?<br />
That the script, the configuration notecard and the soundclip, if any, have to be dropped into the ROOT PRIM. This is the default when we simply right click an object, then select "Edit" from the menu.<br />
<br />
Having this clear, now let's examine the sample object in detail. It consists of two linked prims: Sculpt logs and a transparent SL-box that makes its role as extra particles emitter. Right click to edit, click "Edit linked", and now:<br />
<br />
<ul><li>Inspect the sculpted logs prim. From it, smoke particles are emitted, and this is the SL-light point.</li>
<li>Inspect now the description of this prim. It says:</li>
</ul><br />
<tt><b>smoke#light</b></tt><br />
<br />
<ul><li>This means, this prim is a particles smoke emitter, and the SL-light point. Later we go in more detail about how the description is built exactly.</li>
<li>Inspect now the transparent box. Inspect the description. It says:</li>
</ul><br />
<tt><b>flame</b></tt><br />
<br />
<ul><li>This means that this prim will emit particle flames.</li>
</ul><br />
Now that we've inspected the object, let's study the details of the descriptions format.<br />
<br />
<a name="descriptionsFormat"></a><br />
<h2>SETUP: FORMAT OF THE DESCRIPTIONS</h2><br />
To tell the script which of the linked primitives are relevant (particle effects, animated texture effects or SL-light point), we have to write specific words (CASE SENSITIVE) in the DESCRIPTION of each primitive (DESCRIPTION - not the name, don't confuse them!)<br />
<br />
The format of the descriptions is as follows:<br />
<br />
<tt><b>parameter</b></tt><br />
<br />
or<br />
<br />
<tt><b>parameter1#parameter2</b></tt><br />
<br />
It doesn't matter the order the parameters are written, as long as a # character separates them.<br />
<br />
As we've seen, when inspecting the sample object, the following parameter-keyword would indicate that the prim is a SL-light point:<br />
<br />
<tt><b>light</b></tt><br />
<br />
There are two other possibilities (explained below): <tt>flame</tt> and <tt>smoke</tt>.<br />
<br />
If we want a primitive having, for example, particles flames, and being at the same time a SL light point, then we write the:<br />
<br />
<tt>flame#light</tt><br />
<br />
combination. The <tt><b>#</b></tt> character will separate parameters, and it does not matter the order we choose to write the parameters.<br />
<br />
This:<br />
<br />
<tt>light#flame</tt><br />
<br />
would have the same effect.<br />
<br />
<br />
The possible descriptions this script recognizes are:<br />
<br />
Expected description for a light point: <tt>light</tt><br />
Expected description for particle effect #1: <tt>flame</tt><br />
Expected description for particle effect #2: <tt>smoke</tt><br />
<br />
Set the DESCRIPTIONS according to these simple rules, drop the main script and the configuration notecard in your linked object, and your object is ready to go!<br />
<br />
<a name="configurationNotecard"></a><br />
<h2>SETUP: THE CONFIGURATION NOTECARD</h2><br />
The configuration notecard is named <tt>[Black Tulip] Fireplaces - Full Edition ~config~</tt>, and it allows us to:<br />
<br />
<ul><li>Write comment lines, for our own clarifications. Comment lines always begin with a <tt><b>#</b></tt> character.</li>
<li>Define the particle effects. Check the <a href="http://blacktulip-scripts.blogspot.com/p/common-parts.html#particlesInNC">FILLING THE PARTICLES SECTION</a> and <a href="http://blacktulip-scripts.blogspot.com/p/common-parts.html#importantNoteAboutParticles">IMPORTANT NOTE ABOUT THE PARTICLES</a> sections of the documentation for this.</li>
</ul><br />
<a name="setupModule"></a><br />
<h2>SETUP: THE MAIN SCRIPT, AS A MODULE YOU CAN USE FROM ANOTHER SCRIPT</h2><a href="http://blacktulip-scripts.blogspot.com/p/common-parts.html#setupModule">Check the following section on this page</a>, knowing that:<br />
<br />
<tt>[Black Tulip] ***Script Name*** [MODULE]</tt> refers to <tt>[Black Tulip] Fireplaces - Particles Edition [MODULE]</tt><br />
<tt>CODE_NUMBER</tt> is <tt>-18640987</tt><br />
<tt>NAME_ON_MENU</tt> is <tt>Fireplace</tt><br />
<br />
AVSitter line looks like: <tt>BUTTON Fireplace|-18640987</tt><br />
MLP line looks like: <tt>LINKMSG Fireplace | 1,-4,-18640987,fromMLP</tt><br />
<br />
You have example AVpos and .MENUITEMS notecards with your purchase. Remember that this works too with AVSitter 2.<br />
<br />
<a name="troubleshooting"></a><br />
<h2>TROUBLESHOOTING</h2><br />
<b>Q:</b> I click the light/particle options on the menu, but no visible outcome shows. What's going wrong?<br />
<br />
<i>A: Most likely, there's not a light source/particles source defined in the object. Double-check the DESCRIPTION of the prim you expect to be a SL light point/particles source/animated texture.</i><br />
<br />
<br />
<b>Q:</b> I hear no sound when I change the volume from the menu. What could be going wrong?<br />
<br />
<i>A: Make sure that there's a sound clip on the <i>Content</i> tab of the prim with the script.</i><br />
<br />
<br />
For any other problem not described here, please <a href="http://blacktulip-store.blogspot.com/2013/06/script-assistance-form.html">give a complete description of your issue in the following online form</a>.<br />
<br />
I'll get back to you after I have read your report and replicated your issue inworld, according to your description of it. Please, be detailed.<br />
<br />
-- Auryn BeornAuryn Beornhttp://www.blogger.com/profile/02832014326094809370noreply@blogger.comtag:blogger.com,1999:blog-2947025942912354529.post-2464323832897714422014-11-02T14:12:00.000-08:002014-11-26T03:27:03.950-08:00Script: Fireplaces - Animated Texture Edition<h2>[Black Tulip] Fireplaces - Animated Texture Edition (Script for Designers)</h2>(c) 2013 Auryn Beorn<br />
<br />
<a href="https://marketplace.secondlife.com/p/Black-Tulip-Script-Fireplaces-Anim-Texture-Edition/6466683">Fireplaces - Animated Texture Edition script in Marketplace.</a><br />
<br />
Thank you for having considered this script to enhance the quality of your products. Please read the following instructions carefully, especially the ones explaining which permissions to apply to the scripts for the next owner. Failure to complete this task INVALIDATES the license governing your use of this set of scripts. Should you have problems, please <a href="http://blacktulip-store.blogspot.com/2013/06/script-assistance-form.html">fill the scripts assistance form, explaining what you did and what happened</a>, and I'll get back to you.<br />
<br />
<b>IMPORTANT!</b><br />
The script contains a check to prevent accidental give-aways. If you haven't set permissions correctly in your inventory, then the script will self delete when you try to use it. The best way to ensure you set permissions correctly is by doing it NOW in your inventory.<br />
<br />
<h2>TABLE OF CONTENTS</h2><ul><li><a href="#features">FEATURES</a></li>
<li>SET UP<br />
<ul><li><a href="#whatScriptToUse">WHAT SCRIPT TO USE?</a></li>
<li><a href="#changePermissions">CHANGE PERMISSIONS FOR NEXT OWNER</a></li>
<li><a href="#examineSampleObject">EXAMINING THE SAMPLE OBJECT</a></li>
<li><a href="#descriptionsFormat">FORMAT OF THE DESCRIPTIONS</a></li>
<li><a href="#descriptionsExample">EXAMPLES</a></li>
<li><a href="http://blacktulip-scripts.blogspot.com/p/common-parts.html#faceNumber">HOW TO GET THE FACE NUMBER</a></li>
</ul></li>
<li><a href="#setupModule">THE MAIN SCRIPT, AS A MODULE YOU CAN USE FROM ANOTHER SCRIPT</a></li>
<li><a href="#troubleshooting">TROUBLESHOOTING</a></li>
</ul><br />
<a name="features"></a><br />
<h2>FEATURES</h2><br />
<ul><li>Start/Stop at the same time:<br />
<ul><li>Fire flames</li>
<li>Sound</li>
<li>Light (SL light point)</li>
</ul></li>
<li>Start/Stop independently the effects listed above when the global effect is ON</li>
<li>Change the light color, radius, intensity and fall off of this SL-light point.</li>
<li>Change the sound volume.</li>
<li>Menu timeout to reduce lag - no open listeners after timeout (0.001 ms script time when idle)</li>
<li>Final user can change access to owner only/everybody/group</li>
<li>Menu can be integrated into tools such as MLPv2, AVsitter... (AVsitter version 2 works too!)</li>
</ul><br />
<b>NOTE:</b> It is NOT mandatory to add a sound. The included sample sound is the well known <tt>Crackling Fire</tt> from Philip Linden, which you can use if you wish in your builds.<br />
<br />
<a name="whatScriptToUse"></a><br />
<h2>SET UP: WHAT SCRIPT TO USE?</h2><br />
There are two scripts contained in your folder:<br />
<br />
<pre>[Black Tulip] Fireplaces - Animated Texture Edition
[Black Tulip] Fireplaces - Animated Texture Edition [MODULE]</pre><br />
We need to use ONLY ONE of them in a given product.<br />
<br />
Which one? How to choose?<br />
<br />
The <tt><b>[MODULE]</b></tt> version, as explained in the <a href="#setupModule">THE MAIN SCRIPT, AS A MODULE YOU CAN USE FROM ANOTHER SCRIPT</a> section, will allow you to use this script integrated with other scripts that allow sending linked messages, such as the Multi Love Pose (MLP) or AVSitter for multiavatar, multianimation devices.<br />
<br />
So, depending on what we need, we'll use the following script as main one:<br />
<br />
Normal use - We want the menu to show <b>when the object is clicked</b>:<br />
[Black Tulip] Fireplaces - Animated Texture Edition<br />
<br />
The menu should show up <b>after clicking a button from another script</b>, like MLP, AVSitter:<br />
[Black Tulip] Fireplaces - Animated Texture Edition [MODULE]<br />
<br />
Once we've chosen the right main script, we have to set some descriptions in the primitives of the object, following the instructions below.<br />
<br />
<a name="changePermissions"></a><br />
<h2>SETUP: CHANGE PERMISSIONS FOR NEXT OWNER</h2><br />
<a href="http://blacktulip-scripts.blogspot.com/p/common-parts.html#changePermissions">Check the following section on this page</a>, knowing that each <tt>[Black Tulip] ASSET</tt> refers to the following scripts:<br />
<br />
<tt>[Black Tulip] Fireplaces - Animated Texture Edition</tt><br />
<tt>[Black Tulip] Fireplaces - Animated Texture Edition [MODULE]</tt><br />
<br />
<a name="examineSampleObject"></a><br />
<h2>SETUP: EXAMINING THE SAMPLE OBJECT</h2><br />
With this script, you may control the following:<br />
<br />
<ul><li>One light point</li>
<li>As many animated-texture flames as you could need (regular prims, sculpted, mesh)</li>
</ul><br />
We'll understand better what this means by examining the <tt>[Black Tulip] Fireplaces AnimTex Edition - Sculpt & Mesh SAMPLE</tt> object. Rez it, and let's follow this explanation.<br />
<br />
First of all, click it to get the menu. You'll see, as soon as you select <i>ON/OFF</i> to start all the effects, that the flames show and are animated, the sound is on (if the selected volume isn't <i>Off</i>, of course :-) ) and the SL light emits. But there it is only one prim that will be the SL light point.<br />
<br />
How is this done? Let's examine the object. Right click the sample object to edit it, then click the "Content" tab. When we do this, we're inspecting the contents of the ROOT PRIM. You should see:<br />
<br />
<ul><li>The <tt>[Black Tulip] Fireplaces - Animated Texture Edition</tt> script</li>
<li>The well known sample sound called <tt>Crackling Fire</tt></li>
</ul><br />
What does this mean?<br />
That the script, the configuration notecard and the soundclip, if any, have to be dropped into the ROOT PRIM. This is the default when we simply right click an object, then select "Edit" from the menu.<br />
<br />
Having this clear, now let's examine the sample object in detail. It consists of eight linked prims: Mesh planes for animated texture flames (and mesh logs), sculpt logs, sculpt fire for animated texture fire, and several SL-boxes also for flames. The sculpt logs are the root prim here. Right click to edit, click "Edit linked", and now:<br />
<br />
<ul><li>Inspect the sculpted logs prim. This is the SL-light point.</li>
<li>Inspect now the description of this prim. It says:</li>
</ul><br />
<tt><b>light</b></tt><br />
<br />
<ul><li>This means, this prim is the SL-light point. Later we go in more detail about how the description is built exactly.</li>
<li>Inspect now <i>any</i> of the regular SL-boxes over the sculpted logs. Inspect the description. It says:</li>
</ul><br />
<tt><b>animFire;3;4;4;9;-1</b></tt><br />
<br />
<ul><li>This means, the SL-box will have animated textures. Later we go in more detail for this.</li>
<li>Now inspect the mesh planes just above the mesh logs. Inspect the description. It says:</li>
</ul><br />
<tt><b>animFire;3;4;4;9;0</b></tt><br />
<br />
<ul><li>Again, an animated texture.</li>
<li>Finally, inspect the sculpted fire over the sculpted logs. Inspect the description. It says:</li>
</ul><br />
<tt><b>animFire;19;0;0;0.1;-1</b></tt><br />
<br />
<ul><li>This means that this prim has animated texture.</li>
</ul><br />
Now that we've inspected the object, let's study the details of the descriptions format.<br />
<br />
<a name="descriptionsFormat"></a><br />
<h2>SETUP: FORMAT OF THE DESCRIPTIONS</h2><br />
To tell the script which of the linked primitives are relevant (particle effects, animated texture effects or SL-light point), we have to write specific words (CASE SENSITIVE) in the DESCRIPTION of each primitive (DESCRIPTION - not the name, don't confuse them!)<br />
<br />
The format of the descriptions is as follows:<br />
<br />
<tt><b>parameter</b></tt><br />
<br />
or<br />
<br />
<tt><b>parameter1#parameter2</b></tt><br />
<br />
It doesn't matter the order the parameters are written, as long as a # character separates them.<br />
<br />
As we've seen, when inspecting the sample object, the following parameter-keyword would indicate that the prim is a SL-light point:<br />
<br />
<tt><b>light</b></tt><br />
<br />
There is another possibility (explained below): <tt>animFire</tt>.<br />
<br />
If we want a primitive having, for example, animated flames, and being at the same time a SL light point, then we write the:<br />
<br />
<tt>light#animFire;3;4;4;9;-1</tt><br />
<br />
combination. The <tt><b>#</b></tt> character will separate parameters, and it does not matter the order we choose to write the parameters.<br />
<br />
This:<br />
<br />
<tt>animFire;3;4;4;9;-1#light</tt><br />
<br />
would have the same effect.<br />
<br />
<br />
The possible descriptions this script recognizes are:<br />
<br />
Expected description for a light point: <tt>light</tt><br />
Expected description for animated-texture flames: <tt>animFire</tt> (there's more to this one, explained next)<br />
<br />
Set the DESCRIPTIONS according to these simple rules, drop the main script and the configuration notecard in your linked object, and your object is ready to go!<br />
<br />
<b>NOTE:</b> Setting the description for the animated-texture flames takes a little more work. We explain this now.<br />
<br />
Animated fires in SL are often created by animating a texture, which can be one of two possible types:<br />
<br />
<ul><li>A texture containing different "frames" of the fire animation (we call this "cell animation")</li>
<li>A texture designed to slide on a sculpted/mesh fire having a fire flame shape</li>
</ul><br />
Whenever we want an animated texture, we have to tell the script:<br />
<br />
<ul><li>The type of texture animation</li>
<li>The speed (low numbers for a slow animation, high for a faster animation)</li>
<li>In which face the animation should play (or if it should play in all the faces at once)</li>
</ul><br />
Apart from this, when we want a cell animation, the script needs to know how many vertical frames (we call this <i>x</i>) and how many horizontal frames (we call this <i>y</i>) the texture contains.<br />
<br />
To avoid entering into technical details that may confuse at this point, let's just see the description format when we want animated textures as flames, and then a couple of very common examples that, most likely, will be the ones you will use :-)<br />
<br />
General format:<br />
<br />
<tt><b>animFire;code_for_animation_type;x;y;speed;face</b></tt><br />
<br />
<b>animFire</b><br />
This is the <i>code word</i> for the script. Write it as is. Case sensitive!<br />
<br />
<b>code_for_animation_type</b><br />
If you use a cell animation: <b>3</b><br />
If you use a slide animation: <b>19</b><br />
<br />
<b>x</b><br />
If you use a cell animation: you type here how many VERTICAL frames the animation has<br />
If you use a slide animation: you type here the number 0<br />
<br />
<b>y</b><br />
If you use a cell animation: you type here how many HORIZONTAL frames the animation has<br />
If you use a slide animation: you type here the number 0<br />
<br />
<b>speed</b><br />
Here you type the frames per second to show (if cell animation), or the speed the animation will slide<br />
<br />
<b>face</b><br />
<b>-1</b>: The animation will be applied to ALL THE FACES of the prim<br />
<b>face_number</b>: The animation will be applied to the face <tt>face_number</tt> of the prim (you type here the face number!)<br />
<br />
<a name="descriptionsExample"></a><br />
<h2>EXAMPLES</h2><br />
<tt><b>animFire;3;4;4;9;-1</b></tt><br />
<br />
This is a cell animation (code <b>3</b>) having <tt>x = 4</tt> vertical frames, <tt>y = 4</tt> horizontal frames. The speed is <b>9</b> frames per second. It will show in face <b>-1</b>, which is the code for ALL THE FACES of the prim.<br />
<br />
<tt><b>animFire;19;0;0;0.1;0</b></tt><br />
<br />
This is a slide animation (code <b>19</b>), so in both <tt>x</tt> and <tt>y</tt> we type the number <b>0</b>. The speed is <b>0.1</b>. It will show in face <b>0</b> of the prim.<br />
<br />
It is very important to indicate the face! Nowadays, it's very likely that we will use a multi-face mesh, and we want to animate only one face in that case, not the whole mesh! :-)<br />
<br />
(Why just one or all faces? This is a scripting limitation. The animated texture can work only in all faces at once, or in just one of them. If you hear otherwise than one-or-all at once, it's true that there's a trick, but it's not a reliable one, and may get "fixed" by LL at any time!)<br />
<br />
<a name="setupModule"></a><br />
<h2>SETUP: THE MAIN SCRIPT, AS A MODULE YOU CAN USE FROM ANOTHER SCRIPT</h2><a href="http://blacktulip-scripts.blogspot.com/p/common-parts.html#setupModule">Check the following section on this page</a>, knowing that:<br />
<br />
<tt>[Black Tulip] ***Script Name*** [MODULE]</tt> refers to <tt>[Black Tulip] Fireplaces - Animated Texture Edition [MODULE]</tt><br />
<tt>CODE_NUMBER</tt> is <tt>-18640987</tt><br />
<tt>NAME_ON_MENU</tt> is <tt>Fireplace</tt><br />
<br />
AVSitter line looks like: <tt>BUTTON Fireplace|-18640987</tt><br />
MLP line looks like: <tt>LINKMSG Fireplace | 1,-4,-18640987,fromMLP</tt><br />
<br />
You have example AVpos and .MENUITEMS notecards with your purchase. Remember that this works too with AVSitter 2.<br />
<br />
<a name="troubleshooting"></a><br />
<h2>TROUBLESHOOTING</h2><br />
<b>Q:</b> I click the light/animated texture options on the menu, but no visible outcome shows. What's going wrong?<br />
<br />
<i>A: Most likely, there's not a light source/animated textures source defined in the object. Double-check the DESCRIPTION of the prim you expect to be a SL light point/particles source/animated texture.</i><br />
<br />
<br />
<b>Q:</b> I hear no sound when I change the volume from the menu. What could be going wrong?<br />
<br />
<i>A: Make sure that there's a sound clip on the <i>Content</i> tab of the prim with the script.</i><br />
<br />
<br />
For any other problem not described here, please <a href="http://blacktulip-store.blogspot.com/2013/06/script-assistance-form.html">give a complete description of your issue in the following online form</a>.<br />
<br />
I'll get back to you after I have read your report and replicated your issue inworld, according to your description of it. Please, be detailed.<br />
<br />
-- Auryn BeornAuryn Beornhttp://www.blogger.com/profile/02832014326094809370noreply@blogger.comtag:blogger.com,1999:blog-2947025942912354529.post-47884499023441670662014-11-02T14:10:00.000-08:002014-11-26T03:27:18.020-08:00Script: Fireplaces - Full Edition<h2>[Black Tulip] Fireplaces - Full Edition (Script for Designers)</h2>(c) 2013 Auryn Beorn<br />
<br />
<a href="https://marketplace.secondlife.com/p/Black-Tulip-Script-Fireplaces-Full-Edition/5485653">Fireplaces - Full Edition script in Marketplace.</a><br />
<br />
Thank you for having considered this script to enhance the quality of your products. Please read the following instructions carefully, especially the ones explaining which permissions to apply to the scripts for the next owner. Failure to complete this task INVALIDATES the license governing your use of this set of scripts. Should you have problems, please <a href="http://blacktulip-store.blogspot.com/2013/06/script-assistance-form.html">fill the scripts assistance form, explaining what you did and what happened</a>, and I'll get back to you.<br />
<br />
<b>IMPORTANT!</b><br />
The script contains a check to prevent accidental give-aways. If you haven't set permissions correctly in your inventory, then the script will self delete when you try to use it. The best way to ensure you set permissions correctly is by doing it NOW in your inventory.<br />
<br />
<h2>TABLE OF CONTENTS</h2><ul><li><a href="#features">FEATURES</a></li>
<li>SET UP<br />
<ul><li><a href="#whatScriptToUse">WHAT SCRIPT TO USE?</a></li>
<li><a href="#changePermissions">CHANGE PERMISSIONS FOR NEXT OWNER</a></li>
<li><a href="#examineSampleObject">EXAMINING THE SAMPLE OBJECT</a></li>
<li><a href="#descriptionsFormat">FORMAT OF THE DESCRIPTIONS</a></li>
<li><a href="#descriptionsExample">EXAMPLES</a></li>
<li><a href="http://blacktulip-scripts.blogspot.com/p/common-parts.html#faceNumber">HOW TO GET THE FACE NUMBER</a></li>
<li><a href="#configurationNotecard">THE CONFIGURATION NOTECARD</a></li>
<li><a href="http://blacktulip-scripts.blogspot.com/p/common-parts.html#particlesInNC">FILLING THE PARTICLES SECTION</a></li>
<li><a href="http://blacktulip-scripts.blogspot.com/p/common-parts.html#importantNoteAboutParticles">IMPORTANT NOTE ABOUT THE PARTICLES</a></li>
</ul></li>
<li><a href="#setupModule">THE MAIN SCRIPT, AS A MODULE YOU CAN USE FROM ANOTHER SCRIPT</a></li>
<li><a href="#troubleshooting">TROUBLESHOOTING</a></li>
</ul><br />
<a name="features"></a><br />
<h2>FEATURES</h2><br />
<ul><li>Start/Stop at the same time:<br />
<ul><li>Fire flames</li>
<li>Particles (sparks/particle flames)</li>
<li>Particles smoke</li>
<li>Sound</li>
<li>Light (SL light point)</li>
</ul></li>
<li>Start/Stop independently the effects listed above when the global effect is ON</li>
<li>Change the light color, radius, intensity and fall off of this SL-light point.</li>
<li>Change the sound volume.</li>
<li>Menu timeout to reduce lag - no open listeners after timeout (0.001 ms script time when idle)</li>
<li>Final user can change access to owner only/everybody/group</li>
<li>Menu can be integrated into tools such as MLPv2, AVsitter... (AVsitter version 2 works too!)</li>
</ul><br />
<b>NOTE:</b> It is NOT mandatory to add a sound. The included sample sound is the well known <tt>Crackling Fire</tt> from Philip Linden, which you can use if you wish in your builds.<br />
<br />
<a name="whatScriptToUse"></a><br />
<h2>SET UP: WHAT SCRIPT TO USE?</h2><br />
There are two scripts contained in your folder:<br />
<br />
<pre>[Black Tulip] Fireplaces - Full Edition
[Black Tulip] Fireplaces - Full Edition [MODULE]</pre><br />
We need to use ONLY ONE of them in a given product.<br />
<br />
Which one? How to choose?<br />
<br />
The <tt><b>[MODULE]</b></tt> version, as explained in the <a href="#setupModule">THE MAIN SCRIPT, AS A MODULE YOU CAN USE FROM ANOTHER SCRIPT</a> section, will allow you to use this script integrated with other scripts that allow sending linked messages, such as the Multi Love Pose (MLP) or AVSitter for multiavatar, multianimation devices.<br />
<br />
So, depending on what we need, we'll use the following script as main one:<br />
<br />
Normal use - We want the menu to show <b>when the object is clicked</b>:<br />
[Black Tulip] Fireplaces - Full Edition<br />
<br />
The menu should show up <b>after clicking a button from another script</b>, like MLP, AVSitter:<br />
[Black Tulip] Fireplaces - Full Edition [MODULE]<br />
<br />
Once we've chosen the right main script, we have to set some descriptions in the primitives of the object, following the instructions below, and modify the parameters in the configuration notecard.<br />
<br />
This configuration notecard is named "[Black Tulip] Fireplaces - Full Edition ~config~"<br />
Embedded in the documentation notecard, you have a copy. Keep it in a safe place, should you need a fresh copy at any time.<br />
<br />
<a name="changePermissions"></a><br />
<h2>SETUP: CHANGE PERMISSIONS FOR NEXT OWNER</h2><br />
<a href="http://blacktulip-scripts.blogspot.com/p/common-parts.html#changePermissions">Check the following section on this page</a>, knowing that each <tt>[Black Tulip] ASSET</tt> refers to the following scripts:<br />
<br />
<tt>[Black Tulip] Fireplaces - Full Edition</tt><br />
<tt>[Black Tulip] Fireplaces - Full Edition [MODULE]</tt><br />
<br />
<a name="examineSampleObject"></a><br />
<h2>SETUP: EXAMINING THE SAMPLE OBJECT</h2><br />
With this script, you may control the following:<br />
<br />
<ul><li>One light point</li>
<li>Up to two particle effects (for example, sparks and smoke, particle flames and smoke, only sparks, only smoke...)</li>
<li>As many animated-texture flames as you could need (regular prims, sculpted, mesh)</li>
</ul><br />
We'll understand better what this means by examining the <tt>[Black Tulip] Fireplaces Full Edition - Sculpt & Mesh SAMPLE</tt> object. Rez it, and let's follow this explanation.<br />
<br />
First of all, click it to get the menu. You'll see, as soon as you select <i>ON/OFF</i> to start all the effects, that the flames show and are animated, the sound is on (if the selected volume isn't <i>Off</i>, of course :-) ), the particles emit, and the SL light emits. But there it is only one prim that will be the SL light point.<br />
<br />
How is this done? Let's examine the object. Right click the sample object to edit it, then click the "Content" tab. When we do this, we're inspecting the contents of the ROOT PRIM. You should see:<br />
<br />
<ul><li>The <tt>[Black Tulip] Fireplaces - Full Edition</tt> script</li>
<li>The <tt>[Black Tulip] Fireplaces - Full Edition ~config~</tt> configuration notecard</li>
<li>The well known sample sound called <tt>Crackling Fire</tt></li>
</ul><br />
What does this mean?<br />
That the script, the configuration notecard and the soundclip, if any, have to be dropped into the ROOT PRIM. This is the default when we simply right click an object, then select "Edit" from the menu.<br />
<br />
Having this clear, now let's examine the sample object in detail. It consists of eight linked prims: Mesh planes for animated texture flames (and mesh logs), sculpt logs, sculpt fire for animated texture fire, and several SL-boxes also for flames. The sculpt logs are the root prim here. Right click to edit, click "Edit linked", and now:<br />
<br />
<ul><li>Inspect the sculpted logs prim. From it, smoke particles are emitted, and this is the SL-light point.</li>
<li>Inspect now the description of this prim. It says:</li>
</ul><br />
<tt><b>smoke#light</b></tt><br />
<br />
<ul><li>This means, this prim is a particles smoke emitter, and the SL-light point. Later we go in more detail about how the description is built exactly.</li>
<li>Inspect now <i>any</i> of the regular SL-boxes over the sculpted logs. Inspect the description. It says:</li>
</ul><br />
<tt><b>animFire;3;4;4;9;-1</b></tt><br />
<br />
<ul><li>This means, the SL-box will have animated textures. Later we go in more detail for this.</li>
<li>Now inspect the mesh planes just above the mesh logs. Inspect the description. It says:</li>
</ul><br />
<tt><b>animFire;3;4;4;9;0</b></tt><br />
<br />
<ul><li>Again, an animated texture.</li>
<li>Finally, inspect the sculpted fire over the sculpted logs. Inspect the description. It says:</li>
</ul><br />
<tt><b>animFire;19;0;0;0.1;-1#sparks</b></tt><br />
<br />
<ul><li>This means that this prim has animated texture <i>and</i> emits particle sparks.</li>
</ul><br />
Now that we've inspected the object, let's study the details of the descriptions format.<br />
<br />
<a name="descriptionsFormat"></a><br />
<h2>SETUP: FORMAT OF THE DESCRIPTIONS</h2><br />
To tell the script which of the linked primitives are relevant (particle effects, animated texture effects or SL-light point), we have to write specific words (CASE SENSITIVE) in the DESCRIPTION of each primitive (DESCRIPTION - not the name, don't confuse them!)<br />
<br />
The format of the descriptions is as follows:<br />
<br />
<tt><b>parameter</b></tt><br />
<br />
or<br />
<br />
<tt><b>parameter1#parameter2</b></tt><br />
<br />
or even<br />
<br />
<tt><b>parameter1#parameter2#parameter3</b></tt><br />
<br />
<br />
It doesn't matter the order the parameters are written, as long as a # character separates them.<br />
<br />
As we've seen, when inspecting the sample object, the following parameter-keyword would indicate that the prim is a SL-light point:<br />
<br />
<tt><b>light</b></tt><br />
<br />
There are three other possibilities (explained below): <tt>sparks</tt>, <tt>smoke</tt> and <tt>animFire</tt>.<br />
<br />
If we want a primitive having, for example, particles sparks, and being at the same time a SL light point, then we write the:<br />
<br />
<tt>sparks#light</tt><br />
<br />
combination. The <tt><b>#</b></tt> character will separate parameters, and it does not matter the order we choose to write the parameters.<br />
<br />
This:<br />
<br />
<tt>light#sparks</tt><br />
<br />
would have the same effect.<br />
<br />
<br />
The possible descriptions this script recognizes are:<br />
<br />
Expected description for a light point: <tt>light</tt><br />
Expected description for particle effect #1: <tt>sparks</tt><br />
Expected description for particle effect #2: <tt>smoke</tt><br />
Expected description for animated-texture flames: <tt>animFire</tt> (there's more to this one, explained next)<br />
<br />
Set the DESCRIPTIONS according to these simple rules, drop the main script and the configuration notecard in your linked object, and your object is ready to go!<br />
<br />
<b>NOTE:</b> Setting the description for the animated-texture flames takes a little more work. We explain this now.<br />
<br />
Animated fires in SL are often created by animating a texture, which can be one of two possible types:<br />
<br />
<ul><li>A texture containing different "frames" of the fire animation (we call this "cell animation")</li>
<li>A texture designed to slide on a sculpted/mesh fire having a fire flame shape</li>
</ul><br />
Whenever we want an animated texture, we have to tell the script:<br />
<br />
<ul><li>The type of texture animation</li>
<li>The speed (low numbers for a slow animation, high for a faster animation)</li>
<li>In which face the animation should play (or if it should play in all the faces at once)</li>
</ul><br />
Apart from this, when we want a cell animation, the script needs to know how many vertical frames (we call this <i>x</i>) and how many horizontal frames (we call this <i>y</i>) the texture contains.<br />
<br />
To avoid entering into technical details that may confuse at this point, let's just see the description format when we want animated textures as flames, and then a couple of very common examples that, most likely, will be the ones you will use :-)<br />
<br />
General format:<br />
<br />
<tt><b>animFire;code_for_animation_type;x;y;speed;face</b></tt><br />
<br />
<b>animFire</b><br />
This is the <i>code word</i> for the script. Write it as is. Case sensitive!<br />
<br />
<b>code_for_animation_type</b><br />
If you use a cell animation: <b>3</b><br />
If you use a slide animation: <b>19</b><br />
<br />
<b>x</b><br />
If you use a cell animation: you type here how many VERTICAL frames the animation has<br />
If you use a slide animation: you type here the number 0<br />
<br />
<b>y</b><br />
If you use a cell animation: you type here how many HORIZONTAL frames the animation has<br />
If you use a slide animation: you type here the number 0<br />
<br />
<b>speed</b><br />
Here you type the frames per second to show (if cell animation), or the speed the animation will slide<br />
<br />
<b>face</b><br />
<b>-1</b>: The animation will be applied to ALL THE FACES of the prim<br />
<b>face_number</b>: The animation will be applied to the face <tt>face_number</tt> of the prim (you type here the face number!)<br />
<br />
<a name="descriptionsExample"></a><br />
<h2>EXAMPLES</h2><br />
<tt><b>animFire;3;4;4;9;-1</b></tt><br />
<br />
This is a cell animation (code <b>3</b>) having <tt>x = 4</tt> vertical frames, <tt>y = 4</tt> horizontal frames. The speed is <b>9</b> frames per second. It will show in face <b>-1</b>, which is the code for ALL THE FACES of the prim.<br />
<br />
<tt><b>animFire;19;0;0;0.1;0</b></tt><br />
<br />
This is a slide animation (code <b>19</b>), so in both <tt>x</tt> and <tt>y</tt> we type the number <b>0</b>. The speed is <b>0.1</b>. It will show in face <b>0</b> of the prim.<br />
<br />
It is very important to indicate the face! Nowadays, it's very likely that we will use a multi-face mesh, and we want to animate only one face in that case, not the whole mesh! :-)<br />
<br />
(Why just one or all faces? This is a scripting limitation. The animated texture can work only in all faces at once, or in just one of them. If you hear otherwise than one-or-all at once, it's true that there's a trick, but it's not a reliable one, and may get "fixed" by LL at any time!)<br />
<br />
<a name="configurationNotecard"></a><br />
<h2>SETUP: THE CONFIGURATION NOTECARD</h2><br />
The configuration notecard is named <tt>[Black Tulip] Fireplaces - Full Edition ~config~</tt>, and it allows us to:<br />
<br />
<ul><li>Write comment lines, for our own clarifications. Comment lines always begin with a <tt><b>#</b></tt> character.</li>
<li>Define the particle effects. Check the <a href="http://blacktulip-scripts.blogspot.com/p/common-parts.html#particlesInNC">FILLING THE PARTICLES SECTION</a> and <a href="http://blacktulip-scripts.blogspot.com/p/common-parts.html#importantNoteAboutParticles">IMPORTANT NOTE ABOUT THE PARTICLES</a> sections of the documentation for this.</li>
</ul><br />
<a name="setupModule"></a><br />
<h2>SETUP: THE MAIN SCRIPT, AS A MODULE YOU CAN USE FROM ANOTHER SCRIPT</h2><a href="http://blacktulip-scripts.blogspot.com/p/common-parts.html#setupModule">Check the following section on this page</a>, knowing that:<br />
<br />
<tt>[Black Tulip] ***Script Name*** [MODULE]</tt> refers to <tt>[Black Tulip] Fireplaces - Full Edition [MODULE]</tt><br />
<tt>CODE_NUMBER</tt> is <tt>-18640987</tt><br />
<tt>NAME_ON_MENU</tt> is <tt>Fireplace</tt><br />
<br />
AVSitter line looks like: <tt>BUTTON Fireplace|-18640987</tt><br />
MLP line looks like: <tt>LINKMSG Fireplace | 1,-4,-18640987,fromMLP</tt><br />
<br />
You have example AVpos and .MENUITEMS notecards with your purchase. Remember that this works too with AVSitter 2.<br />
<br />
<a name="troubleshooting"></a><br />
<h2>TROUBLESHOOTING</h2><br />
<b>Q:</b> I click the light/particle/animated texture options on the menu, but no visible outcome shows. What's going wrong?<br />
<br />
<i>A: Most likely, there's not a light source/particles source/animated textures source defined in the object. Double-check the DESCRIPTION of the prim you expect to be a SL light point/particles source/animated texture.</i><br />
<br />
<br />
<b>Q:</b> I hear no sound when I change the volume from the menu. What could be going wrong?<br />
<br />
<i>A: Make sure that there's a sound clip on the <i>Content</i> tab of the prim with the script.</i><br />
<br />
<br />
For any other problem not described here, please <a href="http://blacktulip-store.blogspot.com/2013/06/script-assistance-form.html">give a complete description of your issue in the following online form</a>.<br />
<br />
I'll get back to you after I have read your report and replicated your issue inworld, according to your description of it. Please, be detailed.<br />
<br />
-- Auryn BeornAuryn Beornhttp://www.blogger.com/profile/02832014326094809370noreply@blogger.comtag:blogger.com,1999:blog-2947025942912354529.post-8257722801425935582014-11-01T11:02:00.000-07:002014-11-12T11:34:56.807-08:00Tool: Messenger/Sender Tool<h2>[Black Tulip] Messenger/Sender Tool</h2>(c) 2012 Auryn Beorn<br />
<br />
<a href="https://marketplace.secondlife.com/p/Black-Tulip-MessengerSender-Tool/3830459">Messenger/Sender Tool in Marketplace.</a><br />
<br />
<h2>TABLE OF CONTENTS</h2><ul><li><a href="#features">FEATURES</a></li>
<li><a href="#setup">INSTALLATION AND USE OF YOUR MESSENGER TOOL</a><br />
<ul><li><a href="#configurationNotecard">THE CONFIGURATION NOTECARD</a></li>
<li><a href="#notesAboutTheAssetsToSend">IMPORTANT NOTES ABOUT THE ASSETS YOU WISH TO SEND</a></li>
</ul></li>
<li><a href="#howDoWeGetTheAvatarKey">HOW DO WE GET THE AVATAR KEY?</a></li>
</ul><br />
<a name="features"></a><br />
<h2>FEATURES</h2>The <tt>[Black Tulip] Messenger/Sender Tool</tt> (<i>Messenger</i>) is a HUD (Heads Up Display) that allows you to perform the following functions for all the avatars listed in the configuration notecard:<br />
<br />
<ul><li>Send all the notecards contained in the HUD, plus a message</li>
<li>Send all the landmarks contained in the HUD, plus a message</li>
<li>Send all the objects contained in the HUD, plus a message</li>
<li>Send all the items (no matter the asset type) contained in the HUD, plus a message</li>
<li>Send only a message</li>
<li>Get a list of the UUIDs and avatar names of all the avatars on the sim to copy/paste in your configuration notecard</li>
</ul><br />
<b>NOTE:</b> The script itself and the configuration notecard will NOT be sent to the avatars listed in your notecard.<br />
<br />
<br />
<a name="setup"></a><br />
<h2>INSTALLATION AND USE OF YOUR MESSENGER TOOL</h2><br />
Wear the object <tt>[Black Tulip] Messenger/Sender Tool (wear/center)</tt>. It will attach to the <i>center</i> attachment point of your avatar. It consists of a panel (touch area) showing all the options. Clicking the various areas of the HUD will activate the indicated function.<br />
<br />
To use the HUD, simply Edit it, and drag the notecards/landmarks/objects/etc that you want to send into the Contents of the HUD. There are no restrictions over the number of items you can send. Check the <a href="#notesAboutTheAssetsToSend">IMPORTANT NOTES ABOUT THE ASSETS YOU WISH TO SEND</a> section of this document for in depth notes.<br />
<br />
Edit the configuration notecard <tt>[Black Tulip] Messenger/Sender Tool - CONFIG</tt> according to the rules of the <a href="#configurationNotecard">THE CONFIGURATION NOTECARD</a> section below.<br />
<br />
Your HUD is ready to use.<br />
<br />
This first version of the tool has the following options, in order from top to bottom, left to right:<br />
<br />
<b>Send notecard/s and message</b><br />
This will ask you to type a message in a certain channel. This channel is set in the configuration notecard. You have five minutes to complete writing your message.<br />
<br />
After writing the message and pressing ENTER, the Messenger will send all the notecards contained in the Contents of the HUD (with the exception of the configuration notecard <tt>[Black Tulip] Messenger/Sender Tool - CONFIG</tt>) together with the message, to all the avatars you have listed in the configuration notecard.<br />
<br />
<b>Send landmarks/s and message</b><br />
This will ask you to type a message in a certain channel. This channel is set in the configuration notecard. You have five minutes to complete writing your message.<br />
<br />
After writing the message and pressing ENTER, the Messenger will send all the landmarks contained in the Contents of the HUD together with the message, to all the avatars you have listed in the configuration notecard.<br />
<br />
<b>Send object/s and message</b><br />
This will ask you to type a message in a certain channel. This channel is set in the configuration notecard. You have five minutes to complete writing your message.<br />
<br />
After writing the message and pressing ENTER, the Messenger will send all the objects contained in the Contents of the HUD together with the message, to all the avatars in your list in the configuration notecard to all the avatars you have listed in the configuration notecard.<br />
<br />
<b>Send all and message</b><br />
This will ask you to type a message in a certain channel. This channel is set in the configuration notecard. You have five minutes to complete writing your message.<br />
<br />
After writing the message and pressing ENTER, it will send all the assets contained in the Contents of the HUD (with the exception of the configuration notecard <tt>[Black Tulip] Messenger/Sender Tool - CONFIG</tt> and the main script <tt>[Black Tulip] Messenger/Sender Tool</tt>) together with the message, to all the avatars you have listed in the configuration notecard.<br />
<br />
<b>Get avatars' data as list</b><br />
This will output in local chat, in an owner-say message (that is, only you can see it) a list of all the UUIDs and avatar names from the avatars in the sim where you are, in a suitable format to directly copy/paste them in your configuration notecard.<br />
<br />
Scripts can't write notecards, so this option will help you in adding UUIDs and names to your list.<br />
<br />
<b>Send message</b><br />
This will ask you to type a message in a certain channel. This channel is set in the configuration notecard. You have five minutes to complete writing your message.<br />
<br />
After writing the message and pressing ENTER, it will send this message to all the avatars you have listed in the configuration notecard.<br />
<br />
<a name="configurationNotecard"></a><br />
<h2>THE CONFIGURATION NOTECARD</h2><br />
The configuration notecard must be placed in the Contents of the HUD together with the <tt>[Black Tulip] Messenger/Sender Tool</tt> script, and it has to be named <tt>[Black Tulip] Messenger/Sender Tool – CONFIG</tt>.<br />
<br />
As we can see in the sample notecard, its format is very simple:<br />
<br />
<pre># [Black Tulip] Messenger/Sender Tool - CONFIG
# Lines beginning by # are ignored
channel = 5
766f3817-2f2a-469d-acfa-9789080ecc85|Auryn Beorn
c1502900-1696-45e8-904f-c58a1995c33d|Auryn (Resident)</pre><br />
It supports a single parameter, which must be named <b>channel</b>, assigned a number, as in the sample:<br />
<br />
<tt><b>channel = 5</b></tt><br />
<br />
This means that the HUD will ask you to input your messages in channel #5. If you wish to use a different chat channel, simply edit the notecard in the object and change 5 to the channel number of your preference.<br />
<br />
Then, following the channel parameter, you simply type a list indicating the avatars to whom you want to send notecards, landmarks, etc. Use one line per avatar, having this format:<br />
<br />
<tt><b>UUID|Avatar Name</b></tt><br />
<br />
The <tt><b>|</b></tt> is a separator character (often called a "pipe"). You can specify whatever avatar name you prefer. This is simply informative for you; the HUD will always inform you of the progress of the task it is performing, by saying to which avatar it has sent the information, and this will be the name the HUD will use.<br />
<br />
Check the <a href="#howDoWeGetTheAvatarKey">HOW DO WE GET THE AVATAR KEY?</a> section to learn about retrieving the UUID of an avatar.<br />
<br />
<a name="notesAboutTheAssetsToSend"></a><br />
<h2>IMPORTANT NOTES ABOUT THE ASSETS YOU WISH TO SEND</h2><br />
Because of a Second Life scripting limitation, the items have to be sent one at a time, per avatar. Each item sent adds a delay of 2 seconds, so if you have a long collection of items to be sent to a long list of avatars, expect the script to take some time. It will inform you of its progress, but it will require the time.<br />
<br />
Unless stated otherwise, the references to permissions explained now are permissions for the owner of the object. That is, you.<br />
<br />
To make sure that there won't be issues in using this tool, your assets should have one of the following permissions <b>for you</b>:<br />
<pre> Copy - Modify - Transfer (that is, FULL PERMS)
Copy - No Modify - Transfer</pre><br />
If the items you want to send are not full permissions, but copy/no modify/transfer, you will have to rez the HUD, drag the desired items into its Contents, and then take the HUD back into your inventory before attaching it.<br />
<br />
If you attempt to send a no copy asset (<b>for you</b>), or a no transfer asset (<b>for you</b>), the HUD will output an error message.<br />
<br />
You may set <b>permissions for NEXT OWNER</b> as you deem necessary! It's permissions <b>for you</b> that need to be copy and transfer. If you're unclear about the difference between permissions for owner, and permissions for next owner, <a href="http://auryn-beorn.blogspot.com/2013/09/creator-resource-permissions-basic.html">check this tutorial about the basics on permissions in SL</a>.<br />
<br />
<a name="howDoWeGetTheAvatarKey"></a><br />
<h2>HOW DO WE GET THE AVATAR KEY?</h2><br />
Some viewers, like Firestorm, show you the avatar key as you open a profile, over the name. But in case you don't have a viewer that allows you to obtain the key of an avatar from the avatar name, this box also contains an object that will allow you to get the key of an avatar.<br />
<br />
Rez the object <tt>[Black Tulip] Request UUID avatar</tt>. You'll see appear a black sphere with white text over it: <i>Click here to request an avatar UUID</i>.<br />
<br />
When you click the sphere, it will turn to green and the text over it will change to: <tt>Type in chat /1 FirstName LastName (New avatars, LastName = Resident)</tt><br />
<br />
For example, to find the key for the avatar <i>Auryn Beorn</i>, we have to do the following:<br />
<br />
<ul><li>Click the sphere.</li>
<li>Type in chat:<br />
<tt>/1 Auryn Beorn</tt></li>
</ul><br />
Then the sphere will return us text like the following:<br />
<br />
<pre>[22:34:44] [Black Tulip] Request UUID avatar: 0 => 4454> Auryn Beorn: Name2Key.Lookup
[22:34:45] [Black Tulip] Request UUID avatar: 0 => 4454> Found: 766f3817-2f2a-469d-acfa-9789080ecc85</pre><br />
and will go back to black.<br />
<br />
If we want to find the key of an avatar without surname, we have to add Resident, as follows (don't confuse the name with the display name!):<br />
<br />
<ul><li>Click the sphere.</li>
<li>Type in chat:<br />
<tt>/1 Auryn Resident</tt></li>
</ul><br />
The sphere, again, will return us text like the following:<br />
<br />
<pre>[22:12:24] [Black Tulip] Request UUID avatar: 0 => 214> Auryn Resident: Name2Key.Lookup
[22:12:25] [Black Tulip] Request UUID avatar: 0 => 214> Found: c1502900-1696-45e8-904f-c58a1995c33d</pre><br />
and will go back to black.<br />
<br />
To minimize lag, the sphere will wait for our request a maximum of 2 minutes. If no request has been done during two minutes, the sphere will go back to black and we'll have to click it again if we want to get an avatar key from a name.<br />
<br />
<br />
If you have any problem with this script, please <a href="http://blacktulip-store.blogspot.com/2013/06/script-assistance-form.html">give a complete description of your issue in the following online form</a>.<br />
<br />
I'll get back to you after I have read your report and replicated your issue inworld, according to your description of it. Please, be detailed.<br />
<br />
-- Auryn Beorn<br />
Auryn Beornhttp://www.blogger.com/profile/02832014326094809370noreply@blogger.comtag:blogger.com,1999:blog-2947025942912354529.post-23188950870528947712014-11-01T10:23:00.000-07:002014-11-12T11:08:19.210-08:00Tool: Information Point<h2>[Black Tulip] Information Point</h2>(c) 2012 Auryn Beorn<br />
<br />
<a href="https://marketplace.secondlife.com/p/Black-Tulip-Information-Point/3228985">Information Point in Marketplace.</a><br />
<br />
<h2>TABLE OF CONTENTS</h2><ul><li><a href="#features">PURPOSE AND FEATURES</a></li>
<li><a href="#setup">SETTING UP YOUR "INFORMATION POINT"</a></li>
<li><a href="#configurationNotecard">THE CONFIGURATION NOTECARD</a></li>
</ul><br />
<a name="features"></a><br />
<h2>PURPOSE AND FEATURES</h2><br />
The purpose of the <tt>[Black Tulip] Information Point</tt> tool is to allow you to:<br />
<br />
<ul><li>Offer to your customers a folder with one or more items providing information about your products (one per product)</li>
<li>Show a link in chat to click and join your group</li>
<li>Show a link in chat to your store blog, marketplace page or marketplace page for a specific product</li>
<li>Register if your customer has selected to get the informative folder, the group link or the web links, and when</li>
<li>IM you when a customer has chosen the informative folder, providing a link in chat so you can open their profile</li>
<li>List who/when/what in chat (only you see this chat), according to the data recorded</li>
<li>Send an e-mail at any moment to the e-mail address you choose with this who/when/what list</li>
<li>Stores up to 100 "clicks", sending you an e-mail automatically and a message in chat when this limit is reached, cleaning then all the data to begin recording again</li>
</ul><br />
<a name="setup"></a><br />
<h2>SETTING UP YOUR "INFORMATION POINT"</h2><br />
In order to correctly set your information point, you have to:<br />
<br />
<ul><li>Decide which primitive will hold all the information (notecards, pictures, etc), configuration notecard and script/s. If you use a single prim for this, you have to worry not. The above is important when your information point object consists of more than one primitive.</li>
<li>Change the DESCRIPTION of the primitive you want being your clickable information point to <tt>Information Point</tt>. Check the provided <tt>[Black Tulip] Multi Door Tool INFO (Sample 1 Prim)</tt> sample object to compare if your information point is made of one prim, or <tt>[Black Tulip] Multi Door Tool INFO (Sample >1 Prim)</tt> if more than one.</li>
<li>Drop the <tt>[Black Tulip] Information Point ~config~</tt> notecard in the <i>Content</i> tab of this primitive and edit it, filling in all the required information for your item. The details are covered in next section, <a href="#configurationNotecard">THE CONFIGURATION NOTECARD</a>.</li>
<li>Drop also the items you want to be delivered as information: notecard/s, landmark/s, picture/s, demo object/s...<br />
Check the provided <tt>[Black Tulip] Multi Door Tool INFO (Sample 1 Prim)</tt> sample object to compare if your information point is made of one prim, or <tt>[Black Tulip] Multi Door Tool INFO (Sample >1 Prim)</tt> if more than one.</li>
<li>If you have added an e-mail address in your notecard to receive the reports there, then add the <tt>[Black Tulip] Information Point e-mail submodule</tt> script.</li>
<li>Finally, add the <tt>[Black Tulip] Information Point</tt> script.</li>
</ul><br />
When all this is completed successfully, you'll see messages like the following in chat (only you will see them):<br />
<br />
<pre>[04:40] [Black Tulip] Staff Pager INFO: Reading notecard, please wait...
[04:40] [Black Tulip] Staff Pager INFO: Information Point READY. 3 informations in folder to be delivered for item '[Black Tulip] Staff Pager'
[04:40] [Black Tulip] Staff Pager INFO: Free memory: 34060 bytes.</pre><br />
The first message informs us of the script reading the configuration notecard. If it finds any error, it will notify you and will show text hover your information point primitive.<br />
<br />
The second message informs us of how many items will be delivered if the user clicks the <i>Item Info</i> option.<br />
<br />
Then finally, the third line shows the free memory for the script: once this happens, the script is READY to register all your users clicks.<br />
<br />
<a name="configurationNotecard"></a><br />
<h2>THE CONFIGURATION NOTECARD</h2><br />
Do a copy of the <tt>[Black Tulip] Information Point ~config~</tt> notecard to always keep a clean copy of this.<br />
<br />
This notecard simply consists of several parameters that the <tt>[Black Tulip] Information Point</tt> script will use in order to give information to our customers, as well as parameters to set specifics for informing us when an user clicks an option.<br />
<br />
Let's see all the parameters in one example:<br />
<br />
<pre># [Black Tulip] Information Point ~config~
# Lines beginning by # are ignored
customMsg = This is a custom message.\nIt can contain carriage returns and even\n\t\ttabulators\n(Check the doc for this)\nIt's a good idea if you add a link to your profile:\n\tsecondlife:///app/agent/766f3817-2f2a-469d-acfa-9789080ecc85/about
itemName = [Black Tulip] Multi-Door/Drawer/Curtain Tools
groupUUID = d076391d-eb7c-74d7-699c-3e2ddaa0f7d4
hoverText = 0
hoverTextColor = <1.0, 0.5, 0.0>
sendIM = 1
storeBlog = http://blacktulip-store.blogspot.com/
storeMP = https://marketplace.secondlife.com/stores/42594
storeMP_Item = https://marketplace.secondlife.com/p/Black-Tulip-Multi-DoorDrawerCurtain-Tools/2891315
merchantName = Auryn Beorn
storeName = Black Tulip
emailMerchant = auryn.beorn@gmail.com</pre><br />
<tt><b>customMsg</b></tt><br />
Here we type the message to show to our customers after they've chosen to receive an informative folder. If we leave it empty, the default message will be as follows:<br />
<br />
<pre>[04:41] [Black Tulip] Presenter INFO: Thank you for your interest in my products. For more information on them, don't hesitate contacting me (Auryn Beorn):
secondlife:///app/agent/766f3817-2f2a-469d-acfa-9789080ecc85/about</pre><br />
Of course, instead of Auryn Beorn and my UUID, it will appear what you've written for merchantName and your own UUID<br />
<br />
SPECIAL CHARACTERS:<br />
If we type <tt>\n</tt> as in the example notecard: A carriage return will be inserted instead<br />
If we type <tt>\t</tt> as in the example notecard: A tabulator will be inserted instead<br />
<br />
<tt><b>itemName</b></tt><br />
The name of our product. This will appear in the menu and other informative messages.<br />
<br />
<tt><b>groupUUID</b></tt><br />
The UUID of our group. We can find this in the properties when opening the group window. When the user selects <i>Group join</i>", a message like the following shows:<br />
<br />
<pre>[04:42] [Black Tulip] Multi Door Tool INFO:
Click the following link to open the Group window and then click 'Join'.
secondlife:///app/group/d076391d-eb7c-74d7-699c-3e2ddaa0f7d4/about
Thanks! Auryn Beorn.</pre><br />
Of course, instead of Auryn Beorn, it shows what you've written for merchanName.<br />
<br />
<tt><b>hoverText</b></tt><br />
Do you want hover text displaying over your information point primitive? Set this to 1. You don't want hover text displaying over your information point once is set up? Then set this to 0.<br />
<br />
<tt><b>hoverTextColor</b></tt><br />
If hoverText is set to 1, then this is the color for the hover text. This package includes the "[Black Tulip] Color HUD" tool for you easily writing a color correctly in this part. <a href="http://blacktulip-scripts.blogspot.com/2014/02/tool-color-hud.html">Click here for the documentation of the Color HUD tool</a>.<br />
<br />
<tt><b>sendIM</b></tt><br />
Set this to 0 if you don't want to receive any IM when an user clicks an information point to receive an informative folder.<br />
<br />
If you wish to receive an IM like the following if an user decides to receive information:<br />
<br />
<pre>[04:41] [Black Tulip] Multi Door Tool INFO: [Information Point] '[Black Tulip] Multi Door Tool INFO'
The avatar 'Auryn Beorn' has clicked for information about '[Black Tulip] Multi-Door/Drawer/Curtain Tools' on 2012-02-11, 12:41:51. UTC
Click here for profile: secondlife:///app/agent/766f3817-2f2a-469d-acfa-9789080ecc85/about</pre><br />
then set this to 1. The link written in chat is clickable and will open the profile of our customer.<br />
<br />
<tt><b>storeBlog</b></tt><br />
In here, we should write the link of our store website, if we have one.<br />
<br />
<tt><b>storeMP</b></tt><br />
In here, we should write the link of our marketplace store, if we have one.<br />
<br />
<tt><b>storeMP_Item</b></tt><br />
In here, we should write the link of the marketplace page of the product, if we have this item in Marketplace.<br />
<br />
If we fill the three of them, when our customer clicks "Webpage", the information they'll obtain will be as follows:<br />
<br />
<pre>[04:43] [Black Tulip] Staff Pager INFO:
You can check the following link to get this item in Marketplace (or to send it as a gift):
https://marketplace.secondlife.com/p/Black-Tulip-Multiavatar-Staff-Pager/2075861
Please leave a review if you've liked it!
Click the following link to open the store web. Follow it and leave your comments if you're so inclined:
http://blacktulip-store.blogspot.com/
Don't forget checking the Marketplace listing for more products like this one!
https://marketplace.secondlife.com/stores/42594
Thanks! Auryn Beorn.</pre><br />
<tt><b>merchantName</b></tt><br />
Here we'll write our name as we wish it to appear in all the messages for the user.<br />
<br />
<tt><b>storeName</b></tt><br />
Here we'll specify the name of our store.<br />
<br />
<tt><b>emailMerchant</b></tt><br />
If we want the <i>clicks report</i> to be sent to a specific e-mail address, we will write it here. ONLY if we type in something for this parameter, we should include the <tt>[Black Tulip] Information Point e-mail submodule</tt> script.<br />
<br />
<br />
If you have any problem with this script, please <a href="http://blacktulip-store.blogspot.com/2013/06/script-assistance-form.html">give a complete description of your issue in the following online form</a>.<br />
<br />
I'll get back to you after I have read your report and replicated your issue inworld, according to your description of it. Please, be detailed.<br />
<br />
-- Auryn Beorn<br />
Auryn Beornhttp://www.blogger.com/profile/02832014326094809370noreply@blogger.comtag:blogger.com,1999:blog-2947025942912354529.post-23935129571116066272014-10-31T03:16:00.001-07:002014-11-12T10:37:43.031-08:00Script: Simple Music Box<h2>[Black Tulip] Simple Music Box - for Builders</h2>(c) 2012 Auryn Beorn<br />
<br />
Thank you for having considered this script to enhance the quality of your products. Please read the following instructions carefully, especially the ones explaining which permissions to apply to the scripts for the next owner. Failure to complete this task INVALIDATES the license governing your use of this set of scripts. Should you have problems, please <a href="http://blacktulip-store.blogspot.com/2013/06/script-assistance-form.html">fill the scripts assistance form, explaining what you did and what happened</a>, and I'll get back to you.<br />
<br />
<h2>TABLE OF CONTENTS</h2><ul><li><a href="#features">FEATURES</a></li>
<li>SET UP<br />
<ul><li><a href="#whatScriptToUse">WHAT SCRIPT TO USE?</a></li>
<li><a href="#changePermissions">CHANGE PERMISSIONS FOR NEXT OWNER</a></li>
<li><a href="#examineSampleObject">EXAMINING THE SAMPLE OBJECT</a></li>
<li><a href="#descriptionsFormat">FORMAT OF THE DESCRIPTIONS</a></li>
<li><a href="#setupSpinningParts">HOW TO SET UP THE SPINNING PARTS</a></li>
<li><a href="#configurationNotecard">THE CONFIGURATION NOTECARD</a></li>
</ul></li>
<li><a href="#purchasingSongs">WHERE DO I PURCHASE SONGS?</a></li>
<li><a href="#setupModule">THE MAIN SCRIPT, AS A MODULE YOU CAN USE FROM ANOTHER SCRIPT</a></li>
</ul><br />
<a name="features"></a><br />
<h2>FEATURES</h2><br />
<ul><li>Notecard configuration: It allows your song having the sample duration you need</li>
<li>Up to 256 spinning prims can be safely included</li>
<li>Volume is changed via menu</li>
<li>Menu timeout to reduce lag - no open listeners after timeout (0.001 ms script time when idle)</li>
<li>Final user can change access to owner only/everybody/group</li>
<li>Menu can be integrated into tools such as MLPv2, AVsitter... (AVsitter version 2 works too!)</li>
</ul><br />
<a name="whatScriptToUse"></a><br />
<h2>SET UP: WHAT SCRIPT TO USE?</h2><br />
There are two scripts contained in your folder:<br />
<br />
<pre>[Black Tulip] Simple Music Box - Basic Edition
[Black Tulip] Simple Music Box - Basic Edition [MODULE]</pre><br />
We need to use ONLY ONE of them in a given product.<br />
<br />
Which one? How to choose?<br />
<br />
The <tt><b>[MODULE]</b></tt> version, as explained in the <a href="#setupModule">THE MAIN SCRIPT, AS A MODULE YOU CAN USE FROM ANOTHER SCRIPT</a> section, will allow you to use this script integrated with other scripts that allow sending linked messages, such as the Multi Love Pose (MLP) or AVSitter for multiavatar, multianimation devices.<br />
<br />
So, depending on what we need, we'll use the following script as main one:<br />
<br />
Normal use - We want the menu to show <b>when the object is clicked</b>:<br />
[Black Tulip] Simple Music Box - Basic Edition<br />
<br />
The menu should show up <b>after clicking a button from another script</b>, like MLP, AVSitter:<br />
[Black Tulip] Simple Music Box - Basic Edition [MODULE]<br />
<br />
Once we've chosen the right main script, we have to set some descriptions in the primitives of the object, following the instructions below.<br />
<br />
<a name="changePermissions"></a><br />
<h2>SETUP: CHANGE PERMISSIONS FOR NEXT OWNER</h2><br />
<a href="http://blacktulip-scripts.blogspot.com/p/common-parts.html#changePermissions">Check the following section on this page</a>, knowing that each <tt>[Black Tulip] ASSET</tt> refers to the following scripts:<br />
<br />
<tt>[Black Tulip] Simple Music Box - Basic Edition</tt><br />
<tt>[Black Tulip] Simple Music Box - Basic Edition [MODULE]</tt><br />
<br />
<a name="examineSampleObject"></a><br />
<h2>SETUP: EXAMINING THE SAMPLE OBJECT</h2><br />
Rez the sample <tt>[Black Tulip] Simple Music Box - Sample Object</tt> from your box. It will load the configuration and output owner-say messages like the following (memory report for yours may vary):<br />
<br />
<pre>[15:30] [Black Tulip] Simple Music Box - Sample Object: Reading configuration notecard...
[15:30] [Black Tulip] Simple Music Box - Sample Object: Read configuration: Done. Free memory for the script: 39250 bytes
</pre><br />
Once we read the <i>Read configuration: Done</i>, we may proceed to click the object in order to bring up a menu.<br />
<br />
So, click it. As soon as you click it, you have a menu showing with the following options:<br />
<br />
<pre>[Stop/Play] [Volume] [*RESET*]
[Access] [---] [Close]</pre><br />
Using this is very simple. Clicking <i>Stop/Play</i>, the current song will start/stop and IF there are spinning parts defined (as the documentation explains below), the spinning parts will move when the song is playing, and stop once the song finishes.<br />
<br />
<i>*RESET*</i> will ask us for confirmation to reset the script. Only the owner of the object is able to perform this operation.<br />
<br />
By clicking <i>Volume</i> we get the following secondary menu to change the volume of the sounds played:<br />
<br />
<pre>[Off] [10%] [25%]
[50%] [75%] [100%]
[^Up] [---] [Close]</pre><br />
Then finally by clicking <i>Access</i> in the main menu we get the following menu, which allows us to change who will be able to access to the menu and thus pick a song, play/stop them and change the volume:<br />
<br />
<pre>[Everybody] [Owner only] [Group]
[^Up] [---] [Close]</pre><br />
How do we set up our furniture/items to make this work? We'll see it by inspecting the sample object in detail.<br />
<br />
Right click the object to edit, then click the "Content" tab. When we do this, we're inspecting the contents of the ROOT PRIM. You should see:<br />
<br />
<ul><li>The <tt>[Black Tulip] Simple Music Box - Basic Edition</tt> script.</li>
<li>The <tt>[Black Tulip] Simple Music Box ~config~</tt> configuration notecard</li>
<li>Several sample soundclips.</li>
</ul><br />
What does this mean? That the script and sound clips, have to be dropped into the ROOT PRIM. This is the default when we simply right click an object, then select "Edit" from the menu.<br />
<br />
Having this clear, now let's examine the sample object in detail. It consists of several linked prims: The music box parts, little engine pieces and a winding key. Right click to edit, click "Edit linked", and now:<br />
<br />
<ul><li>Inspect the winding key's description. It says:</li>
</ul><br />
<tt><b>spinPrim;<1.0,0.0,0.0>;1.0;1.0</b></tt><br />
<br />
What does this description mean? That's what we cover in the next section.<br />
<br />
<a name="setupSpinningParts"></a><br />
<h2>SETUP: HOW TO SET UP THE SPINNING PARTS</h2><br />
As you can check in the sample <tt>[Black Tulip] Simple Music Box - Sample Object</tt> object, this script allows you to ALSO rotate, by spinning, all the child prims you wish to rotate. You could also make the root prim to rotate. Perhaps this is not what you would like anyway, but feel free to make a copy of your object and try this if you're curious about :-) (basically, it will make the whole object to spin around the root)<br />
<br />
We have to begin by rezzing our object.<br />
Set the rotation of the ROOT PRIM to:<br />
<br />
<pre>X = 0.00
Y = 0.00
Z = 0.00</pre><br />
Don't worry if your object doesn't look like you have designed it. You will be able of rotating it again as you wish ONCE you have gathered the values for the spin vectors.<br />
<br />
Rez the <tt>[Black Tulip] My Music Box - Sample Object</tt> sample object to follow this explanation. Pay special attention to the sections of the diagram that are highlighted.<br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh5fa533X5vSRRoeQ88UC1I989mYQnlA47ZQ4E4xHvQWOI0Px3KILqecBR48KXe7xlBd-ZBFBk4pncIVcn33cGKnp-K9Y2gYymD8ZhSgf9y-ID8UsYK3WxxarVb-Nmr4U0TaHzYXnAj1Tk/s1600/%5BBlack+Tulip%5D+Setting+the+rotation+-+0_4x3.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh5fa533X5vSRRoeQ88UC1I989mYQnlA47ZQ4E4xHvQWOI0Px3KILqecBR48KXe7xlBd-ZBFBk4pncIVcn33cGKnp-K9Y2gYymD8ZhSgf9y-ID8UsYK3WxxarVb-Nmr4U0TaHzYXnAj1Tk/s640/%5BBlack+Tulip%5D+Setting+the+rotation+-+0_4x3.png" /></a></div><br />
Set its root rotation as said above:<br />
<br />
<pre>X = 0.00
Y = 0.00
Z = 0.00</pre><br />
Now go into <i>Edit linked parts</i>. Click the winding key.<br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiPYfBtaafcu6aDMlfOJeio1pA-CDofkEobp26fndnJn7L5057qjjcXnVtr5bmMYrTw8X9oxslDLnpKnUPyDR0ilibo7peEukMN8KiaLv1JIkOwvDFG_VD8Vm-_wTKKQMD60zd5xVwmCbA/s1600/%5BBlack+Tulip%5D+Setting+the+rotation+-+1_4x3.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiPYfBtaafcu6aDMlfOJeio1pA-CDofkEobp26fndnJn7L5057qjjcXnVtr5bmMYrTw8X9oxslDLnpKnUPyDR0ilibo7peEukMN8KiaLv1JIkOwvDFG_VD8Vm-_wTKKQMD60zd5xVwmCbA/s640/%5BBlack+Tulip%5D+Setting+the+rotation+-+1_4x3.png" /></a></div><br />
Check its description field. It says:<br />
<br />
<tt><b>spinPrim;<0.0,0.0,1.0>;1.0;1.0</b></tt><br />
<br />
What does this mean?<br />
<br />
The first that we have to know is that the script will read the semicolons (;) and take all the values between them.<br />
So in the case above:<br />
<br />
<tt><b>spinPrim;<0.0,0.0,1.0>;1.0;1.0</b></tt><br />
<br />
we see that there are FOUR pieces of information:<br />
<br />
<pre>spinPrim
<0.0,0.0,1.0>
1.0
1.0</pre><br />
It is VERY IMPORTANT the order these values appear! If they don't appear in this exact order, the script won't be able to read the values of the prim we want to spin.<br />
<br />
What each of those values mean?<br />
<br />
First one:<br />
<br />
<tt><b>spinPrim</b></tt><br />
<br />
means that the script has to consider this prim as a spinning one. The word has to be written exactly as said above. <b>It IS case sensitive!</b><br />
<br />
The second one:<br />
<br />
<tt><b><0.0,0.0,1.0></b></tt><br />
<br />
is the <i>spin vector</i>. Don't worry, it is explained after this how to obtain it correctly.<br />
<br />
The third one:<br />
<br />
<tt><b>1.0</b></tt><br />
<br />
is the <i>spin rate</i> value. It is a number with decimals that, to make it easy to understand, we can think of as <i>the velocity</i>, so the smaller the value we type in, the slower the piece will spin and the reverse.<br />
<br />
and the last one:<br />
<br />
<tt><b>1.0</b></tt><br />
<br />
might be complicated to understand and, anyway, it doesn't make sense if our prims are not physical. Since this last one can be very technical, we will leave it always as 1.0. If you have the knowledge to follow the explanations from the wiki, then you can learn more about it in this wiki page: <a href="http://wiki.secondlife.com/wiki/LlTargetOmega">http://wiki.secondlife.com/wiki/LlTargetOmega</a><br />
<br />
This last value corresponds to the <i>gain</i> parameter the wiki mentions there.<br />
<br />
And how the spin vector has been obtained?<br />
<br />
With the object having the root rotation set to <0.00 ,0.00, 0.00> (as stated above), and being in <b>WORLD COORDINATES</b> mode, we choose the axis we want the object rotating around.<br />
<br />
<ul><li>If the axis is X, the RED one, we write the spin vector as: <tt><1.0, 0.0, 0.0></tt></li>
<li>If the axis is Y, the GREEN one, we write the spin vector as: <tt><0.0, 1.0, 0.0></tt></li>
<li>If the axis is Z, the BLUE one, we write the spin vector as: <tt><0.0, 0.0, 1.0></tt></li>
</ul><br />
<a name="configurationNotecard"></a><br />
<h2>SETUP: THE CONFIGURATION NOTECARD</h2><br />
The configuration notecard is named <tt>[Black Tulip] Simple Music Box ~config~</tt> and needs to be written to provide all the data we want to:<br />
<br />
<ul><li>Specify the sample duration of the song</li>
</ul><br />
This data needs to be written in a specific way, so let's examine the <tt>[Black Tulip] Simple Music Box ~config~</tt> notecard.<br />
<br />
The lines beginning by:<br />
<br />
<tt><b>#</b></tt><br />
<br />
are comments in the notecard.<br />
<br />
They give important reminders, so don't delete them unless you don't need them. Comment lines won't use more script memory. Comment lines won't make your script laggier. Comment lines won't make your script work slower.<br />
<br />
So it is OKAY if you leave them for your own reference. The comments in the notecard from your package explain all the parameters: You may want to leave those comments.<br />
<br />
The sample notecard shows as:<br />
<br />
<pre># [Black Tulip] Simple Music Box ~config~
#
# SampleDuration = N
# Sample duration, in seconds, for the samples of that specific song
# A default value of 9.5 will be provided if the value is not
# in the range [0.1, 9.95] (10.0 won't be accepted - for your safety)
SampleDuration = 9.5</pre><br />
After all the comment lines, we find the following:<br />
<br />
<tt><b>SampleDuration = 9.5</b></tt><br />
<br />
So as the notecard says, it is the sample duration, in seconds, for the samples of that specific song. A default value of 9.5 will be provided if the value is not in the range [0.1, 9.95]<br />
<br />
<a name="purchasingSongs"></a><br />
<h2>WHERE DO I PURCHASE SONGS?</h2><br />
In order to have this item working, you will need, of course, to have songs to work with!<br />
<br />
You can always check the Second Life Marketplace for songs. I sell some public domain, full permissions songs that you may use in items you create, at my main store.<br />
<br />
But then, you can create yourself the samples you need and upload them. I explain all the procedure in the <a href="https://marketplace.secondlife.com/p/Class-In-A-Box-Music-Book-Format/1646893">"Music!" book, which you can purchase in Marketplace</a> or inworld.<br />
<br />
This might be, perhaps, the best choice: that you look for public domain sources and you create your own samples. Be careful and do not use songs that have copyright!<br />
<br />
<a name="setupModule"></a><br />
<h2>SETUP: THE MAIN SCRIPT, AS A MODULE YOU CAN USE FROM ANOTHER SCRIPT</h2><a href="http://blacktulip-scripts.blogspot.com/p/common-parts.html#setupModule">Check the following section on this page</a>, knowing that:<br />
<br />
<tt>[Black Tulip] ***Script Name*** [MODULE]</tt> refers to <tt>[Black Tulip] Simple Music Box - Basic Edition [MODULE]</tt><br />
<tt>CODE_NUMBER</tt> is <tt>-18640985</tt><br />
<tt>NAME_ON_MENU</tt> is <tt>Music</tt><br />
<br />
AVSitter line looks like: <tt>BUTTON Music|-18640985</tt><br />
MLP line looks like: <tt>LINKMSG Music | 1,-4,-18640985,fromMLP</tt><br />
<br />
You have example AVpos and .MENUITEMS notecards with your purchase. Remember that this works too with AVSitter 2.<br />
<br />
<br />
If you run into any problem with this script, please <a href="http://blacktulip-store.blogspot.com/2013/06/script-assistance-form.html">give a complete description of your issue in the following online form</a>.<br />
<br />
I'll get back to you after I have read your report and replicated your issue inworld, according to your description of it. Please, be detailed.<br />
<br />
-- Auryn Beorn<br />
Auryn Beornhttp://www.blogger.com/profile/02832014326094809370noreply@blogger.comtag:blogger.com,1999:blog-2947025942912354529.post-33449061404439042842014-10-31T03:16:00.000-07:002014-11-12T10:37:30.737-08:00Script: My Music Box - Basic Edition<h2>[Black Tulip] My Music Box (Basic Edition) - for Builders</h2>(c) 2012 Auryn Beorn<br />
<br />
<a href="https://marketplace.secondlife.com/p/Black-Tulip-Script-My-Music-Box-Basic-Edition/3747357">My Music Box (Basic Edition) in Marketplace.</a><br />
<br />
Thank you for having considered this script to enhance the quality of your products. Please read the following instructions carefully, especially the ones explaining which permissions to apply to the scripts for the next owner. Failure to complete this task INVALIDATES the license governing your use of this set of scripts. Should you have problems, please <a href="http://blacktulip-store.blogspot.com/2013/06/script-assistance-form.html">fill the scripts assistance form, explaining what you did and what happened</a>, and I'll get back to you.<br />
<br />
<h2>TABLE OF CONTENTS</h2><ul><li><a href="#features">FEATURES</a></li>
<li>SET UP<br />
<ul><li><a href="#whatScriptToUse">WHAT SCRIPT TO USE?</a></li>
<li><a href="#changePermissions">CHANGE PERMISSIONS FOR NEXT OWNER</a></li>
<li><a href="#examineSampleObject">EXAMINING THE SAMPLE OBJECT</a></li>
<li><a href="#descriptionsFormat">FORMAT OF THE DESCRIPTIONS</a></li>
<li><a href="#setupSpinningParts">HOW TO SET UP THE SPINNING PARTS</a></li>
<li><a href="#configurationNotecard">THE CONFIGURATION NOTECARD</a></li>
</ul></li>
<li><a href="#purchasingSongs">WHERE DO I PURCHASE SONGS?</a></li>
<li><a href="#setupModule">THE MAIN SCRIPT, AS A MODULE YOU CAN USE FROM ANOTHER SCRIPT</a></li>
</ul><br />
<a name="features"></a><br />
<h2>FEATURES</h2><br />
<ul><li>Notecard configuration for the songs</li>
<li>It allows each song having different sample duration (i.e., a song may have its samples being 9.5 seconds and another song have its samples being 9.8 seconds)</li>
<li>Many songs and spinning prims can be safely included (check below)</li>
<li>Volume is changed via menu</li>
<li>Menu timeout to reduce lag - no open listeners after timeout (0.001 ms script time when idle)</li>
<li>Final user can change access to owner only/everybody/group</li>
<li>Menu can be integrated into tools such as MLPv2, AVsitter... (AVsitter version 2 works too!)</li>
</ul><br />
Although one would never require the 256 prims a linkset may have, to spin, if we reach this (very) extreme value, we may still add safely up to 50 songs. But normally, we will not need to use more than 20 prims spinning, so in this case, we may add safely up to 100 songs. The rule is simple: the more prims spinning, the less available memory for songs, and the reverse.<br />
<br />
<a name="whatScriptToUse"></a><br />
<h2>SET UP: WHAT SCRIPT TO USE?</h2><br />
There are two scripts contained in your folder:<br />
<br />
<pre>[Black Tulip] My Music Box - Basic Edition
[Black Tulip] My Music Box - Basic Edition [MODULE]</pre><br />
We need to use ONLY ONE of them in a given product.<br />
<br />
Which one? How to choose?<br />
<br />
The <tt><b>[MODULE]</b></tt> version, as explained in the <a href="#setupModule">THE MAIN SCRIPT, AS A MODULE YOU CAN USE FROM ANOTHER SCRIPT</a> section, will allow you to use this script integrated with other scripts that allow sending linked messages, such as the Multi Love Pose (MLP) or AVSitter for multiavatar, multianimation devices.<br />
<br />
So, depending on what we need, we'll use the following script as main one:<br />
<br />
Normal use - We want the menu to show <b>when the object is clicked</b>:<br />
[Black Tulip] My Music Box - Basic Edition<br />
<br />
The menu should show up <b>after clicking a button from another script</b>, like MLP, AVSitter:<br />
[Black Tulip] My Music Box - Basic Edition [MODULE]<br />
<br />
Once we've chosen the right main script, we have to set some descriptions in the primitives of the object, following the instructions below.<br />
<br />
<a name="changePermissions"></a><br />
<h2>SETUP: CHANGE PERMISSIONS FOR NEXT OWNER</h2><br />
<a href="http://blacktulip-scripts.blogspot.com/p/common-parts.html#changePermissions">Check the following section on this page</a>, knowing that each <tt>[Black Tulip] ASSET</tt> refers to the following scripts:<br />
<br />
<tt>[Black Tulip] My Music Box - Basic Edition</tt><br />
<tt>[Black Tulip] My Music Box - Basic Edition [MODULE]</tt><br />
<br />
<a name="examineSampleObject"></a><br />
<h2>SETUP: EXAMINING THE SAMPLE OBJECT</h2><br />
Rez the sample <tt>[Black Tulip] My Music Box - Sample Object</tt> from your box. It will load the configuration and output owner-say messages like the following (memory report for yours may vary):<br />
<br />
<pre>[15:30] [Black Tulip] My Music Box - Sample Object: Reading configuration notecard...
[15:30] [Black Tulip] My Music Box - Sample Object: Read configuration: Done. Free memory for the script: 29910 bytes</pre><br />
Once we read the <i>Read configuration: Done</i>, we may proceed to click the object in order to bring up a menu.<br />
<br />
So, click it. As soon as you click it, you have a menu showing with the following options:<br />
<br />
<pre>[Prev Song] [Stop/Play] [Next Song]
[Pick Song] [Volume] [*RESET*]
[Access] [---] [Close]</pre><br />
Using this is very simple. Clicking <i>Stop/Play</i>, the current song will start/stop and IF there are spinning parts defined (as the documentation explains below), the spinning parts will move when the song is playing, and stop once the song finishes.<br />
<br />
By clicking <i>Prev Song</i> we change the current song to be played upon click <i>Stop/Play</i> to the previous one in the list (and if there was a song playing, it will stop to let this previous one begin.)<br />
<br />
<i>Next Song</i> has the same effect but to change to the next song on the list.<br />
<br />
<i>*RESET*</i> will ask us for confirmation to reset the script. Only the owner of the object is able to perform this operation.<br />
<br />
By clicking <i>Pick Song</i> we get to a secondary menu that will show a list of songs and some information about each song, and buttons that are simply numbers to let us choose one song from the list.<br />
<br />
By clicking <i>Volume</i> we get the following secondary menu to change the volume of the sounds played:<br />
<br />
<pre>[Off] [10%] [25%]
[50%] [75%] [100%]
[^Up] [---] [Close]</pre><br />
Then finally by clicking <i>Access</i> in the main menu we get the following menu, which allows us to change who will be able to access to the menu and thus pick a song, play/stop them and change the volume:<br />
<br />
<pre>[Everybody] [Owner only] [Group]
[^Up] [---] [Close]</pre><br />
How do we set up our furniture/items to make this work? We'll see it by inspecting the sample object in detail.<br />
<br />
Right click the object to edit, then click the "Content" tab. When we do this, we're inspecting the contents of the ROOT PRIM. You should see:<br />
<br />
<ul><li>The "[Black Tulip] My Music Box - Basic Edition" script.</li>
<li>The <tt>[Black Tulip] Songs Config</tt> configuration notecard</li>
<li>Several sample soundclips.</li>
</ul><br />
What does this mean? That the script and sound clips, have to be dropped into the ROOT PRIM. This is the default when we simply right click an object, then select "Edit" from the menu.<br />
<br />
Having this clear, now let's examine the sample object in detail. It consists of several linked prims: The music box parts, little engine pieces and a winding key. Right click to edit, click "Edit linked", and now:<br />
<br />
<ul><li>Inspect the winding key's description. It says:</li>
</ul><br />
<tt><b>spinPrim;<1.0,0.0,0.0>;1.0;1.0</b></tt><br />
<br />
What does this description mean? That's what we cover in the next section.<br />
<br />
<a name="setupSpinningParts"></a><br />
<h2>SETUP: HOW TO SET UP THE SPINNING PARTS</h2><br />
As you can check in the sample <tt>[Black Tulip] My Music Box - Sample Object</tt> object, this script allows you to ALSO rotate, by spinning, all the child prims you wish to rotate (until you hit the script's memory limit - don't worry, this won't happen with five/ten spinning prims). You could also make the root prim to rotate. Perhaps this is not what you would like anyway, but feel free to make a copy of your object and try this if you're curious about :-) (basically, it will make the whole object to spin around the root)<br />
<br />
We have to begin by rezzing our object.<br />
Set the rotation of the ROOT PRIM to:<br />
<br />
<pre>X = 0.00
Y = 0.00
Z = 0.00</pre><br />
Don't worry if your object doesn't look like you have designed it. You will be able of rotating it again as you wish ONCE you have gathered the values for the spin vectors.<br />
<br />
Rez the <tt>[Black Tulip] My Music Box - Sample Object</tt> sample object to follow this explanation. Pay special attention to the sections of the diagram that are highlighted.<br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh5fa533X5vSRRoeQ88UC1I989mYQnlA47ZQ4E4xHvQWOI0Px3KILqecBR48KXe7xlBd-ZBFBk4pncIVcn33cGKnp-K9Y2gYymD8ZhSgf9y-ID8UsYK3WxxarVb-Nmr4U0TaHzYXnAj1Tk/s1600/%5BBlack+Tulip%5D+Setting+the+rotation+-+0_4x3.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh5fa533X5vSRRoeQ88UC1I989mYQnlA47ZQ4E4xHvQWOI0Px3KILqecBR48KXe7xlBd-ZBFBk4pncIVcn33cGKnp-K9Y2gYymD8ZhSgf9y-ID8UsYK3WxxarVb-Nmr4U0TaHzYXnAj1Tk/s640/%5BBlack+Tulip%5D+Setting+the+rotation+-+0_4x3.png" /></a></div><br />
Set its root rotation as said above:<br />
<br />
<pre>X = 0.00
Y = 0.00
Z = 0.00</pre><br />
Now go into <i>Edit linked parts</i>. Click the winding key.<br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiPYfBtaafcu6aDMlfOJeio1pA-CDofkEobp26fndnJn7L5057qjjcXnVtr5bmMYrTw8X9oxslDLnpKnUPyDR0ilibo7peEukMN8KiaLv1JIkOwvDFG_VD8Vm-_wTKKQMD60zd5xVwmCbA/s1600/%5BBlack+Tulip%5D+Setting+the+rotation+-+1_4x3.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiPYfBtaafcu6aDMlfOJeio1pA-CDofkEobp26fndnJn7L5057qjjcXnVtr5bmMYrTw8X9oxslDLnpKnUPyDR0ilibo7peEukMN8KiaLv1JIkOwvDFG_VD8Vm-_wTKKQMD60zd5xVwmCbA/s640/%5BBlack+Tulip%5D+Setting+the+rotation+-+1_4x3.png" /></a></div><br />
Check its description field. It says:<br />
<br />
<tt><b>spinPrim;<0.0,0.0,1.0>;1.0;1.0</b></tt><br />
<br />
What does this mean?<br />
<br />
The first that we have to know is that the script will read the semicolons (;) and take all the values between them.<br />
So in the case above:<br />
<br />
<tt><b>spinPrim;<0.0,0.0,1.0>;1.0;1.0</b></tt><br />
<br />
we see that there are FOUR pieces of information:<br />
<br />
<pre>spinPrim
<0.0,0.0,1.0>
1.0
1.0</pre><br />
It is VERY IMPORTANT the order these values appear! If they don't appear in this exact order, the script won't be able to read the values of the prim we want to spin.<br />
<br />
What each of those values mean?<br />
<br />
First one:<br />
<br />
<tt><b>spinPrim</b></tt><br />
<br />
means that the script has to consider this prim as a spinning one. The word has to be written exactly as said above. <b>It IS case sensitive!</b><br />
<br />
The second one:<br />
<br />
<tt><b><0.0,0.0,1.0></b></tt><br />
<br />
is the <i>spin vector</i>. Don't worry, it is explained after this how to obtain it correctly.<br />
<br />
The third one:<br />
<br />
<tt><b>1.0</b></tt><br />
<br />
is the <i>spin rate</i> value. It is a number with decimals that, to make it easy to understand, we can think of as <i>the velocity</i>, so the smaller the value we type in, the slower the piece will spin and the reverse.<br />
<br />
and the last one:<br />
<br />
<tt><b>1.0</b></tt><br />
<br />
might be complicated to understand and, anyway, it doesn't make sense if our prims are not physical. Since this last one can be very technical, we will leave it always as 1.0. If you have the knowledge to follow the explanations from the wiki, then you can learn more about it in this wiki page: <a href="http://wiki.secondlife.com/wiki/LlTargetOmega">http://wiki.secondlife.com/wiki/LlTargetOmega</a><br />
<br />
This last value corresponds to the <i>gain</i> parameter the wiki mentions there.<br />
<br />
And how the spin vector has been obtained?<br />
<br />
With the object having the root rotation set to <0.00 ,0.00, 0.00> (as stated above), and being in <b>WORLD COORDINATES</b> mode, we choose the axis we want the object rotating around.<br />
<br />
<ul><li>If the axis is X, the RED one, we write the spin vector as: <tt><1.0, 0.0, 0.0></tt></li>
<li>If the axis is Y, the GREEN one, we write the spin vector as: <tt><0.0, 1.0, 0.0></tt></li>
<li>If the axis is Z, the BLUE one, we write the spin vector as: <tt><0.0, 0.0, 1.0></tt></li>
</ul><br />
<a name="configurationNotecard"></a><br />
<h2>SETUP: THE CONFIGURATION NOTECARD</h2><br />
The configuration notecard is named <tt>[Black Tulip] My Music Box - Songs Config</tt> and needs to be written to provide all the data we want to:<br />
<br />
<ul><li>Specify which samples compose a full song</li>
<li>Specify which name we want showing up on the menu for each song</li>
<li>Specify the sample duration per song</li>
<li>Say if we want the script to be silent or, on the contrary, to whisper in local chat the title of the selected song</li>
</ul><br />
(No other mode than whisper is allowed to prevent spamming avatars around that, most likely, won't be interested in knowing about songs being played.)<br />
<br />
This data needs to be written in a specific way, so let's examine the <tt>[Black Tulip] Songs Config</tt> notecard.<br />
<br />
The lines beginning by:<br />
<br />
<tt><b>#</b></tt><br />
<br />
are comments in the notecard.<br />
<br />
They give important reminders, so don't delete them unless you don't need them. Comment lines won't use more script memory. Comment lines won't make your script laggier. Comment lines won't make your script work slower.<br />
<br />
So it is OKAY if you leave them for your own reference. The comments in the notecard from your package explain all the parameters: You may want to leave those comments.<br />
<br />
The sample notecard (not the one in the sample object) shows as:<br />
<br />
<pre># [Black Tulip] My Music Box - Songs Config
#
# SaySongInChat = M
# M can be 0 or 1
# 0 for a silent script
# 1 for the script whispering in local chat the title of the song being played
#
# Put as many of the follow lines as songs you wish to offer - Limit: 100
# Song = BaseName | TitleMenu | SampleDuration
# BaseName The base name all the samples for a same song share
# TitleMenu The title we want appearing in the menu to select song
# Max: 35 characters
# SampleDuration Sample duration, in seconds, for the samples of that specific song
# A default value of 9.5 will be provided if the value is not
# in the range [0.1, 9.95] (10.0 won't be accepted - for your safety)
SaySongInChat = 0
Song = BaseName | TitleMenu | SampleDuration</pre><br />
After all the comment lines, we find the following:<br />
<br />
<tt><b>SaySongInChat = 0</b></tt><br />
<br />
This means that the script will NOT say anything when a song is played. If we wish to have the script <i>whispering</i> which song is going to be played once selected, we would write instead:<br />
<br />
<tt><b>SaySongInChat = 1</b></tt><br />
<br />
And then the lines that would define the songs. We should write ONE line with the following format PER SONG:<br />
<br />
<tt><b>Song = BaseName | TitleMenu | SampleDuration</b></tt><br />
<br />
What do <tt>BaseName</tt>, <tt>TitleMenu</tt> and <tt>SampleDuration</tt> mean here?<br />
<br />
<b>BaseName</b><br />
This is the base name all the samples for a same song share. This will be clear with an example.<br />
<br />
Let's suppose we have a song composed of five samples, named:<br />
<pre>Little_Black_Rain_Cloud-0
Little_Black_Rain_Cloud-1
Little_Black_Rain_Cloud-2
Little_Black_Rain_Cloud-3
Little_Black_Rain_Cloud-4</pre><br />
By writing the following line in the configuration notecard:<br />
<br />
<tt><b>Song = Little_Black_Rain_Cloud- | Little Black Rain Cloud | 9.5</b></tt><br />
<br />
we can see that the first part, <tt>BaseName</tt>, says:<br />
<br />
<tt><b>Little_Black_Rain_Cloud-</b></tt><br />
<br />
The script will look for all the samples in your object with name beginning by <tt><b>Little_Black_Rain_Cloud-</b></tt> and will find all the samples mentioned above, so internally, it will know that the five samples above are all part of the same song.<br />
<br />
<b>IMPORTANT:</b> All spaces around the specified name in the notecard will be DISCARDED. This has consequences. If your samples are, for example:<br />
<pre>Little_Black_Rain_Cloud 0
Little_Black_Rain_Cloud 1
Little_Black_Rain_Cloud 2</pre><br />
and you specify in the notecard:<br />
<br />
<tt><b>Song = Little_Black_Rain_Cloud | Little Black Rain Cloud | 9.5</b></tt><br />
<br />
this would make the script to look for sample names like:<br />
<pre>Little_Black_Rain_Cloud0
Little_Black_Rain_Cloud1
Little_Black_Rain_Cloud2</pre><br />
and not like:<br />
<pre>Little_Black_Rain_Cloud 0
Little_Black_Rain_Cloud 1
Little_Black_Rain_Cloud 2</pre><br />
Rename your samples accordingly before running into this issue. Usually, all songs you purchase will have names that won't be a problem in this regard.<br />
<br />
<b>TitleMenu</b><br />
The title we want appearing in the menu to select song.<br />
Max: 35 characters - Longer titles will be cut to fit this<br />
<br />
Continuing with the sample line said above:<br />
<br />
<tt><b>Song = Little_Black_Rain_Cloud | Little Black Rain Cloud | 9.5</b></tt><br />
<br />
we find<br />
<br />
<tt><b>Little Black Rain Cloud</b></tt><br />
<br />
as value for <tt>TitleMenu</tt>, so this will be shown in the menu as the title for that song.<br />
<br />
<b>SampleDuration</b><br />
Sample duration, in seconds, for the samples of that specific song.<br />
A default value of 9.5 will be provided if the value is not in the range [0.1, 9.95] (10.0 won't be accepted - for your safety)<br />
<br />
In the sample line we're using to explain this:<br />
<br />
<tt><b>Song = Little_Black_Rain_Cloud | Little Black Rain Cloud | 9.5</b></tt><br />
<br />
we are saying that all the samples that are part of this song have a duration of 9.5 seconds. Since this value is in the allowed range for the script (greater or equal than 0.1 AND less or equal than 9.95), it will be accepted as the sample duration - for that one song.<br />
<br />
<a name="purchasingSongs"></a><br />
<h2>WHERE DO I PURCHASE SONGS?</h2><br />
In order to have this item working, you will need, of course, to have songs to work with!<br />
<br />
You can always check the Second Life Marketplace for songs. I sell some public domain, full permissions songs that you may use in items you create, at my main store.<br />
<br />
But then, you can create yourself the samples you need and upload them. I explain all the procedure in the <a href="https://marketplace.secondlife.com/p/Class-In-A-Box-Music-Book-Format/1646893">"Music!" book, which you can purchase in Marketplace</a> or inworld.<br />
<br />
This might be, perhaps, the best choice: that you look for public domain sources and you create your own samples. Be careful and do not use songs that have copyright!<br />
<br />
<a name="setupModule"></a><br />
<h2>SETUP: THE MAIN SCRIPT, AS A MODULE YOU CAN USE FROM ANOTHER SCRIPT</h2><a href="http://blacktulip-scripts.blogspot.com/p/common-parts.html#setupModule">Check the following section on this page</a>, knowing that:<br />
<br />
<tt>[Black Tulip] ***Script Name*** [MODULE]</tt> refers to <tt>[Black Tulip] My Music Box - Basic Edition [MODULE]</tt><br />
<tt>CODE_NUMBER</tt> is <tt>-18640985</tt><br />
<tt>NAME_ON_MENU</tt> is <tt>Music</tt><br />
<br />
AVSitter line looks like: <tt>BUTTON Music|-18640985</tt><br />
MLP line looks like: <tt>LINKMSG Music | 1,-4,-18640985,fromMLP</tt><br />
<br />
You have example AVpos and .MENUITEMS notecards with your purchase. Remember that this works too with AVSitter 2.<br />
<br />
<br />
If you run into any problem with this script, please <a href="http://blacktulip-store.blogspot.com/2013/06/script-assistance-form.html">give a complete description of your issue in the following online form</a>.<br />
<br />
I'll get back to you after I have read your report and replicated your issue inworld, according to your description of it. Please, be detailed.<br />
<br />
-- Auryn Beorn<br />
Auryn Beornhttp://www.blogger.com/profile/02832014326094809370noreply@blogger.comtag:blogger.com,1999:blog-2947025942912354529.post-52599345727809352782014-10-24T17:27:00.000-07:002014-11-23T16:51:30.478-08:00Script: My Snowglobe - Basic Edition<h2>[Black Tulip] Snowglobe - Basic Edition (Script for Designers)</h2>(c) 2014 Auryn Beorn<br />
<br />
<a href="https://marketplace.secondlife.com/p/Black-Tulip-Script-Snowglobe-Basic-Edition-MESH/6570677">Snowglobe Basic script in Marketplace.</a><br />
<br />
Thank you for having considered this script to enhance the quality of your products. Please read the following instructions carefully, especially the ones explaining which permissions to apply to the scripts for the next owner. Failure to complete this task INVALIDATES the license governing your use of this set of scripts. Should you have problems, please <a href="http://blacktulip-store.blogspot.com/2013/06/script-assistance-form.html">fill the scripts assistance form, explaining what you did and what happened</a>, and I'll get back to you.<br />
<br />
<b>IMPORTANT!</b><br />
The script contains a check to prevent accidental give-aways. If you haven't set permissions correctly in your inventory, then the script will self delete when you try to use it. The best way to ensure you set permissions correctly is by doing it NOW in your inventory.<br />
<br />
<h2>TABLE OF CONTENTS</h2><ul><li><a href="#features">FEATURES</a></li>
<li>SET UP<br />
<ul><li><a href="#whatScriptToUse">WHAT SCRIPT TO USE?</a></li>
<li><a href="#changePermissions">CHANGE PERMISSIONS FOR NEXT OWNER</a></li>
<li><a href="#examineSampleObject">EXAMINING THE SAMPLE OBJECT</a></li>
<li><a href="#descriptionsFormat">FORMAT OF THE DESCRIPTIONS</a></li>
<li><a href="#setupSpinningParts">HOW TO SET UP THE SPINNING PARTS</a></li>
<li><a href="#snowParticlesNotes">IMPORTANT NOTES ABOUT THE SNOW PARTICLES</a></li>
</ul></li>
<li><a href="#setupModule">THE MAIN SCRIPT, AS A MODULE YOU CAN USE FROM ANOTHER SCRIPT</a></li>
<li><a href="#troubleshooting">TROUBLESHOOTING</a></li>
</ul><br />
<a name="features"></a><br />
<h2>FEATURES</h2><br />
<ul><li>Start/Stop at the same time:<br />
Light, Spin Parts (keys, stars...), Particles Snow, Animated Texture</li>
<li>Start/Stop those effects independently when the global effect is ON</li>
<li>Change the light color</li>
<li>Change the animated texture type (slide/rotate) - Global setting</li>
<li>Change the speed of the animated texture - Global setting</li>
<li>Menu timeout to reduce lag - no open listeners after timeout (0.001 ms script time when idle)</li>
<li>Final user can change access to owner only/everybody/group</li>
<li>Menu can be integrated into tools such as MLPv2, AVsitter... (AVsitter version 2 works too!)</li>
</ul><br />
<a name="whatScriptToUse"></a><br />
<h2>SET UP: WHAT SCRIPT TO USE?</h2><br />
There are two scripts contained in your folder:<br />
<br />
<pre>[Black Tulip] Snowglobe - Basic Edition MESH
[Black Tulip] Snowglobe - Basic Edition MESH [MODULE]</pre><br />
We need to use ONLY ONE of them in a given product.<br />
<br />
Which one? How to choose?<br />
<br />
The <tt><b>[MODULE]</b></tt> version, as explained in the <a href="#setupModule">THE MAIN SCRIPT, AS A MODULE YOU CAN USE FROM ANOTHER SCRIPT</a> section, will allow you to use this script integrated with other scripts that allow sending linked messages, such as the Multi Love Pose (MLP) or AVSitter for multiavatar, multianimation devices.<br />
<br />
So, depending on what we need, we'll use the following script as main one:<br />
<br />
Normal use - We want the menu to show <b>when the object is clicked</b>:<br />
[Black Tulip] Snowglobe - Basic Edition MESH<br />
<br />
The menu should show up <b>after clicking a button from another script</b>, like MLP, AVSitter:<br />
[Black Tulip] Snowglobe - Basic Edition MESH [MODULE]<br />
<br />
Once we've chosen the right main script, we have to set some descriptions in the primitives of the object, following the instructions below.<br />
<br />
<a name="changePermissions"></a><br />
<h2>SETUP: CHANGE PERMISSIONS FOR NEXT OWNER</h2><br />
<a href="http://blacktulip-scripts.blogspot.com/p/common-parts.html#changePermissions">Check the following section on this page</a>, knowing that each <tt>[Black Tulip] ASSET</tt> refers to the following scripts:<br />
<br />
<tt>[Black Tulip] Snowglobe - Basic Edition MESH</tt><br />
<tt>[Black Tulip] Snowglobe - Basic Edition MESH [MODULE]</tt><br />
<br />
<a name="examineSampleObject"></a><br />
<h2>SETUP: EXAMINING THE SAMPLE OBJECT</h2><br />
With this script, you may control the following:<br />
<br />
<ul><li>Start/Stop at the same time:<br />
Light, Spin Parts (keys, stars...), Particles Snow, Animated Texture</li>
<li>Start/Stop those effects independently when the global effect is ON</li>
<li>Change the light color</li>
<li>Change the animated texture type (slide/rotate) - Global setting</li>
<li>Change the speed of the animated texture - Global setting</li>
</ul><br />
We'll understand better what this means by examining the <tt>[Black Tulip] Snowglobe - SCRIPTED SAMPLE</tt> object. Rez it, and let's follow this explanation.<br />
<br />
Before anything, right click the object to edit, then click the "Content" tab. When we do this, we're inspecting the contents of the ROOT PRIM. You should see the "[Black Tulip] Snowglobe - Basic Edition MESH" script.<br />
<br />
What does this mean?<br />
That the script and texture for particle effects, if any, have to be dropped into the ROOT PRIM. This is the default when we simply right click an object, then select "Edit" from the menu. The sample object has no particle textures used (and so particles will show as a little dot), but you can drop your texture and set it up as indicated later.<br />
<br />
Having this clear, now let's examine the sample object in detail. It consists of two linked prims: The snowglobe itself, and a winding key. Right click to edit, click "Edit linked", and now:<br />
<br />
<ul><li>Inspect the snowglobe prim. Check its description. It says:</li>
</ul><br />
<tt><b>animTexture;2#snow#light</b></tt><br />
<br />
<ul><li>Inspect now the winding key's description. It says:</li>
</ul><br />
<tt><b>spinPrim;<1.0,0.0,0.0>;1.0;1.0</b></tt><br />
<br />
What do these descriptions mean? That's what we cover in the next section.<br />
<br />
<a name="descriptionsFormat"></a><br />
<h2>SETUP: FORMAT OF THE DESCRIPTIONS</h2><br />
With this script, we may have the following:<br />
<ul><li>One light point</li>
<li>One animated texture point</li>
<li>One particle snow emitter point (please check the "Important notes about the snow particles!" section for more)</li>
<li>As many spinning parts as you could need</li>
</ul><br />
If you rez the sample <tt>[Black Tulip] Snowglobe - SCRIPTED SAMPLE</tt> object and click it to get the menu, you'll see, as soon as you select ON/OFF to start all the effects, that the winding key spins. But there it is only one prim that will be the snow emitter, only one prim that will be the light point, and only one prim that will have the texture animated.<br />
<br />
To tell the script which these primitives are in our LINKED object, we have to write specific words (CASE SENSITIVE) in the DESCRIPTION of each primitive (DESCRIPTION - not the name, don't confuse them!)<br />
<br />
<ul><li>Expected description for a light point: <tt><b>light</b></tt></li>
<li>Expected description for a snow emitter: <tt><b>snow</b></tt></li>
<li>Expected description for an animated texture prim: <tt><b>animTexture;FACE_NUMBER</b></tt> (see here for <a href="http://blacktulip-scripts.blogspot.com/p/common-parts.html#faceNumber">how to get the face number</a> if you don't know how; if you want all sides animated, type -1 as FACE_NUMBER)</li>
<li>Expected description for a spinning part: see the following section, <a href="#setupSpinningParts">HOW TO SET UP THE SPINNING PARTS</a></li>
</ul><br />
We may want a primitive being, at the same time, animated texture AND snow emitter.<br />
Is this possible?<br />
<br />
Yes. The description we should write would be, in that case:<br />
<br />
<tt>animTexture;2#snow</tt><br />
<br />
Does this mean, if we want to have light, snow AND animated texture in the same prim, we could write:<br />
<br />
<tt>animTexture;2#snow#light</tt><br />
<br />
and it would work? YES<br />
<br />
Does this mean, if we want a spinning part AND snow, we could write:<br />
<br />
<tt>spinPrim;<0.0,0.0,1.0>;1.0;1.0#snow</tt><br />
<br />
and it would work? YES<br />
<br />
Does it matter if we write first snow, light or any other? It matters not. Write them as you prefer. Only what specifies how the prim will spin has a very specific format to be respected, but that is explained following.<br />
<br />
And that would be it.<br />
<br />
Set the DESCRIPTIONS according to these simple rules, drop the main script in your linked object, and your snowglobe is ready to go!<br />
<br />
<a name="setupSpinningParts"></a><br />
<h2>SETUP: HOW TO SET UP THE SPINNING PARTS</h2><br />
As you can check in the sample <tt>[Black Tulip] Snowglobe - SCRIPTED SAMPLE</tt> object, this script allows you to ALSO rotate, by spinning, all the child prims you wish to rotate (until you hit the script's memory limit - don't worry, this won't happen with five/ten spinning prims). You could also make the root prim to rotate. Perhaps this is not what you would like anyway, but feel free to make a copy of your object and try this if you're curious about :-) (basically, it will make the whole object to spin around the root)<br />
<br />
We have to begin by rezzing our object.<br />
Set the rotation of the ROOT PRIM to:<br />
<br />
<pre>X = 0.00
Y = 0.00
Z = 0.00</pre><br />
Don't worry if your object doesn't look like you have designed it. You will be able of rotating it again as you wish ONCE you have gathered the values for the spin vectors.<br />
<br />
Rez the <tt>[Black Tulip] Snowglobe - SCRIPTED SAMPLE</tt> sample object to follow this explanation. The captures are taken with a different object, but the principle is the same: pay special attention to the sections of the diagram that are highlighted.<br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh5fa533X5vSRRoeQ88UC1I989mYQnlA47ZQ4E4xHvQWOI0Px3KILqecBR48KXe7xlBd-ZBFBk4pncIVcn33cGKnp-K9Y2gYymD8ZhSgf9y-ID8UsYK3WxxarVb-Nmr4U0TaHzYXnAj1Tk/s1600/%5BBlack+Tulip%5D+Setting+the+rotation+-+0_4x3.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh5fa533X5vSRRoeQ88UC1I989mYQnlA47ZQ4E4xHvQWOI0Px3KILqecBR48KXe7xlBd-ZBFBk4pncIVcn33cGKnp-K9Y2gYymD8ZhSgf9y-ID8UsYK3WxxarVb-Nmr4U0TaHzYXnAj1Tk/s640/%5BBlack+Tulip%5D+Setting+the+rotation+-+0_4x3.png" /></a></div><br />
Set its root rotation as said above:<br />
<br />
<pre>X = 0.00
Y = 0.00
Z = 0.00</pre><br />
Now go into <i>Edit linked parts</i>. Click the winding key.<br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiPYfBtaafcu6aDMlfOJeio1pA-CDofkEobp26fndnJn7L5057qjjcXnVtr5bmMYrTw8X9oxslDLnpKnUPyDR0ilibo7peEukMN8KiaLv1JIkOwvDFG_VD8Vm-_wTKKQMD60zd5xVwmCbA/s1600/%5BBlack+Tulip%5D+Setting+the+rotation+-+1_4x3.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiPYfBtaafcu6aDMlfOJeio1pA-CDofkEobp26fndnJn7L5057qjjcXnVtr5bmMYrTw8X9oxslDLnpKnUPyDR0ilibo7peEukMN8KiaLv1JIkOwvDFG_VD8Vm-_wTKKQMD60zd5xVwmCbA/s640/%5BBlack+Tulip%5D+Setting+the+rotation+-+1_4x3.png" /></a></div><br />
Check its description field. It says:<br />
<br />
<tt><b>spinPrim;<0.0,0.0,1.0>;1.0;1.0</b></tt><br />
<br />
What does this mean?<br />
<br />
The first that we have to know is that the script will read the semicolons (;) and take all the values between them.<br />
So in the case above:<br />
<br />
<tt><b>spinPrim;<0.0,0.0,1.0>;1.0;1.0</b></tt><br />
<br />
we see that there are FOUR pieces of information:<br />
<br />
<pre>spinPrim
<0.0,0.0,1.0>
1.0
1.0</pre><br />
It is VERY IMPORTANT the order these values appear! If they don't appear in this exact order, the script won't be able to read the values of the prim we want to spin.<br />
<br />
What each of those values mean?<br />
<br />
First one:<br />
<br />
<tt><b>spinPrim</b></tt><br />
<br />
means that the script has to consider this prim as a spinning one. The word has to be written exactly as said above. <b>It IS case sensitive!</b><br />
<br />
The second one:<br />
<br />
<tt><b><0.0,0.0,1.0></b></tt><br />
<br />
is the <i>spin vector</i>. Don't worry, it is explained after this how to obtain it correctly.<br />
<br />
The third one:<br />
<br />
<tt><b>1.0</b></tt><br />
<br />
is the <i>spin rate</i> value. It is a number with decimals that, to make it easy to understand, we can think of as <i>the velocity</i>, so the smaller the value we type in, the slower the piece will spin and the reverse.<br />
<br />
and the last one:<br />
<br />
<tt><b>1.0</b></tt><br />
<br />
might be complicated to understand and, anyway, it doesn't make sense if our prims are not physical. Since this last one can be very technical, we will leave it always as 1.0. If you have the knowledge to follow the explanations from the wiki, then you can learn more about it in this wiki page: <a href="http://wiki.secondlife.com/wiki/LlTargetOmega">http://wiki.secondlife.com/wiki/LlTargetOmega</a><br />
<br />
This last value corresponds to the <i>gain</i> parameter the wiki mentions there.<br />
<br />
And how the spin vector has been obtained?<br />
<br />
With the object having the root rotation set to <0.00 ,0.00, 0.00> (as stated above), and being in <b>WORLD COORDINATES</b> mode, we choose the axis we want the object rotating around.<br />
<br />
<ul><li>If the axis is X, the RED one, we write the spin vector as: <tt><1.0, 0.0, 0.0></tt></li>
<li>If the axis is Y, the GREEN one, we write the spin vector as: <tt><0.0, 1.0, 0.0></tt></li>
<li>If the axis is Z, the BLUE one, we write the spin vector as: <tt><0.0, 0.0, 1.0></tt></li>
</ul><br />
<a href="snowParticlesNotes"></a><br />
<h2>IMPORTANT NOTES ABOUT THE SNOW PARTICLES</h2><br />
You would expect that the SIZE of your snowglobe affected somehow to the snow emitted, and in fact, this happens by using this tool. If your SNOW EMITTER PRIM is smaller, the particles effect covers less volume. If bigger, it covers more. It attempts to always fill the snowglobe, INSIDE.<br />
<br />
To be able to achieve this, the script, internally, takes the smallest dimension of the prim where you say the snow will emit, and it will adapt the effect to that smallest dimension.<br />
<br />
Example: if the size of the primitive you decide to be the snow emitter is X = 1.0, Y = 0.5, Z = 2.0, then the script will take 0.5 to decide how far the particles will get.<br />
<br />
From this, a DESIGN TIP is that you set the SPHERE that snowglobes use to have as the primitive emitting snow (you can see that in fact in the sample object included). The sphere of the snowglobe will have the same size for X, Y, Z, or at least, very similar sizes among them, so the snow effect will adapt nicely to the size of your snowglobe.<br />
<br />
If you see that your particles barely show up, check if you're using a different primitive as emitter as well as the sizes (as it could be the ground cylinder in the provided sample: Z is quite smaller than X and Y, and that value would be the one taken for the snow effect.)<br />
<br />
Please read the following notes about WHERE to drop the particle texture if you use any, and setting permissions: <a href="http://blacktulip-scripts.blogspot.com/p/common-parts.html#importantNoteAboutParticles">IMPORTANT NOTE ABOUT THE PARTICLES</a><br />
<br />
<a name="setupModule"></a><br />
<h2>SETUP: THE MAIN SCRIPT, AS A MODULE YOU CAN USE FROM ANOTHER SCRIPT</h2><a href="http://blacktulip-scripts.blogspot.com/p/common-parts.html#setupModule">Check the following section on this page</a>, knowing that:<br />
<br />
<tt>[Black Tulip] ***Script Name*** [MODULE]</tt> refers to <tt>[Black Tulip] Snowglobe - Basic Edition MESH [MODULE]</tt><br />
<tt>CODE_NUMBER</tt> is <tt>-18640887</tt><br />
<tt>NAME_ON_MENU</tt> is <tt>Snowglobe</tt><br />
<br />
AVSitter line looks like: <tt>BUTTON Snowglobe|-18640887</tt><br />
MLP line looks like: <tt>LINKMSG Snowglobe | 1,-4,-18640887,fromMLP</tt><br />
<br />
You have example AVpos and .MENUITEMS notecards with your purchase. Remember that this works too with AVSitter 2.<br />
<br />
<a name="troubleshooting"></a><br />
<h2>TROUBLESHOOTING</h2><br />
<b>Q:</b> I click the animated texture/light/particle options on the menu, but no visible outcome shows. What's going wrong?<br />
<br />
<i>A: Most likely, there's not a light source/particles source/animated texture source defined in the object. Double-check the DESCRIPTION of the prim you expect to be a SL light source/particles source/animated texture source.</i><br />
<br />
<br />
For any other problem not described here, please <a href="http://blacktulip-store.blogspot.com/2013/06/script-assistance-form.html">give a complete description of your issue in the following online form</a>.<br />
<br />
I'll get back to you after I have read your report and replicated your issue inworld, according to your description of it. Please, be detailed.<br />
<br />
-- Auryn BeornAuryn Beornhttp://www.blogger.com/profile/02832014326094809370noreply@blogger.comtag:blogger.com,1999:blog-2947025942912354529.post-40855822199069334212014-10-24T13:30:00.000-07:002014-11-23T16:52:10.855-08:00Script: My Snowglobe - Music Edition<h2>[Black Tulip] Snowglobe - Music Edition (Script for Designers)</h2>(c) 2014 Auryn Beorn<br />
<br />
<a href="https://marketplace.secondlife.com/p/Black-Tulip-Script-Snowglobe-Music-Edition-MESH/6570687">Snowglobe Music script in Marketplace.</a><br />
<br />
Thank you for having considered this script to enhance the quality of your products. Please read the following instructions carefully, especially the ones explaining which permissions to apply to the scripts for the next owner. Failure to complete this task INVALIDATES the license governing your use of this set of scripts. Should you have problems, please <a href="http://blacktulip-store.blogspot.com/2013/06/script-assistance-form.html">fill the scripts assistance form, explaining what you did and what happened</a>, and I'll get back to you.<br />
<br />
<b>IMPORTANT!</b><br />
The script contains a check to prevent accidental give-aways. If you haven't set permissions correctly in your inventory, then the script will self delete when you try to use it. The best way to ensure you set permissions correctly is by doing it NOW in your inventory.<br />
<br />
<h2>TABLE OF CONTENTS</h2><ul><li><a href="#features">FEATURES</a></li>
<li>SET UP<br />
<ul><li><a href="#whatScriptToUse">WHAT SCRIPT TO USE?</a></li>
<li><a href="#changePermissions">CHANGE PERMISSIONS FOR NEXT OWNER</a></li>
<li><a href="#examineSampleObject">EXAMINING THE SAMPLE OBJECT</a></li>
<li><a href="#descriptionsFormat">FORMAT OF THE DESCRIPTIONS</a></li>
<li><a href="#setupSpinningParts">HOW TO SET UP THE SPINNING PARTS</a></li>
<li><a href="#snowParticlesNotes">IMPORTANT NOTES ABOUT THE SNOW PARTICLES</a></li>
<li><a href="#configurationNotecard">THE CONFIGURATION NOTECARD</a></li>
</ul></li>
<li><a href="#purchasingSongs">WHERE DO I PURCHASE SONGS?</a></li>
<li><a href="#setupModule">THE MAIN SCRIPT, AS A MODULE YOU CAN USE FROM ANOTHER SCRIPT</a></li>
<li><a href="#troubleshooting">TROUBLESHOOTING</a></li>
</ul><br />
<a name="features"></a><br />
<h2>FEATURES</h2><br />
<ul><li>Start/Stop at the same time:<br />
Light, Spin Parts (keys, stars...), Particles Snow, Animated Texture</li>
<li>Start/Stop those effects independently when the global effect is ON</li>
<li>Change the light color</li>
<li>Change the animated texture type (slide/rotate) - Global setting</li>
<li>Change the speed of the animated texture - Global setting</li>
<li>Notecard configuration for the songs</li>
<li>It allows each song having different sample duration (i.e., a song may have its samples being 9.5 seconds and another song have its samples being 9.8 seconds)</li>
<li>Volume is changed via menu</li>
<li>Menu timeout to reduce lag - no open listeners after timeout (0.001 ms script time when idle)</li>
<li>Final user can change access to owner only/everybody/group</li>
<li>Menu can be integrated into tools such as MLPv2, AVsitter... (AVsitter version 2 works too!)</li>
</ul><br />
<a name="whatScriptToUse"></a><br />
<h2>SET UP: WHAT SCRIPT TO USE?</h2><br />
There are two scripts contained in your folder:<br />
<br />
<pre>[Black Tulip] Snowglobe - Music Edition MESH
[Black Tulip] Snowglobe - Music Edition MESH [MODULE]</pre><br />
We need to use ONLY ONE of them in a given product.<br />
<br />
Which one? How to choose?<br />
<br />
The <tt><b>[MODULE]</b></tt> version, as explained in the <a href="#setupModule">THE MAIN SCRIPT, AS A MODULE YOU CAN USE FROM ANOTHER SCRIPT</a> section, will allow you to use this script integrated with other scripts that allow sending linked messages, such as the Multi Love Pose (MLP) or AVSitter for multiavatar, multianimation devices.<br />
<br />
So, depending on what we need, we'll use the following script as main one:<br />
<br />
Normal use - We want the menu to show <b>when the object is clicked</b>:<br />
[Black Tulip] Snowglobe - Music Edition MESH<br />
<br />
The menu should show up <b>after clicking a button from another script</b>, like MLP, AVSitter:<br />
[Black Tulip] Snowglobe - Music Edition MESH [MODULE]<br />
<br />
Once we've chosen the right main script, we have to set some descriptions in the primitives of the object, following the instructions below.<br />
<br />
<a name="changePermissions"></a><br />
<h2>SETUP: CHANGE PERMISSIONS FOR NEXT OWNER</h2><br />
<a href="http://blacktulip-scripts.blogspot.com/p/common-parts.html#changePermissions">Check the following section on this page</a>, knowing that each <tt>[Black Tulip] ASSET</tt> refers to the following scripts:<br />
<br />
<tt>[Black Tulip] Snowglobe - Music Edition MESH</tt><br />
<tt>[Black Tulip] Snowglobe - Music Edition MESH [MODULE]</tt><br />
<br />
<a name="examineSampleObject"></a><br />
<h2>SETUP: EXAMINING THE SAMPLE OBJECT</h2><br />
With this script, you may control the following:<br />
<br />
<ul><li>Start/Stop at the same time:<br />
Light, Spin Parts (keys, stars...), Particles Snow, Animated Texture</li>
<li>Start/Stop those effects independently when the global effect is ON</li>
<li>Change the light color</li>
<li>Change the animated texture type (slide/rotate) - Global setting</li>
<li>Change the speed of the animated texture - Global setting</li>
<li>Notecard configuration for the songs</li>
<li>It allows each song having different sample duration (i.e., a song may have its samples being 9.5 seconds and another song have its samples being 9.8 seconds)</li>
</ul><br />
We'll understand better what this means by examining the <tt>[Black Tulip] Snowglobe - MUSIC SCRIPTED SAMPLE</tt> object. Rez it, and let's follow this explanation.<br />
<br />
Before anything, right click the object to edit, then click the "Content" tab. When we do this, we're inspecting the contents of the ROOT PRIM. You should see the "[Black Tulip] Snowglobe - Music Edition MESH" script.<br />
<br />
What does this mean?<br />
That the script and texture for particle effects, if any, have to be dropped into the ROOT PRIM. This is the default when we simply right click an object, then select "Edit" from the menu. The sample object has no particle textures used (and so particles will show as a little dot), but you can drop your texture and set it up as indicated later.<br />
<br />
You should also see:<br />
<br />
<ul><li>The <tt>[Black Tulip] Snowglobe - Music Edition MESH ~CFG~</tt> configuration notecard</li>
<li>Several sample soundclips.</li>
</ul><br />
Having this clear, now let's examine the sample object in detail. It consists of two linked prims: The snowglobe itself, and a winding key. Right click to edit, click "Edit linked", and now:<br />
<br />
<ul><li>Inspect the snowglobe prim. Check its description. It says:</li>
</ul><br />
<tt><b>animTexture;2#snow#light</b></tt><br />
<br />
<ul><li>Inspect now the winding key's description. It says:</li>
</ul><br />
<tt><b>spinPrim;<1.0,0.0,0.0>;1.0;1.0</b></tt><br />
<br />
What do these descriptions mean? That's what we cover in the next section.<br />
<br />
<a name="descriptionsFormat"></a><br />
<h2>SETUP: FORMAT OF THE DESCRIPTIONS</h2><br />
With this script, we may have the following:<br />
<ul><li>One light point</li>
<li>One animated texture point</li>
<li>One particle snow emitter point (please check the "Important notes about the snow particles!" section for more)</li>
<li>As many spinning parts as you could need</li>
</ul><br />
If you rez the sample <tt>[Black Tulip] Snowglobe - MUSIC SCRIPTED SAMPLE</tt> object and click it to get the menu, you'll see, as soon as you select ON/OFF to start all the effects, that the winding key spins. But there it is only one prim that will be the snow emitter, only one prim that will be the light point, and only one prim that will have the texture animated.<br />
<br />
To tell the script which these primitives are in our LINKED object, we have to write specific words (CASE SENSITIVE) in the DESCRIPTION of each primitive (DESCRIPTION - not the name, don't confuse them!)<br />
<br />
<ul><li>Expected description for a light point: <tt><b>light</b></tt></li>
<li>Expected description for a snow emitter: <tt><b>snow</b></tt></li>
<li>Expected description for an animated texture prim: <tt><b>animTexture;FACE_NUMBER</b></tt> (see here for <a href="http://blacktulip-scripts.blogspot.com/p/common-parts.html#faceNumber">how to get the face number</a> if you don't know how; if you want all sides animated, type -1 as FACE_NUMBER)</li>
<li>Expected description for a spinning part: see the following section, <a href="#setupSpinningParts">HOW TO SET UP THE SPINNING PARTS</a></li>
</ul><br />
We may want a primitive being, at the same time, animated texture AND snow emitter.<br />
Is this possible?<br />
<br />
Yes. The description we should write would be, in that case:<br />
<br />
<tt>animTexture;2#snow</tt><br />
<br />
Does this mean, if we want to have light, snow AND animated texture in the same prim, we could write:<br />
<br />
<tt>animTexture;2#snow#light</tt><br />
<br />
and it would work? YES<br />
<br />
Does this mean, if we want a spinning part AND snow, we could write:<br />
<br />
<tt>spinPrim;<0.0,0.0,1.0>;1.0;1.0#snow</tt><br />
<br />
and it would work? YES<br />
<br />
Does it matter if we write first snow, light or any other? It matters not. Write them as you prefer. Only what specifies how the prim will spin has a very specific format to be respected, but that is explained following.<br />
<br />
And that would be it.<br />
<br />
Set the DESCRIPTIONS according to these simple rules, drop the main script in your linked object, and your snowglobe is ready to go!<br />
<br />
<a name="setupSpinningParts"></a><br />
<h2>SETUP: HOW TO SET UP THE SPINNING PARTS</h2><br />
As you can check in the sample <tt>[Black Tulip] Snowglobe - MUSIC SCRIPTED SAMPLE</tt> object, this script allows you to ALSO rotate, by spinning, all the child prims you wish to rotate (until you hit the script's memory limit - don't worry, this won't happen with five/ten spinning prims). You could also make the root prim to rotate. Perhaps this is not what you would like anyway, but feel free to make a copy of your object and try this if you're curious about :-) (basically, it will make the whole object to spin around the root)<br />
<br />
We have to begin by rezzing our object.<br />
Set the rotation of the ROOT PRIM to:<br />
<br />
<pre>X = 0.00
Y = 0.00
Z = 0.00</pre><br />
Don't worry if your object doesn't look like you have designed it. You will be able of rotating it again as you wish ONCE you have gathered the values for the spin vectors.<br />
<br />
Rez the <tt>[Black Tulip] Snowglobe - MUSIC SCRIPTED SAMPLE</tt> sample object to follow this explanation. The captures are taken with a different object, but the principle is the same: pay special attention to the sections of the diagram that are highlighted.<br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh5fa533X5vSRRoeQ88UC1I989mYQnlA47ZQ4E4xHvQWOI0Px3KILqecBR48KXe7xlBd-ZBFBk4pncIVcn33cGKnp-K9Y2gYymD8ZhSgf9y-ID8UsYK3WxxarVb-Nmr4U0TaHzYXnAj1Tk/s1600/%5BBlack+Tulip%5D+Setting+the+rotation+-+0_4x3.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh5fa533X5vSRRoeQ88UC1I989mYQnlA47ZQ4E4xHvQWOI0Px3KILqecBR48KXe7xlBd-ZBFBk4pncIVcn33cGKnp-K9Y2gYymD8ZhSgf9y-ID8UsYK3WxxarVb-Nmr4U0TaHzYXnAj1Tk/s640/%5BBlack+Tulip%5D+Setting+the+rotation+-+0_4x3.png" /></a></div><br />
Set its root rotation as said above:<br />
<br />
<pre>X = 0.00
Y = 0.00
Z = 0.00</pre><br />
Now go into <i>Edit linked parts</i>. Click the winding key.<br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiPYfBtaafcu6aDMlfOJeio1pA-CDofkEobp26fndnJn7L5057qjjcXnVtr5bmMYrTw8X9oxslDLnpKnUPyDR0ilibo7peEukMN8KiaLv1JIkOwvDFG_VD8Vm-_wTKKQMD60zd5xVwmCbA/s1600/%5BBlack+Tulip%5D+Setting+the+rotation+-+1_4x3.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiPYfBtaafcu6aDMlfOJeio1pA-CDofkEobp26fndnJn7L5057qjjcXnVtr5bmMYrTw8X9oxslDLnpKnUPyDR0ilibo7peEukMN8KiaLv1JIkOwvDFG_VD8Vm-_wTKKQMD60zd5xVwmCbA/s640/%5BBlack+Tulip%5D+Setting+the+rotation+-+1_4x3.png" /></a></div><br />
Check its description field. It says:<br />
<br />
<tt><b>spinPrim;<0.0,0.0,1.0>;1.0;1.0</b></tt><br />
<br />
What does this mean?<br />
<br />
The first that we have to know is that the script will read the semicolons (;) and take all the values between them.<br />
So in the case above:<br />
<br />
<tt><b>spinPrim;<0.0,0.0,1.0>;1.0;1.0</b></tt><br />
<br />
we see that there are FOUR pieces of information:<br />
<br />
<pre>spinPrim
<0.0,0.0,1.0>
1.0
1.0</pre><br />
It is VERY IMPORTANT the order these values appear! If they don't appear in this exact order, the script won't be able to read the values of the prim we want to spin.<br />
<br />
What each of those values mean?<br />
<br />
First one:<br />
<br />
<tt><b>spinPrim</b></tt><br />
<br />
means that the script has to consider this prim as a spinning one. The word has to be written exactly as said above. <b>It IS case sensitive!</b><br />
<br />
The second one:<br />
<br />
<tt><b><0.0,0.0,1.0></b></tt><br />
<br />
is the <i>spin vector</i>. Don't worry, it is explained after this how to obtain it correctly.<br />
<br />
The third one:<br />
<br />
<tt><b>1.0</b></tt><br />
<br />
is the <i>spin rate</i> value. It is a number with decimals that, to make it easy to understand, we can think of as <i>the velocity</i>, so the smaller the value we type in, the slower the piece will spin and the reverse.<br />
<br />
and the last one:<br />
<br />
<tt><b>1.0</b></tt><br />
<br />
might be complicated to understand and, anyway, it doesn't make sense if our prims are not physical. Since this last one can be very technical, we will leave it always as 1.0. If you have the knowledge to follow the explanations from the wiki, then you can learn more about it in this wiki page: <a href="http://wiki.secondlife.com/wiki/LlTargetOmega">http://wiki.secondlife.com/wiki/LlTargetOmega</a><br />
<br />
This last value corresponds to the <i>gain</i> parameter the wiki mentions there.<br />
<br />
And how the spin vector has been obtained?<br />
<br />
With the object having the root rotation set to <0.00 ,0.00, 0.00> (as stated above), and being in <b>WORLD COORDINATES</b> mode, we choose the axis we want the object rotating around.<br />
<br />
<ul><li>If the axis is X, the RED one, we write the spin vector as: <tt><1.0, 0.0, 0.0></tt></li>
<li>If the axis is Y, the GREEN one, we write the spin vector as: <tt><0.0, 1.0, 0.0></tt></li>
<li>If the axis is Z, the BLUE one, we write the spin vector as: <tt><0.0, 0.0, 1.0></tt></li>
</ul><br />
<a href="snowParticlesNotes"></a><br />
<h2>IMPORTANT NOTES ABOUT THE SNOW PARTICLES</h2><br />
You would expect that the SIZE of your snowglobe affected somehow to the snow emitted, and in fact, this happens by using this tool. If your SNOW EMITTER PRIM is smaller, the particles effect covers less volume. If bigger, it covers more. It attempts to always fill the snowglobe, INSIDE.<br />
<br />
To be able to achieve this, the script, internally, takes the smallest dimension of the prim where you say the snow will emit, and it will adapt the effect to that smallest dimension.<br />
<br />
Example: if the size of the primitive you decide to be the snow emitter is X = 1.0, Y = 0.5, Z = 2.0, then the script will take 0.5 to decide how far the particles will get.<br />
<br />
From this, a DESIGN TIP is that you set the SPHERE that snowglobes use to have as the primitive emitting snow (you can see that in fact in the sample object included). The sphere of the snowglobe will have the same size for X, Y, Z, or at least, very similar sizes among them, so the snow effect will adapt nicely to the size of your snowglobe.<br />
<br />
If you see that your particles barely show up, check if you're using a different primitive as emitter as well as the sizes (as it could be the ground cylinder in the provided sample: Z is quite smaller than X and Y, and that value would be the one taken for the snow effect.)<br />
<br />
Please read the following notes about WHERE to drop the particle texture if you use any, and setting permissions: <a href="http://blacktulip-scripts.blogspot.com/p/common-parts.html#importantNoteAboutParticles">IMPORTANT NOTE ABOUT THE PARTICLES</a><br />
<br />
<a name="configurationNotecard"></a><br />
<h2>SETUP: THE CONFIGURATION NOTECARD</h2><br />
The configuration notecard is named <tt>[Black Tulip] Snowglobe - Music Edition MESH ~CFG~</tt> needs to be written to provide all the data we want to:<br />
<br />
<ul><li>Specify which samples compose a full song</li>
<li>Specify which name we want showing up on the menu for each song</li>
<li>Specify the sample duration per song</li>
<li>Say if we want the script to be silent or, on the contrary, to whisper in local chat the title of the selected song</li>
</ul><br />
(No other mode than whisper is allowed to prevent spamming avatars around that, most likely, won't be interested in knowing about songs being played.)<br />
<br />
This data needs to be written in a specific way, so let's examine the <tt>[Black Tulip] Snowglobe - Music Edition MESH ~CFG~</tt> notecard.<br />
<br />
The lines beginning by:<br />
<br />
<tt><b>#</b></tt><br />
<br />
are comments in the notecard.<br />
<br />
They give important reminders, so don't delete them unless you don't need them. Comment lines won't use more script memory. Comment lines won't make your script laggier. Comment lines won't make your script work slower.<br />
<br />
So it is OKAY if you leave them for your own reference. The comments in the notecard from your package explain all the parameters: You may want to leave those comments.<br />
<br />
The sample notecard (not the one in the snowglobe) shows as:<br />
<br />
<pre># [Black Tulip] Snowglobe - Music Edition MESH ~CFG~
#
# SaySongInChat = M
# M can be 0 or 1
# 0 for a silent script
# 1 for the script whispering in local chat the title of the song being played
#
# Put as many of the follow lines as songs you wish to offer - Limit: 20
# Song = BaseName | TitleMenu | SampleDuration
# BaseName The base name all the samples for a same song share
# TitleMenu The title we want appearing in the menu to select song
# Max: 35 characters
# SampleDuration Sample duration, in seconds, for the samples of that specific song
# A default value of 9.5 will be provided if the value is not
# in the range [0.1, 9.95] (10.0 won't be accepted - for your safety)
SaySongInChat = 0
Song = BaseName | TitleMenu | SampleDuration</pre><br />
<br />
After all the comment lines, we find the following:<br />
<br />
<tt><b>SaySongInChat = 0</b></tt><br />
<br />
This means that the script will NOT say anything when a song is played. If we wish to have the script <i>whispering</i> which song is going to be played once selected, we would write instead:<br />
<br />
<tt><b>SaySongInChat = 1</b></tt><br />
<br />
And then the lines that would define the songs. We should write ONE line with the following format PER SONG:<br />
<br />
<tt><b>Song = BaseName | TitleMenu | SampleDuration</b></tt><br />
<br />
What do <tt>BaseName</tt>, <tt>TitleMenu</tt> and <tt>SampleDuration</tt> mean here?<br />
<br />
<b>BaseName</b><br />
This is the base name all the samples for a same song share. This will be clear with an example.<br />
<br />
Let's suppose we have a song composed of five samples, named:<br />
<br />
<pre>Little_Black_Rain_Cloud-0
Little_Black_Rain_Cloud-1
Little_Black_Rain_Cloud-2
Little_Black_Rain_Cloud-3
Little_Black_Rain_Cloud-4</pre><br />
By writing the following line in the configuration notecard:<br />
<br />
<tt><b>Song = Little_Black_Rain_Cloud- | Little Black Rain Cloud | 9.5</b></tt><br />
<br />
we can see that the first part, <tt>BaseName</tt>, says:<br />
<br />
<tt><b>Little_Black_Rain_Cloud-</b></tt><br />
<br />
The script will look for all the samples in your object with name beginning by <tt><b>Little_Black_Rain_Cloud-</b></tt> and will find all the samples mentioned above, so internally, it will know that the five samples above are all part of the same song.<br />
<br />
<b>IMPORTANT:</b> All spaces around the specified name in the notecard will be DISCARDED. This has consequences. If your samples are, for example:<br />
<br />
<pre>Little_Black_Rain_Cloud 0
Little_Black_Rain_Cloud 1
Little_Black_Rain_Cloud 2</pre><br />
and you specify in the notecard:<br />
<br />
<tt><b>Song = Little_Black_Rain_Cloud | Little Black Rain Cloud | 9.5</b></tt><br />
<br />
this would make the script to look for sample names like:<br />
<br />
<pre>Little_Black_Rain_Cloud0
Little_Black_Rain_Cloud1
Little_Black_Rain_Cloud2</pre><br />
and not like:<br />
<br />
<pre>Little_Black_Rain_Cloud 0
Little_Black_Rain_Cloud 1
Little_Black_Rain_Cloud 2</pre><br />
Rename your samples accordingly before running into this issue. Usually, all songs you purchase will have names that won't be a problem in this regard.<br />
<br />
<b>TitleMenu</b><br />
The title we want appearing in the menu to select song.<br />
Max: 35 characters - Longer titles will be cut to fit this<br />
<br />
Continuing with the sample line said above:<br />
<br />
<tt><b>Song = Little_Black_Rain_Cloud | Little Black Rain Cloud | 9.5</b></tt><br />
<br />
we find<br />
<br />
<tt><b>Little Black Rain Cloud</b></tt><br />
<br />
as value for <tt>TitleMenu</tt>, so this will be shown in the menu as the title for that song.<br />
<br />
<b>SampleDuration</b><br />
Sample duration, in seconds, for the samples of that specific song.<br />
A default value of 9.5 will be provided if the value is not in the range [0.1, 9.95] (10.0 won't be accepted - for your safety)<br />
<br />
In the sample line we're using to explain this:<br />
<br />
<tt><b>Song = Little_Black_Rain_Cloud | Little Black Rain Cloud | 9.5</b></tt><br />
<br />
we are saying that all the samples that are part of this song have a duration of 9.5 seconds. Since this value is in the allowed range for the script (greater or equal than 0.1 AND less or equal than 9.95), it will be accepted as the sample duration - for that one song.<br />
<br />
<a name="purchasingSongs"></a><br />
<h2>WHERE DO I PURCHASE SONGS?</h2><br />
In order to have this item working, you will need, of course, to have songs to work with!<br />
<br />
You can always check the Second Life Marketplace for songs. I sell some public domain, full permissions songs that you may use in items you create, at my main store.<br />
<br />
But then, you can create yourself the samples you need and upload them. I explain all the procedure in the <a href="https://marketplace.secondlife.com/p/Class-In-A-Box-Music-Book-Format/1646893">"Music!" book, which you can purchase in Marketplace</a> or inworld.<br />
<br />
This might be, perhaps, the best choice: that you look for public domain sources and you create your own samples. Be careful and do not use songs that have copyright!<br />
<br />
<a name="setupModule"></a><br />
<h2>SETUP: THE MAIN SCRIPT, AS A MODULE YOU CAN USE FROM ANOTHER SCRIPT</h2><a href="http://blacktulip-scripts.blogspot.com/p/common-parts.html#setupModule">Check the following section on this page</a>, knowing that:<br />
<br />
<tt>[Black Tulip] ***Script Name*** [MODULE]</tt> refers to <tt>[Black Tulip] Snowglobe - Music Edition MESH [MODULE]</tt><br />
<tt>CODE_NUMBER</tt> is <tt>-18640887</tt><br />
<tt>NAME_ON_MENU</tt> is <tt>Snowglobe</tt><br />
<br />
AVSitter line looks like: <tt>BUTTON Snowglobe|-18640887</tt><br />
MLP line looks like: <tt>LINKMSG Snowglobe | 1,-4,-18640887,fromMLP</tt><br />
<br />
You have example AVpos and .MENUITEMS notecards with your purchase. Remember that this works too with AVSitter 2.<br />
<br />
<a name="troubleshooting"></a><br />
<h2>TROUBLESHOOTING</h2><br />
<b>Q:</b> I click the animated texture/light/particle options on the menu, but no visible outcome shows. What's going wrong?<br />
<br />
<i>A: Most likely, there's not a light source/particles source/animated texture source defined in the object. Double-check the DESCRIPTION of the prim you expect to be a SL light source/particles source/animated texture source.</i><br />
<br />
<br />
For any other problem not described here, please <a href="http://blacktulip-store.blogspot.com/2013/06/script-assistance-form.html">give a complete description of your issue in the following online form</a>.<br />
<br />
I'll get back to you after I have read your report and replicated your issue inworld, according to your description of it. Please, be detailed.<br />
<br />
-- Auryn BeornAuryn Beornhttp://www.blogger.com/profile/02832014326094809370noreply@blogger.comtag:blogger.com,1999:blog-2947025942912354529.post-3892524098516589132014-05-01T08:00:00.000-07:002014-11-12T10:37:11.032-08:00Script: Bathtub Controller<h2>[Black Tulip] Bathtub Controller (Script for Designers)</h2>(c) 2014 Auryn Beorn<br />
<br />
<a href="https://marketplace.secondlife.com/p/Black-Tulip-Bathtub-Controller-Script/6023230">Bathtub Controller script in Marketplace.</a><br />
<br />
Thank you for having considered this script to enhance the quality of your products. Please read the following instructions carefully, especially the ones explaining which permissions to apply to the scripts for the next owner. Failure to complete this task INVALIDATES the license governing your use of this set of scripts. Should you have problems, please <a href="http://blacktulip-store.blogspot.com/2013/06/script-assistance-form.html">fill the scripts assistance form, explaining what you did and what happened</a>, and I'll get back to you.<br />
<br />
<b>IMPORTANT!</b><br />
The script contains a check to prevent accidental give-aways. If you haven't set permissions correctly in your inventory, then the script will self delete when you try to use it. The best way to ensure you set permissions correctly is by doing it NOW in your inventory.<br />
<br />
<h2>TABLE OF CONTENTS</h2><ul><li><a href="#features">FEATURES</a></li>
<li>SET UP<br />
<ul><li><a href="#whatScriptToUse">WHAT SCRIPT TO USE?</a></li>
<li><a href="#changePermissions">CHANGE PERMISSIONS FOR NEXT OWNER</a></li>
<li><a href="#examineSampleObject">EXAMINING THE SAMPLE OBJECT</a></li>
<li><a href="#descriptionsFormat">FORMAT OF THE DESCRIPTIONS</a></li>
<li><a href="#descriptionsAnimatedTextures">FORMAT OF THE DESCRIPTIONS - ANIMATED TEXTURES</a></li>
<li><a href="#configurationNotecard">THE CONFIGURATION NOTECARD</a></li>
<li><a href="http://blacktulip-scripts.blogspot.com/p/common-parts.html#faceNumber">HOW TO GET THE FACE NUMBER</a></li>
<li><a href="http://blacktulip-scripts.blogspot.com/p/common-parts.html#particlesInNC">FILLING THE PARTICLES SECTION</a></li>
<li><a href="#extraNotesParticles">EXTRA NOTES ABOUT FILLING THE PARTICLES SECTION</a></li>
<li><a href="http://blacktulip-scripts.blogspot.com/p/common-parts.html#importantNoteAboutParticles">IMPORTANT NOTE ABOUT THE PARTICLES</a></li>
</ul></li>
<li><a href="#setupModule">THE MAIN SCRIPT, AS A MODULE YOU CAN USE FROM ANOTHER SCRIPT</a></li>
<li><a href="#troubleshooting">TROUBLESHOOTING</a></li>
</ul><br />
<a name="features"></a><br />
<h2>FEATURES</h2><br />
<ul><li>Define up to three particle effects for your bathtub (they may be steam, bubbles, falling water...)</li>
<li>Assign prims to each effect (for example, you may have two prims emitting bubbles - a jacuzzi)</li>
<li>Start/Stop those effects independently</li>
<li>Define up to two animated water groups (they may be the water in the tub, falling water from a faucet...)</li>
<li>Show/hide those animated water groups</li>
<li>Define a FAUCET (particles OR animated water):<br />
<ul><li>When ON, it will play an "open faucet sound" (if defined) and start the effect</li>
<li>When OFF, it will play a "close faucet sound" (if defined) and stop the effect</li>
</ul></li>
<li>Allow to select one from up to nine sounds to play as loop sound (different water/bubbles/etc sound effects)</li>
<li>Adjust the sound volume from the menu</li>
<li>Menu timeout to reduce lag - no open listeners after timeout (0.001 ms script time when idle)</li>
<li>Final user can change access to owner only/everybody/group</li>
<li>Menu can be integrated into tools such as MLPv2, AVsitter... (AVsitter version 2 works too!)</li>
<li>You can add up to THREE buttons to interact with (call) other scripts</li>
</ul><br />
<a name="whatScriptToUse"></a><br />
<h2>SET UP: WHAT SCRIPT TO USE?</h2><br />
There are two scripts contained in your folder:<br />
<br />
<pre>[Black Tulip] Bathtub Controller
[Black Tulip] Bathtub Controller [MODULE]</pre><br />
We need to use ONLY ONE of them in a given product.<br />
<br />
Which one? How to choose?<br />
<br />
The <tt><b>[MODULE]</b></tt> version, as explained in the <a href="#setupModule">THE MAIN SCRIPT, AS A MODULE YOU CAN USE FROM ANOTHER SCRIPT</a> section, will allow you to use this script integrated with other scripts that allow sending linked messages, such as the Multi Love Pose (MLP) or AVSitter for multiavatar, multianimation devices.<br />
<br />
So, depending on what we need, we'll use the following script as main one:<br />
<br />
Normal use - We want the menu to show <b>when the object is clicked</b>:<br />
[Black Tulip] Bathtub Controller<br />
<br />
The menu should show up <b>after clicking a button from another script</b>, like MLP, AVSitter:<br />
[Black Tulip] Bathtub Controller [MODULE]<br />
<br />
Once we've chosen the right main script, we have to set some descriptions in the primitives of the object, following the instructions below, and modify the parameters in the configuration notecard.<br />
<br />
This configuration notecard is named "[Black Tulip] Bathtub Controller ~CFG~"<br />
Embedded in the documentation notecard, you have a copy. Keep it in a safe place, should you need a fresh copy at any time.<br />
<br />
<a name="changePermissions"></a><br />
<h2>SETUP: CHANGE PERMISSIONS FOR NEXT OWNER</h2><br />
<a href="http://blacktulip-scripts.blogspot.com/p/common-parts.html#changePermissions">Check the following section on this page</a>, knowing that each <tt>[Black Tulip] ASSET</tt> refers to the following scripts:<br />
<br />
<tt>[Black Tulip] Bathtub Controller</tt><br />
<tt>[Black Tulip] Bathtub Controller [MODULE]</tt><br />
<br />
<a name="examineSampleObject"></a><br />
<h2>SETUP: EXAMINING THE SAMPLE OBJECT</h2><br />
With this script, you may control the following:<br />
<br />
<ul><li>Define up to three particle effects for your bathtub (they may be steam, bubbles, falling water...)</li>
<li>Assign prims to each effect (for example, you may have two prims emitting bubbles - a jacuzzi)</li>
<li>Start/Stop those effects independently</li>
<li>Define up to two animated water groups (they may be the water in the tub, falling water from a faucet...)</li>
<li>Show/hide those animated water groups</li>
<li>Define a FAUCET (particles OR animated water):<br />
<ul><li>When ON, it will play an "open faucet sound" (if defined) and start the effect</li>
<li>When OFF, it will play a "close faucet sound" (if defined) and stop the effect</li>
</ul></li>
<li>Allow to select one from up to nine sounds to play as loop sound (different water/bubbles/etc sound effects)</li>
<li>Adjust the sound volume from the menu</li>
<li>Add up to THREE buttons to interact with (call) other scripts</li>
</ul><br />
We'll understand better what this means by examining the <tt>[Black Tulip] Bathtub - SAMPLE OBJECT</tt> object. Rez it, and let's follow this explanation.<br />
<br />
Before anything, right click the object to edit, then click the "Content" tab. When we do this, we're inspecting the contents of the ROOT PRIM. You should see:<br />
<br />
<ul><li>The "[Black Tulip] Bathtub Controller" script</li>
<li>The "[Black Tulip] Bathtub Controller ~CFG~" configuration notecard</li>
<li>Five soundclips</li>
<li>Three textures (for particle effects)</li>
</ul><br />
What does this mean?<br />
That the script, the configuration notecard, textures for particle effects and soundclips, if any, have to be dropped into the ROOT PRIM. This is the default when we simply right click an object, then select "Edit" from the menu.<br />
<br />
<br />
Having this clear, now let's examine the sample object in detail. It consists of seven linked prims: A (mesh) bathtub and six regular prims (five boxes, one cylinder). Right click to edit, click "Edit linked", and now:<br />
<br />
<ul><li>Inspect the mesh bathtub prim: There's a water surface that by default renders transparent (empty bathtub)<br />
The water surface, which is one face of the mesh object, will have an animated texture on it, and it will also emit particles.</li>
<li>Inspect now the description of this prim. It says:</li>
</ul><br />
<tt><b>Bath Water;3;4;4;9;3;0.3#Steam</b></tt><br />
<br />
<ul><li>Inspect now all of the regular prims and their descriptions. They say:</li>
</ul><br />
<pre><b>Bubbles
Steam
Bubbles
Steam
Bubbles
Faucet;19;1;1;0.1;-1;0.8#Running Water</b></pre><br />
<br />
We may have up to three particle effects.<br />
This does not mean "up to three particle emitters".<br />
<br />
Suppose you have a bubbles effect, for a jacuzzi. Now suppose that you need those bubbles to be emitted from four different prims. The script allows you to do that. The effect is the same: bubbles. And then, one or several prims may have it assigned.<br />
<br />
It happens the same with the animated texture effects. You may have a big tub with three separate sections, all of them having a same animated water effect in their prims. You may have that same effect in the three prims.<br />
<br />
These effects have a name that YOU decide. This name will show in the menu. WHERE do you assign this name? In the configuration notecard. Then you also use the name in the prims. The notecard part is explained in the <a href="#configurationNotecard">THE CONFIGURATION NOTECARD</a> section below.<br />
<br />
<br />
It may sound a bit confusing at this point. Worry not. Let's examine it with one of the effects, to realize that indeed it's very easy to do this.<br />
<br />
Open up the <tt>[Black Tulip] Bathtub Controller ~CFG~</tt> configuration notecard. Look for the first settings line, which reads this way:<br />
<br />
<tt><b>p1Name = Steam</b></tt><br />
<br />
This means:<br />
<br />
<ul><li>We're going to define particles effect #1</li>
<li>We're giving that effect the name <b>Steam</b></li>
<li><b>Steam</b> will show as a button in the bathtub menu</li>
<li>When activated, it will start a particles effect in ALL PRIMS having Steam as a part of the description</li>
<li>When deactivated, the particles in all prims having Steam as a part of the description, will stop</li>
<li>The properties defining this particles effect are ALL the particle properties that begin by p1 in the configuration notecard</li>
</ul><br />
Instead of having a predefined name, that may or may not suit our requirements, the script allows us to give the name we prefer, to show in the menu.<br />
<br />
<b>IMPORTANT:</b> This name should never be above 24 characters. This is a scripting limitation. Keep the name short.<br />
<br />
<br />
SO: Prims that show an effect (animated texture/particles), have a special text in their description. We decide this name in the configuration notecard, then USE IT, exactly as written, in the description of the prims.<br />
<br />
<br />
You may have several prims for the same effect. You are only limited by the amount of free memory of the script. Check this value after the configuration notecard has been loaded, which shows a message like:<br />
<br />
<pre>[08:25] [Black Tulip] Bathtub - SAMPLE OBJECT:
[Bathtub Controller v1] Reading notecard: done.
Available Memory: 13102 bytes.</pre><br />
<br />
<br />
<a name="descriptionsFormat"></a><br />
<h2>SETUP: FORMAT OF THE DESCRIPTIONS</h2><br />
To tell the script which of the linked primitives are relevant (particles emitters, animated textures), we have to write specific words (CASE SENSITIVE) in the DESCRIPTION of each primitive (DESCRIPTION - not the name, don't confuse them!)<br />
<br />
The format of the descriptions is as follows:<br />
<br />
<tt>parameter</tt><br />
<br />
or<br />
<br />
<tt>parameter1#parameter2</tt><br />
<br />
It doesn't matter the order the parameters are written, as long as a <tt><b>#</b></tt> character separates them.<br />
<br />
Let's list again the descriptions in the prims of the sample object:<br />
<br />
<pre>Bath Water;3;4;4;9;3;0.3#Steam
Bubbles
Steam
Bubbles
Steam
Bubbles
Faucet;19;1;1;0.1;-1;0.8#Running Water</pre><br />
There are two prims where the <tt><b>#</b></tt> character shows:<br />
<br />
<pre>Bath Water;3;4;4;9;3;0.3#Steam
Faucet;19;1;1;0.1;-1;0.8#Running Water</pre><br />
That means, each one of those prims runs TWO effects.<br />
<br />
For example, the prim with the following description:<br />
<br />
<tt><b>Bath Water;3;4;4;9;3;0.3#Steam</b></tt><br />
<br />
is running an effect called <b>Steam</b> (we'll have this word in the configuration notecard), and it's also running an effect called <b>Bath Water</b>. However, this <b>Bath Water</b> effect seems... complicated. There are <tt><b>;</b></tt> characters and some numbers. What does this mean? This means that the effect is an ANIMATED TEXTURE. Animated textures need some information for the script, and we give this information in the description of the prim, according to the rules that are explained in the next subsection.<br />
<br />
We can see now, that the prim with the following description:<br />
<br />
<tt><b>Faucet;19;1;1;0.1;-1;0.8#Running Water</b></tt><br />
<br />
is running an effect called <b>Running Water</b> (that name will show up in the configuration notecard too) and an effect called <b>Faucet</b>. We see again the <tt><b>;</b></tt> character and numbers, so yes, that <b>Faucet</b> effect is also an animated texture.<br />
<br />
Does it matter if we write first <b>Running Water</b>, then all that's related to the animated texture? It matters not. Write them in the order that you prefer. And that would be it.<br />
<br />
Set the DESCRIPTIONS according to these simple rules, drop the main script and the configuration notecard in your linked object, and your bathtub/shower/related is ready to go!<br />
<br />
<br />
<a name="descriptionsAnimatedTextures"></a><br />
<h2>SETUP: FORMAT OF THE DESCRIPTIONS - ANIMATED TEXTURES</h2><br />
Animated water in SL by using a texture that we "animate" is done one of the two possible ways:<br />
<br />
<ul><li>A texture containing different "frames" of the water animation (we call this "cell animation" - for example, rippling waves)</li>
<li>A texture designed to slide (for example, water falling on a cascade/faucet/etc.)</li>
</ul><br />
Whenever we want an animated texture, we have to tell the script:<br />
<br />
<ul><li>The type of texture animation</li>
<li>The speed (low numbers for a slow animation, high for a faster animation)</li>
<li>In which face the animation should play (or if it should play in all the faces at once)</li>
</ul><br />
Apart from this, when we want a cell animation, the script needs to know how many vertical frames (we call this "x") and how many horizontal frames (we call this "y") the texture contains.<br />
<br />
To avoid entering into technical details that may confuse at this point, let's just see the description format when we want animated textures as flames, and then a couple of very common examples that, most likely, will be the ones you will use :-)<br />
<br />
General format:<br />
<br />
<tt><b>EFFECT_NAME;code_for_animation_type;x;y;speed;face;transparency</b></tt><br />
<br />
<b>EFFECT_NAME</b><br />
This is the "code word" for the script that we've associated in the configuration notecard (next section). Write it as is. Case sensitive!<br />
<br />
<b>code_for_animation_type</b><br />
If you use a cell animation: 3<br />
If you use a slide animation: 19<br />
<br />
<b>x</b><br />
If you use a cell animation: you type here how many VERTICAL frames the animation has<br />
If you use a slide animation: you type here the number 0<br />
<br />
<b>y</b><br />
If you use a cell animation: you type here how many HORIZONTAL frames the animation has<br />
If you use a slide animation: you type here the number 0<br />
<br />
<b>speed</b><br />
Here you type the frames per second to show (if cell animation), or the speed the animation will slide<br />
<br />
<b>face</b><br />
<pre>-1 The animation will be applied to ALL THE FACES of the prim
face_number The animation will be applied to the face face_number of the prim</pre><br />
<b>transparency</b><br />
Here you type a number from 0 to 1, to specify how transparent the animated texture is, when the animated water should be visible. 0 is transparent and 1 is opaque.<br />
<br />
<h2>SETUP: FORMAT OF THE DESCRIPTIONS - ANIMATED TEXTURES: EXAMPLES</h2><br />
<tt><b>Bath Water;3;4;4;9;3;0.3</b></tt><br />
<br />
Bath Water is the effect name, specified in the notecard<br />
This is a cell animation (code 3) having x = 4 vertical frames, y = 4 horizontal frames<br />
The speed is 9 frames per second<br />
It will show in face 3 of the prim<br />
Transparency is set to 0.3: This is quite transparent<br />
<br />
<tt><b>Faucet;19;1;1;0.1;-1;0.8</b></tt><br />
<br />
Faucet is the effect name, specified in the notecard<br />
This is a slide animation (code 19), so in both x and y we type the number 0<br />
The speed is 0.1<br />
It will show in face -1, which is the code for ALL THE FACES of the prim<br />
Transparency is set to 0.8: This is almost opaque<br />
<br />
It is very important to indicate the face!<br />
Nowadays, it's very likely that we will use a multi-face mesh, and we want to animate only one face in that case, not the whole mesh! :-)<br />
<br />
(Why just one or all faces? This is a scripting limitation. The animated texture can work only in all faces at once, or in just one of them. If you hear otherwise than one-or-all at once, it's true that there's a trick, but it's not a reliable one, and may get "fixed" by LL at any time!)<br />
<br />
<a name="configurationNotecard"></a><br />
<h2>SETUP: THE CONFIGURATION NOTECARD</h2><br />
The configuration notecard is named <tt>[Black Tulip] Bathtub Controller ~CFG~</tt>, and it allows us to:<br />
<br />
<ul><li>Write comment lines, for our own clarifications. Comment lines always begin with a <tt><b>#</b></tt> character.</li>
<li>Define the name of the up to three particles effects used. Those names should be used as part of the prim descriptions.</li>
<li>Define the name of the up to two animated water effects used. Those names should be used as part of the prim descriptions.</li>
<li>Define what sounds are available for loop sound choices (up to nine)</li>
<li>Define the special FAUCET part of the bathtub/shower/etc.</li>
<li>Define which extra buttons we want to add to the menu, to call other scripts from them, having a maximum of 3 buttons.</li>
</ul><br />
With the exception of comment lines, all of the other lines have the structure:<br />
<br />
<tt><b>parameter = value</b></tt><br />
<br />
The accepted parameter keywords are:<br />
<br />
<table cellspacing="5px" cellpadding="5px"><tr> <td valign="top">p1Name</td> <td>In here, we specify the name of the particles effect #1<br />
This is how the name will show as a menu button option<br />
This is also the part of the description the script expects to find for the prims that should emit particles for this effect<br />
When the effect is active, the defined particles effect shows in all the prims associated to it<br />
When the effect is inactive, the particles effect stops in all the prims associated to it<br />
</td> </tr>
<tr> <td valign="top">p2Name</td> <td>Same than for p1Name, but for particles effect #2</td> </tr>
<tr> <td valign="top">p3Name</td> <td>Same than for p1Name, but for particles effect #3</td> </tr>
<tr> <td valign="top">w1Name</td> <td>In here, we specify the name of the animated water effect #1<br />
This is how the name will show as a menu button option<br />
This is also the part of the description the script expects to find for the prims that should have animated textures<br />
When the effect is active, the animated texture shows with the transparency amount indicated in the description<br />
When the effect is inactive, the animated texture is not visible</td> </tr>
<tr> <td valign="top">w2Name</td> <td>Same than for w1Name, but for animated texture #2</td> </tr>
<tr> <td valign="top">Faucet</td> <td>In here, we define some specifics for what we'll understand a FAUCET is</td> </tr>
<tr> <td valign="top">sound</td> <td>In here, we specify the name of a soundclip that will be offered as a loopsound to be played<br />
We may add up to nine sound lines, each one specifying a different soundclip</td> </tr>
<tr> <td valign="top">button</td> <td>In here, we specify what other scripts will be called from a menu option<br />
We may add up to three button lines, for three different actions</td> </tr>
</table><br />
Then there's the whole section related to defining the particles effects. Refer to the <a href="http://blacktulip-scripts.blogspot.com/p/common-parts.html#particlesInNC">FILLING THE PARTICLES SECTION</a> and the <a href="#extraNotesParticles">EXTRA NOTES ABOUT FILLING THE PARTICLES SECTION</a> sections of the documentation to learn about. The provided configuration notecard contains three effects that may work fairly enough to you. At most, you may only need to change the texture for your own.<br />
<br />
<br />
<tt>p1Name</tt>, <tt>p2Name</tt>, <tt>p3Name</tt>, <tt>w1Name</tt> and <tt>w2Name</tt> are immediate: We only need to write a name like the <tt>Faucet</tt>, <tt>Bath Water</tt>, <tt>Steam</tt>, etc. names in the included configuration notecard. We DECIDE those names, being subject only to a few rules, given the way they're going to be used by the script:<br />
<br />
<ul><li>We have to make sure those names ARE NOT LONGER than 24 characters</li>
<li>Make sure that they DO NOT contain the <tt><b>|</b></tt> character</li>
</ul><br />
The rest of the accepted values need a bit more of explanation. Let's see that now.<br />
<br />
<br />
<tt><b>sound = MenuLabel | SoundclipInObject</b></tt><br />
<br />
If we specify a sound clip name after <tt><b>sound = </b></tt>, this sound will be played as a loop sound when the SL light point turns on. The sound clip has to exist in the object, otherwise, no sound will be played.<br />
<br />
<br />
<tt><b>Faucet = type:group | soundclipNameOpen | soundclipNameClosed</b></tt><br />
<br />
A faucet is a special element. It has to be one of the particle groups, or one of the animated texture groups.<br />
<br />
When we activate a faucet:<br />
<br />
<ul><li>The sound <tt><b>soundclipNameOpen</b></tt> (which HAS TO EXIST in the prim with the script) is played</li>
<li>The associated effect starts (particles/animated texture)</li>
<li>If there was a loop sound, then it's turned on</li>
</ul><br />
When we turn off a faucet:<br />
<br />
<ul><li>The sound <tt><b>soundclipNameClosed</b></tt> (which HAS TO EXIST in the prim with the script ) is played</li>
<li>The associated effect STOPS (particles - if animated texture, this is hidden)</li>
<li>If there was a loop sound, it's turned off</li>
</ul><br />
<tt><b>type:group</b></tt> indicate which effect exactly to use:<br />
<br />
<pre>type is 0
The effect is the animated texture
group is 1: The effect used is w1Name
group is 2: The effect used is w2Name</pre><br />
<pre>type is 1
The effect is particles
group is 1: The effect used is p1Name
group is 2: The effect used is p2Name
group is 3: The effect used is p3Name</pre><br />
<b>NOTE</b> in the sample object provided that we CAN use the word Faucet for animated texture/particle effect. There's no confusion because in that case, we type Faucet AFTER p1Name =, etc., while Faucet = tells the script "and now we define a faucet". This way, your menu can indeed show the word Faucet, which may be very clear for the final user.<br />
<br />
<br />
<tt><b>button = button_label|link_msg_number|link_prim|text_to_send</b></tt><br />
<br />
This one is a little more complicated, and it is only required if you plan to add extra buttons that call other scripts. Skip this section if you are not doing this for now.<br />
<br />
In order to <i>call</i>, <i>execute</i> or <i>launch</i> another script from our script (bathtub controller, in this case), we have to use a communication mechanism called <i>linked messages</i>. This is a mechanism that allows scripts to send messages to other scripts in the same linked object, and to listen to possible messages coming from other scripts in the same linked object.<br />
<br />
When we use a <tt>button</tt> line, it means that it will add a button on the menu. This button menu, upon click, will SEND a message to ANOTHER SCRIPT that could be in ANY of the prims of our linked object. That another script should be listening, and will expect to know from us:<br />
<br />
A <i>code number</i> that should be specified in the script documentation. That is <tt>link_msg_number</tt> in the notecard line.<br />
A <i>message</i>. That is <tt>text_to_send</tt> in the notecard line.<br />
A <i>UUID</i>. The lamps controller script sends the UUID of the avatar having clicked the menu.<br />
<br />
Apart from this, the script needs a couple more data items to know about:<br />
<br />
What text will show on the menu button?<br />
That is <tt>button_label</tt> in the notecard line.<br />
IMPORTANT: It should not have more than 24 characters.<br />
<br />
To what primitive this message is being sent.<br />
That is <tt>link_prim</tt> in the notecard line.<br />
<br />
Unless your application has very specific requirements, this link_prim code will be one of the following, meaning:<br />
<br />
<table cellspacing="5px" cellpadding="5px"><tr> <td valign="top">1</td><td>This will send the message to the root prim IF our object consists of more than one prim linked (Or there's an avatar sitting on a single-prim item)</td> </tr>
<tr> <td valign="top">-1</td><td>This will send the message to all prims in the linked object</td> </tr>
<tr> <td valign="top">-2</td><td>This will send the message to all prims BUT the one containing the SENDER (lamps controller) script</td> </tr>
<tr> <td valign="top">-3</td><td>This will send the message to all child prims (that is, all prims BUT the root prim)</td> </tr>
<tr> <td valign="top">-4</td><td>This will send the message to the prim where the SENDER (lamps controller) script is in (-4 could be seen as the opposite code of -2)</td> </tr>
</table><br />
<br />
Please check the documentation of the other scripts you wish to send linked messages from this one, to make sure of how exactly you should write the line. The lines explained above are the generic ideas valid for every script accepting linked messages, but this documentation cannot replace any other script's documentation for their own interface. Check with the creator of the other script how this should be done.<br />
<br />
<a name="extraNotesParticles"></a><br />
<h2>SETUP: THE CONFIGURATION NOTECARD - EXTRA NOTES ABOUT FILLING THE PARTICLES SECTION</h2><br />
A default steam effect, a default bubbles effect and a default running down water effect are provided in the sample configuration notecard included in the sample object; you can use those effects as a reference to tweak and get your own effects. (You will also need your own textures.)<br />
<br />
If the notecard says:<br />
<br />
<b><tt>p1Name = Steam</tt></b><br />
<br />
that means that all the particle parameters named <tt>p1*</tt> (meaning "parameters whose name start by p1") will define the <b>Steam</b> effect. Same for p2Name and the p2* parameters, and p3Name and the p3* parameters. Keep this in mind when you write down the instructions for your customers :-)<br />
<br />
The three effects have the same structure, p1*, p2* and p3*, so we're going to refer to the three of them indistinctly by just naming the properties particle* (for example, particleFlags will refer to p1Flags, p2Flags and p3Flags.)<br />
<br />
<a name="setupModule"></a><br />
<h2>SETUP: THE MAIN SCRIPT, AS A MODULE YOU CAN USE FROM ANOTHER SCRIPT</h2><a href="http://blacktulip-scripts.blogspot.com/p/common-parts.html#setupModule">Check the following section on this page</a>, knowing that:<br />
<br />
<tt>[Black Tulip] ***Script Name*** [MODULE]</tt> refers to <tt>[Black Tulip] Bathtub Controller [MODULE]</tt><br />
<tt>CODE_NUMBER</tt> is <tt>-28640987</tt><br />
<tt>NAME_ON_MENU</tt> is <tt>Bathtub</tt><br />
<br />
AVSitter line looks like: <tt>BUTTON Bathtub|-28640987</tt><br />
MLP line looks like: <tt>LINKMSG Bathtub | 1,-4,-28640987,fromMLP</tt><br />
<br />
You have example AVpos and .MENUITEMS notecards with your purchase. Remember that this works too with AVSitter 2.<br />
<br />
<a name="troubleshooting"></a><br />
<h2>TROUBLESHOOTING</h2><br />
<b>Q:</b> I click the water/particle options on the menu, but no visible outcome shows. What's going wrong?<br />
<br />
<i>A: Most likely, there's not a particles source/animated texture source defined in the object. Double-check the DESCRIPTION of the prim you expect to be a SL particles source/animated texture source.</i><br />
<br />
<br />
<b>Q:</b> I hear no sound when I change the volume from the menu. What could be going wrong?<br />
<br />
<i>A: Make sure that there are sound clips on the "Content" tab of the prim with the script. Make sure that the names coincides exactly with the names given in the configuration notecard. Make sure also that sounds aren't muted.</i><br />
<br />
<br />
For any other problem not described here, please <a href="http://blacktulip-store.blogspot.com/2013/06/script-assistance-form.html">give a complete description of your issue in the following online form</a>.<br />
<br />
I'll get back to you after I have read your report and replicated your issue inworld, according to your description of it. Please, be detailed.<br />
<br />
-- Auryn BeornAuryn Beornhttp://www.blogger.com/profile/02832014326094809370noreply@blogger.comtag:blogger.com,1999:blog-2947025942912354529.post-30538519943893492142014-03-21T18:10:00.000-07:002014-08-02T05:18:01.905-07:00Script: Lamps Controller<h2>[Black Tulip] Lamps Controller v1 (Script for Designers)</h2>(c) 2014 Auryn Beorn<br />
<br />
<a href="https://marketplace.secondlife.com/p/Black-Tulip-Lamps-Controller/5770993">Lamps Controller script in Marketplace.</a><br />
<br />
Thank you for having considered this script to enhance the quality of your products. Please read the following instructions carefully, especially the ones explaining which permissions to apply to the scripts for the next owner. Failure to complete this task INVALIDATES the license governing your use of this set of scripts. Should you have problems, please <a href="http://blacktulip-store.blogspot.com/2013/06/script-assistance-form.html">fill the scripts assistance form, explaining what you did and what happened</a>, and I'll get back to you.<br />
<br />
<b>IMPORTANT!</b><br />
The script contains a check to prevent accidental give-aways. If you haven't set permissions correctly in your inventory, then the script will self delete when you try to use it. The best way to ensure you set permissions correctly is by doing it NOW in your inventory.<br />
<br />
<h2>TABLE OF CONTENTS</h2><ul><li><a href="#features">FEATURES</a></li>
<li>SET UP<br />
<ul><li><a href="#whatScriptToUse">WHAT SCRIPT TO USE?</a></li>
<li><a href="#changePermissions">CHANGE PERMISSIONS FOR NEXT OWNER</a></li>
<li><a href="#examineSampleObject">EXAMINING THE SAMPLE OBJECT</a></li>
<li><a href="#descriptionsFormat">FORMAT OF THE DESCRIPTIONS</a></li>
<li><a href="#configurationNotecard">THE CONFIGURATION NOTECARD</a></li>
<li><a href="http://blacktulip-scripts.blogspot.com/p/common-parts.html#faceNumber">HOW TO GET THE FACE NUMBER</a></li>
<li><a href="http://blacktulip-scripts.blogspot.com/p/common-parts.html#colorCode">HOW TO WRITE THE COLOR CODE</a></li>
</ul></li>
<li><a href="#setupModule">THE MAIN SCRIPT, AS A MODULE YOU CAN USE FROM ANOTHER SCRIPT</a></li>
<li><a href="#troubleshooting">TROUBLESHOOTING</a></li>
</ul><br />
<a name="features"></a><br />
<h2>FEATURES</h2><br />
<ul><li>Define one or several "lamps" in your object. Each lamp can be a whole prim or just a face of it.</li>
<li>Decide the color, glow and full bright that each lamp will have per state.</li>
<li>Decide how many states you want. The possibilities are:<br />
<ul><li>Lamps that go on/off.</li>
<li>Lamps that go from off to min, from min to max, from max to off again.</li>
<li>Lamps that go from off to min, from min to med, from med to max, from max to off again.</li>
</ul></li>
<li>Define an additional SL-light point to illuminate the area when lamps are on.</li>
<li>Change the state of each lamp individually, by clicking its face.</li>
<li>Decide, if needed, a sound to play when the global state of lamps goes from off to on, from on to off (like a light switch).</li>
<li>Change the state of all the lamps at the same time, from the menu..</li>
<li>Switch the SL-light point on/off when the global state of the lamps is other than off.</li>
<li>Change the light color, radius, intensity and fall off of this SL-light point.</li>
<li>Menu timeout to reduce lag - no open listeners after timeout (0.001 ms script time when idle)</li>
<li>Final user can change access to owner only/everybody/group</li>
<li>Menu can be integrated into tools such as MLPv2, AVsitter...</li>
<li>You can add up to FOUR buttons to interact with (call) other scripts</li>
</ul><br />
<a name="whatScriptToUse"></a><br />
<h2>SET UP: WHAT SCRIPT TO USE?</h2><br />
There are two scripts contained in your folder:<br />
<br />
<pre>[Black Tulip] Lamps Controller
[Black Tulip] Lamps Controller [MODULE]
</pre><br />
We need to use ONLY ONE of them in a given product.<br />
<br />
Which one? How to choose?<br />
<br />
The <tt><b>[MODULE]</b></tt> version, as explained in the <a href="#setupModule">THE MAIN SCRIPT, AS A MODULE YOU CAN USE FROM ANOTHER SCRIPT</a> section, will allow you to use this script integrated with other scripts that allow sending linked messages, such as the Multi Love Pose (MLP) or AVSitter for multiavatar, multianimation devices.<br />
<br />
So, depending on what we need, we'll use the following script as main one:<br />
<br />
Normal use - We want the lamps menu to show <b>when the object is clicked</b>:<br />
[Black Tulip] Lamps Controller<br />
<br />
The menu should show up <b>after clicking a button from another script</b>, like MLP, AVSitter:<br />
[Black Tulip] Lamps Controller [MODULE]<br />
<br />
Once we've chosen the right main script, we have to set some descriptions in the primitives of the object, following the instructions below, and modify the parameters in the configuration notecard.<br />
<br />
This configuration notecard is named "[Black Tulip] Lamps Controller ~CFG~"<br />
Embedded in the documentation notecard, you have a copy. Keep it in a safe place, should you need a fresh copy at any time.<br />
<br />
<a name="changePermissions"></a><br />
<h2>SETUP: CHANGE PERMISSIONS FOR NEXT OWNER</h2><br />
<a href="http://blacktulip-scripts.blogspot.com/p/common-parts.html#changePermissions">Check the following section on this page</a>, knowing that each <tt>[Black Tulip] ASSET</tt> refers to the following scripts:<br />
<br />
<tt>[Black Tulip] Lamps Controller</tt><br />
<tt>[Black Tulip] Lamps Controller [MODULE]</tt><br />
<br />
<a name="examineSampleObject"></a><br />
<h2>SETUP: EXAMINING THE SAMPLE OBJECT</h2><br />
With this script, you may control the following:<br />
<br />
<ul><li>One or several "lamps" in your object. Each lamp can be a whole prim or just a face of it.</li>
<li>Decide the color, glow and full bright that each lamp will have per state.</li>
<li>Decide how many states you want. The possibilities are:<br />
<ul><li>Lamps that go on/off.</li>
<li>Lamps that go from off to min, from min to max, from max to off again.</li>
<li>Lamps that go from off to min, from min to med, from med to max, from max to off again.</li>
</ul></li>
<li>An additional SL-light point to illuminate the area when lamps are on.</li>
</ul><br />
We'll understand better what this means by examining the "[Black Tulip] Lamps Controller - SAMPLE OBJECT" object. Rez it, and let's follow this explanation.<br />
<br />
Before anything, right click the object to edit, then click the "Content" tab. When we do this, we're inspecting the contents of the ROOT PRIM. You should see:<br />
<br />
<ul><li>The "[Black Tulip] Lamps Controller" script</li>
<li>The "[Black Tulip] Lamps Controller ~CFG~" configuration notecard</li>
<li>Two sample sounds called "[Black Tulip] Switch ON" and "[Black Tulip] Switch OFF"</li>
</ul><br />
What does this mean?<br />
That the script, the configuration notecard and the soundclips, if any, have to be dropped into the ROOT PRIM. This is the default when we simply right click an object, then select "Edit" from the menu.<br />
<br />
<br />
Having this clear, now let's examine the sample object in detail. It consists of three linked prims: A (mesh) flowers lamp, a copy of the same flowers lamp (smaller) and a box, playing the role of a base. Right click to edit, click "Edit linked", and now:<br />
<br />
<ul><li>Inspect the flowers of the bigger flower lamp under the texture tab: they have glow.</li>
<li>Inspect now the description of this prim. It says:</li>
</ul><br />
<tt><b>lamp;flowerBig</b></tt><br />
<br />
<ul><li>Now inspect the base of this flower lamp: there's nothing in particular to highlight under the texture tab. No glow, nothing relevant.</li>
<li>Inspect the flowers of the smaller flower lamp under the texture tab: they also have glow.</li>
<li>Inspect now the description of this prim. It says:</li>
</ul><br />
<tt><b>lamp;flowerSmall#light</b></tt><br />
<br />
<ul><li>Inspect the base of this flower lamp: again, there's nothing in particular to highlight under the texture tab. No glow, nothing relevant.</li>
<li>Inspect the box</li>
<li>Nothing relevant under the texture tab</li>
<li>No description given</li>
</ul><br />
Click any of the flowers of the bigger lamp. You should see that the glow changes, the color changes, and perhaps it also changed to full bright. Click that same flower again. More changes. Click it again. Then again. As you can observe, this lamp is cycling through three states when you click that specific face. If you click another flower, that cycling happens too. Every lamp will cycle independently when you click on it.<br />
<br />
So, what constitutes a lamp? A face on a prim, or a whole prim.<br />
What texture parameters change when we click on the lamp? Color, Glow, Full bright.<br />
<br />
How do we tell the script what prim and what face is a lamp?<br />
First, we give the prim a relevant description, explained next. Then, we add one or more configuration lines in the configuration notecard. The notecard part is explained in the "THE CONFIGURATION NOTECARD" section below.<br />
<br />
The format of the description for a lamp is:<br />
<br />
<tt><b>lamp;a_name_we_want</b></tt><br />
<br />
In our sample object, we've found this description:<br />
<br />
<tt><b>lamp;flowerBig</b></tt><br />
<br />
<tt>lamp</tt> is the mandatory part, written exactly as is (CASE SENSITIVE), then <tt>flowerBig</tt> has been a name of our choice. This name will later be used in the configuration notecard, so we have to refer to it.<br />
<br />
The second lamp has as description:<br />
<br />
<tt>lamp;flowerSmall#light</tt><br />
<br />
What does this mean?<br />
<br />
On one side, we find <tt>lamp;flowerSmall</tt> - This, as before, means that the prim is a lamp, and <tt>flowerSmall</tt> is a name of our choice that will be used in the configuration notecard.<br />
<br />
Then we have a # character: this separates the lamp definition from the light point definition.<br />
Then we have the <tt>light</tt> word in the description. When the script finds it, it knows that's the prim that should also work as a SL light point.<br />
<br />
If you now click on a face that is NOT a lamp, you'll get a menu. In that menu, you can cycle the lamps state GLOBALLY. This means that all the lamps will be affected at the same time. Then you can also turn on/off the SL light point and change its properties. You may have several prims and faces as "lamps" that will have color, glow and full bright changed. But there it is only one prim that will be the SL light point.<br />
<br />
IMPORTANT: It is advised that you leave at least ONE face in your object WITHOUT any kind of lamp definition. Otherwise, the menu will never show up, because the lamp cycling behaviour has precedence over the menu.<br />
<br />
<a name="descriptionsFormat"></a><br />
<h2>SETUP: FORMAT OF THE DESCRIPTIONS</h2>To tell the script which of the linked primitives are relevant (lamps or SL-light point), we have to write specific words (CASE SENSITIVE) in the DESCRIPTION of each primitive (DESCRIPTION - not the name, don't confuse them!)<br />
<br />
The format of the descriptions is as follows:<br />
<br />
<tt>parameter</tt><br />
<br />
or<br />
<br />
<tt>parameter1#parameter2</tt><br />
<br />
It doesn't matter the order the parameters are written, as long as a <tt><b>#</b></tt> character separates them.<br />
<br />
As we've seen, when inspecting the sample object, the following parameter-keyword would indicate that the prim is a SL-light point:<br />
<br />
<tt>light</tt><br />
<br />
Then, the other possibility is:<br />
<br />
<tt>lamp;a_name_we_want</tt><br />
<br />
Like it was the case of:<br />
<br />
<tt>lamp;flowerBig</tt><br />
<br />
If we want a primitive having <i>lamps</i> and being at the same time a SL light point, then we write the:<br />
<br />
<tt><b>lamp;flowerSmall#light</b></tt><br />
<br />
combination. The <tt>#</tt> character will separate parameters, and it does not matter the order we choose to write the parameters.<br />
<br />
This:<br />
<br />
<tt>light#lamp;flowerSmall</tt><br />
<br />
would have the same effect.<br />
<br />
Set the DESCRIPTIONS according to these simple rules, drop the main script and the configuration notecard in your linked object, and your lamp is ready to go!<br />
<br />
<a name="configurationNotecard"></a><br />
<h2>SETUP: THE CONFIGURATION NOTECARD</h2><br />
The configuration notecard is named <tt><b>[Black Tulip] Lamps Controller ~CFG~</b></tt>, and it allows us to:<br />
<br />
<ul><li>Write comment lines, for our own clarifications. Comment lines always begin with a # character.</li>
<li>Define what sound clip to use when the SL light point turns on, if any.</li>
<li>Define what sound clip to use when the SL light point turns off, if any.</li>
<li>Define how many states the lamps will cycle among.</li>
<li>Define which faces of our object are lamps, and which values of glow, full bright and color to use per state.</li>
<li>Define which extra buttons we want to add to the menu, to call other scripts from them, having a maximum of 4 buttons.</li>
</ul><br />
With the exception of comment lines, all of the other lines have the structure:<br />
<br />
<tt><b>parameter = value</b></tt><br />
<br />
The accepted parameter keywords are:<br />
<br />
<table cellspacing="5px" cellpadding="5px"><tr> <td valign="top">soundON</td><td>In here, we specify the name of a soundclip that will sound when the SL light point turns on, if any</td> </tr>
<tr> <td valign="top">soundOFF</td><td>In here, we specify the name of a soundclip that will sound when the SL light point turns off, if any</td> </tr>
<tr> <td valign="top">maxLightLevels</td><td>In here, we decide how many states our lamps will cycle through</td> </tr>
<tr> <td valign="top">button</td><td>In here, we decide which extra buttons will show up in our menu, and what other scripts they will call</td> </tr>
<tr> <td valign="top">[lamps]</td><td>Definition of the lamps: The way they're written is different than the parameters listed above</td> </tr>
</table><br />
Now, let's explain how the values are written and what they mean.<br />
<br />
<tt>soundON = soundclip_name</tt><br />
<br />
If we specify a sound clip name after <tt>soundON = </tt>, this sound will be played when the SL light point turns on. The sound clip has to exist in the object, otherwise, no sound will be played.<br />
<br />
<br />
<tt>soundOFF = soundclip_name</tt><br />
<br />
If we specify a sound clip name after <tt>soundOFF = </tt>, this sound will be played when the SL light point turns off. The sound clip has to exist in the object, otherwise, no sound will be played.<br />
<br />
<br />
<tt>maxLightLevels = number</tt><br />
<br />
We can write here a number that should be either 2, 3 or 4. Depending on the number we type, we'll have the following lamp cycle:<br />
<br />
<table cellspacing="5px" cellpadding="5px"><tr> <td valign="top">2</td><td>From off to on; from on to off</td> </tr>
<tr> <td valign="top">3</td><td>From off to min; from min to max; from max to off</td> </tr>
<tr> <td valign="top">4</td><td>From off to min; from min to med; from med to max; from max to off</td> </tr>
</table><br />
If nothing is specified, or a wrong number is written, the script will take 4 as default value.<br />
<br />
<br />
<tt><b>button = button_label|link_msg_number|link_prim|text_to_send</b></tt><br />
<br />
This one is a little more complicated, and it is only required if you plan to add extra buttons that call other scripts. Jump to the <a href="#lamp_definition_in_notecard">LAMP DEFINITION</a> subsection if you are not doing this for now.<br />
<br />
In order to <i>call</i>, <i>execute</i> or <i>launch</i> another script from our script (lamps controller, in this case), we have to use a communication mechanism called <i>linked messages</i>. This is a mechanism that allows scripts to send messages to other scripts in the same linked object, and to listen to possible messages coming from other scripts in the same linked object.<br />
<br />
When we use a <tt>button</tt> line, it means that it will add a button on the menu. This button menu, upon click, will SEND a message to ANOTHER SCRIPT that could be in ANY of the prims of our linked object. That another script should be listening, and will expect to know from us:<br />
<br />
A <i>code number</i> that should be specified in the script documentation. That is <tt>link_msg_number</tt> in the notecard line.<br />
A <i>message</i>. That is <tt>text_to_send</tt> in the notecard line.<br />
A <i>UUID</i>. The lamps controller script sends the UUID of the avatar having clicked the menu.<br />
<br />
Apart from this, the lamp controller script needs a couple more data items to know about:<br />
<br />
What text will show on the menu button?<br />
That is <tt>button_label</tt> in the notecard line.<br />
IMPORTANT: It should not have more than 24 characters.<br />
<br />
To what primitive this message is being sent.<br />
That is <tt>link_prim</tt> in the notecard line.<br />
<br />
Unless your application has very specific requirements, this link_prim code will be one of the following, meaning:<br />
<br />
<table cellspacing="5px" cellpadding="5px"><tr> <td valign="top">1</td><td>This will send the message to the root prim IF our object consists of more than one prim linked (Or there's an avatar sitting on a single-prim item)</td> </tr>
<tr> <td valign="top">-1</td><td>This will send the message to all prims in the linked object</td> </tr>
<tr> <td valign="top">-2</td><td>This will send the message to all prims BUT the one containing the SENDER (lamps controller) script</td> </tr>
<tr> <td valign="top">-3</td><td>This will send the message to all child prims (that is, all prims BUT the root prim)</td> </tr>
<tr> <td valign="top">-4</td><td>This will send the message to the prim where the SENDER (lamps controller) script is in (-4 could be seen as the opposite code of -2)</td> </tr>
</table><br />
Please check the documentation of the other scripts you wish to send linked messages from this one, to make sure of how exactly you should write the line. The lines explained above are the generic ideas valid for every script accepting linked messages, but this documentation cannot replace any other script's documentation for their own interface. Check with the creator of the other script how this should be done.<br />
<br />
<br />
<a name="lamp_definition_in_notecard"></a><br />
<h3>LAMP DEFINITION</h3><br />
We finally get to see how the lamps are defined in the notecard. We will do this by following the example provided in the sample object.<br />
<br />
Remember that we had a prim having as description:<br />
<br />
<tt>lamp;flowerBig</tt><br />
<br />
Now check the following lines in the notecard:<br />
<br />
<pre>flowerBig,1 = 0.2|0|<1,0,0>|0.4|0|<0,1,0>|0.6|1|<0,0,1>
flowerBig,2 = 0.2|0|<1,1,0>|0.4|0|<0,1,1>|0.6|1|<1,0,1></pre><br />
These lines mean the following:<br />
<br />
<pre>flowerBig,1 = 0.2|0|<1,0,0>|0.4|0|<0,1,0>|0.6|1|<0,0,1></pre><br />
The prim having <tt>lamp;flowerBig</tt> in the description will display the following changes on face number 1 (the number after the comma right after flowerBig in the notecard line):<br />
<br />
Values for the minimum light state in that face are given by the first <tt>0.2|0|<1,0,0></tt> group:<br />
<br />
<pre>Glow: 0.2
Full Bright: 0 (So this means, NO full bright)
Color: <1,0,0> (This would be red)</pre><br />
Values for the medium light state in that face are given by the second <tt>0.4|0|<0,1,0></tt> group:<br />
<br />
<pre>Glow: 0.4
Full Bright: 0 (So this means, NO full bright)
Color: <0,1,0> (This would be green)</pre><br />
Values for the maximum light state in that face are given by the third and last <tt>0.6|1|<0,0,1></tt> group:<br />
<br />
<pre>Glow: 0.6
Full Bright: 1 (So this means, YES to full bright)
Color: <0,0,1> (This would be blue)</pre><br />
<br />
Now similarly, we can quickly understand what the second line means:<br />
<br />
<pre>flowerBig,2 = 0.2|0|<1,1,0>|0.4|0|<0,1,1>|0.6|1|<1,0,1></pre><br />
The prim having <tt>lamp;flowerBig</tt> in the description will display the following changes on face number 2:<br />
<br />
Values for the minimum light state in that face are given by the first <tt>0.2|0|<1,1,0></tt> group:<br />
<br />
<pre>Glow: 0.2
Full Bright: 0 (So this means, NO full bright)
Color: <1,1,0> (This would be yellow)</pre><br />
Values for the medium light state in that face are given by the second <tt>0.4|0|<0,1,1></tt> group:<br />
<br />
<pre>Glow: 0.4
Full Bright: 0 (So this means, NO full bright)
Color: <0,1,1> (This would be cyan)</pre><br />
Values for the maximum light state in that face are given by the third and last <tt>0.6|1|<1,0,1></tt> group:<br />
<br />
<pre>Glow: 0.6
Full Bright: 1 (So this means, YES to full bright)
Color: <1,0,1> (This would be magenta)</pre><br />
<br />
Now we can say that, speaking in general, a lamp is defined by a notecard line having the structure:<br />
<br />
<tt><b>primDesc,FACE = Glow_Min|FB_Min|Color_Min|Glow_Med|FB_Med|Color_Med|Glow_Max|FB_Max|Color_Max</b></tt><br />
<br />
Where FACE is the face that will have glow, full bright (FB) and color changed during its light cycle.<br />
<br />
<b>NOTE:</b> If we write -1 for FACE, then that means that ALL FACES in the prim will be a lamp, being subject to the cycle defined by the ONE notecard line.<br />
<br />
<b>IMPORTANT:</b> In this case of all faces, the script will assume that all faces of said prim have the same color, glow and full bright values per state. This is a limitation imposed by design, to guarantee the maximum available memory possible for your linked lamps.<br />
<br />
If you have a case where you would need to consider all faces separately, write them independently in the notecard.<br />
<br />
<br />
<b>IMPORTANT:</b> We will write as many <tt>glow|full_bright|color</tt> groups as number of maxLightLevels we've indicated in the notecard. For example, this means that if we indicate:<br />
<br />
<pre>maxLightLevels = 1</pre><br />
we only have to write lamp definitions as:<br />
<br />
<pre>flowerBig,1 = 0.2|0|<1,0,0></pre><br />
<br />
If we write:<br />
<br />
<pre>maxLightLevels = 2</pre><br />
we would write the lamp definitions as:<br />
<br />
<pre>flowerBig,1 = 0.2|0|<1,0,0>|0.4|0|<0,1,0></pre><br />
and when we have:<br />
<br />
<pre>maxLightLevels = 3</pre><br />
then we write the full lamp definition, as in the sample object:<br />
<br />
<pre>flowerBig,1 = 0.2|0|<1,0,0>|0.4|0|<0,1,0>|0.6|1|<0,0,1></pre><br />
<a name="setupModule"></a><br />
<h2>SETUP: THE MAIN SCRIPT, AS A MODULE YOU CAN USE FROM ANOTHER SCRIPT</h2><a href="http://blacktulip-scripts.blogspot.com/p/common-parts.html#setupModule">Check the following section on this page</a>, knowing that:<br />
<br />
<tt>[Black Tulip] ***Script Name*** [MODULE]</tt> refers to <tt>[Black Tulip] Lamps Controller [MODULE]</tt><br />
<tt>CODE_NUMBER</tt> is <tt>-28640985</tt><br />
<tt>NAME_ON_MENU</tt> is <tt>Lamps</tt><br />
<br />
AVSitter line looks like: <tt>BUTTON Lamps|-28640985</tt><br />
MLP line looks like: <tt>LINKMSG Lamps | 1,-4,-28640985,fromMLP</tt><br />
<br />
You have example AVpos and .MENUITEMS notecards with your purchase. Remember that this works too with AVSitter 2.<br />
<br />
<a name="troubleshooting"></a><br />
<h2>TROUBLESHOOTING</h2><br />
<b>Q:</b> I click the light options on the menu, but no visible outcome shows. What's going wrong?<br />
<br />
<i>A: Most likely, there's not a light source defined in the object. Double-check the DESCRIPTION of the prim you expect to be a SL light point.</i><br />
<br />
<br />
<b>Q:</b> I hear no sounds when the lamps are turned on/off. What could be going wrong?<br />
<br />
<i>A: Make sure that there's a sound clip on the "Content" tab of the prim with the script. Make sure that the name coincides exactly with the name given in the configuration notecard.</i><br />
<br />
<br />
<b>Q:</b> The menu doesn't show when I click on the object. What's going wrong?<br />
<br />
<i>A: Make sure that you have NOT assigned all prims and faces as lamps.</i><br />
<br />
<br />
<b>Q:</b> Why are my lights being colored black? I haven't defined black anywhere.<br />
<br />
<i>A: Make sure that you've assigned <tt>color|glow|full_bright</tt> groups enough per lamp and face, according to the given value for the <tt>maxLightLevels</tt> parameter in the configuration notecard.</i><br />
<br />
<br />
<br />
For any other problem not described here, please <a href="http://blacktulip-store.blogspot.com/2013/06/script-assistance-form.html">give a complete description of your issue in the following online form</a>.<br />
<br />
I'll get back to you after I have read your report and replicated your issue inworld, according to your description of it. Please, be detailed.<br />
<br />
-- Auryn BeornAuryn Beornhttp://www.blogger.com/profile/02832014326094809370noreply@blogger.comtag:blogger.com,1999:blog-2947025942912354529.post-10722210904670043782014-03-21T09:40:00.000-07:002014-08-02T05:19:51.889-07:00Script: Barbeque Controller<h2>[Black Tulip] Barbeque Controller (Script for Designers)</h2>(c) 2014 Auryn Beorn<br />
Beta-test: Sei Lisa, Auryn Beorn<br />
<br />
<a href="https://marketplace.secondlife.com/p/Black-Tulip-Barbeque-Controller-Script/5818803">Barbeque script in Marketplace.</a><br />
<br />
Thank you for having considered this script to enhance the quality of your products. Please read the following instructions carefully, especially the ones explaining which permissions to apply to the scripts for the next owner. Failure to complete this task INVALIDATES the license governing your use of this set of scripts. Should you have problems, please <a href="http://blacktulip-store.blogspot.com/2013/06/script-assistance-form.html">fill the scripts assistance form, explaining what you did and what happened</a>, and I'll get back to you.<br />
<br />
<b>IMPORTANT!</b><br />
The script contains a check to prevent accidental give-aways. If you haven't set permissions correctly in your inventory, then the script will self delete when you try to use it. The best way to ensure you set permissions correctly is by doing it NOW in your inventory.<br />
<br />
<h2>TABLE OF CONTENTS</h2><ul><li><a href="#features">FEATURES</a></li>
<li>SET UP<br />
<ul><li><a href="#whatScriptToUse">WHAT SCRIPT TO USE?</a></li>
<li><a href="#changePermissions">CHANGE PERMISSIONS FOR NEXT OWNER</a></li>
<li><a href="#examineSampleObject">EXAMINING THE SAMPLE OBJECT</a></li>
<li><a href="#descriptionsFormat">FORMAT OF THE DESCRIPTIONS</a></li>
<li><a href="#configurationNotecard">THE CONFIGURATION NOTECARD</a></li>
<li><a href="http://blacktulip-scripts.blogspot.com/p/common-parts.html#faceNumber">HOW TO GET THE FACE NUMBER</a></li>
<li><a href="http://blacktulip-scripts.blogspot.com/p/common-parts.html#colorCode">HOW TO WRITE THE COLOR CODE</a></li>
</ul></li>
<li><a href="#setupModule">THE MAIN SCRIPT, AS A MODULE YOU CAN USE FROM ANOTHER SCRIPT</a></li>
<li><a href="#troubleshooting">TROUBLESHOOTING</a></li>
</ul><br />
<a name="features"></a><br />
<h2>FEATURES</h2><br />
<ul><li>Define one or several <i>barbeque points</i> in your object. Each "barbeque point" can be a whole prim or just a face of it.</li>
<li>Decide the color and glow that each "barbeque point" will have when off, and when reaching the max.</li>
<li>Define an additional SL-light point to illuminate the area when barbeque points are on.</li>
<li>Define, if needed, a sound to play in loop when the global state is on.</li>
<li>Start/Stop at the same time:<br />
<ul><li>Color and Glow cycle effect</li>
<li>Sound</li>
<li>Light (SL light point)</li>
</ul></li>
<li>Start/Stop independently the effects listed above when the global effect is ON</li>
<li>Change the light color, radius, intensity and fall off of this SL-light point.</li>
<li>Menu timeout to reduce lag - no open listeners after timeout (0.001 ms script time when idle)</li>
<li>The script also scans the area every 20 seconds: if no avatars are around, the glow effect is stopped to reduce the impact on the server</li>
<li>Final user can change access to owner only/everybody/group</li>
<li>Menu can be integrated into tools such as MLPv2, AVsitter... (AVsitter version 2 works too!)</li>
<li>You can add up to TWO buttons to interact with (call) other scripts</li>
</ul><br />
<a name="whatScriptToUse"></a><br />
<h2>SET UP: WHAT SCRIPT TO USE?</h2><br />
There are two scripts contained in your folder:<br />
<br />
<pre>[Black Tulip] Barbeque Controller
[Black Tulip] Barbeque Controller [MODULE]
</pre><br />
We need to use ONLY ONE of them in a given product.<br />
<br />
Which one? How to choose?<br />
<br />
The <tt><b>[MODULE]</b></tt> version, as explained in the <a href="#setupModule">THE MAIN SCRIPT, AS A MODULE YOU CAN USE FROM ANOTHER SCRIPT</a> section, will allow you to use this script integrated with other scripts that allow sending linked messages, such as the Multi Love Pose (MLP) or AVSitter for multiavatar, multianimation devices.<br />
<br />
So, depending on what we need, we'll use the following script as main one:<br />
<br />
Normal use - We want the menu to show <b>when the object is clicked</b>:<br />
[Black Tulip] Barbeque Controller<br />
<br />
The menu should show up <b>after clicking a button from another script</b>, like MLP, AVSitter:<br />
[Black Tulip] Barbeque Controller [MODULE]<br />
<br />
Once we've chosen the right main script, we have to set some descriptions in the primitives of the object, following the instructions below, and modify the parameters in the configuration notecard.<br />
<br />
This configuration notecard is named "[Black Tulip] Barbeque Controller ~CFG~"<br />
Embedded in the documentation notecard, you have a copy. Keep it in a safe place, should you need a fresh copy at any time.<br />
<br />
<a name="changePermissions"></a><br />
<h2>SETUP: CHANGE PERMISSIONS FOR NEXT OWNER</h2><br />
<a href="http://blacktulip-scripts.blogspot.com/p/common-parts.html#changePermissions">Check the following section on this page</a>, knowing that each <tt>[Black Tulip] ASSET</tt> refers to the following scripts:<br />
<br />
<tt>[Black Tulip] Barbeque Controller</tt><br />
<tt>[Black Tulip] Barbeque Controller [MODULE]</tt><br />
<br />
<a name="examineSampleObject"></a><br />
<h2>SETUP: EXAMINING THE SAMPLE OBJECT</h2><br />
With this script, you may control the following:<br />
<br />
<ul><li>One or several "barbeque points" in your object. Each "barbeque point" can be a whole prim or just a face of it.</li>
<li>Decide the color and glow that each "barbeque point" will have when off, and when reaching the max.</li>
<li>An additional SL-light point to illuminate the area when barbeque points are on.</li>
<li>Define, if needed, a sound to play in loop when the global state is on.</li>
<li>Start/Stop at the same time:<br />
<ul><li>Color and Glow cycle effect</li>
<li>Sound</li>
<li>Light (SL light point)</li>
</ul></li>
<li>Start/Stop independently the effects listed above when the global effect is ON</li>
</ul><br />
We'll understand better what this means by examining the <tt>[Black Tulip] Barbeque Controller - SAMPLE OBJECT</tt> object. Rez it, and let's follow this explanation.<br />
<br />
Before anything, right click the object to edit, then click the "Content" tab. When we do this, we're inspecting the contents of the ROOT PRIM. You should see:<br />
<br />
<ul><li>The <tt>[Black Tulip] Barbeque Controller</tt> script</li>
<li>The <tt>[Black Tulip] Barbeque Controller ~CFG~</tt> configuration notecard</li>
<li>The well known sample sound called <tt>Crackling Fire</tt></li>
</ul><br />
What does this mean?<br />
That the script, the configuration notecard and the soundclip, if any, have to be dropped into the ROOT PRIM. This is the default when we simply right click an object, then select "Edit" from the menu.<br />
<br />
<br />
Having this clear, now let's examine the sample object in detail. It consists of three linked prims: A (mesh) barbeque and one box. Right click to edit, click "Edit linked", and now:<br />
<br />
<ul><li>Inspect the barbeque prim: the coals, which are one mesh face, will have a glow and color effect running on it.</li>
<li>Inspect now the description of this prim. It says:</li>
</ul><br />
<tt>glowPoint;coals</tt><br />
<br />
<ul><li>Inspect the red box and its description. It says:</li>
</ul><br />
<tt>glowPoint;redBox#light</tt><br />
<br />
<br />
What constitutes a <i>barbeque prim</i>? A face on a prim, or a whole prim.<br />
What texture parameters cycle from initial to end, when we activate it from the menu? Color, Glow.<br />
<br />
How do we tell the script what prim and what face is a <i>barbeque point</i>?<br />
First, we give the prim a relevant description, explained next. Then, we add one or more configuration lines in the configuration notecard. The notecard part is explained in the "THE CONFIGURATION NOTECARD" section below.<br />
<br />
The format of the description for a <i>barbeque point</i> is:<br />
<br />
<tt><b>glowPoint;a_name_we_want</b></tt><br />
<br />
In our sample object, we've found this description:<br />
<br />
<tt>glowPoint;coals</tt><br />
<br />
<tt>glowPoint</tt> is the mandatory part, written exactly as is (CASE SENSITIVE), then <tt>coals</tt> has been a name of our choice. This name will later be used in the configuration notecard, so we have to refer to it.<br />
<br />
The second <i>barbeque point</i> has as description:<br />
<br />
<tt>glowPoint;redBox#light</tt><br />
<br />
What does this mean?<br />
<br />
On one side, we find <tt>glowPoint;redBox</tt> - This, as before, means that the prim is a <i>barbeque point</i>, and <tt>redBox</tt> is a name of our choice that will be used in the configuration notecard.<br />
<br />
Then we have a <tt><b>#</b></tt> character: this separates the barbeque point definition from the light point definition.<br />
Then we have the <tt><b>light</b></tt> word in the description. When the script finds it, it knows that's the prim that should also work as a SL light point.<br />
<br />
You may have several prims and faces as <i>barbeque points</i> that will have color and glow cycling when activated. But there it is only one prim that will be the SL light point.<br />
<br />
<a name="descriptionsFormat"></a><br />
<h2>SETUP: FORMAT OF THE DESCRIPTIONS</h2><br />
To tell the script which of the linked primitives are relevant (<i>barbeque points</i> or SL-light point), we have to write specific words (CASE SENSITIVE) in the DESCRIPTION of each primitive (DESCRIPTION - not the name, don't confuse them!)<br />
<br />
The format of the descriptions is as follows:<br />
<br />
<tt><b>parameter</b></tt><br />
<br />
or<br />
<br />
<tt><b>parameter1#parameter2</b></tt><br />
<br />
<br />
It doesn't matter the order the parameters are written, as long as a # character separates them.<br />
<br />
As we've seen, when inspecting the sample object, the following parameter-keyword would indicate that the prim is a SL-light point:<br />
<br />
<tt><b>light</b></tt><br />
<br />
Then, the other possibility is:<br />
<br />
<tt><b>glowPoint;a_name_we_want</b></tt><br />
<br />
Like it was the case of:<br />
<br />
<tt>glowPoint;coals</tt><br />
<br />
If we want a primitive having <i>barbeque points</i> and being at the same time a SL light point, then we write the:<br />
<br />
<tt>glowPoint;coals#light</tt><br />
<br />
combination. The <tt><b>#</b></tt> character will separate parameters, and it does not matter the order we choose to write the parameters.<br />
<br />
This:<br />
<br />
<tt>light#glowPoint;coals</tt><br />
<br />
would have the same effect.<br />
<br />
<br />
The possible descriptions this script recognizes are:<br />
<br />
Expected description for a <i>barbeque point</i>: <tt>glowPoint;a_name_we_want</tt><br />
Expected description for a light point: <tt>light</tt><br />
<br />
Set the DESCRIPTIONS according to these simple rules, drop the main script and the configuration notecard in your linked object, and your barbeque is ready to go!<br />
<br />
<a name="configurationNotecard"></a><br />
<h2>SETUP: THE CONFIGURATION NOTECARD</h2><br />
The configuration notecard is named <tt>[Black Tulip] Barbeque Controller ~CFG~</tt>, and it allows us to:<br />
<br />
<ul><li>Write comment lines, for our own clarifications. Comment lines always begin with a <tt><b>#</b></tt> character.</li>
<li>Define what sound clip to use when the global effect is turned on, if any.</li>
<li>Define which faces of our object are <i>barbeque points</i>, and which values of glow and color to use as initial and end cycle values.</li>
<li>Define how many steps will use the cycle effect to go from initial to end and back to initial.</li>
<li>Define how much time between steps in the glow cycle.</li>
<li>Define which extra buttons we want to add to the menu, to call other scripts from them, having a maximum of 2 buttons.</li>
</ul><br />
With the exception of comment lines, all of the other lines have the structure:<br />
<br />
<tt><b>parameter = value</b></tt><br />
<br />
The accepted parameter keywords are:<br />
<br />
<table cellspacing="5px" cellpadding="5px"><tr> <td valign="top">sound</td><td>In here, we specify the name of a soundclip that will sound when the SL light point turns on, if any</td> </tr>
<tr> <td valign="top">totalSteps</td><td>In here, we specify how many steps will use the cycle effect to cover the full initial -$gt; end -> initial cycle for both color and glow.<br />
This means that if we define, for example, 20 steps, we have 10 steps to go from initial to end, then the remaining 10 to go from end to initial again</td> </tr>
<tr> <td valign="top">timeBetweenSteps</td><td>In here, we decide the time between steps in the glow cycle: the smaller the time, the heavier for the server. The minimum value accepted is 0.2</td> </tr>
<tr> <td valign="top">button</td><td>In here, we decide which extra buttons will show up in our menu, and what other scripts they will call</td> </tr>
<tr> <td valign="top">[BBQ_points]</td><td>Definition of the <i>barbeque points</i>: The way they're written is different than the parameters listed above</td> </tr>
</table><br />
Now, let's explain how the values are written and what they mean.<br />
<br />
<tt>sound = soundclip_name</tt><br />
<br />
If we specify a sound clip name after sound = , this sound will be played as a loop sound when the SL light point turns on. The sound clip has to exist in the object, otherwise, no sound will be played.<br />
<br />
<br />
<tt>totalSteps = number</tt><br />
<br />
We can write here a number that should be greater or equal than 2. It has to be a whole number (no decimals).<br />
For example, if we write:<br />
<br />
<tt>totalSteps = 30</tt><br />
<br />
This means that when we turn on the glow/color cycle effect, the script will take the initial values given in the notecard for color and glow in each <i>barbeque point</i>, then perform 30/2 = 15 steps until reaching the final values given in the notecard for color and glow. Once the script reaches this end value, then the remaining 30 - 15 = 15 steps are used to go from the final values to the initial values again.<br />
<br />
If nothing is specified, or a wrong number is written, the script will take 20 as default value.<br />
<br />
<br />
<tt>timeBetweenSteps = number</tt><br />
<br />
When we activate the glow cycle effect, the script will run the totalSteps indicated above per initial_values -> end_values -> initial_values cycle. And how much time will pass between each step? The time, in seconds, that we specify after <tt>timeBetweenSteps =</tt><br />
<br />
The minimum value accepted, in an attempt to stress the servers the least possible, is 0.2. This value still gives for a smooth cycle when the sim has no lag. You can of course try with higher values: that would be even better in lag terms!<br />
<br />
As an extra measure to help with lag, the script incorporates this mechanism:<br />
<br />
When the color and glow cycle effect has been turned on, the script scans every 20 seconds for avatars in a distance of 20 meters from the object. If no avatars were found, then the color and glow cycle effect will be turned off automatically (so the server will not be stressed by calculations which nobody will see anyway!)<br />
<br />
An user can, of course, cam from further than 20 meters and click to use the menu to start the glow effect again, but 20 seconds after, the scan will detect no avatars in 20 meters and will stop the effect again.<br />
<br />
<br />
<tt>button = button_label|link_msg_number|link_prim|text_to_send</tt><br />
<br />
This one is a little more complicated, and it is only required if you plan to add extra buttons that call other scripts. Jump to the "BARBEQUE POINT DEFINITION" subsection if you are not doing this for now.<br />
<br />
In order to "call", "execute" or "launch" another script from our script (barbeque controller, in this case), we have to use a communication mechanism called "linked messages." This is a mechanism that allows scripts to send messages to other scripts in the same linked object, and to listen to possible messages coming from other scripts in the same linked object.<br />
<br />
When we use a "button" line, it means that it will add a button on the menu. This button menu, upon click, will SEND a message to ANOTHER SCRIPT that could be in ANY of the prims of our linked object. That another script should be listening, and will expect to know from us:<br />
<br />
A code number that should be specified in the script documentation. That is <tt>link_msg_number</tt> in the notecard line.<br />
A message. That is <tt>text_to_send</tt> in the notecard line.<br />
A UUID. The barbeque controller script sends the UUID of the avatar having clicked the menu.<br />
<br />
Apart from this, the barbeque controller script needs a couple more data items to know about:<br />
<br />
What text will show on the menu button?<br />
That is button_label in the notecard line.<br />
IMPORTANT: It should not have more than 24 characters.<br />
<br />
To what primitive this message is being sent.<br />
That is link_prim in the notecard line.<br />
<br />
Unless your application has very specific requirements, this link_prim code will be one of the following, meaning:<br />
<br />
<table cellspacing="5px" cellpadding="5px"><tr> <td valign="top">1</td><td>This will send the message to the root prim IF our object consists of more than one prim linked (Or there's an avatar sitting on a single-prim item)</td> </tr>
<tr> <td valign="top">-1</td><td>This will send the message to all prims in the linked object</td> </tr>
<tr> <td valign="top">-2</td><td>This will send the message to all prims BUT the one containing the SENDER (barbeque controller) script</td> </tr>
<tr> <td valign="top">-3</td><td>This will send the message to all child prims (that is, all prims BUT the root prim)</td> </tr>
<tr> <td valign="top">-4</td><td>This will send the message to the prim where the SENDER (barbeque controller) script is in (-4 could be seen as the opposite code of -2)</td> </tr>
</table><br />
Please check the documentation of the other scripts you wish to send linked messages from this one, to make sure of how exactly you should write the line. The lines explained above are the generic ideas valid for every script accepting linked messages, but this documentation cannot replace any other script's documentation for their own interface. Check with the creator of the other script how this should be done.<br />
<br />
<br />
<h3>"BARBEQUE POINT" DEFINITION</h3><br />
We finally get to see how the <i>barbeque points</i> are defined in the notecard. We will do this by following the example provided in the sample object.<br />
<br />
Remember that we had a prim having as part of the description:<br />
<br />
<tt>glowPoint;redBox</tt><br />
<br />
Now check the following lines in the notecard:<br />
<br />
<pre>redBox,1 = 0.1|<0.5,0,0>|0.2|<0,0.5,0>
redBox,2 = 0.2|<0.5,0.5,0>|0.3|<0,0.5,0.5>
</pre><br />
These lines mean the following:<br />
<br />
<tt>redBox,1 = 0.1|<0.5,0,0>|0.2|<0,0.5,0></tt><br />
<br />
The prim having <tt>glowPoint;redBox</tt> in the description will display the following changes on face number 1 (the number after the comma right after redBox in the notecard line):<br />
<br />
Values for the initial color and glow values in the glow cycle in that face are given by the first <tt>0.1|<0.5,0,0></tt> group:<br />
<br />
<pre>Glow: 0.1
Color: <0.5,0,0> (This would be dark red)</pre><br />
Values for the end color and glow values in the glow cycle in that face are given by the second <tt>0.2|<0,0.5,0></tt> group:<br />
<br />
<pre>Glow: 0.2
Color: <0,0.5,0> (This would be dark green)</pre><br />
<br />
Now similarly, we can quickly understand what the second line means:<br />
<br />
<tt>redBox,2 = 0.2|<0.5,0.5,0>|0.3|<0,0.5,0.5></tt><br />
<br />
The prim having <tt>glowPoint;redBox</tt> in the description will display the following changes on face number 2:<br />
<br />
Values for the initial color and glow values in the glow cycle in that face are given by the first <tt>0.1|<0.5,0,0></tt> group:<br />
<br />
<pre>Glow: 0.2
Color: <0.5,0.5,0></pre><br />
Values for the end color and glow values in the glow cycle in that face are given by the second <tt>0.2|<0,0.5,0></tt> group:<br />
<br />
<pre>Glow: 0.3
Color: <0,0.5,0.5></pre><br />
<br />
Now we can say that, speaking in general, a barbeque point is defined by a notecard line having the structure:<br />
<br />
<tt><b>primDesc,FACE = Glow_Initial|Color_Initial|Glow_Final|Color_Final</b></tt><br />
<br />
Where FACE is the face that will have glow, full bright (FB) and color changed during its light cycle.<br />
<br />
<b>NOTE:</b> If we write -1 for FACE, then that means that ALL FACES in the prim will be a <i>barbeque point</i>, being subject to the cycle defined by the ONE notecard line.<br />
<br />
<b>IMPORTANT:</b> In this case of all faces, the script will assume that all faces of said prim have the same color and glow values in the cycle. This is a limitation imposed by design, to guarantee the maximum available memory possible for your linked <i>barbeque points</i>.<br />
<br />
If you have a case where you would need to consider all faces separately, write them independently in the notecard.<br />
<br />
<a name="setupModule"></a><br />
<h2>SETUP: THE MAIN SCRIPT, AS A MODULE YOU CAN USE FROM ANOTHER SCRIPT</h2><a href="http://blacktulip-scripts.blogspot.com/p/common-parts.html#setupModule">Check the following section on this page</a>, knowing that:<br />
<br />
<tt>[Black Tulip] ***Script Name*** [MODULE]</tt> refers to <tt>[Black Tulip] Barbeque Controller [MODULE]</tt><br />
<tt>CODE_NUMBER</tt> is <tt>-28640986</tt><br />
<tt>NAME_ON_MENU</tt> is <tt>BBQ</tt><br />
<br />
AVSitter line looks like: <tt>BUTTON BBQ|-28640986</tt><br />
MLP line looks like: <tt>LINKMSG BBQ | 1,-4,-28640986,fromMLP</tt><br />
<br />
You have example AVpos and .MENUITEMS notecards with your purchase. Remember that this works too with AVSitter 2.<br />
<br />
<a name="troubleshooting"></a><br />
<h2>TROUBLESHOOTING</h2><br />
<b>Q:</b> I click the light/glow options on the menu, but no visible outcome shows. What's going wrong?<br />
<br />
<i>A: Most likely, there's not a light source/glow source defined in the object. Double-check the DESCRIPTION of the prim you expect to be a SL light point/glow source.</i><br />
<br />
<br />
<b>Q:</b> I hear no sound when I change the volume from the menu. What could be going wrong?<br />
<br />
<i>A: Make sure that there's a sound clip on the "Content" tab of the prim with the script. Make sure that the name coincides exactly with the name given in the configuration notecard.</i><br />
<br />
<br />
<b>Q:</b> Why are my "barbeque points" being colored black? I haven't defined black anywhere.<br />
<br />
<i>A: Make sure that you've assigned exactly TWO color|glow groups per "barbeque point" and face in the configuration notecard.</i><br />
<br />
<br />
For any other problem not described here, please <a href="http://blacktulip-store.blogspot.com/2013/06/script-assistance-form.html">give a complete description of your issue in the following online form</a>.<br />
<br />
I'll get back to you after I have read your report and replicated your issue inworld, according to your description of it. Please, be detailed.<br />
<br />
-- Auryn BeornAuryn Beornhttp://www.blogger.com/profile/02832014326094809370noreply@blogger.comtag:blogger.com,1999:blog-2947025942912354529.post-17061990538592827272014-03-21T05:17:00.000-07:002014-11-13T06:34:30.142-08:00Script: Barbeque Controller - Full Edition<h2>[Black Tulip] Barbeque Controller - Full Edition (Script for Designers)</h2>(c) 2014 Auryn Beorn<br />
Beta-test: Sei Lisa, Auryn Beorn<br />
<br />
<a href="https://marketplace.secondlife.com/p/Black-Tulip-Barbeque-Controller-Script/5818803">Barbeque script in Marketplace.</a><br />
<br />
Thank you for having considered this script to enhance the quality of your products. Please read the following instructions carefully, especially the ones explaining which permissions to apply to the scripts for the next owner. Failure to complete this task INVALIDATES the license governing your use of this set of scripts. Should you have problems, please <a href="http://blacktulip-store.blogspot.com/2013/06/script-assistance-form.html">fill the scripts assistance form, explaining what you did and what happened</a>, and I'll get back to you.<br />
<br />
<b>IMPORTANT!</b><br />
The script contains a check to prevent accidental give-aways. If you haven't set permissions correctly in your inventory, then the script will self delete when you try to use it. The best way to ensure you set permissions correctly is by doing it NOW in your inventory.<br />
<br />
<h2>TABLE OF CONTENTS</h2><ul><li><a href="#features">FEATURES</a></li>
<li>SET UP<br />
<ul><li><a href="#whatScriptToUse">WHAT SCRIPT TO USE?</a></li>
<li><a href="#changePermissions">CHANGE PERMISSIONS FOR NEXT OWNER</a></li>
<li><a href="#examineSampleObject">EXAMINING THE SAMPLE OBJECT</a></li>
<li><a href="#descriptionsFormat">FORMAT OF THE DESCRIPTIONS</a></li>
<li><a href="#configurationNotecard">THE CONFIGURATION NOTECARD</a></li>
<li><a href="http://blacktulip-scripts.blogspot.com/p/common-parts.html#faceNumber">HOW TO GET THE FACE NUMBER</a></li>
<li><a href="http://blacktulip-scripts.blogspot.com/p/common-parts.html#colorCode">HOW TO WRITE THE COLOR CODE</a></li>
<li><a href="http://blacktulip-scripts.blogspot.com/p/common-parts.html#particlesInNC">FILLING THE PARTICLES SECTION</a></li>
<li><a href="http://blacktulip-scripts.blogspot.com/p/common-parts.html#importantNoteAboutParticles">IMPORTANT NOTE ABOUT THE PARTICLES</a></li>
</ul></li>
<li><a href="#setupModule">THE MAIN SCRIPT, AS A MODULE YOU CAN USE FROM ANOTHER SCRIPT</a></li>
<li><a href="#troubleshooting">TROUBLESHOOTING</a></li>
</ul><br />
<a name="features"></a><br />
<h2>FEATURES</h2><br />
<ul><li>Define one or several <i>barbeque points</i> in your object. Each "barbeque point" can be a whole prim or just a face of it.</li>
<li>Decide the color and glow that each "barbeque point" will have when off, and when reaching the max.</li>
<li>Define an additional SL-light point to illuminate the area when barbeque points are on.</li>
<li>Define, if needed, a sound to play in loop when the global state is on.</li>
<li>Define, if needed, two additional particle effects for sparks (or flames) and smoke.</li>
<li>Start/Stop at the same time:<br />
<ul><li>Color and Glow cycle effect</li>
<li>Particles sparks/flames</li>
<li>Particles smoke</li>
<li>Sound</li>
<li>Light (SL light point)</li>
</ul></li>
<li>Start/Stop independently the effects listed above when the global effect is ON</li>
<li>Change the light color, radius, intensity and fall off of this SL-light point.</li>
<li>Menu timeout to reduce lag - no open listeners after timeout (0.001 ms script time when idle)</li>
<li>The script also scans the area every 20 seconds: if no avatars are around, the glow effect is stopped to reduce the impact on the server</li>
<li>Final user can change access to owner only/everybody/group</li>
<li>Menu can be integrated into tools such as MLPv2, AVsitter... (AVsitter version 2 works too!)</li>
</ul><br />
<a name="whatScriptToUse"></a><br />
<h2>SET UP: WHAT SCRIPT TO USE?</h2><br />
There are two scripts contained in your folder:<br />
<br />
<pre>[Black Tulip] Barbeque Controller - Full Edition
[Black Tulip] Barbeque Controller - Full Edition [MODULE]
</pre><br />
We need to use ONLY ONE of them in a given product.<br />
<br />
Which one? How to choose?<br />
<br />
The <tt><b>[MODULE]</b></tt> version, as explained in the <a href="#setupModule">THE MAIN SCRIPT, AS A MODULE YOU CAN USE FROM ANOTHER SCRIPT</a> section, will allow you to use this script integrated with other scripts that allow sending linked messages, such as the Multi Love Pose (MLP) or AVSitter for multiavatar, multianimation devices.<br />
<br />
So, depending on what we need, we'll use the following script as main one:<br />
<br />
Normal use - We want the menu to show <b>when the object is clicked</b>:<br />
[Black Tulip] Barbeque Controller - Full Edition<br />
<br />
The menu should show up <b>after clicking a button from another script</b>, like MLP, AVSitter:<br />
[Black Tulip] Barbeque Controller - Full Edition [MODULE]<br />
<br />
Once we've chosen the right main script, we have to set some descriptions in the primitives of the object, following the instructions below, and modify the parameters in the configuration notecard.<br />
<br />
This configuration notecard is named "[Black Tulip] Barbeque Controller Full Ed. ~CFG~"<br />
Embedded in the documentation notecard, you have a copy. Keep it in a safe place, should you need a fresh copy at any time.<br />
<br />
<a name="changePermissions"></a><br />
<h2>SETUP: CHANGE PERMISSIONS FOR NEXT OWNER</h2><br />
<a href="http://blacktulip-scripts.blogspot.com/p/common-parts.html#changePermissions">Check the following section on this page</a>, knowing that each <tt>[Black Tulip] ASSET</tt> refers to the following scripts:<br />
<br />
<tt>[Black Tulip] Barbeque Controller - Full Edition</tt><br />
<tt>[Black Tulip] Barbeque Controller - Full Edition [MODULE]</tt><br />
<br />
<a name="examineSampleObject"></a><br />
<h2>SETUP: EXAMINING THE SAMPLE OBJECT</h2><br />
With this script, you may control the following:<br />
<br />
<ul><li>One or several "barbeque points" in your object. Each "barbeque point" can be a whole prim or just a face of it.</li>
<li>Decide the color and glow that each "barbeque point" will have when off, and when reaching the max.</li>
<li>An additional SL-light point to illuminate the area when lamps are on.</li>
<li>Define, if needed, a sound to play in loop when the global state is on.</li>
<li>Define, if needed, two additional particle effects for sparks (or flames) and smoke.</li>
<li>Start/Stop at the same time:<br />
<ul><li>Color and Glow cycle effect</li>
<li>Particles sparks/flames</li>
<li>Particles smoke</li>
<li>Sound</li>
<li>Light (SL light point)</li>
</ul></li>
<li>Start/Stop independently the effects listed above when the global effect is ON</li>
</ul><br />
We'll understand better what this means by examining the <tt>[Black Tulip] Barbeque Controller - SAMPLE OBJECT</tt> object. Rez it, and let's follow this explanation.<br />
<br />
Before anything, right click the object to edit, then click the "Content" tab. When we do this, we're inspecting the contents of the ROOT PRIM. You should see:<br />
<br />
<ul><li>The <tt>[Black Tulip] Barbeque Controller - Full Edition</tt> script</li>
<li>The <tt>[Black Tulip] Barbeque Controller Full Ed. ~CFG~</tt> configuration notecard</li>
<li>The well known sample sound called <tt>Crackling Fire</tt></li>
</ul><br />
What does this mean?<br />
That the script, the configuration notecard and the soundclip, if any, have to be dropped into the ROOT PRIM. This is the default when we simply right click an object, then select "Edit" from the menu.<br />
<br />
<br />
Having this clear, now let's examine the sample object in detail. It consists of three linked prims: A (mesh) barbeque and two boxes. Right click to edit, click "Edit linked", and now:<br />
<br />
<ul><li>Inspect the barbeque prim: the coals, which are one mesh face, will have a glow and color effect running on it.</li>
<li>Inspect now the description of this prim. It says:</li>
</ul><br />
<tt>glowPoint;coals</tt><br />
<br />
<ul><li>Inspect the red box and its description. It says:</li>
</ul><br />
<tt>glowPoint;redBox#light#sparks</tt><br />
<br />
<ul><li>Inspect the remaining box's description. It says:</li>
</ul><br />
<tt>smoke</tt><br />
<br />
<br />
What constitutes a <i>barbeque prim</i>? A face on a prim, or a whole prim.<br />
What texture parameters cycle from initial to end, when we activate it from the menu? Color, Glow.<br />
<br />
How do we tell the script what prim and what face is a <i>barbeque point</i>?<br />
First, we give the prim a relevant description, explained next. Then, we add one or more configuration lines in the configuration notecard. The notecard part is explained in the "THE CONFIGURATION NOTECARD" section below.<br />
<br />
The format of the description for a <i>barbeque point</i> is:<br />
<br />
<tt><b>glowPoint;a_name_we_want</b></tt><br />
<br />
In our sample object, we've found this description:<br />
<br />
<tt>glowPoint;coals</tt><br />
<br />
<tt>glowPoint</tt> is the mandatory part, written exactly as is (CASE SENSITIVE), then <tt>coals</tt> has been a name of our choice. This name will later be used in the configuration notecard, so we have to refer to it.<br />
<br />
The second <i>barbeque point</i> has as description:<br />
<br />
<tt>glowPoint;redBox#light#sparks</tt><br />
<br />
What does this mean?<br />
<br />
On one side, we find <tt>glowPoint;redBox</tt> - This, as before, means that the prim is a <i>barbeque point</i>, and <tt>redBox</tt> is a name of our choice that will be used in the configuration notecard.<br />
<br />
Then we have a <tt><b>#</b></tt> character: this separates the barbeque point definition from the light point definition.<br />
Then we have the <tt><b>light</b></tt> word in the description. When the script finds it, it knows that's the prim that should also work as a SL light point.<br />
Then we have another <tt><b>#</b></tt> character: this separates the light point definition from what comes next.<br />
Then we have the <tt>sparks</tt> word in the description. When the script finds it, it knows that's the prim that should also emit the particles spark effect.<br />
<br />
You may have several prims and faces as <i>barbeque points</i> that will have color and glow cycling when activated. But there it is only one prim that will be the SL light point.<br />
<br />
<a name="descriptionsFormat"></a><br />
<h2>SETUP: FORMAT OF THE DESCRIPTIONS</h2><br />
To tell the script which of the linked primitives are relevant (<i>barbeque points</i> or SL-light point), we have to write specific words (CASE SENSITIVE) in the DESCRIPTION of each primitive (DESCRIPTION - not the name, don't confuse them!)<br />
<br />
The format of the descriptions is as follows:<br />
<br />
<tt><b>parameter</b></tt><br />
<br />
or<br />
<br />
<tt><b>parameter1#parameter2</b></tt><br />
<br />
or even<br />
<br />
<tt><b>parameter1#parameter2#parameter3</b></tt><br />
<br />
<br />
It doesn't matter the order the parameters are written, as long as a # character separates them.<br />
<br />
As we've seen, when inspecting the sample object, the following parameter-keyword would indicate that the prim is a SL-light point:<br />
<br />
<tt><b>light</b></tt><br />
<br />
Then, the other possibility is:<br />
<br />
<tt><b>glowPoint;a_name_we_want</b></tt><br />
<br />
Like it was the case of:<br />
<br />
<tt>glowPoint;coals</tt><br />
<br />
If we want a primitive having <i>barbeque points</i> and being at the same time a SL light point, then we write the:<br />
<br />
<tt>glowPoint;coals#light</tt><br />
<br />
combination. The <tt><b>#</b></tt> character will separate parameters, and it does not matter the order we choose to write the parameters.<br />
<br />
This:<br />
<br />
<tt>light#glowPoint;coals</tt><br />
<br />
would have the same effect.<br />
<br />
<br />
The possible descriptions this script recognizes are:<br />
<br />
Expected description for a <i>barbeque point</i>: <tt>glowPoint;a_name_we_want</tt><br />
Expected description for a light point: <tt>light</tt><br />
Expected description for particle effect #1: <tt>sparks</tt><br />
Expected description for particle effect #2: <tt>smoke</tt><br />
<br />
<br />
Set the DESCRIPTIONS according to these simple rules, drop the main script and the configuration notecard in your linked object, and your barbeque is ready to go!<br />
<br />
<a name="configurationNotecard"></a><br />
<h2>SETUP: THE CONFIGURATION NOTECARD</h2><br />
The configuration notecard is named <tt>[Black Tulip] Barbeque Controller Full Ed. ~CFG~</tt>, and it allows us to:<br />
<br />
<ul><li>Write comment lines, for our own clarifications. Comment lines always begin with a <tt><b>#</b></tt> character.</li>
<li>Define what sound clip to use when the global effect is turned on, if any.</li>
<li>Define which faces of our object are <i>barbeque points</i>, and which values of glow and color to use as initial and end cycle values.</li>
<li>Define how many steps will use the cycle effect to go from initial to end and back to initial.</li>
<li>Define how much time between steps in the glow cycle.</li>
</ul><br />
With the exception of comment lines, all of the other lines have the structure:<br />
<br />
<tt><b>parameter = value</b></tt><br />
<br />
The accepted parameter keywords are:<br />
<br />
<table cellspacing="5px" cellpadding="5px"><tr> <td valign="top">sound</td><td>In here, we specify the name of a soundclip that will sound when the SL light point turns on, if any</td> </tr>
<tr> <td valign="top">totalSteps</td><td>In here, we specify how many steps will use the cycle effect to cover the full initial -$gt; end -> initial cycle for both color and glow.<br />
This means that if we define, for example, 20 steps, we have 10 steps to go from initial to end, then the remaining 10 to go from end to initial again</td> </tr>
<tr> <td valign="top">timeBetweenSteps</td><td>In here, we decide the time between steps in the glow cycle: the smaller the time, the heavier for the server. The minimum value accepted is 0.2</td> </tr>
<tr> <td valign="top">[BBQ_points]</td><td>Definition of the <i>barbeque points</i>: The way they're written is different than the parameters listed above</td> </tr>
</table><br />
Now, let's explain how the values are written and what they mean.<br />
<br />
<tt>sound = soundclip_name</tt><br />
<br />
If we specify a sound clip name after sound = , this sound will be played as a loop sound when the SL light point turns on. The sound clip has to exist in the object, otherwise, no sound will be played.<br />
<br />
<br />
<tt>totalSteps = number</tt><br />
<br />
We can write here a number that should be greater or equal than 2. It has to be a whole number (no decimals).<br />
For example, if we write:<br />
<br />
<tt>totalSteps = 30</tt><br />
<br />
This means that when we turn on the glow/color cycle effect, the script will take the initial values given in the notecard for color and glow in each <i>barbeque point</i>, then perform 30/2 = 15 steps until reaching the final values given in the notecard for color and glow. Once the script reaches this end value, then the remaining 30 - 15 = 15 steps are used to go from the final values to the initial values again.<br />
<br />
If nothing is specified, or a wrong number is written, the script will take 20 as default value.<br />
<br />
<br />
<tt>timeBetweenSteps = number</tt><br />
<br />
When we activate the glow cycle effect, the script will run the totalSteps indicated above per initial_values -> end_values -> initial_values cycle. And how much time will pass between each step? The time, in seconds, that we specify after <tt>timeBetweenSteps =</tt><br />
<br />
The minimum value accepted, in an attempt to stress the servers the least possible, is 0.2. This value still gives for a smooth cycle when the sim has no lag. You can of course try with higher values: that would be even better in lag terms!<br />
<br />
As an extra measure to help with lag, the script incorporates this mechanism:<br />
<br />
When the color and glow cycle effect has been turned on, the script scans every 20 seconds for avatars in a distance of 20 meters from the object. If no avatars were found, then the color and glow cycle effect will be turned off automatically (so the server will not be stressed by calculations which nobody will see anyway!)<br />
<br />
An user can, of course, cam from further than 20 meters and click to use the menu to start the glow effect again, but 20 seconds after, the scan will detect no avatars in 20 meters and will stop the effect again.<br />
<br />
<h3>"BARBEQUE POINT" DEFINITION</h3><br />
We finally get to see how the <i>barbeque points</i> are defined in the notecard. We will do this by following the example provided in the sample object.<br />
<br />
Remember that we had a prim having as part of the description:<br />
<br />
<tt>glowPoint;redBox</tt><br />
<br />
Now check the following lines in the notecard:<br />
<br />
<pre>redBox,1 = 0.1|<0.5,0,0>|0.2|<0,0.5,0>
redBox,2 = 0.2|<0.5,0.5,0>|0.3|<0,0.5,0.5>
</pre><br />
These lines mean the following:<br />
<br />
<tt>redBox,1 = 0.1|<0.5,0,0>|0.2|<0,0.5,0></tt><br />
<br />
The prim having <tt>glowPoint;redBox</tt> in the description will display the following changes on face number 1 (the number after the comma right after redBox in the notecard line):<br />
<br />
Values for the initial color and glow values in the glow cycle in that face are given by the first <tt>0.1|<0.5,0,0></tt> group:<br />
<br />
<pre>Glow: 0.1
Color: <0.5,0,0> (This would be dark red)</pre><br />
Values for the end color and glow values in the glow cycle in that face are given by the second <tt>0.2|<0,0.5,0></tt> group:<br />
<br />
<pre>Glow: 0.2
Color: <0,0.5,0> (This would be dark green)</pre><br />
<br />
Now similarly, we can quickly understand what the second line means:<br />
<br />
<tt>redBox,2 = 0.2|<0.5,0.5,0>|0.3|<0,0.5,0.5></tt><br />
<br />
The prim having <tt>glowPoint;redBox</tt> in the description will display the following changes on face number 2:<br />
<br />
Values for the initial color and glow values in the glow cycle in that face are given by the first <tt>0.1|<0.5,0,0></tt> group:<br />
<br />
<pre>Glow: 0.2
Color: <0.5,0.5,0></pre><br />
Values for the end color and glow values in the glow cycle in that face are given by the second <tt>0.2|<0,0.5,0></tt> group:<br />
<br />
<pre>Glow: 0.3
Color: <0,0.5,0.5></pre><br />
<br />
Now we can say that, speaking in general, a lamp is defined by a notecard line having the structure:<br />
<br />
<tt><b>primDesc,FACE = Glow_Initial|Color_Initial|Glow_Final|Color_Final</b></tt><br />
<br />
Where FACE is the face that will have glow, full bright (FB) and color changed during its light cycle.<br />
<br />
<b>NOTE:</b> If we write -1 for FACE, then that means that ALL FACES in the prim will be a <i>barbeque point</i>, being subject to the cycle defined by the ONE notecard line.<br />
<br />
<b>IMPORTANT:</b> In this case of all faces, the script will assume that all faces of said prim have the same color and glow values in the cycle. This is a limitation imposed by design, to guarantee the maximum available memory possible for your linked <i>barbeque points</i>.<br />
<br />
If you have a case where you would need to consider all faces separately, write them independently in the notecard.<br />
<br />
<a name="setupModule"></a><br />
<h2>SETUP: THE MAIN SCRIPT, AS A MODULE YOU CAN USE FROM ANOTHER SCRIPT</h2><a href="http://blacktulip-scripts.blogspot.com/p/common-parts.html#setupModule">Check the following section on this page</a>, knowing that:<br />
<br />
<tt>[Black Tulip] ***Script Name*** [MODULE]</tt> refers to <tt>[Black Tulip] Barbeque Controller - Full Edition [MODULE]</tt><br />
<tt>CODE_NUMBER</tt> is <tt>-28640986</tt><br />
<tt>NAME_ON_MENU</tt> is <tt>BBQ</tt><br />
<br />
AVSitter line looks like: <tt>BUTTON BBQ|-28640986</tt><br />
MLP line looks like: <tt>LINKMSG BBQ | 1,-4,-28640986,fromMLP</tt><br />
<br />
You have example AVpos and .MENUITEMS notecards with your purchase. Remember that this works too with AVSitter 2.<br />
<br />
<a name="troubleshooting"></a><br />
<h2>TROUBLESHOOTING</h2><br />
<b>Q:</b> I click the light/particle/glow options on the menu, but no visible outcome shows. What's going wrong?<br />
<br />
<i>A: Most likely, there's not a light source/particles source/glow source defined in the object. Double-check the DESCRIPTION of the prim you expect to be a SL light point/particles source/glow source.</i><br />
<br />
<br />
<b>Q:</b> I hear no sound when I change the volume from the menu. What could be going wrong?<br />
<br />
<i>A: Make sure that there's a sound clip on the "Content" tab of the prim with the script. Make sure that the name coincides exactly with the name given in the configuration notecard.</i><br />
<br />
<br />
<b>Q:</b> Why are my "barbeque points" being colored black? I haven't defined black anywhere.<br />
<br />
<i>A: Make sure that you've assigned exactly TWO color|glow groups per "barbeque point" and face in the configuration notecard.</i><br />
<br />
<br />
For any other problem not described here, please <a href="http://blacktulip-store.blogspot.com/2013/06/script-assistance-form.html">give a complete description of your issue in the following online form</a>.<br />
<br />
I'll get back to you after I have read your report and replicated your issue inworld, according to your description of it. Please, be detailed.<br />
<br />
-- Auryn Beorn<br />
Auryn Beornhttp://www.blogger.com/profile/02832014326094809370noreply@blogger.com