[script testé] porte coulissante automatique avec son par collision

3 posts / 0 new
Last post
#1 Sat, 18/03/2017 - 13:56
No picture available
Archael Magic

[script testé] porte coulissante automatique avec son par collision

Bonjour, Dans le cadre de la création d'une région, je cherchais une porte coulissante automatique qui se déclenche par collision et qui joue un son à l'ouverture et à la fermeture. Ne trouvant pas le script qui me convienne, j'ai retroussé mes manches, bu un café, secoué mes neurones (si si, il m'en reste quelques uns) et j'ai fini par pondre un truc que je partage ici. Il fontionne sur opensim mais libre à vous de le perfectionner si le coeur vous en dit. Dans le cas où vous l'amélioreriez, merci de partager ici le fruit de votre expérience. La manipulation est simple, vous créez une porte, vous la placez en position fermée, vous l'éditez, vous allez dans l'onglet contenu, cliquez sur new script, et insérez ce code : 

//************************************
//************************************
//****  Script par Archael Magic  ****
//**** Totalement libre de droits ****
//************************************
//************************************

vector portepos;                                    //Variable position de la porte.
default
{
    state_entry()
    {
        llOwnerSay("Script porte actif");           //Prévient le propritaire de l'activation du script.
    }
     collision_start(integer total_number)          //Définit que le script réagit à la collision.
    {
        portepos = llGetPos();                      //Vérifie la position de la porte et donne une valeur à la variable.
        portepos = portepos - <0.96593,-0.96597,0>; //Calcule le déplacement de la porte en mètres : - <X,Y,Z>. 
        llPlaySound("servo",0.9);                   //Joue le son de la porte ("nom du fichier son dans la porte", volume).
        llSetPos(portepos);                         //Ouvre la porte. Définit la nouvelle valeur de la variable.
        llSleep (5.0);                              //Fait une pause de (X) secondes.
        portepos = portepos + <0.96593,-0.96597,0>; //Calcule le déplacement de la porte en mètres : + <X,Y,Z>. Referme la porte. 
        llPlaySound("servo",0.9);                   //Joue le son de la porte (on peut mettre un deuxième son dans la porte).
        llSetPos(portepos);                         //Referme la porte. Définit la nouvelle valeur de la variable.
    }
}
// Si vous améliorez ce script, merci de documenter vos améliorations sur le forum de FrancoGrid

il ne vous reste plus qu'à indiquer au script la valeur de vos déplacements aux lignes 18 et 22 (dans l'exemple ci-dessus, la porte est en diagonale), enregistrer le script et ça marche. Ne pas lier vos portes ! J'ai essayé de documenter chaque ligne de façon à en simplifier l'usage pour les plus néophytes d'entre nous. Seul bémol, ce script ne déplacera pas votre porte de plus de 10 mètres. Bonne utilisation à vous !

Thu, 30/03/2017 - 04:52
No picture available
Praline B

Merci !

Rooooooooo je suis toujours impressionnée par tes neurones ! Merci je testerais ! ;)

Sat, 08/04/2017 - 18:07
No picture available
Archael Magic

Comme je ne comprenais pas

Comme je ne comprenais pas pourquoi ce script refusait de déplacer mes objets à plus de 10 mètres, je me suis renseigné et j'ai trouvé ...

Par mesure de sécurité, pour éviter de perdre ses primitives quand on build, l'opensim.ini limite les déplacements d'objets à 10m par script, pour augmenter cette distance, il suffit de modifier cette ligne :

;; The factor the 10 m distances limits are multiplied by
     ScriptDistanceLimitFactor = 1.0

chaque uniqué équivaut à 10 mètres, donc là où par défaut il y a 1.0, il suffit de mettre 20.0 pour pouvoir déplacer ses objets à 200 mètres. J'ai testé, ça fonctionne !