currently using as animator script I manipulated for playing a guitar when worn. Touch start starts the anim fine just want a touch stop & reset so it will stop when touched & start again on touch. This was a free script I picked up somewhere and was manipulating to run my anim would like to keep most of it since it has multiple anim potential ( I delected all the anims that were in the script initially and added the reset at the end), any help would be greatly appreciated;
//integer gToggle = 0;
integer gAnimNumber;
integer gTotalAnims;
integer gTotalAnims2;
integer gInList2;
string gAnimName = "guitar3Relaxed";
list gAnimations = [ "guitar3Relaxed"];
list gAnimations2 = [];
default {
state_entry() {
//llSay(0, "Init..."
;llRequestPermissions(llGetOwner(), PERMISSION_TRIGGER_ANIMATION);
gTotalAnims = llGetListLength(gAnimations);
gTotalAnims2 = llGetListLength(gAnimations2);
gAnimNumber = -1;
gInList2 = FALSE;
llListen(0, "", llGetOwner(), ""
;}
on_rez(integer param) {
llGiveInventory(llGetOwner(), "Animation Names"
;llResetScript();
}
listen(integer channel, string name, key id, string mesg) {
string preamble = llGetSubString(mesg, 0, 3);
if (preamble != "anim" && preamble != "stop"

return;
integer perm = llGetPermissions();
if ( !(perm & PERMISSION_TRIGGER_ANIMATION)) {
llRequestPermissions(llGetOwner(), PERMISSION_TRIGGER_ANIMATION);
return;
}
list parsed = llParseString2List(mesg, [ "" ], []);
//llSay(0, (string)parsed);
string anim = llList2String(parsed, 1);
if (preamble == "stop"
{//llSay(0, "Stopping: " + llGetAnimation(llGetOwner()));
//llStopAnimation(llGetAnimation(llGetOwner()));
if (anim == ""

anim = gAnimName;
if (anim == "all"
{integer i;
llSay(0, "Stoping"
;for (i=0; i<gTotalAnims; i++)
llStopAnimation(llList2String(gAnimations, i));
for (i=0; i<gTotalAnims2; i++)
llStopAnimation(llList2String(gAnimations2, i));
llSay(0, "Done."
;return;
}
//llSay(0, "Stopping: " + anim);
llStopAnimation(anim);
return;
}
gAnimName = anim;
//llSay(0, "Animation: " + gAnimName);
llStartAnimation(gAnimName);
}
run_time_permissions(integer perm) {
//llStopAnimation(gAnimName);
//gToggle = 0;
}
attach(key id) {
integer perm = llGetPermissions();
if (id != NULL_KEY) {
if (! (perm & PERMISSION_TRIGGER_ANIMATION)) {
llRequestPermissions(llGetOwner(), PERMISSION_TRIGGER_ANIMATION);
}
}
else {
if (perm & PERMISSION_TRIGGER_ANIMATION) {
llStopAnimation(gAnimName);
}
}
}
touch_start(integer total_number) {
if (llDetectedKey(0) != llGetOwner())
return;
integer perm = llGetPermissions();
if (perm & PERMISSION_TRIGGER_ANIMATION) {
if (gAnimNumber != -1) {
if (gInList2)
llStopAnimation( llList2String(gAnimations2, gAnimNumber) );
else
llStopAnimation( llList2String(gAnimations, gAnimNumber) );
}
gAnimNumber++;
if (gInList2) {
if (gAnimNumber == gTotalAnims2) {
gAnimNumber = 0;
gInList2 = FALSE;
}
}
else {
if (gAnimNumber == gTotalAnims) {
gAnimNumber = 0;
gInList2 = TRUE;
}
}
if (gInList2)
gAnimName = llList2String(gAnimations2, gAnimNumber);
else
gAnimName = llList2String(gAnimations, gAnimNumber);
llStartAnimation( gAnimName );
llSay(0, "Animation: " + gAnimName);
}
else {
llRequestPermissions(llGetOwner(), PERMISSION_TRIGGER_ANIMATION);
}
{
llResetScript();
}
}
}
