Сейчас 11:49:52 Пятница, 19 апреля, 2024 год
[ x ] Главная ⇒ Форум ⇐ RSS Файлы Cтатьи Картинки В о й т и   или   з а р е г и с т р и р о в а т ь с я


[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Модератор форума: PUVer, SirNikolas, Ty3uK  
Форум о Warcraft 3 » Раздел для картостроителей » Вопросы по картостроению » Утечки (Устранение утечек.)
Утечки
Q1wAseДата: Воскресенье, 27 Января 2013, 07:44:21 | Сообщение # 1
Группа: Проверенные
Сообщений: 1235
Награды: 0
Репутация: 286
Блокировки:
Уважаемые модераторы форуму. Существует ли программа которая показывает в игре нагрузку на память компьютера? Ну это и так видно если в карте много утечек и всё лагает. Если существует то скиньте ссылку плз. Хочу увидеть с какого момента начинаются лаги.



Сообщение отредактировал Q1wAse - Воскресенье, 27 Января 2013, 07:44:41
 

FaceringДата: Воскресенье, 27 Января 2013, 08:59:25 | Сообщение # 2
9 уровень
Группа: Проверенные
Сообщений: 842
Награды: 0
Репутация: 50
Блокировки:
Цитата (Q1wAse)
Уважаемые модераторы форуму. Существует ли программа которая показывает в игре нагрузку на память компьютера? Ну это и так видно если в карте много утечек и всё лагает. Если существует то скиньте ссылку плз. Хочу увидеть с какого момента начинаются лаги.
Ленивая Россия)) в том числе и я) такой программы нет насколько мне известно, тока ручками и желательно сразу.


Эх, береза..... мне бы столько почек.
 

ImpregnableДата: Воскресенье, 27 Января 2013, 08:59:47 | Сообщение # 3
6 уровень
Группа: Проверенные
Сообщений: 231
Награды: 0
Репутация: 92
Блокировки:
Task manager'а вполне хватает.

Если долго мучиться, то может,
все равно нихуя не получится.
 

Q1wAseДата: Воскресенье, 27 Января 2013, 09:04:40 | Сообщение # 4
Группа: Проверенные
Сообщений: 1235
Награды: 0
Репутация: 286
Блокировки:
Impregnable что что?

Цитата
Task manager'а вполне хватает.
Это и есть та прога?


 

FaceringДата: Воскресенье, 27 Января 2013, 09:09:15 | Сообщение # 5
9 уровень
Группа: Проверенные
Сообщений: 842
Награды: 0
Репутация: 50
Блокировки:
Цитата (Impregnable)
Task manager'а вполне хватает.
Это не то вообще он вроде имел, игровые утечки, а не конроль за всеми раб. прогами виндовса


Эх, береза..... мне бы столько почек.
 

ImpregnableДата: Воскресенье, 27 Января 2013, 09:20:38 | Сообщение # 6
6 уровень
Группа: Проверенные
Сообщений: 231
Награды: 0
Репутация: 92
Блокировки:
Цитата (Facering)
Это не то
=>
Цитата (Q1wAse)
...программа которая показывает в игре нагрузку на память компьютера?...


Цитата (Facering)
игровые утечки

Постоянно увеличивается потребляемая память => возникают утечки


Если долго мучиться, то может,
все равно нихуя не получится.
 

Q1wAseДата: Воскресенье, 27 Января 2013, 09:24:23 | Сообщение # 7
Группа: Проверенные
Сообщений: 1235
Награды: 0
Репутация: 286
Блокировки:
Impregnable Кароче проблема. Я сделал таймер и при определённых условиях он включается и срабатывает каждые 0.10 сек.
Каждые 0.10 сек пикаются юниты вокруг всех героев на карте на карте 12 героев карта маленькая. И очень большие лаги происходят.
Утечки с точками удаляю вот так call RemoveLocation(название переменной с точкой) но видимо это не помогает?


 

