#include <amxmodx>
#include <fakemeta>
#include <cstrike>
#include <zombieplague>

#define COST 5	                                                // Цена в аммо

new const g_item_name[] = { "Armor" }                           //имя в экстра меню
new const g_sound_buyarmor[] = { "items/tr_kevlar.wav" }	// Звук покупки жизни
new const g_sound_maxarmor[] = "sound/fvox/armor_gone.wav"	// Звук при максимуме жизни
new SayText
new g_itemid_human_armor
const g_armor_amount = 100	// Кол-во покупаемой брони
const g_armor_limit = 1000	// Максимальное кол-во покупаемой брони

public plugin_init()
{
	register_plugin("Armor buy", "1.1", "BlackCat | Shidla")
	g_itemid_human_armor = zp_register_extra_item(g_item_name, COST, ZP_TEAM_HUMAN) //Регаем броню в экстра меню

	
	register_clcmd("say /armor", "human_armor")                                     //команда в чате
	register_clcmd("say_team /armor", "human_armor")                                //команда в чате команды

	SayText = get_user_msgid("SayText")
}

public plugin_precache()	       // Кэшируем звуки
{
	precache_sound(g_sound_buyarmor)                                                 //кэш звука покупки брони
	precache_sound(g_sound_maxarmor)                                                 //кэш звука максимума брони
}

public human_armor(id)
{
        if (!zp_has_round_started())                                                     //проверка до первого зомби
        {
		ChatColor(id, "!g[ZP]!y !tРаунд ещё не начался!!y")
		return PLUGIN_CONTINUE
        }

        if (cs_get_user_team(id) == CS_TEAM_SPECTATOR)                                   //проверка на наблюдателя
        {
		ChatColor(id, "!g[ZP]!y Покупка брони доступна !tтолько для живых!y!")
		return PLUGIN_CONTINUE
        }

	if ( !is_user_alive(id) )                                                        //проверка на живучесть
	{
		ChatColor(id, "!g[ZP]!y Покупка брони доступна !tтолько для живых!y!")
		return PLUGIN_CONTINUE
	}

	if(zp_get_user_zombie(id))	                                                 // Проверка на зомби
	{
		ChatColor(id, "!g[ZP]!y Покупка брони доступна !tтолько для людей!y!")
		return PLUGIN_CONTINUE
	}

	if(zp_get_user_ammo_packs(id) < COST)	                                         // Проверка на платёжеспособность
	{
		ChatColor(id, "!g[ZP]!y !tНе хватает!y аммо!")
		return PLUGIN_CONTINUE
	}

	if(get_user_armor(id) == g_armor_limit)	                                 // Если дошёл до лимита жизней
	{
		client_cmd(id, "spk %s", g_sound_maxarmor)	                         // Воспроизводим звук ТОЛЬКО пользователю
		ChatColor(id, "!g[ZP]!y !tМаксимум!y !gброни!y!")

		return PLUGIN_CONTINUE
	}

	set_pev(id, pev_armorvalue, float(min(pev(id, pev_armorvalue)+g_armor_amount, g_armor_limit)))	// Устанавливаем жизни
	engfunc(EngFunc_EmitSound, id, CHAN_BODY, g_sound_buyarmor, 1.0, ATTN_NORM, 0, PITCH_NORM)	// Воспроизводим звук покупки жизней
	ChatColor(id, "!g[ZP]!y Ты приобрёл !gБроню!y!")                                                // Сообщение в чат при покупке жизни
	zp_set_user_ammo_packs(id, zp_get_user_ammo_packs(id) - COST)	                                // Пусть платит по счетам =3

	return PLUGIN_CONTINUE
}

public zp_extra_item_selected(id, itemid)
{
	if(get_user_armor(id) == g_armor_limit)	                                         // Если дошёл до лимита жизней
	{
		client_cmd(id, "spk %s", g_sound_maxarmor)	                         // Воспроизводим звук ТОЛЬКО пользователю
		ChatColor(id, "!g[ZP]!y !tМаксимум!y !gброни!y!")                        // Пишем в чат при максимуме брони

		return PLUGIN_CONTINUE
	}

	if (itemid == g_itemid_human_armor)
	{
	set_pev(id, pev_armorvalue, float(min(pev(id, pev_armorvalue)+g_armor_amount, g_armor_limit)))	// Устанавливаем жизни
	engfunc(EngFunc_EmitSound, id, CHAN_BODY, g_sound_buyarmor, 1.0, ATTN_NORM, 0, PITCH_NORM)      // Воспроизводим звук покупки жизней
	ChatColor(id, "!g[ZP]!y Ты приобрёл !gБроню!y!")                                                // Сообщение в чат при покупке жизни
	zp_set_user_ammo_packs(id, zp_get_user_ammo_packs(id) - COST)	                                // Пусть платит по счетам =3
	}

}

// Цветной чат!
stock ChatColor(const id, const input[], any:...)
{
	new count = 1, players[32]
	static msg[191]
	vformat(msg, 190, input, 3)
	
	replace_all(msg, 190, "!g", "^4")                                                   // Зелёный цвет
	replace_all(msg, 190, "!y", "^1")                                                   // Жёлтый цвет
	replace_all(msg, 190, "!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, SayText, _, players[i])
				write_byte(players[i]);
				write_string(msg);
				message_end();
			}
		}
	}
}
