Sistema de cuentas MYSQL/SQLITE
(16/10/2013, 10:33 PM)r0ma escribió:
Código PHP:
#include < amxmodx >
#include < sqlx >

#define PLUGIN "Sistema de cuentas MySQL/SQLite"
#define VERSION "1.1.1"
#define AUTHOR "r0ma"

/* 

Changelog:

    1.0.0: 
        -Posteo del plugin.
        
    1.0.1: 
        -Opitmizacion en el chequeo de una celda de un array.
        
    1.0.2: 
        -Proteccion SQL Injection.
        
    1.0.3:
        -SQL_PrepareQuery --> SQL_ThreadQuery.
        -Optimizacion de tabla MYSQL/SQLITE.
        -Fix en la conexión SQLite.
        
    1.0.4:
        -Proteccion: No se permiten ingresar caracteres especiales.
        -Optimización: Se borraron los condicionales de chequeo de " " y TABLE.
          
    1.0.5
        -Bugfix: Con SQL_ThreadQuery no se usa SQL_Connect
    
    1.0.6
        -Varios fixes de errores generales.
        
    1.0.7
        -Revisado & fixeado por r0ma
        
    1.0.8
        -Fix bug que entran al juego sin loguearse arreglado
        
    1.0.9
        -Fix bug: Ham_Spawn deberia estar en post
        -Fix de variable no definida
        -Update ZP version
    
    
    Creditos:
        shinoda
        Kiske
        Javivi
        ILUSION
        fearAR
        rak
        Neeeeeeeeeel.-
*/

#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 szTables[ ][ 12 ] = { "cuentas""datos" };
new const 
szPrefix[ ] = "[Cuentas]";

new 
Handle:g_hTuple;
new 
g_maxplayers;

new 
g_id33 ];
new 
g_estado33 ];
new 
g_usuario33 ][ 34 ];
new 
g_password33 ][ 34 ];
new 
g_playername33 ][ 33 ];

new 
g_experiencia33 ];

enum {
    
OFFLINE,
    
LOGUEADO
};

enum
{
    
REGISTRAR_USUARIO,
    
REGISTRAR_PASSWORD,
    
LOGUEAR_USUARIO,
    
LOGUEAR_PASSWORD,
    
CARGAR_DATOS,
    
GUARDAR_DATOS
};

enum {
    
TABLA_CUENTAS,
    
TABLA_DATOS
};

/* consulta MYSQL:
CREATE TABLE cuentas 
(
    id INT(10) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY ,
    Usuario varchar(34) NOT NULL UNIQUE KEY, 
    Password varchar(34) NOT NULL, 
    Pj varchar(32) NOT NULL UNIQUE KEY,
)
*/

/* consulta SQLite:
CREATE TABLE "cuentas" 
(
    "id" INTEGER PRIMARY KEY  AUTOINCREMENT  NOT NULL, 
    "Usuario" VARCHAR NOT NULL  UNIQUE, 
    "Password" VARCHAR NOT NULL, 
    "Pj" VARCHAR NOT NULL  UNIQUE
)
*/


public plugin_init( )  {
    
register_pluginPLUGINVERSIONAUTHOR );

    
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"menuselect""menu_select" );
    
    
register_messageget_user_msgid"ShowMenu" ), "message_ShowMenu" );
    
register_messageget_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_estadoid ] == LOGUEADO ||  get_msg_arg_int) != 
        return 
PLUGIN_CONTINUE;
    
    
show_login_menuid );
    return 
PLUGIN_HANDLED;
}

public 
message_ShowMenuiMsgidiDestid ) {
    if( 
g_estadoid ] == LOGUEADO )
        return 
PLUGIN_CONTINUE;
    
    static 
sMenuCode33 ];
    
get_msg_arg_string4sMenuCodecharsmaxsMenuCode ) );
    
    if( 
containisMenuCode"Team_Select" ) != -) {
        
show_login_menuid );
        return 
