<CODE>
float time = 30;
integer channel = -1; //Initial communication channel
integer perm; //Permission to animate AV
integer totalAnima; // Total number of animations
list animaList; // List of animations
list main_menu;
list menu1;
list menu2;
list menu3;
integer next;
integer back;
string animaName; // Name of the current animation
string animaNew; // Name of next animation
init()
{
if(llGetInventoryNumber(INVENTORY_ANIMATION) == 0)//Make sure we actually got something to pose with.
{
llWhisper(0,"Error: No animation found. Cannot pose."
;animaNew = "sit";
}
else
{
totalAnima = llGetInventoryNumber(INVENTORY_ANIMATION);
// llOwnerSay((string) totalAnima + "*"
;animaList = [];
integer i;
for(i=0;i< totalAnima; i++)
{
animaList=animaList+llGetInventoryName(INVENTORY_ANIMATION,i);
}
if(totalAnima <= 11)
{
//llOwnerSay((string)llGetListLength(animaList));
//llOwnerSay((string) totalAnima);
//llOwnerSay("menu1"
;menu1 = llList2List(animaList,0,-1);
menu1 = menu1 + ["Main"];
menu2 = [];
menu3 = [];
}
if(totalAnima > 11 & totalAnima <= 1

{
//llOwnerSay("menu2"
;menu1 = llList2List(animaList,0,
;menu1 = menu1 + ["Next","Back","Main"];
menu2 = llList2List(animaList,9,-1);
menu2 = menu2 + ["Back","Main"];
menu3 = [];
}
if(totalAnima > 1

{
//llOwnerSay("menu3"
; menu1 = llList2List(animaList,0,
;menu1 = menu1 + ["Next","Back","Main"];
//llOwnerSay((string)llGetListLength(menu1));
menu2 = llList2List(animaList,9,17);
menu2 = menu2 + ["Next","Back","Main"];
//llOwnerSay((string)llGetListLength(menu2));
menu3 = llList2List(animaList,22,-1);
menu3 = menu3 + ["Back","Main"];
//llOwnerSay((string)llGetListLength(menu3));
}
if(totalAnima > 2

{
llOwnerSay("Only the first " + llGetObjectName() + " are available!"
;}
}
}
avActions()
{
if(animaNew !=""

{
llStopAnimation(animaName);
llSleep(0.5);
}
llOwnerSay(animaNew);
llStartAnimation(animaNew);
animaName = animaNew;
}
default
{
on_rez(integer prim_params)
{
llResetScript();
}
state_entry()
{
llRequestPermissions(llGetOwner(),PERMISSION_TRIGGER_ANIMATION | PERMISSION_ATTACH);
llListen(channel, "", llGetOwner(), ""
;init();
}
listen(integer channel, string name, key id, string message)
{
//llOwnerSay(name + " " + message);
if(id == llGetOwner())
{
llStopAnimation(llGetAnimation(llGetOwner()));
message = (string) message;
//llOwnerSay("M "+message);
integer index = llListFindList(animaList, [message]);
//llOwnerSay("Index " + (string)index);
if(index != -1)
{
llStopAnimation(llGetAnimation(llGetOwner()));
animaNew = llList2String(animaList, index);
llOwnerSay(animaNew);
//ll(llGetOwner(), "1Choose Animation", menu1, channel);
next = 0;
llSetTimerEvent(10); ///8888888888888888888
avActions();
return;
}
if(message == "Next"

{
next = next + 1;
if( next == 1)
{
llStopAnimation(llGetAnimation(llGetOwner()));
llDialog(llGetOwner(), "Choose Animation", menu2, channel);
return;
}
if( next == 2)
{
llDialog(llGetOwner(),"Choose Animation",menu3,channel);
return;
}
}
if(message == "Back"

{
llDialog(llGetOwner(),"Choose Animation", menu1, channel);
return;
}
if( message == "Main"

{
llMessageLinked(LINK_SET,0,llToUpper(message),NULL_KEY);
}
}
}
changed(integer change)
{
if(change == CHANGED_INVENTORY)
{
llOwnerSay("Script Reset"
;init();
}
}
run_time_permissions(integer perm)
{
if(perm & PERMISSION_ATTACH)
{
llAttachToAvatar(ATTACH_LHIP);
}
}
attach(key attached)
{
if (attached != NULL_KEY) // object has been //attached//
{
llSetTimerEvent(time);
}
else // object has been detached
{
if (llGetPermissionsKey() != NULL_KEY)
{
llStopAnimation(animaNew);
llSetTimerEvent(0.0);
}
}
}
link_message(integer sender_number,integer num,string str, key id)
{
if(sender_number == 1)
if(str == llGetLinkName(llGetLinkNumber()))
{
llDialog(llGetOwner(),"Choose Animation", menu1, channel);
}
}
timer()
{
llStopAnimation(animaName);
}
}
</CODE>
Seagel Neville