Página 1 de 2

Saúde, colete, dinheiro, arma e munição visíveis somente quando necessário

Enviado: 08 Mai 2020, 09:29
por Israel
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.

Imagem
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
DOWNLOAD

Re: Saúde, colete, dinheiro, arma e munição visíveis somente quando necessário

Enviado: 08 Mai 2020, 13:18
por Neon
Brabo!

Re: Saúde, colete, dinheiro, arma e munição visíveis somente quando necessário

Enviado: 08 Mai 2020, 16:11
por Junior_Djjr
Eu recomendaria que você fizesse cachê dos endereços anteriores em vez de colocar os vanilla, pois mods de hud podem alterá-lo como um hook, dai você vai estar desfazendo os hooks dos outros mods.

Re: Saúde, colete, dinheiro, arma e munição visíveis somente quando necessário

Enviado: 08 Mai 2020, 18:39
por Israel
Junior_Djjr escreveu:
08 Mai 2020, 16:11
Eu recomendaria que você fizesse cachê dos endereços anteriores em vez de colocar os vanilla, pois mods de hud podem alterá-lo como um hook, dai você vai estar desfazendo os hooks dos outros mods.
Saz fentido. Fiz.

Re: Saúde, colete, dinheiro, arma e munição visíveis somente quando necessário

Enviado: 08 Mai 2020, 19:33
por thiago555aug
Niceee manito!! Ficou ótimo valeu!

Re: Saúde, colete, dinheiro, arma e munição visíveis somente quando necessário

Enviado: 08 Mai 2020, 20:48
por L34ND20
Orra daora! Só q a parte do TAB não tá voltando depois q aperta. Inclui as horas tbm mano. Show!

Re: Saúde, colete, dinheiro, arma e munição visíveis somente quando necessário

Enviado: 08 Mai 2020, 20:56
por Israel
Leandro MixModGTAini escreveu:
08 Mai 2020, 20:48
Orra daora! Só q a parte do TAB não tá voltando depois q aperta. Inclui as horas tbm mano. Show!
Como assim "não tá voltando"? Não tem problema aqui.
Como seria incluir as horas? Em que momento elas apareceriam?

Re: Saúde, colete, dinheiro, arma e munição visíveis somente quando necessário

Enviado: 08 Mai 2020, 21:08
por L34ND20
Israel escreveu:
08 Mai 2020, 20:56
Leandro MixModGTAini escreveu:
08 Mai 2020, 20:48
Orra daora! Só q a parte do TAB não tá voltando depois q aperta. Inclui as horas tbm mano. Show!
Como assim "não tá voltando"? Não tem problema aqui.
Como seria incluir as horas? Em que momento elas apareceriam? 
não esconde o hud de novo depois q aperta TAB. As horas qndo apertar TAB também.

Adicionado após 5 minutos 24 segundos:
Israel escreveu:
08 Mai 2020, 20:56
Leandro MixModGTAini escreveu:
08 Mai 2020, 20:48
 
Como assim "não tá voltando"? Não tem problema aqui. 
Tenho outros mods de hud, pode ser interferência então, já volto...

Re: Saúde, colete, dinheiro, arma e munição visíveis somente quando necessário

Enviado: 08 Mai 2020, 21:13
por Israel
Leandro MixModGTAini escreveu:
08 Mai 2020, 21:08
Israel escreveu:
08 Mai 2020, 20:56
Leandro MixModGTAini escreveu:
08 Mai 2020, 20:48
Orra daora! Só q a parte do TAB não tá voltando depois q aperta. Inclui as horas tbm mano. Show!
Como assim "não tá voltando"? Não tem problema aqui.
Como seria incluir as horas? Em que momento elas apareceriam?  
não esconde o hud de novo depois q aperta TAB. As horas qndo apertar TAB também.

Adicionado após 5 minutos 24 segundos:
Israel escreveu:
08 Mai 2020, 20:56
Leandro MixModGTAini escreveu:
08 Mai 2020, 20:48
 
Como assim "não tá voltando"? Não tem problema aqui.  
Tenho outros mods de hud, pode ser interferência então, já volto...  
Estranho. Aqui não acontecia o problema, mas de qualquer forma alterei algo que poderia ser a causa. Quanto ao horário, verei em breve.

Re: Saúde, colete, dinheiro, arma e munição visíveis somente quando necessário

Enviado: 08 Mai 2020, 21:21
por L34ND20
Disable radar on foot é o vilão desse mod kk 

''Quanto ao horário, verei em breve'' 
Fmza, tudo certo agora, já fala pro Junior q aquele mod é dele.

Re: Saúde, colete, dinheiro, arma e munição visíveis somente quando necessário

Enviado: 08 Mai 2020, 21:54
por L34ND20
''mas de qualquer forma alterei algo que poderia ser a causa'' 
Caramba mano q impaciência kkkk Disse ''já volto'' 

Re: Saúde, colete, dinheiro, arma e munição visíveis somente quando necessário

Enviado: 08 Mai 2020, 22:12
por Hector azevedo
Muito bom cara, gostei demais desse mod, deixou a hud muito mais clean.

Re: Saúde, colete, dinheiro, arma e munição visíveis somente quando necessário

Enviado: 09 Mai 2020, 01:00
por L34ND20
Israel escreveu:
08 Mai 2020, 21:13
mas de qualquer forma alterei algo que poderia ser a causa.
O problema era o mod ''Disable Radar on Foot'', apenas adapte a este mod, q é bem legal tbm do mesmo estilo.

