Se cierra el samp server al guardar mysql
#1

Hola a toda la comunidad,bueno aca andamos con el mysql con algunos problemas xD

Al guardar las cuentas se me cae el servidor D: (se cierra el samp server)Observe el log pero no me da ninguna pista sobre que podia estar causandolo.

Si alguien me dice cual es mi error le estare agradecido (aunque yo pensaba que era el Consulta[256] que el valor era pequeсo aun asi agregando mas no funciono)

Bueno aqui el codigo.

pawn Код:
GuardarCuenta( playerid )
{
if( GetPVarInt( playerid, #Login ) == 1 )
{
static
Consulta [ 256 ];

GetPlayerPos( playerid, PlayerInfo[ playerid ][ Pos ][ 0 ], PlayerInfo[ playerid ][ Pos ][ 1 ], PlayerInfo[ playerid ][ Pos ][ 2 ] )    ,
GetPlayerFacingAngle( playerid, PlayerInfo[ playerid ][ Pos ][ 3 ] )                                                                    ,
GetPlayerHealth( playerid, PlayerInfo[ playerid ][ Vida ] )                                                                         ,
GetPlayerArmour( playerid, PlayerInfo[ playerid ][ Chaleco ] )                                                                         ,
PlayerInfo[ playerid ][ Dinero ]   = GetPlayerMoney     ( playerid )                                                                ,
PlayerInfo[ playerid ][ Interior ] = GetPlayerInterior      ( playerid )                                                                ,
PlayerInfo[ playerid ][ VirWorld ] = GetPlayerVirtualWorld  ( playerid )                                                                ;

// ------------------------------------- //
mysql_format( ConnectionHandle, Consulta, "UPDATE `users` SET Password='%s', PosX=%.4f, PosY=%.4f, PosZ=%.4f, Ang=%.4f, Vida=%.2f, Chaleco=%.2f WHERE `Nombre` = '%s' AND `ID_User` = '%i';", PlayerInfo[ playerid ][ Password ], PlayerInfo[ playerid ][ Pos ][ 0 ],
PlayerInfo[ playerid ][ Pos ][ 1 ], PlayerInfo[ playerid ][ Pos ][ 2 ], PlayerInfo[ playerid ][ Pos ][ 3 ], PlayerInfo[ playerid ][ Vida ], PlayerInfo[ playerid ][ Chaleco ], GetPName( playerid ), PlayerInfo[ playerid ][ pID ] );
mysql_function_query( ConnectionHandle , Consulta , false, # , # ) ;

// ------------------------------------- //
for( new i; i<13; i++ ) {
GetPlayerWeaponData( playerid, i, PlayerInfo[ playerid ][ Armas ][ i ], PlayerInfo[ playerid ][ Municiones ][ i ] );
mysql_format( ConnectionHandle, Consulta, "UPDATE `users` SET Arma_%i=%i, Municion_%i=%i WHERE `Nombre` = '%s' AND `ID_User` = '%i';", i, PlayerInfo[ playerid ][ Armas ][ i ], PlayerInfo[ playerid ][ Municiones ][ i ], GetPName( playerid ), PlayerInfo[ playerid ][ pID ] );
mysql_function_query( ConnectionHandle , Consulta , false, # , # ) ;
}

// ------------------------------------- //
mysql_format( ConnectionHandle, Consulta, "UPDATE `users` SET Skin=%i, Dinero=%i, Interior=%i, VirWorld=%i ,NivelAdmin=%i ,Tutorial=%i ,Sexo=%i ,Edad=%i WHERE `Nombre` = '%s' AND `ID_User` = '%i';", PlayerInfo[ playerid ][ Skin ], PlayerInfo[ playerid ][ Dinero ], PlayerInfo[ playerid ][ Interior ], PlayerInfo[ playerid ][ VirWorld ],PlayerInfo[ playerid ][ Admin] ,PlayerInfo[ playerid ][ HizoTuto],PlayerInfo[ playerid ][Sexo],PlayerInfo[ playerid ][Edad],GetPName( playerid ),
PlayerInfo[ playerid ][ pID ]);
mysql_function_query( ConnectionHandle , Consulta , false, # , # ) ;


// ------------------------------------- //
mysql_format( ConnectionHandle, Consulta, "UPDATE `users` SET Faccion=%i ,Trabajo=%i ,Encendedor=%i ,Cigarros=%i , Banco=%i ,Nivel=%i ,Experiencia=%i WHERE `Nombre` = '%s' AND `ID_User` = '%i';",PlayerInfo[ playerid ][Faccion],PlayerInfo[ playerid ][Trabajo],PlayerInfo[ playerid ][Encendedor],PlayerInfo[ playerid ][Cigarros],PlayerInfo[ playerid ][Banco],PlayerInfo[ playerid ][Nivel],PlayerInfo[ playerid ][Experiencia], GetPName( playerid ),
PlayerInfo[ playerid ][ pID ]);
mysql_function_query( ConnectionHandle , Consulta , false, # , # ) ;


// ------------------------------------- //
mysql_format( ConnectionHandle, Consulta, "UPDATE `users` SET Payday=%i ,TiempoConeccion=%i,Jaileado=%i,TiempoJail=%i,Estrellas=%i WHERE `Nombre` = '%s' AND `ID_User` = '%i';",PlayerInfo[ playerid ][Payday] ,PlayerInfo[ playerid ][TiempoConectado],PlayerInfo[ playerid ][Jaileado],PlayerInfo[ playerid ][TiempoJail],PlayerInfo[ playerid ][Estrellas], GetPName( playerid ),
PlayerInfo[ playerid ][ pID ]);
mysql_function_query( ConnectionHandle , Consulta , false, # , # ) ;
}
return 1;
}
Gracias desde ya.
Reply
#2

En primer lugar cambia el static a new, y luego despuйs de cada mysql_function_query pon un print y mira a ver cual de ellos no sale en la consola, y despuйs deja un comentario aquн con el debug si no consigues arreglarlo.

Saludos.

_______________________
EDIT: esto estб mal hecho.
pawn Код:
for( new i; i<13; i++ ) {
GetPlayerWeaponData( playerid, i, PlayerInfo[ playerid ][ Armas ][ i ], PlayerInfo[ playerid ][ Municiones ][ i ] );
mysql_format( ConnectionHandle, Consulta, "UPDATE `users` SET Arma_%i=%i, Municion_%i=%i WHERE `Nombre` = '%s' AND `ID_User` = '%i';", i, PlayerInfo[ playerid ][ Armas ][ i ], PlayerInfo[ playerid ][ Municiones ][ i ], GetPName( playerid ), PlayerInfo[ playerid ][ pID ] );
mysql_function_query( ConnectionHandle , Consulta , false, # , # ) ;
}
Jamбs metas mysql_function_query en un bucle en SA-MP, en este caso es preferible poner la funciуn 13 veces que meterla (la funciуn ) dentro del bucle.
Reply
#3

Quote:
Originally Posted by [DOG]irinel1996
Посмотреть сообщение
En primer lugar cambia el static a new, y luego despuйs de cada mysql_function_query pon un print y mira a ver cual de ellos no sale en la consola, y despuйs deja un comentario aquн con el debug si no consigues arreglarlo.

Saludos.

_______________________
EDIT: esto estб mal hecho.
pawn Код:
for( new i; i<13; i++ ) {
GetPlayerWeaponData( playerid, i, PlayerInfo[ playerid ][ Armas ][ i ], PlayerInfo[ playerid ][ Municiones ][ i ] );
mysql_format( ConnectionHandle, Consulta, "UPDATE `users` SET Arma_%i=%i, Municion_%i=%i WHERE `Nombre` = '%s' AND `ID_User` = '%i';", i, PlayerInfo[ playerid ][ Armas ][ i ], PlayerInfo[ playerid ][ Municiones ][ i ], GetPName( playerid ), PlayerInfo[ playerid ][ pID ] );
mysql_function_query( ConnectionHandle , Consulta , false, # , # ) ;
}
Jamбs metas mysql_function_query en un bucle en SA-MP, en este caso es preferible llamar la funciуn 13 veces que meterla (la funciуn ) dentro del bucle.
Hola irinel y gracias por tu respuesta.

Cambie el static a new y coloque los print y como resultado

Код:
[11:57:33] Mysql one
[11:57:33] Mysql two
[11:57:33] Mysql two
[11:57:33] Mysql two
[11:57:33] Mysql two
[11:57:33] Mysql two
[11:57:33] Mysql two
[11:57:33] Mysql two
[11:57:33] Mysql two
[11:57:33] Mysql two
[11:57:33] Mysql two
[11:57:33] Mysql two
[11:57:33] Mysql two
[11:57:33] Mysql two
Como se ve se repite muchas veces la palabra mysql two y es justamente la que esta dentro del bucle.
Reply
#4

No la metas en el bucle, ponla despuйs de cada, pon este:
pawn Код:
GuardarCuenta( playerid )
{
    if( GetPVarInt( playerid, #Login ) == 1 )
    {
        new Consulta [ 256 ];

        GetPlayerPos( playerid, PlayerInfo[ playerid ][ Pos ][ 0 ], PlayerInfo[ playerid ][ Pos ][ 1 ], PlayerInfo[ playerid ][ Pos ][ 2 ] )    ,
        GetPlayerFacingAngle( playerid, PlayerInfo[ playerid ][ Pos ][ 3 ] )                                                                    ,
        GetPlayerHealth( playerid, PlayerInfo[ playerid ][ Vida ] )                                                                         ,
        GetPlayerArmour( playerid, PlayerInfo[ playerid ][ Chaleco ] )                                                                         ,
        PlayerInfo[ playerid ][ Dinero ]   = GetPlayerMoney     ( playerid )                                                                ,
        PlayerInfo[ playerid ][ Interior ] = GetPlayerInterior      ( playerid )                                                                ,
        PlayerInfo[ playerid ][ VirWorld ] = GetPlayerVirtualWorld  ( playerid )                                                                ;

        // ------------------------------------- //
        mysql_format( ConnectionHandle, Consulta, "UPDATE `users` SET Password='%s', PosX=%.4f, PosY=%.4f, PosZ=%.4f, Ang=%.4f, Vida=%.2f, Chaleco=%.2f WHERE `Nombre` = '%s' AND `ID_User` = '%i';", PlayerInfo[ playerid ][ Password ], PlayerInfo[ playerid ][ Pos ][ 0 ],
        PlayerInfo[ playerid ][ Pos ][ 1 ], PlayerInfo[ playerid ][ Pos ][ 2 ], PlayerInfo[ playerid ][ Pos ][ 3 ], PlayerInfo[ playerid ][ Vida ], PlayerInfo[ playerid ][ Chaleco ], GetPName( playerid ), PlayerInfo[ playerid ][ pID ] );
        mysql_function_query( ConnectionHandle , Consulta , false, # , # ) ;
        print("one");
        // ------------------------------------- //
        for( new i; i<13; i++ ) {
        GetPlayerWeaponData( playerid, i, PlayerInfo[ playerid ][ Armas ][ i ], PlayerInfo[ playerid ][ Municiones ][ i ] );
        mysql_format( ConnectionHandle, Consulta, "UPDATE `users` SET Arma_%i=%i, Municion_%i=%i WHERE `Nombre` = '%s' AND `ID_User` = '%i';", i, PlayerInfo[ playerid ][ Armas ][ i ], PlayerInfo[ playerid ][ Municiones ][ i ], GetPName( playerid ), PlayerInfo[ playerid ][ pID ] );
        mysql_function_query( ConnectionHandle , Consulta , false, # , # ) ;
        }
        print("two");
        // ------------------------------------- //
        mysql_format( ConnectionHandle, Consulta, "UPDATE `users` SET Skin=%i, Dinero=%i, Interior=%i, VirWorld=%i ,NivelAdmin=%i ,Tutorial=%i ,Sexo=%i ,Edad=%i WHERE `Nombre` = '%s' AND `ID_User` = '%i';", PlayerInfo[ playerid ][ Skin ], PlayerInfo[ playerid ][ Dinero ], PlayerInfo[ playerid ][ Interior ], PlayerInfo[ playerid ][ VirWorld ],PlayerInfo[ playerid ][ Admin] ,PlayerInfo[ playerid ][ HizoTuto],PlayerInfo[ playerid ][Sexo],PlayerInfo[ playerid ][Edad],GetPName( playerid ),
        PlayerInfo[ playerid ][ pID ]);
        mysql_function_query( ConnectionHandle , Consulta , false, # , # ) ;
        print("three");

        // ------------------------------------- //
        mysql_format( ConnectionHandle, Consulta, "UPDATE `users` SET Faccion=%i ,Trabajo=%i ,Encendedor=%i ,Cigarros=%i , Banco=%i ,Nivel=%i ,Experiencia=%i WHERE `Nombre` = '%s' AND `ID_User` = '%i';",PlayerInfo[ playerid ][Faccion],PlayerInfo[ playerid ][Trabajo],PlayerInfo[ playerid ][Encendedor],PlayerInfo[ playerid ][Cigarros],PlayerInfo[ playerid ][Banco],PlayerInfo[ playerid ][Nivel],PlayerInfo[ playerid ][Experiencia], GetPName( playerid ),
        PlayerInfo[ playerid ][ pID ]);
        mysql_function_query( ConnectionHandle , Consulta , false, # , # ) ;
        print("four");

        // ------------------------------------- //
        mysql_format( ConnectionHandle, Consulta, "UPDATE `users` SET Payday=%i ,TiempoConeccion=%i,Jaileado=%i,TiempoJail=%i,Estrellas=%i WHERE `Nombre` = '%s' AND `ID_User` = '%i';",PlayerInfo[ playerid ][Payday] ,PlayerInfo[ playerid ][TiempoConectado],PlayerInfo[ playerid ][Jaileado],PlayerInfo[ playerid ][TiempoJail],PlayerInfo[ playerid ][Estrellas], GetPName( playerid ),
        PlayerInfo[ playerid ][ pID ]);
        mysql_function_query( ConnectionHandle , Consulta , false, # , # ) ;
        print("five");
    }
    return 1;
}
Compila, y dime que imprime.
Reply
#5

Esto imprimio la consola.

Код:
[12:23:06] one
[12:23:06] two
Reply
#6

pawn Код:
mysql_format( ConnectionHandle, Consulta, "UPDATE `users` SET Arma_%i=%i, Municion_%i=%i WHERE `Nombre` = '%s' AND `ID_User` = '%i';", i, PlayerInfo[ playerid ][ Armas ][ i ], i, PlayerInfo[ playerid ][ Municiones ][ i ], GetPName( playerid ), PlayerInfo[ playerid ][ pID ] ); //Sн no cambias йsto, no se almacenarбn correctamente las armas.
Йse detalle no puede causar crash, la variable estбtica es formateada asн que tampoco puede ser.
їProbaste empleando crashdetect?.
Reply
#7

Quote:
Originally Posted by WCrimson
Посмотреть сообщение
pawn Код:
mysql_format( ConnectionHandle, Consulta, "UPDATE `users` SET Arma_%i=%i, Municion_%i=%i WHERE `Nombre` = '%s' AND `ID_User` = '%i';", i, PlayerInfo[ playerid ][ Armas ][ i ], i, PlayerInfo[ playerid ][ Municiones ][ i ], GetPName( playerid ), PlayerInfo[ playerid ][ pID ] ); //Sн no cambias йsto, no se almacenarбn correctamente las armas.
Йse detalle no puede causar crash, la variable estбtica es formateada asн que tampoco puede ser.
їProbaste empleando crashdetect?.
Listo ahi le puse el crash detect y me salio esto en la consola.

Код:
[21:45:48] [debug] Run time error 4: "Array index out of bounds"
[21:45:48] [debug]  Accessing element at index 13 past array upper bound 12
[21:45:48] [debug] AMX backtrace:
[21:45:48] [debug] #0 00047b84 in ?? () from MySQL-R15.amx
[21:45:48] [debug] #1 00028a28 in ?? () from MySQL-R15.amx
[21:45:48] [debug] #2 0001b530 in ?? () from MySQL-R15.amx
[21:45:48] [debug] #3 0001a800 in ?? () from MySQL-R15.amx
[21:45:48] [debug] #4 00014c14 in ?? () from MySQL-R15.amx
[21:45:48] [debug] #5 000058ac in public OnPlayerConnect () from MySQL-R15.amx
[21:46:08] [debug] Run time error 4: "Array index out of bounds"
[21:46:08] [debug]  Accessing element at index 13 past array upper bound 12
[21:46:08] [debug] AMX backtrace:
[21:46:08] [debug] #0 000472a4 in public CargarUsuario () from MySQL-R15.amx
Reply
#8

pawn Код:
mysql_format( ConnectionHandle, Consulta, "UPDATE `users` SET Skin=%i, Dinero=%i, Interior=%i, VirWorld=%i ,NivelAdmin=%i ,Tutorial=%i ,Sexo=%i ,Edad=%i WHERE `Nombre` = '%s' AND `ID_User` = '%i';", PlayerInfo[ playerid ][ Skin ], PlayerInfo[ playerid ][ Dinero ], PlayerInfo[ playerid ][ Interior ], PlayerInfo[ playerid ][ VirWorld ],PlayerInfo[ playerid ][ Admin] ,PlayerInfo[ playerid ][ HizoTuto],PlayerInfo[ playerid ][Sexo],PlayerInfo[ playerid ][Edad],GetPName( playerid ),
        PlayerInfo[ playerid ][ pID ]);
        printf("Consulta: \"%s\"...\nTamaсo: %d...", Consulta, strlen(Consulta));
        mysql_function_query( ConnectionHandle , Consulta , false, # , # ) ;
        print("three");
Estas utilizando un array mas chico que el tamaсo de la consulta.
Reply
#9

El printf me salio en tamaсo:167
Reply
#10

Bueno creo que ahora anda digo creo porque andubo guardando dos o tres veces pero aun no estoy seguro,lo que hice fue cambiar el iduser que lo tenia en 12 (esta con autoincrement) lo puse en 1 nose si eso afectaba o no sinceramente xD
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)