XGM Forum
Сайт - Статьи - Проекты - Ресурсы - Блоги

Форуме в режиме ТОЛЬКО ЧТЕНИЕ. Вы можете задать вопросы в Q/A на сайте, либо создать свой проект или ресурс.
Вернуться   XGM Forum > Warcraft> Академия: форум для вопросов> Jass
Ник
Пароль
Войти через VK в один клик
Сайт использует только имя.

Ответ
 
Castiel

offline
Опыт: 2,093
Активность:
Группа иллюзий
Не могу понять ! Беру в группу все иллюзиий принадлежащие к Кастующему юниту. Да юниты бурутся в группу , но вот проблема с дамми юнитом, когда он должен появится над каждой из иллюзий и кастонуть "fanofknives", но появляется 1 дамми юнит над случайной иллюзией и кастует, а вот спецэффект который создается тоже триггерно появляется над каждой из иллюзий. Вот не могу поянт в чекм прикол!!!

Вот собстно код, но я знаю что сдесь нет ошибок. Бред какой то !!!

Код:
function DIGE takes nothing returns boolean
    return IsUnitIllusion(GetFilterUnit()) == true
endfunction

function DIAGU takes nothing returns nothing
    local location l = GetUnitLoc(GetEnumUnit())
    local unit u = CreateUnitAtLoc (GetOwningPlayer(GetSpellAbilityUnit()), 'h00I', l, 0.0)
    call UnitAddAbility( u, 'A00P' )
    call SetUnitAbilityLevel( u, 'A00P', GetUnitAbilityLevel(GetSpellAbilityUnit(), 'A00A') )
    call IssueImmediateOrderById( u, OrderId("fanofknives"))
    call UnitApplyTimedLife( u, 'BTLF', 1.50)
    call DestroyEffect(AddSpecialEffectLoc ("Objects\\Spawnmodels\\Naga\\NagaDeath\\NagaDeath.mdl", l))
    call KillUnit(GetEnumUnit())
    call PolledWait(0.5)
    call RemoveUnit(GetEnumUnit())
    call RemoveLocation(l)
    set u = null
endfunction

function Trig_Destory_Illusion_Actions takes nothing returns nothing
    local group g = CreateGroup()
    call GroupEnumUnitsOfPlayer(g, GetOwningPlayer(GetSpellAbilityUnit()), Condition(function DIGE))
    call ForGroup( g, function DIAGU )
    call DestroyBoolExpr(Condition(function DIGE))
    call DestroyGroup(g)
endfunction
Старый 19.04.2009, 15:14
Hellfim
Новичок
offline
Опыт: 79,880
Активность:
» code

Код:
globals
    player DIGEp=null
    integer DIGElvl=0
endglobals

function DIGE takes nothing returns boolean
    local unit f=GetFilterUnit()
    if IsUnitIllusion(f) then
        local real x=GetUnitX(f)
        local real y=GetUnitY(f)
        local unit u=CreateUnit (DIGEp,'h00I',x,y,0)
        call UnitAddAbility( u, 'A00P' )
        call SetUnitAbilityLevel(u,'A00P',DIGElvl)
        call IssueImmediateOrderById(u,OrderId("fanofknives"))
        call UnitApplyTimedLife(u,'BTLF',1.50)
        call DestroyEffect(AddSpecialEffect("Objects\\Spawnmodels\\Naga\\NagaDeath\\NagaDeath.mdl",x,y))
        set u=null
    endif
    set f=null
    return false
endfunction

function Trig_Destory_Illusion_Actions takes nothing returns nothing
    local group g = CreateGroup()
    set DIGEp=GetOwningPlayer(GetSpellAbilityUnit())
    set DIGElvl=GetUnitAbilityLevel(GetSpellAbilityUnit(), 'A00A')
    call GroupEnumUnitsOfPlayer(g,DIGEp, Condition(function DIGE))
    call DestroyGroup(g)
endfunction



Думаю так должно работать, но нужен JNGP
Старый 19.04.2009, 15:57
Castiel

offline
Опыт: 2,093
Активность:
Такой бред а че оно по другому не пашет то ?
Старый 19.04.2009, 22:10
Hellfim
Новичок
offline
Опыт: 79,880
Активность:
Castiel, пашет, то что в блоке

globals
endgloblas

можешь создать в обычном редакторе триггеров, т.е. переменные этого типа, но тогда везде где они встречаются тебе придется писать приставку udg_(например udg_DIGEp)
Старый 19.04.2009, 22:16
Castiel

offline
Опыт: 2,093
Активность:
Не я шарю, просто не могу выкупить почему мой пример не пашет на всех иллюзий. Странно.
Старый 19.04.2009, 23:36
Hellfim
Новичок
offline
Опыт: 79,880
Активность:
Castiel, потому что в GetEnumUnit остается последний юнит...
Старый 19.04.2009, 23:59
perimetral

offline
Опыт: 3,058
Активность:
потому что ты вызываешь GetEnumUnit со старту, когда функция еще не знает, кто это. Объяви переменную со старту, а значение ей дай после пика
Старый 20.04.2009, 00:12
Hellfim
Новичок
offline
Опыт: 79,880
Активность:
Лол, перечитал вопрос =) Просто замени в своем коде
Код:
local unit u = CreateUnitAtLoc (GetOwningPlayer(GetSpellAbilityUnit()), 'h00I', l, 0.0)


на

Код:
local unit u = CreateUnitAtLoc (GetOwningPlayer(GetEnumUnit()), 'h00I', l, 0.0)


Ятп что в этом вся загвостка =)
Старый 20.04.2009, 00:19
Ответ

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы можете скачивать файлы

BB-коды Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход



Часовой пояс GMT +3, время: 02:41.