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/03/10 18:28 Sujet du message:
onCreate -> ce n'est pas propre au vJass, c'est utilisé par AutoIndex, Il faut impérativement placer cette méthode au dessus de "implement AutoCreate".
Pourquoi ?
Car les nomDeLaMethod.exists dans les static if ne vérifient que les method qui se trouvent au dessus de ces if, et non en dessous.
Ce fonctionnement des static if est plutôt chiant, mais d'un autre côté si les static if .exists pouvaient détecter les method situées en dessous il faudrait les .evaluate/.execute.
Ce qui serait pas mal, mais dans ce cas précis c'est inutile.
A noter que si tu appelles une method se trouvant en dessous de l'endroit où tu l'appelles, elle sera automatiquement .evaluate(), tu peux désactiver cette possibilité en rajoutant une ligne :
Code:
[forcemethodevaluate]
dans jasshelper.conf (situé à la racine du JNGP).
Personnellement je l'ai fait car j'ai horreur des .evaluate inutiles, je places mes fonctions dans l'ordre requis ou je stipule moi même qu'il faut les .evaluate() quand c'est nécessaire.
.evaluate/.execute permet d'ouvrir un nouveau thread (en gros un moyen de contourner le limit op), mais c'est plus lent qu'un simple call.
Vexorian désactive le .evaluate, si la method ainsi appelée se trouve au dessus, car il croyait que TriggerEvaluate n'ouvrait pas un nouveau thread, ce qui est faux, et aussi histoire d'améliorer le code des fainéasses impurs et incultes qui n'ont pas [forcemethodevaluate] d'activé.
C'est plutôt chiant car call > .evaluate > .execute > ExecuteFunc, en terme de rapidité.
Or même si on stipule soit même le .evaluate c'est ignoré si la méthode ainsi appelée se trouve en dessous ou encore est inliné.
Cette règle ne s'applique pas aux fonctions.
En fait je n'ai pas grand chose contre cette method elle a été bien codé, tu peux choisir de déclarer ou non ta propre method create.
C'est juste pour t'expliquer comment fonctionne le vJass.
onDestroy -> propre au vJass et là par contre c'est très chiant car c'est appelé à chaque appel de .deallocate, et comme AutoData utilise sa propre method destroy, tu ne peux pas déclarer la tienne car le vJass ne le supporte pas.
Tu peux parfois vouloir .deallocate une instance sans pour autant appeler la method onDestroy, et dans ce cas tu es obligé d'utiliser un booléen pour stopper l'appel de onDestroy avec un if dans la première ligne de code >< _________________
A propos je viens de remarquer qu'AutoIndex ne détecte pas, avec AutoCreate, les unités issues d'une amélioration d'unité.
Ca doit être lié à la mécanique de Warcraft, mais c'est marant, vu qu'en théorie un upgrade est fait pour changer l'unité (donc en créer une nouvelle, dans ma tête). _________________
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/03/10 22:40 Sujet du message:
Apocalypse a écrit:
Merci pour les informations.
A propos je viens de remarquer qu'AutoIndex ne détecte pas, avec AutoCreate, les unités issues d'une amélioration d'unité.
Ca doit être lié à la mécanique de Warcraft, mais c'est marant, vu qu'en théorie un upgrade est fait pour changer l'unité (donc en créer une nouvelle, dans ma tête).
Stoa le marrant, on en créé pas une nouvelle, on la transforme, comme avec une compétence de morph (avec ou sans cast). _________________
A propos je viens de remarquer qu'AutoIndex ne détecte pas, avec AutoCreate, les unités issues d'une amélioration d'unité.
Ca doit être lié à la mécanique de Warcraft, mais c'est marant, vu qu'en théorie un upgrade est fait pour changer l'unité (donc en créer une nouvelle, dans ma tête).
Stoa le marrant, on en créé pas une nouvelle, on la transforme, comme avec une compétence de morph (avec ou sans cast).
Bah c'est bête qu'il ne l'ait pas prévu dans sa library. Ca ne fait qu'un event de plus _________________
Toutes les heures sont au format GMT + 1 Heure Aller à la page Précédente1, 2, 3
Page 3 sur 3 La question posée dans ce topic a été résolue !
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