mercredi 9 janvier 2008
llListenRemove
Le llListenRemove est très simple à comprendre, il arrete l'ecoute que l'on avait lancé. la fonction llListen renvoit un integer, celui ci identifie de quelle ecoute on parle. Cet identifiant est pris en paramètre par llListenRemove pour etre arreté.
Mais pourquoi avoir fais ca me diriez vous? pour des raisons de sécurité de la vente et de lag.
Si on reprends note script d'hier, le dernier client peut profiter d'une faille car notre channel est toujours ouvert pour lui. Si il connait le channel(pas de bol quand même) il lui suffit de répeter sur ce channel les nom des objets et on lui donne tout ce que l'on veut.
Cette fois-ci c'est blindé car on ecoute que pour le client et une fois qu'il a eu son objet on ecoute plus.
Il y a l'effet lag qui est très important, en utilisant cette fonction, vous scriptez proprement...
// la liste des objet à vendre dans votre vendor
list obj=[];
// permetra l'identification du listen
integer IdListen;
default
{
state_entry()
{
// donne le nombre d'objet contenu dans l'inventaire du prim
integer NbObj=llGetInventoryNumber(INVENTORY_OBJECT);
// compteur de boucle
integer i;
// rempli la list des objets
// les acccolade ne sont pas nécéssaire car il n'y a que
// une ligne dans la boucle
for(i=0;i<NbObj;i++)
obj+=llGetInventoryName(INVENTORY_OBJECT,i);
}
listen(integer channel, string name, key id, string message)
{
// donne l'objet acheté
llGiveInventory(id,message);
// la fonction du jour
llListenRemove(IdListen);
}
money(key giver, integer amount)
{
// choisi un channel au hasard pour securisé
integer mychannel=(integer)llFrand(1000.0)+5000;
// ecoute le channel et concerve le id de l'ecoute
IdListen=llListen(mychannel,"",giver,"");
// laisse le choix de l'objet à l'utilisateur
llDialog(giver,"Choisissez votre objet",obj,mychannel);
}
}
Libellés :
for,
list,
llDialog,
llFrand,
llGetInventoryName,
llGetInventoryNumber,
llGiveInventory,
llListen,
llListenRemove,
money
Inscription à :
Publier les commentaires (Atom)
Aucun commentaire:
Enregistrer un commentaire