Sziasztok! Írtam egy regisztráció rendszert a szerveremhez.. házi szerveren tökéletes mûködik.. mindent betöltésre kerül. Feltöltöttem hostra és nem mikor megyek a szerverre regisztrálni akkor egybõl kifagy a szerver és az egész regisztráció újrakezdõdik. Nos a kérdésem az lenne miért nem jó a betöltés ? Komolyan már nagyon elegem van ebbõl.. próbáltam sscanf bontással.. azzal házi szerveren betölti.. de hoston nem.. most ezzel is .. nem tudok mit csinálni tényleg.. elõre köszönöm a válaszokat!
#include a_samp
#include a_mysql
#include sscanf2
#include zcmd
#define MYSQL_HOST \"-\"
#define MYSQL_USER \"-\"
#define MYSQL_DATA \"-\"
#define MYSQL_PASS \"-\"
#define DIALOG_LOGIN 1
#define DIALOG_REGISTER 2
enum PlayerInfo
{
RegID,
Name[ 24 ],
password[ 128 ],
IP[ 16 ],
Admin,
Money,
Score,
Logged
}
new pInfo[ MAX_PLAYERS ][ PlayerInfo ];
new MySQL[ 1024 ];
public OnFilterScriptInit( )
{
mysql_debug( true );
mysql_connect( MYSQL_HOST, MYSQL_USER, MYSQL_DATA, MYSQL_PASS );
mysql_query( \"CREATE TABLE IF NOT EXISTS `accounts` (\" \\
\"`RegID` int(10) NOT NULL AUTO_INCREMENT,\" \\
\"`Name` varchar(24) NOT NULL,\" \\
\"`password` varchar(64) NOT NULL,\" \\
\"`IP` varchar(16) NULL,\" \\
\"`Admin` int(15) NULL,\" \\
\"`Money` int(15) NULL,\" \\
\"`Score` int(15) NULL,\" \\
\"PRIMARY KEY (`RegID`)\" \\
\") ENGINE=InnoDB DEFAULT CHARSET=latin1;\" );
if( mysql_ping( ) > -1 ) return printf( \":: MySQL :: Sikeresen csatlakoztál \'%s\' nevû adatbázishoz!\", MYSQL_DATA );
else printf( \":: MySQL :: Sikertelen csatlakozás \'%s\' nevû adatbázishoz!\", MYSQL_DATA );
return 1;
}
public OnFilterScriptExit( ) {
mysql_close( );
return 1;
}
public OnPlayerConnect( playerid )
{
new karakterlanc[ 228 + 1 ];
format( MySQL, sizeof( MySQL ), \"SELECT `Name` FROM `accounts` WHERE `Name` = \'%s\'\", pName( playerid ) );
mysql_query( MySQL );
mysql_store_result( );
if( mysql_num_rows( ) != 0 ) {
format( karakterlanc, sizeof( karakterlanc ), \"» Üdvözöllek %s!\\n» A karaktered neve már szerepel az adatbázisunban!\\n» Kérlek írd be a lenti ablakba a jelszód, majd klikkelj tovább a \'BELÉPÉS\' gombjára!\\n» Bejeletkezés után minden adat betöltésre kerül!\", pName( playerid ), pIP( playerid ) );
ShowPlayerDialog( playerid, DIALOG_LOGIN, DIALOG_STYLE_INPUT, \"{ffffff}Bejelentkezés\", karakterlanc, \"Belépés\", \"Mégsem\" );
} else {
format( karakterlanc, sizeof( karakterlanc ), \"» Üdvözöllek %s!\\n» A karaktered neve még nem szerepel az adatbázisunban!\\n» Kérlek írj be a lenti ablakba egy jelszót, majd klikkelj tovább a \'REGISZTRÁL\' gombjára!\\n» Regisztráció után minden adat mentésre kerül!\", pName( playerid ), pIP( playerid ) );
ShowPlayerDialog( playerid, DIALOG_REGISTER, DIALOG_STYLE_INPUT, \"{ffffff}Regisztráció\", karakterlanc, \"Regisztrál\", \"Mégsem\" ); }
mysql_free_result( );
return 1;
}
public OnPlayerDisconnect( playerid, reason )
{
SavePlayerStats( playerid );
return 1;
}
public OnDialogResponse( playerid, dialogid, response, listitem, inputtext[ ] )
{
if( dialogid == DIALOG_REGISTER ) {
if( !response ) return Kick( playerid );
if( response ) {
if( strlen( inputtext ) == 0 ) {
SendClientMessage( playerid, -1, \"Hiba: 3\" );
} else {
new pass[ 128 ]; MySQL[ 0 ] = EOS;
mysql_real_escape_string( inputtext, pass );
format( MySQL, sizeof( MySQL ), \"INSERT INTO `accounts` ( Name, password, IP, Money, Score, Admin ) VALUES( \'%s\', \'%s\', \'%s\', \'5000\', \'0\', \'0\' )\", pName( playerid ), pass, pIP( playerid ) );
mysql_query( MySQL );
new karakterlanc[ 328 + 1 ];
//format( karakterlanc, sizeof( karakterlanc ), \":: {51ff00}REGISZTRÁCIÓ {ffffff}:: {%06x}%s {949494}regisztrált a szerverre, összesen {ff0000}%i {949494}játékos található az adatbázisban!\", GetPlayerColor( playerid ) >>> 8, pName( playerid ), mysql_insert_id( ) );
format( karakterlanc, sizeof( karakterlanc ), \":: REGISZTRÁCIÓ :: %s regisztrált a szerverre, összesen %i játékos található az adatbázisban!\", pName( playerid ), mysql_insert_id( ) );
SendClientMessageToAll( -1, karakterlanc );
pInfo[ playerid ][ Logged ] = 1;
LoadPlayerStats( playerid );
SendClientMessage( playerid, -1, \"» {1eff00}Sikeresen regisztráltál{ffffff}!\" ); } } }
if( dialogid == DIALOG_LOGIN ) {
if( !response ) return Kick( playerid );
if( response ) {
if( strlen( inputtext ) == 0 ) {
SendClientMessage( playerid, -1, \"Hiba: 2\" );
} else {
MySQL[ 0 ] = EOS;
format( MySQL, sizeof( MySQL ), \"SELECT `password` FROM `accounts` WHERE `Name` = \'%s\' AND `password` = \'%s\'\", pName( playerid ), inputtext );
mysql_query( MySQL );
mysql_store_result( );
if( mysql_num_rows( ) != 0 ) {
SendClientMessage( playerid, -1, \"» {1eff00}Sikeresen bejelentkeztél{ffffff}!\" );
pInfo[ playerid ][ Logged ] = 1;
LoadPlayerStats( playerid );
} else {
SendClientMessage( playerid, -1, \"Hiba: 1\" );
} } } }
return 1;
}
stock LoadPlayerStats( playerid )
{
format( MySQL, sizeof( MySQL ), \"SELECT `Money`, `Score`, `Admin` FROM `accounts` WHERE `Name` = \'%s\'\", pName( playerid ) );
mysql_query( MySQL );
mysql_store_result( );
if( mysql_fetch_row_format( MySQL ) ) { sscanf( MySQL, \"p<|>iii\", pInfo[ playerid ][ Money ], pInfo[ playerid ][ Score ], pInfo[ playerid ][ Admin ] ); }
mysql_free_result( );
GivePlayerMoney( playerid, pInfo[ playerid ][ Money ] );
SetPlayerScore( playerid, pInfo[ playerid ][ Score ] );
return 1;
}
stock SavePlayerStats( playerid )
{
if( pInfo[ playerid ][ Logged ] == 1 ) {
format( MySQL, sizeof( MySQL ), \"UPDATE `accounts` SET `Money` = \'%i\', `Score` = \'%i\', `Admin` = \'%i\' WHERE `Name` = \'%s\'\", GetPlayerMoney( playerid), GetPlayerScore( playerid ), GetPVarInt( playerid, \"Admin\" ), pName( playerid ) );
mysql_query( MySQL );
mysql_free_result( ); }
return 1;
}
stock pName( playerid )
{
new name[ MAX_PLAYER_NAME ];
GetPlayerName( playerid, name, sizeof name );
return name;
}
stock pIP( playerid )
{
new ip[ MAX_PLAYER_NAME ];
GetPlayerIp( playerid, ip, sizeof ip );
return ip;
}
Sziasztok! Írtam egy regisztráció rendszert a szerveremhez.. házi szerveren tökéletes mûködik.. mindent betöltésre kerül. Feltöltöttem hostra és nem mikor megyek a szerverre regisztrálni akkor egybõl kifagy a szerver és az egész regisztráció újrakezdõdik. Nos a kérdésem az lenne miért nem jó a betöltés ? Komolyan már nagyon elegem van ebbõl.. próbáltam sscanf bontással.. azzal házi szerveren betölti.. de hoston nem.. most ezzel is .. nem tudok mit csinálni tényleg.. elõre köszönöm a válaszokat!
#include a_samp
#include a_mysql
#include sscanf2
#include zcmd
#define MYSQL_HOST \"-\"
#define MYSQL_USER \"-\"
#define MYSQL_DATA \"-\"
#define MYSQL_PASS \"-\"
#define DIALOG_LOGIN 1
#define DIALOG_REGISTER 2
enum PlayerInfo
{
RegID,
Name[ 24 ],
password[ 128 ],
IP[ 16 ],
Admin,
Money,
Score,
Logged
}
new pInfo[ MAX_PLAYERS ][ PlayerInfo ];
new MySQL[ 1024 ];
public OnFilterScriptInit( )
{
mysql_debug( true );
mysql_connect( MYSQL_HOST, MYSQL_USER, MYSQL_DATA, MYSQL_PASS );
mysql_query( \"CREATE TABLE IF NOT EXISTS `accounts` (\" \\
\"`RegID` int(10) NOT NULL AUTO_INCREMENT,\" \\
\"`Name` varchar(24) NOT NULL,\" \\
\"`password` varchar(64) NOT NULL,\" \\
\"`IP` varchar(16) NULL,\" \\
\"`Admin` int(15) NULL,\" \\
\"`Money` int(15) NULL,\" \\
\"`Score` int(15) NULL,\" \\
\"PRIMARY KEY (`RegID`)\" \\
\") ENGINE=InnoDB DEFAULT CHARSET=latin1;\" );
if( mysql_ping( ) > -1 ) return printf( \":: MySQL :: Sikeresen csatlakoztál \'%s\' nevû adatbázishoz!\", MYSQL_DATA );
else printf( \":: MySQL :: Sikertelen csatlakozás \'%s\' nevû adatbázishoz!\", MYSQL_DATA );
return 1;
}
public OnFilterScriptExit( ) {
mysql_close( );
return 1;
}
public OnPlayerConnect( playerid )
{
new karakterlanc[ 228 + 1 ];
format( MySQL, sizeof( MySQL ), \"SELECT `Name` FROM `accounts` WHERE `Name` = \'%s\'\", pName( playerid ) );
mysql_query( MySQL );
mysql_store_result( );
if( mysql_num_rows( ) != 0 ) {
format( karakterlanc, sizeof( karakterlanc ), \"» Üdvözöllek %s!\\n» A karaktered neve már szerepel az adatbázisunban!\\n» Kérlek írd be a lenti ablakba a jelszód, majd klikkelj tovább a \'BELÉPÉS\' gombjára!\\n» Bejeletkezés után minden adat betöltésre kerül!\", pName( playerid ), pIP( playerid ) );
ShowPlayerDialog( playerid, DIALOG_LOGIN, DIALOG_STYLE_INPUT, \"{ffffff}Bejelentkezés\", karakterlanc, \"Belépés\", \"Mégsem\" );
} else {
format( karakterlanc, sizeof( karakterlanc ), \"» Üdvözöllek %s!\\n» A karaktered neve még nem szerepel az adatbázisunban!\\n» Kérlek írj be a lenti ablakba egy jelszót, majd klikkelj tovább a \'REGISZTRÁL\' gombjára!\\n» Regisztráció után minden adat mentésre kerül!\", pName( playerid ), pIP( playerid ) );
ShowPlayerDialog( playerid, DIALOG_REGISTER, DIALOG_STYLE_INPUT, \"{ffffff}Regisztráció\", karakterlanc, \"Regisztrál\", \"Mégsem\" ); }
mysql_free_result( );
return 1;
}
public OnPlayerDisconnect( playerid, reason )
{
SavePlayerStats( playerid );
return 1;
}
public OnDialogResponse( playerid, dialogid, response, listitem, inputtext[ ] )
{
if( dialogid == DIALOG_REGISTER ) {
if( !response ) return Kick( playerid );
if( response ) {
if( strlen( inputtext ) == 0 ) {
SendClientMessage( playerid, -1, \"Hiba: 3\" );
} else {
new pass[ 128 ]; MySQL[ 0 ] = EOS;
mysql_real_escape_string( inputtext, pass );
format( MySQL, sizeof( MySQL ), \"INSERT INTO `accounts` ( Name, password, IP, Money, Score, Admin ) VALUES( \'%s\', \'%s\', \'%s\', \'5000\', \'0\', \'0\' )\", pName( playerid ), pass, pIP( playerid ) );
mysql_query( MySQL );
new karakterlanc[ 328 + 1 ];
//format( karakterlanc, sizeof( karakterlanc ), \":: {51ff00}REGISZTRÁCIÓ {ffffff}:: {%06x}%s {949494}regisztrált a szerverre, összesen {ff0000}%i {949494}játékos található az adatbázisban!\", GetPlayerColor( playerid ) >>> 8, pName( playerid ), mysql_insert_id( ) );
format( karakterlanc, sizeof( karakterlanc ), \":: REGISZTRÁCIÓ :: %s regisztrált a szerverre, összesen %i játékos található az adatbázisban!\", pName( playerid ), mysql_insert_id( ) );
SendClientMessageToAll( -1, karakterlanc );
pInfo[ playerid ][ Logged ] = 1;
LoadPlayerStats( playerid );
SendClientMessage( playerid, -1, \"» {1eff00}Sikeresen regisztráltál{ffffff}!\" ); } } }
if( dialogid == DIALOG_LOGIN ) {
if( !response ) return Kick( playerid );
if( response ) {
if( strlen( inputtext ) == 0 ) {
SendClientMessage( playerid, -1, \"Hiba: 2\" );
} else {
MySQL[ 0 ] = EOS;
format( MySQL, sizeof( MySQL ), \"SELECT `password` FROM `accounts` WHERE `Name` = \'%s\' AND `password` = \'%s\'\", pName( playerid ), inputtext );
mysql_query( MySQL );
mysql_store_result( );
if( mysql_num_rows( ) != 0 ) {
SendClientMessage( playerid, -1, \"» {1eff00}Sikeresen bejelentkeztél{ffffff}!\" );
pInfo[ playerid ][ Logged ] = 1;
LoadPlayerStats( playerid );
} else {
SendClientMessage( playerid, -1, \"Hiba: 1\" );
} } } }
return 1;
}
stock LoadPlayerStats( playerid )
{
format( MySQL, sizeof( MySQL ), \"SELECT `Money`, `Score`, `Admin` FROM `accounts` WHERE `Name` = \'%s\'\", pName( playerid ) );
mysql_query( MySQL );
mysql_store_result( );
if( mysql_fetch_row_format( MySQL ) ) { sscanf( MySQL, \"p<|>iii\", pInfo[ playerid ][ Money ], pInfo[ playerid ][ Score ], pInfo[ playerid ][ Admin ] ); }
mysql_free_result( );
GivePlayerMoney( playerid, pInfo[ playerid ][ Money ] );
SetPlayerScore( playerid, pInfo[ playerid ][ Score ] );
return 1;
}
stock SavePlayerStats( playerid )
{
if( pInfo[ playerid ][ Logged ] == 1 ) {
format( MySQL, sizeof( MySQL ), \"UPDATE `accounts` SET `Money` = \'%i\', `Score` = \'%i\', `Admin` = \'%i\' WHERE `Name` = \'%s\'\", GetPlayerMoney( playerid), GetPlayerScore( playerid ), GetPVarInt( playerid, \"Admin\" ), pName( playerid ) );
mysql_query( MySQL );
mysql_free_result( ); }
return 1;
}
stock pName( playerid )
{
new name[ MAX_PLAYER_NAME ];
GetPlayerName( playerid, name, sizeof name );
return name;
}
stock pIP( playerid )
{
new ip[ MAX_PLAYER_NAME ];
GetPlayerIp( playerid, ip, sizeof ip );
return ip;
}