[Résolu] [Aide] Customisation de boite à dialogue !

Répondre
Partager Rechercher
Bonsoir,

Maintenant que j'arrive à créer mes boites à dialogue, j'aimerai aller plus loin ! Je veux customiser la boite à dialogue, c'est à dire par exemple, on clique sur un objet et on as une boite à dialogue qui apparaît avec un bouton "open", lorsque l'on clique dessus il y a une action qui se fait et lorsque l'on reclique sur l'objet on a cette fameuse boite à dialogue qui réapparaît avec un bouton écrit "close" !

Je sais pas si c'est très clair mais en résumer, un bouton pour 2 actions avec 2 intitulés ("Open" et "Close").

J'ai écrit le script mais j'ai un soucis lorsque je clique sur "Open", la boite à dialogue réapparaît avec le bouton "close" aussitôt...

Voici le script :

Code PHP:

key owner;
key user;
integer ecoute;
integer delai 60;
integer canal;
list 
menu0= ["Open"];          
list 
menu1= ["Close"];              
      

default
{
    
state_entry()
    {
        
canal = (integer)llFrand(10000000)-10000000
    }
    
touch_start(integer total_number)
    {
        
user llDetectedKey(0);
        
ecoute llListen(canal""user""); 
        if (
user == llGetOwner())
        {
            
llDialog(llDetectedKey(0), "Cliquez ici"menu0canal); 
            
llSetTimerEvent(delai);
        }
    }

    
listen(integer channelstring namekey idstring message)
    {
        if (
message == "Open")
        {
            
llSay (0,"ok");
            
llDialog(id"Cliquez ici",menu1canal); 
        }
        else if (
message == "Close")
        {
            
llSay(0,"ok");
            
llDialog(id"Cliquez ici",menu0canal); 
        }
         }
    
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();
    }

Il me manque quelque chose entre les deux menus !
Si vous pouviez m'éclairer un peu, je vous remercie !
__________________
Le fait que le monde soit peuplé de crétins permet à chacun de nous de ne pas se faire remarquer
http://yelims2.free.fr/Drapeaux/DrapeauBretagne.gifKentoc'h mervel eget bezañ saotret http://yelims2.free.fr/Drapeaux/DrapeauBretagne.gif
Il te manque une variable état pour différencier les 2 états, et il faut lancer tes 2 dialogues dans le touch_start pas dans le listen :
Code:
key owner;
key user;
integer ecoute;
integer delai = 60;
integer canal;
list menu0= ["Open"];          
list menu1= ["Close"];  
integer etat;            
      

default
{
    state_entry()
    {
        canal = (integer)llFrand(10000000)-10000000; 
    }
    touch_start(integer total_number)
    {
        user = llDetectedKey(0);
        ecoute = llListen(canal, "", user, ""); 
        if (user == llGetOwner())
        {
            if(etat)
                llDialog(llDetectedKey(0), "Cliquez ici", menu1, canal);
            else
                llDialog(llDetectedKey(0), "Cliquez ici", menu0, canal); 
            llSetTimerEvent(delai);
        }
    }

    listen(integer channel, string name, key id, string message)
    {
        if (message == "Open")
        {
            llSay (0,"ok");
            etat = TRUE;
        }
        else if (message == "Close" && !etat)
        {
            llSay(0,"ok");
            etat = FALSE;
        }
         }
    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();
    }
}  

Si j'ai bien compris et si je me suis plantée dans les TRUE et FALSE cela devrait fonctionner
Bonsoir,
Je remonte ce poste car il y a un soucis ! Le soir même j'essayais ce script qui fonctionnait puis je l'avais mis de coté le temps de finir autre chose. Je le ressort et là ça fonctionne jusqu'as open mais impossible de faire fonctionner le close , on reste coincé sur ce bouton (réinitialiser, changement de sim, recompilation de script rien n'y fait)

C'est à ni rien comprendre !
__________________
Le fait que le monde soit peuplé de crétins permet à chacun de nous de ne pas se faire remarquer
http://yelims2.free.fr/Drapeaux/DrapeauBretagne.gifKentoc'h mervel eget bezañ saotret http://yelims2.free.fr/Drapeaux/DrapeauBretagne.gif
Voilà ton code un peu.. toiletté :

Code PHP:

integer ecoute;
integer delai 60;
integer canal;
list 
menu= ["Close","Open"];
integer etat;

resetEcoute()
{
    
llSetTimerEvent(0.0);
    
llListenRemove(ecoute);
}

