Где же тут утечка?
FkoFF Дата: Понедельник, 29 Марта 2010, 23:06:50 | Сообщение # 1
Группа: Заблокированные
Сообщений: 4356
Награды:
1
Репутация:
1413
Блокировки:
Вообщем смысл такой, то что вроде бы все утечные дырки поправил, а тормозить - всеравно тормозит. Вот триггер:
Code
function Trig_Cyclic_loop_Func001Func001Func002001 takes nothing returns boolean return ( udg_SSS == 2 ) endfunction function Trig_Cyclic_loop_Func001Func001Func002002 takes nothing returns boolean return ( udg_SSS == 4 ) endfunction function Trig_Cyclic_loop_Func001Func001C takes nothing returns boolean if ( not GetBooleanOr( Trig_Cyclic_loop_Func001Func001Func002001(), Trig_Cyclic_loop_Func001Func001Func002002() ) ) then return false endif return true endfunction function Trig_Cyclic_loop_Func001Func002Func002001003001001 takes nothing returns boolean return ( IsUnitType(GetFilterUnit(), UNIT_TYPE_STRUCTURE) != true ) endfunction function Trig_Cyclic_loop_Func001Func002Func002001003001002 takes nothing returns boolean return ( IsUnitAlly(GetFilterUnit(), GetOwningPlayer(udg_SS_M_SOULS[udg_SSS])) != true ) endfunction function Trig_Cyclic_loop_Func001Func002Func002001003001 takes nothing returns boolean return GetBooleanAnd( Trig_Cyclic_loop_Func001Func002Func002001003001001(), Trig_Cyclic_loop_Func001Func002Func002001003001002() ) endfunction function Trig_Cyclic_loop_Func001Func002Func002001003002 takes nothing returns boolean return ( GetUnitStateSwap(UNIT_STATE_LIFE, GetFilterUnit()) > 0.00 ) endfunction function Trig_Cyclic_loop_Func001Func002Func002001003 takes nothing returns boolean return GetBooleanAnd( Trig_Cyclic_loop_Func001Func002Func002001003001(), Trig_Cyclic_loop_Func001Func002Func002001003002() ) endfunction function Trig_Cyclic_loop_Func001Func002Func002A takes nothing returns nothing call UnitDamageTargetBJ( udg_SS_M_SOULS[udg_SSS], GetEnumUnit(), ( ( 50.00 * I2R(GetUnitAbilityLevelSwapped('A099', udg_SS_MS_CASTER)) ) + 100.00 ), ATTACK_TYPE_NORMAL, DAMAGE_TYPE_NORMAL ) endfunction function Trig_Cyclic_loop_Func001Func002Func008001 takes nothing returns boolean return ( CountUnitsInGroup(udg_SS_MS_GROUP) == 0 ) endfunction function Trig_Cyclic_loop_Func001Func002Func009001001003001001 takes nothing returns boolean return ( IsUnitType(GetFilterUnit(), UNIT_TYPE_STRUCTURE) != true ) endfunction function Trig_Cyclic_loop_Func001Func002Func009001001003001002 takes nothing returns boolean return ( IsUnitAlly(GetFilterUnit(), GetOwningPlayer(udg_SS_M_SOULS[udg_SSS])) != true ) endfunction function Trig_Cyclic_loop_Func001Func002Func009001001003001 takes nothing returns boolean return GetBooleanAnd( Trig_Cyclic_loop_Func001Func002Func009001001003001001(), Trig_Cyclic_loop_Func001Func002Func009001001003001002() ) endfunction function Trig_Cyclic_loop_Func001Func002Func009001001003002 takes nothing returns boolean return ( GetUnitStateSwap(UNIT_STATE_LIFE, GetFilterUnit()) > 0.00 ) endfunction function Trig_Cyclic_loop_Func001Func002Func009001001003 takes nothing returns boolean return GetBooleanAnd( Trig_Cyclic_loop_Func001Func002Func009001001003001(), Trig_Cyclic_loop_Func001Func002Func009001001003002() ) endfunction function Trig_Cyclic_loop_Func001Func002C takes nothing returns boolean if ( not ( CountUnitsInGroup(GetUnitsInRangeOfLocMatching(40.00, GetUnitLoc(udg_SS_M_SOULS[udg_SSS]), Condition(function Trig_Cyclic_loop_Func001Func002Func009001001003))) > 0 ) ) then return false endif return true endfunction function Trig_Cyclic_loop_Actions takes nothing returns nothing set udg_SSS = 1 loop exitwhen udg_SSS > ( 1 + GetUnitAbilityLevelSwapped('A099', udg_SS_MS_CASTER) ) if ( Trig_Cyclic_loop_Func001Func001C() ) then set udg_SS_MS_POINT = PolarProjectionBJ(GetUnitLoc(udg_SS_M_SOULS[udg_SSS]), ( 5.00 + ( DistanceBetweenPoints(GetUnitLoc(udg_SS_M_SOULS[udg_SSS]), GetUnitLoc(udg_SS_MS_CASTER)) / 30.00 ) ), ( AngleBetweenPoints(GetUnitLoc(udg_SS_M_SOULS[udg_SSS]), GetUnitLoc(udg_SS_MS_CASTER)) - ( ( 90.00 + ( 5.00 * I2R(udg_SSS) ) ) - ( ( DistanceBetweenPoints(GetUnitLoc(udg_SS_M_SOULS[udg_SSS]), GetUnitLoc(udg_SS_MS_CASTER)) / GetRandomReal(18.00, 20.00) ) + 0.00 ) ) )) call SetUnitPositionLocFacingBJ( udg_SS_M_SOULS[udg_SSS], udg_SS_MS_POINT, ( AngleBetweenPoints(GetUnitLoc(udg_SS_M_SOULS[udg_SSS]), GetUnitLoc(udg_SS_SHARDCASTER)) - 80.00 ) ) call RemoveLocation(udg_SS_MS_POINT) else set udg_SS_MS_POINT = PolarProjectionBJ(GetUnitLoc(udg_SS_M_SOULS[udg_SSS]), ( 5.00 + ( DistanceBetweenPoints(GetUnitLoc(udg_SS_M_SOULS[udg_SSS]), GetUnitLoc(udg_SS_MS_CASTER)) / 30.00 ) ), ( AngleBetweenPoints(GetUnitLoc(udg_SS_M_SOULS[udg_SSS]), GetUnitLoc(udg_SS_MS_CASTER)) + ( ( 90.00 + ( 5.00 * I2R(udg_SSS) ) ) - ( ( DistanceBetweenPoints(GetUnitLoc(udg_SS_M_SOULS[udg_SSS]), GetUnitLoc(udg_SS_MS_CASTER)) / GetRandomReal(18.00, 20.00) ) + 0.00 ) ) )) call SetUnitPositionLocFacingBJ( udg_SS_M_SOULS[udg_SSS], udg_SS_MS_POINT, ( AngleBetweenPoints(GetUnitLoc(udg_SS_M_SOULS[udg_SSS]), GetUnitLoc(udg_SS_SHARDCASTER)) + 80.00 ) ) call RemoveLocation(udg_SS_MS_POINT) endif if ( Trig_Cyclic_loop_Func001Func002C() ) then call ForGroupBJ( GetUnitsInRangeOfLocMatching(150.00, GetUnitLoc(udg_SS_M_SOULS[udg_SSS]), Condition(function Trig_Cyclic_loop_Func001Func002Func002001003)), function Trig_Cyclic_loop_Func001Func002Func002A ) call AddSpecialEffectLocBJ( GetUnitLoc(udg_SS_M_SOULS[udg_SSS]), "war3mapImported\\DeathCoilSpecialArt.mdx" ) call DestroyEffectBJ( GetLastCreatedEffectBJ() ) call KillUnit( udg_SS_M_SOULS[udg_SSS] ) set udg_SS_M_SOULS[udg_SSS] = null call GroupRemoveUnitSimple( udg_SS_M_SOULS[udg_SSS], udg_SS_MS_GROUP ) if ( Trig_Cyclic_loop_Func001Func002Func008001() ) then call DisableTrigger( GetTriggeringTrigger() ) else call DoNothing( ) endif else call DoNothing( ) endif set udg_SSS = udg_SSS + 1 endloop endfunction //=========================================================================== function InitTrig_Cyclic_loop takes nothing returns nothing set gg_trg_Cyclic_loop = CreateTrigger( ) call DisableTrigger( gg_trg_Cyclic_loop ) call TriggerRegisterTimerEventPeriodic( gg_trg_Cyclic_loop, 0.01 ) call TriggerAddAction( gg_trg_Cyclic_loop, function Trig_Cyclic_loop_Actions ) endfunction
Слабонервным просьба не верещать "ааа, код лажа", это обычный конверт гуи ---> джасс
Эллесар Дата: Понедельник, 29 Марта 2010, 23:50:31 | Сообщение # 2
DeMoN
Группа: Ветераны
Сообщений: 934
Награды:
1
Репутация:
210
Блокировки:
Сразу заметил
база паролей: https://yadi.sk/d/mdDhWuvPcTSKw бекап сайта от 26.12.2010 https://yadi.sk/d/L3xNpibbiHpYE
FkoFF Дата: Вторник, 30 Марта 2010, 01:11:13 | Сообщение # 3
Группа: Заблокированные
Сообщений: 4356
Награды:
1
Репутация:
1413
Блокировки:
так точка создается и удаляется, на других спеллах работает на все 200, а тут почему то начинает тормозить..
16Gb Дата: Вторник, 30 Марта 2010, 08:47:46 | Сообщение # 4
6 уровень
Группа: Проверенные
Сообщений: 216
Награды:
1
Репутация:
61
Блокировки:
а этот скилл не юзает волну силы и лучше выложи скрин на гуи
Сдохни от спидорака жопы, мразь.
windrunner Дата: Вторник, 30 Марта 2010, 08:57:53 | Сообщение # 5
10 уровень
Группа: Проверенные
Сообщений: 1259
Награды:
0
Репутация:
218
Блокировки:
Сразу заметил AngleBetweenPoints PolarProjectionBJ DistanceBetweenPoints GetUnitLoc все это создает утечку GetUnitLoc сувай в переменную чтобы патом очистить и все остальное заменяй на безбжшный вид Вот вроде все но они у тебя в таких количествах что создают утечки
И в правду мир сошел с ума... И до тех пор пока нас не обесточат Пока не догорит аварийных фонарей заряд Мы будем жечь тут электричество что есть мочи Русский мапмейкинг - бессмысленный и беспощадный.xD
BinGO Дата: Вторник, 30 Марта 2010, 09:15:57 | Сообщение # 6
Группа: Модераторы
Сообщений: 2906
Награды:
8
Блокировки:
Quote (FkoFF )
call TriggerRegisterTimerEventPeriodic( gg_trg_Cyclic_loop, 0.01 )
Офк такое 100 раз в секунду юзать...совет: избавляйся от бж. А именно, как уже подметил выше windrunner : Quote (windrunner )
AngleBetweenPoints PolarProjectionBJ DistanceBetweenPoints GetUnitLoc
Дистанцию между точками можно вычислить без бж, зная простейшие понятия о векторах, а конкретно о длине вектора. Ну а полярки это вообще тема для отдельного разговора))) Если нужна помощь по замене полярок - обращайся в пм.
P.S. windrunner , jass уже надеюсь хорошо знаешь?))
Эллесар Дата: Вторник, 30 Марта 2010, 09:19:18 | Сообщение # 7
DeMoN
Группа: Ветераны
Сообщений: 934
Награды:
1
Репутация:
210
Блокировки:
Quote (windrunner )
AngleBetweenPoints
А она разве создаёт утечки ? О_о
база паролей: https://yadi.sk/d/mdDhWuvPcTSKw бекап сайта от 26.12.2010 https://yadi.sk/d/L3xNpibbiHpYE
BinGO Дата: Вторник, 30 Марта 2010, 09:45:24 | Сообщение # 8
Группа: Модераторы
Сообщений: 2906
Награды:
8
Блокировки:
Quote (Эллесар )
А она разве создаёт утечки ? О_о
Я точно не знаю, но бж все-равно зло.
windrunner Дата: Вторник, 30 Марта 2010, 10:04:49 | Сообщение # 9
10 уровень
Группа: Проверенные
Сообщений: 1259
Награды:
0
Репутация:
218
Блокировки:
Quote (Эллесар )
А она разве создаёт утечки ? О_о
да Оо она с локами оперирует и их не удаляетДобавлено (30-03-2010, 10:03) ---------------------------------------------
Quote (B1nGO )
P.S. windrunner, jass уже надеюсь хорошо знаешь?))
угу xDДобавлено (30-03-2010, 10:04) --------------------------------------------- local real dx = GetLocationX(locB) - GetLocationX(locA) local real dy = GetLocationY(locB) - GetLocationY(locA) return SquareRoot(dx * dx + dy * dy) вот это дистанция между точками Она не много отличается от векторной или мне кажется?Оо
И в правду мир сошел с ума... И до тех пор пока нас не обесточат Пока не догорит аварийных фонарей заряд Мы будем жечь тут электричество что есть мочи Русский мапмейкинг - бессмысленный и беспощадный.xD
BinGO Дата: Вторник, 30 Марта 2010, 11:08:22 | Сообщение # 10
Группа: Модераторы
Сообщений: 2906
Награды:
8
Блокировки:
Почему же? Все правильно, длина вектора равна корню квадратному из суммы квадратов его координат X и Y. Если словами не очень понятно, то: |a| = sqrt(x*x+y*y)Добавлено (30-03-2010, 11:08) --------------------------------------------- dx и dy в данном случае являются координатами вектора: {dx;dy}
H_A_PK Дата: Вторник, 30 Марта 2010, 14:41:44 | Сообщение # 11
Быдлокодер
Группа: Проверенные
Сообщений: 2605
Награды:
1
Репутация:
822
Блокировки:
Quote (FkoFF )
call AddSpecialEffectLocBJ( GetUnitLoc(udg_SS_M_SOULS[udg_SSS]), "war3mapImported\\DeathCoilSpecialArt.mdx" ) call DestroyEffectBJ( GetLastCreatedEffectBJ() )
это лутьше local location loc = GetUnitLoc(udg_SS_M_SOULS[udg_SSS])) call DestroyEffect(AddSpecialEffectLoc("war3mapImported\\DeathCoilSpecialArt.mdx" , loc) call RemoveLocation(loc) set loc = null
проклятье ляжет на любого
кто дочитает до конца
нет не дочитывай не надо
остановись ну всё капец
windrunner Дата: Вторник, 30 Марта 2010, 15:59:23 | Сообщение # 12
10 уровень
Группа: Проверенные
Сообщений: 1259
Награды:
0
Репутация:
218
Блокировки:
Quote (B1nGO )
|a| = sqrt(x*x+y*y)
Разве?Оо я думал что х(конечн) - х(нач) разве это не длинна по x?
И в правду мир сошел с ума... И до тех пор пока нас не обесточат Пока не догорит аварийных фонарей заряд Мы будем жечь тут электричество что есть мочи Русский мапмейкинг - бессмысленный и беспощадный.xD
Эллесар Дата: Вторник, 30 Марта 2010, 15:59:42 | Сообщение # 13
DeMoN
Группа: Ветераны
Сообщений: 934
Награды:
1
Репутация:
210
Блокировки:
Quote (windrunner )
да Оо она с локами оперирует и их не удаляет
Она и недолжна удалять их, это должен делать сам маппер
база паролей: https://yadi.sk/d/mdDhWuvPcTSKw бекап сайта от 26.12.2010 https://yadi.sk/d/L3xNpibbiHpYE
FkoFF Дата: Вторник, 30 Марта 2010, 16:04:49 | Сообщение # 14
Группа: Заблокированные
Сообщений: 4356
Награды:
1
Репутация:
1413
Блокировки:
так так, тоесть теперь мне придется сделать еще такую "няшку" создавать локи на позиции кастера и на позиции SS_SOULS ? после чего их ремувать?
windrunner Дата: Вторник, 30 Марта 2010, 17:05:41 | Сообщение # 15
10 уровень
Группа: Проверенные
Сообщений: 1259
Награды:
0
Репутация:
218
Блокировки:
Quote (Эллесар )
Она и недолжна удалять их, это должен делать сам маппер
Вообще пользование локами утечно тебе пора бы уже это знатьДобавлено (30-03-2010, 17:05) ---------------------------------------------
Quote (FkoFF )
так так, тоесть теперь мне придется сделать еще такую "няшку" создавать локи на позиции кастера и на позиции SS_SOULS ? после чего их ремувать?
Не совсем тебе надо весь код оптимизить 1 Убрать полярки 2 Убрать AngleBetweenPoint и DistanceBetweenPoints. 3 Ремувать локи
И в правду мир сошел с ума... И до тех пор пока нас не обесточат Пока не догорит аварийных фонарей заряд Мы будем жечь тут электричество что есть мочи Русский мапмейкинг - бессмысленный и беспощадный.xD
BinGO Дата: Среда, 31 Марта 2010, 04:07:39 | Сообщение # 16
Группа: Модераторы
Сообщений: 2906
Награды:
8
Блокировки:
Quote (windrunner )
Разве?Оо я думал что х(конечн) - х(нач) разве это не длинна по x?
Сначала находятся координаты вектора, а чтобы их найти нужно из координат конца вычесть координаты начала. Далее работает формула, все просто.