• Bitte schaltet eure Ad Blocker aus. SLinfo kann nur betrieben werden, wenn es durch Werbung Einnahmen erzielt. Vielen Dank!!
  • Wir freuen uns, wenn du dich in unserem Forum anmeldest. Bitte beachte, dass die Freigabe per Hand durchgeführt wird (Schutz vor Spammer). Damit kann die Freigabe bis zu 24 Stunden dauern.
  • Wir verwenden Cookies, um Inhalte und Anzeigen zu personalisieren, Funktionen für soziale Medien anbieten zu können und die Zugriffe auf unsere Website zu analysieren. Sie geben Einwilligung zu unseren Cookies, wenn Sie unsere Webseite weiterhin nutzen.

Licht im Haar bzw. Facelight in Haaren

Anette Thor

Nutzer
Hallo,

ich habe Haare die ich nicht gemacht habe, die aber copy, transfer und mod sind. Diesen Haaren wollte ich gerne ein Facelight spendieren, und zwar nicht indem ich ein ein Object anhänge das leuchtet sondern richtig schön mit folgendem Script:

vector on = <1.0,1.0,1.0>;
vector off = <0.0,0.0,0.0>;

key owner;

default
{
state_entry()
{
llWhisper(0, "Light activated");
owner = llGetOwner();
llListen(0,"",owner,"on");
llListen(0,"",owner,"off");
}

listen(integer channel, string name, key id, string m)
{
if (m == "on")
{
llSetColor(on,ALL_SIDES);
}
if (m == "off")
{
llSetColor(off,ALL_SIDES);
}
}
}

Aber leider geht mir kein Licht auf ?! Was mache ich da verkehrt ? Wie gesagt ich weiß, einfach ein Object bauen, das Script rein, vor dem Gesicht positionieren und dann mit dem Rest STRG L verknüpfrn, aber warum einfach wenn es auch kompliziert geht ?!

Herzlichen Dank !
 
S

Sinja Allen

Guest
halo!

mit llSetColor() wechselts du nur die prim farbe. im deinem beispiel weiss oder schwarz.

mit

llSetPrimitiveParams([PRIM_POINT_LIGHT, TRUE, <1, 1, 1>, 1.0, 10.0, 0.75]);

bzw.

llSetPrimitiveParams([PRIM_POINT_LIGHT, FALSE, <1, 1, 1>, 1.0, 10.0, 0.75]);

solte das funktioniere.

http://wiki.slinfo.de/wakka.php?wakka=HomePage/FunctionCategories/llSetPrimitiveParams&v=3wn

Code:
default 
{ 
state_entry() 
{
llListen(0, "", llGetOwner(), "");
}

listen(integer channel, string name, key id, string m)
{ 
if (m == "on")
{
llSetPrimitiveParams([PRIM_POINT_LIGHT, TRUE, <1, 1, 1>, 1.0, 10.0, 0.75]);
llWhisper(0, "Light activated");
}
if (m == "off")
{
llSetPrimitiveParams([PRIM_POINT_LIGHT, FALSE, <1, 1, 1>, 1.0, 10.0, 0.75]);
llWhisper(0, "Light deactivated");
}
}
}
 

Anette Thor

Nutzer
Vielen Dank Sinja,

jetzt habe ihc folgnndes Problem und zwar habe ich das so geregelt ...



integer light_s = TRUE;

default
{
state_entry()
{
llListen(0, "", llGetOwner(), "");
}
listen(integer channel, string name, key id, string m)
{
if (m == "on");
{
llSetPrimitiveParams([PRIM_FULLBRIGHT,ALL_SIDES,FALSE]);
llSetPrimitiveParams([PRIM_POINT_LIGHT, FALSE,<0.0,1.0,0.0>,1.0, 10.0, 2.0]);
llWhisper(0, "Light activated");
}
if (m == "off" && light_s == TRUE);
{
llSetPrimitiveParams[PRIM_POINT_LIGHT,TRUE,<1.0,0.7,1.0>,1.0,(0.0-1.0)10.0,0.6 ]);
llWhisper(0, "Light deactivated");
}
return;}
}
}


