Un petit script matinal pour dérouiller les doigts.
J'ai repris des éléments du script d'Elenia et j'ai ajouté ce que tu demandes. Par contre il n'y a plus de gestion des avatars pour donner une seule fois étant donné que le cadeau change. Pour gérer le cadeau unique avec la multiplicité des cadeaux ça serait un peu plus compliqué  .
Par contre l'avatar ne reçoit qu'un cadeau même s'il reste encore le délai imparti. Ca serait facile à changer.
Pas de test de groupe non plus, il le faut ?
Je n'ai pas testé et codage rapide donc peut-être des bugs qui traînent...
// ************* // Paramètres // *************
// Texte flottant string sText = "Sit on me to get a gift"; // Dossier pour mettre les cadeaux dans l'inventaire string sFolder = "Moanas's gifts"; // Délai de présence assise en minutes integer i_time_assis = 5; // Délai de changement de cadeau en minutes integer i_time_cadeau = 5;
// ********************** // Variables globales // **********************
// Liste des noms des cadeaux list lCadeaux; // Index qui pointe le cadeau integer iIndex; // Début assise float f_assise_start; // Repère temporel pour changement de cadeau float f_cadeau_start; // Clé de l'avatar key k_ava;
// Initialisation init(){ // Remplissage de la liste des cadeaux lCadeaux = []; integer nb = llGetInventoryNumber(INVENTORY_ALL); string nomscript = llGetScriptName(); integer i; for (; i < nb ; i++){ string item = llGetInventoryName(INVENTORY_ALL, i); if (item != nomscript) lCadeaux += [item]; } // Initialisation index iIndex = 0; // Repère temporel pour cadeau f_cadeau_start = llGetTime(); // Initialisation tempo avatar f_assise_start = .0; // Départ timer llSetTimerEvent(60.0); }
default { state_entry(){ // Texte flottant llSetText(sText, <1.0, 1.0, 1.0>, 1.0); // Point d'assise (indispensable à décommenter au besoin) // llSitTarget(<0.0, 0.0, 0.1>, ZERO_ROTATION); init(); }
on_rez(integer numb){ init(); }
changed(integer change) { if (change & CHANGED_LINK) { // Clé de l'avatar k_ava = llAvatarOnSitTarget(); // Avatar présent if (k_ava) { llSay(0, "Hello " + llKey2Name(k_ava) + ", you'll get a gift in " + (string)i_time_assis + " minutes"); f_assise_start = llGetTime(); } // Avatar absent else f_assise_start = 0; } // Changement dans l'inventaire else if (change & CHANGED_INVENTORY) init(); }
timer() { // Avatar présent ? if(f_assise_start != .0) { // Test de durée d'assise if(llGetTime() - f_assise_start >= (float)i_time_assis) { // Reset assise f_assise_start = .0; // Cadeau llGiveInventoryList(k_ava, sFolder, [llList2String(lCadeaux, iIndex)]); } } // Test pour le changement du cadeau if(llGetTime() - f_cadeau_start >= (float)i_time_cadeau) { f_cadeau_start = llGetTime(); if(++iIndex > llGetListLength(lCadeaux)) iIndex = 0; } } }
|