Inventory Based Menu: Difference between revisions
No edit summary |
No edit summary |
||
| Line 1: | Line 1: | ||
{{LSL Header|ml=*}} | {{LSL Header|ml=*}} | ||
Introduction: | |||
Ok you want to create a dialog based menu system, you want to support more than 12 buttons | |||
so im going to give you quick overview of basic menu using [[llRezAtRoot]], [[llGetInventoryName]] & [[llGetInventoryNumber]] | |||
so | |||
USAGE:just drop objects into the prim and rez them from the dialog by touching the prim. | USAGE:just drop objects into the prim and rez them from the dialog by touching the prim. | ||
<lsl> | <lsl> | ||
| Line 79: | Line 76: | ||
</lsl> | </lsl> | ||
For technical support, requests, etc., use the Search under the Groups Tab and search for Skidz Partz - Open Source | |||
For technical support, requests, etc., use the Search under the Groups Tab and search for | |||
If you have any problems getting this script to work either contact me in-world [https://wiki.secondlife.com/wiki/User:Revolution_Perenti Revolution Perenti] | If you have any problems getting this script to work either contact me in-world [https://wiki.secondlife.com/wiki/User:Revolution_Perenti Revolution Perenti] | ||
or visit our free scripts at our LSL scripts [http://www.dazzlesoftware.ca www.dazzlesoftware.ca] Secondlife Open Source Section on Tutorials. | |||
[http://slurl.com/secondlife/Skidz%20Isle/128/128/23 Skidz Isle] | |||
{{LSLC|Library}}{{LSLC|Examples}} | {{LSLC|Library}}{{LSLC|Examples}} | ||
Revision as of 09:52, 6 October 2012
| LSL Portal | Functions | Events | Types | Operators | Constants | Flow Control | Script Library | Categorized Library | Tutorials |
Introduction: Ok you want to create a dialog based menu system, you want to support more than 12 buttons so im going to give you quick overview of basic menu using llRezAtRoot, llGetInventoryName & llGetInventoryNumber
USAGE:just drop objects into the prim and rez them from the dialog by touching the prim.
<lsl> list MENU1 = []; list MENU2 = []; integer listener; integer MENU_CHANNEL = 1000;
Dialog(key id, list menu)
{
llListenRemove(listener); listener = llListen(MENU_CHANNEL, "", NULL_KEY, ""); llDialog(id, "Select one object below: ", menu, MENU_CHANNEL);
}
default {
on_rez(integer num)
{
llResetScript();
}
touch_start(integer total_number)
{
integer i = 0;
MENU1 = [];
MENU2 = [];
integer c = llGetInventoryNumber(INVENTORY_OBJECT);
if (c <= 12)
{
for (; i < c; ++i)
MENU1 += llGetInventoryName(INVENTORY_OBJECT, i);
}
else
{
for (; i < 11; ++i)
MENU1 += llGetInventoryName(INVENTORY_OBJECT, i);
if(c > 22)
c = 22;
for (; i < c; ++i)
MENU2 += llGetInventoryName(INVENTORY_OBJECT, i);
MENU1 += ">>";
MENU2 += "<<";
}
Dialog(llDetectedKey(0), MENU1);
}
listen(integer channel, string name, key id, string message)
{
if (channel == MENU_CHANNEL)
{
llListenRemove(listener);
if (message == ">>")
{
Dialog(id, MENU2);
}
else if (message == "<<")
{
Dialog(id, MENU1);
}
else
{
// todo add offsets so box sites perfect on rezzer
llRezAtRoot(message, llGetPos(), ZERO_VECTOR, llGetRot(), 0);
}
}
}
} </lsl>
For technical support, requests, etc., use the Search under the Groups Tab and search for Skidz Partz - Open Source
If you have any problems getting this script to work either contact me in-world Revolution Perenti or visit our free scripts at our LSL scripts www.dazzlesoftware.ca Secondlife Open Source Section on Tutorials. Skidz Isle