New Member
|
06-10-2021
, 11:23
custom amx_who
|
#1
|
Hi, I recently started using an admin plugin named Elite Admin System, but I would like it to have a custom amx_who that would only show online admins, not all players.
Current amx_who:
Name SteamID Ip Flags Rank
playername steamid ip userflags userrank
playername2 steamid2 ip2 userflags2 userrank2
Wanted amx_who:
==========[SLXD]==========
=>Rank1<=
playername
=>Rank2<=
=>Rank3<=
playername2
etc
==========[SLXD]==========
EliteAdminSystem_Commands.sma:
Code:
#include < amxmodx >
#include < amxmisc >
#include < cromchat >
#include < unixtime >
#include < hamsandwich >
#include < fakemeta >
#include < engine >
#include < fun >
#include < cstrike >
#include < eas_core >
#include < eas_ranks >
#define PLUGIN_AUTHOR "DoNii"
#define PLUGIN_NAME "Elite Admin System Commands"
new const szVersion[ ] = "6.7.2";
#if defined client_disconnected
#define client_disconnect client_disconnected
#endif
enum
{
CHAT = 0,
CONSOLE,
LOG
}
enum
{
TEAM_UNASSIGNED = 0,
TEAM_T,
TEAM_CT,
TEAM_SPEC
}
enum _:PlayerBan
{
Player_Name[ MAX_NAME_LENGTH ],
Player_SteamId[ MAX_AUTHID_LENGTH ],
Player_IP[ MAX_IP_LENGTH ],
Player_BanExpire[ MAX_DATE_LENGTH ],
Player_BanReason[ MAX_REASON_LENGTH ],
Player_BannedBy[ MAX_NAME_LENGTH ]
}
enum _:PlayerGag
{
Player_Name[ MAX_NAME_LENGTH ],
Player_SteamId[ MAX_AUTHID_LENGTH ],
Player_IP[ MAX_IP_LENGTH ],
Player_GagExpire[ MAX_DATE_LENGTH ],
Player_GagReason[ MAX_REASON_LENGTH ],
Player_GagFlags[ 5 ],
Player_GaggedBy[ MAX_NAME_LENGTH ]
}
enum _:PlayerData
{
Player_Name[ MAX_NAME_LENGTH ],
Player_SteamID[ MAX_AUTHID_LENGTH ],
Player_Password[ MAX_PASSWORD_LENGTH ],
Player_AccessFlags[ MAX_FLAGS_LENGTH ],
Player_Prefix[ 32 ],
Player_Model_T[ 32 ],
Player_Model_CT[ 32 ],
Player_Expire_Date[ MAX_DATE_LENGTH ],
Player_FlagsExpire[ MAX_FLAGS_LENGTH ],
Player_Immunity,
bool:Player_Suspended,
bool:Player_Expired,
bool:Player_KeepPrivileges
}
enum _:Cvars
{
Cvar_Name[ 32 ],
Cvar_Flag
}
enum ( += 54321 )
{
TASK_KICK_MENU,
TASK_BAN_MENU,
TASK_GAG_CHECK
}
enum _:FileConfig
{
BANS_FILE[ 64 ],
GAGS_FILE[ 64 ],
CVARS_FILE[ 64 ],
LOGS_FILE[ 64 ],
USERS_FILE[ 64 ],
SYSTEM_PREFIX[ 32 ],
BANNED_CONNECT_LOG,
RANKS_ENABLED,
KICK_FLAG,
BAN_FLAG,
ADD_BAN_FLAG,
UNBAN_FLAG,
SLAY_FLAG,
SLAP_FLAG,
CVAR_FLAG,
PLUGINS_FLAG,
MAP_FLAG,
NICK_FLAG,
RCON_FLAG,
VOTE_FLAG,
SHOW_RCON_FLAG,
MODULES_FLAG,
FREEZE_FLAG,
SCREENSHOT_FLAG,
WARN_FLAG,
NOCLIP_FLAG,
GODMODE_FLAG,
COMMANDS_MENU_FLAG,
GAG_FLAG,
UNGAG_FLAG,
SAY_FLAG,
TEAM_FLAG,
IMMUNITY_FLAG,
PSAY_FLAG,
LAST_FLAG,
WHO_FLAG,
ADD_GAG_FLAG,
CHAT_FLAG,
VOTEMAP_FLAG,
DISCONNECT_INFO_SECONDS_EXPIRE,
Float:FREQUENCY_UPDATE_ALL_FILES,
Float:VOTE_TIME,
Float:VOTE_MAP_TIME
}
enum _:PlayerDisconnectData
{
Player_DisconnectName[ MAX_NAME_LENGTH ],
Player_DisconnectSteamID[ MAX_AUTHID_LENGTH ],
Player_DisconnectIP[ MAX_IP_LENGTH ],
Player_DisconnectFlags[ MAX_FLAGS_LENGTH ],
Player_DisconnectRank[ 32 ],
Player_DataExpireDate[ MAX_DATE_LENGTH ]
}
enum _:BanMsg
{
BAN_ID,
BAN_MINUTES,
BAN_REASON[ MAX_REASON_LENGTH ]
}
enum _:AddBanMsg
{
ADDBAN_ID,
ADDBAN_NAME[ MAX_NAME_LENGTH ],
ADDBAN_STEAMID[ MAX_AUTHID_LENGTH ],
ADDBAN_IP[ MAX_IP_LENGTH ],
ADDBAN_MINUTES
}
enum _:AddGagMsg
{
ADDGAG_ID,
ADDGAG_NAME[ MAX_NAME_LENGTH ],
ADDGAG_STEAMID[ MAX_AUTHID_LENGTH ],
ADDGAG_IP[ MAX_IP_LENGTH ],
ADDGAG_MINUTES,
ADDGAG_FLAGS[ 5 ]
}
enum _:SlayMsg
{
SLAY_ID,
SLAY_REASON[ MAX_REASON_LENGTH ]
}
enum _:SlapMsg
{
SLAP_ID,
SLAP_VALUE,
SLAP_REASON[ MAX_REASON_LENGTH ]
}
enum _:GagMsg
{
GAG_ID,
GAG_MINUTES,
GAG_FLAGS[ 5 ],
GAG_REASON[ MAX_REASON_LENGTH ]
}
enum
{
METHOD_NONE = 0,
METHOD_CHAT,
METHOD_LOG,
METHOD_BOTH
}
new g_iConfig[ FileConfig ];
new Array:g_aBans, Array:g_aGags, Array:g_aMaps, Array:g_aDisconnectInfo, Array:g_aCvars;
new Trie:g_tDatabase;
new g_iKick[ MAX_PLAYERS + 1 ], g_iBan[ MAX_PLAYERS + 1 ][ BanMsg ], g_iGag[ MAX_PLAYERS + 1 ][ GagMsg ], g_iAddBan[ MAX_PLAYERS + 1 ][ AddBanMsg ], g_iAddGag[ MAX_PLAYERS + 1 ][ AddGagMsg ],
g_iSlay[ MAX_PLAYERS + 1 ][ SlayMsg ], g_iSlap[ MAX_PLAYERS + 1 ][ SlapMsg ], g_iTeamSwitch[ MAX_PLAYERS + 1 ], g_szTeamSwitch[ MAX_PLAYERS + 1 ][ 20 ], g_szConfigsDir[ 128 ], g_szMapsFile[ 32 ],
g_szName[ MAX_PLAYERS + 1 ][ MAX_NAME_LENGTH ], g_szAuthId[ MAX_PLAYERS + 1 ][ MAX_AUTHID_LENGTH ], g_szIp[ MAX_PLAYERS + 1 ][ MAX_IP_LENGTH ], g_iVoteOption[ MAX_PLAYERS + 1 ], g_szVoteOptions[ 3 ][ 32 ],
g_iVoteMenu[ MAX_PLAYERS + 1 ], g_szVoteQuestion[ 32 ], g_szVoteMapOptions[ 3 ][ 32 ], g_iVoteMapOption[ MAX_PLAYERS + 1 ], g_iVoteMapMenu[ MAX_PLAYERS + 1 ], g_iVoteMapTriggeredId, g_szVoteMapTriggeredSteamId[ MAX_AUTHID_LENGTH ],
g_szVoteMapFinalOption[ 32 ];
new Float:fAngles[ MAX_PLAYERS + 1 ][ 3 ], Float:g_fLastOpened[ MAX_PLAYERS + 1 ];
new bool:g_bFrozen[ MAX_PLAYERS + 1 ], bool:g_bVoting, bool:g_bMapVoting;
new g_pRconPassword, g_iFwThink, g_iInfoChangedFwd;
new g_szHudColors[ ][ ][ ] =
{
{ "Red", 255, 0, 0 },
{ "Green", 0, 255, 0 },
{ "Blue", 0, 0, 255 },
{ "Purple", 128, 0, 128 },
{ "Orange", 255, 128, 0 }
}
public plugin_precache( )
{
get_configsdir( g_szConfigsDir, charsmax( g_szConfigsDir ) );
register_dictionary( "elite_admin_system.txt" );
g_aGags = ArrayCreate( PlayerGag );
g_aBans = ArrayCreate( PlayerBan );
g_aDisconnectInfo = ArrayCreate( PlayerDisconnectData );
g_aMaps = ArrayCreate( 32 );
g_aCvars = ArrayCreate( Cvars );
g_tDatabase = TrieCreate( );
get_cvar_string( "mapcyclefile", g_szMapsFile, charsmax( g_szMapsFile ) );
ReadConfig( );
ReadBans( );
ReadGags( );
ReadUsers( );
ReadMaps( );
ReadCvars( );
}
public plugin_init( )
{
register_plugin( PLUGIN_NAME, szVersion, PLUGIN_AUTHOR );
new szPrefix[ 32 ];
formatex( szPrefix, charsmax( szPrefix ), "&x04%s", g_iConfig[ SYSTEM_PREFIX ] );
CC_SetPrefix( szPrefix );
set_task( g_iConfig[ FREQUENCY_UPDATE_ALL_FILES ], "UpdateAllFiles", .flags="b" );
register_cvar( "eas_version", szVersion, FCVAR_SERVER | FCVAR_SPONLY | FCVAR_UNLOGGED );
register_clcmd( "say", "OnSay" );
register_clcmd( "say_team", "OnSay" );
g_pRconPassword = get_cvar_pointer( "rcon_password" );
RegisterHam( Ham_Killed, "player", "@Ham_Killed_Post", 1 );
register_message( get_user_msgid( "SayText" ), "Msg_SayText" );
/////////////////// MessageMode Commands //////////////////////
register_clcmd( "kickReason", "OnKickPlayer" );
register_clcmd( "banPlayerMinutes", "OnBanPlayerMinutes" );
register_clcmd( "banPlayerReason", "OnBanPlayerReason" );
register_clcmd( "gagPlayerMinutes", "OnGagPlayerMinutes" );
register_clcmd( "gagPlayerFlags", "OnGagPlayerFlags" );
register_clcmd( "gagPlayerReason", "OnGagPlayerReason" );
register_clcmd( "addbanPlayerName", "OnAddbanPlayerName" );
register_clcmd( "addbanPlayerSteamID", "OnAddbanPlayerSteamID" );
register_clcmd( "addbanPlayerIP", "OnAddbanPlayerIP" );
register_clcmd( "addbanPlayerMinutes", "OnAddbanPlayerMinutes" );
register_clcmd( "addbanPlayerReason", "OnAddbanPlayerReason" );
register_clcmd( "addgagPlayerName", "OnAddGagPlayerName" );
register_clcmd( "addgagPlayerSteamID", "OnAddGagPlayerSteamID" );
register_clcmd( "addgagPlayerIP", "OnAddGagPlayerIP" );
register_clcmd( "addgagPlayerMinutes", "OnAddGagPlayerMinutes" );
register_clcmd( "addgagPlayerFlags", "OnAddGagPlayerFlags" );
register_clcmd( "addgagPlayerReason", "OnAddGagPlayerReason" );
register_clcmd( "slayPlayerReason", "OnSlayPlayerReason" );
register_clcmd( "slapPlayerValue", "OnSlapPlayerValue" );
register_clcmd( "slapPlayerReason", "OnSlapPlayerReason" );
//////////////////// Console Commands ////////////////////
register_concmd( "amx_kick", "@Kick" );
register_concmd( "amx_ban", "@Ban" );
register_concmd( "amx_addban", "@AddBan" );
register_concmd( "amx_unban", "@Unban" );
register_concmd( "amx_slay", "@Slay" );
register_concmd( "amx_slap", "@Slap" );
register_concmd( "amx_cvar", "@Cvar" );
register_concmd( "amx_plugins", "@Plugins" );
register_concmd( "amx_map", "@Map" );
register_concmd( "amx_nick", "@Nick" );
register_concmd( "amx_rcon", "@Rcon" );
register_concmd( "amx_showrcon", "@ShowRcon" );
register_concmd( "amx_modules", "@Modules" );
register_concmd( "amx_freeze", "@Freeze" );
register_concmd( "amx_ss", "@Screenshot" );
register_concmd( "amx_help", "@Help" );
register_concmd( "amx_noclip", "@Noclip" );
register_concmd( "amx_godmode", "@Godmode" );
register_concmd( "amx_warn", "@Warn" );
register_concmd( "amx_gag", "@Gag" );
register_concmd( "amx_ungag", "@UnGag" );
register_concmd( "amx_say", "@AdminSay" );
register_concmd( "amx_team", "@Team" );
register_concmd( "amx_psay", "@Psay" );
register_concmd( "amx_last", "@Last" );
register_concmd( "amx_who", "@Who" );
register_concmd( "amx_addgag", "@AddGag" );
register_concmd( "amx_chat", "@AdminChat" );
register_concmd( "amx_exgag", "@ExtendGag" );
register_concmd( "amx_regag", "@ReduceGag" );
register_concmd( "amx_tsay", "@Tsay" );
register_concmd( "amx_vote", "@Vote" );
register_concmd( "amx_votemap", "@VoteMap" );
//////////////////////////////////////////////////////////
}
public plugin_end( )
{
ArrayDestroy( g_aBans );
ArrayDestroy( g_aDisconnectInfo );
ArrayDestroy( g_aGags );
ArrayDestroy( g_aMaps );
ArrayDestroy( g_aCvars );
TrieDestroy( g_tDatabase );
}
//////////////////////////////////////////////////////////// TASKS ///////////////////////////////////////////////////////////////////////////////////////////
public UpdateAllFiles( )
{
ReadUsers( );
CheckGagExpire( );
ReadBans( );
ReadGags( );
}
public CheckGagExpire( )
{
new iPlayers[ MAX_PLAYERS ], iNum, iTempId;
get_players( iPlayers, iNum, "ch" );
for( new i; i < iNum; i++ )
{
iTempId = iPlayers[ i ];
if( IsGagged( iTempId ) && get_speak( iTempId ) == SPEAK_MUTED )
{
new eData[ PlayerGag ];
for( new i; i < ArraySize( g_aGags ); i++ )
{
ArrayGetArray( g_aGags, i, eData );
if( equali( g_szAuthId[ iTempId ], eData[ Player_SteamId ] ) || equali( g_szIp[ iTempId ], eData[ Player_IP ] ) && HasDatePassed( eData[ Player_GagExpire ] ) )
{
set_speak( iTempId, SPEAK_NORMAL );
break;
}
}
}
}
return PLUGIN_CONTINUE;
}
public OnMapChange( const szMap[ ] )
{
server_cmd( "changelevel %s", szMap );
}
public ReOpenKickMenu( id )
{
id -= TASK_KICK_MENU;
KickMenu( id );
}
public ReOpenBanMenu( id )
{
id -= TASK_BAN_MENU;
BanMenu( id );
}
////////////////////////////////////////////////////////// END OF TASKS //////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////// EVENTS ///////////////////////////////////////////////////////////////////////////////////////////////////////////////
@Ham_Killed_Post( iVictim )
{
g_bFrozen[ iVictim ] = false;
}
public client_disconnect( id )
{
CacheInfo( id );
CleanVars( id );
}
public client_connect( id )
{
CleanVars( id );
}
public client_authorized( id )
{
get_user_authid( id, g_szAuthId[ id ], charsmax( g_szAuthId[ ] ) );
get_user_name( id, g_szName[ id ], charsmax( g_szName[ ] ) );
get_user_ip( id, g_szIp[ id ], charsmax( g_szIp[ ] ), 1 );
CheckGagged( id );
CheckBanned( id );
}
public client_putinserver( id )
{
get_user_authid( id, g_szAuthId[ id ], charsmax( g_szAuthId[ ] ) );
get_user_name( id, g_szName[ id ], charsmax( g_szName[ ] ) );
get_user_ip( id, g_szIp[ id ], charsmax( g_szIp[ ] ), 1 );
CheckGagged( id );
CheckBanned( id );
}
public Msg_SayText( msg_id, msg_dest, msg_entity )
{
new szArg2[ 32 ];
get_msg_arg_string( 2, szArg2, charsmax( szArg2 ) );
if( equal( szArg2, "#Cstrike_Name_Change" ) )
{
g_iInfoChangedFwd = register_forward( FM_ClientUserInfoChanged , "ClientUserInfoChanged", 1 );
}
}
public ClientUserInfoChanged( id )
{
if( is_user_connected( id ) )
{
get_user_name( id, g_szName[ id ], charsmax( g_szName[ ] ) );
unregister_forward( FM_ClientUserInfoChanged, g_iInfoChangedFwd );
}
}
public OnSay( id )
{
if( IsGagged( id ) )
{
new eData[ PlayerGag ];
for( new i; i < ArraySize( g_aGags ); i++ )
{
ArrayGetArray( g_aGags, i, eData );
if( ( equali( g_szAuthId[ id ], eData[ Player_SteamId ] ) || equali( g_szIp[ id ], eData[ Player_IP ] ) ) && ( containi( eData[ Player_GagFlags ], "s" ) != -1 ) )
{
if( equali( eData[ Player_GagExpire ], "never" ) )
{
CC_SendMessage( id, "%L", id, "GAG_EXPIRES_NEVER" );
return PLUGIN_HANDLED;
}
else if( ! HasDatePassed( eData[ Player_GagExpire ] ) )
{
CC_SendMessage( id, "%L", id, "GAG_EXPIRES_IN", ( parse_time( eData[ Player_GagExpire ], "%m/%d/%Y %H:%M:%S" ) - get_systime( ) ) );
return PLUGIN_HANDLED;
}
}
}
}
return PLUGIN_CONTINUE;
}
public fw_PlayerPreThink( id )
{
if( is_user_alive( id ) && g_bFrozen[ id ] )
{
set_pev( id, pev_v_angle, fAngles[ id ] );
set_pev( id, pev_fixangle, 1 );
}
}
////////////////////////////////////////////////////////// END OF EVENTS ///////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////// MessageMode ///////////////////////////////////////////////////////////////////////////////////////////
public OnAddbanPlayerName( id )
{
new szName[ MAX_NAME_LENGTH ];
read_args( szName, charsmax( szName ) );
trim( szName );
remove_quotes( szName );
if( ! szName[ 0 ] )
{
CC_SendMessage( id, "%L", id, "EMPTY_STRING" );
return PLUGIN_HANDLED;
}
new iPlayer = find_player( "al", szName );
if( iPlayer )
{
new iImmunityLevel = GetImmunityLevel( id );
new iImmunityLevelTarget = GetImmunityLevel( iPlayer );
if( iImmunityLevel < iImmunityLevelTarget )
{
CC_SendMessage( id, "%L", id, "CANT_PERFORM_IMMUNITY" );
arrayset( g_iAddBan[ id ], 0, sizeof( g_iAddBan[ ] ) );
return PLUGIN_HANDLED;
}
g_iAddBan[ id ][ ADDBAN_ID ] = iPlayer;
}
else
{
g_iAddBan[ id ][ ADDBAN_ID ] = 0;
}
copy( g_iAddBan[ id ][ ADDBAN_NAME ], charsmax( g_iAddBan[ ] ), szName );
client_cmd( id, "messagemode addbanPlayerSteamID" );
return PLUGIN_HANDLED;
}
public OnAddbanPlayerSteamID( id )
{
new szSteamId[ MAX_AUTHID_LENGTH ];
read_args( szSteamId, charsmax( szSteamId ) );
trim( szSteamId );
remove_quotes( szSteamId );
if( ! szSteamId[ 0 ] )
{
CC_SendMessage( id, "%L", id, "EMPTY_STRING" );
return PLUGIN_HANDLED;
}
if( ! g_iAddBan[ id ][ ADDBAN_ID ] )
{
new iPlayer = find_player( "cl", szSteamId );
if( iPlayer )
{
new iImmunityLevel = GetImmunityLevel( id );
new iImmunityLevelTarget = GetImmunityLevel( iPlayer );
if( iImmunityLevel < iImmunityLevelTarget )
{
CC_SendMessage( id, "%L", id, "CANT_PERFORM_IMMUNITY" );
arrayset( g_iAddBan[ id ], 0, sizeof( g_iAddBan[ ] ) );
return PLUGIN_HANDLED;
}
g_iAddBan[ id ][ ADDBAN_ID ] = iPlayer;
}
else
{
g_iAddBan[ id ][ ADDBAN_ID ] = 0;
}
}
copy( g_iAddBan[ id ][ ADDBAN_STEAMID ], charsmax( g_iAddBan[ ] ), szSteamId );
client_cmd( id, "messagemode addbanPlayerIP" );
return PLUGIN_HANDLED;
}
public OnAddbanPlayerIP( id )
{
new szIP[ MAX_IP_LENGTH ];
read_args( szIP, charsmax( szIP ) );
trim( szIP );
remove_quotes( szIP );
if( ! szIP[ 0 ] )
{
CC_SendMessage( id, "%L", id, "EMPTY_STRING" );
return PLUGIN_HANDLED;
}
if( ! g_iAddBan[ id ][ ADDBAN_ID ] )
{
new iPlayer = find_player( "dl", szIP );
if( iPlayer )
{
new iImmunityLevel = GetImmunityLevel( id );
new iImmunityLevelTarget = GetImmunityLevel( iPlayer );
if( iImmunityLevel < iImmunityLevelTarget )
{
CC_SendMessage( id, "%L", id, "CANT_PERFORM_IMMUNITY" );
arrayset( g_iAddBan[ id ], 0, sizeof( g_iAddBan[ ] ) );
return PLUGIN_HANDLED;
}
g_iAddBan[ id ][ ADDBAN_ID ] = iPlayer;
}
else
{
g_iAddBan[ id ][ ADDBAN_ID ] = 0;
}
}
copy( g_iAddBan[ id ][ ADDBAN_IP ], charsmax( g_iAddBan[ ] ), szIP );
client_cmd( id, "messagemode addbanPlayerMinutes" );
return PLUGIN_HANDLED;
}
public OnAddbanPlayerMinutes( id )
{
new szMinutes[ 8 ];
read_args( szMinutes, charsmax( szMinutes ) );
trim( szMinutes );
remove_quotes( szMinutes );
new iMinutes = str_to_num( szMinutes );
if( ! is_str_num( szMinutes ) || iMinutes < 0 )
{
send_message( id, CHAT, false, "%L", id, "INVALID_VALUE" );
arrayset( g_iAddBan[ id ], 0, sizeof( g_iAddBan[ ] ) );
return PLUGIN_HANDLED;
}
g_iAddBan[ id ][ ADDBAN_MINUTES ] = iMinutes;
client_cmd( id, "messagemode addbanPlayerReason" );
return PLUGIN_HANDLED;
}
public OnAddbanPlayerReason( id )
{
new szReason[ MAX_REASON_LENGTH ], iPlayers[ MAX_PLAYERS ], iNum, iTempId;
read_args( szReason, charsmax( szReason ) );
trim( szReason );
remove_quotes( szReason );
new iPlayer = g_iAddBan[ id ][ ADDBAN_ID ];
if( is_user_connected( iPlayer ) )
{
if( ( equali( g_szAuthId[ iPlayer ], g_iAddBan[ id ][ ADDBAN_STEAMID ] ) || equali( g_szIp[ iPlayer ], g_iAddBan[ id ][ ADDBAN_IP ] ) ) ) // is it the same guy?
{
if( ( get_user_flags( iPlayer ) & g_iConfig[ IMMUNITY_FLAG ] ) || GetImmunityLevel( iPlayer ) >= GetImmunityLevel( id ) )
{
return PLUGIN_HANDLED;
}
}
else
{
iPlayer = 0;
}
}
new szExpireDate[ MAX_DATE_LENGTH ], iMinutes = g_iAddBan[ id ][ ADDBAN_MINUTES ];
get_players( iPlayers, iNum, "ch" );
if( iMinutes == 0 )
{
for( new i; i < iNum; i++ )
{
iTempId = iPlayers[ i ];
if( get_user_flags( iTempId ) & ADMIN_KICK )
{
CC_SendMessage( iTempId, "%L", iTempId, "ADDED_TO_BANLIST_PERMANENT", g_szName[ id ], g_iAddBan[ id ][ ADDBAN_NAME ], g_iAddBan[ id ][ ADDBAN_STEAMID ], g_iAddBan[ id ][ ADDBAN_IP ], szReason );
}
}
send_message( 0, LOG, false, "%L", LANG_PLAYER, "LOG_ADDED_TO_BANLIST_PERMANENT", g_szName[ id ], g_szAuthId[ id ], g_iAddBan[ id ][ ADDBAN_NAME ], g_iAddBan[ id ][ ADDBAN_STEAMID ], g_iAddBan[ id ][ ADDBAN_IP ], szReason );
copy( szExpireDate, charsmax( szExpireDate ), "never" );
}
else
{
get_time( "%m/%d/%Y %H:%M:%S", szExpireDate, charsmax( szExpireDate ) );
AddMinutesToDate( szExpireDate, iMinutes, szExpireDate, charsmax( szExpireDate ) );
for( new i; i < iNum; i++ )
{
iTempId = iPlayers[ i ];
if( get_user_flags( iTempId ) & ADMIN_KICK )
{
CC_SendMessage( iTempId, "%L", iTempId, "ADDED_TO_BANLIST", g_szName[ id ], g_iAddBan[ id ][ ADDBAN_NAME ], g_iAddBan[ id ][ ADDBAN_STEAMID ], g_iAddBan[ id ][ ADDBAN_IP ], iMinutes, szReason );
}
}
send_message( 0, LOG, false, "%L", LANG_PLAYER, "LOG_ADDED_TO_BANLIST", g_szName[ id ], g_szAuthId[ id ], g_iAddBan[ id ][ ADDBAN_NAME ], g_iAddBan[ id ][ ADDBAN_STEAMID ], g_iAddBan[ id ][ ADDBAN_IP ], iMinutes, szExpireDate, szReason );
}
trim( szExpireDate );
trim( szReason );
new eData[ PlayerBan ];
copy( eData[ Player_Name ], charsmax( eData[ Player_Name ] ), g_iAddBan[ id ][ ADDBAN_NAME ] );
copy( eData[ Player_SteamId ], charsmax( eData[ Player_SteamId ] ), g_iAddBan[ id ][ ADDBAN_STEAMID ] );
copy( eData[ Player_IP ], charsmax( eData[ Player_IP ] ), g_iAddBan[ id ][ ADDBAN_IP ] );
copy( eData[ Player_BanExpire ], charsmax( eData[ Player_BanExpire ] ), szExpireDate );
copy( eData[ Player_BanReason ], charsmax( eData[ Player_BanReason ] ), szReason );
copy( eData[ Player_BannedBy ], charsmax( eData[ Player_BannedBy ] ), g_szName[ id ] );
ArrayPushArray( g_aBans, eData );
AddBan( g_iAddBan[ id ][ ADDBAN_NAME ], g_iAddBan[ id ][ ADDBAN_STEAMID ], g_iAddBan[ id ][ ADDBAN_IP ], szExpireDate, szReason, g_szName[ id ] );
arrayset( g_iAddBan[ id ], 0, sizeof( g_iAddBan[ ] ) );
if( is_user_connected( iPlayer ) )
{
ScreenShot( iPlayer );
if( ! HasDatePassed( szExpireDate ) || equali( szExpireDate, "never" ) )
{
if( equali( szExpireDate, "never" ) )
{
send_message( iPlayer, CONSOLE, false, "^n************************************************" );
send_message( iPlayer, CONSOLE, false, "%L", iPlayer, "BAN_INFO_BANNED" );
send_message( iPlayer, CONSOLE, false, "%L", iPlayer, "BAN_INFO_EXPIRE_NEVER" );
send_message( iPlayer, CONSOLE, false, "%L", iPlayer, "BAN_INFO_REASON", szReason );
send_message( iPlayer, CONSOLE, false, "%L", iPlayer, "BAN_INFO_BY", g_szName[ id ] );
send_message( iPlayer, CONSOLE, false, "************************************************" );
}
else
{
send_message( iPlayer, CONSOLE, false, "^n************************************************" );
send_message( iPlayer, CONSOLE, false, "%L", iPlayer, "BAN_INFO_BANNED" );
send_message( iPlayer, CONSOLE, false, "%L", iPlayer, "BAN_INFO_EXPIRE", szExpireDate );
send_message( iPlayer, CONSOLE, false, "%L", iPlayer, "BAN_INFO_REASON", szReason );
send_message( iPlayer, CONSOLE, false, "%L", iPlayer, "BAN_INFO_BY", g_szName[ id ] );
send_message( iPlayer, CONSOLE, false, "************************************************" );
}
server_cmd( "kick #%d %L", get_user_userid( iPlayer ), id, "CHECK_CONSOLE_INFO" );
}
}
if( is_user_connected( id ) ) // checking to see if he's still connected (maybe he banned himself)
{
AddBanMenu( id );
}
return PLUGIN_HANDLED;
}
public OnAddGagPlayerName( id )
{
new szName[ MAX_NAME_LENGTH ];
read_args( szName, charsmax( szName ) );
trim( szName );
remove_quotes( szName );
if( ! szName[ 0 ] )
{
CC_SendMessage( id, "%L", id, "EMPTY_STRING" );
return PLUGIN_HANDLED;
}
new iPlayer = find_player( "al", szName );
if( iPlayer )
{
new iImmunityLevel = GetImmunityLevel( id );
new iImmunityLevelTarget = GetImmunityLevel( iPlayer );
if( iImmunityLevel < iImmunityLevelTarget )
{
CC_SendMessage( id, "%L", id, "CANT_PERFORM_IMMUNITY" );
arrayset( g_iAddGag[ id ], 0, sizeof( g_iAddGag[ ] ) );
return PLUGIN_HANDLED;
}
g_iAddGag[ id ][ ADDGAG_ID ] = iPlayer;
}
else
{
g_iAddGag[ id ][ ADDGAG_ID ] = 0;
}
if( IsGagged( iPlayer ) )
{
send_message( id, CHAT, false, "%L", id, "PLAYER_ALREADY_GAGGED" );
return PLUGIN_HANDLED;
}
copy( g_iAddGag[ id ][ ADDGAG_NAME ], charsmax( g_iAddGag[ ] ), szName );
client_cmd( id, "messagemode addgagPlayerSteamID" );
return PLUGIN_HANDLED;
}
public OnAddGagPlayerSteamID( id )
{
new szSteamId[ MAX_AUTHID_LENGTH ];
read_args( szSteamId, charsmax( szSteamId ) );
trim( szSteamId );
remove_quotes( szSteamId );
if( ! szSteamId[ 0 ] )
{
CC_SendMessage( id, "%L", id, "EMPTY_STRING" );
return PLUGIN_HANDLED;
}
new iPlayer = find_player( "cl", szSteamId );
if( iPlayer )
{
new iImmunityLevel = GetImmunityLevel( id );
new iImmunityLevelTarget = GetImmunityLevel( iPlayer );
if( iImmunityLevel < iImmunityLevelTarget )
{
CC_SendMessage( id, "%L", id, "CANT_PERFORM_IMMUNITY" );
arrayset( g_iAddGag[ id ], 0, sizeof( g_iAddGag[ ] ) );
return PLUGIN_HANDLED;
}
g_iAddGag[ id ][ ADDGAG_ID ] = iPlayer;
}
else
{
g_iAddGag[ id ][ ADDGAG_ID ] = 0;
}
if( IsGagged( iPlayer ) )
{
send_message( id, CHAT, false, "%L", id, "PLAYER_ALREADY_GAGGED" );
return PLUGIN_HANDLED;
}
copy( g_iAddGag[ id ][ ADDGAG_STEAMID ], charsmax( g_iAddGag[ ] ), szSteamId );
client_cmd( id, "messagemode addgagPlayerIP" );
return PLUGIN_HANDLED;
}
public OnAddGagPlayerIP( id )
{
new szIP[ MAX_IP_LENGTH ];
read_args( szIP, charsmax( szIP ) );
trim( szIP );
remove_quotes( szIP );
if( ! szIP[ 0 ] )
{
CC_SendMessage( id, "%L", id, "EMPTY_STRING" );
return PLUGIN_HANDLED;
}
new iPlayer = find_player( "dl", szIP );
if( iPlayer )
{
new iImmunityLevel = GetImmunityLevel( id );
new iImmunityLevelTarget = GetImmunityLevel( iPlayer );
if( iImmunityLevel < iImmunityLevelTarget )
{
CC_SendMessage( id, "%L", id, "CANT_PERFORM_IMMUNITY" );
arrayset( g_iAddGag[ id ], 0, sizeof( g_iAddGag[ ] ) );
return PLUGIN_HANDLED;
}
g_iAddGag[ id ][ ADDGAG_ID ] = iPlayer;
}
else
{
g_iAddGag[ id ][ ADDGAG_ID ] = 0;
}
if( IsGagged( iPlayer ) )
{
send_message( id, CHAT, false, "%L", id, "PLAYER_ALREADY_GAGGED" );
return PLUGIN_HANDLED;
}
copy( g_iAddGag[ id ][ ADDGAG_IP ], charsmax( g_iAddGag[ ] ), szIP );
client_cmd( id, "messagemode addgagPlayerMinutes" );
return PLUGIN_HANDLED;
}
public OnAddGagPlayerMinutes( id )
{
new szMinutes[ 8 ];
read_args( szMinutes, charsmax( szMinutes ) );
trim( szMinutes );
remove_quotes( szMinutes );
new iMinutes = str_to_num( szMinutes );
if( ! is_str_num( szMinutes ) || iMinutes < 0 )
{
send_message( id, CHAT, false, "%L", id, "INVALID_VALUE" );
arrayset( g_iAddGag[ id ], 0, sizeof( g_iAddGag[ ] ) );
return PLUGIN_HANDLED;
}
g_iAddGag[ id ][ ADDGAG_MINUTES ] = iMinutes;
client_cmd( id, "messagemode addgagPlayerFlags" );
return PLUGIN_HANDLED;
}
public OnAddGagPlayerFlags( id )
{
new szFlags[ 5 ];
read_args( szFlags, charsmax( szFlags ) );
trim( szFlags );
remove_quotes( szFlags );
if( equali( szFlags, "sv" ) || equali( szFlags, "vs" ) || equali( szFlags, "s" ) || equali( szFlags, "v" ) )
{
copy( g_iAddGag[ id ][ ADDGAG_FLAGS ], charsmax( g_iAddGag[ ] ), szFlags );
client_cmd( id, "messagemode addgagPlayerReason" );
}
else
{
send_message( id, CHAT, false, "%L", id, "INVALID_FLAGS" );
arrayset( g_iAddGag[ id ], 0, sizeof( g_iAddGag[ ] ) );
return PLUGIN_HANDLED;
}
return PLUGIN_CONTINUE;
}
public OnAddGagPlayerReason( id )
{
new szReason[ MAX_REASON_LENGTH ];
read_args( szReason, charsmax( szReason ) );
trim( szReason );
remove_quotes( szReason );
new iPlayer = g_iAddGag[ id ][ ADDGAG_ID ];
if( is_user_connected( iPlayer ) )
{
if( ( equali( g_szAuthId[ iPlayer ], g_iAddGag[ id ][ ADDGAG_STEAMID ] ) || equali( g_szIp[ iPlayer ], g_iAddGag[ id ][ ADDGAG_IP ] ) ) ) // is it the same guy?
{
if( ( get_user_flags( iPlayer ) & g_iConfig[ IMMUNITY_FLAG ] ) || GetImmunityLevel( iPlayer ) >= GetImmunityLevel( id ) )
{
return PLUGIN_HANDLED;
}
}
else
{
iPlayer = 0;
}
}
new szExpireDate[ MAX_DATE_LENGTH ], iMinutes = g_iAddGag[ id ][ ADDGAG_MINUTES ];
if( iMinutes == 0 )
{
CC_SendMessage( 0, "%L", LANG_PLAYER, "ADDED_TO_GAGLIST_PERMANENT", g_szName[ id ], g_iAddGag[ id ][ ADDGAG_NAME ], g_iAddGag[ id ][ ADDGAG_STEAMID ], g_iAddGag[ id ][ ADDGAG_IP ], g_iAddGag[ id ][ ADDGAG_FLAGS ], szReason );
send_message( 0, LOG, false, "%L", LANG_PLAYER, "LOG_ADDED_TO_GAGLIST_PERMANENT", g_szName[ id ], g_szAuthId[ id ], g_iAddGag[ id ][ ADDGAG_NAME ], g_iAddGag[ id ][ ADDGAG_STEAMID ], g_iAddGag[ id ][ ADDGAG_IP ], g_iAddGag[ id ][ ADDGAG_FLAGS ], szReason );
copy( szExpireDate, charsmax( szExpireDate ), "never" );
}
else
{
get_time( "%m/%d/%Y %H:%M:%S", szExpireDate, charsmax( szExpireDate ) );
AddMinutesToDate( szExpireDate, iMinutes, szExpireDate, charsmax( szExpireDate ) );
CC_SendMessage( 0, "%L", LANG_PLAYER, "ADDED_TO_GAGLIST", g_szName[ id ], g_iAddGag[ id ][ ADDGAG_NAME ], g_iAddGag[ id ][ ADDGAG_STEAMID ], g_iAddGag[ id ][ ADDGAG_IP ], iMinutes );
send_message( 0, LOG, false, "%L", LANG_PLAYER, "LOG_ADDED_TO_GAGLIST", g_szName[ id ], g_szAuthId[ id ], g_iAddGag[ id ][ ADDGAG_NAME ], g_iAddGag[ id ][ ADDGAG_STEAMID ], g_iAddGag[ id ][ ADDGAG_IP ], iMinutes, szExpireDate, g_iAddGag[ id ][ ADDGAG_FLAGS ], szReason );
}
trim( szReason );
trim( szExpireDate );
new eData[ PlayerGag ];
copy( eData[ Player_Name ], charsmax( eData[ Player_Name ] ), g_iAddGag[ id ][ ADDGAG_NAME ] );
copy( eData[ Player_SteamId ], charsmax( eData[ Player_SteamId ] ), g_iAddGag[ id ][ ADDGAG_STEAMID ] );
copy( eData[ Player_IP ], charsmax( eData[ Player_IP ] ), g_iAddGag[ id ][ ADDGAG_IP ] );
copy( eData[ Player_GagFlags ], charsmax( eData[ Player_GagFlags ] ), g_iAddGag[ id ][ ADDGAG_FLAGS ] );
copy( eData[ Player_GagReason ], charsmax( eData[ Player_GagReason ] ), szReason );
copy( eData[ Player_GagExpire ], charsmax( eData[ Player_GagExpire ] ), szExpireDate );
copy( eData[ Player_GaggedBy ], charsmax( eData[ Player_GaggedBy ] ), g_szName[ id ] );
ArrayPushArray( g_aGags, eData );
AddGag( g_iAddGag[ id ][ ADDGAG_NAME ], g_iAddGag[ id ][ ADDGAG_STEAMID ], g_iAddGag[ id ][ ADDGAG_IP ], szReason, g_iAddGag[ id ][ ADDGAG_FLAGS ], szExpireDate, g_szName[ id ] );
if( is_user_connected( iPlayer ) )
{
if( get_user_flags( iPlayer ) & g_iConfig[ IMMUNITY_FLAG ] )
{
return PLUGIN_HANDLED;
}
else
{
if( equali( g_szAuthId[ iPlayer ], eData[ Player_SteamId ] ) || equali( g_szIp[ iPlayer ], eData[ Player_IP ] ) )
{
if( ! HasDatePassed( eData[ Player_GagExpire ] ) )
{
set_speak( iPlayer, SPEAK_MUTED );
}
}
}
}
if( is_user_connected( id ) )
{
AddGagMenu( id );
}
arrayset( g_iAddGag[ id ], 0, sizeof( g_iAddGag[ ] ) );
return PLUGIN_HANDLED;
}
public OnKickPlayer( id )
{
new szReason[ MAX_REASON_LENGTH ];
read_args( szReason, charsmax( szReason ) );
trim( szReason );
remove_quotes( szReason );
new iPlayer = g_iKick[ id ];
server_cmd( "kick #%d ^"%s^"", get_user_userid( iPlayer ), szReason );
CC_SendMessage( 0, "%L", LANG_PLAYER, "KICKED", g_szName[ id ], g_szName[ iPlayer ], szReason );
send_message( 0, LOG, false, "%L", LANG_PLAYER, "LOG_KICKED", g_szName[ id ], g_szAuthId[ id ], g_szName[ iPlayer ], g_szAuthId[ iPlayer ], g_szIp[ iPlayer ], szReason );
g_iKick[ id ] = 0;
if( is_user_connected( id ) )
{
set_task( 0.1, "ReOpenKickMenu", id + TASK_KICK_MENU ); // needs a delay to update players
}
return PLUGIN_HANDLED;
}
public OnGagPlayerMinutes( id )
{
new szMinutes[ 8 ];
read_args( szMinutes, charsmax( szMinutes ) );
trim( szMinutes );
remove_quotes( szMinutes );
new iMinutes = str_to_num( szMinutes );
if( ! is_str_num( szMinutes ) || iMinutes < 0 )
{
send_message( id, CHAT, false, "%L", id, "INVALID_VALUE" );
arrayset( g_iGag[ id ], 0, sizeof( g_iGag[ ] ) );
return PLUGIN_HANDLED;
}
g_iGag[ id ][ GAG_MINUTES ] = iMinutes;
client_cmd( id, "messagemode gagPlayerFlags" );
return PLUGIN_HANDLED;
}
public OnGagPlayerFlags( id )
{
new szFlags[ 5 ];
read_args( szFlags, charsmax( szFlags ) );
trim( szFlags );
remove_quotes( szFlags );
if( equali( szFlags, "sv" ) || equali( szFlags, "vs" ) || equali( szFlags, "s" ) || equali( szFlags, "v" ) )
{
copy( g_iGag[ id ][ GAG_FLAGS ], charsmax( g_iGag[ ] ), szFlags );
client_cmd( id, "messagemode gagPlayerReason" );
}
else
{
send_message( id, CHAT, false, "%L", id, "INVALID_FLAGS" );
arrayset( g_iGag[ id ], 0, sizeof( g_iGag[ ] ) );
return PLUGIN_HANDLED;
}
return PLUGIN_HANDLED;
}
public OnGagPlayerReason( id )
{
new szReason[ MAX_REASON_LENGTH ];
read_args( szReason, charsmax( szReason ) );
trim( szReason );
remove_quotes( szReason );
new iPlayer = g_iGag[ id ][ GAG_ID ];
new szFlags[ 5 ];
copy( szFlags, charsmax( szFlags ), g_iGag[ id ][ GAG_FLAGS ] );
new szExpireDate[ MAX_DATE_LENGTH ], iMinutes = g_iGag[ id ][ GAG_MINUTES ];
if( iMinutes == 0 )
{
CC_SendMessage( 0, "%L", LANG_PLAYER, "GAGGED_PERMANENT", g_szName[ id ], g_szName[ iPlayer ], szFlags, szReason );
send_message( 0, LOG, false, "%L", LANG_PLAYER, "LOG_GAGGED_PERMANENT", g_szName[ id ], g_szAuthId[ id ], g_szName[ iPlayer ], g_szAuthId[ iPlayer ], g_szIp[ iPlayer ], szReason, szFlags );
copy( szExpireDate, charsmax( szExpireDate ), "never" );
}
else
{
get_time( "%m/%d/%Y %H:%M:%S", szExpireDate, charsmax( szExpireDate ) );
AddMinutesToDate( szExpireDate, iMinutes, szExpireDate, charsmax( szExpireDate ) );
if( iMinutes == 1 )
{
CC_SendMessage( 0, "%L", LANG_PLAYER, "GAGGED_SINGULAR", g_szName[ id ], g_szName[ iPlayer ], szReason, szFlags );
send_message( 0, LOG, false, "%L", LANG_PLAYER, "LOG_GAGGED_SINGULAR", g_szName[ id ], g_szAuthId[ id ], g_szName[ iPlayer ], g_szAuthId[ iPlayer ], g_szIp[ iPlayer ], szReason, szExpireDate, szFlags, iMinutes );
}
else
{
CC_SendMessage( 0, "%L", LANG_PLAYER, "GAGGED_PLURAL", g_szName[ id ], g_szName[ iPlayer ], iMinutes, szReason, szFlags );
send_message( 0, LOG, false, "%L", LANG_PLAYER, "LOG_GAGGED_PLURAL", g_szName[ id ], g_szAuthId[ id ], g_szName[ iPlayer ], g_szAuthId[ iPlayer ], g_szIp[ iPlayer ], szReason, szExpireDate, szFlags, iMinutes );
}
}
new eData[ PlayerGag ];
copy( eData[ Player_Name ], charsmax( eData[ Player_Name ] ), g_szName[ iPlayer ] );
copy( eData[ Player_SteamId ], charsmax( eData[ Player_SteamId ] ), g_szAuthId[ iPlayer ] );
copy( eData[ Player_IP ], charsmax( eData[ Player_IP ] ), g_szIp[ iPlayer ] );
copy( eData[ Player_GagExpire ], charsmax( eData[ Player_GagExpire ] ), szExpireDate );
copy( eData[ Player_GagReason ], charsmax( eData[ Player_GagReason ] ), szReason );
copy( eData[ Player_GagFlags ], charsmax( eData[ Player_GagFlags ] ), szFlags );
copy( eData[ Player_GaggedBy ], charsmax( eData[ Player_GaggedBy ] ), g_szName[ id ] );
ArrayPushArray( g_aGags, eData );
if( containi( szFlags, "v" ) != -1 && is_user_connected( iPlayer ) )
{
set_speak( iPlayer, SPEAK_MUTED );
}
GagPlayer( g_szName[ iPlayer ], g_szAuthId[ iPlayer ], g_szIp[ iPlayer ], szReason, szFlags, szExpireDate, g_szName[ id ] );
arrayset( g_iGag[ id ], 0, sizeof( g_iGag[ ] ) );
if( is_user_connected( id ) )
{
GagMenu( id );
}
return PLUGIN_HANDLED;
}
public OnBanPlayerMinutes( id )
{
new szMinutes[ 8 ];
read_args( szMinutes, charsmax( szMinutes ) );
trim( szMinutes );
remove_quotes( szMinutes );
new iMinutes = str_to_num( szMinutes );
if( ! is_str_num( szMinutes ) || iMinutes < 0 )
{
send_message( id, CHAT, false, "%L", id, "INVALID_VALUE" );
arrayset( g_iBan[ id ], 0, sizeof( g_iBan[ ] ) );
return PLUGIN_HANDLED;
}
g_iBan[ id ][ BAN_MINUTES ] = iMinutes;
client_cmd( id, "messagemode banPlayerReason" );
return PLUGIN_HANDLED;
}
public OnBanPlayerReason( id )
{
new szReason[ MAX_REASON_LENGTH ];
read_args( szReason, charsmax( szReason ) );
trim( szReason );
remove_quotes( szReason );
new iPlayer = g_iBan[ id ][ BAN_ID ], szExpireDate[ MAX_DATE_LENGTH ], iMinutes = g_iBan[ id ][ BAN_MINUTES ];
if( iMinutes == 0 )
{
CC_SendMessage( 0, "%L", LANG_PLAYER, "BANNED_PERMANENT", g_szName[ id ], g_szName[ iPlayer ], szReason );
send_message( 0, LOG, false, "%L", LANG_PLAYER, "LOG_BANNED_PERMANENT", g_szName[ id ], g_szAuthId[ id ], g_szName[ iPlayer ], g_szAuthId[ iPlayer ], g_szIp[ iPlayer ], szReason );
copy( szExpireDate, charsmax( szExpireDate ), "never" );
}
else
{
get_time( "%m/%d/%Y %H:%M:%S", szExpireDate, charsmax( szExpireDate ) );
AddMinutesToDate( szExpireDate, iMinutes, szExpireDate, charsmax( szExpireDate ) );
if( iMinutes == 1 )
{
CC_SendMessage( 0, "%L", LANG_PLAYER, "BANNED_SINGULAR", g_szName[ id ], g_szName[ iPlayer ], szReason );
send_message( 0, LOG, false, "%L", LANG_PLAYER, "LOG_BANNED_SINGULAR", g_szName[ id ], g_szAuthId[ id ], g_szName[ iPlayer ], g_szAuthId[ iPlayer ], g_szIp[ iPlayer ], szReason, szExpireDate );
}
else
{
CC_SendMessage( 0, "%L", LANG_PLAYER, "BANNED_PLURAL", g_szName[ id ], g_szName[ iPlayer ], iMinutes, szReason );
send_message( 0, LOG, false, "%L", LANG_PLAYER, "LOG_BANNED_PLURAL", g_szName[ id ], g_szAuthId[ id ], g_szName[ iPlayer ], g_szAuthId[ iPlayer ], g_szIp[ iPlayer ], iMinutes, szReason, szExpireDate );
}
}
trim( szExpireDate );
trim( szReason );
new eData[ PlayerBan ];
copy( eData[ Player_Name ], charsmax( eData[ Player_Name ] ), g_szName[ iPlayer ] );
copy( eData[ Player_SteamId ], charsmax( eData[ Player_SteamId ] ), g_szAuthId[ iPlayer ] );
copy( eData[ Player_IP ], charsmax( eData[ Player_IP ] ), g_szIp[ iPlayer ] );
copy( eData[ Player_BanExpire ], charsmax( eData[ Player_BanExpire ] ), szExpireDate );
copy( eData[ Player_BanReason ], charsmax( eData[ Player_BanReason ] ), szReason );
copy( eData[ Player_BannedBy ], charsmax( eData[ Player_BannedBy ] ), g_szName[ id ] );
ArrayPushArray( g_aBans, eData );
BanPlayer( g_szName[ iPlayer ], g_szAuthId[ iPlayer ], g_szIp[ iPlayer ], szExpireDate, szReason, g_szName[ id ] );
arrayset( g_iBan[ id ], 0, sizeof( g_iBan[ ] ) );
if( is_user_connected( iPlayer ) )
{
ScreenShot( iPlayer );
if( ! HasDatePassed( szExpireDate ) || equali( szExpireDate, "never" ) )
{
if( equali( szExpireDate, "never" ) )
{
send_message( iPlayer, CONSOLE, false, "^n************************************************" );
send_message( iPlayer, CONSOLE, false, "%L", iPlayer, "BAN_INFO_BANNED" );
send_message( iPlayer, CONSOLE, false, "%L", iPlayer, "BAN_INFO_EXPIRE_NEVER" );
send_message( iPlayer, CONSOLE, false, "%L", iPlayer, "BAN_INFO_REASON", szReason );
send_message( iPlayer, CONSOLE, false, "%L", iPlayer, "BAN_INFO_BY", g_szName[ id ] );
send_message( iPlayer, CONSOLE, false, "************************************************" );
}
else
{
send_message( iPlayer, CONSOLE, false, "^n************************************************" );
send_message( iPlayer, CONSOLE, false, "%L", iPlayer, "BAN_INFO_BANNED" );
send_message( iPlayer, CONSOLE, false, "%L", iPlayer, "BAN_INFO_EXPIRE", szExpireDate );
send_message( iPlayer, CONSOLE, false, "%L", iPlayer, "BAN_INFO_REASON", szReason );
send_message( iPlayer, CONSOLE, false, "%L", iPlayer, "BAN_INFO_BY", g_szName[ id ] );
send_message( iPlayer, CONSOLE, false, "************************************************" );
}
server_cmd( "kick #%d %L", get_user_userid( iPlayer ), id, "CHECK_CONSOLE_INFO" );
}
if( is_user_connected( id ) )
{
set_task( 0.1, "ReOpenBanMenu", id + TASK_BAN_MENU ); // needs a delay to update players
}
}
return PLUGIN_HANDLED;
}
public OnSlapPlayerValue( id )
{
new szValue[ 6 ];
read_args( szValue, charsmax( szValue ) );
trim( szValue );
remove_quotes( szValue );
new iValue = str_to_num( szValue );
if( ! is_str_num( szValue ) )
{
send_message( id, CHAT, true, "%L", id, "INVALID_VALUE" );
return PLUGIN_HANDLED;
}
if( ! is_user_alive( g_iSlap[ id ][ SLAP_ID ] ) )
{
send_message( id, CHAT, true, "%L", id, "SLAP_DEAD_PLAYER" );
return PLUGIN_HANDLED;
}
g_iSlap[ id ][ SLAP_VALUE ] = iValue;
client_cmd( id, "messagemode slapPlayerReason" );
return PLUGIN_HANDLED;
}
public OnSlapPlayerReason( id )
{
new szReason[ MAX_REASON_LENGTH ];
read_args( szReason, charsmax( szReason ) );
trim( szReason );
remove_quotes( szReason );
new iValue = g_iSlap[ id ][ SLAP_VALUE ], iPlayer = g_iSlap[ id ][ SLAP_ID ];
if( ! is_user_alive( iPlayer ) )
{
send_message( id, CHAT, true, "%L", id, "SLAP_DEAD_PLAYER" );
return PLUGIN_HANDLED;
}
user_slap( iPlayer, iValue );
CC_SendMessage( 0, "%L", LANG_PLAYER, "SLAP", g_szName[ id ], g_szName[ iPlayer ], iValue, szReason );
send_message( 0, LOG, false, "%L", LANG_PLAYER, "LOG_SLAP", g_szName[ id ], g_szAuthId[ id ], g_szName[ iPlayer ], g_szAuthId[ iPlayer ], g_szIp[ iPlayer ], iValue, szReason );
arrayset( g_iSlap[ id ], 0, sizeof( g_iSlap[ ] ) );
SlapMenu( id );
return PLUGIN_HANDLED;
}
public OnSlayPlayerReason( id )
{
new szReason[ MAX_REASON_LENGTH ];
read_args( szReason, charsmax( szReason ) );
trim( szReason );
remove_quotes( szReason );
new iPlayer = g_iSlay[ id ][ SLAY_ID ];
if( ! is_user_alive( iPlayer ) )
{
send_message( id, CHAT, true, "%L", id, "SLAY_DEAD_PLAYER" );
return PLUGIN_HANDLED;
}
user_kill( iPlayer );
CC_SendMessage( 0, "%L", LANG_PLAYER, "SLAY", g_szName[ id ], g_szName[ iPlayer ], szReason );
send_message( 0, LOG, false, "%L", LANG_PLAYER, "LOG_SLAY", g_szName[ id ], g_szAuthId[ id ], g_szName[ iPlayer ], g_szAuthId[ iPlayer ], g_szIp[ iPlayer ], szReason );
arrayset( g_iSlay[ id ], 0, sizeof( g_iSlay[ ] ) );
SlayMenu( id );
return PLUGIN_HANDLED;
}
///////////////////////////////////////////////////////////////////// END OF MESSAGEMODE /////////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////// COMMANDS MENU /////////////////////////////////////////////////////////////////////////////////////////////////////////
@CommandsMenu( id )
{
if( ~ get_user_flags( id ) & g_iConfig[ COMMANDS_MENU_FLAG ] )
{
send_message( id, CONSOLE, true, "%L", id, "NO_ACCESS_COMMAND" );
return PLUGIN_HANDLED;
}
if( ( get_gametime( ) - g_fLastOpened[ id ] ) <= 2.0 )
{
send_message( id, CONSOLE, true, "%L", id, "STOP_FLOOD" );
return PLUGIN_HANDLED;
}
g_fLastOpened[ id ] = get_gametime( );
new szMenuTitle[ 64 ];
formatex( szMenuTitle, charsmax( szMenuTitle ), "\rElite Admin System Menu^n\wVersion: \r%s", szVersion );
new iMenu = menu_create( szMenuTitle, "@CommandsMenu_Handler" );
new szMenuItem[ 64 ];
formatex( szMenuItem, charsmax( szMenuItem ), "%L", id, "KICK_MENU" );
menu_additem( iMenu, szMenuItem );
formatex( szMenuItem, charsmax( szMenuItem ), "%L", id, "BAN_MENU" );
menu_additem( iMenu, szMenuItem );
formatex( szMenuItem, charsmax( szMenuItem ), "%L", id, "ADDBAN_MENU" );
menu_additem( iMenu, szMenuItem );
formatex( szMenuItem, charsmax( szMenuItem ), "%L", id, "ADDGAG_MENU" );
menu_additem( iMenu, szMenuItem );
formatex( szMenuItem, charsmax( szMenuItem ), "%L", id, "GAG_MENU" );
menu_additem( iMenu, szMenuItem );
formatex( szMenuItem, charsmax( szMenuItem ), "%L", id, "UNBAN_MENU" );
menu_additem( iMenu, szMenuItem );
formatex( szMenuItem, charsmax( szMenuItem ), "%L", id, "UNGAG_MENU" );
menu_additem( iMenu, szMenuItem );
formatex( szMenuItem, charsmax( szMenuItem ), "%L", id, "SLAY_MENU" );
menu_additem( iMenu, szMenuItem );
formatex( szMenuItem, charsmax( szMenuItem ), "%L", id, "SLAP_MENU" );
menu_additem( iMenu, szMenuItem );
formatex( szMenuItem, charsmax( szMenuItem ), "%L", id, "TEAM_MENU" );
menu_additem( iMenu, szMenuItem );
formatex( szMenuItem, charsmax( szMenuItem ), "%L", id, "MAP_MENU" );
menu_additem( iMenu, szMenuItem );
formatex( szMenuItem, charsmax( szMenuItem ), "%L", id, "FREEZE_MENU" );
menu_additem( iMenu, szMenuItem );
menu_display( id, iMenu, 0 );
return PLUGIN_HANDLED;
}
KickMenu( id )
{
new szMenuTitle[ 64 ];
formatex( szMenuTitle, charsmax( szMenuTitle ), "%L", id, "KICK_MENU" );
new iMenu = menu_create( szMenuTitle, "@KickMenu" );
new iPlayers[ MAX_PLAYERS ], iNum, iTempId, szId[ 3 ];
get_players( iPlayers, iNum, "h" );
for( new i; i < iNum; i++ )
{
iTempId = iPlayers[ i ];
num_to_str( iTempId, szId, charsmax( szId ) );
menu_additem( iMenu, g_szName[ iTempId ], szId );
}
menu_display( id, iMenu, 0 );
}
BanMenu( id )
{
new szMenuTitle[ 64 ];
formatex( szMenuTitle, charsmax( szMenuTitle ), "%L", id, "BAN_MENU" );
new iMenu = menu_create( szMenuTitle, "@BanMenu" );
new iPlayers[ MAX_PLAYERS ], iNum, iTempId, szId[ 3 ];
get_players( iPlayers, iNum, "ch" );
for( new i; i < iNum; i++ )
{
iTempId = iPlayers[ i ];
num_to_str( iTempId, szId, charsmax( szId ) );
menu_additem( iMenu, g_szName[ iTempId ], szId );
}
menu_display( id, iMenu, 0 );
}
AddBanMenu( id )
{
new szMenuTitle[ 64 ];
formatex( szMenuTitle, charsmax( szMenuTitle ), "%L", id, "ADDBAN_MENU" );
new iMenu = menu_create( szMenuTitle, "@AddBanMenu" );
new szAddNewBan[ 20 ];
formatex( szAddNewBan, charsmax( szAddNewBan ), "%L", id, "ADD_NEW_BAN" );
menu_additem( iMenu, szAddNewBan );
menu_display( id, iMenu, 0 );
}
AddGagMenu( id )
{
new szMenuTitle[ 64 ];
formatex( szMenuTitle, charsmax( szMenuTitle ), "%L", id, "ADDGAG_MENU" );
new iMenu = menu_create( szMenuTitle, "@AddGagMenu" );
new szAddNewGag[ 20 ];
formatex( szAddNewGag, charsmax( szAddNewGag ), "%L", id, "ADD_NEW_GAG" );
menu_additem( iMenu, szAddNewGag );
menu_display( id, iMenu, 0 );
}
GagMenu( id )
{
new szMenuTitle[ 64 ];
formatex( szMenuTitle, charsmax( szMenuTitle ), "%L", id, "GAG_MENU" );
new iMenu = menu_create( szMenuTitle, "@GagMenu" );
new iPlayers[ MAX_PLAYERS ], iNum, iTempId, szId[ 3 ];
get_players( iPlayers, iNum, "ch" );
for( new i; i < iNum; i++ )
{
iTempId = iPlayers[ i ];
if( IsGagged( iTempId ) )
{
continue;
}
num_to_str( iTempId, szId, charsmax( szId ) );
menu_additem( iMenu, g_szName[ iTempId ], szId );
}
menu_display( id, iMenu, 0 );
}
UnBanMenu( id )
{
new szItemName[ 192 ], szInfo[ 128 ], szMenuTitle[ 64 ];
formatex( szMenuTitle, charsmax( szMenuTitle ), "%L", id, "UNBAN_MENU" );
new iMenu = menu_create( szMenuTitle, "@UnbanMenu" );
menu_setprop( iMenu, MPROP_PERPAGE, 6 );
new eData[ PlayerBan ], bool:bBansFound;
for( new i; i < ArraySize( g_aBans ); i++ )
{
ArrayGetArray( g_aBans, i, eData );
formatex( szItemName, charsmax( szItemName ), "\r%s \w| \y%s \w| \d%s", eData[ Player_Name ], eData[ Player_SteamId ], eData[ Player_IP ] );
formatex( szInfo, charsmax( szInfo ), "^"%s^" ^"%s^" ^"%s^"", eData[ Player_Name ], eData[ Player_SteamId ], eData[ Player_IP ] );
menu_additem( iMenu, szItemName, szInfo );
bBansFound = true;
}
if( ! bBansFound )
{
CC_SendMessage( id, "%L", id, "NO_BANS_FOUND" );
return PLUGIN_HANDLED;
}
menu_display( id, iMenu, 0 );
return PLUGIN_HANDLED;
}
UnGagMenu( id )
{
new szItemName[ 192 ], szInfo[ 128 ], szMenuTitle[ 64 ];
formatex( szMenuTitle, charsmax( szMenuTitle ), "%L", id, "UNGAG_MENU" );
new iMenu = menu_create( szMenuTitle, "@UnGagMenu" );
menu_setprop( iMenu, MPROP_PERPAGE, 6 );
new eData[ PlayerGag ], bool:bGagsFound;
for( new i; i < ArraySize( g_aGags ); i++ )
{
ArrayGetArray( g_aGags, i, eData );
formatex( szItemName, charsmax( szItemName ), "\r%s \w| \y%s \w| \d%s", eData[ Player_Name ], eData[ Player_SteamId ], eData[ Player_IP ] );
formatex( szInfo, charsmax( szInfo ), "^"%s^" ^"%s^" ^"%s^"", eData[ Player_Name ], eData[ Player_SteamId ], eData[ Player_IP ] );
menu_additem( iMenu, szItemName, szInfo );
bGagsFound = true;
}
if( ! bGagsFound )
{
CC_SendMessage( id, "%L", id, "NO_GAGS_FOUND" );
return PLUGIN_HANDLED;
}
menu_display( id, iMenu, 0 );
return PLUGIN_HANDLED;
}
SlayMenu( id )
{
new szMenuTitle[ 64 ];
formatex( szMenuTitle, charsmax( szMenuTitle ), "%L", id, "SLAY_MENU" );
new iMenu = menu_create( szMenuTitle, "@SlayMenu" );
new iPlayers[ MAX_PLAYERS ], iNum, iTempId, szId[ 3 ];
get_players( iPlayers, iNum, "ach" );
for( new i; i < iNum; i++ )
{
iTempId = iPlayers[ i ];
num_to_str( iTempId, szId, charsmax( szId ) );
menu_additem( iMenu, g_szName[ iTempId ], szId );
}
menu_display( id, iMenu, 0 );
}
SlapMenu( id )
{
new szMenuTitle[ 64 ];
formatex( szMenuTitle, charsmax( szMenuTitle ), "%L", id, "SLAP_MENU" );
new iMenu = menu_create( szMenuTitle, "@SlapMenu" );
new iPlayers[ MAX_PLAYERS ], iNum, iTempId, szId[ 3 ];
get_players( iPlayers, iNum, "ach" );
for( new i; i < iNum; i++ )
{
iTempId = iPlayers[ i ];
num_to_str( iTempId, szId, charsmax( szId ) );
menu_additem( iMenu, g_szName[ iTempId ], szId );
}
menu_display( id, iMenu, 0 );
}
TeamMenu( id )
{
new iPlayers[ MAX_PLAYERS ], iNum, iTempId, szName[ MAX_NAME_LENGTH + 12 ], szSwitch[ 64 ], szPlayerTeam[ 20 ], szId[ 3 ], iCount, bool:bSwitchAdded;
get_players( iPlayers, iNum, "ch" );
if( g_iTeamSwitch[ id ] == TEAM_UNASSIGNED )
{
get_user_team( id ) == TEAM_T ? ( g_iTeamSwitch[ id ] = TEAM_CT ) : ( g_iTeamSwitch[ id ] = TEAM_T );
GetTeamName( g_iTeamSwitch[ id ], g_szTeamSwitch[ id ], charsmax( g_szTeamSwitch[ ] ) );
}
new szMenuTitle[ 64 ];
formatex( szMenuTitle, charsmax( szMenuTitle ), "%L", id, "TEAM_MENU" );
new iMenu = menu_create( szMenuTitle, "@TeamMenu" );
formatex( szSwitch, charsmax( szSwitch ), "%L: \r%s", id, "CURRENT_SWITCH_TEAM", g_szTeamSwitch[ id ] );
if( iNum > 6 ) // more than 6 players, if we want switch to always be 7th we have to stop adding items and add the switch
{
for( new i; i < iNum; i++ )
{
iTempId = iPlayers[ i ];
if( iCount == 6 && ! bSwitchAdded )
{
menu_additem( iMenu, szSwitch, "switch" );
bSwitchAdded = true;
}
get_user_name( iTempId, szName, charsmax( szName ) ); // leaving this just to be sure, incase someone has 32 chars name, we have to add [CT] [T] [SPECTATOR]
get_user_team( iTempId, szPlayerTeam, charsmax( szPlayerTeam ) );
num_to_str( iTempId, szId, charsmax( szId ) );
if( ! equali( szPlayerTeam, g_szTeamSwitch[ id ] ) )
{
format( szName, charsmax( szName ), "%s \y[%s]", szName, szPlayerTeam );
}
else
{
format( szName, charsmax( szName ), "\d%s [%s]", szName, szPlayerTeam );
}
menu_additem( iMenu, szName, szId );
iCount++;
}
}
else
{
if( iNum == 6 ) // if theres 6 players no need to add blanks
{
for( new i; i < iNum; i++ )
{
iTempId = iPlayers[ i ];
get_user_name( iTempId, szName, charsmax( szName ) );
get_user_team( iTempId, szPlayerTeam, charsmax( szPlayerTeam ) );
num_to_str( iTempId, szId, charsmax( szId ) );
if( ! equali( szPlayerTeam, g_szTeamSwitch[ id ] ) )
{
format( szName, charsmax( szName ), "%s \y[%s]", szName, szPlayerTeam );
}
else
{
format( szName, charsmax( szName ), "\d%s [%s]", szName, szPlayerTeam );
}
menu_additem( iMenu, szName, szId );
}
menu_additem( iMenu, szSwitch, "switch" );
}
else // need to add blanks
{
for( new i; i < iNum; i++ ) // add all players to the list
{
iTempId = iPlayers[ i ];
get_user_name( iTempId, szName, charsmax( szName ) );
get_user_team( iTempId, szPlayerTeam, charsmax( szPlayerTeam ) );
num_to_str( iTempId, szId, charsmax( szId ) );
if( ! equali( szPlayerTeam, g_szTeamSwitch[ id ] ) )
{
format( szName, charsmax( szName ), "%s \y[%s]", szName, szPlayerTeam );
}
else
{
format( szName, charsmax( szName ), "\d%s [%s]", szName, szPlayerTeam );
}
menu_additem( iMenu, szName, szId );
}
new iCalculateBlanks = 6 - iNum; // calculate how many blanks we need
for( new i = 1; i <= iCalculateBlanks; i++ )
{
menu_addblank( iMenu, 0 ); // add the blanks
}
menu_additem( iMenu, szSwitch, "switch" ); // add switch
}
}
menu_display( id, iMenu, 0 );
}
MapMenu( id )
{
new szMenuTitle[ 64 ];
formatex( szMenuTitle, charsmax( szMenuTitle ), "%L", id, "MAP_MENU" );
new iMenu = menu_create( szMenuTitle, "@MapMenu" );
new szMapName[ MAX_MAP_NAME_LENGTH ];
for( new i; i < ArraySize( g_aMaps ); i++ )
{
ArrayGetString( g_aMaps, i, szMapName, charsmax( szMapName ) );
menu_additem( iMenu, szMapName, szMapName );
}
menu_display( id, iMenu, 0 );
}
FreezeMenu( id )
{
new szMenuTitle[ 64 ];
formatex( szMenuTitle, charsmax( szMenuTitle ), "%L", id, "FREEZE_MENU" );
new iMenu = menu_create( szMenuTitle, "@FreezeMenu" );
new iPlayers[ MAX_PLAYERS ], iNum, iTempId, szId[ 3 ];
get_players( iPlayers, iNum, "ach" );
for( new i; i < iNum; i++ )
{
iTempId = iPlayers[ i ];
num_to_str( iTempId, szId, charsmax( szId ) );
menu_additem( iMenu, g_szName[ iTempId ], szId );
}
menu_display( id, iMenu, 0 );
}
@CommandsMenu_Handler( id, iMenu, iItem )
{
if( iItem == MENU_EXIT )
{
menu_destroy( iMenu );
return PLUGIN_HANDLED;
}
switch( iItem )
{
case 0:
{
if( ~ get_user_flags( id ) & g_iConfig[ KICK_FLAG ] )
{
send_message( id, CHAT, true, "%L", id, "NO_ACCESS_MENU" );
menu_destroy( iMenu );
return PLUGIN_HANDLED;
}
KickMenu( id );
}
case 1:
{
if( ~ get_user_flags( id ) & g_iConfig[ BAN_FLAG ] )
{
send_message( id, CHAT, true, "%L", id, "NO_ACCESS_MENU" );
menu_destroy( iMenu );
return PLUGIN_HANDLED;
}
BanMenu( id );
}
case 2:
{
if( ~ get_user_flags( id ) & g_iConfig[ ADD_BAN_FLAG ] )
{
send_message( id, CHAT, true, "%L", id, "NO_ACCESS_MENU" );
menu_destroy( iMenu );
return PLUGIN_HANDLED;
}
AddBanMenu( id );
}
case 3:
{
if( ~ get_user_flags( id ) & g_iConfig[ ADD_GAG_FLAG ] )
{
send_message( id, CHAT, true, "%L", id, "NO_ACCESS_MENU" );
menu_destroy( iMenu );
return PLUGIN_HANDLED;
}
AddGagMenu( id );
}
case 4:
{
if( ~ get_user_flags( id ) & g_iConfig[ GAG_FLAG ] )
{
send_message( id, CHAT, true, "%L", id, "NO_ACCESS_MENU" );
menu_destroy( iMenu );
return PLUGIN_HANDLED;
}
GagMenu( id );
}
case 5:
{
if( ~ get_user_flags( id ) & g_iConfig[ UNBAN_FLAG ] )
{
send_message( id, CHAT, true, "%L", id, "NO_ACCESS_MENU" );
menu_destroy( iMenu );
return PLUGIN_HANDLED;
}
UnBanMenu( id );
}
case 6:
{
if( ~ get_user_flags( id ) & g_iConfig[ UNGAG_FLAG ] )
{
send_message( id, CHAT, true, "%L", id, "NO_ACCESS_MENU" );
menu_destroy( iMenu );
return PLUGIN_HANDLED;
}
UnGagMenu( id );
}
case 7:
{
if( ~ get_user_flags( id ) & g_iConfig[ SLAY_FLAG ] )
{
send_message( id, CHAT, true, "%L", id, "NO_ACCESS_MENU" );
menu_destroy( iMenu );
return PLUGIN_HANDLED;
}
SlayMenu( id );
}
case 8:
{
if( ~ get_user_flags( id ) & g_iConfig[ SLAP_FLAG ] )
{
send_message( id, CHAT, true, "%L", id, "NO_ACCESS_MENU" );
menu_destroy( iMenu );
return PLUGIN_HANDLED;
}
SlapMenu( id );
}
case 9:
{
if( ~ get_user_flags( id ) & g_iConfig[ TEAM_FLAG ] )
{
send_message( id, CHAT, true, "%L", id, "NO_ACCESS_MENU" );
menu_destroy( iMenu );
return PLUGIN_HANDLED;
}
TeamMenu( id );
}
case 10:
{
if( ~ get_user_flags( id ) & g_iConfig[ MAP_FLAG ] )
{
send_message( id, CHAT, true, "%L", id, "NO_ACCESS_MENU" );
menu_destroy( iMenu );
return PLUGIN_HANDLED;
}
MapMenu( id );
}
case 11:
{
if( ~ get_user_flags( id ) & g_iConfig[ FREEZE_FLAG ] )
{
send_message( id, CHAT, true, "%L", id, "NO_ACCESS_MENU" );
menu_destroy( iMenu );
return PLUGIN_HANDLED;
}
FreezeMenu( id );
}
}
menu_destroy( iMenu );
return PLUGIN_HANDLED;
}
GetTeamName( iTeam, szOutput[ ], iSize )
{
switch( iTeam )
{
case TEAM_T:
{
copy( szOutput, iSize, "TERRORIST" );
}
case TEAM_CT:
{
copy( szOutput, iSize, "CT" );
}
case TEAM_SPEC:
{
copy( szOutput, iSize, "SPECTATOR" );
}
}
}
///////////////////////////////////////////////////////////////////// END OF COMMANDS MENU /////////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////// COMMAND MENUS /////////////////////////////////////////////////////////////////////////////////////////////////////////
@MapMenu( id, iMenu, iItem )
{
if( iItem == MENU_EXIT )
{
menu_destroy( iMenu );
return PLUGIN_HANDLED;
}
new iAccess, szMap[ MAX_MAP_NAME_LENGTH ], iCallback;
menu_item_getinfo( iMenu, iItem, iAccess, szMap, charsmax( szMap ), _, _, iCallback );
menu_destroy( iMenu );
if( ! is_map_valid( szMap ) )
{
CC_SendMessage( id, "%L", id, "MAP_NOT_FOUND" );
return PLUGIN_HANDLED;
}
new szModName[ 10 ];
get_modname( szModName, charsmax( szModName ) );
if( ! equali( szModName, "zp" ) )
{
message_begin( MSG_ALL, SVC_INTERMISSION );
message_end( );
}
CC_SendMessage( 0, "%L", LANG_PLAYER, "MAP_CHANGE", g_szName[ id ], szMap );
send_message( 0, LOG, false, "%L", LANG_PLAYER, "LOG_MAP_CHANGE", g_szName[ id ], g_szAuthId[ id ], szMap );
set_task( 2.0, "OnMapChange", _, szMap, ( strlen( szMap ) + 1 ) );
return PLUGIN_HANDLED;
}
@SlapMenu( id, iMenu, iItem )
{
if( iItem == MENU_EXIT )
{
menu_destroy( iMenu );
return PLUGIN_HANDLED;
}
new iAccess, szId[ 3 ], iCallback;
menu_item_getinfo( iMenu, iItem, iAccess, szId, charsmax( szId ), _, _, iCallback );
menu_destroy( iMenu );
new iPlayer = str_to_num( szId );
if( ! is_user_connected( iPlayer ) )
{
CC_SendMessage( id, "%L", id, "PLAYER_NOT_FOUND" );
return PLUGIN_HANDLED;
}
if( ! is_user_alive( iPlayer ) )
{
send_message( id, CHAT, true, "%L", id, "SLAP_DEAD_PLAYER" );
return PLUGIN_HANDLED;
}
new iImmunityLevel = GetImmunityLevel( id );
new iImmunityLevelTarget = GetImmunityLevel( iPlayer );
if( iImmunityLevel < iImmunityLevelTarget )
{
CC_SendMessage( id, "%L", id, "CANT_PERFORM_IMMUNITY" );
return PLUGIN_HANDLED;
}
g_iSlap[ id ][ SLAP_ID ] = iPlayer;
client_cmd( id, "messagemode slapPlayerValue" );
return PLUGIN_HANDLED;
}
@TeamMenu( id, iMenu, iItem )
{
if( iItem == MENU_EXIT )
{
g_iTeamSwitch[ id ] = 0;
arrayset( g_szTeamSwitch[ id ], 0, sizeof( g_szTeamSwitch[ ] ) );
menu_destroy( iMenu );
return PLUGIN_HANDLED;
}
new iAccess, szInfo[ 10 ], iCallback;
menu_item_getinfo( iMenu, iItem, iAccess, szInfo, charsmax( szInfo ), _, _, iCallback );
menu_destroy( iMenu );
if( equali( szInfo, "switch" ) )
{
// if it's TEAM_SPEC (3), reset back to TEAM_T (1), otherwise increase by 1 (TEAM_T becomes TEAM_CT, TEAM_CT becomes TEAM_SPEC)
switch( g_iTeamSwitch[ id ] )
{
case TEAM_T:
{
g_iTeamSwitch[ id ] = TEAM_CT;
}
case TEAM_CT:
{
g_iTeamSwitch[ id ] = TEAM_SPEC;
}
case TEAM_SPEC:
{
g_iTeamSwitch[ id ] = TEAM_T;
}
}
GetTeamName( g_iTeamSwitch[ id ], g_szTeamSwitch[ id ], charsmax( g_szTeamSwitch[ ] ) );
TeamMenu( id );
return PLUGIN_HANDLED;
}
new iPlayer = str_to_num( szInfo );
if( ! is_user_connected( iPlayer ) )
{
CC_SendMessage( id, "%L", id, "PLAYER_NOT_FOUND" );
return PLUGIN_HANDLED;
}
new szTeam[ 20 ];
get_user_team( iPlayer, szTeam, charsmax( szTeam ) );
if( equali( szTeam, g_szTeamSwitch[ id ] ) ) // same team, reopen menu
{
TeamMenu( id );
return PLUGIN_HANDLED;
}
new iImmunityLevel = GetImmunityLevel( id );
new iImmunityLevelTarget = GetImmunityLevel( iPlayer );
if( iImmunityLevel < iImmunityLevelTarget )
{
CC_SendMessage( id, "%L", id, "CANT_PERFORM_IMMUNITY" );
return PLUGIN_HANDLED;
}
new szTeamFinal[ 20 ];
if( equali( g_szTeamSwitch[ id ], "TERRORIST" ) )
{
eas_set_user_team( iPlayer, 1 );
copy( szTeamFinal, charsmax( szTeamFinal ), "Terrorist" );
}
else if( equali( g_szTeamSwitch[ id ], "CT" ) )
{
eas_set_user_team( iPlayer, 2 );
copy( szTeamFinal, charsmax( szTeamFinal ), "Counter-Terrorist" );
}
else if( equali( g_szTeamSwitch[ id ], "SPECTATOR" ) )
{
eas_set_user_team( iPlayer, 3 );
copy( szTeamFinal, charsmax( szTeamFinal ), "Spectator" );
}
CC_SendMatched( 0, iPlayer, "%L", LANG_PLAYER, "TEAM_CHANGE", g_szName[ id ], g_szName[ iPlayer ], szTeamFinal );
send_message( 0, LOG, false, "%L", LANG_PLAYER, "LOG_TEAM_CHANGE", g_szName[ id ], g_szAuthId[ id ], g_szName[ iPlayer ], g_szAuthId[ iPlayer ], g_szIp[ iPlayer ], szTeamFinal );
TeamMenu( id );
return PLUGIN_HANDLED;
}
@FreezeMenu( id, iMenu, iItem )
{
if( iItem == MENU_EXIT )
{
menu_destroy( iMenu );
return PLUGIN_HANDLED;
}
new iAccess, szId[ 3 ], iCallback;
menu_item_getinfo( iMenu, iItem, iAccess, szId, charsmax( szId ), _, _, iCallback );
menu_destroy( iMenu );
new iPlayer = str_to_num( szId );
if( ! is_user_connected( iPlayer ) )
{
CC_SendMessage( id, "%L", id, "PLAYER_NOT_FOUND" );
return PLUGIN_HANDLED;
}
if( ! is_user_alive( iPlayer ) )
{
send_message( id, CHAT, true, "%L", id, "FREEZE_DEAD_PLAYER" );
return PLUGIN_HANDLED;
}
new iImmunityLevel = GetImmunityLevel( id );
new iImmunityLevelTarget = GetImmunityLevel( iPlayer );
if( iImmunityLevel < iImmunityLevelTarget )
{
CC_SendMessage( id, "%L", id, "CANT_PERFORM_IMMUNITY" );
return PLUGIN_HANDLED;
}
new iValue = g_bFrozen[ iPlayer ] ? 0 : 1;
FreezePlayer( iPlayer, iValue );
switch( iValue )
{
case 0:
{
send_message( 0, LOG, false, "%L", LANG_PLAYER, "FREEZE_UNSET", g_szName[ id ], g_szAuthId[ id ], g_szName[ iPlayer ], g_szAuthId[ iPlayer ], g_szIp[ iPlayer ] );
CC_SendMessage( 0, "%L", LANG_PLAYER, "FREEZE_UNSET", g_szName[ id ], g_szName[ iPlayer ] );
}
case 1:
{
send_message( 0, LOG, false, "%L", LANG_PLAYER, "FREEZE_SET", g_szName[ id ], g_szAuthId[ id ], g_szName[ iPlayer ], g_szAuthId[ iPlayer ], g_szIp[ iPlayer ] );
CC_SendMessage( 0, "%L", LANG_PLAYER, "FREEZE_SET", g_szName[ id ], g_szName[ iPlayer ] );
}
}
FreezeMenu( id );
return PLUGIN_HANDLED;
}
@SlayMenu( id, iMenu, iItem )
{
if( iItem == MENU_EXIT )
{
menu_destroy( iMenu );
return PLUGIN_HANDLED;
}
new iAccess, szId[ 3 ], iCallback;
menu_item_getinfo( iMenu, iItem, iAccess, szId, charsmax( szId ), _, _, iCallback );
menu_destroy( iMenu );
new iPlayer = str_to_num( szId );
if( ! is_user_connected( iPlayer ) )
{
CC_SendMessage( id, "%L", id, "PLAYER_NOT_FOUND" );
return PLUGIN_HANDLED;
}
if( ! is_user_alive( iPlayer ) )
{
send_message( id, CHAT, true, "%L", id, "SLAY_DEAD_PLAYER" );
return PLUGIN_HANDLED;
}
new iImmunityLevel = GetImmunityLevel( id );
new iImmunityLevelTarget = GetImmunityLevel( iPlayer );
if( iImmunityLevel < iImmunityLevelTarget )
{
CC_SendMessage( id, "%L", id, "CANT_PERFORM_IMMUNITY" );
return PLUGIN_HANDLED;
}
g_iSlay[ id ][ SLAY_ID ] = iPlayer;
client_cmd( id, "messagemode slayPlayerReason" );
return PLUGIN_HANDLED;
}
@UnbanMenu( id, iMenu, iItem )
{
if( iItem == MENU_EXIT )
{
menu_destroy( iMenu );
return PLUGIN_HANDLED;
}
new iAccess, szInfo[ 128 ], szName[ MAX_NAME_LENGTH ], szSteamId[ MAX_AUTHID_LENGTH ], szIP[ MAX_IP_LENGTH ], iCallback;
menu_item_getinfo( iMenu, iItem, iAccess, szInfo, charsmax( szInfo ), _, _, iCallback );
menu_destroy( iMenu );
parse( szInfo, szName, charsmax( szName ), szSteamId, charsmax( szSteamId ), szIP, charsmax( szIP ) );
trim( szName );
trim( szSteamId );
trim( szIP );
UnbanPlayer2( szName, szSteamId, szIP );
CC_SendMessage( 0, "%L", LANG_PLAYER, "UNBANNED", g_szName[ id ], szName, szSteamId, szIP );
send_message( 0, LOG, false, "%L", LANG_PLAYER, "LOG_UNBANNED", g_szName[ id ], g_szAuthId[ id ], szName, szSteamId, szIP );
if( ArraySize( g_aBans ) )
{
UnBanMenu( id );
}
else
{
@CommandsMenu( id );
}
return PLUGIN_HANDLED;
}
@UnGagMenu( id, iMenu, iItem )
{
if( iItem == MENU_EXIT )
{
menu_destroy( iMenu );
return PLUGIN_HANDLED;
}
new iAccess, szInfo[ 128 ], szName[ MAX_NAME_LENGTH ], szSteamId[ MAX_AUTHID_LENGTH ], szIP[ MAX_IP_LENGTH ], iCallback;
menu_item_getinfo( iMenu, iItem, iAccess, szInfo, charsmax( szInfo ), _, _, iCallback );
menu_destroy( iMenu );
parse( szInfo, szName, charsmax( szName ), szSteamId, charsmax( szSteamId ), szIP, charsmax( szIP ) );
trim( szName );
trim( szSteamId );
trim( szIP );
UnGagPlayer2( szName, szSteamId, szIP );
CC_SendMessage( 0, "%L", LANG_PLAYER, "UNGAGGED", g_szName[ id ], szName );
send_message( 0, LOG, false, "%L", LANG_PLAYER, "LOG_UNGAGGED", g_szName[ id ], g_szAuthId[ id ], szName, szSteamId, szIP );
if( ArraySize( g_aGags ) )
{
UnGagMenu( id );
}
else
{
@CommandsMenu( id );
}
return PLUGIN_HANDLED;
}
@AddBanMenu( id, iMenu, iItem )
{
if( iItem == MENU_EXIT )
{
menu_destroy( iMenu );
return PLUGIN_HANDLED;
}
switch( iItem )
{
case 0:
{
client_cmd( id, "messagemode addBanPlayerName" );
}
}
menu_destroy( iMenu );
return PLUGIN_HANDLED;
}
@AddGagMenu( id, iMenu, iItem )
{
if( iItem == MENU_EXIT )
{
menu_destroy( iMenu );
return PLUGIN_HANDLED;
}
else if( iItem == 0 )
{
client_cmd( id, "messagemode addgagPlayerName" );
}
menu_destroy( iMenu );
return PLUGIN_HANDLED;
}
@KickMenu( id, iMenu, iItem )
{
if( iItem == MENU_EXIT )
{
menu_destroy( iMenu );
return PLUGIN_HANDLED;
}
new iAccess, szId[ 3 ], iCallback;
menu_item_getinfo( iMenu, iItem, iAccess, szId, charsmax( szId ), _, _, iCallback );
menu_destroy( iMenu );
new iPlayer = str_to_num( szId );
if( ! is_user_connected( iPlayer ) )
{
CC_SendMessage( id, "%L", id, "PLAYER_NOT_FOUND" );
return PLUGIN_HANDLED;
}
new iImmunityLevel = GetImmunityLevel( id );
new iImmunityLevelTarget = GetImmunityLevel( iPlayer );
if( iImmunityLevel < iImmunityLevelTarget )
{
CC_SendMessage( id, "%L", id, "CANT_PERFORM_IMMUNITY" );
return PLUGIN_HANDLED;
}
g_iKick[ id ] = iPlayer;
client_cmd( id, "messagemode kickReason" );
return PLUGIN_HANDLED;
}
@BanMenu( id, iMenu, iItem )
{
if( iItem == MENU_EXIT )
{
menu_destroy( iMenu );
return PLUGIN_HANDLED;
}
new iAccess, szId[ 3 ], iCallback;
menu_item_getinfo( iMenu, iItem, iAccess, szId, charsmax( szId ), _, _, iCallback );
menu_destroy( iMenu );
new iPlayer = str_to_num( szId );
if( ! is_user_connected( iPlayer ) )
{
CC_SendMessage( id, "%L", id, "PLAYER_NOT_FOUND" );
return PLUGIN_HANDLED;
}
new iImmunityLevel = GetImmunityLevel( id );
new iImmunityLevelTarget = GetImmunityLevel( iPlayer );
if( iImmunityLevel < iImmunityLevelTarget )
{
CC_SendMessage( id, "%L", id, "CANT_PERFORM_IMMUNITY" );
return PLUGIN_HANDLED;
}
g_iBan[ id ][ BAN_ID ] = iPlayer;
client_cmd( id, "messagemode banPlayerMinutes" );
return PLUGIN_HANDLED;
}
@GagMenu( id, iMenu, iItem )
{
if( iItem == MENU_EXIT )
{
menu_destroy( iMenu );
return PLUGIN_HANDLED;
}
new iAccess, szId[ 3 ], iCallback;
menu_item_getinfo( iMenu, iItem, iAccess, szId, charsmax( szId ), _, _, iCallback );
menu_destroy( iMenu );
new iPlayer = str_to_num( szId );
if( ! is_user_connected( iPlayer ) )
{
CC_SendMessage( id, "%L", id, "PLAYER_NOT_FOUND" );
return PLUGIN_HANDLED;
}
if( IsGagged( iPlayer ) )
{
send_message( id, CHAT, false, "%L", id, "PLAYER_ALREADY_GAGGED" );
return PLUGIN_HANDLED;
}
new iImmunityLevel = GetImmunityLevel( id );
new iImmunityLevelTarget = GetImmunityLevel( iPlayer );
if( iImmunityLevel < iImmunityLevelTarget )
{
CC_SendMessage( id, "%L", id, "CANT_PERFORM_IMMUNITY" );
return PLUGIN_HANDLED;
}
g_iGag[ id ][ GAG_ID ] = iPlayer;
client_cmd( id, "messagemode gagPlayerMinutes" );
return PLUGIN_HANDLED;
}
///////////////////////////////////////////////////////////////////// END OF COMMAND MENUS /////////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////// CONSOLE COMMANDS /////////////////////////////////////////////////////////////////////////////////////////////////////////////
@ExtendGag( id )
{
if( ~ get_user_flags( id ) & g_iConfig[ GAG_FLAG ] )
{
send_message( id, CONSOLE, true, "%L", id, "NO_ACCESS_COMMAND" );
return PLUGIN_HANDLED;
}
new szName[ MAX_NAME_LENGTH ], szMinutes[ 9 ];
read_argv( 1, szName, charsmax( szName ) );
read_argv( 2, szMinutes, charsmax( szMinutes ) );
if( read_argc( ) != 3 )
{
send_message( id, CONSOLE, true, "%L", id, "AMX_EXTEND_GAG_USAGE" );
return PLUGIN_HANDLED;
}
new iPlayer = cmd_target( id, szName, CMDTARGET_ALLOW_SELF );
if( ! iPlayer )
{
send_message( id, CONSOLE, true, "%L", id, "PLAYER_NOT_FOUND" );
return PLUGIN_HANDLED;
}
if( id != 0 )
{
new iImmunityLevel = GetImmunityLevel( id );
new iImmunityLevelTarget = GetImmunityLevel( iPlayer );
if( iImmunityLevel < iImmunityLevelTarget )
{
send_message( id, CONSOLE, true, "%L", id, "CANT_PERFORM_IMMUNITY" );
return PLUGIN_HANDLED;
}
}
if( !IsGagged( iPlayer ) )
{
send_message( id, CONSOLE, true, "%L", id, "PLAYER_NOT_GAGGED" );
return PLUGIN_HANDLED;
}
new iMinutes = str_to_num( szMinutes );
new eData[ PlayerGag ];
for( new i; i < ArraySize( g_aGags ); i++ )
{
ArrayGetArray( g_aGags, i, eData );
if( equali( szName, eData[ Player_Name ] ) )
{
AddMinutesToDate( eData[ Player_GagExpire ], iMinutes, eData[ Player_GagExpire ], charsmax( eData[ Player_GagExpire ] ) );
ArraySetArray( g_aGags, i, eData );
UpdateGagExpireDate( eData[ Player_Name ], eData[ Player_GagExpire ] );
break;
}
}
send_message( id, LOG, true, "%L", id, "EXTENDED_GAG", g_szName[ id ], g_szAuthId[ id ], iMinutes, g_szName[ iPlayer ], g_szAuthId[ iPlayer ], g_szIp[ iPlayer ] );
CC_SendMessage( 0, "%L", id, "EXTENDED_GAG", g_szName[ id ], g_szName[ iPlayer ], iMinutes );
return PLUGIN_HANDLED;
}
@ReduceGag( id )
{
if( ~ get_user_flags( id ) & g_iConfig[ GAG_FLAG ] )
{
send_message( id, CONSOLE, true, "%L", id, "NO_ACCESS_COMMAND" );
return PLUGIN_HANDLED;
}
new szName[ MAX_NAME_LENGTH ], szMinutes[ 9 ];
read_argv( 1, szName, charsmax( szName ) );
read_argv( 2, szMinutes, charsmax( szMinutes ) );
if( read_argc( ) != 3 )
{
send_message( id, CONSOLE, true, "%L", id, "AMX_REDUCE_GAG_USAGE" );
return PLUGIN_HANDLED;
}
new iPlayer = cmd_target( id, szName, CMDTARGET_ALLOW_SELF );
if( ! iPlayer )
{
send_message( id, CONSOLE, true, "%L", id, "PLAYER_NOT_FOUND" );
return PLUGIN_HANDLED;
}
if( id != 0 )
{
new iImmunityLevel = GetImmunityLevel( id );
new iImmunityLevelTarget = GetImmunityLevel( iPlayer );
if( iImmunityLevel < iImmunityLevelTarget )
{
send_message( id, CONSOLE, true, "%L", id, "CANT_PERFORM_IMMUNITY" );
return PLUGIN_HANDLED;
}
}
if( !IsGagged( iPlayer ) )
{
send_message( id, CONSOLE, true, "%L", id, "PLAYER_NOT_GAGGED" );
return PLUGIN_HANDLED;
}
new iMinutes = str_to_num( szMinutes );
new eData[ PlayerGag ];
for( new i; i < ArraySize( g_aGags ); i++ )
{
ArrayGetArray( g_aGags, i, eData );
if( equali( szName, eData[ Player_Name ] ) )
{
RemoveMinutesFromDate( eData[ Player_GagExpire ], iMinutes, eData[ Player_GagExpire ], charsmax( eData[ Player_GagExpire ] ) );
ArraySetArray( g_aGags, i, eData );
UpdateGagExpireDate( eData[ Player_Name ], eData[ Player_GagExpire ] );
break;
}
}
send_message( id, LOG, true, "%L", id, "LOG_REDUCED_GAG", g_szName[ id ], g_szAuthId[ id ], iMinutes, g_szName[ iPlayer ], g_szAuthId[ iPlayer ], g_szIp[ iPlayer ] );
CC_SendMessage( 0, "%L", id, "REDUCED_GAG", g_szName[ id ], g_szName[ iPlayer ], iMinutes );
return PLUGIN_HANDLED;
}
@Gag( id )
{
if( ~ get_user_flags( id ) & g_iConfig[ GAG_FLAG ] )
{
send_message( id, CONSOLE, true, "%L", id, "NO_ACCESS_COMMAND" );
return PLUGIN_HANDLED;
}
new szName[ MAX_NAME_LENGTH ], szReason[ MAX_REASON_LENGTH ], szMinutes[ 8 ], szFlags[ 5 ];
read_argv( 1, szName, charsmax( szName ) );
read_argv( 2, szMinutes, charsmax( szMinutes ) );
read_argv( 3, szReason, charsmax( szReason ) );
read_argv( 4, szFlags, charsmax( szFlags ) );
if( read_argc( ) < 3 )
{
send_message( id, CONSOLE, true, "%L", id, "AMX_GAG_USAGE" );
return PLUGIN_HANDLED;
}
new iPlayer = find_player( "bl", szName );
if( ! iPlayer )
{
iPlayer = find_player( "cl", szName );
if( ! iPlayer )
{
iPlayer = find_player( "dl", szName );
if( ! iPlayer )
{
send_message( id, CONSOLE, true, "%L", id, "PLAYER_NOT_FOUND" );
return PLUGIN_HANDLED;
}
}
}
if( ! szFlags[ 0 ] )
{
copy( szFlags, charsmax( szFlags ), "sv" );
}
if( id != 0 )
{
new iImmunityLevel = GetImmunityLevel( id );
new iImmunityLevelTarget = GetImmunityLevel( iPlayer );
if( iImmunityLevel < iImmunityLevelTarget )
{
send_message( id, CONSOLE, true, "%L", id, "CANT_PERFORM_IMMUNITY" );
return PLUGIN_HANDLED;
}
}
if( IsGagged( iPlayer ) )
{
send_message( id, CONSOLE, true, "%L", id, "PLAYER_ALREADY_GAGGED" );
return PLUGIN_HANDLED;
}
if( ! equali( szFlags, "sv" ) && ! equali( szFlags, "vs" ) && ! equali( szFlags, "s" ) && ! equali( szFlags, "v" ) )
{
send_message( id, CONSOLE, true, "%L", id, "INVALID_FLAGS" );
return PLUGIN_HANDLED;
}
new szExpireDate[ MAX_DATE_LENGTH ]
new iMinutes = str_to_num( szMinutes );
if( iMinutes == 0 )
{
CC_SendMessage( 0, "%L", LANG_PLAYER, "GAGGED_PERMANENT", g_szName[ id ], g_szName[ iPlayer ], szFlags, szReason );
send_message( 0, LOG, false, "%L", LANG_PLAYER, "LOG_GAGGED_PERMANENT", g_szName[ id ], g_szAuthId[ id ], g_szName[ iPlayer ], g_szAuthId[ iPlayer ], g_szIp[ iPlayer ], szReason, szFlags );
copy( szExpireDate, charsmax( szExpireDate ), "never" );
}
else
{
get_time( "%m/%d/%Y %H:%M:%S", szExpireDate, charsmax( szExpireDate ) );
AddMinutesToDate( szExpireDate, iMinutes, szExpireDate, charsmax( szExpireDate ) );
if( iMinutes == 1 )
{
CC_SendMessage( 0, "%L", LANG_PLAYER, "GAGGED_SINGULAR", g_szName[ id ], g_szName[ iPlayer ], szReason, szFlags );
send_message( 0, LOG, false, "%L", LANG_PLAYER, "LOG_GAGGED_SINGULAR", g_szName[ id ], g_szAuthId[ id ], g_szName[ iPlayer ], g_szAuthId[ iPlayer ], g_szIp[ iPlayer ], szReason, szExpireDate, szFlags, iMinutes );
}
else
{
CC_SendMessage( 0, "%L", LANG_PLAYER, "GAGGED_PLURAL", g_szName[ id ], g_szName[ iPlayer ], iMinutes, szReason, szFlags );
send_message( 0, LOG, false, "%L", LANG_PLAYER, "LOG_GAGGED_PLURAL", g_szName[ id ], g_szAuthId[ id ], g_szName[ iPlayer ], g_szAuthId[ iPlayer ], g_szIp[ iPlayer ], szReason, szExpireDate, szFlags, iMinutes );
}
}
trim( szExpireDate );
trim( szReason );
new eData[ PlayerGag ];
copy( eData[ Player_Name ], charsmax( eData[ Player_Name ] ), g_szName[ iPlayer ] );
copy( eData[ Player_SteamId ], charsmax( eData[ Player_SteamId ] ), g_szAuthId[ iPlayer ] );
copy( eData[ Player_IP ], charsmax( eData[ Player_IP ] ), g_szIp[ iPlayer ] );
copy( eData[ Player_GagExpire ], charsmax( eData[ Player_GagExpire ] ), szExpireDate );
copy( eData[ Player_GagReason ], charsmax( eData[ Player_GagReason ] ), szReason );
copy( eData[ Player_GagFlags ], charsmax( eData[ Player_GagFlags ] ), szFlags );
copy( eData[ Player_GaggedBy ], charsmax( eData[ Player_GaggedBy ] ), g_szName[ id ] );
ArrayPushArray( g_aGags, eData );
if( ( szFlags[ 0 ] == 'v' || szFlags[ 1 ] == 'v' ) && is_user_connected( iPlayer ) )
{
set_speak( iPlayer, SPEAK_MUTED );
}
GagPlayer( g_szName[ iPlayer ], g_szAuthId[ iPlayer ], g_szIp[ iPlayer ], szReason, szFlags, szExpireDate, g_szName[ id ] );
return PLUGIN_HANDLED;
}
@UnGag( id )
{
if( ~ get_user_flags( id ) & g_iConfig[ UNGAG_FLAG ] )
{
send_message( id, CONSOLE, true, "%L", id, "NO_ACCESS_COMMAND" );
return PLUGIN_HANDLED;
}
new szIdentity[ MAX_AUTHID_LENGTH ];
read_argv( 1, szIdentity, charsmax( szIdentity ) );
if( read_argc( ) != 2 )
{
send_message( id, CONSOLE, true, "%L", id, "AMX_UNGAG_USAGE" );
return PLUGIN_HANDLED;
}
new eData[ PlayerGag ], bool:bFoundPlayer;
for( new i; i < ArraySize( g_aGags ); i++ )
{
ArrayGetArray( g_aGags, i, eData );
if( equali( szIdentity, eData[ Player_Name ] ) || equali( szIdentity, eData[ Player_SteamId ] ) || equali( szIdentity, eData[ Player_IP ] ) )
{
UnGagPlayer( szIdentity );
CC_SendMessage( 0, "%L", LANG_PLAYER, "UNGAGGED", g_szName[ id ], eData[ Player_Name ] );
send_message( 0, LOG, false, "%L", LANG_PLAYER, "LOG_UNGAGGED", g_szName[ id ], g_szAuthId[ id ], g_szIp[ id ], eData[ Player_Name ], eData[ Player_SteamID ], eData[ Player_IP ] );
bFoundPlayer = true;
break;
}
}
if( ! bFoundPlayer )
{
send_message( id, CONSOLE, true, "%L", id, "PLAYER_NOT_FOUND" );
}
return PLUGIN_HANDLED;
}
@AdminSay( id )
{
if( ~ get_user_flags( id ) & g_iConfig[ SAY_FLAG ] )
{
send_message( id, CONSOLE, true, "%L", id, "NO_ACCESS_COMMAND" );
return PLUGIN_HANDLED;
}
new szText[ MAX_TEXT_LENGTH ];
read_args( szText, charsmax( szText ) );
trim( szText );
remove_quotes( szText );
if( ! szText[ 0 ] )
{
send_message( id, CONSOLE, true, "%L", id, "EMPTY_STRING" );
return PLUGIN_HANDLED;
}
CC_SendMessage( 0, "&x00%L", LANG_PLAYER, "ADMIN_SAY", g_szName[ id ], szText );
return PLUGIN_HANDLED;
}
@AdminChat( id )
{
if( ~ get_user_flags( id ) & g_iConfig[ CHAT_FLAG ] )
{
send_message( id, CONSOLE, true, "%L", id, "NO_ACCESS_COMMAND" );
return PLUGIN_HANDLED;
}
new szText[ MAX_TEXT_LENGTH ];
read_args( szText, charsmax( szText ) );
trim( szText );
remove_quotes( szText );
if( ! szText[ 0 ] )
{
send_message( id, CONSOLE, true, "%L", id, "EMPTY_STRING" );
return PLUGIN_HANDLED;
}
new iPlayers[ 32 ], iNum, iTempId;
get_players( iPlayers, iNum, "ch" );
for( new i; i < iNum; i++ )
{
iTempId = iPlayers[ i ];
if( get_user_flags( iTempId ) & g_iConfig[ CHAT_FLAG ] )
{
CC_SendMatched( iTempId, id, "&x00%L", iTempId, "ADMIN_CHAT_SAY", g_szName[ id ], szText );
}
}
return PLUGIN_HANDLED;
}
@Tsay( id )
{
if( ~ get_user_flags( id ) & g_iConfig[ CHAT_FLAG ] )
{
send_message( id, CONSOLE, true, "%L", id, "NO_ACCESS_COMMAND" );
return PLUGIN_HANDLED;
}
new szColor[ 12 ], szText[ MAX_TEXT_LENGTH ], szPrivate[ 3 ], bool:bPrivate;
read_argv( 1, szColor, charsmax( szColor ) );
read_argv( 2, szText, charsmax( szText ) );
read_argv( 3, szPrivate, charsmax( szPrivate ) );
if( read_argc( ) < 2 )
{
send_message( id, CONSOLE, true, "%L", id, "AMX_TSAY_USAGE" );
return PLUGIN_HANDLED;
}
new iColor[ 3 ] = -1;
if( ! szColor[ 0 ] )
{
iColor[ 0 ] = 0;
iColor[ 1 ] = 255;
iColor[ 2 ] = 0;
}
else
{
new bool:bColor;
for( new i; i < sizeof g_szHudColors; i++ )
{
if( equali( szColor, g_szHudColors[ i ][ 0 ] ) )
{
iColor[ 0 ] = g_szHudColors[ i ][ 1 ][ 0 ];
iColor[ 1 ] = g_szHudColors[ i ][ 1 ][ 1 ];
iColor[ 2 ] = g_szHudColors[ i ][ 1 ][ 2 ];
bColor = true;
break;
}
}
if( ! bColor )
{
iColor[ 0 ] = 0;
iColor[ 1 ] = 255;
iColor[ 2 ] = 0;
}
}
if( ! szPrivate[ 0 ] || ! is_str_num( szPrivate ) || !( 0 <= str_to_num( szPrivate ) <= 1 ) )
{
bPrivate = false;
}
if( str_to_num( szPrivate ) == 1 )
{
bPrivate = true;
}
set_hudmessage( iColor[ 0 ], iColor[ 1 ], iColor[ 2 ], 0.02, 0.70, 0, 10.0, 10.0 );
bPrivate ? show_hudmessage( 0, "%s", szText ) : show_hudmessage( 0, "%s: %s", g_szName[ id ], szText )
send_message( 0, LOG, false, "%L", id, "TSAY_LOG", g_szName[ id ], g_szAuthId[ id ], g_szIp[ id ], szText );
return PLUGIN_HANDLED;
}
@VoteMap( id )
{
if( ~ get_user_flags( id ) & g_iConfig[ VOTEMAP_FLAG ] )
{
send_message( id, CONSOLE, true, "%L", id, "NO_ACCESS_COMMAND" );
return PLUGIN_HANDLED;
}
if( g_bMapVoting )
{
send_message( id, CONSOLE, true, "%L", id, "VOTE_ONGOING" );
return PLUGIN_HANDLED;
}
new szMap1[ 32 ], szMap2[ 32 ], szMap3[ 32 ];
read_argv( 1, szMap1, charsmax( szMap1 ) );
read_argv( 2, szMap2, charsmax( szMap2 ) );
read_argv( 3, szMap3, charsmax( szMap3 ) );
if( read_argc( ) < 3 )
{
send_message( id, CONSOLE, true, "%L", id, "AMX_VOTEMAP_USAGE" );
return PLUGIN_HANDLED;
}
new iEmpty;
if( ! szMap1[ 0 ] )
{
iEmpty++;
}
if( ! szMap2[ 0 ] )
{
iEmpty++;
}
if( ! szMap3[ 0 ] )
{
iEmpty++;
}
if( iEmpty >= 2 )
{
send_message( id, CONSOLE, true, "%L", id, "VOTE_MISSING_ANSWERS" );
return PLUGIN_HANDLED;
}
if( szMap1[ 0 ] && ! is_map_valid( szMap1 ) || szMap2[ 0 ] && ! is_map_valid( szMap2 ) || szMap3[ 0 ] && ! is_map_valid( szMap3 ) )
{
send_message( id, CONSOLE, true, "%L", id, "VOTE_INVALID_MAP" );
return PLUGIN_HANDLED;
}
new iPlayers[ 32 ], iNum, iTempId;
get_players( iPlayers, iNum, "ch" );
g_bMapVoting = true;
for( new i; i < iNum; i++ )
{
iTempId = iPlayers[ i ];
g_iVoteMapMenu[ iTempId ] = menu_create( "Vote next map", "OnVoteMapMenu_Handler" );
if( szMap1[ 0 ] )
{
menu_additem( g_iVoteMapMenu[ iTempId ], szMap1, "0" );
copy( g_szVoteMapOptions[ 0 ], charsmax( g_szVoteMapOptions[ ] ), szMap1 );
}
if( szMap2[ 0 ] )
{
menu_additem( g_iVoteMapMenu[ iTempId ], szMap2, "1" );
copy( g_szVoteMapOptions[ 1 ], charsmax( g_szVoteMapOptions[ ] ), szMap2 );
}
if( szMap3[ 0 ] )
{
menu_additem( g_iVoteMapMenu[ iTempId ], szMap3, "2" );
copy( g_szVoteMapOptions[ 2 ], charsmax( g_szVoteMapOptions[ ] ), szMap3 );
}
menu_display( iTempId, g_iVoteMapMenu[ iTempId ], 0 );
}
CC_SendMessage( 0, "%L", LANG_PLAYER, "VOTE_MAP_TRIGGER", g_szName[ id ] );
g_iVoteMapTriggeredId = id;
copy( g_szVoteMapTriggeredSteamId, charsmax( g_szVoteMapTriggeredSteamId ), g_szAuthId[ id ] );
set_task( g_iConfig[ VOTE_MAP_TIME ], "OnVoteMapEnd" );
return PLUGIN_HANDLED;
}
public OnVoteMapMenu_Handler( id, iMenu, iItem )
{
if( iItem == MENU_EXIT || ! g_bMapVoting )
{
g_iVoteMapOption[ id ] = 0;
menu_destroy( iMenu );
return PLUGIN_HANDLED;
}
new iAccess, szItem[ 3 ], iCallback;
menu_item_getinfo( iMenu, iItem, iAccess, szItem, charsmax( szItem ), _, _, iCallback );
menu_destroy( iMenu );
g_iVoteMapOption[ id ] = str_to_num( szItem );
CC_SendMessage( 0, "%L", LANG_PLAYER, "PLAYER_VOTE", g_szName[ id ], iItem + 1 );
return PLUGIN_HANDLED;
}
public OnVoteMapEnd( )
{
g_bMapVoting = false;
new iVotes[ 3 ], iPlayers[ 32 ], iNum, iTempId, i;
get_players( iPlayers, iNum, "ch" );
for( i = 0; i < iNum; i++ )
{
iTempId = iPlayers[ i ];
iVotes[ g_iVoteMapOption[ iTempId ] ]++;
}
new iMax = 0, iFinal = 0;
for( i = 0; i < 3; i++ )
{
if( iVotes[ i ] > iMax )
{
iMax = iVotes[ i ];
iFinal = i;
}
}
CC_SendMessage( 0, "%L", LANG_PLAYER, "VOTEMAP_RESULTS", g_szVoteMapOptions[ iFinal ] );
new iKey, iItem;
for( i = 0; i < iNum; i++ )
{
iTempId = iPlayers[ i ];
g_iVoteMapOption[ iTempId ] = 0;
if( get_user_menu( iTempId, iKey, iItem ) == g_iVoteMapMenu[ iTempId ] )
{
menu_destroy( g_iVoteMapMenu[ iTempId ] );
}
g_iVoteMapMenu[ iTempId ] = 0;
}
if( is_user_connected( g_iVoteMapTriggeredId ) ) // check to see whether the person who triggered vote is still connected
{
if( equal( g_szVoteMapTriggeredSteamId, g_szAuthId[ g_iVoteMapTriggeredId ] ) ) // check to see whether he's the same person, we don't want to ask random people about changing map
{
new szTitle[ 64 ];
formatex( szTitle, charsmax( szTitle ), "Change map to %s", g_szVoteMapOptions[ iFinal ] );
new iMenu = menu_create( szTitle, "ChangeMapHandler" );
menu_additem( iMenu, "Yes" );
menu_additem( iMenu, "No" );
menu_display( g_iVoteMapTriggeredId, iMenu, 0 );
}
}
copy( g_szVoteMapFinalOption, charsmax( g_szVoteMapFinalOption ), g_szVoteMapOptions[ iFinal ] );
arrayset( g_szVoteMapOptions[ 0 ], 0, sizeof( g_szVoteMapOptions[ ] ) );
arrayset( g_szVoteMapOptions[ 1 ], 0, sizeof( g_szVoteMapOptions[ ] ) );
arrayset( g_szVoteMapOptions[ 2 ], 0, sizeof( g_szVoteMapOptions[ ] ) );
return PLUGIN_HANDLED;
}
public ChangeMapHandler( id, iMenu, iItem )
{
if( iItem == MENU_EXIT )
{
menu_destroy( iMenu );
return PLUGIN_HANDLED;
}
switch( iItem )
{
case 0:
{
set_task( 2.0, "OnVoteMapChange" );
}
case 1:
{
arrayset( g_szVoteMapFinalOption, 0, sizeof( g_szVoteMapFinalOption[ ] ) );
}
}
menu_destroy( iMenu );
return PLUGIN_HANDLED;
}
public OnVoteMapChange( )
{
new szModName[ 10 ];
get_modname( szModName, charsmax( szModName ) );
if( ! equali( szModName, "zp" ) )
{
message_begin( MSG_ALL, SVC_INTERMISSION );
message_end( );
}
server_cmd( "changelevel %s", g_szVoteMapFinalOption );
arrayset( g_szVoteMapFinalOption, 0, sizeof( g_szVoteMapFinalOption[ ] ) );
}
@Vote( id )
{
if( ~ get_user_flags( id ) & g_iConfig[ VOTE_FLAG ] )
{
send_message( id, CONSOLE, true, "%L", id, "NO_ACCESS_COMMAND" );
return PLUGIN_HANDLED;
}
if( g_bVoting )
{
send_message( id, CONSOLE, true, "%L", id, "VOTE_ONGOING" );
return PLUGIN_HANDLED;
}
new szQuestion[ 32 ], szOption1[ 32 ], szOption2[ 32 ], szOption3[ 32 ];
read_argv( 1, szQuestion, charsmax( szQuestion ) );
read_argv( 2, szOption1, charsmax( szOption1 ) );
read_argv( 3, szOption2, charsmax( szOption2 ) );
read_argv( 4, szOption3, charsmax( szOption3 ) );
if( read_argc( ) < 3 )
{
send_message( id, CONSOLE, true, "%L", id, "AMX_VOTE_USAGE" );
return PLUGIN_HANDLED;
}
if( ! szOption1[ 0 ] && ! szOption2[ 0 ] && ! szOption3[ 0 ] )
{
send_message( id, CONSOLE, true, "%L", id, "VOTE_MISSING_ANSWERS" );
return PLUGIN_HANDLED;
}
new iPlayers[ 32 ], iNum, iTempId;
get_players( iPlayers, iNum, "ch" );
copy( g_szVoteQuestion, charsmax( g_szVoteQuestion ), szQuestion );
g_bVoting = true;
for( new i; i < iNum; i++ )
{
iTempId = iPlayers[ i ];
g_iVoteMenu[ iTempId ] = menu_create( szQuestion, "OnVoteMenu_Handler" );
if( szOption1[ 0 ] )
{
menu_additem( g_iVoteMenu[ iTempId ], szOption1, "0" );
copy( g_szVoteOptions[ 0 ], charsmax( g_szVoteOptions[ ] ), szOption1 );
}
if( szOption2[ 0 ] )
{
menu_additem( g_iVoteMenu[ iTempId ], szOption2, "1" );
copy( g_szVoteOptions[ 1 ], charsmax( g_szVoteOptions[ ] ), szOption2 );
}
if( szOption3[ 0 ] )
{
menu_additem( g_iVoteMenu[ iTempId ], szOption3, "2" );
copy( g_szVoteOptions[ 2 ], charsmax( g_szVoteOptions[ ] ), szOption3 );
}
menu_display( iTempId, g_iVoteMenu[ iTempId ], 0 );
}
set_task( g_iConfig[ VOTE_TIME ], "OnVoteEnd" );
return PLUGIN_HANDLED;
}
public OnVoteMenu_Handler( id, iMenu, iItem )
{
if( iItem == MENU_EXIT || ! g_bVoting )
{
g_iVoteOption[ id ] = 0;
menu_destroy( iMenu );
return PLUGIN_HANDLED;
}
new iAccess, szItem[ 3 ], iCallback;
menu_item_getinfo( iMenu, iItem, iAccess, szItem, charsmax( szItem ), _, _, iCallback );
menu_destroy( iMenu );
g_iVoteOption[ id ] = str_to_num( szItem );
CC_SendMessage( 0, "%L", LANG_PLAYER, "PLAYER_VOTE", g_szName[ id ], iItem + 1 );
return PLUGIN_HANDLED;
}
public OnVoteEnd( )
{
g_bVoting = false;
new iVotes[ 3 ], iPlayers[ 32 ], iNum, iTempId, i;
get_players( iPlayers, iNum, "ch" );
for( i = 0; i < iNum; i++ )
{
iTempId = iPlayers[ i ];
iVotes[ g_iVoteOption[ iTempId ] ]++;
}
new iMax = 0, iFinal = 0;
for( i = 0; i < 3; i++ )
{
if( iVotes[ i ] > iMax )
{
iMax = iVotes[ i ];
iFinal = i;
}
}
CC_SendMessage( 0, "%L", LANG_PLAYER, "VOTE_RESULTS", g_szVoteOptions[ iFinal ], g_szVoteQuestion );
new iKey, iItem;
for( i = 0; i < iNum; i++ )
{
iTempId = iPlayers[ i ];
g_iVoteOption[ iTempId ] = 0;
if( get_user_menu( iTempId, iKey, iItem ) == g_iVoteMenu[ iTempId ] )
{
menu_destroy( g_iVoteMenu[ iTempId ] );
}
g_iVoteMenu[ iTempId ] = 0;
}
arrayset( g_szVoteOptions[ 0 ], 0, sizeof( g_szVoteOptions[ ] ) );
arrayset( g_szVoteOptions[ 1 ], 0, sizeof( g_szVoteOptions[ ] ) );
arrayset( g_szVoteOptions[ 2 ], 0, sizeof( g_szVoteOptions[ ] ) );
arrayset( g_szVoteQuestion, 0, sizeof( g_szVoteQuestion ) );
}
@Warn( id )
{
if( ~ get_user_flags( id ) & g_iConfig[ WARN_FLAG ] )
{
send_message( id, CONSOLE, true, "%L", id, "NO_ACCESS_COMMAND" );
return PLUGIN_HANDLED;
}
new szName[ MAX_NAME_LENGTH ], szReason[ MAX_REASON_LENGTH ];
read_argv( 1, szName, charsmax( szName ) );
read_argv( 2, szReason, charsmax( szReason ) );
if( read_argc( ) != 3 )
{
send_message( id, CONSOLE, true, "%L", id, "AMX_WARN_USAGE" );
return PLUGIN_HANDLED;
}
new iPlayer = cmd_target( id, szName, CMDTARGET_ALLOW_SELF );
if( ! iPlayer )
{
send_message( id, CONSOLE, true, "%L", id, "PLAYER_NOT_FOUND" );
return PLUGIN_HANDLED;
}
if( id != 0 )
{
new iImmunityLevel = GetImmunityLevel( id );
new iImmunityLevelTarget = GetImmunityLevel( iPlayer );
if( iImmunityLevel < iImmunityLevelTarget )
{
send_message( id, CONSOLE, true, "%L", id, "CANT_PERFORM_IMMUNITY" );
return PLUGIN_HANDLED;
}
}
send_message( 0, LOG, false, "%L", LANG_PLAYER, "WARN_OTHERS", g_szName[ id ], g_szName[ iPlayer ], szReason );
new iPlayers[ MAX_PLAYERS ], iNum, iTempId;
get_players( iPlayers, iNum, "ch" );
CC_SendMessage( iPlayer, "%L", iPlayer, "WARN_HIM", g_szName[ id ], szReason );
for( new i; i < iNum; i++ )
{
iTempId = iPlayers[ i ];
if( iTempId != iPlayer )
{
CC_SendMessage( iTempId, "%L", iTempId, "WARN_OTHERS", g_szName[ id ], g_szName[ iPlayer ], szReason );
}
}
return PLUGIN_HANDLED;
}
@Noclip( id )
{
if( ~ get_user_flags( id ) & g_iConfig[ NOCLIP_FLAG ] )
{
send_message( id, CONSOLE, true, "%L", id, "NO_ACCESS_COMMAND" );
return PLUGIN_HANDLED;
}
new szName[ MAX_NAME_LENGTH ], szValue[ 3 ];
read_argv( 1, szName, charsmax( szName ) );
read_argv( 2, szValue, charsmax( szValue ) );
if( read_argc( ) != 3 )
{
send_message( id, CONSOLE, true, "%L", id, "AMX_NOCLIP_USAGE" );
return PLUGIN_HANDLED;
}
new iPlayer = cmd_target( id, szName, CMDTARGET_ALLOW_SELF );
if( ! iPlayer )
{
send_message( id, CONSOLE, true, "%L", id, "PLAYER_NOT_FOUND" );
return PLUGIN_HANDLED;
}
if( ! is_user_alive( iPlayer ) )
{
send_message( id, CONSOLE, true, "%L", id, "NOCLIP_DEAD_PLAYER" );
return PLUGIN_HANDLED;
}
if( id != 0 )
{
new iImmunityLevel = GetImmunityLevel( id );
new iImmunityLevelTarget = GetImmunityLevel( iPlayer );
if( iImmunityLevel < iImmunityLevelTarget )
{
send_message( id, CONSOLE, true, "%L", id, "CANT_PERFORM_IMMUNITY" );
return PLUGIN_HANDLED;
}
}
new iValue = str_to_num( szValue );
if( iValue < 0 || iValue > 1 )
{
send_message( id, CONSOLE, true, "%L", id, "INVALID_NOCLIP_VALUE" );
return PLUGIN_HANDLED;
}
set_user_noclip( iPlayer, iValue );
switch( iValue )
{
case 0:
{
send_message( 0, LOG, false, "%L", LANG_PLAYER, "NOCLIP_UNSET", g_szName[ id ], g_szAuthId[ id ], g_szName[ iPlayer ], g_szAuthId[ iPlayer ], g_szIp[ iPlayer ] );
CC_SendMessage( 0, "%L", LANG_PLAYER, "NOCLIP_UNSET", g_szName[ id ], g_szName[ iPlayer ] );
}
case 1:
{
send_message( 0, LOG, false, "%L", LANG_PLAYER, "LOG_NOCLIP_SET", g_szName[ id ], g_szAuthId[ id ], g_szName[ iPlayer ], g_szAuthId[ iPlayer ], g_szIp[ iPlayer ] );
CC_SendMessage( 0, "%L", LANG_PLAYER, "NOCLIP_SET", g_szName[ id ], g_szName[ iPlayer ] );
}
}
return PLUGIN_HANDLED;
}
@Godmode( id )
{
if( ~ get_user_flags( id ) & g_iConfig[ GODMODE_FLAG ] )
{
send_message( id, CONSOLE, true, "%L", id, "NO_ACCESS_COMMAND" );
return PLUGIN_HANDLED;
}
new szName[ MAX_NAME_LENGTH ], szValue[ 3 ];
read_argv( 1, szName, charsmax( szName ) );
read_argv( 2, szValue, charsmax( szValue ) );
if( read_argc( ) != 3 )
{
send_message( id, CONSOLE, true, "%L", id, "AMX_GODMODE_USAGE" );
return PLUGIN_HANDLED;
}
new iPlayer = cmd_target( id, szName, CMDTARGET_ALLOW_SELF );
if( ! iPlayer )
{
send_message( id, CONSOLE, true, "%L", id, "PLAYER_NOT_FOUND" );
return PLUGIN_HANDLED;
}
if( ! is_user_alive( iPlayer ) )
{
send_message( id, CHAT, true, "%L", id, "GODMODE_DEAD_PLAYER" );
return PLUGIN_HANDLED;
}
if( id != 0 )
{
new iImmunityLevel = GetImmunityLevel( id );
new iImmunityLevelTarget = GetImmunityLevel( iPlayer );
if( iImmunityLevel < iImmunityLevelTarget )
{
send_message( id, CONSOLE, true, "%L", id, "CANT_PERFORM_IMMUNITY" );
return PLUGIN_HANDLED;
}
}
new iValue = str_to_num( szValue );
if( iValue < 0 || iValue > 1 )
{
send_message( id, CONSOLE, true, "%L", id, "INVALID_GODMODE_VALUE" );
return PLUGIN_HANDLED;
}
set_user_godmode( iPlayer, iValue );
switch( iValue )
{
case 0:
{
send_message( 0, LOG, false, "%L", LANG_PLAYER, "LOG_GODMODE_UNSET", g_szName[ id ], g_szAuthId[ id ], g_szName[ iPlayer ], g_szAuthId[ iPlayer ], g_szIp[ iPlayer ] );
CC_SendMessage( 0, "%L", LANG_PLAYER, "GODMODE_UNSET", g_szName[ id ], g_szName[ iPlayer ] );
}
case 1:
{
send_message( 0, LOG, false, "%L", LANG_PLAYER, "LOG_GODMODE_SET", g_szName[ id ], g_szAuthId[ id ], g_szName[ iPlayer ], g_szAuthId[ iPlayer ], g_szIp[ iPlayer ] );
CC_SendMessage( 0, "%L", LANG_PLAYER, "GODMODE_SET", g_szName[ id ], g_szName[ iPlayer ] );
}
}
return PLUGIN_HANDLED;
}
@Freeze( id )
{
if( ~ get_user_flags( id ) & g_iConfig[ FREEZE_FLAG ] )
{
send_message( id, CONSOLE, true, "%L", id, "NO_ACCESS_COMMAND" );
return PLUGIN_HANDLED;
}
new szName[ MAX_NAME_LENGTH ], szValue[ 3 ];
read_argv( 1, szName, charsmax( szName ) );
read_argv( 2, szValue, charsmax( szValue ) );
if( read_argc( ) != 3 )
{
send_message( id, CONSOLE, true, "%L", id, "AMX_FREEZE_USAGE" );
return PLUGIN_HANDLED;
}
new iPlayer = cmd_target( id, szName, CMDTARGET_ALLOW_SELF );
if( ! iPlayer )
{
send_message( id, CONSOLE, true, "%L", id, "PLAYER_NOT_FOUND" );
return PLUGIN_HANDLED;
}
if( ! is_user_alive( iPlayer ) )
{
send_message( id, CHAT, true, "%L", id, "FREEZE_DEAD_PLAYER" );
return PLUGIN_HANDLED;
}
if( id != 0 )
{
new iImmunityLevel = GetImmunityLevel( id );
new iImmunityLevelTarget = GetImmunityLevel( iPlayer );
if( iImmunityLevel < iImmunityLevelTarget )
{
send_message( id, CONSOLE, true, "%L", id, "CANT_PERFORM_IMMUNITY" );
return PLUGIN_HANDLED;
}
}
new iValue = str_to_num( szValue );
if( iValue < 0 || iValue > 1 )
{
send_message( id, CONSOLE, true, "%L", id, "INVALID_FREEZE_VALUE" );
return PLUGIN_HANDLED;
}
FreezePlayer( iPlayer, iValue );
switch( iValue )
{
case 0:
{
send_message( 0, LOG, false, "%L", LANG_PLAYER, "FREEZE_UNSET", g_szName[ id ], g_szAuthId[ id ], g_szName[ iPlayer ], g_szAuthId[ iPlayer ], g_szIp[ iPlayer ] );
CC_SendMessage( 0, "%L", LANG_PLAYER, "FREEZE_UNSET", g_szName[ id ], g_szName[ iPlayer ] );
}
case 1:
{
send_message( 0, LOG, false, "%L", LANG_PLAYER, "FREEZE_SET", g_szName[ id ], g_szAuthId[ id ], g_szName[ iPlayer ], g_szAuthId[ iPlayer ], g_szIp[ iPlayer ] );
CC_SendMessage( 0, "%L", LANG_PLAYER, "FREEZE_SET", g_szName[ id ], g_szName[ iPlayer ] );
}
}
return PLUGIN_HANDLED;
}
@Screenshot( id )
{
if( ~ get_user_flags( id ) & g_iConfig[ SCREENSHOT_FLAG ] )
{
send_message( id, CONSOLE, true, "%L", id, "NO_ACCESS_COMMAND" );
return PLUGIN_HANDLED;
}
new szName[ MAX_NAME_LENGTH ];
read_argv( 1, szName, charsmax( szName ) );
if( read_argc( ) != 2 )
{
send_message( id, CONSOLE, true, "%L", id, "AMX_SCREENSHOT_USAGE" );
return PLUGIN_HANDLED;
}
new iPlayer = cmd_target( id, szName, CMDTARGET_ALLOW_SELF );
if( ! iPlayer )
{
send_message( id, CONSOLE, true, "%L", id, "PLAYER_NOT_FOUND" );
return PLUGIN_HANDLED;
}
if( id != 0 )
{
new iImmunityLevel = GetImmunityLevel( id );
new iImmunityLevelTarget = GetImmunityLevel( iPlayer );
if( iImmunityLevel < iImmunityLevelTarget )
{
send_message( id, CONSOLE, true, "%L", id, "CANT_PERFORM_IMMUNITY" );
return PLUGIN_HANDLED;
}
}
ScreenShot( iPlayer );
send_message( 0, LOG, false, "%L", LANG_PLAYER, "LOG_SCREENSHOT", g_szName[ id ], g_szAuthId[ id ], g_szName[ iPlayer ], g_szAuthId[ iPlayer ], g_szIp[ iPlayer ] );
CC_SendMessage( 0, "%L", LANG_PLAYER, "SCREENSHOT", g_szName[ id ], g_szName[ iPlayer ] );
return PLUGIN_HANDLED;
}
@Help( id )
{
new szArg1[ 8 ], iFlags = get_user_flags( id );
new iStart = read_argv( 1, szArg1, 7 ) ? str_to_num( szArg1 ) : 1;
new iHelpAmount = 10;
// HACK: ADMIN_ADMIN is never set as a user's actual flags, so those types of commands never show
if( iFlags > 0 && !( iFlags & ADMIN_USER ) )
{
iFlags |= ADMIN_ADMIN;
}
if( id == 0 && read_argc( ) == 3 )
iHelpAmount = read_argv( 2, szArg1, 7 ) ? str_to_num( szArg1 ) : 10;
if( --iStart < 0 )
iStart = 0;
new iClcmdNum = get_concmdsnum( iFlags, id );
if( iStart >= iClcmdNum )
iStart = iClcmdNum - 1;
console_print( id, "^n----- %L -----", id, "HELP_COMS" );
new szInfo[ 128 ], szCmd[ 32 ], eFlags;
new iEnd = iStart + iHelpAmount // HELPAMOUNT
if( iEnd > iClcmdNum )
iEnd = iClcmdNum;
for( new i = iStart; i < iEnd; i++ )
{
get_concmd( i, szCmd, charsmax( szCmd ), eFlags, szInfo, charsmax( szInfo ), iFlags, id );
console_print( id, "%3d: %s %s", i + 1, szCmd, szInfo );
}
console_print( id, "----- %L -----", id, "HELP_ENTRIES", iStart + 1, iEnd, iClcmdNum );
if( iEnd < iClcmdNum )
console_print( id, "----- %L -----", id, "HELP_USE_MORE", iEnd + 1 );
else
console_print( id, "----- %L -----", id, "HELP_USE_BEGIN" );
return PLUGIN_HANDLED;
}
@Plugins( id )
{
if( ~ get_user_flags( id ) & g_iConfig[ PLUGINS_FLAG ] )
{
send_message( id, CONSOLE, true, "%L", id, "NO_ACCESS_COMMAND" );
return PLUGIN_HANDLED;
}
if( id == 0 ) // If server executes redirect this to "amxx plugins" for more in depth output
{
server_cmd( "amxx plugins" );
server_exec( );
return PLUGIN_HANDLED;
}
new szName[ MAX_NAME_LENGTH ], szVersion[ 8 ], szAuthor[ MAX_NAME_LENGTH ], szFileName[ 64 ], szStatus[ 32 ];
new iStartId, iEndId;
new szTemp[ 128 ];
new iNum = get_pluginsnum( );
if( read_argc( ) > 1 )
{
read_argv( 1, szTemp, charsmax( szTemp ) );
iStartId = str_to_num( szTemp ) - 1; // zero-based
}
iEndId = min( iStartId + 10, iNum );
new iRunning;
console_print( id, "%L", id, "CURRENTLY_LOADED" );
new i = iStartId;
while( i < iEndId )
{
get_plugin( i++, szFileName, charsmax( szFileName ), szName, charsmax( szName ), szVersion, charsmax( szVersion ), szAuthor, charsmax( szAuthor ), szStatus, charsmax( szStatus ) );
console_print( id, "%-18.17s %-11.10s %-17.16s %-16.15s %-9.8s", szName, szVersion, szAuthor, szFileName, szStatus );
if( szStatus[ 0 ] == 'd' || szStatus[ 0 ] == 'r') // "debug" or "running"
{
iRunning++;
}
}
console_print( id, "%d %L, %d %L", iEndId-iStartId, id, "PLUGINS", iRunning, id, "RUNNING" );
console_print( id, "----- Entries %d - %d of %d -----", iStartId + 1, iEndId, iNum );
if( iEndId < iNum )
{
formatex( szTemp, charsmax( szTemp ),"----- %L -----", id, "HELP_USE_MORE", iEndId + 1);
replace_all( szTemp, charsmax( szTemp ), "amx_help", "amx_plugins" );
console_print( id, "%s", szTemp );
}
else
{
formatex( szTemp, charsmax( szTemp ),"----- %L -----", id, "HELP_USE_BEGIN" );
replace_all( szTemp, charsmax( szTemp ), "amx_help", "amx_plugins" );
console_print( id, "%s", szTemp );
}
return PLUGIN_HANDLED;
}
@Modules( id )
{
if( ~ get_user_flags( id ) & g_iConfig[ MODULES_FLAG ] )
{
send_message( id, CONSOLE, true, "%L", id, "NO_ACCESS_COMMAND" );
return PLUGIN_HANDLED;
}
new szName[ MAX_NAME_LENGTH ], szVersion[ 8 ], szAuthor[ MAX_NAME_LENGTH ], iStatus, szStatus[ 16 ];
new iNum = get_modulesnum( );
console_print( id, "%L", id, "LOADED_MODULES" );
for( new i; i < iNum; i++ )
{
get_module( i, szName, charsmax( szName ), szAuthor, charsmax( szAuthor ), szVersion, charsmax( szVersion ), iStatus )
switch( iStatus )
{
case module_loaded:
{
new szRunning[ 15 ];
formatex( szRunning, charsmax( szRunning ), "%L", id, "RUNNING" );
copy( szStatus, charsmax( szStatus ), szRunning );
}
default:
{
new szTempString[ 64 ];
formatex( szTempString, charsmax( szTempString ), "%L", id, "BAD_LOAD" );
copy( szStatus, charsmax( szStatus ), szTempString );
formatex( szTempString, charsmax( szTempString ), "%L", id, "UNKNOWN" );
copy( szName, charsmax( szName ), szTempString );
copy( szAuthor, charsmax( szAuthor ), szTempString );
copy( szVersion, charsmax( szVersion ), szTempString );
}
}
console_print( id, "%-23.22s %-11.10s %-20.19s %-11.10s", szName, szVersion, szAuthor, szStatus );
}
console_print( id, "%d %L", iNum, id, "MODULES" );
return PLUGIN_HANDLED;
}
@Cvar( id )
{
new szCvar[ 32 ], szValue[ 64 ];
read_argv( 1, szCvar, charsmax( szCvar ) );
read_argv( 2, szValue, charsmax( szValue ) );
new iPointer;
if( equal( szCvar, "add" ) && ( get_user_flags( id ) & ADMIN_RCON ) )
{
if( ( iPointer = get_cvar_pointer( szValue ) ) != 0 )
{
new iFlags = get_pcvar_flags( iPointer );
if( !( iFlags & FCVAR_PROTECTED ) )
{
set_pcvar_flags( iPointer, iFlags | FCVAR_PROTECTED );
}
}
return PLUGIN_HANDLED;
}
else if( equal( szCvar, "remove" ) && ( get_user_flags( id ) & ADMIN_RCON ) )
{
if( ( iPointer = get_cvar_pointer( szValue ) ) != 0 )
{
new iFlags = get_pcvar_flags( iPointer );
if( iFlags & FCVAR_PROTECTED )
{
set_pcvar_flags( iPointer, iFlags & ~FCVAR_PROTECTED );
}
}
return PLUGIN_HANDLED;
}
new eData[ Cvars ], iCvarFlag = -1;
for( new i; i < ArraySize( g_aCvars ); i++ )
{
ArrayGetArray( g_aCvars, i, eData );
if( equali( eData[ Cvar_Name ], szCvar ) )
{
iCvarFlag = eData[ Cvar_Flag ];
break;
}
}
if( iCvarFlag == -1 )
{
if( ~get_user_flags( id ) & ADMIN_RCON )
{
send_message( id, CONSOLE, true, "%L", id, "NO_ACCESS_COMMAND" );
return PLUGIN_HANDLED;
}
}
else
{
if( ( ~get_user_flags( id ) & iCvarFlag ) && ( ~get_user_flags( id ) & ADMIN_RCON ) )
{
send_message( id, CONSOLE, true, "%L", id, "NO_ACCESS_COMMAND" );
return PLUGIN_HANDLED;
}
}
if( ( iPointer = get_cvar_pointer( szCvar ) ) == 0 )
{
console_print( id, "%L", id, "UNKNOWN_CVAR", szCvar );
return PLUGIN_HANDLED;
}
if( read_argc( ) < 3 )
{
get_pcvar_string( iPointer, szValue, charsmax( szValue ) );
console_print( id, "CVAR ^"%s^" %L ^"%s^"", szCvar, id, "IS", szValue );
return PLUGIN_HANDLED;
}
send_message( 0, LOG, false, "%L", LANG_PLAYER, "LOG_CVAR_SET", g_szName[ id ], g_szAuthId[ id ], szCvar, szValue );
set_cvar_string( szCvar, szValue );
new iPlayers[ MAX_PLAYERS ], iNum, iTempId, szCvarValue[ 64 ];
get_players( iPlayers, iNum, "ch" );
for( new i; i < iNum; i++ )
{
iTempId = iPlayers[ i ];
if( get_pcvar_flags( iPointer ) & FCVAR_PROTECTED || equali( szCvar, "rcon_password" ) )
{
formatex( szCvarValue, charsmax( szCvarValue ), "*** %L ***", id, "PROTECTED" );
}
else
{
copy( szCvarValue, charsmax( szCvarValue ), szValue );
}
CC_SendMessage( iTempId, "%L", id, "CVAR_SET", g_szName[ id ], szCvar, szCvarValue );
}
console_print( id, "%L", id, "CVAR_SET_SUCCESS", szCvar, szValue );
return PLUGIN_HANDLED;
}
@Rcon( id )
{
if( ~ get_user_flags( id ) & g_iConfig[ RCON_FLAG ] )
{
send_message( id, CONSOLE, true, "%L", id, "NO_ACCESS_COMMAND" );
return PLUGIN_HANDLED;
}
new szCmd[ 128 ];
read_args( szCmd, charsmax( szCmd ) );
send_message( 0, LOG, false, "%L", LANG_PLAYER, "RCON_SENT", g_szName[ id ], szCmd );
console_print( id, "%L", id, "CMD_SENT_SERVER", szCmd );
server_cmd( "%s", szCmd );
return PLUGIN_HANDLED;
}
@ShowRcon( id )
{
if( ~ get_user_flags( id ) & g_iConfig[ SHOW_RCON_FLAG ] )
{
send_message( id, CONSOLE, true, "%L", id, "NO_ACCESS_COMMAND" );
return PLUGIN_HANDLED;
}
new szRconPw[ 64 ];
get_pcvar_string( g_pRconPassword, szRconPw, charsmax( szRconPw ) );
if( ! szRconPw[ 0 ] )
{
@Rcon( id );
}
else
{
new szArgs[ 128 ];
read_args( szArgs, charsmax( szArgs ) );
client_cmd( id, "rcon_password %s", szRconPw );
client_cmd( id, "rcon %s", szArgs );
}
return PLUGIN_HANDLED
}
@Kick( id )
{
if( ~ get_user_flags( id ) & g_iConfig[ KICK_FLAG ] )
{
send_message( id, CONSOLE, true, "%L", id, "NO_ACCESS_COMMAND" );
return PLUGIN_HANDLED;
}
new szName[ MAX_NAME_LENGTH ], szReason[ MAX_REASON_LENGTH ];
read_argv( 1, szName, charsmax( szName ) );
read_argv( 2, szReason, charsmax( szReason ) );
if( read_argc( ) < 2 )
{
send_message( id, CONSOLE, true, "%L", id, "AMX_KICK_USAGE" );
return PLUGIN_HANDLED;
}
new iPlayer = find_player( "bl", szName );
if( ! iPlayer )
{
iPlayer = find_player( "cl", szName );
if( ! iPlayer )
{
iPlayer = find_player( "dl", szName );
if( ! iPlayer )
{
send_message( id, CONSOLE, true, "%L", id, "PLAYER_NOT_FOUND" );
return PLUGIN_HANDLED;
}
}
}
if( id != 0 )
{
new iImmunityLevel = GetImmunityLevel( id );
new iImmunityLevelTarget = GetImmunityLevel( iPlayer );
if( iImmunityLevel < iImmunityLevelTarget )
{
send_message( id, CONSOLE, true, "%L", id, "CANT_PERFORM_IMMUNITY" );
return PLUGIN_HANDLED;
}
}
new iUserIdUser;
iUserIdUser = get_user_userid( iPlayer );
server_cmd( "kick #%d ^"%s^"", iUserIdUser, szReason );
CC_SendMessage( 0, "%L", LANG_PLAYER, "KICKED", g_szName[ id ], g_szName[ iPlayer ], szReason );
send_message( 0, LOG, false, "%L", LANG_PLAYER, "LOGS_KICKED", g_szName[ id ], g_szAuthId[ id ], g_szName[ iPlayer ], g_szAuthId[ iPlayer ], g_szIp[ iPlayer ], szReason );
return PLUGIN_HANDLED;
}
@AddBan( id )
{
if( ~ get_user_flags( id ) & g_iConfig[ ADD_BAN_FLAG ] )
{
send_message( id, CONSOLE, true, "%L", id, "NO_ACCESS_COMMAND" );
return PLUGIN_HANDLED;
}
new szName[ MAX_NAME_LENGTH ], szSteamId[ MAX_AUTHID_LENGTH ], szIP[ MAX_IP_LENGTH ], szMinutes[ 8 ], szReason[ MAX_REASON_LENGTH ];
read_argv( 1, szName, charsmax( szName ) );
read_argv( 2, szSteamId, charsmax( szSteamId ) );
read_argv( 3, szIP, charsmax( szIP ) );
read_argv( 4, szMinutes, charsmax( szMinutes ) );
read_argv( 5, szReason, charsmax( szReason ) );
if( read_argc( ) < 5 || ( ! szName[ 0 ] && ! szSteamId[ 0 ] && ! szIP[ 0 ] ) )
{
send_message( id, CONSOLE, true, "%L", id, "AMX_ADDBAN_USAGE" );
return PLUGIN_HANDLED;
}
new iPlayer;
if( szSteamId[ 0 ] )
{
iPlayer = find_player( "cl", szSteamId );
if( ! iPlayer )
{
if( szName[ 0 ] )
{
iPlayer = find_player( "al", szName );
if( ! iPlayer )
{
if( szIP[ 0 ] )
{
iPlayer = find_player( "dl", szIP );
}
}
}
}
}
else if( szName[ 0 ] )
{
iPlayer = find_player( "al", szName );
if( ! iPlayer )
{
if( szSteamId[ 0 ] )
{
iPlayer = find_player( "cl", szSteamId );
if( ! iPlayer )
{
if( szIP[ 0 ] )
{
iPlayer = find_player( "dl", szIP );
}
}
}
}
}
else if( szIP[ 0 ] )
{
iPlayer = find_player( "dl", szIP );
if( ! iPlayer )
{
if( szName[ 0 ] )
{
iPlayer = find_player( "al", szName );
if( ! iPlayer )
{
if( szSteamId[ 0 ] )
{
iPlayer = find_player( "cl", szSteamId );
}
}
}
}
}
if( ! is_str_num( szMinutes ) )
{
send_message( id, CONSOLE, true, "%L", id, "INVALID_VALUE" );
return PLUGIN_HANDLED;
}
new szExpireDate[ MAX_DATE_LENGTH ], iMinutes = str_to_num( szMinutes ), iPlayers[ MAX_PLAYERS ], iNum, iTempId;
get_players( iPlayers, iNum, "ch" );
new eData[ PlayerBan ];
if( iPlayer )
{
if( id != 0 )
{
new iImmunityLevel = GetImmunityLevel( id );
new iImmunityLevelTarget = GetImmunityLevel( iPlayer );
if( iImmunityLevel < iImmunityLevelTarget )
{
send_message( id, CONSOLE, true, "%L", id, "CANT_PERFORM_IMMUNITY" );
return PLUGIN_HANDLED;
}
}
if( iMinutes == 0 )
{
for( new i; i < iNum; i++ )
{
iTempId = iPlayers[ i ];
if( get_user_flags( iTempId ) & ADMIN_KICK )
{
CC_SendMessage( iTempId, "%L", iTempId, "ADDED_TO_BANLIST_PERMANENT", g_szName[ id ], g_szName[ iPlayer ], g_szAuthId[ iPlayer ], g_szIp[ iPlayer ] );
}
}
send_message( 0, LOG, false, "%L", LANG_PLAYER, "LOG_ADDED_TO_BANLIST_PERMANENT", g_szName[ id ], g_szAuthId[ id ], g_szName[ iPlayer ], g_szAuthId[ iPlayer ], g_szIp[ iPlayer ], szReason );
copy( szExpireDate, charsmax( szExpireDate ), "never" );
}
else
{
get_time( "%m/%d/%Y %H:%M:%S", szExpireDate, charsmax( szExpireDate ) );
AddMinutesToDate( szExpireDate, iMinutes, szExpireDate, charsmax( szExpireDate ) );
for( new i; i < iNum; i++ )
{
iTempId = iPlayers[ i ];
if( get_user_flags( iTempId ) & ADMIN_KICK )
{
CC_SendMessage( iTempId, "%L", iTempId, "ADDED_TO_BANLIST", g_szName[ id ], g_szName[ iPlayer ], g_szAuthId[ iPlayer ], g_szIp[ iPlayer ], iMinutes );
}
}
send_message( 0, LOG, false, "%L", LANG_PLAYER, "LOG_ADDED_TO_BANLIST", g_szName[ id ], g_szAuthId[ id ], g_szName[ iPlayer ], g_szAuthId[ iPlayer ], g_szIp[ iPlayer ], iMinutes, szExpireDate, szReason );
}
trim( szExpireDate );
trim( szReason );
copy( eData[ Player_Name ], charsmax( eData[ Player_Name ] ), g_szName[ iPlayer ] );
copy( eData[ Player_SteamId ], charsmax( eData[ Player_SteamId ] ), g_szAuthId[ iPlayer ] );
copy( eData[ Player_IP ], charsmax( eData[ Player_IP ] ), g_szIp[ iPlayer ] );
copy( eData[ Player_BanExpire ], charsmax( eData[ Player_BanExpire ] ), szExpireDate );
copy( eData[ Player_BanReason ], charsmax( eData[ Player_BanReason ] ), szReason );
copy( eData[ Player_BannedBy ], charsmax( eData[ Player_BannedBy ] ), g_szName[ id ] );
ArrayPushArray( g_aBans, eData );
AddBan( g_szName[ iPlayer ], g_szAuthId[ iPlayer ], g_szIp[ iPlayer ], szExpireDate, szReason, g_szName[ id ] );
if( is_user_connected( iPlayer ) )
{
ScreenShot( iPlayer );
if( ! HasDatePassed( szExpireDate ) || equali( szExpireDate, "never" ) )
{
if( equali( szExpireDate, "never" ) )
{
send_message( iPlayer, CONSOLE, false, "^n************************************************" );
send_message( iPlayer, CONSOLE, false, "%L", iPlayer, "BAN_INFO_BANNED" );
send_message( iPlayer, CONSOLE, false, "%L", iPlayer, "BAN_INFO_EXPIRE_NEVER" );
send_message( iPlayer, CONSOLE, false, "%L", iPlayer, "BAN_INFO_REASON", szReason );
send_message( iPlayer, CONSOLE, false, "%L", iPlayer, "BAN_INFO_BY", g_szName[ id ] );
send_message( iPlayer, CONSOLE, false, "************************************************" );
}
else
{
send_message( iPlayer, CONSOLE, false, "^n************************************************" );
send_message( iPlayer, CONSOLE, false, "%L", iPlayer, "BAN_INFO_BANNED" );
send_message( iPlayer, CONSOLE, false, "%L", iPlayer, "BAN_INFO_EXPIRE", szExpireDate );
send_message( iPlayer, CONSOLE, false, "%L", iPlayer, "BAN_INFO_REASON", szReason );
send_message( iPlayer, CONSOLE, false, "%L", iPlayer, "BAN_INFO_BY", g_szName[ id ] );
send_message( iPlayer, CONSOLE, false, "************************************************" );
}
server_cmd( "kick #%d %L", get_user_userid( iPlayer ), id, "CHECK_CONSOLE_INFO" );
}
}
}
else
{
if( iMinutes == 0 )
{
for( new i; i < iNum; i++ )
{
iTempId = iPlayers[ i ];
if( get_user_flags( iTempId ) & ADMIN_KICK )
{
CC_SendMessage( iTempId, "%L", iTempId, "ADDED_TO_BANLIST_PERMANENT", g_szName[ id ], szName, szSteamId, szIP );
}
}
send_message( 0, LOG, false, "%L", LANG_PLAYER, "LOG_ADDED_TO_BANLIST_PERMANENT", g_szName[ id ], g_szAuthId[ id ], szName, szSteamId, szIP, szReason );
copy( szExpireDate, charsmax( szExpireDate ), "never" );
}
else
{
get_time( "%m/%d/%Y %H:%M:%S", szExpireDate, charsmax( szExpireDate ) );
AddMinutesToDate( szExpireDate, iMinutes, szExpireDate, charsmax( szExpireDate ) );
for( new i; i < iNum; i++ )
{
iTempId = iPlayers[ i ];
if( get_user_flags( iTempId ) & ADMIN_KICK )
{
CC_SendMessage( iTempId, "%L", iTempId, "ADDED_TO_BANLIST", g_szName[ id ], szName, szSteamId, szIP, iMinutes );
}
}
send_message( 0, LOG, false, "%L", LANG_PLAYER, "LOG_ADDED_TO_BANLIST", g_szName[ id ], g_szAuthId[ id ], szName, szSteamId, szIP, iMinutes, szExpireDate, szReason );
}
trim( szExpireDate );
trim( szReason );
copy( eData[ Player_Name ], charsmax( eData[ Player_Name ] ), szName );
copy( eData[ Player_SteamId ], charsmax( eData[ Player_SteamId ] ), szSteamId );
copy( eData[ Player_IP ], charsmax( eData[ Player_IP ] ), szIP );
copy( eData[ Player_BanExpire ], charsmax( eData[ Player_BanExpire ] ), szExpireDate );
copy( eData[ Player_BanReason ], charsmax( eData[ Player_BanReason ] ), szReason );
copy( eData[ Player_BannedBy ], charsmax( eData[ Player_BannedBy ] ), g_szName[ id ] );
ArrayPushArray( g_aBans, eData );
AddBan( szName, szSteamId, szIP, szExpireDate, szReason, g_szName[ id ] );
}
return PLUGIN_HANDLED;
}
@AddGag( id )
{
if( ~ get_user_flags( id ) & g_iConfig[ ADD_GAG_FLAG ] )
{
send_message( id, CONSOLE, true, "%L", id, "NO_ACCESS_COMMAND" );
return PLUGIN_HANDLED;
}
new szName[ MAX_NAME_LENGTH ], szSteamId[ MAX_AUTHID_LENGTH ], szIP[ MAX_IP_LENGTH ], szMinutes[ 8 ], szFlags[ 5 ], szReason[ MAX_REASON_LENGTH ];
read_argv( 1, szName, charsmax( szName ) );
read_argv( 2, szSteamId, charsmax( szSteamId ) );
read_argv( 3, szIP, charsmax( szIP ) );
read_argv( 4, szMinutes, charsmax( szMinutes ) );
read_argv( 5, szFlags, charsmax( szFlags ) );
read_argv( 6, szReason, charsmax( szReason ) );
if( read_argc( ) < 5 )
{
send_message( id, CONSOLE, true, "%L", id, "AMX_ADDGAG_USAGE" );
return PLUGIN_HANDLED;
}
if( ! szFlags[ 0 ] )
{
copy( szFlags, charsmax( szFlags ), "sv" );
}
else
{
if( ! equali( szFlags, "sv" ) && ! equali( szFlags, "vs" ) && ! equali( szFlags, "s" ) && ! equali( szFlags, "v" ) )
{
send_message( id, CONSOLE, false, "%L", id, "INVALID_FLAGS" );
return PLUGIN_HANDLED;
}
}
new iPlayer;
if( szSteamId[ 0 ] )
{
iPlayer = find_player( "cl", szSteamId );
if( ! iPlayer )
{
if( szName[ 0 ] )
{
iPlayer = find_player( "al", szName );
if( ! iPlayer )
{
if( szIP[ 0 ] )
{
iPlayer = find_player( "dl", szIP );
}
}
}
}
}
else if( szName[ 0 ] )
{
iPlayer = find_player( "al", szName );
if( ! iPlayer )
{
if( szSteamId[ 0 ] )
{
iPlayer = find_player( "cl", szSteamId );
if( ! iPlayer )
{
if( szIP[ 0 ] )
{
iPlayer = find_player( "dl", szIP );
}
}
}
}
}
else if( szIP[ 0 ] )
{
iPlayer = find_player( "dl", szIP );
if( ! iPlayer )
{
if( szName[ 0 ] )
{
iPlayer = find_player( "al", szName );
if( ! iPlayer )
{
if( szSteamId[ 0 ] )
{
iPlayer = find_player( "cl", szSteamId );
}
}
}
}
}
new szExpireDate[ MAX_DATE_LENGTH ], iMinutes = str_to_num( szMinutes );
new eData[ PlayerGag ];
if( iPlayer )
{
if( id != 0 )
{
new iImmunityLevel = GetImmunityLevel( id );
new iImmunityLevelTarget = GetImmunityLevel( iPlayer );
if( iImmunityLevel < iImmunityLevelTarget )
{
send_message( id, CONSOLE, true, "%L", id, "CANT_PERFORM_IMMUNITY" );
return PLUGIN_HANDLED;
}
}
if( iMinutes == 0 )
{
CC_SendMessage( 0, "%L", LANG_PLAYER, "ADDED_TO_GAGLIST_PERMANENT", g_szName[ id ], g_szName[ iPlayer ], g_szAuthId[ iPlayer ], g_szIp[ iPlayer ] );
send_message( 0, LOG, false, "%L", LANG_PLAYER, "LOG_ADDED_TO_GAGLIST_PERMANENT", g_szName[ id ], g_szAuthId[ id ], g_szName[ iPlayer ], g_szAuthId[ iPlayer ], g_szIp[ iPlayer ], szFlags, szReason );
copy( szExpireDate, charsmax( szExpireDate ), "never" );
}
else
{
get_time( "%m/%d/%Y %H:%M:%S", szExpireDate, charsmax( szExpireDate ) );
AddMinutesToDate( szExpireDate, iMinutes, szExpireDate, charsmax( szExpireDate ) );
CC_SendMessage( 0, "%L", LANG_PLAYER, "ADDED_TO_GAGLIST", g_szName[ id ], g_szName[ iPlayer ], g_szAuthId[ iPlayer ], g_szIp[ iPlayer ], iMinutes );
send_message( 0, LOG, false, "%L", LANG_PLAYER, "LOG_ADDED_TO_GAGLIST", g_szName[ id ], g_szAuthId[ id ], g_szName[ iPlayer ], g_szAuthId[ iPlayer ], g_szIp[ iPlayer ], iMinutes, szExpireDate, szFlags, szReason );
}
trim( szReason );
trim( szFlags );
trim( szExpireDate );
copy( eData[ Player_Name ], charsmax( eData[ Player_Name ] ), g_szName[ iPlayer ] );
copy( eData[ Player_SteamId ], charsmax( eData[ Player_SteamId ] ), g_szAuthId[ iPlayer ] );
copy( eData[ Player_IP ], charsmax( eData[ Player_IP ] ), g_szIp[ iPlayer ] );
copy( eData[ Player_GagReason ], charsmax( eData[ Player_GagReason ] ), szReason );
copy( eData[ Player_GagFlags ], charsmax( eData[ Player_GagFlags ] ), szFlags );
copy( eData[ Player_GagExpire ], charsmax( eData[ Player_GagExpire ] ), szExpireDate );
copy( eData[ Player_GaggedBy ], charsmax( eData[ Player_GaggedBy ] ), g_szName[ id ] );
ArrayPushArray( g_aGags, eData );
AddGag( g_szName[ iPlayer ], g_szAuthId[ iPlayer ], g_szIp[ iPlayer ], szReason, szFlags, szExpireDate, g_szName[ id ] );
if( get_user_flags( iPlayer ) & g_iConfig[ IMMUNITY_FLAG ] )
{
return PLUGIN_HANDLED;
}
else
{
if( equali( g_szAuthId[ iPlayer ], eData[ Player_SteamId ] ) || equali( g_szIp[ iPlayer ], eData[ Player_IP ] ) )
{
if( ! HasDatePassed( eData[ Player_GagExpire ] ) )
{
set_speak( iPlayer, SPEAK_MUTED );
}
}
}
}
else
{
if( iMinutes == 0 )
{
CC_SendMessage( 0, "%L", LANG_PLAYER, "ADDED_TO_GAGLIST_PERMANENT", g_szName[ id ], szName, szSteamId, szIP );
send_message( 0, LOG, false, "%L", LANG_PLAYER, "LOG_ADDED_TO_GAGLIST_PERMANENT", g_szName[ id ], g_szAuthId[ id ], szName, szSteamId, szIP, szFlags, szReason );
copy( szExpireDate, charsmax( szExpireDate ), "never" );
}
else
{
get_time( "%m/%d/%Y %H:%M:%S", szExpireDate, charsmax( szExpireDate ) );
AddMinutesToDate( szExpireDate, iMinutes, szExpireDate, charsmax( szExpireDate ) );
CC_SendMessage( 0, "%L", LANG_PLAYER, "ADDED_TO_GAGLIST", g_szName[ id ], szName, szSteamId, szIP, iMinutes );
send_message( 0, LOG, false, "%L", LANG_PLAYER, "LOG_ADDED_TO_GAGLIST", g_szName[ id ], g_szAuthId[ id ], szName, szSteamId, szIP, iMinutes, szExpireDate, szFlags, szReason );
}
trim( szReason );
trim( szFlags );
trim( szExpireDate );
copy( eData[ Player_Name ], charsmax( eData[ Player_Name ] ), szName );
copy( eData[ Player_SteamId ], charsmax( eData[ Player_SteamId ] ), szSteamId );
copy( eData[ Player_IP ], charsmax( eData[ Player_IP ] ), szIP );
copy( eData[ Player_GagReason ], charsmax( eData[ Player_GagReason ] ), szReason );
copy( eData[ Player_GagFlags ], charsmax( eData[ Player_GagFlags ] ), szFlags );
copy( eData[ Player_GagExpire ], charsmax( eData[ Player_GagExpire ] ), szExpireDate );
copy( eData[ Player_GaggedBy ], charsmax( eData[ Player_GaggedBy ] ), g_szName[ id ] );
ArrayPushArray( g_aGags, eData );
AddGag( szName, szSteamId, szIP, szReason, szFlags, szExpireDate, g_szName[ id ] );
}
return PLUGIN_HANDLED;
}
@Psay( id )
{
if( ~ get_user_flags( id ) & g_iConfig[ PSAY_FLAG ] )
{
send_message( id, CONSOLE, true, "%L", id, "NO_ACCESS_COMMAND" );
return PLUGIN_HANDLED;
}
new szName[ MAX_NAME_LENGTH ], szMessage[ 192 ];
read_argv( 1, szName, charsmax( szName ) );
read_argv( 2, szMessage, charsmax( szMessage ) );
if( read_argc( ) != 3 )
{
send_message( id, CONSOLE, true, "%L", id, "AMX_PSAY_USAGE" );
return PLUGIN_HANDLED;
}
new iPlayer = cmd_target( id, szName, CMDTARGET_ALLOW_SELF );
if( ! iPlayer )
{
send_message( id, CONSOLE, true, "%L", id, "PLAYER_NOT_FOUND" );
return PLUGIN_HANDLED;
}
CC_SendMessage( id, "&x00%L", id, "PSAY_HIM", g_szName[ iPlayer ], szMessage );
CC_SendMessage( iPlayer, "&x00%L", iPlayer, "PSAY_YOU", g_szName[ id ], szMessage );
return PLUGIN_HANDLED;
}
@Who( id )
{
if( ~ get_user_flags( id ) & g_iConfig[ WHO_FLAG ] )
{
send_message( id, CONSOLE, true, "%L", id, "NO_ACCESS_COMMAND" );
return PLUGIN_HANDLED;
}
new iFlags, szFlags[ MAX_FLAGS_LENGTH ], szRank[ 32 ], iPlayers[ MAX_PLAYERS ], iNum, iTempId;
get_players( iPlayers, iNum );
send_message( id, CONSOLE, false, "^nName SteamID IP Flags Rank" );
for( new i; i < iNum; i++ )
{
iTempId = iPlayers[ i ];
iFlags = get_user_flags( iTempId );
get_flags( iFlags, szFlags, charsmax( szFlags ) );
if( g_iConfig[ RANKS_ENABLED ] )
{
eas_get_player_rank( iTempId, szRank, charsmax( szRank ) );
send_message( id, CONSOLE, false, "%s %s %s %s %s", g_szName[ iTempId ], g_szAuthId[ iTempId ], g_szIp[ iTempId ], szFlags, szRank );
}
else
{
send_message( id, CONSOLE, false, "%s %s %s %s", g_szName[ iTempId ], g_szAuthId[ iTempId ], g_szIp[ iTempId ], szFlags );
}
}
return PLUGIN_HANDLED;
}
@Last( id )
{
if( ~ get_user_flags( id ) & g_iConfig[ LAST_FLAG ] )
{
send_message( id, CONSOLE, true, "%L", id, "NO_ACCESS_COMMAND" );
return PLUGIN_HANDLED;
}
send_message( id, CONSOLE, false, "%L %L %L %L %L", id, "NAME", id, "STEAM_ID", id, "IP", id, "FLAGS", id, "RANK" );
FlushDisconnectedPlayers( );
new eData[ PlayerDisconnectData ];
for( new i; i < ArraySize( g_aDisconnectInfo ); i++ )
{
ArrayGetArray( g_aDisconnectInfo, i, eData );
send_message( id, CONSOLE, false, "%s %s %s %s %s", eData[ Player_DisconnectName ], eData[ Player_DisconnectSteamID ], eData[ Player_DisconnectIP ], eData[ Player_DisconnectFlags ], eData[ Player_DisconnectRank ] );
}
return PLUGIN_HANDLED;
}
@Team( id )
{
if( ~ get_user_flags( id ) & g_iConfig[ TEAM_FLAG ] )
{
send_message( id, CONSOLE, true, "%L", id, "NO_ACCESS_COMMAND" );
return PLUGIN_HANDLED;
}
new szName[ MAX_NAME_LENGTH ], szTeam[ 12 ], szRespawn[ 2 ];
read_argv( 1, szName, charsmax( szName ) );
read_argv( 2, szTeam, charsmax( szTeam ) );
read_argv( 3, szRespawn, charsmax( szRespawn ) );
if( read_argc( ) < 3 )
{
send_message( id, CONSOLE, true, "%L", id, "AMX_TEAM_USAGE" );
return PLUGIN_HANDLED;
}
new iPlayer = cmd_target( id, szName, CMDTARGET_ALLOW_SELF );
if( ! iPlayer )
{
send_message( id, CONSOLE, true, "%L", id, "PLAYER_NOT_FOUND" );
return PLUGIN_HANDLED;
}
if( id != 0 )
{
new iImmunityLevel = GetImmunityLevel( id );
new iImmunityLevelTarget = GetImmunityLevel( iPlayer );
if( iImmunityLevel < iImmunityLevelTarget )
{
send_message( id, CONSOLE, true, "%L", id, "CANT_PERFORM_IMMUNITY" );
return PLUGIN_HANDLED;
}
}
new iTeam, szTeamFinal[ 20 ];
if( is_str_num( szTeam ) )
{
iTeam = str_to_num( szTeam );
switch( iTeam )
{
case 1:
{
eas_set_user_team( iPlayer, 1 );
copy( szTeamFinal, charsmax( szTeamFinal ), "Terrorist" );
}
case 2:
{
eas_set_user_team( iPlayer, 2 );
copy( szTeamFinal, charsmax( szTeamFinal ), "Counter-Terrorist" );
}
case 3:
{
eas_set_user_team( iPlayer, 3 );
copy( szTeamFinal, charsmax( szTeamFinal ), "Spectator" );
}
default:
{
send_message( id, CONSOLE, true, "%L", id, "INVALID_TEAM" );
return PLUGIN_HANDLED;
}
}
}
else
{
if( equali( szTeam, "T" ) || equali( szTeam, "TERRORIST" ) )
{
iTeam = 1;
eas_set_user_team( iPlayer, iTeam );
copy( szTeamFinal, charsmax( szTeamFinal ), "Terrorist" );
}
else if( equali( szTeam, "CT" ) )
{
iTeam = 2;
eas_set_user_team( iPlayer, iTeam );
copy( szTeamFinal, charsmax( szTeamFinal ), "Counter-Terrorist" );
}
else if( equali( szTeam, "SPEC" ) || equali( szTeam, "SPECTATOR" ) )
{
iTeam = 3;
eas_set_user_team( iPlayer, iTeam );
copy( szTeamFinal, charsmax( szTeamFinal ), "Spectator" );
}
else
{
send_message( id, CONSOLE, true, "%L", id, "INVALID_TEAM" );
return PLUGIN_HANDLED;
}
}
new iRespawn;
!szRespawn[ 0 ] ? ( iRespawn = 0 ) : ( iRespawn = str_to_num( szRespawn ) );
!( 0 <= iRespawn <= 1 ) ? ( iRespawn = 0 ) : iRespawn;
if( iRespawn == 1 )
{
ExecuteHamB( Ham_CS_RoundRespawn, iPlayer );
}
CC_SendMatched( 0, iPlayer, "%L", LANG_PLAYER, "TEAM_CHANGE", g_szName[ id ], g_szName[ iPlayer ], szTeamFinal );
send_message( 0, LOG, false, "%L", LANG_PLAYER, "LOG_TEAM_CHANGE", g_szName[ id ], g_szAuthId[ id ], g_szName[ iPlayer ], g_szAuthId[ iPlayer ], g_szIp[ iPlayer ], szTeamFinal );
return PLUGIN_HANDLED;
}
@Ban( id )
{
if( ~ get_user_flags( id ) & g_iConfig[ BAN_FLAG ] )
{
send_message( id, CONSOLE, true, "%L", id, "NO_ACCESS_COMMAND" );
return PLUGIN_HANDLED;
}
new szName[ MAX_NAME_LENGTH ], szReason[ MAX_REASON_LENGTH ], szMinutes[ 8 ];
read_argv( 1, szName, charsmax( szName ) );
read_argv( 2, szMinutes, charsmax( szMinutes ) );
read_argv( 3, szReason, charsmax( szReason ) );
if( read_argc( ) < 3 )
{
send_message( id, CONSOLE, true, "%L", id, "AMX_BAN_USAGE" );
return PLUGIN_HANDLED;
}
new iPlayer = find_player( "bl", szName );
if( ! iPlayer )
{
iPlayer = find_player( "cl", szName );
if( ! iPlayer )
{
iPlayer = find_player( "dl", szName );
if( ! iPlayer )
{
send_message( id, CONSOLE, true, "%L", id, "PLAYER_NOT_FOUND" );
return PLUGIN_HANDLED;
}
}
}
if( ! is_str_num( szMinutes ) )
{
send_message( id, CONSOLE, true, "%L", id, "INVALID_VALUE" );
return PLUGIN_HANDLED;
}
if( id != 0 )
{
new iImmunityLevel = GetImmunityLevel( id );
new iImmunityLevelTarget = GetImmunityLevel( iPlayer );
if( iImmunityLevel < iImmunityLevelTarget )
{
send_message( id, CONSOLE, true, "%L", id, "CANT_PERFORM_IMMUNITY" );
return PLUGIN_HANDLED;
}
}
new szExpireDate[ MAX_DATE_LENGTH ], iMinutes = str_to_num( szMinutes );
if( iMinutes == 0 )
{
CC_SendMessage( 0, "%L", LANG_PLAYER, "BANNED_PERMANENT", g_szName[ id ], g_szName[ iPlayer ], szReason );
send_message( 0, LOG, false, "%L", LANG_PLAYER, "LOG_BANNED_PERMANENT", g_szName[ id ], g_szAuthId[ id ], g_szName[ iPlayer ], g_szAuthId[ iPlayer ], g_szIp[ iPlayer ], szReason );
copy( szExpireDate, charsmax( szExpireDate ), "never" );
}
else
{
get_time( "%m/%d/%Y %H:%M:%S", szExpireDate, charsmax( szExpireDate ) );
AddMinutesToDate( szExpireDate, iMinutes, szExpireDate, charsmax( szExpireDate ) );
if( iMinutes == 1 )
{
CC_SendMessage( 0, "%L", LANG_PLAYER, "BANNED_SINGULAR", g_szName[ id ], g_szName[ iPlayer ], szReason, szExpireDate );
send_message( 0, LOG, false, "%L", LANG_PLAYER, "LOG_BANNED_SINGULAR", g_szName[ id ], g_szAuthId[ id ], g_szName[ iPlayer ], g_szAuthId[ iPlayer ], g_szIp[ iPlayer ], szReason, szExpireDate );
}
else
{
CC_SendMessage( 0, "%L", LANG_PLAYER, "BANNED_PLURAL", g_szName[ id ], g_szName[ iPlayer ], iMinutes, szReason, szExpireDate );
send_message( 0, LOG, false, "%L", LANG_PLAYER, "LOG_BANNED_PLURAL", g_szName[ id ], g_szAuthId[ id ], g_szName[ iPlayer ], g_szAuthId[ iPlayer ], g_szIp[ iPlayer ], iMinutes, szReason, szExpireDate );
}
}
trim( szExpireDate );
trim( szReason );
new eData[ PlayerBan ];
copy( eData[ Player_Name ], charsmax( eData[ Player_Name ] ), g_szName[ iPlayer ] );
copy( eData[ Player_SteamId ], charsmax( eData[ Player_SteamId ] ), g_szAuthId[ iPlayer ] );
copy( eData[ Player_IP ], charsmax( eData[ Player_IP ] ), g_szIp[ iPlayer ] );
copy( eData[ Player_BanExpire ], charsmax( eData[ Player_BanExpire ] ), szExpireDate );
copy( eData[ Player_BanReason ], charsmax( eData[ Player_BanReason ] ), szReason );
copy( eData[ Player_BannedBy ], charsmax( eData[ Player_BannedBy ] ), g_szName[ id ] );
ArrayPushArray( g_aBans, eData );
BanPlayer( g_szName[ iPlayer ], g_szAuthId[ iPlayer ], g_szIp[ iPlayer ], szExpireDate, szReason, g_szName[ id ] );
if( is_user_connected( iPlayer ) )
{
ScreenShot( iPlayer );
if( ! HasDatePassed( szExpireDate ) || equali( szExpireDate, "never" ) )
{
if( equali( szExpireDate, "never" ) )
{
send_message( iPlayer, CONSOLE, false, "^n************************************************" );
send_message( iPlayer, CONSOLE, false, "%L", iPlayer, "BAN_INFO_BANNED" );
send_message( iPlayer, CONSOLE, false, "%L", iPlayer, "BAN_INFO_EXPIRE_NEVER" );
send_message( iPlayer, CONSOLE, false, "%L", iPlayer, "BAN_INFO_REASON", szReason );
send_message( iPlayer, CONSOLE, false, "%L", iPlayer, "BAN_INFO_BY", g_szName[ id ] );
send_message( iPlayer, CONSOLE, false, "************************************************" );
}
else
{
send_message( iPlayer, CONSOLE, false, "^n************************************************" );
send_message( iPlayer, CONSOLE, false, "%L", iPlayer, "BAN_INFO_BANNED" );
send_message( iPlayer, CONSOLE, false, "%L", iPlayer, "BAN_INFO_EXPIRE", szExpireDate );
send_message( iPlayer, CONSOLE, false, "%L", iPlayer, "BAN_INFO_REASON", szReason );
send_message( iPlayer, CONSOLE, false, "%L", iPlayer, "BAN_INFO_BY", g_szName[ id ] );
send_message( iPlayer, CONSOLE, false, "************************************************" );
}
server_cmd( "kick #%d %L", get_user_userid( iPlayer ), id, "CHECK_CONSOLE_INFO" );
}
}
return PLUGIN_HANDLED;
}
@Unban( id )
{
if( ~ get_user_flags( id ) & g_iConfig[ UNBAN_FLAG ] )
{
send_message( id, CONSOLE, true, "%L", id, "NO_ACCESS_COMMAND" );
return PLUGIN_HANDLED;
}
new szIdentity[ MAX_AUTHID_LENGTH ];
read_argv( 1, szIdentity, charsmax( szIdentity ) );
if( read_argc( ) != 2 )
{
send_message( id, CONSOLE, true, "%L", id, "AMX_UNBAN_USAGE" );
return PLUGIN_HANDLED;
}
new eData[ PlayerBan ], bool:bPlayerFound, iPlayers[ MAX_PLAYERS ], iNum, iTempId;
get_players( iPlayers, iNum, "ch" );
for( new i; i < ArraySize( g_aBans ); i++ )
{
ArrayGetArray( g_aBans, i, eData );
if( equali( szIdentity, eData[ Player_Name ] ) || equali( szIdentity, eData[ Player_SteamId ] ) || equali( szIdentity, eData[ Player_IP ] ) )
{
UnbanPlayer( szIdentity );
for( new i; i < iNum; i++ )
{
iTempId = iPlayers[ i ];
if( get_user_flags( iTempId ) & ADMIN_KICK )
{
CC_SendMessage( iTempId, "%L", iTempId, "UNBANNED", g_szName[ id ], eData[ Player_Name ], eData[ Player_SteamId ], eData[ Player_IP ] );
}
else
{
CC_SendMessage( iTempId, "%L", iTempId, "UNBANNED_NO_IP", g_szName[ id ], eData[ Player_Name ], eData[ Player_SteamId ] );
}
}
send_message( 0, LOG, false, "%L", LANG_PLAYER, "UNBANNED", g_szName[ id ], g_szAuthId[ id ], eData[ Player_Name ], eData[ Player_SteamId ], eData[ Player_IP ] );
bPlayerFound = true;
break;
}
}
if( ! bPlayerFound )
{
send_message( id, CONSOLE, true, "%L", id, "PLAYER_NOT_FOUND" );
}
return PLUGIN_HANDLED;
}
@Slay( id )
{
if( ~ get_user_flags( id ) & g_iConfig[ SLAY_FLAG ] )
{
send_message( id, CONSOLE, true, "%L", id, "NO_ACCESS_COMMAND" );
return PLUGIN_HANDLED;
}
new szName[ MAX_NAME_LENGTH ], szReason[ MAX_REASON_LENGTH ];
read_argv( 1, szName, charsmax( szName ) );
read_argv( 2, szReason, charsmax( szReason ) );
trim( szReason );
remove_quotes( szReason );
if( read_argc( ) < 2 )
{
send_message( id, CONSOLE, true, "%L", id, "AMX_SLAY_USAGE" );
return PLUGIN_HANDLED;
}
new iPlayer = cmd_target( id, szName, CMDTARGET_ALLOW_SELF );
if( ! iPlayer )
{
send_message( id, CONSOLE, true, "%L", id, "PLAYER_NOT_FOUND" );
return PLUGIN_HANDLED;
}
if( ! is_user_alive( iPlayer ) )
{
send_message( id, CONSOLE, true, "%L", id, "SLAY_DEAD_PLAYER" );
return PLUGIN_HANDLED;
}
if( id != 0 )
{
new iImmunityLevel = GetImmunityLevel( id );
new iImmunityLevelTarget = GetImmunityLevel( iPlayer );
if( iImmunityLevel < iImmunityLevelTarget )
{
send_message( id, CONSOLE, true, "%L", id, "CANT_PERFORM_IMMUNITY" );
return PLUGIN_HANDLED;
}
}
user_kill( iPlayer );
CC_SendMessage( 0, "%L", LANG_PLAYER, "SLAY", g_szName[ id ], g_szName[ iPlayer ], szReason );
send_message( 0, LOG, false, "%L", LANG_PLAYER, "LOG_SLAY", g_szName[ id ], g_szAuthId[ id ], g_szName[ iPlayer ], g_szAuthId[ iPlayer ], g_szIp[ iPlayer ], szReason );
return PLUGIN_HANDLED;
}
@Slap( id )
{
if( ~ get_user_flags( id ) & g_iConfig[ SLAP_FLAG ] )
{
send_message( id, CONSOLE, true, "%L", id, "NO_ACCESS_COMMAND" );
return PLUGIN_HANDLED;
}
new szName[ MAX_NAME_LENGTH ], szReason[ MAX_REASON_LENGTH ], szValue[ 6 ], iValue;
read_argv( 1, szName, charsmax( szName ) );
read_argv( 2, szValue, charsmax( szValue ) );
read_argv( 3, szReason, charsmax( szReason ) );
trim( szReason );
remove_quotes( szReason );
if( read_argc( ) < 3 )
{
send_message( id, CONSOLE, true, "%L", id, "AMX_SLAP_USAGE" );
return PLUGIN_HANDLED;
}
if( ! szValue[ 0 ] )
{
copy( szValue, charsmax( szValue ), "0" );
}
else
{
if( ! is_str_num( szValue ) )
{
send_message( id, CONSOLE, true, "%L", id, "INVALID_VALUE" );
return PLUGIN_HANDLED;
}
}
new iPlayer = cmd_target( id, szName, CMDTARGET_ALLOW_SELF );
if( ! iPlayer )
{
send_message( id, CONSOLE, true, "%L", id, "PLAYER_NOT_FOUND" );
return PLUGIN_HANDLED;
}
if( ! is_user_alive( iPlayer ) )
{
send_message( id, CHAT, true, "%L", id, "SLAP_DEAD_PLAYER" );
return PLUGIN_HANDLED;
}
if( id != 0 )
{
new iImmunityLevel = GetImmunityLevel( id );
new iImmunityLevelTarget = GetImmunityLevel( iPlayer );
if( iImmunityLevel < iImmunityLevelTarget )
{
send_message( id, CONSOLE, true, "%L", id, "CANT_PERFORM_IMMUNITY" );
return PLUGIN_HANDLED;
}
}
iValue = str_to_num( szValue );
user_slap( iPlayer, iValue );
CC_SendMessage( 0, "%L", LANG_PLAYER, "SLAP", g_szName[ id ], g_szName[ iPlayer ], iValue, szReason );
send_message( 0, LOG, false, "%L", LANG_PLAYER, "LOG_SLAP", g_szName[ id ], g_szAuthId[ id ], g_szName[ iPlayer ], g_szAuthId[ iPlayer ], g_szIp[ iPlayer ], iValue, szReason );
return PLUGIN_HANDLED;
}
@Map( id )
{
if( ~ get_user_flags( id ) & g_iConfig[ MAP_FLAG ] )
{
send_message( id, CONSOLE, true, "%L", id, "NO_ACCESS_COMMAND" );
return PLUGIN_HANDLED;
}
new szMap[ MAX_MAP_NAME_LENGTH ];
new iMapLen = read_argv( 1, szMap, charsmax( szMap ) );
if( read_argc( ) != 2 )
{
send_message( id, CONSOLE, true, "%L", id, "AMX_MAP_USAGE" );
return PLUGIN_HANDLED;
}
if( ! is_map_valid( szMap ) )
{
send_message( id, CONSOLE, true, "%L", id, "MAP_NOT_FOUND" );
return PLUGIN_HANDLED;
}
new szModName[ 10 ];
get_modname( szModName, charsmax( szModName ) );
if( ! equali( szModName, "zp" ) )
{
message_begin( MSG_ALL, SVC_INTERMISSION );
message_end( );
}
CC_SendMessage( 0, "%L", LANG_PLAYER, "MAP_CHANGE", g_szName[ id ], szMap );
send_message( 0, LOG, false, "%L", LANG_PLAYER, "LOG_MAP_CHANGE", g_szName[ id ], g_szAuthId[ id ], szMap );
set_task( 2.0, "OnMapChange", _, szMap, iMapLen + 1 );
return PLUGIN_HANDLED
}
@Nick( id )
{
if( ~ get_user_flags( id ) & g_iConfig[ NICK_FLAG ] )
{
send_message( id, CONSOLE, true, "%L", id, "NO_ACCESS_COMMAND" );
return PLUGIN_HANDLED;
}
new szCurrentName[ MAX_NAME_LENGTH ], szNewName[ MAX_NAME_LENGTH ];
read_argv( 1, szCurrentName, charsmax( szCurrentName ) );
read_argv( 2, szNewName, charsmax( szNewName ) );
if( read_argc( ) != 3 )
{
send_message( id, CONSOLE, true, "%L", id, "AMX_NICK_USAGE" );
return PLUGIN_HANDLED;
}
new iPlayer = cmd_target( id, szCurrentName, CMDTARGET_ALLOW_SELF );
if( ! iPlayer )
{
send_message( id, CONSOLE, true, "%L", id, "PLAYER_NOT_FOUND" );
return PLUGIN_HANDLED;
}
if( id != 0 )
{
new iImmunityLevel = GetImmunityLevel( id );
new iImmunityLevelTarget = GetImmunityLevel( iPlayer );
if( iImmunityLevel < iImmunityLevelTarget )
{
send_message( id, CONSOLE, true, "%L", id, "CANT_PERFORM_IMMUNITY" );
return PLUGIN_HANDLED;
}
}
client_cmd( iPlayer, "name ^"%s^"", szNewName );
CC_SendMessage( 0, "%L", LANG_PLAYER, "NICK_CHANGE", g_szName[ id ], g_szName[ iPlayer ], szNewName );
send_message( 0, LOG, false, "%L", LANG_PLAYER, "LOG_NICK_CHANGE", g_szName[ id ], g_szAuthId[ id ], g_szName[ iPlayer ], g_szAuthId[ iPlayer ], g_szIp[ iPlayer ], szNewName );
return PLUGIN_HANDLED;
}
///////////////////////////////////////////////////////////////////////////////// END OF CONSOLE COMMANDS /////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////// STOCKS AND PRIVATE FUNCTIONS ///////////////////////////////////////////////////////////////////////////////////////////////
CacheInfo( id )
{
new eData[ PlayerDisconnectData ], eData2[ PlayerDisconnectData ];
copy( eData[ Player_Name ], charsmax( eData[ Player_Name ] ), g_szName[ id ] );
copy( eData[ Player_SteamId ], charsmax( eData[ Player_SteamId ] ), g_szAuthId[ id ] );
copy( eData[ Player_IP ], charsmax( eData[ Player_IP ] ), g_szIp[ id ] );
new bool:bExists;
for( new i; i < ArraySize( g_aDisconnectInfo ); i++ )
{
ArrayGetArray( g_aDisconnectInfo, i, eData2 );
if( equali( eData[ Player_Name ], eData2[ Player_Name ] ) || equali( eData[ Player_SteamId ], eData2[ Player_SteamId ] ) || equali( eData[ Player_IP ], eData2[ Player_IP ] ) )
{
bExists = true;
break;
}
}
if( ! bExists )
{
get_flags( get_user_flags( id ), eData[ Player_DisconnectFlags ], charsmax( eData[ Player_DisconnectFlags ] ) );
eas_get_player_rank( id, eData[ Player_DisconnectRank ], charsmax( eData[ Player_DisconnectRank ] ) );
new szDate[ MAX_DATE_LENGTH ];
get_time( "%m/%d/%Y %H:%M:%S", szDate, charsmax( szDate ) );
AddSecondsToDate( szDate, g_iConfig[ DISCONNECT_INFO_SECONDS_EXPIRE ], eData[ Player_DataExpireDate ], charsmax( eData[ Player_DataExpireDate ] ) );
ArrayPushArray( g_aDisconnectInfo, eData );
}
return PLUGIN_HANDLED;
}
FlushDisconnectedPlayers( )
{
new eData[ PlayerDisconnectData ];
for( new i; i < ArraySize( g_aDisconnectInfo ); i++ )
{
ArrayGetArray( g_aDisconnectInfo, i, eData );
if( HasDatePassed( eData[ Player_DataExpireDate ] ) )
{
ArrayDeleteItem( g_aDisconnectInfo, i );
}
}
}
CleanVars( id )
{
g_bFrozen[ id ] = false;
g_fLastOpened[ id ] = 0.0;
g_iKick[ id ] = 0;
g_iTeamSwitch[ id ] = 0;
arrayset( g_iBan[ id ], 0, sizeof( g_iBan[ ] ) );
arrayset( g_iGag[ id ], 0, sizeof( g_iGag[ ] ) );
arrayset( g_iAddBan[ id ], 0, sizeof( g_iAddBan[ ] ) );
arrayset( g_iAddGag[ id ], 0, sizeof( g_iAddGag[ ] ) );
arrayset( g_iSlay[ id ], 0, sizeof( g_iSlay[ ] ) );
arrayset( g_iSlap[ id ], 0, sizeof( g_iSlap[ ] ) );
arrayset( _:fAngles[ id ], _:0.0, sizeof( fAngles[ ] ) );
arrayset( g_szTeamSwitch[ id ], 0, sizeof( g_szTeamSwitch[ ] ) );
arrayset( g_szName[ id ], 0, sizeof( g_szName[ ] ) );
arrayset( g_szAuthId[ id ], 0, sizeof( g_szAuthId[ ] ) );
arrayset( g_szIp[ id ], 0, sizeof( g_szIp[ ] ) );
}
GetImmunityLevel( id )
{
new eData[ PlayerData ], iImmunityLevel;
if( TrieGetArray( g_tDatabase, g_szAuthId[ id ], eData, sizeof eData ) || TrieGetArray( g_tDatabase, g_szName[ id ], eData, sizeof eData ) )
{
iImmunityLevel = eData[ Player_Immunity ];
}
return iImmunityLevel;
}
AddBan( const szName[ ], const szSteamId[ ], const szIP[ ], const szExpireDate[ ], const szReason[ ], const szAdminName[ ] )
{
new szFormat[ 192 ];
formatex( szFormat, charsmax( szFormat ), "%s/%s", g_szConfigsDir, g_iConfig[ BANS_FILE ] );
new iFilePointer = fopen( szFormat, "r+" );
if( iFilePointer )
{
new szByteVal[ 1 ];
fseek( iFilePointer , -1 , SEEK_END );
fread_raw( iFilePointer , szByteVal , sizeof( szByteVal ) , BLOCK_BYTE );
fseek( iFilePointer , 0 , SEEK_END );
fprintf( iFilePointer, "%s^"%s^" ^"%s^" ^"%s^" ^"%s^" ^"%s^" ^"%s^"", ( szByteVal[ 0 ] == 10 ) ? "" : "^n", szName, szSteamId, szIP, szExpireDate, szReason, szAdminName ); // add him to banlist
fclose( iFilePointer );
}
return 1;
}
AddGag( const szName[ ], const szSteamId[ ], const szIP[ ], const szReason[ ], const szFlags[ ], const szExpireDate[ ], const szGaggedBy[ ] )
{
new szFormat[ 192 ];
formatex( szFormat, charsmax( szFormat ), "%s/%s", g_szConfigsDir, g_iConfig[ GAGS_FILE ] );
new iFilePointer = fopen( szFormat, "r+" );
if( iFilePointer )
{
new szByteVal[ 1 ];
fseek( iFilePointer , -1 , SEEK_END );
fread_raw( iFilePointer , szByteVal , sizeof( szByteVal ) , BLOCK_BYTE );
fseek( iFilePointer , 0 , SEEK_END );
fprintf( iFilePointer, "%s^"%s^" ^"%s^" ^"%s^" ^"%s^" ^"%s^" ^"%s^" ^"%s^"", ( szByteVal[ 0 ] == 10 ) ? "" : "^n", szName, szSteamId, szIP, szReason, szFlags, szExpireDate, szGaggedBy ); // add him to gaglist
fclose( iFilePointer );
}
return 1;
}
UnbanPlayer( const szIdentity[ ] )
{
new const szTempFileName[ ] = "tempfile.ini";
new szFormat[ 128 ], szData[ 128 ], szName[ MAX_NAME_LENGTH ], szSteamId[ MAX_AUTHID_LENGTH ], szIP[ MAX_IP_LENGTH ];
static szTempFilePath[ 256 ];
formatex( szTempFilePath, charsmax( szTempFilePath ), "%s/%s", g_szConfigsDir, szTempFileName );
formatex( szFormat, charsmax( szFormat ), "%s/%s", g_szConfigsDir, g_iConfig[ BANS_FILE ] );
new iFilePointer = fopen( szFormat, "rt" );
if( iFilePointer )
{
new iInputFilePointer = fopen( szTempFilePath, "wt" );
if( iInputFilePointer )
{
while( fgets( iFilePointer, szData, charsmax( szData ) ) )
{
switch( szData[ 0 ] )
{
case EOS, '#', ';', '/', '\':
{
fprintf( iInputFilePointer, szData ); // write as it was before
}
default:
{
parse( szData, szName, charsmax( szName ), szSteamId, charsmax( szSteamId ), szIP, charsmax( szIP ) );
trim( szName );
trim( szSteamId );
trim( szIP );
if( ! equali( szIdentity, szName ) && ! equali( szIdentity, szSteamId ) && ! equali( szIdentity, szIP ) ) // not the person we're looking for
{
fprintf( iInputFilePointer, szData ); // write as it was before
}
else
{
continue;
}
}
}
}
fclose( iInputFilePointer );
fclose( iFilePointer );
delete_file( szFormat );
rename_file( szTempFilePath, szFormat, 1 );
}
}
return 0;
}
UnGagPlayer( const szIdentity[ ] )
{
new const szTempFileName[ ] = "tempfile.ini";
new szFormat[ 128 ], szData[ 192 ], szName[ MAX_NAME_LENGTH ], szSteamId[ MAX_AUTHID_LENGTH ], szIP[ MAX_IP_LENGTH ];
new szTempFilePath[ 64 ];
formatex( szTempFilePath, charsmax( szTempFilePath ), "%s/%s", g_szConfigsDir, szTempFileName );
formatex( szFormat, charsmax( szFormat ), "%s/%s", g_szConfigsDir, g_iConfig[ GAGS_FILE ] );
new iFilePointer = fopen( szFormat, "rt" );
if( iFilePointer )
{
new iInputFilePointer = fopen( szTempFilePath, "wt" );
if( iInputFilePointer )
{
while( fgets( iFilePointer, szData, charsmax( szData ) ) )
{
switch( szData[ 0 ] )
{
case EOS, '#', ';', '/', '\':
{
fprintf( iInputFilePointer, szData ); // write as it was before
}
default:
{
parse( szData, szName, charsmax( szName ), szSteamId, charsmax( szSteamId ), szIP, charsmax( szIP ) );
trim( szName );
trim( szSteamId );
trim( szIP );
remove_quotes( szName );
remove_quotes( szSteamId );
remove_quotes( szIP );
if( ! equali( szIdentity, szName ) && ! equali( szIdentity, szSteamId ) && ! equali( szIdentity, szIP ) ) // not the person we're looking for
{
fprintf( iInputFilePointer, szData ); // write as it was before
}
}
}
}
fclose( iInputFilePointer );
fclose( iFilePointer );
delete_file( szFormat );
rename_file( szTempFilePath, szFormat, 1 );
}
}
return 0;
}
UnGagPlayer2( const szNamePlayer[ ], const szSteamIdPlayer[ ], const szIpPlayer[ ] )
{
new const szTempFileName[ ] = "tempfile.ini";
new szFormat[ 128 ], szData[ 192 ], szName[ MAX_NAME_LENGTH ], szSteamId[ MAX_AUTHID_LENGTH ], szIP[ MAX_IP_LENGTH ];
new szTempFilePath[ 64 ];
formatex( szTempFilePath, charsmax( szTempFilePath ), "%s/%s", g_szConfigsDir, szTempFileName );
formatex( szFormat, charsmax( szFormat ), "%s/%s", g_szConfigsDir, g_iConfig[ GAGS_FILE ] );
new iFilePointer = fopen( szFormat, "rt" );
if( iFilePointer )
{
new iInputFilePointer = fopen( szTempFilePath, "wt" );
if( iInputFilePointer )
{
while( fgets( iFilePointer, szData, charsmax( szData ) ) )
{
switch( szData[ 0 ] )
{
case EOS, '#', ';', '/', '\':
{
fprintf( iInputFilePointer, szData ); // write as it was before
}
default:
{
parse( szData, szName, charsmax( szName ), szSteamId, charsmax( szSteamId ), szIP, charsmax( szIP ) );
trim( szName );
trim( szSteamId );
trim( szIP );
if( equali( szNamePlayer, szName ) && equali( szSteamIdPlayer, szSteamId ) && equali( szIpPlayer, szIP ) )
{
new eData[ PlayerGag ];
for( new i; i < ArraySize( g_aGags ); i++ )
{
ArrayGetArray( g_aGags, i, eData );
if( equali( eData[ Player_Name ], szName ) && equali( eData[ Player_SteamId ], szSteamIdPlayer ) && equali( eData[ Player_IP ], szIP ) )
{
ArrayDeleteItem( g_aGags, i );
break;
}
}
}
else
{
fprintf( iInputFilePointer, szData ); // write as it was before
}
}
}
}
fclose( iInputFilePointer );
fclose( iFilePointer );
delete_file( szFormat );
rename_file( szTempFilePath, szFormat, 1 );
}
}
return 0;
}
UnbanPlayer2( const szNamePlayer[ ], const szSteamIdPlayer[ ], const szIpPlayer[ ] )
{
new const szTempFileName[ ] = "tempfile.ini";
new szFormat[ 128 ], szData[ 192 ], szName[ MAX_NAME_LENGTH ], szSteamId[ MAX_AUTHID_LENGTH ], szIP[ MAX_IP_LENGTH ];
new szTempFilePath[ 64 ];
formatex( szTempFilePath, charsmax( szTempFilePath ), "%s/%s", g_szConfigsDir, szTempFileName );
formatex( szFormat, charsmax( szFormat ), "%s/%s", g_szConfigsDir, g_iConfig[ BANS_FILE ] );
new iFilePointer = fopen( szFormat, "rt" );
if( iFilePointer )
{
new iInputFilePointer = fopen( szTempFilePath, "wt" );
if( iInputFilePointer )
{
while( fgets( iFilePointer, szData, charsmax( szData ) ) )
{
switch( szData[ 0 ] )
{
case EOS, '#', ';', '/', '\':
{
fprintf( iInputFilePointer, szData ); // write as it was before
}
default:
{
parse( szData, szName, charsmax( szName ), szSteamId, charsmax( szSteamId ), szIP, charsmax( szIP ) );
trim( szName );
trim( szSteamId );
trim( szIP );
if( equali( szNamePlayer, szName ) && equali( szSteamIdPlayer, szSteamId ) && equali( szIpPlayer, szIP ) )
{
new eData[ PlayerBan ];
for( new i; i < ArraySize( g_aBans ); i++ )
{
ArrayGetArray( g_aBans, i, eData );
if( equali( eData[ Player_Name ], szName ) && equali( eData[ Player_SteamId ], szSteamIdPlayer ) && equali( eData[ Player_IP ], szIP ) )
{
ArrayDeleteItem( g_aBans, i );
break;
}
}
}
else
{
fprintf( iInputFilePointer, szData ); // write as it was before
}
}
}
}
fclose( iInputFilePointer );
fclose( iFilePointer );
delete_file( szFormat );
rename_file( szTempFilePath, szFormat, 1 );
}
}
return 0;
}
BanPlayer( const szName[ ], const szSteamId[ ], const szIP[ ], const szExpireDate[ ], const szReason[ ], const szBannedBy[ ] )
{
new szFormat[ 128 ];
formatex( szFormat, charsmax( szFormat ), "%s/%s", g_szConfigsDir, g_iConfig[ BANS_FILE ] );
new iFilePointer = fopen( szFormat, "r+" );
if( iFilePointer )
{
new szByteVal[ 1 ];
fseek( iFilePointer , -1 , SEEK_END );
fread_raw( iFilePointer , szByteVal , sizeof( szByteVal ) , BLOCK_BYTE );
fseek( iFilePointer , 0 , SEEK_END );
fprintf( iFilePointer, "%s^"%s^" ^"%s^" ^"%s^" ^"%s^" ^"%s^" ^"%s^"", ( szByteVal[ 0 ] == 10 ) ? "" : "^n", szName, szSteamId, szIP, szExpireDate, szReason, szBannedBy ); // add him to banlist
fclose( iFilePointer );
}
return 1;
}
GagPlayer( const szName[ ], const szSteamId[ ], const szIP[ ], const szReason[ ], const szFlags[ ], const szExpireDate[ ], const szGaggedBy[ ] )
{
new szFormat[ 128 ];
formatex( szFormat, charsmax( szFormat ), "%s/%s", g_szConfigsDir, g_iConfig[ GAGS_FILE ] );
new iFilePointer = fopen( szFormat, "r+" );
if( iFilePointer )
{
new szByteVal[ 1 ];
fseek( iFilePointer , -1 , SEEK_END );
fread_raw( iFilePointer , szByteVal , sizeof( szByteVal ) , BLOCK_BYTE );
fseek( iFilePointer , 0 , SEEK_END );
fprintf( iFilePointer, "%s^"%s^" ^"%s^" ^"%s^" ^"%s^" ^"%s^" ^"%s^" ^"%s^"", ( szByteVal[ 0 ] == 10 ) ? "" : "^n", szName, szSteamId, szIP, szReason, szFlags, szExpireDate, szGaggedBy ); // add him to gaglist
fclose( iFilePointer );
}
return 1;
}
AddMinutesToDate( const szDate[ ], const iMinutes, szReturnDate[ ], const iSize )
{
new const szFormatRule[ ] = "%m/%d/%Y %H:%M:%S";
new const iSecondsInMinute = 60;
new iCurrentTimeStamp = parse_time( szDate, szFormatRule );
iCurrentTimeStamp = iCurrentTimeStamp + ( iMinutes * iSecondsInMinute );
format_time( szReturnDate, iSize, szFormatRule, iCurrentTimeStamp );
}
AddSecondsToDate( const szDate[ ], const iSeconds, szReturnDate[ ], const iSize )
{
new const szFormatRule[ ] = "%m/%d/%Y %H:%M:%S";
new iCurrentTimeStamp = parse_time( szDate, szFormatRule );
iCurrentTimeStamp = iCurrentTimeStamp + iSeconds;
format_time( szReturnDate, iSize, szFormatRule, iCurrentTimeStamp );
}
RemoveMinutesFromDate( const szDate[ ], const iMinutes, szReturnDate[ ], const iSize )
{
new const szFormatRule[ ] = "%m/%d/%Y %H:%M:%S";
new iCurrentTimeStamp = parse_time( szDate, szFormatRule );
iCurrentTimeStamp = iCurrentTimeStamp - iMinutes;
format_time( szReturnDate, iSize, szFormatRule, iCurrentTimeStamp );
}
ReadBans( )
{
ArrayClear( g_aBans );
static szFile[ 128 ], szData[ 192 ];
formatex( szFile, charsmax( szFile ), "%s/%s", g_szConfigsDir, g_iConfig[ BANS_FILE ] );
new iFile = fopen( szFile, "rt" );
if( iFile )
{
while( fgets( iFile, szData, charsmax( szData ) ) )
{
trim( szData );
switch( szData[ 0 ] )
{
case EOS, '#', ';', '/', '\':
{
continue;
}
default:
{
new eData[ PlayerBan ];
if( parse( szData, eData[ Player_Name ], charsmax( eData[ Player_Name ] ), eData[ Player_SteamId ], charsmax( eData[ Player_SteamId ] ), eData[ Player_IP ], charsmax( eData[ Player_IP ] ),
eData[ Player_BanExpire ], charsmax( eData[ Player_BanExpire ] ),eData[ Player_BanReason ], charsmax( eData[ Player_BanReason ] ), eData[ Player_BannedBy ], charsmax( eData[ Player_BannedBy ] ) ) < 6 )
{
continue;
}
ArrayPushArray( g_aBans, eData );
}
}
}
fclose( iFile );
}
return PLUGIN_CONTINUE;
}
ReadGags( )
{
ArrayClear( g_aGags );
static szFile[ 128 ], szData[ 192 ];
formatex( szFile, charsmax( szFile ), "%s/%s", g_szConfigsDir, g_iConfig[ GAGS_FILE ] );
new iFile = fopen( szFile, "rt" );
if( iFile )
{
while( fgets( iFile, szData, charsmax( szData ) ) )
{
trim( szData );
switch( szData[ 0 ] )
{
case EOS, '#', ';', '/', '\':
{
continue;
}
default:
{
new eData[ PlayerGag ];
if( parse( szData, eData[ Player_Name ], charsmax( eData[ Player_Name ] ), eData[ Player_SteamId ], charsmax( eData[ Player_SteamId ] ), eData[ Player_IP ], charsmax( eData[ Player_IP ] ),
eData[ Player_GagReason ], charsmax( eData[ Player_GagReason ] ), eData[ Player_GagFlags ], charsmax( eData[ Player_GagFlags ] ), eData[ Player_GagExpire ], charsmax( eData[ Player_GagExpire ] ), eData[ Player_GaggedBy ], charsmax( eData[ Player_GaggedBy ] ) ) < 7 )
{
continue;
}
ArrayPushArray( g_aGags, eData );
}
}
}
fclose( iFile );
}
return PLUGIN_CONTINUE;
}
public CheckBanned( id )
{
if( get_user_flags( id ) & g_iConfig[ IMMUNITY_FLAG ] )
{
return PLUGIN_HANDLED;
}
else
{
new eData[ PlayerBan ], iPlayers[ MAX_PLAYERS ], iNum, iTempId;
get_players( iPlayers, iNum, "ch" );
for( new i; i < ArraySize( g_aBans ); i++ )
{
ArrayGetArray( g_aBans, i, eData );
if( equal( g_szAuthId[ id ], eData[ Player_SteamId ] ) || equal( g_szIp[ id ], eData[ Player_IP ] ) )
{
if( ! HasDatePassed( eData[ Player_BanExpire ] ) || equali( eData[ Player_BanExpire ], "never" ) )
{
if( equali( eData[ Player_BanExpire ], "never" ) )
{
send_message( id, CONSOLE, false, "************************************************" );
send_message( id, CONSOLE, false, "%L", id, "BAN_INFO_BANNED" );
send_message( id, CONSOLE, false, "%L", id, "BAN_INFO_EXPIRE_NEVER" );
send_message( id, CONSOLE, false, "%L", id, "BAN_INFO_REASON", eData[ Player_BanReason ] );
send_message( id, CONSOLE, false, "%L", id, "BAN_INFO_BY", eData[ Player_BannedBy ] );
send_message( id, CONSOLE, false, "************************************************" );
}
else
{
send_message( id, CONSOLE, false, "************************************************" );
send_message( id, CONSOLE, false, "%L", id, "BAN_INFO_BANNED" );
send_message( id, CONSOLE, false, "%L", id, "BAN_INFO_EXPIRE", eData[ Player_BanExpire ] );
send_message( id, CONSOLE, false, "%L", id, "BAN_INFO_REASON", eData[ Player_BanReason ] );
send_message( id, CONSOLE, false, "%L", id, "BAN_INFO_BY", eData[ Player_BannedBy ] );
send_message( id, CONSOLE, false, "************************************************" );
}
switch( g_iConfig[ BANNED_CONNECT_LOG ] )
{
case METHOD_CHAT:
{
for( new i; i < iNum; i++ )
{
iTempId = iPlayers[ i ];
if( get_user_flags( iTempId ) & ADMIN_KICK )
{
CC_SendMessage( iTempId, "%L", iTempId, "BANNED_PLAYER_CONNECTED", eData[ Player_Name ], eData[ Player_SteamId ], eData[ Player_IP ] );
}
}
}
case METHOD_LOG:
{
send_message( 0, LOG, false, "%L", LANG_PLAYER, "BANNED_PLAYER_CONNECTED", eData[ Player_Name ], eData[ Player_SteamId ], eData[ Player_IP ] );
}
case METHOD_BOTH:
{
for( new i; i < iNum; i++ )
{
iTempId = iPlayers[ i ];
if( get_user_flags( iTempId ) & ADMIN_KICK )
{
CC_SendMessage( iTempId, "%L", iTempId, "BANNED_PLAYER_CONNECTED", eData[ Player_Name ], eData[ Player_SteamId ], eData[ Player_IP ] );
}
}
send_message( 0, LOG, false, "%L", LANG_PLAYER, "BANNED_PLAYER_CONNECTED", eData[ Player_Name ], eData[ Player_SteamId ], eData[ Player_IP ] );
}
}
server_cmd( "kick #%d %L", get_user_userid( id ), id, "CHECK_CONSOLE_INFO" );
}
}
}
}
return PLUGIN_CONTINUE;
}
CheckGagged( id )
{
if( get_user_flags( id ) & g_iConfig[ IMMUNITY_FLAG ] )
{
return PLUGIN_HANDLED;
}
else
{
new eData[ PlayerGag ];
for( new i; i < ArraySize( g_aGags ); i++ )
{
ArrayGetArray( g_aGags, i, eData );
if( equali( g_szAuthId[ id ], eData[ Player_SteamId ] ) || equali( g_szIp[ id ], eData[ Player_IP ] ) )
{
if( ! HasDatePassed( eData[ Player_GagExpire ] ) && is_user_connected( id ) )
{
set_speak( id, SPEAK_MUTED );
}
}
}
}
return PLUGIN_CONTINUE;
}
ReadUsers( )
{
TrieClear( g_tDatabase );
new szFormat[ 64 ], szPlayerData[ 512 ], eData[ PlayerData ];
formatex( szFormat, charsmax( szFormat ), "%s/%s", g_szConfigsDir, g_iConfig[ USERS_FILE ] );
new iFile = fopen( szFormat, "rt" );
if( iFile )
{
while( fgets( iFile, szPlayerData, charsmax( szPlayerData ) ) )
{
trim( szPlayerData );
switch( szPlayerData[ 0 ] )
{
case EOS, '#', '/', '\':
{
continue;
}
default:
{
new szImmunity[ 8 ], szKeepPrivileges[ 3 ];
if( parse( szPlayerData, eData[ Player_Name ], charsmax( eData[ Player_Name ] ), eData[ Player_SteamID ], charsmax( eData[ Player_SteamID ] ), eData[ Player_Password ], charsmax( eData[ Player_Password ] ), eData[ Player_AccessFlags ], charsmax( eData[ Player_AccessFlags ] ),
eData[ Player_Prefix ], charsmax( eData[ Player_Prefix ] ), eData[ Player_Model_T ], charsmax( eData[ Player_Model_T ] ), eData[ Player_Model_CT ], charsmax( eData[ Player_Model_CT ] ), szImmunity, charsmax( szImmunity ),
eData[ Player_Expire_Date ], charsmax( eData[ Player_Expire_Date ] ), eData[ Player_FlagsExpire ], charsmax( eData[ Player_FlagsExpire ] ), szKeepPrivileges, charsmax( szKeepPrivileges ) ) < 11 )
{
continue;
}
if( szPlayerData[ 0 ] == ';' )
{
replace( eData[ Player_Name ], charsmax( eData[ Player_Name ] ), ";", "" );
}
new iImmunity = str_to_num( szImmunity );
eData[ Player_Immunity ] = ( ! is_str_num( szImmunity ) || iImmunity < 0 ) ? 0 : iImmunity;
new iKeepPrivileges = str_to_num( szKeepPrivileges );
eData[ Player_KeepPrivileges ] = bool:( ( ! is_str_num( szKeepPrivileges ) || !( 0 <= iKeepPrivileges <= 1 ) ) ? 0 : iKeepPrivileges );
if( eData[ Player_SteamID ][ 0 ] )
{
TrieSetArray( g_tDatabase, eData[ Player_SteamID ], eData, sizeof eData );
}
else if( eData[ Player_Name ][ 0 ] )
{
TrieSetArray( g_tDatabase, eData[ Player_Name ], eData, sizeof eData );
}
arrayset( eData, 0, sizeof( eData ) );
}
}
}
fclose( iFile );
}
}
ReadMaps( )
{
ArrayClear( g_aMaps );
new szData[ MAX_MAP_NAME_LENGTH ];
new iFile = fopen( g_szMapsFile, "rt" );
if( iFile )
{
while( fgets( iFile, szData, charsmax( szData ) ) )
{
trim( szData );
switch( szData[ 0 ] )
{
case EOS, '#', '/', '\', ';':
{
continue;
}
default:
{
ArrayPushString( g_aMaps, szData );
}
}
}
fclose( iFile );
}
}
bool:HasDatePassed( const szDate[ ] )
{
return get_systime( ) >= parse_time( szDate, "%m/%d/%Y %H:%M:%S" );
}
ScreenShot( id )
{
client_cmd( id, "snapshot" );
}
ReadConfig( )
{
new szFile[ 128 ], szData[ 64 ];
formatex( szFile, charsmax( szFile ), "%s/%s", g_szConfigsDir, g_szConfigFile );
new iFile = fopen( szFile, "rt" );
if( iFile )
{
while( fgets( iFile, szData, charsmax( szData ) ) )
{
trim( szData );
switch( szData[ 0 ] )
{
case EOS, '#', ';', '/', '\':
{
continue;
}
default:
{
new szKey[ 32 ], szValue[ 64 ];
strtok( szData, szKey, charsmax( szKey ), szValue, charsmax( szValue ), '=' );
trim( szKey );
trim( szValue );
remove_quotes( szKey );
remove_quotes( szValue );
if( ! szValue[ 0 ] || ! szKey[ 0 ] )
{
continue;
}
if( equali( szKey, "BANS_FILE" ) )
{
copy( g_iConfig[ BANS_FILE ], charsmax( g_iConfig[ BANS_FILE ] ), szValue );
}
else if( equali( szKey, "GAGS_FILE" ) )
{
copy( g_iConfig[ GAGS_FILE ], charsmax( g_iConfig[ GAGS_FILE ] ), szValue );
}
else if( equali( szKey, "CVARS_FILE" ) )
{
copy( g_iConfig[ CVARS_FILE ], charsmax( g_iConfig[ CVARS_FILE ] ), szValue );
}
else if( equali( szKey, "LOGS_FILE" ) )
{
copy( g_iConfig[ LOGS_FILE ], charsmax( g_iConfig[ LOGS_FILE ] ), szValue );
}
else if( equali( szKey, "USERS_FILE" ) )
{
copy( g_iConfig[ USERS_FILE ], charsmax( g_iConfig[ USERS_FILE ] ), szValue );
}
else if( equali( szKey, "SYSTEM_PREFIX" ) )
{
copy( g_iConfig[ SYSTEM_PREFIX ], charsmax( g_iConfig[ SYSTEM_PREFIX ] ), szValue );
}
else if( equali( szKey, "BANNED_CONNECT_LOG" ) )
{
g_iConfig[ BANNED_CONNECT_LOG ] = str_to_num( szValue );
}
else if( equali( szKey, "KICK_FLAG" ) )
{
g_iConfig[ KICK_FLAG ] = read_flags( szValue );
}
else if( equali( szKey, "BAN_FLAG" ) )
{
g_iConfig[ BAN_FLAG ] = read_flags( szValue );
}
else if( equali( szKey, "ADD_BAN_FLAG" ) )
{
g_iConfig[ ADD_BAN_FLAG ] = read_flags( szValue );
}
else if( equali( szKey, "ADD_GAG_FLAG" ) )
{
g_iConfig[ ADD_GAG_FLAG ] = read_flags( szValue );
}
else if( equali( szKey, "GAG_FLAG" ) )
{
g_iConfig[ GAG_FLAG ] = read_flags( szValue );
}
else if( equali( szKey, "UNBAN_FLAG" ) )
{
g_iConfig[ UNBAN_FLAG ] = read_flags( szValue );
}
else if( equali( szKey, "SLAY_FLAG" ) )
{
g_iConfig[ SLAY_FLAG ] = read_flags( szValue );
}
else if( equali( szKey, "SLAP_FLAG" ) )
{
g_iConfig[ SLAP_FLAG ] = read_flags( szValue );
}
else if( equali( szKey, "CVAR_FLAG" ) )
{
g_iConfig[ CVAR_FLAG ] = read_flags( szValue );
}
else if( equali( szKey, "PLUGINS_FLAG" ) )
{
g_iConfig[ PLUGINS_FLAG ] = read_flags( szValue );
}
else if( equali( szKey, "MAP_FLAG" ) )
{
g_iConfig[ MAP_FLAG ] = read_flags( szValue );
}
else if( equali( szKey, "NICK_FLAG" ) )
{
g_iConfig[ NICK_FLAG ] = read_flags( szValue );
}
else if( equali( szKey, "RCON_FLAG" ) )
{
g_iConfig[ RCON_FLAG ] = read_flags( szValue );
}
else if( equali( szKey, "SHOW_RCON_FLAG" ) )
{
g_iConfig[ SHOW_RCON_FLAG ] = read_flags( szValue );
}
else if( equali( szKey, "MODULES_FLAG" ) )
{
g_iConfig[ MODULES_FLAG ] = read_flags( szValue );
}
else if( equali( szKey, "CHAT_FLAG" ) )
{
g_iConfig[ CHAT_FLAG ] = read_flags( szValue );
}
else if( equali( szKey, "FREEZE_FLAG" ) )
{
g_iConfig[ FREEZE_FLAG ] = read_flags( szValue );
}
else if( equali( szKey, "SCREENSHOT_FLAG" ) )
{
g_iConfig[ SCREENSHOT_FLAG ] = read_flags( szValue );
}
else if( equali( szKey, "COMMANDS_MENU_FLAG" ) )
{
g_iConfig[ COMMANDS_MENU_FLAG ] = read_flags( szValue );
}
else if( equali( szKey, "UNGAG_FLAG" ) )
{
g_iConfig[ UNGAG_FLAG ] = read_flags( szValue );
}
else if( equali( szKey, "SAY_FLAG" ) )
{
g_iConfig[ SAY_FLAG ] = read_flags( szValue );
}
else if( equali( szKey, "TEAM_FLAG" ) )
{
g_iConfig[ TEAM_FLAG ] = read_flags( szValue );
}
else if( equali( szKey, "PSAY_FLAG" ) )
{
g_iConfig[ PSAY_FLAG ] = read_flags( szValue );
}
else if( equali( szKey, "LAST_FLAG" ) )
{
g_iConfig[ LAST_FLAG ] = read_flags( szValue );
}
else if( equali( szKey, "VOTEMAP_FLAG" ) )
{
g_iConfig[ VOTEMAP_FLAG ] = read_flags( szValue );
}
else if( equali( szKey, "VOTE_FLAG" ) )
{
g_iConfig[ VOTE_FLAG ] = read_flags( szValue );
}
else if( equali( szKey, "VOTE_TIME" ) )
{
g_iConfig[ VOTE_TIME ] = _:str_to_float( szValue );
}
else if( equali( szKey, "VOTE_MAP_TIME" ) )
{
g_iConfig[ VOTE_MAP_TIME ] = _:str_to_float( szValue );
}
else if( equali( szKey, "NOCLIP_FLAG" ) )
{
g_iConfig[ NOCLIP_FLAG ] = read_flags( szValue );
}
else if( equali( szKey, "WARN_FLAG" ) )
{
g_iConfig[ WARN_FLAG ] = read_flags( szValue );
}
else if( equali( szKey, "GODMODE_FLAG" ) )
{
g_iConfig[ GODMODE_FLAG ] = read_flags( szValue );
}
else if( equali( szKey, "WHO_FLAG" ) )
{
g_iConfig[ WHO_FLAG ] = read_flags( szValue );
}
else if( equali( szKey, "IMMUNITY_FLAG" ) )
{
g_iConfig[ IMMUNITY_FLAG ] = read_flags( szValue );
}
else if( equali( szKey, "FREQUENCY_UPDATE_ALL_FILES" ) )
{
g_iConfig[ FREQUENCY_UPDATE_ALL_FILES ] = _:str_to_float( szValue );
}
else if( equali( szKey, "DISCONNECT_INFO_SECONDS_EXPIRE" ) )
{
g_iConfig[ DISCONNECT_INFO_SECONDS_EXPIRE ] = str_to_num( szValue );
}
else if( equali( szKey, "RANKS_ENABLED" ) )
{
g_iConfig[ RANKS_ENABLED ] = str_to_num( szValue );
}
else if( equali( szKey, "CMDMENU_COMMANDS" ) )
{
while( szValue[ 0 ] != 0 && strtok( szValue, szKey, charsmax( szKey ), szValue, charsmax( szValue ), ',' ) )
{
trim( szKey );
trim( szValue );
register_concmd( szKey, "@CommandsMenu" );
}
}
}
}
}
fclose( iFile );
}
}
eas_set_user_team( id, iTeam )
{
if( is_user_alive( id ) )
{
ExecuteHamB( Ham_Killed, id, id, false );
}
cs_set_user_team( id, iTeam );
}
bool:IsGagged( id )
{
new eData[ PlayerGag ], bool:bIsGagged;
for( new i; i < ArraySize( g_aGags ); i++ )
{
ArrayGetArray( g_aGags, i, eData );
if( equali( g_szAuthId[ id ], eData[ Player_SteamId ] ) || equali( g_szIp[ id ], eData[ Player_IP ] ) )
{
if( equali( eData[ Player_GagExpire ], "never" ) || !HasDatePassed( eData[ Player_GagExpire ] ) )
{
bIsGagged = true;
break;
}
}
}
return bIsGagged;
}
FreezePlayer( id, iValue )
{
new iFlags = pev( id , pev_flags )
switch( iValue )
{
case 0:
{
if( iFlags & FL_FROZEN )
{
set_pev( id, pev_flags, iFlags & ~FL_FROZEN );
g_bFrozen[ id ] = false;
if( g_iFwThink )
{
unregister_forward( FM_PlayerPreThink , g_iFwThink );
}
}
}
case 1:
{
if( ~iFlags & FL_FROZEN )
{
set_pev( id, pev_flags, iFlags | FL_FROZEN );
g_bFrozen[ id ] = true;
pev( id, pev_v_angle, fAngles[ id ] );
g_iFwThink = register_forward( FM_PlayerPreThink , "fw_PlayerPreThink" );
}
}
}
}
ReadCvars( )
{
new szFile[ 128 ], szData[ 64 ];
formatex( szFile, charsmax( szFile ), "%s/%s", g_szConfigsDir, g_iConfig[ CVARS_FILE ] );
new iFile = fopen( szFile, "rt" );
if( iFile )
{
while( fgets( iFile, szData, charsmax( szData ) ) )
{
trim( szData );
remove_quotes( szData );
switch( szData[ 0 ] )
{
case EOS, '#', ';', '/', '\':
{
continue;
}
default:
{
new szKey[ 32 ], szValue[ 32 ];
strtok( szData, szKey, charsmax( szKey ), szValue, charsmax( szValue ), '=' );
trim( szKey );
trim( szValue );
remove_quotes( szKey );
remove_quotes( szValue );
if( ! szValue[ 0 ] || ! szKey[ 0 ] )
{
continue;
}
new eData[ Cvars ];
copy( eData[ Cvar_Name ], charsmax( eData[ Cvar_Name ] ), szKey );
eData[ Cvar_Flag ] = read_flags( szValue );
ArrayPushArray( g_aCvars, eData );
}
}
}
fclose( iFile );
}
}
UpdateGagExpireDate( szName[ ], szExpireDate[ ] )
{
new const szTempFileName[ ] = "tempfile.ini";
new szFormat[ 128 ], szData[ 192 ];
new szTempFilePath[ 64 ];
formatex( szTempFilePath, charsmax( szTempFilePath ), "%s/%s", g_szConfigsDir, szTempFileName );
formatex( szFormat, charsmax( szFormat ), "%s/%s", g_szConfigsDir, g_iConfig[ GAGS_FILE ] );
new iFilePointer = fopen( szFormat, "rt" );
if( iFilePointer )
{
new iInputFilePointer = fopen( szTempFilePath, "wt" );
if( iInputFilePointer )
{
while( fgets( iFilePointer, szData, charsmax( szData ) ) )
{
switch( szData[ 0 ] )
{
case EOS, '#', ';', '/', '\':
{
fprintf( iInputFilePointer, szData ); // write as it was before
}
default:
{
new eData[ PlayerGag ];
if( parse( szData, eData[ Player_Name ], charsmax( eData[ Player_Name ] ), eData[ Player_SteamId ], charsmax( eData[ Player_SteamId ] ), eData[ Player_IP ], charsmax( eData[ Player_IP ] ),
eData[ Player_GagReason ], charsmax( eData[ Player_GagReason ] ), eData[ Player_GagFlags ], charsmax( eData[ Player_GagFlags ] ), eData[ Player_GagExpire ], charsmax( eData[ Player_GagExpire ] ), eData[ Player_GaggedBy ], charsmax( eData[ Player_GaggedBy ] ) ) < 7 )
{
continue;
}
if( equali( szName, eData[ Player_Name ] ) )
{
format( szData, charsmax( szData ), "^"%s^" ^"%s^" ^"%s^" ^"%s^" ^"%s^" ^"%s^" ^"%s^"", szName, eData[ Player_SteamId ], eData[ Player_IP ], eData[ Player_GagReason ], eData[ Player_GagFlags ], szExpireDate, eData[ Player_GaggedBy ] );
fprintf( iInputFilePointer, szData );
}
else
{
fprintf( iInputFilePointer, szData ); // write as it was before
}
}
}
}
fclose( iInputFilePointer );
fclose( iFilePointer );
delete_file( szFormat );
rename_file( szTempFilePath, szFormat, 1 );
}
}
return 0;
}
send_message( const id, const iWhere, bool:bPrefix, const szInput[ ], any:... )
{
new szMessage[ 192 ];
vformat( szMessage, charsmax(szMessage), szInput, 5 );
CC_RemoveColors( szMessage, charsmax( szMessage ), true );
bPrefix ? format( szMessage, charsmax(szMessage), "%s %s", g_iConfig[ SYSTEM_PREFIX ], szMessage ) : format( szMessage, charsmax(szMessage), "%s", szMessage );
switch( iWhere )
{
case CHAT:
{
client_print( id, print_chat, szMessage )
}
case CONSOLE:
{
client_print( id, print_console, szMessage )
}
case LOG:
{
new szDate[ MAX_DATE_LENGTH ], szNewLogsFile[ 256 ];
get_time( "%m-%d-%Y", szDate, charsmax( szDate ) );
formatex( szNewLogsFile, charsmax( szNewLogsFile ), "%s_%s.ini", g_iConfig[ LOGS_FILE ], szDate );
log_to_file( szNewLogsFile, szMessage );
}
}
}
//////////////////////////////////////////////////////////////////////////// END OF STOCKS AND PRIVATE FUNCTIONS ////////////////////////////////////////////////////////////////////////////////////
Many thanks in advance!
|
|