Voici un script efficace et instructif pour allumer et éteindre une lampe (lampe de chevet, ampoule, plafonnier, lampadaire) en touchant l'objet (clique gauche). Ce script est proposé en liaison avec le tutoriel de Surfaqua Oh : lampe de chevet

 

// Simple controleur de lumiere par commande par touch (clique gauche sur l'objet)

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

integer bState = TRUE; //indicateur de l'état de la lampe ; TRUE = allumée ; FALSE = éteinte

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
}
//L'initialisation du script est terminée ; plus rien ne se passe tant que l'on ne touche pas l'objet

touch_start(integer iNbrTouch) //déclencher si quelqu'un touche l'objet
{
if(llDetectedKey(0) == kOwner) //Pour que le propriétaire de la lampe soit le seul à allumer la lampe, on vérifie que la clé de celui qui a touché ets égale à la clé du propriétaire
{
if(bState == FALSE) //si le lampe est éteinte, il faut l'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
bState = TRUE; //indiquer que la lampe est allumée
}
else //sinon la lampe est allumée, il faut l'éteindre
{
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
bState = FALSE; //Indiquer que la lampe est éteinte
}
}
}

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 donnant un ordre dans le chat ; en fonction du jour et de la nuit
//En fouillant la Librairie Scripts 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. Cliquez avec le bouton gauche pour éteindre et cliquez à nouveau pour allumer. 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