Ce script montre la base de départ nécessaire pour assoir un avatar sur une prim et le lever. Au moment où l'avatar s'assied, on vérifie que l'on a la permission de changer son animation.

Au moment où l'avatar se relève, on supprime l'animation.
 

// Dans cet exemple le siège est le cube de base de 0.5 de côté
// On va assoir l'avatar dans la position du motard heureux

// Coordonnées de l'assise de l'avatar ; correspondrait à
// l'emplacement précis des fesses de l'avatar ;
// les valeurs sont en mètres et fractions de mètres
// les nombres négatifs sont admis
float fHauteur = 0.50; // à modifier si l'avatar lévite au-dessus du cube ou à le derrière à l'intérieur du cube
float fLateral = 0.0; // à modifier si l'avatar est trop à droite ou à gauche
float fProfondeur = 0.4; // à modifier si l'avatar est trop en avant ou en arrière
// Toujours les coordonnées, mais maintenant l'orientation ;
// les valeurs sont en degrès et fraction de degrès (on pourrait utiliser
// les minutes et secondes, mais c'est plus compliqué) ; une astuce permet de
// convertir les degrès en radian, voir l'instruction qui utilisent ces variables
float fAxeX = 0.0; // Axe passant par la taille d'un avatar debout d'avant en arrière
float fAxeY = 0.0; // Axe passant par la taille d'un avatar debout de droite à gauche
float fAxeZ = 0.0; // Axe passant verticalement à travers le corps d'un avatar debout

key kAgentAssis; //mémosise la clé unique de l'avatar qui s'est assis
vector vDebout = <0.0, 0.5, 1.0>; // pour que l'avatar, une fois debout, ne reste pas sur le cube
default
{
state_entry()
{
// C'est cette instruction qui change le mot Sit dans le camembert qui apparaît lorsque
// on clique avec le bouton droit sur l'objet
llSetSitText("Assis!");
// C'est cette instruction qui indique à l'objet comment assoir l'avatar
// DEG_TO_RAD permet de convertir les degrès en radian ; le fait que * * DEG_TO_RAD est
// à l'extérieur du vecteur veut dire qu'il s'applique à chaque valeur du vecteur ; on
// aurait aussi pu écrire :
// llSitTarget(<Profondeur, fLateral, fHauteur>, llEuler2Rot(<fAxeZ * DEG_TO_RAD, fAxeY * DEG_TO_RAD, fAxeX * DEG_TO_RAD>));
llSitTarget(<fProfondeur, fLateral, fHauteur>, llEuler2Rot(<fAxeZ, fAxeY, fAxeX> * DEG_TO_RAD));
}

// Evènement "changed" : est déclenché lorsque l'avatar s'assoit ou se lève
changed(integer iChange)
{
if (iChange & CHANGED_LINK)
{
// Quelqu'un s'est assis ou levé, on relève sa clé unique
key kAgent = llAvatarOnSitTarget();
// * Si cette clé existe c'est qu'un avatar s'est assis
if (kAgent)
{
//**Permissions : C'est la base du système de sécurité Linden
// On ne peut appliquer une animation sans l'accord de l'avatar
// Si l'avatar est le propriétaire du script, on ne demande pas la permission
// Il existe d'autres permissions dont l'une concerne l'argent
llRequestPermissions(kAgent, PERMISSION_TRIGGER_ANIMATION); // demande de la permission
// On mémorise la clé unique de l'agent pour s'en servir lorsqu'il se lève
kAgentAssis = kAgent;
}
// * Si cette clé n'existe pas c'est que personne n'est assis
// on en coclut que l'avatar s'est levé
else
{
// On arrête l'animation pour que l'avatar se redresse
// On ne demande pas la permission, c'est censé avoir été fait en l'asseyant
llStopAnimation("motorcycle_sit");
// Voilà une instruction intéressante
// On arrête l'exécution du script pendant un temps en seconde(s)
// Cela permet à l'animation de se terminer avant d'appliquer l'instruction suivante
llSleep(1.0);
// On pousse (déplace) l'avatar pour qu'il ne reste pas
// planté sur le cube ; ceci ne fonctionne pas toujours, dans ou le Push
// peut être interdit sur le terrain où est posé le cube
llPushObject(kAgentAssis, vDebout, <0,0,0>, TRUE);
// et on attend que le déplacement ait eu lieu avant de passer à la suite
llSleep(1.0);
}
}

}
// ** Permission (suite) : cet évènement est déclenché quand la demande
// de permission a reçu une réponse
run_time_permissions(integer iPerm)
{
// On assoit l'avatar si la demande est acceptée ;
// si elle a été refusée, forcer l'animation donne lieu à une erreur
if (iPerm)
{
// Voici comment appliquer une animation ) l'avatar
// "motorcycle_sit" est une animation connue par Linden
// Si vous voulez y mettre votre propre animation, changer le nom
// dans les 2 endroits du script ; ET N'OUBLIEZ PAS DE RECOPIER
// L'ANIMATION DANS LE CUBE (au même endroit que ce script)
llStartAnimation("motorcycle_sit");
}
}
}


Copier ce script dans un cube de taille 0.5 partout et orienté 0.0 dans tous les sens.

Running Sneakers | adidas