62 lines
No EOL
2 KiB
Text
Executable file
62 lines
No EOL
2 KiB
Text
Executable file
#include "variables.lsl"
|
|
#include "functions.lsl"
|
|
|
|
integer g_iAt;
|
|
integer g_iOffset;
|
|
integer g_iPass=-1;
|
|
integer g_iTotal;
|
|
|
|
#define IDENTITY "$.FFF."
|
|
|
|
default
|
|
{
|
|
link_message(integer s,integer n,string m,key i){
|
|
if(n == 918901)
|
|
{
|
|
g_iOffset = (integer)m;
|
|
llWhisper(0, "Please wait - Restoring ID from offset: "+m);
|
|
UpdateDSRequest(NULL, llKeyCountKeyValue(), SetDSMeta(["countkeys"]));
|
|
}
|
|
}
|
|
dataserver(key kID, string sData)
|
|
{
|
|
if(HasDSRequest(kID)!=-1){
|
|
list lMeta = GetMetaList(kID);
|
|
string sOperation = llList2String(lMeta,0);
|
|
list lCSV = llCSV2List(sData);
|
|
switch(sOperation)
|
|
{
|
|
case "countkeys":{
|
|
g_iAt=0;
|
|
g_iTotal = (integer)llList2String(lCSV,1);
|
|
UpdateDSRequest(kID, llKeysKeyValue(g_iAt,1), SetDSMeta(["key"]));
|
|
break;
|
|
}
|
|
case "key":{
|
|
g_iAt++;
|
|
if(llList2String(lCSV,0) == "0"){
|
|
DeleteDSReq(kID);
|
|
llSay(0, "FATAL: No ID at offset");
|
|
llMessageLinked(LINK_SET, 918902, "", "no_restore");
|
|
llSleep(2);
|
|
llResetScript();
|
|
return;
|
|
}
|
|
string sKeyName = llList2String(lCSV,1);
|
|
if(llGetSubString(sKeyName, 0, llStringLength(IDENTITY)) == IDENTITY){
|
|
g_iPass++;
|
|
}
|
|
|
|
if(g_iPass == g_iOffset){
|
|
llMessageLinked(LINK_SET, 918902, sKeyName, "zni_restore");
|
|
DeleteDSReq(kID);
|
|
}else {
|
|
UpdateDSRequest(kID, llKeysKeyValue(g_iAt, 1), SetDSMeta(["key"]));
|
|
}
|
|
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
} |