Dracsoom
by Draconis Exonar
//pour faire croire un mouvement, un radar ou tout autre effet en loop, voici le script de base pour animer vos textures :
// les modifs a faire :
//chiffre rouge le nombre de colonnes de votre texture
//le chiffre bleu nombre de lignes de votre texture
// le chiffre vert la vitesse de l'animation
 
default
{
state_entry()
  {
llSetTextureAnim(ANIM_ON | LOOP, ALL_SIDES,6,4,0,0,8.0);
  }
}
Textures animées
//This is to delete objects by touch. Place this script in an object you wish to have self delete. This will self delete when anyone touches it.
 
//This is nice for experiments that go a bit wild and get in people's way, that way they can delete the object. Also if you lose an object that has this you likely don't have to worry too much about tracking it down. But still if you lose an object you should make every effort to find it so it's not in someone's way.
 

123//remove the 123 to be able to use this script. Just delete the numbers and make sure running in the lower left is checked and hit save.
 
//Make sure you save a copy of this script and all others in this package before removing the 123.
 
default
{
    state_entry()
    {
        llSetText("Touch Me To Delete!",<255,255,255>,100);
    }
 
    touch_start(integer total_number)
    {
        llDie();
    }
}
Touch Die
//=============================
//associez ce script a la texture rain dispo dans l'onglet textures
//=============================
// Mask Flags - set to TRUE to enable
integer glow = TRUE; // Make the particles glow
integer bounce = FALSE; // Make particles bounce on Z plan of object
integer interpColor = TRUE; // Go from start to end color
integer interpSize = TRUE; // Go from start to end size
integer wind = FALSE; // Particles effected by wind
integer followSource = FALSE; // Particles follow the source
integer followVel = TRUE; // Particles turn to velocity direction
// Choose a pattern from the following:
// PSYS_SRC_PATTERN_EXPLODE
// PSYS_SRC_PATTERN_DROP
// PSYS_SRC_PATTERN_ANGLE_CONE_EMPTY
// PSYS_SRC_PATTERN_ANGLE_CONE
// PSYS_SRC_PATTERN_ANGLE
integer pattern = PSYS_SRC_PATTERN_ANGLE_CONE;
// Select a target for particles to go towards
// "" for no target, "owner" will follow object owner
// and "self" will target this object
// or put the key of an object for particles to go to
key target = "";
// Particle paramaters
float age = 2.0; // Life of each particle
float maxSpeed = 2.0; // Max speed each particle is spit out at
float minSpeed = 1.0; // Min speed each particle is spit out at
string texture; // Texture used for particles, default used if blank
float startAlpha = 1; // Start alpha (transparency) value
float endAlpha = 1; // End alpha (transparency) value
vector startColor = <1,1,1>; // Start color of particles <R,G,B>
vector endColor = <1,1,1>; // End color of particles <R,G,B> (if interpColor == TRUE)
vector startSize = <0.1,0.2,0.1>; // Start size of particles
vector endSize = <0.1,0,0>; // End size of particles (if interpSize == TRUE)
vector push = <0,0,0>; // Force pushed on particles
 
// System paramaters
float rate = 0.2; // How fast (rate) to emit particles
float radius = 0.10
; // Radius to emit particles for BURST pattern
integer count = 100; // How many particles to emit per BURST
float outerAngle = 10
; // Outer angle for all ANGLE patterns
float innerAngle = 0.3; // Inner angle for all ANGLE patterns
float beginAngle = 0.3; // Angle Begin for all ANGLE patterns
float endAngle = 0; //Angle End for all ANGLE patterns
vector omega = <0,0,0>; // Rotation of ANGLE patterns around the source
float life = 0; // Life in seconds for the system to make particles
// Script variables
integer flags;
updateParticles()
{
flags = 0;
if (target == "owner") target = llGetOwner();
if (target == "self") target = llGetKey();
if (glow) flags = flags | PSYS_PART_EMISSIVE_MASK;
if (bounce) flags = flags | PSYS_PART_BOUNCE_MASK;
if (interpColor) flags = flags | PSYS_PART_INTERP_COLOR_MASK;
if (interpSize) flags = flags | PSYS_PART_INTERP_SCALE_MASK;
if (wind) flags = flags | PSYS_PART_WIND_MASK;
if (followSource) flags = flags | PSYS_PART_FOLLOW_SRC_MASK;
if (followVel) flags = flags | PSYS_PART_FOLLOW_VELOCITY_MASK;
if (target != "") flags = flags | PSYS_PART_TARGET_POS_MASK;
llParticleSystem([ PSYS_PART_MAX_AGE,age,
PSYS_PART_FLAGS,flags,
PSYS_PART_START_COLOR, startColor,
PSYS_PART_END_COLOR, endColor,
PSYS_PART_START_SCALE,startSize,
PSYS_PART_END_SCALE,endSize,
PSYS_SRC_PATTERN, pattern,
PSYS_SRC_BURST_RATE,rate,
PSYS_SRC_ACCEL, push,
PSYS_SRC_BURST_PART_COUNT,count,
PSYS_SRC_BURST_RADIUS,radius,
PSYS_SRC_BURST_SPEED_MIN,minSpeed,
PSYS_SRC_BURST_SPEED_MAX,maxSpeed,
PSYS_SRC_TARGET_KEY,target,
PSYS_SRC_INNERANGLE,innerAngle,
PSYS_SRC_OUTERANGLE,outerAngle,
PSYS_SRC_ANGLE_BEGIN,beginAngle,
PSYS_SRC_ANGLE_END,endAngle,
PSYS_SRC_OMEGA, omega,
PSYS_SRC_MAX_AGE, life,
PSYS_SRC_TEXTURE, texture,
PSYS_PART_START_ALPHA, startAlpha,
PSYS_PART_END_ALPHA, endAlpha
]);
}
default
{
state_entry()
{
updateParticles();
}
}
Douche
integer glow = TRUE;            // Donne de l'eclat aux particules
integer bounce = FALSE;          // Donne du bond aux particules selon l'axe Z de l'objet
integer interpColor = TRUE;     // Va du debut a la fin des couleurs
integer interpSize = TRUE;      // Va du debut a la fin des dimensions
integer wind = FALSE;           // Les particules sont soumises a la force du vent
integer followSource = TRUE;    // Les particules suivent la source
integer followVel = TRUE;       // Les particules tournent selon la direction de la velocite
 
// Choisissez un modele (pattern) parmi les suivants :
// PSYS_SRC_PATTERN_EXPLODE
// PSYS_SRC_PATTERN_DROP
// PSYS_SRC_PATTERN_ANGLE_CONE_EMPTY
// PSYS_SRC_PATTERN_ANGLE_CONE
// PSYS_SRC_PATTERN_ANGLE
integer pattern = PSYS_SRC_PATTERN_EXPLODE;
 
// Selectionner une cible pour les particules
// "" pour aucune cible, "owner" suivra le proprietaire de l'objet
//    et "self" suivra l'objet
//    ou mettez la cle de l'objet cible
key target = "self";
 
// Parametres des particules
float age = 0.2;                  // Duree de vie de chaque particule
float maxSpeed = .9;            // Vitesse max d'ejection de chaque particule
float minSpeed = .05;            // Vitesse min d'ejection de chaque particule
string texture;                 // Texture utilisee pour les particules, celle de defaut si vide
float startAlpha = .85;           // Valeur de depart de alpha (transparence)
float endAlpha = 0;           // Valeur de fin de alpha (transparence)
vector startColor = <1,1,1>;    // Couleur de depart des particules <R,V,B>
vector endColor = <1,1,1>;      // Couleur de fin des particules <R,V,B> (si interpColor == TRUE)
vector startSize = <.05,0.4,.05>;     // Taille de depart des particules
vector endSize = <.03,1.2,.03>;       // Taille de fin des particules (si interpSize == TRUE)
vector push = <0,0,0>;          // Force exercee sur les particules
 
// Parametres du système
float rate = .11;            // Vitesse d'emission des particules (taux)
float radius = .15;          // Rayon d'emission des particules pour BURST pattern
integer count = 3;        // Nombre de particules emises par BURST
float outerAngle = 0.54;    // Angle exterieur pour tous ANGLE patterns
float innerAngle = 3.55;    // Angle interieur pour tous ANGLE patterns
vector omega = <0,10,0>;    // Rotation autour de la source pour ANGLE patterns
float life = 0;             // Duree de vie en secondes du système emettant les particules
 
// Variables du script
integer flags;
 
