online faq recherche accueil
 

Il y a 118 utilisateurs connus et inconnus. Pour voir la liste des connectés connus, cliquez ici

 Mot :   Pseudo :  
 
Bas de page
Auteur
 Sujet :

unités restent cachées

 
n°4588620
Maximaxou
rejoignez les fidèles du JASS
Posté le 27-03-2007 à 19:14:56  profilanswer
 

Alors ça c'est trop bizarre. Arrivé au niveau 2, rien à faire les monstres ne veulent pas apparaître. (on voit cependant des tirs de mortiers apparaître de nulle part ^^) Voila mes trois déclo :
 

Code :
  1. lvl2 monster group
  2.     Evénements
  3.         Map initialization
  4.     Conditions
  5.     Actions
  6.         Groupe unité - Add Mortier 0067 <gen> to monsters_lvl[2]
  7.         Groupe unité - Add Mortier 0070 <gen> to monsters_lvl[2]
  8.         Groupe unité - Add Mortier 0068 <gen> to monsters_lvl[2]
  9.         Groupe unité - Add Mortier 0069 <gen> to monsters_lvl[2]
  10.         Groupe unité - Add Mortier 0071 <gen> to monsters_lvl[2]
  11.         Groupe unité - Add Seigneur Troll des glaces 0020 <gen> to monsters_lvl[2]
  12.         Groupe unité - Add Seigneur Troll des glaces 0024 <gen> to monsters_lvl[2]
  13.         Groupe unité - Add Seigneur Troll des glaces 0077 <gen> to monsters_lvl[2]
  14.         Groupe unité - Add Seigneur Troll des glaces 0076 <gen> to monsters_lvl[2]
  15.         Groupe unité - Add Seigneur Troll des glaces 0079 <gen> to monsters_lvl[2]
  16.         Groupe unité - Add Seigneur Troll des glaces 0080 <gen> to monsters_lvl[2]
  17.         Groupe unité - Add Seigneur Troll des glaces 0081 <gen> to monsters_lvl[2]
  18.         Groupe unité - Add Seigneur Troll des glaces 0072 <gen> to monsters_lvl[2]
  19.         Groupe unité - Add Seigneur Troll des glaces 0073 <gen> to monsters_lvl[2]
  20.         Groupe unité - Add Seigneur Troll des glaces 0078 <gen> to monsters_lvl[2]
  21.         Groupe unité - Add Seigneur Troll des glaces 0023 <gen> to monsters_lvl[2]
  22.         Groupe unité - Add Seigneur Troll des glaces 0082 <gen> to monsters_lvl[2]
  23.         Groupe unité - Add Seigneur Troll des glaces 0074 <gen> to monsters_lvl[2]
  24.         Groupe unité - Add Seigneur Troll des glaces 0083 <gen> to monsters_lvl[2]
  25.         Groupe unité - Add Seigneur Troll des glaces 0021 <gen> to monsters_lvl[2]
  26.         Groupe unité - Add Seigneur Troll des glaces 0084 <gen> to monsters_lvl[2]
  27.         Groupe unité - Add Seigneur Troll des glaces 0022 <gen> to monsters_lvl[2]
  28.         Groupe unité - Add Seigneur Troll des glaces 0075 <gen> to monsters_lvl[2]
  29.         Groupe unité - Pick every unit in monsters_lvl[2] and do (Actions)
  30.             Boucle - Actions
  31.                 Unité - Hide (Picked unit)


Code :
  1. lvl2 Beginning
  2.     Evénements
  3.         Unité - A unit enters Start lvl2 <gen>
  4.     Conditions
  5.         (Owner of (Triggering unit)) Différent de Joueur 12 (Marron)
  6.     Actions
  7.         Déclencheur - Turn off (This trigger)
  8.         Déclencheur - Run lvl2 Unhide monsters <gen> (ignoring conditions)
  9.         Déclencheur - Run lvl2 Mortar <gen> (ignoring conditions)
  10.         Déclencheur - Run lvl2 Vision <gen> (ignoring conditions)
  11.         Déclencheur - Run lvl2 Patrol <gen> (ignoring conditions)


Code :
  1. lvl2 Unhide monsters
  2.     Evénements
  3.     Conditions
  4.     Actions
  5.         Groupe unité - Pick every unit in monsters_lvl[2] and do (Actions)
  6.             Boucle - Actions
  7.                 Unité - Unhide (Picked unit)


