Problema con hud
#1
Hola buenas tengo un problema tengo un sistema de niveles por exp con guardado sistema sqlite me anda todo bien guarda a la perfeccion

pero tengo un problema con el hud

parto del nivel 1 y 0 de exp ya gano 4 de exp por que eso da al matar luego pruebo para ver si guarda y me sale todo al revez la verdad nose que sea pero solo cuando pongo la exp que falta les dejo foto


IMAGEN 1

GANO 4 de exp
[Imagen: attachment.php?aid=5080]

IMAGEN 2

Hago retry y se ve asi el hud
[Imagen: attachment.php?aid=5081]

Código PHP:
#include <amxmodx>
#include <sqlx>
#include <hamsandwich>
#include <fun>

//#define MYSQL

#if defined MYSQL

#define MYSQL_HOST "127.0.0.1"
#define MYSQL_USER "root"
#define MYSQL_PASS ""
#define MYSQL_DATEBASE "cuentas"

#else

#define SQLITE_DATEBASE "cuentas"

#endif

new const szTable[ ] = "cuentas";
new const 
szPrefix[ ] = "[Cuentas]";
new 
Handle:g_hTuple;
new 
g_maxplayers;
new 
g_estado;
new 
g_id33 ];
new 
g_usuario33 ][ 34 ];
new 
g_password33 ][ 34 ];
new 
g_playername33 ][ 33 ];
new 
g_level[33], g_exp[33]
#define LevelNext(%1)    (%1 * 30)
#define NivelMaximo 30
#define TAG "[ZP]"
enum
{
    
REGISTRAR_CUENTA,
    
LOGUEAR_CUENTA,
    
CARGAR_DATOS,
    
GUARDAR_DATOS
};
public 
client_putinserver(id)
{
    
set_task(1.0"ShowHud"id__"b")
}
public 
plugin_init()
{
    
register_plugin("Sistema de cuentas MySQL/SQLite""1.1.2""r0ma")
    
RegisterHam(Ham_Killed"player""ham_PlayerKilled"1)
    
register_clcmd("CREAR_USUARIO""reg_usuario")
    
register_clcmd("CREAR_PASSWORD""reg_password")
    
register_clcmd("LOGUEAR_USUARIO""log_usuario")
    
register_clcmd("LOGUEAR_PASSWORD""log_password")
    
register_clcmd("chooseteam""clcmd_changeteam")
    
register_clcmd("jointeam""clcmd_changeteam")
    
register_clcmd("say /god""cmd_god")
    
register_message(get_user_msgid("ShowMenu"), "message_ShowMenu")
    
register_message(get_user_msgid("VGUIMenu"), "message_VGUIMenu")
    
register_event("HLTV""event_round_start""a""1=0""2=0")
    
    
g_maxplayers get_maxplayers()
    
MySQLx_Init( );
}
public 
message_VGUIMenuiMsgidiDestid )
{
    if( 
g_estado & (1<<id) ||  get_msg_arg_int) != ) return PLUGIN_CONTINUE;
    
    
show_login_menuid );
    return 
PLUGIN_HANDLED;
}
public 
message_ShowMenuiMsgidiDestid )
{
    if( 
g_estado & (1<<id) ) return PLUGIN_CONTINUE;
    
    static 
sMenuCode33 ];
    
get_msg_arg_string4sMenuCodecharsmaxsMenuCode ) );
    
    if( 
containisMenuCode"Team_Select" ) != -)
    {
        
show_login_menuid );
        return 
PLUGIN_HANDLED;
    }
    return 
PLUGIN_CONTINUE;
}
public 
clcmd_changeteam(id)
{
    if( ~
g_estado & (1<<id) )
    {
        
show_login_menuid );
        return 
PLUGIN_HANDLED;
    }
    
    return 
PLUGIN_CONTINUE;
}

public 
show_login_menu(id)
{
    new 
menu menu_create"Menu de cuentas""login_menu" );
    
    
menu_additemmenu"Crear cuenta" );
    
menu_additemmenu"Ingresar" );
    
    
menu_setpropmenuMPROP_EXITMEXIT_NEVER );
    
    
menu_displayidmenu );
    
    return 
PLUGIN_HANDLED;
}