updateParticles()
{
    flags = 0;
    if (target == "owner") target = llGetOwner();
    if (target == "self") target = llGetKey();
    if (glow) flags = flags | PSYS_PART_EMISSIVE_MASK;
    if (bounce) flags = flags | PSYS_PART_BOUNCE_MASK;
    if (interpColor) flags = flags | PSYS_PART_INTERP_COLOR_MASK;
    if (interpSize) flags = flags | PSYS_PART_INTERP_SCALE_MASK;
    if (wind) flags = flags | PSYS_PART_WIND_MASK;
    if (followSource) flags = flags | PSYS_PART_FOLLOW_SRC_MASK;
    if (followVel) flags = flags | PSYS_PART_FOLLOW_VELOCITY_MASK;
    if (target != "") flags = flags | PSYS_PART_TARGET_POS_MASK;
 
    llParticleSystem([  PSYS_PART_MAX_AGE,age,
                        PSYS_PART_FLAGS,flags,
                        PSYS_PART_START_COLOR, startColor,
                        PSYS_PART_END_COLOR, endColor,
                        PSYS_PART_START_SCALE,startSize,
                        PSYS_PART_END_SCALE,endSize,
                        PSYS_SRC_PATTERN, pattern,
                        PSYS_SRC_BURST_RATE,rate,
                        PSYS_SRC_ACCEL, push,
                        PSYS_SRC_BURST_PART_COUNT,count,
                        PSYS_SRC_BURST_RADIUS,radius,
                        PSYS_SRC_BURST_SPEED_MIN,minSpeed,
                        PSYS_SRC_BURST_SPEED_MAX,maxSpeed,
                        PSYS_SRC_TARGET_KEY,target,
                        PSYS_SRC_INNERANGLE,innerAngle,
                        PSYS_SRC_OUTERANGLE,outerAngle,
                        PSYS_SRC_OMEGA, omega,
                        PSYS_SRC_MAX_AGE, life,
                        PSYS_SRC_TEXTURE, texture,
                        PSYS_PART_START_ALPHA, startAlpha,
                        PSYS_PART_END_ALPHA, endAlpha
                            ]);
}
 
default
{
state_entry()
{
updateParticles();
llListen( 0, "", llGetOwner(), "bling off" );
}
on_rez( integer start_param )
{
llResetScript();
}
listen( integer channel, string name, key id, string message )
{
state bling_off;
}
}
 
