User:Lastro Greenwood

From Second Life Wiki
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

Lastro Greenwood's Page

Hey everyone, I'm Lastro Greenwood.

I specialise in software development but can kinda build.

Scratch Pad

llCastRay

Determines if something is blocking line of sight to avatar.

Uses:

  • Radiation?
  • Checking to see if avatar is hiding behind cover
  • Checking to see if avatar has line of sight to a heat source
  • Other stuff that requires LOS

Observations:

  • When running the trace it seems to go straight through all objects that get in its way
  • It will return false if you dont filter out the object, a quick fix would be to change "if(numobj == 0)" to "if(numobj == 1)"

<lsl>integer getnumobj(list traceres) {

   return (integer)llList2String(traceres,llGetListLength(traceres)-1);

}

integer isVisible(vector start, vector finish, integer filter) {

   list res = llCastRay(start,finish,filter,0);
   integer numobj = getnumobj(res);
   
   if(numobj == 0)
       return TRUE;
   
   return FALSE;

}

default {

   state_entry()
   {
       
   }
   touch_start(integer total_number)
   {
       vector pos = llGetPos();
       vector finalpos = llDetectedPos(0);
       if(isVisible(pos,finalpos,AGENT) == TRUE)
           llOwnerSay("I can see clearly now!");
       else
           llOwnerSay("Something is in my way!");
   }

}</lsl>

RLV

RLV ASN Stargate Script

Allows for auto-teleporting via RLV, supports most relays

<lsl>vector regCorner; integer relayChannel = -1812221819; default {

   link_message(integer sender, integer num, string msg, key id)
   {
       if(num != 205902)
           return;
       
       list data = llParseString2List(id,["|"],[]);
       string cmd = llList2String(data,0);
       
       if(cmd == "dial succeeded")
       {
           string region = llList2String(data,1);
           regCorner = (vector)llList2String(data,2);
           llRequestSimulatorData(region,DATA_SIM_POS);
       }
       if(cmd == "wormhole collision")
       {
           string target = llList2String(data,2);
           string msg = "stargate," + (string)target + ",@tpto:" +
           (string)regCorner.x + "/" +
           (string)regCorner.y + "/" + 
           (string)regCorner.z + "=force";
           
           llWhisper(relayChannel,msg);
       }
       /*string msgOut = "LINK MSG\n";
       msgOut += "sender: " + (string)sender + "\n";
       msgOut += "num: " + (string)num + "\n";
       msgOut += "msg: " + msg + "\n";
       msgOut += "key: " + (string)id + "\n";
       llOwnerSay(msgOut);*/
   }
   
   dataserver(key req, string data)
   {
       regCorner += (vector)data;
   }

}</lsl>