/*
Community HL-HEV | All for Half-Life
Plugin - EndMapCustom
Author - BIGs
Credits :
TEPA6ANT - Tested and helped
D-AIRY - Get FadeScreen code
HL-HEV Team - Idea
Lev - Hepled
*/
#pragma semicolon 1
#pragma ctrlchar '\'
#include <amxmodx>
#include <amxmisc>
#include <fakemeta>
#include <fun>
#define PLUGIN "EndMapCustom"
#define VERSION "1.7.4"
#define AUTHOR "BIGs"
#define FFADE_IN 0x0000 // Just here so we don't pass 0 into the function
#define FFADE_OUT 0x0001 // Fade out (not in)
#define FFADE_MODULATE 0x0002 // Modulate (don't blend)
#define FFADE_STAYOUT 0x0004 // ignores the duration, stays faded out until new ScreenFade message received
new time_left_func;
new cz_MAP[32];
new z_Kills[32], z_Hs[32];
new Float: g_Angles[33][3];
public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR);
register_event("DeathMsg", "EventDeathMsg", "a");
set_task(60.0, "check_end", _, _, _, "b");
InfoConsole();
set_task(1.0, "checker", _, _, _, "b");
}
public InfoConsole()
{
if(is_linux_server())
{
server_print("\e[01;38;05;226m");
server_print("---------------------------------------------");
server_print("\e[01;38;05;46m");
server_print("[EMC] : Status - Loaded");
server_print("[EMC] : Version - %s" , VERSION);
server_print("[EMC] : Author - %s" , AUTHOR);
server_print("\e[01;38;05;226m");
server_print("---------------------------------------------");
server_print("\e[0m");
}else{
server_print("---------------------------------------------");
server_print("[EMC] : Status - Loaded");
server_print("[EMC] : Version - %s" , VERSION);
server_print("[EMC] : Author - %s" , AUTHOR);
server_print("---------------------------------------------");
}
}
public checker()
{
get_cvar_string("amx_nextmap" , cz_MAP ,31);
time_left_func = get_timeleft() / 60;
}
public client_authorized(id)
{
client_cmd(0,"mp3 stop");
}
public check_end()
{
if(time_left_func == 0)
{
set_task(15.0, "changelev", 1, _, _, "b");
set_task(1.0, "get_winner", _, _, _, "b");
emitet();
new iNum, iTemp[32], iPlayer;
get_players(iTemp, iNum, "h");
for(new i; i < iNum; ++i)
{
iPlayer = iTemp[i];
if(is_user_connected(iPlayer) && !is_user_bot(iPlayer))
{
doFade(iPlayer);
strip_tiss(iPlayer);
}
}
}
}
public strip_tiss(id)
{
set_pev(id, pev_flags, pev(id, pev_flags) | FL_FROZEN);
pev(id, pev_v_angle, g_Angles[id]);
strip_user_weapons(id);
}
public get_winner(id)
{
new BestPlayer = BPlayer();
new z_Name[32];
get_user_name(BestPlayer , z_Name , 31);
strtoupper(cz_MAP);
set_dhudmessage(0, 150, 150, -1.0, 0.20, 0, 6.0, 12.0);
show_dhudmessage(id, "B E S T P L A Y E R - %s" , z_Name );
set_dhudmessage(255, 255, 0, -1.0, 0.17, 0, 6.0, 12.0 );
show_dhudmessage(id, "K I L L S - %d | D E A T H S - %d" ,z_Kills[BestPlayer] ,get_user_deaths(BestPlayer));
set_dhudmessage(255,0, 100, -1.0, 0.14, 0, 6.0, 12.0);
show_dhudmessage(id, "N E X T M A P - %s" ,cz_MAP);
}
public emitet()
{
new rand_num = random_num(01 ,17);
client_cmd(0,"mp3 play media/Half-Life%d.mp3" ,rand_num);
}
public changelev()
{
new map[33];
get_cvar_string("amx_nextmap" , map ,32);
server_cmd("changelevel %s" , map);
remove_task(1);
}
public doFade(id)
{
message_begin(MSG_ONE, get_user_msgid("ScreenFade"), {0,0,0}, id);
write_short(1<<12); //Duration 1«12 == 1 second
write_short(1<<12); //HoldTime 1«12 == 1 second
write_short(FFADE_IN | FFADE_STAYOUT);
write_byte(0); // R [0-255]
write_byte(0); // G [0-255]
write_byte(0); // B [0-255]
write_byte(255); // opacity [0-255]
message_end();
}
public client_disconnect(id)
{
z_Hs[id] = 0;
z_Kills[id] = 0;
}
public EventDeathMsg()
{
new killer = read_data(1);
new victim = read_data(2);
new is_hs = read_data(3);
if(killer != victim && killer)
{
z_Kills[killer]++;
if(is_hs)
{
z_Kills[killer]++;
}
}else{
z_Kills[killer]--;
}
}
BPlayer()
{
new players[32], num;
get_players(players, num);
SortCustom1D(players, num, "sort_bestplayer");
return players[0];
}
public sort_bestplayer(id1 , id2)
{
if(z_Kills[id1] > z_Kills[id2])
{
return -1;
}else if(z_Kills[id1] < z_Kills[id2])
{
return 1;
}
return 0;
}