// ----------------------------------------------------------------------------
// MySQL Stats Database
// ----------------------------------------------------------------------------
// Based on code by KingTomato
// Modified by Lemon
// 2/26/09 edit
$MySQL::Connection[Stats] = "stats_conn"; // connection/table name
$MySQL::Host[Stats] = "BaseServer.db.3735315.hostedresource.com"; // host address
$MySQL::User[Stats] = "BaseServer"; // user name
$MySQL::Pass[Stats] = "vghr5t6O"; // user pass
$MySQL::Database[Stats] = "BaseServer"; // database name
$MySQL::Connected[$MySQL::Connection[Stats]] = false; // Tells us we're connected
$Stats::Force=true;
$MySQLStats::PasswordMin =5;
$MySQLStats::PasswordMax =10;
$MySQL::StatsLoginEnabled =false;
function MySQL::SaveStats()
{
for(%cl = Client::getFirst(); %cl != -1; %cl = Client::getNext(%cl))
{
MySQL::SaveClientStats(%cl);
}
}
function MySQL::SaveClientStats(%cl)
{
Database::Connect("Stats");
%c=$MySQL::Connection[Stats];
%ip = Client::getTransportAddress(%cl);
%ip=MySQL::ParseIP(%ip);
if (Stats::FindIP(%ip))
{
%add = "UPDATE player_ratings SET "
@ "tot_rating = tot_rating+"@%cl.rating
@ ", avg_rating=tot_rating/(maps+1)"
@ ", kills=kills+"@%cl.scoreKills
@ ", deaths=deaths+"@%cl.scoreDeaths
@ ", suicides=suicides+"@%cl.suicides
@ ", grabs=grabs+"@%cl.flaggrabs
@ ", captures=captures+"@%cl.flagcaptures
@ ", returns=returns+"@%cl.flagreturns
@ ", capperkills=capperkills+"@%cl.capperkills
@ ", assists=assists+"@%cl.flagassists
@ ", maps=maps+1 "
@ "WHERE player_ip='"@MySQL::Escape(%c,%ip)@"'";
if (MySQL::Query(%c,%add))
echo(Client::GetName(%cl)@" stats updated.");
else
{
echo("Stats Update: " @ $MySQL::Error);
$Query::Error=format($MySQL::Error, 40)@" "@timestamp();
$Query::Export=%add;
$Query::Extra = "-----------------------------";
export("$Query::*","config\\data.log",true);
}
}
else
{
%add = "INSERT INTO player_ratings (player_id,player_ip,tot_rating,avg_rating,kills,deaths,suicides,grabs,captures,returns,capperkills,assists,maps) "
@ "VALUES "
@ "(NULL,'"
@ MySQL::Escape(%c,%ip)
@ "',"@%cl.rating
@ ","@%cl.rating
@ ","@%cl.scoreKills
@ ","@%cl.scoreDeaths
@ ","@%cl.suicides
@ ","@%cl.flaggrabs
@ ","@%cl.flagcaptures
@ ","@%cl.flagreturns
@ ","@%cl.capperkills
@ ","@%cl.flagassists
@ ",1)";
if (MySQL::Query(%c,%add))
echo(Client::GetName(%cl)@" stats added.");
else
{
echo("Stats Add Failed: " @ $MySQL::Error);
$Query::Error=format($MySQL::Error, 40)@" "@timestamp();
$Query::Export=%add;
$Query::Extra = "-----------------------------";
export("$Query::*","config\\data.log",true);
}
}
}
function Stats::Find(%query, %tries)
{
%c=$MySQL::Connection[Stats];
%query_=%query; // copy query in case we try again
%query = sprintf("SELECT * FROM player_ratings WHERE %1 ORDER BY player_id",%query);
if (MySQL::Query(%c,%query))
{
MySQL::FetchRow(%c);
if(MySQL::Fetch(%c,"player_ip")!=false)
return true;