Voir le sujet précédent :: Voir le sujet suivant |
Auteur |
Message |
Zed Membre récent
Inscrit le: 11 Nov 2007 Messages: 78 Sujets: 6
|
Posté le: 12/02/08 18:01 Sujet du message: |
|
|
Non, toujours pareil. _________________
|
|
Revenir en haut |
|
|
Zed Membre récent
Inscrit le: 11 Nov 2007 Messages: 78 Sujets: 6
|
Posté le: 12/02/08 19:47 Sujet du message: |
|
|
Ca y est le problème est localisé: Il se cache dans les déclencheurs relatifs aux héros. Maintenant, reste à trouver le(s)quel(s)...
Ca y est, trouvé: c'est Mishra.
C'est lui qui a le sort en jass. Plus que quelques déclencheurs à tester !
Edit: c'est bien le sort utilisant le jass qui leak. _________________
|
|
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 |
|
|
Zed Membre récent
Inscrit le: 11 Nov 2007 Messages: 78 Sujets: 6
|
Posté le: 12/02/08 20:42 Sujet du message: |
|
|
Le sort comprend plusieurs déclencheurs et n'est pas de moi.
Number1(en gui)
Citation: | Jump
Evénements
Unité - A unit Initie l'effet d'une compétence
Conditions
Or - Any (Conditions) are true
Conditions
(Ability being cast) Egal à Rage Phyrexiane
(Ability being cast) Egal à Saut
(Ability being cast) Egal à Saut puissant
Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
Si - Conditions
(Level of (Ability being cast) for (Triggering unit)) Egal à 1
Alors - Actions
Set JumpInjurDmg = 50.00
Sinon - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
Si - Conditions
(Level of (Ability being cast) for (Triggering unit)) Egal à 2
Alors - Actions
Set JumpInjurDmg = 70.00
Sinon - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
Si - Conditions
(Level of (Ability being cast) for (Triggering unit)) Egal à 3
Alors - Actions
Set JumpInjurDmg = 85.00
Sinon - Actions
Set JumperLoc = (Position of (Triggering unit))
Set Jumper[(Player number of (Owner of (Triggering unit)))] = (Triggering unit)
Set JumperLandingLoc = (Target point of ability being cast)
Set JumpDirection = (Angle from JumperLoc to JumperLandingLoc)
Set JumpX = 0.00
Set JumpY = 0.00
Set JumpRotate = (Facing of Jumper[(Player number of (Owner of (Triggering unit)))])
Set JumpK = 900.00
Set JumpTheta = (90.00 - ((Asin(((Distance between JumperLoc and JumperLandingLoc) / JumpK))) / 2.00))
Animation - Change Jumper[(Player number of (Owner of (Triggering unit)))] turn speed to 1.00
Unité - Turn collision for Jumper[(Player number of (Owner of (Triggering unit)))] Off
Unité - Add Fly Height Trick to Jumper[(Player number of (Owner of (Triggering unit)))]
Unité - Remove Fly Height Trick from Jumper[(Player number of (Owner of (Triggering unit)))]
Unité - Pause Jumper[(Player number of (Owner of (Triggering unit)))]
Animation - Change Jumper[(Player number of (Owner of (Triggering unit)))]'s animation speed to 180.00% of its original speed
Déclencheur - Turn on JumpFX <gen>
Déclencheur - Turn on JumpMove1 Copier <gen>
Wait 0.25 game-time seconds
Déclencheur - Turn off JumpMove1 Copier <gen>
Déclencheur - Turn on JumpMove2 Copier <gen>
Wait 0.25 game-time seconds
Déclencheur - Turn off JumpMove2 Copier <gen>
If ((Jumper[(Player number of (Owner of (Triggering unit)))] is dead) Egal à TRUE) then do (Skip remaining actions) else do (Do nothing)
Déclencheur - Turn on JumpMove3 Copier <gen>
Animation - Change Jumper[(Player number of (Owner of (Triggering unit)))]'s animation speed to 250.00% of its original speed
Animation - Play Jumper[(Player number of (Owner of (Triggering unit)))]'s spell slam animation
Wait 0.20 game-time seconds
Animation - Change Jumper[(Player number of (Owner of (Triggering unit)))]'s animation speed to 35.00% of its original speed
Déclencheur - Turn off JumpMove3 Copier <gen>
Unité - Create 1 Piege MISHRAAAAA for (Owner of Jumper[(Player number of (Owner of (Triggering unit)))]) at JumperLandingLoc facing Orientation bâtiment par défaut degrees
Unité - Set level of Choc martial for (Last created unit) to (Level of Rage Phyrexiane for (Triggering unit))
Unité - Order (Last created unit) to Chef Tauren Orc - Choc martial
Effet spécial - Create a special effect at JumperLandingLoc using Abilities\Spells\Orc\WarStomp\WarStompCaster.mdl
Déclencheur - Turn off JumpFX <gen>
Unité - Reprendre Jumper[(Player number of (Owner of (Triggering unit)))]
Unité - Turn collision for Jumper[(Player number of (Owner of (Triggering unit)))] On
Unité - Cause (Triggering unit) to damage (Triggering unit), dealing JumpInjurDmg damage of attack type Normal and damage type Normal
Unité - Add a 3.00 second Générique expiration timer to (Last created unit)
Animation - Change Jumper[(Player number of (Owner of (Triggering unit)))] turn speed to 0.40
Wait 2.00 game-time seconds
Animation - Change Jumper[(Player number of (Owner of (Triggering unit)))]'s animation speed to 100.00% of its original speed
Animation - Reset Jumper[(Player number of (Owner of (Triggering unit)))]'s animation
|
Number2(gui)
Citation: | JumpMove1 Copier
Evénements
Temps - Every 0.01 seconds of game time
Conditions
Actions
Set JumpX = (JumpX + ((Distance between JumperLoc and JumperLandingLoc) / 75.00))
Set JumpY = ((JumpX x (Tan(JumpTheta))) - ((Power(JumpX, 2.00)) / ((2.00 x JumpK) x (Power((Cos(JumpTheta)), 2.00)))))
Unité - Move Jumper[(Player number of (Owner of (Triggering unit)))] instantly to (JumperLoc offset by JumpX towards JumpDirection degrees)
Animation - Change Jumper[(Player number of (Owner of (Triggering unit)))] flying height to JumpY at 10000.00
|
Number3(gui)
Citation: | JumpMove1 Copier
Evénements
Temps - Every 0.01 seconds of game time
Conditions
Actions
Set JumpX = (JumpX + ((Distance between JumperLoc and JumperLandingLoc) / 75.00))
Set JumpY = ((JumpX x (Tan(JumpTheta))) - ((Power(JumpX, 2.00)) / ((2.00 x JumpK) x (Power((Cos(JumpTheta)), 2.00)))))
Unité - Move Jumper[(Player number of (Owner of (Triggering unit)))] instantly to (JumperLoc offset by JumpX towards JumpDirection degrees)
Animation - Change Jumper[(Player number of (Owner of (Triggering unit)))] flying height to JumpY at 10000.00
|
Number4(gui)
Citation: | JumpMove1 Copier
Evénements
Temps - Every 0.01 seconds of game time
Conditions
Actions
Set JumpX = (JumpX + ((Distance between JumperLoc and JumperLandingLoc) / 75.00))
Set JumpY = ((JumpX x (Tan(JumpTheta))) - ((Power(JumpX, 2.00)) / ((2.00 x JumpK) x (Power((Cos(JumpTheta)), 2.00)))))
Unité - Move Jumper[(Player number of (Owner of (Triggering unit)))] instantly to (JumperLoc offset by JumpX towards JumpDirection degrees)
Animation - Change Jumper[(Player number of (Owner of (Triggering unit)))] flying height to JumpY at 10000.00
|
Number5
Citation: | function Trig_JumpFX_Actions takes nothing returns nothing
local effect JumpFX
call AddSpecialEffectTargetUnitBJ( "origin", udg_Jumper[GetConvertedPlayerId(GetOwningPlayer(GetTriggerUnit()))], "Objects\\Spawnmodels\\Undead\\ImpaleTargetDust\\ImpaleTargetDust.mdl" )
call DestroyEffectBJ(JumpFX)
endfunction
//===========================================================================
function InitTrig_JumpFX takes nothing returns nothing
set gg_trg_JumpFX = CreateTrigger( )
call TriggerRegisterTimerEventPeriodic( gg_trg_JumpFX, 0.10 )
call TriggerAddAction( gg_trg_JumpFX, function Trig_JumpFX_Actions )
endfunction
|
Note: les triggers 2 à 4 sont désactivés en temps normal. _________________
|
|
Revenir en haut |
|
|
Keitaro_Ura Floodozaurus
Inscrit le: 21 Aoû 2007 Messages: 2073 Sujets: 38 Spécialité en worldedit: Oui Médailles: 1 (En savoir plus...)
|
Posté le: 12/02/08 21:24 Sujet du message: |
|
|
Tu pourrais utiliser les balises gui cela serait plus lisible stp. _________________
|
|
Revenir en haut |
|
|
Ayane Bot administrateur
Inscrit le: 17 Sep 2007 Messages: 2009 Sujets: 49
Médailles: 2 (En savoir plus...)
|
Posté le: 12/02/08 22:44 Sujet du message: |
|
|
Number1: Créer des points, les utilise dans d'autrs déclencheurs mais ne les supprime jamais.
Number 2,3,4: Identiques, vérifie ton copier/coller. Néanmoins le code est très mal fait dans le sens où il est très lourd en utilisant des fonctions mathématiques lourdes. Exemple:
Power(a, 2) se simplifi en a * a.
Tan, Cos ou Sin de Alpha sont encore plus lourdes et sont constantes, elles peuvent donc être calculés dans Number1.
Si je ne me trompe pas c'est Change Unit Flying Height to hauteur at temps, hors ici temps vaut 10000 ... normalement il devrait y avoir 0.
Pour l'événement 0.03 suffit amplement.
Number5:
Cela:
- déclare un effet spécial,
- créer un effet spécial
- Détruit l'effet déclaré
Mais n'affecte pas l'effet spécial à la variable. Cela peut te créer une erreur critique car la variable pointe sur une valeur aléatoire (donc peut pointer en dehors de la mémoire allouée).
Il faut le remplacer par
Jass: |
call DestroyEffect(AddSpecialEffectTargetUnitBJ( "origin", udg_Jumper[GetConvertedPlayerId(GetOwningPlayer(GetTriggerUnit()))], "Objects\\Spawnmodels\\Undead\\ImpaleTargetDust\\ImpaleTargetDust.mdl" )) |
_________________
Dernière édition par Ayane le 12/02/08 23:55; édité 1 fois |
|
Revenir en haut |
|
|
Darkfeyt Floodeur prématuré
Inscrit le: 22 Nov 2007 Messages: 677 Sujets: 27 Spécialité en worldedit: Jamais sortir ses projets ?
|
|
Revenir en haut |
|
|
Zed Membre récent
Inscrit le: 11 Nov 2007 Messages: 78 Sujets: 6
|
Posté le: 13/02/08 17:54 Sujet du message: |
|
|
Merci, je vais essayer.
Par contre, je ne comprend pas:
En exportant dans une autre map les déclencheurs qui posent problème, il n'y a aucun leak...
Ce se peut que des déclencheurs entrent en conflit ? _________________
|
|
Revenir en haut |
|
|
Zed Membre récent
Inscrit le: 11 Nov 2007 Messages: 78 Sujets: 6
|
Posté le: 13/02/08 18:09 Sujet du message: |
|
|
MERCI AYANE !!
Ca ne leak plus !! _________________
|
|
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: 13/02/08 21:09 Sujet du message: |
|
|
j'ai essayé de remplacer les fonction Cos et Sin par leur équivalent.
angle alpha entre un point A et B
Code: | X = Delta Y / Delta X = (Ya-Yb)/(Xa-Xb)
cos (alpha) = 1/SquareRoot(1+X*X)
sin (alpha) = X/SquareRoot(1+X*X) |
Mais cette solution est plus lente que d'utiliser la fonction Cos, au lieu de SquareRoot j'au essayé Pow avec une puissance 0.5, le résultat était similaire _________________
Le violet, c'est moche. |
|
Revenir en haut |
|
|
Ayane Bot administrateur
Inscrit le: 17 Sep 2007 Messages: 2009 Sujets: 49
Médailles: 2 (En savoir plus...)
|
Posté le: 13/02/08 22:35 Sujet du message: |
|
|
Oui car racine carré ou la puissance sont des fonctions tout aussi lourdes si ce n'est plus que cos et sin.
Dans les jeux-vidéos lorsque l'on veut optimiser cos et sin on les recréer à l'initialisation en faisant un tableau de valeurs avec une précision donné, la fonction n'as plus qu'à trouvé la valeur la plus proche de l'angle et à retourner la valeur. Les résultats sont moins précis mais le cos et sin ne sont plus qu'une lecture mémoire.
Je proposais de calculer avant son périodique, car son alpha est une constante, donc le résultat est constant. _________________
|
|
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: 13/02/08 22:45 Sujet du message: |
|
|
Ayane a écrit: | Oui car racine carré ou la puissance sont des fonctions tout aussi lourdes si ce n'est plus que cos et sin.
Dans les jeux-vidéos lorsque l'on veut optimiser cos et sin on les recréer à l'initialisation en faisant un tableau de valeurs avec une précision donné, la fonction n'as plus qu'à trouvé la valeur la plus proche de l'angle et à retourner la valeur. Les résultats sont moins précis mais le cos et sin ne sont plus qu'une lecture mémoire.
Je proposais de calculer avant son périodique, car son alpha est une constante, donc le résultat est constant. |
Oui oui j'avais compris, je faisais juste part de mon test que j'avais déjà effectué pour mon système, c'est plus lent que d'utiliser simplement Cos
Par contre ton histoire de tableau, tu crois que ca vaut le coup pour warcraft ?
Je vois l'idée mais pas trop sa mise en place, un petit exemple peut être ? _________________
Le violet, c'est moche. |
|
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 |
|
|
Ayane Bot administrateur
Inscrit le: 17 Sep 2007 Messages: 2009 Sujets: 49
Médailles: 2 (En savoir plus...)
|
Posté le: 14/02/08 19:24 Sujet du message: |
|
|
C'est bien cela le principe, tu as bien une boucle dans l'init, par contre on en a pas dans le GetCos. _________________
|
|
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 |
|
|
|