179 lines
No EOL
5.1 KiB
Text
179 lines
No EOL
5.1 KiB
Text
#include "variables.lsl"
|
|
#include "functions.lsl"
|
|
|
|
default
|
|
{
|
|
state_entry()
|
|
{
|
|
llSetObjectName("FFF Stall Board Flash Drive [ZNI]");
|
|
llListen(5, "", "", "");
|
|
llListen(99, "", llGetOwner(), "");
|
|
//llSay(0, "Memory stick is ready");
|
|
g_iProtocol = 0x2110b;
|
|
llSetLinkColor(LINK_ROOT, <1,0,0>, 6);
|
|
//llSay(0, "Flash Memory is empty");
|
|
|
|
llSetText("", ZERO_VECTOR, 0);
|
|
llSetLinkTexture(2, TEXTURE_TRANSPARENT, 1);
|
|
}
|
|
listen(integer c,string n,key i,string m){
|
|
if(c == 99){
|
|
// This is the ID of the board to download
|
|
llRegionSayTo((key)m, 5, llList2Json(JSON_OBJECT, ["cmd", "memcpy", "protocol", g_iProtocol]));
|
|
}else if(c == 5){
|
|
if(llJsonGetValue(m,["cmd"])=="set" || llJsonGetValue(m,["cmd"])=="set_memstick"){
|
|
g_sPayload = m;
|
|
state fill;
|
|
}
|
|
}
|
|
}
|
|
|
|
}
|
|
state fill{
|
|
state_entry(){
|
|
llSetTimerEvent(1);
|
|
}
|
|
timer(){
|
|
switch(g_iFill){
|
|
case 0:{
|
|
llSetText("[]",<1,1,1>,1);
|
|
g_kLeasedTo = (key)llJsonGetValue(g_sPayload, ["leasee"]);
|
|
llSetLinkColor(LINK_ROOT, <0.75,0.15,0>, 6);
|
|
break;
|
|
}
|
|
case 1:{
|
|
llSetText("[->]",<1,1,1>,1);
|
|
g_kTexture = (key)llJsonGetValue(g_sPayload, ["texture"]);
|
|
llSetLinkColor(LINK_ROOT, <0.75,0.25,0>, 6);
|
|
break;
|
|
}
|
|
case 2:{
|
|
llSetText("[->->]",<1,1,1>,1);
|
|
g_iExpireAt = (integer)llJsonGetValue(g_sPayload, ["expire_time"]);
|
|
llSetLinkColor(LINK_ROOT, <0.5,0.5,0>, 6);
|
|
break;
|
|
}
|
|
case 3:{
|
|
llSetText("[->->->]",<1,1,1>,1);
|
|
g_kOwner = (key)llJsonGetValue(g_sPayload, ["owner"]);
|
|
llSetLinkColor(LINK_ROOT, <0.25,0.75,0>, 6);
|
|
break;
|
|
}
|
|
case 4:{
|
|
llSetText("[->->->->]",<1,1,1>,1);
|
|
g_iNotifFlags = (integer)llJsonGetValue(g_sPayload, ["notif"]);
|
|
llSetLinkColor(LINK_ROOT, <0.15,0.75,0>, 6);
|
|
break;
|
|
}
|
|
default:{
|
|
state full;
|
|
break;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
g_iFill++;
|
|
|
|
}
|
|
}
|
|
|
|
state full
|
|
{
|
|
state_entry(){
|
|
llSetText("[Saving...]",<1,1,1>,1);
|
|
UpdateDSRequest(NULL, llRequestAgentData(g_kLeasedTo, DATA_NAME), SetDSMeta(["leased"]));
|
|
llSetLinkColor(LINK_ROOT, <0,1,0>, 6);
|
|
llSetLinkTexture(2, g_kTexture, 1);
|
|
|
|
llListen(0x9f, "", "", "");
|
|
}
|
|
dataserver(key k,string d){
|
|
if(HasDSRequest(k)!=-1){
|
|
list lMeta = GetMetaList(k);
|
|
if(llList2String(lMeta,0) == "leased"){
|
|
g_sLeasedTo = d;
|
|
DeleteDSReq(k);
|
|
llSetText(g_sLeasedTo+"\n----\nStall Board Settings: 1", <0,1,1>,1);
|
|
llSetObjectName("["+d+"] Stall Board FlashMemory [ZNI]");
|
|
}
|
|
}
|
|
}
|
|
touch_start(integer t){
|
|
llSay(0, "click and hold for 5 seconds or longer to erase");
|
|
llResetTime();
|
|
}
|
|
touch(integer t){
|
|
if(llGetTime()>5){
|
|
state empty;
|
|
}
|
|
}
|
|
listen(integer c,string n,key i,string m)
|
|
{
|
|
if(llJsonGetValue(m,["cmd"]) == "retrieve")
|
|
{
|
|
g_kTransferDest = i;
|
|
|
|
state package;
|
|
}
|
|
}
|
|
}
|
|
state package
|
|
{
|
|
state_entry(){
|
|
llSetText("[scp /flash.raw newboard:/import.raw]",<1,1,1>,1);
|
|
g_sPayload = llList2Json(JSON_OBJECT,["lease", g_kLeasedTo, "texture", g_kTexture, "expire", g_iExpireAt, "owner", g_kOwner]);
|
|
|
|
g_sPayload = llList2Json(JSON_OBJECT, ["target", g_kTransferDest, "payload", g_sPayload]);
|
|
|
|
state empty;
|
|
}
|
|
}
|
|
state empty
|
|
{
|
|
state_entry(){
|
|
g_iFill = 0;
|
|
llSetTimerEvent(1);
|
|
}
|
|
timer(){
|
|
switch(g_iFill){
|
|
case 0:{
|
|
llSetLinkColor(LINK_ROOT, <0.15,0.75,0>, 6);
|
|
break;
|
|
}
|
|
case 1:{
|
|
llSetLinkTexture(2, TEXTURE_TRANSPARENT, 1);
|
|
|
|
llSetLinkColor(LINK_ROOT, <0.25,0.75,0>, 6);
|
|
break;
|
|
}
|
|
case 2:{
|
|
|
|
llSetLinkColor(LINK_ROOT, <0.5,0.5,0>, 6);
|
|
break;
|
|
}
|
|
case 3:{
|
|
|
|
llSetLinkColor(LINK_ROOT, <0.75,0.25,0>, 6);
|
|
break;
|
|
}
|
|
case 4:{
|
|
|
|
llSetLinkColor(LINK_ROOT, <0.75,0.15,0>, 6);
|
|
break;
|
|
}
|
|
case 5:{
|
|
if(g_kTransferDest != NULL)
|
|
llRegionSayTo(g_kTransferDest, 0x9f, g_sPayload);
|
|
llSleep(1);
|
|
llSetText("", ZERO_VECTOR,0);
|
|
break;
|
|
}
|
|
default:{
|
|
llResetScript();
|
|
break;
|
|
}
|
|
}
|
|
g_iFill++;
|
|
}
|
|
} |