Добавлен Kind Ram
Вот триггер:
function Trig_Skill_WarMur_Counter_Conditions takes nothing returns boolean
if GetUnitAbilityLevel(GetTriggerUnit(),'B011')>0 and IsUnitType(GetAttacker(), UNIT_TYPE_GROUND) then
return true
endif
return false
endfunction
function Trig_Skill_WarMur_Counter_Actions takes nothing returns nothing
set udg_map_u1=GetTriggerUnit()
set udg_map_u2=GetAttacker()
set udg_map_r1=GetRandomReal(1.0,100.0)
set udg_map_r2=m_distbtwcrds(GetUnitX(udg_map_u1),GetUnitY(udg_map_u1),GetUnitX(udg_map_u2),GetUnitY(udg_map_u2))
if udg_map_r1<=30.0 and udg_map_r2<=200.0 then
call SetUnitAnimation(udg_map_u1, "attack")
set bj_lastCreatedEffect = AddSpecialEffectTarget("Abilities\\Weapons\\SeaElementalMissile\\SeaElementalMissile.mdl", udg_map_u1, "hand right")
call DestroyEffect(bj_lastCreatedEffect)
set bj_lastCreatedEffect = AddSpecialEffectTarget("Abilities\\Weapons\\SpiritOfVengeanceMissile\\SpiritOfVengeanceMissile.mdl", udg_map_u2, "chest")
call DestroyEffect(bj_lastCreatedEffect)
call UnitDamageTarget(udg_map_u1, udg_map_u2, GetRandomReal(20.0,22.0), true, false, ATTACK_TYPE_MELEE, DAMAGE_TYPE_NORMAL, WEAPON_TYPE_WHOKNOWS)
call m_playlocsndonu(udg_map_u1,"Units\\Human\\HeroPaladin\\HeroPaladinAttack1.wav",5,1.0)
elseif udg_map_r1<=30.0 and udg_map_r2>200.0 and udg_map_r2<=750.0 then
if m_isunitfastrush(udg_map_u1)==false then
call abi_fastrush_addu(udg_map_u1,udg_map_r2-80.0,m_angbtwcrds(GetUnitX(udg_map_u1),GetUnitY(udg_map_u1),GetUnitX(udg_map_u2),GetUnitY(udg_map_u2)),false,"Units\\Creeps\\HeroTinkerFactory\\HeroTinkerFactoryMissle.mdl")
call m_playlocsndonu(udg_map_u1,"Units\\Creep\\Murloc\\MurAggro.mp3",11,1.0)
endif
endif
set udg_map_r2=0.0
set udg_map_r1=0.0
set udg_map_u2=null
set udg_map_u1=null
endfunction
Из условия видно, что проверки на союзника/врага в триггере нет, но он срабатывает только на противниках
Принятый ответ
Kind Ram,
Ну отладку сделай, вызывается ли вообще триггер при атаке союзника, выведи текст в самом начале действия
Ну отладку сделай, вызывается ли вообще триггер при атаке союзника, выведи текст в самом начале действия
function Trig_Skill_WarMur_Counter_Conditions takes nothing returns boolean
return GetUnitAbilityLevel(GetTriggerUnit(),'B011')>0 and IsUnitType(GetAttacker(), UNIT_TYPE_GROUND)
endfunction
return GetUnitAbilityLevel(GetTriggerUnit(),'B011')>0 and IsUnitType(GetAttacker(), UNIT_TYPE_GROUND)
endfunction
условие можно так записать
И что это за бафф? B011 мб он только на противниках висит.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.
Отредактирован 16GB
где отладка? и события триггера
и да можно заменить
форматирование не работает, найсcall TriggerRegisterAnyUnitEventBJ( gg_trg_Skill_WarMur_Counter, EVENT_PLAYER_UNIT_ATTACKED )
и зачем мне заменять указанный спецэффект и на что?
А-а-а. Я так ещё не экспериментировал)
Ну отладку сделай, вызывается ли вообще триггер при атаке союзника, выведи текст в самом начале действия
return GetUnitAbilityLevel(GetTriggerUnit(),'B011')>0 and IsUnitType(GetAttacker(), UNIT_TYPE_GROUND)
endfunction
Даже на этапе условия не срабатывает, только если спецом добавить:
and ( IsUnitAlly(GetTriggerUnit(),GetOwningPlayer(GetAttacker)) or IsUnitAlly(GetTriggerUnit(),GetOwningPlayer(GetAttacker))==false )
к существующему условию, либо же только проверку на бафф оставить.
P.S. атаковал именно наземными юнитами при проверке, срабатывает только на противниках.
P.P.S. Нашёл проблему, IsUnitType(GetAttacker(), UNIT_TYPE_GROUND) не срабатывает с земноводными.
буду юзать в условии проверку на летающего с false.