Binary Clock v1.1
Jump to navigation
Jump to search
LSL Portal | Functions | Events | Types | Operators | Constants | Flow Control | Script Library | Categorized Library | Tutorials |
Binary Clock V1.2
// Binary Clock Script
// By Fox Diller
// OMG INSANITY!
list bTime;
list oTime;
integer token;
string dec2bin(integer dec)
{
return llGetSubString("0000,0001,0010,0011,0100,0101,0110,0111,1000,1001", dec * 5, dec * 5 + 3);
}
BuildClock()
{
integer shiftraw = (integer)llGetWallclock();
integer hours = shiftraw / 3600;
integer minutes = (shiftraw % 3600) / 60;
integer seconds = shiftraw % 60;
bTime = [hours / 10, hours % 10,
minutes / 10, minutes % 10,
seconds / 10, seconds % 10];
}
SendDigitsToLinks(string str, integer link, integer len)
{
integer x = 3;
while(len--)
{
llMessageLinked(link++, (integer) llGetSubString(str, x, x) , "", "");
--x;
}
}
displayBDC()
{
integer current_rowA = llList2Integer(bTime, 0);
if (current_rowA != llList2Integer(oTime, 0) )
{
string rowA = dec2bin(current_rowA);
SendDigitsToLinks(rowA, 2, 2);
}
else if (!current_rowA)
SendDigitsToLinks("00", 2, 2);
integer current_rowB = llList2Integer(bTime, 1);
if (current_rowB != llList2Integer(oTime, 1))
{
string rowB = dec2bin(current_rowB);
SendDigitsToLinks(rowB, 4, 4);
}
else if (!current_rowB)
SendDigitsToLinks("0000", 4, 4);
integer current_rowC = llList2Integer(bTime, 2);
if (current_rowC != llList2Integer(oTime, 2))
{
string rowC = dec2bin(current_rowC);
SendDigitsToLinks(rowC, 8, 3);
}
else if (!current_rowC)
SendDigitsToLinks("000", 8, 3);
integer current_rowD = llList2Integer(bTime, 3);
if (current_rowD != llList2Integer(oTime, 3))
{
string rowD = dec2bin(current_rowD);
SendDigitsToLinks(rowD, 11, 4);
}
else if (!current_rowD)
SendDigitsToLinks("0000", 11, 4);
integer current_rowE = llList2Integer(bTime, 4);
if (current_rowE != llList2Integer(oTime, 4))
{
string rowE = dec2bin(current_rowE);
SendDigitsToLinks(rowE, 15, 3);
}
else if (!current_rowE)
SendDigitsToLinks("000", 15, 3);
integer current_rowF = llList2Integer(bTime, 5);
if (current_rowF != llList2Integer(oTime, 5))
{
string rowF = dec2bin(current_rowF);
SendDigitsToLinks(rowF, 18, 4);
}
else if (!current_rowF)
SendDigitsToLinks("0000", 18, 4);
}
MessageLinked(integer inputLinkNumber, integer inputNumber)
{
llMessageLinked(inputLinkNumber, inputNumber, "", "");
}
default
{
touch_start(integer total_number)
{
if (llDetectedKey(0) != llGetOwner() )
return;
if ( !(token = !token) )
llOwnerSay("Off!");
else
{
oTime = bTime = [];
llOwnerSay("On!");
}
llSetTimerEvent(token);
}
timer()
{
bTime = oTime;
BuildClock();
displayBDC();
}
}