[script testé] Porte SCI-FI automatique en forme d'iris

2 posts / 0 new
Last post
#1 Fri, 22/03/2013 - 08:39
No picture available
Archael Magic

[script testé] Porte SCI-FI automatique en forme d'iris

Il y a quelques temps de cela, je voulais créer une porte SCI-FI en forme d'iris pour cloisonner des coursives tubulaires ... Je suis allé chercher un script sur SL qui fonctionnait sur cette grid, Hélas, le résultat n'était pas convenable une fois importé sur OpenSim. Je me suis arraché les cheveux pendant un bon bout de temps sur cette problématique et c'est Claudius Utopy qui m'a apporté la solution que je vais vous transmettre ici, avec son accord.

Donc, pour faire une porte iris qui soit automatique, nous allons avoir besoin de 2 primitives. Commençons donc par la porte. Créez un tore que vous renommerez en Sas_001. Applatissez et étirez ce tore de façon à obtenir une sorte de grosse rondelle plate aux dimensions prévues de votre porte. Ouvrez l'onglet contenu, cliquez sur "nouveau script" et remplassez le contenu du script par celui-ci :

Porte :

integer ecou;
float nume;
float ouve;

//=======================================================

default
{
state_entry()
{
llSetPrimitiveParams([PRIM_TYPE, PRIM_TYPE_TORUS, 0, <0.0, 1.0, 0.0>, 0.0, <0.0, 0.0, 0.0>, <1.0, 0.5, 0.0>, <0.0, 0.0, 0.0>, <0.0, 1.0, 0.0>, <0.0, 0.0, 0.0>, 1.0, 0.0, 0.0]);
state Ecoute;
}
}

//=======================================================
state Ecoute
{
state_entry()
{
ecou=llListen(-1789, "Pad_001", "", "Ouvrir");
}

listen(integer cana,string nomm,key clef,string opti)
{
state Porte;
}
}

//=======================================================

state Porte
{
state_entry()
{ {llPlaySound("servo",0.9);}
for(nume=0;nume<=50;nume=nume+5)
{
ouve=0.51-(float)(nume/100);
llSetPrimitiveParams([PRIM_TYPE, PRIM_TYPE_TORUS, 0, <0.0, 1.0, 0.0>, 0.0, <0.0, 0.0, 0.0>, <1.0, ouve, 0.0>, <0.0, 0.0, 0.0>, <0.0, 1.0, 0.0>, <0.0, 0.0, 0.0>, 1.0, 0.0, 0.0]);
}
llSetPrimitiveParams([PRIM_TYPE, PRIM_TYPE_TORUS, 0, <0.0, 1.0, 0.0>, 0.0, <0.0, 0.0, 0.0>, <1.0, 0.01, 0.0>, <0.0, 0.0, 0.0>, <0.0, 1.0, 0.0>, <0.0, 0.0, 0.0>, 1.0, 0.0, 0.0]);
llSleep (5.0);
{llPlaySound("servo",0.9);}
for(nume=0;nume<=50;nume=nume+5)
{
ouve=0.01+(float)(nume/100);
llSetPrimitiveParams([PRIM_TYPE, PRIM_TYPE_TORUS, 0, <0.0, 1.0, 0.0>, 0.0, <0.0, 0.0, 0.0>, <1.0, ouve, 0.0>, <0.0, 0.0, 0.0>, <0.0, 1.0, 0.0>, <0.0, 0.0, 0.0>, 1.0, 0.0, 0.0]);
}
llSetPrimitiveParams([PRIM_TYPE, PRIM_TYPE_TORUS, 0, <0.0, 1.0, 0.0>, 0.0, <0.0, 0.0, 0.0>, <1.0, 0.50, 0.0>, <0.0, 0.0, 0.0>, <0.0, 1.0, 0.0>, <0.0, 0.0, 0.0>, 1.0, 0.0, 0.0]);

state Ecoute;
}
}

Nous avons donc une ébauche de porte prête à l'emploi ... Tournons nous maintenant vers le déclancheur de cette porte qui, rappelons le s'ouvrira à l'approche d'un personnage. En fait, la façon la plus simple est de faire une dalle qui enverra à la porte l'ordre de s'ouvrir quand un personnage marchera dessus. Créez donc un cube que vous applatissez et étirez de façon à ce qu'il recouvre le sol sur la surface voulue de déclenchement ... Idéalement, votre déclencheur s'étendra des deux côtés de la porte de façon à ce qu'un personnage puisse passer la porte dans les deux sens ... Renommez votre cube en Pad_001. Ouvrez l'onglet contenu. Cliquez sur "nouveau script". Remplacez le contenu du script par celui-ci :

Pad :

key avat; list Avat;
integer posi;


default
{
state_entry()
{
state Porte;
}
}

state Porte
{
state_entry()
{
llSetTimerEvent(10);
}

collision_start(integer c)
{
if(llDetectedKey(0)!=avat)
{
avat=llDetectedKey(0);
llSay(-1789,"Ouvrir");
}

}

timer()
{
avat="";
}

}

Certains demanderont, pourquoi on a utilisé un canal d'écoute négatif ... En fait, pour alléger l'impact de ce script sur les serveur, nous avons ici opté pour un canal fixe. Le nom des Sas et des Pad est important. En effet dans l'exemple ci-dessus, les deux ont reçu le numéro 001. Si vous voulez mettre plusieurs sas s'ouvrant chacun avec un pad différent, il suffit de changer le numéro en 002, 003 etc ce qui permet l'installation d'une centaine de portes. Il est à noter que dans le script de la porte, on écoute le pad et donc le nom qui lui est attribué, si vous installez deux portes indépendantes n'oubliez donc pas de changer le nom du pad à écouter dans le script de la porte. Le pad pourra être, selon vos besoins, rendu invisible avec une texture adéquate.

Dans l'exemple ci-dessus on notera aussi que j'ai mis un son nommé servo ... à vous de mettre le vôtre, il vous suffit pour cela de prendre un fichier son que vous mettez dans l'onglet "contenu" de la porte et, soit de renommer votre fichier son en "servo", soit de changer le nom du fichier dans le script ...

Bonne utilisation et n'hésitez pas à repporter ci-après vos remarques et difficultés d'utilisation, je me ferai un plaisir d'essayer de répondre dans la mesure de mes capacités

Fri, 22/03/2013 - 13:19
No picture available
Cheops Forlife7

J'adore cette façon de

J'adore cette façon de présenter un script, on dirait une recette de cuisine (tournure descriptive imagée quasi-gourmande, valorisation des ingrédients... de quoi réconcilier bien des users avec le scriptage? ;-0))