state bling_off
{
state_entry()
{
llParticleSystem( [] );
llListen( 0, "", llGetOwner(), "bling on" );
}
on_rez( integer start_param )
{
llResetScript();
}   
listen( integer channel, string name, key id, string message )
{
state default;
}
}
bling bling
codes des couleurs pour vos constructions colorées (R,V,B)
aigue-marine (aquamarine) = <0.439,0.859,0.576>
aigue-marine moyen (mediumaquamarine) = <0.400,0.804,0.667>
amande blanchie (blanchedalmond) = <1.000,0.922,0.804>
argent (silver) = <0.753,0.753,0.753>
avocat néon (neonavocado) = <0.000,1.000,0.400>
azur (azure) = <0.941,1.000,1.000>
banane (banana) = <0.890,0.812,0.341>
beige (beige) = <0.639,0.580,0.502>
beige (beige) = <0.961,0.961,0.863>
biscuit (bisque) = <1.000,0.894,0.769>
blanc (white) = <1.000,1.000,1.000>
blanc antique (antiquewhite) = <0.980,0.922,0.843>
blanc de zinc (zincwhite) = <0.992,0.973,1.000>
blanc fantôme (ghostwhite) = <0.973,0.973,1.000>
blanc floral (floralwhite) = <1.000,0.980,0.941>
blanc navajo (navajowhite) = <1.000,0.871,0.678>
blanc titane (titaniumwhite) = <0.988,1.000,0.941>
blanc-bleu cassé (offwhiteblue) = <0.800,0.800,1.000>
blanc-vert cassé (offwhitegreen) = <0.800,1.000,0.800>
blé (wheat) = <0.847,0.847,0.749>
bleu (blue) = <0.000,0.000,1.000>
bleu acier (steelblue) = <0.137,0.420,0.557>
bleu ardoise (slateblue) = <0.000,0.498,1.000>
bleu ardoise clair (lightslateblue) = <0.518,0.439,1.000>
bleu ardoise foncé (darkslateblue) = <0.420,0.137,0.557>
bleu ardoise moyen (mediumslateblue) = <0.482,0.408,0.933>
bleu barbeau (cornflowerblue) = <0.392,0.584,0.929>
bleu ciel (skyblue) = <0.529,0.808,0.922>
bleu ciel clair (lightskyblue) = <0.529,0.808,0.980>
bleu ciel profond (deepskyblue) = <0.000,0.749,1.000>
bleu clair (lightblue) = <0.561,0.847,0.847>
bleu clair (powderblue) = <0.690,0.878,0.902>
bleu fin (dodgerblue) = <0.118,0.565,1.000>
bleu foncé (darkblue) = <0.000,0.000,0.545>
bleu horizon (cadetblue) = <0.373,0.620,0.627>
bleu indigo (indigo) = <0.180,0.031,0.329>
bleu intense (richblue) = <0.349,0.349,0.671>
bleu manganèse (manganeseblue) = <0.012,0.659,0.620>
bleu marine (navyblue) = <0.137,0.137,0.557>
bleu moyen (mediumblue) = <0.000,0.000,0.804>
bleu néon (neonblue) = <0.302,0.302,1.000>
bleu nuit (midnightblue) = <0.098,0.098,0.439>
bleu nuit nouveau (newmidnightblue) = <0.000,0.000,0.612>
bleu roi (royalblue) = <0.255,0.412,0.882>
bleu très délavé (aliceblue) = <0.941,0.973,1.000>
bleu turquoise (turquoiseblue) = <0.000,0.780,0.549>
bleu vert clair (viridianlight) = <0.431,1.000,0.439>
bleu violet (blueviolet) = <0.541,0.169,0.886>
bleuet (cornflower) = <0.200,0.000,1.000>
bleu-vert (seagreen) = <0.000,1.000,0.667>
bleu-vert clair (lightseagreen) = <0.125,0.698,0.667>
bleu-vert foncé (darkseagreen) = <0.561,0.737,0.561>
bleu-vert moyen (mediumseagreen) = <0.235,0.702,0.443>
bois clair (lightwood) = <0.914,0.761,0.651>
bois dur (burlywood) = <0.871,0.722,0.529>
bois moyen (mediumwood) = <0.651,0.502,0.392>
bois sombre (darkwood) = <0.522,0.369,0.259>
brique (brick) = <0.612,0.400,0.122>
brique réfractaire (firebrick) = <0.698,0.133,0.133>
bronzage foncé (darktan) = <0.592,0.412,0.310>
bronzage nouveau (newtan) = <0.922,0.780,0.620>
bronze (bronze) = <0.549,0.471,0.325>
cannelle (cinnamon) = <0.667,0.400,0.000>
carotte (carrot) = <0.929,0.569,0.129>
céruse (cerulean) = <0.020,0.722,0.800>
chair (flesh) = <1.000,0.490,0.251>
chair ocre (fleshochre) = <1.000,0.341,0.129>
chardon (thistle) = <0.847,0.749,0.847>
chocolat (chocolate) = <0.824,0.412,0.118>
chocolat pâtissier (bakerschocolate) = <0.361,0.200,0.090>
ciel d'été (summersky) = <0.220,0.690,0.871>
citron vert (lime) = <0.000,1.000,0.000>
cobalt (cobalt) = <0.239,0.349,0.671>
coquillage (seashell) = <1.000,0.961,0.933>
coquille d'oeuf (eggshell) = <0.988,0.902,0.788>
corail (coral) = <1.000,0.498,0.314>
cramoisi (alizarincrimson) = <0.890,0.149,0.212>
cramoisi (crimson) = <0.863,0.078,0.235>
cuivre (copper) = <0.722,0.451,0.200>
cuivre refroidi (coolcopper) = <0.851,0.529,0.098>
cuivre vert (greencopper) = <0.322,0.498,0.463>
cuivre vert foncé (darkgreencopper) = <0.290,0.463,0.431>
cyan (cyan) = <0.000,1.000,1.000>
cyan clair (lightcyan) = <0.878,1.000,1.000>
écarlate (scarlet) = <0.549,0.090,0.090>
écorce de melon vert (melonrindgreen) = <0.875,1.000,0.647>
feldspath (feldspar) = <0.820,0.573,0.459>
framboise (raspberry) = <0.529,0.149,0.341>
fuchsia (fuchsia) = <1.000,0.000,0.667>
gainsboro (gainsboro) = <0.863,0.863,0.863>
ganegreen (ganegreen) = <0.467,0.467,0.200>
garance marron (brownmadder) = <0.859,0.161,0.161>
garance rose (rosemadder) = <0.890,0.212,0.220>
gazon vert (lawngreen) = <0.486,0.988,0.000>
gris (gray) = <0.502,0.502,0.502>
gris ardoise (slategray) = <0.439,0.502,0.565>
gris ardoise foncé (darkslategray) = <0.184,0.310,0.310>
gris chaud (warmgrey) = <0.502,0.502,0.412>
gris clair (lightgray) = <0.827,0.827,0.827>
gris foncé (darkgray) = <0.663,0.663,0.663>
gris froid (coldgrey) = <0.502,0.541,0.529>
gris pâle (dimgray) = <0.412,0.412,0.412>
gris très clair (verylightgrey) = <0.804,0.804,0.804>
ivoire (ivory) = <1.000,1.000,0.941>
ivoire noir (ivoryblack) = <0.161,0.141,0.129>
jaune (yellow) = <1.000,1.000,0.000>
jaune auréole (aureolineyellow) = <1.000,0.659,0.141>
jaune cadmium (cadmiumyellow) = <1.000,0.600,0.071>
jaune citron cadmium (cadmiumlemon) = <1.000,0.890,0.012>
jaune clair (lightyellow) = <1.000,1.000,0.878>
jaune de Naples profond (naplesyellowdeep) = <1.000,0.659,0.071>
jaune mars (marsyellow) = <0.890,0.439,0.102>
jaune pop-corn (popcornyellow) = <1.000,1.000,0.667>
jaune vert (ralphyellow) = <0.800,0.800,0.000>
jaune vert mousseline (lemonchiffon) = <1.000,0.980,0.804>
jaune-vert chartreuse (chartreuse) = <0.498,1.000,0.000>
kaki (khaki) = <0.624,0.624,0.373>
kaki foncé (darkkhaki) = <0.741,0.718,0.420>
kumquat (kumquat) = <0.964,0.584,0.019>
laiton (brass) = <0.710,0.651,0.259>
laque de garance foncé (madderlakedeep) = <0.890,0.180,0.188>
lavande (lavender) = <0.902,0.902,0.980>
lavande rosée (lavenderblush) = <1.000,0.941,0.961>
magenta (magenta) = <1.000,0.000,0.200>
marine (navy) = <0.000,0.000,0.502>
marron (brown) = <0.502,0.165,0.165>
marron (maroon) = <0.502,0.000,0.000>
marron clair (tan) = <0.824,0.706,0.549>
marron ocre (brownochre) = <0.529,0.259,0.122>
marron rosé (rosybrown) = <0.737,0.561,0.561>
marron sablé (sandybrown) = <0.957,0.643,0.376>
marron très sombre (verydarkbrown) = <0.361,0.251,0.200>
marron Van Dyke (vandykebrown) = <0.369,0.149,0.020>
melon (melon) = <0.890,0.659,0.412>
menthe (mint) = <0.741,0.988,0.788>
menthe crème (mintcream) = <0.961,1.000,0.980>
miellure (honeydew) = <0.941,1.000,0.941>
mocassin (moccasin) = <1.000,0.894,0.710>
mousse de papaye (papayawhip) = <1.000,0.937,0.835>
moutarde (mustard) = <1.000,0.800,0.067>
nectarine (nectarine) = <1.000,0.200,0.000>
neige (snow) = <1.000,0.980,0.980>
noir (black) = <0.000,0.000,0.000>
noir de fumée (lampblack) = <0.180,0.278,0.231>
ocre (ochre) = <0.800,0.467,0.133>
ocre jaune (yellowochre) = <0.890,0.510,0.090>
ocre sombre (deepochre) = <0.451,0.239,0.102>
olive (olive) = <0.502,0.502,0.000>
ombre brut (rawumber) = <0.451,0.290,0.071>
or (gold) = <1.000,0.843,0.000>
or ocre (goldochre) = <0.780,0.471,0.149>
or verdi (goldgreen) = <0.667,0.867,0.000>
or vif (brightgold) = <0.851,0.851,0.098>
orange (orange) = <0.800,0.196,0.196>
orange cadmium (cadmiumorange) = <1.000,0.380,0.012>
orange foncé (darkorange) = <1.000,0.549,0.000>
orange mandarine (mandarianorange) = <0.894,0.471,0.200>
orange mars (marsorange) = <0.588,0.271,0.078>
orange pyridium (pyridiumorange) = <0.941,0.659,0.016>
orange sanguine (bloodorange) = <0.800,0.067,0.000>
orchidée (orchid) = <0.855,0.439,0.839>
orchidée foncé (darkorchid) = <0.600,0.196,0.800>
orchidée moyen (mediumorchid) = <0.729,0.333,0.827>
os (bone) = <1.000,1.000,0.800>
outremer (ultramarine) = <0.071,0.039,0.561>
paon (peacock) = <0.200,0.631,0.788>
pêche (peach) = <1.000,0.600,0.333>
pêche claire (peachpuff) = <1.000,0.678,0.725>
pérou (peru) = <0.804,0.522,0.247>
pervenche (periwinkle) = <0.667,0.667,1.000>
pourpre (purple) = <0.502,0.000,0.502>
pourpre foncé (deeppurple) = <0.333,0.063,0.200>
pourpre moyen (mediumpurple) = <0.576,0.439,0.859>
pourpre vrai (truepurple) = <0.600,0.000,0.600>
prune (plum) = <0.867,0.627,0.867>
quartz (quartz) = <0.851,0.851,0.953>
quasi blanc (almostwhite) = <1.000,1.000,0.996>
raisin (grape) = <0.800,0.000,1.000>
rose (pink) = <1.000,0.753,0.796>
rose (rose) = <1.000,0.000,0.800>
rose Broadway (broadwaypink) = <1.000,0.000,0.400>
rose chaud (hotpink) = <1.000,0.412,0.706>
rose clair (lightpink) = <1.000,0.714,0.757>
rose flou (mistyrose) = <1.000,0.894,0.882>
rose mat (flatpink) = <1.000,0.800,0.800>
rose néon (neonpink) = <1.000,0.431,0.780>
rose poussiéreux (dustyrose) = <0.522,0.388,0.388>
rose profond (deeppink) = <1.000,0.078,0.576>
rose relevé (spicypink) = <1.000,0.110,0.682>
rouge (red) = <1.000,0.000,0.000>
rouge anglais (englishred) = <0.831,0.239,0.102>
rouge cadmium clair (cadmiumredlight) = <1.000,0.012,0.051>
rouge cadmium foncé (cadmiumreddeep) = <0.890,0.090,0.051>
rouge cerise foncé (darkcherryred) = <0.200,0.000,0.000>
rouge indien (indianred) = <0.690,0.090,0.122>
rouge orange (orangered) = <1.000,0.000,0.498>
rouge sang (bloodred) = <0.400,0.000,0.000>
rouge vénitien (venetianred) = <0.831,0.102,0.122>
rouge violet (violetred) = <0.800,0.196,0.600>
rouge violet moyen (mediumvioletred) = <0.780,0.082,0.522>
rouge violet pâle (palevioletred) = <0.859,0.439,0.576>
sable (sand) = <1.000,0.800,0.600>
sap green (sapgreen) = <0.188,0.502,0.078>
sarcelle (teal) = <0.000,0.502,0.502>
saumon (salmon) = <0.980,0.502,0.447>
saumon clair (lightsalmon) = <1.000,0.627,0.478>
saumon foncé (darksalmon) = <0.914,0.588,0.478>
sépia (sepia) = <0.369,0.149,0.071>
SGI betterave (sgibeet) = <0.557,0.220,0.557>
SGI bleu clair (sgilightblue) = <0.490,0.620,0.753>
SGI gris brillant (sgibrightgray) = <0.773,0.757,0.667>
SGI gris clair (sgilightgray) = <0.667,0.667,0.667>
SGI jaune-vert chartreuse (sgichartreuse) = <0.443,0.776,0.443>
SGI sarcelle (sgiteal) = <0.220,0.557,0.557>
SGI saumon (sgisalmon) = <0.776,0.443,0.443>
SGI treillis (sgiolivedrab) = <0.557,0.557,0.220>
sienne (sienna) = <0.557,0.420,0.137>
sienne brûlée (burntsienna) = <0.541,0.212,0.059>
sienne brut (rawsienna) = <0.780,0.380,0.078>
soie (cornsilk) = <1.000,0.973,0.863>
terre d'ombre brûlée (burntumber) = <0.541,0.200,0.141>
terre d'ombre verdi (greenishumber) = <1.000,0.239,0.051>
terre verte (terreverte) = <0.220,0.369,0.059>
toile de lin (linen) = <0.980,0.941,0.902>
tomate (tomato) = <1.000,0.388,0.278>
treillis (olivedrab) = <0.420,0.557,0.137>
turquoise (turquoise) = <0.059,0.867,0.686>
turquoise foncé (darkturquoise) = <0.000,0.808,0.820>
turquoise moyen (mediumturquoise) = <0.439,0.859,0.859>
turquoise pâle (paleturquoise) = <0.686,0.933,0.933>
verge d'or (goldenrod) = <0.855,0.647,0.125>
verge d'or clair (lightgoldenrod) = <0.933,0.867,0.510>
verge d'or foncé (darkgoldenrod) = <0.722,0.525,0.043>
verge d'or jaune clair (lightgoldenrodyellow) = <0.980,0.980,0.824>
verge d'or moyen (mediumgoldenrod) = <0.918,0.918,0.678>
verge d'or pâle (palegoldenrod) = <0.933,0.910,0.667>
vermeil (geraniumlake) = <0.890,0.071,0.188>
vert (green) = <0.000,0.502,0.000>
vert chasseur (huntergreen) = <0.129,0.369,0.129>
vert cinabre (cinnabargreen) = <0.380,0.702,0.161>
vert cobalt (cobaltgreen) = <0.239,0.569,0.251>
vert émeraude (emeraldgreen) = <0.000,0.788,0.341>
vert foncé (darkgreen) = <0.000,0.392,0.000>
vert foncé (darkgreen) = <0.184,0.310,0.184>
vert forêt (forestgreen) = <0.133,0.545,0.133>
vert indélébile (permanentgreen) = <0.039,0.788,0.169>
vert jaune (greenyellow) = <0.576,0.859,0.439>
vert jaune (yellowgreen) = <0.600,0.800,0.196>
vert olive foncé (darkolivegreen) = <0.310,0.310,0.184>
vert oxyde de chrome (chromeoxidegreen) = <0.400,0.502,0.078>
vert pâle (palegreen) = <0.596,0.984,0.596>
vert perroquet (parrotgreen) = <0.200,1.000,0.200>
vert pin (pinegreen) = <0.000,0.200,0.000>
vert printemps (springgreen) = <0.000,1.000,0.498>
vert printemps moyen (mediumspringgreen) = <0.000,0.980,0.604>
vert vif (limegreen) = <0.196,0.800,0.196>
vert vrai (truegreen) = <0.000,0.686,0.200>
vert wasabi (wasabi) = <0.400,1.000,0.400>
vieil or (oldgold) = <0.812,0.710,0.231>
vieille dentelle (oldlace) = <0.992,0.961,0.902>
violet (violet) = <0.561,0.369,0.600>
violet cobalt foncé (cobaltvioletdeep) = <0.569,0.129,0.620>
violet foncé (darkviolet) = <0.580,0.000,0.827>
violet outremer (ultramarineviolet) = <0.361,0.141,0.431>
violet sombre (darkpurple) = <0.529,0.122,0.471>
porte à galandage à sensor
float largeur; // largeur du déplacement
integer ouvert=0;
default
{
    state_entry()
    {
        vector dimensions = llGetScale(); // dimensions de la porte
        largeur = dimensions.y - (dimensions.y / 10); // détermination de la largeur du déplacement
//detecte tout avatar dans un rayon de deux fois la largeur de la porte toute les 3 sec
        llSensorRepeat("", NULL_KEY, AGENT, 1*dimensions.y , PI, 3);
        llSay(0, "porte automatique cree par draconis"); // information
}
    sensor(integer total_number)
    {
        if (!ouvert) { llSetPos(llGetPos() + <0, largeur, 0>); }
        ouvert=TRUE;
        llSetTimerEvent(4.0);
    }
    timer()
    {
        if (ouvert) { llSetPos(llGetPos() + <0, -largeur, 0>); }
        ouvert=FALSE;
        llSetTimerEvent(0);
    }
}
porte à galandage ecoute le tchat
//script free modifié par Draconis Exonar
// ne vendez pas
//script a mofifier selon vos besoin d'ouverture :-)
 
