[Aide] Script d'animation qui fait des siennes !

Répondre
Partager Rechercher
Bonsoir,
J'avais laissé de côté ce script et je reviens dessus ! Je me heurte à 2 problèmes !
1. Quand je clique sur le bouton pour avoir la boite a dialogue, l'animation par défaut qui se trouve dans le hud démarre aussitôt sans avoir besoin de cliquer sur le bouton de l'animation !
2. Quand j'enlève l'animation par défaut du hud et que j'en rajoute d'autres, je clique sur le bouton j'ai ma boite a dialogue qui apparaît avec les boutons des animations par contre j'ai une erreur script qui me dit qu'il manque l'animation par défaut (alors que le bouton lui a disparut) !

Voici le script :
Code PHP:

key kOwner;
integer iEcoute;
integer fDelai 60;
integer iCanal;
integer iNbAnim;
list 
lAnims;
string sNEXT ">>";
string sPREV "<<";
string STOP "STOP";
string  sTEXTE "Choisissez votre anim : ";
float fTIMEOUT 30.0;        // Délai pour réponse au menu
string sAnimPrecedente;
integer iIndexMenu;

init()    {
    
llRequestPermissions(llGetOwner(), PERMISSION_TRIGGER_ANIMATION);
    
kOwner llGetOwner();
    
llOwnerSay("ready");
}

