// Ceci n'est pas une solution complète, il faut des noms d'avatars complets, même pour débannir quelqu'un !
// Il s'agit seulement d'un exemple des fonctions des gestion du bannissement et des droits de passage.
// Copie, modification et distribution autorisés - ne me demandez seulement pas de déboguer votre code modifié. ;-)
//
// Les commandes sont :
// /5 ban:nom_avatar_complet
// /5 tempban:nom_avatar_complet
// /5 unban:nom_avatar_complet
// /5 pass:nom_avatar_complet
// /5 unpass:nom_avatar_complet
// /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("Désolé, encore en train de traiter la dernière commande, veuillez réessayer un peu plus tard.");
}
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;
for (i = 0; i < num; ++i)
{
if (command == "ban")
{
// Bannissement à vie
llAddToLandBanList(llDetectedKey(i), 0.0);
}
if (command == "tempban")
{
// Bannissement pour 1 heure.
llAddToLandBanList(llDetectedKey(i), 1.0);
}
if (command == "unban")
{
llRemoveFromLandBanList(llDetectedKey(i));
}
if (command == "pass")
{
// Ajouter à la liste de droit de passage pour 1 heure
llAddToLandPassList(llDetectedKey(i), 1.0);
}
if (command == "unpass")
{
llRemoveFromLandPassList(llDetectedKey(i));
}
}
command = "";
}
}