float hauteur; // hauteur du déplacement
default
{
   state_entry()
   {
      vector dimensions = llGetScale(); // dimensions de la porte
      hauteur = dimensions.z - (dimensions.z / 10); // détermination de la hauteur du déplacement
      llListen(0, "", NULL_KEY, "ouvrir porte");// changez la phrase au besoin
   }
 
   listen(integer channel, string name, key id, string message) // Ouverture de la porte
   {
      vector position = llGetPos(); // position de départ
      llSetPos(position + <0, 0 , hauteur>); // translation
      llPlaySound ("porte",2.0);
      llSetTimerEvent(10); // On laisse ouvert 10 secondes
   }
 
   timer() // fermeture de la porte
   {
      vector position = llGetPos(); // position de départ
      llSetPos(position + <0, 0 , -hauteur>); // translation
      llPlaySound ("porte",2.0);
      llResetScript();
   }
}
fumée noire
// Particle Script 0.3
// Created by Ama Omega
// 10-10-2003
// Modified by Draconis Exonar
// for smoke of fire
// 11-03-2011
 
// Mask Flags - set to TRUE to enable
integer glow = TRUE;            // Make the particles glow
integer bounce = FALSE;          // Make particles bounce on Z plan of object
integer interpColor = TRUE;     // Go from start to end color
integer interpSize = TRUE;      // Go from start to end size
integer wind = FALSE;           // Particles effected by wind
integer followSource = TRUE;    // Particles follow the source
integer followVel = TRUE;       // Particles turn to velocity direction
 
// Choose a pattern from the following:
// PSYS_SRC_PATTERN_EXPLODE
// PSYS_SRC_PATTERN_DROP
// PSYS_SRC_PATTERN_ANGLE_CONE_EMPTY
// PSYS_SRC_PATTERN_ANGLE_CONE
// PSYS_SRC_PATTERN_ANGLE
integer pattern = PSYS_SRC_PATTERN_ANGLE_CONE;
 
// Select a target for particles to go towards
// "" for no target, "owner" will follow object owner
//    and "self" will target this object
//    or put the key of an object for particles to go to
key target = "";
 
// Particle paramaters
float age = 2;                  // Life of each particle
float maxSpeed = 1.5;            // Max speed each particle is spit out at
float minSpeed = 1.0;            // Min speed each particle is spit out at
string texture = "";              // Texture used for particles, default used if blank
float startAlpha = 0.1;           // Start alpha (transparency) value
float endAlpha = 0.0;           // End alpha (transparency) value
vector startColor = <0,0,0>;    // Start color of particles <R,G,B>
vector endColor = <0,0,0>;      // End color of particles <R,G,B> (if interpColor == TRUE)
vector startSize = <0.5,0.5,0.0>;     // Start size of particles
vector endSize = <1.0,1.0,1.0>;       // End size of particles (if interpSize == TRUE)
vector push = <0,0,-3>;          // Force pushed on particles
 
// System paramaters
float rate = 0.0
;            // How fast (rate) to emit particles
float radius = 0.0;          // Radius to emit particles for BURST pattern
integer count = 500;        // How many particles to emit per BURST
float outerAngle = 0.0;    // Outer angle for all ANGLE patterns
float innerAngle = 0.2;    // Inner angle for all ANGLE patterns
vector omega = <0,0,0>;    // Rotation of ANGLE patterns around the source
float life = 0;             // Life in seconds for the system to make particles
 
// Script variables
integer flags;
 
updateParticles()
{
    if (target == "owner") target = llGetOwner();
    if (target == "self") target = llGetKey();
    if (glow) flags = flags | PSYS_PART_EMISSIVE_MASK;
    if (bounce) flags = flags | PSYS_PART_BOUNCE_MASK;//
    if (interpColor) flags = flags | PSYS_PART_INTERP_COLOR_MASK; //
    if (interpSize) flags = flags | PSYS_PART_INTERP_SCALE_MASK;//
    if (wind) flags = flags | PSYS_PART_WIND_MASK;//
    if (followSource) flags = flags | PSYS_PART_FOLLOW_SRC_MASK;//
    if (followVel) flags = flags | PSYS_PART_FOLLOW_VELOCITY_MASK;//
    if (target != "") flags = flags | PSYS_PART_TARGET_POS_MASK;//
 
    llParticleSystem([  PSYS_PART_MAX_AGE,age,//
                        PSYS_PART_FLAGS,flags,//
                        PSYS_PART_START_COLOR, startColor,//
                        PSYS_PART_END_COLOR, endColor,//
                        PSYS_PART_START_SCALE,startSize,//
                        PSYS_PART_END_SCALE,endSize, //
                        PSYS_SRC_PATTERN, pattern,//
                        PSYS_SRC_BURST_RATE,rate,//
                        PSYS_SRC_ACCEL, push, //
                        PSYS_SRC_BURST_PART_COUNT,count,//
                        PSYS_SRC_BURST_RADIUS,radius,//
                        PSYS_SRC_BURST_SPEED_MIN,minSpeed,//
                        PSYS_SRC_BURST_SPEED_MAX,maxSpeed,//
                        PSYS_SRC_TARGET_KEY,target,//
                        PSYS_SRC_INNERANGLE,innerAngle, //
                        PSYS_SRC_OUTERANGLE,outerAngle,//
                        PSYS_SRC_OMEGA, omega,//
                        PSYS_SRC_MAX_AGE, life,//
                        PSYS_SRC_TEXTURE, texture,//
                        PSYS_PART_START_ALPHA, startAlpha,//
                        PSYS_PART_END_ALPHA, endAlpha//
                            ]);
}
 
default
{
    state_entry()
    {
        updateParticles();
    }
}
 
