NazarPunk #1 - 13 часов назад 2

» WarCraft 3 / Заклинания на заказ

как мне ее сделать если у меня там из нескольких скилов собрано все?
и можно по подробнее про таймер
Про них столько уже статей написали, что такие вопросы только ленивые задают.
NazarPunk #2 - 14 часов назад 0

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

у тебя воскрешение мультиплеерное?
В статье всё мультиплэерно-мультиюнитно))
NazarPunk #3 - 15 часов назад (отредактировано ) 0

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

Крест сделан из обычного здания, который ремонтируют союзные герои.
Не всегда герои умеющие ремонтировать подходят. Можно сделать проще: создать эффектом могилку и сверху полоской отображать воскрешение. Ну а находящиеся рядом союзные герои просто ускоряют процесс)) Так как полоска через юнита, ей можно дать ауру регена хп, чтоб обоим выгода была)
NazarPunk #4 - 16 часов назад 0

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

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

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

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

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

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

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

Преждевременная оптимизация — корень всех зол.
В статье показан принцип действия с минимальным количеством кода. В реальной карте могут быть дополнительные условия и ограничения, только после которых есть смысл заниматься оптимизацией.
NazarPunk #8 - 17 часов назад (отредактировано ) 0

» WarCraft 3 / Заклинания на заказ

