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

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

Ответ
 
dartwizard
v zapoe :(
offline
Опыт: 4,762
Активность:
2 трига в 1
Суть проблемы такова. Я делаю в одном триге два, но столкнулся с проблемой. Чтобы работало две части нужен тригер-пустышка, как сделать без него?
 function Trig_RageOfScream_Conditions takes nothing returns boolean
     if ( not ( GetUnitAbilityLevelSwapped('A08L', GetEventDamageSource()) > 0 ) ) then
         return false
     endif
         if ( not ( IsPlayerEnemy(GetOwningPlayer(GetTriggerUnit()), GetOwningPlayer(GetEventDamageSource())) == true ) ) then
         return false
     endif
     return true
 endfunction
 function Trig_ScreamAttack_Conditions takes nothing returns boolean
     if ( not ( IsUnitInGroup(GetAttackedUnitBJ(), udg_RageScreamUnit) == false ) ) then
         return false
     endif
     return true
 endfunction
 function Trig_ScreamAttack_Actions takes nothing returns nothing
     call TriggerRegisterUnitEvent( gg_trg_RageOfScream, GetAttackedUnitBJ(), EVENT_UNIT_DAMAGED )
     call GroupAddUnitSimple( GetAttackedUnitBJ(), udg_RageScreamUnit )
 endfunction
 function Trig_RageOfScream_Actions takes nothing returns nothing
     local texttag s
     if ( GetRandomInt(1, 100) <= ( 27 + ( 3 * GetUnitAbilityLevelSwapped('A08L', GetEventDamageSource()) ) ) ) then
         call UnitDamageTargetBJ( GetEventDamageSource(), GetTriggerUnit(), I2R(GetHeroStatBJ(bj_HEROSTAT_STR, GetEventDamageSource(), true)), ATTACK_TYPE_CHAOS, DAMAGE_TYPE_DEMOLITION )
     set s=CreateTextTagLocBJ( ( "|c00FF0000" + ( I2S(GetHeroStatBJ(bj_HEROSTAT_STR, GetEventDamageSource(), true)) + "|r" ) ), GetUnitLoc(GetTriggerUnit()), 50.00, 10, 100, 100, 100, 0 )   
     call SetTextTagVelocityBJ( s, 64, 90 )
     call TriggerSleepAction( 0.50 )
     call DestroyTextTagBJ(s)
     set s=null
     else
         call DoNothing(  )
     endif
 endfunction
 function InitTrig_RageOfScream takes nothing returns nothing
     set gg_trg_RageOfScream = CreateTrigger( )
     call TriggerAddCondition( gg_trg_RageOfScream, Condition( function Trig_RageOfScream_Conditions ) )
     call TriggerAddAction( gg_trg_RageOfScream, function Trig_RageOfScream_Actions )
 endfunction
 function InitTrig_ScreamAttack takes nothing returns nothing
     set gg_trg_ScreamAttack = CreateTrigger(  )
     call TriggerRegisterAnyUnitEventBJ( gg_trg_ScreamAttack, EVENT_PLAYER_UNIT_ATTACKED )
     call TriggerAddCondition( gg_trg_ScreamAttack, Condition( function Trig_ScreamAttack_Conditions ) )
     call TriggerAddAction( gg_trg_ScreamAttack, function Trig_ScreamAttack_Actions )
 endfunction
Старый 28.08.2009, 14:49
Линкольн
Barg Ent.
offline
Опыт: 4,812
Активность:
У тебя две функции инициализации в одном триггере.
Код:
function InitTrig_RageOfScream takes nothing returns nothing
     set gg_trg_RageOfScream = CreateTrigger( )
     call TriggerAddCondition( gg_trg_RageOfScream, Condition( function Trig_RageOfScream_Conditions ) )
     call TriggerAddAction( gg_trg_RageOfScream, function Trig_RageOfScream_Actions )
 endfunction
 function InitTrig_ScreamAttack takes nothing returns nothing
     set gg_trg_ScreamAttack = CreateTrigger(  )
     call TriggerRegisterAnyUnitEventBJ( gg_trg_ScreamAttack, EVENT_PLAYER_UNIT_ATTACKED )
     call TriggerAddCondition( gg_trg_ScreamAttack, Condition( function Trig_ScreamAttack_Conditions ) )
     call TriggerAddAction( gg_trg_ScreamAttack, function Trig_ScreamAttack_Actions )
 endfunction


Замени на:
Код:
function InitTrig_ScreamAttack takes nothing returns nothing
    local trigger trig = CreateTrigger()
    call TriggerRegisterAnyUnitEventBJ( trig, EVENT_PLAYER_UNIT_ATTACKED )
    call TriggerAddCondition( trig, Condition( function Trig_ScreamAttack_Conditions ) )
    call TriggerAddAction( trig, function Trig_ScreamAttack_Actions )
    set trig = CreateTrigger( )
    call TriggerAddCondition( trig, Condition( function Trig_RageOfScream_Conditions ) )
    call TriggerAddAction( trig, function Trig_RageOfScream_Actions )
endfunction


Линкольн добавил:
Соответственно триггер должен называться ScreamAttack. Сейчас подправлю.
Старый 28.08.2009, 15:03
dartwizard
v zapoe :(
offline
Опыт: 4,762
Активность:
Линкольн, сейчас опробую
dartwizard добавил:
не работает триг.
Старый 28.08.2009, 15:20
Линкольн
Barg Ent.
offline
Опыт: 4,812
Активность:
Вот держи. Сколько успел сделать. Могут быть ошибки.
На инструктаж вызвали, если сам не разберешься, как вернусь доделаю.
Код:
function Trig_RageOfScream_Conditions takes nothing returns boolean
    return GetUnitAbilityLevel(GetEventDamageSource(), 'A08L') > 0 and IsPlayerEnemy(GetOwningPlayer(GetTriggerUnit()), GetOwningPlayer(GetEventDamageSource())) == true
endfunction

function Trig_ScreamAttack_Conditions takes nothing returns boolean
    return IsUnitInGroup(GetTriggerUnit(), udg_RageScreamUnit) == false
endfunction

function Trig_ScreamAttack_Actions takes nothing returns nothing
    call TriggerRegisterUnitEvent( gg_trg_RageOfScream, GetTriggerUnit(), EVENT_UNIT_DAMAGED )
    call GroupAddUnit(udg_RageScreamUnit, GetTriggerUnit())
endfunction

function Trig_RageOfScream_Actions takes nothing returns nothing
    local texttag s
    if (GetRandomInt(1, 100) <= (27 + (3 * GetUnitAbilityLevel(GetEventDamageSource(), 'A08L')))) then
        call UnitDamageTarget(GetEventDamageSource(), GetTriggerUnit(), I2R(GetHeroStatBJ(bj_HEROSTAT_STR, GetEventDamageSource(), true)), ATTACK_TYPE_CHAOS, DAMAGE_TYPE_DEMOLITION )
    set s=CreateTextTagLocBJ(("|c00FF0000" + ( I2S(GetHeroStatBJ(bj_HEROSTAT_STR, GetEventDamageSource(), true)) + "|r" ) ), GetUnitLoc(GetTriggerUnit()), 50.00, 10, 100, 100, 100, 0 )   
    call SetTextTagVelocityBJ( s, 64, 90 )
    call TriggerSleepAction( 0.50 )
    call DestroyTextTagBJ(s)
    set s=null
    endif
endfunction

function InitTrig_RageOfScream takes nothing returns nothing
    local trigger Trig_RageOfScream = CreateTrigger()
    local integer i = 0
    call TriggerAddCondition(Trig_RageOfScream, Condition(function Trig_RageOfScream_Conditions ))
    call TriggerAddAction(Trig_RageOfScream, function Trig_RageOfScream_Actions)
    set Trig_RageOfScream = CreateTrigger()
    loop
        call TriggerRegisterPlayerUnitEvent(Trig_RageOfScream, Player(i), EVENT_PLAYER_UNIT_ATTACKED, null)
        exitwhen (i == 11)
        set i = i + 1
    endloop
    call TriggerAddCondition(Trig_RageOfScream, Condition(function Trig_ScreamAttack_Conditions))
    call TriggerAddAction(Trig_RageOfScream, function Trig_ScreamAttack_Actions)
endfunction
Старый 28.08.2009, 15:29
Ответ

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

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

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

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



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