default
{
    
touch_start(integer total_number)
    {
        
canal = (integer)llFrand(10000000)-10000000;
        
ecoute llListen(canal""user"");
        if (
llDetectedKey(0) == llGetOwner())
        {
            
llDialog(llDetectedKey(0), "Cliquez ici"llDeleteSubList(menuetatetat), canal);
            
llSetTimerEvent(delai);
        }
    }

    
listen(integer channelstring namekey idstring message)
    {
        
resetEcoute();
        
llSay (0,"ok");
        
etat = !etat;
    }
    
timer()
    {
        
resetEcoute();
    }

Bonsoir,

Merci Bestmomo ça fonctionne (il manquait juste la key user), tes scripts sont court et donc lisible par contre ça me déroute pour les modifier ! J'essaie d'attribuer une phrase pour "open" et une autre différente pour "close" mais c'est pas évident !

Une petite explication serait la bienvenue !

Bonne soirée...
__________________
Le fait que le monde soit peuplé de crétins permet à chacun de nous de ne pas se faire remarquer
http://yelims2.free.fr/Drapeaux/DrapeauBretagne.gifKentoc'h mervel eget bezañ saotret http://yelims2.free.fr/Drapeaux/DrapeauBretagne.gif
Encore plus simple voilà le script :

Code PHP:

integer ecoute;
integer delai 60;
integer canal;
list 
menu= ["Close","Open"];
list 
phrases = ["Phrase Close","Phrase Open"];
integer etat;

resetEcoute()
{
    
llSetTimerEvent(.0);
    
llListenRemove(ecoute);
}

default
{
    
touch_start(integer total_number)
    {
        if (
llDetectedKey(0) == llGetOwner())
        {
            
canal = (integer)llFrand(10000000)-10000000;
            
ecoute llListen(canal""llGetOwner(), "");
            
llDialog(llGetOwner(), "Cliquez ici"llDeleteSubList(menuetatetat), canal);
            
llSetTimerEvent(delai);
        }
    }

    
listen(integer channelstring namekey idstring message)
    {
        
resetEcoute();
        
llSay (0llList2String(phrasesetat = !etat));
    }
    
timer()
    {
        
resetEcoute();
    }

On créé une list pour y mettre ces phrases grâce à "llList2String" mais si on veut qu'il se passe des choses (autre qu'un llSay) ça se complique encore ?
Si on clique sur "open" on attend un "llGetLocalPos" par exemple et on en attend un autre pour la fermeture...
Je vais étudier ça demain

Bonne soirée
__________________
Le fait que le monde soit peuplé de crétins permet à chacun de nous de ne pas se faire remarquer
http://yelims2.free.fr/Drapeaux/DrapeauBretagne.gifKentoc'h mervel eget bezañ saotret http://yelims2.free.fr/Drapeaux/DrapeauBretagne.gif
Citation :
Publié par Polo Slok
On créé une list pour y mettre ces phrases grâce à "llList2String" mais si on veut qu'il se passe des choses (autre qu'un llSay) ça se complique encore ?
Si on clique sur "open" on attend un "llGetLocalPos" par exemple et on en attend un autre pour la fermeture...
Je vais étudier ça demain

Bonne soirée
Tu utilises la variable "etat" pour sélectionner :

Code PHP:

        if(etat)
            ...
        else
            ... 
depuis le temps que je voulais utiliser llPow

Code PHP:

integer ecoute;
integer delai 60;
integer canal;
list 
menu= ["Close","Open"];
list 
phrases = ["Phrase Close","Phrase Open"];
integer etat;

resetEcoute()
{
    
llSetTimerEvent(.0);
    
llListenRemove(ecoute);
}
MouvementPorte(float sens)    {
    
etat = !etat;
    
// déplacement de la porte d'un vector de <.0, 0.8 * sens, .0>
    // par exemple pour un déplacement de de +/- 0.8 sur l'axe y
    // a adapter bien sur a la taille et a la rotation de ta porte
    // voir les multiples post au sujet des porte ici
}
default
{
    
touch_start(integer total_number)
    {
        if (
llDetectedKey(0) == llGetOwner())
        {
            
canal = (integer)llFrand(10000000)-10000000;
            
ecoute llListen(canal""llGetOwner(), "");
            
llDialog(llGetOwner(), "Cliquez ici"llDeleteSubList(menuetatetat), canal);
            
llSetTimerEvent(delai);
        }
    }

    
listen(integer channelstring namekey idstring message)
    {
        
resetEcoute();
        
MouvementPorte(llPow(-1.0, (float)etat));
        
//parce que -1puissance0 = 1 et que -1puissance1 = -1
    
}
    
timer()
    {
        
resetEcoute();
    }

Pas pu résister
Merci pour vos réponses ! J'ai suivie les indications de Best en mettant un if et un else sauf que je ne peux plus passer au suivant je reste coincé sur "rouge", curieux non ?
Code PHP:

integer ecoute;
integer delai 60;
integer canal;
list 
menu= ["Rose","Rouge"];
integer etat;

resetEcoute()
{
    
llSetTimerEvent(.0);
    
llListenRemove(ecoute);
}

default
{
    
touch_start(integer total_number)
    {
        if (
llDetectedKey(0) == llGetOwner())
        {
            
canal = (integer)llFrand(10000000)-10000000;
            
ecoute llListen(canal""llGetOwner(), "");
            
llDialog(llGetOwner(), "Cliquez ici"llDeleteSubList(menuetatetat), canal);
            
llSetTimerEvent(delai);
        }
    }

    
listen(integer channelstring namekey idstring message)
    {
        
resetEcoute();
        if (
etat)
        {
           
llSetColor(<1.000,0.000,0.000>, ALL_SIDES); 
        }
        else
        {
          
llSetColor(<1.000,0.000,0.400>, ALL_SIDES);  
        }
    }
    
timer()
    {
        
resetEcoute();
    }

merci !
__________________
Le fait que le monde soit peuplé de crétins permet à chacun de nous de ne pas se faire remarquer
http://yelims2.free.fr/Drapeaux/DrapeauBretagne.gifKentoc'h mervel eget bezañ saotret http://yelims2.free.fr/Drapeaux/DrapeauBretagne.gif
Si tu changes jamais la valeur de la variable "etat" il ne peut rien se passer .

Essaie ça :

if (etat = !etat)

Ca réalise deux choses : un changement de la valeur de la variable "etat" et un test de celle-ci. C'est l'équivalent de ça :

etat = !etat;
if (etat)

J'ai la mauvaise habitude de compresser le code mais quand on aligne des centaines de lignes de code on a tendance à essayer de réduire la longueur des scrpts
Ok, c'est avant le premier if que l'on place le "etat = !etat" , j'ai essayé en le plaçant après le else mais ça faisait une erreur alors je l'ai retiré !

Compresser le code permet de gagner de la place ce qui est pas plus mal pour la clarté mais c'est vrai que quand on apprend c'est pas toujours évident !

Merci pour toutes ces astuces.
__________________
Le fait que le monde soit peuplé de crétins permet à chacun de nous de ne pas se faire remarquer
http://yelims2.free.fr/Drapeaux/DrapeauBretagne.gifKentoc'h mervel eget bezañ saotret http://yelims2.free.fr/Drapeaux/DrapeauBretagne.gif
Citation :
Publié par Polo Slok
Ok, c'est avant le premier if que l'on place le "etat = !etat" , ...
oui si tu veux écrire en 2 lignes (plus facile a relire), tu fais :
Code PHP:

etat = !etat
if(etat) {
    
// .....
}
else {
   
// .....

non si tu préfère en 1 ligne (plus rapide a écrire) , tu fais
Code PHP:

if(etat = !etat) {
    
// .....
}
else {
   
// .....

tu es libre
Bonsoir,
J'arrive bien à me servir de ce système de manière simple et j'ai donc voulu le transposer dans un autre script de boîte a dialogue ! Je pensais que ce serai simple mais après quelques essais je remarque que c'est pas si simple ! Pour bien comprendre, j'ai mon script de boîte à dialogue qui existe déjà et je veux intégrer le changement de boutons ("Hide" et "Show") avec d'autres boutons qui eux ne bouges pas !
Code PHP:

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 
menu1= ["+","-","Retour"];
list 
menu2= ["1","2","3","4","5","6","Retour"];
list 
menu_pincipal= ["Couleurs","Taille","Billets","Info","Hud Jarretiere","Hide","Show"];      // /
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 etat;
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"llDeleteSubList(menu_principaletatetat), canal); // on precise les menus "menu_pincipal"
            
llSetTimerEvent(delai);
        }
    }

    
listen(integer channelstring namekey idstring message)
    {
        if (
message == "Couleurs")
        {
            
llDialog(id"Choisissez une Couleur",menu0canal); // pas d'arret de l'ecoute et du timer , on en a encore besoin
        
}
        else if (
message == "Blanc")
        {
            
llDialog(id"Choisissez une Couleur",blanccanal); // idem
        
}
        else if (
message == "Bleu")
        {
            
llDialog(id"Choisissez une Couleur",bleucanal); // idem
        
}
        else if (
message == "Jaune")
        {
            
llDialog(id"Choisissez une Couleur",jaunecanal); // idem
        
}
        else if (
message == "Rouge")
        {
            
llDialog(id"Choisissez une Couleur",rougecanal); // idem
        
}
        else if (
message == "Rose")
        {
            
llDialog(id"Choisissez une Couleur",rosecanal); // idem
        
}
        else if (
message == "Vert")
        {
            
llDialog(id"Choisissez une Couleur",vertcanal); // idem
        
}
        else if (
message == "Violet")
        {
            
llDialog(id"Choisissez une Couleur",violetcanal); // idem
        
}
        else if (
message == "Taille")
        {
            
llDialog(id"Réglez votre taille",menu1canal); // idem
        
}
        else if (
message == "Billets")
        {
            
llDialog(id"Nombre de billets visibles",menu2canal); // idem
        
}
        else if (
message == "Retour")
        { 
        
llDialog(id,"Personnalisation de la jarretiére"menu_pincipalcanal); 
        }
        else if (
message == "retour")
        { 
        
llDialog(id,"Choisissez une couleur"menu0canal); 
        }
        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 apres 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
        
}
         (
etat = !etat);
        if (
etat)
        {
           
llSetText ("Tip Jar Jarretiére", <1,0,0>, 3.0) ; 
        }
        else
        {
          
llSay(0"floating Text supprime");
          
llSetText("",<0,0,0>,0.0);  
        }
    }

    
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();
    }

