Всем привет.
В кратце:
  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, пришли карту или вопрос будет закрыт, мы ничем не поможем без информации обо всём коде)
`
ОЖИДАНИЕ РЕКЛАМЫ...

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

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

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

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

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