Code:
#include amxmodx
#include fakemeta
#include zombieplague
#define TASKID_UPDATESTATS 308191643
enum _: e_EscapePos {
RANK_NONE = 0,
RANK_FIRST,
RANK_SECOND,
RANK_THIRD
};
new g_iEscapePoint[33],
g_iEscapePos[e_EscapePos];
public plugin_init() {
register_plugin("[ZE] Addon: XMAS 2040 LEADER", "0.1 | 30.08.2019", "Reega!");
register_dictionary("zombie_plague.txt")
register_logevent("StartRound", 2, "1=Round_Start");
}
public zp_round_ended() if(task_exists(TASKID_UPDATESTATS)) remove_task(TASKID_UPDATESTATS);
public StartRound() set_task(0.1, "CTaskiPlayer__UpdateStats", TASKID_UPDATESTATS, _, _, "b");
public CTaskiPlayer__UpdateStats() {
static Float: vecVelocity[3], iSpeed;
for(new iPlayer = 1; iPlayer <= get_maxplayers(); iPlayer++) {
if(!is_user_alive(iPlayer)) continue;
pev(iPlayer, pev_velocity, vecVelocity)
iSpeed = floatround(vector_length(vecVelocity));
switch(iSpeed) {
case 210..229: g_iEscapePoint[iPlayer] += 1;
case 230..249: g_iEscapePoint[iPlayer] += 2;
case 250..300: g_iEscapePoint[iPlayer] += 3;
}
show_stat(iPlayer);
}
}
public show_stat(iPlayer) {
get_stat()
new temp_string_first[64], temp_string_second[64], temp_string_third[64], curiPlayer, Player_Name[64], none[32]
formatex(none, sizeof(none), "%L", LANG_PLAYER, "RANK_NONE")
// Rank First
curiPlayer = g_iEscapePos[RANK_FIRST]
if(is_user_alive(curiPlayer) && g_iEscapePoint[curiPlayer] != 0)
{
get_user_name(curiPlayer, Player_Name, sizeof(Player_Name))
formatex(temp_string_first, sizeof(temp_string_first), "%L", LANG_PLAYER, "RANK_FIRST", Player_Name)
} else {
get_user_name(curiPlayer, Player_Name, sizeof(Player_Name))
formatex(temp_string_first, sizeof(temp_string_first), "%L", LANG_PLAYER, "RANK_FIRST", none)
}
// Rank Second
curiPlayer = g_iEscapePos[RANK_SECOND]
if(is_user_alive(curiPlayer) && g_iEscapePoint[curiPlayer] != 0)
{
get_user_name(curiPlayer, Player_Name, sizeof(Player_Name))
formatex(temp_string_second, sizeof(temp_string_second), "%L", LANG_PLAYER, "RANK_SECOND", Player_Name)
} else {
get_user_name(curiPlayer, Player_Name, sizeof(Player_Name))
formatex(temp_string_second, sizeof(temp_string_second), "%L", LANG_PLAYER, "RANK_SECOND", none)
}
// Rank Third
curiPlayer = g_iEscapePos[RANK_THIRD]
if(is_user_alive(curiPlayer) && g_iEscapePoint[curiPlayer] != 0)
{
get_user_name(curiPlayer, Player_Name, sizeof(Player_Name))
formatex(temp_string_third, sizeof(temp_string_third), "%L", LANG_PLAYER, "RANK_THIRD", Player_Name)
} else {
get_user_name(curiPlayer, Player_Name, sizeof(Player_Name))
formatex(temp_string_third, sizeof(temp_string_third), "%L", LANG_PLAYER, "RANK_THIRD", none)
}
static Float: vecVelocity[3], Float: flSpeed; pev(iPlayer, pev_velocity, vecVelocity);
flSpeed = floatsqroot(floatpower(vecVelocity[0], 2.0) + floatpower(vecVelocity[1], 2.0));
set_hudmessage(255, 0, 255, 0.02, 0.2, 0, 2.0, 0.001);
show_hudmessage(iPlayer, "%L^n%s^n%s^n%s^n[%3.2f] - Speed", LANG_PLAYER, "RANK_INFO", temp_string_first, temp_string_second, temp_string_third, flSpeed)
}
public get_stat() {
static highest, current;
highest = current = 0;
// Rank First
for(new iPlayer = 1; iPlayer <= get_maxplayers(); iPlayer++) {
if(!is_user_alive(iPlayer)) continue;
if(g_iEscapePoint[iPlayer] > highest) {
current = iPlayer;
highest = g_iEscapePoint[iPlayer];
}
}
g_iEscapePos[RANK_FIRST] = current;
// Rank Second
highest = current = 0;
for(new iPlayer = 1; iPlayer <= get_maxplayers(); iPlayer++) {
if(!is_user_alive(iPlayer)) continue;
if(g_iEscapePos[RANK_FIRST] == iPlayer) continue;
if(g_iEscapePoint[iPlayer] > highest) {
current = iPlayer;
highest = g_iEscapePoint[iPlayer];
}
}
g_iEscapePos[RANK_SECOND] = current;
// Rank Third
highest = current = 0;
for(new iPlayer = 1; iPlayer <= get_maxplayers(); iPlayer++) {
if(!is_user_alive(iPlayer)) continue;
if(g_iEscapePos[RANK_FIRST] == iPlayer || g_iEscapePos[RANK_SECOND] == iPlayer) continue;
if(g_iEscapePoint[iPlayer] > highest) {
current = iPlayer;
highest = g_iEscapePoint[iPlayer];
}
}
g_iEscapePos[RANK_THIRD] = current;
}