J'ai une erreur au premier "llDialog" ---> Name not defined within scope !
Je teste d'autres solution !
Merci de votre aide
__________________
Le fait que le monde soit peuplé de crétins permet à chacun de nous de ne pas se faire remarquer
http://yelims2.free.fr/Drapeaux/DrapeauBretagne.gifKentoc'h mervel eget bezañ saotret http://yelims2.free.fr/Drapeaux/DrapeauBretagne.gif
J'ai corrigé les erreurs de syntaxe, pour le reste j'ai pas bien compris ce que tu veux faire

Code PHP:

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 
menu1= ["+","-","Retour"];
list 
menu2= ["1","2","3","4","5","6","Retour"];
list 
menu_principal= ["Couleurs","Taille","Billets","Info","Hud Jarretiere","Hide","Show"];      // /
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 etat;
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"llDeleteSubList(menu_principaletatetat), canal); // on precise les menus "menu_pincipal"
            
llSetTimerEvent(delai);
        }
    }

    
listen(integer channelstring namekey idstring message)
    {
        if (
message == "Couleurs")
        {
            
llDialog(id"Choisissez une Couleur",menu0canal); // pas d'arret de l'ecoute et du timer , on en a encore besoin
        
}
        else if (
message == "Blanc")
        {
            
llDialog(id"Choisissez une Couleur",blanccanal); // idem
        
}
        else if (
message == "Bleu")
        {
            
llDialog(id"Choisissez une Couleur",bleucanal); // idem
        
}
        else if (
message == "Jaune")
        {
            
llDialog(id"Choisissez une Couleur",jaunecanal); // idem
        
}
        else if (
message == "Rouge")
        {
            
llDialog(id"Choisissez une Couleur",rougecanal); // idem
        
}
        else if (
message == "Rose")
        {
            
llDialog(id"Choisissez une Couleur",rosecanal); // idem
        
}
        else if (
message == "Vert")
        {
            
llDialog(id"Choisissez une Couleur",vertcanal); // idem
        
}
        else if (
message == "Violet")
        {
            
llDialog(id"Choisissez une Couleur",violetcanal); // idem
        
}
        else if (
message == "Taille")
        {
            
llDialog(id"Réglez votre taille",menu1canal); // idem
        
}
        else if (
message == "Billets")
        {
            
llDialog(id"Nombre de billets visibles",menu2canal); // idem
        
}
        else if (
message == "Retour")
        { 
        
llDialog(id,"Personnalisation de la jarretiére"menu_principalcanal); 
        }
        else if (
message == "retour")
        { 
        
llDialog(id,"Choisissez une couleur"menu0canal); 
        }
        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 apres 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
        
}
         