FaceringДата: Воскресенье, 27 Января 2013, 09:33:00 | Сообщение # 8
9 уровень
Группа: Проверенные
Сообщений: 842
Награды: 0
Репутация: 50
Блокировки:
Цитата (Q1wAse)
Impregnable Кароче проблема. Я сделал таймер и при определённых условиях он включается и срабатывает каждые 0.10 сек. Каждые 0.10 сек пикаются юниты вокруг всех героев на карте на карте 12 героев карта маленькая. И очень большие лаги происходят.
Утечки с точками удаляю вот так call RemoveLocation(название переменной с точкой) но видимо это не помогает?
Так у тя таймер надо удалять он наверное захлебывается излишками. все точки, всех игроков возьми под переменную и обнуляй.
call DestroyTimer (udg_) удаление таймера
call DestroyTimerDialog(udg_) удаление окна таймера
set udg_ обнуление переменной

Добавлено (27 Января 2013, 09:33:00)
---------------------------------------------

Цитата (Facering)
set udg_ обнуление переменной
set udg_  = null


Эх, береза..... мне бы столько почек.
 

Q1wAseДата: Воскресенье, 27 Января 2013, 09:46:37 | Сообщение # 9
Группа: Проверенные
Сообщений: 1235
Награды: 0
Репутация: 286
Блокировки:
Facering окон таймера нету и его выключать нельзя он всё игру работает <_<
Обнулять переменные умею, а вот точки удалять через обнуление переменной ещё не слышал. Что за...?
Вот скрин триггера




Сообщение отредактировал Q1wAse - Воскресенье, 27 Января 2013, 09:55:22
 

ImpregnableДата: Воскресенье, 27 Января 2013, 09:58:34 | Сообщение # 10
6 уровень
Группа: Проверенные
Сообщений: 231
Награды: 0
Репутация: 92
Блокировки:
Facering, все правильно написал, для удаления объекта необходимо убрать все ссылки на него.

Цитата (Q1wAse)
И очень большие лаги происходят
Возможно создается больше 1 таймера или вешается поток бесконечным циклом. (неплохо было бы увидеть код)


Если долго мучиться, то может,
все равно нихуя не получится.


Сообщение отредактировал Impregnable - Воскресенье, 27 Января 2013, 10:00:43
 

Q1wAseДата: Воскресенье, 27 Января 2013, 10:03:23 | Сообщение # 11
Группа: Проверенные
Сообщений: 1235
Награды: 0
Репутация: 286
Блокировки:
Impregnable уже скинул скрин.

 

FaceringДата: Воскресенье, 27 Января 2013, 10:05:52 | Сообщение # 12
9 уровень
Группа: Проверенные
Сообщений: 842
Награды: 0
Репутация: 50
Блокировки:
Цитата (Q1wAse)
Обнулять переменные умею, а вот точки удалять через обнуление переменной ещё не слышал. Что за...?
чет ты не то сказал. И где сам таймер?
set udg_AAUnit [AACycle]= null должен быть тоже тока не помню можно или нет


Эх, береза..... мне бы столько почек.
 

ImpregnableДата: Воскресенье, 27 Января 2013, 10:09:14 | Сообщение # 13
6 уровень
Группа: Проверенные
Сообщений: 231
Награды: 0
Репутация: 92
Блокировки:
В jass'е давай. На скрин я могу долго смотреть, а понять так и не смогу...

Если долго мучиться, то может,
все равно нихуя не получится.
 

Q1wAseДата: Воскресенье, 27 Января 2013, 10:18:20 | Сообщение # 14
Группа: Проверенные
Сообщений: 1235
Награды: 0
Репутация: 286
Блокировки:
Impregnable я Джасс не знаю...

 

FaceringДата: Воскресенье, 27 Января 2013, 10:18:47 | Сообщение # 15
9 уровень
Группа: Проверенные
Сообщений: 842
Награды: 0
Репутация: 50
Блокировки:
Цитата (Q1wAse)
Impregnable я Джасс не знаю...
Дай скрин таймера.


Эх, береза..... мне бы столько почек.
 

