Errores con sistema de cuenta
#1
Hi Sonrisa, ocupo el sistema de cuenta de un tutorial sacado de aquí lo e editado un poco a mi gusto pero tengo un inconveniente ya que dicho sistema de cuenta no coordina les explico : asigne un texto en el menu indicando si esta registrado o no lo sucedido que no coordina muy bien ya que ingreso por primera vez sin registrarme me indica que No estoy registrado luego me registro y todo vuelvo a ingresar al servidor y me dice que Sigo sin registrarme pero me puedo logear, les dejare unas imágenes para que aprecien mi problema.

espero logre tener ayuda ya que me recomendaron mucho el foro.

CÓDIGO :

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

#define SQLX_DATABASE "zpdata2"

const USER_NO_REGISTRADO = -1;
const 
USER_REGISTRADO 0;
const 
USER_LOGEADO 1;

new 
g_logeado[33], g_muertes[33];
new 
Handle:g_queryHandle:g_tuple;
public 
plugin_init() {
    
register_plugin("Tutorial SQL""1.0.0""Gonza.-*")
    
register_message(get_user_msgid("VGUI"), "message_vgui")
    
register_message(get_user_msgid("DeathMsg"), "message_death")

    
register_clcmd("chooseteam""show_menu_registro")
    
register_clcmd("jointeam""show_menu_registro")
    
register_clcmd("REGISTRE_SU_PASSWORD""REGISTRE_SU_PASSWORD")
    
register_clcmd("INGRESA_TU_PASSWORD""INGRESA_TU_PASSWORD")

    
register_clcmd("say /muertes""show_muertes")
    
register_clcmd("say_team /muertes""show_muertes")

    
SQLXInit()
}
public 
client_putinserver(id) {
    
client_cmd(id"setinfo _vgui_menus 1");
    
g_logeado[id] = USER_NO_REGISTRADO
    g_muertes
[id] = 0
}
public 
client_disconnect(id) { Guardar(id); }
public 
show_muertes(id) {
    
client_print(idprint_chat"Moriste %d %s"g_muertes[id], g_muertes[id] > "veces" "ves")
}
public 
REGISTRE_SU_PASSWORD(id) {
    if(
g_logeado[id] != USER_NO_REGISTRADO) return

    static 
szArg[192]; read_args(szArg191);
    
remove_quotes(szArg); trim(szArg);

    if (
containi(szArg"^"") != -1) {
        client_print(id, print_center, "
No puedes usar comillas")
        client_cmd(id, "
messagemode REGISTRE_SU_PASSWORD")
    }
    static szName[33]; get_user_name(id, szName, 32);
    g_query = SQL_PrepareQuery(g_tuple, "
INSERT INTO 'Cuentas' (NombrePasswordVALUES (^"%s^", ^"%s^")", szName, szArg)

    if (SQL_Execute(g_query)) {
        g_logeado[id] = USER_LOGEADO
        client_cmd(id, "
jointeam 5")
        client_print(id, print_center, "
Te has registrado correctamente!")
    }
    else client_print(id, print_center, "
Error al registrarte :(")
}
public INGRESA_TU_PASSWORD(id) {
    if(g_logeado[id] != USER_REGISTRADO) return

    static szArg[192]; read_args(szArg, 191);
    remove_quotes(szArg); trim(szArg);

    static szName[33]; get_user_name(id, szName, 32);
    g_query = SQL_PrepareQuery(g_tuple, "
SELECT PasswordMuertes FROM 'Cuentas' WHERE Nombre = ^"%s^"", szName);

    if(SQL_Execute(g_query)) {
        static szPass[192]; SQL_ReadResult(g_query, 0, szPass, 191);

        if (equal(szPass, szArg)) {
            g_muertes[id] = SQL_ReadResult(g_query, 1)
            g_logeado[id] = USER_LOGEADO
            client_cmd(id, "
jointeam 5")
            client_print(id, print_center, "
Te has logeado correctamente!")
        }
        else {
            client_cmd(id, "
messagemode INGRESA_TU_PASSWORD")
            client_print(id, print_center, "
Password incorrecta")
        }
    }
    else client_print(id, print_center, "
Error al logearte :(")
}
public show_menu_registro(id) {
    if(g_logeado[id] == USER_LOGEADO) return PLUGIN_CONTINUE;

    static text[299], sNombre[33]; get_user_name(id, sNombre, charsmax(sNombre));
    formatex(text, charsmax(text), "
\d(\rLOS TURROS\d) \wMenu de registro^n^n\r-\w Bienvenido : \y%s^n\r-\w Fecha : \y17/11/2019^n\r-\w Estado : \y%s", sNombre, (g_logeado[id] == USER_NO_REGISTRADO) ? "No Registrado" : "Registrado");
    new menu = menu_create(text, "
Handler")

    formatex(text, charsmax(text), "
Registrarse")
    menu_additem(menu, text, _, _, menu_makecallback("
callback"))

    formatex(text, charsmax(text), "
Logearse")
    menu_additem(menu, text, _, _, menu_makecallback("
callback"))

    menu_setprop(menu, MPROP_EXIT, MEXIT_NEVER)
    menu_display(id, menu)

    return PLUGIN_HANDLED;
}
public callback(id, menu, item) {
    static szName[33], registrado; get_user_name(id, szName, 32)
    g_query = SQL_PrepareQuery(g_tuple, "
SELECT Nombre FROM 'Cuentas' WHERE Nombre = ^"%s^"", szName)

    if (SQL_Execute(g_query)) {
        if (SQL_NumResults(g_query)) registrado = 1, g_logeado[id] = USER_REGISTRADO
        else registrado = 0
    }
    else registrado = -1

    switch (item) {
        case 0: {
            if (registrado || registrado == -1) {
                Color(id, "
!g[CUENTAS]!y Ya tienes una cuenta registrada.");
                return ITEM_DISABLED;
            }
        }
        case 1: {
            if (!registrado || registrado == -1) {
                Color(id, "
!g[CUENTAS]!y No tienes una cuenta registrada en la base de datos.");
                return ITEM_DISABLED;
            }
        }
    }
    return ITEM_ENABLED;
}
public Handler(id, menu, item) {
    switch (item) {
        case 0: {
            client_cmd(id, "
messagemode REGISTRE_SU_PASSWORD")
            client_print(id, print_center, "
Elije una password para tu cuenta")
        }
        case 1: {
            client_cmd(id, "
messagemode INGRESA_TU_PASSWORD")
            client_print(id, print_center, "
Ingresa la password de tu cuenta")
        }
    }
    menu_destroy(menu)
    return PLUGIN_HANDLED;
}
public message_vgui(msg_id, dest, msg_ent) {
    if (g_logeado[msg_ent] == USER_LOGEADO) return PLUGIN_CONTINUE;

    show_menu_registro(msg_ent);
    return PLUGIN_HANDLED
}
public message_death(msg_id, dest, msg_ent) {
    static victim; victim = get_msg_arg_int(2)

    if (is_user_connected(victim)) {
        g_muertes[victim]++
        Guardar(victim);
    }
}
public Guardar(id) {
    if(g_logeado[id] != USER_LOGEADO) return;
    static szName[33]; get_user_name(id, szName, 32)

    g_query = SQL_PrepareQuery(g_tuple, "
UPDATE 'Cuentas' SET Muertes = %d WHERE Nombre = ^"%s^"", g_muertes[id], szName)
    SQL_Execute(g_query)
}
public CheckTabla() {
    g_query = SQL_PrepareQuery
    (
    g_tuple,
    "
CREATE TABLE IF NOT EXISTS 'Cuentas'  \
    ( \
    
Nombre varchar(33NOT NULL default '' PRIMARY KEY, \
    
Password varchar(192NOT NULL default '', \
    
Muertes int NOT NULL default \
    )
"
    )
    SQL_Execute(g_query)
}
public SQLXInit() {
    new get_type[12];
    SQL_SetAffinity("
sqlite")
    SQL_GetAffinity(get_type, sizeof(get_type))

    if (!equali(get_type, "
sqlite")) {
        log_to_file("
SQLX.log", "Driver no encontrado");
        pause("
a");
    }
    else {
        static error, szError[300];
        g_query = SQL_MakeDbTuple("", "", "", SQLX_DATABASE)
        g_tuple = SQL_Connect(g_query, error, szError, 300)

        if(strlen(szError)) {
            log_to_file("
ErrorSQL.log", szError)
            pause("
a")
        }
        CheckTabla()
    }
}
public plugin_end() { SQL_FreeHandle(g_tuple); }
stock Color(id, const input[], any:...)
{
    static szMsg[191], msgSayText;

    if (!msgSayText)
    msgSayText = get_user_msgid("
SayText");

    vformat(szMsg, 190, input, 3);

    replace_all(szMsg, 190, "
!g", "^4");
    replace_all(szMsg, 190, "
!y", "^1");
    replace_all(szMsg, 190, "
!team", "^3");

    message_begin(id ? MSG_ONE_UNRELIABLE : MSG_BROADCAST, msgSayText, .player = id);
    write_byte(id ? id : 33);
    write_string(szMsg);
    message_end();


IMAGEN 1 : (ACÁ TODO BIEN)

[Imagen: attachment.php?aid=6730]

IMAGEN 2 : (ACÁ MUESTRA EL ERROR)
[Imagen: attachment.php?aid=6731]


Archivos adjuntos Miniatura(s)
       
Responder
#2
esto quisas te ayude

(17/12/2017, 09:34 PM)BlackQueen escribió: Cuando el cliente ingresa al servidor, busca su nombre (suponiendo que ademas de la cuenta guardas el nombre de "x" personaje por ejemplo) en la base de datos, y si existe utiliza una variable para guardar ese estado, entonces cuando le mostras en el menú si esta registrado le bloqueas con un callback la opción de registrarse y le habilitas solamente la de ingresar a jugar, y de lo contrario, bloquear el ingreso y solo habilitarle la opción de registrarse.
Responder
#3
Creo que seria asi
Código PHP:
#include <amxmodx>
#include <sqlx>

#define SQLX_DATABASE "zpdata2"

const USER_NO_REGISTRADO = -1;
const 
USER_REGISTRADO 0;
const 
USER_LOGEADO 1;

new 
g_logeado[33], g_muertes[33];
new 
Handle:g_queryHandle:g_tuple;
public 
plugin_init() {
    
register_plugin("Tutorial SQL""1.0.0""Gonza.-*")
    
register_message(get_user_msgid("VGUI"), "message_vgui")
    
register_message(get_user_msgid("DeathMsg"), "message_death")

    
register_clcmd("chooseteam""show_menu_registro")
    
register_clcmd("jointeam""show_menu_registro")
    
register_clcmd("REGISTRE_SU_PASSWORD""REGISTRE_SU_PASSWORD")
    
register_clcmd("INGRESA_TU_PASSWORD""INGRESA_TU_PASSWORD")

    
register_clcmd("say /muertes""show_muertes")
    
register_clcmd("say_team /muertes""show_muertes")

    
SQLXInit()
}
public 
client_putinserver(id) {
    
g_logeado[id] = USER_NO_REGISTRADO
    g_muertes
[id] = 0

    
new szName[33];
    
get_user_name(idszName32)
    
g_query SQL_PrepareQuery(g_tuple"SELECT Nombre FROM 'Cuentas' WHERE Nombre = ^"%s^""szName);

    if (
SQL_Execute(g_query)) {
        if (
SQL_NumResults(g_query)) g_logeado[id] = USER_REGISTRADO
    
}
}
public 
client_disconnect(id) { Guardar(id); }
public 
show_muertes(id) {
    
client_print(idprint_chat"Moriste %d %s"g_muertes[id], g_muertes[id] > "veces" "ves")
}
public 
REGISTRE_SU_PASSWORD(id) {
    if(
g_logeado[id] != USER_NO_REGISTRADO) return

    static 
szArg[192]; read_args(szArg191);
    
remove_quotes(szArg); trim(szArg);

    if (
containi(szArg"^"") != -1) {
        client_print(id, print_center, "
No puedes usar comillas")
        client_cmd(id, "
messagemode REGISTRE_SU_PASSWORD")
    }
    static szName[33]; get_user_name(id, szName, 32);
    g_query = SQL_PrepareQuery(g_tuple, "
INSERT INTO 'Cuentas' (NombrePasswordVALUES (^"%s^", ^"%s^")", szName, szArg)

    if (SQL_Execute(g_query)) {
        g_logeado[id] = USER_LOGEADO
        client_cmd(id, "
jointeam 5")
        client_print(id, print_center, "
Te has registrado correctamente!")
    }
    else client_print(id, print_center, "
Error al registrarte :(")
}
public INGRESA_TU_PASSWORD(id) {
    if(g_logeado[id] != USER_REGISTRADO) return

    static szArg[192]; read_args(szArg, 191);
    remove_quotes(szArg); trim(szArg);

    static szName[33]; get_user_name(id, szName, 32);
    g_query = SQL_PrepareQuery(g_tuple, "
SELECT PasswordMuertes FROM 'Cuentas' WHERE Nombre = ^"%s^"", szName);

    if(SQL_Execute(g_query)) {
        static szPass[192]; SQL_ReadResult(g_query, 0, szPass, 191);

        if (equal(szPass, szArg)) {
            g_muertes[id] = SQL_ReadResult(g_query, 1)
            g_logeado[id] = USER_LOGEADO
            client_cmd(id, "
jointeam 5")
            client_print(id, print_center, "
Te has logeado correctamente!")
        }
        else {
            client_cmd(id, "
messagemode INGRESA_TU_PASSWORD")
            client_print(id, print_center, "
Password incorrecta")
        }
    }
    else client_print(id, print_center, "
Error al logearte :(")
}
public show_menu_registro(id) {
    if(g_logeado[id] == USER_LOGEADO) return PLUGIN_CONTINUE;

    static text[299], sNombre[33]; get_user_name(id, sNombre, charsmax(sNombre));
    formatex(text, charsmax(text), "
\d(\rLOS TURROS\d) \wMenu de registro^n^n\r-\w Bienvenido : \y%s^n\r-\w Fecha : \y17/11/2019^n\r-\w Estado : \y%s", sNombre, (g_logeado[id] == USER_NO_REGISTRADO) ? "No Registrado" : "Registrado");
    new menu = menu_create(text, "
Handler")

    formatex(text, charsmax(text), "
Registrarse")
    menu_additem(menu, text, _, _, menu_makecallback("
callback"))

    formatex(text, charsmax(text), "
Logearse")
    menu_additem(menu, text, _, _, menu_makecallback("
callback"))

    menu_setprop(menu, MPROP_EXIT, MEXIT_NEVER)
    menu_display(id, menu)

    return PLUGIN_HANDLED;
}
public callback(id, menu, item) {

    switch (item) {
        case 0: {
            if (g_logeado[id] == USER_REGISTRADO) {
                Color(id, "
!g[CUENTAS]!y Ya tienes una cuenta registrada.");
                return ITEM_DISABLED;
            }
        }
        case 1: {
            if (g_logeado[id] == USER_NO_REGISTRADO) {
                Color(id, "
!g[CUENTAS]!y No tienes una cuenta registrada en la base de datos.");
                return ITEM_DISABLED;
            }
        }
    }
    return ITEM_ENABLED;
}
public Handler(id, menu, item) {
    switch (item) {
        case 0: {
            client_cmd(id, "
messagemode REGISTRE_SU_PASSWORD")
            client_print(id, print_center, "
Elije una password para tu cuenta")
        }
        case 1: {
            client_cmd(id, "
messagemode INGRESA_TU_PASSWORD")
            client_print(id, print_center, "
Ingresa la password de tu cuenta")
        }
    }
    menu_destroy(menu)
    return PLUGIN_HANDLED;
}
public message_vgui(msg_id, dest, msg_ent) {
    if (g_logeado[msg_ent] == USER_LOGEADO) return PLUGIN_CONTINUE;

    show_menu_registro(msg_ent);
    return PLUGIN_HANDLED
}
public message_death(msg_id, dest, msg_ent) {
    static victim; victim = get_msg_arg_int(2)

    if (is_user_connected(victim)) {
        g_muertes[victim]++
        Guardar(victim);
    }
}
public Guardar(id) {
    if(g_logeado[id] != USER_LOGEADO) return;
    static szName[33]; get_user_name(id, szName, 32)

    g_query = SQL_PrepareQuery(g_tuple, "
UPDATE 'Cuentas' SET Muertes = %d WHERE Nombre = ^"%s^"", g_muertes[id], szName)
    SQL_Execute(g_query)
}
public CheckTabla() {
    g_query = SQL_PrepareQuery
    (
    g_tuple,
    "
CREATE TABLE IF NOT EXISTS 'Cuentas'  \
    ( \
    
Nombre varchar(33NOT NULL default '' PRIMARY KEY, \
    
Password varchar(192NOT NULL default '', \
    
Muertes int NOT NULL default \
    )
"
    )
    SQL_Execute(g_query)
}
public SQLXInit() {
    new get_type[12];
    SQL_SetAffinity("
sqlite")
    SQL_GetAffinity(get_type, sizeof(get_type))

    if (!equali(get_type, "
sqlite")) {
        log_to_file("
SQLX.log", "Driver no encontrado");
        pause("
a");
    }
    else {
        static error, szError[300];
        g_query = SQL_MakeDbTuple("", "", "", SQLX_DATABASE)
        g_tuple = SQL_Connect(g_query, error, szError, 300)

        if(strlen(szError)) {
            log_to_file("
ErrorSQL.log", szError)
            pause("
a")
        }
        CheckTabla()
    }
}
public plugin_end() { SQL_FreeHandle(g_tuple); }
stock Color(id, const input[], any:...)
{
    static szMsg[191], msgSayText;

    if (!msgSayText)
    msgSayText = get_user_msgid("
SayText");

    vformat(szMsg, 190, input, 3);

    replace_all(szMsg, 190, "
!g", "^4");
    replace_all(szMsg, 190, "
!y", "^1");
    replace_all(szMsg, 190, "
!team", "^3");

    message_begin(id ? MSG_ONE_UNRELIABLE : MSG_BROADCAST, msgSayText, .player = id);
    write_byte(id ? id : 33);
    write_string(szMsg);
    message_end();

[Imagen: b_350_20_323957_202743_f19a15_111111.png]

Estudia siempre; el tiempo es oro, lo material se puede recuperar pero el tiempo no se puede recuperar.
(02/10/2016, 05:05 PM)meTaLiCroSS escribió: Siempre me gusta ayudar cuando alguien esta interesado realmente en ver que esta programando.
(08/08/2019, 05:32 PM)meTaLiCroSS escribió: grax x el dato cr4ck


Mis aportes

PLUGINS
MAPAS
Menú LANG [SF] Sistema de Frags
Say System (Admin Prefix)
Responder
#4
mil gracias, si no fuera tanta molestia me podrías ayudar y explicar un poco de como guardo diferentes tipos de variable en el sistema de cuenta como ejemplo estas por en el tutorial de donde saque el código no lo logre entender muy bien :

Código PHP:
g_nivel[33];
g_habilidades[33][4];
g_exp[33];
g_puntos[33]; 
Responder
#5
Código PHP:
public Guardar(id
{
    if(
g_logeado[id] != USER_LOGEADO) return;
    static 
szName[33]; get_user_name(idszName32)
    new; 
szText250 ];
    
    
formatex(szTextcharsmax(szText), "UPDATE 'Cuentas' SET Muertes = %d, Exp = %d WHERE Nombre = ^"%s^""
    
g_muertes[id], g_exp[id], szName );

    
g_query SQL_PrepareQueryg_tupleszText )
    
SQL_Executeg_query )


Mira el ejemplo con Exp, de igual manera debes agregar un campo en la tabla para exp y cargar exp cuando te logueas, y así es con cada cosa que guardas
[Imagen: zcsztw-4.png] [Imagen: 6u5fj2-4.png]
[Imagen: linkedin_thumb_image.png][Imagen: 76561198283253977.png][Imagen: linkedin_thumb_image.png]
Responder
#6
Ya aprendi a guardarlos lo que no comprendo a un sobre guardar arrays

g_habilidades[33][4]

alguien me puede explicar si lleva la misma forma de guardar que las variables ?


edit : no vi tu mensaje hypnotize jajaja pero gracias ya logre aprender de tanto ver post pero de lo guardar array tengo dudas ojala me ayudes aclararlas.
Responder
#7
Este tutorial me ayudó bastante a mí https://amxmodx-es.com/Thread-TUT-Mysql-variables

Responder
#8
(17/11/2019, 03:42 PM)Skylar escribió: Este tutorial me ayudó bastante a mí https://amxmodx-es.com/Thread-TUT-Mysql-variables

muchas gracias.
Responder
#9
(17/11/2019, 11:00 AM)totopizza escribió: Creo que seria asi
Código PHP:
#include <amxmodx>
#include <sqlx>

#define SQLX_DATABASE "zpdata2"

const USER_NO_REGISTRADO = -1;
const 
USER_REGISTRADO 0;
const 
USER_LOGEADO 1;

new 
g_logeado[33], g_muertes[33];
new 
Handle:g_queryHandle:g_tuple;
public 
plugin_init() {
    
register_plugin("Tutorial SQL""1.0.0""Gonza.-*")
    
register_message(get_user_msgid("VGUI"), "message_vgui")
    
register_message(get_user_msgid("DeathMsg"), "message_death")

    
register_clcmd("chooseteam""show_menu_registro")
    
register_clcmd("jointeam""show_menu_registro")
    
register_clcmd("REGISTRE_SU_PASSWORD""REGISTRE_SU_PASSWORD")
    
register_clcmd("INGRESA_TU_PASSWORD""INGRESA_TU_PASSWORD")

    
register_clcmd("say /muertes""show_muertes")
    
register_clcmd("say_team /muertes""show_muertes")

    
SQLXInit()
}
public 
client_putinserver(id) {
    
g_logeado[id] = USER_NO_REGISTRADO
    g_muertes
[id] = 0

    
new szName[33];
    
get_user_name(idszName32)
    
g_query SQL_PrepareQuery(g_tuple"SELECT Nombre FROM 'Cuentas' WHERE Nombre = ^"%s^""szName);

    if (
SQL_Execute(g_query)) {
        if (
SQL_NumResults(g_query)) g_logeado[id] = USER_REGISTRADO
    
}
}
public 
client_disconnect(id) { Guardar(id); }
public 
show_muertes(id) {
    
client_print(idprint_chat"Moriste %d %s"g_muertes[id], g_muertes[id] > "veces" "ves")
}
public 
REGISTRE_SU_PASSWORD(id) {
    if(
g_logeado[id] != USER_NO_REGISTRADO) return

    static 
szArg[192]; read_args(szArg191);
    
remove_quotes(szArg); trim(szArg);

    if (
containi(szArg"^"") != -1) {
        client_print(id, print_center, "
No puedes usar comillas")
        client_cmd(id, "
messagemode REGISTRE_SU_PASSWORD")
    }
    static szName[33]; get_user_name(id, szName, 32);
    g_query = SQL_PrepareQuery(g_tuple, "
INSERT INTO 'Cuentas' (NombrePasswordVALUES (^"%s^", ^"%s^")", szName, szArg)

    if (SQL_Execute(g_query)) {
        g_logeado[id] = USER_LOGEADO
        client_cmd(id, "
jointeam 5")
        client_print(id, print_center, "
Te has registrado correctamente!")
    }
    else client_print(id, print_center, "
Error al registrarte :(")
}
public INGRESA_TU_PASSWORD(id) {
    if(g_logeado[id] != USER_REGISTRADO) return

    static szArg[192]; read_args(szArg, 191);
    remove_quotes(szArg); trim(szArg);

    static szName[33]; get_user_name(id, szName, 32);
    g_query = SQL_PrepareQuery(g_tuple, "
SELECT PasswordMuertes FROM 'Cuentas' WHERE Nombre = ^"%s^"", szName);

    if(SQL_Execute(g_query)) {
        static szPass[192]; SQL_ReadResult(g_query, 0, szPass, 191);

        if (equal(szPass, szArg)) {
            g_muertes[id] = SQL_ReadResult(g_query, 1)
            g_logeado[id] = USER_LOGEADO
            client_cmd(id, "
jointeam 5")
            client_print(id, print_center, "
Te has logeado correctamente!")
        }
        else {
            client_cmd(id, "
messagemode INGRESA_TU_PASSWORD")
            client_print(id, print_center, "
Password incorrecta")
        }
    }
    else client_print(id, print_center, "
Error al logearte :(")
}
public show_menu_registro(id) {
    if(g_logeado[id] == USER_LOGEADO) return PLUGIN_CONTINUE;

    static text[299], sNombre[33]; get_user_name(id, sNombre, charsmax(sNombre));
    formatex(text, charsmax(text), "
\d(\rLOS TURROS\d) \wMenu de registro^n^n\r-\w Bienvenido : \y%s^n\r-\w Fecha : \y17/11/2019^n\r-\w Estado : \y%s", sNombre, (g_logeado[id] == USER_NO_REGISTRADO) ? "No Registrado" : "Registrado");
    new menu = menu_create(text, "
Handler")

    formatex(text, charsmax(text), "
Registrarse")
    menu_additem(menu, text, _, _, menu_makecallback("
callback"))

    formatex(text, charsmax(text), "
Logearse")
    menu_additem(menu, text, _, _, menu_makecallback("
callback"))

    menu_setprop(menu, MPROP_EXIT, MEXIT_NEVER)
    menu_display(id, menu)

    return PLUGIN_HANDLED;
}
public callback(id, menu, item) {

    switch (item) {
        case 0: {
            if (g_logeado[id] == USER_REGISTRADO) {
                Color(id, "
!g[CUENTAS]!y Ya tienes una cuenta registrada.");
                return ITEM_DISABLED;
            }
        }
        case 1: {
            if (g_logeado[id] == USER_NO_REGISTRADO) {
                Color(id, "
!g[CUENTAS]!y No tienes una cuenta registrada en la base de datos.");
                return ITEM_DISABLED;
            }
        }
    }
    return ITEM_ENABLED;
}
public Handler(id, menu, item) {
    switch (item) {
        case 0: {
            client_cmd(id, "
messagemode REGISTRE_SU_PASSWORD")
            client_print(id, print_center, "
Elije una password para tu cuenta")
        }
        case 1: {
            client_cmd(id, "
messagemode INGRESA_TU_PASSWORD")
            client_print(id, print_center, "
Ingresa la password de tu cuenta")
        }
    }
    menu_destroy(menu)
    return PLUGIN_HANDLED;
}
public message_vgui(msg_id, dest, msg_ent) {
    if (g_logeado[msg_ent] == USER_LOGEADO) return PLUGIN_CONTINUE;

    show_menu_registro(msg_ent);
    return PLUGIN_HANDLED
}
public message_death(msg_id, dest, msg_ent) {
    static victim; victim = get_msg_arg_int(2)

    if (is_user_connected(victim)) {
        g_muertes[victim]++
        Guardar(victim);
    }
}
public Guardar(id) {
    if(g_logeado[id] != USER_LOGEADO) return;
    static szName[33]; get_user_name(id, szName, 32)

    g_query = SQL_PrepareQuery(g_tuple, "
UPDATE 'Cuentas' SET Muertes = %d WHERE Nombre = ^"%s^"", g_muertes[id], szName)
    SQL_Execute(g_query)
}
public CheckTabla() {
    g_query = SQL_PrepareQuery
    (
    g_tuple,
    "
CREATE TABLE IF NOT EXISTS 'Cuentas'  \
    ( \
    
Nombre varchar(33NOT NULL default '' PRIMARY KEY, \
    
Password varchar(192NOT NULL default '', \
    
Muertes int NOT NULL default \
    )
"
    )
    SQL_Execute(g_query)
}
public SQLXInit() {
    new get_type[12];
    SQL_SetAffinity("
sqlite")
    SQL_GetAffinity(get_type, sizeof(get_type))

    if (!equali(get_type, "
sqlite")) {
        log_to_file("
SQLX.log", "Driver no encontrado");
        pause("
a");
    }
    else {
        static error, szError[300];
        g_query = SQL_MakeDbTuple("", "", "", SQLX_DATABASE)
        g_tuple = SQL_Connect(g_query, error, szError, 300)

        if(strlen(szError)) {
            log_to_file("
ErrorSQL.log", szError)
            pause("
a")
        }
        CheckTabla()
    }
}
public plugin_end() { SQL_FreeHandle(g_tuple); }
stock Color(id, const input[], any:...)
{
    static szMsg[191], msgSayText;

    if (!msgSayText)
    msgSayText = get_user_msgid("
SayText");

    vformat(szMsg, 190, input, 3);

    replace_all(szMsg, 190, "
!g", "^4");
    replace_all(szMsg, 190, "
!y", "^1");
    replace_all(szMsg, 190, "
!team", "^3");

    message_begin(id ? MSG_ONE_UNRELIABLE : MSG_BROADCAST, msgSayText, .player = id);
    write_byte(id ? id : 33);
    write_string(szMsg);
    message_end();


una ultima duda totopizza me podrías explicar que fue que añadiste/moviste o editaste en el plugin ?

pd : lo hago para yo igual aprender y no andar pidiendo el código en bandeja de plata.
Responder
#10
Fíjate el código que pasaste al principio y el código que te pasó totopizza, así ves las diferencias.
Responder


Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)