Хотел кд запустить, но эта функция даёт Fatalку, что делать???
function StartAbilityCD takes integer pAbility, real cd returns nothing
set Memory[ pReserverdIntArg1 / 4 ] = CleanInt( RealToIndex( cd ) )
call CallThisCallWith2Args( GameDLL + 0x126990, pAbility, pReserverdIntArg1 ) // pStartAbilityCD
endfunction
Принятый ответ
Как насчет юзать её нормальную версию из новых сборок мемхака?
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 ) )
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
Либо
function StartAbilityCooldown takes unit whichUnit, integer abilityId, real cd returns boolean
local integer pAbility = 0
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
call WMem(pReservedIntArg1 , SetRealIntoMemory(cd))
call this_call_2(pStartAbilityCD , pAbility , pReservedIntArg1)
set bRes = IsAbilityOnCooldown(pAbility)
endif
return bRes
`
ОЖИДАНИЕ РЕКЛАМЫ...
Чтобы оставить комментарий, пожалуйста, войдите на сайт.
Ред. LastUchiha
Во первых нет определения версии игры, во вторых проверки входных аргументов, в теме с мемхаком обсуждалось раз 10.
Не все выложенные функции - рабочие, многие демонстрационные и не годятся для игровых карт из за изьянов.