public 
login_menuidmenuitem )
{
    
    switch( 
item )
    {
        case 
0client_cmdid"messagemode CREAR_USUARIO" );
        case 
1client_cmdid"messagemode LOGUEAR_USUARIO" );
    }
    
    return 
PLUGIN_HANDLED;
}

public 
reg_usuarioid )
{
    
read_argsg_usuarioid ], charsmaxg_usuario[ ] ) );
    
remove_quotesg_usuarioid ] );
    
trimg_usuarioid ] );
    
    
md5g_usuarioid ], g_usuarioid ] );
    
    
client_cmdid"messagemode CREAR_PASSWORD" );
    
    return 
PLUGIN_HANDLED;
}

public 
reg_passwordid )
{
    
read_argsg_passwordid ], charsmaxg_password[ ] ) );
    
remove_quotesg_passwordid ] );
    
trimg_passwordid ] );
    
md5g_passwordid ], g_passwordid ] );
    
    new 
szQuery256 ], iData];
    
    
iData] = id;
    
iData] = REGISTRAR_CUENTA;
    
    
get_user_nameidg_playernameid ], charsmaxg_playername[ ] ) );
    
    
formatexszQuerycharsmaxszQuery ), "INSERT INTO %s (Usuario, Password, Pj) VALUES (^"%s^", ^"%s^", ^"%s^")"szTableg_usuarioid ], g_passwordid ], g_playernameid ] );
    
SQL_ThreadQuery(g_hTuple"DataHandler"szQueryiData2);
    
    return 
PLUGIN_HANDLED;
}
public 
log_usuarioid )
{
    
read_argsg_usuarioid ], charsmaxg_usuario[ ] ) );
    
remove_quotesg_usuarioid ] );
    
trimg_usuarioid ] );
    
md5g_usuarioid ], g_usuarioid ] );
    
    
client_cmdid"messagemode LOGUEAR_PASSWORD" );
    
    return 
PLUGIN_HANDLED;
}
public 
log_passwordid )
{
    
read_argsg_passwordid ], charsmaxg_password[ ] ) );
    
remove_quotesg_passwordid ] );
    
trimg_passwordid ] );
    
md5g_passwordid ], g_passwordid ] );
    
    new 
szQuery128 ], iData];
    
    
iData] = id;
    
iData] = LOGUEAR_CUENTA;
    
    
formatexszQuerycharsmaxszQuery ), "SELECT * FROM %s WHERE Usuario=^"%s^" AND Password=^"%s^""szTableg_usuarioid ], g_passwordid ] );
    
SQL_ThreadQueryg_hTuple"DataHandler"szQueryiData);
    
    return 
PLUGIN_HANDLED;
}
public 
guardar_datosid )
{
    new 
szQuery128 ], iData];
    
    
iData] = id;
    
iData] = GUARDAR_DATOS;
    
    
formatexszQuerycharsmaxszQuery ), "UPDATE %s SET Experiencia='%d', Nivel='%d' WHERE id='%d'"szTableg_exp[id], g_level[id], g_idid ] );
    
SQL_ThreadQueryg_hTuple"DataHandler"szQueryiData);
}

public 
DataHandlerfailstateHandle:Queryerror[ ], error2data[ ], datasizeFloat:time ) {
    static 
id;
    
id data];
    
    if( !
is_user_connectedid ) ) return;

    switch( 
failstate )
    {
        case 
TQUERY_CONNECT_FAILED:
        {
            
log_to_file"SQL_LOG_TQ.txt""Error en la conexion al MySQL [%i]: %s"error2error );
            return;
        }
        case 
TQUERY_QUERY_FAILED:
        {
            
log_to_file"SQL_LOG_TQ.txt""Error en la consulta al MySQL [%i]: %s"error2error );
        }
    }
    switch( 
data] )
    {
        case 
REGISTRAR_CUENTA:
        {
            if( 
failstate TQUERY_SUCCESS )
            {
                if( 
containierror"Usuario" ) != -)
                    
client_printidprint_chat"%s El usuario ya existe."szPrefix );

                else if( 
containierror"Pj" ) != -)
                    
client_printidprint_chat"%s El nombre de personaje esta en uso."szPrefix );
                else
                    
client_printidprint_chat"%s Error al crear la cuenta. Intente nuevamente."szPrefix );
                
                
client_cmdid"spk buttons/button10.wav" );
                
                
show_login_menuid );
            }
            else
            {
                
client_printidprint_chat"%s Tu cuenta ha sido creada correctamente, tu ID ES : %d."szPrefixg_id[id]);
                
                new 
