Вообщем я перекидывал спеллы из открытой версии доты и столкнулся с такой проблемой, что карта тупо не запускается, при запуске выбрасывает в меню. Каких либо явных ошибок в коде вроде нет. Еще одна интересная вещь, переписывал некоторые спеллы на гуи через CS, при этом способе спеллы работали нормально. Что довольно странно, код ведь один и тот же по сути, а в одном случае работает, а в другом нет.
Собственно открытая версия доты - http://dimon.xgm.ru/opendota/files/?DotA%20Allstars%20v6.41%20Open%20Objects.w3x
Код
function Freezing_Field_Spell takes nothing returns boolean return GetSpellAbilityId()=='A03R'or GetSpellAbilityId()=='A0AV' endfunction
function Freezing_Field_Timer takes nothing returns nothing local trigger ltt=GetTriggeringTrigger() local string lf5=H2Tx(ltt) local unit lfo local unit lJV local integer lmZ if(GetTriggerEventId()==EVENT_UNIT_SPELL_ENDCAST)then if(GetSpellAbilityId()=='A03R'or GetSpellAbilityId()=='A0AV')then call DisableTrigger(ltt) call PolledWait(1) call TriggerRemoveAction(ltt,GetTrigAction(lf5,"TriggerAction")) call FastFlush(lf5) call DestroyTriggerEx(ltt) endif else set lmZ=GetInteger(lf5,"Level") set lfo=GetUnit(lf5,"UnitVar") set lJV=CreateUnit(GetOwningPlayer(lfo),'e00C',GetUnitX(lfo)+GetRandomReal('}',635)*Cos(GetRandomReal(0,360)*bj_DEGTORAD),GetUnitY(lfo)+GetRando mReal('}',635)*Sin(GetRandomReal(0,360)*bj_DEGTORAD),270) call UnitAddAbility(lJV,'A03X') call SetUnitAbilityLevel(lJV,'A03X',lmZ) call SetUnitPathing(lJV,false) call IssueTargetOrderById(lJV,OrderId("frostnova"),lJV) call UnitApplyTimedLife(lJV,'BTLF',.25) endif endfunction
function Freezing_Field_Main takes nothing returns nothing local unit lfo=GetTriggerUnit() local trigger ltt=CreateTrigger() local string lf5=H2Tx(ltt) local integer lmZ if(GetSpellAbilityId()=='A03R')then set lmZ=GetUnitAbilityLevel(lfo,'A03R') else set lmZ=GetUnitAbilityLevel(lfo,'A0AV')+1 endif call TriggerRegisterTimerEvent(ltt,.1,true) call TriggerRegisterUnitEvent(ltt,lfo,EVENT_UNIT_SPELL_ENDCAST) call SetHandle(lf5,"TriggerAction",TriggerAddAction(ltt,function Freezing_Field_Timer)) call SetHandle(lf5,"UnitVar",lfo) call SetInteger(lf5,"Level",lmZ) endfunction
function Freezing_Field_Init takes nothing returns nothing local trigger ltt=CreateTrigger() call TriggerRegisterAnyUnitEventBJ(ltt,EVENT_PLAYER_UNIT_SPELL_EFFECT) call TriggerAddCondition(ltt,Condition(function Freezing_Field_Spell)) call TriggerAddAction(ltt,function Freezing_Field_Main) call SpellPreload('A03X') endfunction
function InitTrig_Freezing_Field takes nothing returns nothing endfunction
Судя по коду здесь используется "Return bug", который был выпилен в последних версиях варкрафта. Следовательно ты не сможешь запустить карту на последних патчах с этим кодом...