/* =================================================================================== */
/*                                                                                     */
/*                                     Resizer v1.5                                    */
/*                                                                                     */
/* License :                                                                           */
/*   Français                                                                          */
/*      OpenSource. Licence GPL 2 et plus.                                             */
/*      Modification, Copie et Transfert autorisés                                     */
/*      Sous condition de laisser le script en full perm (Modify / Copy / Transfer)    */
/*                                                                                     */
/*   English                                                                           */
/*      OpenSource. License GPL 2 and later.                                           */
/*      Modify, Copy and Transfer allowed if this script stay full perm                */
/*                                                                                     */
/* Auteurs : Christy Mansbridge / Mingyar Ishtari, le 02 octobre 2010                  */
/*                                                                                     */
/* Modifications / Updates :                                                           */
/*  Author : Christy Mansbridge                                                        */
/*  Date   : 11 octobre 2010                                                           */
/*  Detail : Auto detection opensim/LL grids (version 1.4)                             */
/*                                                                                     */
/* Modifications / Updates :                                                           */
/*  Author : Christy Mansbridge                                                        */
/*  Date   : 30 octobre 2010                                                           */
/*  Detail : Limitation déplacement limité à 10m sur opensim (version 1.5)             */
/*                                                                                     */
/*  Author :                                                                           */
/*  Date   :                                                                           */
/*  Detail :                                                                           */
/*                                                                                     */
/* Usage :                                                                             */
/*   Français                                                                          */
/*      À placer dans le prim root (prim coutouré en jaune à l'édition)                */
/*      Cliquer l'objet pour obtention du menu bleu.                                   */
/*      Usage restreint au seul propriétaire.                                          */
/*                                                                                     */
/*   English                                                                           */
/*      Place the script in the root prim of the build.                                */
/*      Click the object to get the blue menu.                                         */
/*      Usage restricted to the owner.                                                 */
/*                                                                                     */
/* Fonctions :                                                                         */
/*   Français                                                                          */
/*      1) Script de redimensionnement d'un objet multi-prims respectant les           */
/*         proportions, en taille et en position, de chaque prim.                      */
/*                                                                                     */
/*      2) Lag minimal puisqu'un seul script par objet (1 à 256 prims)                 */
/*         Possibilité offerte de supprimer le script.                                 */
/*                                                                                     */
/*      3) Communication avec d'autres objets pour synchroniser le redimensionnement   */
/*          Pour permettre cette communication, plusieurs critères douvent être remplis*/
/*              a) L'objet doit être porté ainsi que celui/ceux à synchroniser         */
/*              b) Les objets doivent porter le même nom, à l'exception de la partie   */
/*                 finale séparée du reste par un espace.                              */
/*                 Exemple : Chaussure rouge gauche et Chaussure rouge droite          */
/*                                                                                     */
/*      4) Garantie de la conservation de l'intégrité de l'objet.                      */
/*          a) Si un agrandissement entraine une destruction du build,                 */
/*             Retour automatique à la taille avant agrandissement.                    */
/*                                                                                     */
/*          b) Si l'objet contient au moins un huge prim le script reste inactif.      */
/*             Cette sécurité résevée à la grille officielle SecondLife peut être      */
/*             désactivée pour opensim en passant à TRUE l'affectation de la variable  */
/*             globale iAllowResizeHugePrims.                                          */
/*                                                                                     */
/*      5) Prise en compte automatique des changements de liens (ajout/suppresion de   */
/*         prims ou redimensionnement manuel)                                          */
/*                                                                                     */
/*      6) 18 choix de redimensionnement prédéfinis en pourcentages :                  */
/*          -1, -2, -5, -10, -25, -50, -75,  -85,  -95.                                */
/*          +1, +2, +5, +10, +25, +50, +75, +100, +200,                                */
/*                                                                                     */
/*      7) 3 choix extrèmes : Dimensionnement Minimal, Maximal et par Défaut.          */
/*         La dimension par défaut est celle à l'initialisation du script ou           */
/*         celle affectée par le menu [Set default].                                   */
/*                                                                                     */
/*      8) Détermination de la taille maximale avant déformation de la construction    */
/*         Pour trouver la taille maximale possible, procéder ainsi :                  */
/*              Effectuer des agrandissements à +200% jusqu'à refus de dimensionnement */
/*              Répéter l'opération avec les pourcentages inférieurs, +100% puis +75%  */
/*              puis 50% ... jusqu'à répétition de l'opétation à +1%.                  */
/*              Après un refus de redimensionnement à +1% le script connait la vraie   */
/*              taille maximale.                                                       */
/*                                                                                     */
/*   English                                                                           */
/*      1) Script to resize a multi prims object with conservation of its integrity    */
/*         (size and relative position of each prim).                                  */
/*                                                                                     */
/*      2) Less lag : only 1 script for an object (1 to 256 prims)                     */
/*         Possibility to remove the script by the menu.                               */
/*                                                                                     */
/*      3) Communication with other objects to synchronize resize                      */
/*          To allow communication, objects have to comply with few criteria :         */
/*              a) The object has to be worn, objects to synchronize too.              */
/*              b) Objects have to have same name except last part separated by space  */
/*                 Example : Excelsior shoes Left and Excelsior shoes Right            */
/*                                                                                     */
/*      4) Integrity waranty.                                                          */
/*          a) If after increasing size the build is broken, automatic go back to      */
/*             previous good size.                                                     */
/*                                                                                     */
/*          b) If, at least, one huge prim is in the build, the script is inactive.    */
/*             This security is only for official grid SecondLife and may be bypassed  */
/*             for opensim, affecting TRUE to the iAllowResizeHugePrims global variable*/
/*                                                                                     */
/*      5) Automatic detection of manual scale change and link changes                 */
/*                                                                                     */
/*      6) 18 predefined resize choice in percentage :                                 */
/*          -1, -2, -5, -10, -25, -50, -75,  -85,  -95.                                */
/*          +1, +2, +5, +10, +25, +50, +75, +100, +200,                                */
/*                                                                                     */
/*      7) 3 other choices : Resize to Minimum, Maximum or Default size.               */
/*         The default size is the size at initialisation of the script or the size    */
/*         affected by the blue menu [Set default].                                    */
/*                                                                                     */
/*      8) How to find the real maximum size ?                                         */
/*         To find the real value :                                                    */
/*              Make an increase size by +200% until the script says it fails.         */
/*              Then, repeat this method with +100%, then after with +75% ...          */
/*              After the last increase with +1% the real maximum size is found and    */
/*              stored by the script.                                                  */
/*                                                                                     */
/* =================================================================================== */
integer iAllowResizeHugePrims = -1; // You can force to FALSE on official SecondLife grids and TRUE on opensim
integer iNumberOfPrims;
integer iFirst;
integer iLast;
integer iBcl;
integer iIdx;
integer iDeb;
integer iFin;
integer iSens;
float   fTmp;
vector  vSize;
vector  vPos;
float   fMin;
float   fMax;
float   fFactor;
float   fDefault;
integer iCanalComm = -8547548;
integer iCanalMenu;
integer iEcouteMenu;
integer iMenuOn;
integer iCurrentMenu;
string  sPctM1 = "1";
string  sPctM2 = "2";
string  sPctM3 = "5";
string  sPctP1 = "1";
string  sPctP2 = "2";
string  sPctP3 = "5";
string  sPct;
integer iNbPasses;
integer iHugeUsed;
float   fLimiteMax;
integer iNoMoreMax;
vector  vPos1;
integer iError;
list    lSortPrims;
list    lSizes;
list    lPos;
list    lElem;
list    lName;
// Hack to increase speed of the script (Mono)
Booster()
{
    for( iBcl = 0; iBcl < 5000; iBcl++ );
}
// Function to get size and/or relative position of the current prim
GetSizePos()
{
    vSize = llList2Vector( llGetLinkPrimitiveParams( iBcl, [ PRIM_SIZE ] ), 0 ) * fFactor;
    if( iBcl == iFirst )
    {
        if( llGetAttached() )
// Root prim and object attached to the avatar, position is local
            vPos = llGetLocalPos();
        else
// Root prim and object not attached, position is absolute position
            vPos = llGetRootPosition();
    }
    else
// Child prim, position is relative to the root prim
        vPos = ( ( llList2Vector( llGetLinkPrimitiveParams( iBcl, [ PRIM_POSITION ] ), 0 ) - llGetRootPosition() ) / llGetRootRotation() ) * fFactor;
}
// Function to control if current prim has expected size and relative position
ControlSizePos( vector vRefSize, vector vRefPos )
{
    if( llVecDist( llList2Vector( llGetLinkPrimitiveParams( iBcl, [ PRIM_SIZE ] ), 0 ), vRefSize ) > 0.001 )
        iError = TRUE;
    else if( iBcl != iFirst )
    {
        if( llVecDist( ( llList2Vector( llGetLinkPrimitiveParams( iBcl, [ PRIM_POSITION ] ), 0 ) - llGetRootPosition() ) / llGetRootRotation(),
                       vRefPos ) > 0.001 )
        iError = TRUE;
    }
}
// Function to test resize validity of the current prim, if resize is over stored maximum size
integer TestError()
{
    if( fMax > fLimiteMax )
        ControlSizePos( vSize, vPos );
    return( iError );
}
// Function to control build integrity after resize
ControlBuild( integer iBoost )
{
    if( iBoost )
        Booster();
// No individual error found
// Control of all the build prim after prim
    for( iIdx = iDeb; iIdx != iFin; iIdx += iSens )
    {
        iBcl = llList2Integer( lSortPrims, iIdx );
        ControlSizePos( llList2Vector( lSizes, iIdx ) * fFactor, llList2Vector( lPos, iIdx ) * fFactor );
        if( iError )
        {
            if( iBoost )
                iIdx = iFin - iSens;
            return;
        }
    }
}
// Function to resize (only the size) each prim of the build
ChangeSize( integer iCorrect )
{
    Booster();
    for( iIdx = iDeb; iIdx != iFin; iIdx += iSens )
    {
        iBcl = llList2Integer( lSortPrims, iIdx );
        GetSizePos();
        if( iCorrect )
            vPos /= fFactor;
        llSetLinkPrimitiveParamsFast( iBcl, [ PRIM_SIZE, vSize ] );
        if( TestError() )
            return;
    }
}
// Function to adapt relative position of each prim of the build
ChangePos( integer iCorrect )
{
    Booster();
    for( iIdx = iDeb; iIdx != iFin; iIdx += iSens )
        if( ( iBcl = llList2Integer( lSortPrims, iIdx ) ) != iFirst )
        {
            GetSizePos();
            vPos1 = vPos / fFactor;
            if( iCorrect )
                vSize /= fFactor;
            llSetLinkPrimitiveParamsFast( iBcl, [ PRIM_POSITION, vPos ] );
            llSetLinkPrimitiveParamsFast( iBcl, [ PRIM_POSITION, vPos ] );
            llSetLinkPrimitiveParamsFast( iBcl, [ PRIM_POSITION, vPos ] );
            if( TestError() )
                return;
        }
}
// Function to resize and adapt relative position of each prim of the build
ChangeSizePos()
{
    Booster();
    for( iIdx = iDeb; iIdx != iFin; iIdx += iSens )
    {
        iBcl = llList2Integer( lSortPrims, iIdx );
        GetSizePos();
        llSetLinkPrimitiveParamsFast( iBcl, [ PRIM_SIZE, vSize, PRIM_POSITION, vPos ] );
        llSetLinkPrimitiveParamsFast( iBcl, [ PRIM_POSITION, vPos ] );
        llSetLinkPrimitiveParamsFast( iBcl, [ PRIM_POSITION, vPos ] );
        if( TestError() )
            return;
    }
}
// Function to resize and position each prim to the previous stored good sizes and relative positions after an error
GoBackToGoodSize()
{
    llOwnerSay( "Error, back to previous good size..." );
    sPct = "aborted";
    if( llRound( fFactor * 100.0 ) == 101 )
        iNoMoreMax = TRUE;
    fMin     /= fFactor;
    fMax     /= fFactor;
    iFin      = iDeb - iSens;
    iDeb      = iIdx;
    iSens    *= -1;
    fFactor   = 1.0;
    iNbPasses = 3;
    if( iNoMoreMax )
        fLimiteMax = fMax;
    do
    {
        Booster();
        iError = FALSE;
        for( iIdx = iDeb; iIdx != iFin; iIdx += iSens )
        {
            iBcl = llList2Integer( lSortPrims, iIdx );
            lElem = [ PRIM_SIZE, llList2Vector( lSizes, iIdx ) ];
            if( iBcl != iFirst )
            {
                vPos  = llList2Vector( lPos, iIdx );
                lElem += [ PRIM_POSITION, vPos ];
            }
            llSetLinkPrimitiveParamsFast( iBcl, lElem );
            llSetLinkPrimitiveParamsFast( iBcl, lElem );
            llSetLinkPrimitiveParamsFast( iBcl, lElem );
        }
        ControlBuild( FALSE );
    }
    while( iError && --iNbPasses );
    if( iError )
        llOwnerSay( "Sorry, the build is broken and can't be repaired." );
}
// Function to store size and relative positions of each prim after a successfull resizing
SaveSizePos()
{
    Booster();
    fFactor = 1.0;
    lSizes  = [];
    lPos    = [];
    for( iIdx = 0; iIdx != iNumberOfPrims; iIdx++ )
    {
        iBcl = llList2Integer( lSortPrims, iIdx );
        GetSizePos();
        lSizes += [ vSize ];
        lPos   += [ vPos  ];
    }
}
// Function to resize the build
Resize( integer iMess )
{
// Apply factor of resizing to the min and max size found in the build
    fMin *= fFactor;
    fMax *= fFactor;
    sPct = "done";
    if( fFactor < 1.0 )
    {
// If resize is to decrease the size, we start whith the most distant prims from the root
        iDeb  = llGetListLength( lSortPrims ) - 1;
        iFin  = -1;
        iSens = -1;
    }
    else
    {
// If resize is to increase the size, we start whith the closer prims from the root
        iDeb  = 0;
        iFin  = llGetListLength( lSortPrims );
        iSens = 1;
    }
    iError = FALSE;
    if( fFactor < 0.5 )
// if decrease is more than a factor 2, we start by changing only relative positions
        ChangePos( FALSE );
    else if( fFactor > 2.0 )
// if increase is more than a factor 2, we start by changing only sizes
        ChangeSize( FALSE );
    else
// if factor is less or equal than 2, resize is both size and position
        ChangeSizePos();
    if( ! iError )
    {
        if( fFactor < 0.5 )
// Changing positions is successfull, we change positions
            ChangeSize( TRUE );
        else if( fFactor > 2.0 )
// Changing sizes is successfull, we change sizes
            ChangePos( TRUE );
    }
    if( ! iError )
        ControlBuild( TRUE );
    if( iError )
// Restore the last good size after error
        GoBackToGoodSize();
    else
    {
// Save the sizes and relative positions of each prim
        SaveSizePos();
        if( fMax == 10.0 && ! iAllowResizeHugePrims )
        {
            iNoMoreMax = TRUE;
            fLimiteMax = fMax;
        }
    }
    if( fMax > fLimiteMax )
// New max size found
        fLimiteMax = fMax;
// Start countdown for CHANGED_SCALE event
    llResetTime();
    if( iMess )
    {
// Inform user the resize is finished and call back the menu
        llOwnerSay( "Resize " + sPct + "." );
        Menu();
    }
}
AlreadyAt( integer iMess, string sMess )
{
    if( iMess )
    {
        llOwnerSay( "Already at " + sMess + " size." );
        Menu();
    }
}
// Function to resize to the minimum size
MinimumSize( integer iMess )
{
    if( ( fFactor = 0.01 / fMin ) != 1.0 )
    {
        if( iMess )
        {
            sPct = (string)llRound( ( fFactor - 1.0 ) * 100.0 );
            if( fFactor > 1.0 )
                sPct = "+" + sPct;
            llOwnerSay( "Minimum size (" + sPct + "%)..." );
        }
        Resize( iMess );
    }
    else
        AlreadyAt( iMess, "minimum" );
}
// Function to resize to the maximum size
MaximumSize( integer iMess )
{
    if( ( fFactor = fLimiteMax / fMax ) != 1.0 )
    {
        if( iMess )
        {
            sPct = (string)llRound( ( fFactor - 1.0 ) * 100.0 );
            if( fFactor > 1.0 )
                sPct = "+" + sPct;
            llOwnerSay( "Maximum size (" + sPct + "%)..." );
        }
        Resize( iMess );
    }
    else
        AlreadyAt( iMess, "maximum" );
}
// Function to resize to the default size
DefaultSize( integer iMess )
{
    vSize = llList2Vector( llGetLinkPrimitiveParams( iFirst, [ PRIM_SIZE ] ), 0 );
    if( ( fFactor = fDefault / vSize.x ) != 1.0 )
    {
        if( iMess )
        {
            sPct = (string)llRound( ( fFactor - 1.0 ) * 100.0 );
            if( fFactor > 1.0 )
                sPct = "+" + sPct;
            llOwnerSay( "Default size (" + sPct + "%)..." );
        }
        Resize( iMess );
    }
    else
        AlreadyAt( iMess, "default" );
}
// Close the menu
FinMenu( integer iAlert )
{
    iMenuOn = FALSE;
    llSetTimerEvent( 0.0 );
    llListenRemove( iEcouteMenu );
    if( iAlert )
        llOwnerSay( "Menu timeout." );
}
// Main menu
Menu()
{
    llSetTimerEvent( 30.0 );
    llDialog( llGetOwner(),
              "Resizer action :\n" +
              "Quit : Leave this menu.\n" +
              "Options : Current size becomes default.\n" +
              ">> : Next set of percentages.\n" +
              "Min : Resize to minimum size.\n" +
              "Default : Return to initial size.\n" +
              "Max : Resize to maximum size.",
              [ "Quit", "Options", ">>",
                "-" + sPctM1 + "%", "Min",     "+" + sPctP1 + "%",
                "-" + sPctM2 + "%", "Default", "+" + sPctP2 + "%",
                "-" + sPctM3 + "%", "Max",     "+" + sPctP3 + "%" ],
              iCanalMenu );
}
// Function to return min or max element of vSize vector
float MinMaxVal( integer iOperation )
{
    return( llListStatistics( iOperation, [ vSize.x, vSize.y, vSize.z ] ) );
}
// Initialisation of the script
init()
{
    Booster();
    iNumberOfPrims = llGetNumberOfPrims();
    iFirst         = (integer)( iNumberOfPrims > 1 );
    iLast          = iNumberOfPrims - (integer)( iNumberOfPrims == 1 );
    llOwnerSay( "Searching min/max prim size..." );
    fMin    = 10.0;
    fMax    = 0.01;
    fFactor = 1.0;
    for( iBcl = iFirst; ( fMax <= 10.0 || iAllowResizeHugePrims ) && iBcl <= iLast; iBcl++ )
    {
        GetSizePos();
        if( iBcl == iFirst )
        {
            fDefault = vSize.x;
            lElem = [ 0.0, iFirst ];
        }
        else
            lElem += [ llVecDist( ZERO_VECTOR, vPos ), iBcl ];
        fTmp = MinMaxVal( LIST_STAT_MIN );
        if( fTmp < fMin )
            fMin = fTmp;
        fTmp = MinMaxVal( LIST_STAT_MAX );
        if( fTmp > fMax )
            fMax = fTmp;
    }
    if( fMax > 10.0 && ! iAllowResizeHugePrims )
    {
        iHugeUsed = TRUE;
        llOwnerSay( "Script not active, object uses huge prim." );
    }
    else
    {
        llOwnerSay( "Size range : " + (string)fMin + " -> " + (string)fMax );
        iNoMoreMax = FALSE;
        iHugeUsed  = FALSE;
        llOwnerSay( "Sorting prims..." );
        lElem = llListSort( lElem, 2, TRUE );
        lSortPrims = [];
        for( iBcl = 1; iBcl < llGetListLength( lElem ); iBcl += 2 )
            lSortPrims += [ llList2Integer( lElem, iBcl ) ];
        llOwnerSay( (string)iNumberOfPrims + " prim" + llList2String( [ "", "s" ], (integer)(iNumberOfPrims > 1) ) + " sorted." );
        fLimiteMax = llListStatistics( LIST_STAT_MAX, [ 10.0, fMax ] );
        llOwnerSay( "Storing size/pos of each prim..." );
        SaveSizePos();
    }
    llOwnerSay( "Init. complete." );
}
default
{
    state_entry()
    {
        if( iAllowResizeHugePrims < 0 )
            iAllowResizeHugePrims = (integer)( llSubStringIndex( llGetSimulatorHostname(), ".lindenlab.com" ) < 0 );
        init();
        llListen( iCanalComm, "", NULL_KEY, "" );
    }
    changed( integer iChange )
    {
        if(   ( iChange & CHANGED_LINK  ) ||
            ( ( iChange & CHANGED_SCALE ) &&
              llGetTime() > 5.0 / llList2Float( [ llGetRegionTimeDilation(), 0.01 ],
                                                (integer)( llGetRegionTimeDilation() < 0.01 ) ) ) )
            init();
    }
    listen( integer iChannel, string sName, key kId, string sMess )
    {
        if( iChannel == iCanalMenu )
        {
            llSetTimerEvent(  0.0 );
            if( sMess == ">>" )
            {
                if( (++iCurrentMenu) == 3 )
                    iCurrentMenu = 0;
                if( ! iCurrentMenu )
                {
                    sPctM1 = "1";
                    sPctM2 = "2";
                    sPctM3 = "5";
                    sPctP1 = "1";
                    sPctP2 = "2";
                    sPctP3 = "5";
                }
                else if( iCurrentMenu == 1 )
                {
                    sPctM1 = "10";
                    sPctM2 = "25";
                    sPctM3 = "50";
                    sPctP1 = "10";
                    sPctP2 = "25";
                    sPctP3 = "50";
                }
                else
                {
                    sPctM1 = "75";
                    sPctM2 = "85";
                    sPctM3 = "95";
                    sPctP1 = "75";
                    sPctP2 = "100";
                    sPctP3 = "200";
                }
                Menu();
            }
            else if( sMess == "Options" || sMess == " " )
            {
                llSetTimerEvent( 30.0 );
                llDialog( llGetOwner(),
                          "\nResizer options :\n \n" +
                          "Quit : Leave this menu.\n" +
                          "BACK : To main menu.\n" +
                          "Set default : Current size is default.\n" +
                          "Remove : Remove the script.",
                          [ "Quit", " ", "BACK",
                            "Set default", " ", "Remove" ],
                          iCanalMenu );
            }
            else if( sMess == "BACK" )
                Menu();
            else if( sMess == "Set default" )
            {
                vSize = llList2Vector( llGetLinkPrimitiveParams( iFirst, [ PRIM_SIZE ] ), 0 );
                fDefault = vSize.x;
                if( llGetAttached() )
                    llSay( iCanalComm, (string)llGetOwner() + "|Default|" + (string)fDefault );
                llOwnerSay( "This size is now the default size." );
                Menu();
            }
            else if( sMess == "Remove" )
            {
                llSetTimerEvent( 30.0 );
                llDialog( llGetOwner(),
                          "\nSure to remove the script from this object ?",
                          [ "Yes", "No" ],
                          iCanalMenu );
            }
            else if( sMess == "Default" )
                DefaultSize( TRUE );
            else if( sMess == "Min" )
                MinimumSize( TRUE );
            else if( sMess == "Max" )
                MaximumSize( TRUE );
            else if( ( iBcl = llListFindList( [ "+", "-" ], [ llGetSubString( sMess, 0, 0 ) ] ) ) >= 0 )
            {
                fFactor = 1.0 + (float)llGetSubString( sMess, 0, -2 ) / 100.0;
                fTmp    = llList2Float( [ llList2Float( [ 10.0, 10000.0 ], iAllowResizeHugePrims ), fLimiteMax ], iNoMoreMax );
                if( fMin * fFactor < 0.01 )
                    fFactor = 0.01 / fMin;
                else if( fMax * fFactor > fTmp )
                    fFactor = fTmp / fMax;
                if( fMin * fFactor >= 0.01 && fMax * fFactor <= fTmp && llRound( fFactor * 100.0 ) != 100 )
                {
                    sPct = (string)llRound( ( fFactor - 1.0 ) * 100.0 ) + "%";
                    if( fFactor > 1.0 )
                        sPct = "+" + sPct;
                    llOwnerSay( llList2String( [ "Increas", "Reduc" ], iBcl ) + "ing size : " +
                                sPct + llList2String( [ " (" + sMess + " asked)", "" ], (integer)(sMess == sPct) ) + "..." );
                    if( llGetAttached() )
                        llSay( iCanalComm, (string)llGetOwner() + "|Factor|" + (string)fFactor );
                    Resize( TRUE );
                }
                else
                {
                    llOwnerSay( "Out of size range." );
                    Menu();
                }
            }
            else
            {
                FinMenu( FALSE );
                if( sMess == "Yes" )
                {
                    if( llGetAttached() )
                        llSay( iCanalComm, (string)llGetOwner() + "|Remove" );
                    llRemoveInventory( llGetScriptName() );
                }
            }
        }
        else if( llGetAttached() && sName != llGetObjectName() )
        {
            lElem = llParseString2List( sName, [ " " ], [ "" ] );
            if( llGetListLength( lElem ) < 2 )
                return;
            lName = llParseString2List( llGetObjectName(), [ " " ], [ "" ] );
            if( llGetListLength( lName ) < 2 )
                return;
            if( llDumpList2String( llList2List( lElem, 0, -2 ), " " ) !=
                llDumpList2String( llList2List( lName, 0, -2 ), " " ) )
                return;
            lElem = llParseString2List( sMess, [ "|" ], [ "" ] );
            if( llList2String( lElem, 0 ) == (string)llGetOwner() )
            {
                if( llList2String( lElem, 1 ) == "Remove" )
                    llRemoveInventory( llGetScriptName() );
                else if( llList2String( lElem, 1 ) == "Factor" )
                {
                    fFactor = llList2Float( lElem, 2 );
                    Resize( FALSE );
                    llResetTime();
                }
                else if( llList2String( lElem, 1 ) == "Min" )
                    MinimumSize( FALSE );
                else if( llList2String( lElem, 1 ) == "Max" )
                    MaximumSize( FALSE );
                else if( llList2String( lElem, 1 ) == "Default" )
                {
                    if( llGetListLength( lElem ) == 2 )
                        DefaultSize( FALSE );
                    else
                        fDefault = llList2Float( lElem, 2 );
                }
            }
        }
    }
    timer()
    {
        FinMenu( TRUE );
    }
    touch_start( integer iNum )
    {
        if( llDetectedKey( 0 ) == llGetOwner() && ! iMenuOn && ! iHugeUsed )
        {
//llOwnerSay( (string)llGetFreeMemory() );
            iMenuOn = TRUE;
            iCanalMenu = iCanalComm - 10 - (integer)llFrand( 124578 );
            iEcouteMenu = llListen( iCanalMenu, "", llGetOwner(), "" );
            Menu();
        }
    }
}
Resizer
la radio      2/2
//**************************************
// Bidouillé par Superfly pour chicworld
// Distribuable, copiable, modifiable
// laisser ceci sera bon pour mon ego, c'est tout !
// et remodifié par Draconis Exonar
// laisser ceci sera bon pour mon ego à moi aussi, c'est tout ;-)
//**************************************
 

