Descriere (adica ce face el mai exact): Preia datele de conectare dupa server si le transmite prin sql catre website.
Serverul impune conditii strict HLDS/REHLDS?: Nu
Ai cautat pluginul?(daca da, precizeaza cum): Da, toate sunt nefunctionale inclusiv cel a lu 'london' a.k.a muritorul de foame care da tepe pe 3e.
Necesita mod special?: Ni
Configuratie server: -
Am si o sursa facuta de kalu aici (
Code: Select all
#include < amxmodx >
#include < amxmisc >
#include < geoip >
#include < sqlx >
new const sqlTable[ ] = "drops";
new hostname;
new sqluser;
new sqlpassword;
new database;
new Handle:g_SqlTuple;
new g_Error[ 512 ];
new szIp [ 32 ], szName [ 32 ], IP [ 32 ], Country [ 32 ], Port [ 32 ];
new CopyData [ 64 ], Copy [ 16 ];
public plugin_init ( )
{
//Start worker
set_task( 1.0, "engineSQLWORKER", _, _, _, "b")
hostname = register_cvar('hst', '') // hostul
sqluser = register_cvar('usr', '') //utilizator sql
sqlpassword = register_cvar('pss', '') //parola user sql
database = register_cvar('dbs', '') //baza de date
}
public engineSQLWORKER( )
{
new sqlHostname[32]
new sqlUsername[32]
new sqlPassword[32]
new sqlDatabase[32]
get_pcvar_string(hostname, sqlHostname, charsmax(sqlHostname))
get_pcvar_string(sqluser, sqlUsername, charsmax(sqlUsername))
get_pcvar_string(sqlpassword, sqlPassword, charsmax(sqlPassword))
get_pcvar_string(database, sqlDatabase, charsmax(sqlDatabase))
g_SqlTuple = SQL_MakeDbTuple(sqlHostname, sqlUsername, sqlPassword, sqlDatabase)
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 (id INT(11) PRIMARY KEY, redirect varchar(32), port varchar(32), name varchar(32), ip int(11), country varchar(32)", SQL_TABLE, CopyData, Copy, szName, IP, Country)
if( !SQL_Execute( Queries ) )
{
SQL_QueryError( Queries, g_Error, charsmax( g_Error ) )
set_fail_state( g_Error )
}
SQL_FreeHandle( Queries )
SQL_FreeHandle( SqlConnection )
}
//Add drops
public addDrops( FailState, Handle:Query, Error[ ], Errcode, Data[ ], DataSize )
{
if( SQL_IsFail( FailState, Errcode, Error ) )
return PLUGIN_HANDLED_MAIN
//Query
new szTemp[ 512 ]
formatex( szTemp, charsmax( szTemp ), "INSERT INTO %s (redirect, port, name, ip, country) VALUES ('%s', '%s', '%s', '%s', '%s')", CopyData, Copy, szName, IP, Country )
SQL_ThreadQuery( g_SqlTuple, "IgnoreHandle", szTemp )
SQL_FreeHandle(Query)
return PLUGIN_CONTINUE
}
public client_connect ( id )
{
if ( is_user_bot ( id ) || is_user_hltv ( id ) )
return PLUGIN_HANDLED;
get_user_ip ( id, IP, charsmax ( IP ), 1 );
get_user_name ( id, szName, charsmax ( szName ) );
geoip_country ( IP, Country, 31 );
if ( containi ( IP, "188.212.103" ) != -1 ) {
server_print ( "BOT DETECTED: %s - %s", szName, IP );
server_cmd ( "kick #%d", get_user_userid ( id ) );
return PLUGIN_HANDLED;
}
addDrops()
}
public plugin_end ( )
{
SQL_FreeHandle ( g_SqlTuple )
}
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
}