szQuery128 ], iData];
                
                
iData] = id;
                
iData] = CARGAR_DATOS;
                
                
formatexszQuerycharsmaxszQuery ), "SELECT id Experiencia, Nivel FROM %s WHERE Usuario=^"%s^""szTableg_usuarioid ] );
                
SQL_ThreadQueryg_hTuple"DataHandler"szQueryiData);
            }
            
        }
        case 
LOGUEAR_CUENTA:
        {
            if( 
SQL_NumResultsQuery ) )
            {
                
g_idid ] = SQL_ReadResultQuery);
                
SQL_ReadResultQuery3g_playernameid ], charsmaxg_playername[ ] ) );                    
                
                
// Cargamos datos
                
g_level[id] = SQL_ReadResult(Query4)
                
g_exp[id] = SQL_ReadResult(Query5);
                
                
func_login_successid );
            }
            else
            {
                
client_printidprint_chat"%s Usuario o Contraseñ incorrecta."szPrefix );
                
client_cmdid"spk buttons/button10.wav" );
                
                
show_login_menuid );
            }
        }
        case 
CARGAR_DATOS:
        {
            if( 
SQL_NumResultsQuery ) )
            {
                
g_idid ] = SQL_ReadResultQuery);
                
                
// Ponemos la exp en 0 para el nuevo usuario.
                
g_exp[id] = 0;
                
g_level[id] = 1;
                
                
func_login_successid );
            }
            else
            {
                
client_printidprint_chat"%s Error al cargar los datos, intente nuevamente."szPrefix );
                
show_login_menuid );
            }
        }
        case 
GUARDAR_DATOS:
        {
            if( 
failstate TQUERY_SUCCESS )
                
console_printid"%s Error en el guardado de datos."szPrefix );
            
            else
                
console_printid"%s Datos guardados."szPrefix );
        }
    }
}
public 
func_login_successid )
{
    
engclient_cmdid"jointeam""5" );
    
engclient_cmdid"joinclass""5" );
    
    
g_estado |= (1<<id);
    
    
set_user_infoid"name"g_playernameid ] );
}

public 
event_round_start( )
{
    for( new 
1<= g_maxplayersi++ )
    {
        if( 
g_estado & (1<<i) && is_user_connected) )
            
guardar_datos);
    }
}        

public 
client_infochangedid )
{
    if( ~
g_estado & (1<<id) ) return PLUGIN_CONTINUE;
    
    static 
name33 ];
    
get_user_infoid"name"namecharsmaxname ) );
    
    if( !
equalg_playernameid ], name ) )
    {
        
set_user_infoid"name"g_playernameid ] );
        return 
PLUGIN_HANDLED;
    }
    
    return 
PLUGIN_CONTINUE;
}
public 
client_disconnect(  id ) {
    
    if( 
g_estado & (1<<id) )
    {
        
guardar_datosid );
        
g_estado &= ~(1<<id);
    }
    
g_usuarioid ][ ] = '^0';
    
g_passwordid ][ ] = '^0';
}

#if defined MYSQL
public MySQLx_Init( )
{
    
g_hTuple SQL_MakeDbTupleMYSQL_HOSTMYSQL_USERMYSQL_PASSMYSQL_DATEBASE );
    
    if( !
g_hTuple 
    {
        
log_to_file"SQL_ERROR.txt""No se pudo conectar con la base de datos." );
        return 
pause"a" );
    }
    return 
PLUGIN_CONTINUE;
}
#else

// Gracias ILUSION por fixear la conexión
public MySQLx_Init( )
{
    new 
get_type12 ];
    
    
SQL_SetAffinity"sqlite" );
    
SQL_GetAffinityget_typesizeof get_type );

    if( !
equaliget_type"sqlite" ) )
    {
        
log_to_file"SQLITE_ERROR.txt""Error de conexion" );
        return 
pause"a" );
    }
    
g_hTuple SQL_MakeDbTuple""""""SQLITE_DATEBASE );
    return 
