| 
	
			
			
				
			
			
	
	 | 
	 
	
	
	
		
		
		
		
		
		
			
			Bonsoir, 
Merci Xanork, après avoir regardé ton script, je le trouve fort intéressant de part sa construction car il est bien optimisé mais je me sens encore un peu juste pour pouvoir l'adapter à la jarretière !  
De plus j'ai eu la solution en ligne qui ressemble à la tienne mais peut être un peu plus compréhensible pour un débutant et j'ai essayé de l'intégrer dans le script de la jarretière ! (Ta solution me plaît également car en plus il y a la touche "retour").
 
Donc j'ai mon script de la jarretière modifié et j'ai des petits soucis  
-Interférence avec certaines couleurs jarretière/texte.(facile a régler, il me suffit de changer les noms) 
-Tout le menu s'affiche au lieu d'avoir juste "Couleurs","Taille","Billets","Info","Hud Jarretiere","Show Text" j'ai le "Hide Text" et le "Colors Text" qui viennent en même temps alors que cela devrait apparaître qu'après avoir cliqué sur le "Show Text" !
 
Je vais mettre le script d'origine + le script modifié (tout se compile et ça fonctionne presque, je commence à me débrouiller faut que je persévère    )
 
integer ecoute; integer delai = 60; integer canal; string sMessage; vector vColor = <1.0,0.0,0.0>; list menu= ["Hide text","Show Text","Colors Text"]; list lColorMenu = ["Rouge","Vert","Bleu","Blanc","Noir"]; list lVectorColor = [<1.0,0.0,0.0>,<0.0,1.0,0.0>,<0.0,0.0,1.0>,<1.0,1.0,1.0>,<0.0,0.0,0.0>]; string Option_Hide = "Hide text"; string Option_Show = "Show Text"; string Option_Color = "Colors Text";
  resetEcoute() {     llSetTimerEvent(.0);     llListenRemove(ecoute); }
  default {     state_entry()     {         llSetText (sMessage, vColor, 1.0) ;         menu=[Option_Show];     }     touch_start(integer total_number)     {         if (llDetectedKey(0) == llGetOwner())         {             canal = (integer)llFrand(10000000)-10000000;             ecoute = llListen(canal, "", llGetOwner(), "");             llDialog(llGetOwner(), "Cliquez ici", menu, canal);             llSetTimerEvent(delai);         }     }
      listen(integer channel, string name, key id, string message)     {         if (message == "Colors Text")          {             llDialog(llGetOwner(), "Choix de Couleur", lColorMenu, canal);             llSetTimerEvent(delai);         }         else if(~llListFindList(lColorMenu,[message]))         {             integer index = llListFindList(lColorMenu,[message]);             vColor = llList2Vector(lVectorColor,index);             llSetText (sMessage, vColor, 1.0) ;             resetEcoute();         }         else if(message == "Show Text")         {             sMessage = "Tip Jar Jarretiére";             llSetText (sMessage, vColor, 1.0) ;             menu = [Option_Hide]+[Option_Color];             resetEcoute();         }         else if(message == "Hide text")         {             sMessage = "";             llSetText (sMessage, vColor, 1.0) ;             menu=[Option_Show];             resetEcoute();         }     }     timer()     {         resetEcoute();     } } 
 
 
 
