script qui donne le nom et le nombre de visiteurs dans un endroit

Répondre
Partager Rechercher
Coucou,
encore moi, pfffffffffffff, je sais, je sais.....
sauriez vous où trouver le script qui discrètement dans un objet compte le passage et même le nom des avatars qui sont passé sur le terrain où je le placerais ???
ou alors où trouver cela dans un mag ?? mn homme a trouvé une boule radar dans un freebies mais pas copiable et il me parait bien fait mais il ne sait plus où il l'a trouvé grrrrrrrrrrr, et j'aimerais bien comptabiliser le nombre de personne qui viennent et même leur nom chez moi.
Merci d'avance
Bisous, poutous
IL y a ce free qui fonctionne :

// Global variables
listvisitor_list;
floatrange=10.0; // in meters
floatrate=1.0; // in seconds


// Functions
integerisNameOnList(stringname)
{
integerlen=llGetListLength(visitor_list);
integeri;
for(i=0;i<len;i++)
{
if(llList2String(visitor_list,i)==name)
{
returnTRUE;
}
}
returnFALSE;
}

// States
default
{
state_entry()
{
llSay(0,"Visitor List Maker started...");
llSay(0,"The owner can say 'help' for instructions.");llSensorRepeat("","",AGENT,range,TWO_PI,rate);
llListen(0,"",llGetOwner(),"");
}
sensor(integernumber_detected)
{
integeri;
for(i=0;i<number_detected;i++)
{
if(llDetectedKey(i)!=llGetOwner())
{
stringdetected_name=llDetectedName(i);
if(isNameOnList(detected_name)==FALSE)
{
visitor_list+=detected_name;
}
}
}}
listen(integerchannel,stringname,keyid,stringmessage)
{
if(id!=llGetOwner())
{
return;
}
if(message=="help")
{
llSay(0,"This object records the names of everyone who");
llSay(0,"comes within "+(string)range+" meters.");
llSay(0,"Commands the owner can say:");
llSay(0,"'help' - Shows these instructions.");
llSay(0,"'say list' - Says the names of all visitors on the list.");
llSay(0,"'reset list' - Removes all the names from the list.");
}
else
if(message=="say list")
{
llSay(0,"Visitor List:");
integerlen=llGetListLength(visitor_list);
integeri;
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,"Done resetting.");
}
}}


Citation :
Publié par bestmomo
Je n'ai jamais dit que le code de ce free était optimisé, juste qu'il fonctionnait. Je le prenais plutôt comme un exemple.

Et moi je dis qu'il n'est pas optimisé du tout. Pour chaque nouveau visiteur, il utilise un algorithme en n^2 pour s'en rappeler. Il n'utilise même pas les fonctions de recherche de liste standard, il range les nouveaux à la fin, rescane toute les secondes et recherche du début à la fin si l'avatar y est. Il scane toutes les secondes donc, sur 20m de diamètre alors que les avatars vont à 2m/s. C'est stupide.

Pour un exemple de script, c'est un exemple de script à ne pas faire.
Le forum "Créations" a pour but de "Pour discuter créativité dans SL", pas spécialement pour réaliser des freebies à la demande. Dire qu'un script est mauvais et pourquoi rentre parfaitement dans le sujet.

Bon, déjà tu l'adapte à ton terrain, là ce truc scanne sur une sphère de 10m de rayon, et comme il ne détecte pas les taupes, pas la peine de le faire chercher sous le sol. En plus si tu as a 512m^2, il va scanner chez les voisins. Tu peux aussi le mettre à un coin et scanner sur 1/8 de sphère. Mais ça dépend de ton terrain.

Ensuite tu adaptes la fréquence de scan au rayon que tu as mis, sachant que les avatars vont à 2m/s en marchant.

Pour éviter que ça lague quand tu es là avec des amis, réduit la fréquence quand il te détecte (une fois toutes les minutes, ça suffit) ou quand il détecte que la sim est en train de ramer (vu que c'est une fonctionnalité annexe). Si tu es là éventuelement, il peut ne rien enregistrer, c'est inutile, tu vois les gens qui sont chez toi, mais il peut les enregistrer quand tu es Away ou Busy.

Coté code, tu utilises les fonctions de recherches dans une liste (llListFindList) plutôt que de bidouiller la même chose en plus mal. Vu que quand quelqu'un est là, il a des chance de l'être au scan d'après, tu places les avatars détectés au début de la liste pour accélérer la recherche. Là, j'ai l'impression qu'on empile des assiettes par le bas.

Enfin, en fonction de ce que tu veux, iul faut vider la liste régulièrement car la mémoire du script est limitée et donc signaler d'une manière ou d'une autre qu'il faut faire le ménage.

Sinon, en fonction des besoin, envisager de faire un détecteur de volume ou de collision plutôt qu'un scanner, ça lague moins car il ne se déclenche que lorsqu'il se passe quelque chose.
Répondre

Connectés sur ce fil

 
1 connecté (0 membre et 1 invité) Afficher la liste détaillée des connectés