[script testé] Compteur de visites avec liste des visiteurs

1 post / 0 new
#1 Wed, 20/03/2013 - 12:18
No picture available
Archael Magic

[script testé] Compteur de visites avec liste des visiteurs

Vous voulez savoir pour vos statistiques personnelles qui vient sur votre région ? Facile, il vous suffit de créer une primitive invisible près d'un lieu stratégique ou pour le rendre encore plus discret, d'insérer ce script dans un élément de décoration déjà existant (un mur, une lampe, un arbre ou n'importe quoi d'autre). Editez votre primitive, allez dans l'onglet "contenu", cliquez sur "nouveau script", double cliquez sur le fichier script que vous venez de créer, remplacez le texte de ce script par celui-ci (j'ai traduit ce script pour l'usage des francophone) :

// Variables globales
list visitor_list;
float range = 10.0; // en metres
float rate = 1.0; // en secondes
 
 
// Fonctions
integer isNameOnList( string name )
{
    integer len = llGetListLength( visitor_list );
    integer i;
    for( i = 0; i < len; i++ )
    {
        if( llList2String(visitor_list, i) == name )
        {
            return TRUE;
        }
    }
    return FALSE;
}
 
// Etats
default
{
    state_entry()
    {
        llSay(0, "Compteur en marche...");
        llSay(0, "Pour avoir des instruction, le propriétaire peut taper 'help'.");
        llSensorRepeat( "", "", AGENT, range, TWO_PI, rate );
        llListen(0, "", llGetOwner(), "");
    }
      
                
    sensor( integer number_detected )
    {
        integer i;
        for( i = 0; i < number_detected; i++ )
        {
            if( llDetectedKey( i ) != llGetOwner() )
            {
                string detected_name = llDetectedName( i );
                if( isNameOnList( detected_name ) == FALSE )
                {
                    visitor_list += detected_name;
                }
            }
        }    
    }
    
    listen( integer channel, string name, key id, string message )
    {
        if( id != llGetOwner() )
        {
            return;
        }
        
        if( message == "help" )
        {
            llSay( 0, "Cet objet enregistre le nom des avatars" );
            llSay( 0, "qui passent à "+ (string)range + " metres." );
            llSay( 0, "Commandes disponibles:" );
            llSay( 0, "'help'  - montre ces informations." );
            llSay( 0, "'say list'   - affiche la liste des visiteurs enregistrés.");
            llSay( 0, "'reset list' - vide la liste." );
        }
        else
        if( message == "say list" )
        {
            llSay( 0, "Liste des visiteurs:" );
            integer len = llGetListLength( visitor_list );
            integer i;
            for( i = 0; i < len; i++ )
            {
                llSay( 0, llList2String(visitor_list, i) );
            }
            llSay( 0, "Total = " + (string)len );
        }
        else
        if( message == "reset list" )
        {
            visitor_list = llDeleteSubList(visitor_list, 0, llGetListLength(visitor_list));
            llSay( 0, "Liste réinitialisée.");
        }
    }        
}