24/04/2019, 12:46 AM
(Última modificación: 08/05/2019, 05:12 PM por DavidLG. Edited 6 times in total.)
Código:
/* Plugin generated by AMXX-Studio */
#include <amxmodx>
#include <amxmisc>
enum _:ADM_DATA { ADMIN_TYPE[ 30 ], ADMIN_FLAGS }
new const Admins[][ADM_DATA] =
{
{ "[OFF]~[Dueño]", ADMIN_RCON },
{ "[OFF]~[Sub-Dueño]", ADMIN_CFG },
{ "[OFF]~[STAFF]", ADMIN_PASSWORD },
{ "[OFF]~[SOCIO-PREMIUN]", ADMIN_LEVEL_B},
{ "[OFF]~[VIP-PREMIUN]", ADMIN_LEVEL_D },
{ "[OFF]~[ADMIN-FULL]", ADMIN_LEVEL_C },
{ "[OFF]~[ADMIN-BASICO]", ADMIN_LEVEL_E }
};
new kAdminType[ 33 ][ 30 ], kMP, kPN[ 33 ][ 32 ], cvar_adminlisten, admlisten;
public plugin_init()
{
register_plugin( "Admin Say n Types" , "1.0" , "RAMBO" );
register_clcmd("say", "BlockSay")
register_clcmd("say_team", "BlockTeamSay")
// Cvar Definicion
// 0 = Los vivos no pueden leer a los muertos
// 1 = Los vivos no pueden leer a los muertos, Excepto los admins
// 2 = Todos se pueden leer
cvar_adminlisten = register_cvar( "amx_adminlisten", "1" );
admlisten = get_pcvar_num( cvar_adminlisten );
kMP = get_maxplayers();
}
public client_putinserver( index )
{
get_user_name( index, kPN[ index ], 31 );
kAdminType[ index ] = "^0";
if(is_user_admin( index ))
{
static i, flags; flags = get_user_flags( index );
for(i = 0 ; i < sizeof Admins ; i++ )
{
if(flags & Admins[i][ADMIN_FLAGS])
{
formatex(kAdminType[index], charsmax(kAdminType), "%s", Admins[i][ADMIN_TYPE]);
break;
}
}
}
}
public BlockSay( index )
{
static said[191];
read_args(said, charsmax(said));
remove_quotes(said);
replace_all(said, charsmax(said), "%", " "); replace_all(said, charsmax(said), "#", " ");
if (!ValidMessage(said, 1)) return PLUGIN_CONTINUE;
static color[11], prefix[91]
get_user_team(index, color, charsmax(color))
formatex(prefix, charsmax(prefix), "%s^x04%s^x03 %s",
is_user_alive( index ) ? "^x01" : "^x01*MUERTO* ", kAdminType[ index ], kPN[ index ])
if (is_user_admin(index)) format(said, charsmax(said), "^x04%s", said)
format(said, charsmax(said), "%s^x01 : %s", prefix, said)
static i, team[11];
for (i = 1; i <= kMP; i++)
{
if (!is_user_connected(i)) continue;
if( admlisten == 0 && ( is_user_alive( index ) && is_user_alive( i ) || !is_user_alive( index ) && !is_user_alive(i))
|| admlisten == 1 && (is_user_admin(i) || is_user_alive( index ) && is_user_alive( i ) || !is_user_alive( index ) && !is_user_alive(i))
|| admlisten == 2 )
{
get_user_team(i, team, charsmax(team))
changeTeamInfo(i, color)
writeMessage(i, said)
changeTeamInfo(i, team)
}
}
return PLUGIN_HANDLED_MAIN;
}
public BlockTeamSay( index )
{
static said[191];
read_args(said, charsmax(said));
remove_quotes(said);
replace_all(said, charsmax(said), "%", " "); replace_all(said, charsmax(said), "#", " ");
if (!ValidMessage(said, 1)) return PLUGIN_CONTINUE;
static playerTeam, teamname[19];
playerTeam = get_user_team(index);
switch (playerTeam)
{
case 1: formatex( teamname, 18, " ^x01[^x03 TT^x01 ] ");
case 2: formatex( teamname, 18, " ^x01[^x03 CT^x01 ] ");
default: formatex( teamname, 18, " ^x01[^x03 SPEC^x01 ] ");
}
static color[11], prefix[91]
get_user_team(index, color, charsmax(color))
formatex(prefix, charsmax(prefix), "%s%s^x04%s^x03 %s",
is_user_alive( index ) ? "^x01" : "^x01*MUERTO* ", teamname, kAdminType[ index ], kPN[ index ])
if (is_user_admin(index)) format(said, charsmax(said), "^x04%s", said)
format(said, charsmax(said), "%s^x01 : %s", prefix, said)
static i, team[11];
for (i = 1; i <= kMP; i++)
{
if (!is_user_connected(i)) continue;
if (get_user_team(i) == playerTeam)
{
if( admlisten == 0 && ( is_user_alive( index ) && is_user_alive( i ) || !is_user_alive( index ) && !is_user_alive(i))
|| admlisten == 1 && (is_user_admin(i) || is_user_alive( index ) && is_user_alive( i ) || !is_user_alive( index ) && !is_user_alive(i))
|| admlisten == 2 )
{
get_user_team(i, team, charsmax(team))
changeTeamInfo(i, color)
writeMessage(i, said)
changeTeamInfo(i, team)
}
}
}
return PLUGIN_HANDLED_MAIN;
}
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;
}
SI NO VAS AYUDAR, POR FAVOR NO COMENTAR