Voir le sujet précédent :: Voir le sujet suivant |
Auteur |
Message |
Max Floodeur prématuré
Inscrit le: 13 Jan 2009 Messages: 550 Sujets: 47 Spécialité en worldedit: La partie déclencheurs sauf le GUI.
|
Posté le: 15/07/09 16:23 Sujet du message: évènement unité reçoit l'ordre de poser un objet ? |
|
|
Problème étrange que j'ai aujourd'hui
Je n'arrive pas à trouver l'évènement qui se produit lorsqu'une unité reçoit l'ordre de poser un objet. Ca n'entre étonnamment pas dans l'event "unité reçoit un ordre avec point pour cible".
Il y a un bug dans ma carte Murloc Slide, où quand on donne l'ordre au héros de poser la météore (faite pour tuer un naga) pendant le slide, celui-ci se met à courir en plus de slider. Pire encore, si on le laisse poser la boule, il n'y a alors plus aucun moyen de récupérer celle-ci, et la partie est alors bloquée.
La seule solution que je vois à ce problème aujourd'hui, est de rendre l'objet "undroppable", pour qu'on ne puisse pas donner l'ordre de le poser. Ca ne me convient pas du tout _________________
Dernière édition par Max le 18/07/09 15:48; édité 1 fois |
|
Revenir en haut |
|
|
Troll-Brain Ri1kamoua
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: 15/07/09 18:40 Sujet du message: |
|
|
C'est marrant je suis justement en train de coder ces events.
War3 ne fait pas la différence entre les différents DROP, poser sur le sol, donner à une autre unité, perd l'objet en utilisant la dernière charge, perd l'objet avec la fonction Remove.
Je le posterais quand je l'aurais finit.
Sinon plutôt qu'utiliser SetUnitPosition tu peux utiliser SetUnitX/Y qui n'interrompent pas les ordres et sont plus optimisées mais plus risqués car ne font pas une foule de vérification, on peut placer une unité en dehors de la map, aucune prise en compte de la collision, etc. _________________
Dernière édition par Troll-Brain le 15/07/09 18:42; édité 1 fois |
|
Revenir en haut |
|
|
jk2pach Invité
|
Posté le: 15/07/09 18:41 Sujet du message: |
|
|
Ouh nice.
Edit: je ne voulais pas flooder, juste que ça va m'être très utile pour RC601^^ _________________
|
|
Revenir en haut |
|
|
Max Floodeur prématuré
Inscrit le: 13 Jan 2009 Messages: 550 Sujets: 47 Spécialité en worldedit: La partie déclencheurs sauf le GUI.
|
Posté le: 16/07/09 03:22 Sujet du message: |
|
|
Troll-Brain a écrit: | C'est marrant je suis justement en train de coder ces events.
War3 ne fait pas la différence entre les différents DROP, poser sur le sol, donner à une autre unité, perd l'objet en utilisant la dernière charge, perd l'objet avec la fonction Remove.
Je le posterais quand je l'aurais finit. |
Tu veux dire que c'est possible de créer de nouveau types d'évènements ? :O _________________
|
|
Revenir en haut |
|
|
Troll-Brain Ri1kamoua
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: 16/07/09 19:43 Sujet du message: |
|
|
Max a écrit: | Tu veux dire que c'est possible de créer de nouveau types d'évènements ? :O |
Rajouter des custom natives oui surement, mais il faudrait utiliser un hack de war3 et que tous les joueurs le lancent au lieu de war3. (sans compter le travail que cela demanderait)
Mais il est très souvent possible d'émuler ces events à grand coup de logique, timers ,tests, debugs et patience en se basant sur les event déjà existant, c'est ce que j'ai fait pour détecter les échanges de ressources entre joueurs :
http://worldedit.free.fr/forum/viewtopic.php?t=2017
Pour le fun et pour m'entrainer je le code avec des fonctions interfaces mais une fois fini je crois que je recoderais tout de zéro, car cela ne semble pas la meilleure façon de procéder, je ferais comme DRES, je suivrais la convention jass pour ajouter un event (oupa, il faut que j'y réfléchisse plus attentivement). _________________
|
|
Revenir en haut |
|
|
Max Floodeur prématuré
Inscrit le: 13 Jan 2009 Messages: 550 Sujets: 47 Spécialité en worldedit: La partie déclencheurs sauf le GUI.
|
Posté le: 17/07/09 08:06 Sujet du message: |
|
|
J'ai trouvé une solution nikel finalement, à l'aide de la sympathique fonction SetItemDroppable .
-> on met l'item indroppable si on slide, droppable sinon _________________
|
|
Revenir en haut |
|
|
Max Floodeur prématuré
Inscrit le: 13 Jan 2009 Messages: 550 Sujets: 47 Spécialité en worldedit: La partie déclencheurs sauf le GUI.
|
Posté le: 18/07/09 05:01 Sujet du message: |
|
|
La question de ce topic (mon topic) est marquée comme résolue, mais il ne me semble pas l'avoir mise en résolu ... En tous cas ce n'est pas le cas : j'ai peut-être trouvé une solution dérivative à mon problème mais je me pose toujours la question de l'évènement "unité reçoit l'ordre de poser un objet".
J'ai trouvé EVENT_UNIT_PAWN_ITEM mais ce n'est pas ça, et je ne vois pas à quoi cet évènement correspond.
Troll-Brain a écrit: | Mais il est très souvent possible d'émuler ces events à grand coup de logique, timers ,tests, debugs et patience en se basant sur les event déjà existant, c'est ce que j'ai fait pour détecter les échanges de ressources entre joueurs |
Mais pour ça il faut que quand l'unité reçoit l'ordre de poser un objet, un évènement soit déclenché, or je ne trouve pas un tel évènement. _________________
|
|
Revenir en haut |
|
|
Troll-Brain Ri1kamoua
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...)
|
|
Revenir en haut |
|
|
Max Floodeur prématuré
Inscrit le: 13 Jan 2009 Messages: 550 Sujets: 47 Spécialité en worldedit: La partie déclencheurs sauf le GUI.
|
Posté le: 18/07/09 15:46 Sujet du message: |
|
|
Troll-Brain a écrit: | DROP , comme je l'ai dit se déclenche quand une unité perd un objet de quelque façon que ce soit. |
Oui mais cet évènement ne m'intéresse pas. L'unité reçoit l'ordre de poser l'item (1), va vers l'endroit cliqué (2), pose l'item (3). L'évènement EVENT_UNIT_DROP_ITEM ne survient qu'à l'étape 3. Moi j'aimerais un évènement pour l'étape 1, mais je crois qu'il n'existe pas, comme s'il avait été oublié. En tous cas ça n'entre pas dans l'évènement ordre avec point pour cible (mais logiquement ça devrait être le cas).
Troll-Brain a écrit: | Mais il est très souvent possible d'émuler ces events à grand coup de logique, timers ,tests, debugs et patience en se basant sur les event déjà existant, c'est ce que j'ai fait pour détecter les échanges de ressources entre joueurs |
Je ne vois vraiment pas de moyen d'émuler un tel event... La seule chose que je vois c'est que l'unité se déplace sans "avoir reçu d'ordre avec cible" (d'après les event existants)... Et de toute façon si on se basait là-dessus il serait déja trop tard car l'unité aurait commencé à bouger. _________________
|
|
Revenir en haut |
|
|
Troll-Brain Ri1kamoua
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: 18/07/09 16:17 Sujet du message: |
|
|
Ah autant pour moi, je croyais que tu voulais détecter quand l'unité pose l'objet sur le sol, et non reçoit l'ordre de la faire, j'avais mal lu la question.
Eh oui comme tu dis aussi étrange que cela puisse paraitre aucun ordre n'est détecté quand une unité reçoit l'ordre de poser un objet sur le sol.
Par contre il semblerait que détecter l'ordre courant de l'unité fonctionne, et comme dans le cas particulier d'un slide, tu utilises déjà des timers à faible période tu pourrais rajouter cette vérification, en espérant que l'intervalle de temps soit suffisant pour empêcher le drop, ce qui me semble être une hypothèse de départ tout à fait raisonnable.
Mais cela ne devrait pas empêcher comme tu dis "l'unité de commencer à bouger", bien que cela ne devrait pas être humainement perceptible. _________________
|
|
Revenir en haut |
|
|
Max Floodeur prématuré
Inscrit le: 13 Jan 2009 Messages: 550 Sujets: 47 Spécialité en worldedit: La partie déclencheurs sauf le GUI.
|
Posté le: 18/07/09 17:12 Sujet du message: |
|
|
Troll-Brain a écrit: | Par contre il semblerait que détecter l'ordre courant de l'unité fonctionne |
Ah oui en effet, et l'ordre ici est "dropitem". Je ne connaissais pas ce moyen de détecter l'ordre "courant" d'une unité. Ca va m'être très pratique pour corriger un certain bug... (celui où les monstres s'arrêtent de patrouiller dans les escapes -> au lieu de m'embêter à comparer les positions successives de chaque monstre pour détecter s'il s'est arrêté, je n'ai plus qu'à voir si ces monstres ont toujours un ordre en cours )
Troll-Brain a écrit: | et comme dans le cas particulier d'un slide, tu utilises déjà des timers à faible période tu pourrais rajouter cette vérification, en espérant que l'intervalle de temps soit suffisant pour empêcher le drop, ce qui me semble être une hypothèse de départ tout à fait raisonnable.
Mais cela ne devrait pas empêcher comme tu dis "l'unité de commencer à bouger", bien que cela ne devrait pas être humainement perceptible. |
Le déplacement ne serait pas humainement perceptible mais...
Dans le cas de slide sans pouvoir tourner comme on le voit dans de nombreuses cartes, cela créerait un bug : si l'on donnerait l'ordre à son héros de poser un objet pendant qu'il slide, il aurait au plus un centième de seconde pour bouger (dans le cas d'une période de 0.01 s). On n'aurait pas le temps de le voir bouger, mais quelquefois il tournerait légèrement vers le point cliqué. C'est un bug que j'ai repéré au départ dans Polar Escape 3 : dans les moments où on n'était pas censé pouvoir tourner, mass clic droit permettait de tourner souvent très très bien (déclo de slide utilisant SetUnitPositionLoc mais ordre non annulé lors d'un clic droit).
Je viens de trouver au passage un bug exploitable probablement dans certaines cartes (je pense à une en particulier ^^). Dans les moments où on ne peut pas tourner (avec la sécurité de l'annulation de l'ordre), on devrait toujours pouvoir y arriver si on a un item sur soi. Cependant je ne connais pas de moyen plus rapide de poser un objet que de faire un clic droit dessus puis clic gauche sur la carte (dur de mass clic comme ça ). _________________
|
|
Revenir en haut |
|
|
Max Floodeur prématuré
Inscrit le: 13 Jan 2009 Messages: 550 Sujets: 47 Spécialité en worldedit: La partie déclencheurs sauf le GUI.
|
Posté le: 18/07/09 17:22 Sujet du message: |
|
|
Enfin bref, corriger le bug de ma map avec l'aide de la fonction SetUnitDroppable a été très rapide, simple et efficace. _________________
|
|
Revenir en haut |
|
|
Troll-Brain Ri1kamoua
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: 18/07/09 18:40 Sujet du message: |
|
|
Citation: | Ca va m'être très pratique pour corriger un certain bug... (celui où les monstres s'arrêtent de patrouiller dans les escapes -> au lieu de m'embêter à comparer les positions successives de chaque monstre pour détecter s'il s'est arrêté, je n'ai plus qu'à voir si ces monstres ont toujours un ordre en cours Cool ) |
Lier à l'unité sa position de départ et d'arrivée, ok.
Détecter quand l'unité cesse de patrouiller, ok.
Mais comment fais tu pour qu'elle reprenne sa patrouille de là où elle se trouve mais qu'elle patrouille du point de départ au point d'arrivée ?
A moins que l'unité s'arrête toujours aux environs d'une de ces 2 coordonnées ? _________________
|
|
Revenir en haut |
|
|
Max Floodeur prématuré
Inscrit le: 13 Jan 2009 Messages: 550 Sujets: 47 Spécialité en worldedit: La partie déclencheurs sauf le GUI.
|
Posté le: 18/07/09 21:39 Sujet du message: |
|
|
L'unité s'arrête toujours à l'un des deux points de la patrouille. Peut-être toujours celui de départ ou celui de fin, j'ai besoin de faire plus de tests pour être fixé. (edit : c l'un ou l'autre des deux points)
Autrement, je me contente de supprimer l'unité, la recréer, et la faire patrouiller. Dès qu'un mob s'arrêtera, on le remarquera. J'ai mis une période de vérification de 4 secondes, donc un mob sera arrêté au maximum 4 s. Je pourrais mettre une période plus faible mais je ne suis pas sûr que ça ait une utilité. Ca n'est à priori pas grave qu'on ait cette petite pause dans les patrouilles car que les mobs s'arrêtent, ça n'arrive pas très souvent. Par contre c'est vrai que si le mob se recrée juste devant un joueur, ça peut déstabiliser voire tuer... _________________
|
|
Revenir en haut |
|
|
|