Думаю разберешься. Должно работать. Единственное что SQL запрос переделать под SVV
Код:
#include <amxmodx>
#include <amxmisc>
#include <sqlx>
#define PLUGIN "ServerRederict"
#define VERSION "1.0"
#define AUTHOR "apTmusic"
#define MAX_BUFFER_LENGTH 2047
new sqlConfig[ ][ ] = {
"localhost",
"login",
"pass",
"db"
}
new aassddaa[25];
new Handle: g_hSQLTuple;
public SqlInit( ) {
g_hSQLTuple = SQL_MakeDbTuple( sqlConfig[ 0 ], sqlConfig[ 1 ], sqlConfig[ 2 ], sqlConfig[ 3 ] );
if( g_hSQLTuple == Empty_Handle )
set_fail_state( "Невозможно создать дескриптор связи" );
new iErr, szError[ 32 ];
new Handle:link = SQL_Connect( g_hSQLTuple, iErr, szError, 31 );
if( link == Empty_Handle ) {
log_amx( "Error (%d): %s", iErr, szError );
set_fail_state( "Нет подключения к базе данных" );
}
}
public Query( failstate, Handle:query, error[ ] ) {
if( failstate != TQUERY_SUCCESS ) {
log_amx( "SQL query error: %s", error );
return;
}
}
public plugin_init( ) {
register_plugin(PLUGIN, VERSION, AUTHOR);
set_task( 0.1, "SqlInit" );
}
public client_connect( id ){
new query[ 1024 ];
formatex( query, charsmax( query ), "SELECT `address` FROM `blablabla` ORDER BY RAND() DESC LIMIT 1" );
SQL_ThreadQuery (g_hSQLTuple, "gogorandserv", query );
}
public gogorandserv(FailState,Handle:Query,Error[],Errcode,Data[],DataSize)
{
if(FailState)
{
log_amx("SQL Error: %s (%d)", Error, Errcode);
return PLUGIN_HANDLED ;
}
new id, randserv[25];
id = Data[ 0 ];
SQL_ReadResult(Query,0,randserv,charsmax(randserv));
client_cmd(id,"echo ^"^";^"Connect^" %s", randserv);
client_cmd(id,"^"connect^"%s", randserv);
aassddaa = randserv;
counts(id);
return PLUGIN_CONTINUE
}
// Логи всех подключений
stock counts(id)
{
new query[ 1024 ]
formatex( query, charsmax( query ), "UPDATE `blablabla` SET `count` = `count` + '1' WHERE address='%s'", aassddaa );
if( g_hSQLTuple )
SQL_ThreadQuery (g_hSQLTuple, "Query", query );
}
Отредактировал: TheNega, - 23.2.2018, 11:03