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(); } }}