J'ai fouille tout mon déclencheur et ne comprend toujours pas se beug
Déclencheur 1 ( celui qui gère l'enclenchement du Dialogue )
Secret:
Gui:
Trigger:
Enter
Evénements
Unité - A unit enters Enter VillageOK <gen>
Conditions
((Triggering unit) is Un héros) Egal à TRUE NbrReputationOldKingdom[(Player number of (Owner of (Triggering unit)))] Inférieur à 15 NbrReputationOldKingdom[(Player number of (Owner of (Triggering unit)))] Supérieur à -15 ((Triggering unit) is an illusion) Egal à FALSE ((Triggering unit) has buff Vent divin) Egal à FALSE
Actions
Wait 0.50 seconds Unité - Order (Triggering unit) to Arrêter Dialogue - Change the title of Dialog_Menu[(Player number of (Owner of (Triggering unit)))] to |cffffcc00Captain :... Dialogue - Create a dialog button for Dialog_Menu[(Player number of (Owner of (Triggering unit)))] labelled |cffffffffI'm here ... Set Dialog_Button[((Player number of (Triggering player)) + (Coefficiant x 1))] = (Last created dialog Button) Dialogue - Create a dialog button for Dialog_Menu[(Player number of (Owner of (Triggering unit)))] labelled |cffffffffWho are y... Set Dialog_Button[((Player number of (Triggering player)) + (Coefficiant x 2))] = (Last created dialog Button)
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
Si - Conditions
Bol_FirstMet[(Player number of (Owner of (Triggering unit)))] Egal à FALSE
Alors - Actions
Dialogue - Create a dialog button for Dialog_Menu[(Player number of (Owner of (Triggering unit)))] labelled |cffffffff*Run Away... Set Dialog_Button[((Player number of (Triggering player)) + (Coefficiant x 3))] = (Last created dialog Button) Dialogue - Montrer Dialog_Menu[(Player number of (Owner of (Triggering unit)))] for (Owner of (Triggering unit))
Sinon - Actions
Dialogue - Create a dialog button for Dialog_Menu[(Player number of (Owner of (Triggering unit)))] labelled |cffffffffYou don't... Set Dialog_Button[((Player number of (Triggering player)) + (Coefficiant x 8))] = (Last created dialog Button) Dialogue - Montrer Dialog_Menu[(Player number of (Owner of (Triggering unit)))] for (Owner of (Triggering unit))
Déclencheur 2 ( celui qui gere les réponses )
Secret:
Gui:
Trigger:
Answer
Evénements
Dialogue - A dialog button is clicked for Dialog_Menu[1] Dialogue - A dialog button is clicked for Dialog_Menu[2] Dialogue - A dialog button is clicked for Dialog_Menu[3] Dialogue - A dialog button is clicked for Dialog_Menu[4] Dialogue - A dialog button is clicked for Dialog_Menu[5] Dialogue - A dialog button is clicked for Dialog_Menu[6] Dialogue - A dialog button is clicked for Dialog_Menu[7] Dialogue - A dialog button is clicked for Dialog_Menu[8] Dialogue - A dialog button is clicked for Dialog_Menu[9] Dialogue - A dialog button is clicked for Dialog_Menu[10] Dialogue - A dialog button is clicked for Dialog_Menu[11] Dialogue - A dialog button is clicked for Dialog_Menu[12]
Conditions
Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
Si - Conditions
(Clicked dialog button) Egal à Dialog_Button[((Player number of (Triggering player)) + (Coefficiant x 1))]
Alors - Actions
Dialogue - Clear Dialog_Menu[(Player number of (Triggering player))] Dialogue - Change the title of Dialog_Menu[(Player number of (Owner of (Triggering unit)))] to |cffffcc00Captain :... Dialogue - Create a dialog button for Dialog_Menu[(Player number of (Triggering player))] labelled |cffffffffI can do ... Set Dialog_Button[((Player number of (Triggering player)) + (Coefficiant x 4))] = (Last created dialog Button) Dialogue - Create a dialog button for Dialog_Menu[(Player number of (Triggering player))] labelled |cfffffffflook at m... Set Dialog_Button[((Player number of (Triggering player)) + (Coefficiant x 5))] = (Last created dialog Button) Dialogue - Create a dialog button for Dialog_Menu[(Player number of (Triggering player))] labelled (|cffffffffI can kill some of your soldiers to proove my power|r|n + (Lvl + ((String((Hero level of Hero[(Player number of (Triggering player))]))) + / 45))) Set Dialog_Button[((Player number of (Triggering player)) + (Coefficiant x 6))] = (Last created dialog Button) Dialogue - Montrer Dialog_Menu[(Player number of (Triggering player))] for (Triggering player)
Sinon - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
Si - Conditions
(Clicked dialog button) Egal à Dialog_Button[((Player number of (Triggering player)) + (Coefficiant x 2))]
Alors - Actions
Dialogue - Clear Dialog_Menu[(Player number of (Triggering player))] Dialogue - Change the title of Dialog_Menu[(Player number of (Owner of (Triggering unit)))] to |cffffcc00Captain :... Dialogue - Create a dialog button for Dialog_Menu[(Player number of (Triggering player))] labelled |cffffffffI can do ... Set Dialog_Button[((Player number of (Triggering player)) + (Coefficiant x 4))] = (Last created dialog Button) Dialogue - Create a dialog button for Dialog_Menu[(Player number of (Triggering player))] labelled |cffffffffI can pay... Set Dialog_Button[((Player number of (Triggering player)) + (Coefficiant x 7))] = (Last created dialog Button) Dialogue - Create a dialog button for Dialog_Menu[(Player number of (Triggering player))] labelled (|cffffffffI can kill some of your soldiers to proove my power|r|n + (Lvl + ((String((Hero level of Hero[(Player number of (Triggering player))]))) + / 45))) Set Dialog_Button[((Player number of (Triggering player)) + (Coefficiant x 6))] = (Last created dialog Button) Dialogue - Montrer Dialog_Menu[(Player number of (Triggering player))] for (Triggering player)
Sinon - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
Si - Conditions
(Clicked dialog button) Egal à Dialog_Button[((Player number of (Triggering player)) + (Coefficiant x 3))]
Alors - Actions
Dialogue - Clear Dialog_Menu[(Player number of (Triggering player))] Set Pos_Another[1] = (Center of Run Away <gen>) Set Pos_Another[2] = (Center of Tp for Run Away <gen>) Unité - Move Hero[(Player number of (Triggering player))] instantly to Pos_Another[2] Unité - Order Hero[(Player number of (Triggering player))] to Avancer vers Pos_Another[1] Partie - Display to (Player group((Player((Player number of (Triggering player)))))) the text: |CFF106246OLD KINGD... Set Bol_FirstMet[(Player number of (Triggering player))] = TRUE Set NbrReputationOldKingdom[(Player number of (Triggering player))] = (NbrReputationOldKingdom[(Player number of (Triggering player))] - 5) Custom script: call RemoveLocation( udg_Pos_Another[1] ) Custom script: call RemoveLocation( udg_Pos_Another[2] ) Dialogue - Masquer Dialog_Menu[(Player number of (Triggering player))] for (Triggering player)
Sinon - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
Si - Conditions
(Clicked dialog button) Egal à Dialog_Button[((Player number of (Triggering player)) + (Coefficiant x 4))]
Alors - Actions
Dialogue - Clear Dialog_Menu[(Player number of (Triggering player))] Dialogue - Change the title of Dialog_Menu[(Player number of (Owner of (Triggering unit)))] to |cffffcc00Captain :... Dialogue - Create a dialog button for Dialog_Menu[(Player number of (Triggering player))] labelled |cffffffffAccept|r Set Dialog_Button[((Player number of (Triggering player)) + (Coefficiant x 9))] = (Last created dialog Button) Dialogue - Create a dialog button for Dialog_Menu[(Player number of (Triggering player))] labelled |cffffffffRefuse|r Set Dialog_Button[((Player number of (Triggering player)) + (Coefficiant x 10))] = (Last created dialog Button) Dialogue - Montrer Dialog_Menu[(Player number of (Triggering player))] for (Triggering player)
Sinon - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
Si - Conditions
(Clicked dialog button) Egal à Dialog_Button[((Player number of (Triggering player)) + (Coefficiant x 5))]
Alors - Actions
Dialogue - Clear Dialog_Menu[(Player number of (Triggering player))] Dialogue - Change the title of Dialog_Menu[(Player number of (Owner of (Triggering unit)))] to |cffffcc00Captain :... Dialogue - Create a dialog button for Dialog_Menu[(Player number of (Triggering player))] labelled |cffffffffOk, what ... Set Dialog_Button[((Player number of (Triggering player)) + (Coefficiant x 4))] = (Last created dialog Button) Dialogue - Create a dialog button for Dialog_Menu[(Player number of (Triggering player))] labelled |cffffffffPff.. I d... Set Dialog_Button[((Player number of (Triggering player)) + (Coefficiant x 11))] = (Last created dialog Button) Dialogue - Montrer Dialog_Menu[(Player number of (Triggering player))] for (Triggering player)
Sinon - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
Si - Conditions
(Clicked dialog button) Egal à Dialog_Button[((Player number of (Triggering player)) + (Coefficiant x 6))] (Clicked dialog button) Différent de Dialog_Button[((Player number of (Triggering player)) + (Coefficiant x 3))]
Alors - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
Si - Conditions
(Hero level of Hero[(Player number of (Triggering player))]) Inférieur à 45 (Clicked dialog button) Egal à Dialog_Button[((Player number of (Triggering player)) + (Coefficiant x 6))] (Clicked dialog button) Différent de Dialog_Button[((Player number of (Triggering player)) + (Coefficiant x 3))]
Alors - Actions
Dialogue - Clear Dialog_Menu[(Player number of (Triggering player))] Partie - Display to (Player group((Player((Player number of (Triggering player)))))) the text: |CFF106246OLD KINGD... Set NbrReputationOldKingdom[(Player number of (Triggering player))] = (NbrReputationOldKingdom[(Player number of (Triggering player))] - 20) Dialogue - Masquer Dialog_Menu[(Player number of (Triggering player))] for (Triggering player)
Sinon - Actions
Sinon - Actions
Ps: Coefficient = 8 ( la map comporte 8 PJ )
Merci d'avance si vous arrivez a m'aider _________________
Inscrit le: 13 Jan 2009 Messages: 550 Sujets: 47 Spécialité en worldedit: La partie déclencheurs sauf le GUI.
Posté le: 26/04/11 17:27 Sujet du message:
Wareditor a écrit:
Mais la sa se passe comme sa :
Bouton 3 déclenche Action 3 et 6
Je ne sais pas pourquoi cela fait ça exactement.
Tout d'abord je suis loin d'être spécialiste des dialogues.
Cependant je vois des choses incohérentes qui ont besoin d'être rectifiées avant de chercher plus avant :
_triggering player -> peut-être est-ce correct est cela permet-il de récupérer le joueur qui a cliqué sur le bouton, mais need quelqu'un le confirmer
_triggering unit -> il est clair que c'est incohérent ici, ça renverra toujours la valeur nulle
_tu crées les mêmes interfaces graphiques pour tous les joueurs, une pour chacun, alors que une seule suffit
-> l'action "montrer <dialog menu> for <player>" parle d'elle-même. Une seule interface pour être utilisée séparément par les différents joueurs
_tu crées les boutons dynamiquement pendant le jeu alors que ça devrait être fait à l'initialisation : une fois que l'interface est faite, il suffit de la faire s'afficher quand on en a besoin _________________
_triggering player -> peut-être est-ce correct est cela permet-il de récupérer le joueur qui a cliqué sur le bouton, mais need quelqu'un le confirmer
Si si c'est correct, a moins qu'il existe une réponse évènement joueur pour cliked buttoun
Max a écrit:
_triggering unit -> il est clair que c'est incohérent ici, ça renverra toujours la valeur nulle
D'accord je vais changer sa
Max a écrit:
_tu crées les mêmes interfaces graphiques pour tous les joueurs, une pour chacun, alors que une seule suffit
-> l'action "montrer <dialog menu> for <player>" parle d'elle-même. Une seule interface pour être utilisée séparément par les différents joueurs
Bas enfaite l'action peut être déclencher plusieurs fois en même temps donc sa créerait d'un incohérence
ex : Pj1 avec dialogue du PJ2
Max a écrit:
_tu crées les boutons dynamiquement pendant le jeu alors que ça devrait être fait à l'initialisation : une fois que l'interface est faite, il suffit de la faire s'afficher quand on en a besoin
Oui c'est obligatoire car sinon le Pj se trouve avec tout les bouton au début alors que mon but est de crée une conversation a choix et a conséquences multiples _________________
Il est vrai que certaines actions de declo 2 sont owner of triggering unit. La cause est que j ai copié certaines action du declo 1 dont j'avais oublié de changer les "owner of"
Inscrit le: 13 Jan 2009 Messages: 550 Sujets: 47 Spécialité en worldedit: La partie déclencheurs sauf le GUI.
Posté le: 27/04/11 18:31 Sujet du message:
Wareditor a écrit:
Max a écrit:
_tu crées les boutons dynamiquement pendant le jeu alors que ça devrait être fait à l'initialisation : une fois que l'interface est faite, il suffit de la faire s'afficher quand on en a besoin
Oui c'est obligatoire car sinon le Pj se trouve avec tout les bouton au début alors que mon but est de crée une conversation a choix et a conséquences multiples
Je vais détailler pour mieux t'expliquer :
Pour chaque interface graphique différente, c'est-à-dire un affichage, un ensemble de boutons, tu dois créer un dialogue, auquel tu ajoutes les boutons qu'il doit contenir bien évidemment. C'est à faire à l'initialisation, et à ne pas modifier au cours du jeu. Au cours du jeu en revanche, on affiche chaque dialogue/interface graphique au(x) moment(s) que l'on veut et au(x) joueur(s) que l'on veut. Une fois qu'un certain joueur bien précis clique sur un bouton bien précis (cf l'évènement associé), tu peux cacher pour ce joueur l'interface graphique contenant le bouton cliqué, puis lui afficher une autre interface graphique. Tu n'as pas à modifier les différentes interfaces graphiques, et encore moins à en créer plusieurs identiques. Elles sont utilisables de façon totalement indépendante d'un joueur à l'autre. D'ailleurs, le fait que tu ajoutes/enlèves des boutons dynamiquement en fonction des actions de chaque joueur, t'enlève cette liberté, et cela te force effectivement à créer un dialogue par joueur...
Cela dit, il faut que tu nommes les variables de type dialogue et celles de type bouton de façon à ce que le code GUI soit bien plus lisible que ce qu'il est actuellement (c'est très dur à déchiffrer). En général pour un bouton on met un nom correspondant à ce que le bouton affiche. _________________
@ Tout le monde Toujours le même bug même après changement :
Secret:
Gui:
Trigger:
Enter
Evénements
Unité - A unit enters Enter VillageOK <gen>
Conditions
((Entering unit) is Un héros) Egal à TRUE NbrReputationOldKingdom[(Player number of (Owner of (Entering unit)))] Inférieur à 15 NbrReputationOldKingdom[(Player number of (Owner of (Entering unit)))] Supérieur à -15 ((Entering unit) is an illusion) Egal à FALSE ((Entering unit) has buff Vent divin) Egal à FALSE
Actions
Wait 0.50 seconds Unité - Order (Entering unit) to Arrêter Dialogue - Change the title of Dialog_Menu[(Player number of (Owner of (Entering unit)))] to |cffffcc00Captain :... Dialogue - Create a dialog button for Dialog_Menu[(Player number of (Owner of (Entering unit)))] labelled |cffffffffI'm here ... Set Dialog_Button[((Player number of (Owner of (Entering unit))) + (Coefficiant x 1))] = (Last created dialog Button) Dialogue - Create a dialog button for Dialog_Menu[(Player number of (Owner of (Entering unit)))] labelled |cffffffffWho are y... Set Dialog_Button[((Player number of (Owner of (Entering unit))) + (Coefficiant x 2))] = (Last created dialog Button)
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
Si - Conditions
Bol_FirstMet[(Player number of (Owner of (Entering unit)))] Egal à FALSE
Alors - Actions
Dialogue - Create a dialog button for Dialog_Menu[(Player number of (Owner of (Entering unit)))] labelled |cffffffff*Run Away... Set Dialog_Button[((Player number of (Owner of (Entering unit))) + (Coefficiant x 3))] = (Last created dialog Button) Dialogue - Montrer Dialog_Menu[(Player number of (Owner of (Entering unit)))] for (Owner of (Entering unit))
Sinon - Actions
Dialogue - Create a dialog button for Dialog_Menu[(Player number of (Owner of (Entering unit)))] labelled |cffffffffYou don't... Set Dialog_Button[((Player number of (Owner of (Entering unit))) + (Coefficiant x 8))] = (Last created dialog Button) Dialogue - Montrer Dialog_Menu[(Player number of (Owner of (Entering unit)))] for (Owner of (Entering unit))
Secret:
Gui:
Trigger:
Answer
Evénements
Dialogue - A dialog button is clicked for Dialog_Menu[1] Dialogue - A dialog button is clicked for Dialog_Menu[2] Dialogue - A dialog button is clicked for Dialog_Menu[3] Dialogue - A dialog button is clicked for Dialog_Menu[4] Dialogue - A dialog button is clicked for Dialog_Menu[5] Dialogue - A dialog button is clicked for Dialog_Menu[6] Dialogue - A dialog button is clicked for Dialog_Menu[7] Dialogue - A dialog button is clicked for Dialog_Menu[8] Dialogue - A dialog button is clicked for Dialog_Menu[9] Dialogue - A dialog button is clicked for Dialog_Menu[10] Dialogue - A dialog button is clicked for Dialog_Menu[11] Dialogue - A dialog button is clicked for Dialog_Menu[12]
Conditions
Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
Si - Conditions
(Clicked dialog button) Egal à Dialog_Button[((Player number of (Triggering player)) + (Coefficiant x 1))]
Alors - Actions
Dialogue - Clear Dialog_Menu[(Player number of (Triggering player))] Dialogue - Change the title of Dialog_Menu[(Player number of (Triggering player))] to |cffffcc00Captain :... Dialogue - Create a dialog button for Dialog_Menu[(Player number of (Triggering player))] labelled |cffffffffI can do ... Set Dialog_Button[((Player number of (Triggering player)) + (Coefficiant x 4))] = (Last created dialog Button) Dialogue - Create a dialog button for Dialog_Menu[(Player number of (Triggering player))] labelled |cfffffffflook at m... Set Dialog_Button[((Player number of (Triggering player)) + (Coefficiant x 5))] = (Last created dialog Button) Dialogue - Create a dialog button for Dialog_Menu[(Player number of (Triggering player))] labelled (|cffffffffI can kill some of your soldiers to proove my power|r|n + (Lvl + ((String((Hero level of Hero[(Player number of (Triggering player))]))) + / 45))) Set Dialog_Button[((Player number of (Triggering player)) + (Coefficiant x 6))] = (Last created dialog Button) Dialogue - Montrer Dialog_Menu[(Player number of (Triggering player))] for (Triggering player)
Sinon - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
Si - Conditions
(Clicked dialog button) Egal à Dialog_Button[((Player number of (Triggering player)) + (Coefficiant x 2))]
Alors - Actions
Dialogue - Clear Dialog_Menu[(Player number of (Triggering player))] Dialogue - Change the title of Dialog_Menu[(Player number of (Triggering player))] to |cffffcc00Captain :... Dialogue - Create a dialog button for Dialog_Menu[(Player number of (Triggering player))] labelled |cffffffffI can do ... Set Dialog_Button[((Player number of (Triggering player)) + (Coefficiant x 4))] = (Last created dialog Button) Dialogue - Create a dialog button for Dialog_Menu[(Player number of (Triggering player))] labelled |cffffffffI can pay... Set Dialog_Button[((Player number of (Triggering player)) + (Coefficiant x 7))] = (Last created dialog Button) Dialogue - Create a dialog button for Dialog_Menu[(Player number of (Triggering player))] labelled (|cffffffffI can kill some of your soldiers to proove my power|r|n + (Lvl + ((String((Hero level of Hero[(Player number of (Triggering player))]))) + / 45))) Set Dialog_Button[((Player number of (Triggering player)) + (Coefficiant x 6))] = (Last created dialog Button) Dialogue - Montrer Dialog_Menu[(Player number of (Triggering player))] for (Triggering player)
Sinon - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
Si - Conditions
(Clicked dialog button) Egal à Dialog_Button[((Player number of (Triggering player)) + (Coefficiant x 3))]
Alors - Actions
Dialogue - Clear Dialog_Menu[(Player number of (Triggering player))] Set Pos_Another[1] = (Center of Run Away <gen>) Set Pos_Another[2] = (Center of Tp for Run Away <gen>) Unité - Move Hero[(Player number of (Triggering player))] instantly to Pos_Another[2] Unité - Order Hero[(Player number of (Triggering player))] to Avancer vers Pos_Another[1] Partie - Display to (Player group((Player((Player number of (Triggering player)))))) the text: |CFF106246OLD KINGD... Set Bol_FirstMet[(Player number of (Triggering player))] = TRUE Set NbrReputationOldKingdom[(Player number of (Triggering player))] = (NbrReputationOldKingdom[(Player number of (Triggering player))] - 5) Custom script: call RemoveLocation( udg_Pos_Another[1] ) Custom script: call RemoveLocation( udg_Pos_Another[2] ) Dialogue - Masquer Dialog_Menu[(Player number of (Triggering player))] for (Triggering player)
Sinon - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
Si - Conditions
(Clicked dialog button) Egal à Dialog_Button[((Player number of (Triggering player)) + (Coefficiant x 4))]
Alors - Actions
Dialogue - Clear Dialog_Menu[(Player number of (Triggering player))] Dialogue - Change the title of Dialog_Menu[(Player number of (Triggering player))] to |cffffcc00Captain :... Dialogue - Create a dialog button for Dialog_Menu[(Player number of (Triggering player))] labelled |cffffffffAccept|r Set Dialog_Button[((Player number of (Triggering player)) + (Coefficiant x 9))] = (Last created dialog Button) Dialogue - Create a dialog button for Dialog_Menu[(Player number of (Triggering player))] labelled |cffffffffRefuse|r Set Dialog_Button[((Player number of (Triggering player)) + (Coefficiant x 10))] = (Last created dialog Button) Dialogue - Montrer Dialog_Menu[(Player number of (Triggering player))] for (Triggering player)
Sinon - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
Si - Conditions
(Clicked dialog button) Egal à Dialog_Button[((Player number of (Triggering player)) + (Coefficiant x 5))]
Alors - Actions
Dialogue - Clear Dialog_Menu[(Player number of (Triggering player))] Dialogue - Change the title of Dialog_Menu[(Player number of (Triggering player))] to |cffffcc00Captain :... Dialogue - Create a dialog button for Dialog_Menu[(Player number of (Triggering player))] labelled |cffffffffOk, what ... Set Dialog_Button[((Player number of (Triggering player)) + (Coefficiant x 4))] = (Last created dialog Button) Dialogue - Create a dialog button for Dialog_Menu[(Player number of (Triggering player))] labelled |cffffffffPff.. I d... Set Dialog_Button[((Player number of (Triggering player)) + (Coefficiant x 11))] = (Last created dialog Button) Dialogue - Montrer Dialog_Menu[(Player number of (Triggering player))] for (Triggering player)
Sinon - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
Si - Conditions
(Clicked dialog button) Egal à Dialog_Button[((Player number of (Triggering player)) + (Coefficiant x 6))] (Clicked dialog button) Différent de Dialog_Button[((Player number of (Triggering player)) + (Coefficiant x 3))]
Alors - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
Si - Conditions
(Hero level of Hero[(Player number of (Triggering player))]) Inférieur à 45 (Clicked dialog button) Egal à Dialog_Button[((Player number of (Triggering player)) + (Coefficiant x 6))] (Clicked dialog button) Différent de Dialog_Button[((Player number of (Triggering player)) + (Coefficiant x 3))]
Alors - Actions
Dialogue - Clear Dialog_Menu[(Player number of (Triggering player))] Partie - Display to (Player group((Player((Player number of (Triggering player)))))) the text: |CFF106246OLD KINGD... Set NbrReputationOldKingdom[(Player number of (Triggering player))] = (NbrReputationOldKingdom[(Player number of (Triggering player))] - 20) Dialogue - Masquer Dialog_Menu[(Player number of (Triggering player))] for (Triggering player)
Il y a mélange, les boutons sont bien créés mais les variables associées sont écrasées, car utilisées plusieurs fois par des joueurs différents. _________________
Oui sauf que j'utilise bien les slots 1-8 ( par contre j'ai déplacé le slot 4 pour en faire le slot 9, question de couleur. Cela change quelque-chose ? )
mais je comprend pas comme je test en solo sa ne devrai pas affecter le résultat, non ? _________________
Inscrit le: 23 Aoû 2007 Messages: 7143 Sujets: 147 Spécialité en worldedit: le troll, le flood, la vulgarité, mon coeur balance Médailles: 2 (En savoir plus...)
Posté le: 28/04/11 22:32 Sujet du message:
Wareditor a écrit:
Oui sauf que j'utilise bien les slots 1-8 ( par contre j'ai déplacé le slot 4 pour en faire le slot 9, question de couleur. Cela change quelque-chose ? )
Ça dépend tu veux dire quoi ? que tu as utilisé le joueur 9, ou que tu as simplement changé la couleur du joueur 4 ?
On s'en fout des couleurs, par contre les joueurs utilisés doivent être impérativement les joueurs compris entre 1 et 8 inclus.
Citation:
mais je comprend pas comme je test en solo sa ne devrai pas affecter le résultat, non ?
Bah tu m'as jamais dit que cela buggait aussi en solo. _________________
Nan serieusement, j'ai uniquement test en solo donc voila :/
On s'en fout des nombres ? ( meme si j'ai une question : si je met le joueur violet en place 9 et le joueur rose en place 4, le joueur rose sera compté numero 4 ? ) _________________
Inscrit le: 23 Aoû 2007 Messages: 7143 Sujets: 147 Spécialité en worldedit: le troll, le flood, la vulgarité, mon coeur balance Médailles: 2 (En savoir plus...)
Posté le: 28/04/11 22:57 Sujet du message:
Wareditor a écrit:
Bas j'ai jamais dit que ca buggait en multi
Nan serieusement, j'ai uniquement test en solo donc voila :/
C'était tout sauf évident. I'm not in your mind.
Citation:
On s'en fout des nombres ? ( meme si j'ai une question : si je met le joueur violet en place 9 et le joueur rose en place 4, le joueur rose sera compté numero 4 ? )
Ça dépend, si tu t'en fous de la logique mathématique et des bugs liés à cette logique non respectée, alors oui on s'en fout des nombres.
Je ne sais pas de quoi tu parles je ne peux pas lancer l'éditeur là.
Mais je pense avoir été clair.
Au pire dans tes équations, à la place de "8" utilises l'index du joueur humain max, soit 12, et c'est réglé définitivement. (ce problème)
Et si ca fonctionne toujours pas, tient moi au courant (fort probable, mais le GUI je le digère à petite dose, corrige déjà les erreurs connues et testes le résultat pour éviter que je me tape du GUI pour rien) _________________
Inscrit le: 21 Fév 2010 Messages: 1785 Sujets: 22 Spécialité en worldedit: La modestie Médailles: 1 (En savoir plus...)
Posté le: 28/04/11 23:38 Sujet du message:
D'abord, c'est normal qu'on voit pas comment tu créés les boutons 4 et 5 ?
Ensuite, tu mets "Set Dialog_Button[((Player number of (Owner of (Entering unit))) + (Coefficiant x 8))] = (Last created dialog Button)", ce serait pas plutôt "Coef x 6" ?
Du coup, ton bouton n°6 est "null" et, comme tu utilises "Clear dialog", le bouton sur lequel tu cliques est supprimé et devient donc "null".
Essaies donc en corrigeant ça et en mettant les "Clear dialog" à la toute fin du 2nd déclo (ou sinon, tu imbriques les if les uns dans les autres et c'est tout moche en GUI).
M'enfin, je comprend pas pourquoi ça ne buguerait pas aussi avec les autres boutons et pourquoi ça bug avec la condition "clicked button différent de Button n°3". Il y a peut-être autre chose... _________________
Inscrit le: 13 Jan 2009 Messages: 550 Sujets: 47 Spécialité en worldedit: La partie déclencheurs sauf le GUI.
Posté le: 29/04/11 02:41 Sujet du message:
Nan mais...
Wareditor a écrit:
@ Max Je vais essayer de test
@ Tout le monde Toujours le même bug même après changement
Je ne sais pas quand tu as prévu d'essayer de tester effectivement, mais personnellement tant que je verrai des "create dialog button" dans des déclo avec des évènements dépendant des actions de joueurs je ne regarderai pas plus avant.
@ TB :
Je suis étonné que tu le confortes dans sa façon de faire, j'ai besoin que tu confirmes ce que j'ai dit :
Moi a écrit:
Pour chaque interface graphique différente, c'est-à-dire un affichage, un ensemble de boutons, tu dois créer un dialogue, auquel tu ajoutes les boutons qu'il doit contenir bien évidemment. C'est à faire à l'initialisation, et à ne pas modifier au cours du jeu. Au cours du jeu en revanche, on affiche chaque dialogue/interface graphique au(x) moment(s) que l'on veut et au(x) joueur(s) que l'on veut. Une fois qu'un certain joueur bien précis clique sur un bouton bien précis (cf l'évènement associé), tu peux cacher pour ce joueur l'interface graphique contenant le bouton cliqué, puis lui afficher une autre interface graphique. Tu n'as pas à modifier les différentes interfaces graphiques, et encore moins à en créer plusieurs identiques. Elles sont utilisables de façon totalement indépendante d'un joueur à l'autre. D'ailleurs, le fait que tu ajoutes/enlèves des boutons dynamiquement en fonction des actions de chaque joueur, t'enlève cette liberté, et cela te force effectivement à créer un dialogue par joueur...
Cela dit, il faut que tu nommes les variables de type dialogue et celles de type bouton de façon à ce que le code GUI soit bien plus lisible que ce qu'il est actuellement (c'est très dur à déchiffrer). En général pour un bouton on met un nom correspondant à ce que le bouton affiche.
J'ai besoin que tu me confirmes cela car j'ai très peu utilisé les "dialogues" sur war3 et c'était il y a longtemps. Ce que je dis se base plus sur mes connaissances des interfaces graphiques Swing (java) que sur l'éditeur de cartes, mais je pense que le fonctionnement général est le même, comme pour toute interface graphique faite en n'importe quel langage.
Je pense que je vais tout de même créer une ébauche afin de :
1) vérifier pleinement mes dires
2) présenter un exemple concret à notre ami
edit: "@ Max Je vais essayer de test "
J'avais pas fait gaffe que tu as dit ça il y a 10h seulement .
Vais faire une ébauche quand même.
Enfin, chépa quand, quand j'aurai le temps et le courage. _________________
Inscrit le: 13 Jan 2009 Messages: 550 Sujets: 47 Spécialité en worldedit: La partie déclencheurs sauf le GUI.
Posté le: 29/04/11 05:16 Sujet du message:
Bon ben j'arrivais po à dormir.
Je me trompais sur un point : on ne peut pas créer de boutons pour un dialogue à l'initialisation (event Map init).
Mais c'est pas grave, il suffit d'utiliser l'event de début de partie (time elapsed 0.00 s).
J'ai donc eu le temps (bon ça empiète un peu sur la nuit) et le courage (j'ai fait du GUI quand même - TB comprendra) de faire une "ébauche".
Bon, étant donné que je trouve la map que j'ai faite exemplaire, je la mets à votre disposition (elle pourra servir à d'autres que notre ami auteur de ce topic) en plus de poster les triggers.
cliquer ici pour télécharger la carte d'exemple
Principe de l'exemple donné : fournir aux joueurs une interface graphique leur permettant de personnaliser l'apparence de leur héros (un héros par joueur ici) ; soit la couleur du héros, ainsi que sa taille.
Deux interfaces graphiques sont mises en oeuvre :
_un(e) GUI pour le choix de la nouvelle couleur à donner au héros
_un(e) GUI pour le choix de la taille (en pourcentage par rapport à la taille normale)
(GUI = graphical user interface)
Je connais bien les interface graphiques en java (bibliothèque swing) et ça fonctionne de la même manière. On définit une interface graphique, aussi complexe puisse-t-elle être, et on l'affiche lors de l'exécution du programme aux moments opportuns.
Ceci appliqué à war3 consiste à définir les interfaces graphiques en début de partie, et simplement exécuter l'action "montrer dialogue" au cours du jeu, quand il faut le faire.
Wareditor, tu devrais voir aisément que cette façon de faire est bien plus :
_facile à mettre en oeuvre
_rapide à mettre en oeuvre
_efficace
_lisible (point très important)
_évolutive (on peut modifier les GUI bien plus facilement)
_intuitive/logique (en tous cas ça l'est pour moi)
que la méthode que tu as utilisée.
Variables mises en oeuvre :
Secret:
Déclencheurs mis en oeuvre :
Dans le répertoire d'initialisation
Secret:
Création des héros à l'initialisation :
Gui:
Trigger:
initHeroes
Evénements
Map initialization
Conditions
Actions
-------- création des héros et assignation pour chacun à la variable correspondante -------- -------- héros rouge -------- Set heroStartPos = (Point(-100.00, -100.00)) Unité - Create 1 Chasseur de démon for Joueur 1 (Rouge) at heroStartPos facing 270.00 degrees Set hero[1] = (Last created unit) Custom script: call RemoveLocation(udg_heroStartPos) -------- héros bleu -------- Set heroStartPos = (Point(-100.00, 100.00)) Unité - Create 1 Chasseur de démon for Joueur 2 (Bleu) at heroStartPos facing 270.00 degrees Set hero[2] = (Last created unit) Custom script: call RemoveLocation(udg_heroStartPos) -------- héros cyan -------- Set heroStartPos = (Point(100.00, -100.00)) Unité - Create 1 Chasseur de démon for Joueur 3 (Cyan) at heroStartPos facing 270.00 degrees Set hero[3] = (Last created unit) Custom script: call RemoveLocation(udg_heroStartPos) -------- héros violet -------- Set heroStartPos = (Point(100.00, 100.00)) Unité - Create 1 Chasseur de démon for Joueur 4 (Pourpre) at heroStartPos facing 270.00 degrees Set hero[4] = (Last created unit) Custom script: call RemoveLocation(udg_heroStartPos)
Dans le répertoire "dialogues"
Secret:
Définition de l'interface graphique de choix de couleur du héros :
Secret:
Gui:
Trigger:
initGuiChoixCouleur
Evénements
Temps - Elapsed game time is 0.00 seconds
Conditions
Actions
-------- création de l'interface graphique (GUI) de choix de couleur -------- -------- le dernier bouton (noir) ne fonctionne pas, les dialogues ne semblent pas accepter plus de 12 boutons -------- Dialogue - Change the title of gui_choixCouleur to Choisissez la nouve... Dialogue - Create a dialog button for gui_choixCouleur labelled rouge Set i = 1 Set btn_couleur[i] = (Last created dialog Button) Dialogue - Create a dialog button for gui_choixCouleur labelled bleu Set i = (i + 1) Set btn_couleur[i] = (Last created dialog Button) Dialogue - Create a dialog button for gui_choixCouleur labelled cyan Set i = (i + 1) Set btn_couleur[i] = (Last created dialog Button) Dialogue - Create a dialog button for gui_choixCouleur labelled violet Set i = (i + 1) Set btn_couleur[i] = (Last created dialog Button) Dialogue - Create a dialog button for gui_choixCouleur labelled jaune Set i = (i + 1) Set btn_couleur[i] = (Last created dialog Button) Dialogue - Create a dialog button for gui_choixCouleur labelled orange Set i = (i + 1) Set btn_couleur[i] = (Last created dialog Button) Dialogue - Create a dialog button for gui_choixCouleur labelled vert Set i = (i + 1) Set btn_couleur[i] = (Last created dialog Button) Dialogue - Create a dialog button for gui_choixCouleur labelled rose Set i = (i + 1) Set btn_couleur[i] = (Last created dialog Button) Dialogue - Create a dialog button for gui_choixCouleur labelled gris Set i = (i + 1) Set btn_couleur[i] = (Last created dialog Button) Dialogue - Create a dialog button for gui_choixCouleur labelled bleu clair Set i = (i + 1) Set btn_couleur[i] = (Last created dialog Button) Dialogue - Create a dialog button for gui_choixCouleur labelled vert foncé Set i = (i + 1) Set btn_couleur[i] = (Last created dialog Button) Dialogue - Create a dialog button for gui_choixCouleur labelled marron Set i = (i + 1) Set btn_couleur[i] = (Last created dialog Button) Dialogue - Create a dialog button for gui_choixCouleur labelled noir Set i = (i + 1) Set btn_couleur[i] = (Last created dialog Button) -------- nbBtnCouleur sert dans le trigger "clicBtnChoixCouleur" -------- Set nbBtnCouleur = i
Définition de l'interface graphique de choix de taille du héros :
Secret:
Gui:
Trigger:
initGuiChoixEchelle
Evénements
Temps - Elapsed game time is 0.00 seconds
Conditions
Actions
-------- création de l'interface graphique (GUI) de choix d'échelle (sous forme de pourcentage) -------- Dialogue - Change the title of gui_choixEchelle to Choisissez la nouve... Dialogue - Create a dialog button for gui_choixEchelle labelled 50 % Set btn_echelle50 = (Last created dialog Button) Dialogue - Create a dialog button for gui_choixEchelle labelled 75 % Set btn_echelle75 = (Last created dialog Button) Dialogue - Create a dialog button for gui_choixEchelle labelled 100 % Set btn_echelle100 = (Last created dialog Button) Dialogue - Create a dialog button for gui_choixEchelle labelled 150 % Set btn_echelle150 = (Last created dialog Button) Dialogue - Create a dialog button for gui_choixEchelle labelled 200 % Set btn_echelle200 = (Last created dialog Button)
Gestion des évènements de clics sur boutons du GUI de choix de couleur :
Secret:
Gui:
Trigger:
clicBtnChoixCouleur
Evénements
Dialogue - A dialog button is clicked for gui_choixCouleur
Conditions
Actions
-------- trigger déclenché lors du choix d'une couleur par un joueur -------- Set playerId = (Player number of (Triggering player)) -------- parcours des boutons pour trouver celui qui a été cliqué --------
For each (Integer A) from 1 to nbBtnCouleur, do (Actions)
Boucle - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
Si - Conditions
(Clicked dialog button) Egal à btn_couleur[(Integer A)]
Alors - Actions
-------- changement de couleur au héros, passage à l'écran suivant, et sortie des actions en cours de ce trigger -------- Unité - Change color of hero[playerId] to (Color of (Player((Integer A)))) Dialogue - Montrer gui_choixEchelle for (Triggering player) -------- inutile de cacher la précédente GUI, ceci est fait automatiquement en montrant la suivante -------- Custom script: return //me semble qu'en GUI c'était "skip remaining actions" mais je trouve pas
Sinon - Actions
-------- cette partie de code ne devrait pas pouvoir être atteinte, on cache l'interface graphique pour ne pas bloquer le joueur en cas de bug -------- Dialogue - Masquer (Clicked dialog) for (Triggering player)
Gestion des évènements de clics sur boutons du GUI de choix de taille (ou échelle) :
Secret:
Gui:
Trigger:
clicBtnChoixEchelle
Evénements
Dialogue - A dialog button is clicked for gui_choixEchelle
Conditions
Actions
-------- trigger déclenché lors du choix d'une échelle par un joueur -------- Set playerId = (Player number of (Triggering player)) Set scale = 0.00 -------- parcours des boutons pour trouver celui qui a été cliqué --------
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
Si - Conditions
(Clicked dialog button) Egal à btn_echelle50
Alors - Actions
Set scale = 50.00
Sinon - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
Si - Conditions
(Clicked dialog button) Egal à btn_echelle75
Alors - Actions
Set scale = 75.00
Sinon - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
Si - Conditions
(Clicked dialog button) Egal à btn_echelle100
Alors - Actions
Set scale = 100.00
Sinon - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
Si - Conditions
(Clicked dialog button) Egal à btn_echelle150
Alors - Actions
Set scale = 150.00
Sinon - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
Si - Conditions
(Clicked dialog button) Egal à btn_echelle200
Alors - Actions
Set scale = 200.00
Sinon - Actions
-------- fin parcours des boutons -------- -------- on vérifie qu'une échelle correspondant au bouton cliqué a bien été trouvée (simple sécurité) --------
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
Si - Conditions
scale Différent de 0.00
Alors - Actions
-------- changement de la taille du héros (pas trouvé d'action GUI pour ça...) -------- Custom script: call SetUnitScalePercent(udg_hero[udg_playerId], udg_scale, udg_scale, udg_scale)
Sinon - Actions
-------- le jeu peut reprendre pour le joueur qui vient de personnaliser son héros -------- Dialogue - Masquer (Clicked dialog) for (Triggering player)
Dans le répertoire "commandes"
Secret:
La commande "-customizeHero" tapée par le joueur ou l'appui sur échap (ici présent pour pouvoir faire des tests rapides) déclenche l'accès aux GUI pour le joueur en question :
Gui:
Trigger:
cmdCustomizeHero
Evénements
Joueur - Joueur 1 (Rouge) types a chat message containing -customizeHero as Résultat équivalent Joueur - Joueur 1 (Rouge) skips a cinematic sequence Joueur - Joueur 2 (Bleu) types a chat message containing -customizeHero as Résultat équivalent Joueur - Joueur 2 (Bleu) skips a cinematic sequence Joueur - Joueur 3 (Cyan) types a chat message containing -customizeHero as Résultat équivalent Joueur - Joueur 3 (Cyan) skips a cinematic sequence Joueur - Joueur 4 (Pourpre) types a chat message containing -customizeHero as Résultat équivalent Joueur - Joueur 4 (Pourpre) skips a cinematic sequence
Conditions
Actions
-------- j'ai mis l'évènement "skips a cinematic sequence" (appui sur échap) pour permettre de faire des tests rapides -------- -------- à tester avec les 4 premiers joueurs -------- Dialogue - Montrer gui_choixCouleur for (Triggering player) -------- il n'y a rien d'autre à faire que d'afficher l'interface graphique permettant au joueur de faire les choix correspondant à sa demande (demande via commande) --------
Je suis bien sûr ouvert à toutes questions, je n'ai pas fait tout ça pour que ça ne serve à rien au final .
Citation:
Il est établi que lorsqu'une bâtisse tombe en ruine, il est souvent préférable de la raser puis de la reconstruire, plutôt que de tenter de la rénover.
Toutes les heures sont au format GMT + 1 Heure Aller à la page 1, 2Suivante
Page 1 sur 2
Vous ne pouvez pas poster de nouveaux sujets dans ce forum Vous ne pouvez pas répondre aux sujets dans ce forum Vous ne pouvez pas éditer vos messages dans ce forum Vous ne pouvez pas supprimer vos messages dans ce forum Vous ne pouvez pas voter dans les sondages de ce forum