172 lines
No EOL
5.8 KiB
Text
172 lines
No EOL
5.8 KiB
Text
|
|
MainMenu(key kAv)
|
|
{
|
|
list lAppend = [];
|
|
// Check against ZNI Support roster
|
|
integer iAdmin=0;
|
|
string sAppend;
|
|
string sTag = llList2String(llGetObjectDetails(kAv,[OBJECT_GROUP_TAG]),0);
|
|
if(llListFindList(g_lSupport, [(string)kAv])!=-1 || llListFindList(g_lAdminTag, [sTag])!=-1){
|
|
if(g_kLeasedTo!=NULL)lAppend += ["PermaLease"];
|
|
iAdmin=1;
|
|
|
|
lAppend += ["Import", "Export", "MemStick"];
|
|
}
|
|
|
|
if(llListFindList(g_lManagerTag, [sTag])!=-1)iAdmin=1;
|
|
|
|
if(g_kLeasedTo == NULL){
|
|
lAppend += ["Lease"];
|
|
}else if(g_kLeasedTo == kAv || iAdmin || g_kOwner == kAv){
|
|
lAppend += ["End Lease", sSetor((g_iFlags&4)," ", "Renew"), "Set Picture", "Set Owner", sSetor ((g_iFlags & 2),"TransferLease", " "), "Set Name", Checkbox(bool(g_iMask & MASK_WHITEFRAME), "White Frame"), Checkbox(bool(g_iMask & MASK_LOGO), "Logo"), Checkbox(bool(g_iMask & MASK_CUSTOM_TEXT_COLOR), "CustomTxt"), "SetTxtC", "*RESET*"];
|
|
|
|
sAppend += "\n* CustomTxt, and SetTxtC relate to custom text colors.";
|
|
}
|
|
|
|
if(g_kLeasedTo != NULL){
|
|
lAppend += ["TimeRemain", "WhoLeased"];
|
|
}
|
|
|
|
if(g_kOwner!=NULL)sAppend+="\nOwner is : secondlife:///app/agent/"+(string)g_kOwner+"/about";
|
|
|
|
Menu(g_kAuthorized, MAIN_MENU_TEXT+sAppend, MAIN_MENU_BUTTONS+lAppend, "menu~main");
|
|
}
|
|
|
|
Menu(key kAv, string sText, list lButtons, string sIdent)
|
|
{
|
|
llMessageLinked(LINK_THIS, LINK_MENU_DISPLAY, llDumpList2String([sIdent, "TRUE", sText, llDumpList2String(lButtons, "~")], "|"), kAv);
|
|
}
|
|
GetArbitraryData(key kAv, string sText, string sIdent){
|
|
llMessageLinked(LINK_THIS, LINK_MENU_DISPLAY, llDumpList2String([sIdent, "FALSE", sText, ""], "|"), kAv);
|
|
}
|
|
|
|
string StripResident(string a)
|
|
{
|
|
list lParam = llParseString2List(a,[" ", "."],[]);
|
|
if(llGetListLength(lParam)==0 || llGetListLength(lParam)==1)return a;
|
|
|
|
if(llToLower(llList2String(lParam,1)) == "resident"){
|
|
lParam = llDeleteSubList(lParam,1,1);
|
|
}else return a;
|
|
return llDumpList2String(lParam, " ");
|
|
}
|
|
|
|
|
|
|
|
|
|
Text(){
|
|
string sColor = GetColorStr(bool(g_iMask & MASK_WHITEFRAME));
|
|
g_sName = StripResident(g_sName);
|
|
if(g_sPreferredName == ""){
|
|
if(g_sDisplayName != g_sName)
|
|
llMessageLinked(LINK_SET, 0,"<!c="+sColor+">"+ llGetSubString(g_sDisplayName+" ("+g_sName+")",0,23), "fw_data");
|
|
else
|
|
llMessageLinked(LINK_SET,0,"<!c="+sColor+">"+llGetSubString(g_sName,0,23),"fw_data");
|
|
} else llMessageLinked(LINK_SET,0,"<!c="+sColor+">"+g_sPreferredName, "fw_data");
|
|
}
|
|
|
|
CleanInventory()
|
|
{
|
|
list lDefaults = ["Board [ZNI]", "Board Menu [ZNI]", "Dialog Module", "Text", "Stall Board Flash Drive [ZNI]", "Update Module [ZNI]", "Board Notifier [ZNI]"];
|
|
integer i=0;
|
|
integer end = llGetInventoryNumber(INVENTORY_ALL);
|
|
for(i=0;i<end;i++){
|
|
string sName = llGetInventoryName(INVENTORY_ALL,i);
|
|
if(llListFindList( lDefaults, [sName] ) == -1) {
|
|
llRemoveInventory(sName);
|
|
i=-1;
|
|
end = llGetInventoryNumber(INVENTORY_ALL);
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
SavePayload(){
|
|
llRegionSay(0x99f9, llList2Json(JSON_OBJECT, ["op", "request", "get", "kvp_store", "var", "$.FFF."+llGetObjectDesc(), "val", llList2Json(JSON_OBJECT, ["lease", g_kLeasedTo, "texture", g_kTexture, "expire", g_iExpireAt, "owner", g_kOwner, "notif", g_iNotification, "name", g_sPreferredName, "whiteframe", g_iWhiteFrame, "logo", g_iLogo, "transfer", g_kTransferID, "transfer_expire", g_iTransferTimeout, "customtxtcolor", g_vCustomColorText, "usecustomtxt", g_iCustomTextColor])]));
|
|
}
|
|
|
|
DeletePayload(){
|
|
llRegionSay(0x99f9, llList2Json(JSON_OBJECT, ["op", "request", "get", "kvp_del", "var", "$.FFF."+llGetObjectDesc()]));
|
|
}
|
|
|
|
string GetColorStr(integer iWhite)
|
|
{
|
|
if(g_iCustomTextColor){
|
|
return (((string)g_vCustomColorText.x)+","+((string)g_vCustomColorText.y)+","+((string)g_vCustomColorText.z));
|
|
}else {
|
|
if(iWhite)return "0,0,0.5";
|
|
else return "white"; // black frame
|
|
}
|
|
}
|
|
|
|
GetOnline()
|
|
{
|
|
UpdateDSRequest(NULL, llRequestAgentData(g_kLeasedTo, DATA_ONLINE), SetDSMeta(["online"]));
|
|
}
|
|
|
|
GetName()
|
|
{
|
|
UpdateDSRequest(NULL, llRequestUsername(g_kLeasedTo), SetDSMeta(["name"]));
|
|
}
|
|
GetDisplayName()
|
|
{
|
|
UpdateDSRequest(NULL, llRequestDisplayName(g_kLeasedTo), SetDSMeta(["displayname"]));
|
|
}
|
|
|
|
SetLease(key i)
|
|
{
|
|
|
|
g_kLeasedTo = i;
|
|
g_iExpireAt = llGetUnixTime() + THIRTY_DAYS;
|
|
llSay(0, "Leased! You will need to set the texture after reboot finishes");
|
|
SavePayload();
|
|
llSleep(2);
|
|
g_iState = mask(SET, g_iState, STATE_REBOOT_PENDING);
|
|
}
|
|
|
|
SavePayload(){
|
|
|
|
llLinksetDataWrite("lease", (string)g_kLeasedTo);
|
|
llLinksetDataWrite("texture", (string)g_kTexture);
|
|
llLinksetDataWrite("expire", (string)g_iExpireAt);
|
|
llLinksetDataWrite("owner", (string)g_kOwner);
|
|
llLinksetDataWrite("notif", (string)g_iNotification);
|
|
llLinksetDataWrite("name", g_sPreferredName);
|
|
llLinksetDataWrite("transfer", (string)g_kTransferID);
|
|
llLinksetDataWrite("transfer_expire", (string)g_iTransferTimeout);
|
|
llLinksetDataWrite("customtxtcolor", (string)g_vCustomColorText);
|
|
llLinksetDataWrite("mask", (string)g_iMask);
|
|
|
|
}
|
|
|
|
DeletePayload()
|
|
{
|
|
llLinksetDataReset();
|
|
}
|
|
|
|
|
|
RestoreFromKVP()
|
|
{
|
|
g_kLeasedTo = llLinksetDataRead("lease");
|
|
if(g_kLeasedTo==""){
|
|
g_kLeasedTo=NULL;
|
|
return;
|
|
}
|
|
g_kTexture = llLinksetDataRead("texture");
|
|
g_iExpireAt = (integer)llLinksetDataRead("expire");
|
|
g_kOwner = llLinksetDataRead("owner");
|
|
g_iMask = (integer)llLinksetDataRead("mask");
|
|
g_iNotification = (integer)llLinksetDataRead("notif");
|
|
g_sPreferredName = llLinksetDataRead("name");
|
|
g_kTransferID = llLinksetDataRead("transfer");
|
|
g_iTransferTimeout = (integer)llLinksetDataRead("transfer_expire");
|
|
g_vCustomColorText = (vector)llLinksetDataRead("customtxtcolor");
|
|
|
|
|
|
//state rebootfast;
|
|
}
|
|
|
|
RESET()
|
|
{
|
|
llLinksetDataReset();
|
|
} |