SA-MP Forums Archive
Se cierra el samp server al guardar mysql - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: Non-English (https://sampforum.blast.hk/forumdisplay.php?fid=9)
+--- Forum: Languages (https://sampforum.blast.hk/forumdisplay.php?fid=33)
+---- Forum: Español/Spanish (https://sampforum.blast.hk/forumdisplay.php?fid=29)
+---- Thread: Se cierra el samp server al guardar mysql (/showthread.php?tid=443085)



Se cierra el samp server al guardar mysql - -[R]hysi- - 10.06.2013

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.


Respuesta: Se cierra el samp server al guardar mysql - [DOG]irinel1996 - 10.06.2013

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.


Respuesta: Se cierra el samp server al guardar mysql - -[R]hysi- - 10.06.2013

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.


Respuesta: Se cierra el samp server al guardar mysql - [DOG]irinel1996 - 10.06.2013

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.


Respuesta: Se cierra el samp server al guardar mysql - -[R]hysi- - 10.06.2013

Esto imprimio la consola.

Код:
[12:23:06] one
[12:23:06] two



Respuesta: Se cierra el samp server al guardar mysql - WCrimson - 10.06.2013

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?.


Respuesta: Se cierra el samp server al guardar mysql - -[R]hysi- - 11.06.2013

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



Respuesta: Se cierra el samp server al guardar mysql - DesingMyCry - 11.06.2013

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.


Respuesta: Se cierra el samp server al guardar mysql - -[R]hysi- - 11.06.2013

El printf me salio en tamaсo:167


Respuesta: Se cierra el samp server al guardar mysql - -[R]hysi- - 13.06.2013

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