//This part is to be deleted ; only needed to generate buttons in big quantity //ceci est a effacer ; seulement utilisé pour générer une grande quantité de boutons integer iNbBut = 41; // vary it to test // Varier pour tester prepar() { lNameBut = []; integer i = 0; for(i = 1; i<=iNbBut; i++) { lNameBut = (lNameBut=[]) + lNameBut + ["Bout " + (string) i]; } } //Function that puts buttons in "correct" human-readable order without relying on intelligent higher order list functions ~ Redux {Copied from a wiki} list order_buttons(list buttons) { return llList2List(buttons, -3, -1) + llList2List(buttons, -6, -4) + llList2List(buttons, -9, -7) + llList2List(buttons, -12, -10); }
integer iPtrList = 0; // Attention // Zeroed it before 1st call (see Touch event)// Remettre à 0 avant le 1er appel (voir l'event Touch) key kAgentTouch; //Attention // Copy in it the key used for the first call (see Touch event)// Y copier le key du 1er appel (voir l'event Touch)
//Function used to cut the list in segment of 11 elements and add the "next" button // Fonction pour découper la list en segment de 11 éléments et ajouter le bouton "suivant" list cut_list(list lBut) { list lSubList; integer iLsub = 12; if(iPtrList + 12 < llGetListLength(lBut)) { lSubList = llList2List(lBut, iPtrList, iPtrList + 10); lSubList = (lSubList=[]) + lSubList + ["Suiv/Next"]; iPtrList += 11; } else { lSubList = llList2List(lBut, iPtrList, llGetListLength(lBut) - 1); } return lSubList; } ////////////////////////////////////////////// integer iChannel = -45327; list lNameBut = ["S/s Sol", "RDC", "2nd Floor", "Himmel"]; // This is the message to be displayed by the dialog box // Ceci est le message à afficher dans la boîte de dialogue string sMessage;
default { state_entry() { prepar(); llListen(iChannel, "", NULL_KEY, ""); }
touch_start(integer iPNumb) { ///////////////////////////////////// kAgentTouch = llDetectedKey(0); iPtrList = 0; //////////////////////////////////// sMessage = "Appuyez sur le bouton correspondant au numéro\nPress the button corresponding to the number"; llDialog(kAgentTouch, sMessage, order_buttons(cut_list(lNameBut)), iChannel); // Combination of the 2 functions // Combinaison des 2 fonctions } listen(integer iChan, string sName, key kId, string sOption) { llOwnerSay(sName + " (" + (string)kId + ") a choisi l'option " + sOption); if(sOption == "Suiv/Next") { llDialog(kAgentTouch, sMessage, order_buttons(cut_list(lNameBut)), iChannel); //Following llDialog are exactly as the 1st // Les lldialog suivants sont comme le 1er } //Continuer ensuite avec les tests des valeurs des boutons else if(sOption == "ceci ou cela") { //Faire l'action requise } //etc etc } }
|