91 lines
2.9 KiB
Text
91 lines
2.9 KiB
Text
/*
|
|
* This Source Code Form is subject to the terms of the Mozilla Public
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
|
*
|
|
* Copyright (c) the AVsitter Contributors (http://avsitter.github.io)
|
|
* AVsitter™ is a trademark. For trademark use policy see:
|
|
* https://avsitter.github.io/TRADEMARK.mediawiki
|
|
*
|
|
* Please consider supporting continued development of AVsitter and
|
|
* receive automatic updates and other benefits! All details and user
|
|
* instructions can be found at http://avsitter.github.io
|
|
*/
|
|
|
|
list SECURITY_TYPES = ["ALL", "OWNER ONLY", "GROUP ONLY"];
|
|
integer security_index;
|
|
integer pass_security(key id)
|
|
{
|
|
integer access_allowed = FALSE;
|
|
string SECURITY_TYPE = llList2String(SECURITY_TYPES, security_index);
|
|
if (SECURITY_TYPE == "ALL")
|
|
{
|
|
access_allowed = TRUE;
|
|
}
|
|
else if (SECURITY_TYPE == "GROUP ONLY" && llSameGroup(id) == TRUE)
|
|
{
|
|
access_allowed = TRUE;
|
|
}
|
|
else if (id == llGetOwner())
|
|
{
|
|
access_allowed = TRUE;
|
|
}
|
|
return access_allowed;
|
|
}
|
|
default
|
|
{
|
|
touch_end(integer touched)
|
|
{
|
|
if (pass_security(llDetectedKey(0)) == TRUE)
|
|
{
|
|
llMessageLinked(LINK_SET, 90005, "", llDetectedKey(0));
|
|
}
|
|
else
|
|
{
|
|
llInstantMessage(llDetectedKey(0), "Sorry, the owner of this object has set the menu to: " + llList2String(SECURITY_TYPES, security_index));
|
|
}
|
|
}
|
|
link_message(integer sender, integer num, string msg, key id)
|
|
{
|
|
if (msg == "[SECURITY]")
|
|
{
|
|
if (id == llGetOwner())
|
|
{
|
|
security_index++;
|
|
if (security_index == llGetListLength(SECURITY_TYPES))
|
|
{
|
|
security_index = 0;
|
|
}
|
|
llMessageLinked(LINK_SET, 0, llList2String(SECURITY_TYPES, security_index), "");
|
|
llInstantMessage(id, "Security set to: " + llList2String(SECURITY_TYPES, security_index));
|
|
}
|
|
else
|
|
{
|
|
llInstantMessage(id, "Sorry, only the owner can change this.");
|
|
}
|
|
llMessageLinked(LINK_SET, 90005, "", id);
|
|
}
|
|
else if (num == 90060 && pass_security(id) == TRUE)
|
|
{
|
|
llMessageLinked(LINK_SET, 90005, "", id);
|
|
}
|
|
}
|
|
changed(integer change)
|
|
{
|
|
if (change & CHANGED_LINK)
|
|
{
|
|
integer i = llGetNumberOfPrims();
|
|
while (llGetAgentSize(llGetLinkKey(i)) != ZERO_VECTOR)
|
|
{
|
|
key av = llGetLinkKey(i);
|
|
if (pass_security(av) == FALSE)
|
|
{
|
|
llSleep(2);
|
|
llUnSit(av);
|
|
llInstantMessage(av, "Sorry, the owner of this object has set the menu to: " + llList2String(SECURITY_TYPES, security_index));
|
|
}
|
|
i--;
|
|
}
|
|
}
|
|
}
|
|
}
|