Q1wAseДата: Воскресенье, 27 Января 2013, 10:21:25 | Сообщение # 16
Группа: Проверенные
Сообщений: 1235
Награды: 0
Репутация: 286
Блокировки:
Если хочешь мой триггер переведёный в код то вот пожалуйста - 
Код
function Trig_Spell_SF_____________________u_Func002Func003Func001Func002Func001C takes nothing returns boolean
     if ( not ( IsUnitVisible(GetEnumUnit(), GetOwningPlayer(udg_AAUnit[udg_AACycle])) == true ) ) then
         return false
     endif
     if ( not ( GetUnitLifePercent(udg_AAUnit[udg_AACycle]) >= GetUnitLifePercent(GetEnumUnit()) ) ) then
         return false
     endif
     if ( not ( GetUnitStateSwap(UNIT_STATE_MANA, udg_AAUnit[udg_AACycle]) > 0.00 ) ) then
         return false
     endif
     if ( not ( GetUnitTypeId(udg_AAUnit[udg_AACycle]) == 'H003' ) ) then
         return false
     endif
     if ( not ( IsUnitType(GetEnumUnit(), UNIT_TYPE_HERO) == true ) ) then
         return false
     endif
     if ( not ( IsUnitAliveBJ(GetEnumUnit()) == true ) ) then
         return false
     endif
     if ( not ( IsUnitEnemy(GetEnumUnit(), GetOwningPlayer(udg_AAUnit[udg_AACycle])) == true ) ) then
         return false
     endif
     if ( not ( udg_AALogicSpell[udg_AACycle] == false ) ) then
         return false
     endif
     if ( not ( RAbsBJ(( GetUnitFacing(udg_AAUnit[udg_AACycle]) - AngleBetweenPoints(GetUnitLoc(udg_AAUnit[udg_AACycle]), GetUnitLoc(GetEnumUnit())) )) < 30.00 ) ) then
         return false
     endif
     return true
endfunction

function Trig_Spell_SF_____________________u_Func002Func003Func001Func002A takes nothing returns nothing
     if ( Trig_Spell_SF_____________________u_Func002Func003Func001Func002Func001C() ) then
         call KillUnit( udg_AADummy[udg_AACycle] )
         call IssueImmediateOrderBJ( udg_AAUnit[udg_AACycle], "stomp" )
         set udg_AALogicSpell[udg_AACycle] = true
         set udg_AALogicMove[udg_AACycle] = false
     else
     endif
endfunction

function Trig_Spell_SF_____________________u_Func002Func003Func001C takes nothing returns boolean
     if ( not ( IsUnitVisible(GetEnumUnit(), GetOwningPlayer(udg_AAUnit[udg_AACycle])) == true ) ) then
         return false
     endif
     if ( not ( GetUnitLifePercent(udg_AAUnit[udg_AACycle]) >= GetUnitLifePercent(GetEnumUnit()) ) ) then
         return false
     endif
     if ( not ( GetUnitStateSwap(UNIT_STATE_MANA, udg_AAUnit[udg_AACycle]) > 0.00 ) ) then
         return false
     endif
     if ( not ( GetUnitTypeId(udg_AAUnit[udg_AACycle]) == 'H003' ) ) then
         return false
     endif
     if ( not ( IsUnitType(GetEnumUnit(), UNIT_TYPE_HERO) == true ) ) then
         return false
     endif
     if ( not ( IsUnitAliveBJ(GetEnumUnit()) == true ) ) then
         return false
     endif
     if ( not ( IsUnitEnemy(GetEnumUnit(), GetOwningPlayer(udg_AAUnit[udg_AACycle])) == true ) ) then
         return false
     endif
     if ( not ( udg_AALogicSpell[udg_AACycle] == false ) ) then
         return false
     endif
     if ( not ( RAbsBJ(( GetUnitFacing(udg_AAUnit[udg_AACycle]) - AngleBetweenPoints(GetUnitLoc(udg_AAUnit[udg_AACycle]), GetUnitLoc(GetEnumUnit())) )) < 30.00 ) ) then
         return false
     endif
     return true
endfunction

function Trig_Spell_SF_____________________u_Func002Func003A takes nothing returns nothing
     if ( Trig_Spell_SF_____________________u_Func002Func003Func001C() ) then
         call KillUnit( udg_AADummy[udg_AACycle] )
         call IssueImmediateOrderBJ( udg_AAUnit[udg_AACycle], "stomp" )
         set udg_AALogicSpell[udg_AACycle] = true
         set udg_AALogicMove[udg_AACycle] = false
     else
         set bj_wantDestroyGroup = true
         call ForGroupBJ( GetUnitsInRangeOfLocAll(270.00, udg_AAPointAAUnit[udg_AACycle]), function Trig_Spell_SF_____________________u_Func002Func003Func001Func002A )
     endif
