Раньше так работала (сори за отступы, работал во взломанной мапе)
function AddState takes integer i,unit u,integer state returns nothing
local integer i2=SIZE_state[state]
local boolean f1=false
set i=i + LoadInteger(FNCS_get_stat, GetHandleId(u), state)
call UnitRemoveAbility(u, FNCS_attack[SIZE_state[state] + 1 + 20 * state])
call SaveInteger(FNCS_get_stat, GetHandleId(u), state, i)

if i <= - 1 then
set i=COREN[i2 + 1] + i
set f1=true
endif
loop
exitwhen 0 > i2
if i >= COREN[i2] then
call UnitAddAbility(u , FNCS_attack[i2 + 20 * state])   // ну раньше работало, сейчас нет
call UnitMakeAbilityPermanent(u, true, FNCS_attack[FNCS_attack[i2 + 20 * state]])
set i=i - COREN[i2]
else
call UnitRemoveAbility(u, FNCS_attack[i2 + 20 * state])
endif
set i2=i2 - 1
endloop
if f1 then
call UnitAddAbility(u, FNCS_attack[SIZE_state[state] + 1 + 20 * state])
call UnitMakeAbilityPermanent(u, true, FNCS_attack[SIZE_state[state] + 1 + 20 * state])
endif
endfunction
это произошло после того как в функции:
function PermSkill takes unit u,integer i returns boolean
local boolean retr=UnitAddAbility(u, i)
call UnitMakeAbilityPermanent(u, true, i)


call  UnitMakeAbilityPermanent(u, true,LoadInteger(HT_FIX,i,1) )
call  UnitMakeAbilityPermanent(u, true,LoadInteger(HT_FIX,i,2) )
call  UnitMakeAbilityPermanent(u, true,LoadInteger(HT_FIX,i,3) )
call  UnitMakeAbilityPermanent(u, true,LoadInteger(HT_FIX,i,4) )
call  UnitMakeAbilityPermanent(u, true,LoadInteger(HT_FIX,i,5) )
call  UnitMakeAbilityPermanent(u, true,LoadInteger(HT_FIX,i,6) )
call  UnitMakeAbilityPermanent(u, true,LoadInteger(HT_FIX,i,7) )

return retr
endfunction
Добавил
call UnitMakeAbilityPermanent(u, true,LoadInteger(HT_FIX,i,1) )
call UnitMakeAbilityPermanent(u, true,LoadInteger(HT_FIX,i,2) )
call UnitMakeAbilityPermanent(u, true,LoadInteger(HT_FIX,i,3) )
call UnitMakeAbilityPermanent(u, true,LoadInteger(HT_FIX,i,4) )
call UnitMakeAbilityPermanent(u, true,LoadInteger(HT_FIX,i,5) )
call UnitMakeAbilityPermanent(u, true,LoadInteger(HT_FIX,i,6) )
call UnitMakeAbilityPermanent(u, true,LoadInteger(HT_FIX,i,7) )
Специально для спелбук скилов. (чтобы скилы спелбука не пропадали после морфа). Эта функция была заменена на все UnitAddAbility, кроме AddState. Если я делаю:
function AddState takes integer i,unit u,integer state returns nothing
local integer i2=SIZE_state[state]
local boolean f1=false
set i=i + LoadInteger(FNCS_get_stat, GetHandleId(u), state)
call UnitRemoveAbility(u, FNCS_attack[SIZE_state[state] + 1 + 20 * state])
call SaveInteger(FNCS_get_stat, GetHandleId(u), state, i)

if i <= - 1 then
set i=COREN[i2 + 1] + i
set f1=true
endif
loop
exitwhen 0 > i2
if i >= COREN[i2] then
call PermSkill(u , FNCS_attack[i2 + 20 * state])
//call UnitMakeAbilityPermanent(u, true, FNCS_attack[FNCS_attack[i2 + 20 * state]])
set i=i - COREN[i2]
else
call UnitRemoveAbility(u, FNCS_attack[i2 + 20 * state])
endif
set i2=i2 - 1
endloop
if f1 then
call PermSkill(u, FNCS_attack[SIZE_state[state] + 1 + 20 * state])
//call UnitMakeAbilityPermanent(u, true, FNCS_attack[SIZE_state[state] + 1 + 20 * state])
endif
endfunction
AddState - добавляет статы юниту (атаку, броню, реген и тд, спелбуков нет)
То все работает....

то есть ты убрал функции добавления способностей и оставил функции makepermanent, а потом удивился, что абилки пропали\не появились?

и пожалуйста, хватит накручивать себе рейтинг
`
ОЖИДАНИЕ РЕКЛАМЫ...
6
1 словом, UnitMakeAbilityPermanent стала работать, только в функции PermSkill
20
то есть ты убрал функции добавления способностей и оставил функции makepermanent, а потом удивился, что абилки пропали\не появились?

и пожалуйста, хватит накручивать себе рейтинг
Принятый ответ
6
ssbbssc:
то есть ты убрал функции добавления способностей и оставил функции makepermanent, а потом удивился, что абилки пропали\не появились?

и пожалуйста, хватит накручивать себе рейтинг
Ты понял вопрос???
16
содержимое спелбуков тоже нужно вживлять через permanent, все до единой бонусные способности. а лучше не заниматься херней, скрыть иконки и вручать абилки напрямую, без спелбуков
6
DracoL1ch:
содержимое спелбуков тоже нужно вживлять через permanent, все до единой бонусные способности. а лучше не заниматься херней, скрыть иконки и вручать абилки напрямую, без спелбуков
со спелбуками все норм.. вложенные скилы остаюсться после морфа.... сейчас проблема, что UnitMakeAbilityPermanent не везде работает....
call UnitAddAbility(u , 'AZ00')
call UnitMakeAbilityPermanent(u, true, 'AZ00')
если это юзаю в коде под кастомной функции PermSkill, то после морфа мой скил пропадает, если это действия делаю в коде, над PermSkill, то все работает нормально.
А нет.
call UnitAddAbility(u , 'AZ00')
call UnitMakeAbilityPermanent(u, true, 'AZ00')
не работает, скил 'AZ00' пропадает.... мб есть ограничение на функцию UnitMakeAbilityPermanent ?
Чтобы оставить комментарий, пожалуйста, войдите на сайт.