17/11/2019, 12:36 AM
(Última modificación: 17/11/2019, 12:38 AM por Kiltr0. Edited 2 times in total.)
Hi , 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 :
IMAGEN 1 : (ACÁ TODO BIEN)
IMAGEN 2 : (ACÁ MUESTRA EL ERROR)
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_query, Handle: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(id, print_chat, "Moriste %d %s", g_muertes[id], g_muertes[id] > 1 ? "veces" : "ves")
}
public REGISTRE_SU_PASSWORD(id) {
if(g_logeado[id] != USER_NO_REGISTRADO) return
static szArg[192]; read_args(szArg, 191);
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' (Nombre, Password) VALUES (^"%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 Password, Muertes 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(33) NOT NULL default '' PRIMARY KEY, \
Password varchar(192) NOT NULL default '', \
Muertes int NOT NULL default 0 \
)"
)
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 2 : (ACÁ MUESTRA EL ERROR)