mercredi 9 avril 2008
llGetParcelPrimOwners
La fonction du jour permet de recupèrer une list de personne utilisant des prim sur une parcelle.
Notre exemple permet de dire combien d'objet possède la personne qui touche l'objet
La liste de retour à ce format [Key Av1, Integer PrimAv1,Key Av2, Integer PrimAv2,....]
default
{
touch_start(integer total_number)
{
integer count=0;
// identifie l'avatar qui touche
key av=llDetectedKey(0);
// la fonction du jour
list OwnPrim=llGetParcelPrimOwners(llGetPos());
// recherche dans la list l'avatar detecté
integer i=llListFindList(OwnPrim,[av]);
// recupère dans la liste les prims utiliser par l'avatar
if(i!=0)count=llList2Integer(OwnPrim,i+1);
// affiche un message du nombre de prim de l'avatar
llSay(0, llKey2Name(av) + ", vous possedez sur cette parcelle " + (string)count + " prims");
}
}
mardi 8 avril 2008
llGetParcelPrimCount
Désolé pour mon absence prolongée, mais LslToday est de retour.
La fonction du jour, llGetParcelPrimCount, permet de determiner le nombre de prim utilisés sur un terrain.
Elle prend trois paramètres:
- Un vecteur qui determine quelle parcelle de la sim doit être comptée.
- Une constante determinant qu'es ce que l'on doit compter
Category | Value | Meaning |
PARCEL_COUNT_TOTAL | 0 | All prims on the parcel(s). Does not include temp on rez objects. |
PARCEL_COUNT_OWNER | 1 | Prims owned by the parcel owner. |
PARCEL_COUNT_GROUP | 2 | Prims not owned by the owner, but set to or owned by the group of the parcel. |
PARCEL_COUNT_OTHER | 3 | Prims not set to group or owned by the owner. |
PARCEL_COUNT_SELECTED | 4 | All prims selected or sat on. |
PARCEL_COUNT_TEMP | 5 | All temp on rez objects. |
- et un paramètre TRUE/FALSE si on compte la sim en entier
default
{
touch_start(integer total_number)
{
llSay(0, (string)llGetParcelPrimCount(llGetPos(), PARCEL_COUNT_TOTAL,FALSE));
}
}
mercredi 6 février 2008
llEjectFromLand
La foction du jour, llEjectFromLand est assez explicite elle permet d'ejecter un avatar de son terrain.
En la combinant avec Sensor, nous avons fait notre petite alarme maison.
La fonction ne prends que un seul paramètre une Key qui est la personne qui doit etre éjecté.
default
{
state_entry()
{
//verifie la présence d'avatar dans un rayon de 50m toute les 30 sec
llSensorRepeat("",NULL_KEY,AGENT,50,TWO_PI,30);
}
sensor(integer total_number)
{
//l'evenement sensor fonctionne comme touch et fournie le nombre de personnes detectées
integer i;
//on boucle sur toutes les personnes detectés
for(i=0;i<total_number;i++)
{
// si la personne detecté n'est pas le propriétaire on lui donne un avertissement
if(llDetectedKey(0)!=llGetOwner())
{
// la fonction du jour
llEjectFromLand(llDetectedKey(0));
}
}
}
}
mardi 5 février 2008
llSensorRepeat
La fonction llSensorRepeat est strictement identique à la fonction sensor que nous avons vu hier, ca particularité:
Elle possède un paramètre supplémentaire qui est la régularité d'excution qui est fixé en seconde.
Ainsi vous pouvez detecter de manière répétitive une cible. Comme une porte de supermarché qui attends que quelqu'un s'approche pour s'ouvrir
default
{
state_entry()
{
//la fonction du jour
llSensorRepeat("",NULL_KEY,AGENT,50,TWO_PI,30);
}
sensor(integer total_number)
{
//l'evenement sensor fonctionne comme touch et fournie le nombre de personnes detectées
int i;
//on boucle sur toutes les personnes detectés
for(i=0;i<total_number;i++)
{
// si la personne detecté n'est pas le propriétaire on lui donne un avertissement
if(llDetectedKey(0)!=llGetOwner())
llSay(PUBLIC_CHANNEL,"vous n'etes pas le proprietaire, partez");
}
}
}
lundi 4 février 2008
llSensor
La fonction llSensor est très puissante. Elle permet de detecter differentes choses dans une zone. Il faut parcontre l'utiliser avec mesure car elle génère du lag. Elle est très utilisé pour les alarmes qui est un peu le principe de notre script.
La fonction prends 5 paramètres:
Un string qui est le nom de la personne ou objet rechercher
Une key de la personne ou objet rechercher
Un integer qui est le type de chose recherché, object agent...
Un integer qui est la portée qui ne peut excéder 96m (ce qui est gigantesque, utiliser des distances trees courtes)
Et pour fini l'arc, il s'agit de l'angle exprimé en radiant dans notre cas il recherche dans une sphère
default
{
touch_start(integer total_number)
{
//la fonction d jour
llSensor("",NULL_KEY,AGENT,50,TWO_PI);
}
sensor(integer total_number)
{
//l'evenement sensor fonctionne comme touch et fournie le nombre de personnes detectées
int i;
//on boucle sur toutes les personnes detectés
for(i=0;i<total_number;i++)
{
// si la personne detecté n'est pas le propriétaire on lui donne un avertissement
if(llDetectedKey(0)!=llGetOwner())
llSay(PUBLIC_CHANNEL,"vous n'etes pas le proprietaire, partez");
}
}
}
Inscription à :
Articles (Atom)