endfunction

function Trig_Spell_SF_____________________u_Func002Func005Func001Func002Func001C takes nothing returns boolean
     if ( not ( IsUnitVisible(GetEnumUnit(), GetOwningPlayer(udg_AAUnit[udg_AACycle])) == true ) ) then
         return false
     endif
     if ( not ( GetUnitLifePercent(udg_AAUnit[udg_AACycle]) >= GetUnitLifePercent(GetEnumUnit()) ) ) then
         return false
     endif
     if ( not ( GetUnitStateSwap(UNIT_STATE_MANA, udg_AAUnit[udg_AACycle]) > 0.00 ) ) then
         return false
     endif
     if ( not ( GetUnitTypeId(udg_AAUnit[udg_AACycle]) == 'H003' ) ) then
         return false
     endif
     if ( not ( IsUnitType(GetEnumUnit(), UNIT_TYPE_HERO) == true ) ) then
         return false
     endif
     if ( not ( IsUnitAliveBJ(GetEnumUnit()) == true ) ) then
         return false
     endif
     if ( not ( IsUnitEnemy(GetEnumUnit(), GetOwningPlayer(udg_AAUnit[udg_AACycle])) == true ) ) then
         return false
     endif
     if ( not ( udg_AALogicSpell[udg_AACycle] == false ) ) then
         return false
     endif
     if ( not ( RAbsBJ(( GetUnitFacing(udg_AAUnit[udg_AACycle]) - AngleBetweenPoints(GetUnitLoc(udg_AAUnit[udg_AACycle]), GetUnitLoc(GetEnumUnit())) )) < 20.00 ) ) then
         return false
     endif
     if ( not ( DistanceBetweenPoints(udg_AAPointAAUnit[udg_AACycle], GetUnitLoc(GetEnumUnit())) >= 180.00 ) ) then
         return false
     endif
     return true
endfunction

function Trig_Spell_SF_____________________u_Func002Func005Func001Func002A takes nothing returns nothing
     if ( Trig_Spell_SF_____________________u_Func002Func005Func001Func002Func001C() ) then
         call KillUnit( udg_AADummy[udg_AACycle] )
         set udg_AALogicSpell[udg_AACycle] = true
         set udg_AALogicMove[udg_AACycle] = false
         call IssueImmediateOrderBJ( udg_AAUnit[udg_AACycle], "spiritwolf" )
     else
     endif
endfunction

function Trig_Spell_SF_____________________u_Func002Func005Func001C takes nothing returns boolean
     if ( not ( IsUnitVisible(GetEnumUnit(), GetOwningPlayer(udg_AAUnit[udg_AACycle])) == true ) ) then
         return false
     endif
     if ( not ( GetUnitLifePercent(udg_AAUnit[udg_AACycle]) >= GetUnitLifePercent(GetEnumUnit()) ) ) then
         return false
     endif
     if ( not ( GetUnitStateSwap(UNIT_STATE_MANA, udg_AAUnit[udg_AACycle]) > 0.00 ) ) then
         return false
     endif
     if ( not ( GetUnitTypeId(udg_AAUnit[udg_AACycle]) == 'H003' ) ) then
         return false
     endif
     if ( not ( IsUnitType(GetEnumUnit(), UNIT_TYPE_HERO) == true ) ) then
         return false
     endif
     if ( not ( IsUnitAliveBJ(GetEnumUnit()) == true ) ) then
         return false
     endif
     if ( not ( IsUnitEnemy(GetEnumUnit(), GetOwningPlayer(udg_AAUnit[udg_AACycle])) == true ) ) then
         return false
     endif
     if ( not ( udg_AALogicSpell[udg_AACycle] == false ) ) then
         return false
     endif
     if ( not ( RAbsBJ(( GetUnitFacing(udg_AAUnit[udg_AACycle]) - AngleBetweenPoints(GetUnitLoc(udg_AAUnit[udg_AACycle]), GetUnitLoc(GetEnumUnit())) )) < 20.00 ) ) then
         return false
     endif
     if ( not ( DistanceBetweenPoints(udg_AAPointAAUnit[udg_AACycle], GetUnitLoc(GetEnumUnit())) >= 180.00 ) ) then
         return false
     endif
     return true
