Maxi Farella
Aktiver Nutzer
Hallo
Ich habe ein Lichtschalter-Dialog-Script gebaur.
Das macht einen Dialog mit einem Knopf als Lichtschalter und einem für den farbwechsel.
Der Lichtschalter soll das licht an und aus machen, und der andere Schalter soll einen Farbwahl-Dialog övvnen, mit dem die Farbe der Lampe eingestellt werden kann.
das ein und auschalten des Lichtes soll die farbe nicht verändern und beim farbwechsel soll das Licht aus bleiben, wenn es aus ist, und an bleiben, wenn es an ist.
Es funktioniert aber noch nicht so richtiig...
Hier ist erst mal die aktuelle version:
der Dialog wechselt irgrndwie nicht zwischen den ein und aus-Versionen des lichtschalters und der Farbwechsel reagiert auch nicht (ich hab nur erst mal rot orange und gelb so weit) es wechselt nicht zur auf dem Schalter angegebenen Farbe...
Könnt ihr mir vielleicht mit dem Script helfen?
Ich habe ein Lichtschalter-Dialog-Script gebaur.
Das macht einen Dialog mit einem Knopf als Lichtschalter und einem für den farbwechsel.
Der Lichtschalter soll das licht an und aus machen, und der andere Schalter soll einen Farbwahl-Dialog övvnen, mit dem die Farbe der Lampe eingestellt werden kann.
das ein und auschalten des Lichtes soll die farbe nicht verändern und beim farbwechsel soll das Licht aus bleiben, wenn es aus ist, und an bleiben, wenn es an ist.
Es funktioniert aber noch nicht so richtiig...
Hier ist erst mal die aktuelle version:
Code:
list Schalter_Liste_1 = ["turn light on", "change color"];
list Schalter_Liste_2 = ["turn light off", "change color"];
list Schalter_Liste_3 = ["Psychedelic","Lila", "Pink", "Weiß", "Gruen", "Tuerkis", "Blau", "Rot", "Orange", "Gelb"];
integer channel = 1024;
integer listen_handle; //Hier wird der listener reingelegt
float red = 1;
float green = 0;
float blue = 0;
string Textur = "Leinen-Gewebe";
string Lichtschalter;
vector color;
list params;
default
{
state_entry()
{
Lichtschalter = "off";
llSetLinkPrimitiveParamsFast(2, [PRIM_FULLBRIGHT,ALL_SIDES,FALSE]);
params = llGetLinkPrimitiveParams(2, [PRIM_POINT_LIGHT]);
color = llList2Vector(params, 1);
llSetLinkPrimitiveParamsFast(2, [PRIM_POINT_LIGHT,FALSE, color,1.0, 10.0, 0.75]);
}
touch_start(integer total_number)
{
// Hier wird abgefragt ob der click vom Owner kommt
// so erhält ein unberechtigter clicker nichtmal das blaue menü :-)
key o_key = llGetOwner();
if(llDetectedKey(0) == o_key)
{
if(Lichtschalter == "off")
{
//ein offener listener produziert lag, daher öffnet der listener erst wenn er gebraucht wird
listen_handle = llListen(channel,"", o_key,"");
llDialog(o_key, "Light Options", Schalter_Liste_1, channel);
}
else
{
//ein offener listener produziert lag, daher öffnet der listener erst wenn er gebraucht wird
listen_handle = llListen(channel,"", o_key,"");
llDialog(o_key, "Light Options", Schalter_Liste_2, channel);
}
}
else
{
llSay(0,"This is not Your Butterfly-Light, you cannot chabge it");
}
}
listen(integer chan, string name, key id, string mes)
{
//Hier frag ich nochmal ab ob das was ankommt aus einer der 3 listen kommt....
//damit schliesse ich alles aus was nicht aus diesen listen besteht zB chat, nachrichten von anderen objekten.....
//das heisst dieser bereich kann nur über das menü bedient werden....
//und das menü kann ja nur vom owner bedient werden.....
//das heisst wir haben eine geschlossene menübedienung :-)
if (llListFindList(Schalter_Liste_1 + Schalter_Liste_2 + Schalter_Liste_2, [mes]) != -1)
{
if(mes == "turn light on")
{
llSetLinkPrimitiveParamsFast(2, [PRIM_FULLBRIGHT,ALL_SIDES,TRUE]);
params = llGetLinkPrimitiveParams(2, [PRIM_POINT_LIGHT]);
color = llList2Vector(params, 1);
llSetLinkPrimitiveParamsFast(2, [PRIM_POINT_LIGHT,TRUE, color, 1.0, 10.0, 0.75]);
Lichtschalter = "on";
}
if(mes == "turn light 0ff")
{
llSetLinkPrimitiveParamsFast(2, [PRIM_FULLBRIGHT,ALL_SIDES,FALSE]);
params = llGetLinkPrimitiveParams(2, [PRIM_POINT_LIGHT]);
color = llList2Vector(params, 1);
llSetLinkPrimitiveParamsFast(2, [PRIM_POINT_LIGHT,FALSE, color,1.0, 10.0, 0.75]);
Lichtschalter = "off";
}
if(mes == "change color")
{
llDialog(id, "Change Color", Schalter_Liste_3, channel);
}
if(mes == "Rot")
{
llSetTimerEvent(0.0);
llSetLinkColor(2, <1, 0, 0>, ALL_SIDES);
if(Lichtschalter == "on")
{
llSetLinkPrimitiveParamsFast( 2, [ PRIM_POINT_LIGHT, TRUE, <1, 0, 0>,1.0, 10.0, 0.75]);
}
else
{
llSetLinkPrimitiveParamsFast( 2, [ PRIM_POINT_LIGHT, FALSE, <1, 0, 0>,1.0, 10.0, 0.75]);
}
llListenRemove(listen_handle);
}
if(mes == "Orange")
{
llSetTimerEvent(0.0);
llSetLinkColor(2, <1, 0.5, 0>, ALL_SIDES);
if(Lichtschalter == "on")
{
llSetLinkPrimitiveParamsFast( 2, [ PRIM_POINT_LIGHT, TRUE, <1, 0.5, 0>,1.0, 10.0, 0.75]);
}
else
{
llSetLinkPrimitiveParamsFast( 2, [ PRIM_POINT_LIGHT, FALSE, <1, 0.5, 0>,1.0, 10.0, 0.75]);
}
llListenRemove(listen_handle);
}
if(mes == "Gelb")
{
llSetTimerEvent(0.0);
llSetLinkColor(2, <1, 1, 0>, ALL_SIDES);
if(Lichtschalter == "on")
{
llSetLinkPrimitiveParamsFast( 2, [ PRIM_POINT_LIGHT, TRUE, <1, 1, 0>,1.0, 10.0, 0.75]);
}
else
{
llSetLinkPrimitiveParamsFast( 2, [ PRIM_POINT_LIGHT, FALSE, <1, 1, 0>,1.0, 10.0, 0.75]);
}
llListenRemove(listen_handle);
}
if(mes == "Gruen")
{
llSetTimerEvent(0.0);
llSetLinkColor(2, <0, 1, 0>, ALL_SIDES);
llListenRemove(listen_handle);
}
if(mes == "Tuerkis")
{
llSetTimerEvent(0.0);
llSetLinkColor(2, <0, 1, 1>, ALL_SIDES);
llListenRemove(listen_handle);
}
if(mes == "Blau")
{
llSetTimerEvent(0.0);
llSetLinkColor(2, <0, 0, 1>, ALL_SIDES);
llListenRemove(listen_handle);
}
if(mes == "Lila")
{
llSetTimerEvent(0.0);
llSetLinkColor(2, <0.75, 0, 1>, ALL_SIDES);
llListenRemove(listen_handle);
}
if(mes == "Pink")
{
llSetTimerEvent(0.0);
llSetLinkColor(2, <1, 0, 1>, ALL_SIDES);
llListenRemove(listen_handle);
}
if(mes == "Weiß")
{
llSetTimerEvent(0.0);
llSetLinkColor(2, <1, 1, 1>, ALL_SIDES);
llListenRemove(listen_handle);
}
if(mes == "Psychedelic")
{
llSetTimerEvent(0.2);
llListenRemove(listen_handle);
}
}
}
timer()
{
if(red >= 1.0)
{
if (blue > 0.1)
{blue = blue - 0.1;}
else
{green = green + 0.1;}
}
if(green >= 1.0)
{
if (red > 0.1)
{red = red - 0.1;}
else
{blue = blue + 0.1;}
}
if(blue >= 1.0)
{
if (green > 0.1)
{green = green - 0.1;}
else
{red = red + 0.1;}
}
llSetLinkColor(2, <red, green, blue>, ALL_SIDES);
llSetTimerEvent(0.2);
}
}
Könnt ihr mir vielleicht mit dem Script helfen?