mihac23, #include < amxmodx >
#include < cstrike >
#include < fun >
#define PLUGIN_NAME "Vip system"
#define PLUGIN_VERSION "1.0"
#define PLUGIN_AUTHOR "mihac23
#define PLUGIN_LEVEL ADMIN_LEVEL_H
#define PRIMARY_WEAPONS_BITSUM ((1<<CSW_SCOUT)|(1<<CSW_XM1014)|(1<<CSW_MAC10)|(1<<CSW_AUG)|(1<<CSW_UMP45)|(1<<CSW_SG550)|(1<<CSW_GALIL)|(1<<CSW_FAMAS)|(1<<CSW_AWP)|(1<<CSW_MP5NAVY)|(1<<CSW_M249)|(1<<CSW_M3)|(1<<CSW_M4A1)|(1<<CSW_TMP)|(1<<CSW_G3SG1)|(1<<CSW_SG552)|(1<<CSW_AK47)|(1<<CSW_P90))
#define SECONDARY_WEAPONS_BITSUM ((1<<CSW_DEAGLE)|(1<<CSW_USP)|(1<<CSW_GLOCK18)|(1<<CSW_ELITE))
#pragma tabsize 0
new const mPrefix[] = "\d[VIP]^n\r"
new gMsg1
new UserFunc[ 33 ][ 64 ]
public plugin_init( )
{
register_event( "ResetHUD", "ResetHUD", "be" )
register_event( "Damage", "EventDamage", "b", "2!0", "3=0", "4!0" )
register_message( get_user_msgid( "SayText" ), "ShowPrefix" )
register_logevent("vip_menu",2,"1=Round_Start")
register_clcmd( "vipmenu", "vip_menu" )
gMsg1 = CreateHudSyncObj()
register_dictionary("vsystem.txt")
}
public client_putinserver( id )
{
if ( get_user_flags( id ) & PLUGIN_LEVEL )
{
UserFunc[ id ][ 1 ] = true
UserFunc[ id ][ 2 ] = true
UserFunc[ id ][ 3 ] = true
UserFunc[ id ][ 4 ] = true
}
}
public ResetHUD( id )
{
set_task( 0.5, "VIP", id + 6910 )
}
public ShowPrefix( msgId, msgDest, msgEnt )
{
new id = get_msg_arg_int( 1 )
if ( UserFunc[ id ][ 4 ] )
{
new szTmp[ 256 ], szTmp2[ 256 ]
get_msg_arg_string( 2, szTmp, charsmax( szTmp ) )
if( !equal( szTmp, "#Cstrike_Chat_All" ) )
{
add( szTmp2,charsmax( szTmp2 ), "^x04[VIP]" )
add( szTmp2,charsmax( szTmp2 ), " " )
add( szTmp2,charsmax( szTmp2 ), szTmp )
} else {
add( szTmp2, charsmax( szTmp2 ), "^x04[VIP]" )
add( szTmp2, charsmax( szTmp2 ), "^x03 %s1^x01 : ^x04%s2" )
}
set_msg_arg_string( 2, szTmp2 )
} else {
new szTmp[ 256 ], szTmp2[ 256 ]
get_msg_arg_string( 2, szTmp, charsmax( szTmp ) )
if( !equal( szTmp, "#Cstrike_Chat_All" ) )
{
add( szTmp2,charsmax( szTmp2 ), " " )
add( szTmp2,charsmax( szTmp2 ), szTmp )
} else {
add( szTmp2, charsmax( szTmp2 ), "^x03 %s1^x01 : ^x01%s2" )
}
set_msg_arg_string( 2, szTmp2 )
}
return PLUGIN_CONTINUE
}
public VIP( TaskID )
{
new id = TaskID - 6910
if ( UserFunc[ id ][ 3 ] )
{
message_begin( MSG_ALL, get_user_msgid( "ScoreAttrib" ) )
write_byte( id )
write_byte( 4 )
message_end( )
}
return PLUGIN_HANDLED
}
public EventDamage( id )
{
if ( !is_user_alive( id ) )
return PLUGIN_HANDLED
static attacker; attacker = get_user_attacker( id )
static damage; damage = read_data( 2 )
if ( UserFunc[ attacker ][ 2 ] )
{
if ( get_user_health(attacker) <= 100 )
{
set_user_health( attacker, get_user_health( attacker ) + damage )
}
}
set_hudmessage( random_num( 1, 255 ), random_num( 1, 255 ), random_num( 1, 255 ), 0.45, 0.50, 2, 0.1, 4.0, 0.1, 0.1, -1 )
if ( UserFunc[ attacker ][ 1 ] )
{
ShowSyncHudMsg( attacker, gMsg1, "%i^n", damage )
}
return PLUGIN_CONTINUE
}
public vip_menu( id )
{
if ( !( get_user_flags( id ) & PLUGIN_LEVEL ) )
return PLUGIN_HANDLED
static s_MenuItem[ 255 ], s_Item[ 255 ], s_OItem[ 255 ], g_Temp[ 10 ], s_sName[ 255 ]
formatex( s_MenuItem, charsmax( s_MenuItem ), "%s%L", mPrefix, LANG_PLAYER, "MENU_HINT1" )
new menu = menu_create( s_MenuItem, "vm_hand" )
for ( new i = 1; i < 3; i++ )
{
formatex( s_OItem[ i ], charsmax( s_OItem ), "MENU_ITEM%d", i )
formatex( s_Item[ i ], charsmax( s_Item ), "\y%L", LANG_PLAYER, s_OItem[ i ] )
num_to_str( i, g_Temp, charsmax( g_Temp ) )
menu_additem( menu, s_Item[ i ], g_Temp, 0 )
}
formatex( s_sName[ 1 ], charsmax( s_sName ), "%L", LANG_PLAYER, "NAME_BACK" )
formatex( s_sName[ 2 ], charsmax( s_sName ), "%L", LANG_PLAYER, "NAME_NEXT" )
formatex( s_sName[ 3 ], charsmax( s_sName ), "%L", LANG_PLAYER, "NAME_EXIT" )
menu_setprop( menu, MPROP_BACKNAME, s_sName[ 1 ] )
menu_setprop( menu, MPROP_NEXTNAME, s_sName[ 2 ] )
menu_setprop( menu, MPROP_EXITNAME, s_sName[ 3 ] )
menu_display( id, menu, 0 )
return PLUGIN_HANDLED
}
public vm_hand( id, menu, item )
{
if( item == MENU_EXIT )
{
menu_destroy( menu )
return PLUGIN_HANDLED
}
new data[ 6 ], iName[ 64 ], access, callback
menu_item_getinfo( menu, item, access, data, 5, iName, 63, callback )
new key = str_to_num( data )
switch( key )
{
case 1:{
munitions_menu( id )
}
case 2:{
options_menu( id )
}
}
return PLUGIN_HANDLED
}
public munitions_menu( id )
{
static s_MenuItem[ 255 ], s_Item[ 255 ], s_OItem[ 255 ], g_Temp[ 10 ], s_sName[ 255 ]
formatex( s_MenuItem, charsmax( s_MenuItem ), "%s%L", mPrefix, LANG_PLAYER, "MENU2_HINT1" )
new menu = menu_create( s_MenuItem, "mt_hand" )
for ( new i = 1; i < 5; i++ )
{
formatex( s_OItem[ i ], charsmax( s_OItem ), "MENU2_ITEM%d", i )
formatex( s_Item[ i ], charsmax( s_Item ), "\y%L", LANG_PLAYER, s_OItem[ i ] )
num_to_str( i, g_Temp, charsmax( g_Temp ) )
menu_additem( menu, s_Item[ i ], g_Temp, 0 )
}
formatex( s_sName[ 3 ], charsmax( s_sName ), "%L", LANG_PLAYER, "NAME_BACK" )
menu_setprop( menu, MPROP_EXITNAME, s_sName[ 3 ] )
menu_display( id, menu, 0 )
return PLUGIN_HANDLED
}
public mt_hand( id, menu, item )
{
if( item == MENU_EXIT )
{
menu_destroy( menu )
vip_menu( id )
return PLUGIN_HANDLED
}
new data[ 6 ], iName[ 64 ], access, callback
menu_item_getinfo( menu, item, access, data, 5, iName, 63, callback )
new key = str_to_num( data )
give_weapon( id, key )
return PLUGIN_HANDLED
}
public options_menu( id )
{
static s_MenuItem[ 255 ], s_Item[ 255 ], s_OItem[ 255 ], g_Temp[ 10 ], s_sName[ 255 ], s_On[ 128 ], s_Off[ 128 ]
formatex( s_MenuItem, charsmax( s_MenuItem ), "%s%L", mPrefix, LANG_PLAYER, "MENU3_HINT1" )
new menu = menu_create( s_MenuItem, "opt_hand" )
formatex( s_On, charsmax( s_On ), "%L", LANG_PLAYER, "NAME_ON" )
formatex( s_Off, charsmax( s_Off ), "%L", LANG_PLAYER, "NAME_OFF" )
for ( new i = 1; i < 5; i++ )
{
formatex( s_OItem[ i ], charsmax( s_OItem ), "MENU3_ITEM%d", i )
formatex( s_Item[ i ], charsmax( s_Item ), "\y%L \d[%s]", LANG_PLAYER, s_OItem[ i ], UserFunc[ id ][ i ] ? s_On : s_Off )
num_to_str( i, g_Temp, charsmax( g_Temp ) )
menu_additem( menu, s_Item[ i ], g_Temp, 0 )
}
formatex( s_sName[ 3 ], charsmax( s_sName ), "%L", LANG_PLAYER, "NAME_BACK" )
menu_setprop( menu, MPROP_EXITNAME, s_sName[ 3 ] )
menu_display( id, menu, 0 )
return PLUGIN_HANDLED
}
public opt_hand( id, menu, item )
{
if( item == MENU_EXIT )
{
menu_destroy( menu )
vip_menu( id )
return PLUGIN_HANDLED
}
new data[ 6 ], iName[ 64 ], access, callback
menu_item_getinfo( menu, item, access, data, 5, iName, 63, callback )
new key = str_to_num( data )
if ( UserFunc[ id ][ key ] )
{
UserFunc[ id ][ key ] = false
} else {
UserFunc[ id ][ key ] = true
}
options_menu( id )
return PLUGIN_HANDLED
}
public give_weapon( id, num )
{
switch( num )
{
case 1:{
drop_primary( id )
drop_secondary( id )
give_item( id, "weapon_ak47" )
give_item( id, "weapon_deagle" )
give_item( id, "weapon_hegrenade" )
give_item( id, "weapon_flashbang" )
give_item( id, "weapon_flashbang" )
give_item( id, "weapon_smokegrenade" )
give_item( id, "item_assaultsuit" )
give_item( id, "item_thighpack" )
cs_set_user_bpammo( id, CSW_AK47, 90 )
cs_set_user_bpammo( id, CSW_DEAGLE, 35 )
}
case 2:{
drop_primary( id )
drop_secondary( id )
give_item( id, "weapon_m4a1" )
give_item( id, "weapon_deagle" )
give_item( id, "weapon_hegrenade" )
give_item( id, "weapon_flashbang" )
give_item( id, "weapon_flashbang" )
give_item( id, "weapon_smokegrenade" )
give_item( id, "item_assaultsuit" )
give_item( id, "item_thighpack" )
cs_set_user_bpammo( id, CSW_M4A1, 90 )
cs_set_user_bpammo( id, CSW_DEAGLE, 35 )
}
case 3:{
drop_primary( id )
drop_secondary( id )
give_item( id, "weapon_awp" )
give_item( id, "weapon_deagle" )
give_item( id, "weapon_hegrenade" )
give_item( id, "weapon_flashbang" )
give_item( id, "weapon_flashbang" )
give_item( id, "weapon_smokegrenade" )
give_item( id, "item_assaultsuit" )
give_item( id, "item_thighpack" )
cs_set_user_bpammo( id, CSW_AWP, 90 )
cs_set_user_bpammo( id, CSW_DEAGLE, 35 )
}
case 4:{
drop_primary( id )
drop_secondary( id )
give_item( id, "weapon_famas" )
give_item( id, "weapon_deagle" )
give_item( id, "weapon_hegrenade" )
give_item( id, "weapon_flashbang" )
give_item( id, "weapon_flashbang" )
give_item( id, "weapon_smokegrenade" )
give_item( id, "item_assaultsuit" )
give_item( id, "item_thighpack" )
cs_set_user_bpammo( id, CSW_FAMAS, 90 )
cs_set_user_bpammo( id, CSW_DEAGLE, 35 )
}
}
}
stock drop_secondary( id )
{
new weapons[ 32 ], num
get_user_weapons( id, weapons, num )
for( new i = 0; i < num; i++ )
{
if ( SECONDARY_WEAPONS_BITSUM & ( 1<<weapons[ i ] ) )
{
static wname[ 32 ]
get_weaponname( weapons[ i ], wname, sizeof wname - 1 )
engclient_cmd( id, "drop", wname )
}
}
}
stock drop_primary( id )
{
new weapons[ 32 ], num
get_user_weapons( id, weapons, num )
for( new i = 0; i < num; i++ )
{
if ( PRIMARY_WEAPONS_BITSUM & ( 1<<weapons[ i ] ) )
{
static wname[ 32 ]
get_weaponname( weapons[ i ], wname, sizeof wname - 1 )
engclient_cmd( id, "drop", wname )
}
}
}
stock ShowMsg( const id, const input[], any:... )
{
new count = 1, players[ 32 ]
static msg[ 188 ]
vformat( msg, 187, input, 3 )
replace_all( msg, 187, "!g", "^4" )
replace_all( msg, 187, "!y", "^1" )
replace_all( msg, 187, "!t", "^3" )
if ( id ) players[ 0 ] = id; else get_players( players, count, "ch" )
{
for ( new i = 0; i < count; i++ )
{
if ( is_user_connected( players[ i ] ) )
{
message_begin( MSG_ONE_UNRELIABLE, get_user_msgid( "SayText" ), _, players[ i ] )
write_byte( players[ i ] )
write_string( msg )
message_end( )
}
}
}
}