Binary Clock v1.1
Revision as of 13:34, 12 January 2013 by Omei Qunhua (talk | contribs) (Well, Strife suggested it needed abbreviating, LOL. Anyone care to check?)
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.
LSL Portal | Functions | Events | Types | Operators | Constants | Flow Control | Script Library | Categorized Library | Tutorials |
Binary Clock V1.2
<lsl> // 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(); }
} </lsl>