Ajuda para descobrir o que esta gerando Leaks?
3 participantes
TeaM KingS :: Games: :: Warcraft: World Editor :: ::
Página 1 de 1
Ajuda para descobrir o que esta gerando Leaks?
Seguinte: Fiz essa trigger pra ser um Knock Back(MUI). Bom, funciona...
Já li vários tutoriais explicando sobre leaks e como remove-los e tal, mas alguma coisa eu deixei passar.
O ponto é que se a condição for true, gera leak. Como eu sei? bom, eu monitoro a memoria utilizada no warcraft enquanto o mapa ta rodando, e ele fica aumentando o uso de memoria constantemente enquanto a trigger esta ligada. Quando ela desliga, o aumento para, mas também não diminui a memoria utilizada.
Enfim, se puderem me ajudar, serei GRATO!
Obrigado desde já.
Já li vários tutoriais explicando sobre leaks e como remove-los e tal, mas alguma coisa eu deixei passar.
O ponto é que se a condição for true, gera leak. Como eu sei? bom, eu monitoro a memoria utilizada no warcraft enquanto o mapa ta rodando, e ele fica aumentando o uso de memoria constantemente enquanto a trigger esta ligada. Quando ela desliga, o aumento para, mas também não diminui a memoria utilizada.
Enfim, se puderem me ajudar, serei GRATO!
Obrigado desde já.
- Código:
MoveBullets1
Events
Time - Every 0.03 seconds of game time
Conditions
Actions
For each (Integer Bullets1_MUI_Loop) from 0 to Bullets1_MUI, do (Actions)
Loop - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
Bullets1_on[Bullets1_MUI_Loop] Equal to True
Then - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Unit-type of Bullets1_Unit[Bullets1_MUI_Loop]) Equal to FollowerMissileDummyUnit
Then - Actions
Set Bullets1_BulletCurrentPoint[Bullets1_MUI_Loop] = (Position of Bullets1_Unit[Bullets1_MUI_Loop])
Set TempPoint4Bullet1 = (Bullets1_BulletCurrentPoint[Bullets1_MUI_Loop] offset by 20.00 towards (Angle from Bullets1_BulletCurrentPoint[Bullets1_MUI_Loop] to (Position of Follower_TargetUnit[Bullets1_MUI_Loop])) degrees)
Unit - Move Bullets1_Unit[Bullets1_MUI_Loop] instantly to TempPoint4Bullet1, facing (Angle from Bullets1_BulletCurrentPoint[Bullets1_MUI_Loop] to (Position of Follower_TargetUnit[Bullets1_MUI_Loop])) degrees
Custom script: call RemoveLocation(udg_TempPoint4Bullet1)
Custom script: call RemoveLocation(udg_Bullets1_BulletCurrentPoint[udg_Bullets1_MUI_Loop])
Else - Actions
Set Bullets1_BulletCurrentPoint[Bullets1_MUI_Loop] = (Position of Bullets1_Unit[Bullets1_MUI_Loop])
Set TempPoint4Bullet1 = (Bullets1_BulletCurrentPoint[Bullets1_MUI_Loop] offset by 35.00 towards (Facing of Bullets1_Unit[Bullets1_MUI_Loop]) degrees)
Unit - Move Bullets1_Unit[Bullets1_MUI_Loop] instantly to TempPoint4Bullet1
Custom script: call RemoveLocation(udg_TempPoint4Bullet1)
Custom script: call RemoveLocation(udg_Bullets1_BulletCurrentPoint[udg_Bullets1_MUI_Loop])
Set Bullets1_BulletUnitPoint[Bullets1_MUI_Loop] = (Position of Bullets1_Unit[Bullets1_MUI_Loop])
Destructible - Pick every destructible within 100.00 of Bullets1_BulletUnitPoint[Bullets1_MUI_Loop] and do (Actions)
Loop - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
((Picked destructible) is alive) Equal to True
Or - Any (Conditions) are true
Conditions
(Destructible-type of (Picked destructible)) Equal to Rock Chunks
Then - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Unit-type of Bullets1_Unit[Bullets1_MUI_Loop]) Equal to DestructibleDummyUnit
Then - Actions
Destructible - Set life of (Picked destructible) to ((Current life of (Picked destructible)) - 50.00)
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Unit-type of Bullets1_Unit[Bullets1_MUI_Loop]) Equal to ThorDummyUnit
Then - Actions
Custom script: call RemoveLocation(udg_Bullets1_BulletUnitPoint[udg_Bullets1_MUI_Loop])
Set Bullets1_BulletUnitPoint[Bullets1_MUI_Loop] = (Position of Bullets1_Unit[Bullets1_MUI_Loop])
Unit - Cause Bullets1_Caster_Unit[Bullets1_MUI_Loop] to damage circular area after 0.00 seconds of radius 200.00 at Bullets1_BulletUnitPoint[Bullets1_MUI_Loop], dealing 100.00 damage of attack type Spells and damage type Fire
Unit - Explode Bullets1_Unit[Bullets1_MUI_Loop]
Custom script: call RemoveLocation(udg_Bullets1_BulletUnitPoint[udg_Bullets1_MUI_Loop])
Custom script: call RemoveLocation(udg_Bullets1_CastPoint[udg_Bullets1_MUI_Loop])
Custom script: call RemoveLocation(udg_Bullets1_CasterPoint[udg_Bullets1_MUI_Loop])
Set Bullets1_MUI_Index = (Bullets1_MUI_Index - 1)
Set Bullets1_on[Bullets1_MUI_Loop] = False
Else - Actions
Custom script: call RemoveLocation(udg_Bullets1_BulletUnitPoint[udg_Bullets1_MUI_Loop])
Set Bullets1_BulletUnitPoint[Bullets1_MUI_Loop] = (Position of Bullets1_Unit[Bullets1_MUI_Loop])
Unit - Cause Bullets1_Caster_Unit[Bullets1_MUI_Loop] to damage circular area after 0.00 seconds of radius 85.00 at Bullets1_BulletUnitPoint[Bullets1_MUI_Loop], dealing 100.00 damage of attack type Spells and damage type Fire
Unit - Explode Bullets1_Unit[Bullets1_MUI_Loop]
Custom script: call RemoveLocation(udg_Bullets1_BulletUnitPoint[udg_Bullets1_MUI_Loop])
Custom script: call RemoveLocation(udg_Bullets1_CastPoint[udg_Bullets1_MUI_Loop])
Custom script: call RemoveLocation(udg_Bullets1_CasterPoint[udg_Bullets1_MUI_Loop])
Set Bullets1_MUI_Index = (Bullets1_MUI_Index - 1)
Set Bullets1_on[Bullets1_MUI_Loop] = False
Else - Actions
Custom script: call RemoveLocation(udg_Bullets1_BulletUnitPoint[udg_Bullets1_MUI_Loop])
Set Bullets1_UnitGroup[Bullets1_MUI_Loop] = (Units within 80.00 of (Position of Bullets1_Unit[Bullets1_MUI_Loop]))
Unit Group - Pick every unit in Bullets1_UnitGroup[Bullets1_MUI_Loop] and do (Actions)
Loop - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Picked unit) Not equal to Bullets1_Unit[Bullets1_MUI_Loop]
((Picked unit) is alive) Equal to True
Or - Any (Conditions) are true
Conditions
((Picked unit) belongs to an ally of (Owner of Bullets1_Caster_Unit[Bullets1_MUI_Loop])) Equal to False
((Picked unit) belongs to an enemy of (Owner of Bullets1_Caster_Unit[Bullets1_MUI_Loop])) Equal to True
(Owner of (Picked unit)) Equal to Neutral Passive
(Unit-type of (Picked unit)) Equal to PowderKegDummyUnit
(Unit-type of (Picked unit)) Equal to PowderKeg2DummyUnit
Then - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Unit-type of Bullets1_Unit[Bullets1_MUI_Loop]) Equal to ThorDummyUnit
Then - Actions
Set Bullets1_BulletUnitPoint[Bullets1_MUI_Loop] = (Position of Bullets1_Unit[Bullets1_MUI_Loop])
Unit - Cause Bullets1_Caster_Unit[Bullets1_MUI_Loop] to damage circular area after 0.00 seconds of radius 200.00 at Bullets1_BulletUnitPoint[Bullets1_MUI_Loop], dealing 100.00 damage of attack type Spells and damage type Fire
Unit - Explode Bullets1_Unit[Bullets1_MUI_Loop]
Custom script: call RemoveLocation(udg_Bullets1_BulletUnitPoint[udg_Bullets1_MUI_Loop])
Custom script: call RemoveLocation(udg_Bullets1_CastPoint[udg_Bullets1_MUI_Loop])
Custom script: call RemoveLocation(udg_Bullets1_CasterPoint[udg_Bullets1_MUI_Loop])
Custom script: call DestroyGroup(udg_Bullets1_UnitGroup[udg_Bullets1_MUI_Loop])
Set Bullets1_MUI_Index = (Bullets1_MUI_Index - 1)
Set Bullets1_on[Bullets1_MUI_Loop] = False
Else - Actions
Set Bullets1_BulletUnitPoint[Bullets1_MUI_Loop] = (Position of Bullets1_Unit[Bullets1_MUI_Loop])
Unit - Cause Bullets1_Caster_Unit[Bullets1_MUI_Loop] to damage circular area after 0.00 seconds of radius 100.00 at Bullets1_BulletUnitPoint[Bullets1_MUI_Loop], dealing 100.00 damage of attack type Spells and damage type Fire
Unit - Explode Bullets1_Unit[Bullets1_MUI_Loop]
Custom script: call RemoveLocation(udg_Bullets1_BulletUnitPoint[udg_Bullets1_MUI_Loop])
Custom script: call RemoveLocation(udg_Bullets1_CastPoint[udg_Bullets1_MUI_Loop])
Custom script: call RemoveLocation(udg_Bullets1_CasterPoint[udg_Bullets1_MUI_Loop])
Custom script: call DestroyGroup(udg_Bullets1_UnitGroup[udg_Bullets1_MUI_Loop])
Set Bullets1_MUI_Index = (Bullets1_MUI_Index - 1)
Set Bullets1_on[Bullets1_MUI_Loop] = False
Else - Actions
Custom script: call DestroyGroup(udg_Bullets1_UnitGroup[udg_Bullets1_MUI_Loop])
Set Bullets1_BulletUnitPoint[Bullets1_MUI_Loop] = (Position of Bullets1_Unit[Bullets1_MUI_Loop])
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Unit-type of Bullets1_Unit[Bullets1_MUI_Loop]) Equal to PowderKegDummyUnit
Then - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
Or - Any (Conditions) are true
Conditions
(Distance between Bullets1_BulletUnitPoint[Bullets1_MUI_Loop] and Bullets1_CastPoint[Bullets1_MUI_Loop]) Less than or equal to 25.00
((Playable map area) contains Bullets1_Unit[Bullets1_MUI_Loop]) Equal to False
Then - Actions
Custom script: call RemoveLocation(udg_Bullets1_BulletUnitPoint[udg_Bullets1_MUI_Loop])
Set Bullets1_BulletUnitPoint[Bullets1_MUI_Loop] = (Position of Bullets1_Unit[Bullets1_MUI_Loop])
Unit - Remove Bullets1_Unit[Bullets1_MUI_Loop] from the game
Unit - Create 1 PowderKeg2DummyUnit for (Owner of Bullets1_Caster_Unit[Bullets1_MUI_Loop]) at Bullets1_CastPoint[Bullets1_MUI_Loop] facing Default building facing degrees
Custom script: call RemoveLocation(udg_Bullets1_BulletUnitPoint[udg_Bullets1_MUI_Loop])
Custom script: call RemoveLocation(udg_Bullets1_CastPoint[udg_Bullets1_MUI_Loop])
Custom script: call RemoveLocation(udg_Bullets1_CasterPoint[udg_Bullets1_MUI_Loop])
Set Bullets1_MUI_Index = (Bullets1_MUI_Index - 1)
Set Bullets1_on[Bullets1_MUI_Loop] = False
Else - Actions
Custom script: call RemoveLocation(udg_Bullets1_BulletUnitPoint[udg_Bullets1_MUI_Loop])
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
Or - Any (Conditions) are true
Conditions
(Distance between Bullets1_CasterPoint[Bullets1_MUI_Loop] and Bullets1_BulletUnitPoint[Bullets1_MUI_Loop]) Greater than or equal to 1750.00
((Playable map area) contains Bullets1_Unit[Bullets1_MUI_Loop]) Equal to False
Then - Actions
Set Bullets1_BulletUnitPoint[Bullets1_MUI_Loop] = (Position of Bullets1_Unit[Bullets1_MUI_Loop])
Unit - Cause Bullets1_Caster_Unit[Bullets1_MUI_Loop] to damage circular area after 0.00 seconds of radius 75.00 at Bullets1_BulletUnitPoint[Bullets1_MUI_Loop], dealing 100.00 damage of attack type Spells and damage type Fire
Unit - Explode Bullets1_Unit[Bullets1_MUI_Loop]
Custom script: call RemoveLocation(udg_Bullets1_BulletUnitPoint[udg_Bullets1_MUI_Loop])
Custom script: call RemoveLocation(udg_Bullets1_CastPoint[udg_Bullets1_MUI_Loop])
Custom script: call RemoveLocation(udg_Bullets1_CasterPoint[udg_Bullets1_MUI_Loop])
Set Bullets1_MUI_Index = (Bullets1_MUI_Index - 1)
Set Bullets1_on[Bullets1_MUI_Loop] = False
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
Bullets1_MUI_Index Less than or equal to 0
Then - Actions
Set Bullets1_MUI = 0
Set Bullets1_MUI_Index = 0
Trigger - Turn off (This trigger)
Else - Actions
Game - Display to Player Group - Player 1 (Red) for 0.01 seconds the text: (((String(Bullets1_MUI)) + -MUI) + ((String(Bullets1_MUI_Index)) + -Index))
Else - Actions
YnB- Número de Posts : 13
Data de inscrição : 11/02/2014
Reputação : 1 Pontos : 19765
Re: Ajuda para descobrir o que esta gerando Leaks?
Seria bom, você postar um mapa com essa trigger, ou uma imagem. Ler tanta coisa assim é complicado pra ver leaks kk
Re: Ajuda para descobrir o que esta gerando Leaks?
Sim, percebi isso logo quando postei kasodkas
Então, posso fazer um mapa com a trigger e postar aqui, mas como que vcs postam os mapas? tem que hospedar em algum host externo ou da pra fazer por aqui?
Então, posso fazer um mapa com a trigger e postar aqui, mas como que vcs postam os mapas? tem que hospedar em algum host externo ou da pra fazer por aqui?
YnB- Número de Posts : 13
Data de inscrição : 11/02/2014
Reputação : 1 Pontos : 19765
Re: Ajuda para descobrir o que esta gerando Leaks?
Tenta pelo epic war, faz em um mapa separado quem sabe.
Re: Ajuda para descobrir o que esta gerando Leaks?
Ta aí entao, só um mapa zerado com a trigger: Test Map
YnB- Número de Posts : 13
Data de inscrição : 11/02/2014
Reputação : 1 Pontos : 19765
Re: Ajuda para descobrir o que esta gerando Leaks?
seguinte cara, uma coisa que eu vi, é que você setou a point e também removeu ela dentro de um If, não se se é pra ser assim. Até este ponto, deixei aceitável, porque eu não sei o que era pra fazer a princípio, mas dai eu vi uma erro. Você colocou Bullets1_Mui no For each ( Interger.... o que me intrigou, porque ali era pra ser Bullets1_Mui_Index e não outro. Tente arrumar isto e quem sabe melhora.
For each (Integer Bullets1_MUI_Loop) from 0 to Bullets1_MUI, do (Actions)
Loop - Actions
For each (Integer Bullets1_MUI_Loop) from 0 to Bullets1_MUI, do (Actions)
Loop - Actions
Re: Ajuda para descobrir o que esta gerando Leaks?
Valeu! Vou tentar quando tiver em casa, até!
YnB- Número de Posts : 13
Data de inscrição : 11/02/2014
Reputação : 1 Pontos : 19765
Re: Ajuda para descobrir o que esta gerando Leaks?
Law.Terro escreveu:Você colocou Bullets1_Mui no For each ( Interger.... o que me intrigou, porque ali era pra ser Bullets1_Mui_Index e não outro. Tente arrumar isto e quem sabe melhora.
For each (Integer Bullets1_MUI_Loop) from 0 to Bullets1_MUI, do (Actions)
Loop - Actions
Cara, não intendi direito..
Tipo, nao intendi o erro que voce falou...
Setei a variável Bullets1_MUI como se fosse o ID de cada spell castada.
Setei a variável Bullets1_MUI_Index como se fosse o contador de quantas spells estao ativas.
Usei a variável Bullets1_MUI_Loop como se fosse o IntegerA que percorre todos os Bullets1_MUI setados...
Tens como me explicar melhor onde eu errei exatamente e por que?
abraç.
YnB- Número de Posts : 13
Data de inscrição : 11/02/2014
Reputação : 1 Pontos : 19765
Re: Ajuda para descobrir o que esta gerando Leaks?
Olha, no MUI eu uso as variáveis, Index, Count e Loop. Na For each (Interger.... eu coloco MUI_Loop from 0 to MUI_Index ( onde a MUI_Index é aquela que a gente cita na primeira trigger de MUI_Index = MUI_Inder + 1 ) e então no final da trigger coloco MUI_Index = MUI_Index - 1 pra fechar a trigger. Se isso não foi o erro que eu vi, pode ser um erro de variável.
Re: Ajuda para descobrir o que esta gerando Leaks?
Mas assim não tah errado?
Porque tipo, se é MUI, e a spell continua por um tempo depois do cast, se vc usa "0 to MUI_Index", e, quando uma spell termina, vc seta MUI_Index=MUI_Index -1, a ultima spell castada irá parar antes do final. Porque voce diminuiu o tamanho do loop. Estou errado?
Porque tipo, se é MUI, e a spell continua por um tempo depois do cast, se vc usa "0 to MUI_Index", e, quando uma spell termina, vc seta MUI_Index=MUI_Index -1, a ultima spell castada irá parar antes do final. Porque voce diminuiu o tamanho do loop. Estou errado?
YnB- Número de Posts : 13
Data de inscrição : 11/02/2014
Reputação : 1 Pontos : 19765
Re: Ajuda para descobrir o que esta gerando Leaks?
Olha meu caro, eu não sei exatamente, até porque a trigger MUI no meu entendimento, precisa de algumas variáveis de funcionamento como a Index = Index +1 e a Count = Count +1.
O do seu jeito eu não estou familiarizado e eu acho que você me deu somente uma parte da trigger que é a Loop.
O do seu jeito eu não estou familiarizado e eu acho que você me deu somente uma parte da trigger que é a Loop.
Re: Ajuda para descobrir o que esta gerando Leaks?
"meu jeito" tem a Index = Index + 1 e Count = Count + 1, só que se vc reparar, só estão com nomes diferentes...
Eu testei e o MUI/Loop está funcionando, o problema mesmo é que essa trigger ta roubando memória e eu não consigo entender o porque.
Eu testei e o MUI/Loop está funcionando, o problema mesmo é que essa trigger ta roubando memória e eu não consigo entender o porque.
YnB- Número de Posts : 13
Data de inscrição : 11/02/2014
Reputação : 1 Pontos : 19765
Re: Ajuda para descobrir o que esta gerando Leaks?
Achei uma kk desculpa por não ter olhado direito, eu estava tentando terminar o trabalho e estava com muito sono.
Aqui, eu percebi que você não usou variáveis pra citar uma point como a do TargetUnit e isso pode causar leak. Outra coisa bastante importante, você não deve colocar a Call antes da variável, você deve posiciona-la depois de citar a variável para então que a point seja destruída só apos o uso dela. Entende?
Coloque a Call da point citada junto com as Call's depois do Move ou Create e antes do Boolean e do Index e teste.
Aqui, eu percebi que você não usou variáveis pra citar uma point como a do TargetUnit e isso pode causar leak. Outra coisa bastante importante, você não deve colocar a Call antes da variável, você deve posiciona-la depois de citar a variável para então que a point seja destruída só apos o uso dela. Entende?
Coloque a Call da point citada junto com as Call's depois do Move ou Create e antes do Boolean e do Index e teste.
Re: Ajuda para descobrir o que esta gerando Leaks?
Sim, a do TargetUnit eu tinha percebido também, mas ela nao tava sendo utilizada porque o Unit-Type da Bullet1_Unit era outro, entao a trigger nem chegava no target unit por causa do If, ou seja, nao é isso que ta gerando o leak...
Onde vc disse que usei o Call antes de setar a variavel, é porque eu usei a mesma variável antes, em outro point..(pelo menos era pra ser isso)
Onde vc disse que usei o Call antes de setar a variavel, é porque eu usei a mesma variável antes, em outro point..(pelo menos era pra ser isso)
YnB- Número de Posts : 13
Data de inscrição : 11/02/2014
Reputação : 1 Pontos : 19765
Re: Ajuda para descobrir o que esta gerando Leaks?
Usa o Leak Check v3....
Souljaboy- Número de Posts : 2
Data de inscrição : 24/06/2014
Reputação : 1 Pontos : 18995
Tópicos semelhantes
» Ajuda com Leaks!
» Ajuda leaks
» [ajuda] leaks
» ajuda para Terrain para um campanhe
» Ajuda com leaks
» Ajuda leaks
» [ajuda] leaks
» ajuda para Terrain para um campanhe
» Ajuda com leaks
TeaM KingS :: Games: :: Warcraft: World Editor :: ::
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos