Forums

Help login failed by Plash on Thursday, 26.April 2012 18:22
Second Life connection impossible by Doggy on Thursday, 26.April 2012 17:25
Breedable pets et animals Second Life by aden on Saturday, 31.March 2012 19:13
Shapes Mesh by born Resident on Monday, 20.February 2012 11:20
Tuto Puppeteer by Josiane on Wednesday, 01.February 2012 13:34
Transparence de la tenue by hani amaterasu on Friday, 27.January 2012 22:50
Ajouter des faces, où des arêtes by brucie on Thursday, 26.January 2012 16:02

Qui est online

We have 285 guests online

Publicité SL

Second Life avatars 3d>>

Social



Dialogues dans l'ordre avec suite
User Rating: / 0
PoorBest 
Librairie Scripts
Written by Garmin K   
Tout ceux qui ont programmé des dialogues ont constaté que les boutons sont rarement dans l'ordre voulu ; de plus quand il y a plus de 12 options, il faut assumer.
Ce script montre comment résoudre ces problèmes ; c'est une base, à vous de l'améliorer

 

//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
    }
}

 

 


Mettre le script dans un cube et cliquer le cube. Ensuite ... étudier sérieusement.

 

 

Add comment

Si vous ne voyez pas vos messages c est que vous n êtes pas enregistré sur Avatars-3d en tant que membre. Ils seront examinés par un administrateur avant d être publié! Si vous désirez publier rapidement vos messages enregistrez vous ici

Security code
Refresh