| Exolent[jNr] |
06-19-2012 10:24 |
Re: put in the plugins <nvault> save system
PHP Code:
#include <amxmodx>
#include <engine>
#include <nvault>
#include <hamsandwich>
#define MAX_PLAYERS 32
new bool:gSpawned[MAX_PLAYERS + 1];
new Float:gRoundDamage[MAX_PLAYERS + 1];
new Float:gTotalDamage[MAX_PLAYERS + 1];
new gRoundsPlayed[MAX_PLAYERS + 1];
new gMaxPlayers;
#define GetADR(%1) (gTotalDamage[%1] / gRoundsPlayed[%1])
new gVault;
public plugin_init() {
register_clcmd("say /adr", "CmdShowAverage");
register_event("HLTV", "EventNewRound", "a", "1=0", "2=0");
RegisterHam(Ham_Spawn, "player", "FwdPlayerSpawnPost", 1);
RegisterHam(Ham_TakeDamage, "player", "FwdPlayerDamagePost", 1);
gMaxPlayers = get_maxplayers();
gVault = nvault_open("adr_stats");
}
public plugin_end() {
nvault_close(gVault);
}
public client_authorized(id) {
new steamID[35];
get_user_authid(id, steamID, charsmax(steamID));
new data[64], timestamp;
if(nvault_lookup(gVault, steamID, data, charsmax(data), timestamp)) {
new roundsPlayed[12];
strbreak(data, roundsPlayed, charsmax(roundsPlayed), data, charsmax(data));
gRoundsPlayed[id] = str_to_num(roundsPlayed);
gTotalDamage[id] = str_to_float(data);
}
}
public client_disconnect(id) {
gSpawned[id] = false;
new steamID[35];
get_user_authid(id, steamID, charsmax(steamID));
new data[64];
formatex(data, charsmax(data), "%d %f", gRoundsPlayed[id], gTotalDamage[id]);
nvault_set(gVault, steamID, data);
gRoundDamage[id] = 0.0;
gTotalDamage[id] = 0.0;
gRoundsPlayed[id] = 0;
}
public CmdShowAverage(id) {
client_print(id, print_chat, "* Your average damage per round is %.1f", GetADR(id));
}
public EventNewRound() {
for(new id = 1; id <= gMaxPlayers; id++) {
if(gRoundDamage[id] > 0.0) {
gTotalDamage[id] += gRoundDamage[id];
gRoundDamage[id] = 0.0;
gRoundsPlayed[id]++;
}
else if(gSpawned[id]) {
gRoundsPlayed[id]++;
}
gSpawned[id] = false;
}
}
public FwdPlayerSpawnPost(id) {
if(is_user_alive(id)) {
gSpawned[id] = true;
}
}
public FwdPlayerDamagePost(victim, inflictor, attacker, Float:damage, damageBits) {
if(1 <= attacker <= gMaxPlayers && attacker != victim) {
gRoundDamage[attacker] += entity_get_float(victim, EV_FL_dmg_take);
}
}
|