PLUGIN_CONTINUE
}
#endif
public plugin_end()
{
    
SQL_FreeHandleg_hTuple );
}
public 
ham_PlayerKilled(victimattackershouldgib)
{
    if(!
is_user_connected(victim) || !is_user_connected(attacker) || get_user_team(victim) == get_user_team(attacker))
    {
        return 
HAM_IGNORED;
    }
    if(
g_level[attacker] == NivelMaximo)
    {
        
client_print(attackerprint_chat"%s No has ganado exp, por estar en tu nivel maximo."TAG)
        return 
HAM_IGNORED
    
}
    
g_exp[attacker] += 4
    checkLevel
(attacker)
    return 
HAM_IGNORED

public 
checkLevel(id)
{
    new 
iUploaded false
    
while(g_exp[id] >= LevelNext(g_level[id]) && g_level[id] < NivelMaximo)                                                               // nivel y que el nivel sea menor al nivel máximo, así podrá subir de nivel la persona.
    
{
        ++
g_level[id]
        
iUploaded true
    }
    if(
iUploaded)
    {
        
client_print(idprint_chat"%s Felicidades subiste al nivel: %d."TAGg_level[id])
        
iUploaded false
    
}
}
public 
cmd_god(id)
{
    if(
is_user_alive(id))
    {
        
set_user_godmode(id1)
    }
}
public 
ShowHud(id)
{
    if(
is_user_alive(id))
    {
        
set_hudmessage(02552550.00.2706.012.0)
        
show_hudmessage(id"Nivel: %d^nExperiencia : %d/%d"g_level[id], g_exp[id], LevelNext(g_level[id]))
    }



Archivos adjuntos Miniatura(s)
       
Responder
#2
Debe de ser algun problema al crear la tabla manda como tienes tu tabla
Trolleyes
Responder
#3
Así la tengo

Código PHP:
CREATE TABLE "cuentas" 
(
    
"id" INTEGER PRIMARY KEY  AUTOINCREMENT  NOT NULL
    
"Usuario" VARCHAR NOT NULL  UNIQUE
    
"Password" VARCHAR NOT NULL
    
"Pj" VARCHAR NOT NULL  UNIQUE,
    
"Experiencia" INTEGER DEFAULT 0
"Nivel" INTEGER DEFAULT 1
Responder
#4
(17/12/2017, 04:58 PM)GeX~ escribió: Así la tengo

Código PHP:
CREATE TABLE "cuentas" 
(
    
"id" INTEGER PRIMARY KEY  AUTOINCREMENT  NOT NULL
    
"Usuario" VARCHAR NOT NULL  UNIQUE
    
"Password" VARCHAR NOT NULL
    
"Pj" VARCHAR NOT NULL  UNIQUE,
    
"Experiencia" INTEGER DEFAULT 0
"Nivel" INTEGER DEFAULT 1

En
Código PHP:
case REGISTRAR_CUENTA:
        {
            if( 
failstate TQUERY_SUCCESS )
            {
                if( 
containierror"Usuario" ) != -)
                    
client_printidprint_chat"%s El usuario ya existe."szPrefix );

                else if( 
containierror"Pj" ) != -)
                    
client_printidprint_chat"%s El nombre de personaje esta en uso."szPrefix );
                else
                    
client_printidprint_chat"%s Error al crear la cuenta. Intente nuevamente."szPrefix );
                
                
client_cmdid"spk buttons/button10.wav" );
                
                
show_login_menuid );
            }
            else
            {
                
client_printidprint_chat"%s Tu cuenta ha sido creada correctamente, tu ID ES : %d."szPrefixg_id[id]);
                
                new 
szQuery128 ], iData];
                
                
iData] = id;
                
iData] = CARGAR_DATOS;
                
                
formatexszQuerycharsmaxszQuery ), "SELECT id Experiencia, Nivel FROM %s WHERE Usuario=^"%s^""szTableg_usuarioid ] );
                
SQL_ThreadQueryg_hTuple"DataHandler"szQueryiData);


Borra el Experiencia, Nivel (Ese fue error mio del otro post)

Código PHP:
formatexszQuerycharsmaxszQuery ), "SELECT id Experiencia, Nivel FROM %s WHERE Usuario=^"%s^""szTableg_usuarioid ] ); 

----->

Código PHP:
formatexszQuerycharsmaxszQuery ), "SELECT id FROM %s WHERE Usuario=^"%s^""szTableg_usuarioid ] ); 

Y me parece que el error es aca:

