Код:
enum _:PlData
{
gId,
name,
AK_kill,
AK_up,
M4A1_kill,
M4A1_up,
AWP_kill,
AWP_up,
BONUS,
TIME_IN_GAME,
TIME_VIP_GAME
};
new UserData[33][PlData];
new Handle:g_SqlTuple;
new g_Error[512];
new gTableName,gHost,gUser,gPassword,gDbName
new bool:player_register[33];
public plugin_init() {
register_plugin(PLUGIN, VERSION, AUTHOR);
gHost = register_cvar( "mysql_host", "");
gUser = register_cvar( "mysql_user", "");
gPassword = register_cvar( "mysql_password", "");
gDbName = register_cvar( "mysql_db_name", "");
gTableName = register_cvar( "mysql_table_name", "");
set_task(0.1,"sql_init",0);
}
public client_putinserver(id)
{
for(new i = 0; i<PlData ; i++)
UserData[id][i] = 0;
load_data(id);
if (player_register[id])
{
set_task(60.0,"bonus_time",id,_,_,"b")
}
}
public sql_init()
{
new szTableName[64],szHost[64],szUser[64],szPassword[64],szDbName[64],ErrorCode;
get_pcvar_string(gTableName,szTableName,63);
get_pcvar_string(gHost,szHost,63);
get_pcvar_string(gUser,szUser,63);
get_pcvar_string(gPassword,szPassword,63);
get_pcvar_string(gDbName,szDbName,63);
g_SqlTuple = SQL_MakeDbTuple(szHost,szUser,szPassword,szDbName);
new Handle:SqlConnection = SQL_Connect(g_SqlTuple,ErrorCode,g_Error,511)
if(SqlConnection == Empty_Handle)
set_fail_state(g_Error);
SQL_FreeHandle(SqlConnection);
}
public plugin_end()
{
if(g_SqlTuple != Empty_Handle)
SQL_FreeHandle(g_SqlTuple);
}
public load_data(id)
{
new szName[33]
get_user_name(id, szName, 34)
new str[33]
new pass[33]
new szTableName[32],ErrorCode;
new Handle:SqlConnection = SQL_Connect(g_SqlTuple,ErrorCode,g_Error,511)
SQL_QuoteString(SqlConnection, szName, 34, szName);
get_pcvar_string(gTableName,szTableName,31);
if(SqlConnection == Empty_Handle)
{
log_amx(g_Error);
return ;
}
new Handle:Query = SQL_PrepareQuery(SqlConnection,"SELECT pass FROM %s WHERE name = '%s'",szTableName,szName)
SQL_Execute(Query)
if(!SQL_Execute(Query))
{
SQL_QueryError(Query,g_Error,511);
log_amx(g_Error);
return ;
}
if(SQL_NumResults(Query) > 0)
{
SQL_ReadResult(Query,0,pass[id],33)
get_user_info(id, "_pw", str, charsmax(str))
if(!equal(str,pass[id]))
{
server_cmd("kick #%d ^"Неверный пароль^"", get_user_userid(id));
}
else
{
player_register[id] = true;
}
}
else
{
player_register[id] = false;
}
next_load_data(id, "", 0);
SQL_FreeHandle(Query);
SQL_FreeHandle(SqlConnection);
}
public next_load_data(id,data[],len)
{
new szName[33]
get_user_name(id, szName, 34)
new szTableName[32],ErrorCode;
new Handle:SqlConnection = SQL_Connect(g_SqlTuple,ErrorCode,g_Error,511)
SQL_QuoteString(SqlConnection, szName, 34, szName);
get_pcvar_string(gTableName,szTableName,31);
if(SqlConnection == Empty_Handle)
{
log_amx(g_Error);
return ;
}
new Handle:Query = SQL_PrepareQuery(SqlConnection,"SELECT AK_kill, AK_up, M4A1_kill, M4A1_up, AWP_kill, AWP_up, BONUS, TIME_IN_GAME, TIME_VIP_GAME FROM %s WHERE name = '%s';",szTableName,szName)
SQL_Execute(Query)
if(!SQL_Execute(Query))
{
SQL_QueryError(Query,g_Error,511)
log_amx(g_Error)
}
if( (SQL_NumResults(Query) > 0) && (player_register[id]))
{
UserData[id][AK_kill] = SQL_ReadResult(Query,0);
UserData[id][AK_up] = SQL_ReadResult(Query,1);
UserData[id][M4A1_kill] = SQL_ReadResult(Query,2);
UserData[id][M4A1_up] = SQL_ReadResult(Query,3);
UserData[id][AWP_kill] = SQL_ReadResult(Query,4);
UserData[id][AWP_up] = SQL_ReadResult(Query,5);
UserData[id][BONUS] = SQL_ReadResult(Query,6);
UserData[id][TIME_IN_GAME] = SQL_ReadResult(Query,7);
UserData[id][TIME_VIP_GAME] = SQL_ReadResult(Query,8);
}
SQL_FreeHandle(Query);
SQL_FreeHandle(SqlConnection);
}
public save_usr(id)
{
new szName[33]
get_user_name(id, szName, 34)
new szTemp[512],szTable[64];
get_pcvar_string(gTableName,szTable,63);
format(szTemp,charsmax(szTemp),"UPDATE `%s` SET `AK_kill`='%d',`AK_up`='%d', `M4A1_kill`='%d',`M4A1_up`='%d', `AWP_kill`='%d',`AWP_up`='%d', `BONUS`='%d', `TIME_IN_GAME`='%d', `TIME_VIP_GAME`='%d' WHERE `name`='%s';",szTable,UserData[id][AK_kill],UserData[id][AK_up],UserData[id][M4A1_kill],
UserData[id][M4A1_up],UserData[id][AWP_kill],UserData[id][AWP_up],UserData[id][BO
NUS],UserData[id][TIME_IN_GAME],UserData[id][TIME_VIP_GAME],szName);
SQL_ThreadQuery(g_SqlTuple,"QueryHandler",szTemp)
}
public client_disconnect(id)
{
if (player_register[id])
{
save_usr(id);
for(new i = 0; i<PlData ; i++)
UserData[id][i] = 0;
}
}