Accueil Date de création : 08/06/07 Dernière mise à jour : 28/01/10 21:47 / 17 articles publiés
 

Tutorial 15 toboggan 3/3  posté le lundi 15 octobre 2007 20:53

 

Suite du tutorial 14 (je viens de découvrir les limites de ce blog en étant obligé de découper ce tutorial en deux parties)...

 

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.

Partager

Déposez un commentaire !

(facultatif)

(facultatif)

error

Attention, les propos injurieux, racistes, etc. sont interdits sur ce site.
Si une personne porte plainte, nous utiliserons votre adresse internet (38.107.191.93) pour vous identifier.     

Tous les commentaires de l'article:
Tutorial 15 toboggan 3/3

  • bestmomo lagan

    lun 11 fév 2008 19:08

    Interressant de bouger un serpent ! Genre télécommandé ? Pourquoi pas ? Mais il serait judicieux de faire de ce genre de demande sur le forum JeuxOnLine :

    http://forums.jeuxonline.info/forumdisplay.php?f=424

    Cordialement

  • Calamity Boram

    dim 10 fév 2008 16:46

    Bonjour
    écrivez-vous des scripts sur commande ? Je suis a la recherche d'un scripteur pour animer un serpent.

  • hugobiwan zolnir mailto

    ven 04 jan 2008 23:41

    Superbe blog passionnant et utile : merci au nom de tous les scripteurs !

  • Ice Chantilly mailto

    jeu 22 nov 2007 23:14

    Salut Best ! Je voudrais rendre un grand hommage a ton talent et ta vivacité d'esprit ! les tutoriaux sont comme le créateur : au TOP !


 

fermer la barre

Vous devez être connecté pour écrire un message à lsl

Vous devez être connecté pour ajouter lsl à vos amis

 
Créer un blog