Aber er macht mir immer sofort das Licht an und geht auf aus wenn ihc on eingebe :( Und mit else if, kriege ich eine Fehler meldung ...bitte kann mir das mal jemand erklären ?! Danke vielmals !

Anette
 

Mini Pinion

Freund/in des Forums
Spontan wuerde ich sagen, dass TRUE und FALSE in den Aufrufen von llSetPrimitiveParams vertauscht sind.

Edit: OK, ich relativiere die Behauptung, da haben sich ein paar Fehler eingeschlichen. So sollte es geht:

Code:
default 
{ 
    state_entry() 
    { 
        llListen(0, "", llGetOwner(), ""); 
    } 

    listen(integer channel, string name, key id, string m) 
    { 
        if (m == "on") 
        { 
            llSetPrimitiveParams([PRIM_FULLBRIGHT, ALL_SIDES, TRUE]); 
            llSetPrimitiveParams([PRIM_POINT_LIGHT, TRUE, <1.0,1.0,1.0>, 1.0, 10.0, 2.0]); 
            llWhisper(0, "Light activated"); 
        } 
        else if (m == "off")
        { 
            llSetPrimitiveParams([PRIM_FULLBRIGHT, ALL_SIDES, FALSE]);
            llSetPrimitiveParams([PRIM_POINT_LIGHT,FALSE, <1.0,1.0,1.0>, 1.0, 10.0, 2.0 ]); 
            llWhisper(0, "Light deactivated"); 
        } 
    } 
}

Im Grunde das Gleiche, was Sinja schon gepostet hatte. Noch einen Hinweis: Nach dem 'if (...)' kein Semikolon, da der darauf folgende Block/Befehl sonst immer ausgefuehrt wird. Das duerfte auch der Grund dafuer sein, dass der else-Zweig nicht erkannt wurde.
 
E

Ezian Ecksol

Guest
Da hat Mini absolut recht. Wenn du noch etwas Platz für unsere armen, laggeplagten Server sparen willst, kürzt du das ganze so zusammen:


Code:
list keywords = ["off", "on"];

default 
{ 
    state_entry() 
    { 
        llListen(0, "", llGetOwner(), ""); 
    } 

    listen(integer channel, string name, key id, string m) 
    { 
       integer i = llListFindList(keywords, [m]);
       if (i != -1) {
              llSetPrimitiveParams([PRIM_FULLBRIGHT, ALL_SIDES, i, PRIM_POINT_LIGHT, i, <1.0,1.0,1.0>, 1.0, 10.0, 2.0]); 
              llWhisper(0, "Light turned "+llList2String(keywords, i)); 
        } 
    } 
}
 

Anette Thor

Nutzer
Vielen Dank euch beiden, manchmal sieht man den Wald vor lauter Bäumen nicht und ich bin echt Anfänger ...

Aber mit eisernem Willen :) Und zwei Tassen Kamilen Tee ist meine eigene Überlegung gewesen, es so wie folgt zu machen :


Trotzdem nochmals vielen danke dreien ...

[code on
]
// PRIM_POINT_LIGHT Schaltet die Eigenschaften und Attribute von Licht: an/aus, color, intensity, radius, und falloff.
//Licht an/aus: TRUE/FALSE, Color:vector color, intensity: float intensity, radius :float radius, Abnehmend : float falloff
//Bsp. [PRIM_POINT_LIGHT, TRUE, <1, 1, 1>, 1.0, 10.0, 0.75]

integer light_s; // Ist die Var FALSE ist das Licht aus
vector light_color = <1.0,1.0,4.0>; // light color vector range: 0.0-1.0 *3
integer intensity = 1; // intensity (0.0-1.0)
integer radius = 10; // radius (.1-10.0)
integer falloff = 2; // falloff (.01-1.0)
key owner; // Besitzer Key
string command = ""; // Auswertung on/off
integer channel = 2; // Kanal auf den gehört wird

default
{
state_entry()
{
owner = llGetOwner();
llListen(channel,"",owner,"");
}

listen(integer channel, string name, key id, string message)
{
list strings = llParseString2List(message,[" "],[]);
string command=llList2String(strings,0);


if (command == "on")
{
light_s = TRUE;
}
if (command == "off")
{
light_s = FALSE;
}



if (light_s == FALSE)
{
//llOwnerSay("off");
llSetPrimitiveParams([PRIM_FULLBRIGHT,ALL_SIDES,FALSE]);
llSetPrimitiveParams([PRIM_POINT_LIGHT, light_s, light_color,intensity,radius,falloff]);
llWhisper(0, "Light is deactivated (off)");
}
else if (light_s == TRUE)
{
//llOwnerSay("on");
llSetPrimitiveParams([PRIM_FULLBRIGHT,ALL_SIDES,TRUE]); //leave fullbright commented for now
llSetPrimitiveParams([PRIM_POINT_LIGHT,light_s,light_color,intensity,radius, falloff]);
llWhisper(0, "Light is activated (on)");
}
//llOwnerSay ("debug command = " + command);
}
}

[code off]

Wäre natürlich sehr schön falls ihr das noch was zu verbessern habt wenn ihr mir bitte Beschied gebt und auch kurz dokumentiert warum. Ansonsten kann das jeder nutzen wer mag ...

Eure Anette
 

Joshua Philgarlic

Aktiver Nutzer
Einen klitzekleinen Verbesserungsvorschlag hätte ich noch:

Ersetze die beiden llWhisper(0,... usw. durch llOwnerSay(...

Mich persönlich stört es immer wenn ich die "Systemmeldungen" von benachbarten Avataren höre. Es gibt nix unnötigeres!

;-)
 

Lisa Roffo

Aktiver Nutzer
stimmt hehe

"XX is lightly aroused" ist auch immer so ne Message die doch keiner wissen will ^^

sorry fürs OT :D
 

Anette Thor

Nutzer
Joshua Philgarlic schrieb:
Einen klitzekleinen Verbesserungsvorschlag hätte ich noch:

Ersetze die beiden llWhisper(0,... usw. durch llOwnerSay(...

Mich persönlich stört es immer wenn ich die "Systemmeldungen" von benachbarten Avataren höre. Es gibt nix unnötigeres!

;-)

Ups sorry, stimmt :) Habe ich gar nicht so beachtet ...lol ! Klar ...

Danke sehr !
 

Aktive User in diesem Thread

Oben Unten