Inscrit le: 21 Fév 2010 Messages: 1785 Sujets: 22 Spécialité en worldedit: La modestie Médailles: 1 (En savoir plus...)
Posté le: 07/08/10 15:55 Sujet du message:
Ha, tu veux dire comme ça?
Jass:
function CreateItem2 takes integer itemid, real x, real y returns item
set itemid = 'ajen'
return CreateItem(itemid,x,y)
endfunction
Dans ce cas, ça fait la même chose . Y'a que le prototype10 qui change :
Jass:
function sa___prototype10_CreateItem2 takes nothing returns boolean
local integer itemid=f__arg_integer1
local real x=f__arg_real1
local real y=f__arg_real2
set itemid='ajen'
set f__result_item= h__CreateItem(itemid, x, y)
return true
endfunction
En particulier, la fonction h__CreateItem ne change pas...
J'ai peur que ce soit rappé. Tant pis... faudra rajouter la remarque qu'il faut utiliser l'autre fonction ou la version qui ne déleake que les powerups. _________________
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: 07/08/10 16:01 Sujet du message:
Inutilisable si tu créés un objet en GUI
Le mieux serait de rechercher les occurrences de CreateItem dans le scrip final et des les remplacer par la fonction custom, comme le fait Vexo avec PolledWait et PolledWait2 avec wc3mapotpimizer.
Tu te sens chaud pour faire un add-on ? :p _________________
Inscrit le: 21 Fév 2010 Messages: 1785 Sujets: 22 Spécialité en worldedit: La modestie Médailles: 1 (En savoir plus...)
Posté le: 07/08/10 16:15 Sujet du message:
Hum, tu veux dire un add-on de jasshelper pour créer un hook qui remplacerait les instances dans le script final comme on veut? Je veux bien mais il faut le code source de jasshelper pour ça, non? Où on peut le trouver? _________________
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: 07/08/10 16:22 Sujet du message:
Le code source de jasshelper est disponible quand tu le télécharges, c'est du pascal.
Mais je parlais d'un add-on de grimoire, mais ne me demande rien à ce sujet je n'y connais strictement 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: 11/08/10 13:27 Sujet du message:
Haha, tu vas rire, Troll-Brain, mais y'a du nouveau sur les objets.
Il est tout bonnement impossible de détruire les objets s'ils sont morts .
Blizzard avait bien besoin de nous faire un coup comme ça. C'est sûr que c'était indispensable.
Lorsque tu détruis un objet qui est "mort", son modèle n'est plus affiché, ça règle donc le problème du lag. Mais l'handle existe toujours bel et bien.
Sinon, j'avais complétement oublié mais y'a une fonction Enum pour les items. On peut donc faire une fonction périodique qui prend tous les objets morts sur la map pour les détruire après. Perso, j'aime moins cette méthode (surtout qu'elle va enum les objets pseudo-détruits à chaque fois) mais elle elle a le mérite d'être utilisable par un GUI user.
EDIT : ouf, si on change la vie d'un objet sur plus de 0.405 après sa mort, on peut de nouveau le supprimer correctement.
J'ai modifié les fonctions en conséquence. _________________
Inscrit le: 21 Fév 2010 Messages: 1785 Sujets: 22 Spécialité en worldedit: La modestie Médailles: 1 (En savoir plus...)
Posté le: 25/08/10 18:58 Sujet du message:
Fiou, je viens de finir des tests sur les compétences des objets. Ça ouvre pas mal de portes puisque un objet un objet est censé n'avoir qu'une compétence active et que ça bug bien quand on en met d'autres.
En particulier, on peut :
montrer le message "Mana insuffisant" lorsqu'on valide la cible,
montrer une icône désactivée (Mana insuffisant) tout en pouvant lancer le sort quand même,
montrer un faux coût en mana,
lancer différents sorts selon la cible,
utiliser plusieurs cooldowns différents sur un même objet.
Inscrit le: 21 Fév 2010 Messages: 1785 Sujets: 22 Spécialité en worldedit: La modestie Médailles: 1 (En savoir plus...)
Posté le: 12/09/10 16:34 Sujet du message:
Hum, j'ai souvent vu que détruire des triggers pouvait faire crasher W3 (lorsqu'ils ont des actions). Mais jusqu'à présent, je détruisait plein de triggers sur ma map sans bug de ce côté là (j'en ai eu quelques uns récemment et je me dis que ça vient p-e de là).
Donc question : est-ce que quelqu'un pourrait m'expliquer comment et pourquoi détruire un trigger est mauvais? _________________
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: 10/10/10 11:52 Sujet du message:
J'ai remis en route mon JNGP pour un temps indéterminé (du moins pour ce week end), j'ai voulu testé ce que tu as dit pour les item.
Comme je le pensai c'est un problème de variable pointant sur un handle fantôme.
Essaye ceci :
Jass:
function func takes nothing returns nothing
call BJDebugMsg("aha")
endfunction
function test takes nothing returns nothing
call SetItemLifeBJ(udg_TheObjet,0.)
call RemoveItem(udg_TheObjet)
call EnumItemsInRect(GetWorldBounds(),null,function func)
endfunction
//===========================================================================
function InitTrig_testouille takes nothing returns nothing
set gg_trg_testouille = CreateTrigger( )
call TriggerRegisterTimerEventSingle( gg_trg_testouille, 2 )
call TriggerAddAction( gg_trg_testouille, function test )
endfunction
Ton objet est bien détruit, il n'est pas énuméré, et en effet donner de la vie après avoir tué l'item supprime les donnés tel que le type d'objet sur l'handle TheOjet.
Mais c'est juste une preuve de plus qu'il est préférable de nullifier un handle quand l'objet associé est détruit.
Concernant les destructions de trigger, il y a une corruption d'handle avérée quand on fait un peu n'importe quoi avec TriggerSleepAction.
http://www.wc3c.net/showpost.php?p=999565&postcount=31
Blizzard aussi n'utilise jamais DestroyTrigger, ce qui en soit ne veut pas dire grand chose mais peut rajouter à la paranoïa.
Ex les filtres des TriggerRegister clairement inachevés et non utilisés par blizzard.j.
Je crois (pas certain et la flemme de regarder le code) que Dota utilise les triggers dynamiques à la pelle, donc même si ca bug ca doit être rarissime.
De toute façon les actions de triggers et TriggerSleepAction c'est pour les n44b !
Go timers et conditions de triggers.
La seule utilité de TriggerSleepAction c'est que son décompte continue quand le jeu est en pause, et donc si tu veux mettre en pause, puis reprendre le jeu après un certain temps, t'es un peu obligé de l'utiliser.
Pour tes exploits de bugs je jetterais un oeil plus tard.
C'est dommage que tu ne te sois pas intéressé à l'éditeur quelques années auparavant _________________
Inscrit le: 21 Fév 2010 Messages: 1785 Sujets: 22 Spécialité en worldedit: La modestie Médailles: 1 (En savoir plus...)
Posté le: 10/10/10 13:55 Sujet du message:
Quand je test ton code, mon objet est bien énuméré (même en nullifiant la variable ou en rajoutant des waits, etc...).
Merci pour les destructions de triggers ; avec tous les cris d'hystéries que je lis sur THW par rapport à ça, j'avais l'impression que c'était un truc super handicapant ^^". En effet, DotA utilise les triggers dynamiques mais rajoute assez peu d'actions de triggers (en plus de ne pas mettre de waits de façon improbable). _________________
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: 10/10/10 15:48 Sujet du message:
Pour les triggers dynamiques hormis pour certains events, on peut utiliser des player unit event à la place, voir d'autres tricks.
Il est difficile d'expliquer un phénomène de foule, mais cela explique une partie du rejet massif de tels triggers.
Ça et probablement car des membres "éminents" sont contre une telle pratique, point de vue évidemment relayé par des personnes moins compétentes subjuguées mais complètement sans fondement.
Juste de bon perroquets sans cervelles.
Pour les item :
Ok au temps pour moi, je me suis trompé.
Je propose une solution vJass pour pallier à ce genre de problème, totalement transparente pour l'utilisateur qui ne doit pas s'en soucier mais 100 % usine à gaz :
Jass:
function RemoveItem2 takes item whichItem returns nothing
call SetWidgetLife(whichItem,1.)
endfunction
hook RemoveItem RemoveItem2
Pas testé, mais étant donné qu'un hook s'exécute juste avant la fonction hookée (et non Hooker), ca devrait fonctionner. _________________
Inscrit le: 21 Fév 2010 Messages: 1785 Sujets: 22 Spécialité en worldedit: La modestie Médailles: 1 (En savoir plus...)
Posté le: 16/10/10 10:04 Sujet du message:
Ouais, ça devrait marcher, mais j'ai posté une librairie qui résout (quasiment) tous les problèmes de remove d'objets, sans hook. Y'en a une autre sur THW qu'a fait Bribe et qui utilise TimerUtils à la place de la hashtable.
Je pensais l'avoir remplacé ici mais, finalement, je préfère ma librairie donc j'en laisse une trace quelque part . _________________
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: 17/10/10 13:49 Sujet du message:
Tirlititi a écrit:
Ouais, ça devrait marcher, mais j'ai posté une librairie qui résout (quasiment) tous les problèmes de remove d'objets, sans hook. Y'en a une autre sur THW qu'a fait Bribe et qui utilise TimerUtils à la place de la hashtable.
Je pensais l'avoir remplacé ici mais, finalement, je préfère ma librairie donc j'en laisse une trace quelque part .
Mouai, tu utilises une hashtable rien que pour cela et donc contribue à atteindre la limite des 256 hashtables simultanées au maximum, au lieu d'utiliser un système d'attachement de donnée à un timer ultra utilisé via la librairie TimerUtils (qui soit en dit en passant, la version bleu ne fait pas ce qu'elle dit, elle faillit si on atteint le nombre maximum de timer : QUANTITY )
De toute façon je ne suis vraiment pas fan de cette méthode, l'idéal serait de gérer au cas pas cas avec des hook (et surtout pas de fonction custom) et carrément de remove les item powerup dès leur mort, mais de jouer un effet spécial de leur mort.
Bien que cela nécessiterait bien trop d'outils à utiliser, ne serait ce que pour savoir combien de temps dure l'animation de mort et laquelle est ce pour chaque type d'objet.
Bien que c'est faisable ca serait l'uber ultra usine à gaz. _________________
La librairie sur les leaks objets me donne un message d'erreur sur cette ligne:
set ClearItems___CleanItemCode = Filter(function ClearItems___CleanItem)
Functions passed to filter or condition must return bo0lean
Il y a quelque chose à faire de particulié ou cette librairie est obsolète ? _________________
Toutes les heures sont au format GMT + 1 Heure Aller à la page Précédente1, 2, 3, 4, 5, 6Suivante
Page 3 sur 6
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