Can someone make this plugin to save nick, not by steamid.
#include <amxmodx>
#include <sqlx>
new Handle:g_SqlTuple
new bool:g_HasSaved[33]
public plugin_init()
{
register_event("DeathMsg", "event_death", "a")
}
public plugin_cfg()
{
g_SqlTuple = SQL_MakeStdTuple()
if (g_SqlTuple == Empty_Handle)
log_amx("Invalid SQL info.")
else
{
new errcode, error[128]
new Handle:db = SQL_Connect(g_SqlTuple, errcode, error, 127)
if (db == Empty_Handle)
log_amx("Could not connect to SQL: %s", error)
else
{
new Handle:query = SQL_PrepareQuery(db,
"CREATE TABLE IF NOT EXISTS player_stats \
(name VARCHAR(32) NOT NULL, \
steamid VARCHAR(35) NOT NULL PRIMARY KEY, \
kills INT(11) NOT NULL, \
deaths INT(11) NOT NULL);"
)
if (!SQL_Execute(query))
{
SQL_QueryError(query, error, 127)
log_amx("Query error for create table: %s", error)
}
else
state sql_enabled
SQL_FreeHandle(query)
new players[32], num
get_players(players, num, "ch")
for (new i = 0; i < num; i++)
{
handle_player_connect(db, players[i])
}
SQL_FreeHandle(db)
}
}
}
handle_player_connect(Handle:db, id)
{
if (g_HasSaved[id])
return;
new steamid[35]
get_user_authid(id, steamid, 34)
new Handle:query = SQL_PrepareQuery(db, "SELECT * FROM player_stats WHERE steamid = ^"%s^";", steamid)
if (!SQL_Execute(query))
{
new error[128]
SQL_QueryError(query, error, 127)
log_amx("Query error for select player stats: %s", error)
}
else if (SQL_NumResults(query))
{
SQL_FreeHandle(query)
new name[32]
get_user_name(id, name, 31)
query = SQL_PrepareQuery(db, "UPDATE player_stats SET name = ^"%s^" WHERE steamid = ^"%s^";", name, steamid)
if (!SQL_Execute(query))
{
new error[128]
SQL_QueryError(query, error, 127)
log_amx("Query error for update player name: %s", error)
}
g_HasSaved[id] = true
}
else
{
SQL_FreeHandle(query)
new name[32]
get_user_name(id, name, 31)
query = SQL_PrepareQuery(db, "INSERT INTO player_stats (name, steamid, kills, deaths) VALUES (^"%s^", ^"%s^", 0, 0);", name, steamid)
if (!SQL_Execute(query))
{
new error[128]
SQL_QueryError(query, error, 127)
log_amx("Query error for insert player: %s", error)
}
else
g_HasSaved[id] = true
}
SQL_FreeHandle(query)
}
public client_putinserver(id) <> { }
public client_putinserver(id) <sql_enabled>
{
if (g_HasSaved[id])
return;
new errcode, error[128]
new Handle:db = SQL_Connect(g_SqlTuple, errcode, error, 127)
if (db == Empty_Handle)
return;
handle_player_connect(db, id)
SQL_FreeHandle(db);
}
public client_disconnect(id)
{
g_HasSaved[id] = false
}
public client_infochanged(id) <> { }
public client_infochanged(id) <sql_enabled>
{
new oldname[32], newname[32]
get_user_name(id, oldname, 31)
get_user_info(id, "name", newname, 31)
if (!equal(oldname, newname) && g_HasSaved[id])
{
new errcode, error[128]
new Handle:db = SQL_Connect(g_SqlTuple, errcode, error, 127)
if (db == Empty_Handle)
return;
new steamid[35]
get_user_authid(id, steamid, 34)
new Handle:query = SQL_PrepareQuery(db, "UPDATE player_stats SET name = ^"%s^" WHERE steamid = ^"%s^";", newname, steamid)
if (!SQL_Execute(query))
{
SQL_QueryError(query, error, 127)
log_amx("Query error for update player in client_putinserver(): %s", error)
}
SQL_FreeHandle(query);
SQL_FreeHandle(db);
}
}
public event_death() <> { }
public event_death() <sql_enabled>
{
new killer = read_data(1)
new victim = read_data(2)
save_stats(killer, "kills", 1)
save_stats(victim, "deaths", 1)
}
save_stats(id, stat[], addvalue)
{
if (is_user_connected(id) && g_HasSaved[id])
{
new errcode, error[128]
new Handle:db = SQL_Connect(g_SqlTuple, errcode, error, 127)
if (db == Empty_Handle)
return;
new steamid[35]
get_user_authid(id, steamid, 34)
new Handle:query = SQL_PrepareQuery(db, "UPDATE player_stats SET %s = %s + %i WHERE steamid = ^"%s^";", stat, stat, addvalue, steamid)
if (!SQL_Execute(query))
{
SQL_QueryError(query, error, 127)
log_amx("Query error for update player stat: %s", error)
}
SQL_FreeHandle(query);
SQL_FreeHandle(db);
}
}
/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang11274\\ f0\\ fs16 \n\\ par }
*/
Thanks ;]
Someone? Please.


Dodatki SourceMod