string myURL1="    http://91.121.170.229:8012"; // le flux audio à jouer a modifier
string myURL2="    http://91.121.170.229:8022"; // selon votre désir
string myURL3="    http://91.121.170.229:8032";
string myURL4="    http://91.121.170.229:8052";
string myURL5="    http://91.121.170.229:8062";
string myURL6="";
//-----------------------------------------------------------------------------
// autres streams gratuits (exemples - titre puis URL)
//
//Inworld :    
//http://91.121.170.229:8012
//
// Dancefloor :    
// http://91.121.170.229:8022
//
// Poprock :    
// http://91.121.170.229:8032
//
// Vip :    
//http://91.121.170.229:8042
//
// Love :    
// http://91.121.170.229:8052
//
// Latino :      
// http://91.121.170.229:8062  
//
// De la TECHNO
// http://88.191.102.29:7204
//
// De la DISCO HOUSE
//http://88.191.102.29:6384
//-----------------------------------------------------------------------------
 


default
{
    state_entry()
    {
        llListen( -999999, "", NULL_KEY, "" );
    }
 
listen( integer channel, string name, key id, string message )
{
    if ( message == "1" )
    {
       llSetParcelMusicURL(myURL1);
    }
  
    else if ( message == "2" )
    {
       llSetParcelMusicURL(myURL2);
    }
     else if ( message == "3" )
    {
       llSetParcelMusicURL(myURL3);
    }
     else if ( message == "4" )
    {
       llSetParcelMusicURL(myURL4);
    }
     else if ( message == "5" )
    {
       llSetParcelMusicURL(myURL5);
    }
    else if ( message == "0" )
    {
       llSay(0,"merci et au revoir");
       llSetParcelMusicURL(myURL6);
    }
}
}
la télécommande      1/2
streaming audio pour votre sim  
( 2 parties)
//Main Control Unit Send Unit
 
