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: 22/07/10 12:58 Sujet du message: un peu de vJass |
|
|
Un petit truc que je ne pige pas en vJass :
La création d'une structure dans une fonction (local <structure> <nomStructure> = ...) ainsi que l'appel de méthodes de cette structure, ne semblent pas nécessiter que la déclaration de la structure soit faite avant la déclaration de la fonction (contrairement à un appel de fonction, nécessitant que la fonction ait été définie plus haut dans le code).
J'aimerais donc savoir pourquoi. Merci.
Autrement, un problème se pose à moi : je dispose d'une variable globale de type structure. Si la structure pointée par ma variable est détruite (via la méthode destroy), comment puis-je savoir ensuite que ma variable pointe vers une structure détruite ? _________________
|
|
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: 22/07/10 16:26 Sujet du message: |
|
|
Faudrait regarder le script généré mais je crois que tout simplement les struct allocator sont placés en haut du script.
Pour ton problème de destruction tu peux définir une method destroy/onDestroy et set un booléen, et gérer aussi ce booléen dans ta method create.
Mais logiquement si ton code est bien pensé tu devrais savoir quand c'est détruit.
Tu peux poster le code ? _________________
Le violet, c'est moche. |
|
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: 22/07/10 16:54 Sujet du message: |
|
|
J'avais justement pensé au booléen.
Il est un peu compliqué pour moi de poster le code (de plus, uniquement des bouts de mon code ne seraient pas simples à comprendre). Je vais essayer de l'expliquer plutôt :
J'ai une structure "Monstre" qui contient :
une unité, un type d'unité, les coordonnées des points de patrouille, la vitesse de l'unité, etc.
J'ai une autre structure destinée à créer des instances de "Monstre", nommée "MakeMonstre". Cette structure contient entre autres un tableau de "Monstre". Une méthode de cette structure permet de supprimer les instances de "Monstre" présentes dans le tableau.
Or, j'ai une autre structure nommée "MonstreArray" destiné à contenir tous les monstres créés (dans un tableau également). Lorsque je crée une nouvelle instance de "Monstre" via la structure "MakeMonstre", elle stocke l'instance à la fois dans le tableau de "MakeMonstre" et celui de "MonstreArray".
Le tableau de "MakeMonstre" a pour unique utilité de permettre d'annuler la création d'un monstre, ou de la refaire si elle a été annulée.
Une autre solution que l'utilisation d'un booléen serait, à la suppression de l'instance de "Monstre" via la méthode de "MakeMonstre", de trouver l'instance dans le tableau de "MonstreArray" et de mettre celle-ci à 0. Mais pour cela il faudrait parcourir tout le tableau, ce qui n'est pas terrible. _________________
|
|
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: 22/07/10 17:08 Sujet du message: |
|
|
Je suggère simplement l'utilisation de groups et lier la custom value de l'unité "monstre" à l'instance de la struct.
Dans ce cas il n'est plus nécessaire de créer/détruire des instances mais cela nécessite un système d'indexation. _________________
Le violet, c'est moche. |
|
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: 22/07/10 18:12 Sujet du message: |
|
|
J'ai effectivement lié la custom value de l'unité à l'instance de la struct. Mais je ne vois pas pourquoi il ne serait plus nécessaire de créer/détruire des instances. _________________
|
|
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: 22/07/10 18:19 Sujet du message: |
|
|
Max a écrit: | J'ai effectivement lié la custom value de l'unité à l'instance de la struct. Mais je ne vois pas pourquoi il ne serait plus nécessaire de créer/détruire des instances. |
Bah si tu utilises un indexer, chaque unité à une custom value unique, et donc techniquement tu ne dois pas créer/détruire une instance pour l'associer.
Après si vraiment tu as beaucoup d'unités tu peux te soucier du "destroy", mettre à zéro les variables toussa toussa.
Suis je clair ou confus ? _________________
Le violet, c'est moche. |
|
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: 22/07/10 18:49 Sujet du message: |
|
|
Non je ne comprends pas bien.
Je crois que c'est parce qu'il y a une chose que je ne t'ai pas dite : je pourrais me contenter de créer le monstre pendant le jeu (l'unité) et ne pas stocker toutes les informations associées telle que les coordonnées, le type de l'unité, la vitesse... Mais l'intérêt de ceci est de sauvegarder toutes les informations de tous les monstres créés pour pouvoir par la suite stocker toutes ces informations dans le gamecache et de les rebalancer dans la map sous forme de code jass (vJass). (--> mise en pratique de mon idée de créer la carte pendant le jeu)
Pour revenir à nos moutons, j'ai trouvé une autre solution. Je rajoute le champ "arrayId" à mon "Monstre" et dans la méthode onDestroy de cette structure, je mets à null (0) l'élément en question du tableau. _________________
|
|
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: 22/07/10 19:53 Sujet du message: |
|
|
Bouah j'ai la flemme de mieux expliquer, dsl.
Sinon je vois pas en quoi est ce une autre solution , t'utilises un integer au lieu d'un booléen.
Dans un autre langage que le jass ce devrait même être pire, mais comme en jass un booléen est codé sur autant de bit qu'un integer, ca n'a pas grande importance.
'fin c'est quand même plus logique d'utiliser un booléen. _________________
Le violet, c'est moche. |
|
Revenir en haut |
|
|
|