Foun in the Second Life Scripting Library Forum:
integer HANDLE;
integer CHANNEL = -44567;
float INTENSITY = 10.0;
float RADIUS = 6.0;
float FALLOFF = .25;
integer FACE = 5;
list COLOR_LIST = ["white", "red", "green",
"blue", "yellow", "orange",
"purple", "pink", "cyan", "off", "random"];
list COLOR_VALUE = [<1, 1, 1>, <1, .0, .0>, <0, 1, 0>,
<0, 0, 1>, <1, 1, 0>, <1, .05, .0>,
<1, 0, 1>, <1, .02, .02>, <0, 1, 1>];
pColor(vector color)
{
llSetPrimitiveParams([PRIM_POINT_LIGHT, TRUE, color, INTENSITY, RADIUS, FALLOFF,
PRIM_COLOR, FACE, color, llGetAlpha(FACE),
PRIM_GLOW, FACE, 1.0]);
}
default
{
touch_start(integer total_number)
{
HANDLE = llListen(CHANNEL, "", NULL_KEY, "");
llDialog(llDetectedKey(0), "Color?", COLOR_LIST, CHANNEL);
}
listen(integer channel, string name, key id, string message)
{
llListenRemove(HANDLE);
if(message == "off")
{
llSetTimerEvent(0.0);
llSetPrimitiveParams([PRIM_POINT_LIGHT, FALSE, <0, 0, 0>, 0, 0, 0,
PRIM_COLOR, FACE, <.95, .95, .95>, llGetAlpha(FACE),
PRIM_GLOW, FACE, 0.0]);
llWhisper(0,"Lights out");
}
else if(message == "random") llSetTimerEvent(1.0);
else
{
llSetTimerEvent(0.0);
integer i = llListFindList(COLOR_LIST, [message]);
vector color = llList2Vector(COLOR_VALUE, i);
pColor(color);
}
}
timer()
{
vector color = llList2Vector(COLOR_VALUE, (integer)(llFrand(llGetListLength(COLOR_VALUE))));
pColor(color);
}
}