Rang: Ehrenmitglied
Mitglied seit: 05.09.2014(UTC) Beiträge: 84  Wohnort: Tulln und Rostock Dankte: 1 mal(e)
|
Mit dem folgenden Skript können Landbesitzer Admins benennen, die dann Störenfriede für ein paar Minuten bannen, und deren Objekte löschen dürfen. Man klickt dazu das Objekt an, und gibt dann den Namen des Störenfrieds in einem Textfeld ein. Alternativ kann man auch den Namen im entsprechenden Channel sagen. Der Eigentümer muss beim Speichern des Skripts eine Permission gewähren. Bei Gruppenland muss das Objekt das dieses Skript enthält der Gruppe übertragen werden. Code:
list lAdmins = ["Admin1 Resident", "Admin2 Nachname"]; //Admins hier in die Liste eintragen.
key kOwner = "Owner Key hier eintragen"; //Eigentümer hier in die Liste eintragen.
float fTime = 0.1; //Ban-Zeit in Stunden.
integer iListen = 666; //Listener-Channel.
string sText = "Wen willst du kicken? Format: 'Name Resident' oder 'Vorname Nachname'.";
string sNotFound = " wurde nicht gefunden.";
string sBanned = " wurde gebanned. Bitte Name, Begründung und Uhrzeit notieren.";
key kFindAgent(string name)
{
list avatarsInRegion = llGetAgentList(AGENT_LIST_REGION, []);
integer numOfAvatars = llGetListLength(avatarsInRegion);
// if no avatars, abort avatar listing process
if (!numOfAvatars)
{
return NULL_KEY;
}
integer index;
key kAVid;
string sAVname;
while (index < numOfAvatars && index < 12)
{
kAVid = llList2Key(avatarsInRegion, index);
sAVname = llGetSubString(llKey2Name(kAVid), 0, 23);
if (sAVname == name)
{
return kAVid;
}
++index;
}
return NULL_KEY;
}
default
{
state_entry()
{
llRequestPermissions(kMartinRJ, PERMISSION_RETURN_OBJECTS);
llListen(iListen, "", NULL_KEY, "");
}
touch_start(integer total_number)
{
if (llListFindList(lAdmins, [llDetectedName(0)]) != -1)
{
llTextBox(llDetectedKey(0), sText, iListen);
}
}
listen(integer channel, string name, key id, string message)
{
if (llGetAgentSize(id))
{ //id is an avatar
if (llListFindList(lAdmins, [name]) != -1 &&
llListFindList(lAdmins, [message]) == -1)
{
key kA = kFindAgent(message);
if (kA != NULL_KEY)
{
llRegionSayTo(id, PUBLIC_CHANNEL, message + sBanned);
llAddToLandBanList(kA, fTime);
llReturnObjectsByOwner(kA, OBJECT_RETURN_PARCEL_OWNER);
}
else
{
llRegionSayTo(id, PUBLIC_CHANNEL, message + sNotFound);
llTextBox(llDetectedKey(0), sText, iListen);
}
}
}
}
changed(integer change)
{
if (change & CHANGED_OWNER)
{
llResetScript();
}
}
}
Bearbeitet vom Benutzer Donnerstag, 3. November 2016 12:47:17(UTC)
| Grund: Nicht angegeben |
It is the mark of an educated mind to be able to entertain a thought without accepting it. |