Всем привет.
В кратце:
  1. Есть одна способность.
library NULLFIELD

define {
private SPELL                      = 'A00G' //рав код cпособности, "NullField"
private SPELL_NULL_FIELD           = 'A01C' //рав код cпособности, "NullDield(resist)"
private SPELL_DIS                  = 'A01F' //рав код cпособности, "NullField(disable)"
private BUFF                       = 'B01I' //рав код cпособности "NullField"
private RADIUS                     = 1000. // радиус действия Ауры, должно быть равно в самой способности
}

//*****************************************************************************************

function Trig_NullField_Conditions takes nothing returns boolean
    return GetLearnedSkill()==SPELL and GetUnitAbilityLevel(GetTriggerUnit(),SPELL)==1
endfunction

//*****************************************************************************************

function NULL_FIELD takes nothing returns nothing
local timer t=GetExpiredTimer()
local integer id=GetHandleId(t)
local unit u=LoadUnitHandle(H,id,1)
local group G=LoadGroupHandle(H,id,2)
local group g=CreateGroup()
local unit e
    call GroupAddGroup(G,g)
    
    loop
        set e=FirstOfGroup(g)
        exitwhen e==null
            if GetUnitAbilityLevel(e,BUFF)<=0 then
                call SetUnitAbilityLevel(e,SPELL_NULL_FIELD,5)
                call GroupRemoveUnit(G,e)
            endif
        call GroupRemoveUnit(g,e)
    endloop
    
    call GroupEnumUnitsInRange(g,GetWidgetX(u),GetWidgetY(u),RADIUS,null)
    
    loop
        set e=FirstOfGroup(g)
        exitwhen e==null
        
        if GetUnitAbilityLevel(e,BUFF)>0 then
            if GetUnitAbilityLevel(e,SPELL_DIS)<=0 then
                call UnitAddAbility(e,SPELL_DIS)
            endif
            call SetUnitAbilityLevel(e,SPELL_NULL_FIELD,GetUnitAbilityLevel(u,SPELL))
            call GroupAddUnit(G,e)
        endif
        
        call GroupRemoveUnit(g,e)
    endloop
    call SaveGroupHandle(H,id,2,G)
    call DestroyGroup(g)
set t=null
set u=null
set g=null
set G=null
set e=null
endfunction

//*****************************************************************************************

function Trig_NullField_Actions takes nothing returns nothing
local timer t=CreateTimer()
local integer id=GetHandleId(t)
    call SaveUnitHandle(H,id,1,GetTriggerUnit())
    call SaveGroupHandle(H,id,2,CreateGroup())
    call TimerStart(t,1.,true,function NULL_FIELD)
set t=null
endfunction

//*****************************************************************************************

function InitTrig_NullField takes nothing returns nothing
local integer i=0
    set gg_trg_NullField=CreateTrigger()
    call TriggerRegisterAnyUnitEventBJ(gg_trg_NullField,EVENT_PLAYER_HERO_SKILL)
    call TriggerAddCondition(gg_trg_NullField,Condition(function Trig_NullField_Conditions))
    call TriggerAddAction(gg_trg_NullField,function Trig_NullField_Actions)

loop
    exitwhen i==12
    call SetPlayerAbilityAvailable(Player(i),SPELL_DIS,false)
    set i=i+1
endloop

endfunction

//*****************************************************************************************
endlibrary
Это рабочие способность Аура с защитой от магии, обычная способность Rubick из дота.
При сохранении карты мне редактор выдает такую ошибку -
настройки редактора перепроверял все, уже 100 раз...
так же перекачивал два разных редактора, и оба с такими ошибками...
В чем может быть проблема?

mistwood, пришли карту или вопрос будет закрыт, мы ничем не поможем без информации обо всём коде)
`
ОЖИДАНИЕ РЕКЛАМЫ...

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
7
интересно девки пляшут... видимо я что-то путаю. лады, спасибо. буду копать дальше.
28
mistwood, это значит, что их не было даже?

или ты не понял что нужно исправить?)

зайди в код этих спеллов на самый вверх, нажми ctrl+f и введи туда знак вопроса, нажми ок и посмотри выделит ли что-нибудь
7
rsfghd:
mistwood, это значит, что их не было даже?

или ты не понял что нужно исправить?)

зайди в код этих спеллов на самый вверх, нажми ctrl+f и введи туда знак вопроса, нажми ок и посмотри выделит ли что-нибудь
я понял и проверил код именно через поиск, и вопросов там не нашлось.
Тут еще прикол вот в чем, перекидывая тригер на новую карту сохраняет ее и все работает.
А импортируя в мою, выдает такую ошибку. Вроде бы одна переменная всего, и рабочий код, но....
Понял одно, что cjass говно еще то.
Буду думать и искать вариант, как эту ауру переписать на jass...
28
mistwood, cjass норм тема, просто преппроцессор имеет некоторые ошибки + оптимизатор лучше отключать.
28
mistwood, если ты пишешь для себя на сджассе, то всё будет хорошо, ты знаешь свой код от и до. Но импортируя чужие системы очень часто сталкивался с жалобами, что какая-то непонятная чепуха происходит, компилятор не в состоянии указать на ошибку, а ты её ещё фиг найдёшь
14
Вопрос первый: Зачем дефайнить то что в либе под приват стоит?
Вопрос второй: этот скилл даёт маг резист но не отбиает его втф?
28
mistwood, пришли карту или вопрос будет закрыт, мы ничем не поможем без информации обо всём коде)
Принятый ответ
12
Буду думать и искать вариант, как эту ауру переписать на jass...
В таком случае редактор никак не показывает на реальную ошибку, нужно постепенно отключать и смотреть в чем проблема. Тут используются дефайны от Cjass, что по сути и есть сахар. Как оптимальный вариант будет убрать то, что может мешать сохраниться коду. Если еще актуально ,то свяжись со мной, помогу...
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.