Voici un script efficace et instructif pour allumer et éteindre une lampe (lampe de chevet, ampoule, plafonnier, lampadaire) avec des commandes dans le chat public. Ce script est proposé en liaison avec le tutoriel de Surfaqua Oh : lampe de chevet

 

// Simple controleur de lumiere par commande dans le chat local
// Ecrire allumer pour donner de la lumiere et eteindre pour l'enlever.

vector vLightColor = <1.0, 1.0, 0.5>; //La couleur de la lumière émise (pas la couleur de la lampe)
float fIntensity = 1.0; // Agit comme un variateur de lumière pour ajuster le flux
float fRadius = 3.0; //C'est la distance de pleine intensité mesurée à partir de l'ampoule
float fDimming = 1.0; //C'est l'atténuation de la lumière ; 0.0 pleine lumière quelque soit la distance ; 2.0 très atténuée par la distance
//En ajustant les 3 paramètres on obtient le bon effet

float fGlow = 0.02; //C'est la brillance de la lampe, ne pas abuser!

vector vColorOn = <1.0, 1.0, 1.0>; //C'est un ajout de couleur quand on allume
vector vColorOff = <0.7, 0.7, 0.7>; //C'est la'jout de couleur quand on éteint

key kOwner; //la clé unique du propriétaire de la lampe ; ça sert à empêcher les autres de jouer avec

default
{
state_entry()
{
llWhisper(0, "Lumière allumée"); //au lancement du script, indique que l'on démarre avec la lampe allumée
//Cette instruction paramètre la lampe lorsqu'elle est allumée ; les commande sont à l'intérieure d'une liste, d'où les [...]
llSetPrimitiveParams ([PRIM_POINT_LIGHT, TRUE, vLightColor, fIntensity, fRadius, fDimming, PRIM_FULLBRIGHT, ALL_SIDES, TRUE, PRIM_GLOW, ALL_SIDES, fGlow]);
//PRIM_POINT_LIGHT : définit la lumière projetée par la lampe sur le reste du décor ; correspond à la partie lumière de l'onglet Attributs de la fenêtre de modification
//PRIM_FULLBRIGHT : définit la luminosité de la lampe ; correspond à la case Lumineux de l'onglet Texture de la fenêtre de modification
//PRIM_GLOW : définit le rayonnement de la lampe ; correspond à la case Rayonnement de l'onglet Texture de la fenêtre de modification
//TRUE : c'est quand la case correspondante est cochée
//FALSE : c'est quand la case correspondante n'est pas cochée
//ALL_SIDES : affecte toutes les faces de l'objet
//autres paramètres : voir en début de programme

llSetColor(vColorOn,ALL_SIDES); //place une ajout de couleur blanche quand la lampe est allumée
kOwner = llGetOwner(); //La clé unique du propriétaire est mémorisée
llListen(0,"",kOwner,"allumer"); // on écoute sur le chat publique le mot "allumer"
llListen(0,"",kOwner,"eteindre"); // on écoute sur le chat publique le mot "eteindre"
}
//L'initialisation du script est terminée ; plus rien ne se passe tant que l'un des 2 mots n'est pas écrit

listen(integer iChannel, string sName, key kId, string sMessage) //un des 2 mots a été détecté
{
if (sMessage == "allumer") //si c'est "allumer"
{
llSetColor(vColorOn,ALL_SIDES); //place une ajout de couleur blanche quand la lampe est allumée
llSetPrimitiveParams ([PRIM_POINT_LIGHT, TRUE, vLightColor, fIntensity, fRadius, fDimming, PRIM_FULLBRIGHT, ALL_SIDES, TRUE, PRIM_GLOW, ALL_SIDES, fGlow]); //voir la même instruction plus haut
}
if (sMessage == "eteindre") //si c'est "eteindre"
{
llSetColor(vColorOff,ALL_SIDES); //place une ajout de couleur grise quand la lampe est allumée
llSetPrimitiveParams ([PRIM_POINT_LIGHT, FALSE, vLightColor, fIntensity, fRadius, fDimming, PRIM_FULLBRIGHT, ALL_SIDES, FALSE, PRIM_GLOW, ALL_SIDES, 0.0]); //voir la même instruction plus haut
}
}

on_rez(integer iPNumb) //lorsque la lampe est sortie de l'inventaire
{
llResetScript(); //le script est réinitialisé
}
}
//Il existe d'autres moyens pour éteindre/allumer la lampe ; en la touchant avec l'évènement touch ; en fonction du jour et de la nuit
//En fouillant la Librairie Scripts de http://www.avatars-3d.com/index.php/fr/script-lsl/lsl-script-tutoriel vous trouverez de tels scripts.

 

 


Les commentaires vous expliquent les bases nécessaires pour obtenir le résultat ; placer ce script dans la racine de l'objet ou dans la prim qui fait office d'ampoule. Tapez eteindre dans le chat public et inversement allumer dans le même chat. A vous maintenant, une fois le mécanisme compris, de l'améliorer et de l'adapter dans vos créations.

Dans le Librairie Script vous trouverez 2 autres scripts proposant des mécanismes différents d'allumage : Lampe de chevet automatique - Lamp avec Commande par touch et Lampe de chevet - Commande vocale