[script testé] Double porte coulissante en 1 primitive (vérouillable et sonore)
#1
Wed, 05/04/2017 - 10:47
[script testé] Double porte coulissante en 1 primitive (vérouillable et sonore)
Bonjour,
Un vieux script que j'ai eu un peu de mal à retrouver mais que j'affectionne particulièrement pour la simplicité de sa mise en place et l'absence totale de paramétrage.
//******************************************************** //Ce script à été sélectionné pour vous par YadNi Monde //dans le FORUM SecondLife //Son auteur souhaite qu'il reste gratuit et commenté. //Les commentaires incluent le mode d'emploi et aucune aide //ne sera apportée par YadNi Monde ni par l'auteur. //SI CELA NE VOUS CONVIENT PAS, NE L'UTILISEZ PAS ! //Commentaires traduits et implémentés, script simplifié par Archael Magic pour utilisation francophone //******************************************************** //La double porte coulissante 1 primitive a été écrite par Seagel Neville en Novembre 2006 pour le domaine public // //Bonjour, // //Ceci est pour une double porte coulissant en 1 primitive. //Déposez juste ce script dans une primitive. //Vous pouvez l'ouvrir en la touchant ou en la percuttant. //Par sécurité, elle est vérouillable par le propriétaire. //Après l'avoir déposé, pous pouvez en changer la taille, la couleur et la transparence. //Je vous déconseille de la texturer parce qu'elle a des faces très complexes integer pitch = 5; float TimeInterval = 3.0; integer TouchFlag; integer Holding; integer SecureFlag; Open() { TouchFlag = TRUE; llTriggerSound("0de28e42-de04-4244-b903-46917c693877", 1.0);//UUID de votre son integer i; for(i = 0; i < pitch + 1; i++) { llSetPrimitiveParams([PRIM_TYPE, 0, 0, <0.000000, 1.000000, 0.000000>, 0.949000, <0.000000, 0.000000, 0.000000>, <(float)i/pitch, 1.000000, 0.000000>, <0.000000, 0.000000, 0.000000>]); } llSetTimerEvent(TimeInterval); } Close() { llSetTimerEvent(0); TouchFlag = FALSE; llTriggerSound("0de28e42-de04-4244-b903-46917c693877", 1.0);//UUID de votre son integer i; for(i = pitch - 1; i >= 0 ; i--) { llSetPrimitiveParams([PRIM_TYPE, 0, 0, <0.000000, 1.000000, 0.000000>, 0.949000, <0.000000, 0.000000, 0.000000>, <(float)i/pitch, 1.000000, 0.000000>, <0.000000, 0.000000, 0.000000>]); } } TouchOpen() { if(TouchFlag == FALSE) { Open(); } else { Close(); } } CollideOpen() { if(TouchFlag == FALSE) { Open(); } else { llSetTimerEvent(TimeInterval); } } Init() //ATTENTION Si vous ne mettez pas cette section en commentaire, votre porte reprend un alignement, une forme et une couleur qui ne vous conviendront peut-être pas, à chaque réinitialisation du script //{ // llSetPrimitiveParams([PRIM_MATERIAL, PRIM_MATERIAL_GLASS, PRIM_SIZE, <2.0, 2.7, 0.01>, // PRIM_TYPE, 0, 0, <0.0, 1.0, 0.0>, 0.949, <0.0, 0.0, 0.0>, <0.0, 1.0, 0.0>, <0.0, 0.0, 0.0>, // PRIM_FULLBRIGHT, ALL_SIDES, TRUE, PRIM_ROTATION, <0.7, 0, 0, 0.7>, // PRIM_COLOR, ALL_SIDES, <0.0, 0.0, 0.5>, 0.5, PRIM_POSITION, llGetPos() + (<0, 0, 1.1> * llGetRot()), // PRIM_TEXTURE, ALL_SIDES, "", //UUID de votre texture // <1.0, 1.0, 0.0>, <0.0, 0.0, 0.0>, 0.0]); //} //fin de section { SecureFlag = FALSE; // Pour vérouiller : TRUE } default { state_entry() { Init(); } changed(integer change) { if(change & CHANGED_OWNER) { llResetScript(); } } touch(integer total_number) { if(llDetectedKey(0) == llGetOwner()) { Holding++; if(Holding == 50) { if(SecureFlag == TRUE) { llOwnerSay("Sécurité active"); SecureFlag = TRUE; } else { llOwnerSay("Sécurité désactivée"); SecureFlag = FALSE; } } } } touch_end(integer total_number) { Holding = 0; if(SecureFlag == FALSE) { TouchOpen(); } else { if(llDetectedKey(0) == llGetOwner()) { TouchOpen(); } else { llWhisper(0, "Désolé, cette porte est vérouillée."); } } } collision_start(integer num_detected) { if(SecureFlag == FALSE) { CollideOpen(); } else { if(llDetectedKey(0) == llGetOwner()) { CollideOpen(); } else { llWhisper(0, "Désolé, cette porte est vérouillée."); llSleep(5.0); } } } timer() { Close(); } }