Re: Saúde, colete, dinheiro, arma e munição visíveis somente quando necessário

Enviado: 09 Mai 2020, 09:13
por Israel
Leandro MixModGTAini escreveu:
09 Mai 2020, 01:00
Israel escreveu:
08 Mai 2020, 21:13
mas de qualquer forma alterei algo que poderia ser a causa.
O problema era o mod ''Disable Radar on Foot'', apenas adapte a este mod, q é bem legal tbm do mesmo estilo.  
Baixei aqui. O problema está realmente nesse Disable Radar on Foot, ele tá fazendo com que o bDrawingVitalStats seja true mesmo após soltar a tecla.

Re: Saúde, colete, dinheiro, arma e munição visíveis somente quando necessário

Enviado: 09 Mai 2020, 17:10
por Junior_Djjr
Eu tive este crash, provavelmente porque outro mod estava mexendo com o hud do dinheiro.
Game version: GTA SA 1.0 US
Unhandled exception at 0x0058F607 in gta_sa2.exe (+0x18f607): 0xC0000005: Access violation writing location 0x00000861.
    Register dump:
        EAX: 0x00000861  EBX: 0x000000FF  ECX: 0x000000B0  EDX: 0xFF000000  
        EDI: 0x00000000  ESI: 0x00000005  EBP: 0x004C4B40  EIP: 0x0058F607  
        ESP: 0x0177EEA0  EFL: 0x00210216  CS: 0x00000023   SS: 0x0000002B   
        GS: 0x0000002B   FS: 0x00000053   ES: 0x0000002B   DS: 0x0000002B   
        
    Stack dump:
        0x0177EEA0:  44E84925 432BA493 0177EF94 0600F568 0600F568 0177F494
        0x0177EEB8:  0600F27C 44F00000 00000040 19540048 FF000000 30303524
        0x0177EED0:  30303030 00000000 00000000 0177EF28 754967D0 03900000
        0x0177EEE8:  00140008 00000038 14FE6CEC 00000007 200E5120 200E5128
        0x0177EF00:  00000000 00000000 00000000 00000000 0177EEF0 00000000
        0x0177EF18:  0177F4A4 754AFBD0 60DAADD4 FFFFFFFE 0177F364 6875BBFC
        0x0177EF30:  00000040 00000038 19291E08 00000000 6875BCA7 00000008
        0x0177EF48:  00000002 0846B8E0 6875FC96 00000001 2FB18A0E 0177EF84
        0x0177EF60:  6875E246 00000000 00000010 00000002 0846AF00 00000010
        0x0177EF78:  6875E262 0846AF00 614083E0 00000000 0177EFB8 6875DA8F
        base: 0x01580000   top: 0x0177EEA0   bottom: 0x01780000
        
    Backtrace (may be wrong):
        =>0x0058F607 in gta_sa2.exe (+0x18f607) (0x0177EEDC) 
          0x754967D0 LocalAlloc+0x80 in KERNELBASE.dll (+0xf67d0) (0x0177EF28) 
          0x6875BBFC Direct3DCreate9Ex+0x201cc in d3d9.dll (+0x5bbfc) (0x0177F38C) 
          0x5012E673 luaopen_MoonAdditions+0x13b23 in MoonAdditions.dll (+0x7e673) (0x0177F3A8) 
          0x5012C9F6 luaopen_MoonAdditions+0x11ea6 in MoonAdditions.dll (+0x7c9f6) (0x0177F3B4) 
          0x5012E363 luaopen_MoonAdditions+0x13813 in MoonAdditions.dll (+0x7e363) (0x0177F3F0) 
          0x5012E402 luaopen_MoonAdditions+0x138b2 in MoonAdditions.dll (+0x7e402) (0x0177F410) 
          0x5012E714 luaopen_MoonAdditions+0x13bc4 in MoonAdditions.dll (+0x7e714) (0x0177F428) 
          0x5012E698 luaopen_MoonAdditions+0x13b48 in MoonAdditions.dll (+0x7e698) (0x0177F438) 
          0x50127CF9 luaopen_MoonAdditions+0xd1a9 in MoonAdditions.dll (+0x77cf9) (0x0177F444) 
          0x50127D1D luaopen_MoonAdditions+0xd1cd in MoonAdditions.dll (+0x77d1d) 
Corrigido simplesmente colocando um wait 0 no início do código, mas recomendo wait 200 pra ter certeza, pro mod só fazer o cachê depois que qualquer outro mod já fez as devidas alterações. Pra casos de cachê não é recomendado fazer logo no primeiro frame.
 
Israel escreveu:
09 Mai 2020, 09:13
Leandro MixModGTAini escreveu:
09 Mai 2020, 01:00
Israel escreveu:
08 Mai 2020, 21:13
mas de qualquer forma alterei algo que poderia ser a causa.
O problema era o mod ''Disable Radar on Foot'', apenas adapte a este mod, q é bem legal tbm do mesmo estilo.  
Baixei aqui. O problema está realmente nesse Disable Radar on Foot, ele tá fazendo com que o bDrawingVitalStats seja true mesmo após soltar a tecla.  
Não deu problema aqui, mas de fato o Disable Radar On Foot "descontrolava" o bDrawingVitalStats pois não fazia rodar o código que seta ele (quando entra num carro, certo?), daí eu atualizei o mod agora.
https://www.mixmods.com.br/2020/02/disa ... -foot.html