VIRUS_97
offline
Опыт:
389Активность: |
Проблема в коде
По идее при применении спелла должны создаваться вертолёты, лететь к точке применения и бомбить её.
Вертолёты создаются, но не двигаются с места ((
» код
((код jass
function Trig_air_craft_Conditions takes nothing returns boolean
if ( not ( GetSpellAbilityId() == 'A005' ) ) then return false endif return true endfunction scope AirStrike{
private nothing r(){
RemoveUnit(GetEnumUnit()) } private function Remove takes nothing returns nothing
timer t = GetExpiredTimer() group g = LoadGroupHandle(AirCraft,GetHandleId(t),1) ForGroupBJ( g, function r ) endfunction private function GetSpell takes nothing returns nothing BJDebugMsg("t") IssuePointOrderLocBJ( GetEnumUnit(), "clusterrockets", LoadLocationHandle(AirCraft,1,1) ) endfunction hashtable AirCraft = InitHashtable()
private function Trig_air_craft_Actions takes nothing returns nothing
CreateNUnitsAtLocFacingLocBJ( GetUnitAbilityLevelSwapped('A005', GetTriggerUnit()), 'h002', GetTriggerPlayer(), GetRectCenter(gg_rct________________008), GetUnitLoc(GetTriggerUnit()) )
group g = GetLastCreatedGroup() location l = GetSpellTargetLoc() ForGroupBJ( g, function GetSpell ) timer t = CreateTimer() SaveLocationHandle(AirCraft,1,1,l) SaveGroupHandle(AirCraft,GetHandleId(t),1,g) TimerStart(t,DistanceBetweenPoints(GetRectCenter(gg_rct________________008), l),false,function Remove) g = null RemoveLocation(l) l = null endfunction ===========================================================================
function InitTrig_air_craft takes nothing returns nothing set gg_trg_air_craft = CreateTrigger( ) call TriggerRegisterAnyUnitEventBJ( gg_trg_air_craft, EVENT_PLAYER_UNIT_SPELL_EFFECT ) call TriggerAddCondition( gg_trg_air_craft, Condition( function Trig_air_craft_Conditions ) ) call TriggerAddAction( gg_trg_air_craft, function Trig_air_craft_Actions ) endfunction } )) P.S. Debug сообщение выводится корректно |
15.03.2011, 17:03 | #1
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Hanabishi
COOL STATUS
offline
Опыт: отключен
|
alexprey, хотя да, нормально устанавливается (я с cjass не работал так, привык стандартно локалки объявлять)
RemoveLocation(l) ты уничтожаешь точку, а потом пытаешься её использовать делай это после отдачи приказа |
15.03.2011, 18:36 | #2
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
alexprey
познающий Unity
offline
Опыт:
68,501Активность: |
VIRUS_97, кст да. Ты сперва сохраняешь локацию, а потом удаляешь её из памяти. Удалять следует только в том случае, если уже не требуется эта переменная.
|
15.03.2011, 18:53 | #3
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|