etat = !etat;
        if (
etat)
        {
           
llSetText ("Tip Jar Jarretiére", <1,0,0>, 3.0) ; 
        }
        else
        {
          
llSay(0"floating Text supprime");
          
llSetText("",<0,0,0>,0.0);  
        }
    }

    
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();
    }

Bonjour,
Merci Best, c'est presque ça ! Expliquons-nous : Actuellement quand je clique sur l'objet j'ai une boite à dialogue qui apparaît avec six boutons ("Info","Hud","Taille","Billets","Hide" et "Show"). Quand je clique sur "Hide" le texte apparaît (normal) mais quand je reclique sur l'objet la boite a dialogue réapparaît et le bouton "Taille" a disparu et le bouton "Couleurs" a apparu ! Or je voudrais que ce soit les boutons "Hide" et "show" qui joue a "cache-cache" ! Un coup je clique j'ai "hide" je clique dessus (texte apparaît) et je reclique sur l'objet et a la place j'ai le bouton "show"...
J'ai essayé d'être clair mais je vais essayer autre chose ! Sinon j'écoute vos propositions !
__________________
Le fait que le monde soit peuplé de crétins permet à chacun de nous de ne pas se faire remarquer
http://yelims2.free.fr/Drapeaux/DrapeauBretagne.gifKentoc'h mervel eget bezañ saotret http://yelims2.free.fr/Drapeaux/DrapeauBretagne.gif
éhéh, ça marche j'ai modifié cette ligne :

Code PHP:

list menu_principal= ["Couleurs","Taille","Billets","Info","Hud Jarretiere","Hide","Show"]; 

comme ceci :

Code PHP:

list menu_principal= ["Hide","Show","Couleurs","Taille","Billets","Info","Hud Jarretiere"]; 

En plaçant "Hide" et "Show" devant ça fonctionne ---> je clique sur "show" le texte apparaît et quand je fais réapparaitre la boite a dialogue c'est "hide" qui est à la place !

Sinon j'avais pensé à ce genre de construction mais je sais pas si ça fonctionne

Code PHP:

list menu_principal= ["Couleurs","Taille","Billets","Info","Hud Jarretiere"] + ["Hide","Show"]; 

et
Code PHP:

llDialog(llDetectedKey(0), "Personnalisation de la Jarretiére"menu_pincipalcanal) + llDialog(llDetectedKey(0), llDeleteSubList(menu_principaletatetat), canal); 

J'attend vos réactions, Merci !
__________________
Le fait que le monde soit peuplé de crétins permet à chacun de nous de ne pas se faire remarquer
http://yelims2.free.fr/Drapeaux/DrapeauBretagne.gifKentoc'h mervel eget bezañ saotret http://yelims2.free.fr/Drapeaux/DrapeauBretagne.gif
Bonsoir,

cela vient de cette ligne :
Code PHP:

llDialog(llDetectedKey(0), "Personnalisation de la Jarretiére"llDeleteSubList(menu_principaletatetat), canal); 

A chaque appel du menu, tu supprime un élément de la liste menu_principal (le numéro etat).

j'ai corrigé ce souci par ces lignes :
Code PHP:

