Mensajes: 123
Temas: 3
Registro en: Dec 2013
Reputación:
2
Hola a todos, yo nuevamente.
Primero que nada gracias a Nike y CSAxel por ayudarme en mi otro post.
Segundo y principal, me gustaria saber como puedo hacer para que en el Sistema de cuentas de r0ma solo tenga que poner la contraseña para registrarse y no un nombre de usuario y password.
Ej: entro al sv con mi tag ZetGamer y cuando pongo registrar me diga directamente "registrar password:"
Espero haberme explicado bien, desde ya gracias.
(21/04/2015, 01:31 AM)wiD escribió: (21/04/2015, 01:13 AM)meTaLiCroSS escribió: Creo que estamos todos, como buenos estudiantes la mayoria, preocupados de lo suyo. Siempre pasa en el primer semestre de todo, despues cuando soltemos mas preocupaciones nos sentiremos con mas tiempo de venir a forobardear aqui. Asi como yo, me incluyo me fui nos vemos en meses, me tienen como perro programando jejeje
bueno, el forobardo como siempre depende de mi.
Chileno hijo de puta
Mensajes: 2,571
Temas: 40
Registro en: Feb 2014
Reputación:
72
Supongo que funciona, le tienes que crear la tabla como puse, avisame si te da algun error.
Código PHP: #include < amxmodx > #include < sqlx >
#define PLUGIN "Sistema de cuentas MySQL/SQLite" #define VERSION "1.1.2" #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 1.1.0 -Fix bug: Se bugean los menu despues de loguear. -Fix bug: La parte de md5 estaba mal echa. -Removido el Spawn ya no sirve. -Fix errores 1.1.1 -Removido contain_special_characters ( ahora encripta el user y la pw ) -Modificaciones, fix 1.1.2 -Removido el hook de "menuselect" -Ahora usa menos querys -Modificada la variable "g_estado" 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 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_personaje[ 33 ][ 32 ];
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(32) NOT NULL UNIQUE KEY, Password varchar(34) NOT NULL, Experiencia int(10) NOT NULL DEFAULT '0' ) */
/* consulta SQLite: CREATE TABLE "cuentas" ( "id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "Usuario" VARCHAR NOT NULL UNIQUE, "Password" VARCHAR NOT NULL, "Experiencia" INTEGER 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_PASSWORD" ); case 1: client_cmd( id, "messagemode LOGUEAR_PASSWORD" ); } 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_usuario[ id ], charsmax( g_usuario[ ] ) ); formatex( szQuery, charsmax( szQuery ), "INSERT INTO %s (Usuario, Password) VALUES (^"%s^", ^"%s^")", szTable, g_usuario[ id ], g_password[ id ]); 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 ] ); 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; get_user_name( id, g_usuario[ id ], charsmax( g_usuario[ ] ) ); formatex( szQuery, charsmax( szQuery ), "SELECT * FROM %s WHERE Usuario=^"%s^" AND Password=^"%s^"", szTable, g_usuario[ id ], g_password[ id ] ); SQL_ThreadQuery( 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 ] ); 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_CUENTA: { if( failstate < TQUERY_SUCCESS ) { if( containi( error, "Usuario" ) != -1 ) client_print( id, print_chat, "%s El nombre de usuario ya existe.", 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 ] ); SQL_ThreadQuery( g_hTuple, "DataHandler", szQuery, iData, 2 ); } } case LOGUEAR_CUENTA: { if( SQL_NumResults( Query ) ) { g_id[ id ] = SQL_ReadResult( Query, 0 ); // Cargamos datos g_experiencia[ id ] = SQL_ReadResult( Query, 3 ); 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( SQL_NumResults( Query ) ) { g_id[ id ] = SQL_ReadResult( Query, 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_usuario[ 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_infochanged( id ) { if( ~g_estado & (1<<id) ) return PLUGIN_CONTINUE; static name[ 32 ]; get_user_info( id, "name", name, charsmax( name ) ); if( !equal( g_usuario[ id ], name ) ) { set_user_info( id, "name", g_usuario[ id ] ); return PLUGIN_HANDLED; } return PLUGIN_CONTINUE; }
public client_putinserver(id) get_user_name(id, g_usuario[id], 31);
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'; }
#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 );
Mensajes: 2,105
Temas: 196
Registro en: Mar 2014
Reputación:
13
Mensajes: 2,571
Temas: 40
Registro en: Feb 2014
Reputación:
72
(17/07/2014, 11:49 PM)K.- escribió: en la tabla ( cuentas.sq3 u otro nombre ) tiene que eliminar la columna de 'Usuario' ?
pregunto ya que queria hacer lo mismo
Saludos.
Si ya la tienes hecha entonces elimina la columna de 'Personaje'. En 'Usuario' estarán los nombres.
Mensajes: 2,105
Temas: 196
Registro en: Mar 2014
Reputación:
13
18/07/2014, 01:51 AM
(Última modificación: 18/07/2014, 01:51 AM por K.-'.)
Okay , gracias :3 aunque le cambiaste el code no ? aparte de comentar las lineas :
Código PHP: enum { REGISTRAR_CUENTA, LOGUEAR_CUENTA, CARGAR_DATOS, GUARDAR_DATOS };
si le sacamos lo de usuario quedaria :
Código PHP: enum { REGISTRAR_PASSWORD, LOGUEAR_PASSWORD, CARGAR_DATOS, GUARDAR_DATOS };
eso me dudo xD
por que yo en mi FM lo tengo así
(10/10/2014, 06:38 PM)RauliTop escribió: (10/10/2014, 04:40 PM)ivan escribió: no sabía que se podia poner los iconos gestuales cuando das reputacion negativa/positiva. ui, peligro...
pronto habrán reputaciones de ivan:
hace muy muy muii buenos tutoriales me encataan
Mensajes: 2,571
Temas: 40
Registro en: Feb 2014
Reputación:
72
Cambié algunas lineas del code para que use el nombre en lugar de messagemode.
No entiendo a lo que te refieres con ese cambio en el enum... como está debería funcionar.
Mensajes: 123
Temas: 3
Registro en: Dec 2013
Reputación:
2
Anda perfecto, gracias Mario!!
(21/04/2015, 01:31 AM)wiD escribió: (21/04/2015, 01:13 AM)meTaLiCroSS escribió: Creo que estamos todos, como buenos estudiantes la mayoria, preocupados de lo suyo. Siempre pasa en el primer semestre de todo, despues cuando soltemos mas preocupaciones nos sentiremos con mas tiempo de venir a forobardear aqui. Asi como yo, me incluyo me fui nos vemos en meses, me tienen como perro programando jejeje
bueno, el forobardo como siempre depende de mi.
Chileno hijo de puta
|