Раньше так работала (сори за отступы, работал во взломанной мапе)
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) )
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, а потом удивился, что абилки пропали\не появились?
и пожалуйста, хватит накручивать себе рейтинг
`
ОЖИДАНИЕ РЕКЛАМЫ...
Чтобы оставить комментарий, пожалуйста, войдите на сайт.
call UnitMakeAbilityPermanent(u, true, 'AZ00')
А нет.
call UnitMakeAbilityPermanent(u, true, 'AZ00')