20/05/2018, 12:29 AM
Al momento de crear la cuenta va bien, Pero a la hora de intentar entrar de nuevo con la misma cuenta ya no sirve y me tira el siguiente error:
L 05/19/2018 - 23:26:15: [SQLITE] Invalid column: 3
L 05/19/2018 - 23:26:15: [AMXX] Displaying debug trace (plugin "mod.amxx")
L 05/19/2018 - 23:26:15: [AMXX] Run time error 10: native error (native "SQL_ReadResult")
L 05/19/2018 - 23:26:15: [AMXX] [0] mod.sma:ataHandler (line 1
L 05/19/2018 - 23:26:15: [SQLITE] Invalid column: 3
L 05/19/2018 - 23:26:15: [AMXX] Displaying debug trace (plugin "mod.amxx")
L 05/19/2018 - 23:26:15: [AMXX] Run time error 10: native error (native "SQL_ReadResult")
L 05/19/2018 - 23:26:15: [AMXX] [0] mod.sma:ataHandler (line 1
Código PHP:
public ChequearCuenta(id){
new Query[400],Data[2]
Data[0] = id;Data[1] = ChequearC
formatex(Query,charsmax(Query),"SELECT id FROM `%s` WHERE Nombre = ^"%s^"",TABLA, g_playername[id])
SQL_ThreadQuery(Tuple,"DataHandler",Query,Data,2)
return PLUGIN_HANDLED
}
/*===============================================================================?=====
Hokeos
================================================================================?====*/
public message_VGUIMenu( iMsgid, iDest, id ) {
if( Estado[id] == 1 || get_msg_arg_int( 1 ) != 2 )
return PLUGIN_CONTINUE;
ChequearCuenta(id)
return PLUGIN_HANDLED;
}
public message_ShowMenu( iMsgid, iDest, id ) {
if( Estado[id] == 1 )
return PLUGIN_CONTINUE;
static sMenuCode[ 33 ];
get_msg_arg_string( 4, sMenuCode, charsmax( sMenuCode ) );
if(containi(sMenuCode, "Team_Select" ) != -1 ) {
ChequearCuenta(id)
return PLUGIN_HANDLED;
}
if(Estado[id] == 2 ) {
new tmp[32]
get_msg_arg_string(4, tmp, 31)
if(contain(tmp, "#Team_Select")==0){
if(!g_autojoin_team[id])
return PLUGIN_CONTINUE
g_autojoin_team[id] = false
g_autojoin_class[id] = true
client_cmd(id, "jointeam 5")
return PLUGIN_HANDLED
}
if(contain(tmp, "#CT_Select")==0 || contain(tmp, "#Terrorist_Select")==0){
if(!g_autojoin_class[id])
return PLUGIN_CONTINUE
if(!task_exists(TID_HIDE_MENU+id))
set_task(0.1, "hide_menu", TID_HIDE_MENU+id)
g_autojoin_class[id] = false
client_cmd(id, "joinclass 5")
set_user_info(id, "_vgui_menus", g_vgui_menus[id])
return PLUGIN_HANDLED
}
return PLUGIN_HANDLED;
}
return PLUGIN_CONTINUE;
}
public hide_menu(tid){
new id = tid-TID_HIDE_MENU
show_menu(id, 0, "^n", 1)
if(!is_user_alive(id))
ExecuteHam(Ham_CS_RoundRespawn, id)
}
public clcmd_changeteam( id ) {
if(Estado[id] == 0 ) {
RegistroMenu( id );
return PLUGIN_HANDLED;
}
else if(Estado[id] == 1){
fw_Team_Select(id)
return PLUGIN_HANDLED
}
else if(Estado[id] == 2){
Menu_Principal_Juego(id)
return PLUGIN_HANDLED
}
return PLUGIN_CONTINUE;
}
public fw_Team_Select(id)
{
new menu = menu_create("\yTeam Select", "Handler_menu");
menu_additem(menu, "Ingresar", "", 0); // case 0
menu_additem(menu, "Configuracion", "", 0); // case 1
menu_setprop(menu, MPROP_EXIT, MEXIT_ALL);
menu_display(id, menu, 0);
return PLUGIN_HANDLED;
}
public Handler_menu(id, menu, item)
{
if(item == MENU_EXIT)
{
menu_cancel(id);
return PLUGIN_HANDLED;
}
new command[6], name[64], access, callback;
menu_item_getinfo(menu, item, access, command, sizeof command - 1, name, sizeof name - 1, callback);
user_kill(id)
switch(item)
{
case 0 :{
Estado[id] = 2
engclient_cmd(id,"jointeam","5")
engclient_cmd(id,"joinclass","5")
}
case 1 :{
}
}
menu_destroy(menu);
return PLUGIN_HANDLED;
}
/*===============================================================================?=====
Menu Registro
================================================================================?====*/
public RegistroMenu(id){
new iMenu = menu_create("Menu de \yRegistro \d& \yLogueo","HandlerRegistro")
menu_additem(iMenu,"Crear cuenta.",_,_,menu_makecallback("RegistroCallBack"))
menu_additem(iMenu,"Loguear cuenta.",_,_,menu_makecallback("RegistroCallBack"))
menu_setprop(iMenu,MPROP_EXIT, MEXIT_NEVER )
menu_display(id,iMenu )
return PLUGIN_HANDLED
}
public RegistroCallBack(id,menu,item){
switch(item){
case 0:if(RCallBack[id])return ITEM_DISABLED
case 1:if(!RCallBack[id])return ITEM_DISABLED
}
return ITEM_ENABLED
}
public HandlerRegistro(id,menu,item){
switch(item){
case MENU_EXIT:{
menu_destroy(menu)
return PLUGIN_HANDLED
}
case 0:client_cmd(id,"messagemode CREAR_PASSWORD")
case 1:client_cmd(id,"messagemode LOGUEAR_PASSWORD")
}
return PLUGIN_HANDLED
}
/*===============================================================================?=====
================================================================================?====*/
public CrearPassword(id){
read_args(Password[id],charsmax(Password[]))
remove_quotes(Password[id]);trim(Password[id])
new PassBuffer[34]
md5(Password[id],PassBuffer)
new Query[400],Data[2]
Data[0] = id;Data[1] = RegistrarC
formatex(Query,charsmax(Query),"INSERT INTO `%s` (Nombre,Password) VALUES (^"%s^",^"%s^")", TABLA,g_playername[id],PassBuffer)
SQL_ThreadQuery(Tuple,"DataHandler",Query,Data,2)
return PLUGIN_HANDLED
}
public LoguearPassword(id){
read_args(Password[id],charsmax(Password[]))
remove_quotes(Password[id]);trim(Password[id])
new PassBuffer[34]
md5(Password[id],PassBuffer)
new Query[400],Data[2]
Data[0] = id;Data[1] = LoguearC
/*
Aca es donde cargas los datos,
Si vas a cargar mas de 12 o 13 aumentale el numero
de celdas a "Query"
*/
formatex(Query,charsmax(Query),"SELECT id,Nivel,Exp FROM `%s` WHERE Nombre = ^"%s^" AND Password = ^"%s^"",TABLA, g_playername[id], PassBuffer)
SQL_ThreadQuery(Tuple,"DataHandler",Query,Data,2)
return PLUGIN_HANDLED
}
/*===============================================================================?=====
================================================================================?====*/
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 ChequearC:{
if(SQL_NumResults(Query))RCallBack[id] = 1
else RCallBack[id] = 0
RegistroMenu(id)
}
case RegistrarC:{
if(failstate < TQUERY_SUCCESS) {
chatcolor(id,"%s Error al crear la cuenta,porfavor intente nuevamente.", Prefix)
client_cmd(id, "spk buttons/button10.wav")
RegistroMenu(id)
}
else{
chatcolor(id,"%s Tu cuenta a sido creada correctamente.", Prefix)
new iQuery[300],iData[2]
iData[0] = id;iData[1] = CargarD
/*
Aca cargas los datos cuando se registra,
es diferente a que cuando se loguear
*/
formatex(iQuery,charsmax(iQuery),"SELECT id,Nivel = %d,Exp = %d FROM `%s` WHERE Nombre = ^"%s^"",g_level[id], g_exp[id], TABLA, g_playername[id])
SQL_ThreadQuery(Tuple,"DataHandler",iQuery,iData,2)
}
}
case LoguearC:{
if(SQL_NumResults(Query)){
g_id[ id ] = SQL_ReadResult( Query, 0 );
SQL_ReadResult( Query, 3, g_playername[ id ], charsmax( g_playername[ ] ) );
g_level[ id ] = SQL_ReadResult( Query, 4 );
g_exp[ id ] = SQL_ReadResult( Query, 5 );
func_login_success(id);
}
else {
chatcolor(id, "%s La contraseña es incorrecta.", Prefix)
client_cmd(id, "spk buttons/button10.wav")
RegistroMenu(id)
}
}
case CargarD:{
if(SQL_NumResults(Query)){
g_id[ id ] = SQL_ReadResult( Query, 0 );
g_level[ id ] = SQL_ReadResult( Query, 1 );
g_exp[ id ] = SQL_ReadResult( Query, 2 );
func_login_success(id);
}
else{
chatcolor(id, "Error al cargar los datos, intente nuevamente.", Prefix)
RegistroMenu(id)
}
}
case GuardarD: {
if(failstate < TQUERY_SUCCESS)
console_print(id,"Error en el guardado de datos.")
else
console_print(id,"Datos guardados.")
}
}
}
/*===============================================================================?=====
================================================================================?====*/
public func_login_success(id){
new name[32];
get_user_name(id, name, charsmax(name))
Estado[id] = 1
set_user_info(id,"name",name)
}
public client_infochanged( id ) {
if( Estado[ id ] == 0 )
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 GuardarDatos(id){
new Query[1000],Data[2]
Data[0] = id;Data[1] = GuardarD
formatex(Query,charsmax(Query),"UPDATE `%s` SET Nivel = %d, Exp = %d, id='%d' WHERE Nombre = ^"%s^"",TABLA,g_level[id],g_exp[id],g_id[id],g_playername[id])
SQL_ThreadQuery(Tuple,"DataHandler",Query,Data,2)
return PLUGIN_HANDLED
}
/*===============================================================================?=====
================================================================================?====*/
public SQLx_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" );
}
static iLen; iLen = 0;
iLen += formatex(query[iLen], charsmax(query) - iLen, "CREATE TABLE IF NOT EXISTS `%s` (`Nombre` VARCHAR NOT NULL UNIQUE, `Password` VARCHAR, `Nivel` INTEGER DEFAULT '0', `Exp` INTEGER DEFAULT '0', ",TABLA)
iLen += formatex(query[iLen], charsmax(query) - iLen, "`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL)")
Tuple = SQL_MakeDbTuple( "", "", "", "DataBase" );
SQL_ThreadQuery(Tuple, "QueryCreateTable", query)
return PLUGIN_CONTINUE
}
public QueryCreateTable(failstate, Handle:query, error[], errcode, data[], datasize, Float:queuetime)
{
/*new Handle:g_Sql = Empty_Handle
new errno;
//g_Sql = SQL_Connect(g_sqltuple, errno, error, 127);
if (g_Sql == Empty_Handle)
{
server_print("[SQL CONNECCION] SQL Error #%d - %s", errno, error);
set_fail_state("")
return;
}*/
if(failstate == TQUERY_CONNECT_FAILED)
{
set_fail_state("[SQL CONNECCION] No se pudo conectar a la database!")
}
else if(failstate == TQUERY_QUERY_FAILED)
{
set_fail_state("[SQL CONNECCION] Query Fallo!")
}
else if(errcode)
{
server_print("%s Error en la query: %s", Prefix, error)
}
else
{
server_print("Se cargaron las cuentas correctamente ")
for(new i = 1 ; i <= g_maxplayers ; i++)
{
if(!is_user_connecting(i) && !is_user_connected(i))
continue
ChequearCuenta(i)
}
}
}
public plugin_end( )
SQL_FreeHandle(Tuple)