|
Bonsoir,
Je reviens avec un petit soucis et je me suis creusé car au départ c'était la cata  mais je me suis repris pour éviter de refaire la même erreur et de poster un script rempli d'erreurs et d'incohérence !
Donc j'ai mon script du hud qui a toute les options utile et je veux rajouter le script pour les animations ! Donc je l'ai intégrer, le script se compile !
Ou cela se complique c'est que pour commander les options cela se fait par des boutons ---> explications : Hud H + 4 boutons A, B, C et D; dans H le script "final" et dans les boutons A, B, C et D un script de commande. C'est un link message qui permet de commander les différentes options présent dans H dans un script unique ! Clique sur A ---> Animation, sur B ---> 1 option et ainsi de suite ! (Pas facile à expliquer, j'espère que vous arrivez à suivre  !)
Le soucis c'est que lorsque je clique sur le bouton A animation j'ai la petite icône d'erreur de script avec comme explication : "Could not find animation", il ne trouve pas d'animation or il y en a bien une dans l'inventaire de l'objet !
Le soucis vient plutôt du bouton même si celui ci communique bien avec le script "final" ! Il ne doit pas manquer grand chose mais j'ai eu beau creuser, je bloque !
Voici les scripts :
Le bouton A :
default { touch_start(integer detected) { llMessageLinked(LINK_ROOT,-1818,"",""); } }
et le script "final":
key kOwner; integer iEcoute; integer fDelai = 60; integer iCanal; integer iNbAnim; list lAnims; string sNEXT = ">>"; string sPREV = "<<"; string STOP = "STOP"; string sTEXTE = "Choisissez votre anim : "; float fTIMEOUT = 30.0; // Délai pour réponse au menu string sAnimPrecedente; integer iIndexMenu; key Owner;key user; integer vi; integer oui; integer on; integer ok; integer go; integer ja; integer ecoute; integer delai = 60; integer canal; // < plus de canal defini list menu0= ["Banane","Blanc","Bleu","Jaune","Noir","Rouge","Rose","Vert","Violet","Retour"]; list menu2= ["1","2","3","4","5","6","Retour"]; list menu_pincipal= ["Couleurs","Billets"]; // / list blanc= ["Antique","Ivoire","retour","Blank"]; list bleu= ["B.Clair","Turquoise","retour","Nuit"]; list jaune= ["J.Clair","Pop-Corn","retour","Citron"]; list rouge= ["Rouges","Cerise","retour","Indien"]; list rose= ["R.Clair","Broadway","retour","Mat"]; list vert= ["V.Clair","Olive","retour","Pin"]; list violet= ["Violette","Outremer","retour","Sombre"]; integer chang; init() { llRequestPermissions(llGetOwner(), PERMISSION_TRIGGER_ANIMATION); kOwner = llGetOwner(); llOwnerSay("ready"); }
FaireList() { integer i; iNbAnim = llGetInventoryNumber(INVENTORY_ANIMATION); lAnims = [STOP]; for(i=0; i<iNbAnim; ++i) { string nom_anim = llGetInventoryName(INVENTORY_ANIMATION, i); if (llStringLength(nom_anim) < 24) lAnims += [nom_anim]; else llOwnerSay("l'anim \"" + nom_anim + "\"porte un nom trop long et ne sera pas prise en compte"); } } navigation(string browse) { // Nombre de boutons integer n = llGetListLength(lAnims); // Navigation simple pour deux pages if(n < 23) { if(iIndexMenu) iIndexMenu = 0; else iIndexMenu = 11;} // Navigation riche pour plus de deux pages else { if(browse == sNEXT) { iIndexMenu += 10; if(iIndexMenu >= n) iIndexMenu = 0;} else { iIndexMenu -= 10; if(iIndexMenu < 0) iIndexMenu = n - n % 10;} } // Envoi du menu Menu(); }
// -- Gestion de l'index des boutons du menu -- // @ param [string] bouton de déplacement GestIndexBoutons(string browse) { // Nombre de boutons integer n = llGetListLength(lAnims); // Navigation simple pour deux pages if(n < 23) { if(iIndexMenu) iIndexMenu = 0; else iIndexMenu = 11;} // Navigation riche pour plus de deux pages else { if(browse == sNEXT) { iIndexMenu += 10; if(iIndexMenu >= n) iIndexMenu = 0;} else { iIndexMenu -= 10; if(iIndexMenu < 0) iIndexMenu = n - n % 10;} } // Envoi du menu Menu(); }
// -- Gestion menu -- Menu() { llSetTimerEvent(fTIMEOUT); iCanal = (integer)llFrand(-100000); iEcoute = llListen(iCanal, "", kOwner, ""); // Liste globale des boutons list lBoutons = lAnims; // Nombre total de boutons integer n = llGetListLength(lAnims); // Si plusieurs pages if(n > 12) { // Que 2 pages -> navigation simple if(n < 23) { // Deuxième page if(iIndexMenu) lBoutons = [sPREV] + llList2List(lAnims, iIndexMenu, -1); // Première page else lBoutons = llList2List(lAnims, 0, 1) + [sNEXT] + llList2List(lAnims, 2, 10);} // Plus de 2 pages -> navigation riche else { list l = [sPREV, llList2String(lAnims, iIndexMenu), sNEXT]; // Première page ou page intermédiaire if(n - iIndexMenu > 10) lBoutons = l + llList2List(lAnims, iIndexMenu + 1, iIndexMenu + 9); // Dernière page else { if(iIndexMenu + 1 < n) lBoutons = l + llList2List(lAnims, iIndexMenu + 1, -1); else lBoutons = l;} } } // Envoi du menu llDialog(kOwner, sTEXTE, lBoutons, iCanal); }
cancelMenu() { llSetTimerEvent(0.0); llListenRemove(iEcoute); } finMenu() { llOwnerSay("trop tard. Menu desactivé"); cancelMenu(); } PlayAnim(string anim) { if(sAnimPrecedente != "") llStopAnimation(sAnimPrecedente); llOwnerSay(anim); if(anim != STOP) { llStartAnimation(anim); sAnimPrecedente = anim; } else sAnimPrecedente = ""; } default { state_entry() { llRequestPermissions(llGetOwner(), PERMISSION_TRIGGER_ANIMATION); } attach(key id) { llRequestPermissions(llGetOwner(), PERMISSION_TRIGGER_ANIMATION); } run_time_permissions(integer perm) { if (perm & PERMISSION_TRIGGER_ANIMATION) { state marche; } } } state marche { state_entry() { canal = (integer)llFrand(10000000)-10000000; // canal dynamique pour éviter la communication entre un meme prim identique } link_message(integer sender_number, integer number, string message, key id) // on recupere le message et la clef UUID (voir la suite) { if(message=="menu") // condition sur le message entrant { user = id; ecoute = llListen(canal, "", user, ""); // plus de NULL_KEY , on cible l'user. Limitation du lag au moment de l ecoute if (user == llGetOwner()) { llDialog(user, "Personnalisation de la Jarretiére", menu_pincipal, canal); // on precise les menus "menu_pincipal" llSetTimerEvent(delai); } } else if(number==-1818) { if(~llListFindList([sNEXT, sPREV], [message])) { navigation(message); } else { cancelMenu(); PlayAnim(message); } } else if(number==-1919) { if (llGetInventoryNumber(INVENTORY_NOTECARD) > 0) { llGiveInventory(id, llGetInventoryName(INVENTORY_NOTECARD, 0)); } } } listen(integer channel, string name, key id, string message) { if (message == "Couleurs") { llDialog(id, "Choisissez une Couleur",menu0, canal); // pas d'arret de l'ecoute et du timer , on en a encore besoin } else if (message == "Blanc") { llDialog(id, "Choisissez une Couleur",blanc, canal); // idem } else if (message == "Bleu") { llDialog(id, "Choisissez une Couleur",bleu, canal); // idem } else if (message == "Jaune") { llDialog(id, "Choisissez une Couleur",jaune, canal); // idem } else if (message == "Rouge") { llDialog(id, "Choisissez une Couleur",rouge, canal); // idem } else if (message == "Rose") { llDialog(id, "Choisissez une Couleur",rose, canal); // idem } else if (message == "Vert") { llDialog(id, "Choisissez une Couleur",vert, canal); // idem } else if (message == "Violet") { llDialog(id, "Choisissez une Couleur",violet, canal); // idem } else if (message == "Billets") { llDialog(id, "Nombre de billets visibles",menu2, canal); // idem } else if (message == "Retour") { llDialog(id,"Personnalisation de la jarretiére", menu_pincipal, canal); } else if (message == "retour") { llDialog(id,"Choisissez une couleur", menu0, canal); } else if (message == "Banane") { llSay(10,"Banane"); llSetTimerEvent(0.0); llListenRemove(ecoute); // on arrete l'ecoute et le Timer apres avoir executer la Fonction. } else if (message == "Antique") { llSay(10,"Antique"); llSetTimerEvent(0.0); llListenRemove(ecoute); //idem } else if (message == "Ivoire") { llSay(10,"Ivoire"); llSetTimerEvent(0.0); llListenRemove(ecoute); //idem } else if (message == "Blank") { llSay(10,"Blank"); llSetTimerEvent(0.0); llListenRemove(ecoute); //idem } else if (message == "B.Clair") { llSay(10,"B.Clair"); llSetTimerEvent(0.0); llListenRemove(ecoute); //idem } else if (message == "Turquoise") { llSay(10,"Turquoise"); llSetTimerEvent(0.0); llListenRemove(ecoute); //idem } else if (message == "Nuit") { llSay(10,"Nuit"); llSetTimerEvent(0.0); llListenRemove(ecoute); //idem } else if (message == "J.Clair") { llSay(10,"J.Clair"); llSetTimerEvent(0.0); llListenRemove(ecoute); //idem } else if (message == "Pop-Corn") { llSay(10,"Pop-Corn"); llSetTimerEvent(0.0); llListenRemove(ecoute); //idem } else if (message == "Citron") { llSay(10,"Citron"); llSetTimerEvent(0.0); llListenRemove(ecoute); //idem } else if (message == "Noir") { llSay(10,"Noir"); llSetTimerEvent(0.0); llListenRemove(ecoute); //idem } else if (message == "Rouges") { llSay(10,"Rouges"); llSetTimerEvent(0.0); llListenRemove(ecoute); //idem } else if (message == "Cerise") { llSay(10,"Cerise"); llSetTimerEvent(0.0); llListenRemove(ecoute); //idem } else if (message == "Indien") { llSay(10,"Indien"); llSetTimerEvent(0.0); llListenRemove(ecoute); //idem } else if (message == "R.Clair") { llSay(10,"R.Clair"); llSetTimerEvent(0.0); llListenRemove(ecoute); //idem } else if (message == "Broadway") { llSay(10,"Broadway"); llSetTimerEvent(0.0); llListenRemove(ecoute); //idem } else if (message == "Mat") { llSay(10,"Mat"); llSetTimerEvent(0.0); llListenRemove(ecoute); //idem } else if (message == "V.Clair") { llSay(10,"V.Clair"); llSetTimerEvent(0.0); llListenRemove(ecoute); //idem } else if (message == "Olive") { llSay(10,"Olive"); llSetTimerEvent(0.0); llListenRemove(ecoute); //idem } else if (message == "Pin") { llSay(10,"Pin"); llSetTimerEvent(0.0); llListenRemove(ecoute); //idem } else if (message == "Violette") { llSay(10,"Violette"); llSetTimerEvent(0.0); llListenRemove(ecoute); //idem } else if (message == "Outremer") { llSay(10,"Outremer"); llSetTimerEvent(0.0); llListenRemove(ecoute); //idem } else if (message == "Sombre") { llSay(10,"Sombre"); llSetTimerEvent(0.0); llListenRemove(ecoute); //idem } else if (message == "1") { if(on) { llSay(10,"1"); } else { llSay(10,"1"); } on=!on; llSetTimerEvent(0.0); llListenRemove(ecoute); //idem } else if (message == "2") { if(ok) { llSay(10,"2"); } else { llSay(10,"2"); } ok=!ok; llSetTimerEvent(0.0); llListenRemove(ecoute); //idem } else if (message == "3") { if(go) { llSay(10,"3"); } else { llSay(10,"3"); } go=!go; llSetTimerEvent(0.0); llListenRemove(ecoute); //idem } else if (message == "4") { if(ja) { llSay(10,"4"); } else { llSay(10,"4"); } ja=!ja; llSetTimerEvent(0.0); llListenRemove(ecoute); //idem } else if (message == "5") { if(vi) { llSay(10,"5"); } else { llSay(10,"5"); } vi=!vi; llSetTimerEvent(0.0); llListenRemove(ecoute); //idem } else if (message == "6") { if(oui) { llSay(10,"6"); } else { llSay(10,"6"); } oui=!oui; llSetTimerEvent(0.0); llListenRemove(ecoute); //idem } init(); // oups, faut pas oublier l'init() /me se tappe sur la tete FaireList(); } changed(integer chang) // lors de la vente de l objet , on reset le script pour prendre en compte le nouveau Owner (l'ecoute) { if(chang & CHANGED_OWNER) { llResetScript(); } if (chang & CHANGED_INVENTORY) // si on change le contenu de l'inventaire, on relit la notecard { FaireList(); } }
timer() { llSetTimerEvent(0.0); llListenRemove(ecoute); } on_rez(integer i) // lors de la pose de l objet au sol , on reset pour modifier le canal dynamique { llResetScript(); } }
Voila si une personne peut jeter un oeil et me donner une solution, je l'en remercie car là je ne vois pas ou ça coince  !
Bonne soirée...
|