Решил сделать способность, которая будет копировать другие способности, типо ульты Рубика. Для начала , что бы протестить механику сделал область. при вхождении в которую юниту дают способность, а когда он выходит, то способность убирают.(спелл в другом месте записывается в переменную). Столкнулся с проблемой , что если переменна перезаписывается за это время , то и спелл не удаляется. решил попробовать через хендл таблицу. Но всё равно не удаляется способность, если меняется переменная. Сразу извиняюсь за ваши глаза, я только начал осваивать код, раньше всё делал на GUI.
И сразу второй вопрос - можно ли сделать такое на GUI? Я ничего не смог придумать.
Вот такой получился код.
выучить-------------------------------------------------------------------------------
function Trig_learn_Actions takes nothing returns nothing
    call SaveIntegerBJ(StringHash(GetUnitName(GetTriggerUnit())) ,StringHash(GetUnitName(GetTriggerUnit())), udg_learnspell, udg_hash  )
    local integer spellID = LoadIntegerBJ(StringHash(GetUnitName(GetTriggerUnit())),StringHash(GetUnitName(GetTriggerUnit())), udg_hash)
    call UnitAddAbilityBJ( spellID, GetTriggerUnit() )
    set spellID = 0
endfunction


//===========================================================================
function InitTrig_learn takes nothing returns nothing
    set gg_trg_learn = CreateTrigger(  )
    call TriggerRegisterEnterRectSimple( gg_trg_learn, gg_rct________________000 )
    call TriggerAddAction( gg_trg_learn, function Trig_learn_Actions )
endfunction
забыть------------------------------------------------------------------------------------
function Trig_unlearn_Actions takes nothing returns nothing
    local integer spellIDdel = LoadIntegerBJ(StringHash(GetUnitName(GetTriggerUnit())),StringHash(GetUnitName(GetTriggerUnit())), udg_hash)
    call UnitRemoveAbilityBJ( spellIDdel, GetTriggerUnit() )
    set spellIDdel = 0 
    call FlushChildHashtable(udg_hash, StringHash(GetUnitName(GetTriggerUnit())))
    
endfunction

//===========================================================================
function InitTrig_unlearn takes nothing returns nothing
    set gg_trg_unlearn = CreateTrigger(  )
    call TriggerRegisterLeaveRectSimple( gg_trg_unlearn, gg_rct________________000 )
    call TriggerAddAction( gg_trg_unlearn, function Trig_unlearn_Actions )


endfunction

Принятый ответ

Вот для примера сделал, с комментарием для каждой функции
что бы нужный герой мог копировать спелы, добавь его в группу.
Загруженные файлы
`
ОЖИДАНИЕ РЕКЛАМЫ...
1
29
9 месяцев назад
1
Не могу понять что не так в коде триггера.
Буквально всё.
call FlushChildHashtable(udg_hash, StringHash(GetUnitName(GetTriggerUnit())))
Может всё-таки начать со статей?
1
13
9 месяцев назад
Отредактирован SoulRazor
1
Вот для примера сделал, с комментарием для каждой функции
что бы нужный герой мог копировать спелы, добавь его в группу.
Загруженные файлы
Принятый ответ
0
1
9 месяцев назад
0
хм +1 опыт
Чтобы оставить комментарий, пожалуйста, войдите на сайт.