Petite précision : toutes les unités ont infestation. Cependant, comme elles ont été mises manuellement dans un groupe, ça devrait marcher...


Message édité par Maximaxou le 27-03-2007 à 19:18:24

---------------
Dota c'est bien, le slide c'est encore mieux !
n°4588621
Maximaxou
rejoignez les fidèles du JASS
Posté le 27-03-2007 à 19:24:23  profilanswer
 

C'était en fait parce que je mettais bj_wantDestroyGroup à true au départ (avec un autre trigger). Cependant, quand on regarde la définition de ForGroupBJ :

Code :
  1. function ForGroupBJ takes group whichGroup, code callback returns nothing
  2.     // If the user wants the group destroyed, remember that fact and clear
  3.     // the flag, in case it is used again in the callback.
  4.     local boolean wantDestroy = bj_wantDestroyGroup
  5.     set bj_wantDestroyGroup = false
  6.     call ForGroup(whichGroup, callback)
  7.     // If the user wants the group destroyed, do so now.
  8.     if (wantDestroy) then
  9.         call DestroyGroup(whichGroup)
  10.     endif
  11. endfunction


bj_wantDestroyGroup est remis à false directement. La seule explication que je vois est qu'ils ont supprimé ça avec un patch...


---------------
Dota c'est bien, le slide c'est encore mieux !
n°4588623
Troll-Brai​n
http://worldedit.free.fr/forum
Posté le 27-03-2007 à 19:36:04  profilanswer
 

Ca ne vient pas du patch étant donné que j'extrais les librairies common.j et blizzard.j du war3patch.mpq et c'est toujours la même chose
 
Je penses que tu avais mis ton

Code :
  1. set bj_wantDestroyGroup = false

avant une fonction qui n'utilisait pas cette variable globale nan ?


Message édité par Troll-Brain le 27-03-2007 à 19:36:20

---------------
Je ne prends que sur rendez vous.
Assurez vous d'avoir un moyen de paiement conséquent, et de préférence en liquide, avant de me quémander la moindre question.
 
n°4588625
Maximaxou
rejoignez les fidèles du JASS
Posté le 27-03-2007 à 19:48:37  profilanswer
 

Code :
  1. lvl1 Vision
  2.     Evénements
  3.         Map initialization
  4.     Conditions
  5.     Actions
  6.         Custom script:   set bj_wantDestroyGroup = true
  7.         Groupe joueur - Pick every player in (All players) and do (Actions)
  8.             Boucle - Actions
  9.                 Visibilité - Create an initially Activé visibility modifier for (Picked player) emitting Visibilité across Vision lvl1 0 <gen>
  10.                 Visibilité - Create an initially Activé visibility modifier for (Picked player) emitting Visibilité across Vision lvl1 1 <gen>
  11.                 Visibilité - Create an initially Activé visibility modifier for (Picked player) emitting Visibilité across Vision lvl1 2 <gen>
  12.         Custom script:   set bj_wantDestroyGroup = false //cette ligne n'était pas présente


 
En effet mais je ne comprends pas bien pourquoi cette question. Je ne la comprends pas puisqu'à priori bj_wantDestroyGroup fonctionne d'après moi comme une variable globale, mais non comme une sorte de custom value que chaque groupe aurait.


Message édité par Maximaxou le 27-03-2007 à 19:51:05

---------------
Dota c'est bien, le slide c'est encore mieux !
n°4588626
Maximaxou
rejoignez les fidèles du JASS
Posté le 27-03-2007 à 19:55:18  profilanswer
 

Je viens d'essayer en changeant l'évènement du déclo 'lvl2 monster group' en 'time elapsed is 0' pour être sûr que bj_WantDestroyGroup ait le tps de repasser à false. Mais les unités, n'apparaissent apparement que si je daigne repasser bj_WantDestroyGroup manuellement à false...


---------------
Dota c'est bien, le slide c'est encore mieux !
n°4588641
Troll-Brai​n
http://worldedit.free.fr/forum
Posté le 27-03-2007 à 21:28:34  profilanswer
 

J'avoue ne pas comprendre non plus car dans le blizzard.j
 

Code :
  1. globals
  2. BlaBlaBla
  3.     boolean            bj_wantDestroyGroup         = false
  4. endglobals


 
