#include <amxmodx>
#include <amxmisc>
new const Plugin[][] = { "Admin prefixes by user.ini", "2.5.", "Juan' Diego'" };
new g_playername[33][32],g_Authid[33][40], g_Ip[33][20],admin_type[33];
new g_maxplayers,cvar_reload_time;
public plugin_init()
{
register_plugin(Plugin[0],Plugin[1],Plugin[2]);
register_clcmd("say","cmd_say");
register_clcmd("say_team","cmd_say_team");
cvar_reload_time = register_cvar("reload_time","120.0");/// 60 -> 1 Minuto
g_maxplayers = get_maxplayers();
}
public client_putinserver(id)
{
CargarAdmines(id);
set_task(get_pcvar_float(cvar_reload_time), "CargarAdmines", id, _, _, "b");
}
public CargarAdmines(id)
{
admin_type[id] = 0;
server_cmd("amx_reloadadmins");
server_exec();
if( get_user_flags(id) & ADMIN_CHAT )
{
get_user_name(id, g_playername[ id ], 31 );
get_user_authid(id, g_Authid[ id ], 39 );
get_user_ip(id, g_Ip[ id ], 19, 1 );
new configsdir[64], g_data[160], g_auth[44], g_pw[32], g_access[32], g_flags[32], g_tag[32];
get_configsdir(configsdir, charsmax(configsdir));
add(configsdir, charsmax(configsdir), "/users.ini");
new file = fopen(configsdir, "rt");
while(!feof(file))
{
fgets(file, g_data, charsmax(g_data));trim(g_data);
if(!g_data[0] || g_data[0] == ';') continue;
parse(g_data, g_auth, charsmax(g_auth), g_pw, charsmax(g_pw), g_access, charsmax(g_access), g_flags, charsmax(g_flags), g_tag, charsmax(g_tag));
if( equal(g_playername[id], g_auth) || equal(g_Authid[id], g_auth) || equal(g_Ip[id], g_auth) )
{
copy( admin_type[id], 31, g_tag );
break;
}
}
fclose(file);
}
}
public cmd_say(id)
{
static said[140];
read_args(said, charsmax(said));
remove_quotes_fix(said);
if (!ValidMessage(said, 1))return PLUGIN_HANDLED;
get_user_name(id, g_playername[id], charsmax(g_playername[]));
replace_all(said, charsmax(said), "%", "");
replace_all(said, charsmax(said), "#", "");
static color[11], prefix[111];
get_user_team(id, color, charsmax(color));
if(is_user_admin(id))
{
formatex(prefix, charsmax(prefix), "%s^x04 %s^x03 %s", is_user_alive(id) ? "^x01" : "^x01[MUERTO]^x01 ",admin_type[id], g_playername[id]);
format(said, charsmax(said), "%s^x01 :^x04 %s", prefix, said);
}
else
{
formatex(prefix, charsmax(prefix), "%s ^x03 %s", is_user_alive(id) ? "^x01" : "^x01[MUERTO]^x01 ", g_playername[id]);
format(said, charsmax(said), "%s^x01 : %s", prefix, said);
}
static i, team[11];
for (i = 1; i <= g_maxplayers; i++)
{
if (!is_user_connected(i))continue;
get_user_team(i, team, charsmax(team));
changeTeamInfo(i, color);
writeMessage(i, said);
changeTeamInfo(i, team);
}
return PLUGIN_HANDLED_MAIN;
}
public cmd_say_team(id)
{
static said[140];
read_args(said, charsmax(said));
remove_quotes_fix(said);
if (!ValidMessage(said, 1))return PLUGIN_HANDLED;
get_user_name(id, g_playername[id], charsmax(g_playername[]));
replace_all(said, charsmax(said), "%", "");
replace_all(said, charsmax(said), "#", "");
static playerTeam, playerTeamName[19];
playerTeam = get_user_team(id);
switch (playerTeam)
{
case 1: copy(playerTeamName, 13, "Terro");
case 2: copy(playerTeamName, 17, "Poli");
default: copy(playerTeamName, 7, "SPEC");
}
static color[11], prefix[111];
get_user_team(id, color, charsmax(color));
if(is_user_admin(id))
{
formatex(prefix, charsmax(prefix), "%s[^x03%s^x01]^x04 %s^x03%s", is_user_alive(id) ? "^x01" : "^x01[MUERTO]^x01 ", playerTeamName, admin_type[id], g_playername[id]);
format(said, charsmax(said), "%s^x01 :^x04 %s", prefix, said);
}
else
{
formatex(prefix, charsmax(prefix), "%s[^x03%s^x01]^x03 %s", is_user_alive(id) ? "^x01" : "^x01[MUERTO]^x01 ", playerTeamName, g_playername[id]);
format(said, charsmax(said), "%s^x01 : %s", prefix, said);
}
static i, team[11];
for (i = 1; i <= g_maxplayers; i++)
{
if(!is_user_connected(i))continue;
if (get_user_team(i) == playerTeam)
{
get_user_team(i, team, charsmax(team));
changeTeamInfo(i, color);
writeMessage(i, said);
changeTeamInfo(i, team);
}
}
return PLUGIN_HANDLED_MAIN;
}
stock remove_quotes_fix(str[])
{
static len; len = strlen(str);
if(len <=1)return 0;
str[--len] = EOS;
for(new i = 0; i < len; i++)
{
if(str[i] == '"')
{
copy(str, len, str[++i]);
return len-i;
}
}
return 0;
}
public changeTeamInfo(player, team[])
{
message_begin(MSG_ONE, get_user_msgid( "TeamInfo" ), _, player)
write_byte(player)
write_string(team)
message_end()
}
public writeMessage(player, message[])
{
message_begin(MSG_ONE, get_user_msgid( "SayText" ), {0, 0, 0}, player)
write_byte(player)
write_string(message)
message_end()
}
stock ValidMessage(text[], maxcount)
{
static len, i, count;
len = strlen(text);
count = 0;
if (!len) return false;
for (i = 0; i < len; i++)
{
if (text[i] != ' ')
{
count++
if (count >= maxcount)
return true;
}
}
return false;
}