User:Lastro Greenwood

From Second Life Wiki
Jump to: navigation, search

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>