StallBoard/LSL/includes/functions.lsl
2024-08-13 21:20:58 -07:00

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 [AC]", "Board Menu [AC]", "Dialog Module [AC]", "Text", "Stall Board Flash Drive [AC]", "Board Notifier [AC]"];
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();
}