Mensajes: 68
Temas: 27
Registro en: Nov 2016
Reputación:
0
12/12/2016, 10:48 PM
(Última modificación: 12/12/2016, 10:49 PM por ivaancruznqn.)
(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_id[ 33 ]; new g_estado[ 33 ]; new g_usuario[ 33 ][ 34 ]; new g_password[ 33 ][ 34 ]; new g_playername[ 33 ][ 33 ];
new g_experiencia[ 33 ];
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_plugin( PLUGIN, VERSION, AUTHOR );
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_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_VGUIMenu( iMsgid, iDest, id ) { if( g_estado[ id ] == LOGUEADO || get_msg_arg_int( 1 ) != 2 ) return PLUGIN_CONTINUE; show_login_menu( id ); return PLUGIN_HANDLED; }
public message_ShowMenu( iMsgid, iDest, id ) { if( g_estado[ id ] == LOGUEADO ) return PLUGIN_CONTINUE; static sMenuCode[ 33 ]; get_msg_arg_string( 4, sMenuCode, charsmax( sMenuCode ) ); if( containi( sMenuCode, "Team_Select" ) != -1 ) { show_login_menu( id ); return PLUGIN_HANDLED; } return PLUGIN_CONTINUE; }
public clcmd_changeteam( id ) { if( g_estado[ id ] != LOGUEADO ) { show_login_menu( id ); return PLUGIN_HANDLED; } return PLUGIN_CONTINUE; }
public show_login_menu( id ) { new menu = menu_create( "Menu de cuentas", "login_menu" ); menu_additem( menu, "Crear cuenta", "1" ); menu_additem( menu, "Ingresar", "2" ); menu_setprop( menu, MPROP_EXIT, MEXIT_NEVER ); menu_display( id, menu ); menu_destroy( menu ); }
public login_menu( id, menu, item ) { }
public menu_select( id ) { if( g_estado[ id ] == OFFLINE ) { new args[ 3 ]; read_args( args, charsmax( args ) ); if( str_to_num( args ) == 1 ) client_cmd( id, "messagemode CREAR_USUARIO" ); else client_cmd( id, "messagemode LOGUEAR_USUARIO" ); return PLUGIN_HANDLED; } return PLUGIN_CONTINUE; }
public reg_usuario( id ) { read_args( g_usuario[ id ], charsmax( g_usuario[ ] ) ); remove_quotes( g_usuario[ id ] ); trim( g_usuario[ id ] ); md5( g_usuario[ id ], g_usuario[ id ] ); new szQuery[ 128 ], iData[ 2 ]; iData[ 0 ] = id; iData[ 1 ] = REGISTRAR_USUARIO; formatex( szQuery, charsmax( szQuery ), "SELECT * FROM %s WHERE Usuario=^"%s^"", szTables[ TABLA_CUENTAS ], g_usuario[ id ] ); SQL_ThreadQuery( g_hTuple, "DataHandler", szQuery, iData, 2 ); return PLUGIN_HANDLED; }
public reg_password( id ) { read_args( g_password[ id ], charsmax( g_password[ ] ) ); remove_quotes( g_password[ id ] ); trim( g_password[ id ] ); md5( g_password[ id ], g_password[ id ] ); new szQuery[ 256 ], iData[ 2 ]; iData[ 0 ] = id; iData[ 1 ] = REGISTRAR_PASSWORD; get_user_name( id, g_playername[ id ], charsmax( g_playername[ ] ) ); #if defined MYSQL formatex( szQuery, charsmax( szQuery ), "INSERT INTO %s (Usuario, Password, Pj) VALUES (^"%s^", ^"%s^", ^"%s^"); INSERT INTO %s ( id ) VALUES ( LAST_INSERT_ID( ) )", szTables[ TABLA_CUENTAS ], g_usuario[ id ], g_password[ id ], g_playername[ id ], szTables[ TABLA_DATOS ] ); #else formatex( szQuery, charsmax( szQuery ), "INSERT INTO %s (Usuario, Password, Pj) VALUES (^"%s^", ^"%s^", ^"%s^"); INSERT INTO %s ( id ) VALUES ( last_insert_rowid( ) )", szTables[ TABLA_CUENTAS ], g_usuario[ id ], g_password[ id ], g_playername[ id ], szTables[ TABLA_DATOS ] ); #endif SQL_ThreadQuery(g_hTuple, "DataHandler", szQuery, iData, 2); return PLUGIN_HANDLED; }
public log_usuario( id ) { read_args( g_usuario[ id ], charsmax( g_usuario[ ] ) ); remove_quotes( g_usuario[ id ] ); trim( g_usuario[ id ] ); md5( g_usuario[ id ], g_usuario[ id ] ); new szQuery[ 128 ], iData[ 2 ]; iData[ 0 ] = id; iData[ 1 ] = LOGUEAR_USUARIO; formatex( szQuery, charsmax( szQuery ), "SELECT * FROM %s WHERE Usuario=^"%s^"", szTables[ TABLA_CUENTAS ], g_usuario[ id ] ); SQL_ThreadQuery( g_hTuple, "DataHandler", szQuery, iData, 2 ); return PLUGIN_HANDLED; }
public log_password( id ) { read_args( g_password[ id ], charsmax( g_password[ ] ) ); remove_quotes( g_password[ id ] ); trim( g_password[ id ] ); md5( g_password[ id ], g_password[ id ] ); new szQuery[ 128 ], iData[ 2 ]; iData[ 0 ] = id; iData[ 1 ] = LOGUEAR_PASSWORD; formatex( szQuery, charsmax( szQuery ), "SELECT * FROM %s WHERE Usuario=^"%s^" AND Password=^"%s^"", szTables[ TABLA_CUENTAS ], g_usuario[ id ], g_password[ id ] ); SQL_ThreadQuery( g_hTuple, "DataHandler", szQuery, iData, 2 ); return PLUGIN_HANDLED; }
public cargar_datos( id ) { new szQuery[ 256 ], iData[ 2 ]; iData[ 0 ] = id; iData[ 1 ] = CARGAR_DATOS; formatex( szQuery, charsmax( szQuery ), "SELECT %s.id, %s.Pj, %s.Experiencia FROM %s LEFT JOIN %s ON %s.id = %s.id WHERE %s.Usuario = ^"%s^"", szTables[ TABLA_CUENTAS ], szTables[ TABLA_CUENTAS ], szTables[ TABLA_DATOS ], szTables[ TABLA_CUENTAS ], szTables[ TABLA_DATOS ], szTables[ TABLA_CUENTAS ], szTables[ TABLA_DATOS ], szTables[ TABLA_CUENTAS ], g_usuario[ id ] ); SQL_ThreadQuery( g_hTuple, "DataHandler", szQuery, iData, 2 ); /* 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_datos( id ) { new szQuery[ 128 ], iData[ 2 ]; iData[ 0 ] = id; iData[ 1 ] = GUARDAR_DATOS; formatex( szQuery, charsmax( szQuery ), "UPDATE %s SET Experiencia='%d' WHERE id='%d'", szTables[ TABLA_DATOS ], g_experiencia[ id ], g_id[ id ] ); SQL_ThreadQuery( g_hTuple, "DataHandler", szQuery, iData, 2 ); }
public DataHandler( failstate, Handle:Query, error[ ], error2, data[ ], datasize, Float:time ) { static id; id = data[ 0 ]; if( !is_user_connected( id ) ) return;
switch( failstate ) { case TQUERY_CONNECT_FAILED: { log_to_file( "SQL_LOG_TQ.txt", "Error en la conexion al MySQL [%i]: %s", error2, error ); return; } case TQUERY_QUERY_FAILED: log_to_file( "SQL_LOG_TQ.txt", "Error en la consulta al MySQL [%i]: %s", error2, error ); } switch( data[ 1 ] ) { case REGISTRAR_USUARIO: { if( !SQL_NumResults( Query ) ) client_cmd( id, "messagemode CREAR_PASSWORD" ); else { client_print( id, print_chat, "%s El usuario ya existe.", szPrefix ); client_cmd( id, "spk buttons/button10.wav" ); show_login_menu( id ); } } case REGISTRAR_PASSWORD: { if( failstate < TQUERY_SUCCESS ) { if( containi( error, "Usuario" ) != -1 ) client_print( id, print_chat, "%s El usuario ya existe.", szPrefix );
else if( containi( error, "Pj" ) != -1 ) client_print( id, print_chat, "%s El nombre de personaje esta en uso.", szPrefix ); else client_print( id, print_chat, "%s Error al crear la cuenta. Intente nuevamente.", szPrefix ); client_cmd( id, "spk buttons/button10.wav" ); show_login_menu( id ); } else { client_print( id, print_chat, "%s Tu cuenta ha sido creada correctamente.", szPrefix ); cargar_datos( id ); } } case LOGUEAR_USUARIO: { if( SQL_NumResults( Query ) ) client_cmd( id, "messagemode LOGUEAR_PASSWORD" ); else { client_print( id, print_chat, "%s El usuario no existe.", szPrefix ); client_cmd( id, "spk buttons/button10.wav" ); show_login_menu( id ); } } case LOGUEAR_PASSWORD: { if( SQL_NumResults( Query ) ) { cargar_datos( id ); } else { client_print( id, print_chat, "%s Contrasenia incorrecta.", szPrefix ); client_cmd( id, "spk buttons/button10.wav" ); show_login_menu( id ); } } case CARGAR_DATOS: { if( SQL_NumResults( Query ) ) { g_id[ id ] = SQL_ReadResult( Query, 0 ); SQL_ReadResult( Query, 1, g_playername[ id ], charsmax( g_playername[ ] ) ); g_experiencia[ id ] = SQL_ReadResult( Query, 2 ); func_login_success( id ); } else { client_print( id, print_chat, "%s Error al cargar los datos, intente nuevamente.", szPrefix ); show_login_menu( id ); } } case GUARDAR_DATOS: { if( failstate < TQUERY_SUCCESS ) console_print( id, "%s Error en el guardado de datos.", szPrefix ); else console_print( id, "%s Datos guardados.", szPrefix ); } } }
public func_login_success( id ) { /*new msg_block = get_msg_block( id ); set_msg_block( id, BLOCK_SET ); */ engclient_cmd( id, "jointeam", "5" ); engclient_cmd( id, "joinclass", "5" ); //set_msg_block( id, msg_block ); g_estado[ id ] = LOGUEADO; set_user_info( id, "name", g_playername[ id ] ); }
public event_round_start( ) { for( new i = 1; i <= g_maxplayers; i++ ) { if( g_estado[ i ] == LOGUEADO && is_user_connected( i ) ) guardar_datos( i ); } }
public client_infochanged( id ) { if( g_estado[ id ] == OFFLINE ) return PLUGIN_CONTINUE; static name[ 33 ]; get_user_info( id, "name", name, charsmax( name ) ); if( !equal( g_playername[ id ], name ) ) { set_user_info( id, "name", g_playername[ id ] ); return PLUGIN_HANDLED; } return PLUGIN_CONTINUE; }
public client_putinserver( id ) { show_login_menu( id ); }
public client_disconnect( id ) { if( g_estado[ id ] == LOGUEADO ) { guardar_datos( id ); g_estado[ id ] = OFFLINE; } }
#if defined MYSQL public MySQLx_Init( ) { g_hTuple = SQL_MakeDbTuple( MYSQL_HOST, MYSQL_USER, MYSQL_PASS, MYSQL_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_type[ 12 ]; SQL_SetAffinity( "sqlite" ); SQL_GetAffinity( get_type, sizeof get_type );
if( !equali( get_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_FreeHandle( g_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
Mensajes: 68
Temas: 27
Registro en: Nov 2016
Reputación:
0
Mensajes: 3,020
Temas: 49
Registro en: Oct 2013
Reputación:
33
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_id[ 33 ]; new g_usuario[ 33 ][ 34 ]; new g_password[ 33 ][ 34 ]; new g_playername[ 33 ][ 33 ];
new g_experiencia[ 33 ];
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_plugin( PLUGIN, VERSION, AUTHOR );
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_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_VGUIMenu( iMsgid, iDest, id ) { if( g_estado & (1<<id) || get_msg_arg_int( 1 ) != 2 ) return PLUGIN_CONTINUE; show_login_menu( id ); return PLUGIN_HANDLED; }
public message_ShowMenu( iMsgid, iDest, id ) { if( g_estado & (1<<id) ) return PLUGIN_CONTINUE; static sMenuCode[ 33 ]; get_msg_arg_string( 4, sMenuCode, charsmax( sMenuCode ) ); if( containi( sMenuCode, "Team_Select" ) != -1 ) { show_login_menu( id ); return PLUGIN_HANDLED; } return PLUGIN_CONTINUE; }
public clcmd_changeteam( id ) { if( ~g_estado & (1<<id) ) { show_login_menu( id ); return PLUGIN_HANDLED; } return PLUGIN_CONTINUE; }
public show_login_menu( id ) { new menu = menu_create( "Menu de cuentas", "login_menu" ); menu_additem( menu, "Crear cuenta" ); menu_additem( menu, "Ingresar" ); menu_setprop( menu, MPROP_EXIT, MEXIT_NEVER ); menu_display( id, menu ); return PLUGIN_HANDLED; }
public login_menu( id, menu, item ) { switch( item ) { case 0: client_cmd( id, "messagemode CREAR_USUARIO" ); case 1: client_cmd( id, "messagemode LOGUEAR_USUARIO" ); } return PLUGIN_HANDLED; }
public reg_usuario( id ) { read_args( g_usuario[ id ], charsmax( g_usuario[ ] ) ); remove_quotes( g_usuario[ id ] ); trim( g_usuario[ id ] ); md5( g_usuario[ id ], g_usuario[ id ] ); client_cmd( id, "messagemode CREAR_PASSWORD" ); return PLUGIN_HANDLED; }
public reg_password( id ) { read_args( g_password[ id ], charsmax( g_password[ ] ) ); remove_quotes( g_password[ id ] ); trim( g_password[ id ] ); md5( g_password[ id ], g_password[ id ] ); new szQuery[ 256 ], iData[ 2 ]; iData[ 0 ] = id; iData[ 1 ] = REGISTRAR_CUENTA; get_user_name( id, g_playername[ id ], charsmax( g_playername[ ] ) ); formatex( szQuery, charsmax( szQuery ), "INSERT INTO %s (Usuario, Password, Pj) VALUES (^"%s^", ^"%s^", ^"%s^")", szTable, g_usuario[ id ], g_password[ id ], g_playername[ id ] ); mysql_query(g_hTuple, "DataHandler", szQuery, iData, 2);
return PLUGIN_HANDLED; }
public log_usuario( id ) { read_args( g_usuario[ id ], charsmax( g_usuario[ ] ) ); remove_quotes( g_usuario[ id ] ); trim( g_usuario[ id ] ); md5( g_usuario[ id ], g_usuario[ id ] ); client_cmd( id, "messagemode LOGUEAR_PASSWORD" ); return PLUGIN_HANDLED; }
public log_password( id ) { read_args( g_password[ id ], charsmax( g_password[ ] ) ); remove_quotes( g_password[ id ] ); trim( g_password[ id ] ); md5( g_password[ id ], g_password[ id ] ); new szQuery[ 128 ], iData[ 2 ]; iData[ 0 ] = id; iData[ 1 ] = LOGUEAR_CUENTA; formatex( szQuery, charsmax( szQuery ), "SELECT * FROM %s WHERE Usuario=^"%s^" AND Password=^"%s^"", szTable, g_usuario[ id ], g_password[ id ] ); mysql_query( g_hTuple, "DataHandler", szQuery, iData, 2 ); return PLUGIN_HANDLED; }
public guardar_datos( id ) { new szQuery[ 128 ], iData[ 2 ]; iData[ 0 ] = id; iData[ 1 ] = GUARDAR_DATOS; formatex( szQuery, charsmax( szQuery ), "UPDATE %s SET Experiencia='%d' WHERE id='%d'", szTable, g_experiencia[ id ], g_id[ id ] ); mysql_query( g_hTuple, "DataHandler", szQuery, iData, 2 ); }
public DataHandler(failstate, error[], error2, data[], size, Float:queuetime){ static id; id = data[ 0 ]; if( !is_user_connected( id ) ) return;
switch( failstate ) { case TQUERY_CONNECT_FAILED: { log_to_file( "SQL_LOG_TQ.txt", "Error en la conexion al MySQL [%i]: %s", error2, error ); return; } case TQUERY_QUERY_FAILED: log_to_file( "SQL_LOG_TQ.txt", "Error en la consulta al MySQL [%i]: %s", error2, error ); } switch( data[ 1 ] ) { case REGISTRAR_CUENTA: { if( failstate < TQUERY_SUCCESS ) { if( containi( error, "Usuario" ) != -1 ) client_print( id, print_chat, "%s El usuario ya existe.", szPrefix );
else if( containi( error, "Pj" ) != -1 ) client_print( id, print_chat, "%s El nombre de personaje esta en uso.", szPrefix ); else client_print( id, print_chat, "%s Error al crear la cuenta. Intente nuevamente.", szPrefix ); client_cmd( id, "spk buttons/button10.wav" ); show_login_menu( id ); } else { client_print( id, print_chat, "%s Tu cuenta ha sido creada correctamente.", szPrefix ); new szQuery[ 128 ], iData[ 2 ]; iData[ 0 ] = id; iData[ 1 ] = CARGAR_DATOS; formatex( szQuery, charsmax( szQuery ), "SELECT id FROM %s WHERE Usuario=^"%s^"", szTable, g_usuario[ id ] ); mysql_query( g_hTuple, "DataHandler", szQuery, iData, 2 ); } } case LOGUEAR_CUENTA: { if( mysql_num_results() ) { g_id[ id ] = mysql_read_result(0)
mysql_read_result(3, g_playername[ id ], charsmax( g_playername[ ] )) // Cargamos datos g_experiencia[ id ] = mysql_read_result(4) func_login_success( id ); } else { client_print( id, print_chat, "%s Usuario o Contraseñ incorrecta.", szPrefix ); client_cmd( id, "spk buttons/button10.wav" ); show_login_menu( id ); } } case CARGAR_DATOS: { if( mysql_num_results() ) { g_id[ id ] = mysql_read_result(0) // Ponemos la exp en 0 para el nuevo usuario. g_experiencia[ id ] = 0; func_login_success( id ); } else { client_print( id, print_chat, "%s Error al cargar los datos, intente nuevamente.", szPrefix ); show_login_menu( id ); } } case GUARDAR_DATOS: { if( failstate < TQUERY_SUCCESS ) console_print( id, "%s Error en el guardado de datos.", szPrefix ); else console_print( id, "%s Datos guardados.", szPrefix ); } } }
public func_login_success( id ) { engclient_cmd( id, "jointeam", "5" ); engclient_cmd( id, "joinclass", "5" ); g_estado |= (1<<id); set_user_info( id, "name", g_playername[ id ] ); }
public event_round_start( ) { for( new i = 1; i <= g_maxplayers; i++ ) { if( g_estado & (1<<i) && is_user_connected( i ) ) guardar_datos( i ); } }
public client_disconnect( id ) { if( g_estado & (1<<id) ) { guardar_datos( id ); g_estado &= ~(1<<id); } g_usuario[ id ][ 0 ] = '^0'; g_password[ id ][ 0 ] = '^0'; }
public MySQLx_Init( ) { g_hTuple = mysql_makehost(MYSQL_HOST, MYSQL_USER, MYSQL_PASS, MYSQL_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_free( g_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.
Mensajes: 31
Temas: 11
Registro en: Jul 2017
Reputación:
0
como activo los modulos?? no tengo mucho conocimiento.
Mensajes: 444
Temas: 51
Registro en: May 2017
Reputación:
4
09/07/2017, 01:38 AM
(Última modificación: 09/07/2017, 01:40 AM por BlasKer.)
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 ;
Mensajes: 4
Temas: 0
Registro en: Aug 2017
Reputación:
0
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
Mensajes: 116
Temas: 6
Registro en: Jul 2015
Reputación:
3
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.
Mensajes: 7,178
Temas: 93
Registro en: Aug 2014
Reputación:
63
(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
Mensajes: 115
Temas: 10
Registro en: Feb 2016
Reputación:
5
Disculpen, hay alguna manera o tutorial de como agregarle el auto-login a este plugin?
trabaja en silencio y deja que tu exito haga todo el ruido
Mensajes: 7,178
Temas: 93
Registro en: Aug 2014
Reputación:
63
29/04/2018, 05:33 PM
(Última modificación: 29/04/2018, 05:33 PM por Hinami.)
(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
Mensajes: 115
Temas: 10
Registro en: Feb 2016
Reputación:
5
10/06/2018, 01:16 AM
(Última modificación: 10/06/2018, 01:19 AM por Madara.)
(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 por suerte esto se logro solucionar gracias a un post que encontramos por allí de metalicros 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(iId, m_iMenu, 0, XO_CBASEPLAYER); DisableHamForward(g_pPreThinkPost); }
buscas
Código PHP: public message_ShowMenu( iMsgid, iDest, id ) { if( g_estado & (1<<id) ) return PLUGIN_CONTINUE; static sMenuCode[ 33 ]; get_msg_arg_string( 4, sMenuCode, charsmax( sMenuCode ) ); if( containi( sMenuCode, "Team_Select" ) != -1 ) { show_login_menu( id ); return PLUGIN_HANDLED; } return PLUGIN_CONTINUE; }
y agregas EnableHamForward(g_pPreThinkPost);
------------------------>
Código PHP: public message_ShowMenu( iMsgid, iDest, id ) { if( g_estado & (1<<id) ) return PLUGIN_CONTINUE; static sMenuCode[ 33 ]; get_msg_arg_string( 4, sMenuCode, charsmax( sMenuCode ) ); if( containi( sMenuCode, "Team_Select" ) != -1 ) { show_login_menu( id ); EnableHamForward(g_pPreThinkPost); return PLUGIN_HANDLED; } return PLUGIN_CONTINUE; }
trabaja en silencio y deja que tu exito haga todo el ruido
Mensajes: 4
Temas: 1
Registro en: Dec 2018
Reputación:
0
09/01/2019, 01:09 PM
(Última modificación: 09/01/2019, 01:11 PM por Juan_peripuchin. Edited 2 times in total.)
Mensajes: 196
Temas: 4
Registro en: Apr 2018
Reputación:
3
una consulta si deseo meterle un menu para los players que sea ya cuando esten registrados e logueados, como tengo que hacer?
Mensajes: 62
Temas: 2
Registro en: Jul 2015
Reputación:
0
22/11/2019, 08:37 PM
(Última modificación: 23/11/2019, 10:46 AM por TheMetaliLolen. Edited 1 time in total.)
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).
Mensajes: 196
Temas: 4
Registro en: Apr 2018
Reputación:
3
(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
Mensajes: 1,182
Temas: 160
Registro en: Oct 2013
Reputación:
5
17/04/2020, 06:55 AM
(Última modificación: 17/04/2020, 06:56 AM por xPecie. Edited 1 time in total.)
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!
Mensajes: 3,077
Temas: 33
Registro en: May 2017
Reputación:
34
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...
Mensajes: 1,182
Temas: 160
Registro en: Oct 2013
Reputación:
5
17/04/2020, 12:57 PM
(Última modificación: 17/04/2020, 02:13 PM por xPecie. Edited 6 times in total.)
(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'
Mensajes: 1,182
Temas: 160
Registro en: Oct 2013
Reputación:
5
17/04/2020, 02:00 PM
(Última modificación: 17/04/2020, 02:06 PM por xPecie. Edited 1 time in total.)
...perdon
|