In plugin's version i do have JB Packs are saved in mysql by players IP adress.
Some players complaining that JB Packs they earned by killing CTs disappeared. JB Packs not disappearing periodically, in logs i cant find any errors. So i would like to ask you to look at the code and tell me if there's anything wrong why JB packs could disappear.
Code:
new Handle:g_hDbTuple;
new p_DbHost, p_DbUser, p_DbPass, p_DbName;
public plugin_init()
{
p_DbHost = register_cvar( "amx_packs_dbhost", "xxx" );
p_DbUser = register_cvar( "amx_packs_dbuser", "xxx" );
p_DbPass = register_cvar( "amx_packs_dbpass", "xxx" );
p_DbName = register_cvar( "amx_packs_dbname", "xxx" );
SQL_CreateDbTuple( );
}
public plugin_end( )
{
SQL_SaveAllDbTuple( );
if ( g_hDbTuple )
{
SQL_FreeHandle( g_hDbTuple );
}
}
public client_disconnect( id )
{
SQL_SaveDbTuple( id );
}
public client_putinserver( id )
{
SQL_LoadDbTuple( id );
}
SQL_CreateDbTuple( )
{
new szDBHost[ 64 ], szDBUser[ 32 ], szDBPass[ 32 ], szDBName[ 32 ], szQuery[ 256 ];
get_pcvar_string( p_DbHost, szDBHost, charsmax( szDBHost ) );
get_pcvar_string( p_DbUser, szDBUser, charsmax( szDBUser ) );
get_pcvar_string( p_DbPass, szDBPass, charsmax( szDBPass ) );
get_pcvar_string( p_DbName, szDBName, charsmax( szDBName ) );
g_hDbTuple = SQL_MakeDbTuple( szDBHost, szDBUser, szDBPass, szDBName, 0 );
format( szQuery, charsmax( szQuery ), "CREATE TABLE IF NOT EXISTS nwk_packs (zaidejo_ip varchar(32) NOT NULL default '', zaidejo_paketai int(16) DEFAULT NULL) TYPE=MyISAM;" );
SQL_ThreadQuery( g_hDbTuple, "QueryHandler", szQuery );
}
SQL_SaveAllDbTuple( )
{
new players[ 32 ], pnum, i;
get_players( players, pnum );
for ( i = 0; i < pnum; i++ )
{
SQL_SaveDbTuple( players[ i ] );
}
}
SQL_SaveDbTuple( id )
{
if ( g_jbpacks[ id ] > 0 )
{
new user_ip[ 32 ], szQuery[ 256 ];
get_user_ip( id, user_ip, charsmax( user_ip ), 1 );
format( szQuery, charsmax( szQuery ), "UPDATE nwk_packs SET zaidejo_paketai = '%d' WHERE zaidejo_ip = '%s';", g_jbpacks[ id ], user_ip );
SQL_ThreadQuery( g_hDbTuple, "QueryHandler", szQuery );
}
}
SQL_LoadDbTuple( id )
{
new user_ip[ 32 ], szQuery[ 256 ], data[ 1 ];
get_user_ip( id, user_ip, charsmax( user_ip ), 1 );
data[ 0 ] = id;
format( szQuery, charsmax( szQuery ), "SELECT zaidejo_ip, zaidejo_paketai FROM nwk_packs WHERE zaidejo_ip = '%s';", user_ip );
SQL_ThreadQuery( g_hDbTuple, "QuerySelect", szQuery, data, 1 );
}
public QuerySelect( failstate, Handle:query, error[ ], errnum, data[ ], size, Float:queuetime )
{
if ( ( failstate == TQUERY_QUERY_FAILED ) || ( failstate == TQUERY_CONNECT_FAILED ) )
{
server_print( "* MySQL failstate: %s [%d]", error, errnum );
return;
}
new id, user_ip[ 32 ];
id = data[ 0 ];
get_user_ip( id, user_ip, charsmax( user_ip ), 1 );
if ( !SQL_NumResults( query ) )
{
new szQuery[ 256 ];
format( szQuery, charsmax( szQuery ), "INSERT INTO nwk_packs (zaidejo_ip, zaidejo_paketai) VALUES ('%s', '0');", user_ip );
SQL_ThreadQuery( g_hDbTuple, "QueryHandler", szQuery );
g_jbpacks[ id ] = get_pcvar_num( g_startjp );
}
else
{
g_jbpacks[ id ] = SQL_ReadResult( query, 1 );
}
}
public QueryHandler( failstate, Handle:query, error[ ], errnum, data[ ], size, Float:queuetime )
{
if ( ( failstate == TQUERY_QUERY_FAILED ) || ( failstate == TQUERY_CONNECT_FAILED ) )
{
server_print( "* MySQL failstate: %s [%d]", error, errnum );
}
}