// Ceci n’est pas une solution complète
// et nécessite la saisie du nom complet d’un avatar pour fonctionner,
// y compris pour retirer quelqu’un de la liste des bannis.
// Ce script n’est qu’un exemple de l’utilisation des fonctions
// de gestion des autorisations de passage et de bannissement
// Libre de copie, d’utilisation, de modification et de distribution,
// mais inutile de me demander de débuguer votre code modifié. ;-)
//
// Les commandes sont :
// /5 ban:nom_complet_avatar => bannissement permanent
// /5 tempban:nom_complet_avatar=> bannissement d’une heure
// /5 unban:nom_complet_avatar => suppression de la liste des bannis
// /5 pass:nom_complet_avatar => droit de passage
// /5 unpass:nom_complet_avatar => droit de passage d’une heure
// /5 clearban => nettoyage de la liste des bannis
// /5 clearpass => nettoyage de la liste des droits de passage
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é, la dernière commande est encore en cours de traitement, veuillez ré-essayer dans une seconde.");
}
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")
{
// Ban à durée indeterminée
llAddToLandBanList(llDetectedKey(i),0.0);
}
if (command == "tempban")
{
// Ban pour une heure.
llAddToLandBanList(llDetectedKey(i),1.0);
}
if (command == "unban")
{
llRemoveFromLandBanList(llDetectedKey(i));
}
if (command == "pass")
{
// passage autorisé pendant une heure
llAddToLandPassList(llDetectedKey(i),1.0);
}
if (command == "unpass")
{
llRemoveFromLandPassList(llDetectedKey(i));
}
}
command = "";
}
}