#include <amxmodx>
#include <sqlx>
#define PLUGIN "New Plug-In"
#define VERSION "0.Ox"
#define AUTHOR "Hades Ownage"
new const SQL_TABLE[ ] = "furienxpmod";
new g_pcvarHost;
new g_pcvaruUser;
new g_pcvarPass;
new g_pcvarDB;
new Handle:g_SqlTuple;
new g_Error[ 512 ];
public plugin_init() {
register_plugin(PLUGIN, VERSION, AUTHOR)
g_pcvarHost = register_cvar( "furien_sql_host", "" )
g_pcvaruUser = register_cvar( "furien_sql_user", "" )
g_pcvarPass = register_cvar( "furien_sql_pass", "" )
g_pcvarDB = register_cvar( "furien_sql_db", "" )
set_task( 0.1, "SqlInit" )
}
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
}