19

» WarCraft 3 / Карта вылетает :(

Лол, "создать труп", нельзя ставить 12. Метод тыка побеждает
Загруженные файлы
19

» WarCraft 3 / Типы целей в Warcraft 3

У многих абилок нежити стоит галочка "организм", но почти ни у одной абилки белых людей она не стоит. Мое воображение говорит мне, что организм может подразумевать нежить, ибо странно, что нет такой классификации в типе целей. Если нет, то как можно указать нежить как цель, не прописывая всем нежитям "самоубийцу"?
19

» WarCraft 3 / Как сделать свиток телепорта из доты?

Вообще-то есть такой приказ.
Хорошо, буду знать. Это помогает мне в моем вопросе?..(
Darknessay, Канал не чанеллистя в предметах и точка, это могут лишь некоторые абилки.
Слушай, но скролл в доте же ченнелится, верно?
Я пробовал добавить способность в спеллбук и при касте предмета добавлять его, блокировать и заставлять юнита кастовать оттуда способность, в надежде что он сможет читерным образом, через приказ, скастовать спелл из скрытого бука - не работает.
Я не шарю в тот джасс код. Если есть возможность обьяснить, что со свитком в д, то обьясните. Может там искусственный ченнел?
19

» WarCraft 3 / Как сделать свиток телепорта из доты?

quq_CCCP:
Darknessay, оно и неудивительно. Где триггер с событием юнит завершает применение способности, юнит начинает применять способность, триггер время истекло.
Все вейты нафиг удаляем, это никогда не будет работать...
Необходимо отловить начало каста, потом следить сбили ли каст и найти ближайшее здание возле точки телепорта, если время вышло и юниту не сбили телепорт, переместить юнита в ближашую точку возде здания, иначе ничего не делать...
код свитка из доты
//Calls:
//    M7I
//    Q3I
//Functions as argument:
//    ZWO
function ZXO takes nothing returns boolean
    local trigger t = GetTriggeringTrigger()
    local integer MDI = GetHandleId(t)
    local unit MJI = LoadUnitHandle(XY, MDI, 14)
    local unit TFI = LoadUnitHandle(XY, MDI, 17)
    local real x = LoadReal(XY, MDI, 6)
    local real y = LoadReal(XY, MDI, 7)
    local unit ZHO = LoadUnitHandle(XY, MDI, 448)
    local unit ZZO = LoadUnitHandle(XY, MDI, 447)
    local ubersplat O11 = LoadUbersplatHandle(XY, MDI, 131)
    local integer M4I = LoadInteger(XY, MDI, 34)
    local real BH1 = LoadReal(XY, MDI, 57)
    local real EJ1 = LoadReal(XY, MDI, 442)
    local integer id = GetPlayerId(GetOwningPlayer(MJI))
    local boolean ZVO = false
    local integer i = 0
    local integer CS1

    if GetTriggerEventId() == EVENT_UNIT_SPELL_ENDCAST then
        if GetSpellAbilityId() == 'A231' then
            call DestroyEffect(LoadEffectHandle(XY, MDI, 175))
            call DestroyEffect(LoadEffectHandle(XY, MDI, 176))
            call DestroyEffect(LoadEffectHandle(XY, MDI, 177))
            call SaveInteger(XY, GetHandleId(MJI), 4256, 2)
            call KillUnit(ZHO)
            call KillUnit(ZZO)
            call DestroyUbersplat(O11)
            call FlushChildHashtable(XY, MDI)
            call M7I(t)
            call UnitRemoveType(TFI, UNIT_TYPE_PEON)
        endif
    elseif GetTriggerEventId() == EVENT_UNIT_DEATH then
        call DestroyEffect(LoadEffectHandle(XY, MDI, 175))
        call DestroyEffect(LoadEffectHandle(XY, MDI, 176))
        call DestroyEffect(LoadEffectHandle(XY, MDI, 177))
        call UnitRemoveType(TFI, UNIT_TYPE_PEON)
        call SaveInteger(XY, GetHandleId(MJI), 4256, 2)
        call KillUnit(ZHO)
        call KillUnit(ZZO)
        call DestroyUbersplat(O11)
        call FlushChildHashtable(XY, MDI)
        call M7I(t)
    else
        call DestroyEffect(LoadEffectHandle(XY, MDI, 175))
        call DestroyEffect(LoadEffectHandle(XY, MDI, 176))
        call DestroyEffect(LoadEffectHandle(XY, MDI, 177))
        call DestroyEffect(AddSpecialEffect("Abilities\\Spells\\Human\\MassTeleport\\MassTeleportTarget.mdl", GetUnitX(MJI), GetUnitY(MJI)))
        call SaveInteger(XY, GetHandleId(MJI), 4256, 2)
        call KillUnit(ZHO)
        call KillUnit(ZZO)
        call DestroyUbersplat(O11)
        call FlushChildHashtable(XY, MDI)
        call M7I(t)
        call UnitRemoveType(TFI, UNIT_TYPE_PEON)
        call Q3I(GetUnitX(TFI) - 1, GetUnitY(TFI) - 1, 240)
        call SetUnitX(MJI, GetUnitX(TFI) - 1)
        call SetUnitY(MJI, GetUnitY(TFI) - 1)
        call PauseUnit(MJI, true)
        call PauseUnit(MJI, false)
        set CK = MJI
        call ExecuteFunc("ZWO")
        call DestroyEffect(AddSpecialEffect("Abilities\\Spells\\Human\\MassTeleport\\MassTeleportTarget.mdl", GetUnitX(MJI), GetUnitY(MJI)))
    endif
    set t = null
    set MJI = null
    set ZHO = null
    set ZZO = null
    set O11 = null
    set TFI = null
    return false
endfunction

//Calls:
//    N7I
//    ZAO
//    PII
//    R1I
//    R5I
//    Z5O
//    Z6O
//    Z4O
//    Z3O
//    QAI
//    I51
//Functions as argument:
//    ZGO
function ZYO takes nothing returns nothing
    local unit MJI = GetTriggerUnit()
    local unit TFI = GetSpellTargetUnit()
    local location l
    local real x
    local real y
    local real a
    local trigger t
    local integer MDI
    local unit ZHO
    local unit ZZO
    local ubersplat O11
    local integer id = GetPlayerId(GetOwningPlayer(MJI))
    local integer M4I
    local real ZJO

    set t = CreateTrigger()
    set MDI = GetHandleId(t)
    call SaveInteger(XY, GetHandleId(MJI), 4256, 1)
    if TFI == null then
        set l = GetSpellTargetLoc()
        set x = GetLocationX(l)
        set y = GetLocationY(l)
        if x == LU0[id] and y == M00[id] then
            if N7I(GetOwningPlayer(MJI)) then
                set x = GetUnitX(LQ)
                set y = GetUnitY(LQ)
            else
                set x = GetUnitX(BF0)
                set y = GetUnitY(BF0)
            endif
        endif
        set TFI = ZAO(MJI, x, y)
        call RemoveLocation(l)
    else
        set x = GetUnitX(TFI)
        set y = GetUnitY(TFI)
    endif
    if PII(x, y, GetUnitX(TFI), GetUnitY(TFI)) > M50 then
        set a = Atan2(y - GetUnitY(TFI), x - GetUnitX(TFI))
        set x = GetUnitX(TFI) + M50 * Cos(a)
        set y = GetUnitY(TFI) + M50 * Sin(a)
    elseif PII(x, y, GetUnitX(TFI), GetUnitY(TFI)) < 50 then
        set a = Atan2(y - GetUnitY(TFI), x - GetUnitX(TFI))
        set x = GetUnitX(TFI) + 120 * Cos(a)
        set y = GetUnitY(TFI) + 120 * Sin(a)
    endif
    if IsPointInRegion(XN, x, y) == true then
        set a = Atan2(y - GetUnitY(TFI), x - GetUnitX(TFI))
        set x = GetUnitX(TFI) + 200 * Cos(a)
        set y = GetUnitY(TFI) + 200 * Sin(a)
    endif
    set x = R1I(x)
    set y = R5I(y)
    if (IsUnitAlly(MJI, GetLocalPlayer()) and GetLocalPlayer() != GetOwningPlayer(MJI)) or (C2 and (GetLocalPlayer() == D10 or GetLocalPlayer() == DO0)) then
        call PingMinimapEx(x, y, 3, 255, 255, 255, false)
    endif
    set ZZO = CreateUnit(GetOwningPlayer(MJI), Z5O(id), x, y, 0)
    set ZHO = CreateUnit(GetOwningPlayer(MJI), Z6O(id), GetUnitX(MJI), GetUnitY(MJI), 0)
    set O11 = CreateUbersplat(GetUnitX(MJI), GetUnitY(MJI), "SCTP", 255, 255, 255, 255, false, false)
    if IsUnitVisible(MJI, GetLocalPlayer()) == true then
        call SetUbersplatRenderAlways(O11, true)
    else
        call SetUbersplatRenderAlways(O11, false)
    endif
    set M4I = Z4O(GetPlayerId(GetOwningPlayer(MJI)), x, y)
    set ZJO = 3
    if M4I > 0 then
        set ZJO = 4.5 + 0.5 * M4I
    endif
    call Z3O(GetPlayerId(GetOwningPlayer(MJI)), x, y)
    if M4I > 0 then
        call SetUnitAnimationByIndex(ZHO, 2)
        call SetUnitAnimationByIndex(ZZO, 2)
    endif
    call TriggerRegisterTimerEvent(t, ZJO - 3, false)
    call TriggerRegisterTimerEvent(t, ZJO, false)
    call TriggerRegisterUnitEvent(t, MJI, EVENT_UNIT_SPELL_ENDCAST)
    call TriggerAddCondition(t, Condition(function ZGO))
    call QAI(GetOwningPlayer(MJI), ZJO, x, y, 200)
    call SaveUnitHandle(XY, MDI, 447, ZZO)
    call SaveUnitHandle(XY, MDI, 448, ZHO)
    call SaveReal(XY, MDI, 6, (x * 1.0))
    call SaveReal(XY, MDI, 7, (y * 1.0))
    call SaveReal(XY, MDI, 442, (TimerGetElapsed(M) * 1.0))
    call SaveReal(XY, MDI, 57, (ZJO * 1.0))
    call SaveUbersplatHandle(XY, MDI, 131, O11)
    call SaveUnitHandle(XY, MDI, 14, MJI)
    call SaveInteger(XY, MDI, 34, 0)
    call I51(MJI, XF, x, y, 2400)
    set MJI = null
    set TFI = null
    set ZHO = null
    set ZZO = null
    set l = null
    set t = null
    set O11 = null
endfunction

//Calls:
//    N7I
//    ZFO
//    QAI
//    I51
//Functions as argument:
//    ZXO
function ZKO takes nothing returns nothing
    local unit MJI = GetTriggerUnit()
    local unit TFI = GetSpellTargetUnit()
    local location l
    local real x
    local real y
    local real a
    local trigger t
    local integer MDI
    local unit ZHO
    local unit ZZO
    local ubersplat O11
    local integer id = GetPlayerId(GetOwningPlayer(MJI))
    local integer M4I
    local real ZJO

    set t = CreateTrigger()
    set MDI = GetHandleId(t)
    if TFI == null then
        set l = GetSpellTargetLoc()
        set x = GetLocationX(l)
        set y = GetLocationY(l)
        if x == LU0[id] and y == M00[id] then
            if N7I(GetOwningPlayer(MJI)) then
                set x = GetUnitX(LQ)
                set y = GetUnitY(LQ)
            else
                set x = GetUnitX(BF0)
                set y = GetUnitY(BF0)
            endif
        endif
        set TFI = ZFO(MJI, x, y)
        call RemoveLocation(l)
    endif
    call SaveInteger(XY, GetHandleId(MJI), 4256, 1)
    set x = GetUnitX(TFI)
    set y = GetUnitY(TFI)
    if (IsUnitAlly(MJI, GetLocalPlayer()) and GetLocalPlayer() != GetOwningPlayer(MJI)) or (C2 and (GetLocalPlayer() == D10 or GetLocalPlayer() == DO0)) then
        call PingMinimapEx(x, y, 3, 255, 255, 255, false)
    endif
    set O11 = CreateUbersplat(GetUnitX(MJI), GetUnitY(MJI), "SCTP", 255, 255, 255, 255, false, false)
    if IsUnitVisible(MJI, GetLocalPlayer()) == true then
        call SetUbersplatRenderAlways(O11, true)
    else
        call SetUbersplatRenderAlways(O11, false)
    endif
    set ZJO = 3
    call UnitAddType(TFI, UNIT_TYPE_PEON)
    call TriggerRegisterTimerEvent(t, ZJO, false)
    call TriggerRegisterUnitEvent(t, MJI, EVENT_UNIT_SPELL_ENDCAST)
    call TriggerRegisterUnitEvent(t, TFI, EVENT_UNIT_DEATH)
    call TriggerAddCondition(t, Condition(function ZXO))
    call QAI(GetOwningPlayer(MJI), ZJO, x, y, 200)
    call SaveReal(XY, MDI, 6, (x * 1.0))
    call SaveReal(XY, MDI, 7, (y * 1.0))
    call SaveReal(XY, MDI, 442, (TimerGetElapsed(M) * 1.0))
    call SaveReal(XY, MDI, 57, (ZJO * 1.0))
    call SaveUbersplatHandle(XY, MDI, 131, O11)
    call SaveUnitHandle(XY, MDI, 14, MJI)
    call SaveUnitHandle(XY, MDI, 17, TFI)
    call SaveInteger(XY, MDI, 34, 0)
    call SaveEffectHandle(XY, MDI, 175, AddSpecialEffectTarget("Abilities\\Spells\\Human\\MassTeleport\\MassTeleportTo.mdl", MJI, "origin"))
    call SaveEffectHandle(XY, MDI, 176, AddSpecialEffectTarget("Abilities\\Spells\\Human\\MassTeleport\\MassTeleportCaster.mdl", MJI, "origin"))
    call SaveEffectHandle(XY, MDI, 177, AddSpecialEffectTarget("Abilities\\Spells\\Human\\MassTeleport\\MassTeleportTo.mdl", TFI, "origin"))
    call I51(MJI, XF, x, y, 2400)
    set MJI = null
    set TFI = null
    set ZHO = null
    set ZZO = null
    set l = null
    set t = null
    set O11 = null
endfunction

//Calls:
//    STI
//    ZYO
//    ZKO
function ZLO takes nothing returns nothing
    if GetSpellAbilityId() == 'A1R5' and STI(GetTriggerUnit()) == false then
        call ZYO()
    endif
    if GetSpellAbilityId() == 'A231' then
        call ZKO()
    endif
endfunction
А вот сам спелл.
Я делаю не точную копию свитка из доты, у меня есть четкие области куда юнита должно ТПшить, мне нужно только сделать чтобы телепортация была:
  1. в предмете
  2. ченнелинг
Я втыкал в предмет и канал и торнадо, оно никак не ченнелится из итема. Почему ты рассказываешь мне что у меня что то не так в тригорах, если спелл даже не ченнелится в итеме и потому не работает? Может я в предмете накосячил, хз, вот предмет еще:
Загруженные файлы
19

» WarCraft 3 / Как сделать свиток телепорта из доты?

Doc:
Сказано же, пауза чтобы прервать торнадо при удачном касте
Прошу прощения. Я морально уничтожен, не могу думать, или просто не увидел.
DracoL1ch:
вызов торнадо с длительностью 20 с
по истечению определенного времени назначать новые координаты юниту и паузить-анпаузить для прерывания каста
Спасибо.
19

» WarCraft 3 / Как сделать свиток телепорта из доты?

Clamp:
Darknessay, есть приказ "оглушён (пауза)", id не помню, но суть в том, что у юнита в паузе именно он
  1. Не приказ, а бафф.
  2. В стане нельзя отдавать приказы.
  3. В паузе у юнита пауза, никак не связанная ни с какими баффами или приказами.
19

» WarCraft 3 / Как сделать свиток телепорта из доты?

DracoL1ch:
вызов торнадо с длительностью 20 с
по истечению определенного времени назначать новые координаты юниту и паузить-анпаузить для прерывания каста
Не догнал про пауз-анпауз. Торнадо дает ченнел в предмете? Если нет, то почему именно торнадо, а не любой поинт-таргет? И зачем мне пауза, если в ней у юнита нет приказов, чтобы он мог прервать ТП при желании?
19

» WarCraft 3 / Канал в предмете не channelится?

Maniac_91:
А выставить задержку перед запуском обычного телепорта не пробовали?
Обычный телепорт делает неуязвимым и его нельзя прервать.
19

» WarCraft 3 / Артес из загрузочного экрана TFT

Анимации просто отвратные. Этот гейский стояк, где у него ладошки к бёдрам прилегают и коленки рядышком. Этот гейский валк, будто единственной гениальной анимации ходьбы, подходящей всем бадасс чилл персам ещё не придумали - walk леорика(будь то из хотса или из доты).
Да, я знаю, что это анимации из ВоВ. Я и говорю о том, что в ВоВ гейские анимации. Притом, насколько я помню, у Артаса в вове всё таки нормальный сет анимок, более такой чилл и бадасс, но автор решил прикрутить этой модели вот этот дебильный сет. Впрочем, всё равно он там бегает как пёс, размахивая мечом у себя перед хлебалом.
Им нужно брать пример для анимации со всяких сенен анимешек, где всякие Гоки показывают что значит брутальный мужицкий станд, всякие Ичиги показывают что такое тру пафосный валк - когда персонаж стремится лицом вперед под наклоном, а меч держит на вытянутой руке, направленным взад-вбок, так что лезвие едва касается земли(конечно, опять же, Личу в тяжелых доспехах больше подойдет чилл волкин, аки "эвридей ама стар ин зе сити", как у Леорика).
19

» WarCraft 3 / Hide unit через GetLocalPlayer() вызовет десинк?

PT153:
pro100master:
Прозрачность круто но не скрыть прогресс бар хп
Можно выключить преселект.
Можно сделать юнит неуязвимым зданием .
19

» WarCraft 3 / Как получить игрока, применяющего способность нейтрал. здания?

pro100master:
можно сделать основу как "поставка ресурсов" там есть галочка манупулировать игрока приказа он работает как канал что позволяет скрыть счетчик количеств предметов или юнитов
Равкод 'AAns' копируй и меняй приказы на свой и поставить галку "заряд игрока владельца" = true
в ней можете поставить дерево или золото или маны
Кидалово, не работает эта способность. Ещё раз, способность применяется нейтральным зданием, от лица нейтрального здания, под предводительством 16-го игрока. Но способность нажимаю я, Игрок 1, и мне интересно, можно ли сослаться на этого игрока-Меня, который применил способность в нейтральном здании.
KPOKODIL:
Сделай предметы на основе книг (что бы при покупке сразу использовались ) . Ну а дальше просто - отлавливаешь юзанье предмета , и даёшь способность тому , кто предмет задействовал.
Самый очевидный и муторный вариант. хд
19

» WarCraft 3 / Предмет: характеристики - название, что это?

То есть у пассивных предметов этот пункт бесполезен? Я могу просто none там попрописывать?
19

» WarCraft 3 / Библиотека перестала работать во время игры

library Flyout
private function MoveUnit takes unit u, real spd, real dir returns nothing
if IsTerrainPathable(GetUnitX(u),GetUnitY(u)+spd*Sin(dir),PATHING_TYPE_FLYABILITY)==false
SetUnitY(u,GetUnitY(u)+spd*Sin(dir))
endif
if IsTerrainPathable(GetUnitX(u)+spd*Cos(dir),GetUnitY(u),PATHING_TYPE_FLYABILITY)==false
SetUnitX(u,GetUnitX(u)+spd*Cos(dir))
endif
set u = null
endfunction
private function Parabola takes real h, real d, real x returns real
return (4 * h / d) * (d - x) * (x / d)
endfunction
private struct MUE_Struct
private static timer t = CreateTimer()
private static integer m[]
private static integer MUI = -1
unit c
real dist
integer check
real r
real r2 = 0
real fly
real rmax
real sr
real a
private method StopAction takes integer j returns nothing
set m[j] = m[MUI]
set MUI = MUI - 1
if MUI <= -1 then
call PauseTimer(t)
set MUI = -1
endif
endmethod
private static method Loop takes nothing returns nothing
local thistype this
local integer i = 0
loop
exitwhen i > MUI
set this = m[i]
if r<rmax then
set r = r + 0.01
MoveUnit(c,dist,a)
if check == 1 then
SetUnitFlyHeight(c,Parabola(fly,sr,r2),0)
set r2 = r2+dist
endif
else
if check == 1 then
SetUnitFlyHeight(c,GetUnitDefaultFlyHeight(c),0)
endif
set c = null
call StopAction(i)
call destroy()
endif
set i = i + 1
endloop
endmethod
public static method MUE_Start takes unit NewC, real NewDist,real NewRmax, real NewA,integer NewCheck,real NewFly returns nothing
local thistype this = thistype.create()
set MUI = MUI + 1
set m[MUI] = this
set c = NewC
set r = 0
set rmax = NewRmax
set dist = NewDist
set sr = NewDist
set dist = (dist/(rmax*100))
set check = NewCheck
set fly = NewFly
set r2= 0
if check == 1 then
endif
set a = NewA
if MUI == 0 then
call TimerStart(t, 0.01, true, function thistype.Loop)
endif
set NewC = null
endmethod
endstruct
function Flyout takes unit c,real distance,real timeformoving,real angle,integer checkingfly,real flyheight returns nothing
call MUE_Struct.MUE_Start(c,distance,timeformoving,angle*bj_DEGTORAD,checkingfly,flyheight)
c = null
endfunction
endlibrary
19

» WarCraft 3 / Библиотека перестала работать во время игры

ledoed:
ой сорян над было эт в статическом методе делать скинул бы ты библию целиком
Так еще раз, что нужно сделать и куда?
19

» WarCraft 3 / Библиотека перестала работать во время игры

ledoed:
в методе StopAction
пропиши в самом верху
set m[j].destroy() должно помоч
Спасибо. Видимо ты разбираешься в муи)
Я попробую, но т.к. я не знаю как повторить это замыкание, я и не могу проверить помогло ли, так что подожду еще ответов...
ledoed:
set m[j].destroy()
Если прописать в самом верху метода, выдает синтаксис эррор(чето end of line), а если в самом низу - просто вылетает JassHelper при сохранении...
19

» WarCraft 3 / Помогите найти ошибку, пожалуйста

Юнитов поднимает тогда же, когда и опускает, потому что я удаляю их из DedG[3], но забываю удалить из группы снарядов, таким образом, к тем кто попал под падение, уже навечно задействован акт снарядов(опускание), пока они в DedG[3]
Загруженные файлы
19

» WarCraft 3 / Почему даммик не кастует способность? =(

16GB:
0.06 время жизни слишком мало ставь хотя бы 0.3
0.06 - это четко высчитанное таймером время жизни, необходимое для каста с 0.000 точкой броска и 3.00 поворотом, при изначальном положении при 180 градусов лицом от цели. Я специально это делал, специально перепрописывал везде на 0.06 и с тех пор все идеально работало.
quq_CCCP:
Ты знаешь только что созданый даммик невидит ничего примерно 0.25 сек.
Способность на союзников, вижен там априори есть. Обратите внимание на ключевую часть текста: "Четко кастуется на двух героев и четко НЕ кастуется на двух других."
19

» WarCraft 3 / Почему даммик не кастует способность? =(

quq_CCCP:
Если че, то нужно давать даммику вижен над целью, он может не видеть цель. Ненадо никаких вейтов, просто задайте время жизни даммику на 5 сек.
Вижен есть, цель-союзник с общими виженом
19

» WarCraft 3 / Превратиться в медведя

leroydraigo:
Пиши в переменные просто.
З.Ы.
Русифицированные триггеры, а карту делаешь на английском, это какая-то новая форма извращений?
Они не русифицированные. Это текста самого редактора на русском из-за русского варика("приводит способность в действие"), но все действия и условия на английском.
Куда в переменную? Даже если сделаю так, то мне нужно уровень этих способностей в новой форме устанавливать, а я не знаю какой ивент для этого выбрать, потому что при стандартных ивентах к этой способности, уровни устанавливаются только при обратной активации.
19

» WarCraft 3 / Текстовый ХП-бар

nvc123:
если не ошибаюсь то тексттаг можно крепить к юниту
В любом случае, он крепится неровно(там центр крепления - это начало текста, поэтому он смещен вправо). Я его смещенным на 70 влево всегда ставил, чтоб он ровно над героем был, так что мне нужны именно коорды.
Камон, ребят, я знаю что для вас, джассеров, это несложно. Сделайте пожалуйста наработку:с
19

» WarCraft 3 / Текстовый ХП-бар

nvc123:
если не ошибаюсь то тексттаг можно крепить к юниту
для отображения бара только тем кто видит героя нужно юзать локалплеер
на гуи этого не сделать
вывод - учи jass
А крепление к герою не утечно?
Потому я прошу наработку...
19

» WarCraft 3 / Что нужно зажать чтобы ставить декорации друг на друга?

Пушистый:
I. Можно просто зажать клавишу Shift. Это позволит накладывать декорации друг на друга при наличии текстуры путей у них (при данном методе нельзя поставить декорации непосредственно в одну точку, а только с небольшим расстоянием).
II. Можно это сделать по-другому. Убрать у необходимых декораций текстуру путей, поставить их на карте и вернуть ее в настройках объектов (текстуру путей).
III. Можно также сделать декорации без текстуры путей, поставить их в одну точку и подставить под них блокиратор, но в данной ситуации второй способ предпочтительнее.
Я вот нажимал шифт, а декор не ставится куда хочу, ну я и думаю чё за дела, может там не шифт был, а я уже залип как то, но нет, шифт же, так какого черта...(
В любом случае, спасибо.