// Binary Clock Script
// By Fox Diller
// OMG INSANITY!
list bTime;
list oTime;
integer token;
string dec2bin(integer dec)
{
if (dec == 0) return "0000";
if (dec == 1) return "0001";
if (dec == 2) return "0010";
if (dec == 3) return "0011";
if (dec == 4) return "0100";
if (dec == 5) return "0101";
if (dec == 6) return "0110";
if (dec == 7) return "0111";
if (dec == 8) return "1000";
if (dec == 9) return "1001";
return "0000";
}
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];
}
displayBDC()
{
integer current_rowA = llList2Integer(bTime, 0);
integer old_rowA = llList2Integer(oTime, 0);
if (current_rowA != old_rowA)
{
string rowA = dec2bin(current_rowA);
integer Acol0 = (integer)llGetSubString(rowA, 3, 3);
integer Acol1 = (integer)llGetSubString(rowA, 2, 2);
llMessageLinked(2, Acol0, "", "");
llMessageLinked(3, Acol1, "", "");
} else if (!current_rowA) {
llMessageLinked(2, 0, "", "");
llMessageLinked(3, 0, "", "");
}
integer current_rowB = llList2Integer(bTime, 1);
integer old_rowB = llList2Integer(oTime, 1);
if (current_rowB != old_rowB)
{
string rowB = dec2bin(current_rowB);
integer Bcol0 = (integer)llGetSubString(rowB, 3, 3);
integer Bcol1 = (integer)llGetSubString(rowB, 2, 2);
integer Bcol2 = (integer)llGetSubString(rowB, 1, 1);
integer Bcol3 = (integer)llGetSubString(rowB, 0, 0);
llMessageLinked(4, Bcol0, "", "");
llMessageLinked(5, Bcol1, "", "");
llMessageLinked(6, Bcol2, "", "");
llMessageLinked(7, Bcol3, "", "");
} else if (!current_rowB) {
llMessageLinked(4, 0, "", "");
llMessageLinked(5, 0, "", "");
llMessageLinked(6, 0, "", "");
llMessageLinked(7, 0, "", "");
}
integer current_rowC = llList2Integer(bTime, 2);
integer old_rowC = llList2Integer(oTime, 2);
if (current_rowC != old_rowC)
{
string rowC = dec2bin(current_rowC);
integer Ccol0 = (integer)llGetSubString(rowC, 3, 3);
integer Ccol1 = (integer)llGetSubString(rowC, 2, 2);
integer Ccol2 = (integer)llGetSubString(rowC, 1, 1);
llMessageLinked(8, Ccol0, "", "");
llMessageLinked(9, Ccol1, "", "");
llMessageLinked(10, Ccol2, "", "");
} else if (!current_rowC) {
llMessageLinked(8, 0, "", "");
llMessageLinked(9, 0, "", "");
llMessageLinked(10, 0, "", "");
}
integer current_rowD = llList2Integer(bTime, 3);
integer old_rowD = llList2Integer(oTime, 3);
if (current_rowD != old_rowD)
{
string rowD = dec2bin(current_rowD);
integer Dcol0 = (integer)llGetSubString(rowD, 3, 3);
integer Dcol1 = (integer)llGetSubString(rowD, 2, 2);
integer Dcol2 = (integer)llGetSubString(rowD, 1, 1);
integer Dcol3 = (integer)llGetSubString(rowD, 0, 0);
llMessageLinked(11, Dcol0, "", "");
llMessageLinked(12, Dcol1, "", "");
llMessageLinked(13, Dcol2, "", "");
llMessageLinked(14, Dcol3, "", "");
} else if (!current_rowD) {
llMessageLinked(11, 0, "", "");
llMessageLinked(12, 0, "", "");
llMessageLinked(13, 0, "", "");
llMessageLinked(14, 0, "", "");
}
integer current_rowE = llList2Integer(bTime, 4);
integer old_rowE = llList2Integer(oTime, 4);
if (current_rowE != old_rowE)
{
string rowE = dec2bin(current_rowE);
integer Ecol0 = (integer)llGetSubString(rowE, 3, 3);
integer Ecol1 = (integer)llGetSubString(rowE, 2, 2);
integer Ecol2 = (integer)llGetSubString(rowE, 1, 1);
llMessageLinked(15, Ecol0, "", "");
llMessageLinked(16, Ecol1, "", "");
llMessageLinked(17, Ecol2, "", "");
} else if (!current_rowE) {
llMessageLinked(15, 0, "", "");
llMessageLinked(16, 0, "", "");
llMessageLinked(17, 0, "", "");
}
integer current_rowF = llList2Integer(bTime, 5);
integer old_rowF = llList2Integer(oTime, 5);
if (current_rowF != old_rowF)
{
string rowF = dec2bin(current_rowF);
integer Fcol0 = (integer)llGetSubString(rowF, 3, 3);
integer Fcol1 = (integer)llGetSubString(rowF, 2, 2);
integer Fcol2 = (integer)llGetSubString(rowF, 1, 1);
integer Fcol3 = (integer)llGetSubString(rowF, 0, 0);
llMessageLinked(18, Fcol0, "", "");
llMessageLinked(19, Fcol1, "", "");
llMessageLinked(20, Fcol2, "", "");
llMessageLinked(21, Fcol3, "", "");
} else if (!current_rowF) {
llMessageLinked(18, 0, "", "");
llMessageLinked(19, 0, "", "");
llMessageLinked(20, 0, "", "");
llMessageLinked(21, 0, "", "");
}
}
default
{
touch_start(integer total_number)
{
if (!token && llDetectedKey(0) == llGetOwner())
{
oTime = [];
bTime = [];
llSetTimerEvent(1.0);
token = 1;
llOwnerSay("On!");
}
else if (token && llDetectedKey(0) == llGetOwner())
{
llSetTimerEvent(0);
token = 0;
llOwnerSay("Off!");
}
}
timer()
{
bTime = oTime;
BuildClock();
displayBDC();
}
}