[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();
}
}