endfunction

function Trig_Spell_SF_____________________u_Func002Func005A takes nothing returns nothing
     if ( Trig_Spell_SF_____________________u_Func002Func005Func001C() ) then
         call KillUnit( udg_AADummy[udg_AACycle] )
         set udg_AALogicSpell[udg_AACycle] = true
         set udg_AALogicMove[udg_AACycle] = false
         call IssueImmediateOrderBJ( udg_AAUnit[udg_AACycle], "spiritwolf" )
     else
         set bj_wantDestroyGroup = true
         call ForGroupBJ( GetUnitsInRangeOfLocAll(720.00, udg_AAPointAAUnit[udg_AACycle]), function Trig_Spell_SF_____________________u_Func002Func005Func001Func002A )
     endif
endfunction

function Trig_Spell_SF_____________________u_Func002Func007Func001Func002Func001C takes nothing returns boolean
     if ( not ( IsUnitVisible(GetEnumUnit(), GetOwningPlayer(udg_AAUnit[udg_AACycle])) == true ) ) then
         return false
     endif
     if ( not ( GetUnitLifePercent(udg_AAUnit[udg_AACycle]) >= GetUnitLifePercent(GetEnumUnit()) ) ) then
         return false
     endif
     if ( not ( GetUnitStateSwap(UNIT_STATE_MANA, udg_AAUnit[udg_AACycle]) > 0.00 ) ) then
         return false
     endif
     if ( not ( GetUnitTypeId(udg_AAUnit[udg_AACycle]) == 'H003' ) ) then
         return false
     endif
     if ( not ( IsUnitType(GetEnumUnit(), UNIT_TYPE_HERO) == true ) ) then
         return false
     endif
     if ( not ( IsUnitAliveBJ(GetEnumUnit()) == true ) ) then
         return false
     endif
     if ( not ( IsUnitEnemy(GetEnumUnit(), GetOwningPlayer(udg_AAUnit[udg_AACycle])) == true ) ) then
         return false
     endif
     if ( not ( udg_AALogicSpell[udg_AACycle] == false ) ) then
         return false
     endif
     if ( not ( RAbsBJ(( GetUnitFacing(udg_AAUnit[udg_AACycle]) - AngleBetweenPoints(GetUnitLoc(udg_AAUnit[udg_AACycle]), GetUnitLoc(GetEnumUnit())) )) < 15.00 ) ) then
         return false
     endif
     if ( not ( DistanceBetweenPoints(udg_AAPointAAUnit[udg_AACycle], GetUnitLoc(GetEnumUnit())) >= 430.00 ) ) then
         return false
     endif
     return true
endfunction

function Trig_Spell_SF_____________________u_Func002Func007Func001Func002A takes nothing returns nothing
     if ( Trig_Spell_SF_____________________u_Func002Func007Func001Func002Func001C() ) then
         call KillUnit( udg_AADummy[udg_AACycle] )
         set udg_AALogicSpell[udg_AACycle] = true
         set udg_AALogicMove[udg_AACycle] = false
         call IssueImmediateOrderBJ( udg_AAUnit[udg_AACycle], "waterelemental" )
     else
     endif
endfunction

function Trig_Spell_SF_____________________u_Func002Func007Func001C takes nothing returns boolean
     if ( not ( IsUnitVisible(GetEnumUnit(), GetOwningPlayer(udg_AAUnit[udg_AACycle])) == true ) ) then
         return false
     endif
     if ( not ( GetUnitLifePercent(udg_AAUnit[udg_AACycle]) >= GetUnitLifePercent(GetEnumUnit()) ) ) then
         return false
     endif
     if ( not ( GetUnitStateSwap(UNIT_STATE_MANA, udg_AAUnit[udg_AACycle]) > 0.00 ) ) then
         return false
     endif
     if ( not ( GetUnitTypeId(udg_AAUnit[udg_AACycle]) == 'H003' ) ) then
         return false
     endif
     if ( not ( IsUnitType(GetEnumUnit(), UNIT_TYPE_HERO) == true ) ) then
         return false
     endif
     if ( not ( IsUnitAliveBJ(GetEnumUnit()) == true ) ) then
         return false
     endif
     if ( not ( IsUnitEnemy(GetEnumUnit(), GetOwningPlayer(udg_AAUnit[udg_AACycle])) == true ) ) then
         return false
     endif
     if ( not ( udg_AALogicSpell[udg_AACycle] == false ) ) then
         return false
     endif
     if ( not ( RAbsBJ(( GetUnitFacing(udg_AAUnit[udg_AACycle]) - AngleBetweenPoints(GetUnitLoc(udg_AAUnit[udg_AACycle]), GetUnitLoc(GetEnumUnit())) )) < 15.00 ) ) then
         return false
     endif
     if ( not ( DistanceBetweenPoints(udg_AAPointAAUnit[udg_AACycle], GetUnitLoc(GetEnumUnit())) >= 430.00 ) ) then
         return false
     endif
     return true