PLUGIN_HANDLED;
    }
    
    return 
PLUGIN_CONTINUE;
}

public 
clcmd_changeteamid ) {
    if( 
g_estadoid ] != LOGUEADO ) {
        
show_login_menuid );
        
        return 
PLUGIN_HANDLED;
    }
    
    return 
PLUGIN_CONTINUE;
}

public 
show_login_menuid ) {
    new 
menu menu_create"Menu de cuentas""login_menu" );
    
    
menu_additemmenu"Crear cuenta""1" );
    
menu_additemmenu"Ingresar""2" );
    
    
menu_setpropmenuMPROP_EXITMEXIT_NEVER );
    
    
menu_displayidmenu );
    
menu_destroymenu );
}

public 
login_menuidmenuitem ) {
}

public 
menu_selectid ) {
    if( 
g_estadoid ] == OFFLINE ) {
        new 
args];
        
        
read_argsargscharsmaxargs ) );
        
        if( 
str_to_numargs ) == )
            
client_cmdid"messagemode CREAR_USUARIO" );
        else
            
client_cmdid"messagemode LOGUEAR_USUARIO" );
        
        return 
PLUGIN_HANDLED;
    }
    
    return 
PLUGIN_CONTINUE;
}

public 
reg_usuarioid ) {
    
read_argsg_usuarioid ], charsmaxg_usuario[ ] ) );
    
remove_quotesg_usuarioid ] );
    
trimg_usuarioid ] );
    
    
md5g_usuarioid ], g_usuarioid ] );
    
    new 
szQuery128 ], iData];
    
    
iData] = id;
    
iData] = REGISTRAR_USUARIO;
    
    
formatexszQuerycharsmaxszQuery ), "SELECT * FROM %s WHERE Usuario=^"%s^""szTablesTABLA_CUENTAS ], g_usuarioid ] );
    
SQL_ThreadQueryg_hTuple"DataHandler"szQueryiData);
    
    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_PASSWORD;
    
    
get_user_nameidg_playernameid ], charsmaxg_playername[ ] ) );
    
    
#if defined MYSQL
    
formatexszQuerycharsmaxszQuery ), "INSERT INTO %s (Usuario, Password, Pj) VALUES (^"%s^", ^"%s^", ^"%s^"); INSERT INTO %s ( id ) VALUES ( LAST_INSERT_ID( ) )"szTablesTABLA_CUENTAS ], g_usuarioid ], g_passwordid ], g_playernameid ], szTablesTABLA_DATOS ] );
    
#else
    
formatexszQuerycharsmaxszQuery ), "INSERT INTO %s (Usuario, Password, Pj) VALUES (^"%s^", ^"%s^", ^"%s^"); INSERT INTO %s ( id ) VALUES ( last_insert_rowid( ) )"szTablesTABLA_CUENTAS ], g_usuarioid ], g_passwordid ], g_playernameid ], szTablesTABLA_DATOS ] );
    
#endif
    
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 ] );
    
    new 
szQuery128 ], iData];
    
    
iData] = id;
    
iData] = LOGUEAR_USUARIO;
    
    
formatexszQuerycharsmaxszQuery ), "SELECT * FROM %s WHERE Usuario=^"%s^""szTablesTABLA_CUENTAS ], g_usuarioid ] );
    
SQL_ThreadQueryg_hTuple"DataHandler"szQueryiData);
    
    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_PASSWORD;
    
    
formatexszQuerycharsmaxszQuery ), "SELECT * FROM %s WHERE Usuario=^"%s^" AND Password=^"%s^""szTablesTABLA_CUENTAS ], g_usuarioid ], g_passwordid ] );
    
SQL_ThreadQueryg_hTuple"DataHandler"szQueryiData);
    
    return 
PLUGIN_HANDLED;
}

