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

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

Закрытая тема
 
Чебурашка

offline
Опыт: 5,460
Активность:
Даммикаст и циклы
Проблема: есть триггер - создаются 4 юнита, неважно даже циклом или вручную.
Все работает.
А если делать даммикаст, чтобы каждый из них кастовал, через Add to Last created и Order last created, то создается только один юнит и кастует, и все.
Я чего-то не знаю?
з.ы: поиск выдал одну тему, но там 200+ страниц
Старый 15.04.2008, 19:57
happy_horror
2 + 2 = 22 :-D
offline
Опыт: 7,818
Активность:
Цитата:
Сообщение от Чебурашка
Проблема: есть триггер - создаются 4 юнита, неважно даже циклом или вручную.
Все работает.
А если делать даммикаст, чтобы каждый из них кастовал, через Add to Last created и Order last created, то создается только один юнит и кастует, и все.
Я чего-то не знаю?

з.ы: поиск выдал одну тему, но там 200+ страниц


Ну либо мапу со спелом выложи либо код (мапу проще разобрать будет).

На счёт поиска - есть такой крожочек над кнопкой начать поиск показывать найденные: "Сообщения" а не темы
Старый 15.04.2008, 20:00
Чебурашка

offline
Опыт: 5,460
Активность:
просто перевел триггер в жасс и добавил локалку:
Код:
local real n = 0
set bj_forLoopAIndex = 1
    set bj_forLoopAIndexEnd = 4
    loop
        exitwhen bj_forLoopAIndex > bj_forLoopAIndexEnd
        
        call CreateNUnitsAtLocFacingLocBJ( 1, 'e002', GetOwningPlayer(GetTriggerUnit()), PolarProjectionBJ(GetSpellTargetLoc(), 150.00, ( ( n * 90 ) + 45.00 )), GetUnitLoc(GetTriggerUnit()) )
        call UnitApplyTimedLifeBJ( 1.00, 'BTLF', GetLastCreatedUnit() )
        call UnitAddAbilityBJ( 'A02Q', GetLastCreatedUnit() )
        call SetUnitAbilityLevelSwapped( 'A02Q', GetLastCreatedUnit(), udg_ntecro )
        call IssueImmediateOrderBJ( GetLastCreatedUnit(), "fanofknives" )
        set n = n + 1
                set bj_forLoopAIndex = bj_forLoopAIndex + 1
    endloop
используйте тэги - прим. модер

Отредактировано FellGuard, 15.04.2008 в 20:40.
Старый 15.04.2008, 20:22
FellGuard
Losyash
offline
Опыт: 39,547
Активность:
Код:
local real n = 0
local integer index = 1
local integer limit = 4
    loop
        exitwhen index > limit
        
        call CreateNUnitsAtLocFacingLocBJ( 1, 'e002', GetOwningPlayer(GetTriggerUnit()), PolarProjectionBJ(GetSpellTargetLoc(), 150.00, ( ( n * 90 ) + 45.00 )), GetUnitLoc(GetTriggerUnit()) )
        call UnitApplyTimedLifeBJ( 1.00, 'BTLF', GetLastCreatedUnit() )
        call UnitAddAbilityBJ( 'A02Q', GetLastCreatedUnit() )
        call SetUnitAbilityLevelSwapped( 'A02Q', GetLastCreatedUnit(), udg_ntecro )
        call IssueImmediateOrderBJ( GetLastCreatedUnit(), "fanofknives" )
        set n = n + 1
                set index = index + 1
    endloop


FellGuard добавил:
вообще, по-хорошему, тут надо все БЖ позаменять на нэйтив-функции.
Старый 15.04.2008, 20:44
Чебурашка

offline
Опыт: 5,460
Активность:
К сожалению, проблему вызывает именно сам приказ кастовать абилку - т.е из-за приказа в цикле цикл прерывается
Старый 15.04.2008, 22:51
FellGuard
Losyash
offline
Опыт: 39,547
Активность:
Код:
function FName takes nothing returns nothing
 local unit u = udg_OrdUnit
// call TriggerSleepActions(0.01) - ? мб нужно это
 call IssueImmediateOrder(u, "fanofknives" )
 set u = null
endfunction

...
local real n = 0
local integer index = 1
local integer limit = 4
    loop
        exitwhen index > limit
        
        call CreateNUnitsAtLocFacingLocBJ( 1, 'e002', GetOwningPlayer(GetTriggerUnit()), PolarProjectionBJ(GetSpellTargetLoc(), 150.00, ( ( n * 90 ) + 45.00 )), GetUnitLoc(GetTriggerUnit()) )
        call UnitApplyTimedLifeBJ( 1.00, 'BTLF', GetLastCreatedUnit() )
        call UnitAddAbilityBJ( 'A02Q', GetLastCreatedUnit() )
        call SetUnitAbilityLevelSwapped( 'A02Q', GetLastCreatedUnit(), udg_ntecro )
        set udg_OrdUnit = GetLastCreatedUnit()
        call ExecuteFunc("FName")
        set n = n + 1
                set index = index + 1
    endloop
...
попробуй так
Старый 15.04.2008, 23:13
Чебурашка

offline
Опыт: 5,460
Активность:
ееее работает
Старый 15.04.2008, 23:51
Закрытая тема

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

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

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

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



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