Registrar cuenta por tag
#1
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 Roflmao me fui nos vemos en meses, me tienen como perro programando jejeje Nothingdohere

bueno, el forobardo como siempre depende de mi.

Chileno hijo de puta
Responder
#2
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_id33 ];
new 
g_usuario33 ][ 34 ];
new 
g_password33 ][ 34 ];
// new g_personaje[ 33 ][ 32 ];

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(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_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_PASSWORD" );
        case 
1client_cmdid"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_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_usuarioid ], charsmaxg_usuario[ ] ) );
    
    
formatexszQuerycharsmaxszQuery ), "INSERT INTO %s (Usuario, Password) VALUES (^"%s^", ^"%s^")"szTableg_usuarioid ], g_passwordid ]);
    
SQL_ThreadQuery(g_hTuple"DataHandler"szQueryiData2);
    
    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_passwordid ) {
    
read_argsg_passwordid ], charsmaxg_password[ ] ) );
    
remove_quotesg_passwordid ] );
    
trimg_passwordid ] );
    
md5g_passwordid ], g_passwordid ] );
    
    new 
szQuery128 ], iData];
    
    
iData] = id;
    
iData] = LOGUEAR_CUENTA;
    
    
get_user_nameidg_usuarioid ], charsmaxg_usuario[ ] ) );
    
    
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' WHERE id='%d'"szTableg_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_CUENTA: {
            if( 
failstate TQUERY_SUCCESS ) {
                if( 
containierror"Usuario" ) != -)
                    
client_printidprint_chat"%s El nombre de usuario ya existe."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 ] );
                
SQL_ThreadQueryg_hTuple"DataHandler"szQueryiData);
            }
            
        }
        case 
LOGUEAR_CUENTA: {
            if( 
SQL_NumResultsQuery ) ) {
                
g_idid ] = SQL_ReadResultQuery);                
                
                
// Cargamos datos
                
g_experienciaid ] = SQL_ReadResultQuery);
                
                
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_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_usuarioid ] );
}

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 
name32 ];
    
get_user_infoid"name"namecharsmaxname ) );
    
    if( !
equalg_usuarioid ], name ) ) {
        
set_user_infoid"name"g_usuarioid ] );
        
        return 
PLUGIN_HANDLED;
    }
    
    return 
PLUGIN_CONTINUE;
}

public 
client_putinserver(id)
    
get_user_name(idg_usuario[id], 31);

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 ); 
Responder
#3
en la tabla ( cuentas.sq3 u otro nombre ) tiene que eliminar la columna de 'Usuario' ?

pregunto ya que queria hacer lo mismo

Saludos.
(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 DafuqYao mingGenius buenos Thats what she saidtutoriales Proud me encataan Whatever
Responder
#4
(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.
Responder
#5
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 DafuqYao mingGenius buenos Thats what she saidtutoriales Proud me encataan Whatever
Responder
#6
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.
Responder
#7
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 Roflmao me fui nos vemos en meses, me tienen como perro programando jejeje Nothingdohere

bueno, el forobardo como siempre depende de mi.

Chileno hijo de puta
Responder


Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)