public 
cargar_datosid ) {
    new 
szQuery256 ], iData];
    
    
iData] = id;
    
iData] = CARGAR_DATOS;
    
    
formatexszQuerycharsmaxszQuery ), "SELECT %s.id, %s.Pj, %s.Experiencia FROM %s LEFT JOIN %s ON %s.id = %s.id WHERE %s.Usuario = ^"%s^""
    
szTablesTABLA_CUENTAS ], szTablesTABLA_CUENTAS ], szTablesTABLA_DATOS ], szTablesTABLA_CUENTAS ], szTablesTABLA_DATOS ], szTablesTABLA_CUENTAS ], szTablesTABLA_DATOS ], szTablesTABLA_CUENTAS ], g_usuarioid ] );
    
    
SQL_ThreadQueryg_hTuple"DataHandler"szQueryiData);
    
    
/* Query:
        SELECT * FROM cuentas.id, cuentas.PJ, datos.Experiencia FROM cuentas LEFT JOIN datos ON cuentas.id = datos.id WHERE cuentas.Usuario = "user"
    */
}

public 
guardar_datosid ) {
    new 
szQuery128 ], iData];
    
iData] = id;
    
iData] = GUARDAR_DATOS;
    
    
formatexszQuerycharsmaxszQuery ), "UPDATE %s SET Experiencia='%d' WHERE id='%d'"szTablesTABLA_DATOS ], g_experienciaid ], 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_USUARIO: {
            if( !
SQL_NumResultsQuery ) )
                
client_cmdid"messagemode CREAR_PASSWORD" );
            else {
                
client_printidprint_chat"%s El usuario ya existe."szPrefix );
                
client_cmdid"spk buttons/button10.wav" );
                
                
show_login_menuid );
            }
        }
        
        case 
REGISTRAR_PASSWORD: {
            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."szPrefix );
                
cargar_datosid );
            }
            
        }
        case 
LOGUEAR_USUARIO: {
            if( 
SQL_NumResultsQuery ) )
                
client_cmdid"messagemode LOGUEAR_PASSWORD" );
            else {
                
client_printidprint_chat"%s El usuario no existe."szPrefix );
                
client_cmdid"spk buttons/button10.wav" );
                
                
show_login_menuid );
            }
        }
        case 
LOGUEAR_PASSWORD: {
            if( 
SQL_NumResultsQuery ) ) {
                
cargar_datosid );
            }
            else {
                
client_printidprint_chat"%s Contrasenia incorrecta."szPrefix );
                
client_cmdid"spk buttons/button10.wav" );
                
                
show_login_menuid );
            }
        }
        case 
CARGAR_DATOS: {
            if( 
SQL_NumResultsQuery ) ) {
                
g_idid ] = SQL_ReadResultQuery);
                
SQL_ReadResultQuery1g_playernameid ], charsmaxg_playername[ ] ) );
                
                
g_experienciaid ] = SQL_ReadResultQuery);
                
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 ) {
    
/*new msg_block = get_msg_block( id );
    
    set_msg_block( id, BLOCK_SET );
    */
    
engclient_cmdid"jointeam""5" );
    
engclient_cmdid"joinclass""5" );
    
    
//set_msg_block( id, msg_block );
    
    
g_estadoid ] = LOGUEADO;
    
    
set_user_infoid"name"g_playernameid ] );
}

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

public 
client_infochangedid ) {
    if( 
g_estadoid ] == OFFLINE )
        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_putinserverid ) {
    
show_login_menuid );
}

public 
client_disconnect(  id ) {
    
    if( 
g_estadoid ] == LOGUEADO ) {
        
guardar_datosid );
        
        
g_estadoid ] = OFFLINE;
    }
}

#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 ); 

Asi podria ser para obtener datos de 2 tablas si necesitas mas tablas creo que tendrias que hacer varias consultas.