почему?(
Потому что на скриншоте есть большая красная стрелочка.
Потому что используется событие Юнит атакован.
NazarPunk #9 - 17 часов назад 0

» WarCraft 3 / Заклинания на заказ

Дальше можно не смотреть
прикреплены файлы
NazarPunk #10 - 17 часов назад 0

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

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

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

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

» WarCraft 3 / Квесты

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

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

Как наложить на юнита спелл напрямую, без использования этого костыля?
Написать в Blizzard, чтоб добавили эту возможность или использовать мемхак.
NazarPunk #14 - 19 часов назад 1

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

А подскажите пожалуйста, как тогда можно сделать ауру, наносящую урон всем наземным противникам?
Можете взять ауру регенерации и выставить ей отрицательные значения. Только учтите, что этот способ не наносит урон и соответственно ни отследить от неё урон, ни получить награду за юнитов вы не сможете.
NazarPunk #15 - 19 часов назад (отредактировано ) 1

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

I_am_Polkovnik, зачем читать статьи в которых есть пример каста ниоткуда?
NazarPunk #16 - 22 часа назад 6

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

Стандартными средствами никак, только отлавливать появление, создавать рядом дамми-дерево и кастовать спэлл.
NazarPunk #17 - 1 день назад 5

» WarCraft 3 / Квесты

Мне наработка нужна
Опять вопрос из серии: мне лень открывать карты, сделайте за меня рабы.
NazarPunk #18 - 1 день назад 0

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

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

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

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

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

БезликийСектант, Неужели так сложно головой подумать?
0 - нет способности
1- уровень способности 1
2- уровень способности 2
...
NazarPunk #21 - 2 дня назад (отредактировано ) 6

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

Вопрос в том, что мне делать с ней при каждом новом присвоении.
Ничего
я не могу понять, глобальная она или локальная
Почитайте про локальные переменные. Статьи тоже будут полезны.
Не знаю, не понимаю, что лучше, или оба, но в какой последовательности?
Я тоже ничего не понимаю, когда не вижу кода.
NazarPunk #22 - 2 дня назад (отредактировано ) 0

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

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

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

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

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

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

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

какой смысл?
Потещу новые нативки, да и зачем хорошей наработке пропадать?
NazarPunk #26 - 2 дня назад (отредактировано ) 0

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

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

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

Утечки если и есть, то только в GetUnitLoc(udg_Caster) и PolarProjectionBJ(...). больше не нашёл.
Да всего-то
прикреплены файлы
NazarPunk #28 - 2 дня назад (отредактировано ) 1

» 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
прикреплены файлы
NazarPunk #29 - 3 дня назад 0

» WarCraft 3 / Воскрешение героя

Воскрешение героя через "Камень воскрешения"
Это по принципу: когда герой умирает, находим ближайший камень воскрешения, тикаем таймер и воскрешаем?
NazarPunk #30 - 4 дня назад 1

» WarCraft 3 / [lua] Дамми каст

планируется ли в будущем статья про фреймы?
Планируется, но ещё думаю, каким образом на подстатьи разбить ибо много разной информации.
NazarPunk #31 - 4 дня назад 2

» WarCraft 3 / Как правильно спавнить мобом, чтобы они не застревали?

либо делать адекватно и не ставить такие усложняющие вещи в местах, где что-то должно спавниться
Там наверно рект на полкарты и просто в рандомных координатах всё спавнится.
NazarPunk #32 - 4 дня назад 3

» WarCraft 3 / Как правильно спавнить мобом, чтобы они не застревали?

Обозначте точки спавна и создавайте юнитов вокруг них со случайным углом и радиусом, потом делайте SetUnitPosition чтоб юнита выбросило из декорации.
NazarPunk #33 - 4 дня назад (отредактировано ) 3

» WarCraft 3 / Возможно ли в ИГРЕ изменить параметры способности?

Описание менять или новыми нативками BlzSetAbilityTooltip, BlzSetAbilityExtendedTooltip или мемхаком. Дополнительные эффекты можно даммиком накладывать.
NazarPunk #34 - 4 дня назад 1

» WarCraft 3 / Смена модели

Наштампуйте кучу одинаковых юнитов с разными моделями или используйте мемхак.
NazarPunk #35 - 4 дня назад 0

» WarCraft 3 / Вес карт

Это размер файлов в карте? Я просто не умею сохранять карту как папку(
Это я менеджер импорта по F12 открыл. Притом меньше 100кб даже скринить не стал.
NazarPunk #36 - 4 дня назад (отредактировано ) 0

» WarCraft 3 / Смена модели

на 126 модель менялась мемхаком... и щас меняется.. но его все бояться
На ваши мемхаки кукисов не напасёшся.
мне нужно тупо сменить модель без потери характеристик прежнего юнита!
Это юнит или герой? На последнем патче поля юнита можно менять, правда теряются кд и бафы. Вам с какой целью модель то менять и на каком патче?
NazarPunk #37 - 4 дня назад 0

» WarCraft 3 / Вес карт

БезликийСектант, незачем карты в личку кидать, нужно было к вопросу прикрепить.
И вы считать умеете?
прикреплены файлы
NazarPunk #38 - 4 дня назад (отредактировано ) 0

» WarCraft 3 / Вес карт

Надо скинуть карту?
Это нужно было изначально делать, чтоб не гадать на кофейной гуще.
NazarPunk #39 - 4 дня назад 0

» WarCraft 3 / Заклинания на заказ

Если с отбрасыванием такие проблемы можно просто чтоб доп урон шол всадникам, тоже норм будет
Всадник определяется по этому полю?
Какой патч?
прикреплены файлы
NazarPunk #40 - 4 дня назад 0

» WarCraft 3 / Вес карт

А триггеры занимают место на карте?
Триггеры какбы в текстовом виде хранятся, врятли вы 8МБ триггеров наплодили.
И разные звуки.
В менеджере импорта совсем пусто?
NazarPunk #41 - 4 дня назад (отредактировано ) 0

» WarCraft 3 / [lua] Дамми каст

А так как даммика никто не убивает, то и смысла менять данное поле нет.
Я где-то видел системы, где нулевое значение этого поля обозначало даммиков. Решил обнулить для совместимости.
Не совсем, у совы Colision Size равен 16.
Исправлено
Лично я даммикам вообще pathing отключаю.
Замечал такой баг, что юнит без движения не перемещается.
Ещё стоит Art - Projectile Launch - Z (launchZ) поставить на 0 и Art - Propulsion Window (propWin) на 180.
Это ж влияет на запуск снарядов от даммика, но тогда нужно будет ещё высоту полёта к кастеру приспосабливать.
Я ещё Max Pitch и Max Roll зануляю
Я пытался указать только необходимые поля. Если у кого-то возникнут проблемы с заклинаниями, поправлю и дополню статью.
реген отключаю, дабы таймер регена юнита потенциально не тикал.
Я тоже в приступах перфекционизма так делаю, но если не плодить даммиков сотнями, прирост будет незаметен.
NazarPunk #42 - 4 дня назад (отредактировано ) 0

» WarCraft 3 / Заклинания на заказ

Ну просто чтобы при атаке немного назад отбрасывало их (по типу баша баратрума)
Что делать если:
  • сзади другие юниты?
  • всадника окружили копейщики?
  • атакуют в спину?
  • я не знаю, кто такой Баратрум?
NazarPunk #43 - 4 дня назад 0

» WarCraft 3 / Вес карт

Сохраните карту как папку и посмотрите на вес файлов.
NazarPunk #44 - 4 дня назад 0

» WarCraft 3 / Заклинания на заказ

и отбрасывало их
По каким законам физики должно быть отбрасывание?
NazarPunk #45 - 4 дня назад 0

» WarCraft 3 / Испытание 1.1b

ну так можно и в стандартном сражении сделать. Не нарушаю традиции.
Нарушаете
ну только что же всё работало, ёлки-палки.
Задумайтесь о переходе на языки программирования
прикреплены файлы
NazarPunk #46 - 4 дня назад 0

» WarCraft 3 / [lua] Дамми каст

Там это значение никак не фигурирует.
Потому, что оно не используется для расчёта набранного героем опыта))
NazarPunk #49 - 4 дня назад (отредактировано ) 0

» WarCraft 3 / [lua] Дамми каст

Это же вообще другое поле в РО. Или это опять кривой перевод?
Опыт из юнитов считается из игровых констант. Здесь есть формулы.
Да и название в РО намекает
Я это значение использую для задания дополнительных типов юнитов.
прикреплены файлы
NazarPunk #50 - 4 дня назад 0

» WarCraft 3 / Заклинания на заказ

Я не силён в jass и вообще не понимаю, что и где там находится.
А как вы собрались работать с вытащенными заклинаниями, которые будут на jass?