// 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.
|