endfunction

function Trig_Spell_SF_____________________u_Func002Func007A takes nothing returns nothing
     if ( Trig_Spell_SF_____________________u_Func002Func007Func001C() ) then
         call KillUnit( udg_AADummy[udg_AACycle] )
         set udg_AALogicSpell[udg_AACycle] = true
         set udg_AALogicMove[udg_AACycle] = false
         call IssueImmediateOrderBJ( udg_AAUnit[udg_AACycle], "waterelemental" )
     else
         set bj_wantDestroyGroup = true
         call ForGroupBJ( GetUnitsInRangeOfLocAll(970.00, udg_AAPointAAUnit[udg_AACycle]), function Trig_Spell_SF_____________________u_Func002Func007Func001Func002A )
     endif
endfunction

function Trig_Spell_SF_____________________u_Func002Func009Func001C takes nothing returns boolean
     if ( not ( IsUnitVisible(GetEnumUnit(), GetOwningPlayer(udg_AAUnit[udg_AACycle])) == true ) ) then
         return false
     endif
     if ( not ( GetUnitLifePercent(udg_AAUnit[udg_AACycle]) >= GetUnitLifePercent(GetEnumUnit()) ) ) then
         return false
     endif
     if ( not ( GetUnitStateSwap(UNIT_STATE_MANA, udg_AAUnit[udg_AACycle]) > 0.00 ) ) then
         return false
     endif
     if ( not ( udg_RequiemSouls[udg_AACycle] > 0 ) ) then
         return false
     endif
     if ( not ( GetUnitTypeId(udg_AAUnit[udg_AACycle]) == 'H003' ) ) then
         return false
     endif
     if ( not ( IsUnitType(GetEnumUnit(), UNIT_TYPE_HERO) == true ) ) then
         return false
     endif
     if ( not ( IsUnitAliveBJ(GetEnumUnit()) == true ) ) then
         return false
     endif
     if ( not ( IsUnitEnemy(GetEnumUnit(), GetOwningPlayer(udg_AAUnit[udg_AACycle])) == true ) ) then
         return false
     endif
     if ( not ( udg_AALogicSpell[udg_AACycle] == false ) ) then
         return false
     endif
     return true
endfunction

function Trig_Spell_SF_____________________u_Func002Func009A takes nothing returns nothing
     if ( Trig_Spell_SF_____________________u_Func002Func009Func001C() ) then
         call KillUnit( udg_AADummy[udg_AACycle] )
         set udg_AALogicSpell[udg_AACycle] = true
         set udg_AALogicMove[udg_AACycle] = false
         call IssueImmediateOrderBJ( udg_AAUnit[udg_AACycle], "thunderclap" )
     else
     endif
endfunction

function Trig_Spell_SF_____________________u_Func002Func011Func001C takes nothing returns boolean
     if ( not ( IsUnitVisible(GetEnumUnit(), GetOwningPlayer(udg_AAUnit[udg_AACycle])) == true ) ) then
         return false
     endif
     if ( not ( GetUnitLifePercent(udg_AAUnit[udg_AACycle]) >= GetUnitLifePercent(GetEnumUnit()) ) ) then
         return false
     endif
     if ( not ( GetUnitStateSwap(UNIT_STATE_MANA, udg_AAUnit[udg_AACycle]) > 0.00 ) ) then
         return false
     endif
     if ( not ( GetUnitTypeId(udg_AAUnit[udg_AACycle]) == 'H003' ) ) then
         return false
     endif
     if ( not ( IsUnitType(GetEnumUnit(), UNIT_TYPE_HERO) == true ) ) then
         return false
     endif
     if ( not ( IsUnitAliveBJ(GetEnumUnit()) == true ) ) then
         return false
     endif
     if ( not ( IsUnitEnemy(GetEnumUnit(), GetOwningPlayer(udg_AAUnit[udg_AACycle])) == true ) ) then
         return false
     endif
     if ( not ( udg_AALogicSpell[udg_AACycle] == false ) ) then
         return false
     endif
     return true
