fixbag, Короче где то была сдесь моя наработка, правда там баг есть маленкий, можно исправить его по быстрому, короче суть такая изменяет характеритстики воинов по способностям.Добавлено (18-08-2009, 15:18)
---------------------------------------------
Можно изменять: Бронь, Хп,ману, атаку, ща скину функции
Добавлено (18-08-2009, 15:27)
---------------------------------------------
Предположим вот:
globals
integer array d2
integer array aq
endglobals
function initarrayd2 takes nothing returns nothing
set d2[0] = 1
set d2[1] = 2
set d2[2] = 4
set d2[3] = 8
set d2[4] = 16
set d2[5] = 32
set d2[6] = 64
set d2[7] = 128
set d2[8] = 256
set d2[9] = 512
set d2[10]= 1024
set aq[0] = '0000'
set aq[1] = '0001'
set aq[2] = '0002'
set aq[3] = '0003'
set aq[4] = '0004'
set aq[5] = '0005'
set aq[6] = '0006'
set aq[7] = '0007'
set aq[8] = '0008'
set aq[9] = '0009'
set aq[10]= '000A'
endfunction
function SetUnitDef takes unit u, integer i returns nothing
local integer for = 9
call UnitRemoveAbility( u , '000A')
if ( i < 0) then
set i = 1024 + i
call UnitAddAbility(u, '000A' )
endif
loop
exitwhen for < 0
call UnitRemoveAbility( u , aq[for])
if( i >= d2[for])then
set i = i - d2[for]
call UnitAddAbility(u, aq[for] )
endif
set for = for - 1
endloop
endfunction
function GetUnitDef takes unit u returns integer
local integer i = 0
local integer i2 = 0
loop
exitwhen i > 9
set i2 = i2 + GetUnitAbilityLevel(u,aq[i])*d2[i]
set i = i + 1
endloop
set i2 = i2 + GetUnitAbilityLevel(u,aq[10])*(-1024)
return i2
endfunction
Вот фукнция SetUnitDef - устанавливает нужную доп защиту юниту. GetUnitDef - возврощает.
Но надо ещё сделать способности:
'0000' - способность которая даёт + 1 защите
'0001' +2
'0002' +4
'0003' +8
'0004' +16
'0005' +32
'0006' +64
'0007' +128
'0008' +256
'0009' +512
'000A' -1024
'0000' - это id способности, он может быть любой, главно чтобы все было занесенно в массив по порядку и проинициализированно. тоже самое и с хп и маной и атакой, токо способности сменить