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");
        }
    }
}