Project: Loud Clock
Back to project
File name: Loud Clock.lsl
Code: View Raw Code
mbell()
{
llTriggerSound("bell1", 1.0);
llTriggerSound("bell1", 1.0);
llTriggerSound("bell1", 1.0);
llTriggerSound("bell1", 1.0);
llTriggerSound("bell1", 1.0);
llTriggerSound("bell1", 1.0);
llTriggerSound("bell1", 1.0);
}
updclock(float timezone, integer military)
{
float cl = (llGetGMTclock()+timezone*3600)/3600.;
float hrs = cl%24; //(cl%12)/12.;
if (hrs >12.) hrs -=12;
float mns = (hrs-llFloor(hrs));
//llOwnerSay(" = "+(string)hrs);
llSetLinkPrimitiveParams(3, [PRIM_ROT_LOCAL, llEuler2Rot(<-PI/2+ 2*hrs*PI/12 , PI, 0>)]);
llSetLinkPrimitiveParams(2, [PRIM_ROT_LOCAL, llEuler2Rot(<-PI/2+2*mns*PI , PI,0>)]);
if ((integer)hrs != lastHr)
{
lastHr = (integer)hrs;
integer i;
//llOwnerSay("lastHr = "+lastHr);
integer bell = lastHr;
if (lastHr ==0) bell = 12;
for (i=0; i < bell; i++)
{
mbell();
llSleep(3);
}
}
if ((integer)(mns*4.) != lastMin)
{
lastMin = (integer)(mns*4);
if (lastMin>0)
{
mbell();
llSleep(2.);
mbell();
}
}
}
integer lastHr =-1;
integer lastMin =-1;
default
{
state_entry()
{
llSetLinkPrimitiveParams(4, [PRIM_OMEGA, <1,0,0>, 2*PI/60., 1.0]);
llSetTimerEvent(60);
updclock((integer)llGetObjectDesc(),0 );
}
timer()
{
updclock((integer)llGetObjectDesc(),0 );
}
touch_start(integer n)
{
mbell();
}
}