Difference between revisions of "Inventory Based Menu"
(Created page with '{{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...') |
|||
Line 76: | Line 76: | ||
</lsl> | </lsl> | ||
For technical support, requests, etc., use the Search under the Groups Tab and search for | 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 | 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 | or visit our free scripts at our LSL scripts [http://www.dazzlemods.com www.dazzlemods.com] Open Source Section on our forum. | ||
[http://slurl.com/secondlife/ | [http://slurl.com/secondlife/Skidz%20Isle/128/128/23 Skidz Isle] | ||
{{LSLC|Library}}{{LSLC|Examples}} | {{LSLC|Library}}{{LSLC|Examples}} |
Revision as of 21:00, 11 August 2010
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.dazzlemods.com Open Source Section on our forum. Skidz Isle