llStartObjectAnimation() & llStopObjectAnimation() does not visually work on Viewer 26.3 Tested with the following script: I_C() { llSetTimerEvent(0.0); llListenRemove(o_listen); while(o_channel == lo_channel) { o_channel = -((integer)llFrand(1000000000.0) + 1000000000); } o_listen = llListen(lo_channel = o_channel,"",owner,""); llSetTimerEvent(300.0); } Target_Dialog_Handling() { if (t_count) { llMessageLinked(LINK_ALL_OTHERS,0,"#close_dialog",""); list T = llGetObjectAnimationNames(); integer i; integer t = llList2Integer([t_count,10],t_count > 12); string display = "Select an animation...\n "; string a; for (; i < t; i++) { if ((t_count > 12) && i && !((t_index + i) % t_count)) { display += "\n---end/start---"; } a = llGetInventoryName(INVENTORY_ANIMATION,(t_index + i) % t_count); display += ("\n" + llList2String([">"," "],llListFindList(T,[a]) == -1) + llList2String(LETTERS,i) + ") " + a); } I_C(); if (t_count > 12) { llDialog(owner,llGetSubString(display,0,510),["J","<<",">>","G","H","I","D","E","F","A","B","C"],o_channel); } else { list BUTTONS = llList2List(LETTERS,0,t_count - 1) + llDeleteSubList([" "," "," "],0,((t_count < 3) * 2) + llList2Integer([2,0,1],t_count % 3)); for (i = 0; i < (llCeil(t_count / 3.0) * 3); i+=3) { BUTTONS = llListInsertList(llDeleteSubList(BUTTONS,-3,-1),llList2List(BUTTONS,-3,-1),i); } llDialog(owner,llGetSubString(display,0,510),BUTTONS,o_channel); } } else { llOwnerSay("No animations found in inventory."); } } Display() { list A; list T; integer i; for (i = -llGetListLength(T = llGetObjectAnimationNames()); i < 0; i++) { if (llGetInventoryType(llList2String(T,i)) == INVENTORY_ANIMATION) { A = (A = []) + A + [llList2String(T,i)]; } } llSetText(llDumpList2String(A,"\n"),<1.0,1.0,1.0>,1.0); } key owner = NULL_KEY; integer o_listen; integer o_channel; integer lo_channel; integer t_index; integer t_count; integer d_text; list LETTERS = ["A","B","C","D","E","F","G","H","I","J","K","L"]; default { state_entry() { owner = llGetOwner(); if (d_text = (integer)llList2String(llParseStringKeepNulls(llToLower(llGetScriptName()),["text="],[]),1)) { Display(); } } on_rez(integer i) { llResetScript(); } touch_end(integer i) { if (llDetectedKey(0) == owner) { t_count = llGetInventoryNumber(INVENTORY_ANIMATION); t_index = 0; Target_Dialog_Handling(); } } listen(integer i, string name, key k, string message) { llSetTimerEvent(0.0); llListenRemove(o_listen); if ((t_count > 12) && ~(i = llListFindList(["<<",">>"],[message]))) { t_index = llList2Integer([(t_count + (t_index - 10)) % t_count,(t_index + 10) % t_count],i); Target_Dialog_Handling(); } else if ((i < t_count) && ~(i = llListFindList(LETTERS,[message]))) { string a = llGetInventoryName(INVENTORY_ANIMATION,(t_index + i) % t_count); if (~llListFindList(llGetObjectAnimationNames(),[a])) { llStopObjectAnimation(a); llOwnerSay(llList2String(["'" + a + "' could NOT be stopped...","Stopping '" + a + "'..."],llListFindList(llGetObjectAnimationNames(),[a]) == -1)); } else { llStartObjectAnimation(a); llOwnerSay(llList2String(["Starting '" + a + "'...","'" + a + "' could NOT be started..."],llListFindList(llGetObjectAnimationNames(),[a]) == -1)); } if (d_text) { Display(); } Target_Dialog_Handling(); } } link_message(integer i, integer ii, string message, key k) { if (message == "#close_dialog") { llSetTimerEvent(0.0); llListenRemove(o_listen); } } timer() { llSetTimerEvent(0.0); llListenRemove(o_listen); llOwnerSay("Your use period has expired."); } } llGetObjectAnimationNames() sees animations start/stop, but Developer > Avatar > Animation Info does not. Teleporting out of the region, waiting for a few minutes then teleporting back shows the character correctly.