integer menu_handler;
integer menu_channel;
menu(key user,string title,list buttons)
{
    menu_channel = -999999 ; // You can change the Channel as needed...to add more systems into one house, but dont forget to change the channels in the Window (Target) Scriot too)
    menu_handler = llListen(menu_channel,"","","");
    llDialog(user,title,buttons,menu_channel);
    llSetTimerEvent(5.0);
}
 
default
{
    touch_start(integer t)
    {
        menu(llDetectedKey(0),"juke box",["Inworld","Dancefloor","Poprock","Love","Latino","Stop"]);
        llShout(menu_channel,"100");
    }
    timer()
    {
        llSetTimerEvent(0.0);
        llListenRemove(menu_handler);
    }
    listen(integer channel,string name,key id,string message)
    {
        if (channel == menu_channel)
        {
            llSetTimerEvent(0.0);
            llListenRemove(menu_handler);
            if(message == "Inworld")
            {
                llShout(menu_channel,"1");
           
            }
            else if(message == "Dancefloor")
            {
                llShout(menu_channel,"2");
               
            }
             else if(message == "Poprock")
            {
                llShout(menu_channel,"3");
            }
             else if(message == "Love")
            {
                llShout(menu_channel,"4");
            }
             else if(message == "Latino")
            {
                llShout(menu_channel,"5");
            }
             else if(message == "Stop")
            {
                llShout(menu_channel,"0");
            }
        }
    }
}
Pose Stand
//Pratique pour builder directement sur son avatar sans le voir bouger tout le temps. A mettre dans n'importe quelle prim
//
 
