<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-2109535717511061580</id><updated>2011-11-27T18:05:40.132-08:00</updated><category term='LSL Tutorial'/><category term='Websites'/><title type='text'>Secondlife Technology Talk</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://secondlife-tech.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2109535717511061580/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://secondlife-tech.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Red</name><uri>http://www.blogger.com/profile/01219379636813301686</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_jGjS6sCpw-o/SS4nkzwIc1I/AAAAAAAAAAM/wg5pK9XqTVM/s1600-R/1'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>8</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-2109535717511061580.post-5856556794847832434</id><published>2008-11-26T20:26:00.000-08:00</published><updated>2008-11-26T20:45:11.099-08:00</updated><title type='text'>Region wide door w/ Master Controller</title><content type='html'>Ok, Zanthar on OS Scripters asked about a region wide door...   figured I'd code in a blog post for a minute...&lt;br /&gt;&lt;br /&gt;Concept - Master Controller that you would list all the names in, slave door script that would talk to the master controller.&lt;br /&gt;&lt;br /&gt;**** Note. I never tried to compile this ******&lt;br /&gt;&lt;br /&gt;Master Controller&lt;br /&gt;--&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;default&lt;br /&gt;{&lt;br /&gt;    list validusers = ["Redbeard McCellan"];&lt;br /&gt;&lt;br /&gt;    state_entry()&lt;br /&gt;    {&lt;br /&gt;        llSetName("DOORCONTROLLER");&lt;br /&gt;        llListen(-8988,"", NULL_KEY, "");&lt;br /&gt;        //Randomly picked a channel, but it needs to be static.  &lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    listen( integer channel, string name, key id, string message )&lt;br /&gt;    {&lt;br /&gt;       if(llListFindList(validusers,(list)message) != -1)&lt;br /&gt;       {&lt;br /&gt;         llRegionSay(-8989,(string)id);&lt;br /&gt;       }&lt;br /&gt;    }&lt;br /&gt;    &lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Door Script&lt;br /&gt;--&lt;br /&gt;default&lt;br /&gt;{&lt;br /&gt;    state_entry()&lt;br /&gt;    {&lt;br /&gt;        llListen(-8989, "DOORCONTROLLER", NULL_KEY, (string)llGetKey());&lt;br /&gt;        //Randomly picked a channel, but it needs to be static.  &lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    touch_start(integer total_number)&lt;br /&gt;    {&lt;br /&gt;        llRegionSay(-8988, (string)llDetectedName(0));&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;    listen( integer channel, string name, key id, string message )&lt;br /&gt;    {&lt;br /&gt;       if(message == (string)llGetKey())  //expects back the it's own key if it is supposed to open&lt;br /&gt;       {&lt;br /&gt;            llSetTimerEvent(15);&lt;br /&gt;            llSetAlpha(0,ALL_SIDES);&lt;br /&gt;            llSetStatus(STATUS_PHANTOM,TRUE);&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;    &lt;br /&gt;    timer()&lt;br /&gt;    {&lt;br /&gt;        llSetTimerEvent(0);&lt;br /&gt;        llSetAlpha(1,ALL_SIDES);&lt;br /&gt;        llSetStatus(STATUS_PHANTOM,FALSE);&lt;br /&gt;    }&lt;br /&gt;}&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2109535717511061580-5856556794847832434?l=secondlife-tech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://secondlife-tech.blogspot.com/feeds/5856556794847832434/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2109535717511061580&amp;postID=5856556794847832434' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2109535717511061580/posts/default/5856556794847832434'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2109535717511061580/posts/default/5856556794847832434'/><link rel='alternate' type='text/html' href='http://secondlife-tech.blogspot.com/2008/11/region-wide-door-w-master-controller.html' title='Region wide door w/ Master Controller'/><author><name>Red</name><uri>http://www.blogger.com/profile/01219379636813301686</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_jGjS6sCpw-o/SS4nkzwIc1I/AAAAAAAAAAM/wg5pK9XqTVM/s1600-R/1'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2109535717511061580.post-2485548812351790089</id><published>2008-11-26T20:25:00.000-08:00</published><updated>2008-11-26T20:26:38.354-08:00</updated><title type='text'>Lazy</title><content type='html'>I suppose I should get back into posting here.....&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2109535717511061580-2485548812351790089?l=secondlife-tech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://secondlife-tech.blogspot.com/feeds/2485548812351790089/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2109535717511061580&amp;postID=2485548812351790089' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2109535717511061580/posts/default/2485548812351790089'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2109535717511061580/posts/default/2485548812351790089'/><link rel='alternate' type='text/html' href='http://secondlife-tech.blogspot.com/2008/11/lazy.html' title='Lazy'/><author><name>Red</name><uri>http://www.blogger.com/profile/01219379636813301686</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_jGjS6sCpw-o/SS4nkzwIc1I/AAAAAAAAAAM/wg5pK9XqTVM/s1600-R/1'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2109535717511061580.post-4883710406116349576</id><published>2008-03-29T14:45:00.000-07:00</published><updated>2008-03-30T09:38:40.364-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='LSL Tutorial'/><title type='text'>Rezzing obects - rotation adjustment</title><content type='html'>On Scripters Support Group today someone asked about adjusting for rotation when rezzing objects.&lt;br /&gt;&lt;br /&gt;You can use llRot2Fwd, llRot2Up and llRot2Left to adjust.&lt;br /&gt;&lt;br /&gt;For example: &lt;br /&gt;&lt;br /&gt; llRezAtRoot(llGetInventoryName(INVENTORY_OBJECT,0), llGetPos()-llRot2Fwd(llGetRot())+llRot2Left(llGetRot()),llGetVel(),llGetRot(),llGetStartParamater());&lt;br /&gt;&lt;br /&gt;Would (with not a lot of efficiency) rez the first object in inventory 1m to the rear and to the left.&lt;br /&gt;&lt;br /&gt;Wiki wiki wiki....&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://lslwiki.net/lslwiki/wakka.php?wakka=llRot2Fwd"&gt;llRot2Fwd&lt;/a&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://lslwiki.net/lslwiki/wakka.php?wakka=llRot2Left"&gt;llRot2Left&lt;/a&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://lslwiki.net/lslwiki/wakka.php?wakka=llRot2Up"&gt;llRot2Up&lt;/a&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://lslwiki.net/lslwiki/wakka.php?wakka=llRezAtRoot"&gt;llRezAtRoot&lt;/a&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://lslwiki.net/lslwiki/wakka.php?wakka=llGetVel"&gt;llGetVel&lt;/a&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://lslwiki.net/lslwiki/wakka.php?wakka=llGetRot"&gt;llGetRot&lt;/a&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://lslwiki.net/lslwiki/wakka.php?wakka=llGetStartParamater"&gt;llGetStartParamater&lt;/a&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;Jansen Miles IM'd me with a modification:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;//llRot2Fwd() and it's kin represent a normalization of 1.0. So just multiply that by your actual desired vector components!&lt;br /&gt;default&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt;    touch_start(integer total_number)&lt;br /&gt;    {&lt;br /&gt;        //* Rezzed object offset from rezzer center.&lt;br /&gt;        vector offset = &lt;0, 0, 0.35&gt;;&lt;br /&gt;&lt;br /&gt;        llRezObject(llGetInventoryName(INVENTORY_OBJECT,0),&lt;br /&gt;            llGetPos() + (llRot2Fwd(llGetRot()) * offset.x) + (llRot2Left(llGetRot()) * offset.y) + (llRot2Up(llGetRot()) * offset.z),&lt;br /&gt;            llGetVel(), llGetRot(), llGetStartParameter());&lt;br /&gt;    &lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;A slightly better example including Jansen's suggestion:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;br /&gt;string inventory_item;&lt;br /&gt;&lt;br /&gt;default&lt;br /&gt;{&lt;br /&gt;  state_entry()&lt;br /&gt;  {&lt;br /&gt;    inventory_item=llGetInventoryName(INVENTORY_OBJECT,0); // get the name of the first object in inventory&lt;br /&gt;  }&lt;br /&gt;  touch_start(integer p)&lt;br /&gt;  {&lt;br /&gt;    rot=llGetRot();&lt;br /&gt;&lt;br /&gt;    //a vector is used to represent your offset in terms of fwd/back, left,right, up/down&lt;br /&gt;    // eg. &lt;-2,0,1&gt; would be 2m back, 1m up&lt;br /&gt;&lt;br /&gt;    vector offset=&lt;-2,0,1&gt;;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;    vector rezpos=llGetPos() + (llRot2Fwd(rot) * offset.x) + (llRot2Left(rot) * offset.y) + (llRot2Up(rot) * offset.z);&lt;br /&gt;&lt;br /&gt;    llRezAtRoot(inventory_item, rezpos, ZERO_VECTOR, rot, 0);&lt;br /&gt;    //ZERO_VECTOR is used instead of a velocity.  One *could* use llGetVel if you "rezzer" is moving&lt;br /&gt;    //the last "0' is the paramater that will be passed to on_rez in teh rezzed object&lt;br /&gt;    &lt;br /&gt;&lt;br /&gt;  }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I like the use of the vector for offsets!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2109535717511061580-4883710406116349576?l=secondlife-tech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://secondlife-tech.blogspot.com/feeds/4883710406116349576/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2109535717511061580&amp;postID=4883710406116349576' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2109535717511061580/posts/default/4883710406116349576'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2109535717511061580/posts/default/4883710406116349576'/><link rel='alternate' type='text/html' href='http://secondlife-tech.blogspot.com/2008/03/rezzing-obects-rotation-adjustment.html' title='Rezzing obects - rotation adjustment'/><author><name>Red</name><uri>http://www.blogger.com/profile/01219379636813301686</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_jGjS6sCpw-o/SS4nkzwIc1I/AAAAAAAAAAM/wg5pK9XqTVM/s1600-R/1'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2109535717511061580.post-1497039683324655897</id><published>2008-03-20T22:26:00.000-07:00</published><updated>2008-03-20T22:28:26.321-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='LSL Tutorial'/><title type='text'>A trick for flipping a flag in LSL</title><content type='html'>Chatting on the Scripters Support Group, &lt;a href="http://www.slprofiles.com/webtab/Trent Platthy"&gt;Trent Platthy&lt;/a&gt; posted an interesting trick I hadn't thought of before for flipping a flag variable.&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;flag=!flag;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Nice and simple. :)&lt;br /&gt;&lt;br /&gt;A code example:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;integer flag=0;&lt;br /&gt;default&lt;br /&gt;{&lt;br /&gt;    state_entry()&lt;br /&gt;    {&lt;br /&gt;        llSay(0, "Hello, Avatar!");&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    touch_start(integer total_number)&lt;br /&gt;    {&lt;br /&gt;        if(flag)&lt;br /&gt;        {&lt;br /&gt;             //flag is set&lt;br /&gt;             llSay(0,"Flag is Set");&lt;br /&gt;        }&lt;br /&gt;        else&lt;br /&gt;        {&lt;br /&gt;           llSay(0,"Flag is not set.");&lt;br /&gt;        }&lt;br /&gt;        flag=!flag; //toggle&lt;br /&gt;   }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2109535717511061580-1497039683324655897?l=secondlife-tech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://secondlife-tech.blogspot.com/feeds/1497039683324655897/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2109535717511061580&amp;postID=1497039683324655897' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2109535717511061580/posts/default/1497039683324655897'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2109535717511061580/posts/default/1497039683324655897'/><link rel='alternate' type='text/html' href='http://secondlife-tech.blogspot.com/2008/03/trick-for-flipping-flag-in-lsl.html' title='A trick for flipping a flag in LSL'/><author><name>Red</name><uri>http://www.blogger.com/profile/01219379636813301686</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_jGjS6sCpw-o/SS4nkzwIc1I/AAAAAAAAAAM/wg5pK9XqTVM/s1600-R/1'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2109535717511061580.post-2326003707205026394</id><published>2008-03-15T07:47:00.000-07:00</published><updated>2008-03-15T08:17:03.562-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='LSL Tutorial'/><title type='text'>Detailed example of a Dialog Box</title><content type='html'>Dialog boxes are handled using the &lt;a href="http://wiki.secondlife.com/wiki/LlDialog"&gt;llDialog&lt;/a&gt; command.   See the wiki for more details on the arguments.&lt;br /&gt;&lt;br /&gt;This example is a low-lag design of using llListen - it is called &lt;b&gt;after&lt;/b&gt; touch_start is called so that the user's key can be added as a filter to the llListen call.   Adding the user's key is the most efficient filter, but requires us to remember to remove the listen handle using &lt;a href="http://wiki.secondlife.com/wiki/LlListenRemove"&gt;llListenRemove&lt;/a&gt;.   Note that we call this in two spots - in the listen() handler (a user successfully clicks Yes or No) or in the timer() handler to handle a timeout.    &lt;br /&gt;&lt;br /&gt;To handle a timeout we also have to call &lt;a href="http://wiki.secondlife.com/wiki/LlSetTimeEvent"&gt;llSetTimerEvent&lt;/a&gt; in a few spots.  In touch_start to start a timeout countdown, in listen to cancel the timeout if we receive a response and in timer itself to stop trigger a second timeout in th event a timeout occurs.&lt;br /&gt;&lt;br /&gt;Note the use of &lt;a href="http://wiki.secondlife.com/wiki/LlFrand"&gt;llFrand&lt;/a&gt; to assign a random channel for the &lt;a href="http://wiki.secondlife.com/wiki/LlListen"&gt;llListen&lt;/a&gt; and &lt;a href="http://wiki.secondlife.com/wiki/LlDialog"&gt;llDialog&lt;/a&gt; commands.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;integer channel;&lt;br /&gt;integer listenhandle;&lt;br /&gt;&lt;br /&gt;default&lt;br /&gt;{&lt;br /&gt;    state_entry()&lt;br /&gt;    {&lt;br /&gt;        channel=(integer)llFrand(10000)+100;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    touch_start(integer total_number)&lt;br /&gt;    {&lt;br /&gt;        //This example does not handle two people touching the prim at the same time&lt;br /&gt;        //You should use a for loop and total_number to handle multiple clicks    &lt;br /&gt;        if(!listenhandle) // only act on touches if not already waiting for someone to answer&lt;br /&gt;        {&lt;br /&gt;            llSay(0, "Touched by "+llDetectedName(0));&lt;br /&gt;            llSetTimerEvent(30); // give user 30 seconds to click&lt;br /&gt;            listenhandle=llListen(channel, "", llDetectedKey(0), ""); // low lag only listen for one user.&lt;br /&gt;            llDialog(llDetectedKey(0), "Answer Yes or No", ["Yes","No"],channel);&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;    timer()&lt;br /&gt;    {&lt;br /&gt;        llSetTimerEvent(0);&lt;br /&gt;        llListenRemove(listenhandle); //stop listening&lt;br /&gt;        llSay(0,"Timed out.");&lt;br /&gt;&lt;br /&gt;    }&lt;br /&gt;    listen(integer chan, string name, key id, string message)&lt;br /&gt;    {&lt;br /&gt;        if(message=="Yes")&lt;br /&gt;        {&lt;br /&gt;            llSay(0,"Yes");&lt;br /&gt;        }&lt;br /&gt;        else if (message=="No")&lt;br /&gt;        {&lt;br /&gt;            llSay(0,"No");&lt;br /&gt;        }&lt;br /&gt;        llListenRemove(listenhandle); //stop listening&lt;br /&gt;        llSetTimerEvent(0);&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2109535717511061580-2326003707205026394?l=secondlife-tech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://secondlife-tech.blogspot.com/feeds/2326003707205026394/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2109535717511061580&amp;postID=2326003707205026394' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2109535717511061580/posts/default/2326003707205026394'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2109535717511061580/posts/default/2326003707205026394'/><link rel='alternate' type='text/html' href='http://secondlife-tech.blogspot.com/2008/03/detailed-example-of-dialog-box.html' title='Detailed example of a Dialog Box'/><author><name>Red</name><uri>http://www.blogger.com/profile/01219379636813301686</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_jGjS6sCpw-o/SS4nkzwIc1I/AAAAAAAAAAM/wg5pK9XqTVM/s1600-R/1'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2109535717511061580.post-1345697269716567212</id><published>2008-03-12T00:45:00.000-07:00</published><updated>2008-03-12T00:48:16.163-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Websites'/><title type='text'>Taryn London's website</title><content type='html'>Stayed up late helping Taryn get her blog rolling...   Taryn is a great SL Mentor and will have lots of tips on her website.   She's also going to be a host blogger here!&lt;br /&gt;&lt;br /&gt;Check out &lt;a target=_NEW href="http://www.tarynlondon.com/blogengine.net/"&gt;www.TarynLondon.com&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2109535717511061580-1345697269716567212?l=secondlife-tech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://secondlife-tech.blogspot.com/feeds/1345697269716567212/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2109535717511061580&amp;postID=1345697269716567212' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2109535717511061580/posts/default/1345697269716567212'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2109535717511061580/posts/default/1345697269716567212'/><link rel='alternate' type='text/html' href='http://secondlife-tech.blogspot.com/2008/03/taryn-londons-webiste.html' title='Taryn London&apos;s website'/><author><name>Red</name><uri>http://www.blogger.com/profile/01219379636813301686</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_jGjS6sCpw-o/SS4nkzwIc1I/AAAAAAAAAAM/wg5pK9XqTVM/s1600-R/1'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2109535717511061580.post-1156530997484310654</id><published>2008-03-11T20:21:00.000-07:00</published><updated>2008-03-11T21:02:13.839-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='LSL Tutorial'/><title type='text'>Listen event fails after object changes ownership</title><content type='html'>A problem I often see on the the Scripting chat is about users that are having troubles with listen() events after an object's owner changes. (i.e. someone buys the object).&lt;br /&gt;&lt;br /&gt;This happens because users often call llListen() in the state_entry() handler and specify llGetOwner() as a filter.    Using llGetOwner() as a filter is a good idea because it is the lowest lag option, but then special attention needs to be given on handling ownership changes.&lt;br /&gt;&lt;br /&gt;Fortunately, the changed() handler gives us an easy fix - simply add to your code a "changed handler" that resets the script [llResetScript()] on change of ownership.&lt;br /&gt;&lt;br /&gt;The code looks something like this:&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;&lt;br /&gt;changed(integer change)&lt;br /&gt;{&lt;br /&gt; if(change &amp;amp; CHANGED_OWNER)&lt;br /&gt;  {&lt;br /&gt;      llResetScript();&lt;br /&gt;  }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;Note that the change integer in the arguments is bitwise compared to the constant CHANGED_OWNER.     if(change==CHANGED_OWNER) would work most of the time, but it is possible to get a single call to changed() with multiple options bitwise ANDed together.&lt;br /&gt;&lt;br /&gt;I'll write future posts on how to avoid resetting the script and more about bitwise operations.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2109535717511061580-1156530997484310654?l=secondlife-tech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.lslwiki.net/lslwiki/wakka.php?wakka=changed' title='Listen event fails after object changes ownership'/><link rel='replies' type='application/atom+xml' href='http://secondlife-tech.blogspot.com/feeds/1156530997484310654/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2109535717511061580&amp;postID=1156530997484310654' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2109535717511061580/posts/default/1156530997484310654'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2109535717511061580/posts/default/1156530997484310654'/><link rel='alternate' type='text/html' href='http://secondlife-tech.blogspot.com/2008/03/listen-event-fails-after-object-changes.html' title='Listen event fails after object changes ownership'/><author><name>Red</name><uri>http://www.blogger.com/profile/01219379636813301686</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_jGjS6sCpw-o/SS4nkzwIc1I/AAAAAAAAAAM/wg5pK9XqTVM/s1600-R/1'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2109535717511061580.post-6738434584369354383</id><published>2008-03-11T17:21:00.000-07:00</published><updated>2008-03-11T17:24:32.870-07:00</updated><title type='text'>Welcome to Secondlife Tech Talk</title><content type='html'>Welcome to my new blog to talk about SL builds, scripts, clients, tweaks and easter eggs!&lt;br /&gt;&lt;br /&gt;I've been playing SL for a year and half; a mentor, a scripter, and a RL technology evangelist.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2109535717511061580-6738434584369354383?l=secondlife-tech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://secondlife-tech.blogspot.com/feeds/6738434584369354383/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2109535717511061580&amp;postID=6738434584369354383' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2109535717511061580/posts/default/6738434584369354383'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2109535717511061580/posts/default/6738434584369354383'/><link rel='alternate' type='text/html' href='http://secondlife-tech.blogspot.com/2008/03/welcome-to-secondlife-tech-talk.html' title='Welcome to Secondlife Tech Talk'/><author><name>Red</name><uri>http://www.blogger.com/profile/01219379636813301686</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_jGjS6sCpw-o/SS4nkzwIc1I/AAAAAAAAAAM/wg5pK9XqTVM/s1600-R/1'/></author><thr:total>0</thr:total></entry></feed>
