<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.secondlife.com/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=CrazyTB+Oh</id>
	<title>Second Life Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.secondlife.com/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=CrazyTB+Oh"/>
	<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/wiki/Special:Contributions/CrazyTB_Oh"/>
	<updated>2026-08-01T09:48:58Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.42.1</generator>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Category_talk:LSL_Events&amp;diff=28997</id>
		<title>Category talk:LSL Events</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Category_talk:LSL_Events&amp;diff=28997"/>
		<updated>2007-08-21T18:37:58Z</updated>

		<summary type="html">&lt;p&gt;CrazyTB Oh: Attach under S letter&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Why all events have a code ender?    should be starting with both brackets.&lt;br /&gt;
&lt;br /&gt;
Not this... event(integer);&lt;br /&gt;
&lt;br /&gt;
Should be this... event(integer){ }&lt;br /&gt;
&lt;br /&gt;
But I am unable to correct this format in the wiki, what&#039;s the deal? -Vincent Nacon&lt;br /&gt;
&lt;br /&gt;
:Sorry thats my fault, I&#039;ve been meaning to fix it, it&#039;s a bug in the template. I just kept forgetting. [[User:Strife Onizuka|Strife Onizuka]]&lt;br /&gt;
:Fixed, the variable for that part of the title was getting double defined; the latter overwriting the former. [[User:Strife Onizuka|Strife Onizuka]] 18:17, 6 April 2007 (PDT)&lt;br /&gt;
&lt;br /&gt;
== Attach under S letter ==&lt;br /&gt;
&lt;br /&gt;
The [[Attach]] event is listed under &#039;&#039;&#039;S&#039;&#039;&#039; letter. I have no idea about how to fix it. Can someone fix that? (and explain here how it was done)&lt;br /&gt;
--[[User:CrazyTB Oh|CrazyTB Oh]] 11:37, 21 August 2007 (PDT)&lt;/div&gt;</summary>
		<author><name>CrazyTB Oh</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Clothing_Tutorials&amp;diff=28536</id>
		<title>Clothing Tutorials</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Clothing_Tutorials&amp;diff=28536"/>
		<updated>2007-08-17T05:24:16Z</updated>

		<summary type="html">&lt;p&gt;CrazyTB Oh: /* General */ Added link to Robin Wood UV templates&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The following help for making clothing was originally posted on [http://torley.com Torley&#039;s blog]. Recognizing that info wants to be free and the list would be more useful it was updated regularly, the contents have been migrated here. Please add your fave tuts, remove obviated bits, and improve the usefulness of this resource!&lt;br /&gt;
&lt;br /&gt;
== General ==&lt;br /&gt;
* &#039;&#039;&#039;[http://secondlife.com/community/templates.php Linden Lab Official Templates]&#039;&#039;&#039; - A solid general base to work from.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;[http://forums.secondlife.com/showthread.php?t=40762 Clothing &amp;amp; Skin Templates]&#039;&#039;&#039; - By Chip Midnight. You’ll need to be signed into your account on the SL Forums to read this, and more down the page. These templates are even higher-rez than the official ones. Chip Midnight is an original master of fine fashions in SL. Once you get really serious about detail, you’ll want to get these and have a deep look.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;[http://www.robinwood.com/Catalog/Technical/SL-Tuts/SLTutSet.html Second Life tutorials]&#039;&#039;&#039; - By Robin Sojourner AKA Robin Wood. She has a really elegant, organized approach. Check out her fantasy art as proof! She’s mentioned that she’ll be adding more to this site, so keep watching, and check out her posts on the forums too, like her fab [http://forums.secondlife.com/showthread.php?t=77501 T-Shirt Template] — learn how to make wrinkles without photo-sourcing! Download also her [http://www.robinwood.com/Catalog/Technical/SL-Tuts/SLPages/AVUVTemplates.html UV templates].&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;[http://nicolaescher.com/tutorials.php Tutorials]&#039;&#039;&#039; - By Nicola Escher. The presentation of these tuts is aesthetically pleasing. These have been newly updated for ‘07, and are [http://www.nicolaescher.com/journal/article/28/new-translations also available in] [http://www.nicolaescher.com/journal/article/21/all-my-second-life-tutorials-in-deutsch German], Dutch (Nederlands), Chinese, and Norwegian translations. Nicola says: &amp;quot;I’ve got Spanish and Italian on the way.&amp;quot; Very easy to follow, effectively illustrated. These elegant episodes include:&lt;br /&gt;
** &#039;&#039;&#039;[http://nicolaescher.com/tutorials/clothing-in-second-life.php Introduction to Creating Clothing]&#039;&#039;&#039;&lt;br /&gt;
** &#039;&#039;&#039;[http://nicolaescher.com/tutorials/creating-your-first-shirt.php Creating Your First Shirt]&#039;&#039;&#039;&lt;br /&gt;
** &#039;&#039;&#039;[http://nicolaescher.com/tutorials/alpha-channel-primer.php Alpha Channel Primer]&#039;&#039;&#039;&lt;br /&gt;
** &#039;&#039;&#039;[http://nicolaescher.com/tutorials/creating-a-tattoo.php Creating A Tattoo]&#039;&#039;&#039;&lt;br /&gt;
** &#039;&#039;&#039;[http://nicolaescher.com/tutorials/creating-a-mannequin.php Creating A Mannequin]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;[http://forums.secondlife.com/showthread.php?t=12684 T-Shirt Tutorial]&#039;&#039;&#039; - By Nephilaine Protagonist, head of PixelDolls, quality in quantity for the avatar. Here she shows how to make a shirt. It’s a bit hard to read, but follow the directions and keep at it. &#039;&#039;Note: the tutorial is currently missing, but Nephi left a note that she&#039;s planning to rewrite it.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;[http://forums.secondlife.com/search.php?do=finduser&amp;amp;u=26252 Chosen Few&#039;s SL forum posts]&#039;&#039;&#039; - This sci-fi expert is a texturing databank. Watching him answer questions is like a cross between classical opera and a current events talk show, without the boring parts. The often-messy structure of the SL Forums has ironically lent itself well to his clarity. Just read his posts!&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;[http://www.sluniverse.com/kb/ SLUniverse Knowledge Base]&#039;&#039;&#039; - By Cristiano Midnight. More than just clothing tutorials, this is a whole potpourri of SLinfo you’ll want to plunge into.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;[http://forums.secondlife.com/showthread.php?t=76703 Tattoo Creation]&#039;&#039;&#039; - By Amber Stonecutter. Tattoos may be likened to clothes that are harder to take off, at least offline. The magic unfolds in this thread. Amber had never made a tutorial before, and in response to Flugel inquiring, she spontaneously cooked one up — pictures and all! She even got props from Chosen and Robin.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;[http://slnatalia.blogspot.com/2006/11/build.html Natalia&#039;s SL Diary]&#039;&#039;&#039; - By Natalia Zelmanov. A listing of over 30 tutorials from her blog, including clothing, hair, jewelry, particle, shoes, and techniques. Here are some highlights:&lt;br /&gt;
** &#039;&#039;&#039;[http://slnatalia.blogspot.com/2007/03/day-181-creating-clothes-with-gimp.html Creating Clothes with GIMP]&#039;&#039;&#039;&lt;br /&gt;
** &#039;&#039;&#039;[http://slnatalia.blogspot.com/2007/04/day-195-creating-clothes-with-photoshop.html Creating Clothes with Photoshop]&#039;&#039;&#039;&lt;br /&gt;
** &#039;&#039;&#039;[http://slnatalia.blogspot.com/2006/12/day-97-making-flexi-prim-skirts-with.html Creating Flexi Skirts]&#039;&#039;&#039;&lt;br /&gt;
** &#039;&#039;&#039;[http://slnatalia.blogspot.com/2007/04/day-209-creating-jewelry-part-1.html Creating Jewelry]&#039;&#039;&#039;&lt;br /&gt;
** &#039;&#039;&#039;[http://slnatalia.blogspot.com/2007/03/day-158-creating-attachments-with.html Creating Particle Effects]&#039;&#039;&#039;&lt;br /&gt;
** &#039;&#039;&#039;[http://slnatalia.blogspot.com/2007/01/day-129-creating-prim-hair-part-1.html Creating Prim Hair]&#039;&#039;&#039;&lt;br /&gt;
** &#039;&#039;&#039;[http://slnatalia.blogspot.com/2007/01/day-101-creating-prim-shoes-part-2.html Creating Prim Shoes (Heels)]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;[http://www.slellowpages.com/slseamstress/ The SL Seamstress]&#039;&#039;&#039; by Jennifer McLuhan - Have you admired the clothing designers in Second Life and wished you could make clothing like them? Or, maybe you just want to make something better than the &amp;quot;change the tint and shorten the sleeves&amp;quot; Appearance sliders approach? If so, maybe this site can help you? So, don’t be shy, dive it and be come a SL seamstress or, for you guys, a tailor. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Tutorials]]&lt;/div&gt;</summary>
		<author><name>CrazyTB Oh</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Snapshot_resources&amp;diff=28535</id>
		<title>Snapshot resources</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Snapshot_resources&amp;diff=28535"/>
		<updated>2007-08-17T05:13:26Z</updated>

		<summary type="html">&lt;p&gt;CrazyTB Oh: /* Tips &amp;#039;n&amp;#039; tricks */ Added a notice about a non-working URL.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The following consists of miscellaneous info which often isn&#039;t easy to find, but very useful if you take Second Life snapshots, including postcards. Historically, documentation in this area has been sparse, and Residents have provided some great resources, so this is an ongoing endeavor at compiling those in an easy place — please help keep this updated!&lt;br /&gt;
&lt;br /&gt;
== A state of snapshots ==&lt;br /&gt;
The history of snapshots in Second Life hasn&#039;t been well-chronicled. Every Resident &#039;&#039;vérité&#039;&#039; takes a picture at one point during their Second Life or another, but until recently, there&#039;s been a poor understanding of fundamental &amp;quot;pillars&amp;quot;, including how many postcards get sent out, how many snapshots are uploaded to inventory, as well as the finer points of taking beautiful pictures.&lt;br /&gt;
&lt;br /&gt;
Dismissing snapshots as &amp;quot;just for fun&amp;quot; neglects much context: in increasing amounts, the first exposure someone who&#039;s not yet part of Second Life may get of our world are Resident-taken snapshots. Especially on sites with a much broader audience like [http://www.flickr.com/photos/torley/ Flickr], the art of fine photography helps communicate our passion for capturing real emotions experienced in our online world.&lt;br /&gt;
&lt;br /&gt;
In addition, taking better snapshots also helps increase your self-confidence. Snapshots require a combination of skills, including precise camera control, knowledge of lateral features (like adjusting the sun to get desired lighting), and frequently, avatar customization. Putting all of them together to get &amp;quot;the perfect shot&amp;quot; is a testament to how &amp;quot;[http://en.wikipedia.org/wiki/Meta meta]&amp;quot; quality snapshotting can be.&lt;br /&gt;
&lt;br /&gt;
Better snapshots also hint at dreams for a lovelier Second Life. Applied post-processing effects are done in absence of the ability to perform the same magic in realtime. But as new features emerge, avid virtual shutterbugs can indulge in them, and build on their repertoire of techniques used to create beauty as they see it! For example, the [http://torley.com/be-luminous-enjoy-with-renderglow-true RenderGlow] ([[Help:Glow_Rendering|more info]]) feature added in 1.15, and planned to be a more accessible part of the interface, has already captured the imaginations of photogs in search of softer looks.&lt;br /&gt;
&lt;br /&gt;
So where do we stand today? Bert Linden recently began work on regular metrics reports for postcards. For the first quarter of 2007, over 300,000 postcards were sent out. That&#039;s substantially more than the almost-269,000 sent during the whole year of 2006! We&#039;ve seen an enormous surge in postcard sending, much of it prompted by the new Orientation Islands, which feature a postcard station as a basic first step in learning your Second Life. Also, as Resident-run social sites continue to expand, there can be no stopping the sharing!&lt;br /&gt;
&lt;br /&gt;
With so much photographic activity trackable, and much of it not (we don&#039;t know how many snapshots you saved to disk), it&#039;s clear that more resources prominently be put forth to educate and entertain snapshot enthusiasts, new, old, and everything in-between. By improving our quality in quantity, we gain more of an appreciation for the Grid we live on, and preserve our digital cultures in ways never thought possible before. All of this also challenges preconceived norms: parallel to [http://en.wikipedia.org/wiki/Machinima machinima] being taken seriously, are Second Life snapshots merely &#039;&#039;computer screenshots&#039;&#039;, or a &#039;&#039;new form of art&#039;&#039;? Hindsight will make us wiser, as it tends to do.&lt;br /&gt;
&lt;br /&gt;
In the present, as the old adage goes, &amp;quot;practice makes perfect&amp;quot;, and what&#039;s important is you&#039;re enjoying yourself as you &amp;quot;capture the moments&amp;quot;. The resources below are intended to aid in rewarding your continued self-discovery.&lt;br /&gt;
&lt;br /&gt;
Enjoy your photographic memories!&lt;br /&gt;
&lt;br /&gt;
: -[[User:Torley Linden|Torley Linden]], 2007-04-26&lt;br /&gt;
&lt;br /&gt;
== Tips &#039;n&#039; tricks ==&lt;br /&gt;
Video tutorials:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;[http://youtube.com/watch?v=iFzbvZc1BX4 How to send a postcard]&#039;&#039;&#039; - Self-explanatory fun!&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;[http://youtube.com/watch?v=AZyBNBW2yjI Advanced Snapshot Magic]&#039;&#039;&#039; - Shows you how to zoom, get great lighting effects, and more.&lt;br /&gt;
&lt;br /&gt;
From the [http://secondlife.com/support Knowledge Base] (sadly, we can&#039;t link to direct articles there, so try searching for these titles):&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;How do I take pictures or snapshots of things inworld?&#039;&#039;&#039; - Start here first!&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Guide to the snapshot window&#039;s options&#039;&#039;&#039; - Intermediate-level skillz!&lt;br /&gt;
&lt;br /&gt;
Did you also know you can:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Change image size and quality settings when sending postcards?&#039;&#039;&#039; [http://blog.secondlife.com/2007/08/02/postcards-from-the-sledge/ See this blog post] for more info.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;[http://secondlife.com/knowledgebase/article.php?id=391 Save textures to your hard drive?]&#039;&#039;&#039; For example, if you&#039;ve uploaded snapshots to your inventory, this lets you export them so you can upload them to other sites and post them outside of Second Life. &#039;&#039;[Note: This does not work for me. Could someone please add a working URL or, at least, copy that information to the wiki or somewher else?]&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;[http://torley.com/snapshot-tip-turn-render-ground-off Hide the ugly gap between the water and horizon?]&#039;&#039;&#039; (This is workaround for a bug, SL-24381, and will be deprecated when First Look: WindLight comes out.)&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Hide foot shadows?&#039;&#039;&#039; [http://secondlife.com/knowledgebase/article.php?id=339 Client menu] &amp;gt; Rendering &amp;gt; Features &amp;gt; Foot Shadows.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;[http://www.flickr.com/groups/secondlife/discuss/72157600062846532/ Use &amp;quot;Slow Motion Animations&amp;quot; to make action shots easier?]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;[http://www.flickr.com/groups/secondlife/discuss/72157600055309030/ Move the camera around while taking a freeze-frame snapshot?]&#039;&#039;&#039; Great for getting an ideal angle with little fuss.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;[http://emmanowhere.blogspot.com/2007/04/using-flickr-photos-in-second-life.html Use Flickr photos as streaming media in SL?]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Social sites featuring postcards ==&lt;br /&gt;
* &#039;&#039;&#039;[http://slpics.com Snapzilla]&#039;&#039;&#039; - The original pioneer to really make use of postcards in such a widespread manner, its success has encouraged many Residents to share their inworld memories. As of April 2007, Snapzilla currently boasts over 150,000 pictures and is en route to a &amp;quot;2.0&amp;quot; upgrade.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;[http://slbuzz.com SLBuzz]&#039;&#039;&#039; - Postcards are [http://snapshots.slbuzz.com/search part of] SLBuzz&#039;s  community site offerings. It also allows uploading of [http://photos.slbuzz.com/search photos] from your hard drive.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;[http://slprofiles.com/postcards.asp SL Profiles]&#039;&#039;&#039; - This page allows you to quickly add Second Life pictures to your profile on this community site.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;[http://flickr.com Flickr]&#039;&#039;&#039; - The popular photo-sharing service. They recently abolished their [http://tinyurl.com/2f4hx6 NIPSA restrictions] in favor of a [http://blog.flickr.com/flickrblog/2007/03/introducing_fil.html content filtering system], so Residents can show their SL snapshots in public searches.&lt;br /&gt;
** Via &#039;&#039;&#039;[http://www.sluniverse.com/pics/flickr.aspx Snapzilla-to-Flickr]&#039;&#039;&#039; and &#039;&#039;&#039;[http://snapshots.slbuzz.com/crosspost SLBuzz-to-Flickr]&#039;&#039;&#039;, Residents can crosspost to another service to have their pictures also show up on Flickr, where they can be easily organized.&lt;br /&gt;
** &#039;&#039;&#039;[http://www.flickr.com/groups/secondlife/ Flickr&#039;s Second Life group]&#039;&#039;&#039; - The largest. Look inside the [http://www.flickr.com/groups/secondlife/discuss/ discussion] area for varied photographic tips &#039;n&#039; tricks.&lt;br /&gt;
** &#039;&#039;&#039;[http://www.flickr.com/groups/secondlife/discuss/72157594588674941/ Links to all Second Life Groups on Flickr]&#039;&#039;&#039; - There are many Second Life-related groups. More keep appearing, so this likely isn&#039;t &amp;quot;all&amp;quot; of them — add ones you notice are missing!&lt;br /&gt;
** You can also use Flickr&#039;s [http://www.flickr.com/tools/ tools] to upload snapshots from your hard drive, and there are a variety of 3rd-party amusements like [http://bighugelabs.com/flickr/ fd&#039;s Flickr toys] and [http://www.dumpr.net/ Dumpr] which you can apply to your images.&lt;br /&gt;
&lt;br /&gt;
== Useful utilities ==&lt;br /&gt;
Add programs you&#039;ve personally found valuable.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;[http://picasa.google.com/ Picasa] (free, Windows and Linux)&#039;&#039;&#039; - Elegant photo organizer. Add your folders to be scanned and perform some light image enhancement while you&#039;re at it.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;[http://www.den4b.com/projects.php ReNamer] (free, Windows-only)&#039;&#039;&#039; - Batch-renames your files. Great for taking a heap of snapshots named &amp;quot;Snapshot&amp;quot; and turning them into something more descriptive. Also see [http://torley.com/renamer-great-utility-to-rename-your-files Torley&#039;s review].&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;[http://www.cs.ubc.ca/~mbrown/autostitch/autostitch.html Autostitch] (free, Windows-only, Mac and Linux versions planned)&#039;&#039;&#039; - Easy-to-use 2D image stitcher that turn a collection of snapshots into a breathtaking, wide-angle panorama. Also see [http://torley.com/tutorial-how-to-make-a-beautiful-second-life-panorama-in-15-minutes/ Torley&#039;s tutorial] on how to specifically use it with Second Life.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;[http://www.optikvervelabs.com/ virtualPhotographer] (free, Windows-only)&#039;&#039;&#039; - Incredibly tasty little Photoshop plugin to add extra &amp;quot;pop&amp;quot; to your snapshots. Had a nice collection of presets and can simulate film grain, sepia, bloom, etc.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;[http://www.gimp.org GIMP] (free, Windows, Mac, and Linux)&#039;&#039;&#039; - The &amp;quot;GNU Image Manipulation Program&amp;quot; is a freely distributed piece of software for such tasks as photo retouching, image composition, and image authoring. It works on many operating systems, in many languages. A lot of Photoshop&#039;s features are also available in GIMP, and there&#039;s also a [http://en.wikipedia.org/wiki/Gimpshop GIMPshop], which emulates PS&#039; functionality even closer.&lt;br /&gt;
&lt;br /&gt;
== Related resources ==&lt;br /&gt;
You may also be interested in seeing this wiki&#039;s compilation of:&lt;br /&gt;
* &#039;&#039;&#039;[[Texture Tools]]&#039;&#039;&#039; - Image-editing stuff you can use to prettify your pictures. Some overlap with this page.&lt;br /&gt;
* &#039;&#039;&#039;[[Video Tutorials]]&#039;&#039;&#039; - An assortment of multimedia guides, good for those who enjoy seeing how things actually work inworld.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Tutorials]]&lt;/div&gt;</summary>
		<author><name>CrazyTB Oh</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=LlParticleSystem&amp;diff=27641</id>
		<title>LlParticleSystem</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=LlParticleSystem&amp;diff=27641"/>
		<updated>2007-08-08T21:39:23Z</updated>

		<summary type="html">&lt;p&gt;CrazyTB Oh: Fixed some mistyped constants&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{LSL Function/color}}{{LSL Function/alpha}}{{LSL_Function|func_id=229|func_sleep=0.0|func_energy=10.0&lt;br /&gt;
|func=llParticleSystem&lt;br /&gt;
|p1_type=list|p1_name=rules|p1_desc=Particle system rules list in the format [ rule1, data1, rule2, data2 . . . rulen, datan ]&lt;br /&gt;
|func_desc=Defines a particle system for the containing prim based on a list of &#039;&#039;&#039;rules&#039;&#039;&#039;.&lt;br /&gt;
|return_text&lt;br /&gt;
|spec=&lt;br /&gt;
Defines a particle system that sets the state of the {{LSLG|particle emitter}} within the {{LSLG|primitive|prim}} which the {{LSLG|script}} is contained. Any other scripts in the same prim which call this function will modify the state of the same particle emitter. As such, the particle system defined by this function is a {{LSLG|primitive property|prim property}}, just like its size, shape, color, et cetera.&lt;br /&gt;
Each prim has only &#039;&#039;&#039;one (1)&#039;&#039;&#039; particle emitter, located at its {{LSLG|geometric center}}, and aligned along the prim&#039;s [[Viewer coordinate frames#Local|local]] Z-axis, pointing in the positive Z direction.&lt;br /&gt;
&lt;br /&gt;
This is the only function which alters the state of the prim&#039;s particle emitter; thus, if you wish to change the emitter to a different state (i.e., emitting a different particle system entirely, or shut off the emitter completely), just call this same function with the parameters of the new particle system you wish to render instead. Specifying an empty list (i.e., llParticleSystem([]); ) turns the emitter off.&lt;br /&gt;
&lt;br /&gt;
Particles are essentially 2D &amp;quot;sprites&amp;quot; and are always rendered facing the viewer&#039;s camera.&lt;br /&gt;
&lt;br /&gt;
The  rule / data values are defined below.&lt;br /&gt;
|caveats=&lt;br /&gt;
# Due to a bug/limitation in the implementation of the particle system, any alpha change defined by setting PSYS_PART_END_ALPHA and the PSYS_PART_INTERP_COLOR_MASK flag &#039;&#039;&#039;always&#039;&#039;&#039; goes from a higher alpha value to a lower one. In other words, particles can only &amp;quot;fade-out&amp;quot; and can never &amp;quot;fade-in&amp;quot;. This is true even if you specify it in the list where PSYS_PART_START_ALPHA is less than PSYS_PART_END_ALPHA, as the values will be re-ordered internally when the particle system is rendered.&lt;br /&gt;
# When using particle systems that have a non-zero emitter age (PSYS_SRC_MAX_AGE) setting, you may notice that the particle system may restart without any scripted trigger going off. This is due to a bug which causes the emitter to &amp;quot;reset&amp;quot; when any of the prim properties are updated or otherwise sent to the viewer. As a result, you may have to use a {{LSLG|timer}} or a forced {{LSLG|llSleep|sleep}} and then clear the particle system once the age has expired.&lt;br /&gt;
# The spin defined by PSYS_SRC_OMEGA is relative to the [[Viewer coordinate frames#Region|region]] coordinate system, NOT the prim&#039;s [[Viewer coordinate frames#Local|local]] coordinate system.&lt;br /&gt;
# Particles moving towards a humanoid avatar, specified by PSYS_SRC_TARGET_KEY rule and setting the PSYS_PART_TARGET_POS_MASK flag, will end up at the geometric center of the avatar&#039;s bounding box which, unfortunately, make them appear to be striking the person in the groin area. If you want them to end up at another point on a target avatar, you instead have to place a target prim that is moved to the position where you wish them to end up, and use the key of that prim for the value of the PSYS_SRC_TARGET_KEY rule.&lt;br /&gt;
# The Second Life viewer uses optimizations in culling objects which are too small to see at certain distances. If your emitter is very small, and is culled due to distance, the particle system associated with it will not be rendered either.&lt;br /&gt;
|examples=[[Example Particle Script]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This example produces an effusion of glowing red spheres:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
        llParticleSystem( &lt;br /&gt;
          [PSYS_PART_FLAGS,       PSYS_PART_WIND_MASK | PSYS_PART_EMISSIVE_MASK,&lt;br /&gt;
           PSYS_SRC_PATTERN,      PSYS_SRC_PATTERN_EXPLODE, &lt;br /&gt;
           PSYS_PART_START_COLOR, &amp;lt;1,0,0&amp;gt;&lt;br /&gt;
          ] );&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|helpers=&lt;br /&gt;
&#039;&#039;&#039;Useful functions for storing/retrieving color and alpha values to/from integers:&#039;&#039;&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
integer ColorAlphatoRGBA(vector color, float alpha) {&lt;br /&gt;
	return (((integer)(alpha * 255.0) &amp;amp; 0xFF) &amp;lt;&amp;lt; 24) |&lt;br /&gt;
		(((integer)(color.x * 255.0) &amp;amp; 0xFF) &amp;lt;&amp;lt; 16) |&lt;br /&gt;
		(((integer)(color.y * 255.0) &amp;amp; 0xFF) &amp;lt;&amp;lt; 8) |&lt;br /&gt;
		((integer)(color.z * 255.0) &amp;amp; 0xFF);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
vector RGBAtoColor(integer rgba) {&lt;br /&gt;
	return &amp;lt; ((rgba &amp;gt;&amp;gt; 16) &amp;amp; 0xFF) / 255.0, ((rgba &amp;gt;&amp;gt; 8) &amp;amp; 0xFF) / 255.0, (rgba &amp;amp; 0xFF) / 255.0 &amp;gt;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
float RGBAtoAlpha(integer rgba) {&lt;br /&gt;
	return ((rgba &amp;gt;&amp;gt; 24) &amp;amp; 0xFF) / 255.0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|also_articles&lt;br /&gt;
|also_events&lt;br /&gt;
|also_functions&lt;br /&gt;
|sort=ParticleSystem&lt;br /&gt;
|notes=&lt;br /&gt;
* The default particle count for the client is normally set at 4096. That is the max particle count the client will render for ALL active particle systems within view range. Good particle system design is key to avoid &amp;quot;spamming&amp;quot; everyone with your particles, and starving out other people&#039;s particle systems. As such, if you are experiencing trouble getting your particle emitter to emit as many particles as you like, it may be the victim of particle starvation. Client/viewer lag (low frame rates) can also cause this issue, as particles are a rather low priority for rendering. The best solution for this is to move to a less laggy environment relatively free of other particle systems when designing and testing your own.&lt;br /&gt;
* Once particles are emitted, their direction of motion can only be affected by PSYS_SRC_ACCEL, the PSYS_PART_TARGET_POS_MASK flag, or the PSYS_PART_FOLLOW_SRC_MASK flag. As such, there is no good way to create the &amp;quot;swirling vortex&amp;quot; effect (like the one used in the viewer to indicate an object talking, begin derezzed, or when an avatar leaves the sim/grid).&lt;br /&gt;
|constants={{{!}} {{prettytable}}&lt;br /&gt;
{{!}}{{Hl2}}{{!}} &lt;br /&gt;
{{!}}{{Hl2}}{{!}} Rule / Value Constant&lt;br /&gt;
{{!}}{{Hl2}}{{!}} Type&lt;br /&gt;
{{!}}{{Hl2}}{{!}} Description&lt;br /&gt;
{{!}}{{Hl2}}{{!}} Value&lt;br /&gt;
{{!}}- style=&amp;quot;background-color:#ccffcc;&amp;quot;&lt;br /&gt;
{{!}} colspan=&amp;quot;5&amp;quot; align=&amp;quot;left&amp;quot;{{!}}&#039;&#039;&#039;System Behavior&#039;&#039;&#039;&lt;br /&gt;
{{!}}-&lt;br /&gt;
{{!}}colspan=&amp;quot;2&amp;quot;{{!}}PSYS_PART_FLAGS{{!}}{{!}}{{LSLG{{!}}integer}}{{!}}{{!}}Various flags controlling the behavior of the particle system. The value may be specified as an integer in decimal or {{LSLG{{!}}hexadecimal{{!}}hex}} format, or by ORing together (using the &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; operator) one or more of the following flag constants:{{!}}{{!}}align=&amp;quot;center&amp;quot;{{!}}0&lt;br /&gt;
{{!}}- style=&amp;quot;background-color:#e0e0e0;&amp;quot;&lt;br /&gt;
{{!}}rowspan=&amp;quot;14&amp;quot; style=&amp;quot;background-color:#c0c0c0;&amp;quot; align=&amp;quot;center&amp;quot; valign=&amp;quot;center&amp;quot;{{!}}&#039;&#039;&#039;V&amp;lt;br /&amp;gt;a&amp;lt;br /&amp;gt;l&amp;lt;br /&amp;gt;u&amp;lt;br /&amp;gt;e&amp;lt;br /&amp;gt;s&#039;&#039;&#039;{{!}}{{!}}colspan=&amp;quot;2&amp;quot;{{!}}PSYS_PART_BOUNCE_MASK{{!}}{{!}}When set, specifies particles will bounce off a plane at the [[Viewer coordinate frames#Region|region]] Z height of the emitter. On &amp;quot;bounce&amp;quot;, each particle reverses velocity and angle. This only works for particles above the plane falling down on it.{{!}}{{!}}align=&amp;quot;center&amp;quot;{{!}}{{LSL_Hex|0x004|4}}&lt;br /&gt;
{{!}}- style=&amp;quot;background-color:#e0e0e0;&amp;quot;&lt;br /&gt;
{{!}} colspan=&amp;quot;2&amp;quot;{{!}}PSYS_PART_EMISSIVE_MASK{{!}}{{!}}When set, particles are full-bright and are unaffected by global lighting (sunlight). Otherwise, particles will be lit depending on the current global lighting conditions. Note that point lights &#039;&#039;&#039;do&#039;&#039;&#039; illuminate non-emissive particles.{{!}}{{!}}align=&amp;quot;center&amp;quot;{{!}}{{LSL_Hex|0x100|256}}&lt;br /&gt;
{{!}}- style=&amp;quot;background-color:#e0e0e0;&amp;quot;&lt;br /&gt;
{{!}} colspan=&amp;quot;2&amp;quot;{{!}}PSYS_PART_FOLLOW_SRC_MASK{{!}}{{!}}When set, particles move relative to the position of the emitter. Otherwise, particle position and movement are unaffected by the position/movement of the emitter. This flag disables the PSYS_SRC_BURST_RADIUS rule.{{!}}{{!}}align=&amp;quot;center&amp;quot;{{!}}{{LSL_Hex|0x010|16}}&lt;br /&gt;
{{!}}- style=&amp;quot;background-color:#e0e0e0;&amp;quot;&lt;br /&gt;
{{!}} colspan=&amp;quot;2&amp;quot;{{!}}PSYS_PART_FOLLOW_VELOCITY_MASK{{!}}{{!}}When set, particles rotate to orient their &amp;quot;top&amp;quot; towards the direction of movement or emission. Otherwise, particles are always emitted based on the current rotation of the emitter.{{!}}{{!}}align=&amp;quot;center&amp;quot;{{!}}{{LSL_Hex|0x020|32}}&lt;br /&gt;
{{!}}- style=&amp;quot;background-color:#e0e0e0;&amp;quot;&lt;br /&gt;
{{!}} colspan=&amp;quot;2&amp;quot;{{!}}PSYS_PART_INTERP_COLOR_MASK{{!}}{{!}}When set, particle color and alpha transition from their START settings to their END settings during the particle&#039;s lifetime. The transition is a smooth interpolation.{{!}}{{!}}align=&amp;quot;center&amp;quot;{{!}}{{LSL_Hex|0x001|1}}&lt;br /&gt;
{{!}}- style=&amp;quot;background-color:#e0e0e0;&amp;quot;&lt;br /&gt;
{{!}} colspan=&amp;quot;2&amp;quot;{{!}}PSYS_PART_INTERP_SCALE_MASK{{!}}{{!}}When set, particle size/scale transitions from its START setting to its END setting during the particle&#039;s lifetime.{{!}}{{!}}align=&amp;quot;center&amp;quot;{{!}}{{LSL_Hex|0x002|2}}&lt;br /&gt;
{{!}}- style=&amp;quot;background-color:#e0e0e0;&amp;quot;&lt;br /&gt;
{{!}} colspan=&amp;quot;2&amp;quot;{{!}}PSYS_PART_TARGET_LINEAR_MASK{{!}}{{!}}(&#039;&#039;not officially documented&#039;&#039;) When set, emitted particles move in a straight line towards the target specified by the PSYS_SRC_TARGET_KEY rule. In this mode, PSYS_SRC_ACCEL, PSYS_SRC_BURST_RADIUS, and possibly other rules are ignored.{{!}}{{!}}align=&amp;quot;center&amp;quot;{{!}}{{LSL_Hex|0x080|128}}&lt;br /&gt;
{{!}}- style=&amp;quot;background-color:#e0e0e0;&amp;quot;&lt;br /&gt;
{{!}} colspan=&amp;quot;2&amp;quot;{{!}}PSYS_PART_TARGET_POS_MASK{{!}}{{!}}When set, emitted particles change course during their lifetime, attempting to move towards the target specified by the PSYS_SRC_TARGET_KEY rule by the time they expire. Note that if no target is specified, the target moves out of range, or an invalid target is specified, the particles target the prim itself.{{!}}{{!}}align=&amp;quot;center&amp;quot;{{!}}{{LSL_Hex|0x040|64}}&lt;br /&gt;
{{!}}- style=&amp;quot;background-color:#e0e0e0;&amp;quot;&lt;br /&gt;
{{!}} colspan=&amp;quot;2&amp;quot;{{!}}PSYS_PART_WIND_MASK{{!}}{{!}}When set, particle movement is affected by the {{LSLG{{!}}llWind{{!}}wind}}. It is applied as a secondary force on the particles.{{!}}{{!}}align=&amp;quot;center&amp;quot;{{!}}{{LSL_Hex|0x008|8}}&lt;br /&gt;
&lt;br /&gt;
{{!}}- style=&amp;quot;background-color:#e0e0e0;&amp;quot;&lt;br /&gt;
{{!}} colspan=&amp;quot;2&amp;quot;{{!}}&amp;lt;s&amp;gt;PSYS_PART_BEAM_MASK&amp;lt;/s&amp;gt;{{!}}{{!}}(&#039;&#039;unimplemented&#039;&#039;) mask but in the enum {{!}}{{!}}align=&amp;quot;center&amp;quot;{{!}}{{LSL_Hex|0x200|}}&lt;br /&gt;
&lt;br /&gt;
{{!}}- style=&amp;quot;background-color:#e0e0e0;&amp;quot;&lt;br /&gt;
{{!}} colspan=&amp;quot;2&amp;quot;{{!}}&amp;lt;s&amp;gt;PSYS_PART_DEAD_MASK&amp;lt;/s&amp;gt;{{!}}{{!}}Removes particles, not compatible with any other PSYS_PART_*_MASK{{!}}{{!}}align=&amp;quot;center&amp;quot;{{!}}{{LSL_Hex|0x80000000|}}&lt;br /&gt;
&lt;br /&gt;
{{!}}- style=&amp;quot;background-color:#e0e0e0;&amp;quot;&lt;br /&gt;
{{!}} colspan=&amp;quot;2&amp;quot;{{!}}&amp;lt;s&amp;gt;PSYS_PART_RANDOM_ACCEL_MASK&amp;lt;/s&amp;gt;{{!}}{{!}}(&#039;&#039;unimplemented&#039;&#039;) Presumed to be used to apply random acceleration to the particles.{{!}}{{!}}align=&amp;quot;center&amp;quot;{{!}} -&lt;br /&gt;
{{!}}- style=&amp;quot;background-color:#e0e0e0;&amp;quot;&lt;br /&gt;
{{!}} colspan=&amp;quot;2&amp;quot;{{!}}&amp;lt;s&amp;gt;PSYS_PART_RANDOM_VEL_MASK&amp;lt;/s&amp;gt;{{!}}{{!}}(&#039;&#039;unimplemented&#039;&#039;) Presumed to be used to specify random velocity for the particles upon emission.{{!}}{{!}}align=&amp;quot;center&amp;quot;{{!}} -&lt;br /&gt;
{{!}}- style=&amp;quot;background-color:#e0e0e0;&amp;quot;&lt;br /&gt;
{{!}} colspan=&amp;quot;2&amp;quot;{{!}}&amp;lt;s&amp;gt;PSYS_PART_TRAIL_MASK&amp;lt;/s&amp;gt;{{!}}{{!}}(&#039;&#039;unimplemented&#039;&#039;) Presumed to be used for implementing &amp;quot;trails&amp;quot; via emitting more particles at shorter bursts.{{!}}{{!}}align=&amp;quot;center&amp;quot;{{!}} -&lt;br /&gt;
{{!}}- style=&amp;quot;background-color:#ccffcc;&amp;quot;&lt;br /&gt;
{{!}} colspan=&amp;quot;5&amp;quot; align=&amp;quot;left&amp;quot;{{!}}&#039;&#039;&#039;System Presentation&#039;&#039;&#039;&lt;br /&gt;
{{!}}-&lt;br /&gt;
{{!}} colspan=&amp;quot;2&amp;quot;{{!}}PSYS_SRC_PATTERN{{!}}{{!}}{{LSLG{{!}}integer}}{{!}}{{!}}Specifies the general emission pattern.{{!}}{{!}}align=&amp;quot;center&amp;quot;{{!}}9&lt;br /&gt;
{{!}}- style=&amp;quot;background-color:#e0e0e0;&amp;quot;&lt;br /&gt;
{{!}}rowspan=&amp;quot;5&amp;quot; style=&amp;quot;background-color:#c0c0c0;&amp;quot; align=&amp;quot;center&amp;quot; valign=&amp;quot;center&amp;quot;{{!}}&#039;&#039;&#039;V&amp;lt;br /&amp;gt;a&amp;lt;br /&amp;gt;l&amp;lt;br /&amp;gt;u&amp;lt;br /&amp;gt;e&amp;lt;br /&amp;gt;s&#039;&#039;&#039;{{!}}{{!}} colspan=&amp;quot;2&amp;quot;{{!}}PSYS_SRC_PATTERN_ANGLE{{!}}{{!}}Present particles in a 2-dimensional circular section as defined by PSYS_SRC_ANGLE_BEGIN and PSYS_SRC_ANGLE_END. The orientation of the particle plane is at X=0 relative to the emitter&#039;s [[Viewer coordinate frames#Region|region]] rotation.{{!}}{{!}}align=&amp;quot;center&amp;quot;{{!}}{{LSL_Hex|0x04|4}}&lt;br /&gt;
{{!}}- style=&amp;quot;background-color:#e0e0e0;&amp;quot;&lt;br /&gt;
{{!}}colspan=&amp;quot;2&amp;quot;{{!}}PSYS_SRC_PATTERN_ANGLE_CONE{{!}}{{!}}Present particles in a 3-dimensional spherical section, as defined by PSYS_SRC_ANGLE_BEGIN and PSYS_SRC_ANGLE_END.{{!}}{{!}}align=&amp;quot;center&amp;quot;{{!}}{{LSL_Hex|0x08|8}}&lt;br /&gt;
{{!}}- style=&amp;quot;background-color:#e0e0e0;&amp;quot;&lt;br /&gt;
{{!}}colspan=&amp;quot;2&amp;quot;{{!}}PSYS_SRC_PATTERN_ANGLE_CONE_EMPTY{{!}}{{!}}(&#039;&#039;not officially documented; appears to be non-functional&#039;&#039;) Present particles in a 3-dimensional spherical section, as defined by PSYS_SRC_ANGLE_BEGIN and PSYS_SRC_ANGLE_END, but inversely compared to the ANGLE_CONE pattern (i.e., where there were voids in ANGLE_CONE, there are particles in ANGLE_CONE_EMPTY, and vice-versa.{{!}}{{!}}align=&amp;quot;center&amp;quot;{{!}}{{LSL_Hex|0x10|16}}&lt;br /&gt;
{{!}}- style=&amp;quot;background-color:#e0e0e0;&amp;quot;&lt;br /&gt;
{{!}}colspan=&amp;quot;2&amp;quot;{{!}}PSYS_SRC_PATTERN_DROP{{!}}{{!}}Present particles by dropping them at the emitter position with no force. Ignores the PSYS_SRC_BURST_RADIUS, PSYS_SRC_BURST_SPEED_MIN, and PSYS_SRC_BURST_SPEED_MAX rules.{{!}}{{!}}align=&amp;quot;center&amp;quot;{{!}}{{LSL_Hex|0x01|1}}&lt;br /&gt;
{{!}}- style=&amp;quot;background-color:#e0e0e0;&amp;quot;&lt;br /&gt;
{{!}}colspan=&amp;quot;2&amp;quot;{{!}}PSYS_SRC_PATTERN_EXPLODE{{!}}{{!}}Present particles by shooting them out in all directions according to the burst motion rules.{{!}}{{!}}align=&amp;quot;center&amp;quot;{{!}}{{LSL_Hex|0x02|2}}&lt;br /&gt;
{{!}}-&lt;br /&gt;
{{!}}colspan=&amp;quot;2&amp;quot;{{!}}PSYS_SRC_BURST_RADIUS{{!}}{{!}}{{LSLG{{!}}float}}{{!}}{{!}}Specifies the distance from the emitter where particles will be created. This rule is ignored when the PSYS_PART_FOLLOW_SRC_MASK flag is set.{{!}}{{!}}align=&amp;quot;center&amp;quot;{{!}}16&lt;br /&gt;
{{!}}-&lt;br /&gt;
{{!}}colspan=&amp;quot;2&amp;quot;{{!}}PSYS_SRC_ANGLE_BEGIN{{!}}{{!}}{{LSLG{{!}}float}}{{!}}{{!}}Specifies a half angle, in radians, of a circular or spherical &amp;quot;dimple&amp;quot; or conic section (starting from the emitter facing) within which particles will NOT be emitted. Valid values are the same as for PSYS_SRC_ANGLE_END, though the effects are reversed accordingly. If the pattern is PSYS_SRC_PATTERN_ANGLE, the presentation is a 2D flat circular section. If PSYS_SRC_PATTERN_ANGLE_CONE or PSYS_SRC_PATTERN_ANGLE_CONE_EMPTY is used, the presentation is a 3D spherical section. Note that the value of this parameter and PSYS_SRC_ANGLE_END are internally re-ordered such that this parameter gets the smaller of the two values.{{!}}{{!}}align=&amp;quot;center&amp;quot;{{!}}22&lt;br /&gt;
{{!}}-&lt;br /&gt;
{{!}}colspan=&amp;quot;2&amp;quot;{{!}}PSYS_SRC_ANGLE_END{{!}}{{!}}{{LSLG{{!}}float}}{{!}}{{!}}Specifies a half angle, in radians, of a circular or spherical &amp;quot;dimple&amp;quot; or conic section (starting from the emitter facing) within which particles will NOT be emitted. Valid values are 0.0, which will result in particles being emitted in a straight line in the direction of the emitter facing, to PI, which will result in particles being emitted in a full circular or spherical arc around the emitter, not including the &amp;quot;dimple&amp;quot; or conic section defined by PSYS_SRC_ANGLE_BEGIN. If the pattern is PSYS_SRC_PATTERN_ANGLE, the presentation is a 2D flat circular section. If PSYS_SRC_PATTERN_ANGLE_CONE or PSYS_SRC_PATTERN_ANGLE_CONE_EMPTY is used, the presentation is a 3D spherical section. Note that the value of this parameter and PSYS_SRC_ANGLE_BEGIN are internally re-ordered such that this parameter gets the larger of the two values.{{!}}{{!}}align=&amp;quot;center&amp;quot;{{!}}23&lt;br /&gt;
{{!}}-&lt;br /&gt;
{{!}}colspan=&amp;quot;2&amp;quot;{{!}}&amp;lt;del&amp;gt;PSYS_SRC_INNERANGLE&amp;lt;/del&amp;gt;{{!}}{{!}}{{LSLG{{!}}float}}{{!}}{{!}}&#039;&#039;&#039;DEPRECATED: Use PSYS_SRC_ANGLE_BEGIN instead.&#039;&#039;&#039; Works similar to its replacement rule, except the edge of the section is aligned with the emitter facing, rather than its center.{{!}}{{!}}align=&amp;quot;center&amp;quot;{{!}}10&lt;br /&gt;
{{!}}-&lt;br /&gt;
{{!}}colspan=&amp;quot;2&amp;quot;{{!}}&amp;lt;del&amp;gt;PSYS_SRC_OUTERANGLE&amp;lt;/del&amp;gt;{{!}}{{!}}{{LSLG{{!}}float}}{{!}}{{!}}&#039;&#039;&#039;DEPRECATED: Use PSYS_SRC_ANGLE_END instead.&#039;&#039;&#039; Works similar to its replacement rule, except the edge of the section is aligned with the emitter facing, rather than the section&#039;s center.{{!}}{{!}}align=&amp;quot;center&amp;quot;{{!}}11&lt;br /&gt;
{{!}}-&lt;br /&gt;
{{!}}colspan=&amp;quot;2&amp;quot;{{!}}PSYS_SRC_TARGET_KEY{{!}}{{!}}{{LSLG{{!}}key}}{{!}}{{!}}Specifies the key of a target object, prim, or agent towarads which the particles will change course and move. They will attempt to end up at the geometric center of the target at the end of their lifetime. Requires the PSYS_PART_TARGET_POS_MASK flag be set. [[#Caveats{{!}}caveat 4]]{{!}}{{!}}align=&amp;quot;center&amp;quot;{{!}}20&lt;br /&gt;
{{!}}- style=&amp;quot;background-color:#ccffcc;&amp;quot;&lt;br /&gt;
{{!}}colspan=&amp;quot;5&amp;quot; align=&amp;quot;left&amp;quot;{{!}}&#039;&#039;&#039;Particle Appearance&#039;&#039;&#039;&lt;br /&gt;
{{!}}-&lt;br /&gt;
{{!}}colspan=&amp;quot;2&amp;quot;{{!}}PSYS_PART_START_COLOR{{!}}{{!}}{{LSLG{{!}}vector}}{{!}}{{!}}A {{LSLG{{!}}unit vector}} specifying the {{LSLG{{!}}color}} of the particles upon emission.{{!}}{{!}}align=&amp;quot;center&amp;quot;{{!}}1&lt;br /&gt;
{{!}}-&lt;br /&gt;
{{!}}colspan=&amp;quot;2&amp;quot;{{!}}PSYS_PART_END_COLOR{{!}}{{!}}{{LSLG{{!}}vector}}{{!}}{{!}}A {{LSLG{{!}}unit vector}} specifying the {{LSLG{{!}}color}} the particles transition to during their lifetime. Only used if the PSYS_PART_INTERP_COLOR_MASK flag is set.{{!}}{{!}}align=&amp;quot;center&amp;quot;{{!}}3&lt;br /&gt;
{{!}}-&lt;br /&gt;
{{!}}colspan=&amp;quot;2&amp;quot;{{!}}PSYS_PART_START_ALPHA{{!}}{{!}}{{LSLG{{!}}float}}{{!}}{{!}}Specifies the {{LSLG{{!}}alpha}} of the particles upon emission. Valid values are in the range 0.0 to 1.0. Higher values are more opaque; lower ones are more transparent.{{!}}{{!}}align=&amp;quot;center&amp;quot;{{!}}2&lt;br /&gt;
{{!}}-&lt;br /&gt;
{{!}}colspan=&amp;quot;2&amp;quot;{{!}}PSYS_PART_END_ALPHA{{!}}{{!}}{{LSLG{{!}}float}}{{!}}{{!}}Specifies the {{LSLG{{!}}alpha}} the particles transition to during their lifetime. Only used if the PSYS_PART_INTERP_COLOR_MASK flag is set. Valid values are the same as PSYS_PART_START_ALPHA. ([[#Caveats{{!}}caveat 1]]){{!}}{{!}}align=&amp;quot;center&amp;quot;{{!}}4&lt;br /&gt;
{{!}}-&lt;br /&gt;
{{!}}colspan=&amp;quot;2&amp;quot;{{!}}PSYS_PART_START_SCALE{{!}}{{!}}{{LSLG{{!}}vector}}{{!}}{{!}}Specifies the {{LSLG{{!}}scale}} or size of the particles upon emission. Valid values for each direction are 0.04 (0.03125) to 4.0, in meters. Since particles are essentially 2D sprites, the Z component of the vector is ignored and can be set to 0.0.{{!}}{{!}}align=&amp;quot;center&amp;quot;{{!}}5&lt;br /&gt;
{{!}}-&lt;br /&gt;
{{!}}colspan=&amp;quot;2&amp;quot;{{!}}PSYS_PART_END_SCALE{{!}}{{!}}{{LSLG{{!}}vector}}{{!}}{{!}}Specifies the {{LSLG{{!}}scale}} or size the particles transition to during their lifetime. Only used if the PSYS_PART_INTERP_SCALE_MASK flag is set. Valid values are the same as PSYS_PART_START_SCALE.{{!}}{{!}}align=&amp;quot;center&amp;quot;{{!}}6&lt;br /&gt;
{{!}}-&lt;br /&gt;
{{!}}colspan=&amp;quot;2&amp;quot;{{!}}PSYS_SRC_TEXTURE{{!}}{{!}}{{LSLG{{!}}string}}{{!}}{{!}}Specifies the name of a texture in the prim&#039;s inventory to use for each particle. Alternatively, you may specify an asset key UUID for a texture.{{!}}{{!}}align=&amp;quot;center&amp;quot;{{!}}12&lt;br /&gt;
{{!}}- style=&amp;quot;background-color:#ccffcc;&amp;quot;&lt;br /&gt;
{{!}}colspan=&amp;quot;5&amp;quot; align=&amp;quot;left&amp;quot;{{!}}&#039;&#039;&#039;Particle Flow&#039;&#039;&#039;&lt;br /&gt;
{{!}}-&lt;br /&gt;
{{!}}colspan=&amp;quot;2&amp;quot;{{!}}PSYS_SRC_MAX_AGE{{!}}{{!}}{{LSLG{{!}}float}}{{!}}{{!}}Specifies the length of time, in seconds, that the emitter will operate upon coming into view range (if the particle system is already set) or upon execution of this function (if already in view range). Upon expiration, no more particles will be emitted, except as specified above. Zero will give the particle system an infinite duration. ([[#Caveats{{!}}caveat 2]]){{!}}{{!}}align=&amp;quot;center&amp;quot;{{!}}19&lt;br /&gt;
{{!}}-&lt;br /&gt;
{{!}}colspan=&amp;quot;2&amp;quot;{{!}}PSYS_PART_MAX_AGE{{!}}{{!}}{{LSLG{{!}}float}}{{!}}{{!}}Specifies the lifetime of each particle emitted, in seconds. Maximum is 30.0 seconds. During this time, the particle will appear, change appearance and move according to the parameters specified in the other sections, and then disappear.{{!}}{{!}}align=&amp;quot;center&amp;quot;{{!}}7&lt;br /&gt;
{{!}}-&lt;br /&gt;
{{!}}colspan=&amp;quot;2&amp;quot;{{!}}PSYS_SRC_BURST_RATE{{!}}{{!}}{{LSLG{{!}}float}}{{!}}{{!}}Specifies the time interval, in seconds, between &amp;quot;bursts&amp;quot; of particles being emitted. Specifying a value of 0.0 will cause the emission of particles as fast as the viewer can do so.{{!}}{{!}}align=&amp;quot;center&amp;quot;{{!}}13&lt;br /&gt;
{{!}}-&lt;br /&gt;
{{!}}colspan=&amp;quot;2&amp;quot;{{!}}PSYS_SRC_BURST_PART_COUNT{{!}}{{!}}{{LSLG{{!}}integer}}{{!}}{{!}}Specifies the number of particles emitted in each &amp;quot;burst&amp;quot;.{{!}}{{!}}align=&amp;quot;center&amp;quot;{{!}}15&lt;br /&gt;
{{!}}- style=&amp;quot;background-color:#ccffcc;&amp;quot;&lt;br /&gt;
{{!}}colspan=&amp;quot;5&amp;quot; align=&amp;quot;left&amp;quot;{{!}}&#039;&#039;&#039;Particle Motion&#039;&#039;&#039;&lt;br /&gt;
{{!}}-&lt;br /&gt;
{{!}}colspan=&amp;quot;2&amp;quot;{{!}}PSYS_SRC_ACCEL{{!}}{{!}}{{LSLG{{!}}vector}}{{!}}{{!}}Specifies a directional acceleration vector applied to each particle as it is emitted, in meters per second. Valid values are 0.0 to 100.0 for each direction, as [[Viewer coordinate frames#Region|region]] coordinates.{{!}}{{!}}align=&amp;quot;center&amp;quot;{{!}}8&lt;br /&gt;
{{!}}-&lt;br /&gt;
{{!}}colspan=&amp;quot;2&amp;quot;{{!}}PSYS_SRC_OMEGA{{!}}{{!}}{{LSLG{{!}}vector}}{{!}}{{!}}Specifies the rotational spin of the emitter in radians per second along each axis. This &amp;quot;unsticks&amp;quot; the emitter facing from the prim&#039;s positive Z axis and is noticeable in directional presentations. Prim spin (via {{LSLG{{!}}llTargetOmega}}) has no effect on emitter spin. ([[#Caveats{{!}}caveat 3]]){{!}}{{!}}align=&amp;quot;center&amp;quot;{{!}}21&lt;br /&gt;
{{!}}-&lt;br /&gt;
{{!}}colspan=&amp;quot;2&amp;quot;{{!}}PSYS_SRC_BURST_SPEED_MIN{{!}}{{!}}{{LSLG{{!}}float}}{{!}}{{!}}Specifies the minimum value of a random range of values which is selected for each particle in a burst as its initial speed upon emission, in meters per second. Note that the value of this parameter and PSYS_SRC_BURST_SPEED_MAX are internally re-ordered such that this parameter gets the smaller of the two values.{{!}}{{!}}align=&amp;quot;center&amp;quot;{{!}}17&lt;br /&gt;
{{!}}-&lt;br /&gt;
{{!}}colspan=&amp;quot;2&amp;quot;{{!}}PSYS_SRC_BURST_SPEED_MAX{{!}}{{!}}{{LSLG{{!}}float}}{{!}}{{!}}Specifies the maximum value of a random range of values which is selected for each particle in a burst as its initial speed upon emission, in meters per second. Note that the value of this parameter and PSYS_SRC_BURST_SPEED_MIN are internally re-ordered such that this parameter gets the larger of the two values.{{!}}{{!}}align=&amp;quot;center&amp;quot;{{!}}18&lt;br /&gt;
{{!}}}&lt;br /&gt;
|cat1=Effects&lt;br /&gt;
|cat2=Light&lt;br /&gt;
|cat3=Particles&lt;br /&gt;
|cat4&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>CrazyTB Oh</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Talk:Voice_FAQ&amp;diff=27304</id>
		<title>Talk:Voice FAQ</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Talk:Voice_FAQ&amp;diff=27304"/>
		<updated>2007-08-05T00:48:53Z</updated>

		<summary type="html">&lt;p&gt;CrazyTB Oh: /* Wrong URL &amp;amp;&amp;amp; Linux */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;One interesting part is missing here: How can i change my voice, will a voice changer be supported? --[[User:Sascha Vandyke|Sascha Vandyke]] 17:52, 2 August 2007 (PDT)&lt;br /&gt;
::Although Linden Lab at some point did mention that an in-built voice-changing/morphing editor will be supported in SL, in the mean time, you can use any of the popular voice morphing tools, like [http://www.audio4fun.com/voice-changer.htm AV Voice Changer] or [http://www.morphvox.com MorphVox]. Gwygory Voom is an employee of Screaming Bee who is glad to help you out with setting up MorphVox properly, and they have even designed [http://www.screamingbee.com/product/furryvoicesforsecondlife.aspx a voice pack specifically for SL Furries]. Sadly, they haven&#039;t got a Mac version (yet — also working on it!) but if you&#039;ve got a Mac, you can use GarageBand and use [http://secondlife.funwithstuff.com/2007/03/whatever-you-want-to-sound-like-on-mac.html Ali Maltz tips to get it working with SL].&lt;br /&gt;
&lt;br /&gt;
::Don&#039;t expect miracles with either of these technologies, though :) They work, but they&#039;re no perfect. Still, they have been progressively advancing in technology and at least you&#039;ll have some fun sounding like a Bunny or Dragon :) &lt;br /&gt;
::— [[User:Gwyneth Llewelyn|Gwyneth Llewelyn]] 03:44, 3 August 2007 (PDT)&lt;br /&gt;
&lt;br /&gt;
==Question Typo==&lt;br /&gt;
--You have a wikifying typo at the end:&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&amp;quot;====Is Voice open source&amp;gt;&amp;quot;&#039;&#039; should be &#039;&#039;&amp;quot;====Is Voice open source?====&amp;quot;&#039;&#039;, right?&lt;br /&gt;
-[[User:Smiley Barry|Smiley]].&lt;br /&gt;
&lt;br /&gt;
Just to let you know ... there are countries where VoIP is actively being blocked, like in the UAE in the Middle East. If you happen to live in one of these countries, don&#039;t expect Voice to work in SL. Skype does not work here either.&lt;br /&gt;
&lt;br /&gt;
== Wrong URL ==&lt;br /&gt;
&lt;br /&gt;
The very first question points to an invalid URL: http://secondlife.com/community/downloads.com&lt;br /&gt;
The correct is http://secondlife.com/community/downloads.php&lt;br /&gt;
&lt;br /&gt;
== Linux ==&lt;br /&gt;
&lt;br /&gt;
Linux client is not supported. Looks like SLVoice.exe is closed-source and was not ported to Linux machine, but I&#039;m not sure.&lt;br /&gt;
&lt;br /&gt;
Some people told me it could be possible to run SLVoice.exe on Windows (under vmware or something) or Wine and Linux client would be able to use it, maybe with some hacks.&lt;br /&gt;
&lt;br /&gt;
Meanwhile, people are forced to use skype or any other voip service.&lt;/div&gt;</summary>
		<author><name>CrazyTB Oh</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Talk:Voice_FAQ&amp;diff=27290</id>
		<title>Talk:Voice FAQ</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Talk:Voice_FAQ&amp;diff=27290"/>
		<updated>2007-08-04T19:52:34Z</updated>

		<summary type="html">&lt;p&gt;CrazyTB Oh: Wrong URL &amp;amp;&amp;amp; Linux&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;One interesting part is missing here: How can i change my voice, will a voice changer be supported? --[[User:Sascha Vandyke|Sascha Vandyke]] 17:52, 2 August 2007 (PDT)&lt;br /&gt;
::Although Linden Lab at some point did mention that an in-built voice-changing/morphing editor will be supported in SL, in the mean time, you can use any of the popular voice morphing tools, like [http://www.audio4fun.com/voice-changer.htm AV Voice Changer] or [http://www.morphvox.com MorphVox]. Gwygory Voom is an employee of Screaming Bee who is glad to help you out with setting up MorphVox properly, and they have even designed [http://www.screamingbee.com/product/furryvoicesforsecondlife.aspx a voice pack specifically for SL Furries]. Sadly, they haven&#039;t got a Mac version (yet — also working on it!) but if you&#039;ve got a Mac, you can use GarageBand and use [http://secondlife.funwithstuff.com/2007/03/whatever-you-want-to-sound-like-on-mac.html Ali Maltz tips to get it working with SL].&lt;br /&gt;
&lt;br /&gt;
::Don&#039;t expect miracles with either of these technologies, though :) They work, but they&#039;re no perfect. Still, they have been progressively advancing in technology and at least you&#039;ll have some fun sounding like a Bunny or Dragon :) &lt;br /&gt;
::— [[User:Gwyneth Llewelyn|Gwyneth Llewelyn]] 03:44, 3 August 2007 (PDT)&lt;br /&gt;
&lt;br /&gt;
==Question Typo==&lt;br /&gt;
--You have a wikifying typo at the end:&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&amp;quot;====Is Voice open source&amp;gt;&amp;quot;&#039;&#039; should be &#039;&#039;&amp;quot;====Is Voice open source?====&amp;quot;&#039;&#039;, right?&lt;br /&gt;
-[[User:Smiley Barry|Smiley]].&lt;br /&gt;
&lt;br /&gt;
Just to let you know ... there are countries where VoIP is actively being blocked, like in the UAE in the Middle East. If you happen to live in one of these countries, don&#039;t expect Voice to work in SL. Skype does not work here either.&lt;br /&gt;
&lt;br /&gt;
== Wrong URL &amp;amp;&amp;amp; Linux ==&lt;br /&gt;
&lt;br /&gt;
The very first question points to an invalid URL: http://secondlife.com/community/downloads.com&lt;br /&gt;
The correct is http://secondlife.com/community/downloads.php&lt;br /&gt;
&lt;br /&gt;
By the way, is Voice supported on Linux? (I haven&#039;t downloaded it yet)&lt;/div&gt;</summary>
		<author><name>CrazyTB Oh</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Getting_started_with_LSL&amp;diff=25518</id>
		<title>Getting started with LSL</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Getting_started_with_LSL&amp;diff=25518"/>
		<updated>2007-07-15T06:24:03Z</updated>

		<summary type="html">&lt;p&gt;CrazyTB Oh: Linkified most of function and event names (when outside sample codes).&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{LSL Header}}&lt;br /&gt;
&lt;br /&gt;
== Getting started in LSL scripting in Second Life ==&lt;br /&gt;
&lt;br /&gt;
LSL stands for &amp;quot;Linden Scripting Language&amp;quot; and is used to script the objects you will encounter and make in Second Life.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;FOR WHOM IS THIS TUTORIAL:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This tutorial is intended for those who have never programmed before, Second Life or elsewhere. However, this tutorial will make little sense outside of Second Life.  LSL is very specific to Second Life.&lt;br /&gt;
&lt;br /&gt;
You will begin by running the standard &amp;quot;hello world&amp;quot; script and eventually move towards making your own.  You will need to be familiar with the basic principles of Second Life and have general building skills before you can make use of everything in this tutorial.&lt;br /&gt;
&lt;br /&gt;
== What is LSL? ==&lt;br /&gt;
&lt;br /&gt;
LSL is the Linden Scripting Language. This is the language all scripts in Second Life are written in. Its structure is based on Java and C. A script in Second Life is a set of instructions that can be placed inside any primitive object in the world, but not inside an avatar. Avatars, however, can wear scripted objects.  LSL scripts are written with a built-in editor/compiler which we will access in &amp;quot;Running Your First Script&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
One thing that makes LSL special is its emphasis on &amp;quot;States&amp;quot; and &amp;quot;Events&amp;quot;. A door can be &amp;quot;open&amp;quot; or &amp;quot;closed&amp;quot; and a light can be &amp;quot;on&amp;quot; or &amp;quot;off&amp;quot;. A person can be &amp;quot;hyper&amp;quot;, &amp;quot;calm&amp;quot;, or &amp;quot;bored&amp;quot;. Many real life behaviors can be modeled with &amp;quot;states&amp;quot; and the same can be true for LSL programs. Minimally a script will have one state, the default state.&lt;br /&gt;
&lt;br /&gt;
An event can be thought of as a &amp;quot;Trigger&amp;quot;.  Events are not user defined in Second Life, but rather predefined. They are either caused by objects and avatars interacting in the world, or they are created in a script. Events trigger event handlers (sometimes just called &amp;quot;events&amp;quot; as well). For example, when an avatar touches an object, a &#039;&#039;touch_start&#039;&#039; message is sent to the object, which causes the [[touch_start]]() event handler to begin executing.  So the minimum LSL program must have one state with one event handler in it. Here is a look at a minimal program written in LSL that can loosely be translated as....&amp;quot;When I am in the default state, and I am touched, say &amp;quot;Hello World&amp;quot; on channel zero&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
(note: all scripts will be placed in LSL tags when it goes active)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
default&lt;br /&gt;
{&lt;br /&gt;
     touch_start(integer total_number)&lt;br /&gt;
     {&lt;br /&gt;
          llSay(0,&amp;quot;Hello World&amp;quot;);&lt;br /&gt;
     }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;WHAT CAN I DO WITH SCRIPTS?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Scripts can make an object move, listen, talk, operate as a vehicle or weapon, change color, size or shape. A script can make an object listen to your words as well as talk back to you, scripts even let objects talk to each other.&lt;br /&gt;
&lt;br /&gt;
The most basic object in Second Life is the &amp;quot;Prim&amp;quot; or primitive, the basic building block of all objects you can build in Second Life. When several prims are linked, they can each contain a script which speaks to the rest of the object via Link Messages. These are faster and more private than having objects &amp;quot;chat&amp;quot; or email each other. These are beyond the scope of this tutorial and we will instead focus on single scripts in a single prim.&lt;br /&gt;
&lt;br /&gt;
Scripting is harder to learn than basic object manipulation, but is very rewarding once you make progress.&lt;br /&gt;
&lt;br /&gt;
If you&#039;ve built in Second Life, everything you can define in the edit window can be defined in a script. All interaction you see between objects or between avatars and objects is via scripts.&lt;br /&gt;
&lt;br /&gt;
Learning more about the world and building model is vital to some aspects of scripting, thus I&#039;d recommend a good foundation in building as you learn to script.&lt;br /&gt;
&lt;br /&gt;
== Running Your First Script ==&lt;br /&gt;
&lt;br /&gt;
Traditionally one starts by writing the smallest program possible to print &amp;quot;hello world&amp;quot;. Since LSL only runs inside objects, you must know how to create an object and put a script inside it.&lt;br /&gt;
&lt;br /&gt;
You must be on land which allows building. Either your own land, or land where you have permission to build on such as a sandbox. Right click on the ground and choose &#039;&#039;&#039;create&#039;&#039;&#039; (for one button macs use command+click).&lt;br /&gt;
&lt;br /&gt;
By default, you should see a &#039;&#039;&#039;wand&#039;&#039;&#039; icon with which you can click and create a cube on the ground.&lt;br /&gt;
&lt;br /&gt;
You will automatically enter &#039;&#039;&#039;edit&#039;&#039;&#039; mode and an edit window will pop up. To place a script in an existing object, right click it and hit edit to open the edit window.&lt;br /&gt;
&lt;br /&gt;
In the edit window you may see a button marked &#039;&#039;&#039;more&amp;gt;&amp;gt;&amp;gt;&#039;&#039;&#039; click it to reveal five tabs marked &#039;&#039;&#039;general&#039;&#039;&#039;, &#039;&#039;&#039;object&#039;&#039;&#039;, &#039;&#039;&#039;features&#039;&#039;&#039;, &#039;&#039;&#039;content&#039;&#039;&#039;, and &#039;&#039;&#039;texture&#039;&#039;&#039;. Click &#039;&#039;&#039;content&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
This window shows the contents of an object which can hold scripts, notecards, even other objects. Press &#039;&#039;&#039;new script&#039;&#039;&#039; to add a new script.&lt;br /&gt;
&lt;br /&gt;
This will open the LSL editor with a default script. This editor will color code your syntax and provide some info about keywords when you hold your mouse over them. It will also do basic syntax checking.&lt;br /&gt;
&lt;br /&gt;
Before explaining the code, lets run it. Hit &#039;&#039;&#039;save&#039;&#039;&#039; and close your edit window (not the LSL editor window).&lt;br /&gt;
&lt;br /&gt;
You should see the words &amp;quot;Hello Avatar&amp;quot; from &amp;quot;object&amp;quot;&lt;br /&gt;
&lt;br /&gt;
If you touch the object, it will say &amp;quot;Touched.&amp;quot; The &amp;quot;edit&amp;quot; building window must be closed for touching to work.&lt;br /&gt;
&lt;br /&gt;
Congratulations! You have compiled and run your first LSL script!&lt;br /&gt;
&lt;br /&gt;
== Wash / Rinse / Repeat ==&lt;br /&gt;
&lt;br /&gt;
We now have a running script, however most scripts you make won&#039;t run the first time you run them. It will take many tries as you correct errors and make improvements. When you hit &amp;quot;save&amp;quot; on a script, the LSL editor &amp;quot;compiles&amp;quot; the code to something LSL can understand. It will stop however if it finds an error.&lt;br /&gt;
&lt;br /&gt;
Brackets, parenthesis, and semicolons must all be perfectly in place before a script will run. If you are new to programing this can be one of the most infuriating steps and lead you to screaming DWIM (Do what I mean!) Part of becoming a programmer in ANY language is learning how to precisely define steps and correctly type them into the language you are working in. Thus you will find yourself writing, running, then RE-writing your code several times.&lt;br /&gt;
&lt;br /&gt;
The script you made runs the instant you hit save. If you take it into inventory, it will &amp;quot;suspend&amp;quot; what it was doing but go right back to it when rezzed (resurrected) again. (If you are not familiar with &amp;quot;taking&amp;quot; and &amp;quot;rezzing&amp;quot; an object you may need to revisit your building skills).&lt;br /&gt;
&lt;br /&gt;
Each time you re-write your code you&#039;ll want to reset the script.&lt;br /&gt;
&lt;br /&gt;
Try resetting the script in the following ways.&lt;br /&gt;
&lt;br /&gt;
1. Press Reset in the script window.&lt;br /&gt;
2. Select the object and go to TOOLS&amp;gt;RESET SCRIPTS IN SELECTION&lt;br /&gt;
&lt;br /&gt;
Also try stopping and starting the script from running via checking and unchecking the &amp;quot;running&amp;quot; button, or the TOOLS&amp;gt;SET SCRIPTS TO NOT RUNNING IN SELECTION and then TOOLS&amp;gt;SET SCRIPTS TO RUNNING IN SELECTION.&lt;br /&gt;
&lt;br /&gt;
Once you get comfortable with stopping, starting, and resetting a script, try changing the words &amp;quot;Hello Avatar&amp;quot; and see what else you can make it say.... for goodness sakes keep it PG.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;WHY STOP AND START?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Scripting in Second Life can be a little bit like fixing your car...while going 60mph down the freeway. Thus you need ways to stop the programs for they may affect others.&lt;br /&gt;
&lt;br /&gt;
Objects can hold more than one script and they will all run at once. This can be used in the following manner. Say you write a script that makes a prim change color every few seconds. You also write one to make it follow you. Put them both in one object and it will follow you while changing colors!&lt;br /&gt;
&lt;br /&gt;
For simplicity&#039;s sake, the following examples will all be used individually so be sure not to put two or more into the same object.&lt;br /&gt;
&lt;br /&gt;
== A Closer Look ==&lt;br /&gt;
&lt;br /&gt;
Lets take a look at the default code.&lt;br /&gt;
&lt;br /&gt;
 default&lt;br /&gt;
 {&lt;br /&gt;
      state_entry()&lt;br /&gt;
      {&lt;br /&gt;
      llSay(0, &amp;quot;Hello, Avatar!&amp;quot;);&lt;br /&gt;
      }&lt;br /&gt;
 &lt;br /&gt;
      touch_start(integer total_number)&lt;br /&gt;
      {&lt;br /&gt;
      llSay(0, &amp;quot;Touched.&amp;quot;);&lt;br /&gt;
      }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
The code above contains 2 comments, 1 state, 2 events and 2 functions. Lets look at them individually.&lt;br /&gt;
&lt;br /&gt;
Any line starting with two forward slashes is a comment. It will not run and is used to help you document your code.&lt;br /&gt;
&lt;br /&gt;
 // This is a comment&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;STATES&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A &amp;quot;State&amp;quot; in LSL is a section that is running, and waiting for events. Only one state can be active at any one time per script. Every script must have a default state with at least one event in it. Except for the default state, each state is defined by the word STATE followed by the name of the state. The contents of the state are enclosed in two curly brackets.&lt;br /&gt;
&lt;br /&gt;
 default&lt;br /&gt;
 {&lt;br /&gt;
 // contents of state go here&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 state playing&lt;br /&gt;
 {&lt;br /&gt;
 // this is a state called &amp;quot;playing&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;EVENTS&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Events are inside of states. By &amp;quot;inside&amp;quot; I mean it is between the open and closed curly brackets that represent the body of the state. When that state is active, those events wait to be triggered and run the code inside them. We&#039;ve seen &amp;quot;[[state_entry]]&amp;quot; which is triggered by the state being entered, and &amp;quot;[[touch_start]]&amp;quot; which is triggered when you, or anyone, touches an object.&lt;br /&gt;
&lt;br /&gt;
Lets take a look at the default code.&lt;br /&gt;
&lt;br /&gt;
 // Code start&lt;br /&gt;
 default&lt;br /&gt;
 {&lt;br /&gt;
      touch_start(integer total_number)&lt;br /&gt;
      // this is an event&lt;br /&gt;
      {&lt;br /&gt;
      // this is the content of the event&lt;br /&gt;
      }&lt;br /&gt;
      // end of event&lt;br /&gt;
 }&lt;br /&gt;
 // end of state&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;FUNCTIONS&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Functions lay inside of events and are either defined by you or built-in. Those built in to LSL all start with two lowercase Ls. We&#039;ve seen [[llSay]]() so far. Functions take &amp;quot;arguments&amp;quot; or values in the parentheses that follow it. If you hover over the function in the editor, a popup will show that tell you what the function is expecting. In the case of llSay it expects a number and a string. We send it the number zero and the string &amp;quot;Hello, Avatar!&amp;quot; separated by commas. The function is &amp;quot;expecting&amp;quot; a number and strings and won&#039;t take anything else.&lt;br /&gt;
&lt;br /&gt;
== Putting it all together ==&lt;br /&gt;
&lt;br /&gt;
Line by line, here is the hello avatar script. Copy and paste this to a new script to see it color coded.&lt;br /&gt;
&lt;br /&gt;
 // All Scripts need a Default State&lt;br /&gt;
 default&lt;br /&gt;
 // this open curly bracket denotes the start of the state&lt;br /&gt;
 {&lt;br /&gt;
      state_entry() // an event&lt;br /&gt;
      // another curly bracket starts the  body of the event&lt;br /&gt;
      {&lt;br /&gt;
      llSay(0, &amp;quot;Hello, Avatar!&amp;quot;); // a  function inside the event&lt;br /&gt;
      }&lt;br /&gt;
      // closed curly bracked closes the state_entry event&lt;br /&gt;
 &lt;br /&gt;
      touch_start(integer total_number)  // another event inside default state&lt;br /&gt;
      {&lt;br /&gt;
      llSay(0, &amp;quot;Touched.&amp;quot;); // a function between the brackets of the touch_start body&lt;br /&gt;
      }&lt;br /&gt;
      // end of touch start&lt;br /&gt;
 }&lt;br /&gt;
 // Code end&lt;br /&gt;
&lt;br /&gt;
The instant you save your script, it enters default state, which in turn runs the &amp;quot;[[state_entry]]&amp;quot; event which in turn runs the function [[llSay]]() which makes the object talk.&lt;br /&gt;
&lt;br /&gt;
After this, the program waits idle in the default state until a new event is called.&lt;br /&gt;
&lt;br /&gt;
Touching the box triggers the event &amp;quot;[[touch_start]]&amp;quot; which also makes the object speak.&lt;br /&gt;
&lt;br /&gt;
== Introducing States and Events ==&lt;br /&gt;
&lt;br /&gt;
LSL scripts will not run beginning to end. Instead, they will look for a default state and wait for an event. Within those events, there can be a call to go to a new state.&lt;br /&gt;
&lt;br /&gt;
All programs must contain the default state, inside of which must be one event.  Events are triggered either by actions happening to or around the object the script resides in, or are triggered from the script itself.&lt;br /&gt;
&lt;br /&gt;
Let&#039;s look at a script with two states with two events in each.&lt;br /&gt;
&lt;br /&gt;
 default //default state is mandatory&lt;br /&gt;
 {&lt;br /&gt;
      state_entry() // runs each time the state is entered&lt;br /&gt;
      {&lt;br /&gt;
      llSay(0, &amp;quot;turning on!&amp;quot;); //object speaks!&lt;br /&gt;
      llSetColor(&amp;lt;1,1,1&amp;gt;, ALL_SIDES); // sets all sides to most bright&lt;br /&gt;
      // note the semicolons at the end of each instruction.&lt;br /&gt;
      }&lt;br /&gt;
  &lt;br /&gt;
      touch_start(integer total_number) // another event with only one function  inside&lt;br /&gt;
      {&lt;br /&gt;
      state off; // sets the script to a new &amp;quot;state&amp;quot; and starts running &amp;quot;state off&amp;quot;&lt;br /&gt;
      }&lt;br /&gt;
 } // this curly bracket ends the body of the default state.&lt;br /&gt;
 &lt;br /&gt;
 state off // a second state besides &amp;quot;default&amp;quot;&lt;br /&gt;
 {&lt;br /&gt;
      state_entry() // this is run as soon as the state is entered&lt;br /&gt;
      {&lt;br /&gt;
      llSay(0, &amp;quot;turning off!&amp;quot;);&lt;br /&gt;
      llSetColor(&amp;lt;0,0,0&amp;gt;, ALL_SIDES); // sets all sides as dark as possible&lt;br /&gt;
      }&lt;br /&gt;
 &lt;br /&gt;
      touch_start(integer total_number)&lt;br /&gt;
      {&lt;br /&gt;
      state default;&lt;br /&gt;
      }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
A simplification of this would be&lt;br /&gt;
&lt;br /&gt;
 default&lt;br /&gt;
 {&lt;br /&gt;
 //set color to light and, if touched, enter the &amp;quot;off&amp;quot; state.&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 state off&lt;br /&gt;
 {&lt;br /&gt;
 //set color to dark and, if touched, enter the &amp;quot;default&amp;quot; state.&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Note that after &amp;quot;[[default]]&amp;quot; all new states begin with the word &amp;quot;[[state]]&amp;quot;. Also, while the object has a texture, the color will affect the &amp;quot;tint&amp;quot; more than the true color.&lt;br /&gt;
&lt;br /&gt;
== A closer look ==&lt;br /&gt;
&lt;br /&gt;
Let&#039;s examine the default state.&lt;br /&gt;
&lt;br /&gt;
First we see the &amp;quot;[[state_entry]]&amp;quot; event, which gets triggered each time the default state is entered.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;SPEAK TO ME!&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The first line in the event state_entry is...&lt;br /&gt;
&lt;br /&gt;
 [[LSL_llSay|llSay]](0, &amp;quot;turning on!&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
This makes the object speak &amp;quot;turning on!&amp;quot; on channel zero. What is channel zero? It is the same channel you see all public chat on.&lt;br /&gt;
&lt;br /&gt;
A semicolon ends the line and yet another instruction follows.&lt;br /&gt;
&lt;br /&gt;
 [[llSetColor]](&amp;lt;1,1,1&amp;gt;, ALL_SIDES);&lt;br /&gt;
&lt;br /&gt;
This turns the prim to its brightest tint. If you take the texture off the prim, you&#039;d see it as bright white; with a texture, it looks &amp;quot;normal.&amp;quot; The three 1s stand for the Red, Green, and Blue values of the tint.&lt;br /&gt;
&lt;br /&gt;
At this point the event is finished with the two lines of commands.  Then the script waits idle in the default state for more events to happen.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;TOUCHED BY AN AVATAR&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
While idle in the default state a touch will trigger the &amp;quot;[[touch_start]]&amp;quot; event.&lt;br /&gt;
&lt;br /&gt;
Inside of the &amp;quot;touch_start&amp;quot; event is only one command:&lt;br /&gt;
&lt;br /&gt;
 state off;&lt;br /&gt;
&lt;br /&gt;
This is a command to move immediately to a new state named &amp;quot;off&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
This state is defined after the default state and nearly mirrors the default state, except that it turns the prim dark and, when touched, will put the script back into default mode, thus creating a loop.&lt;br /&gt;
&lt;br /&gt;
# Enters default state&lt;br /&gt;
# Runs code in &amp;quot;state entry&amp;quot;&lt;br /&gt;
# Waits to be touched&lt;br /&gt;
# When touched enters &amp;quot;state off&amp;quot;&lt;br /&gt;
# Enters &amp;quot;state off&amp;quot;&lt;br /&gt;
# Runs code in &amp;quot;state entry&amp;quot; (note in the &amp;quot;off&amp;quot; state&#039;s body)&lt;br /&gt;
# Waits to be touched&lt;br /&gt;
# When touched enters &amp;quot;default&amp;quot; state&lt;br /&gt;
&lt;br /&gt;
Then the whole thing starts over.&lt;br /&gt;
&lt;br /&gt;
== A final word on words ==&lt;br /&gt;
&lt;br /&gt;
Making your object speak is a great way to know what a script is doing, but everyone can hear it for 30m all around you. As you get into more complex scripts this can get pretty noisy! Three alternative ways to see what is going on exist.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;SHHHH WHISPER&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[llWhisper]]( ) is just like [[llSay]]( ) but only broadcasts at half the distance. You still must state what channel. So...&lt;br /&gt;
&lt;br /&gt;
 llWhisper(0,&amp;quot;turning on!&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
...might work a bit to save the sanity of your neighbors.&lt;br /&gt;
&lt;br /&gt;
Using [[llShout]]( ) doubles the distance heard, but can cut the amount of friends you have in half. &lt;br /&gt;
&lt;br /&gt;
[[llOwnerSay]]( ) uses no channel and is heard only by you. Very useful and can triple the amount of friends you have!&lt;br /&gt;
&lt;br /&gt;
 llOwnerSay(&amp;quot;turning on!&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;THE SOUND OF SILENCE&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
You can make a totally silent message via [[llSetText]]( ) like this.&lt;br /&gt;
&lt;br /&gt;
 llSetText(&amp;quot;I am on&amp;quot;, &amp;lt;1,1,1&amp;gt;,1.0);&lt;br /&gt;
&lt;br /&gt;
What do the numbers mean? The &amp;lt;1,1,1&amp;gt; we&#039;ve seen before. It represents the values for red, green, and blue. For now just know that &amp;lt;1,1,1&amp;gt; means &amp;quot;white&amp;quot; and &amp;lt;0,0,0&amp;gt; means &amp;quot;black&amp;quot;. Replace the [[llSay]](0,&amp;quot;turning off!&amp;quot;); with...&lt;br /&gt;
&lt;br /&gt;
 llSetText(&amp;quot;I am off&amp;quot;, &amp;lt;0,0,0&amp;gt;,1.0);&lt;br /&gt;
&lt;br /&gt;
The 1.0 is the alpha setting. 1.0 means fully opaque, and 0.0 would be completely transparent (invisible).&lt;br /&gt;
&lt;br /&gt;
{{LSLC|Tutorials}}&lt;/div&gt;</summary>
		<author><name>CrazyTB Oh</name></author>
	</entry>
</feed>