Raised This Month: $ Target: $400
 0% 

How to save players stats in the plugin_end (Including disconnected players)


  
 
 
Thread Tools Display Modes
Prev Previous Post   Next Post Next
Author Message
k1nader
Junior Member
Join Date: Dec 2009
Location: China.四川
Old 07-01-2010 , 15:06   How to save players stats in the plugin_end (Including disconnected players)
Reply With Quote #1

PHP Code:
#include <amxmodx>
#include <amxmisc>
#include <csx>
#include <dbi>
#include <cstrike>

#define SQL_HOST    "127.0.0.1"
#define SQL_USER    "root"
#define SQL_PASS    ""
#define SQL_DB        "amx"
#define SQL_TABLE    "stats"

#define PLUGIN    "STATS MYSQL"
#define VERSION    "1.0"
#define AUTHOR    "k1nader"

#define USER_MAX 32

new g_kills[USER_MAX],g_deaths[USER_MAX],g_teamkilling[USER_MAX],g_vichead[USER_MAX],g_one[USER_MAX],g_shots[USER_MAX],g_hits[USER_MAX],g_damage[USER_MAX],g_odeaths[USER_MAX],g_head[USER_MAX];
new 
g_time[USER_MAX],g_round[USER_MAX],g_Te[USER_MAX],g_Ct[USER_MAX],g_St[USER_MAX],g_planted[USER_MAX],g_explode[USER_MAX],g_defusing[USER_MAX],g_defused[USER_MAX],AUTHSETINFO[USER_MAX][USER_MAX],g_skill[USER_MAX];
new 
Kill_Count 0;
new 
g_szQuery[128];
new 
g_error[64],Sql:g_dbc,Result:g_result;

public 
plugin_init()
{
    
register_plugin(PLUGINVERSIONAUTHOR);
    
register_event("SendAudio""event_round_end""a""2&%!MRAD_terwin""2&%!MRAD_ctwin""2&%!MRAD_rounddraw");
    
register_event("TextMsg""restart_round""a""2&#Game_C""2&#Game_w");
    
//register_event("ResetHUD", "SaveClient", "be");
}

public 
client_putinserver(id)
{
    
get_user_authid(id,AUTHSETINFO[id],USER_MAX);
    
set_dateZero(id);
}

public 
event_round_end()
{
    for (new 
1<= get_maxplayers(); i++)
    {
        if(!
is_user_connected(i)) return;
        new 
CsTeams:userTeam cs_get_user_team(i);
        switch(
userTeam)
        {
            case 
CS_TEAM_T g_Te[i]++;
            case 
CS_TEAM_CT g_Ct[i]++;
            case 
CS_TEAM_SPECTATOR g_St[i]++;
        }
        
g_round[i]++;
        
get_player_statsx(i);
    }
    
Kill_Count 0;
}

public 
client_damageattackervictimdamagewpnindexhitplace,tk)
{
    if(!
tk && attacker != victim)
    {
        
g_hits[attacker]++;
        
g_damage[attacker] += damage;
    }
    return 
PLUGIN_CONTINUE;
}

public 
client_death(KillerVictimwpnindex,hitplace,tk)
{
    if(
tk)
        
g_teamkilling[Killer]++;
    
    if ((
Killer != Victim) && (!tk))
    {
        
g_skill[Killer] += 10;
        
g_skill[Victim] = g_skill[Victim]-2;
        
g_kills[Killer]++;
        
g_deaths[Victim]++;
        
Kill_Count++;
        if(
Kill_Count == 1)
        {
            
g_one[Killer]++;
            
g_odeaths[Victim]++;
        }
        if(
hitplace==1)
        {
            
g_skill[Killer] += 2;
            
g_head[Killer]++; 
            
g_vichead[Victim]++;
        }
    }
    return 
PLUGIN_CONTINUE;
}

public 
bomb_planted(id)
    
g_planted[id]++;

public 
bomb_explode(id,defuser)
{
    
g_skill[id] += 5;
    
g_explode[id]++;
}

public 
bomb_defusing(id)
    
g_defusing[id]++;

public 
bomb_defused(id)
{
    
g_skill[id] += 5;
    
g_defused[id]++;
}

public 
get_player_statsx(i)
{
    new 
g_iStats[8]
    if(
get_user_rstatsig_iStats,""))
        
g_shots[i] += g_iStats[4];
}

public 
restart_round()
{
    for (new 
1<= get_maxplayers(); i++)
        
set_dateZero(i);
}

public 
set_dateZero(i)
{
    
g_skill[i]                =0;
    
g_kills[i]                =0;
    
g_one[i]                =0;
    
g_deaths[i]            =0;
    
g_odeaths[i]            =0;
    
g_vichead[i]            =0;
    
g_teamkilling[i]        =0;
    
g_shots[i]            =0;
    
g_hits[i]                =0;
    
g_damage[i]        =0;
    
g_head[i]            =0;
    
g_planted[i]            =0;
    
g_explode[i]            =0;
    
g_defusing[i]        =0;
    
g_defused[i]            =0;
    
g_time[i]            =0;
    
g_round[i]            =0;
    
g_Te[i]                =0;
    
g_Ct[i]                =0;
    
g_St[i]                =0;
}

