AlliedModders

AlliedModders (https://forums.alliedmods.net/index.php)
-   Scripting Help (https://forums.alliedmods.net/forumdisplay.php?f=11)
-   -   can someone updae this plugin? (https://forums.alliedmods.net/showthread.php?t=143333)

Jacob 11-18-2010 07:43

can someone updae this plugin?
 
update:use sqlx instead of dbi.:shock:
PHP Code:

#include <amxmodx>
#include <csstats>
#include <dbi>
#include <amxmisc>
#define DEBUG   1
#define MAX_PLAYERS  32 + 1
#define MAX_NAME_LENGTH 31
#define MAX_TEXT_LENGTH 255
#define BUFFER_SIZE  500
//the hour when stats will be processed
#define RESET_HOUR "06"
//comment if sql_bannedids is not present (else sql server will return error, not major :)
#define SQL_BANNEDIDS 1
#define S_KILLS             0 //csstats,csx
#define S_DEATHS            1 //csstats,csx
#define S_HS                2 //csstats,csx
#define S_TK    3 //csstats,csx
#define S_SHOTS             4 //csstats,csx
#define S_HITS              5 //csstats,csx
#define S_TIME    6 //custom
#define S_SCORE    7 //custom
#define S_EFF    8 //custom
#define S_ACC    9 //custom
#define S_ACCHS    10 // custom
#define S_SIZE    11 // array size
//stats vars
new g_iPStats[BUFFER_SIZE][S_SIZE//BUFFER_SIZE: buffer sql queries, saves query info in memory till end of map
new g_sPStatsIds[BUFFER_SIZE][MAX_NAME_LENGTH+1// authids
new g_sPStatsNames[BUFFER_SIZE][MAX_NAME_LENGTH+1// names
new g_iMutationcount //tracking stats mutations
//sql vars
new g_host[MAX_NAME_LENGTH+1], g_user[MAX_NAME_LENGTH+1], g_pass[MAX_NAME_LENGTH+1], g_dbname[MAX_NAME_LENGTH+1], g_error[MAX_NAME_LENGTH+1]
new 
Sql:g_dbc
new Result:g_result
//sqltable vars
new g_sqlstats_table[MAX_NAME_LENGTH+1], g_iStats[8], g_iBodyHits[8]
new 
g_sqlstats_weekly[MAX_NAME_LENGTH+1]
new 
g_sqlstats_monthly[MAX_NAME_LENGTH+1]
new 
g_sqlstats_yearly[MAX_NAME_LENGTH+1]
new 
g_sqlbannedIDs[MAX_NAME_LENGTH+1]
//top15sqltable vars
new g_sqlstats_top15_dayly[MAX_NAME_LENGTH+1]
new 
g_sqlstats_top15_weekly[MAX_NAME_LENGTH+1]
new 
g_sqlstats_top15_monthly[MAX_NAME_LENGTH+1]
new 
g_sqlstats_top15_yearly[MAX_NAME_LENGTH+1]
//time booleans
new bool:bYearPassed=false
new bool:bMonthPassed=false
new bool:bWeekPassed=false
new bool:bDayPassed=false
new g_iWeekday
//file vars
new g_date_file[MAX_TEXT_LENGTH+1]
new 
g_tmpsv_lan // set to 1 to force logging by IP instead of STEAM_ID

/* PLUGIN INIT CALLS */
// plugin init
public plugin_init()
{
 
//log_amx("[sqlStats] plugin_init")
 
register_plugin("sqlStats","0.1.6","NeverStrike")
 
register_cvar("amx_sqlstats_table""sqlstatstable",0)
 
register_cvar("amx_sqlstats_weekly""sqlstats_c_weekly"0)
 
register_cvar("amx_sqlstats_monthly""sqlstats_c_monthly"0)
 
register_cvar("amx_sqlstats_yearly""sqlstats_c_yearly"0)
 
// top15 for every day/week/month
 
register_cvar("amx_sqlstats_top15_dayly""sqlstats_t15_dayly"0)
 
register_cvar("amx_sqlstats_top15_weekly""sqlstats_t15_weekly"0)
 
register_cvar("amx_sqlstats_top15_monthly""sqlstats_t15_monthly"0)
 
register_cvar("amx_sqlstats_top15_yearly""sqlstats_t15_yearly"0)
 
g_iWeekday 0
 g_iMutationcount 
0
 
//zero initialize values
 
for (new 0BUFFER_SIZEi++)
 {
  
g_sPStatsIds[i] = ""
  
for (new 0S_SIZEj++)
  {
   
g_iPStats[i][j] = 0;
  }
 }
 
 new 
dataDir[64]
 
get_datadir(dataDir63)
 
format (g_date_file,MAX_TEXT_LENGTH"%s/date.txt"dataDir)
 
 if (! 
file_exists(g_date_file) )
 {
  
write_date_file()
  new 
sWeekday[2]
  
num_to_str(g_iWeekday,sWeekday,2)
  
write_file(g_date_file,sWeekday,2)
 }
 
 
//reload sql.cfg since some bug won't load the cvars listed above
 
new configsDir[64]
 
get_configsdir(configsDir63)
 
server_cmd("exec %s/sql.cfg"configsDir)
 
server_exec()
 
 return 
PLUGIN_CONTINUE
}
// bug in amxmodx prevents this from executing correctly
public plugin_cfg()
{
 
// Fetch the database info stated in sql.cfg
 
get_cvar_string("amx_sql_host",g_host,MAX_NAME_LENGTH)
 
get_cvar_string("amx_sql_user",g_user,MAX_NAME_LENGTH)
 
get_cvar_string("amx_sql_pass",g_pass,MAX_NAME_LENGTH)
 
get_cvar_string("amx_sql_db",g_dbname,MAX_NAME_LENGTH)
 
 
// get sql table vars 
 
get_cvar_string("amx_sqlstats_table"g_sqlstats_tableMAX_NAME_LENGTH)
 
get_cvar_string("amx_sqlstats_weekly"g_sqlstats_weeklyMAX_NAME_LENGTH)
 
get_cvar_string("amx_sqlstats_monthly"g_sqlstats_monthlyMAX_NAME_LENGTH)
 
get_cvar_string("amx_sqlstats_yearly"g_sqlstats_yearlyMAX_NAME_LENGTH)
 
 
#if defined SQL_BANNEDIDS
 
get_cvar_string("amx_sqlbannedids_table"g_sqlbannedIDsMAX_NAME_LENGTH)
 
#endif
 
 // get top15 sql table vars 
 
get_cvar_string("amx_sqlstats_top15_dayly"g_sqlstats_top15_daylyMAX_NAME_LENGTH)
 
get_cvar_string("amx_sqlstats_top15_weekly"g_sqlstats_top15_weeklyMAX_NAME_LENGTH)
 
get_cvar_string("amx_sqlstats_top15_monthly"g_sqlstats_top15_monthlyMAX_NAME_LENGTH)
 
get_cvar_string("amx_sqlstats_top15_yearly"g_sqlstats_top15_yearlyMAX_NAME_LENGTH)
 
sql_init_stuff()
 
 return 
PLUGIN_CONTINUE
}
//required modules
public plugin_modules()
{
 
//log_amx("[sqlStats] plugin_modules")
 
 //require_module("csstats") //amxmodx <0.20 RC7
 
require_module("csx"// amxmodx >=0.20 RC7
 
require_module("sql")
}
public 
plugin_end()
{
 
//log_amx("[sqlStats] plugin_end")
 //log_amx("[sqlStats] plugin_end mutationcount: %i", g_iMutationcount)
 
for (new id 1id MAX_PLAYERSid++)
  
gets_user_stats(id)
 
save_user_stats()
 
#if defined SQL_BANNEDIDS
 
remove_bannedids()
 
#endif
 
check_date()
 
 if (
bDayPassed || bWeekPassed || bMonthPassed || bYearPassed)
 {
  
g_dbc dbi_connect(g_hostg_userg_passg_dbnameg_errorMAX_NAME_LENGTH)
  if (
g_dbc == SQL_FAILED)
   
log_amx("[sqlStats-history] SQL Connection Failed")
  else
  {
   if (
bDayPassed)
   {
    
//shift dayly stats to weekly stats (1 day has passed)
    
shifttable(g_sqlstats_table,g_sqlstats_weekly)
    
save_top15(g_sqlstats_tableg_sqlstats_top15_dayly)
    
reset_stats() // reset the dayly stats
    
reset_table(g_sqlstats_table)
    
g_iWeekday+=1
    
new sWeekday[2]
    
num_to_str(g_iWeekday,sWeekday,2)
    
write_file(g_date_file,sWeekday,2)
   }
   if (
bWeekPassed)
   {
    
//shift dayly stats to monthly stats (1 week has passed)
    
shifttable(g_sqlstats_weeklyg_sqlstats_monthly)
    
save_top15(g_sqlstats_weeklyg_sqlstats_top15_weekly)
    
reset_table(g_sqlstats_weekly)
    
g_iWeekday 0
    write_file
(g_date_file,"0",2)
   }
   if (
bMonthPassed)
   {
    
//shift monthly stats to yearly stats (1 month has passed)
    
shifttable(g_sqlstats_monthly,g_sqlstats_yearly)
    
save_top15(g_sqlstats_monthlyg_sqlstats_top15_monthly)
    
reset_table(g_sqlstats_weekly)
   }
   if (
bYearPassed)
   {
    
save_top15(g_sqlstats_yearlyg_sqlstats_top15_yearly)
    
reset_table(g_sqlstats_yearly)
   }
  }
  
dbi_close(g_dbc)
  
write_date_file()
 }
 
 return 
PLUGIN_CONTINUE
}
/* EVENTS */
// when a player disconnects save his stats
public client_disconnect(id)
{
 
//log_amx("[sqlStats] client_disconnect")
 
 
gets_user_stats(id//save to buffer
 
 
return PLUGIN_CONTINUE
}

/* PLUGIN FUNCTIONS */
// establish a connection with db
// create table if not present
public sql_init_stuff()
{
 
//log_amx("[sqlStats] sql_init_stuff")
 
 //debug
 //log_amx("[sqlStats] sql_init_stuff h:%s, u:%s, p:%s, db:%s, t:%s",g_host,g_user,g_pass,g_dbname,g_sqlstats_table)
 
 
g_dbc dbi_connect(g_host,g_user,g_pass,g_dbname,g_error,MAX_NAME_LENGTH)
 if (
g_dbc == SQL_FAILED)
  
log_amx("[sqlStats] SQL Connection Failed")
 else
 {
  
dbi_query(g_dbc"CREATE TABLE IF NOT EXISTS `%s` (`authid` VARCHAR( 32 ) NOT NULL, `name` VARCHAR( 32 ) NOT NULL , `date` TIMESTAMP( 10 ) NOT NULL , `score` INT NOT NULL ,`kills` INT NOT NULL , `teamkills` INT NOT NULL, `deaths` INT NOT NULL , `hits` INT NOT NULL , `shots` INT NOT NULL , `headshots` INT NOT NULL , `efficiency` DOUBLE (19,2) DEFAULT NULL, `accuracy` double(19,2) default NULL,`accuracyHS` double(19,2) default NULL, PRIMARY KEY(`authid`))"g_sqlstats_table)
  
dbi_query(g_dbc"CREATE TABLE IF NOT EXISTS `%s` (`authid` VARCHAR( 32 ) NOT NULL, `name` VARCHAR( 32 ) NOT NULL , `date` TIMESTAMP( 10 ) NOT NULL , `score` INT NOT NULL ,`kills` INT NOT NULL , `teamkills` INT NOT NULL, `deaths` INT NOT NULL , `hits` INT NOT NULL , `shots` INT NOT NULL , `headshots` INT NOT NULL , `efficiency` DOUBLE (19,2) DEFAULT 0.0, `accuracy` double(19,2) default 0.0,`accuracyHS` double(19,2) default 0.0, PRIMARY KEY(`authid`))"g_sqlstats_weekly)
  
dbi_query(g_dbc"CREATE TABLE IF NOT EXISTS `%s` (`authid` VARCHAR( 32 ) NOT NULL, `name` VARCHAR( 32 ) NOT NULL , `date` TIMESTAMP( 10 ) NOT NULL , `score` INT NOT NULL ,`kills` INT NOT NULL , `teamkills` INT NOT NULL, `deaths` INT NOT NULL , `hits` INT NOT NULL , `shots` INT NOT NULL , `headshots` INT NOT NULL , `efficiency` DOUBLE (19,2) DEFAULT 0.0, `accuracy` double(19,2) default 0.0,`accuracyHS` double(19,2) default 0.0, PRIMARY KEY(`authid`))"g_sqlstats_monthly)
  
dbi_query(g_dbc"CREATE TABLE IF NOT EXISTS `%s` (`authid` VARCHAR( 32 ) NOT NULL, `name` VARCHAR( 32 ) NOT NULL , `date` TIMESTAMP( 10 ) NOT NULL , `score` INT NOT NULL ,`kills` INT NOT NULL , `teamkills` INT NOT NULL, `deaths` INT NOT NULL , `hits` INT NOT NULL , `shots` INT NOT NULL , `headshots` INT NOT NULL , `efficiency` DOUBLE (19,2) DEFAULT 0.0, `accuracy` double(19,2) default 0.0,`accuracyHS` double(19,2) default 0.0, PRIMARY KEY(`authid`))"g_sqlstats_yearly)
  
  
dbi_query(g_dbc"CREATE TABLE IF NOT EXISTS `%s` (`id` INT NOT NULL AUTO_INCREMENT,`authid` VARCHAR( 32 ) NOT NULL,`name` VARCHAR( 32 ) NOT NULL,`date` TIMESTAMP( 6 ) NOT NULL,`score` INT NOT NULL,`kills` INT NOT NULL,`teamkills` INT NOT NULL,`deaths` INT NOT NULL,`hits` INT NOT NULL,`shots` INT NOT NULL,`headshots` INT NOT NULL,`efficiency` DOUBLE (19,2) DEFAULT 0.0,`accuracy` double(19,2) default 0.0,`accuracyHS` double(19,2) default 0.0,PRIMARY KEY(`id`))"g_sqlstats_top15_dayly)
  
dbi_query(g_dbc"CREATE TABLE IF NOT EXISTS `%s` (`id` INT NOT NULL AUTO_INCREMENT,`authid` VARCHAR( 32 ) NOT NULL,`name` VARCHAR( 32 ) NOT NULL,`date` TIMESTAMP( 6 ) NOT NULL,`score` INT NOT NULL,`kills` INT NOT NULL,`teamkills` INT NOT NULL,`deaths` INT NOT NULL,`hits` INT NOT NULL,`shots` INT NOT NULL,`headshots` INT NOT NULL,`efficiency` DOUBLE (19,2) DEFAULT 0.0,`accuracy` double(19,2) default 0.0,`accuracyHS` double(19,2) default 0.0,PRIMARY KEY(`id`))"g_sqlstats_top15_weekly)
  
dbi_query(g_dbc"CREATE TABLE IF NOT EXISTS `%s` (`id` INT NOT NULL AUTO_INCREMENT,`authid` VARCHAR( 32 ) NOT NULL,`name` VARCHAR( 32 ) NOT NULL,`date` TIMESTAMP( 4 ) NOT NULL,`score` INT NOT NULL,`kills` INT NOT NULL,`teamkills` INT NOT NULL,`deaths` INT NOT NULL,`hits` INT NOT NULL,`shots` INT NOT NULL,`headshots` INT NOT NULL,`efficiency` DOUBLE (19,2) DEFAULT 0.0,`accuracy` double(19,2) default 0.0,`accuracyHS` double(19,2) default 0.0,PRIMARY KEY(`id`))"g_sqlstats_top15_monthly)
  
dbi_query(g_dbc"CREATE TABLE IF NOT EXISTS `%s` (`id` INT NOT NULL AUTO_INCREMENT,`authid` VARCHAR( 32 ) NOT NULL,`name` VARCHAR( 32 ) NOT NULL,`date` TIMESTAMP( 2 ) NOT NULL,`score` INT NOT NULL,`kills` INT NOT NULL,`teamkills` INT NOT NULL,`deaths` INT NOT NULL,`hits` INT NOT NULL,`shots` INT NOT NULL,`headshots` INT NOT NULL,`efficiency` DOUBLE (19,2) DEFAULT 0.0,`accuracy` double(19,2) default 0.0,`accuracyHS` double(19,2) default 0.0,PRIMARY KEY(`id`))"g_sqlstats_top15_yearly)
 }
 
dbi_close(g_dbc)
 return 
PLUGIN_CONTINUE
}
// saves user info to sql db:
// steamid, name, kills, deaths, hits, shots, headshots, +playtime
save_user_stats()
{
 
//log_amx("[sqlStats] save_user_stats")
 
log_amx("[sqlStats] Saving %i Players"g_iMutationcount)
 
 
// sql connect
 
g_dbc dbi_connect(g_host,g_user,g_pass,g_dbname,g_error,MAX_NAME_LENGTH)
 
 if (
g_dbc == SQL_FAILED)
  
log_amx("[sqlStats] SQL Connection Failed")
 else{
  
// process all queries
  
for (new 0g_iMutationcounti++)
  {
   
// for mysql 4.1.0 use INSERT INTO .... ON DUPLICATE KEY UPDATE, for now, this ugly stuff will do
   
if ( !dbi_query(g_dbc,"UPDATE `%s` SET name='%s',date=NOW(),score=%i,kills=%i,teamkills=%i,deaths=%i,hits=%i,shots=%i,headshots=%i,efficiency=%i,accuracy=%i, accuracyHS=%i WHERE authid='%s'"g_sqlstats_tableg_sPStatsNames[i], g_iPStats[i][S_SCORE], g_iPStats[i][S_KILLS], g_iPStats[i][S_TK], g_iPStats[i][S_DEATHS], g_iPStats[i][S_HITS], g_iPStats[i][S_SHOTS], g_iPStats[i][S_HS], g_iPStats[i][S_EFF], g_iPStats[i][S_ACC], g_iPStats[i][S_ACCHS], g_sPStatsIds[i]) )
    
dbi_query(g_dbc,"INSERT INTO `%s` (authid, name, date,score,kills,teamkills,deaths,hits,shots,headshots,efficiency,accuracy,accuracyHS) values('%s','%s',NOW(),%i,%i,%i,%i,%i,%i,%i,%i,%i,%i)",g_sqlstats_table,g_sPStatsIds[i],g_sPStatsNames[i],g_iPStats[i][S_SCORE],g_iPStats[i][S_KILLS],g_iPStats[i][S_TK],g_iPStats[i][S_DEATHS],g_iPStats[i][S_HITS], g_iPStats[i][S_SHOTS], g_iPStats[i][S_HS], g_iPStats[i][S_EFF], g_iPStats[i][S_ACC], g_iPStats[i][S_ACCHS])
   
//log_amx("[sqlStats]: saved %s, %s",g_sPStatsNames[i], g_sPStatsIds[i])
  
}
 }
 
// sql close 
 
dbi_close(g_dbc)
 
 
//reset mutationcount
 
g_iMutationcount 0
}
// gets the stats for a player
gets_user_stats(iPlayer)
{
 new 
bad_id[5] = "hltv"
 
new bad_id2[18] = "VALVE_ID_LOOPBACK"
 
new sAuthid[MAX_NAME_LENGTH+1]
 
get_user_authid(iPlayersAuthidMAX_NAME_LENGTH)
  if ( 
is_user_connected(iPlayer) && containsAuthidbad_id) == -&& containsAuthidbad_id2) == -)
  {
  
//if we're on LAN save by IP, else save by steam_id
  
if ( g_tmpsv_lan == )
   
get_user_ip(iPlayerg_sPStatsIds[g_iMutationcount], MAX_NAME_LENGTH1)
  else{
   
get_user_authid(iPlayerg_sPStatsIds[g_iMutationcount], MAX_NAME_LENGTH)
  }
  
get_user_name(iPlayerg_sPStatsNames[g_iMutationcount], MAX_NAME_LENGTH)
  
get_user_statsiPlayerg_iStatsg_iBodyHits )
  
  
log_amx("[sqlStats] gets_user_stats %s, %s",g_sPStatsNames[g_iMutationcount], g_sPStatsIds[g_iMutationcount])
  
  
g_iPStats[g_iMutationcount][S_KILLS] = g_iStats[S_KILLS]  // kills
  
g_iPStats[g_iMutationcount][S_DEATHS] = g_iStats[S_DEATHS]  // deaths
  
g_iPStats[g_iMutationcount][S_HS] = g_iStats[S_HS]    // headshots
  
g_iPStats[g_iMutationcount][S_TK] = g_iStats[S_TK]    // teamkills
  
g_iPStats[g_iMutationcount][S_SHOTS] = g_iStats[S_SHOTS]  // shots
  
g_iPStats[g_iMutationcount][S_HITS] = g_iStats[S_HITS]   // hits
  //g_iPStats[g_iMutationcount][S_TIME] = get_user_time(iPlayer) // playing time // dropped query lines are getting too big for the compiler
 
  
g_iPStats[g_iMutationcount][S_SCORE] = g_iStats[S_KILLS] - g_iStats[S_DEATHS] - g_iStats[S_TK]
  
  
//FIXME: maybe convert these into floats? now done in integers, db already works with floats (double(19,2))
  
g_iPStats[g_iMutationcount][S_EFF] = g_iStats[S_KILLS]*100 / (g_iStats[S_KILLS]+g_iStats[S_DEATHS])
  
g_iPStats[g_iMutationcount][S_ACC] = g_iStats[S_HITS]*100 g_iStats[S_SHOTS]
  
g_iPStats[g_iMutationcount][S_ACCHS] = g_iStats[S_HS]*100 g_iStats[S_SHOTS]
 
  
//one stats mutation added
  
if (g_iMutationcount BUFFER_SIZE )
   
g_iMutationcount++
  else
   
log_amx("[sqlStats] g_iMutationcount overflow, increase BUFFER_SIZE"// your server can be very busy :)
   
 
}
}
//requires connection established
reset_table(table[])
{
 
dbi_query(g_dbc"TRUNCATE TABLE `%s`"table);
}
reset_stats()
{
 
server_cmd("amx_cvar csstats_reset 1")
 
server_exec()
}
//shifts tables to other tables e.g. dayly scores into weekly scores, or weekly scores into montly scores
// insert if entry does not exist, adding(+) values if entry exists
//requires connection established
shifttable(src[], dst[])
{
 
//log_amx("[sqlStats-history] shifttable: %s -> %s", src, dst)
 
dbi_query(g_dbc,"UPDATE `%s`,`%s` SET `%s`.kills=`%s`.kills+`%s`.kills,`%s`.score=`%s`.score+`%s`.score,`%s`.teamkills=`%s`.teamkills+`%s`.teamkills,`%s`.deaths=`%s`.deaths+`%s`.deaths,`%s`.hits=`%s`.hits+`%s`.hits,`%s`.shots=`%s`.shots+`%s`.shots,`%s`.headshots=`%s`.headshots+`%s`.headshots where `%s`.authid=`%s`.authid",dst,src,dst,dst,src,dst,dst,src,dst,dst,src,dst,dst,src,dst,dst,src,dst,dst,src,dst,dst,src,dst,src)
 new 
sName[MAX_NAME_LENGTH+1],sAuthid[MAX_NAME_LENGTH+1]
 new 
iKills,iDeaths,iHS,iTK,iShots,iHits,iScore,iEff,iAcc,iAccHS
 g_result 
dbi_query(g_dbc,"SELECT `%s`.* FROM `%s` LEFT JOIN `%s` ON `%s`.authid=`%s`.authid WHERE `%s`.authid IS NULL",src,src,dst,src,dst,dst)
 while (
dbi_nextrow(g_result) > )
 {
  
sName ""
  
sAuthid ""
  
dbi_result(g_result,"name",sName,31)
  
dbi_result(g_result,"authid",sAuthid,31)
  
iKills dbi_result(g_result,"kills")
  
iDeaths dbi_result(g_result,"deaths")
  
iHS dbi_result(g_result,"headshots")
  
iTK dbi_result(g_result,"teamkills")
  
iShots dbi_result(g_result,"shots")
  
iHits dbi_result(g_result,"hits")
  
iScore dbi_result(g_result,"score")
  
iEff dbi_result(g_result,"efficiency")
  
iAcc dbi_result(g_result,"accuracy")
  
iAccHS dbi_result(g_result,"accuracyHS")
  
  
dbi_query(g_dbc,"INSERT INTO `%s` (authid,name,date,score,kills,teamkills,deaths,hits,shots,headshots,efficiency,accuracy,accuracyHS) values('%s','%s',NOW(),%i,%i,%i,%i,%i,%i,%i,%i,%i,%i)"dstsAuthidsNameiScoreiKillsiTKiDeathsiHitsiShotsiHSiEffiAcciAccHS)
  
//server_print("INSERT INTO `%s` (authid,name,date,score,kills,teamkills,deaths,hits,shots,headshots,efficiency,accuracy,accuracyHS) values('%s','%s',NOW(),%i,%i,%i,%i,%i,%i,%i,%i,%i,%i)", dst, sAuthid, sName, iScore, iKills, iTK, iDeaths, iHits, iShots, iHS, iEff, iAcc, iAccHS)
 
}
 
dbi_free_result(g_result)
}
//saves the top15 from active table to top15 table
//requires connection established
save_top15(src[],dst[])
{
 
//log_amx("[sqlStats-history] shifttable: %s -> %s", src, dst)
 
 
new sName[MAX_NAME_LENGTH+1],sAuthid[MAX_NAME_LENGTH+1]
 new 
iKills,iDeaths,iHS,iTK,iShots,iHits,iScore,iEff,iAcc,iAccHS
 
 g_result 
dbi_query(g_dbc,"SELECT * FROM `%s` ORDER BY score DESC LIMIT 15",src)
 while (
dbi_nextrow(g_result) > )
 {
  
dbi_result(g_result,"name",sName,31)
  
dbi_result(g_result,"authid",sAuthid,31)
  
iKills dbi_result(g_result,"kills")
  
iDeaths dbi_result(g_result,"deaths")
  
iHS dbi_result(g_result,"headshots")
  
iTK dbi_result(g_result,"teamkills")
  
iShots dbi_result(g_result,"shots")
  
iHits dbi_result(g_result,"hits")
  
iScore dbi_result(g_result,"score")
  
iEff dbi_result(g_result,"efficiency")
  
iAcc dbi_result(g_result,"accuracy")
  
iAccHS dbi_result(g_result,"accuracyHS")
  
dbi_query(g_dbc,"INSERT INTO `%s` (authid,name,date,score,kills,teamkills,deaths,hits,shots,headshots,efficiency,accuracy,accuracyHS) values('%s','%s',NOW(),%i,%i,%i,%i,%i,%i,%i,%i,%i,%i)"dstsAuthidsNameiScoreiKillsiTKiDeathsiHitsiShotsiHSiEffiAcciAccHS)
 }
}
//write the current-date to file, for future reference
write_date_file()
{
 new 
CurrentTime[17]
 
get_time("%Y %m %d %H:%M",CurrentTime,16)
 
write_file (g_date_file,"//generated by sqlstats, do NOT modify",0)
 
write_file(g_date_file,CurrentTime,1)
}
//check if last current-date & save-date has mutated day/week/month/year
check_date()
{
 new 
oldTime[17],oldWeekday[2],len
 
new sNewDatefragment[6]
 
 
read_file(g_date_file,1,oldTime,16,len)
 
get_time("%Y ",sNewDatefragment,5)
 if (
contain(oldTime,sNewDatefragment) == -1)
 {
  
bYearPassed=true
  
//log_amx("[sqlStats-history] YearPassed=true")
 

 
get_time(" %m ",sNewDatefragment,4)
 if (
contain(oldTime,sNewDatefragment) == -1)
 {
  
bMonthPassed=true
  
//log_amx("[sqlStats-history] MonthPassed=true")
 

 
read_file(g_date_file,2,oldWeekday,2,len
 
g_iWeekday str_to_num(oldWeekday)
 if (
g_iWeekday )
 {
  
bWeekPassed=true
  
//log_amx("[sqlStats-history] WeekPassed=true")
 
}
  
 
get_time(" %d ",sNewDatefragment,4)
 if (
contain(oldTime,sNewDatefragment) == -1)
 {
  
//log_amx("[sqlStats-history] DayPassed=true")
  
get_time("%H",sNewDatefragment,4)
  if (
contain(sNewDatefragment,RESET_HOUR) != -1)
  {
   
bDayPassed=true
   
//log_amx("[sqlStats-history] HourPassed=true")
  
}
 }
}
//purge bannedids from stats
remove_bannedids()
{
 
//log_amx("[sqlstats] remove_bannedids")
 
 
new sAuthid[MAX_NAME_LENGTH+1]
 
g_dbc dbi_connect(g_hostg_userg_passg_dbnameg_errorMAX_NAME_LENGTH)
 if (
g_dbc == SQL_FAILED)
  
log_amx("[sqlStats-history] SQL Connection Failed")
 else
 {
  
g_result dbi_query(g_dbc,"SELECT * FROM `%s`"g_sqlbannedIDs)
  while (
dbi_nextrow(g_result) > )
  {
   
dbi_result(g_result,"authid",sAuthid,31)
   
dbi_query(g_dbc"DELETE FROM `%s` WHERE authid = '%s'"g_sqlstats_tablesAuthid)
   
//server_print("[sqlstats] DELETE FROM `%s` WHERE authid = '%s'", g_sqlstats_table, sAuthid)
  
}
 }
 
dbi_close(g_dbc)




All times are GMT -4. The time now is 11:26.

Powered by vBulletin®
Copyright ©2000 - 2024, vBulletin Solutions, Inc.