Difference between revisions of "LlAddToLandBanList"
Jump to navigation
Jump to search
m |
|||
(18 intermediate revisions by 7 users not shown) | |||
Line 1: | Line 1: | ||
{{LSL_Function|func_id=310|func_sleep=0.1|func_energy=10.0|func=llAddToLandBanList|sort=AddToLandBanList|p1_type=key|p1_name=avatar|p2_type=float|p2_name=hours | {{LSL_Function | ||
|func_desc=Add avatar to the land ban list for | |inject-2={{Issues/SVC-1911}}{{LSL_Function/avatar|avatar}} | ||
|return_text|spec|caveats|examples|helpers| | |func_id=310|func_sleep=0.1|func_energy=10.0 | ||
|func=llAddToLandBanList|sort=AddToLandBanList | |||
|p1_type=key|p1_name=avatar|p2_type=float|p2_name=hours | |||
|func_footnote | |||
|func_desc=Add {{LSLP|avatar}} to the land ban list for {{LSLP|hours}}, or indefinitely if {{LSLP|hours}} is zero. | |||
|return_text | |||
|spec | |||
|caveats= | |||
* Must be owned by the land owner. | |||
|constants | |||
|examples=<source lang="lsl2">// This is not a complete solution, requires full avatar names to work - even for unbanning someone! | |||
// This is meant only as an example of the land ban and pass management functions. | |||
// free to copy, use, modify, distribute - just don't ask me to debug your modified code. ;-) | |||
// | |||
// Commands are: | |||
// /5 ban:full_avatar_name | |||
// /5 tempban:full_avatar_name | |||
// /5 unban:full_avatar_name | |||
// /5 pass:full_avatar_name | |||
// /5 unpass:full_avatar_name | |||
// /5 clearban | |||
// /5 clearpass | |||
string command; | |||
default | |||
{ | |||
state_entry() | |||
{ | |||
llListen(5, "", llGetOwner(), ""); | |||
} | |||
on_rez(integer param) | |||
{ | |||
llResetScript(); | |||
} | |||
listen(integer chan, string name, key id, string message) | |||
{ | |||
if (command != "") | |||
{ | |||
llOwnerSay("Sorry, still processing last command, try again in a second."); | |||
} | |||
list args = llParseString2List(message,[":"],[]); | |||
command = llToLower(llList2String(args,0)); | |||
if (command == "clearbans") | |||
{ | |||
llResetLandBanList(); | |||
} | |||
if (command == "clearpass") | |||
{ | |||
llResetLandPassList(); | |||
} | |||
else | |||
{ | |||
llSensor(llList2String(args,1),NULL_KEY,AGENT,96,PI); | |||
} | |||
} | |||
no_sensor() | |||
{ | |||
command = ""; | |||
} | |||
sensor(integer num) | |||
{ | |||
integer i = 0; | |||
for (; i < num; ++i) | |||
{ | |||
if (command == "ban") | |||
{ | |||
// Ban indefinetely | |||
llAddToLandBanList(llDetectedKey(i),0.0); | |||
} | |||
if (command == "tempban") | |||
{ | |||
// Ban for 1 hour. | |||
llAddToLandBanList(llDetectedKey(i),1.0); | |||
} | |||
if (command == "unban") | |||
{ | |||
llRemoveFromLandBanList(llDetectedKey(i)); | |||
} | |||
if (command == "pass") | |||
{ | |||
// Add to land pass list for 1 hour | |||
llAddToLandPassList(llDetectedKey(i),1.0); | |||
} | |||
if (command == "unpass") | |||
{ | |||
llRemoveFromLandPassList(llDetectedKey(i)); | |||
} | |||
} | |||
command = ""; | |||
} | |||
}</source> | |||
|helpers | |||
|also_functions= | |||
{{LSL DefineRow||[[llAddToLandPassList]]|}} | |||
{{LSL DefineRow||[[llRemoveFromLandBanList]]|}} | |||
{{LSL DefineRow||[[llRemoveFromLandPassList]]|}} | |||
{{LSL DefineRow||[[llResetLandBanList]]|}} | |||
{{LSL DefineRow||[[llResetLandPassList]]|}} | |||
|also_tests | |||
|also_events | |||
|also_articles | |||
|issues | |||
|haiku= | |||
{{Haiku|All are welcome here|except for the following|who have annoyed me}} | |||
|cat1=Security | |||
|cat2=Parcel | |||
|cat3 | |||
|cat4 | |||
}} |
Latest revision as of 23:09, 21 January 2015
LSL Portal | Functions | Events | Types | Operators | Constants | Flow Control | Script Library | Categorized Library | Tutorials |
Summary
Function: llAddToLandBanList( key avatar, float hours );0.1 | Forced Delay |
10.0 | Energy |
Add avatar to the land ban list for hours, or indefinitely if hours is zero.
• key | avatar | – | avatar UUID | |
• float | hours |
Caveats
- This function causes the script to sleep for 0.1 seconds.
- Must be owned by the land owner.
Examples
// This is not a complete solution, requires full avatar names to work - even for unbanning someone!
// This is meant only as an example of the land ban and pass management functions.
// free to copy, use, modify, distribute - just don't ask me to debug your modified code. ;-)
//
// Commands are:
// /5 ban:full_avatar_name
// /5 tempban:full_avatar_name
// /5 unban:full_avatar_name
// /5 pass:full_avatar_name
// /5 unpass:full_avatar_name
// /5 clearban
// /5 clearpass
string command;
default
{
state_entry()
{
llListen(5, "", llGetOwner(), "");
}
on_rez(integer param)
{
llResetScript();
}
listen(integer chan, string name, key id, string message)
{
if (command != "")
{
llOwnerSay("Sorry, still processing last command, try again in a second.");
}
list args = llParseString2List(message,[":"],[]);
command = llToLower(llList2String(args,0));
if (command == "clearbans")
{
llResetLandBanList();
}
if (command == "clearpass")
{
llResetLandPassList();
}
else
{
llSensor(llList2String(args,1),NULL_KEY,AGENT,96,PI);
}
}
no_sensor()
{
command = "";
}
sensor(integer num)
{
integer i = 0;
for (; i < num; ++i)
{
if (command == "ban")
{
// Ban indefinetely
llAddToLandBanList(llDetectedKey(i),0.0);
}
if (command == "tempban")
{
// Ban for 1 hour.
llAddToLandBanList(llDetectedKey(i),1.0);
}
if (command == "unban")
{
llRemoveFromLandBanList(llDetectedKey(i));
}
if (command == "pass")
{
// Add to land pass list for 1 hour
llAddToLandPassList(llDetectedKey(i),1.0);
}
if (command == "unpass")
{
llRemoveFromLandPassList(llDetectedKey(i));
}
}
command = "";
}
}