#include <amxmodx>
#include <amxmisc>
#include <cstrike>
#include <fun>
#include <hamsandwich>
#include <dhudmessage>
#define PLUGIN_NAME "Vip system"
#define PLUGIN_VERSION "0.1"
#define PLUGIN_AUTHOR "x3"
#define VIPFLAG ADMIN_RESERVATION
#define VIP_ACCESS ADMIN_LEVEL_H
new g_blockresp[33], g_msgsaytext, g_damager[33], g_round
const 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)
const SECONDARY_WEAPONS_BITSUM = (1<<CSW_USP)|(1<<CSW_DEAGLE)|(1<<CSW_GLOCK18)|(1<<CSW_P228)|(1<<CSW_ELITE)|(1<<CSW_FIVESEVEN)
public plugin_init()
{
register_plugin(PLUGIN_NAME, PLUGIN_VERSION, PLUGIN_AUTHOR)
register_event("HLTV", "ev_roundstart", "a", "1=0", "2=0")
register_clcmd("say /vips", "show_vips")
register_clcmd("say_team /vips", "show_vips")
register_plugin( "Test", "", "" );
register_clcmd( "say vip", "task_dhudmsg" );
register_clcmd("say_team vip", "task_dhudmsg");
register_clcmd("vipmenu", "show_vmenu")
RegisterHam(Ham_TakeDamage, "player", "fw_takedamage")
g_msgsaytext = get_user_msgid("SayText")
g_round = -1
}
public client_authorized(id)
{
client_cmd(id, "bind ^"F4^" ^"vipmenu^"")
}
public show_vips(id)
{
if(!is_user_connected(id))
return;
new i, nick[32], string[160], vips
for(i=1;i<=32;i++)
{
if(!is_user_connected(i))
continue;
if(!(get_user_flags(i) & VIPFLAG))
continue;
get_user_name(i, nick, 31)
if(!vips)
formatex(string, 159, "%s", nick)
else
formatex(string, 159, "%s , %s", string, nick)
vips++
}
if(!vips)
print_col_chat(id, "^x04VIP Онлайн:^x01 Сейчас нету випов.")
else
print_col_chat(id, "^x04 VIP Онлайн: ^x03%s", string)
return;
}
public Vip_Grenade_Player(id)
{
if( is_user_alive ( id ) && get_user_flags ( id ) & VIP_ACCESS )
{
give_item(id, "weapon_hegrenade");
give_item(id, "weapon_flashbang");
give_item(id, "weapon_smokegrenade");
cs_set_user_bpammo(id, CSW_FLASHBANG, 2);
cs_set_user_armor(id, 100, CS_ARMOR_VESTHELM);
}
}
public task_dhudmsg( client )
{
set_dhudmessage(255, 255, 255, 0.01, 0.18, 0, 6.0, 7.0, 0.06, 2.0, true);
show_dhudmessage(client, "Skype Гл Админа: ")
set_dhudmessage(0, 0, 255, 0.01, 0.21, 0, 6.0, 7.0, 0.06, 2.0, true);
show_dhudmessage(client, "Вип стоит 25 грн/100 руб ")
set_dhudmessage(255, 0, 0, 0.01, 0.24, 0, 6.0, 7.0, 0.06, 2.0, true);
show_dhudmessage(client, "Мы Вконтакте:")
}
public show_vmenu(id)
{
if(!is_user_connected(id))
return;
if(!(get_user_flags(id) & VIPFLAG))
{
print_col_chat(id, "^x04[VIP]^x01 Недостаточно прав! Что бы купить напишите в чате vip")
return;
}
new menu
menu = menu_create("\rVIP меню\y[\wXXX\y]","vipmenu")
menu_additem(menu, "Оружие")
if(g_damager[id])
menu_additem(menu, "Показывать Урон \y[Вкл]")
else
menu_additem(menu, "Показывать Урон \r[Выкл]")
menu_display(id, menu)
}
public show_weapmenu(id)
{
if(!is_user_connected(id))
return;
if(!is_user_alive(id))
{
print_col_chat(id, "^x04[VIP]^x01 Ты не можешь это взять, ты мертв!")
return;
}
if(!(get_user_flags(id) & VIPFLAG))
{
print_col_chat(id, "^x04[VIP]^x01 Недостаточно прав! Что бы купить напишите в чате vip")
return;
}
new menu
menu = menu_create("\rОружие \y[\wXXXX\y]","weapmenu")
if(g_round >= 2)
menu_additem(menu, "Взять [Дигл] \y[Доступно]")
else
menu_additem(menu, "Взять [Дигл] \r[Не доступно]")
if(g_round >= 4)
{
menu_additem(menu, "Взять [AK-47] \y[Доступно]")
menu_additem(menu, "Взять [M4A1] \y[Доступно]")
}else{
menu_additem(menu, "Взять [AK-47] \r[Не доступно]")
menu_additem(menu, "Взять [M4A1] \r[Не доступно]")
}
if(g_round >= 6)
menu_additem(menu, "Взять [AWP] \y[Доступно]")
else
menu_additem(menu, "Взять [AWP] \r[Не доступно]")
menu_display(id, menu)
}
public vipmenu(id, menu, key)
{
if(!is_user_connected(id))
return;
key++
if(key == 1)
{
show_weapmenu(id)
}
if(key == 2)
{
damager(id)
show_vmenu(id)
}
if(key == 3)
{
respawn(id)
show_vmenu(id)
}
if(key == 4)
{
respawn(id)
show_vmenu(id)
}
}
public weapmenu(id, menu, key)
{
if(!is_user_connected(id))
return;
if(!is_user_alive(id))
return;
key++
if(key == 1)
{
if(g_round < 2)
{
print_col_chat(id, "^x04[VIP]^x03 Дигл^x01 доступен со 2 раунда.")
show_weapmenu(id)
return;
}
give_item(id, "weapon_deagle")
cs_set_user_bpammo( id , CSW_DEAGLE, 35 )
show_weapmenu(id)
}
if(key == 2)
{
if(g_round < 4)
{
print_col_chat(id, "^x04[VIP]^x03 AK47^x01 доступно с 4 раунда.")
show_weapmenu(id)
return;
}
give_item(id, "weapon_ak47")
cs_set_user_bpammo( id , CSW_AK47, 90 )
show_weapmenu(id)
}
if(key == 3)
{
if(g_round < 4)
{
print_col_chat(id, "^x04[VIP]^x03 M4A1^x01 доступно с 4 раунда.")
show_weapmenu(id)
return;
}
give_item(id, "weapon_m4a1")
cs_set_user_bpammo( id , CSW_M4A1, 90 )
show_weapmenu(id)
}
if(key == 4)
{
if(g_round < 6)
{
print_col_chat(id, "^x04[VIP]^x03 AWP^x01 доступно с 6 раунда.")
show_weapmenu(id)
return;
}
give_item(id, "weapon_awp")
cs_set_user_bpammo( id , CSW_AWP, 30 )
show_weapmenu(id)
}
}
public respawn(id)
{
if(!is_user_connected(id))
return;
if(is_user_alive(id))
{
print_col_chat(id, "^x04[VIP]^x01 Ты жив,поэтому не можешь восстановиться.")
return;
}
if(g_blockresp[id])
{
print_col_chat(id, "^x04[VIP]^x01 Ты можешь восстановиться через %d раунда.", g_blockresp[id])
return;
}
g_blockresp[id] = 5
ExecuteHamB(Ham_CS_RoundRespawn, id)
new name[32]
get_user_name(id, name, 31)
print_col_chat(id, "^x04[VIP]^x03 %s^x01 Восстановился ^x04:)", name)
}
public damager(id)
{
if(!is_user_connected(id))
return;
if(g_damager[id])
g_damager[id] = 0
else
g_damager[id] = 1
}
public client_connect(id)
{
g_blockresp[id] = 0
g_damager[id] = 0
}
public client_disconnect(id)
{
g_blockresp[id] = 0
g_damager[id] = 0
}
public ev_roundstart()
{
new i
for(i=0;i<=32;i++)
if(g_blockresp[i]) g_blockresp[i]--
g_round++
}
public fw_takedamage(victim, inflictor, attacker, Float:damage, damage_type)
{
if(!is_user_connected(attacker))
return;
if(!g_damager[attacker])
return;
client_print(attacker, print_center, "%d Damage", floatround(damage))
}
stock print_col_chat(target, const message[], any:...)
{
static buffer[512], i, argscount
argscount = numargs()
if (!target)
{
static player
for (player = 1; player <= 32; player++)
{
if (!is_user_connected(player))
continue;
static changed[5], changedcount
changedcount = 0
for (i = 2; i < argscount; i++)
{
if (getarg(i) == LANG_PLAYER)
{
setarg(i, 0, player)
changed[changedcount] = i
changedcount++
}
}
vformat(buffer, charsmax(buffer), message, 3)
message_begin(MSG_ONE_UNRELIABLE, g_msgsaytext, _, player)
write_byte(player)
write_string(buffer)
message_end()
for (i = 0; i < changedcount; i++)
setarg(changed[i], 0, LANG_PLAYER)
}
}
else
{
vformat(buffer, charsmax(buffer), message, 3)
message_begin(MSG_ONE, g_msgsaytext, _, target)
write_byte(target)
write_string(buffer)
message_end()
}
}
stock drop_primweaps(id, what)
{
static weapons[32], num, i, weaponid
get_user_weapons(id, weapons, num)
for (i = 0; i < num; i++)
{
weaponid = weapons[i]
if(((1<<weaponid) & PRIMARY_WEAPONS_BITSUM) && what == 1)
{
static wname[32]
get_weaponname(weaponid, wname, sizeof wname - 1)
}
if(((1<<weaponid) & SECONDARY_WEAPONS_BITSUM) && what == 2)
{
static wname[32]
get_weaponname(weaponid, wname, sizeof wname - 1)
}
}
}