Bonsoir à toutes et tous,
Et oui c'est encore Draco et ses questions sur les scripts. Cherchez pas je suis un indécrottable en script : je bricole mais c'est compliqué, alors créer pensez-vous
Une fois de plus je viens vers vous pour trouver une soluce.
Comme d'hab, j’évolue toujours dans OpenSim et suis toujours dans l'esprit "OpenSim is free" et donc je partage tout ce que je peux.
dernièrement j'ai réalisé un build, en soi pas très exceptionnel : un douche, ben oui on peut avoir envie d'être propre même en virtuel ....
Sa particularité est qu'elle disparait dans le sol et mur (pratique quand on pas beaucoup d'espace). Réalisable grâce à un petit script sorti de derrière les fagots par Bestmomo en 2010.
Je m’arrête un instant... 2010 ?!? je sais pas pour vous, mais je viens de prendre un sacré coup de vieux d'un coup -> Bug !!
Je reprends, je vous le mets ce script ça peut servir à quelqu'un.
​
integer up;
vector startSize;
float endSize = 1.5; //In meters, how long the prim will end up being along it's Z axis.
float rate = 0.1; //In meters, how much it stretches every roughly 0.5 seconds.
curtainTransition()
{
if (up)
{
startSize = llGetScale();
float i;
vector pos = llGetLocalPos();
for (i = startSize.z; i < endSize; i += rate)
{
vector scale = llGetScale();
llSetScale(<scale.x, scale.y, scale.z + rate>);
llSetPos(llGetLocalPos() + <0, 0, - rate / 2> * llGetLocalRot());
}
up = FALSE;
}
else if (!up)
{
float i;
vector pos = llGetLocalPos();
for (i = endSize; i > startSize.z; i -= rate)
{
vector scale = llGetScale();
llSetScale(<scale.x, scale.y, scale.z - rate>);
llSetPos(llGetLocalPos() + <0, 0, rate / 2> * llGetLocalRot());
}
up = TRUE;
}
}
default
{
state_entry()
{
up = TRUE;
startSize = llGetScale();
//llListen(55555, "", NULL_KEY, "curtain"); //Uncomment this if you're using the listen event for activation.
//llListen(55555, "", llGetOwner(), "curtain"); //Uncomment this instead if you only want it to listen to the owner.
}
on_rez(integer start_param)
{
up = TRUE;
startSize = llGetScale();
}
///Below this line are three means of activation. You might want to delete the ones you're not using.
touch_start(integer total_number) //Use this event to make the curtian activate when touched.
{
if (llDetectedKey(0) != llGetOwner()) return; //Uncomment this line to make owner-only.
curtainTransition();
}
link_message(integer sender_num, integer num, string str, key id)
{
if (str == "curtain") curtainTransition(); //Activates the curtains when this prim receives a link message containing "curtain" as the string. To make link_message owner only, that will have to be specified in the script sending the link_message.
}
listen(integer channel, string name, key id, string message)
{
if (message == "curtain") curtainTransition(); //Activates the curtains when it hears "curtain" on channel 55555. (Make sure to uncomment the llListen() line in state_entry() if you're going to use this.)
}
}
Un petit bijou. Bon par contre ma douche à plusieures prims et donc pour chacune ce script ou une variante.
Et c'est là que vient ma question.
Comme le but est de partager, ce serait pas mal de partager ce build aussi. Par contre comme il est commandé à distance, je voudrais que les nouveaux propriétaires puissent modifier le chanel de communication entre le bouton et les différents scripts des différentes prims de ma douche sans avoir à se taper la modif de tous les scripts. Donc je me suis dis que la solution pourrait venir avec une notecard. Une seule information à changer : le numéro du channel que l'on veut.
Ben c'est la mon soucis
Y aurait-il un âme charitable pour compléter ce script, avec explications si possible, pour que le channel à écouter soit récupéré sur une notecard contenue dans l'inventaire de la douche.
Je vous remercie déjà de m'avoir lu. En espérant que certaines ou certains d'entre-vous puisse trouver mon bonheur.
En attendant, je souhaite à toute la commnauté de JOL d'excellentes fêtes de fin d'années.
Draco