|
Junior Member
|

10-30-2017
, 12:12
Re: [Help] admin sma edits
|
#10
|
try this one:
Quote:
/* Plugin generated by AMXX-Studio */
#include <amxmodx>
#include <amxmisc>
#include <cstrike>
#define PLUGIN "New Plug-In"
#define VERSION "1.0"
#define AUTHOR "author"
#pragma tabsize 0
new g_iMsgID_SayText;
new g_iAdminChatFlag = ADMIN_CHAT;
new Array:szTags
new g_iPlayerTag[33]
new Array:user_authtype, Array:user_name
public plugin_init() {
register_plugin(PLUGIN, VERSION, AUTHOR)
g_iMsgID_SayText = get_user_msgid( "SayText" );
new szCommand[ 32 ], iFlags;
for( new i = 0; get_concmd( i, szCommand, charsmax( szCommand ), iFlags, "", 0, 0, -1 ); i++ )
{
if( equal( szCommand, "amx_chat" ) )
{
g_iAdminChatFlag = iFlags;
break;
}
}
loadTags();
user_authtype = ArrayCreate(1, 1)
user_name = ArrayCreate(32, 1)
szTags = ArrayCreate(32, 1)
}
public client_putinserver(id)
{
g_iPlayerTag[id] = -1
static user_authstring[64], authstring[64], find
find = -1
for(new i = 0; i < ArraySize(user_authtype); i++)
{
ArrayGetString(user_name, i, authstring, charsmax(authstring))
switch(ArrayGetCell(user_authtype, i)) {
case 0: {
get_user_authid(id, user_authstring, charsmax(user_authstring))
if(equal(authstring, user_authstring)) find = i
}
case 1: {
get_user_name(id, user_authstring, charsmax(user_authstring))
if(equal(authstring, user_authstring)) find = i
}
case 2: {
get_user_ip(id, user_authstring, charsmax(user_authstring), 1)
if(equal(authstring, user_authstring)) find = i
}
}
}
if(find != -1)
g_iPlayerTag[id] = find
}
public CmdSay( iPlayer )
{
if( !g_iPlayerTag[iPlayer] )
{
return PLUGIN_CONTINUE;
}
if( !is_user_connected( iPlayer ) )
{
return PLUGIN_HANDLED_MAIN;
}
new szArgs[ 194 ];
if( !IsValidMessage( iPlayer, true, szArgs, charsmax( szArgs ) ) )
{
return PLUGIN_HANDLED_MAIN;
}
new iAlive = is_user_alive( iPlayer );
new CsTeams:iTeam = CsTeams: ( ( _:cs_get_user_team( iPlayer ) ) % 3 );
new iPlayers[ 32 ], iNum;
get_players( iPlayers, iNum );
new szName[ 32 ];
get_user_name( iPlayer, szName, charsmax( szName ) );
new const szPrefixes[ 2 ][ CsTeams ][ ] =
{
{
"*SPEC* ",
"*DEAD* ",
"*DEAD* ",
"*DEAD* "
},
{
"",
"",
"",
""
}
};
new szMessage[ 191 ];
replace_all( szMessage, 190, "%s", "" );
static name[32], Tag[32], Temp[ 100 ];
if(g_iPlayerTag[iPlayer] != -1) {
ArrayGetString(szTags, g_iPlayerTag[iPlayer], Tag, charsmax(Tag))
}
get_user_name (iPlayer, name, 31)
formatex( Temp, charsmax(Temp), "^1%s^4%s^3 %s^1 : %s", szPrefixes[ iAlive ][ iTeam ], Tag, name, szArgs );
new iTarget;
for( new i = 0; i < iNum; i++ )
{
iTarget = iPlayers[ i ];
if( iTarget == iPlayer || ( iAlive || is_user_connected( iTarget ) ) && is_user_alive( iTarget ) == iAlive )
{
message_begin( MSG_ONE_UNRELIABLE, g_iMsgID_SayText, _, iTarget );
write_byte( iPlayer );
write_string( szMessage );
message_end( );
}
}
return PLUGIN_HANDLED_MAIN;
}
public CmdSayTeam( iPlayer )
{
if( !g_iPlayerTag[iPlayer] )
{
return PLUGIN_CONTINUE;
}
if( !is_user_connected( iPlayer ) )
{
return PLUGIN_HANDLED_MAIN;
}
new szArgs[ 194 ];
if( !IsValidMessage( iPlayer, true, szArgs, charsmax( szArgs ) ) )
{
return PLUGIN_HANDLED_MAIN;
}
new iAlive = is_user_alive( iPlayer );
new CsTeams:iTeam = CsTeams: ( ( _:cs_get_user_team( iPlayer ) ) % 3 );
new iPlayers[ 32 ], iNum;
get_players( iPlayers, iNum );
new szName[ 32 ];
get_user_name( iPlayer, szName, charsmax( szName ) );
new const szPrefixes[ 2 ][ CsTeams ][ ] =
{
{
"(Spectator)",
"*DEAD*(Terrorist)",
"*DEAD*(Counter-Terrorist)",
""
},
{
"(Spectator)",
"(Terrorist)",
"(Counter-Terrorist)",
""
}
};
new szMessage[ 191 ];
replace_all( szMessage, 190, "%s", "" );
new name[32], Tag[20], Temp[ 51 ];
if(g_iPlayerTag[iPlayer] != -1) {
ArrayGetString(szTags, g_iPlayerTag[iPlayer], Tag, charsmax(Tag))
}
get_user_name (iPlayer, name, 31)
formatex( Temp, charsmax(Temp), "^1%s^4 %s^3 %s^1 : %s", szPrefixes[ iAlive ][ iTeam ], Tag, name, szArgs );
for( new i = 0, iTeammate; i < iNum; i++ )
{
iTeammate = iPlayers[ i ];
if( iTeammate == iPlayer || ( iAlive || is_user_connected( iTeammate ) ) && is_user_alive( iTeammate ) == iAlive && CsTeams: ( ( _:cs_get_user_team( iTeammate ) ) % 3 ) == iTeam )
{
message_begin( MSG_ONE_UNRELIABLE, g_iMsgID_SayText, _, iTeammate );
write_byte( iPlayer );
write_string( szMessage );
message_end( );
}
}
return PLUGIN_HANDLED_MAIN;
}
bool:IsValidMessage( iPlayer, bool:bTeamSay, szMessage[ ], iLen )
{
read_args( szMessage, iLen );
remove_quotes( szMessage );
if( !szMessage[ 0 ] )
{
return false;
}
new iPos, cChar, i;
while( ( cChar = szMessage[ iPos ] ) == '@' )
{
i++;
iPos++;
}
if( i > 0 )
{
return ( !( bTeamSay ? ( i == 1 ) : ( 1 <= i <= 3 ) ) || !access( iPlayer, g_iAdminChatFlag ) );
}
while( 0 < ( cChar = szMessage[ iPos++ ] ) <= 255 )
{
if( cChar != ' ' && cChar != '%' )
{
return true;
}
}
return false;
}
loadTags()
{
// load tags from file
new sConfig[128]; get_localinfo("amxx_configsdir", sConfig, charsmax(sConfig))
formatex(sConfig, charsmax(sConfig), "%s/users.ini", sConfig);
new Len, Line[512], Data[5][64], authtype, MaxFileLine;
MaxFileLine = file_size(sConfig, 1);
for(new Num; Num < MaxFileLine; Num++)
{
read_file(sConfig, Num, Line, charsmax(Line), Len);
parse(Line, Data[0], charsmax(Data[]), Data[1], charsmax(Data[]), Data[2], charsmax(Data[]), Data[3], charsmax(Data[]), Data[4], charsmax(Data[]));
if(Line[0] == ';' || 2 > strlen(Line) || !Line[0] || Line[0] == '/' || Line[0] == '\')
continue;
remove_quotes(Data[0]); // Nick/Steam/IP
remove_quotes(Data[1]); // Password
remove_quotes(Data[2]); // Acess Flag
remove_quotes(Data[3]); // Acess Type
remove_quotes(Data[4]); // TAG
if(contain(Data[3], "c") != -1)
authtype = 0 // Steam
else if(contain(Data[3], "d") != -1) // IP
authtype = 2
else // Nick
authtype = 1
ArrayPushString(user_name, Data[0])
ArrayPushCell(user_authtype, authtype)
static szTag[32]
formatex(szTag, charsmax(szTag), "%s", Data[4])
replace_all(szTag, charsmax(szTag), "!g", "^x04")
replace_all(szTag, charsmax(szTag), "!y", "^x01")
replace_all(szTag, charsmax(szTag), "!t", "^x03")
replace_all(szTag, charsmax(szTag), "/g", "^x04")
replace_all(szTag, charsmax(szTag), "/y", "^x01")
replace_all(szTag, charsmax(szTag), "/t", "^x03")
ArrayPushString(szTags, szTag)
}
}
|
Last edited by zmd69; 10-30-2017 at 12:15.
|
|