Perdon que reviva algo tan viejo.. Es que ando buscando una solucion para crear 2 tablas y cargarlas correctamente.. Me podrian dar una mano con esto que puso r0ma? , no entendi bien que hizo... por favor!! es urgente , ya cree un tema preguntado como lo podria hacer... pero no logro solucionarlo
Responder
Alguien plis???
Responder
Hasta no hace mucho un usuario me pidió adaptar el modulo de destro a este sistema de cuentas, se los aporto acá para el que quiera usarlo.
Código PHP:
#include < amxmodx >
#include < mysqlt >

#define PLUGIN "Sistema de cuentas MySQL"
#define VERSION "1.1.15"
#define AUTHOR "r0ma"

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

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_experiencia33 ];

enum
{
    
REGISTRAR_CUENTA,
    
LOGUEAR_CUENTA,
    
CARGAR_DATOS,
    
GUARDAR_DATOS
};

/* consulta MYSQL:
CREATE TABLE cuentas 
(
    id INT(10) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY ,
    Usuario varchar(34) NOT NULL UNIQUE KEY, 
    Password varchar(34) NOT NULL, 
    Pj varchar(32) NOT NULL UNIQUE KEY,
    Experiencia int(10) NOT NULL DEFAULT '0'
)
*/

public plugin_init( )  {
    
register_pluginPLUGINVERSIONAUTHOR );

    
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_messageget_user_msgid"ShowMenu" ), "message_ShowMenu" );
    
register_messageget_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_changeteamid ) {
    if( ~
g_estado & (1<<id) ) {
        
show_login_menuid );
        
        return 
PLUGIN_HANDLED;
    }
    
    return 
PLUGIN_CONTINUE;
}

public 
show_login_menuid ) {
    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 ] );
    
mysql_query(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 ] );
    
mysql_queryg_hTuple"DataHandler"szQueryiData);
    
    return 
PLUGIN_HANDLED;
}

public 
guardar_datosid ) {
    new 
szQuery128 ], iData];
    
    
iData] = id;
    
iData] = GUARDAR_DATOS;
    
    
formatexszQuerycharsmaxszQuery ), "UPDATE %s SET Experiencia='%d' WHERE id='%d'"szTableg_experienciaid ], g_idid ] );
    
mysql_queryg_hTuple"DataHandler"szQueryiData);
}

public 
DataHandler(failstateerror[], error2data[], sizeFloat:queuetime){
    static 
idid 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."szPrefix );
                
                new 
szQuery128 ], iData];
                
                
iData] = id;
                
iData] = CARGAR_DATOS;
                
                
formatexszQuerycharsmaxszQuery ), "SELECT id FROM %s WHERE Usuario=^"%s^""szTableg_usuarioid ] );
                
mysql_queryg_hTuple"DataHandler"szQueryiData);
            }
            
        }
        case 
LOGUEAR_CUENTA: {
            if( 
mysql_num_results() ) {
                
g_idid ] = mysql_read_result(0)

                
mysql_read_result(3g_playernameid ], charsmaxg_playername[ ] ))                
                
                
// Cargamos datos
                
g_experienciaid ] = mysql_read_result(4)
                
                
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( 
mysql_num_results() ) {
                
g_idid ] = mysql_read_result(0)
                
                
// Ponemos la exp en 0 para el nuevo usuario.
                
g_experienciaid ] = 0;
                
                
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_disconnect(  id ) {
    if( 
g_estado & (1<<id) ) {
        
guardar_datosid );
        
        
g_estado &= ~(1<<id);
    }
    
    
g_usuarioid ][ ] = '^0';
    
g_passwordid ][ ] = '^0';
}

public 
MySQLx_Init( )
{
    
g_hTuple mysql_makehost(MYSQL_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;
}

public 
plugin_end( ) mysql_freeg_hTuple ); 
Ingeniero agrónomo y desarrollador de Software.

tutoriales-allied
buscas un zp?

