Je peux faire ça, en effet ce serait plus joli. Je m'y met et je te redis
EDIT : Bon j'ai essayer rapidement et franchement c'est pas très joli.
La fonction llSetPrimitiveParams fait dormir le script pendant 0.2 seconde et donc ça donne un effet saccader du plus mauvais gout.
C'est dommage, mais c'est impossible à faire sans cet effet.
Je m'était déjà heurter à ce problème en essayant de faire rayonner un objet de façon progressive. C'était trop laid! J'ai préférer que ce soit instantané.
// La porte commence fermée
integer OpenClose = 0;
default
{
// Quand on touche la Prim
touch_start(integer total_number)
{
// Si la porte est fermée...
if (OpenClose == 0)
{
// On l'ouvre en créant un creux.
llSetPrimitiveParams([PRIM_TYPE,
PRIM_TYPE_BOX,
PRIM_HOLE_DEFAULT, // forme du trou
<0.00, 1.0, 0.0>, // découpe
0.05, // creux
<0.0, 0.0, 0.0>, // torsion
<1.0, 1.0, 0.0>, // différence de taille
<0.0, 0.0, 0.0> // différence d'inclinaison
]);
llSetPrimitiveParams([PRIM_TYPE,
PRIM_TYPE_BOX,
PRIM_HOLE_DEFAULT, // forme du trou
<0.00, 1.0, 0.0>, // découpe
0.1, // creux
<0.0, 0.0, 0.0>, // torsion
<1.0, 1.0, 0.0>, // différence de taille
<0.0, 0.0, 0.0> // différence d'inclinaison
]);
llSetPrimitiveParams([PRIM_TYPE,
PRIM_TYPE_BOX,
PRIM_HOLE_DEFAULT, // forme du trou
<0.00, 1.0, 0.0>, // découpe
0.15, // creux
<0.0, 0.0, 0.0>, // torsion
<1.0, 1.0, 0.0>, // différence de taille
<0.0, 0.0, 0.0> // différence d'inclinaison
]);
llSetPrimitiveParams([PRIM_TYPE,
PRIM_TYPE_BOX,
PRIM_HOLE_DEFAULT, // forme du trou
<0.00, 1.0, 0.0>, // découpe
0.2, // creux
<0.0, 0.0, 0.0>, // torsion
<1.0, 1.0, 0.0>, // différence de taille
<0.0, 0.0, 0.0> // différence d'inclinaison
]);
llSetPrimitiveParams([PRIM_TYPE,
PRIM_TYPE_BOX,
PRIM_HOLE_DEFAULT, // forme du trou
<0.00, 1.0, 0.0>, // découpe
0.25, // creux
<0.0, 0.0, 0.0>, // torsion
<1.0, 1.0, 0.0>, // différence de taille
<0.0, 0.0, 0.0> // différence d'inclinaison
]);
llSetPrimitiveParams([PRIM_TYPE,
PRIM_TYPE_BOX,
PRIM_HOLE_DEFAULT, // forme du trou
<0.00, 1.0, 0.0>, // découpe
0.3, // creux
<0.0, 0.0, 0.0>, // torsion
<1.0, 1.0, 0.0>, // différence de taille
<0.0, 0.0, 0.0> // différence d'inclinaison
]);
llSetPrimitiveParams([PRIM_TYPE,
PRIM_TYPE_BOX,
PRIM_HOLE_DEFAULT, // forme du trou
<0.00, 1.0, 0.0>, // découpe
0.35, // creux
<0.0, 0.0, 0.0>, // torsion
<1.0, 1.0, 0.0>, // différence de taille
<0.0, 0.0, 0.0> // différence d'inclinaison
]);
llSetPrimitiveParams([PRIM_TYPE,
PRIM_TYPE_BOX,
PRIM_HOLE_DEFAULT, // forme du trou
<0.00, 1.0, 0.0>, // découpe
0.4, // creux
<0.0, 0.0, 0.0>, // torsion
<1.0, 1.0, 0.0>, // différence de taille
<0.0, 0.0, 0.0> // différence d'inclinaison
]);
llSetPrimitiveParams([PRIM_TYPE,
PRIM_TYPE_BOX,
PRIM_HOLE_DEFAULT, // forme du trou
<0.00, 1.0, 0.0>, // découpe
0.45, // creux
<0.0, 0.0, 0.0>, // torsion
<1.0, 1.0, 0.0>, // différence de taille
<0.0, 0.0, 0.0> // différence d'inclinaison
]);
llSetPrimitiveParams([PRIM_TYPE,
PRIM_TYPE_BOX,
PRIM_HOLE_DEFAULT, // forme du trou
<0.00, 1.0, 0.0>, // découpe
0.5, // creux
<0.0, 0.0, 0.0>, // torsion
<1.0, 1.0, 0.0>, // différence de taille
<0.0, 0.0, 0.0> // différence d'inclinaison
]);
llSetPrimitiveParams([PRIM_TYPE,
PRIM_TYPE_BOX,
PRIM_HOLE_DEFAULT, // forme du trou
<0.00, 1.0, 0.0>, // découpe
0.55, // creux
<0.0, 0.0, 0.0>, // torsion
<1.0, 1.0, 0.0>, // différence de taille
<0.0, 0.0, 0.0> // différence d'inclinaison
]);
llSetPrimitiveParams([PRIM_TYPE,
PRIM_TYPE_BOX,
PRIM_HOLE_DEFAULT, // forme du trou
<0.00, 1.0, 0.0>, // découpe
0.6, // creux
<0.0, 0.0, 0.0>, // torsion
<1.0, 1.0, 0.0>, // différence de taille
<0.0, 0.0, 0.0> // différence d'inclinaison
]);
llSetPrimitiveParams([PRIM_TYPE,
PRIM_TYPE_BOX,
PRIM_HOLE_DEFAULT, // forme du trou
<0.00, 1.0, 0.0>, // découpe
0.65, // creux
<0.0, 0.0, 0.0>, // torsion
<1.0, 1.0, 0.0>, // différence de taille
<0.0, 0.0, 0.0> // différence d'inclinaison
]);
llSetPrimitiveParams([PRIM_TYPE,
PRIM_TYPE_BOX,
PRIM_HOLE_DEFAULT, // forme du trou
<0.00, 1.0, 0.0>, // découpe
0.7, // creux
<0.0, 0.0, 0.0>, // torsion
<1.0, 1.0, 0.0>, // différence de taille
<0.0, 0.0, 0.0> // différence d'inclinaison
]);
llSetPrimitiveParams([PRIM_TYPE,
PRIM_TYPE_BOX,
PRIM_HOLE_DEFAULT, // forme du trou
<0.00, 1.0, 0.0>, // découpe
0.75, // creux
<0.0, 0.0, 0.0>, // torsion
<1.0, 1.0, 0.0>, // différence de taille
<0.0, 0.0, 0.0> // différence d'inclinaison
]);
llSetPrimitiveParams([PRIM_TYPE,
PRIM_TYPE_BOX,
PRIM_HOLE_DEFAULT, // forme du trou
<0.00, 1.0, 0.0>, // découpe
0.8, // creux
<0.0, 0.0, 0.0>, // torsion
<1.0, 1.0, 0.0>, // différence de taille
<0.0, 0.0, 0.0> // différence d'inclinaison
]);
llSetPrimitiveParams([PRIM_TYPE,
PRIM_TYPE_BOX,
PRIM_HOLE_DEFAULT, // forme du trou
<0.00, 1.0, 0.0>, // découpe
0.85, // creux
<0.0, 0.0, 0.0>, // torsion
<1.0, 1.0, 0.0>, // différence de taille
<0.0, 0.0, 0.0> // différence d'inclinaison
]);
llSetPrimitiveParams([PRIM_TYPE,
PRIM_TYPE_BOX,
PRIM_HOLE_DEFAULT, // forme du trou
<0.00, 1.0, 0.0>, // découpe
0.9, // creux
<0.0, 0.0, 0.0>, // torsion
<1.0, 1.0, 0.0>, // différence de taille
<0.0, 0.0, 0.0> // différence d'inclinaison
]);
llSetPrimitiveParams([PRIM_TYPE,
PRIM_TYPE_BOX,
PRIM_HOLE_DEFAULT, // forme du trou
<0.00, 1.0, 0.0>, // découpe
0.95, // creux
<0.0, 0.0, 0.0>, // torsion
<1.0, 1.0, 0.0>, // différence de taille
<0.0, 0.0, 0.0> // différence d'inclinaison
]);
llSetPrimitiveParams([PRIM_TYPE,
PRIM_TYPE_BOX,
PRIM_HOLE_DEFAULT, // forme du trou
<0.00, 1.0, 0.0>, // découpe
1, // creux
<0.0, 0.0, 0.0>, // torsion
<1.0, 1.0, 0.0>, // différence de taille
<0.0, 0.0, 0.0> // différence d'inclinaison
]);
// On dit au script que la porte est maintenant ouverte.
OpenClose = 1;
// Et on lance un timer pour la fermeture automatique
llSetTimerEvent(10); // Remplacez 10 par ce que vous voulez (en secondes)
}
// Sinon si la porte est ouverte...
else if (OpenClose == 1)
{
// On la referme en "bouchant" le creux.
llSetPrimitiveParams([PRIM_TYPE,
PRIM_TYPE_BOX,
PRIM_HOLE_DEFAULT, // forme du trou
<0.00, 1.0, 0.0>, // découpe
0.0, // creux
<0.0, 0.0, 0.0>, // torsion
<1.0, 1.0, 0.0>, // différence de taille
<0.0, 0.0, 0.0> // différence d'inclinaison
]);
// Et on dit au script que la porte est maintenant fermée.
OpenClose = 0;
// Ne pas toucher! On arreter le timer quand il ne sert plus à rien
llSetTimerEvent(0);
}
}
// Evénement déclenché par le timer
timer()
{
// On referme la porte en "bouchant" le creux.
llSetPrimitiveParams([PRIM_TYPE,
PRIM_TYPE_BOX,
PRIM_HOLE_DEFAULT, // forme du trou
<0.00, 1.0, 0.0>, // découpe
0.0, // creux
<0.0, 0.0, 0.0>, // torsion
<1.0, 1.0, 0.0>, // différence de taille
<0.0, 0.0, 0.0> // différence d'inclinaison
]);
// Et on dit au script que la porte est maintenant fermée.
OpenClose = 0;
// Ne pas toucher! On arreter le timer quand il ne sert plus à rien
llSetTimerEvent(0);
}
}