Раньше использовал перезарядку способностей на второй версии и всё работало прекрасно
Старый рабочий код
function StartAbilityCooldown takes unit whichUnit, integer abilityId, real cd returns boolean
local integer pAbility = 0
local integer offset1
local integer offset2
local boolean bRes = false
if GetUnitAbilityLevel( whichUnit, abilityId ) == 0 or cd == 0.00 then
return bRes
endif
set pAbility = GetUnitAbility( whichUnit, abilityId )
if pAbility < 1 then
return bRes
else
set offset1 = RMem( pAbility + 0x134 )
set offset2 = RMem( pAbility + 0x138 )
if offset1 > 0 or offset1 < 0 or offset2 > 0 or offset2 < 0 then
call WMem( pAbility + 0x134, mR2I( cd ) )
call WMem( pAbility + 0x138, mR2I( 10.00 ) )
if not InGame then
call BJDebugMsg( "Start Cooldown WARNING!" )
call BJDebugMsg( "ADRESS-VAL1-VAL2" )
call BJDebugMsg( Int2Hex(pAbility)+" - "+Int2Hex(offset1)+" - "+Int2Hex(offset2))
call BJDebugMsg( "abil-"+Id2String(abilityId) +" owner-"+ Int2Hex(pAbility) )
endif
endif
set Memory[pReserverdIntArg1 / 4] = mR2I( cd )
call CallThisCallWith2Args( pStartAbilityCD, pAbility, pReserverdIntArg1 )
set bRes = IsAbilityOnCooldown( pAbility )
call WMem( pAbility + 0x134, offset1 )
call WMem( pAbility + 0x138, offset2 )
endif
return bRes
endfunction
Теперь же последние 2 месяца работаю только на первой версии и вот мне понадобилась функция StartAbilityCD кинулся а она то не работает как нужно использую так:
local integer abil=GetUnitAbility(unit, 'A010')
call StartAbilityCD(abil,4)
Только вместо запуска перезарядки с указанным интервалом, кд способности просто сбрасывается в 0 вместо 4х секундной, я уже не смогу перейти на второй мемхак где всё работало и извращаться с экзумацией снова не хочу, довольно
Принятый ответ
Мб переписать нужный тебе функционал под мх второй версии?
Я перенес минимум функций, т.к их вопервых овер дохрена, вовторых переносил самые популярные и простые, надо дллок тогда было.
Я перенес минимум функций, т.к их вопервых овер дохрена, вовторых переносил самые популярные и простые, надо дллок тогда было.
`
ОЖИДАНИЕ РЕКЛАМЫ...
Чтобы оставить комментарий, пожалуйста, войдите на сайт.
set pStartAbilityCD = (GameDLL + 0x050B70) GameDLL + 0x126990
Вот тут две версии, первая от IceFog вторая от DracoL1ch, обе работают, 1.26а
То в старой версии часть абилок баговали...
set pStartAbilityCD = GameDLL + 0x126990 26
Для Init 26 ффсет совпадает, если это так работает, а что это такое эти Иниты?
Я перенес минимум функций, т.к их вопервых овер дохрена, вовторых переносил самые популярные и простые, надо дллок тогда было.