PHP Code:
#include < amxmodx >
#include < amxmisc >
#include < hamsandwich >
#include < fun >
#include < cstrike >
#include <fakemeta_util>
#define ADMIN ADMIN_RCON
#define SILVER ADMIN_LEVEL_G
#define GOLDEN ADMIN_LEVEL_H
#define SetUserAdmin(%0) ( gBitAdmin |= ( 1 << ( %0 & 31 ) ) )
#define ClearUserAdmin(%0) ( gBitAdmin &= ( ~( 1 << ( %0 & 31 ) ) ) )
#define IsAdmin(%0) ( gBitAdmin & ( 1 << ( %0 & 31 ) ) )
enum ChatColor
{
CHATCOLOR_NORMAL = 1,
CHATCOLOR_GREEN,
CHATCOLOR_TEAM_COLOR,
CHATCOLOR_GREY,
CHATCOLOR_RED,
CHATCOLOR_BLUE,
}
new bool:g_bBuyBlocked
new gBlocked;
new gBitAdmin;
new uflags[33];
public client_putinserver(id){
if(get_user_flags(id)&ADMIN)
uflags[id] = ADMIN
else if(get_user_flags(id)&GOLDEN)
uflags[id] = GOLDEN
else if(get_user_flags(id)&SILVER)
uflags[id] = SILVER
else
uflags[id] = 0
}
public plugin_init( )
{
register_event( "CurWeapon", "eCurWeapon", "be", "1=1", "2!29" );
register_event( "HLTV", "eNewRound", "a", "1=0", "2=0" );
register_event("HLTV", "Event_HLTV_New_Round", "a", "1=0", "2=0");
register_concmd("amx_knife", "ConCmd_BlockBuy", ADMIN_MAP);
register_clcmd( "amx_knife", "ClientCommand_Knife",ADMIN|SILVER|GOLDEN, "- start knife round" );
}
public ClientCommand_Knife( id, level, cid )
{
if( !cmd_access( id, level, cid, 1 ) )
return PLUGIN_HANDLED;
if( gBlocked )
return PLUGIN_HANDLED;
gBlocked = true;
new szName[32],level[10];
get_user_name( id, szName, 31 );
get_level_by_flag(id,level);
colorChat(0,CHATCOLOR_NORMAL,"$g[$tSoloGunner$g]$n SoloGunner activated by $g%s$n $g[$t%s$g]",szName,level)
return PLUGIN_HANDLED
}
public eCurWeapon( id )
{
if( gBlocked )
{
if(!IsAdmin(id))
{
engclient_cmd( id, "weapon_usp" );
}
else
{
if( read_data( 2 ) != CSW_USP )
{
engclient_cmd( id, "weapon_knife" );
}
}
}
}
public ConCmd_BlockBuy(id, lvl, cid)
{
if( cmd_access(id, lvl, cid, 0) )
{
engclient_cmd( id, "weapon_usp" );
fm_give_item( id,"weapon_usp" );
cs_set_user_bpammo(id,CSW_USP,12);
}
{
g_bBuyBlocked = true
}
return PLUGIN_HANDLED
}
public Event_HLTV_New_Round()
{
if( g_bBuyBlocked )
{
g_bBuyBlocked = false
}
}
public client_buy(id, item)
{
if( g_bBuyBlocked )
{
client_print(id, print_chat, "*** Buy is restricted for this round")
return PLUGIN_HANDLED
}
return PLUGIN_CONTINUE
}
public eNewRound( )
{
gBlocked = false;
}
get_level_by_flag(id,level[]){
switch(uflags[id]){
case ADMIN: copy(level,9,"ADMIN")
case SILVER: copy(level,9,"SILVER")
case GOLDEN: copy(level,9,"GOLDEN")
}
}
colorChat(id, ChatColor:color, const msg[], {Float,Sql,Result,_}:...)
{
new team, index, MSG_Type
new bool:teamChanged = false
static message[192]
switch(color)
{
case CHATCOLOR_NORMAL: // Normal
{
message[0] = 0x01;
}
case CHATCOLOR_GREEN: // Green
{
message[0] = 0x04;
}
default: // Grey, Red, Blue
{
message[0] = 0x03;
}
}
vformat(message[1], 190, msg, 4);
replace_all(message, 190, "$g", "^x04")
replace_all(message, 190, "$n", "^x01")
replace_all(message, 190, "$t", "^x03")
if(id == 0)
{
index = findAnyPlayer()
MSG_Type = MSG_ALL;
}
else
{
index = id;
MSG_Type = MSG_ONE;
}
if(index != 0)
{
team = get_user_team(index);
if(color == CHATCOLOR_RED && team != 1)
{
messageTeamInfo(index, MSG_Type, "TERRORIST")
teamChanged = true
}
else
if(color == CHATCOLOR_BLUE && team != 2)
{
messageTeamInfo(index, MSG_Type, "CT")
teamChanged = true
}
else
if(color == CHATCOLOR_GREY && team != 0)
{
messageTeamInfo(index, MSG_Type,"")
teamChanged = true
}
messageSayText(index, MSG_Type, message);
if(teamChanged)
{
messageTeamInfo(index, MSG_Type, "SPECTATOR")
}
}
}
messageSayText(id, type, message[])
{
message_begin(type, get_user_msgid("SayText"), _, id)
write_byte(id)
write_string(message)
message_end()
}
messageTeamInfo(id, type, team[])
{
message_begin(type, get_user_msgid("TeamInfo"), _, id)
write_byte(id)
write_string(team)
message_end()
}
findAnyPlayer()
{
static players[32], inum, pid
get_players(players, inum, "ch")
for (new a = 0; a < inum; a++)
{
pid = players[a]
if(is_user_connected(pid))
return pid
}
return 0
}