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

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

Ответ
 
danner

offline
Опыт: 234
Активность:
3 заклинания в одном
В общем есть 3 разных заклинания-пустышки, полностью сделанных триггерно. И также есть еще одно заклинание, тоже пустышка, которое должно вызывать каждое заклинание поочередно.
Пытался сделать его через Caster System:

Код:
local unit u = GetSpellAbilityUnit()
local unit t = GetSpellTargetUnit()
call CasterCastAbility(GetOwningPlayer(u), 'A008', "shadowstrike", t, false)
call CasterCastAbility(GetOwningPlayer(u), 'A006', "thunderbolt",  t, false)
call CasterCastAbility(GetOwningPlayer(u), 'A003', "shadowstrike", t, false)


Но ничего не выходит. Помогите найти ошибку или придумать как это сделать

Отредактировано ShadoW DaemoN, 07.02.2009 в 19:57.
Старый 07.02.2009, 16:22
__Dark Lord__

offline
Опыт: 5,262
Активность:
Если <переменная> = 0, то каст первого спелла и <переменная> = <переменная> + 1
Если <переменная> = 1, то каст второго спелла и <переменная> = <переменная> + 1
Если <переменная> = 2, то каст третьего спелла и <переменная> = 0
Все это проверять при каждом касте главной абилы.
Старый 07.02.2009, 18:13
Артте
Open up your eyes
offline
Опыт: 23,423
Активность:
__Dark Lord__
бред
danner
Надо вейт делать после каста, ну или TriggerSleepAction примерно на 0,2 сек. Иначе кастовать не успевает юнит
Старый 07.02.2009, 19:34
Hellfim
Новичок
offline
Опыт: 79,707
Активность:
Артте, как раз таки не бред. Единственное что надо добавить это TriggerSleepAction как ты правильно заметил.
Старый 07.02.2009, 19:37
__Dark Lord__

offline
Опыт: 5,262
Активность:
Артте, предложил бы свой вариант, коли ум так и прет. Но заклы сработают и без вейта, кулдаун у абил просто не начнется.

Отредактировано __Dark Lord__, 07.02.2009 в 20:33.
Старый 07.02.2009, 20:18
Артте
Open up your eyes
offline
Опыт: 23,423
Активность:
__Dark Lord__
Я свой предложил.. А зачем нам спелы без кд? лол
Старый 07.02.2009, 21:21
__Dark Lord__

offline
Опыт: 5,262
Активность:
Затем что главное заклинание будет кулдаунится все равно))
Тут еще не понятно как должно быть нажал и все три поочередно или нажал - скастовалось первое, нажал еще раз - скастовалось второе...
Если все сразу я хз зачем так извражаться когда можно сделать одно заклинание, а не три.
Старый 07.02.2009, 23:03
Артте
Open up your eyes
offline
Опыт: 23,423
Активность:
__Dark Lord__
Но ведь может быть ситуация, чт ои те 3 спела можно вручную применять.а это типа мультикаст..корчое афтар думаю понял что ему надо
Старый 08.02.2009, 00:13
Dragon Knight
Меткий стрелок!!!
offline
Опыт: 4,138
Активность:
Код:
function CasterCastAbility takes unit owner, unit target returns nothing
    local integer i      = 1
    local integer cabi = 3
    local integer array abiId
    local string array ordId
    local unit d         = CreateUnit(GetOwningPlayer(owner), 'UnitId', GetUnitX(owner), GetUnitY(owner), GetUnitFacing(owner))
    local integer labi   = 0
    set abiId[1]         = 'A008'
    set abiId[2]         = 'A006'
    set abiId[3]         = 'A003'
    set ordId[1]         = "shadowstrike"
    set ordId[2]         = "thunderbolt"
    set ordId[3]         = "shadowstrike"

    loop
        exitwhen i > cabi

        if labi != 0 then
            call UnitRemoveAbility(d, labi)
        endif
        call UnitAddAbility(d, abiId[i])
        call IssueTargetOrder(d, ordId[i], target)
        set labi = abiId[i]

        set i = i + 1
        call TriggerSleepAction(0.1)
    endloop

    call RemoveUnit(d)
    set d = null 
endfunction
Старый 08.02.2009, 00:13
__Dark Lord__

offline
Опыт: 5,262
Активность:
Тут ошибка:
Код:
call UnitRemoveAbility(d, labi)

Неправильно заданый abilityId
Код:
loop
        exitwhen i > cabi

        if labi != 0 then
            call UnitRemoveAbility(d, labi)
        endif
        call UnitAddAbility(d, abiId[i])
        call IssueTargetOrder(d, ordId[i], target)
        set labi = abiId[i]

        set i = i + 1
        call TriggerSleepAction(0.1)
    endloop

Бесполезно применять вайт в цикле.
Имхо не нужно совать лишний иф проверяющий состояние labi, и вообще все действия с этой переменной излишни. Каждый раз создается новый локальный юнит у него просто не может быть способностей.

Отредактировано __Dark Lord__, 08.02.2009 в 10:27.
Старый 08.02.2009, 00:34
Dragon Knight
Меткий стрелок!!!
offline
Опыт: 4,138
Активность:
Цитата:
Неправильно заданый abilityId

Код:
loop
        exitwhen i > cabi

        if labi != 0 then
            call UnitRemoveAbility(d, labi)
        endif
        call UnitAddAbility(d, abiId[i])
        call IssueTargetOrder(d, ordId[i], target)
        set labi = abiId[i]

        set i = i + 1
        call TriggerSleepAction(0.1)
    endloop


Бесполезно применять вайт в цикле.
Имхо не нужно совать лишний иф проверяющий состояние labi, и вообще все действия с этой переменной излишни. Каждый раз создается новый локальный юнит у него просто не может быть способностей.



Проверка на иф нужна, чтоб не мучить вар при первой петле цикла удалив несуществущую абилку

зачем нужна labi(Last Ability)?
Нужна для удаления последней данной даммику абилки, если ты норм прочитал код danner'a, то наверное видел, что есть две абилки с одинаковым OrderId
Старый 08.02.2009, 13:19
__Dark Lord__

offline
Опыт: 5,262
Активность:
Вот перед лупом и пиши удаление абилы, а не в теле цикала.Я не спрашиавл зачем нужно "labi(LastAbility)", я говорю что labi обыкновенное десятичное число, а это должен быть raw-код абилы.
Старый 08.02.2009, 13:37
Dragon Knight
Меткий стрелок!!!
offline
Опыт: 4,138
Активность:
__Dark Lord__ ты меня не понял

в цикле добавляю абилку даммику
заношу равкод абилки в переменную
на следующей петле удаляю предыдущую абилку у даммика


Цитата:
я говорю что libi обыкновенное десятичное число, а это должен быть raw-код абилы.


ты хоть сам пробовал добавлять абилку юниту, равкод которой берётся из переменной?
Старый 08.02.2009, 13:44
__Dark Lord__

offline
Опыт: 5,262
Активность:
Ну я понял твою идею.
Старый 08.02.2009, 13:53
Ответ

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

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

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

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



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