list menu;
            if (
etatmenu menu_principal sHIDE; else menu menu_principal sSHOW;
            
llDialog(llDetectedKey(0), "Personnalisation de la Jarretiére"menucanal); 
je me suis aussi permis de créer 2 fonctions SetColor(vector couleur) et EndMenu() pour optimiser un ton code (un tout petit peu)


Résultat :
Code PHP:

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 
menu1= ["+","-","Retour"];
list 
menu2= ["1","2","3","4","5","6","Retour"];
list 
menu_principal= ["Couleurs","Taille","Billets","Info","Hud Jarretiere"];
string sHIDE "Hide";
string sSHOW "Show";
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 etat;

SetColor(vector couleur)    {
    
llSetColor(couleurALL_SIDES);
    
EndMenu();
}
EndMenu()    {
    
llSetTimerEvent(0.0);
    
llListenRemove(ecoute);
}
default
{
    
state_entry()
    {
        
canal = (integer)llFrand(10000000)-10000000// canal dynamique pour éviter la communication entre un meme prim identique
    
}
    
touch_start(integer total_number)
    {
        if (
user == llGetOwner())
        {
            
// autant mettre ca dans le if
            
user llDetectedKey(0);
            
ecoute llListen(canal""user""); // plus de NULL_KEY , on cible l'user. Limitation du lag au moment de l ecoute
            //            llDialog(llDetectedKey(0), "Personnalisation de la Jarretiére", llDeleteSubList(menu_principal, etat, etat), canal); // on precise les menus "menu_pincipal"
            
list menu;
            if (
etatmenu menu_principal sHIDE; else menu menu_principal sSHOW;
            
llDialog(llDetectedKey(0), "Personnalisation de la Jarretiére"menucanal); // on precise les menus "menu_pincipal"
            
llSetTimerEvent(delai);
        }
    }

    
listen(integer channelstring namekey idstring message)
    {
        if (
message == "Couleurs")
        {
            
llDialog(id"Choisissez une Couleur",menu0canal); // pas d'arret de l'ecoute et du timer , on en a encore besoin
        
}
        else if (
message == "Blanc")
        {
            
llDialog(id"Choisissez une Couleur",blanccanal); // idem
        
}
        else if (
message == "Bleu")
        {
            
llDialog(id"Choisissez une Couleur",bleucanal); // idem
        
}
        else if (
message == "Jaune")
        {
            
llDialog(id"Choisissez une Couleur",jaunecanal); // idem
        
}
        else if (
message == "Rouge")
        {
            
llDialog(id"Choisissez une Couleur",rougecanal); // idem
        
}
        else if (
message == "Rose")
        {
            
llDialog(id"Choisissez une Couleur",rosecanal); // idem
        
}
        else if (
message == "Vert")
        {
            
llDialog(id"Choisissez une Couleur",vertcanal); // idem
        
}
        else if (
message == "Violet")
        {
            
llDialog(id"Choisissez une Couleur",violetcanal); // idem
        
}
        else if (
message == "Taille")
        {
            
llDialog(id"Réglez votre taille",menu1canal); // idem
        
}
        else if (
message == "Billets")
        {
            
llDialog(id"Nombre de billets visibles",menu2canal); // idem
        
}
        else if (
message == "Retour")
        {
            
llDialog(id,"Personnalisation de la jarretiére"menu_principalcanal);
        }
        else if (
message == "retour")
        {
            
llDialog(id,"Choisissez une couleur"menu0canal);
        }
        else if (
message == "Banane")
        {
            
SetColor(<0.890,0.812,0.341>);
        }
        else if (
message == "Antique")
        {
            
SetColor(<0.980,0.922,0.843>);             //idem
        
}
        else if (
message == "Ivoire")
        {
            
SetColor(<1.000,1.000,0.941>);             //idem
        
}
        else if (
message == "Blank")
        {
            
SetColor(<1.000,1.000,1.000>);             //idem
        
}
        else if (
message == "B.Clair")
        {
            
SetColor(<0.690,0.878,0.902>);             //idem
        
}
        else if (
message == "Turquoise")
        {
            
SetColor(<0.000,0.780,0.549>);             //idem
        
}
        else if (
message == "Nuit")
        {
            
SetColor(<0.098,0.098,0.439>);             //idem
        
}
        else if (
message == "J.Clair")
        {
            
SetColor(<1.000,1.000,0.878>);             //idem
        
}
        else if (
message == "Pop-Corn")
        {
            
SetColor(<1.000,1.000,0.667>);             //idem
        
}
        else if (
message == "Citron")
        {
            
SetColor(<1.000,0.890,0.012>);             //idem
        
}
        else if (
message == "Noir")
        {
            
SetColor(<0.000,0.000,0.000>);             //idem
        
}
        else if (
message == "Rouges")
        {
            
SetColor(<1.000,0.000,0.000>);             //idem
        
}
        else if (
message == "Cerise")
        {
            
SetColor(<0.200,0.000,0.000>);             //idem
        
}
        else if (
message == "Indien")
        {
            
SetColor(<0.690,0.090,0.122>);             //idem
        
}
        else if (
message == "R.Clair")
        {
            
SetColor(<1.000,0.431,0.780>);             //idem
        
}
        else if (
message == "Broadway")
        {
            
SetColor(<1.000,0.000,0.400>);             //idem
        
}
        else if (
message == "Mat")
        {
            
SetColor(<1.000,0.800,0.800>);             //idem
        
}
        else if (
message == "V.Clair")
        {
            
SetColor(<0.596,0.984,0.596>);             //idem
        
}
        else if (
message == "Olive")
        {
            
SetColor(<0.310,0.310,0.184>);             //idem
        
}
        else if (
message == "Pin")
        {
            
SetColor(<0.000,0.200,0.000>);             //idem
        
}
        else if (
message == "Violette")
        {
            
SetColor(<0.561,0.369,0.600>);             //idem
        
}
        else if (
message == "Outremer")
        {
            
SetColor(<0.361,0.141,0.431>);             //idem
        
}
        else if (
message == "Sombre")
        {
            
SetColor(<0.529,0.122,0.471>);             //idem
        
}
        else if (
message == "+")
        {
            
llMessageLinked(LINK_SET,0,"+",NULL_KEY);
            
llSetScale(llGetScale()+<0.0,0.02,0.02>);
            
EndMenu();
        }
        else if (
message == "-")
        {
            
llMessageLinked(LINK_SET,0,"-",NULL_KEY);
            
llSetScale(llGetScale()-<0.0,0.02,0.02>);
            
EndMenu();
        }
        else if (
message == "1")
        {
            if(
on)
            {
                
llSetLinkAlpha(2,1.0,1-3);
            }
            else
            {
                
llSetLinkAlpha(2,0.0,ALL_SIDES);
            }
            
on=!on;
            
EndMenu();
        }
        else if (
message == "2")
        {
            if(
ok)
            {
                
llSetLinkAlpha(3,1.0,1-3);
            }
            else
            {
                
llSetLinkAlpha(3,0.0,ALL_SIDES);
            }
            
ok=!ok;
            
EndMenu();
        }
        else if (
message == "3")
        {
            if(
go)
            {
                
llSetLinkAlpha(4,1.0,1-3);
            }
            else
            {
                
llSetLinkAlpha(4,0.0,ALL_SIDES);
            }
            
go=!go;
            
EndMenu();
        }
        else if (
message == "4")
        {
            if(
ja)
            {
                
llSetLinkAlpha(5,1.0,1-3);
            }
            else
            {
                
llSetLinkAlpha(5,0.0,ALL_SIDES);
            }
            
ja=!ja;
            
EndMenu();
        }
        else if (
message == "5")
        {
            if(
vi)
            {
                
llSetLinkAlpha(6,1.0,ALL_SIDES);
            }
            else
            {
                
llSetLinkAlpha(6,0.0,ALL_SIDES);
            }
            
vi=!vi;
            
EndMenu();
        }
        else if (
message == "6")
        {
            if(
oui)
            {
                
llSetLinkAlpha(7,1.0,ALL_SIDES);
            }
            else
            {
                
llSetLinkAlpha(7,0.0,ALL_SIDES);
            }
            
oui=!oui;
            
EndMenu();
        }
        else if (
message == "Info")
        {
            
llGiveInventory(id"Info");
            
EndMenu();
        }
        else if (
message == "Hud Jarretiere")
        {
            
llGiveInventory(id"Hud Jarretiere");
            
EndMenu();
        }
        
etat = !etat;
        if (
etat)
        {
            
llSetText ("Tip Jar Jarretiére", <1,0,0>, 3.0) ;
        }
        else
        {
            
llSay(0"floating Text supprime");
            
llSetText("",<0,0,0>,0.0);
        }
    }

    
timer()
    {
        
EndMenu();
    }
    
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();
    }

XanorK
Bonjour,

Je répond un peu tard car comme j'étais en train de finaliser l'autre sujet [auquel il faut que je réponde], je me suis donc repenché sur celui ci !

Tout d'abord la correction de la ligne fonctionne avec l'astuce des "string sHIDE et sShow" ! ça fonctionne, je ne connaissais pas... Merci !
Par contre le script entier ne répond plus donc j'ai fait la modif manuellement en rajoutant juste la ligne corrigée et les "string" et ça fonctionne correctement !

Continuant à évoluer j'ai tenté de modifié le script de base du open/close en voulant rajouter une nouvelle option! Expliquons nous !

Pour pas s'égarer, je vais reprendre l'exemple du texte (Show/Hide) ---> Je clique sur mon objet, une boite à dialogue apparaît avec "Show Text" et je clique dessus mon texte apparaît ! Je reclique sur cet objet et la boite à dialogue revient avec maintenant "Hide Text" et un nouveau bouton "Color Text" ! Si je clique sur "Color Text" le texte change de couleur et si je clique sur "Hide Text" le texte disparaît et au prochain clique sur l'objet j'aurai un seul bouton qui s'appellera "Show Text" !
Donc voila le principe, le bouton "Color Text" n'apparaît que lorsque le texte est affiché et disparaît si on fait disparaître le texte !
J'ai donc essayer de créer ce script mais j'ai du mal à bien faire comprendre à ce dernier de ne pas effacer le texte après le clique sur le "Color Text" ! Je sais pourquoi c'est parce qu'après on passe directement a l'instruction "Hide Text" et au state default ! D'avoir 2 états n'est peut être pas la solution la plus aisée mais c'est celle avec laquelle j'ai le début de mon script qui fonctionne et ce compile !
Je vous met ici mon essai (Pour mes essais j'y ai mis une couleur par la suite il y en aura plusieurs)
Code PHP:

integer ecoute;
integer delai 60;
integer canal;
list 
menu= ["Hide text","Show Text"];
list 
menu1= ["Colors Text"];
integer etat;

resetEcoute()
{
    
llSetTimerEvent(.0);
    
llListenRemove(ecoute);
}

default
{
    
touch_start(integer total_number)
    {
        if (
llDetectedKey(0) == llGetOwner())
        {
            
canal = (integer)llFrand(10000000)-10000000;
            
ecoute llListen(canal""llGetOwner(), "");
            
llDialog(llGetOwner(), "Cliquez ici"llDeleteSubList(menuetatetat), canal);
            
llSetTimerEvent(delai);
        }
    }

    
listen(integer channelstring namekey idstring message)
    {
        
resetEcoute();
        (
etat = !etat);
        if (
etat)
        {
           
llSetText ("Tip Jar Jarretiére", <1,0,0>, 1.0) ; 
           
        }
        
state text;
    }
}
    
state text
    
{
        
touch_start(integer total_number)
        {
         if (
llDetectedKey(0) == llGetOwner())
        {
            
canal = (integer)llFrand(10000000)-10000000;
            
ecoute llListen(canal""llGetOwner(), "");
            
llDialog(llGetOwner(), "Cliquez ici"llDeleteSubList(menuetatetat)+menu1canal);
            
llSetTimerEvent(delai);
        }
    }

    
listen(integer channelstring namekey idstring message)
    {
        if (
message == "Colors Text")
        {
            
llSetColor(<1.0,1.0,1.0>, ALL_SIDES);
        }
        
resetEcoute();
        (
etat = !etat);   
        if (!
etat)
        {
          
llSetText("",<0,0,0>,0.0);
        }
       
        
state default;
    }
    
timer()
    {
        
resetEcoute();
    }

Merci de me donner un petit coup de pouce pour arriver à quelque chose de fonctionnel !
__________________
Le fait que le monde soit peuplé de crétins permet à chacun de nous de ne pas se faire remarquer
http://yelims2.free.fr/Drapeaux/DrapeauBretagne.gifKentoc'h mervel eget bezañ saotret http://yelims2.free.fr/Drapeaux/DrapeauBretagne.gif
Salut,

un seul état suffit en effet.
quelques conseils :
- construit ton menu dynamiquement, ne supprime pas (llDeletedSubList). N'écrit pas ça : list menu= ["Hide text","Show Text"]; tu veut afficher l'un ou l'autre pas les 2
- Fait des fonctions pour tout ce que tu fais plusieurs fois
- Et comme dirait un prof de l'ecole SL "le wiki est ton ami" et "pense ton script"

Code PHP:

integer ecoute;
integer delai 60;
integer canal;

string sHIDE "Hide text";
string sSHOW "Show Text";
string sCOLORS "Colors Text";

string sBACK "<< Retour";
list 
lColorMemu = [sBACK"Blanc""Noir""Rouge"]; // 12 max
list lVectorColor = ["",
    <
1.01.01.0>, // blanc
    
<0.00.00.0>, // noir
    
<1.00.00.0>  // Rouge
        
];

integer iTextAffich FALSE;
vector vColor;

resetEcoute()
{
    
llSetTimerEvent(.0);
    
llListenRemove(ecoute);
}
Menu(string niveau)    {
    
canal = (integer)llFrand(10000000)-10000000;
    
ecoute llListen(canal""llGetOwner(), "");
    
llSetTimerEvent(delai);

    if (
niveau == "Main")
        
llDialog(llGetOwner(), "Cliquez ici"DefMenu(), canal);
    else if (
niveau == "Couleur")
        
llDialog(llGetOwner(), "Choix couleur"lColorMemucanal);
}
SetText()    {
    
llSetText ("Tip Jar Jarretiére"vColor, (float)iTextAffich) ;
}
list 
DefMenu()    {
    list 
choix;
    if(
iTextAffich// text Affiché
        
choix = [sHIDEsCOLORS];
    else
        
choix = [sSHOW];
    return 
choix;
}

default
{
    
state_entry()
    {
        
SetText();
    }
    
touch_start(integer total_number)    {
        if (
llDetectedKey(0) == llGetOwner())    {
            
Menu("Main");
        }
    }

    
listen(integer channelstring namekey idstring message)
    {
        
resetEcoute();
        if (
message == sHIDE)    {
            
iTextAffich FALSE;
            
SetText();
        }
        else if (
message == sSHOW)    {
            
iTextAffich TRUE;
            
SetText();
        }
        else if (
message == sCOLORS)    {
            
Menu("Couleur");
        }
        else if (
message == sBACK)    {
            
Menu("Main");
        }
        else if (
llListFindList(lColorMemu, [message]))    {
            
integer index llListFindList(lColorMemu, [message]);
            
vColor llList2Vector(lVectorColorindex);
            
SetText();
        }
    }
    
timer()
    {
        
resetEcoute();
    }

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 )
Code PHP:

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 (sMessagevColor1.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"menucanal);
            
llSetTimerEvent(delai);
        }
    }

    
listen(integer channelstring namekey idstring message)
    {
        if (
message == "Colors Text"
        {
            
llDialog(llGetOwner(), "Choix de Couleur"lColorMenucanal);
            
llSetTimerEvent(delai);
        }
        else if(~
llListFindList(lColorMenu,[message]))
        {
            
integer index llListFindList(lColorMenu,[message]);
            
vColor llList2Vector(lVectorColor,index);
            
llSetText (sMessagevColor1.0) ;
            
resetEcoute();
        }
        else if(
message == "Show Text")
        {
            
sMessage "Tip Jar Jarretiére";
            
llSetText (sMessagevColor1.0) ;
            
menu = [Option_Hide]+[Option_Color];
            
resetEcoute();
        }
        else if(
message == "Hide text")
        {
            
sMessage "";
            
llSetText (sMessagevColor1.0) ;
            
menu=[Option_Show];
            
resetEcoute();
        }
    }
    
timer()
    {
        
resetEcoute();
    }

Par Rlp (merci à lui)

Code PHP:

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_principalcanal);   // on precise les menus "menu_pincipal"
            
llSetTimerEvent(delai);
        }
    }

    
listen(integer channelstring namekey idstring message)
    {
     
        if (
message == "Colors Text"
        {
            
llDialog(id"Choix de Couleur"lColorMenucanal);
        }
         else if (
message == "Couleurs")
        {
            
llDialog(id"Choisissez une Couleur",menu0canal); // pas d'arret de l'ecoute et du timer , on en a encore besoin
        
}
        else if (
message == "Blanc")
        {
            
llDialog(id"Choisissez une Couleur",blanccanal); // idem
        
}
        else if (
message == "Bleu")
        {
            
llDialog(id"Choisissez une Couleur",bleucanal); // idem
        
}
        else if (
message == "Jaune")
        {
            
llDialog(id"Choisissez une Couleur",jaunecanal); // idem
        
}
        else if (
message == "Rouge")
        {
            
llDialog(id"Choisissez une Couleur",rougecanal); // idem
        
}
        else if (
message == "Rose")
        {
            
llDialog(id"Choisissez une Couleur",rosecanal); // idem
        
}
        else if (
message == "Vert")
        {
            
llDialog(id"Choisissez une Couleur",vertcanal); // idem
        
}
        else if (
message == "Violet")
        {
            
llDialog(id"Choisissez une Couleur",violetcanal); // idem
        
}
        else if (
message == "Taille")
        {
            
llDialog(id"Réglez votre taille",menu1canal); // idem
        
}
        else if (
message == "Billets")
        {
            
llDialog(id"Nombre de billets visibles",menu2canal); // idem
        
}
        else if (
message == "Retour")
        { 
            
llDialog(id,"Personnalisation de la jarretiére"menu_principalcanal); 
        }
        else if (
message == "retour")
        { 
            
llDialog(id,"Choisissez une couleur"menu0canal); 
        }
        else if(~
llListFindList(lColorMenu,[message]))
        {
            
integer index llListFindList(lColorMenu,[message]);
            
vColor llList2Vector(lVectorColor,index);
            
llSetText (sMessagevColor1.0) ;
            
llSetTimerEvent(0.0);               
            
llListenRemove(ecoute); 
        }
        else if(
message == "Show Text")
        {
            
sMessage "Tip Jar Jarretiére";
            
llSetText (sMessagevColor1.0) ;
            
            
llSetTimerEvent(0.0);               
            
llListenRemove(ecoute); 
        }
        else if(
message == "Hide text")
        {
            
sMessage "";
            
llSetText (sMessagevColor1.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 !!!
__________________
Le fait que le monde soit peuplé de crétins permet à chacun de nous de ne pas se faire remarquer
http://yelims2.free.fr/Drapeaux/DrapeauBretagne.gifKentoc'h mervel eget bezañ saotret http://yelims2.free.fr/Drapeaux/DrapeauBretagne.gif
Bon,
j'avance par petites touches, maintenant j'ai le menu comme je le veux c'est a dire comme ceci :
http://img693.imageshack.us/img693/9098/22022010212932.jpg

Mais le soucis c'est que quand je clique sur "Show Text" la boîte à dialogue disparaît mais il se passe rien ! Les autres options fonctionne nickel... Je sens que je touche au but, mais ou taper pour que cela fonctionne, je vous met ici le script :
Code PHP:

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= ["Show Text","Hide text","Colors Text","Couleurs","Taille","Billets","Info","Hud Jarretiere"];      // 
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
        
llSetText (sMessagevColor1.0) ;
        
menu_principal=[Option_Show]+["Couleurs","Taille","Billets","Info","Hud Jarretiere"];
    }
    
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_principalcanal);   // on precise les menus "menu_pincipal"
            
llSetTimerEvent(delai);
        }
    }

    
listen(integer channelstring namekey idstring message)
    {
     
        if (
message == "Colors Text"
        {
            
llDialog(id"Choix de Couleur"lColorMenucanal);
        }
         else if (
message == "Couleurs")
        {
            
llDialog(id"Choisissez une Couleur",menu0canal); // pas d'arret de l'ecoute et du timer , on en a encore besoin
        
}
        else if (
message == "Blanc")
        {
            
llDialog(id"Choisissez une Couleur",blanccanal); // idem
        
}
        else if (
message == "Bleu")
        {
            
llDialog(id"Choisissez une Couleur",bleucanal); // idem
        
}
        else if (
message == "Jaune")
        {
            
llDialog(id"Choisissez une Couleur",jaunecanal); // idem
        
}
        else if (
message == "Rouge")
        {
            
llDialog(id"Choisissez une Couleur",rougecanal); // idem
        
}
        else if (
message == "Rose")
        {
            
llDialog(id"Choisissez une Couleur",rosecanal); // idem
        
}
        else if (
message == "Vert")
        {
            
llDialog(id"Choisissez une Couleur",vertcanal); // idem
        
}
        else if (
message == "Violet")
        {
            
llDialog(id"Choisissez une Couleur",violetcanal); // idem
        
}
        else if (
message == "Taille")
        {
            
llDialog(id"Réglez votre taille",menu1canal); // idem
        
}
        else if (
message == "Billets")
        {
            
llDialog(id"Nombre de billets visibles",menu2canal); // idem
        
}
        else if (
message == "Retour")
        { 
            
llDialog(id,"Personnalisation de la jarretiére"menu_principalcanal); 
        }
        else if (
message == "retour")
        { 
            
llDialog(id,"Choisissez une couleur"menu0canal); 
        }
        else if(~
llListFindList(lColorMenu,[message]))
        {
            
integer index llListFindList(lColorMenu,[message]);
            
vColor llList2Vector(lVectorColor,index);
            
llSetText (sMessagevColor1.0) ;
            
llSetTimerEvent(delai);
        }
        else if(
message == "Show Text")
        {
            
sMessage "Tip Jar Jarretiére";
            
llSetText (sMessagevColor1.0) ;
            
menu_principal=[Option_Hide]+[Option_Color]+["Couleurs","Taille","Billets","Info","Hud Jarretiere"];
            
llSetTimerEvent(0.0);               
            
llListenRemove(ecoute);
        }
        else if(
message == "Hide text")
        {
            
sMessage "";
            
llSetText (sMessagevColor1.0) ;
            
menu_principal=[Option_Show]+["Couleurs","Taille","Billets","Info","Hud Jarretiere"];
            
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 apres 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();
    }

Je m'y perd un peu avec les string [Option_Show]et les list [""Couleurs","Taille","Billets","Info","Hud Jarretiere"] et les écoutes qui ne faut pas oublier de fermer...

J'ai penser changer de place aussi les bloc else if !

Merci !
__________________
Le fait que le monde soit peuplé de crétins permet à chacun de nous de ne pas se faire remarquer
http://yelims2.free.fr/Drapeaux/DrapeauBretagne.gifKentoc'h mervel eget bezañ saotret http://yelims2.free.fr/Drapeaux/DrapeauBretagne.gif
Bonsoir,

Ça y est j'ai réglé mon problème tout seul comme un grand ! J'ai relu et relu le script et puis j'ai eu l'idée d'y insérer des "llOwnerSay" (merci pour l'idée Nibb) pour voir ou le script s'arrêtait exactement !
Puis j'ai vu en relisant la faute de frappe, une majuscule au lieu d'une minuscule qui te bloque tout un script et qui te fait chercher pendant des heures...

Je progresse, je progresse...
__________________
Le fait que le monde soit peuplé de crétins permet à chacun de nous de ne pas se faire remarquer
http://yelims2.free.fr/Drapeaux/DrapeauBretagne.gifKentoc'h mervel eget bezañ saotret http://yelims2.free.fr/Drapeaux/DrapeauBretagne.gif
Tu devrais alléger un peu ton code. Au lieu de mettre des tas de :

Code PHP:

        else if (message == "Nuit")
        {
            
llSetColor(<0.098,0.098,0.439>, ALL_SIDES);
            
llSetTimerEvent(0.0);
            
llListenRemove(ecoute);             //idem
        

Fais plutôt une fonction :

Code PHP:

setColor (vector couleur)
{
    
llSetColor(couleurALL_SIDES);
    
llSetTimerEvent(0.0);
    
llListenRemove(ecoute);             //idem

que tu appelles comme ça :

Code PHP:

    else if (message == "Nuit")
    {
        
setColor(<0.098,0.098,0.439>);
    } 
Sinon tu vas pas tarder à exploser la mémoire (et tes neurones) avec ton parchemin d'un km là
Répondre

Connectés sur ce fil

 
1 connecté (0 membre et 1 invité) Afficher la liste détaillée des connectés