PHP Code:
#include <amxmodx>
#include <amxmisc>
#include <hamsandwich>
new bool:g_fade_to_black[33];
new ScreenFade;
public plugin_init()
{
register_plugin("FadeToBlack Per SteamID", "0.1", "Exolent");
register_concmd("amx_fadetoblack", "CmdFadeToBlack", ADMIN_KICK, "<nick, #userid, authid> <0|1>");
RegisterHam(Ham_Spawn, "player", "FwdPlayerSpawn", 1);
RegisterHam(Ham_Killed, "player", "FwdPlayerDeath", 1);
register_message((ScreenFade = get_user_msgid("ScreenFade")), "MessageScreenFade");
}
public client_disconnect(client)
{
g_fade_to_black[client] = false;
}
public CmdFadeToBlack(client, level, cid)
{
if( !cmd_access(client, level, cid, 3) )
{
return PLUGIN_HANDLED;
}
new arg[35];
read_argv(1, arg, charsmax(arg));
new target = cmd_target(client, arg, (CMDTARGET_OBEY_IMMUNITY | CMDTARGET_NO_BOTS));
if( !target )
{
return PLUGIN_HANDLED;
}
read_argv(2, arg, charsmax(arg));
new bool:fade = (arg[0] == '1');
if( fade == g_fade_to_black[target] )
{
console_print(client, "Target currently %s fade to black", fade ? "has" : "does not have");
return PLUGIN_HANDLED;
}
g_fade_to_black[target] = fade;
if( !is_user_alive(target) )
{
make_ScreenFade(target, 0, 0, ( _:fade * 0x0004 ), 0, 0, 0, ( _:fade * 255 ) );
}
new name[32], targetName[32];
get_user_name(client, name, charsmax(name));
get_user_name(target, targetName, charsmax(targetName));
show_activity(client, name, "%s fade to black %s %s", fade ? "set" : "removed", fade ? "on" : "from", target_name);
return PLUGIN_HANDLED;
}
public FwdPlayerSpawn(client)
{
if( is_user_alive(client) && g_fade_to_black[client] )
{
make_ScreenFade(client, 0, 0, 0x0000, 0, 0, 0, 0);
}
}
public FwdPlayerDeath(client)
{
if( g_fade_to_black[client] )
{
make_ScreenFade(client, 0, 0, 0x0004, 0, 0, 0, 255);
}
}
public MessageScreenFade(msgid, dest, client)
{
return (!g_fade_to_black[client] || is_user_alive(client)) ? PLUGIN_CONTINUE : PLUGIN_HANDLED;
}
make_ScreenFade(client, duration, holdtime, flags, r, g, b, a)
{
message_begin(MSG_ONE, ScreenFade, _, client);
write_short(duration);
write_short(holdtime);
write_short(flags);
write_byte(r);
write_byte(g);
write_byte(b);
write_byte(a);
message_end();
}