Files
LSL-Scripts/AntiDelay_Node/AntiDelay_Node/Object/AntiDelay_Node_4.lsl
2015-08-09 16:54:31 -05:00

69 lines
2.2 KiB
Plaintext

// :CATEGORY:AntiDelay
// :NAME:AntiDelay_Node
// :AUTHOR:Xaviar Czervik
// :CREATED:2010-01-10 05:20:56.000
// :EDITED:2013-09-18 15:38:47
// :ID:43
// :NUM:60
// :REV:1.0
// :WORLD:Second Life
// :DESCRIPTION:
// The code to make it all work:
//
//
// AntiDelay Node Manager:
// :CODE:
list l = [];
list functions = ["email", "loadurl", "teleportagenthome", "remoteloadscriptpin", "remotedatareply", "giveinventorylist",
"setparcelmusicurl", "instantmessage", "preloadsound", "mapdestination", "dialog", "createlink", "setpos",
"setrot", "settexture", "rezobject"];
list delays = [20000, 10000, 5000, 3000, 3000, 2000, 2000, 1000, 1000, 1000, 1000, 1000, 200, 200, 200, 100];
integer count = 1;
integer time() {
string stamp = llGetTimestamp();
return (integer) llGetSubString(stamp, 11, 12) * 3600000 +
(integer) llGetSubString(stamp, 14, 15) * 60000 +
llRound((float)llGetSubString(stamp, 17, -2) * 1000000.0)/1000;
}
integer nextFreeScript() {
integer i = 0;
integer curTime = time();
while (i < llGetListLength(l)) {
if (llList2Integer(l, i) - curTime <= 0) {
return i;
}
++i;
}
return -1;
}
default {
state_entry() {
llMessageLinked(LINK_SET, -112, "", "");
llSleep(1);
llMessageLinked(LINK_SET, -111, "", "");
}
link_message(integer send, integer i, string s, key k) {
if (i == -2) {
llMessageLinked(LINK_SET, (integer)s, (string)count, "");
++count;
l += time();
llSetTimerEvent(6);
}
}
timer() {
state run;
}
}
state run {
state_entry() {
}
link_message(integer send, integer i, string s, key k) {
if (i == -123) {
llOwnerSay("A");
integer d = llList2Integer(delays, llListFindList(functions, [(string)k]));
integer ii = nextFreeScript();
l = llListReplaceList(l, [time() + d], ii, ii);
llMessageLinked(LINK_SET, ii+1, s, k);
}
}
}