#include <amxmodx>
#define PLUGIN "Ultimate Players/Frags/Death Executer"
#define AUTHOR "DA"
#define VERSION "1.0"
#define maxcommands 32
new maxplayers[maxcommands], maxfrags[maxcommands], maxdeath[maxcommands];
new playercommands[maxcommands][95], fragcommands[maxcommands][190], deathcommands[maxcommands][190];
new playercounter = 0, fragscounter = 0, deathcounter = 0, playerendcommands[maxcommands][95];
new bool:executealready[maxcommands] = false;
public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR);
register_srvcmd("pfd_players", "check_players");
register_srvcmd("pfd_frags", "check_frags");
register_srvcmd("pfd_death", "check_death");
register_event("DeathMsg", "on_death", "a", "1>0")
}
public check_players()
{
if(read_argc() < 4)
{
log_amx("Can't execute pfd_players. Use pfd_players <maxplayers> ^"startcommand^" ^"endcommand^"");
return PLUGIN_HANDLED;
}
new args[192], players[2];
read_args(args, 192);
parse(args, players, 2, playercommands[playercounter], 95, playerendcommands[playercounter], 94);
maxplayers[playercounter] = str_to_num(players);
playercounter++;
return PLUGIN_CONTINUE;
}
public check_frags()
{
if(read_argc() < 4)
{
log_amx("Can't execute pfd_frags. Use pfd_frags <maxfrags> ^"command^"");
return PLUGIN_HANDLED;
}
new args[192], frags[4];
read_args(args, 192);
parse(args, frags, 4, fragcommands[fragscounter], 190);
maxfrags[fragscounter] = str_to_num(frags);
fragscounter++;
return PLUGIN_CONTINUE;
}
public check_death()
{
if(read_argc() < 4)
{
log_amx("Can't execute pfd_death. Use pfd_death <maxdeath> ^"command^"");
return PLUGIN_HANDLED;
}
new args[192], death[4];
read_args(args, 192);
parse(args, death, 4, deathcommands[deathcounter], 190);
maxdeath[deathcounter] = str_to_num(death);
deathcounter++;
return PLUGIN_CONTINUE;
}
public client_putinserver()
{
new players[32], num;
get_players(players, num, "ch");
for(new i=0; i < playercounter; i++)
{
if (num>=maxplayers[i])
{
if (!(executealready[i]))
{
server_cmd(playercommands[i]);
executealready[i] = true;
}
}
}
}
public client_disconnect()
{
new players[32], num;
get_players(players, num, "ch");
for(new i=0; i < playercounter; i++)
{
if (num < maxplayers[i])
{
if (executealready[i])
{
server_cmd(playerendcommands[i]);
executealready[i] = false;
}
}
}
}
public on_death()
{
new Killer = read_data(1);
new Victim = read_data(2);
new death = get_user_deaths(Victim);
new Frags = get_user_frags(Killer);
new i=0;
for(i=0; i < deathcounter; i++)
{
if (maxdeath[i]<=death)
{
server_cmd(deathcommands[i]);
maxdeath[i] = 0;
deathcommands[i] = "";
}
}
for(i=0; i < fragscounter; i++)
{
if (maxfrags[i]<=Frags)
{
server_cmd(fragcommands[i]);
maxfrags[i] = 0;
fragcommands[i] = "";
}
}
}