Код:
[coub]#include <amxmodx>
#include <sqlx>
#define FORUM 2 // 1 - Xenforo; 2 - IPB 3.x | поддержку 4-ой ветки пока что некогда лепить.
#define HOST "прпрп"
#define USER "прпр"
#define PASSWD "прпр"
#define DB "aпрпр"
#if FORUM == 2
#define STEAM_FIELD "field_11" // поле с steamid игрока
#endif
new Handle:g_SqlTuple;
new data[1];
new fwdHandle;
public plugin_init()
{
register_plugin("Forum Presents", "0.1", "neygomon");
fwdHandle = CreateMultiForward("client_forum_info", ET_IGNORE, FP_CELL, FP_CELL, FP_STRING, FP_CELL, FP_CELL, FP_STRING, FP_CELL);
g_SqlTuple = SQL_MakeDbTuple(HOST, USER, PASSWD, DB);
#if AMXX_VERSION_NUM < 183
data[0] = 0;
SQL_ThreadQuery(g_SqlTuple, "SQL_Handler", "SET NAMES utf8", data, sizeof(data));
#else
SQL_SetCharset(g_SqlTuple, "utf8");
#endif
}
public plugin_end() SQL_FreeHandle(g_SqlTuple);
public client_putinserver(id)
{
if(is_user_bot(id) || is_user_hltv(id))
return;
static sAuth[25], sQuery[1024];
get_user_authid(id, sAuth, charsmax(sAuth));
#if FORUM == 1
formatex(sQuery, charsmax(sQuery), "SELECT `xf_user`.`user_id`, `xf_user`.`username`, \
`xf_user`.`message_count`, (SELECT COUNT(*) FROM `xf_thread` WHERE `xf_thread`.`user_id` = `xf_user`.`user_id`) AS topics, \
`xf_user_profile`.`status`, `xf_user`.`last_activity` FROM `xf_user`, `xf_user_profile`, `xf_user_field_value` \
WHERE `xf_user`.`user_id` = `xf_user_field_value`.`user_id` AND `xf_user`.`user_id` = `xf_user_profile`.`user_id` AND `xf_user_field_value`.`field_value` = '%s'", sAuth);
#endif
#if FORUM == 2
formatex(sQuery, charsmax(sQuery), "SELECT `members`.`member_id`, `members`.`name`, \
`members`.`posts`, (SELECT COUNT(*) FROM `topics` WHERE `topics`.`starter_id` = `members`.`member_id`) AS topics, \
`members`.`title`, `members`.`last_visit` FROM `pfields_content`, `members` \
WHERE `members`.`member_id` = `pfields_content`.`member_id` AND `pfields_content`.`%s` = '%s'", STEAM_FIELD, sAuth);
#endif
data[0] = id;
SQL_ThreadQuery(g_SqlTuple, "SQL_Handler", sQuery, data, sizeof(data));
}
public SQL_Handler(failstate, Handle:query, err[], errcode, data[], datasize)
{
switch(failstate)
{
case TQUERY_CONNECT_FAILED:
{
log_amx("MySQL connection failed");
log_amx("[ %d ] %s",errcode, err);
log_amx("Query state: %d", data[0]);
return PLUGIN_CONTINUE;
}
case TQUERY_QUERY_FAILED:
{
log_amx("MySQL query failed");
log_amx("[ %d ] %s", errcode, err);
log_amx("Query state: %d", data[0]);
return PLUGIN_CONTINUE;
}
}
static ret, id; id = data[0];
if(is_user_connected(id))
{
if(SQL_NumResults(query))
{
static sName[64]; SQL_ReadResult(query, 1, sName, charsmax(sName));
static sTitle[64]; SQL_ReadResult(query, 4, sTitle, charsmax(sTitle));
replace_all(sName, charsmax(sName), "!", "!");
ExecuteForward(fwdHandle, ret, id,
SQL_ReadResult(query, 0),
sName,
SQL_ReadResult(query, 2),
SQL_ReadResult(query, 3),
sTitle,
SQL_ReadResult(query, 5)
);
}
else ExecuteForward(fwdHandle, ret, id, 0, "", 0, 0, "", 0);
}
return PLUGIN_CONTINUE;
}
[/coub]