jeudi 24 janvier 2008

llListenControl


llListenControl permet d'activer ou de desactiver l'ecoute d'un channel, on avait déjà vu que ce système etait possible avec llRemoveListen.
Cette fonction présente un gros interet voir une nécéssité quand on ecoute le channel publique. Tout simple parcequ'il y a enorment de message qui passe sur ce channel donc beaucoup de travail pour le script.
Les listen sur le channel public font énormement laguer; Il faut bien comprendre qu'il ne sert à rien d'ecouter un channel pour rien.
Donc soit on le remove car on en a besoin qu'une fois soit control si c'est répétitif mais temporaire.
La fonction prends deux paramètres:
Un integer qui permet d'identifier le listen cette valeur nous est retourné par llListen
et un True/False pour arreter ou relancer l'ecoute

integer KeyListen;

default {
    state_entry()
    {
        // ecoute le channel public
        KeyListen = llListen(PUBLIC_CHANNEL, "", NULL_KEY, "");
    }

    touch_start(integer total_number)
    {
        // la fonction du jour
        llListenControl(KeyListen, TRUE);
    }
   
    listen(integer channel, string name, key id, string message)
    {
        if (message == "off")
            llListenControl(KeyListen, FALSE);
        else
        //affiche en float text le contenu du chat public
            llSetText(message,<1.0,1.0,1.0>,1.0);        
    }
}

Aucun commentaire: