donc je décide de faire un joli système avec interrupteur ou anneau je verrai et boîte de dialogue pour l'installation/désinstallation du mod. Sauf qu'évidemment, j'y connais strictement rien moi en script, le seul script que j'ai jamais fait c'est ceux de l'éditeur de war 3, mais c'est de la triche parce qu'en dehors de certaines fonctions, tout peut être fait en GUI, une interface simplifiée qui permet de ne taper aucune ligne de code (en gros faut juste comprendre le franglais pour l'utiliser quoi xD)
Donc paf, go wiwiki, téléchargement du guide pour les nuls (merci pour la vf, je comprend la vo mais ça reste quand même un peu plus laborieux quand on est pas parfaitement billingue) et je commence leur tutorial. Voici l'état de mon script dans le tutorial:
Begin AA_mon_premier_script Short variable_de_controle Short bouton Float timer If (MenuMode == 1) return endif If ( OnActivate == 1 ) If ( variable_de_controle == 0 ) MessageBox "Sans voix, cela crie. Sans ailes, cela vole. Sans dents, cela mord. Sans bouche, cela murmure. Qu'est-ce donc ?", "Chauve-souris", "Vieille femme", "Vent", "Spectre" Set variable_de_controle to 1 Elseif variable_de_controle > 1 Activate endif endif If (variable_de_controle == 1) Set bouton to GetButtonPressed if (bouton == -1) return elseif (bouton == 2) MessageBox "Réponse juste" set variable_de_controle to 2 else MessageBox "Réponse erronée" Player->AddSpell "AA_Fleaufroid" set variable_de_controle to -1 endif elseif (variable_de_controle == 2) Activate Set variable_de_controle to 3 elseif (variable_de_controle == -1) Set timer to (timer + GetSecondsPassed) if timer > 8 Player->RemoveSpell, "AA_Fleaufroid" set variable_de_controle to -2 endif endif end
(j'ai mis le texte de la message box sur deux ligne mais dans le script il n'est que sur une ligne)
Bon déjà il marche parfaitement (ouais !!! je sais suivre des instructions xD) mais c'est justement ça qui m'embête.
dans le tutorial on commence par créer la boite de dialogue. On change la valeur de la variable "variable_de_controle" (la seule qui existe à ce moment) de 0 à 1 pour que la boîte de dialogue ne soit pas exécutée à chaque frame. De même dans la seconde partie cette valeur passe de 2 à 3 pour que cette-même seconde partie ne soit pas rééxécutée à chaque frame.
Et c'est là que ça m'embête, sans cette valeur, l'"activate" fonctionnait à chaque frame (et on pouvait plus quitter le coffre). Mais une fois que le script s'est joué, la variable restera à 3 à tout jamais. Donc dans la toute première partie du script on aura toujours variable_de_controle > 1 vrai. Si le script est effectivement joué à chaque frame, pourquoi cet activate là n'est pas joué à chaque frame et ne me coince pas lui aussi sur l'ouverture du coffre ? Qu'est ce que j'ai mal compris dans cette affaire ?