Par Rlp (merci à lui)
 
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 lColorMenu = ["Banane","Blanc","Bleu","Jaune","Noir","Rouge","Rose","Vert","Violet"]; list lVectorColor = [<0.890,0.812,0.341>,<1.000,1.000,1.000>,<0.0,0.0,1.0>,<1.000,1.000,0.878>,<0.000,0.000,0.000>,<1.0,0.0,0.0>,<1.000,0.431,0.780>,<0.0,1.0,0.0>,<0.561,0.369,0.600>]; list menu0= ["Banane","Blanc","Bleu","Jaune","Noir","Rouge","Rose","Vert","Violet","Retour"]; list menu1= ["+","-","Retour"]; list menu2= ["1","2","3","4","5","6","Retour"]; list menu_principal= ["Colors Text","Couleurs","Taille","Billets","Info","Hud Jarretiere","Hide text","Show Text"];      //  string Option_Hide = "Hide text"; string Option_Show = "Show text"; string Option_Color = "Colors Text"; 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"]; vector vColor = <1.0,0.0,0.0>; string sMessage;
  default {     state_entry()     {         canal = (integer)llFrand(10000000)-10000000; // canal dynamique pour éviter la communication entre un meme prim identique     }     touch_start(integer total_number)     {         user = llDetectedKey(0);         ecoute = llListen(canal, "", user, ""); // plus de NULL_KEY , on cible l'user. Limitation du lag au moment de l ecoute         if (user == llGetOwner())         {             llDialog(llDetectedKey(0), "Personnalisation de la Jarretiére", menu_principal, canal);   // on precise les menus "menu_pincipal"             llSetTimerEvent(delai);         }     }
      listen(integer channel, string name, key id, string message)     {               if (message == "Colors Text")          {             llDialog(id, "Choix de Couleur", lColorMenu, canal);         }          else 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 == "Taille")         {             llDialog(id, "Réglez votre taille",menu1, 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_principal, canal);          }         else if (message == "retour")         {              llDialog(id,"Choisissez une couleur", menu0, canal);          }         else if(~llListFindList(lColorMenu,[message]))         {             integer index = llListFindList(lColorMenu,[message]);             vColor = llList2Vector(lVectorColor,index);             llSetText (sMessage, vColor, 1.0) ;             llSetTimerEvent(0.0);                            llListenRemove(ecoute);          }         else if(message == "Show Text")         {             sMessage = "Tip Jar Jarretiére";             llSetText (sMessage, vColor, 1.0) ;                          llSetTimerEvent(0.0);                            llListenRemove(ecoute);          }         else if(message == "Hide text")         {             sMessage = "";             llSetText (sMessage, vColor, 1.0) ;                          llSetTimerEvent(0.0);                            llListenRemove(ecoute);          }          else if (message == "Banane")         {             llSetColor(<0.890,0.812,0.341>, ALL_SIDES);             llSetTimerEvent(0.0);                            llListenRemove(ecoute);             // on arrete l'ecoute et le Timer après avoir executer la Fonction.         }         else if (message == "Antique")         {             llSetColor(<0.980,0.922,0.843>, ALL_SIDES);             llSetTimerEvent(0.0);             llListenRemove(ecoute);             //idem         }         else if (message == "Ivoire")         {             llSetColor(<1.000,1.000,0.941>, ALL_SIDES);             llSetTimerEvent(0.0);             llListenRemove(ecoute);             //idem         }         else if (message == "Blank")         {             llSetColor(<1.000,1.000,1.000>, ALL_SIDES);             llSetTimerEvent(0.0);             llListenRemove(ecoute);             //idem         }        else if (message == "B.Clair")         {             llSetColor(<0.690,0.878,0.902>, ALL_SIDES);             llSetTimerEvent(0.0);             llListenRemove(ecoute);             //idem         }         else if (message == "Turquoise")         {             llSetColor(<0.000,0.780,0.549>, ALL_SIDES);             llSetTimerEvent(0.0);             llListenRemove(ecoute);             //idem         }         else if (message == "Nuit")         {             llSetColor(<0.098,0.098,0.439>, ALL_SIDES);             llSetTimerEvent(0.0);             llListenRemove(ecoute);             //idem         }         else if (message == "J.Clair")         {             llSetColor(<1.000,1.000,0.878>, ALL_SIDES);             llSetTimerEvent(0.0);             llListenRemove(ecoute);             //idem         }         else if (message == "Pop-Corn")         {             llSetColor(<1.000,1.000,0.667>, ALL_SIDES);             llSetTimerEvent(0.0);             llListenRemove(ecoute);             //idem         }         else if (message == "Citron")         {             llSetColor(<1.000,0.890,0.012>, ALL_SIDES);             llSetTimerEvent(0.0);             llListenRemove(ecoute);             //idem         }         else if (message == "Noir")         {             llSetColor(<0.000,0.000,0.000>, ALL_SIDES);             llSetTimerEvent(0.0);             llListenRemove(ecoute);             //idem         }         else if (message == "Rouges")         {             llSetColor(<1.000,0.000,0.000>, ALL_SIDES);             llSetTimerEvent(0.0);             llListenRemove(ecoute);             //idem         }         else if (message == "Cerise")         {             llSetColor(<0.200,0.000,0.000>, ALL_SIDES);             llSetTimerEvent(0.0);             llListenRemove(ecoute);             //idem         }         else if (message == "Indien")         {             llSetColor(<0.690,0.090,0.122>, ALL_SIDES);             llSetTimerEvent(0.0);             llListenRemove(ecoute);             //idem         }         else if (message == "R.Clair")         {             llSetColor(<1.000,0.431,0.780>, ALL_SIDES);             llSetTimerEvent(0.0);             llListenRemove(ecoute);             //idem         }         else if (message == "Broadway")         {             llSetColor(<1.000,0.000,0.400>, ALL_SIDES);             llSetTimerEvent(0.0);             llListenRemove(ecoute);             //idem         }         else if (message == "Mat")         {             llSetColor(<1.000,0.800,0.800>, ALL_SIDES);             llSetTimerEvent(0.0);             llListenRemove(ecoute);             //idem         }         else if (message == "V.Clair")         {             llSetColor(<0.596,0.984,0.596>, ALL_SIDES);             llSetTimerEvent(0.0);             llListenRemove(ecoute);             //idem         }         else if (message == "Olive")         {             llSetColor(<0.310,0.310,0.184>, ALL_SIDES);             llSetTimerEvent(0.0);             llListenRemove(ecoute);             //idem         }         else if (message == "Pin")         {             llSetColor(<0.000,0.200,0.000>, ALL_SIDES);             llSetTimerEvent(0.0);             llListenRemove(ecoute);             //idem         }         else if (message == "Violette")         {             llSetColor(<0.561,0.369,0.600>, ALL_SIDES);             llSetTimerEvent(0.0);             llListenRemove(ecoute);             //idem         }         else if (message == "Outremer")         {             llSetColor(<0.361,0.141,0.431>, ALL_SIDES);             llSetTimerEvent(0.0);             llListenRemove(ecoute);             //idem         }         else if (message == "Sombre")         {             llSetColor(<0.529,0.122,0.471>, ALL_SIDES);             llSetTimerEvent(0.0);             llListenRemove(ecoute);             //idem         }         else if (message == "+")         {             llMessageLinked(LINK_SET,0,"+",NULL_KEY);             llSetScale(llGetScale()+<0.0,0.02,0.02>);             llSetTimerEvent(0.0);             llListenRemove(ecoute);             //idem         }         else if (message == "-")         {             llMessageLinked(LINK_SET,0,"-",NULL_KEY);             llSetScale(llGetScale()-<0.0,0.02,0.02>);             llSetTimerEvent(0.0);             llListenRemove(ecoute);             //idem         }         else if (message == "1")         {             if(on)             {                 llSetLinkAlpha(2,1.0,1-3);             }             else             {                 llSetLinkAlpha(2,0.0,ALL_SIDES);             }             on=!on;             llSetTimerEvent(0.0);             llListenRemove(ecoute);             //idem         }         else if (message == "2")         {             if(ok)             {                 llSetLinkAlpha(3,1.0,1-3);             }             else             {                 llSetLinkAlpha(3,0.0,ALL_SIDES);             }             ok=!ok;             llSetTimerEvent(0.0);             llListenRemove(ecoute);             //idem         }         else if (message == "3")         {             if(go)             {                 llSetLinkAlpha(4,1.0,1-3);             }             else             {                 llSetLinkAlpha(4,0.0,ALL_SIDES);             }             go=!go;             llSetTimerEvent(0.0);             llListenRemove(ecoute);             //idem         }         else if (message == "4")         {             if(ja)             {                 llSetLinkAlpha(5,1.0,1-3);             }             else             {                 llSetLinkAlpha(5,0.0,ALL_SIDES);             }             ja=!ja;             llSetTimerEvent(0.0);             llListenRemove(ecoute);             //idem         }         else if (message == "5")         {             if(vi)             {                 llSetLinkAlpha(6,1.0,ALL_SIDES);             }             else             {                 llSetLinkAlpha(6,0.0,ALL_SIDES);             }             vi=!vi;             llSetTimerEvent(0.0);             llListenRemove(ecoute);             //idem         }         else if (message == "6")         {             if(oui)             {                 llSetLinkAlpha(7,1.0,ALL_SIDES);             }             else             {                 llSetLinkAlpha(7,0.0,ALL_SIDES);             }             oui=!oui;             llSetTimerEvent(0.0);             llListenRemove(ecoute);             //idem         }         else if (message == "Info")         {             llGiveInventory(id, "Info");             llSetTimerEvent(0.0);             llListenRemove(ecoute);             //idem         }         else if (message == "Hud Jarretiere")         {             llGiveInventory(id, "Hud Jarretiere");             llSetTimerEvent(0.0);             llListenRemove(ecoute);             //idem         }              }
      timer()     {         llSetTimerEvent(0.0);         llListenRemove(ecoute);     }     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();         }     }     on_rez(integer i) // lors de la pose de l objet au sol , on reset pour modifier le canal dynamique     {         llResetScript();     } } 
 
 
 
Voila je l'ai pas mal torturer avant de le poster et d'arriver à un résultat presque satisfaisant... 
Merci de votre aide, ce qui me permet d'avancer dans mon apprentissage !
   EDIT : je suis maladroit ou tête en l'air ou bien les 2, je ne sais pas mais je viens de me rendre compte d'une boulette que je vais corriger et je vous tiens au courant !!!
		  
		
		
		
		
		
		
		
			
		
		
		
		
		
		
		
	 |