Код:
#include < amxmodx >
#include < amxmisc >
#include < upsystem >
#include < dhudmessage >
#include < sqlx >
#define PLUGIN "Ultimate Public System"
#define VERSION "1.3"
#define AUTHOR "OverGame"
#pragma tabsize 0
new Handle:MYSQL_Tuple
new Handle:MYSQL_Connect
new g_Sql[5]
enum _:PlData
{
gMoney, gMdl
};
new UserData[33][PlData];
new g_ActiveMysql, szPlayerMysql[33], szSteamId[35], gMsg[255], gMaxPlayer
public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR);
register_event("DeathMsg","EventDeath","a");
register_logevent("EventEnd", 2, "1=Round_End");
register_dictionary("up_lang.txt");
g_Sql[1] = register_cvar("up_host", "127.0.0.1");
g_Sql[2] = register_cvar("up_user", "root");
g_Sql[3] = register_cvar("up_password", "password");
g_Sql[4] = register_cvar("up_dbname", "ultimate_public");
gMaxPlayer = get_maxplayers();
set_task(1.0, "MYSQL_Load");
}
public plugin_cfg()
{
new szCfgDir[64], szFile[192];
get_configsdir(szCfgDir, charsmax(szCfgDir));
formatex(szFile,charsmax(szFile),"%s/up_system.cfg",szCfgDir);
if(file_exists(szFile))
server_cmd("exec %s", szFile);
}
#include " ultimate_public/native.inl "
public MYSQL_Load()
{
new szHostname[30], szUsername[30], szPassword[30], szDatabase[30]
new szError[512], szErr
get_pcvar_string(g_Sql[1], szHostname, charsmax( szHostname ))
get_pcvar_string(g_Sql[2], szUsername, charsmax( szUsername ))
get_pcvar_string(g_Sql[3], szPassword, charsmax( szPassword ))
get_pcvar_string(g_Sql[4], szDatabase, charsmax( szDatabase ))
MYSQL_Tuple = SQL_MakeDbTuple(szHostname, szUsername, szPassword, szDatabase)
MYSQL_Connect= SQL_Connect(MYSQL_Tuple, szErr, szError, charsmax( szError ))
if(MYSQL_Connect == Empty_Handle)
set_fail_state( szError )
g_ActiveMysql = true
}
public EventEnd()
{
for(new id = 0; id <= gMaxPlayer; id++)
{
if(!is_user_bot(id) && is_user_connected(id))
{
new szError[512]
new Handle:szUpdate
szUpdate = SQL_PrepareQuery(MYSQL_Connect, "UPDATE `upsystem` SET `money` = '%i', `models` = '%i' WHERE `upsystem`.`steamid` = '%s';", UserData[id][gMoney], UserData[id][gMdl], szSteamId)
if(!SQL_Execute(szUpdate))
{
SQL_QueryError(szUpdate, szError, charsmax( szError ))
set_fail_state( szError )
}
}
}
return PLUGIN_CONTINUE;
}
public EventDeath()
{
for(new id = 0; id <= gMaxPlayer; id++)
{
if(!is_user_bot(id) && is_user_connected(id))
{
new iKiller = read_data(1);
new iVictim = read_data(2);
new iHead = read_data(3);
set_dhudmessage(243, 180, 48, 0.57, 0.75, 0, 1.0, 1.0, 0.1, 0.1)
if ( iHead && iKiller != iVictim && is_user_connected(iKiller) && is_user_connected(iVictim) )
{
UserData[iKiller][gMoney] += 3;
formatex(gMsg, charsmax(gMsg), "+3 %L %L", id, "MONEY_NAME", id, "HEAD_MONEY")
} else
if ( iKiller != iVictim && is_user_connected(iKiller) && is_user_connected(iVictim) )
{
UserData[iKiller][gMoney] += 1;
formatex(gMsg, charsmax(gMsg), "+1 %L", id, "MONEY_NAME")
}
show_dhudmessage(iKiller, gMsg)
}
}
return PLUGIN_CONTINUE;
}
public client_connect(id)
{
if(!is_user_bot(id) && !is_user_hltv(id))
{
get_user_authid(id, szSteamId, 34)
set_task(1.0, "CheckPlayer", id)
}
}
public CheckPlayer(id)
{
if(!g_ActiveMysql)
{
set_task(1.0, "CheckPlayer", id)
}
new szError[512]
new szMYSQLName[35]
new Handle:szSelect
szSelect = SQL_PrepareQuery(MYSQL_Connect, "SELECT * FROM upsystem")
if(!SQL_Execute(szSelect))
{
SQL_QueryError(szSelect, szError, charsmax( szError ))
set_fail_state( szError )
}
while(SQL_MoreResults(szSelect))
{
SQL_ReadResult(szSelect, 1, szMYSQLName, charsmax( szMYSQLName ))
if(equal(szMYSQLName, szSteamId))
{
UserData[id][gMoney] = SQL_ReadResult(szSelect, 2)
UserData[id][gMdl] = SQL_ReadResult(szSelect, 3)
szPlayerMysql[id] = true
break
}else{
SQL_NextRow(szSelect)
}
}
if(!szPlayerMysql[id])
{
new Handle:szInsert
szInsert = SQL_PrepareQuery(MYSQL_Connect, "INSERT INTO `upsystem` (`steamid`, `money`, `models`) VALUES ('%s', '0', '0');", szSteamId)
if(!SQL_Execute(szInsert))
{
SQL_QueryError(szInsert, szError, charsmax( szError ))
set_fail_state( szError )
}
szPlayerMysql[id] = true
}
}
public client_disconnect(id)
{
new szError[512]
new Handle:szUpdate
szUpdate = SQL_PrepareQuery(MYSQL_Connect, "UPDATE `upsystem` SET `money` = '%i', `models` = '%i' WHERE `upsystem`.`steamid` = '%s';", UserData[id][gMoney], UserData[id][gMdl], szSteamId)
if(!SQL_Execute(szUpdate))
{
SQL_QueryError(szUpdate, szError, charsmax( szError ))
set_fail_state( szError )
}
}