User:Ackley Bing/List2DialogButtons
< User:Ackley Bing
Jump to navigation
Jump to search
Revision as of 00:02, 21 May 2016 by Ackley Bing (talk | contribs)
// List2DialogButtons() for llDialog use
// example: llDialog(id,"",List2DialogButtons(Gdummylist,Gindex),1);
// Uses "<<" & ">>" dialog buttons for navigation
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=["1","2","3","4","5","6","7","8","9","10","11","12"];
integer Gindex;
list List2DialogButtons(list chain, integer i)
{
list buttons;
integer j=llGetListLength(chain);
if (j>12)
buttons=
["<<"]
+llList2List(chain,wrap(i+9,j),wrap(i+9,j))
+[">>"]
+llList2List(chain,wrap(i+6,j),wrap(i+8,j))
+llList2List(chain,wrap(i+3,j),wrap(i+5,j))
+llList2List(chain,wrap(i,j),wrap(i+2,j));
else
{
integer k;
do buttons+=llList2List(chain,k,k);
while(++k<j);
}
return buttons;
}
integer wrap(integer x,integer max){return (((x<0)*(x+max))+((x>=0&&x<max)*x)+((x>=max)*(x-max)));}
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 total=llGetListLength(Gdummylist);
Gindex=Gindex+((message==">>")*9)-((message=="<<")*9);
if(Gindex>=total)Gindex=Gindex-total;
else if(Gindex<0)Gindex=total-Gindex-2;
llDialog(llGetOwner()," ",List2DialogButtons(Gdummylist,Gindex),1);
}
else
{
integer find_index=llListFindList(Gdummylist,[message]);
if(~find_index)
{
// action
}
}
}
}