Difference between revisions of "User:Darwin Recreant"

From Second Life Wiki
Jump to navigation Jump to search
 
(18 intermediate revisions by the same user not shown)
Line 1: Line 1:
{{SL-hCard/2.0
{{skills
|color1=aaaaaa
|Architect=
|color2=ffffff
|Builder=
|color3=000000
|Machinima=
|color4=000000
|Scenographer=
|color5=000000
|Scripter=*
|color6=aaaaaa
|SLogistician=
|name=Darwin Recreant
|Terraformer=
|image=DR moon 001.png
|}}
|rezday=20th March 2007
{{ISO 639-3/cat-speaking|eng}}
|about=Master Scipter and owner of the [[College of Scripting Music and Science]]
{{ISO 639-3/cat-speaking|heb}}
|fields={{SL-hCard/field|Achievements|
{{LSL Header}}
* Contributed to the success of the college
 
__TOC__
==About Me==
Hi I'm Darwin Recreant. I reside in Israel and has been enjoying Second Life since March 2007. I co-own the [[College of Scripting Music and Science]] along with [[User:Keystoner March|Keystoner March]] and [[User:Shera Beam|Shera Beam]]. I'm an advanced scripter and currently open for any large project offers. I also give private lessons on scripting.
 
Feel free to [http://world.secondlife.com/resident/a8f0b56e-e68e-4113-acec-71c57c98cc5b contact me] in-world.
 
== Achievements ==
* Contributed to the success of the [[College of Scripting Music and Science|College]]
* Creator of the Anti-Griefer HUD
* Creator of the Anti-Griefer HUD
* Creator of the DRUID Holodeck
* Creator of the DRUID Holodeck
Line 21: Line 29:
** Useful HUD's of all sorts
** Useful HUD's of all sorts
* Helper to dozens of newbie/intermediate scripters
* Helper to dozens of newbie/intermediate scripters
|links=
}}
}}


{{skills
== My Wiki Articles ==
|Architect=
* [[llSetFaceText]] - function on [[:Category:LSL WishList|lsl wish list]]
|Builder=
* [[College of Scripting Music and Science]] - college page
|Machinima=
* [[College of Scripting Music and Science/Group Guidelines]] - college group policy
|Scenographer=
* [[Template:Darwin's Scripts]] - my personal template
|Scripter=*
* [[FindScreenWidth]] - one of my [[:Category:LSL Examples|lsl examples]]
|SLogistician=
 
|Terraformer=
== My Jira Reports ==
|}}
* {{Jira|VWR-6493}} - Momentary inaccuracy with llSetPos in linked objects
* {{Jira|SVC-3449}} - New function: llGetParcelAgents
* {{Jira|MISC-969}} - New Feature: Prim Animations - Less laggy, smoother, avatar like, animations on prims
* {{Jira|SEC-230}} - MONO: Script crashes sim
 
= My Scripts =
{{Darwin's Scripts|find screen width}}{{Darwin's Scripts|color picker}}{{Darwin's Scripts|uv button maker}}{{Darwin's Scripts|pass code dialog}}

Latest revision as of 13:25, 23 January 2013

About Me

Hi I'm Darwin Recreant. I reside in Israel and has been enjoying Second Life since March 2007. I co-own the College of Scripting Music and Science along with Keystoner March and Shera Beam. I'm an advanced scripter and currently open for any large project offers. I also give private lessons on scripting.

Feel free to contact me in-world.

Achievements

  • Contributed to the success of the College
  • Creator of the Anti-Griefer HUD
  • Creator of the DRUID Holodeck
  • Non-stop scripting development
    • Teleporters
    • Vendors
    • Anti-Griefing tools
    • Scripting tools (functions)
    • Useful HUD's of all sorts
  • Helper to dozens of newbie/intermediate scripters

My Wiki Articles

My Jira Reports

  • VWR-6493 - Momentary inaccuracy with llSetPos in linked objects
  • SVC-3449 - New function: llGetParcelAgents
  • MISC-969 - New Feature: Prim Animations - Less laggy, smoother, avatar like, animations on prims
  • SEC-230 - MONO: Script crashes sim

My Scripts

Find Screen Width

The script below will give the width of the screen in meters by touching anywhere on the visible face, given that the prim is a box with zero rotation and attached at one of the corner HUD attachment points. <lsl>default {

   touch_start(integer total_number)
   {
       vector scale = llGetScale();
       vector off_point = llGetLocalPos();
       vector face_pos = llDetectedTouchST(0);
       vector screen_pos = llDetectedTouchPos(0);
       
       float screen_width = ((face_pos.x-.5)*scale.y-off_point.y+screen_pos.y)*2;
       
       llOwnerSay((string)screen_width);
   }
}</lsl>

Color Picker

Script that converts hue/sat/lum to red/green/blue based on texture coordinates on a single prim and outputs the vector rgb.

Prim Setup

<lsl>default {

   state_entry()
   {
       llSetPrimitiveParams([
           PRIM_SIZE, <.5,.4,.1>, 
           PRIM_TYPE, PRIM_TYPE_BOX, PRIM_HOLE_SQUARE, <0,1,0>, 0.0, <0,0,0>, <.8,1,0>, <.02,0,0>, 
           PRIM_TEXTURE, ALL_SIDES, (key)"5748decc-f629-461c-9a36-a35a221fe21f", <1,1,0>, <0,0,0>, 0.0, 
           PRIM_TEXTURE, 0, (key)"404e4461-8a22-fbf7-7652-4b81dc7da325", <1,1,0>, <0,0,0>, 0.0, 
           PRIM_TEXTURE, 2, (key)"01c02d68-dfb0-d907-7397-cba857c61144", <1,1,0>, <0,0,0>, -PI_BY_TWO]);
   }

} </lsl>

Color Picker

<lsl>float hue = 0.0; float lum = 0.5; float sat = 1.0;

integer start_face;

//hsl to rgb steps take from http://130.113.54.154/~monger/hsl-rgb.html vector hsl_to_rbg(float h, float s, float l) {

   vector rbg;
   float temp1;
   float temp2;
   
   if(l < .5)
       temp2 = l*(1.0+s);
   else
       temp2 = l+s-l*s;
   
   temp1 = l*2.0-temp2;
   
   float Rtemp3 = h+1.0/3.0;
   if(Rtemp3 < 0.0)
       Rtemp3 = Rtemp3+1.0;
   else if(Rtemp3 > 1.0)
       Rtemp3 = Rtemp3-1.0;
       
   float Gtemp3 = h;
   if(Gtemp3 < 0.0)
       Gtemp3 = Gtemp3+1.0;
   else if(Gtemp3 > 1.0)
       Gtemp3 = Gtemp3-1.0;
       
   float Btemp3 = h-1.0/3.0;
   if(Btemp3 < 0.0)
       Btemp3 = Btemp3+1.0;
   else if(Btemp3 > 1.0)
       Btemp3 = Btemp3-1.0;
       
   if(6.0*Rtemp3 < 1.0)
       rbg.x = temp1+(temp2-temp1)*6.0*Rtemp3;
   else if(2.0*Rtemp3 < 1.0)
       rbg.x = temp2;
   else if(3.0*Rtemp3 < 2.0)
       rbg.x = temp1+(temp2-temp1)*((2.0/3.0)-Rtemp3)*6.0;
   else
       rbg.x = temp1;
       
   if(6.0*Gtemp3 < 1.0)
       rbg.y = temp1+(temp2-temp1)*6.0*Gtemp3;
   else if(2.0*Gtemp3 < 1.0)
       rbg.y = temp2;
   else if(3.0*Gtemp3 < 2.0)
       rbg.y = temp1+(temp2-temp1)*((2.0/3.0)-Gtemp3)*6.0;
   else
       rbg.y = temp1;
       
   if(6.0*Btemp3 < 1.0)
       rbg.z = temp1+(temp2-temp1)*6.0*Btemp3;
   else if(2.0*Btemp3 < 1.0)
       rbg.z = temp2;
   else if(3.0*Btemp3 < 2.0)
       rbg.z = temp1+(temp2-temp1)*((2.0/3.0)-Btemp3)*6.0;
   else
       rbg.z = temp1;
   return rbg;

}

default {

   touch_start(integer total_number)
   {
       start_face = llDetectedTouchFace(0);
       if(start_face == 4)
           llOwnerSay((string)hsl_to_rbg(hue, sat, lum));
   }
   
   touch(integer total_number)
   {
       vector st = llDetectedTouchST(0);
       integer face = llDetectedTouchFace(0);
       if(start_face != face) return;
       if(face == 0)
       {
           sat = st.y;
           hue = st.x;
           llSetColor(hsl_to_rbg(hue, sat, lum), 4);
       }
       else if(face == 2)
       {
           lum = st.x;
           llSetColor(hsl_to_rbg(hue, sat, lum), 4);
       }
   }

}

</lsl>

UV Button Maker

The following scripts are tools to making your own uv button setup for a texture in a hud or for any multi-button texture. First script is for getting the button coordinates which are used in the second script (detected_button) which returns the button number pressed.

Get Coordinates

<lsl>integer start_face; vector start_uv;

default {

  touch_start(integer s)
  {
      start_face = llDetectedTouchFace(0);
      start_uv = llDetectedTouchUV(0);
      start_uv.x += -(integer)start_uv.x - (start_uv.x < 0);
      start_uv.y += -(integer)start_uv.y - (start_uv.y < 0);
  }
  touch(integer s)
  {
     if(llDetectedTouchFace(0) == start_face)
     {
        vector new_uv = llDetectedTouchUV(0);
        new_uv.x -= (integer)new_uv.x - (new_uv.x < 0);
        new_uv.y -= (integer)new_uv.y - (new_uv.y < 0);
        llSetText((string)start_uv+"

Pass Code Dialog

A simple script that will receive number inputs through menu like a number pad, and will grant access when submission matches pass code <lsl>string pass_code = "1234"; string code_input;

integer dialog_ch; integer dialog_handle; key dialog_user;

list rebutton(list src) {

   list temp;
   
   temp += llList2List(src, -3, -1);
   temp += llList2List(src, -6, -4);
   temp += llList2List(src, -9, -7);
   temp += llList2List(src, -12, -10);
   
   return temp;

}

integer rand(integer max) {

   return llAbs((integer)("0x"+llGetSubString(llMD5String((string)llFrand(10000), 0), 0, 7)))%max;

}

num_pad() {

   llSetTimerEvent(10);
   list buttons = [

"1", "2", "3", "4", "5", "6", "7", "8", "9", "Submit", "0", "Cancel"];

   llDialog(dialog_user, "Enter pass code.\n\n"+code_input, rebutton(buttons), dialog_ch);

}

new_channel() {

   dialog_ch = rand(1 << 30);
   llListenRemove(dialog_handle);
   dialog_handle = llListen(dialog_ch, "", "", "");

}

new_user(key user) {

   dialog_user = user;
   code_input = "";
   new_channel();
   num_pad();

}

clear_user() {

   llSetTimerEvent(0);
   dialog_user = NULL_KEY;
   llListenRemove(dialog_handle);
   dialog_handle = 0;

}

default {

   touch_start(integer s)
   {
       if(dialog_user);
       else
           new_user(llDetectedKey(0));
   }
   
   timer()
   {
       clear_user();
   }
   
   listen(integer channle, string name, key id, string message)
   {
       if(id != dialog_user) return;
       
       if((integer)message