Raised This Month: $ Target: $400
 0% 

can someone updae this plugin?


  
 
 
Thread Tools Display Modes
Prev Previous Post   Next Post Next
Author Message
Jacob
Senior Member
Join Date: Oct 2010
Old 11-18-2010 , 07:43   can someone updae this plugin?
Reply With Quote #1

update:use sqlx instead of dbi.
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)

Jacob is offline
 



Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


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


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