Difference between revisions of "User:Ackley Bing/List2DialogButtons"
Jump to navigation
Jump to search
Ackley Bing (talk | contribs) |
Ackley Bing (talk | contribs) |
||
(3 intermediate revisions by the same user not shown) | |||
Line 3: | Line 3: | ||
// example: llDialog(id,"",List2DialogButtons(Gdummylist,Gindex),1); | // example: llDialog(id,"",List2DialogButtons(Gdummylist,Gindex),1); | ||
// Uses "<<" & ">>" dialog buttons for navigation | // Uses "<<" & ">>" dialog buttons for navigation | ||
// Thanks to NovaConvair and Wherorangi for help with math equations. | |||
list Gdummylist=["a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z"]; | list Gdummylist=["a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z"]; | ||
integer Gindex; | integer Gindex; | ||
list List2DialogButtons(list chain, integer i) | list List2DialogButtons(list chain, integer i) | ||
Line 11: | Line 11: | ||
integer j=llGetListLength(chain); | integer j=llGetListLength(chain); | ||
if (j>12) | if (j>12) | ||
buttons= | buttons = | ||
["<<",llList2String(chain,(i+9)%j),">>"] | |||
+ wrap(chain,(i+6)%j,(i+8)%j) | |||
+ wrap(chain,(i+3)%j,(i+5)%j) | |||
+ wrap(chain,i,(i+2)%j); | |||
else | else | ||
{ | { | ||
Line 26: | Line 24: | ||
return buttons; | return buttons; | ||
} | } | ||
list wrap(list c, integer x, integer y) | |||
{ | |||
if(x<=y) return llList2List(c, x, y); | |||
return llList2List(c,x,-1)+llList2List(c,0,y); | |||
} | |||
default | default | ||
{ | { | ||
Line 42: | Line 44: | ||
if(message=="<<"|message==">>") | if(message=="<<"|message==">>") | ||
{ | { | ||
integer | integer j=llGetListLength(Gdummylist); | ||
if (message=="<<") Gindex=(Gindex-10)%j; | |||
else if (message==">>") Gindex=(Gindex+10)%j; | |||
else if( | |||
llDialog(llGetOwner()," ",List2DialogButtons(Gdummylist,Gindex),1); | llDialog(llGetOwner()," ",List2DialogButtons(Gdummylist,Gindex),1); | ||
} | } | ||
Line 53: | Line 54: | ||
if(~find_index) | if(~find_index) | ||
{ | { | ||
// | llOwnerSay(message); | ||
//actions... | |||
} | } | ||
} | } |
Latest revision as of 21:34, 23 May 2016
// List2DialogButtons() for llDialog use
// example: llDialog(id,"",List2DialogButtons(Gdummylist,Gindex),1);
// Uses "<<" & ">>" dialog buttons for navigation
// Thanks to NovaConvair and Wherorangi for help with math equations.
list Gdummylist=["a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z"];
integer Gindex;
list List2DialogButtons(list chain, integer i)
{
list buttons;
integer j=llGetListLength(chain);
if (j>12)
buttons =
["<<",llList2String(chain,(i+9)%j),">>"]
+ wrap(chain,(i+6)%j,(i+8)%j)
+ wrap(chain,(i+3)%j,(i+5)%j)
+ wrap(chain,i,(i+2)%j);
else
{
integer k;
do buttons+=llList2List(chain,k,k);
while(++k<j);
}
return buttons;
}
list wrap(list c, integer x, integer y)
{
if(x<=y) return llList2List(c, x, y);
return llList2List(c,x,-1)+llList2List(c,0,y);
}
default
{
state_entry()
{
llListen(1,"",llGetOwner(),"");
}
touch_start(integer index)
{
Gindex=0;
llDialog(llGetOwner()," ",List2DialogButtons(Gdummylist,Gindex),1);
}
listen(integer channel, string name, key id, string message)
{
if(message=="<<"|message==">>")
{
integer j=llGetListLength(Gdummylist);
if (message=="<<") Gindex=(Gindex-10)%j;
else if (message==">>") Gindex=(Gindex+10)%j;
llDialog(llGetOwner()," ",List2DialogButtons(Gdummylist,Gindex),1);
}
else
{
integer find_index=llListFindList(Gdummylist,[message]);
if(~find_index)
{
llOwnerSay(message);
//actions...
}
}
}
}