hello....bon là, c 'est vraiment un script simplissime, digne de ce que faisait le générateur de script "green eggs" ou un truc dans le genre ...il y a 16 ans....pas besoin spécialement de se nommer IA !
......je lui ai demandé un script pour un objet porté qui donne un menu sur click pour choisir entre 3 animations....en mettant de coté des fonctions fantaisistes genre "llStopAnimationSet....et d' autres.....on arrive au bout de 7 corrections à ça....
​integer menu_channel = -431; // changez ceci pour un numéro de canal différent si nécessaire
list animations = ["animation1", "animation2", "animation3"]; // remplacez ceci avec les noms des animations que vous voulez jouer
default
{
state_entry()
{
llListen(menu_channel, "", llGetOwner(), "");
}
listen(integer channel, string name, key id, string message)
{
integer attached_point;
if (attached_point == ATTACH_CHIN)
{
integer index = llListFindList(animations, [message]);
if (index != -1)
{
llStopAnimation(llGetOwner(), llGetAnimationList(llGetOwner()));
llStartAnimation(llList2String(animations, index));
}
}
}
attach(key id)
{
if (id != NULL_KEY && llGetOwnerKey(id) == llGetOwner())
{
llRequestPermissions(id, PERMISSION_TRIGGER_ANIMATION);
}
}
run_time_permissions(integer perms)
{
if (perms & PERMISSION_TRIGGER_ANIMATION)
{
llStopAnimation(llGetOwner(), llGetAnimationList(llGetOwner()));
llStartAnimation(llList2String(animations, 0));
}
}
}
après 7 corrections induites par un scripteur.....ce qui n 'est pas anodin....il y a bien un evenement "listen".....mais pas de llDialog pour le déclencher.....
j' ai testé aussi plusieurs manières de poser les questions, celà induit beaucoup de variantes dans les réponses....dont par exemple....
​// Variables globales
list ANIMATIONS = ["Animation 1", "Animation 2", "Animation 3"]; // Les noms des animations à jouer
list ANIMATION_IDS = ["uuid1", "uuid2", "uuid3"]; // Les UUID des animations à jouer, à remplir avec les UUID correspondants
integer SELECTED_ANIMATION = 0; // L'animation sélectionnée, initialisée à 0 (aucune sélection)
// Fonction pour jouer l'animation sélectionnée
playSelectedAnimation()
{
if (SELECTED_ANIMATION != 0)
{
llStopAnimationSet(); // Arrête toute animation en cours
llStartAnimation(llList2Key(ANIMATION_IDS, SELECTED_ANIMATION - 1)); // Joue l'animation sélectionnée
}
}
// Fonction appelée lorsque l'utilisateur sélectionne une animation dans le menu
// Le paramètre "menu_index" est l'index de l'élément sélectionné dans le menu
default
{
state_entry()
{
llSetMemoryLimit(65536); // Augmente la limite de mémoire pour éviter les erreurs de script
llSetText("Choisissez une animation :", <1.0, 1.0, 1.0>, 1.0); // Texte du menu
// Crée le menu en utilisant la liste des noms d'animations
llDialog(llGetOwner(), "Menu des animations", ANIMATIONS, 1);
}
// Gestionnaire d'événements pour les dialogues
// Le paramètre "message" est le message envoyé par le dialogue
// Le paramètre "id" est l'ID de l'objet qui a envoyé le message
// Le paramètre "button" est l'index de l'élément sélectionné dans le menu
// Le paramètre "data" est un entier qui peut être utilisé pour transmettre des données supplémentaires
// dans le message (non utilisé ici)
on_dialog(integer id, integer button, integer data, string message)
{
// Vérifie si l'utilisateur a sélectionné un élément dans le menu
if (button != -1)
{
SELECTED_ANIMATION = button; // Enregistre l'animation sélectionnée
playSelectedAnimation(); // Joue l'animation sélectionnée
}
}
// Gestionnaire d'événements pour les animations terminées
// Le paramètre "animation" est l'UUID de l'animation qui vient de se terminer
on_animation_end(key animation)
{
// Si l'animation terminée est l'animation sélectionnée, arrête-la
if (animation == llList2Key(ANIMATION_IDS, SELECTED_ANIMATION - 1))
{
llStopAnimation(animation);
}
}
}
bref....on n 'est pas sorti du sable avec ça !!!