Saúde, colete, dinheiro, arma e munição visíveis somente quando necessário
Enviado: 08 Mai 2020, 09:29
Fiz este mod baseado nesta sugestão. Com ele, alguns detalhes do hud só serão exibidos quando forem usados.
Saúde e colete:
Ao ganhar vida ou colete;
Ao perder vida ou colete;
Ao ficar com a vida muito baixa.
Dinheiro:
Ao receber dinheiro;
Ao gastar dinheiro.
Armas e munições:
Ao trocar arma;
Ao gastar munição;
Ao recarregar munição;
Ao mirar.
Os detalhes permanecem por 2 segundos.
Ao exibir as estatísticas (Tecla TAB), todos os detalhes serão exibidos.

DOWNLOAD
Saúde e colete:
Ao ganhar vida ou colete;
Ao perder vida ou colete;
Ao ficar com a vida muito baixa.
Dinheiro:
Ao receber dinheiro;
Ao gastar dinheiro.
Armas e munições:
Ao trocar arma;
Ao gastar munição;
Ao recarregar munição;
Ao mirar.
Os detalhes permanecem por 2 segundos.
Ao exibir as estatísticas (Tecla TAB), todos os detalhes serão exibidos.

SourceAbrir
Código: Selecionar tudo
{$Cleo}
wait 500
0A8D: 0@ = read_memory 0x0058EC21 size 4 vp 1
if 0@ <> 0x90909090
then
0AB1: call_scm_func @EnableHealthAndArmour 1 false
0AB1: call_scm_func @EnableMoney 1 false
0AB1: call_scm_func @EnableWeaponAndAmmo 1 false
0AB1: call_scm_func @EnableClock 1 false
end
0A96: 15@ = actor $Player_Actor struct
15@ += 0x540 // fHealth
while true
wait 0
0226: 10@ = actor $Player_Actor health
04DD: 11@ = actor $Player_Actor armour
010B: 12@ = player $Player_Char money
0470: 13@ = actor $Player_Actor current_weapon
041A: 14@ = actor $Player_Actor weapon 13@ ammo
0A8D: 31@ = read_memory 15@ size 4 vp 0
if or
803B: 0@ <> 10@
803B: 1@ <> 11@
31@ < 10.0 // is_healthbar_pulsing
then
0AB1: call_scm_func @EnableHealthAndArmour 1 true
0A8E: 25@ = 32@ + 2000 // 2 sec
0085: 0@ = 10@
0085: 1@ = 11@
end
if 803B: 2@ <> 12@
then
0AB1: call_scm_func @EnableMoney 1 true
0A8E: 26@ = 32@ + 2000 // 2 sec
0085: 2@ = 12@
end
0A8D: 30@ = read_memory 0x00B6F1A8 size 2 vp 0 // CCamera->CCam->Mode
if or
803B: 3@ <> 13@
803B: 4@ <> 14@
30@ == 7 // Sniper Rifle
30@ == 8 // RPG
30@ == 51 // Missile Launcher
30@ == 53 // Others
then
0AB1: call_scm_func @EnableWeaponAndAmmo 1 true
0A8E: 27@ = 32@ + 2000 // 2 sec
0085: 3@ = 13@
0085: 4@ = 14@
end
if 001D: 32@ > 25@
then
0AB1: call_scm_func @EnableHealthAndArmour 1 false
end
if 001D: 32@ > 26@
then
0AB1: call_scm_func @EnableMoney 1 false
end
if 001D: 32@ > 27@
then
0AB1: call_scm_func @EnableWeaponAndAmmo 1 false
end
0A8D: 31@ = read_memory 0x00BAB1DE size 1 vp 0 // bDrawingVitalStats
if 31@ == true
then
0AB1: call_scm_func @EnableHealthAndArmour 1 true
0AB1: call_scm_func @EnableMoney 1 true
0AB1: call_scm_func @EnableWeaponAndAmmo 1 true
0AB1: call_scm_func @EnableClock 1 true
repeat
wait 0
0A8D: 31@ = read_memory 0x00BAB1DE size 1 vp 0 // bDrawingVitalStats
until 31@ == false
0AB1: call_scm_func @EnableHealthAndArmour 1 false
0AB1: call_scm_func @EnableMoney 1 false
0AB1: call_scm_func @EnableWeaponAndAmmo 1 false
0AB1: call_scm_func @EnableClock 1 false
end
end
:EnableHealthAndArmour
if 0@ == true
then
0AB1: call_scm_func @GetCache 1 index 0 -> 1@ 2@
0AB1: call_scm_func @GetCache 1 index 1 -> 3@ 4@
0A8C: write_memory 0x0058EE9A size 1 value 1@ vp 1
0A8C: write_memory 0x0058EE9B size 4 value 2@ vp 1
0A8C: write_memory 0x0058EF6B size 1 value 3@ vp 1
0A8C: write_memory 0x0058EF6C size 4 value 4@ vp 1
else
0AB1: call_scm_func @SetCache 2 address 0x0058EE9A index 0
0AB1: call_scm_func @SetCache 2 address 0x0058EF6B index 1
0A8C: write_memory 0x0058EE9A size 5 value 0x90 vp 1
0A8C: write_memory 0x0058EF6B size 5 value 0x90 vp 1
end
0AB2: ret 0
:EnableMoney
if 0@ == true
then
0AB1: call_scm_func @GetCache 1 index 2 -> 1@ 2@
0A8C: write_memory 0x0058F607 size 1 value 1@ vp 1
0A8C: write_memory 0x0058F608 size 4 value 2@ vp 1
else
0AB1: call_scm_func @SetCache 2 address 0x0058F607 index 2
0A8C: write_memory 0x0058F607 size 5 value 0x90 vp 1
end
0AB2: ret 0
:EnableWeaponAndAmmo
if 0@ == true
then
0AB1: call_scm_func @GetCache 1 index 3 -> 1@ 2@
0AB1: call_scm_func @GetCache 1 index 4 -> 3@ 4@
0A8C: write_memory 0x0058F944 size 1 value 1@ vp 1
0A8C: write_memory 0x0058F945 size 4 value 2@ vp 1
0A8C: write_memory 0x0058FA25 size 1 value 3@ vp 1
0A8C: write_memory 0x0058FA26 size 4 value 4@ vp 1
else
0AB1: call_scm_func @SetCache 2 address 0x0058F944 index 3
0AB1: call_scm_func @SetCache 2 address 0x0058FA25 index 4
0A8C: write_memory 0x0058F944 size 5 value 0x90 vp 1
0A8C: write_memory 0x0058FA25 size 5 value 0x90 vp 1
end
0AB2: ret 0
:EnableClock
if 0@ == true
then
0AB1: call_scm_func @GetCache 1 index 5 -> 1@ 2@
0A8C: write_memory 0x0058EC21 size 1 value 1@ vp 1
0A8C: write_memory 0x0058EC22 size 4 value 2@ vp 1
else
0AB1: call_scm_func @SetCache 2 address 0x0058EC21 index 5
0A8C: write_memory 0x0058EC21 size 5 value 0x90 vp 1
end
0AB2: ret 0
:SetCache
1@ *= 5
0AC6: 2@ = label @Cache offset
005A: 2@ += 1@
0A8D: 3@ = read_memory 0@ size 1 vp 1
0@++
0A8D: 4@ = read_memory 0@ size 4 vp 1
if and
3@ <> 0x90
4@ <> 0x90909090
then
0A8C: write_memory 2@ size 1 value 3@ vp 0
2@++
0A8C: write_memory 2@ size 4 value 4@ vp 0
end
0AB2: ret 0
:GetCache
0@ *= 5
0AC6: 1@ = label @Cache offset
005A: 1@ += 0@
0A8D: 2@ = read_memory 1@ size 1 vp 0
1@++
0A8D: 3@ = read_memory 1@ size 4 vp 0
0AB2: ret 2 2@ 3@
:Cache
hex
E8 D1 A3 FF FF // health
E8 30 A1 FF FF // armor
E8 F4 B0 18 00 // money
E8 87 DE FF FF // weapon
E8 86 99 FF FF // ammo
E8 DA BA 18 00 // clock
end