|
|
|
|
Не работает код
|
|
Smartaros | Дата: Четверг, 28 Июня 2012, 14:23:01 | Сообщение # 1 |
9 уровень
Группа: Проверенные
Сообщений: 810
Награды: 0
Репутация: 135
Блокировки:
| Вообщем есть триггер, который в момент удара по врагу создает другой триггер, вот код: Code function Trig_SwirepostAct_Conditions takes nothing returns boolean if ( not ( GetUnitAbilityLevelSwapped('A0EG', GetAttacker()) > 0 ) ) then return false endif return true endfunction
function Trig_SwirepostAct_Func01 takes nothing returns boolean return ( GetUnitAbilityLevelSwapped('A0EG', GetEventDamageSource()) > 0 ) endfunction
function Trig_SwirepostAct_Func02 takes nothing returns boolean return ( UnitHasBuffBJ(GetEventDamageSource(), 'B03R') == true ) endfunction
function Trig_SwirepostAct_Func03 takes nothing returns boolean return ( IsUnitType(GetTriggerUnit(), UNIT_TYPE_STRUCTURE) == false ) endfunction
function Trig_SwirepostAct_Func04 takes nothing returns boolean return ( GetEventDamage() != udg_Oboroten_real[2] ) endfunction
function Trig_SwirepostAct_Func05 takes nothing returns nothing set udg_Oboroten[0] = GetTriggerUnit() set udg_Oboroten_real[0] = GetUnitFacing(GetEventDamageSource()) set udg_Oboroten_integer[0] = 0 set udg_Oboroten_pos[2] = GetUnitLoc(GetEventDamageSource()) set udg_Oboroten_real[2] = ( GetEventDamage() * ( 0.40 * I2R(GetUnitAbilityLevelSwapped('A0EG', GetEventDamageSource())) ) ) endfunction
function Trig_SwirepostAct_Func06 takes nothing returns boolean return ( UnitHasBuffBJ(GetTriggerUnit(), 'B03X') == true ) endfunction
function Trig_SwirepostAct_Func07 takes nothing returns boolean return ( GetEventDamage() != ( 20.00 * I2R(GetUnitAbilityLevelSwapped('A0EG', GetEventDamageSource())) ) ) endfunction
function Trig_SwirepostAct_Func08 takes nothing returns boolean return GetBooleanAnd( Trig_SwirepostAct_Func06(), Trig_SwirepostAct_Func07() ) endfunction
function Trig_SwirepostAct_Func09 takes nothing returns nothing if ( Trig_SwirepostAct_Func08() ) then call UnitDamageTargetBJ( GetEventDamageSource(), GetTriggerUnit(), ( 20.00 * I2R(GetUnitAbilityLevelSwapped('A0EG', GetEventDamageSource())) ), ATTACK_TYPE_CHAOS, DAMAGE_TYPE_UNKNOWN ) else call DoNothing( ) endif endfunction
function Trig_SwirepostAct_Func10 takes nothing returns boolean return ( UnitHasBuffBJ(GetTriggerUnit(), 'B03T') == true ) endfunction
function Trig_SwirepostAct_Func11 takes nothing returns nothing if ( Trig_SwirepostAct_Func10() ) then call UnitDamageTargetBJ( GetEventDamageSource(), GetTriggerUnit(), udg_Oboroten_real[2], ATTACK_TYPE_CHAOS, DAMAGE_TYPE_UNKNOWN ) call CreateTextTagLocBJ( ( I2S(R2I(( GetEventDamage() + udg_Oboroten_real[2] ))) + "!" ), udg_Oboroten_pos[2], 40.00, 10, 100, 0.00, 0.00, 0 ) call SetTextTagPermanentBJ( GetLastCreatedTextTag(), false ) call SetTextTagVelocityBJ( GetLastCreatedTextTag(), 64, 90 ) call SetTextTagLifespanBJ( GetLastCreatedTextTag(), 5 ) call SetTextTagFadepointBJ( GetLastCreatedTextTag(), 4 ) call RemoveLocation (udg_Oboroten_pos[2]) call EnableTrigger( gg_trg_SwirepostKnock_Do ) else call DoNothing( ) endif endfunction
function Trig_SwirepostAct_Func12 takes nothing returns nothing call AddSpecialEffectTargetUnitBJ( "head", GetTriggerUnit(), "Abilities\\Weapons\\HydraliskImpact\\HydraliskImpact.mdl" ) call DestroyEffect( GetLastCreatedEffectBJ() ) call AddSpecialEffectTargetUnitBJ( "chest", GetTriggerUnit(), "Abilities\\Weapons\\HydraliskImpact\\HydraliskImpact.mdl" ) call DestroyEffect( GetLastCreatedEffectBJ() ) endfunction
function Trig_SwirepostAct_Actions takes nothing returns nothing call DestroyTrigger(udg_Swirepost_trigger) set udg_Swirepost_trigger = CreateTrigger() call TriggerRegisterUnitEvent( udg_Swirepost_trigger, GetTriggerUnit(), EVENT_UNIT_DAMAGED ) call TriggerAddCondition( udg_Swirepost_trigger, Condition(function Trig_SwirepostAct_Func01) ) call TriggerAddCondition( udg_Swirepost_trigger, Condition(function Trig_SwirepostAct_Func02) ) call TriggerAddCondition( udg_Swirepost_trigger, Condition(function Trig_SwirepostAct_Func03) ) call TriggerAddCondition( udg_Swirepost_trigger, Condition(function Trig_SwirepostAct_Func04) ) call TriggerAddAction( udg_Swirepost_trigger, function Trig_SwirepostAct_Func05 ) call TriggerAddAction( udg_Swirepost_trigger, function Trig_SwirepostAct_Func09 ) call TriggerAddAction( udg_Swirepost_trigger, function Trig_SwirepostAct_Func11 ) call TriggerAddAction( udg_Swirepost_trigger, function Trig_SwirepostAct_Func12 ) endfunction
//=========================================================================== function InitTrig_SwirepostAct takes nothing returns nothing set gg_trg_SwirepostAct = CreateTrigger( ) call TriggerRegisterAnyUnitEventBJ( gg_trg_SwirepostAct, EVENT_PLAYER_UNIT_ATTACKED ) call TriggerAddCondition( gg_trg_SwirepostAct, Condition( function Trig_SwirepostAct_Conditions ) ) call TriggerAddAction( gg_trg_SwirepostAct, function Trig_SwirepostAct_Actions ) endfunction Суть в том, что создаваемый триггер есть триггер на получение урона. У героя есть способность крит с баффом, для проверки нанесения урона именно этим героем. И в создаваемом триггере идет проверка нет ли этого баффа в момент нанесения урона, если есть то там дальше все вроде понятно. Но дело в том что баф то навешевается, но последующие действия удовлетворяющие условие наличия этого баффа не происходят. В чем ошибка?
|
|
|
|
Dreii | Дата: Четверг, 28 Июня 2012, 15:04:42 | Сообщение # 2 |
10 уровень
Группа: Проверенные
Сообщений: 4991
Награды: 0
Репутация: 603
Блокировки:
| Smartaros, приведи код в читаемый вид. и убери бред с дестроем триггера.
|
|
|
|
SirNikolas | Дата: Четверг, 28 Июня 2012, 16:49:16 | Сообщение # 3 |
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
| Честно, впервые вижу, чтобы в триггер добавляли несколько условий/действий. Оно, наверное, будет работать, но зачем так?..
|
|
|
|
Smartaros | Дата: Воскресенье, 01 Июля 2012, 04:16:14 | Сообщение # 4 |
9 уровень
Группа: Проверенные
Сообщений: 810
Награды: 0
Репутация: 135
Блокировки:
| Просто у меня есть целиковый гуи триггер, который я делал до этого, для другого способа, такой же как и этот триггер, только в том способе видимо засорялась память, и игра вылетала. А новым способом я при замахе создаю тот самый гуи триггер, и уничтожаю, это можно только джассом сделать, и память засоряться не должна. Вся конструкция джасс триггера идентична гуи. Кстати тот гуи триггер работает, по началу, потом перестает работать, так как с ним взаимодействует другой джасс триггер, который наверно и засоряет память. А этот джасс триггер не работает. Хз, я пока 0 в этом джассе, скажите я нахимичил или нет? Можно все сделать проще, или нет? Добавлено (01 Июль 2012, 04:16:14) --------------------------------------------- Вопрос, а надо ли перед destroy trigger удалять его условия и действия? Если да, то как?
|
|
|
|
SirNikolas | Дата: Воскресенье, 01 Июля 2012, 12:23:01 | Сообщение # 5 |
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
| TriggerRemoveCondition/TriggerRemoveAction.
|
|
|
|
Borodach | Дата: Воскресенье, 01 Июля 2012, 12:47:28 | Сообщение # 6 |
9 уровень
Группа: Проверенные
Сообщений: 930
Награды: 0
Репутация: 422
Блокировки:
| может лучше 1 рас создать триггер, чем постоянно новый создавать и удалять старый
Karamba
|
|
|
|
Smartaros | Дата: Четверг, 12 Июля 2012, 21:45:19 | Сообщение # 7 |
9 уровень
Группа: Проверенные
Сообщений: 810
Награды: 0
Репутация: 135
Блокировки:
| А можешь написать, как будет выглядеть эта функция у меня, я сам попытался.....джасс хелпер недоволен всегда Добавлено (12 Июль 2012, 21:45:19) --------------------------------------------- если один раз создать то тогда как ты сможешь регистрировать урон по другому юниту?
Сообщение отредактировал Smartaros - Воскресенье, 01 Июля 2012, 15:03:02 |
|
|
|
|
|
|
|
|
|
|