GridTalk.de

Normale Version: Lampen(u. Feuer)script u. Dämmerungsschalter
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
„Wenn man denkt es geht nicht mehr, kommt irgendwo ein Lichtlein her“ Smile
[attachment=747]
Ich liebe ja so Lichtspielereien^^ u. da sich meine beiden kleinen Scriptchen recht gut in der Praxis bewährt haben, setze ich sie mal hier rein.

Das Lampenscript:
Code:
//****** Use this for a Region-Light Control ****
integer RegContchannel =1238;
string RegContOn ="on";
string RegContOff ="off";
// **********************************************

// Licht-Script
// MoniTill

// Lizenz: Gemeinfrei (Public domain)

vector lightcolor = <1.000, 0.757, 0.514>;    // The Color of the flame a lit. bit yellow
integer lightObj =1;   // The Flame/Light Object in the Linkset


integer onoff=0;

ligton()
{
llSetLinkPrimitiveParams(lightObj,[ PRIM_GLOW, ALL_SIDES, 0.21 ] );  
llSetLinkPrimitiveParams(lightObj,[PRIM_FULLBRIGHT,ALL_SIDES,TRUE,PRIM_POINT_LIGHT, TRUE,  lightcolor, 1.0, 10.0, 0.75]);
// llSetLinkAlpha(lightObj, 0.34, ALL_SIDES);    // Delete this for a normal Lamp
onoff = 1;
}

ligtoff()
{
llSetLinkPrimitiveParams(lightObj,[ PRIM_GLOW, ALL_SIDES, 0 ] );  
llSetLinkPrimitiveParams(lightObj,[PRIM_FULLBRIGHT,ALL_SIDES,FALSE,PRIM_POINT_LIGHT, FALSE,lightcolor, 1.0, 10.0, 0.75 ]);
//llSetLinkAlpha(lightObj, 0.00, ALL_SIDES);    // Delete this for a normal Lamp
onoff = 0;  
}

default
{
    state_entry()
    {
      integer handle = llListen( RegContchannel, "", "", "" );    
                                                                    
    }

    touch_start(integer total_number)
    {
    
      if (onoff == 0)
      {
      ligton();
      }    
      else
      {
      ligtoff();
      }
    
    }
    
    listen(integer RegContchannel, string name, key id, string message)
    {

            if (message == RegContOn)  
      {

            ligton();
      }  
      if (message == RegContOff)  
      {
      ligtoff();
      }  
    }

}

Man trägt bei „integer lightObj =“ die Nummer des Objektes aus dem Linkset ein, welches das Leuchtmittel ist.
Falls das Leuchtmittel ein Feuer (wie zB bei einer Kerze) ist, einfach bei den beiden //llSetLinkAlpha .. Zeilen die Kommentarslashes entfernen, dann wird die Flamme beim abschalten unsichtbar.
Man kann die Lampe von Hand schalten und/oder über eine Regionskontrolle.

Diese kommt hier. Das ist ein Regionsweiter Dämmerungsschalter, der bei Sonnenhöhe 0.1 (Abends wenn es anfängt zu dämmern oder Morgens im Morgengrauen) die Lampen an bzw. ab schaltet. Und das geschieht nur einmal Abends u. Morgens. Wenn man sich ein Kerzchen angemacht hat, bläst einem das Teil diese nicht 5 min später wieder aus... Smile Ist auch praktisch, wenn man am Sim Tag ein Nachtfoto machen will, dann kann man damit alle Lampen für kurze Zeit anschalten. Das Ding packt man einmal pro Region in ein Objekt. In der Gridtalk Region ist es der Nistkasten an der Birke bei der Holzbrücke. In Degol findet man das Ding im ersten Shop.

Ich habe das auch deshalb absichtlich getrennt, weil es per Timer die Höhe abfragt und somit mehr Ressourcen fordert als die Lampenscripte, die solange ruhen bis sie jemand anklickt oder eine Nachricht über ihren Kanal kommt.

Code:
// Lichtschalter   V1  

float schaltzeit = 0.1 ;
integer RegContchannel =1238;
integer onoff = 0;


default
{
   state_entry()
   {
     llSetTimerEvent(300);
   }
  
   timer()
   {
     vector sun = llGetSunDirection();

     if (sun.z <= schaltzeit && onoff == 0 )
     {
       llRegionSay(RegContchannel,"on");
       onoff = 1;
     }
    if (sun.z > schaltzeit && onoff == 1)
     {
       llRegionSay(RegContchannel,"off");
       onoff = 0;
     }
      
   }

   touch_start(integer total_number)
   {
      if (onoff == 0)
      {
       llRegionSay(RegContchannel,"on");
       onoff = 1;
      }    
      else
      {
       llRegionSay(RegContchannel,"off");
       onoff = 0;
      }
    }
  

  
}