Código PHP:
case LOGUEAR_CUENTA:
        {
            if( 
SQL_NumResultsQuery ) )
            {
                
g_idid ] = SQL_ReadResultQuery);
                
SQL_ReadResultQuery3g_playernameid ], charsmaxg_playername[ ] ) );                    
                
                
// Cargamos datos
                
g_level[id] = SQL_ReadResult(Query4)
                
g_exp[id] = SQL_ReadResult(Query5);
                
                
func_login_successid );


------>

Código PHP:
case LOGUEAR_CUENTA:
        {
            if( 
SQL_NumResultsQuery ) )
            {
                
g_idid ] = SQL_ReadResultQuery);
                
SQL_ReadResultQuery3g_playernameid ], charsmaxg_playername[ ] ) );                    
                
                
// Cargamos datos
                
g_exp[id] = SQL_ReadResult(Query4);
                
g_level[id] = SQL_ReadResult(Query5);
                
                
func_login_successid );


Saludos.
Responder
#5
(17/12/2017, 06:52 PM)leean77 escribió:
(17/12/2017, 04:58 PM)GeX~ escribió: Así la tengo

Código PHP:
CREATE TABLE "cuentas" 
(
    
"id" INTEGER PRIMARY KEY  AUTOINCREMENT  NOT NULL
    
"Usuario" VARCHAR NOT NULL  UNIQUE
    
"Password" VARCHAR NOT NULL
    
"Pj" VARCHAR NOT NULL  UNIQUE,
    
"Experiencia" INTEGER DEFAULT 0
"Nivel" INTEGER DEFAULT 1

En
Código PHP:
case REGISTRAR_CUENTA:
        {
            if( 
failstate TQUERY_SUCCESS )
            {
                if( 
containierror"Usuario" ) != -)
                    
client_printidprint_chat"%s El usuario ya existe."szPrefix );

                else if( 
containierror"Pj" ) != -)
                    
client_printidprint_chat"%s El nombre de personaje esta en uso."szPrefix );
                else
                    
client_printidprint_chat"%s Error al crear la cuenta. Intente nuevamente."szPrefix );
                
                
client_cmdid"spk buttons/button10.wav" );
                
                
show_login_menuid );
            }
            else
            {
                
client_printidprint_chat"%s Tu cuenta ha sido creada correctamente, tu ID ES : %d."szPrefixg_id[id]);
                
                new 
szQuery128 ], iData];
                
                
iData] = id;
                
iData] = CARGAR_DATOS;
                
                
formatexszQuerycharsmaxszQuery ), "SELECT id Experiencia, Nivel FROM %s WHERE Usuario=^"%s^""szTableg_usuarioid ] );
                
SQL_ThreadQueryg_hTuple"DataHandler"szQueryiData);


Borra el Experiencia, Nivel (Ese fue error mio del otro post)

Código PHP:
formatexszQuerycharsmaxszQuery ), "SELECT id Experiencia, Nivel FROM %s WHERE Usuario=^"%s^""szTableg_usuarioid ] ); 

----->

Código PHP:
formatexszQuerycharsmaxszQuery ), "SELECT id FROM %s WHERE Usuario=^"%s^""szTableg_usuarioid ] ); 

Y me parece que el error es aca:

Código PHP:
case LOGUEAR_CUENTA:
        {
            if( 
SQL_NumResultsQuery ) )
            {
                
g_idid ] = SQL_ReadResultQuery);
                
SQL_ReadResultQuery3g_playernameid ], charsmaxg_playername[ ] ) );                    
                
                
// Cargamos datos
                
g_level[id] = SQL_ReadResult(Query4)
                
g_exp[id] = SQL_ReadResult(Query5);
                
                
func_login_successid );


------>

Código PHP:
case LOGUEAR_CUENTA:
        {
            if( 
SQL_NumResultsQuery ) )
            {
                
g_idid ] = SQL_ReadResultQuery);
                
SQL_ReadResultQuery3g_playernameid ], charsmaxg_playername[ ] ) );                    
                
                
// Cargamos datos
                
g_exp[id] = SQL_ReadResult(Query4);
                
g_level[id] = SQL_ReadResult(Query5);
                
                
func_login_successid );


Saludos.

Mil gracias Excitedeyes ahora si funciono ! ahora guarda a la perfeccion, si pudiera darte +1 lo haria Gran sonrisa
Responder


Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)