#include <amxmodx>
#include <amxmisc>
#include <engine>
#include <colorchat>
#include <csstats>
#include <fakemeta> 
#include <cstrike>
#include <fun>

#define PLUGIN "Kés rendszer"
#define VERSION "2.3.7"
#define AUTHOR "~BoNe"

//Kellék Részleg*

#pragma tabsize 0

new message[192]
new nev[32]
new Temp[192]
static color[10]
new szint[33]
new oles[33]
new knife_model[33]

#define ASD 15
#define TULAJ ADMIN_IMMUNITY
#define FOADMIN ADMIN_LEVEL_F
#define ADMIN ADMIN_LEVEL_G
#define VIP ADMIN_LEVEL_H

//============Chat Prefix Részleg*================//
new const chatPrefix[] = "[-*[Információ]*-]";
new const menuPrefix[] = "[Kés Rendszer]";


//FegyverNév Részleg*
new const FegyverNev[][] =
{
	"Aqua Kés",
         "Bob Kés ",
         "Heineken Kés",
         "Emir Kés", 
         "Smart Kés"
};

//Fegyverek Skin Részleg*
new const m_Knife[][] =
{
	"models/paintball/v_knife1.mdl",
	"models/paintball/v_knife2.mdl",
	"models/paintball/v_knife3.mdl",
	"models/paintball/v_knife4.mdl",
	"models/paintball/v_knife5.mdl"
	
};
public plugin_init() {
	register_plugin(PLUGIN, VERSION, AUTHOR)
	register_impulse(201,"fomenu"); //Főmenü Előhivás
	register_clcmd("say /rang", "hud") //Rang Előhivás
	set_task(90.0, "hirdess", 2000, _, _, "b"); //Hirdetés
	register_event("CurWeapon", "fegyverid", "be", "1=1"); //Fegyver Váltás	
	register_event("DeathMsg", "Halal", "a"); //Halál
	
}
 new const szamok[ASD] = {
    200,
    400,
    600,
    800,
    1000,
    1200,
    1400,
    1600,
    1800,
    2000,
    2200,
    2400,
    2600,
    2800,
    3000
}
 new const rangok[ASD+1][] = {
    "|Nokedli| |Szint:1|",
    "|Bena| |Szint:2|",
    "|Tag| |Szint:3|",
    "|Beavatott| |Szint:4|",
    "|Tud valamit| |Szint:5|",
    "|Rossz| |Szint:6|",
    "|Bolond| |Szint:7|",
    "|Jomunkasember| |Szint:8|",
    "|Nagyur| |Szint:9|",
    "|Felisten| |Szint:10|",
    "|Bolond| |Szint:11|",
    "|Veteran| |Szint:12|",
    "|Szimpatikus| |Szint:13|",
    "|Szep| |Szint:14]",
    "|ISTEN| |Szint:15|",
    "|Legyozhetetlen| |Szint:16 MAX|"
    }