SaveClient(i)
{
    new 
one[12],kills[12],deaths[12],odeaths[12],vichead[12],teamkilling[12],shots[12];
    new 
hits[12],damage[12],head[12],planted[12],explode[12],defusing[12],defused[12],lasttime[12];
    new 
round[12],Te[12],Ct[12],St[12],skill[12];
    
g_dbc dbi_connect(SQL_HOST,SQL_USER,SQL_PASS,SQL_DB,g_error,63);
    if (
g_dbc == SQL_FAILED)
    {
        
log_amx("Can not connect to MySQL Server")
    }
    else
    {
        
g_result dbi_query(g_dbc,"SELECT * FROM `%s` WHERE steamid = '%s'",SQL_TABLE,AUTHSETINFO[i])
        while (
dbi_nextrow(g_result) > )
        {
            
dbi_result(g_result,"skill",skill,11);
            
dbi_result(g_result,"kills",kills,11);
            
dbi_result(g_result,"one",one,11);
            
dbi_result(g_result,"deaths",deaths,11);
            
dbi_result(g_result,"odeaths",odeaths,11);
            
dbi_result(g_result,"vichead",vichead,11);
            
dbi_result(g_result,"teamkilling",teamkilling,11);
            
dbi_result(g_result,"shots",shots,11);
            
dbi_result(g_result,"hits",hits,11);
            
dbi_result(g_result,"damage",damage,11);
            
dbi_result(g_result,"head",head,11);
            
dbi_result(g_result,"planted",planted,11);
            
dbi_result(g_result,"explode",explode,11);
            
dbi_result(g_result,"defusing",defusing,11);
            
dbi_result(g_result,"defused",defused,11);
            
dbi_result(g_result,"time",lasttime,11);
            
dbi_result(g_result,"round",round,11);
            
dbi_result(g_result,"Te",Te,11);
            
dbi_result(g_result,"Ct",Ct,11);
            
dbi_result(g_result,"St",St,11);
        }
        
        
g_kills[i]            =    str_to_num(kills) + g_kills[i];
        
g_skill[i]            =    str_to_num(skill) + g_skill[i];
        
g_one[i]            =    str_to_num(one) + g_one[i];
        
g_deaths[i]        =    str_to_num(deaths) + g_deaths[i];
        
g_odeaths[i]        =    str_to_num(odeaths) + g_odeaths[i];
        
g_vichead[i]        =    str_to_num(vichead) + g_vichead[i];
        
g_teamkilling[i]    =    str_to_num(teamkilling) + g_teamkilling[i];
        
g_shots[i]        =    str_to_num(shots) + g_shots[i];
        
g_hits[i]            =    str_to_num(hits) + g_hits[i];
        
g_damage[i]    =    str_to_num(damage) + g_damage[i];
        
g_head[i]        =    str_to_num(head) + g_head[i];
        
g_planted[i]        =    str_to_num(planted) + g_planted[i];
        
g_explode[i]        =    str_to_num(explode) + g_explode[i];
        
g_defusing[i]    =    str_to_num(defusing) + g_defusing[i];
        
g_defused[i]        =    str_to_num(defused) + g_defused[i];
        
g_time[i]        =    str_to_num(lasttime) + g_time[i];
        
g_round[i]        =    str_to_num(round) + g_round[i];
        
g_Te[i]            =    str_to_num(Te) + g_Te[i];
        
g_Ct[i]            =    str_to_num(Ct) + g_Ct[i];
        
g_St[i]            =    str_to_num(St) + g_St[i];
        
        
formatex(g_szQuerycharsmax(g_szQuery),
        
"UPDATE `%s` SET `date` = NOW(),`kills` = '%i',`one` = '%i',`deaths` = '%i',`odeaths` = '%i',`vichead` = '%i',`teamkilling` = '%i',`shots` = '%i',`hits` = '%i',`damage` = '%i',`head` = '%i',`planted` = '%i',`explode` = '%i',`defusing` = '%i',`defused` = '%i',`time` = '%i',`round` = '%i',`Te` = '%i',`Ct` = '%i',`St` = '%i',`skill` = '%i' WHERE `steamid` = '%s'",
        
SQL_TABLE,g_kills[i],g_one[i],g_deaths[i],g_odeaths[i],g_vichead[i],g_teamkilling[i],g_shots[i],g_hits[i],g_damage[i],g_head[i],g_planted[i],g_explode[i],g_defusing[i],g_defused[i],g_time[i],g_round[i],g_Te[i],g_Ct[i],g_St[i],g_skill[i],AUTHSETINFO[i]);
        
dbi_free_result(g_result);
    }
    
dbi_close(g_dbc)
}

public 
client_disconnect (id)
    
SaveClient(id); 
k1nader 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 07:07.


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