Limiter users...

Répondre
Partager Rechercher
Salut a tous,

Voilà, c'est juste pour savoir comment je fais pour limiter l'utilisation d'un objet a des personnes choisis.

En gros j'ai un :
Code PHP:

list USERS = [""""""
mais je ne trouve pas comment vérifier celui qui utilise l'objet...

Et je souhaiterais, si possible utiliser les name et nom les key.

Aidez moi...

Ghis.
Quelque chose comme ceci devrait faire l'affaire :

Code:
 
list names=["Alpha", "Ghislain Beaumont", "Gamma"];
key toucher;
string name_toucher;
integer index;
integer num_liste;
 
default
{
	state_entry()
	{}
	touch_start(integer total_number)
	{
		name_toucher=llKey2Name(llDetectedKey(0));
		index = llListFindList( names, [name_toucher] );
		if ( index != -1 )
			{
			//trouvé
			num_liste=index+1;
			llSay(0, name_toucher+ " est dans la liste en position " + (string)num_liste);
			}
		else
			//pas trouvé
			llSay(0, name_toucher+ " n'est pas dans la liste" );
	}
}
super ....moi aussi je cherchais ...question bete obliger d inclure les noms dans le script ou on peut faire liste genre notcard a part....
qui serait plus facil a gerer que d ouvrir le script a chaque fois....

/me se penche sur ce probleme pour avoir la solution
Version notecard ;-)
Attention à bien avoir une notecard dans le prim portant le même nom que dans le script ou modifiez le script, car je n'ai pas mis d'interception du canal de debugging donc il ne se passera rien de visible en cas d'erreur. Mettre un nom complet par ligne dans la notecard.

Code:
 
key toucher;
string name_toucher;
key request;
string note_name="Liste";
integer gLine=0;
integer num_liste;
default
{
	state_entry()
	{}
	touch_start(integer total_number)
	{
		name_toucher=llKey2Name(llDetectedKey(0));
		request=llGetNotecardLine(note_name, gLine);
	}
	dataserver(key queryid, string data)
	{
		if(queryid==request)
			{
			if (data != EOF)
				{	
				if(data==name_toucher)
				{
					//trouvé
					num_liste=gLine+1;
					llSay(0, name_toucher+ " est dans la liste en position " + (string)num_liste);
					llResetScript();
					return;
				}
				++gLine;
				request = llGetNotecardLine(note_name, gLine);
				}
			else
				{
				//fin de la liste : pas trouvé
				llSay(0, name_toucher+ " n'est pas dans la liste" );
				llResetScript();
				}
			}
	}
}
Perso j'utilise un système par UUID qui sont facilement trouvables.
Code:
list list1 = ["7573da58-d397-4253-9471-dc80b71*****","c7dce258-c250-4e34-a959-826feb*****"];

default
	{
	touch_start(integer total_number)
	{
string list2 = llDetectedKey(0);
if ( llListFindList( list1,[list2]) != -1 )
	{
(...)
Phli, je te remercie d'avoir mis mon script dans le Wiki, je l'aurais bien fait mais je n'ai pas le nombre de posts suffisant. Ton post précédent pouvait pourtant laisser supposer qu'il ne te paraissait pas être le meilleur choix ;-) La prochaine, fois, laisse moi un petit mot pour me tenir au courant
Et non, une script ne peux pas autoriser un groupe stricto sensus... En effet un script ne peut pas récupérer le groupe d'appartenance d'un avatar... par contre il peut savoir si l'avatar est du même groupe que lui

Question de sécurité... sinon vive les problème de clan et autre...
Yep, par la fonction llSameGroup. Il faut que ton objet soit préalablement définit dans ton groupe. A partir de là si llSameGroup=TRUE, c'est à dire si l'avatar qui touche fait partie du groupe défini, la fonction s'exécute.

J'aime bien cette fonction car elle est assez légère et évite des listes trop longues.
Citation :
Publié par Phli Foxchase
Yep, par la fonction llSameGroup. Il faut que ton objet soit préalablement définit dans ton groupe. A partir de là si llSameGroup=TRUE, c'est à dire si l'avatar qui touche fait partie du groupe défini, la fonction s'exécute.

J'aime bien cette fonction car elle est assez légère et évite des listes trop longues.
Bof, non seulement il faut faire partie du groupe mais en en plus qu'il soit activé, c'est vite ingérable quand on est membre de nombreux groupes.
A la base il me semble il y avoir un sérieux pb de conception dans la gestion des groupes sur SL, ça manque vraiment de souplesse au point de devoir souvent chercher des solutions alternatives.
Répondre

Connectés sur ce fil

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