30

» WarCraft 3 / [lua] Воскрешаем героя

Давайте ещё сделаем мобильный камень воскрешения, который из предмета в инвентаре, превращается в полноценный камень воскрешения, который вскоре типа рассыпается, как только воскресит героя.
Зачем в полноценный, можно создать эффект могилки, как при воскрешении и привязать её к герою. При смерти воскресить на ней. Будет время запилю.
Хотя на сколько я много раз тестировал группы перебора, то всегда первым объектом бывает тот, кто ближе к [ x, y ]. Хотя, может быть, просто тогда были совпадения.
Совпадения. Когда делал заклинание понял, что никакой зависимости нет, пришлось сортировать ручками.
30

» WarCraft 3 / [lua] Воскрешаем героя

Все еще проще - камень продает предметы и привязкой считается момент продажи, после чего предмет удаляется)
Таким образом можно сделать привязку к другим камням. А потом всего-то нужно умереть для телепортации))
30

» WarCraft 3 / [lua] Воскрешаем героя

Главное отличие - триггер привязки камня реализован через покупку предмета в магазине
Тогда всё конечно проще - используешь камень на камень и ненужно искать ближайший камень))
30

» WarCraft 3 / [lua] Воскрешаем героя

Преждевременная оптимизация — корень всех зол.
В статье показан принцип действия с минимальным количеством кода. В реальной карте могут быть дополнительные условия и ограничения, только после которых есть смысл заниматься оптимизацией.
30

» WarCraft 3 / Способности и алгоритмы на заказ

почему?(
Потому что на скриншоте есть большая красная стрелочка.
Потому что используется событие Юнит атакован.
30

» WarCraft 3 / Применение способности триггером

Нарыть метод абилки в game.dll и юзнуть на юнита, сродни волшебству, те кто вы этом шарят, совсем не приуспели и забили на это дело.
А кто говорил что будет легко? Если есть доступ к памяти, то теоретически это можно реализовать))
30

» WarCraft 3 / [lua] Воскрешаем героя

Использовать поиск ближайшего камня в триггере входа это немного оверкил
Поиск ближайшего камня ещё используется для случая, если у героя ещё нет активного камня. Так что это обыкновенное переиспользование кода. Притом подход к камню не такое частое событие, а перебор группы не такой ресурсоёмкий, чтоб экономить на спичках во время пожара)
30

» WarCraft 3 / Квесты

Я открывал, там не то что мне нужно!
Значит плохо открывали, прямо в миссии обучения:
Неужели так сложно немного подумать головой и немного изменить триггер?
30

» WarCraft 3 / Применение способности триггером

Принятый ответ
Как наложить на юнита спелл напрямую, без использования этого костыля?
Написать в Blizzard, чтоб добавили эту возможность или использовать мемхак.
30

» WarCraft 3 / Разрешённые цели для ядовитого облака.

А подскажите пожалуйста, как тогда можно сделать ауру, наносящую урон всем наземным противникам?
Можете взять ауру регенерации и выставить ей отрицательные значения. Только учтите, что этот способ не наносит урон и соответственно ни отследить от неё урон, ни получить награду за юнитов вы не сможете.
30

» WarCraft 3 / Как дать каменному великану дерево?

Принятый ответ
Стандартными средствами никак, только отлавливать появление, создавать рядом дамми-дерево и кастовать спэлл.
30

» WarCraft 3 / Квесты

Мне наработка нужна
Опять вопрос из серии: мне лень открывать карты, сделайте за меня рабы.
30

» WarCraft 3 / Способность: Круговая Молния

Надо написать Утечки: (есть), и всё, никто бы не придрался XD
Ещё нужно не забыть MUI: (нет)
30

» WarCraft 3 / Применение способности триггером

Поиском пользовался, гайды читал - ничего по теме не нашел.
Плохо пользовались, строка приказа кислотной бомбы "acidbomb", id=852662.
30

» WarCraft 3 / Условие при котором герой имеет определённую способность

БезликийСектант, Неужели так сложно головой подумать?
0 - нет способности
1- уровень способности 1
2- уровень способности 2
...
30

» WarCraft 3 / Очередной вопрос про утечки на гуи "Тип юнита"

Принятый ответ
Вопрос в том, что мне делать с ней при каждом новом присвоении.
Ничего
я не могу понять, глобальная она или локальная
Почитайте про локальные переменные. Статьи тоже будут полезны.
Не знаю, не понимаю, что лучше, или оба, но в какой последовательности?
Я тоже ничего не понимаю, когда не вижу кода.
30

» WarCraft 3 / Продажа юнитов

Я тоже сперва так сделал, но завернул в xpcall и он рассказал мне где я не прав)
А я просто обратил внимание на принимаемый integer))
С варнингами - имена параметров не совпадают в доках и в коде.
Заметил, будет время поправлю.
30

» WarCraft 3 / Продажа юнитов