endfunction

function Trig_Spell_SF_____________________u_Func002Func011A takes nothing returns nothing
     if ( Trig_Spell_SF_____________________u_Func002Func011Func001C() ) then
         call KillUnit( udg_AADummy[udg_AACycle] )
         set udg_AALogicSpell[udg_AACycle] = true
         set udg_AALogicMove[udg_AACycle] = false
         call IssueTargetOrderBJ( udg_AAUnit[udg_AACycle], "chainlightning", GetEnumUnit() )
     else
     endif
endfunction

function Trig_Spell_SF_____________________u_Actions takes nothing returns nothing
     set udg_AACycle = 1
     loop
         exitwhen udg_AACycle > 12
         set udg_AAPointAAUnit[udg_AACycle] = GetUnitLoc(udg_AAUnit[udg_AACycle])
         set bj_wantDestroyGroup = true
         call ForGroupBJ( GetUnitsInRangeOfLocAll(270.00, udg_AAPointAAUnit[udg_AACycle]), function Trig_Spell_SF_____________________u_Func002Func003A )
         set bj_wantDestroyGroup = true
         call ForGroupBJ( GetUnitsInRangeOfLocAll(720.00, udg_AAPointAAUnit[udg_AACycle]), function Trig_Spell_SF_____________________u_Func002Func005A )
         set bj_wantDestroyGroup = true
         call ForGroupBJ( GetUnitsInRangeOfLocAll(970.00, udg_AAPointAAUnit[udg_AACycle]), function Trig_Spell_SF_____________________u_Func002Func007A )
         set bj_wantDestroyGroup = true
         call ForGroupBJ( GetUnitsInRangeOfLocAll(450.00, udg_AAPointAAUnit[udg_AACycle]), function Trig_Spell_SF_____________________u_Func002Func009A )
         set bj_wantDestroyGroup = true
         call ForGroupBJ( GetUnitsInRangeOfLocAll(700.00, udg_AAPointAAUnit[udg_AACycle]), function Trig_Spell_SF_____________________u_Func002Func011A )
          call RemoveLocation(udg_AAPointAAUnit[udg_AACycle])
          set udg_AAPointAAUnit[udg_AACycle] = null
         set udg_AACycle = udg_AACycle + 1
     endloop
endfunction

//===========================================================================
function InitTrig_Spell_SF_____________________u takes nothing returns nothing
     set gg_trg_Spell_SF_____________________u = CreateTrigger(  )
     call DisableTrigger( gg_trg_Spell_SF_____________________u )
     call TriggerRegisterTimerExpireEventBJ( gg_trg_Spell_SF_____________________u, udg_AATimerSpell )
     call TriggerAddAction( gg_trg_Spell_SF_____________________u, function Trig_Spell_SF_____________________u_Actions )
endfunction

Добавлено (27 Января 2013, 10:21:25)
---------------------------------------------
Facering скрин таймера??? Всмысле?? Когда он включается?? Он включается когда проходит 10 сек от игры и он включается! Если не то, что я понял, то поясни.


 

FaceringДата: Воскресенье, 27 Января 2013, 10:22:12 | Сообщение # 17
9 уровень
Группа: Проверенные
Сообщений: 842
Награды: 0
Репутация: 50
Блокировки:
Цитата (Q1wAse)
Facering скрин таймера??? Всмысле?? Когда он включается?? Он включается когда проходит 10 сек от игры и он включается! Если не то, что я понял, то поясни.
да скрин вкл таймера.


Эх, береза..... мне бы столько почек.
 