ah quoi que l'evénement map initialisation c'est peut être au même moment que la déclaration des globales du blizzard.j, ou avant.
Edit : ah oui mais nan t'as changé l'event  :D


Message édité par Troll-Brain le 27-03-2007 à 21:29:58

---------------
Je ne prends que sur rendez vous.
Assurez vous d'avoir un moyen de paiement conséquent, et de préférence en liquide, avant de me quémander la moindre question.
 
n°4588652
Maximaxou
rejoignez les fidèles du JASS
Posté le 28-03-2007 à 02:20:47  profilanswer
 

Non mais regarde :

Code :
  1. function ForGroupBJ takes group whichGroup, code callback returns nothing
  2.     // If the user wants the group destroyed, remember that fact and clear
  3.     // the flag, in case it is used again in the callback.
  4.     local boolean wantDestroy = bj_wantDestroyGroup
  5.     set bj_wantDestroyGroup = false
  6.     call ForGroup(whichGroup, callback)
  7.     // If the user wants the group destroyed, do so now.
  8.     if (wantDestroy) then
  9.         call DestroyGroup(whichGroup)
  10.     endif
  11. endfunction


bj_wantDestroyGroup est sensé repasser à false après chaque pick every.
De toute façon on  s'en fout de sa valeur de départ (qui est belle et bien à false) puisque je l'initialise à true.


---------------
Dota c'est bien, le slide c'est encore mieux !
n°4588659
Ayane
Posté le 28-03-2007 à 09:37:08  profilanswer
 

bj_wantDestroyGroup ne fonctionne que sur les fonctions de groupes d'unités, cela ne fonctionne pas sur les groupes de joueurs, si tu le met avant une fonction de groupe de joueurs alors il restera à true.

Message cité 1 fois
Message édité par Ayane le 28-03-2007 à 09:37:46

---------------
http://acathla.com
http://worldedit.free.fr/
n°4588665
Maximaxou
rejoignez les fidèles du JASS
Posté le 28-03-2007 à 16:06:19  profilanswer
 

Ah d'accord. Alors dans ce cas, comment fait-on pour éviter les fuites de mémoire lors de pick every every player ? On est obligé de passer par une variable ?


---------------
Dota c'est bien, le slide c'est encore mieux !
n°4588669
Troll-Brai​n
http://worldedit.free.fr/forum
Posté le 28-03-2007 à 16:44:45  profilanswer
 

Ayane a écrit :

bj_wantDestroyGroup ne fonctionne que sur les fonctions de groupes d'unités, cela ne fonctionne pas sur les groupes de joueurs, si tu le met avant une fonction de groupe de joueurs alors il restera à true.


ca j'avais compris Ayane mais le groupe n'est pas sensé être supprimé aprés utilisation ?
Hors là on dirait qu'il est supprimé avant son utilisation


Message édité par Troll-Brain le 28-03-2007 à 16:45:06

---------------
Je ne prends que sur rendez vous.
Assurez vous d'avoir un moyen de paiement conséquent, et de préférence en liquide, avant de me quémander la moindre question.
 
n°4588675
Maximaxou
rejoignez les fidèles du JASS
Posté le 28-03-2007 à 16:50:04  profilanswer
 

Non il était effectivement supprimé après son utilisation :

Code :
  1. Groupe unité - Pick every unit in monsters_lvl[2] and do (Actions)
  2.             Boucle - Actions
  3.                 Unité - Hide (Picked unit)


Toutes les unités ont été cachées. En revanche,  

Code :
  1. Groupe unité - Pick every unit in monsters_lvl[2] and do (Actions)
  2.             Boucle - Actions
  3.                 Unité - Unhide (Picked unit)


ce trigger ne marchait pas car le groupe monsters_lvl[2] était alors vide.


Message édité par Maximaxou le 28-03-2007 à 16:50:32

---------------
Dota c'est bien, le slide c'est encore mieux !
n°4588676
Troll-Brai​n
http://worldedit.free.fr/forum
Posté le 28-03-2007 à 16:50:29  profilanswer
 

ah ok


---------------
Je ne prends que sur rendez vous.
Assurez vous d'avoir un moyen de paiement conséquent, et de préférence en liquide, avant de me quémander la moindre question.
 

Aller à :
Ajouter une réponse