prog, это я рахло передал юнита вместо равкода((
print(GetUnitGoldCost(FourCC('hfoo')))
Всё работает без костылей.
Стучу через _ENV потому как лень распарсить ai нативки.
Я уже ai распарсил.
30

» WarCraft 3 / Продажа юнитов

всетаки работка аи нативок является не задокументированной возможностью
GetUnit*Cost не работают, благо близы догадались очень нужную UnitAlive добавить.
30

» WarCraft 3 / Продажа юнитов

какой смысл?
Потещу новые нативки, да и зачем хорошей наработке пропадать?
30

» WarCraft 3 / Продажа юнитов

У меня патч 1.30 и не открывается карта.
Почему не последний?
Эти скрипты с карты не загубит мою карту если я поставлю JNGP ?
Там используется добавленая в JNGP опция GUI поэтому карта не открывается.
И нативки из common.ai
Могу переписать на последний патч vjass|lua если сильно нужно.
30

» WarCraft 3 / Способность: Круговая Молния

Утечки если и есть, то только в GetUnitLoc(udg_Caster) и PolarProjectionBJ(...). больше не нашёл.
Да всего-то
Загруженные файлы
30

» WarCraft 3 / Способность: Круговая Молния

Утечки: (Вроде убрал)
Использовать Handle Counter для проверки не судьба?
Mui: Да.
Вы используете вэйт и глобальные переменные, какое MUI?
Если у игрока будут два героя с такой способностью, то заблокируется у обоих, какое MUI?
Где настройки заклинания? Как мне сменить спецэффект?

Сконвертировал спэлл в jass, 100500 утечек просто на глаз видно:
function Trig_Light_Conditions takes nothing returns boolean
    if ( not ( GetSpellAbilityId() == 'A000' ) ) then
        return false
    endif
    return true
endfunction

function Trig_Light_Func004002003001 takes nothing returns boolean
    return ( IsUnitType(GetFilterUnit(), UNIT_TYPE_STRUCTURE) == false )
endfunction

function Trig_Light_Func004002003002001 takes nothing returns boolean
    return ( IsUnitDeadBJ(GetFilterUnit()) == false )
endfunction

function Trig_Light_Func004002003002002 takes nothing returns boolean
    return ( IsUnitEnemy(GetFilterUnit(), GetOwningPlayer(udg_Caster)) == true )
endfunction

function Trig_Light_Func004002003002 takes nothing returns boolean
    return GetBooleanAnd( Trig_Light_Func004002003002001(), Trig_Light_Func004002003002002() )
endfunction

function Trig_Light_Func004002003 takes nothing returns boolean
    return GetBooleanAnd( Trig_Light_Func004002003001(), Trig_Light_Func004002003002() )
endfunction

function Trig_Light_Func005A takes nothing returns nothing
    call UnitDamageTargetBJ( udg_Caster, GetEnumUnit(), ( 100.00 * I2R(GetUnitAbilityLevelSwapped('A000', udg_Caster)) ), ATTACK_TYPE_NORMAL, DAMAGE_TYPE_LIGHTNING )
endfunction

function Trig_Light_Func043002003001 takes nothing returns boolean
    return ( IsUnitType(GetFilterUnit(), UNIT_TYPE_STRUCTURE) == false )
endfunction

function Trig_Light_Func043002003002001 takes nothing returns boolean
    return ( IsUnitDeadBJ(GetFilterUnit()) == false )
endfunction

function Trig_Light_Func043002003002002 takes nothing returns boolean
    return ( IsUnitEnemy(GetFilterUnit(), GetOwningPlayer(udg_Caster)) == true )
endfunction

function Trig_Light_Func043002003002 takes nothing returns boolean
    return GetBooleanAnd( Trig_Light_Func043002003002001(), Trig_Light_Func043002003002002() )
endfunction

function Trig_Light_Func043002003 takes nothing returns boolean
    return GetBooleanAnd( Trig_Light_Func043002003001(), Trig_Light_Func043002003002() )
endfunction

function Trig_Light_Func044A takes nothing returns nothing
    call UnitDamageTargetBJ( udg_Caster, GetEnumUnit(), ( 100.00 * I2R(GetUnitAbilityLevelSwapped('A000', udg_Caster)) ), ATTACK_TYPE_NORMAL, DAMAGE_TYPE_LIGHTNING )
endfunction

function Trig_Light_Func080002003001 takes nothing returns boolean
    return ( IsUnitType(GetFilterUnit(), UNIT_TYPE_STRUCTURE) == false )
endfunction

function Trig_Light_Func080002003002001 takes nothing returns boolean
    return ( IsUnitDeadBJ(GetFilterUnit()) == false )
endfunction

function Trig_Light_Func080002003002002 takes nothing returns boolean
    return ( IsUnitEnemy(GetFilterUnit(), GetOwningPlayer(udg_Caster)) == true )
endfunction

function Trig_Light_Func080002003002 takes nothing returns boolean
    return GetBooleanAnd( Trig_Light_Func080002003002001(), Trig_Light_Func080002003002002() )
endfunction

function Trig_Light_Func080002003 takes nothing returns boolean
    return GetBooleanAnd( Trig_Light_Func080002003001(), Trig_Light_Func080002003002() )
endfunction

function Trig_Light_Func081A takes nothing returns nothing
    call UnitDamageTargetBJ( udg_Caster, GetEnumUnit(), ( 100.00 * I2R(GetUnitAbilityLevelSwapped('A000', udg_Caster)) ), ATTACK_TYPE_NORMAL, DAMAGE_TYPE_LIGHTNING )
endfunction

function Trig_Light_Func117002003001 takes nothing returns boolean
    return ( IsUnitType(GetFilterUnit(), UNIT_TYPE_STRUCTURE) == false )
endfunction

function Trig_Light_Func117002003002001 takes nothing returns boolean
    return ( IsUnitDeadBJ(GetFilterUnit()) == false )
endfunction

function Trig_Light_Func117002003002002 takes nothing returns boolean
    return ( IsUnitEnemy(GetFilterUnit(), GetOwningPlayer(udg_Caster)) == true )
endfunction

function Trig_Light_Func117002003002 takes nothing returns boolean
    return GetBooleanAnd( Trig_Light_Func117002003002001(), Trig_Light_Func117002003002002() )
endfunction

function Trig_Light_Func117002003 takes nothing returns boolean
    return GetBooleanAnd( Trig_Light_Func117002003001(), Trig_Light_Func117002003002() )
endfunction

function Trig_Light_Func118A takes nothing returns nothing
    call UnitDamageTargetBJ( udg_Caster, GetEnumUnit(), ( 100.00 * I2R(GetUnitAbilityLevelSwapped('A000', udg_Caster)) ), ATTACK_TYPE_NORMAL, DAMAGE_TYPE_LIGHTNING )
endfunction

function Trig_Light_Func154002003001 takes nothing returns boolean
    return ( IsUnitType(GetFilterUnit(), UNIT_TYPE_STRUCTURE) == false )
endfunction

function Trig_Light_Func154002003002001 takes nothing returns boolean
    return ( IsUnitDeadBJ(GetFilterUnit()) == false )
endfunction

function Trig_Light_Func154002003002002 takes nothing returns boolean
    return ( IsUnitEnemy(GetFilterUnit(), GetOwningPlayer(udg_Caster)) == true )
endfunction

function Trig_Light_Func154002003002 takes nothing returns boolean
    return GetBooleanAnd( Trig_Light_Func154002003002001(), Trig_Light_Func154002003002002() )
endfunction

function Trig_Light_Func154002003 takes nothing returns boolean
    return GetBooleanAnd( Trig_Light_Func154002003001(), Trig_Light_Func154002003002() )
endfunction

function Trig_Light_Func155A takes nothing returns nothing
    call UnitDamageTargetBJ( udg_Caster, GetEnumUnit(), ( 100.00 * I2R(GetUnitAbilityLevelSwapped('A000', udg_Caster)) ), ATTACK_TYPE_NORMAL, DAMAGE_TYPE_LIGHTNING )
endfunction

function Trig_Light_Actions takes nothing returns nothing
    set udg_Caster = GetSpellAbilityUnit()
    set udg_CasterPoint = GetUnitLoc(udg_Caster)
    call SetUnitAnimation( udg_Caster, "spell" )
    set udg_Group[0] = GetUnitsInRangeOfLocMatching(112.00, udg_CasterPoint, Condition(function Trig_Light_Func004002003))
    call ForGroupBJ( udg_Group[0], function Trig_Light_Func005A )
    // 1
    call SetPlayerAbilityAvailableBJ( false, 'A000', GetOwningPlayer(udg_Caster) )
    call AddSpecialEffectLocBJ( PolarProjectionBJ(GetUnitLoc(udg_Caster), 56.00, 0), "Abilities\\Spells\\Other\\Monsoon\\MonsoonBoltTarget.mdl" )
    call DestroyEffect( GetLastCreatedEffectBJ() )
    call AddSpecialEffectLocBJ( PolarProjectionBJ(GetUnitLoc(udg_Caster), 56.00, 45.00), "Abilities\\Spells\\Other\\Monsoon\\MonsoonBoltTarget.mdl" )
    call DestroyEffect( GetLastCreatedEffectBJ() )
    call AddSpecialEffectLocBJ( PolarProjectionBJ(GetUnitLoc(udg_Caster), 56.00, 90.00), "Abilities\\Spells\\Other\\Monsoon\\MonsoonBoltTarget.mdl" )
    call DestroyEffect( GetLastCreatedEffectBJ() )
    call AddSpecialEffectLocBJ( PolarProjectionBJ(GetUnitLoc(udg_Caster), 56.00, 135.00), "Abilities\\Spells\\Other\\Monsoon\\MonsoonBoltTarget.mdl" )
    call DestroyEffect( GetLastCreatedEffectBJ() )
    call AddSpecialEffectLocBJ( PolarProjectionBJ(GetUnitLoc(udg_Caster), 56.00, 180.00), "Abilities\\Spells\\Other\\Monsoon\\MonsoonBoltTarget.mdl" )
    call DestroyEffect( GetLastCreatedEffectBJ() )
    call AddSpecialEffectLocBJ( PolarProjectionBJ(GetUnitLoc(udg_Caster), 56.00, 225.00), "Abilities\\Spells\\Other\\Monsoon\\MonsoonBoltTarget.mdl" )
    call DestroyEffect( GetLastCreatedEffectBJ() )
    call AddSpecialEffectLocBJ( PolarProjectionBJ(GetUnitLoc(udg_Caster), 56.00, 270.00), "Abilities\\Spells\\Other\\Monsoon\\MonsoonBoltTarget.mdl" )
    call DestroyEffect( GetLastCreatedEffectBJ() )
    call AddSpecialEffectLocBJ( PolarProjectionBJ(GetUnitLoc(udg_Caster), 56.00, 315.00), "Abilities\\Spells\\Other\\Monsoon\\MonsoonBoltTarget.mdl" )
    call DestroyEffect( GetLastCreatedEffectBJ() )
    // Другой СпецЭффект
    call AddSpecialEffectLocBJ( PolarProjectionBJ(GetUnitLoc(udg_Caster), 56.00, 0), "Abilities\\Spells\\Human\\Thunderclap\\ThunderClapCaster.mdl" )
    call DestroyEffect( GetLastCreatedEffectBJ() )
    call AddSpecialEffectLocBJ( PolarProjectionBJ(GetUnitLoc(udg_Caster), 56.00, 45.00), "Abilities\\Spells\\Human\\Thunderclap\\ThunderClapCaster.mdl" )
    call DestroyEffect( GetLastCreatedEffectBJ() )
    call AddSpecialEffectLocBJ( PolarProjectionBJ(GetUnitLoc(udg_Caster), 56.00, 90.00), "Abilities\\Spells\\Human\\Thunderclap\\ThunderClapCaster.mdl" )
    call DestroyEffect( GetLastCreatedEffectBJ() )
    call AddSpecialEffectLocBJ( PolarProjectionBJ(GetUnitLoc(udg_Caster), 56.00, 135.00), "Abilities\\Spells\\Human\\Thunderclap\\ThunderClapCaster.mdl" )
    call DestroyEffect( GetLastCreatedEffectBJ() )
    call AddSpecialEffectLocBJ( PolarProjectionBJ(GetUnitLoc(udg_Caster), 56.00, 180.00), "Abilities\\Spells\\Human\\Thunderclap\\ThunderClapCaster.mdl" )
    call DestroyEffect( GetLastCreatedEffectBJ() )
    call AddSpecialEffectLocBJ( PolarProjectionBJ(GetUnitLoc(udg_Caster), 56.00, 225.00), "Abilities\\Spells\\Human\\Thunderclap\\ThunderClapCaster.mdl" )
    call DestroyEffect( GetLastCreatedEffectBJ() )
    call AddSpecialEffectLocBJ( PolarProjectionBJ(GetUnitLoc(udg_Caster), 56.00, 270.00), "Abilities\\Spells\\Human\\Thunderclap\\ThunderClapCaster.mdl" )
    call DestroyEffect( GetLastCreatedEffectBJ() )
    call AddSpecialEffectLocBJ( PolarProjectionBJ(GetUnitLoc(udg_Caster), 56.00, 315.00), "Abilities\\Spells\\Human\\Thunderclap\\ThunderClapCaster.mdl" )
    call DestroyEffect( GetLastCreatedEffectBJ() )
    call TriggerSleepAction( 1.00 )
    // 2
    set udg_Group[1] = GetUnitsInRangeOfLocMatching(168.00, udg_CasterPoint, Condition(function Trig_Light_Func043002003))
    call ForGroupBJ( udg_Group[1], function Trig_Light_Func044A )
    call AddSpecialEffectLocBJ( PolarProjectionBJ(GetUnitLoc(udg_Caster), 112.00, 0), "Abilities\\Spells\\Other\\Monsoon\\MonsoonBoltTarget.mdl" )
    call DestroyEffect( GetLastCreatedEffectBJ() )
    call AddSpecialEffectLocBJ( PolarProjectionBJ(GetUnitLoc(udg_Caster), 112.00, 45.00), "Abilities\\Spells\\Other\\Monsoon\\MonsoonBoltTarget.mdl" )
    call DestroyEffect( GetLastCreatedEffectBJ() )
    call AddSpecialEffectLocBJ( PolarProjectionBJ(GetUnitLoc(udg_Caster), 112.00, 90.00), "Abilities\\Spells\\Other\\Monsoon\\MonsoonBoltTarget.mdl" )
    call DestroyEffect( GetLastCreatedEffectBJ() )
    call AddSpecialEffectLocBJ( PolarProjectionBJ(GetUnitLoc(udg_Caster), 112.00, 135.00), "Abilities\\Spells\\Other\\Monsoon\\MonsoonBoltTarget.mdl" )
    call DestroyEffect( GetLastCreatedEffectBJ() )
    call AddSpecialEffectLocBJ( PolarProjectionBJ(GetUnitLoc(udg_Caster), 112.00, 180.00), "Abilities\\Spells\\Other\\Monsoon\\MonsoonBoltTarget.mdl" )
    call DestroyEffect( GetLastCreatedEffectBJ() )
    call AddSpecialEffectLocBJ( PolarProjectionBJ(GetUnitLoc(udg_Caster), 112.00, 225.00), "Abilities\\Spells\\Other\\Monsoon\\MonsoonBoltTarget.mdl" )
    call DestroyEffect( GetLastCreatedEffectBJ() )
    call AddSpecialEffectLocBJ( PolarProjectionBJ(GetUnitLoc(udg_Caster), 112.00, 270.00), "Abilities\\Spells\\Other\\Monsoon\\MonsoonBoltTarget.mdl" )
    call DestroyEffect( GetLastCreatedEffectBJ() )
    call AddSpecialEffectLocBJ( PolarProjectionBJ(GetUnitLoc(udg_Caster), 112.00, 315.00), "Abilities\\Spells\\Other\\Monsoon\\MonsoonBoltTarget.mdl" )
    call DestroyEffect( GetLastCreatedEffectBJ() )
    // Другой СпецЭффект
    call AddSpecialEffectLocBJ( PolarProjectionBJ(GetUnitLoc(udg_Caster), 112.00, 0), "Abilities\\Spells\\Human\\Thunderclap\\ThunderClapCaster.mdl" )
    call DestroyEffect( GetLastCreatedEffectBJ() )
    call AddSpecialEffectLocBJ( PolarProjectionBJ(GetUnitLoc(udg_Caster), 112.00, 45.00), "Abilities\\Spells\\Human\\Thunderclap\\ThunderClapCaster.mdl" )
    call DestroyEffect( GetLastCreatedEffectBJ() )
    call AddSpecialEffectLocBJ( PolarProjectionBJ(GetUnitLoc(udg_Caster), 112.00, 90.00), "Abilities\\Spells\\Human\\Thunderclap\\ThunderClapCaster.mdl" )
    call DestroyEffect( GetLastCreatedEffectBJ() )
    call AddSpecialEffectLocBJ( PolarProjectionBJ(GetUnitLoc(udg_Caster), 112.00, 135.00), "Abilities\\Spells\\Human\\Thunderclap\\ThunderClapCaster.mdl" )
    call DestroyEffect( GetLastCreatedEffectBJ() )
    call AddSpecialEffectLocBJ( PolarProjectionBJ(GetUnitLoc(udg_Caster), 112.00, 180.00), "Abilities\\Spells\\Human\\Thunderclap\\ThunderClapCaster.mdl" )
    call DestroyEffect( GetLastCreatedEffectBJ() )
    call AddSpecialEffectLocBJ( PolarProjectionBJ(GetUnitLoc(udg_Caster), 112.00, 225.00), "Abilities\\Spells\\Human\\Thunderclap\\ThunderClapCaster.mdl" )
    call DestroyEffect( GetLastCreatedEffectBJ() )
    call AddSpecialEffectLocBJ( PolarProjectionBJ(GetUnitLoc(udg_Caster), 112.00, 270.00), "Abilities\\Spells\\Human\\Thunderclap\\ThunderClapCaster.mdl" )
    call DestroyEffect( GetLastCreatedEffectBJ() )
    call AddSpecialEffectLocBJ( PolarProjectionBJ(GetUnitLoc(udg_Caster), 112.00, 315.00), "Abilities\\Spells\\Human\\Thunderclap\\ThunderClapCaster.mdl" )
    call DestroyEffect( GetLastCreatedEffectBJ() )
    call TriggerSleepAction( 1.00 )
    // 3
    set udg_Group[2] = GetUnitsInRangeOfLocMatching(224.00, udg_CasterPoint, Condition(function Trig_Light_Func080002003))
    call ForGroupBJ( udg_Group[2], function Trig_Light_Func081A )
    call AddSpecialEffectLocBJ( PolarProjectionBJ(GetUnitLoc(udg_Caster), 168.00, 0), "Abilities\\Spells\\Other\\Monsoon\\MonsoonBoltTarget.mdl" )
    call DestroyEffect( GetLastCreatedEffectBJ() )
    call AddSpecialEffectLocBJ( PolarProjectionBJ(GetUnitLoc(udg_Caster), 168.00, 45.00), "Abilities\\Spells\\Other\\Monsoon\\MonsoonBoltTarget.mdl" )
    call DestroyEffect( GetLastCreatedEffectBJ() )
    call AddSpecialEffectLocBJ( PolarProjectionBJ(GetUnitLoc(udg_Caster), 168.00, 90.00), "Abilities\\Spells\\Other\\Monsoon\\MonsoonBoltTarget.mdl" )
    call DestroyEffect( GetLastCreatedEffectBJ() )
    call AddSpecialEffectLocBJ( PolarProjectionBJ(GetUnitLoc(udg_Caster), 168.00, 135.00), "Abilities\\Spells\\Other\\Monsoon\\MonsoonBoltTarget.mdl" )
    call DestroyEffect( GetLastCreatedEffectBJ() )
    call AddSpecialEffectLocBJ( PolarProjectionBJ(GetUnitLoc(udg_Caster), 168.00, 180.00), "Abilities\\Spells\\Other\\Monsoon\\MonsoonBoltTarget.mdl" )
    call DestroyEffect( GetLastCreatedEffectBJ() )
    call AddSpecialEffectLocBJ( PolarProjectionBJ(GetUnitLoc(udg_Caster), 168.00, 225.00), "Abilities\\Spells\\Other\\Monsoon\\MonsoonBoltTarget.mdl" )
    call DestroyEffect( GetLastCreatedEffectBJ() )
    call AddSpecialEffectLocBJ( PolarProjectionBJ(GetUnitLoc(udg_Caster), 168.00, 270.00), "Abilities\\Spells\\Other\\Monsoon\\MonsoonBoltTarget.mdl" )
    call DestroyEffect( GetLastCreatedEffectBJ() )
    call AddSpecialEffectLocBJ( PolarProjectionBJ(GetUnitLoc(udg_Caster), 168.00, 315.00), "Abilities\\Spells\\Other\\Monsoon\\MonsoonBoltTarget.mdl" )
    call DestroyEffect( GetLastCreatedEffectBJ() )
    // Другой СпецЭффект
    call AddSpecialEffectLocBJ( PolarProjectionBJ(GetUnitLoc(udg_Caster), 168.00, 0), "Abilities\\Spells\\Human\\Thunderclap\\ThunderClapCaster.mdl" )
    call DestroyEffect( GetLastCreatedEffectBJ() )
    call AddSpecialEffectLocBJ( PolarProjectionBJ(GetUnitLoc(udg_Caster), 168.00, 45.00), "Abilities\\Spells\\Human\\Thunderclap\\ThunderClapCaster.mdl" )
    call DestroyEffect( GetLastCreatedEffectBJ() )
    call AddSpecialEffectLocBJ( PolarProjectionBJ(GetUnitLoc(udg_Caster), 168.00, 90.00), "Abilities\\Spells\\Human\\Thunderclap\\ThunderClapCaster.mdl" )
    call DestroyEffect( GetLastCreatedEffectBJ() )
    call AddSpecialEffectLocBJ( PolarProjectionBJ(GetUnitLoc(udg_Caster), 168.00, 135.00), "Abilities\\Spells\\Human\\Thunderclap\\ThunderClapCaster.mdl" )
    call DestroyEffect( GetLastCreatedEffectBJ() )
    call AddSpecialEffectLocBJ( PolarProjectionBJ(GetUnitLoc(udg_Caster), 168.00, 180.00), "Abilities\\Spells\\Human\\Thunderclap\\ThunderClapCaster.mdl" )
    call DestroyEffect( GetLastCreatedEffectBJ() )
    call AddSpecialEffectLocBJ( PolarProjectionBJ(GetUnitLoc(udg_Caster), 168.00, 225.00), "Abilities\\Spells\\Human\\Thunderclap\\ThunderClapCaster.mdl" )
    call DestroyEffect( GetLastCreatedEffectBJ() )
    call AddSpecialEffectLocBJ( PolarProjectionBJ(GetUnitLoc(udg_Caster), 168.00, 270.00), "Abilities\\Spells\\Human\\Thunderclap\\ThunderClapCaster.mdl" )
    call DestroyEffect( GetLastCreatedEffectBJ() )
    call AddSpecialEffectLocBJ( PolarProjectionBJ(GetUnitLoc(udg_Caster), 168.00, 315.00), "Abilities\\Spells\\Human\\Thunderclap\\ThunderClapCaster.mdl" )
    call DestroyEffect( GetLastCreatedEffectBJ() )
    call TriggerSleepAction( 1.00 )
    // 4
    set udg_Group[3] = GetUnitsInRangeOfLocMatching(280.00, udg_CasterPoint, Condition(function Trig_Light_Func117002003))
    call ForGroupBJ( udg_Group[3], function Trig_Light_Func118A )
    call AddSpecialEffectLocBJ( PolarProjectionBJ(GetUnitLoc(udg_Caster), 224.00, 0), "Abilities\\Spells\\Other\\Monsoon\\MonsoonBoltTarget.mdl" )
    call DestroyEffect( GetLastCreatedEffectBJ() )
    call AddSpecialEffectLocBJ( PolarProjectionBJ(GetUnitLoc(udg_Caster), 224.00, 45.00), "Abilities\\Spells\\Other\\Monsoon\\MonsoonBoltTarget.mdl" )
    call DestroyEffect( GetLastCreatedEffectBJ() )
    call AddSpecialEffectLocBJ( PolarProjectionBJ(GetUnitLoc(udg_Caster), 224.00, 90.00), "Abilities\\Spells\\Other\\Monsoon\\MonsoonBoltTarget.mdl" )
    call DestroyEffect( GetLastCreatedEffectBJ() )
    call AddSpecialEffectLocBJ( PolarProjectionBJ(GetUnitLoc(udg_Caster), 224.00, 135.00), "Abilities\\Spells\\Other\\Monsoon\\MonsoonBoltTarget.mdl" )
    call DestroyEffect( GetLastCreatedEffectBJ() )
    call AddSpecialEffectLocBJ( PolarProjectionBJ(GetUnitLoc(udg_Caster), 224.00, 180.00), "Abilities\\Spells\\Other\\Monsoon\\MonsoonBoltTarget.mdl" )
    call DestroyEffect( GetLastCreatedEffectBJ() )
    call AddSpecialEffectLocBJ( PolarProjectionBJ(GetUnitLoc(udg_Caster), 224.00, 225.00), "Abilities\\Spells\\Other\\Monsoon\\MonsoonBoltTarget.mdl" )
    call DestroyEffect( GetLastCreatedEffectBJ() )
    call AddSpecialEffectLocBJ( PolarProjectionBJ(GetUnitLoc(udg_Caster), 224.00, 270.00), "Abilities\\Spells\\Other\\Monsoon\\MonsoonBoltTarget.mdl" )
    call DestroyEffect( GetLastCreatedEffectBJ() )
    call AddSpecialEffectLocBJ( PolarProjectionBJ(GetUnitLoc(udg_Caster), 224.00, 315.00), "Abilities\\Spells\\Other\\Monsoon\\MonsoonBoltTarget.mdl" )
    call DestroyEffect( GetLastCreatedEffectBJ() )
    // Другой СпецЭффект
    call AddSpecialEffectLocBJ( PolarProjectionBJ(GetUnitLoc(udg_Caster), 224.00, 0), "Abilities\\Spells\\Human\\Thunderclap\\ThunderClapCaster.mdl" )
    call DestroyEffect( GetLastCreatedEffectBJ() )
    call AddSpecialEffectLocBJ( PolarProjectionBJ(GetUnitLoc(udg_Caster), 224.00, 45.00), "Abilities\\Spells\\Human\\Thunderclap\\ThunderClapCaster.mdl" )
    call DestroyEffect( GetLastCreatedEffectBJ() )
    call AddSpecialEffectLocBJ( PolarProjectionBJ(GetUnitLoc(udg_Caster), 224.00, 90.00), "Abilities\\Spells\\Human\\Thunderclap\\ThunderClapCaster.mdl" )
    call DestroyEffect( GetLastCreatedEffectBJ() )
    call AddSpecialEffectLocBJ( PolarProjectionBJ(GetUnitLoc(udg_Caster), 224.00, 135.00), "Abilities\\Spells\\Human\\Thunderclap\\ThunderClapCaster.mdl" )
    call DestroyEffect( GetLastCreatedEffectBJ() )
    call AddSpecialEffectLocBJ( PolarProjectionBJ(GetUnitLoc(udg_Caster), 224.00, 180.00), "Abilities\\Spells\\Human\\Thunderclap\\ThunderClapCaster.mdl" )
    call DestroyEffect( GetLastCreatedEffectBJ() )
    call AddSpecialEffectLocBJ( PolarProjectionBJ(GetUnitLoc(udg_Caster), 224.00, 225.00), "Abilities\\Spells\\Human\\Thunderclap\\ThunderClapCaster.mdl" )
    call DestroyEffect( GetLastCreatedEffectBJ() )
    call AddSpecialEffectLocBJ( PolarProjectionBJ(GetUnitLoc(udg_Caster), 224.00, 270.00), "Abilities\\Spells\\Human\\Thunderclap\\ThunderClapCaster.mdl" )
    call DestroyEffect( GetLastCreatedEffectBJ() )
    call AddSpecialEffectLocBJ( PolarProjectionBJ(GetUnitLoc(udg_Caster), 224.00, 315.00), "Abilities\\Spells\\Human\\Thunderclap\\ThunderClapCaster.mdl" )
    call DestroyEffect( GetLastCreatedEffectBJ() )
    // 5
    call TriggerSleepAction( 1.00 )
    set udg_Group[4] = GetUnitsInRangeOfLocMatching(336.00, udg_CasterPoint, Condition(function Trig_Light_Func154002003))
    call ForGroupBJ( udg_Group[4], function Trig_Light_Func155A )
    call AddSpecialEffectLocBJ( PolarProjectionBJ(GetUnitLoc(udg_Caster), 280.00, 0), "Abilities\\Spells\\Other\\Monsoon\\MonsoonBoltTarget.mdl" )
    call DestroyEffect( GetLastCreatedEffectBJ() )
    call AddSpecialEffectLocBJ( PolarProjectionBJ(GetUnitLoc(udg_Caster), 280.00, 45.00), "Abilities\\Spells\\Other\\Monsoon\\MonsoonBoltTarget.mdl" )
    call DestroyEffect( GetLastCreatedEffectBJ() )
    call AddSpecialEffectLocBJ( PolarProjectionBJ(GetUnitLoc(udg_Caster), 280.00, 90.00), "Abilities\\Spells\\Other\\Monsoon\\MonsoonBoltTarget.mdl" )
    call DestroyEffect( GetLastCreatedEffectBJ() )
    call AddSpecialEffectLocBJ( PolarProjectionBJ(GetUnitLoc(udg_Caster), 280.00, 135.00), "Abilities\\Spells\\Other\\Monsoon\\MonsoonBoltTarget.mdl" )
    call DestroyEffect( GetLastCreatedEffectBJ() )
    call AddSpecialEffectLocBJ( PolarProjectionBJ(GetUnitLoc(udg_Caster), 280.00, 180.00), "Abilities\\Spells\\Other\\Monsoon\\MonsoonBoltTarget.mdl" )
    call DestroyEffect( GetLastCreatedEffectBJ() )
    call AddSpecialEffectLocBJ( PolarProjectionBJ(GetUnitLoc(udg_Caster), 280.00, 225.00), "Abilities\\Spells\\Other\\Monsoon\\MonsoonBoltTarget.mdl" )
    call DestroyEffect( GetLastCreatedEffectBJ() )
    call AddSpecialEffectLocBJ( PolarProjectionBJ(GetUnitLoc(udg_Caster), 280.00, 270.00), "Abilities\\Spells\\Other\\Monsoon\\MonsoonBoltTarget.mdl" )
    call DestroyEffect( GetLastCreatedEffectBJ() )
    call AddSpecialEffectLocBJ( PolarProjectionBJ(GetUnitLoc(udg_Caster), 280.00, 315.00), "Abilities\\Spells\\Other\\Monsoon\\MonsoonBoltTarget.mdl" )
    call DestroyEffect( GetLastCreatedEffectBJ() )
    // Другой СпецЭффект
    call AddSpecialEffectLocBJ( PolarProjectionBJ(GetUnitLoc(udg_Caster), 280.00, 0), "Abilities\\Spells\\Human\\Thunderclap\\ThunderClapCaster.mdl" )
    call DestroyEffect( GetLastCreatedEffectBJ() )
    call AddSpecialEffectLocBJ( PolarProjectionBJ(GetUnitLoc(udg_Caster), 280.00, 45.00), "Abilities\\Spells\\Human\\Thunderclap\\ThunderClapCaster.mdl" )
    call DestroyEffect( GetLastCreatedEffectBJ() )
    call AddSpecialEffectLocBJ( PolarProjectionBJ(GetUnitLoc(udg_Caster), 280.00, 90.00), "Abilities\\Spells\\Human\\Thunderclap\\ThunderClapCaster.mdl" )
    call DestroyEffect( GetLastCreatedEffectBJ() )
    call AddSpecialEffectLocBJ( PolarProjectionBJ(GetUnitLoc(udg_Caster), 280.00, 135.00), "Abilities\\Spells\\Human\\Thunderclap\\ThunderClapCaster.mdl" )
    call DestroyEffect( GetLastCreatedEffectBJ() )
    call AddSpecialEffectLocBJ( PolarProjectionBJ(GetUnitLoc(udg_Caster), 280.00, 180.00), "Abilities\\Spells\\Human\\Thunderclap\\ThunderClapCaster.mdl" )
    call DestroyEffect( GetLastCreatedEffectBJ() )
    call AddSpecialEffectLocBJ( PolarProjectionBJ(GetUnitLoc(udg_Caster), 280.00, 225.00), "Abilities\\Spells\\Human\\Thunderclap\\ThunderClapCaster.mdl" )
    call DestroyEffect( GetLastCreatedEffectBJ() )
    call AddSpecialEffectLocBJ( PolarProjectionBJ(GetUnitLoc(udg_Caster), 280.00, 270.00), "Abilities\\Spells\\Human\\Thunderclap\\ThunderClapCaster.mdl" )
    call DestroyEffect( GetLastCreatedEffectBJ() )
    call AddSpecialEffectLocBJ( PolarProjectionBJ(GetUnitLoc(udg_Caster), 280.00, 315.00), "Abilities\\Spells\\Human\\Thunderclap\\ThunderClapCaster.mdl" )
    call DestroyEffect( GetLastCreatedEffectBJ() )
    call SetPlayerAbilityAvailableBJ( true, 'A000', GetOwningPlayer(udg_Caster) )
    set udg_Caster = null
    call RemoveLocation(udg_CasterPoint)
    call DestroyGroup(udg_Group[0])
    call DestroyGroup(udg_Group[1])
    call DestroyGroup(udg_Group[2])
    call DestroyGroup(udg_Group[3])
    call DestroyGroup(udg_Group[4])
endfunction

//===========================================================================
function InitTrig_Light takes nothing returns nothing
    set gg_trg_Light = CreateTrigger(  )
    call TriggerRegisterAnyUnitEventBJ( gg_trg_Light, EVENT_PLAYER_UNIT_SPELL_EFFECT )
    call TriggerAddCondition( gg_trg_Light, Condition( function Trig_Light_Conditions ) )
    call TriggerAddAction( gg_trg_Light, function Trig_Light_Actions )
endfunction
Загруженные файлы