bon, j'ai fait quelques modifications, en cherchant, donc ce qui est après // c'est des tests, de la même manière j'ai des retours, toujours pour savoir ce qu'il se passe
integer iEcoute;
integer iCanal = -124578;
integer iInhibe = FALSE;
float fTimeOut = 30.0;
key kAva;
list MAIN_MENU = ["Fin","Couleur","Alpha"];
list COLOR_MENU = ["Retour","Rouge","Vert","Bleu","Box"];
list ALPHA_MENU = ["Retour","20%","40%","60%","80%","100%"];
list lColor = [<1.0,.0,.0>,<.0,1.0,.0>,<.0,.0,1.0>];
set_menu(key id, string texte, list menu)
{
iInhibe = TRUE;
kAva = id;
iEcoute = llListen(iCanal, "", kAva, "");
llSetTimerEvent(fTimeOut);
llDialog(kAva, texte, menu, iCanal);
}
reset_menu()
{
llSetTimerEvent(.0);
llListenRemove(iCanal);
iInhibe = FALSE;
}
default
{
touch(integer total_number)
{
key id = llDetectedKey(0);
if(iInhibe && id != kAva)
llInstantMessage(id, "Désolé mais le menu est déjà utilisé...");
else
set_menu(id, "Choisissez une option", MAIN_MENU);
}
listen(integer channel, string name, key id, string message)
{
reset_menu();
if(message == "Retour")
set_menu(id, "Choisissez une option", MAIN_MENU);
else if(~llListFindList(MAIN_MENU, [message]))
{
if(message == "Couleur")
set_menu(id, "Choisissez une couleur", COLOR_MENU);
else if(message == "Alpha")
set_menu(id, "Choisissez une transparence", ALPHA_MENU);
}
else if(~llListFindList(COLOR_MENU, [message]))
{
if(message=="Box")
llTextBox(id, "fill in the name", channel); // la textBox apparait 1 seconde, pas le temps de rentrer une information
llInstantMessage(id, "Vous avez choisi l'option " + message); // le message est "Box" bien evidement
set_menu(id, "Choisissez une option", MAIN_MENU);
}
else if(~llListFindList(ALPHA_MENU, [message]))
{
llSetAlpha(((float)llList2String(ALPHA_MENU,
llListFindList (ALPHA_MENU, [message])) / 100.0), ALL_SIDES);
set_menu(id, "Choisissez une option", MAIN_MENU);
}
}
timer()
{
reset_menu();
llInstantMessage(kAva, "Délai écoulé, désolé...");
}
}