Difference between revisions of "Template:Darwin's Scripts"
Jump to navigation
Jump to search
m |
|||
(10 intermediate revisions by the same user not shown) | |||
Line 18: | Line 18: | ||
llOwnerSay((string)screen_width); | llOwnerSay((string)screen_width); | ||
} | } | ||
}</lsl></div></div> | date difference = <div id="box"> | }</lsl></div></div> | ||
| date difference = <div id="box"> | |||
==Date Difference== | ==Date Difference== | ||
<div style="padding: 0.5em"> | <div style="padding: 0.5em"> | ||
Line 166: | Line 167: | ||
} | } | ||
</lsl></div></div> | </lsl></div></div> | ||
| uv button maker = <div id="box"> | |||
==UV Button Maker== | |||
<div style="padding: 0.5em"> | |||
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+" | "+(string)new_uv, <1,1,1>, 1); | |||
} | |||
} | |||
touch_end(integer s) | |||
{ | |||
if(llDetectedTouchFace(0) == start_face) | |||
{ | |||
vector end_uv = llDetectedTouchUV(0); | |||
end_uv.x -= (integer)end_uv.x - (end_uv.x < 0); | |||
end_uv.y -= (integer)end_uv.y - (end_uv.y < 0); | |||
llOwnerSay("Button coords: "+(string)start_uv+" | "+(string)end_uv, <1,1,1>, 1); | |||
} | |||
} | |||
}</lsl> | |||
===detected_button()=== | |||
<lsl>//Example coords | |||
list button_coords = [ | |||
<0.617, 0.050, 0.000>, <0.823, 0.141, 0.000>, //Button 0 | |||
<0.399, 0.535, 0.000>, <0.972, 0.764, 0.000>, //Button 1 | |||
<0.152, 0.864, 0.000>, <0.796, 0.940, 0.000>, //Button 2 | |||
<0.047, 0.529, 0.000>, <0.376, 0.576, 0.000> //Button 3 | |||
]; | |||
integer within_square(vector test, vector a, vector b) | |||
{ | |||
vector BLC; | |||
vector TRC; | |||
if(a.x > b.x) | |||
{ | |||
TRC.x = a.x; | |||
BLC.x = b.x; | |||
} | |||
else | |||
{ | |||
TRC.x = b.x; | |||
BLC.x = a.x; | |||
} | |||
if(a.y > b.y) | |||
{ | |||
TRC.y = a.y; | |||
BLC.y = b.y; | |||
} | |||
else | |||
{ | |||
TRC.y = b.y; | |||
BLC.y = a.y; | |||
} | |||
if(test.x <= TRC.x && test.x >= BLC.x && test.y >= BLC.y && test.y <= TRC.y) | |||
return TRUE; | |||
else | |||
return FALSE; | |||
} | |||
integer detected_buttonUV(vector uv) | |||
{ | |||
uv.x -= (integer)uv.x - (uv.x < 0); | |||
uv.y -= (integer)uv.y - (uv.y < 0); | |||
integer i; | |||
for(i=0; i<llGetListLength(button_coords); i=i+2) | |||
{ | |||
if(within_square(uv, llList2Vector(button_coords, i), llList2Vector(button_coords, i+1))) | |||
return i/2; | |||
} | |||
return -1; | |||
} | |||
default | |||
{ | |||
touch_start(integer total_number) | |||
{ | |||
llOwnerSay("Button "+(string)detected_buttonUV(llDetectedTouchUV(0))); | |||
} | |||
}</lsl></div></div> | |||
| pass code dialog = <div id="box"> | |||
==Pass Code Dialog== | |||
<div style="padding: 0.5em"> | |||
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 || message == "0") | |||
{ | |||
code_input += message; | |||
num_pad(); | |||
} | |||
if(message == "Submit") | |||
{ | |||
if(code_input == pass_code) | |||
llSay(0, "Access granted."); | |||
else | |||
llSay(0, "Access denied."); | |||
clear_user(); | |||
} | |||
if(message == "Cancel") | |||
clear_user(); | |||
} | |||
}</lsl></div></div> | |||
| Script not found: {{{1}}} | | Script not found: {{{1}}} | ||
}} | }} | ||
Line 172: | Line 382: | ||
<nowiki>{{Darwin's Scripts|script name}}</nowiki> | <nowiki>{{Darwin's Scripts|script name}}</nowiki> | ||
Returns lsl scripts | Returns lsl scripts in a div box with descriptions | ||
==Contents:== | ==Contents:== | ||
* find screen width | * find screen width (1) | ||
* color picker | * color picker (2) | ||
* date difference | * date difference (1) | ||
* uv button maker (2) | |||
* pass code dialog (1) | |||
==Templates List== | |||
[https://wiki.secondlife.com/w/index.php?title=Special%3APrefixIndex&from=&namespace=10 List of all wiki templates] | |||
</noinclude> | </noinclude> |
Latest revision as of 02:29, 6 October 2009
Usage
{{Darwin's Scripts|script name}}
Returns lsl scripts in a div box with descriptions
Contents:
- find screen width (1)
- color picker (2)
- date difference (1)
- uv button maker (2)
- pass code dialog (1)