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

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

Закрытая тема
 
rnr_q

offline
Опыт: 70
Активность:
Вылетает вар
» код
function Trig_Attack_Conditions takes nothing returns boolean
    if ( not ( GetSpellAbilityId() == 'A001' ) ) then
        return false
    endif
    return true
endfunction

function AC1 takes nothing returns boolean
    return ( IsUnitAliveBJ(GetFilterUnit()) == true )
endfunction

function AC0 takes nothing returns boolean
    return ( IsUnitEnemy(GetFilterUnit(), GetOwningPlayer(Shot)) == true )
endfunction

function AC takes nothing returns boolean
    return GetBooleanAnd( AC0(), AC1() )
endfunction

function PA takes nothing returns nothing
endfunction

function Shot_Action takes nothing returns nothing
    local location loc=GetUnitLoc(Shot)
    local group g
    call MoveLocation(loc, GetLocationX(p) + 30 * CosBJ(facing), GetLocationY(loc) + 30 * SinBJ(facing))
    call SetUnitPosition(Shot,GetLocationX(loc),GetLocationY(loc))
    set g=GetUnitsInRangeOfLocMatching(40.00, GetRectCenter(GetUnitLoc(Shot)), Condition(function AC()))
        call ForGroupBJ(g, function PA() )
    call DestroyGroup(g)
    call RemoveLocation(loc)
endfunction

function Trig_Attack_Actions takes nothing returns nothing
    local trigger APS=CreateTrigger()
    local unit Shot
    local real X=GetUnitX(GetTriggerUnit())
    local real Y=GetUnitY(GetTriggerUnit())
    local real facing=AngleBetweenPoints(GetUnitLoc(GetTriggerUnit(),GetSpellTargetLoc()))
    CreateUnit(Player(GetOwningPlayer(GetTriggerUnit())),'SHOT',X,Y,facing)
    set Shot=GetLastCreatedUnit()
    call TriggerRegisterTimerEventPeriodic(APS, 0.05 )
    call TriggerAddAction(APS, Shot_Action())
    set X=null
    set Y=null
endfunction

//===========================================================================
function InitTrig_Attack takes nothing returns nothing
    set gg_trg_Attack = CreateTrigger(  )
    call TriggerRegisterAnyUnitEventBJ( gg_trg_Attack, EVENT_PLAYER_UNIT_SPELL_EFFECT )
    call TriggerAddCondition( gg_trg_Attack, Condition( function Trig_Attack_Conditions ) )
    call TriggerAddAction( gg_trg_Attack, function Trig_Attack_Actions )
endfunction
Герой применяет способность, потом создается дамми(стрела), который летит в определенную точку. Функцию PA я неуспел доделать, т.к. наткнулся на такую фигню: запускаю карту/включаю-выключаю тригер меня выкидывает.
Где ошибся?
Старый 24.03.2011, 08:22
Elf_Stratigo

offline
Опыт: 4,699
Активность:
rnr_q:
GetLastCreatedUnit()
скорее всего не инициализирован
Старый 24.03.2011, 11:46
DKbru

offline
Опыт: 1,407
Активность:
rnr_q, во-первых пропущен оператор call в функции Trig_Attack_Actions для CreateUnit.... во-вторых, триггер APS не удаляется вообще (дамми может вылететь за пределы игрового поля), в третьих, что у тебя делает функция PA? интересный способ двигать юнитов по координатам, используя локации .
Старый 24.03.2011, 12:23
rnr_q

offline
Опыт: 70
Активность:
Функцию PA я неуспел доделать
:D
Если пикед юнитов больше, чем 1, то убивает SHot, наносит рандомному пикед юниту дамаг. Ну короче ты понял
APS не удаляется вообще (дамми может вылететь за пределы игрового поля)
?? Почему не удаляется?
Старый 24.03.2011, 13:07
DKbru

offline
Опыт: 1,407
Активность:
rnr_q, ты запускаешь периодический триггер и каждый раз при касте этой способности ты замещаешь переменную APS, не отключая и не уничтожая работающий триггер! Так делать не стоит. Триггер лучше сделать локальным, а еще лучше вообще таймер и удалять по завершению всех эффектов способности.
Старый 24.03.2011, 16:06
DioD

offline
Опыт: 45,134
Активность:
нет отладочных сообщений, очевидные синтаксические ошибки, сутки на исправление.
Старый 24.03.2011, 16:35
Закрытая тема

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

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

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

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



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