#include < amxmodx >
#include < engine >
#include < fakemeta >
#include < hamsandwich >
#include < cstrike >
#include < fun >
#pragma semicolon 1
#define MaxWeapon 11
#define MaxAwp 3
#define MinPlayer 4
new const g_sPrefix[ ] = "";
new const g_iWeapons[ MaxWeapon ] = { 22, 28, 18, 3, 8, 15, 14, 19, 5, 21, 20 };
new const g_iMaxAmmo[ 31 ] = { 0, 52, 0, 90, 1, 32, 1, 100, 90, 1, 120, 100, 100, 90, 90, 90, 100, 120, 30, 120, 200, 32, 90, 120, 90, 2, 35, 90, 90, 0, 100 };
new g_sWeapon[ MaxWeapon ][ 16 ], g_sWeaponFull[ MaxWeapon ][ 32 ], g_iWPCt, g_iWPTe;
new bool: g_bWeaponMenu[ 33 ], bool: g_bC4;
public plugin_init( )
{
register_plugin( "WeaponMenu", "1.0", "Demon" );
register_cvar( "WeaponMenu", "By Demon", FCVAR_SERVER );
register_dictionary( "WeaponMenu.txt" );
new sWeapName[ 32 ], sLeft[ 16 ], sRight[ 16 ];
for ( new i; i < MaxWeapon; ++i )
{
get_weaponname( g_iWeapons[ i ], sWeapName, 31 );
RegisterHam( Ham_Weapon_Reload, sWeapName, "Reload_Post", 1 );
copy( g_sWeaponFull[ i ], 31, sWeapName );
strtok( sWeapName, sRight, 15, sLeft, 15, '_' );
strtoupper( sLeft );
copy( g_sWeapon[ i ], 15, sLeft );
}
RegisterHam( Ham_Weapon_Reload, "weapon_deagle", "Reload_Post", 1 );
RegisterHam( Ham_Spawn, "player", "PlayerSpawn", 1 );
register_event( "HLTV", "eNewRound", "a", "1=0", "2=0" );
new iEntity = create_entity( "info_map_parameters" );
DispatchKeyValue( iEntity, "buying", "3" );
DispatchSpawn( iEntity );
iEntity = create_entity( "player_weaponstrip" );
DispatchKeyValue( iEntity, "targetname", "stripper" );
DispatchSpawn( iEntity );
iEntity = create_entity( "game_player_equip" );
DispatchKeyValue( iEntity, "weapon_knife" , "1" );
DispatchKeyValue( iEntity, "targetname", "equipment" );
DispatchSpawn( iEntity );
iEntity = create_entity( "multi_manager" );
DispatchKeyValue( iEntity, "equipment" , "0.3" );
DispatchKeyValue( iEntity, "stripper" , "0.2" );
DispatchKeyValue( iEntity, "targetname", "game_playerspawn" );
DispatchKeyValue( iEntity, "spawnflags", "1" );
DispatchSpawn( iEntity );
register_concmd( "say /gun", "cmdWeaponMenu" );
register_concmd( "say /fegyver", "cmdWeaponMenu" );
register_concmd( "say_team /gun", "cmdWeaponMenu" );
register_concmd( "say_team /fegyver", "cmdWeaponMenu" );
}
public Reload_Post( iWeapon )
{
static iId;
iId = get_pdata_cbase( iWeapon, 41, 4 );
if ( !is_user_connected( iId ) ) return;
if ( get_pdata_int( iWeapon, 54, 4 ) || get_pdata_int( iWeapon, 55, 4 ) )
{
new iWeapId = cs_get_weapon_id( iWeapon );
cs_set_user_bpammo( iId, iWeapId, g_iMaxAmmo[ iWeapId ] );
}
}
public PlayerSpawn( iId ) { set_task( 0.1, "CheckC4", iId ); }
public CheckC4( iId )
{
if ( !g_bC4 )
{
if ( user_has_weapon( iId, CSW_C4 ) )
{
g_bC4 = true;
set_task( 0.4, "GiveC4", iId + 8888 );
}
}
set_task( 0.33, "WeaponMenu", iId );
}
public GiveC4( iId ) { iId -= 8888; give_item( iId, "weapon_c4" ); cs_set_user_plant( iId, 1, 1 ); }
public WeaponMenu( iId )
{
if ( !is_user_alive( iId ) ) return;
g_bWeaponMenu[ iId ] = false;
static sMenuItem[ 128 ];
formatex( sMenuItem, 127, "%L", iId, "MENU_TITLE" );
new iMenu = menu_create( sMenuItem, "WeaponMenuH" );
for ( new i; i < MaxWeapon; ++i )
{
if ( g_iWeapons[ i ] != 18 ) formatex( sMenuItem, 127, "\r[\y%s\r]", g_sWeapon[ i ] );
else formatex( sMenuItem, 127, "\r[\y%s\r] \r[\dMAX: \y%d\r]", g_sWeapon[ i ], MaxAwp );
menu_additem( iMenu, sMenuItem, _, 0 );
}
menu_setprop( iMenu, MPROP_EXIT, MEXIT_ALL );
menu_display( iId, iMenu );
}
public WeaponMenuH( iId, iMenu, iItem )
{
if( iItem == MENU_EXIT || !is_user_alive( iId ) )
{
menu_destroy( iMenu );
return PLUGIN_HANDLED;
}
new sMenuName[ 78 ], sInfo[ 8 ], iKey, iMenuNum;
menu_item_getinfo( iMenu, iItem, iKey, sInfo, charsmax( sInfo ), sMenuName, charsmax( sMenuName ), iMenuNum );
new iWpn = g_iWeapons[ iItem ];
if ( iWpn == 18 )
{
new iTeams[ CsTeams ];
GetPlayerCount( iTeams );
if ( iTeams[ CS_TEAM_T ] < MinPlayer || iTeams[ CS_TEAM_CT ] < MinPlayer ) {
ChatColor( iId, "%L", iId, "AWP_ALLOWFROM", MinPlayer, MinPlayer );
WeaponMenu( iId );
return PLUGIN_HANDLED;
}
new CsTeams: userTeam = cs_get_user_team( iId );
if( userTeam == CS_TEAM_CT )
{
if ( g_iWPCt > 0 ) --g_iWPCt;
else
{
client_print( iId, print_center, "%L", iId, "AWP_TOOMANY" );
WeaponMenu( iId );
return PLUGIN_HANDLED;
}
}
else if ( userTeam == CS_TEAM_T )
{
if ( g_iWPTe > 0 ) --g_iWPTe;
else
{
client_print( iId, print_center, "%L", iId, "AWP_TOOMANY" );
WeaponMenu( iId );
return PLUGIN_HANDLED;
}
}
}
give_item( iId, g_sWeaponFull[ iItem ] );
give_item( iId, "weapon_deagle" );
give_item( iId, "weapon_flashbang" );
give_item( iId, "weapon_hegrenade" );
give_item( iId, "item_assaultsuit" );
give_item( iId, "item_thighpack" );
cs_set_user_bpammo( iId, iWpn, g_iMaxAmmo[ iWpn ] );
cs_set_user_bpammo( iId, CSW_DEAGLE, g_iMaxAmmo[ CSW_DEAGLE ] );
cs_set_user_bpammo( iId, CSW_FLASHBANG, 2 );
g_bWeaponMenu[ iId ] = true;
ChatColor( iId, "%L", iId, "CHOOSED", g_sWeapon[ iItem ] );
menu_destroy( iMenu );
return PLUGIN_HANDLED;
}
public eNewRound ( ) { g_iWPCt = g_iWPTe = MaxAwp; g_bC4 = false; }
public cmdWeaponMenu( iId ) { if ( !g_bWeaponMenu[ iId ] ) WeaponMenu( iId ); }
public pfn_keyvalue( iEntity )
{
new sClassName[ 20 ], sKeyName[ 16 ], sValue[ 20 ];
copy_keyvalue( sClassName, charsmax( sClassName ), sKeyName, charsmax( sKeyName ), sValue, charsmax( sValue ) );
if ( equal( sClassName, "info_map_parameters" ) || equal( sClassName, "func_buyzone" ) || equal( sClassName, "game_player_equip" ) || equal( sClassName, "player_weaponstrip" ) )
{
remove_entity( iEntity );
return PLUGIN_HANDLED;
}
else if ( equal( sClassName, "multi_manager" ) && equal( sKeyName, "targetname" ) && equal( sValue, "game_playerspawn" ) )
{
remove_entity( iEntity );
return PLUGIN_HANDLED;
}
return PLUGIN_CONTINUE;
}
stock GetPlayerCount( iTeamPlayers[ CsTeams ] )
{
static iPlayers[ 32 ], iPlayerCount;
get_players( iPlayers, iPlayerCount );
for ( new i = 0 ; i < iPlayerCount ; ++i ) ++iTeamPlayers[ cs_get_user_team( iPlayers[ i ] ) ];
}
stock ChatColor( iId, const sMessage[ ], any:... )
{
static iPlrNum, iPlayers[ 32 ], sMsg[ 256 ], iIdMsg, iMsgLen = charsmax( sMsg );
vformat( sMsg, iMsgLen, sMessage, 3 );
format( sMsg, iMsgLen, "!g[%s]!y %s", g_sPrefix, sMsg );
replace_all( sMsg, iMsgLen, "!g", "^4" );
replace_all( sMsg, iMsgLen, "!y", "^1" );
replace_all( sMsg, iMsgLen, "!t", "^3" );
if ( !iIdMsg ) iIdMsg = get_user_msgid( "SayText" );
if ( iId )
{
iPlayers[ 0 ] = iId;
iPlrNum = 1;
}
else get_players( iPlayers, iPlrNum, "ch" );
for ( new i, iPId; i < iPlrNum; ++i )
{
iPId = iPlayers[ i ];
if ( !is_user_connected( iPId ) ) continue;
message_begin( MSG_ONE, iIdMsg, _, iPId );
write_byte( iPId );
write_string( sMsg );
message_end( );
}
}