"La imitación es la forma más sincera de admiración con la que puede pagar la mediocridad a la grandeza"

Merci Alliedmodders pour m'introduire dans la programmation.
Responder
como activo los modulos?? no tengo mucho conocimiento.
Responder
anda a addons/amxmodx/config/ y busca en config modules y vete a donde dice

Cita:;sqlite
y quitale el ;

y si es mysql haces la mismo quitandole el ;
Responder
Hola , Necesito una Mano , quiero saber si pueden darme el code , sin loguearse como usuario osea que cuando entre al servidor se logue con la pura contraseña y que entre con la contraseña

Saludos a todo desde #chile Mario
Responder
Lo probé, funciona bien cuando registras y cargas pero cuando le das un user y pass vacios, o iguales, me sale esto en consola y crash.
miro la base de datos con phpmyadmin y guardó correctamente, el problema es cuando creo con igual nick o user, entonces crash el server.

Cita:L 03/26/2018 - 04:47:50: Error en la consulta al MySQL [1062]: Duplicate entry 'Tomy Rocker' for key 'Pj'
L 03/26/2018 - 04:47:50: [AMXX] Displaying debug trace (plugin "cuentas_mysql.amxx", version "1.1.2")
L 03/26/2018 - 04:47:50: [AMXX] Run time error 3: stack error
SZ_GetSpace: overflow on MessageBegin/End
SZ_GetSpace: overflow on MessageBegin/End
SZ_GetSpace: overflow on MessageBegin/End
SZ_GetSpace: overflow on MessageBegin/End
SZ_GetSpace: overflow on MessageBegin/End
SZ_GetSpace: overflow on MessageBegin/End
SZ_GetSpace: overflow on MessageBegin/End
SZ_GetSpace: overflow on MessageBegin/End

por lo que entiendo esta duplicado mi nick pero ese error no deberia salirme en el juego mismo y poder repetir el registro, solo se crashea.
Alguna ayuda porfavor.
[Imagen: baquetas_2_para_web.png]
Responder
(26/03/2018, 06:53 AM)Tomy Rocker escribió: Lo probé, funciona bien cuando registras y cargas pero cuando le das un user y pass vacios, o iguales, me sale esto en consola y crash.
miro la base de datos con phpmyadmin y guardó correctamente, el problema es cuando creo con igual nick o user, entonces crash el server.

Cita:L 03/26/2018 - 04:47:50: Error en la consulta al MySQL [1062]: Duplicate entry 'Tomy Rocker' for key 'Pj'
L 03/26/2018 - 04:47:50: [AMXX] Displaying debug trace (plugin "cuentas_mysql.amxx", version "1.1.2")
L 03/26/2018 - 04:47:50: [AMXX] Run time error 3: stack error
SZ_GetSpace: overflow on MessageBegin/End
SZ_GetSpace: overflow on MessageBegin/End
SZ_GetSpace: overflow on MessageBegin/End
SZ_GetSpace: overflow on MessageBegin/End
SZ_GetSpace: overflow on MessageBegin/End
SZ_GetSpace: overflow on MessageBegin/End
SZ_GetSpace: overflow on MessageBegin/End
SZ_GetSpace: overflow on MessageBegin/End

por lo que entiendo esta duplicado mi nick pero ese error no deberia salirme en el juego mismo y poder repetir el registro, solo se crashea.
Alguna ayuda porfavor.

Yo uso esté mismo sistema ( modificado ), y anda de 10.
y cuando lo usaba así de igual manera siempre corre bien Whatever
[Imagen: zcsztw-4.png] [Imagen: 6u5fj2-4.png]
[Imagen: linkedin_thumb_image.png][Imagen: 76561198283253977.png][Imagen: linkedin_thumb_image.png]
Responder
Disculpen, hay alguna manera o tutorial de como agregarle el auto-login a este plugin?
Crab trabaja en silencio y deja que tu exito haga todo el ruido Crab
Responder
(29/04/2018, 05:23 PM)Madara escribió: Disculpen, hay alguna manera o tutorial de como agregarle el auto-login a este plugin?

