AlliedModders

AlliedModders (https://forums.alliedmods.net/index.php)
-   Scripting Help (https://forums.alliedmods.net/forumdisplay.php?f=11)
-   -   How to save players stats in the plugin_end (Including disconnected players) (https://forums.alliedmods.net/showthread.php?t=131149)

k1nader 07-01-2010 15:06

How to save players stats in the plugin_end (Including disconnected players)
 
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); 



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

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