I have a problem with my xp system .
The xp.. don't save.. sometimes .
PHP Code:
public SqlInit( )
{
new szHost[ 32 ]
new szUser[ 32 ]
new szPass[ 32 ]
new szDB[ 32 ]
get_pcvar_string( g_pcvarHost, szHost, charsmax( szHost ) )
get_pcvar_string( g_pcvaruUser, szUser, charsmax( szUser ) )
get_pcvar_string( g_pcvarPass, szPass, charsmax( szPass ) )
get_pcvar_string( g_pcvarDB, szDB, charsmax( szDB ) )
g_SqlTuple = SQL_MakeDbTuple( szHost, szUser, szPass, szDB )
new ErrorCode
new Handle:SqlConnection = SQL_Connect( g_SqlTuple, ErrorCode, g_Error, charsmax( g_Error ) )
if( SqlConnection == Empty_Handle )
set_fail_state( g_Error )
new Handle:Queries
Queries = SQL_PrepareQuery( SqlConnection, "CREATE TABLE IF NOT EXISTS %s ( nick VARCHAR( 32 ) PRIMARY KEY, level INT( 11 ), xp INT( 11 ), strenghtpower INT( 11 ), agilitypower INT( 11 ), healthpower INT( 11 ), levitationpower INT( 11 ), useralreadyhavepower INT( 11 ), ultimatepower INT( 11 ), coins INT( 11 ))", SQL_TABLE )
if( !SQL_Execute( Queries ) )
{
SQL_QueryError( Queries, g_Error, charsmax( g_Error ) )
set_fail_state( g_Error )
}
SQL_FreeHandle( Queries )
SQL_FreeHandle( SqlConnection )
}
public plugin_end( ) {
SQL_FreeHandle( g_SqlTuple )
}
public SaveData(id)
{
new szTemp[ 512 ]
format( szTemp, charsmax( szTemp ), "UPDATE `%s` SET `level` = '%d' , `xp` = '%d' , `strenghtpower` = '%d' , `agilitypower` = '%d' , `healthpower` = '%d' , `levitationpower` = '%d' , `useralreadyhavepower` = '%d' , `ultimatepower` = '%d' , `coins` = '%d' WHERE `%s`.`nick` = '%s';", SQL_TABLE, Level [ id ], eXP[id], StrenghtPower [ id ], AgilityPower [ id ], HealthPower [ id ], LevitationPower [ id ], UserAlreadyHavePower [ id ], UltimatePower [ id ], Coins [ id ], SQL_TABLE, g_szName[ id ] )
SQL_ThreadQuery( g_SqlTuple, "IgnoreHandle", szTemp )
}
public LoadData( id )
{
new Data[ 1 ]
Data[ 0 ] = id
new szTemp[ 512 ]
format( szTemp, charsmax( szTemp ), "SELECT level,xp,strenghtpower,agilitypower,healthpower,levitationpower,useralreadyhavepower,ultimatepower,coins FROM `%s` WHERE (`%s`.`nick` = '%s');", SQL_TABLE, SQL_TABLE, g_szName[ id ] )
SQL_ThreadQuery( g_SqlTuple, "RegisterClient", szTemp, Data, 1 )
}
public RegisterClient( FailState, Handle:Query, Error[ ], Errcode, Data[ ], DataSize )
{
if( SQL_IsFail( FailState, Errcode, Error ) )
return PLUGIN_HANDLED_MAIN
new id
id = Data[ 0 ]
if( SQL_NumResults( Query ) < 1 )
{
new szTemp[ 512 ]
format( szTemp, charsmax( szTemp ), "INSERT INTO %s (nick,level,xp,strenghtpower,agilitypower,healthpower,levitationpower,useralreadyhavepower,ultimatepower,coins) VALUES('%s', '0', '0', '0', '0', '0', '0', '0', '0', '0' );", SQL_TABLE, g_szName[ id ], Level [ id ], eXP [ id ], StrenghtPower [ id ], AgilityPower [ id ], HealthPower [ id ], LevitationPower [ id ], UserAlreadyHavePower [ id ], UltimatePower [ id ], Coins [ id ] )
SQL_ThreadQuery( g_SqlTuple, "IgnoreHandle", szTemp )
}
else
{
Level[id] = SQL_ReadResult( Query, 0 )
eXP[ id ] = SQL_ReadResult( Query, 1 )
StrenghtPower [ id ] = SQL_ReadResult( Query, 2 )
AgilityPower [ id ] = SQL_ReadResult( Query, 3 )
HealthPower [ id ] = SQL_ReadResult( Query, 4 )
LevitationPower [ id ] = SQL_ReadResult( Query, 5 )
UserAlreadyHavePower [ id ] = SQL_ReadResult( Query, 6 )
UltimatePower [ id ] = SQL_ReadResult( Query, 7 )
Coins [ id ] = SQL_ReadResult( Query, 8 )
}
return PLUGIN_CONTINUE
}
public IgnoreHandle( FailState, Handle:Query, Error[ ], Errcode, Data[ ], DataSize )
SQL_FreeHandle( Query )
SQL_IsFail( const FailState, const Errcode, const Error[ ] ) {
if( FailState == TQUERY_CONNECT_FAILED )
{
log_amx( "[Error] Could not connect to SQL database: %s", Error )
return true
}
else if( FailState == TQUERY_QUERY_FAILED )
{
log_amx( "[Error] Query failed: %s", Error )
return true
}
else if( Errcode )
{
log_amx( "[Error] Error on query: %s", Error )
return true
}
return false
}
On nvault.. same problem .. why ?