se puede agregar si, tutorial creo que no
[Imagen: zcsztw-4.png] [Imagen: 6u5fj2-4.png]
[Imagen: linkedin_thumb_image.png][Imagen: 76561198283253977.png][Imagen: linkedin_thumb_image.png]
Responder
(26/03/2018, 06:53 AM)Tomy Rocker escribió: Lo probé, funciona bien cuando registras y cargas pero cuando le das un user y pass vacios, o iguales, me sale esto en consola y crash.
miro la base de datos con phpmyadmin y guardó correctamente, el problema es cuando creo con igual nick o user, entonces crash el server.

Cita:L 03/26/2018 - 04:47:50: Error en la consulta al MySQL [1062]: Duplicate entry 'Tomy Rocker' for key 'Pj'
L 03/26/2018 - 04:47:50: [AMXX] Displaying debug trace (plugin "cuentas_mysql.amxx", version "1.1.2")
L 03/26/2018 - 04:47:50: [AMXX] Run time error 3: stack error
SZ_GetSpace: overflow on MessageBegin/End
SZ_GetSpace: overflow on MessageBegin/End
SZ_GetSpace: overflow on MessageBegin/End
SZ_GetSpace: overflow on MessageBegin/End
SZ_GetSpace: overflow on MessageBegin/End
SZ_GetSpace: overflow on MessageBegin/End
SZ_GetSpace: overflow on MessageBegin/End
SZ_GetSpace: overflow on MessageBegin/End

por lo que entiendo esta duplicado mi nick pero ese error no deberia salirme en el juego mismo y poder repetir el registro, solo se crashea.
Alguna ayuda porfavor.

esto pasaba igual en la comunidad donde estoy, creo que sucede cuando hay cierta cantidad de jugadores, que hace que se bug el menú en la parte de Seleccionar Team Ragestart por suerte esto se logro solucionar gracias a un post que encontramos por allí de metalicros Trolleyes aquí les dejo el code para los que lo quieran usar y tengan ese inconveniente.


Código PHP:
#define m_iMenu 205
#define XO_CBASEPLAYER 5

new HamHook:g_pPreThinkPost;


//en plugin_init

DisableHamForward(g_pPreThinkPost RegisterHam(Ham_Player_PreThink"player""OnPlayer_PreThink_Post"true)); 

agregas el public

Código PHP:
public OnPlayer_PreThink_Post(iId)
{
    
set_pdata_int(iIdm_iMenu0XO_CBASEPLAYER);
    
DisableHamForward(g_pPreThinkPost);


buscas

Código PHP:
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;


y agregas EnableHamForward(g_pPreThinkPost);

------------------------>
Código PHP:
public message_ShowMenuiMsgidiDestid ) {
    if( 
g_estado & (1<<id) )
        return 
PLUGIN_CONTINUE;
    
    static 
sMenuCode33 ];
    
get_msg_arg_string4sMenuCodecharsmaxsMenuCode ) );
    
    if( 
containisMenuCode"Team_Select" ) != -) {
        
show_login_menuid );
        
EnableHamForward(g_pPreThinkPost);
        return 
PLUGIN_HANDLED;
    }
    
    return 
PLUGIN_CONTINUE;

Crab trabaja en silencio y deja que tu exito haga todo el ruido Crab
Responder
Buen aporte eso sirve para zp 4.3 WhateverWhateverWhateverWhatever
Responder
una consulta si deseo meterle un menu para los players que sea ya cuando esten registrados e logueados, como tengo que hacer?
Responder
Existe alguna forma para pasar de md5 al sistema que usa IP Board v4?
La idea es que al registrarse en el servidor, los registre en el foro pero con md5 o sin md5 no deja.
Sin MD5 te registra con la clave que pusiste pero al intentar ingresar al foro no te deja, pero en el servidor si.
Con MD5 te registra con la clave encriptada, pero al intentar ingresar al foro o al servidor, no te deja.