public plugin_precache()
{

	// Skinek Lekérése Részleg *
	for(new i;i < sizeof(m_Knife); i++)
	{
	precache_model(m_Knife[i]);
	}
}
public fegyverid(id)
{
	new weapon = get_user_weapon(id)
	for(new i;i < sizeof(m_Knife); i++)

	if(knife_model[id] == 1 && weapon == CSW_KNIFE) 
	{
		set_pev(id, pev_viewmodel2, "models/paintball/v_knife1.mdl")
         } 
	if(knife_model[id] == 2 && weapon == CSW_KNIFE) 
	{
		set_pev(id, pev_viewmodel2, "models/paintball/v_knife2.mdl")
         }
	if(knife_model[id] == 3 && weapon == CSW_KNIFE) 
	{
		set_pev(id, pev_viewmodel2, "models/paintball/v_knife3.mdl")
         }
	if(knife_model[id] == 4 && weapon == CSW_KNIFE) 
	{
		set_pev(id, pev_viewmodel2, "models/paintball/v_knife4.mdl")
         }
	if(knife_model[id] == 5 && weapon == CSW_KNIFE) 
	{
		set_pev(id, pev_viewmodel2, "models/paintball/v_knife5.mdl")
         } 
}
public hirdess(id)
{
         ColorChat(0, GREEN, "^3%s^1Szerveren ^3~BoNe ^2Által Készitet ^3Mód Futt!", chatPrefix);
}
public Halal()
{
        new killer = read_data(1);
        new victim = read_data(2);
 
        if(killer != victim)
        {
        oles[killer] += 5;
        }
        while(oles[killer] >= szamok[szint[killer]])
        {
        szint[killer]++;
        }
}
public fomenu(id)
{
	new String[121];
	format(String, charsmax(String), "%s^n\dÖléseid: [%d]", menuPrefix[id], oles[id]);
	new menu = menu_create(String, "fomenu_h");
	
	menu_additem(menu, "\y[\rKés Skin\y]", "1", 0);
	menu_additem(menu, "\y[\rBolt\y]", "2", 0);
	menu_additem(menu, "\y[\rSzerver Információ\y]", "3", 0);
	menu_additem(menu, "\y[\rTop 15\y]", "4", 0);
	
	menu_display(id, menu, 0)
}
public fomenu_h(id, menu, item)
{
	if(item == MENU_EXIT)
         {
         menu_destroy(menu);
         return;
         }
 
        new data[9], szName[64], Nev[32];
        get_user_name(id, Nev, 31);
        new access, callback;
        menu_item_getinfo(menu, item, access, data,charsmax(data), szName,charsmax(szName), callback);
        new key = str_to_num(data);
 
        switch(key)
        {
		case 1: knifeskin(id);
		case 4: client_cmd(id,"say /top15");
	}
}
public knifeskin(id)
{
	 new String[96]
          format(String, charsmax(String), "\w%s \dÖlések: [%d]", menuPrefix, oles[id])
          new menu = menu_create(String, "knifeskin_h" )
	
	 formatex(String, charsmax(String), oles[id] >= 10 ? ("\y Aqua Kés \r[Megszerezve]"):("\d Aqua Kés \r[10 Ölés]"), oles[id], 10);
          menu_additem(menu, String, "1");
	 formatex(String, charsmax(String), oles[id] >= 35 ? ("\y Bob Kés \r[Megszerezve]"):("\d Bob Kés \r[35 Ölés]"), oles[id], 35);
          menu_additem(menu, String, "2");
	 formatex(String, charsmax(String), oles[id] >= 65 ? ("\y Heineken Kés \r[Megszerezve]"):("\d Heineken Kés \r[65 Ölés]"), oles[id], 65);
          menu_additem(menu, String, "3");
	 formatex(String, charsmax(String), oles[id] >= 100 ? ("\y Emir Kés \r[Megszerezve]"):("\d Emir Kés \r[100 Ölés]"), oles[id], 100);
          menu_additem(menu, String, "4");
	 formatex(String, charsmax(String), oles[id] >= 150 ? ("\y Smart Kés \r[Megszerezve]"):("\d Smart Kés \r[150 Ölés]"), oles[id], 150);
          menu_additem(menu, String, "5");
	

	 menu_display(id, menu, 0);
}
public knifeskin_h(id, menu, item)
{
	if(item == MENU_EXIT)
{
         menu_destroy(menu);
         return;
         }
 
        new data[9], szName[64], Nev[32];
        get_user_name(id, Nev, 31);
        new access, callback;
        menu_item_getinfo(menu, item, access, data,charsmax(data), szName,charsmax(szName), callback);
        new key = str_to_num(data);
 
    	switch(key)
	{
		case 1:{
		if(oles[id] >= 10)
		{
			knife_model[id] = 1
			ColorChat(0, GREEN, "^3%s ^2Sikeresen ki választotad az Aqua ^4Kés-t", chatPrefix);
                   }
	         else 			
		 {
		 	ColorChat(0, GREEN, "^3%s Nem tudod ki választani az Aqua ^4Kés-t mert nincs meg %d Ölésed", chatPrefix, 10-oles[id]);
	                }
		}
	        case 2:{
	        if(oles[id] >= 35)
	         {
		knife_model[id] = 2	
		ColorChat(0, GREEN, "^3%s ^2Sikeresen ki választotad a Bob ^4Kés-t", chatPrefix);
	         }
		else
		{
	          ColorChat(0, GREEN, "^3%s Nem tudod ki választani a Bob ^4Kés-t mert nincs meg %d Ölésed", chatPrefix, 35-oles[id]);
		       }
		    }
		 case 3:{
		 	if(oles[id] >= 65)
			{
				knife_model[id] = 3
				ColorChat(0, GREEN, "^3%s ^2Sikeresen ki választotad az Heineken ^4Kés-t", chatPrefix);
			}
			else
			{
				ColorChat(0, GREEN, "^3%s Nem tudod ki választani az Heineken ^4Kés-t mert nincs meg %d Ölésed", chatPrefix, 65-oles[id]);
		            }
			}
			case 4:{
				if(oles[id] >= 100)
			{
				knife_model[id] = 4
				ColorChat(0, GREEN, "^3%s ^2Sikeresen ki választotad az Emir ^4Kés-t", chatPrefix);
			}
			else
			{
				ColorChat(0, GREEN, "^3%s Nem tudod ki választani az Emir ^4Kés-t mert nincs meg %d Ölésed", chatPrefix, 100-oles[id]);
		            }
			}
			case 5:{
				if(oles[id] >= 150)
			{
				knife_model[id] = 5
				ColorChat(0, GREEN, "^3%s ^2Sikeresen ki választotad a Smart ^4Kés-t", chatPrefix);
			}
			else
			{
				ColorChat(0, GREEN, "^3%s Nem tudod ki választani a Smart ^4Kés-t mert nincs meg %d Ölésed", chatPrefix, 150-oles[id]);							 			    		 
                                     }                
                             }
	       }
}
public hud(id)
    {
    if(szint[id] != ASD+1)
    {
 
 
    ColorChat(id, RED, "Szint:^4%s ^1| ^3Olések:^4%d ^1| ^3Kell meg:^4%d",rangok[szint[id]], oles[id],szamok[szint[id]]-oles[id] )
    }
    else {
 
    ColorChat(id, GREEN, "Elerted a ^3Maximalis ^4Szintet.Gratulalunk.")
    }
 
    }
    public sayhook(id)
    {
 
    read_args (message, 191)
    remove_quotes (message)
    if (message[0] == '@' || message[0] == '/' || message[0] == '!' || equal (message, ""))
    {
    return PLUGIN_CONTINUE
    }
    get_user_name(id, nev, 31)
    if(is_user_alive(id)) {
    get_user_team(id, color, 9)
 
    if(get_user_flags(id) & TULAJ)
    formatex(Temp, 191, "^x04[TULAJ]%s ^x03%s^x04: %s", rangok[szint[id]], nev, message)
    else if(get_user_flags(id) & FOADMIN)
    formatex(Temp, 191, "^x04[Szerver Készitő]%s ^x03%s^x04: %s", rangok[szint[id]], nev, message)
    else if(get_user_flags(id) & ADMIN)
    formatex(Temp, 191, "^x04[ADMIN]%s ^x03%s^x04: %s", rangok[szint[id]], nev, message)
    else if(get_user_flags(id) & VIP)
    formatex(Temp, 191, "^x04[VIP]%s ^x03%s^x04: %s", rangok[szint[id]], nev, message)
 
 
 
    else formatex(Temp, 191, "^x04%s ^x03%s^x01: %s", rangok[szint[id]], nev, message)
 
    }
    else {
    get_user_team(id, color, 9)
    if(get_user_flags(id) & TULAJ)
    formatex(Temp, 191, "^x04[TULAJ]%s ^x03%s^x04: %s", rangok[szint[id]], nev, message)
    else if(get_user_flags(id) & FOADMIN)
    formatex(Temp, 191, "^x04[Szerver Készitő]%s ^x03%s^x04: %s", rangok[szint[id]], nev, message)
    else if(get_user_flags(id) & ADMIN)
    formatex(Temp, 191, "^x04[ADMIN]%s ^x03%s^x04: %s", rangok[szint[id]], nev, message)
    else if(get_user_flags(id) & VIP)
    formatex(Temp, 191, "^x04[VIP]%s ^x03%s^x04: %s", rangok[szint[id]], nev, message)
 
    else formatex(Temp, 191, "^x04%s ^x03%s^x01: %s", rangok[szint[id]], nev, message)
    }
    sendmessage(color)
    return PLUGIN_HANDLED
    }
    public tshook(id)
    {
    read_args (message, 191)
    remove_quotes (message)
    if (message[0] == '@' || message[0] == '/' || message[0] == '!' || equal (message, ""))
    {
    return PLUGIN_CONTINUE
    }
    get_user_name(id, nev, 31)
    new playerTeam = get_user_team(id)
    new playerTeamName[19]
    switch (playerTeam)
    {
    case 1: {
    copy (playerTeamName, 11, "*T*")
 
    }
    case 2: {
    copy (playerTeamName, 18, "*CT*")
 
    }
    default:
    copy (playerTeamName, 9, "*Néző*")
    }
    if(is_user_alive(id))
    {
    get_user_team(id, color, 9)
    if(get_user_flags(id) & TULAJ)
    formatex(Temp, 191, "^x04[TULAJ]%s ^x03%s^x04: %s", rangok[szint[id]], nev, message)
    else if(get_user_flags(id) & FOADMIN)
    formatex(Temp, 191, "^x04[Szerver Készitő]%s ^x03%s^x04: %s", rangok[szint[id]], nev, message)
    else if(get_user_flags(id) & ADMIN)
    formatex(Temp, 191, "^x04[ADMIN]%s ^x03%s^x04: %s", rangok[szint[id]], nev, message)
    else if(get_user_flags(id) & VIP)
    formatex(Temp, 191, "^x04[VIP]%s ^x03%s^x04: %s", rangok[szint[id]], nev, message)
 
 
 
    else formatex(Temp, 191, "^x04%s ^x03%s^x01: %s", rangok[szint[id]], nev, message)
 
    }
    else {
    get_user_team(id, color, 9)
    if(get_user_flags(id) & TULAJ)
    formatex(Temp, 191, "^x04[TULAJ]%s ^x03%s^x04: %s", rangok[szint[id]], nev, message)
    else if(get_user_flags(id) & FOADMIN)
    formatex(Temp, 191, "^x04[Szerver Készitő]%s ^x03%s^x04: %s", rangok[szint[id]], nev, message)
    else if(get_user_flags(id) & ADMIN)
    formatex(Temp, 191, "^x04[ADMIN]%s ^x03%s^x04: %s", rangok[szint[id]], nev, message)
    else if(get_user_flags(id) & VIP)
    formatex(Temp, 191, "^x04[VIP]%s ^x03%s^x04: %s", rangok[szint[id]], nev, message)
 
    else formatex(Temp, 191, "^x04%s ^x03%s^x01: %s", rangok[szint[id]], nev, message)
    }
    sendtmessage(color, playerTeam)
    return PLUGIN_HANDLED
    }
    public sendmessage(color[])
    {
    new teamName[10]
    for(new player = 1; player < get_maxplayers(); player++)
    {
    get_user_team (player, teamName, 9)
    teamf (player, color)
    elkuldes(player, Temp)
    teamf(player, teamName)
    }
    }
    public sendtmessage(color[], playerTeam)
    {
    new teamName[10]
    for (new player = 1; player < get_maxplayers(); player++)
    {
    if(get_user_team(player) == playerTeam)
    {
    get_user_team (player, teamName, 9)
    elkuldes(player, Temp)
    teamf (player, teamName)
    teamf (player, color)
    }
    }
    }
    public teamf(player, team[])
    {
    message_begin(MSG_ONE, get_user_msgid("TeamInfo"), _, player)
    write_byte(player)
    write_string(team)
    message_end()
    }
    public elkuldes(player, Temp[])
    {
 
    message_begin( MSG_ONE, get_user_msgid( "SayText" ), _, player)
    write_byte( player )
    write_string( Temp )
    message_end()
 
}
/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1038\\ f0\\ fs16 \n\\ par }
*/