sumertДата: Воскресенье, 27 Января 2013, 10:30:09 | Сообщение # 18
10 уровень
Группа: Проверенные
Сообщений: 2330
Награды: 2
Репутация: 1094
Блокировки:
*посмотрев скрин* мать вашу в бога, в душу и святого духа!
И это еще срабатывает 10 раз в секунду!
Во-первых, с точками ты утечки не удалил: Позиция(Выбранный юнит) и Позиция (переменная какая-то) не удаляются => утечки => лаги.
"Выбранный юнит" тоже создает утечки.
Локацию ты удаляешь, а переменную тоже надо обнулять. После RemoveLocation добавить set "имя переменной локации"=null.
А про отряды я даже заикаться не буду. И цикл лучше сделать
local integer=1
loop...действия цикла
exitwhen i>=12
set i=i+1
endloop
С циклом, что у тебя есть, связано множество багов и неправильной работы.


Сообщение отредактировал sumert - Воскресенье, 27 Января 2013, 10:30:52
 

Q1wAseДата: Воскресенье, 27 Января 2013, 10:36:14 | Сообщение # 19
Группа: Проверенные
Сообщений: 1235
Награды: 0
Репутация: 286
Блокировки:
sumert 
Цитата
С циклом, что у тебя есть, связано множество багов и неправильной работы.
  ^_^ Учусь пока что)

Цитата
А про отряды я даже заикаться не буду. И цикл лучше сделать
 Скажи что сделать чтобы все утечки удалить? ПЛЗ


 

Imba_pvLДата: Воскресенье, 27 Января 2013, 10:38:26 | Сообщение # 20
10 уровень
Группа: Проверенные
Сообщений: 3151
Награды: 1
Репутация: 1260
Блокировки:
Q1wAse могу дать ссылку в ЛС
напиши мне....там типо кодер сделал все не удаленные утечки показывает в таблице, может поможет


 

Q1wAseДата: Воскресенье, 27 Января 2013, 10:40:47 | Сообщение # 21
Группа: Проверенные
Сообщений: 1235
Награды: 0
Репутация: 286
Блокировки:
Imba_pvL что написать тебе в ЛС?)) Я не понял...Ну мен нужно чтобы утечек не было.Лаги ужасные...

 

[SeKtOR]Дата: Воскресенье, 27 Января 2013, 11:14:06 | Сообщение # 22
Группа: Проверенные
Сообщений: 1143
Награды: 0
Репутация: 1168
Блокировки:
Вообщем тебе надо чтобы вокруг 12 героев появилось n юнитов без утечек?

 

Q1wAseДата: Воскресенье, 27 Января 2013, 11:25:46 | Сообщение # 23
Группа: Проверенные
Сообщений: 1235
Награды: 0
Репутация: 286
Блокировки:
[SeKtOR]
Цитата
Вообщем тебе надо чтобы вокруг 12 героев появилось n юнитов без утечек?
Нет. Там у меня идёт проверка вокруг N юнитов выбрать врагов и при определённых условиях кастануть способность юниту на врага. Кароче делаю ИИ
Всё работает с ИИ, только одно НО ужасные лаги... Попробовал делать без таймера ничего не выходит. Компы просто бывает не юзают спелы...(




Сообщение отредактировал Q1wAse - Воскресенье, 27 Января 2013, 11:26:52
 

SirNikolasДата: Воскресенье, 27 Января 2013, 12:02:13 | Сообщение # 24
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
Цитата (Q1wAse)
Цитата (Impregnable)
Task manager'а вполне хватает.
Это и есть та прога?
Ctrl+Alt+Del нажми, переключись на вкладку "Процессы" и смотри на потребление памяти игрой. Естественно, war3 надо запускать с ключом -window.
Либо
Код
function LeakChecker takes nothing returns nothing
    local timer t = CreateTimer()
    call BJDebugMsg(I2S(GetHandleId(t)))
    call DestroyTimer(t)
    set t = null
endfunction
Если числа будут увеличиваться на протяжении всей игры, значит, есть утечки.


 

Форум о Warcraft 3 » Раздел для картостроителей » Вопросы по картостроению » Утечки (Устранение утечек.)
  • Страница 1 из 1
  • 1
Поиск:

Copyright © 2006 - 2024 Warcraft3FT.info При копировании материалов c сайта ставьте, пожалуйста, активную обратную ссылку на нас • Design by gReeB04ki ©
Хостинг от uCoz