Difference between revisions of "No sensor/fr"

From Second Life Wiki
Jump to navigation Jump to search
(fixes)
m (ooops)
 
(One intermediate revision by the same user not shown)
Line 1: Line 1:
{{LSL_Event/fr
{{Issues/SVC-2409/fr}}{{LSL_Event/fr
|event_id=14|event_delay|event=no_sensor
|event_id=14|event_delay|event=no_sensor
|event_desc=Evènement généré par la fonction [llSensor/fr|llSensor]] lorsque rien n'a été détecté par le senseur.
|event_desc=Evènement généré par [[llSensor/fr|llSensor]] ou [[llSensorRepeat/fr|llSensorRepeat]].
|constants
|spec
|caveats=
*sensor/no_sensor ne sont pas toujours la meilleur solution pour :
** Déterminer si quelque chose a été détruit. Utilisez plutôt [[llGetObjectDetails/fr|llGetObjectDetails]] cf. la section des [[#Useful Snippets|Les Truc&Astuces]].
**Pour déterminer si un avatar est dans la région. Utilisez plutôt [[llGetAgentSize/fr|llGetAgentSize]]


|constants|spec|caveats|examples=
|examples=
<pre>
<lsl>
//Liste tous les avatars dans le périmètre
//Liste tous les avatars dans le périmètre
default {
default {
Line 12: Line 18:
     sensor(integer num) {
     sensor(integer num) {
           integer i = 0;
           integer i = 0;
           while (i < num) {
           do {
               llOwnerSay(llDetectedName(i) + " est à  " + (string)llVecDist(llGetPos(), llDetectedPos(i)) + "m.");
               llOwnerSay(llDetectedName(i) + " est à  " + (string)llVecDist(llGetPos(), llDetectedPos(i)) + "m.");
               i++;
               i++;
           }
           } while (++i < num)
     }
     }
     no_sensor() {
     no_sensor() {
Line 21: Line 27:
     }
     }
}
}
</pre>
</lsl>
|helpers=
<lsl>//Une alternative pour déterminer si un avatar est à proximité
//No sensor utilisé dans l'exemple précédent ne s'applique pas ici.


|helpers
integer InRange(key uuid, float distance)
{
    list data = llGetObjectDetails(uuid, [OBJECT_POS]);
    if(data == [])
        return 0;
    return llVecDist(llList2Vector(data, 0), llGetPos()) <= dist;
}</lsl>
|also_header|also_events
|also_header|also_events
|also_functions=
|also_functions=
Line 29: Line 44:
{{LSL DefineRow||[[llSensorRepeat/fr|llSensorRepeat]]|Lance un senseur avec timer.}}
{{LSL DefineRow||[[llSensorRepeat/fr|llSensorRepeat]]|Lance un senseur avec timer.}}
|also_articles|also_footer
|also_articles|also_footer
|notes|mode|deprecated
|notes
|mode
|bugs={{LSL Bug|SVC-2409|llSensorRepeat ne déclenche pas no_sensor à moins que l'évènement "sensor" soit présent.}}
|deprecated
|cat1=Sensor/fr
|cat1=Sensor/fr
|cat2
|cat2
|cat3
|cat3
|cat4}}
|cat4}}

Latest revision as of 11:10, 18 April 2009

Description

! Event: no_sensor( ){ ; }

Evènement généré par llSensor ou llSensorRepeat.


Défauts

  • no_sensor ne sera pas déclenché à moins que le script ne comporte un évènement sensor ~ SVC-2409
    • Un évènement sensor, même vide, est suffisant pour que no_sensor puisse être déclenché.*sensor/no_sensor ne sont pas toujours la meilleur solution pour :
    • Déterminer si quelque chose a été détruit. Utilisez plutôt llGetObjectDetails cf. la section des Les Truc&Astuces.
    • Pour déterminer si un avatar est dans la région. Utilisez plutôt llGetAgentSize

Exemples

<lsl> //Liste tous les avatars dans le périmètre default {

    on_rez(integer i) {
         llSensor("", "", AGENT, 100000, 10000);
    }
    sensor(integer num) {
         integer i = 0;
         do {
              llOwnerSay(llDetectedName(i) + " est à  " + (string)llVecDist(llGetPos(), llDetectedPos(i)) + "m.");
              i++;
         } while (++i < num)
    }
    no_sensor() {
         llOwnerSay("Pas d’avatars dans le périmètre.");
    }

} </lsl>

Codes utiles

<lsl>//Une alternative pour déterminer si un avatar est à proximité //No sensor utilisé dans l'exemple précédent ne s'applique pas ici.

integer InRange(key uuid, float distance) {

   list data = llGetObjectDetails(uuid, [OBJECT_POS]);
   if(data == [])
       return 0;
   return llVecDist(llList2Vector(data, 0), llGetPos()) <= dist;

}</lsl>

Voir aussi

Fonctions

•  llSensor Lance un senseur.
•  llSensorRepeat Lance un senseur avec timer.

Notes complémentaires

Problèmes

   llSensorRepeat ne déclenche pas no_sensor à moins que l'évènement sensor soit présent.
Vous cherchez encore des informations ? Peut-être cette page du LSLwiki pourra vous renseigner.