key mkLoungingAgentKey = NULL_KEY;
integer miPermissionsAcquired = FALSE;
 
default
{
    state_entry()
    {
        //overriden sit target
        //lower them a bit
        vector vLoungeTarget = <0.00, 0.00, 1.10>;
       
        rotation rX;
        rotation rY;
        rotation rZ;
        rotation r;
       
        //build rotations
        //Note: this is broken out like this to simplify the
        //        process of finding the correct sit angle.  I
        //        use the following form until I have the rotation
        //        that I want perfect, and then I simply
        //        hardcode the perfected quaterion and remove  
        //        this mess.
        //
        rX = llAxisAngle2Rot( <1,0,0>, 0 * DEG_TO_RAD);         //cartwheel
        rY = llAxisAngle2Rot( <0,1,0>, 0 * DEG_TO_RAD);       //sumersault
        rZ = llAxisAngle2Rot( <0,0,1>, 0 * DEG_TO_RAD);       //turn in place
       
        //combine rotations
        r = rX * rY * rZ;
       
        //override 'sit' on pie menu
        llSetSitText( "Stand" );
 
        //override default sit target and rotation on prim
        llSitTarget( vLoungeTarget, r );
    }
   
    changed(integer change)
    {
        if (change & CHANGED_LINK)
        {
            key agent = llAvatarOnSitTarget();
            if ( mkLoungingAgentKey == NULL_KEY && agent != NULL_KEY )
            {
 
                //changed user
                //cache new user key and request their permissions
                mkLoungingAgentKey = agent;
                 llRequestPermissions(mkLoungingAgentKey,PERMISSION_TRIGGER_ANIMATION);
            }
            else if ( mkLoungingAgentKey != NULL_KEY && agent == NULL_KEY)
            {
               
                //user is getting up
                if ( miPermissionsAcquired )
                {
                   
                    //restore anims
                    llStopAnimation("turn_180");
                              
                }
               
                //reset the script to release permissions
                llResetScript();
            }
        }       
    }
   
    run_time_permissions(integer parm)
    {
        if(parm == PERMISSION_TRIGGER_ANIMATION)
        {
           
            //set permission flag
            miPermissionsAcquired = TRUE;
           
            //cancel the sit anim
            llStopAnimation("sit");
           
            llStartAnimation("turn_180");
        }
    }   
}
// porte s'ouvre ou se ferme sur un simple clic sur la porte
integer clic = 1;
default
{
  touch_start(integer total_number)
   {   
     if(clic)
      {
         llSetRot(llEuler2Rot(<0,-90,0>*DEG_TO_RAD)*llGetLocalRot()); // changer suivant la valeur voulue et l'axe <X,Y,Z>
        clic = 0;
      } 
      else
      {
         llSetRot(llEuler2Rot(<0,90,0>*DEG_TO_RAD)*llGetLocalRot()); // changer suivant la valeur voulue et l'axe <X,Y,Z>
        clic = 1; 
      } 
    }
}
Porte clic
L'univers du script
// Simple controleur de lumiere par commande automatique selon le jour ou la nuit
 
vector vLightColor = <1.0, 1.0, 1.0>;    //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 = 0.5;   //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.08; //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
 
float fDelay = 10.0; //le délai en secondes entre 2 vérifications de l'état jour/nuit
 
//Cette fonction indique si il fait nuit ou jour dans la région où se trouve le script
integer gkDayOrNight()
{
    vector vPosSun = llGetSunDirection(); //cette fonction standard nous renvoie un vecteur avec la position du soleil par rapport à l'horizon
    if (vPosSun.z <= 0.0)   //Le soleil est sous l'horizon
    {
        return FALSE;       //alors la fonction retourne FALSE
    }
    else                    //Le soleil est au-dessus de l'horizon
    {
        return TRUE;        //alors la fonction retourne TRUE
    }
}
 
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
        llSetTimerEvent(fDelay); //On demande un event timer toutes les fDelay secondes
    }
    //L'initialisation du script est terminée ; plus rien ne se passe tant que l'on ne touche pas l'objet ou que le timer nous dit que l'état jour/nuit a changé
 
    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
            }
        }
    }
  
    timer()
    {
        bState = !gkDayOrNight(); //ceci met dans bState l'inverse de la réponse. Si la réponse est FALSE (nuit) bState devient TRUE (allumée). Si la réponse est TRUE (jour) bState devient FALSE (éteinte). Il ne reste plus qu'à appliquer le résultat
        if(bState == TRUE) //il faut allumer la lampe
        {
            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
        }
        else        //sinon il faut éteindre la lampe
        {
            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 la touchant avec l'évènement touch ; en passant commande dans le chat public.
Lumière automatique