FaireList()    {
    
integer i;
    
iNbAnim llGetInventoryNumber(INVENTORY_ANIMATION);
    
lAnims = [STOP];
    for(
i=0i<iNbAnim; ++i)    {
        
string nom_anim llGetInventoryName(INVENTORY_ANIMATIONi);
        if (
llStringLength(nom_anim)    < 24)
            
lAnims += [nom_anim];
        else 
llOwnerSay("l'anim \"" nom_anim "\"porte un nom trop long et ne sera pas prise en compte");
    }
}
navigation(string browse) {
    
// Nombre de boutons
    
integer n llGetListLength(lAnims);
    
// Navigation simple pour deux pages
    
if(23) {
        if(
iIndexMenuiIndexMenu 0;
        else 
iIndexMenu 11;}
    
// Navigation riche pour plus de deux pages
    
else {
        if(
browse == sNEXT) {
            
iIndexMenu += 10;
            if(
iIndexMenu >= niIndexMenu 0;}
        else {
            
iIndexMenu -= 10;
            if(
iIndexMenu 0iIndexMenu 10;}
    }
    
// Envoi du menu
    
Menu();
}

// -- Gestion de l'index des boutons du menu --
// @ param [string] bouton de déplacement
GestIndexBoutons(string browse) {
    
// Nombre de boutons
    
integer n llGetListLength(lAnims);
    
// Navigation simple pour deux pages
    
if(23) {
        if(
iIndexMenuiIndexMenu 0;
        else 
iIndexMenu 11;}
    
// Navigation riche pour plus de deux pages
    
else {
        if(
browse == sNEXT) {
            
iIndexMenu += 10;
            if(
iIndexMenu >= niIndexMenu 0;}
        else {
            
iIndexMenu -= 10;
            if(
iIndexMenu 0iIndexMenu 10;}
    }
    
// Envoi du menu
    
Menu();
}

//    -- Gestion menu --
Menu() {
    
llSetTimerEvent(fTIMEOUT);
    
iCanal = (integer)llFrand(-100000);
    
iEcoute llListen(iCanal""kOwner"");
    
// Liste globale des boutons
    
list lBoutons lAnims;
    
// Nombre total de boutons
    
integer n llGetListLength(lAnims);
    
// Si plusieurs pages
    
if(12) {
        
// Que 2 pages -> navigation simple
        
if(23) {
            
// Deuxième page
            
if(iIndexMenu)
                
lBoutons = [sPREV] + llList2List(lAnimsiIndexMenu, -1);
            
// Première page
            
else
                
lBoutons llList2List(lAnims01) + [sNEXT] + llList2List(lAnims210);}
        
// Plus de 2 pages -> navigation riche
        
else {
            list 
= [sPREVllList2String(lAnimsiIndexMenu), sNEXT];
            
// Première page ou page intermédiaire
            
if(iIndexMenu 10)
                
lBoutons llList2List(lAnimsiIndexMenu 1iIndexMenu 9);
            
// Dernière page
            
else {
                if(
iIndexMenu n)
                    
lBoutons llList2List(lAnimsiIndexMenu 1, -1);
                else 
lBoutons l;}
        }
    }
    
// Envoi du menu
    
llDialog(kOwnersTEXTElBoutonsiCanal);
}


cancelMenu()    {
    
llSetTimerEvent(0.0);
    
llListenRemove(iEcoute);
}
finMenu()    {
    
llOwnerSay("trop tard. Menu desactivé");
    
cancelMenu();
}
PlayAnim(string anim)    {
    if(
sAnimPrecedente != "")
        
llStopAnimation(sAnimPrecedente);
    
    
llOwnerSay(anim);
    if(
anim != STOP)    {
        
llStartAnimation(anim);
        
sAnimPrecedente anim;
    }
    else 
sAnimPrecedente "";
}

default
{
    
link_message(integer sender_numberinteger numberstring messagekey id)
    {
        if (
number == -1818)    
        {
            
Menu();
        }
    }  
    
listen(integer channelstring namekey idstring message)
    {
        if(~
llListFindList([sNEXTsPREV], [message]))    
        {
            
navigation(message);
        }
        else {
            
cancelMenu();
            
PlayAnim(message);
        }
    }
    
timer()
    {
        
finMenu();
    }
    
state_entry()
    {
        
init(); // oups, faut pas oublier l'init() /me se tappe sur la tete
        
FaireList();
    }
    
attach(key id)
    {
        if (
id != NULL_KEY)
            
init();
    }
    
run_time_permissions(integer perm)
    {
        if (!(
perm PERMISSION_TRIGGER_ANIMATION))
        {
            
llRequestPermissions(llGetOwner(), PERMISSION_TRIGGER_ANIMATION);
        }
    }
    
changed(integer chang// lors de la vente de l objet , on reset le script pour prendre en compte le nouveau Owner (l'ecoute)
    
{
        if(
chang CHANGED_OWNER)
        {
            
llResetScript();
        }
        if (
chang CHANGED_INVENTORY
        {
            
FaireList();
        }
    }

J'ai jeté un œil (de débutant) mais je ne trouve pas quoi modifié pourtant il doit y avoir un rapport avec les permissions !

Merci
__________________
Le fait que le monde soit peuplé de crétins permet à chacun de nous de ne pas se faire remarquer
http://yelims2.free.fr/Drapeaux/DrapeauBretagne.gifKentoc'h mervel eget bezañ saotret http://yelims2.free.fr/Drapeaux/DrapeauBretagne.gif
Bonsoir,

Tout d'abord merci Xanork, tu as réglé un problème moi j'étais parti pour changer de place le "llRequestPermissions" !
Le problème que j'ai actuellement c'est lorsque l'on personnalise le hud, on enlève l'animation par défaut pour mettre les siennes, jusque là tout va bien mais dés que je clique sur le boutons animations j'ai ceci :
http://img710.imageshack.us/img710/2175/160220101856383525220.jpg

Il garde en mémoire l'ancienne animation ! Ceci étant, une fois le hud porté le petit écusson d'erreur de script n'apparaît pas !

Si vous avez une idée merci !

Ps : Le script est le même que sur le premier post.
__________________
Le fait que le monde soit peuplé de crétins permet à chacun de nous de ne pas se faire remarquer
http://yelims2.free.fr/Drapeaux/DrapeauBretagne.gifKentoc'h mervel eget bezañ saotret http://yelims2.free.fr/Drapeaux/DrapeauBretagne.gif
Citation :
Publié par Polo Slok
Ps : Le script est le même que sur le premier post.
- Avec ou sans la modif de la ligne 120 ?
- Es tu assez vicieux de laisser la boite de dialog ouverte qd tu modifie le contenu ?
Bonsoir,

Citation :
Publié par XanorK
- Avec ou sans la modif de la ligne 120 ?
- Avec cette modification

Citation :
Publié par XanorK
- Es tu assez vicieux de laisser la boite de dialog ouverte qd tu modifie le contenu ?
-Je comprend pas vraiment pourquoi la boîte à dialogue serait ouverte lors de la modification du contenu ! D'après mes retours d'expériences, les personnes (2 seulement ) n'ont pas vu ce problème car il n'apparaît pas lorsque le hud est porté mais seulement lorsque celui ci est posé (ce qui n'arrivera pas car dans la notice c'est précisé qu'on peut changer les animations le hud porté) ! Le problème se régle donc de lui même !

Merci pour ton aide et le fait que tu puisse me permettre d'apprendre de nouvelles choses !
__________________
Le fait que le monde soit peuplé de crétins permet à chacun de nous de ne pas se faire remarquer
http://yelims2.free.fr/Drapeaux/DrapeauBretagne.gifKentoc'h mervel eget bezañ saotret http://yelims2.free.fr/Drapeaux/DrapeauBretagne.gif
Citation :
Publié par Polo Slok
... car il n'apparaît pas lorsque le hud est porté mais seulement lorsque celui ci est posé ...
On demande la permission dans init();
et le init() est appeler ici :

Code PHP:

    attach(key id)
    {
        if (
id != NULL_KEY)
            
init();
    } 
a vérifier, mais ça doit pouvoir se résoudre en ajoutant
Code PHP:

    on_rez(integer X)
    {
        
init();
    } 
Citation :
Publié par XanorK
On demande la permission dans init();
et le init() est appeler ici :

Code PHP:

    attach(key id)
    {
        if (
id != NULL_KEY)
            
init();
    } 
a vérifier, mais ça doit pouvoir se résoudre en ajoutant
Code PHP:

    on_rez(integer X)
    {
        
init();
    } 
Ok pour la permission... après des tests, et sans avoir modifié quoi que ce soit et ni rajouté le on_rez, je ne sais par quel miracle mais ça fonctionne sans problème même une fois le hud posé à terre ! Bizarre

Merci pour ton aide ! je continu d'apprendre !
__________________
Le fait que le monde soit peuplé de crétins permet à chacun de nous de ne pas se faire remarquer
http://yelims2.free.fr/Drapeaux/DrapeauBretagne.gifKentoc'h mervel eget bezañ saotret http://yelims2.free.fr/Drapeaux/DrapeauBretagne.gif
Répondre

Connectés sur ce fil

 
1 connecté (0 membre et 1 invité) Afficher la liste détaillée des connectés