mix statistika
Posted: 2012 Nov 19 01:52
Turiu beda, nerodo kai nusauni is ak47, m4a1, awp, ir priskaicuoja kad tipo su knife nudejo kai nusauni
is betkokio ginklo, bei priskaicuoja mirti ir fraga kai nusauna savas arba nusauni sava.
is betkokio ginklo, bei priskaicuoja mirti ir fraga kai nusauna savas arba nusauni sava.
Code: Select all
#include <amxmodx>#include <amxmisc>#include <fvault> #define MAX_PLAYERS 11 enum _:Stats{ GS_KILL, GS_DEATH, GS_KNIFE, GS_AK47, GS_M4A1, GS_AWP, GS_MINIACE, GS_ACE}; new const StatsName[Stats][] ={ "Kill", "Death", "Knife", "Ak47", "M4a1", "Awp", "MiniAce", "Ace"}; new rez_live new gs_stats[MAX_PLAYERS + 1][Stats];new gs_kills[MAX_PLAYERS + 1]; new gs_vault[] = "mix_stats"; public plugin_init(){ register_plugin("mix stats", "1.0", "xDede"); register_clcmd("say", "HandleSay"); rez_live = register_cvar("amx_rez", "0") register_event("DeathMsg", "EventDeathMsg", "a"); register_event("ResetHUD", "EventResetHUD", "b");} public client_putinserver(client){ gs_kills[client] = 0; Load(client);} public client_disconnect(client){ Save(client);} public EventDeathMsg(){ if(!get_pcvar_num(rez_live)) return new attacker = read_data(1); new victim = read_data(2); new weapon[20]; read_data(4, weapon, charsmax(weapon)); gs_stats[victim][GS_DEATH]++; if (victim == attacker) gs_stats[attacker][GS_KILL]--; else { gs_kills[attacker]++; gs_stats[attacker][GS_KILL]++; if (containi(weapon, "knife")) gs_stats[attacker][GS_KNIFE]++; else if (containi(weapon, "ak47")) gs_stats[attacker][GS_AK47]++; else if (containi(weapon, "m4a1")) gs_stats[attacker][GS_M4A1]++; else if (containi(weapon, "awp")) gs_stats[attacker][GS_AWP]++; if (gs_kills[attacker] == 4) gs_stats[attacker][GS_MINIACE]++; else if (gs_kills[attacker] == 5) gs_stats[attacker][GS_ACE]++; }} public EventResetHUD(){ for (new i = 1; i <= get_maxplayers(); i++) { if (!is_user_connected(i)) continue; gs_kills[i] = 0; }} public HandleSay(client){ new message[192], arg[32], arg2[32]; read_argv(1, message, charsmax(message)); parse(message, arg, charsmax(arg), arg2, charsmax(arg2)); if (equal(arg, "!stats") || equal(arg, "/stats")) { new player = strlen(arg2) > 1 ? cmd_target(client, arg2) : client; if (is_user_connected(player)) { new message1[64], message2[64]; new Auth[35]; get_user_authid(player, Auth, charsmax(Auth)); formatex(message1, charsmax(message1), "Stats of (%s) ", Auth); for (new i; i < GS_KNIFE; i++) { formatex(message1, charsmax(message1), "%s%s: %d", message1, StatsName[i], gs_stats[player][i]); if (i != GS_KNIFE - 1) add(message1, charsmax(message1), " | "); } for(new i = GS_KNIFE; i < Stats; i++) { formatex(message2, charsmax(message2), "%s%s: %d", message2, StatsName[i], gs_stats[player][i]); if (i != Stats - 1) add(message2, charsmax(message2), " | "); } ColorChat(client, message1); ColorChat(client, message2); } }} Load(client){ new key[35], data[128], stats[Stats][32]; get_user_authid(client, key, charsmax(key)); fvault_get_data(gs_vault, key, data, charsmax(data)); parse(data, stats[GS_KILL], charsmax(stats[]), stats[GS_DEATH], charsmax(stats[]), stats[GS_KNIFE], charsmax(stats[]), stats[GS_AK47], charsmax(stats[]), stats[GS_M4A1], charsmax(stats[]), stats[GS_AWP], charsmax(stats[]), stats[GS_MINIACE], charsmax(stats[]), stats[GS_ACE], charsmax(stats[]) ); for (new i; i < Stats; i++) { gs_stats[client][i] = str_to_num(stats[i]); }} Save(client){ new key[35], data[128]; get_user_authid(client, key, charsmax(key)); for (new i; i < Stats; i++) formatex(data, charsmax(data), "%s %d", data, gs_stats[client][i]); fvault_set_data(gs_vault, key, data);} stock ColorChat(const client, const string[], { Float, Sql, Resul,_ }:... ){ new msg[191], players[32], count = 1; static len; len = formatex(msg, charsmax(msg), "^4[STATS]^1 "); vformat(msg[len], charsmax(msg) - len, string, 3); if(client) players[0] = client; else get_players(players,count,"ch"); for (new i = 0; i < count; i++) { if(is_user_connected( players[i])) { message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"), _, players[i]); write_byte(players[i]); write_string(msg); message_end(); } }}