demon_nrt | Дата: Понедельник, 02 Сентября 2013, 17:20:17 | Сообщение # 1 |
6 уровень
Группа: Проверенные
Сообщений: 193
Награды: 0
Репутация: 2
Блокировки:
| Помогите исправить ошибку. У меня по коду должны создаваться 3 юнита которые идут друг за другом на расстояние 360 ед. Но юниты создаются от лица и еще перемещаются во время создание в зависимости от лица юнита, хоть я сохранил его лицо на момент каста, то есть юниты должно создаваться строго по сохраненной реальной, но увы они двигаются не от сохраненной а от действующей. Помогите найти ошибку, буду благодарен. Код function Trig_Dragoncry_Conditions takes nothing returns boolean if ( not ( GetSpellAbilityId() == 'A00U' ) ) then return false endif return true endfunction function Trig_Dragoncry_timer_Actions takes nothing returns nothing local timer Drt = GetExpiredTimer() local integer h = GetHandleId(Drt) local unit Dcu = LoadUnitHandle(udg_Hash,h,1) local real x = GetWidgetX(Dcu) local real y = GetWidgetY(Dcu) local integer i = LoadInteger(udg_Hash,h,3) local real Dru1 = LoadReal(udg_Hash,h,2) local unit Dcu1 set i = i + 360 call SaveInteger(udg_Hash,h,3,i) set Dcu1 = CreateUnit( GetOwningPlayer (Dcu), 'e00E',x+i * Cos(Dru1 * 0.0174532),y+i * Sin(Dru1 * 0.0174532),Dru1) call UnitApplyTimedLifeBJ( 1.00, 'BTLF', Dcu1 ) call SetUnitAbilityLevelSwapped( 'A00V', Dcu1, GetUnitAbilityLevelSwapped('A00U', Dcu) ) call IssueImmediateOrderBJ( Dcu1, "thunderclap" ) set Dcu = null set Dcu1 = null endfunction function Trig_Dragoncry_Actions takes nothing returns nothing local timer Drt = CreateTimer() local integer h = GetHandleId(Drt) local unit Dcu = GetSpellAbilityUnit() local real Dru = GetUnitFacing(Dcu) local real x = GetWidgetX(Dcu) local real y = GetWidgetY(Dcu) local unit Dcu2 = CreateUnit( GetOwningPlayer (Dcu), 'e007',x,y,Dru) local real Dru1 = GetUnitFacing (Dcu2) call UnitApplyTimedLifeBJ( 2.00, 'BTLF', Dcu2) call SaveUnitHandle(udg_Hash,h,1,Dcu) call SaveReal(udg_Hash,h,2,Dru1) call TimerStart(Drt,0.50,true,function Trig_Dragoncry_timer_Actions ) call PolledWait( 1.50 ) call PauseTimer (Drt) call DestroyTimer (Drt) set Drt = null set Dcu = null set Dcu2 = null call FlushChildHashtable(udg_Hash,h) endfunction //=========================================================================== function InitTrig_Dragoncry takes nothing returns nothing set gg_trg_Dragoncry = CreateTrigger( ) call TriggerRegisterAnyUnitEventBJ( gg_trg_Dragoncry, EVENT_PLAYER_UNIT_SPELL_EFFECT ) call TriggerAddCondition( gg_trg_Dragoncry, Condition( function Trig_Dragoncry_Conditions ) ) call TriggerAddAction( gg_trg_Dragoncry, function Trig_Dragoncry_Actions ) endfunction
|
|
|
|
[SeKtOR] | Дата: Понедельник, 02 Сентября 2013, 19:39:36 | Сообщение # 2 |
Группа: Проверенные
Сообщений: 1143
Награды: 0
Репутация: 1168
Блокировки:
| Как я понял ты хочешь способность, которая создает круг из дамиков заставляет их кастовать громовую поступь и убивает?
|
|
|
|
demon_nrt | Дата: Вторник, 03 Сентября 2013, 17:57:42 | Сообщение # 3 |
6 уровень
Группа: Проверенные
Сообщений: 193
Награды: 0
Репутация: 2
Блокировки:
| Цитата (|SeKtOR|) Как я понял ты хочешь способность, которая создает круг из дамиков заставляет их кастовать громовую поступь и убивает? Нет, у меня уже она есть( способность) она сделана, но в ней проблема в том что работает она слегка не так. А способность такова : При использовании способности, создается юнит на расстояние 350 ед. от лица героя скастовавшего, через 0.50 сек, появляется второй от лица героя, но именно в тот момент когда появилась первая. То есть юниты двигаются цепочкой от одного лица, которое задано с начала каста, при этом оно не должно меняться, если герой начинает двигаться. А еще через 0.50 сек появляется еще один юнит. Общее расстояние 1050 ед. У меня все работает но если герой начинает движение то последующие юниты создаются от движущегося героя а не от начального его лица, хоть его я сохранил и использую именно сохраненное лицо.
Добавлено (03 Сентября 2013, 17:57:42) --------------------------------------------- Все спасибо всем за помощь исправил сам.
|
|
|
|