Mostrar datos en HUD [Espectador incluido]
#1
Dado que he visto muchos hud horribles donde crean variables/macros inservibles y horrores como llamar natives cada vez que se muestra el HUD, he decidido en aportarles este. En el cual, creo yo, es el más optimizado.

Código PHP:
#include <amxmodx>
#include <engine>
#include <hamsandwich>

const MAX_PLAYERS 32

const TASK_HUD 16367

enum _
:INFO
{
    
HEALTH,
    
ARMOR
}

#define get_bit(%1,%2)        (%1 & 1 << (%2 & 31))
#define set_bit(%1,%2)        (%1 |= (1 << (%2 & 31)))
#define clear_bit(%1,%2)    (%1 &= ~(1 << (%2 & 31)))

new g_iPlayerInfo[MAX_PLAYERS 1][INFO]
new 
g_bAlive
new g_iMsgSync

public plugin_init()
{
    
register_plugin("Info Hud""1.0""alan_el_more")
    
    
register_event("Health""Event_Health""b")
    
register_event("Battery""Event_Battery""b")
    
register_event("DeathMsg""Event_DeathMsg""a")
    
    
RegisterHam(Ham_Spawn"player""Ham_PlayerSpawn_Post"true)
    
    
g_iMsgSync CreateHudSyncObj()
}

public 
Event_Health(id)
{
    
g_iPlayerInfo[id][HEALTH] = read_data(1)
}

public 
Event_Battery(id)
{
    
g_iPlayerInfo[id][ARMOR] = read_data(1)
}

public 
Event_DeathMsg()
{
    
clear_bit(g_bAliveread_data(2))
}

public 
Ham_PlayerSpawn_Post(id)
{
    if(!
is_user_alive(id))
        return 
HAM_IGNORED;
    
    
set_bit(g_bAliveid)
    
    return 
HAM_IGNORED
}

public 
client_putinserver(id)
{
    
set_task(1.0"Task_ShowHUD"id TASK_HUD__"b")
}

public 
client_disconnect(id)
{
    
remove_task(id TASK_HUD)
}

public 
Task_ShowHUD(id)
{
    
id -= TASK_HUD
    
    
static iSpec
    iSpec 
0
    
    
if(!get_bit(g_bAliveid))
    {
        
iSpec entity_get_int(idEV_INT_iuser2)
        
        if(!
get_bit(g_bAliveiSpec))
            return
    }
    
    if(
iSpec && id != iSpec)
    {
        
set_hudmessage(25525500.0250.2116.01.10.00.0, -1)
        
ShowSyncHudMsg(idg_iMsgSync"Vida: %d^nChaleco: %d",
        
g_iPlayerInfo[iSpec][HEALTH], g_iPlayerInfo[iSpec][ARMOR])
    }
    else
    {
        
set_hudmessage(25525500.0250.2116.01.10.00.0, -1)
        
ShowSyncHudMsg(idg_iMsgSync"Vida: %d^nChaleco: %d",
        
g_iPlayerInfo[id][HEALTH], g_iPlayerInfo[id][ARMOR])
    }


Cualquier duda, pregunten.

Ni te molestes en enviarme un mensaje privado para pedirme ayuda porque NO lo voy a contestar.
Gracias por su atención.
Responder
#2
Muy buen aporte una cosa ya q queres optimizar para esta variiable g_bAlive te conviene usar bitsum en ves de char
[TUT] Carnage

Fight

"El limite de los backdoors de gente q sabe programar como nostros lo impone nuestra maldad interior y creeme q soy muy malo en el interior"

Anónimo
Responder
#3
Buen aporte alan ya que cada dia la gente pide como se hace para mostrar datos en un hud
[Imagen: 76561198066347799.png]
Responder
#4
(17/08/2014, 01:06 PM)mongito100 escribió: Muy buen aporte una cosa ya q queres optimizar para esta variiable g_bAlive te conviene usar bitsum en ves de char

Gracias. Después lo cambio.

EDIT: Listo

Ni te molestes en enviarme un mensaje privado para pedirme ayuda porque NO lo voy a contestar.
Gracias por su atención.
Responder


Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)