Existe alguna compatibilidad, dentro del servidor y en el foro para que puedan registrarse y usar la "hash" de ip board?.
Gracias

* Edit
Probe con el hash_bash de amx 1.8.3 y tampoco deja, probé con todos los types que habían.
- La tabla del ipboard prefix_core_members tengo que el email y el nickname sean único (antes se podían registrar varias veces y con el mismo correo/Nick).
Responder
(22/11/2019, 08:37 PM)TheMetaliLolen escribió: Existe alguna forma para pasar de md5 al sistema que usa IP Board v4?
La idea es que al registrarse en el servidor, los registre en el foro pero con md5 o sin md5 no deja.
Sin MD5 te registra con la clave que pusiste pero al intentar ingresar al foro no te deja, pero en el servidor si.
Con MD5 te registra con la clave encriptada, pero al intentar ingresar al foro o al servidor, no te deja.

Existe alguna compatibilidad, dentro del servidor y en el foro para que puedan registrarse y usar la "hash" de ip board?.
Gracias

* Edit
Probe con el hash_bash de amx 1.8.3 y tampoco deja, probé con todos los types que habían.
- La tabla del ipboard prefix_core_members tengo que el email y el nickname sean único (antes se podían registrar varias veces y con el mismo correo/Nick).

x2
Responder
Hola, revivo el tema por dudas, he probado el sistema, he activado los modules.ini sqlite y mysql, compilo el plugin, cuando intento meter el .sq3 en phpmyadmin no funciona me dice lo siguiente:


MySQL ha dicho: Documentación

#1064 - Algo está equivocado en su sintax cerca 'SQLite format 3' en la linea 1



Que se me olvida? El plugin carga bien y no veo errores en log del plugin con debug.

Lo que quiero es utilizar mi http://localhost/phpmyadmin para utilizar el plugin, ya que si uso una web tendré que exportar/importar también, o no funciona así?

Puedes explicarme r0ma por favor.

Saludos!
Responder
Dentro del plugin hay un apartado que dice algo así como "consulta mysql", copias desde CREATE TABLE cuentas( hasta el cierre del mismo, luego vas al phpmyadmin y creas una db entras en ella y das en SQL; pegas lo anteriormente copiado y listo...
Responder
(17/04/2020, 09:10 AM)Chema escribió: Dentro del plugin hay un apartado que dice algo así como "consulta mysql", copias desde CREATE TABLE cuentas( hasta el cierre del mismo, luego vas al phpmyadmin y creas una db entras en ella y das en SQL; pegas lo anteriormente copiado y listo...
Añadimos una "a" aquí, sin comillas.
Tontería línea 331:
Código PHP:
Usuario o Contraseña incorrecta 

De acuerdo, lo pruebo gracias. Que diferencia hay internamente con MySQL o SQLite? Por que veo que hay 2 consultas

Vale, al principio del plugin, si que pulsas ENTER 2 veces y evita que entres, pero me he registrado, usuario 1 contraseña 1 bien, entro con otro nombre: pep le pulso ENTER 2 veces y entra sin más... :S está bug.

En el log aparece lo siguiente:

L 04/17/2020 - 18:40:11: Log file started (file "cstrike\addons\amxmodx\logs\SQL_LOG_TQ.txt") (game "cstrike") (amx "1.9.0.5263")
L 04/17/2020 - 18:40:11: Error en la consulta al MySQL [1062]: Duplicate entry 'c4ca4238a0b923820dcc509a6f75849b' for key 'Usuario'
L 04/17/2020 - 18:40:13: Error en la consulta al MySQL [1062]: Duplicate entry 'pep' for key 'Pj'
Responder
...perdon
Responder


Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)