Recherche

Recherche personnalisée

dimanche 29 mars 2009

Tutorial 15 toboggan 3/3

Voyons maintenant le code de la ball :

vector position; // Position de depart
string animation; // Nom de l'animation
key AgentKey; // Clef de l'avatar
integer ecoute; // ecoute du chat
integer canal; // canal d'ecoute
integer canal_de_ball; // Canal de reponse
rotation rot; // rotation initiale

initialisations () {

// Animation
animation = "sit knees up2";
// Changement du texte du menu
llSetSitText("Glisser");
// Positionnement de l'animation
llSitTarget(<0.0,0.0,.5>, ZERO_ROTATION);
// Canaux
canal = 37;
canal_de_ball = 38;
// Memorisation de la position
position = llGetPos();
rot = llGetRot();
}

depart ( ) {

// Boule visible
llSetAlpha(1.0, ALL_SIDES);
// Passage en non physique
llSetStatus(STATUS_PHYSICS, FALSE);
// Retour de la boule au depart
llSetPos (position );
// Rotation
llSetRot(rot);
}

default {

on_rez(integer start_param) {
// Initialisations
initialisations();
// Memorisation du canal d'ecoute
canal = start_param;
// Changement d'etat
state attente;
}
}

state attente {

// Entree dans l'etat
state_entry() {
// Activation de l'ecoute du toboggan
ecoute = llListen(canal,"",NULL_KEY,"");
// Mise en route du timer
llSetTimerEvent(120);
// Depart
depart();
}

// Atteinte du bas du toboggan determine
// avec la collision avec le sol
land_collision (vector position) {
// Avatar debout
llUnSit(AgentKey);
}

// Detection d'un changement
changed(integer change) {
// Test de changement dans les liaisons
if (change & CHANGED_LINK) {
// Determination de la clef de l'avatar
AgentKey = llAvatarOnSitTarget ();
// Un avatar est present ?
if (AgentKey) {
// Permission d'animation
llRequestPermissions (AgentKey, PERMISSION_TRIGGER_ANIMATION);
// Passage en physique et interdiction des rotations
llSetStatus (STATUS_PHYSICS , TRUE);
llSetStatus(STATUS_ROTATE_Y | STATUS_ROTATE_X | STATUS_ROTATE_Z, FALSE);
// Impulsion
llApplyImpulse(llGetMass()*<3.0,0.0,0.0>, TRUE);
// Boule invisible
llSetAlpha(0, ALL_SIDES);
}
else {
// Determination de l'animation en cours
string anim = llGetAnimation(AgentKey);
// Arret eventuel de l'animation
if(anim == "animation")
llStopAnimation(anim);
// Depart
depart();
}
}
}

// Permission accordee
run_time_permissions(integer permissions) {
if(permissions == PERMISSION_TRIGGER_ANIMATION) {
// Arret de l'animation par defaut
llStopAnimation("sit");
// Animation
llStartAnimation(animation);
}
}

// Ecoute
listen(integer channel, string name, key id, string message) {
if (message == "Meurs")
llDie();
else if (message == "Vis")
llSetTimerEvent(120);
else if (message == "Positions") {
// Memorisation de la position
position = llGetPos();
rot = llGetRot();
// Envoi des positions au toboggan
llSay (canal_de_ball, (string)position + "|" + (string)rot);
}
}

// Delai ecoule
timer ( ) {
// Suicide
llDie();
}
}

Une grande partie de ce code a déjà été décrit dans le tutorial précédent. Je vais donc me contenter de commenter les nouveautés.

On va s’intéresser en particulier l’événement on_rez qui se déclenche lors de la création de la ball. On procède alors aux initialisations, en particulier la mémorisation de la position et de la rotation. On récupère également le canal d’écoute qui se retrouve dans le paramètre de l’événement. Ensuite on passe à l’état attente.

A l’entrée dans cet état on active l’écoute du toboggan. On déclenche un timer réglé à 120 secondes. S’il ne se produit aucun changement au bout de ce délai l’événement timer se produit et la fonction llDie supprime la ball. Ensuite on appelle la méthode depart qui est identique à celle du précédent tutorial.

Comme nouveauté nous trouvons l’écoute du toboggan. Le message « Meurs » entraine l’exécution de la fonction llDie pour suicider la ball. Le message « Vis » réinitialise le timer pour une nouvelle durée de 120 secondes. Enfin le message « Positions » provoque l’envoi des coordonnées au toboggan dans le format qu’il s’attend à recevoir.

Mode opératoire : commencez par créer le toboggan et son script. Ensuite créez la ball, en la nommant bien « ball », et son script et mettez là dans votre inventaire. Faites enfin glisser la ball de votre inventaire dans le contenu du toboggan. A la première touche du toboggan activez l’option « Glissade » pour créer la ball. Ajustez ensuite celle-ci correctement. Touchez alors le toboggan et choisissez l’option « Position » pour mémoriser la position de la ball. Votre toboggan est prêt à l’emploi J.

5 commentaires:

  1. Merci pour ce très bon site, vraiment un panaché de bonnes et intéressantes idées. Surtout continuez ainsi. Bon courage
    Cordialement
    voyance gratuite par email

    RépondreSupprimer
  2. C'est avec plaisir que je regarde votre site ; il est formidable. Vraiment très agréable à lire vos jolis partages .Continuez ainsi et encore merci.

    voyance gratuite par mail ; gay telephone

    RépondreSupprimer
  3. Sujet très intéressant sera signet votre site pour vérifier si vous écrivez plus sur l'avenir.
    voyance en ligne gratuite

    RépondreSupprimer
  4. Ce qui est vraiment intéressant! Je vais visiter ce site plus souvent pour apprendre de nouvelles choses sur le français. J'adore ce site! Je vais recommander à mon ami!
    voyance gratuite en ligne par email

    RépondreSupprimer
  5. J’ai fait un petit peu le tour de ton blog, il a l’air super intéressant. Je vais m’y installer tranquillement. Je te félicite c’est bien d’avoir fait ce blog
    merci beaucoup
    voyance Email gratuit

    RépondreSupprimer