/* Plugin generated by AMXX-Studio */

#include <amxmodx>
#include <engine>
#include <amxmisc>
#include <amxconst>
#include <core>
#include <cstrike>
#include <fakemeta>
#include <hamsandwich>
#include <fun>
#include <sqlx>
#include <regex>

#define PLUGIN "Black Night mod"
#define VERSION "2.0"
#define AUTHOR "Adek"
//CREDIT: KOVA, és minden olyan személy akinek a hlmodon lévő pluginjából inspirálódtam(utólag írtam, hozzá ezt a sort és nem tudom pontosan!)

#define Prefix "[.:DarK~DemonS:.]"

  static const SQLINFO[][] = { "", "", "", ""};
  static Query[10048];
  new Handle:g_SqlTuple;
   
enum _:cvar_properties
{
  g_costvip,
  g_costprefix,
};
new any:ServerCvars[cvar_properties];

/*new const AdminPermissions[][][] =
{
	{"[Játékos]", "z", "0",}, //0
	{"[Fejlesztő]", "abcvnmlpoikujzhtgrfedwsayc", "1"}, //1
	{"[Tulajdonos]", "abcvnmlpoikujzhtgrfedwsayc", "1"}, //2
	{"[SzuperAdmin]", "abmcfscdtiue", "1"}, //3
	{"[FőAdmin]", "bmcfscdtiue", "0"}, //4
	{"[Admin]", "bmcfscdtiue", "0"}  //5
};*/
enum _:weapon_Properties
{
  Id,
  name[32],
  model[128],
  type[16],
  neededkills,
  killsinweapon
}
static const Empty[weapon_Properties];
//Kés skin hozzáadása
//következő szám / Kés neve / model / CSW_KNIFE / ölésszám ami kell hozzá.
new const WeaponKnife[][weapon_Properties] =
{
  {0, "Default Knife", "models/v_knife.mdl", CSW_KNIFE, 0},
  {1, "Butterfly Fade", "models/bn/knife/ButterflyFade.mdl", CSW_KNIFE, 10},
  {2, "Butterfly BloodyWeb", "models/bn/knife/ButterflyKnifeBloodyWeb.mdl", CSW_KNIFE, 20},
  {3, "Butterfly CrimsonWeb", "models/bn/knife/ButterflyKnifeCrimsonWeb.mdl", CSW_KNIFE, 50},
  {4, "Falion Killing", "models/bn/knife/FalionKilling.mdl", CSW_KNIFE, 80},
  {5, "Karambit Superfurry", "models/bn/knife/KarambitSuperfurry.mdl", CSW_KNIFE, 100},
  {6, "Karambit TigerTooth", "models/bn/knife/KarambitTigerTooth.mdl", CSW_KNIFE, 120},
  {7, "Karambit Ultraibolya", "models/bn/knife/Karambitultraibolya.mdl", CSW_KNIFE, 150},
  {8, "Karambit BlueDreamer", "models/bn/knife/KarambitBlueDreamer.mdl", CSW_KNIFE, 180},
  {9, "M9 Bayonet Damascus Steel", "models/bn/knife/M9BayonetDamascusSteel.mdl", CSW_KNIFE, 250},
  {10, "M9 Bayonet DopplerSapphire", "models/bn/knife/M9BayonetDopplerSapphire.mdl", CSW_KNIFE, 300},
  {11, "M9 Bayonet Dragon Soul", "models/bn/knife/M9BayonetDragonSoul.mdl", CSW_KNIFE, 350},
  {12, "M9 Bayonet Gamma Doppler Phase", "models/bn/knife/M9BayonetGammaDopplerPhase.mdl", CSW_KNIFE, 400}
}
new const WeaponAK[][weapon_Properties] =
{
  {0, "Default AK47", "models/v_ak47.mdl", CSW_AK47, 0},
  {1, "Bloodsport AK47", "models/bn/ak/Bloodsport.mdl", CSW_AK47, 50},
  {2, "Curzon AK47", "models/bn/ak/Curzon.mdl", CSW_AK47, 100},
  {3, "Demon AK47", "models/bn/ak/Demon.mdl", CSW_AK47, 200},
  {4, "Illusion AK47", "models/bn/ak/Illusion.mdl", CSW_AK47, 400},
  {5, "Meres AK47", "models/bn/ak/Meres.mdl", CSW_AK47, 800},
  {6, "Neon Revolution AK47", "models/bn/ak/NeonRevolution.mdl", CSW_AK47, 1600},
  {7, "Overdrive AK47", "models/bn/ak/Overdrive.mdl", CSW_AK47, 3200},
  {8, "Ringleader AK47", "models/bn/ak/Ringleader.mdl", CSW_AK47, 6400},
  {9, "Rise Purple AK47", "models/bn/ak/RisePurple.mdl", CSW_AK47, 12800},
  {10, "Starladder AK47", "models/bn/ak/Starladder.mdl", CSW_AK47, 25600},
  {11, "Tigerstrike AK47", "models/bn/ak/Tigerstrike.mdl", CSW_AK47, 51200},
  {12, "Vulcan AK47", "models/bn/ak/Vulcan.mdl", CSW_AK47, 102400}
}

new const WeaponM4A1[][weapon_Properties] =
{
  {0, "Default M4A1", "models/v_m4a1.mdl", CSW_M4A1, 0},
  {1, "Flashback M4A1", "models/bn/m4a1/Flashback.mdl", CSW_M4A1, 50},
  {2, "Golden Coil M4A1", "models/bn/m4a1/GoldenCoil.mdl", CSW_M4A1, 100},
  {3, "Hellfire M4A1", "models/bn/m4a1/Hellfire.mdl", CSW_M4A1, 200},
  {4, "Kendall M4A1", "models/bn/m4a1/Kendall.mdl", CSW_M4A1, 400},
  {5, "Lightning Blue M4A1", "models/bn/m4a1/LightningBlue.mdl", CSW_M4A1, 800},
  {6, "Neon Electro M4A1", "models/bn/m4a1/NeonElectro.mdl", CSW_M4A1, 1600},
  {7, "OPTIMUS M4A1", "models/bn/m4a1/OPTIMUS.mdl", CSW_M4A1, 3200},
  {8, "Pathfinder M4A1", "models/bn/m4a1/Pathfinder.mdl", CSW_M4A1, 6400},
  {9, "Shark's Carnage M4A1", "models/bn/m4a1/Shark'sCarnage.mdl", CSW_M4A1, 12800},
  {9, "Starladder M4A1", "models/bn/m4a1/Starladder.mdl", CSW_M4A1, 25600},
  {9, "Ultimate M4A1", "models/bn/m4a1/Ultimate.mdl", CSW_M4A1, 51200},
  {9, "Vanquish M4A1", "models/bn/m4a1/Vanquish.mdl", CSW_M4A1, 102400}
}

new const WeaponAWP[][weapon_Properties] =
{
  {0, "Default AWP", "models/v_awp.mdl", CSW_AWP, 0},
  {1, "Asiimov Fnatic AWP", "models/bn/awp/AsiimovFnatic.mdl", CSW_AWP, 50},
  {2, "Bercut AWP", "models/bn/awp/Bercut.mdl", CSW_AWP, 100},
  {3, "BlackRock AWP", "models/bn/awp/BlackRock.mdl", CSW_AWP, 200},
  {4, "Blood Hunter AWP", "models/bn/awp/BloodHunter.mdl", CSW_AWP, 400},
  {5, "Fenrir AWP", "models/bn/awp/Fenrir.mdl", CSW_AWP, 800},
  {6, "Meres AWP", "models/bn/awp/Meres.mdl", CSW_AWP, 1600},
  {7, "Phobos v2 AWP", "models/bn/awp/Phobosv2.mdl", CSW_AWP, 3200},
  {8, "Ronin AWP", "models/bn/awp/Ronin.mdl", CSW_AWP, 6400},
  {9, "Villámcsavar AWP", "models/bn/awp/villamcsavar.mdl", CSW_AWP, 12800},
  {9, "Viper Strike AWP", "models/bn/awp/ViperStrike.mdl", CSW_AWP, 25600},
  {9, "Vulkan AWP", "models/bn/awp/vulkan.mdl", CSW_AWP, 51200},
  {9, "Wild Style AWP", "models/bn/awp/WildStyle.mdl", CSW_AWP, 102400}
}

new const WeaponDeagle[][weapon_Properties] =
{
  {0, "Default Deagle", "models/v_deagle.mdl", CSW_DEAGLE, 0},
  {1, "Black and Red Deagle", "models/bn/deagle/BlackandRed.mdl", CSW_DEAGLE, 50},
  {2, "Blaze Deagle", "models/bn/deagle/Blaze.mdl", CSW_DEAGLE, 100},
  {3, "Carp Koi Deagle", "models/bn/deagle/CarpKoi.mdl", CSW_DEAGLE, 200},
  {4, "Dragon Leader Deagle", "models/bn/deagle/DragonLeader.mdl", CSW_DEAGLE, 400},
  {5, "Eagle Glory Deagle", "models/bn/deagle/EagleGlory.mdl", CSW_DEAGLE, 800},
  {6, "IDN Deagle", "models/bn/deagle/IDN.mdl", CSW_DEAGLE, 1600},
  {7, "Kumicho Dragon Fix Deagle", "models/bn/deagle/KumichoDragonFix.mdl", CSW_DEAGLE, 3200},
  {8, "Scala Deagle", "models/bn/deagle/Scala.mdl", CSW_DEAGLE, 6400}
}

new KnifeSkinKills[33][30][weapon_Properties];
new AKSkinKills[33][30][weapon_Properties];
new M4A1SkinKills[33][30][weapon_Properties];
new AWPSkinKills[33][30][weapon_Properties];
new DeagleSkinKills[33][30][weapon_Properties];

enum _:announcment_Properties
{
  message[512],
  uniqid
}
enum _:Deathsmg_Properties
{
  Damagers,
  DamagedHit,
  WhoGetDamage,
}
new Player_Death[33][Deathsmg_Properties];
enum _:player_Settings
{
  s_lefthud,
  s_bottomhud,
}
new Player_Settings[33][player_Settings];
enum _:player_Properties
{
  PlayerName[64],
  steamid[32],
  ip[32],
  SelectedAK,
  SelectedM4A1,
  SelectedAWP,
  SelectedDEAGLE,
  SelectedKnife,
  Knifeshow,
  PlayerBought,
  havePrefix,
  ChatPrefix[32],
  k_ak47,
  k_m4a1,
  k_awp,
  k_deagle,
  k_knife,
  Float:l_exp,
  l_name[32],
  a_Id,
  Float:money,
  v_isVip,
  v_time,
  PlayTime,
  ad_level
}
  r_name[32],
  Float:r_exp,
  Float:r_money
};

new const RankInfo[][level_Properties] =
{
  {"Kritikus helyzet"},
  {"Kadét"},
  {"Terapeutás Player", 50.00, 2.00},
  {"Adekszeretoje", 100.00, 5.00},
  {"Himringyo", 200.00, 7.00},
  {"SZIPUUUS", 400.00, 9.00},
  {"SexyBaby", 800.00, 15.00},
  {"Nova Ura", 1600.00, 20.00},
  {"Sipii Élettársa", 3200.00, 25.00},
  {"Hadnagy", 6400.00, 30.00},
  {"Búzaaa", 12800.00, 35.00},
  {"Vezérezredes", 25600.00, 40.00},
  {"Nutii elvtársa", 51200.00, 45.00},
  {"A RETENTHETETLEN", 102400.00, 50.00}
};

new String[512], StringHud[512], StringMotd[1536];
new MaxPlayerInServer;

public plugin_init()
{
  register_impulse(201, "MainMenu");
  register_plugin(PLUGIN, VERSION, AUTHOR)

  ServerCvars[g_costvip] = register_cvar("vip_cost", "50.00");
  ServerCvars[g_costprefix] = register_cvar("prefix_cost", "300.00");

  register_cvar("BNm_Prefix", "1")
  register_cvar("BNm_Vip", "1")
 
  register_clcmd("getword", "checkword");
  
  register_clcmd("chatprefixbuy", "get_Prefix");
 
  register_clcmd("say /menu", "MainMenu");
  register_clcmd("say /skin", "MainMenu");
  
  register_concmd("give_kills", "CmdGiveKills", _, "<accountid> <tipus> <mennyiseg>");
  register_concmd("remove_kills", "CmdGetKills", _, "<accountid> <tipus> <mennyiseg>");
  register_concmd("set_prefix", "cmdSetPrefix", _, "<accountid> <prefixnev>")
  register_concmd("remove_prefix", "cmdRemovePrefix", _, "<accountid>")
  register_concmd("add_advert", "cmdAddAdvert", _, "<message>");
  //register_concmd("remove_advert", "cmdRemoveAdvert", _, "<Advert id>");
  register_concmd("list_advert", "cmdListAdvert", _, "<list>");
  //register_concmd("add_vip", "cmdGiveVip", _, "<accountid> <ido(napban)>");
  register_concmd("remove_vip", "cmdRemoveVip", _, "<accountid>");
  //register_concmd("give_admin", "CmdSetAdmin", _, "<#id> <jog> | <1 Fejleszto> <2 Tulaj> <3 SzuperAdmin> <2 FoAdmin> <1 Admin>");

  RegisterHam(Ham_Spawn,"player","PlayerSpawn", 1);
  RegisterHam(Ham_Spawn,"player","WeaponMenu", 1);

  RegisterHam(Ham_Item_Deploy, "weapon_knife", "ChangeWeapon", 1);
  RegisterHam(Ham_Item_Deploy, "weapon_ak47", "ChangeWeapon", 1);
  RegisterHam(Ham_Item_Deploy, "weapon_m4a1", "ChangeWeapon", 1);
  RegisterHam(Ham_Item_Deploy, "weapon_awp", "ChangeWeapon", 1);
  RegisterHam(Ham_Item_Deploy, "weapon_deagle", "ChangeWeapon", 1);

  register_clcmd("say", "cmdSayHook")
  register_clcmd("say_team", "cmdSayHook")

  set_task(60.0, "Announcment",_,_,_,"b");
  set_task(0.1, "OnMapStart",_,_,_,"c");

  set_task(75.0, "TypeWord",_,_,_,"b");
  set_task(0.1, "Check",_,_,_,"b");

  register_event("HLTV", "NewRoundStart", "a", "1=0", "2=0");
  // Add your code here...
  MaxPlayerInServer = get_maxplayers();
}
public plugin_precache()
{
    g_Advert = ArrayCreate(256);
    new WeaponKnifeSize = sizeof(WeaponKnife);
    for(new i;i < WeaponKnifeSize; i++) precache_model(WeaponKnife[i][model]);

    new WeaponAKSize = sizeof(WeaponAK);
    for(new i; i < WeaponAKSize; i++) precache_model(WeaponAK[i][model]);

    new WeaponM4A1Size = sizeof(WeaponM4A1);
    for(new i; i < WeaponM4A1Size; i++) precache_model(WeaponM4A1[i][model]);

    new WeaponAWPSize = sizeof(WeaponAWP);
    for(new i; i < WeaponAWPSize; i++) precache_model(WeaponAWP[i][model]);

    new WeaponDeagleSize = sizeof(WeaponDeagle);
    for(new i; i < WeaponDeagleSize; i++) precache_model(WeaponDeagle[i][model]);

    RegisterHam(Ham_Spawn,"func_buyzone","buyZoneSpawn") 
}
/*public Set_Permissions(id)
{
	new Flags;
	Flags = read_flags(AdminPermissions[Player_Info[id][ad_level]][1]);
	set_user_flags(id, Flags);
}*
public CmdSetAdmin(id, level, cid)
{
  if(!str_to_num(AdminPermissions[Player_Info[id][ad_level]][2])){
    client_print(id, print_console, "Nincs elérhetőseg ehhez a parancshoz!");
    return PLUGIN_HANDLED;
  }

  new Arg1[32], Arg2[32], Arg_Int[2], iId;

  read_argv(1, Arg1, charsmax(Arg1));
  read_argv(2, Arg2, charsmax(Arg2));

  Arg_Int[0] = str_to_num(Arg1);
  Arg_Int[1] = str_to_num(Arg2);

  if(Arg_Int[0] < 1 || Arg_Int[1] >= sizeof(AdminPermissions))
    return PLUGIN_HANDLED;	

  for(new i = 1; i < 33; i++)
  {
    if(Player_Info[i][a_Id] == Arg_Int[0])
    {
      Player_Info[i][ad_level] = Arg_Int[1];
      Set_Permissions(i);
      iId = i;
    }
  }
  client_print_color(0,print_team_default, "^3%s ^4%s %s ^1jogott kapott!", Prefix, Player_Info[iId][PlayerName], AdminPermissions[Arg_Int[1]][0]);

  return PLUGIN_HANDLED;
}*/
public PlayerHud(id)
{
  new iWatch, wid;
  if(is_user_alive(id))
    iWatch = id;
  else
    iWatch = entity_get_int(id, EV_INT_iuser2);
  
  if(Player_Settings[id][s_lefthud])
  {
    new iSeconds, iMinutes, iHours, iDays, iLen;
    iSeconds = Player_Info[iWatch][PlayTime] + get_user_time(iWatch);
    iMinutes = iSeconds / 60;
    iHours = iMinutes / 60;
    iSeconds = iSeconds - iMinutes * 60;
    iMinutes = iMinutes - iHours * 60;
    iDays = iHours / 24;
    iHours = iHours - (iDays * 24);

    set_hudmessage(255, 255, 255, 0.01, 0.15, 0, 6.0, 0.2, 0.0, 0.0, -1);
    iLen = formatex(String[iLen], charsmax(String)-iLen, "Név: %s(#%i)!^n[ Dollár: %.2f$ ]^n[ EXP: %.3f ]",Player_Info[iWatch][PlayerName], Player_Info[iWatch][a_Id], Player_Info[iWatch][money], Player_Info[iWatch][l_exp]);
    iLen += formatex(String[iLen], charsmax(String)-iLen, "^n[ Játszott idő: %i Nap %i Óra %i Perc ]", iDays, iHours, iMinutes);

    replace_all(String, 511, ".", ",");
    show_hudmessage(id, String);
  }
  if(Player_Settings[id][s_bottomhud])
  {
    if(is_user_alive(iWatch) && !is_user_bot(iWatch))
    wid = get_user_weapon(iWatch);
    new Len;
    switch(wid)
    {
      case CSW_AK47:
      {
        Len = formatex(StringHud[Len], charsmax(StringHud)- Len, "%s", WeaponAK[Player_Info[iWatch][SelectedAK]][name]);
        Len += formatex(StringHud[Len], charsmax(StringHud)- Len, "^nÖlések:%i", AKSkinKills[iWatch][Player_Info[iWatch][SelectedAK]][killsinweapon]);
      }
      case CSW_M4A1:
      {
        Len = formatex(StringHud[Len], charsmax(StringHud)- Len, "%s", WeaponM4A1[Player_Info[iWatch][SelectedM4A1]][name]);
        Len += formatex(StringHud[Len], charsmax(StringHud)- Len, "^nÖlések:%i", M4A1SkinKills[iWatch][Player_Info[iWatch][SelectedM4A1]][killsinweapon]);
      }
      case CSW_AWP:
      {
        Len = formatex(StringHud[Len], charsmax(StringHud)- Len, "%s", WeaponAWP[Player_Info[iWatch][SelectedAWP]][name]);
        Len += formatex(StringHud[Len], charsmax(StringHud)- Len, "^nÖlések:%i", AWPSkinKills[iWatch][Player_Info[iWatch][SelectedAWP]][killsinweapon]);
      }
      case CSW_DEAGLE:
      {
        Len = formatex(StringHud[Len], charsmax(StringHud)- Len, "%s", WeaponDeagle[Player_Info[iWatch][SelectedDEAGLE]][name]);
        Len += formatex(StringHud[Len], charsmax(StringHud)- Len, "^nÖlések:%i", DeagleSkinKills[iWatch][Player_Info[iWatch][SelectedDEAGLE]][killsinweapon]);
      }
      case CSW_KNIFE:
      {
        Len = formatex(StringHud[Len], charsmax(StringHud)- Len, "%s", WeaponKnife[Player_Info[iWatch][SelectedKnife]][name]);
        Len += formatex(StringHud[Len], charsmax(StringHud)- Len, "^nÖlések:%i", KnifeSkinKills[iWatch][Player_Info[iWatch][SelectedKnife]][killsinweapon]);
      }
      case CSW_FAMAS:
      {
        Len = formatex(StringHud[Len], charsmax(StringHud)- Len, "Default FAMAS");
      }
      case CSW_MP5NAVY:
      {
        Len = formatex(StringHud[Len], charsmax(StringHud)- Len, "Default MP5");
      }
      case CSW_SCOUT:
      {
        Len = formatex(StringHud[Len], charsmax(StringHud)- Len, "Default XM1014");
      }
      case CSW_M3:
      {
        Len = formatex(StringHud[Len], charsmax(StringHud)- Len, "Default M3");
      }
      case CSW_SMOKEGRENADE:
      {
        Len = formatex(StringHud[Len], charsmax(StringHud)- Len, "Smoke Grenade");
      }
      case CSW_HEGRENADE:
      {
        Len = formatex(StringHud[Len], charsmax(StringHud)- Len, "HE Grenade");
      }
      case CSW_FLASHBANG:
      {
        Len = formatex(StringHud[Len], charsmax(StringHud)- Len, "FLASHBANG");
      }
      case CSW_C4:
      {
        Len = formatex(StringHud[Len], charsmax(StringHud)- Len, "C4");
      }
    }
    set_hudmessage(255, 255, 255, -1.0, 0.72, 0, 0.0, 0.2, 0.0, 0.0, -1);
    show_hudmessage(id, StringHud);
  }
}
public Check()
{
  new p[32],n;
  get_players(p,n,"ch");
  for(new i=0;i<n;i++)
  {
      new id = p[i];
      PlayerHud(id);
  }
}
public get_Prefix(id)
{
  if(get_cvar_num("BNm_Prefix")){
  new Arg1[32];
  read_argv(1, Arg1, charsmax(Arg1));
  if(!(RegexTester(id, Arg1, "^^[A-Za-z0-9öüóőúéáűíÖÜÓŐÚÉÁŰÍ <>=\/_.:!\?\*\[\]+,()\-]{1,16}+$", "A beírt szöveg csak magyar abc-t, számok és ^"<>=/_.!?*[]+,()-^"-ket tartalmazhatja!")) && Player_Info[id][money] >= get_pcvar_float(ServerCvars[g_costprefix]))
  {
	MainMenu(id);
	return;
  }
  copy(Player_Info[id][ChatPrefix], 32, Arg1)
  Player_Info[id][havePrefix] = 1;
  Player_Info[id][money] -= get_pcvar_float(ServerCvars[g_costprefix]);
  client_print(id, print_team_default, "^3%s ^1Sikeres ChatPrefix vásárlás!", Prefix)
  }
}  
	return PLUGIN_CONTINUE
}
public SeeBestPlayers(id)
{
	new Players[32], Num;
	get_players(Players, Num);
	SortCustom1D(Players, Num, "sort_bestthree")
 
	new Top1 = Players[0]
	new Top2 = Players[1]
	new Top3 = Players[2]
 
	new TopName1[32], TopName2[32], TopName3[32]
	get_user_name(Top1, TopName1, charsmax(TopName1))
	get_user_name(Top2, TopName2, charsmax(TopName2))
	get_user_name(Top3, TopName3, charsmax(TopName3))
 
	if(!FragInfo[SwitchFrag])
	{
		set_hudmessage(0, 255, 0, -1.0, 0.10, 0, 6.0, 30.0)
		if(Num == 1)
    {
      show_hudmessage(0, view_hud[0], TopName1)
    } 
		if(Num == 2)
    {
      show_hudmessage(0, view_hud[1], TopName1, TopName2)
    } 
		if(Num >= 3)
    {
      show_hudmessage(0, view_hud[2], TopName1, TopName2, TopName3)
    } 
	}
	else 
	{
		set_hudmessage(0, 127, 255, -1.0, 0.10, 0, 6.0, 0.5)
		if(Num == 1) show_hudmessage(0, view_hud[3], FragInfo[StartTime], FragInfo[EndTime], TopName1, FragRacers[Top1][kills])
		if(Num == 2) show_hudmessage(0, view_hud[4], FragInfo[StartTime], FragInfo[EndTime], TopName1, FragRacers[Top1][kills], TopName2, FragRacers[Top2][kills])
		if(Num >= 3) show_hudmessage(0, view_hud[5], FragInfo[StartTime], FragInfo[EndTime], TopName1, FragRacers[Top1][kills], TopName2, FragRacers[Top2][kills], TopName3, FragRacers[Top3][kills])
	}
}
public sort_bestthree(id1, id2)
{
	if(FragRacers[id1][kills] > FragRacers[id2][kills]) return -1
	else if(FragRacers[id1][kills] < FragRacers[id2][kills]) return 1
 
	return 0
}
public Rankadd(id)
{
  if(get_cvar_num("BNm_Rank")){
  new Float:m_exp, m_sizeofranks;
  m_exp = Player_Info[id][l_exp];
  m_sizeofranks = sizeof(RankInfo);

  if(m_exp < 0.00)
  copy(Player_Info[id][l_name], 31, RankInfo[0][r_name]);
  else if(m_exp > 0.00)
  {
    for(new i; i < m_sizeofranks; i++)
    {
      if(m_exp >= RankInfo[i][r_exp])
        copy(Player_Info[id][l_name], 31, RankInfo[i][r_name])
    }
  }
  else if(!(m_exp == 0.00))
  copy(Player_Info[id][l_name], 31, RankInfo[m_sizeofranks][r_name]);
  }
}
public NewRoundStart()
{
  for(new i; i < MaxPlayerInServer; i++)
  {
    Rankadd(i);
  }
  CheckPrizeTime();
  Load_DataPrize15();

  g_Awps[T] = 0;
  g_Awps[CT] = 0;

  new Players[32], iNum;
  new any:m_Team;
  new t_num = 0;
  new ct_num = 0;
  get_players(Players, iNum, "ch");
  get_players(Players, PlayersNow, "ch");
  new Player;
  for (new i=0; i<iNum; i++)
  {
    Player = Players[i];
    m_Team = cs_get_user_team(Player);
    switch(m_Team)
    {
      case CS_TEAM_CT:
      {
        ct_num++;
      }
      case CS_TEAM_T:
      {
        t_num++;
      }
    }
  }
  if(t_num >= 4 && ct_num >= 4)
    g_AwpCanAdd = 1;
  else
    g_AwpCanAdd = 0;

}
public cmdGiveVip(id)
{
  if(get_cvar_num("BNm_Vip")){

  if(!(get_user_flags(id) & ADMIN_IMMUNITY))
  {
    client_print(id, print_team_default, "Szép próbálkozás!")
    return;
  }

  new Arg[4],Arg1[11];
  read_argv(1, Arg, charsmax(Arg));

  if(Arg[0] == EOS)
  {
    client_print(id, print_console, "add_vip <accountid> <time>");
    return;
  }

  new iId = str_to_num(Arg);
  new iTime = str_to_num(Arg1);
  for(new i = 1; i < 33; i++)
  {
    if(Player_Info[i][a_Id] == iId)
    Player_Info[i][v_isVip] = 1;
    Player_Info[i][v_time] = iTime * 86400;
    
  }
  }
}
public cmdRemoveVip(id)
{
  if(get_cvar_num("BNm_Vip")){
  if(!(get_user_flags(id) & ADMIN_IMMUNITY))
  {
    client_print(id, print_team_default, "Szép próbálkozás!")
    return;
  }

  new Arg[4];
  read_argv(1, Arg, charsmax(Arg));

  if(Arg[0] == EOS)
  {
    client_print(id, print_console, "add_vip <accountid>");
    return;
  }

  new iId = str_to_num(Arg);
  for(new i = 1; i < 33; i++)
  {
    if(Player_Info[i][a_Id] == iId)
    Player_Info[i][v_isVip] = 0;
    Player_Info[i][v_time] = 0;
  }
  }
}
public cmdAddAdvert(id)
{
  if(get_cvar_num("BNm_Advert")){

  if(!(get_user_flags(id) & ADMIN_IMMUNITY))
  {
    client_print(id, print_team_default, "Szép próbálkozás!")
    return;
  }
  new Arg[256];
  read_argv(1, Arg, charsmax(Arg));

  if(Arg[0] == EOS)
  {
    client_print(id, print_console, "add_advert <message>");
    return;
  }
  Anouncment_insert(Arg);
  ArrayPushString(g_Advert, Arg);
  g_AdvertSize++;
  }
}

public cmdListAdvert(id)
{
  if(get_cvar_num("BNm_Advert")){

  if(!(get_user_flags(id) & ADMIN_IMMUNITY))
  {
    client_print(id, print_team_default, "Szép próbálkozás!")
    return;
  }
  new Temp[256];
  console_print(id, "Advert list:");
  for(new i; g_AdvertSize > i;i++)
  {
    ArrayGetString(g_Advert, i, Temp, 256);
    console_print(id, "%i - %s", i, Temp);
  }
  }
}

public cmdRemoveAdvert(id)
{
  if(get_cvar_num("BNm_Advert")){
  if(!(get_user_flags(id) & ADMIN_IMMUNITY))
  {
    client_print(id, print_team_default, "Szép próbálkozás!")
    return;
  }
  new Arg[32];
  read_argv(1, Arg, charsmax(Arg));

  if(Arg[0] == EOS)
  {
    client_print(id, print_console, "remove_advert <message>");
    return;
  }
  new Num = str_to_num(Arg);
  new Temp[256];
  ArrayGetString(g_Advert, Num, Temp, 256);
  Anouncment_delete(Temp);
  ArrayDeleteItem(g_Advert, Num);
  g_AdvertSize--;
  }
}

public Announcment()
{
  if(get_cvar_num("BNm_Advert")){
  if(!g_AdvertSize)
    return;
  new sizeof_g_Advert = g_AdvertSize;
  new RND = random(sizeof_g_Advert);

  for(new i = 1; i < 33;i++)
  {
    if(!is_user_connected(i))
      continue;
    client_print(i, print_team_default, "^4%s ^3%a", Prefix,ArrayGetStringHandle(g_Advert, RND));
  }
  }
}
public cmdSetPrefix(id)
{
  if(get_cvar_num("BNm_Prefix")){
  if(get_user_flags(id) & ADMIN_IMMUNITY)
  {
    client_print(id, print_console, "set_prefix <accountid> <prefixnev>");
  }
  else
  {
    client_print(id, print_team_default, "Szép próbálkozás!")
    return;
  }

  new Arg1[5], Arg2[32];

  read_argv(1, Arg1, charsmax(Arg1));
  read_argv(2, Arg2, charsmax(Arg2));

  if(Arg1[0] == EOS)
  {
    client_print(id, print_console, "set_prefix <accountid> <prefixnev>");
    return;
  }
  new IsOnline = 0;
  new iId = str_to_num(Arg1);

  for(new i = 1;i < 33;i++)
  {
    if(Player_Info[i][a_Id] == iId)
    {
      if(Player_Info[i][havePrefix] == 0)
      {
        Player_Info[i][ChatPrefix] = Arg2;
        Player_Info[i][havePrefix] = 1;
        client_print(id, print_team_default, "^4%s ^1Sikeresesen hozzáadtak a Prefixet ^1%s^1-nek, erre: %s!",Prefix, Player_Info[id][PlayerName],Arg2);
        client_print(i, print_team_default, "^4%s ^1Sikeresen beállították a Prefixed: ^1%s-t!",Prefix, Arg2);
        IsOnline = 1;
        i = 33;
      }
      else
      {
        client_print(id, print_team_default, "Már van Prefixe az adott játékosnak!")
        return;
      }
      
    }
  }

  if(!IsOnline)
    client_print(id, print_console, "A játékos jelenleg nem elérhető!");

  return;
 }
}
public cmdRemovePrefix(id)
{
  if(get_cvar_num("BNm_Prefix")){
  if(get_user_flags(id) & ADMIN_IMMUNITY)
  {
    client_print(id, print_console, "remove_prefix <accountid>");
  }
  else
  {
    client_print(id, print_team_default, "Szép próbálkozás!")
    return;
  }

  new Arg1[5];

  read_argv(1, Arg1, charsmax(Arg1));

  if(Arg1[0] == EOS)
  {
    client_print(id, print_console, "remove_prefix <accountid>");
    return;
  }
  new IsOnline = 0;
  new iId = str_to_num(Arg1);

  for(new i = 1;i < 33;i++)
  {
    if(Player_Info[i][a_Id] == iId)
    {
      if(Player_Info[i][havePrefix] == 1)
      {
        Player_Info[i][ChatPrefix] = "";
        Player_Info[i][havePrefix] = 0;
        client_print(id, print_team_default, "^4%s Törölted ^4%s Prefixét!",Prefix, Player_Info[id][PlayerName]);
        client_print(i, print_team_default, "^4%s ^4 Törölte a Prefixed!",Prefix, Player_Info[id][PlayerName]);
        IsOnline = 1;
        i = 33;
      }
      else
      {
        client_print(id, print_team_default, "Még nincs Prefixe a játékosnak!")
        return;
      }
      
    }
  }
  if(!IsOnline)
    client_print(id, print_console, "A játékos jelenleg nem elérhető!");

  return;
  }
}
public CmdGiveKills(id)
{
  if(get_user_flags(id) & ADMIN_IMMUNITY)
  {
    client_print(id, print_console, "give_kills <accountid> <tipus> <mennyiseg>");
  }
  else
  {
    client_print(id, print_team_default, "Szép próbálkozás!")
    return;
  }
  new Arg1[5], Arg2[32], Arg3[32];

  read_argv(1, Arg1, charsmax(Arg1));
  read_argv(2, Arg2, charsmax(Arg2));
  read_argv(3, Arg3, charsmax(Arg3));

  if(Arg1[0] == EOS)
  {
    client_print(id, print_console, "give_kills <accountid> <tipus> <mennyiseg>");
    return;
  }
  new iId = str_to_num(Arg1);
  new Typeofkills = str_to_num(Arg2);
  new AmountKills = str_to_num(Arg3);

  new IsOnline = 0;
  for(new i = 1;i < 33;i++)
  {
    if(Player_Info[i][a_Id] == iId)
    {
        switch(Typeofkills)
        {
          case 0: Player_Info[i][k_ak47] += AmountKills;
          case 1: Player_Info[i][k_m4a1] += AmountKills;
          case 2: Player_Info[i][k_awp] += AmountKills;
          case 3: Player_Info[i][k_deagle] += AmountKills;
          case 4: Player_Info[i][k_knife] += AmountKills;
        }
        client_print(id, print_team_default, "^4%s ^1Sikeres addolás erre a fiókra: ^1%s^1, ennyit:%i!",Prefix, Player_Info[id][PlayerName], AmountKills);
        client_print(i, print_team_default, "^4%s ^1Sikeresen addoltak neked erről a fiókról: ^1%s, ennyit :%i!",Prefix, Player_Info[id][PlayerName], AmountKills);
        IsOnline = 1;
        i = 33;

    }
  }

  if(!IsOnline)
    client_print(id, print_console, "A játékos jelenleg nem elérhető!");

  return;
}
public CmdGetKills(id)
{
  if(get_user_flags(id) & ADMIN_IMMUNITY)
  {
    client_print(id, print_console, "remove_kills <accountid> <tipus> <mennyiseg>");
  }
  else
  {
    client_print(id, print_team_default, "Szép próbálkozás!")
    return;
  }
  new Arg1[5], Arg2[32], Arg3[32];

  read_argv(1, Arg1, charsmax(Arg1));
  read_argv(2, Arg2, charsmax(Arg2));
  read_argv(3, Arg3, charsmax(Arg3));

  if(Arg1[0] == EOS)
  {
    client_print(id, print_console, "remove_kills <accountid> <tipus> <mennyiseg>");
    return;
  }
  new iId = str_to_num(Arg1);
  new Typeofkills = str_to_num(Arg2);
  new AmountKills = str_to_num(Arg3);

  new IsOnline = 0;
  for(new i = 1;i < 33;i++)
  {
    if(Player_Info[i][a_Id] == iId)
    {
        switch(Typeofkills)
        {
          case 0: Player_Info[i][k_ak47] -= AmountKills;
          case 1: Player_Info[i][k_m4a1] -= AmountKills;
          case 2: Player_Info[i][k_awp] -= AmountKills;
          case 3: Player_Info[i][k_deagle] -= AmountKills;
          case 4: Player_Info[i][k_knife] -= AmountKills;
        }
        client_print(id, print_team_default, "^4%s ^1Sikeres törlés erről a fiókról: ^1%s^1, ennyit: %i!",Prefix, Player_Info[id][PlayerName],AmountKills);
        client_print(i, print_team_default, "^4%s ^1Sikeresen töröltek a killjeidből! ^1%s, ennyit: %i!",Prefix, Player_Info[id][PlayerName],AmountKills);
        IsOnline = 1;
        i = 33;

    }
  }

  if(!IsOnline)
    client_print(id, print_console, "A játékos jelenleg nem elérhető!");

  return;
}
public PrizeGamePrices(id)
{
  if(get_cvar_num("BNm_PrizeGameMenu")){

  new len;
  
  len += formatex(StringMotd[len], charsmax(StringMotd) - len, "<HTML><HEAD><meta charset=^"UTF-8^"><TITLE>Nyeremenyek</TITLE></HEAD>")
  len += formatex(StringMotd[len], charsmax(StringMotd) - len, "<style=^"img {width: 200px; height:150px;}^"></style> <BODY><center>")
  len += formatex(StringMotd[len], charsmax(StringMotd) - len, "<h1><center>Nyeremények</center></h1></center>")
  len += formatex(StringMotd[len], charsmax(StringMotd) - len, "<left>Első hely:%s <br>", ServerPrizeGame[FirstPrize]);
  len += formatex(StringMotd[len], charsmax(StringMotd) - len, "<img src=^"%s^" style=^"width: 250px; height:150px;^"> </a><br>",ServerPrizeGame[FirstPrizePhoto])
  len += formatex(StringMotd[len], charsmax(StringMotd) - len, "Második hely:%s <br>", ServerPrizeGame[SecondPrize]);
  len += formatex(StringMotd[len], charsmax(StringMotd) - len, "<img src=^"%s^" style=^"width: 250px; height:150px;^"><br>", ServerPrizeGame[SecondPrizePhoto])
  len += formatex(StringMotd[len], charsmax(StringMotd) - len, "Harmadik hely:%s <br>", ServerPrizeGame[ThirdPrize]);
  len += formatex(StringMotd[len], charsmax(StringMotd) - len, "<img src=^"%s^" style=^"width: 250px; height:150px;^"><br>", ServerPrizeGame[ThirdPrizePhoto])
  len += formatex(StringMotd[len], charsmax(StringMotd) - len, "</BODY>")

  show_motd(id, StringMotd, "PhotoPrizes");
  }
}
public PrizeGameTop15(id)
{
  if(get_cvar_num("BNm_PrizeGameMenu")){

  new len;
  
  len += formatex(StringMotd[len], charsmax(StringMotd) - len, "<head><meta charset=^"UTF-8^"></head><center><table border=^"1^">");
  len += formatex(StringMotd[len], charsmax(StringMotd) - len, "<body bgcolor=#d1e0e0><table style=^"color:#50a832^">");
  len += formatex(StringMotd[len], charsmax(StringMotd) - len, "<td>Név</td>");
  len += formatex(StringMotd[len], charsmax(StringMotd) - len, "<td>Ölés</td>");


  for(new i; i < 15; i++)
  {
    len += formatex(StringMotd[len], charsmax(StringMotd) - len, "<tr><td>%i. %s</td>", i+1, Prize_Top15_list[i][PrizerName]);
    len += formatex(StringMotd[len], charsmax(StringMotd) - len, "<td>%i</td>", Prize_Top15_list[i][kills]);
  }
  len = formatex(StringMotd[len], charsmax(StringMotd) - len, "</table></center>");

  show_motd(id, StringMotd, "PrizerTop15");
  }
}
public buyZoneSpawn(id)
{
  return HAM_SUPERCEDE;
}
public TakeDamage(iVictim)
{
  if ( 0 < iVictim < MaxPlayerInServer )
  {
    new iAttacker = get_user_attacker( iVictim );
    if ( 0 < iAttacker < MaxPlayerInServer )
    {
      new iDamage = read_data(2);
      Player_Death[iAttacker][DamagedHit] += iDamage;
      if ( Player_Death[iAttacker][DamagedHit] >= 50 )
      {
              Player_Death[iAttacker][Damagers] = iVictim;
              Player_Death[iVictim][WhoGetDamage] = iAttacker;
      }
    }
  }
}
bool:DeadfromWorld(iKiller)
{
    new classname[32];
    pev(iKiller,pev_classname,classname,31)
    if(equali(classname,"worldspawn")) 
    {
      return true;
    }
    else
      return false;
}
public WhenDie()
{
  new Killer, Victim, iHeadshot, Float:iReward, Float:iTake, Float:iMoneyReward;

  Killer = read_data(1);
  Victim = read_data(2);
  iHeadshot = read_data(3);

  if (Killer == Victim)
  {
    return;
  }

  if(Player_Death[Victim][WhoGetDamage] && Player_Death[Victim][WhoGetDamage] != Killer)
  {
    new FragRacers1 = Player_Death[Victim][WhoGetDamage];

    Player_Death[FragRacers1][Damagers] = 0;
    Player_Death[FragRacers1][WhoGetDamage] = 0;
    Player_Death[FragRacers1][DamagedHit] = 0;

    ExecuteHamB( Ham_AddPoints, FragRacers1, 1, false );
    iReward = random_float(0.25,0.50);
    iMoneyReward = random_float(0.25,0.50)

    Player_Info[FragRacers1][l_exp] += iReward;
    Player_Info[FragRacers1][money] += iMoneyReward;

    set_hudmessage(random(256), random(256), random(256), -1.0, 0.20, 0, 6.0, 3.0);
    show_hudmessage(FragRacers1, "+ %3.2f% EXP ^n+ %3.2f%$", iReward, iMoneyReward);
    client_print(0, print_team_default, "^3%s ^4%s ^1kapott ^4+1 ^1fraget, mert segített ^4%s ^1megölésében!", Prefix, Player_Info[FragRacers1][PlayerName], Player_Info[Victim][PlayerName])
  }
  iTake = random_float(0.25,1.00);
  Player_Info[Victim][l_exp] -= iTake;
  client_print(Victim, print_team_default, "^4%s ^1Meghaltál és ezért vesztettél ^4%3.2f% ^1EXP-t!", Prefix, iTake);
  if(DeadfromWorld(Killer)) //Ha megöli magát a játékos!
  {
    return;
  }

  new wid = get_user_weapon(Killer);

  switch(wid)
  {
    case CSW_AK47:
    {
      AKSkinKills[Killer][Player_Info[Killer][SelectedAK]][killsinweapon]++;
      Player_Info[Killer][k_ak47]++;
    }

    case CSW_M4A1:
    {
      M4A1SkinKills[Killer][Player_Info[Killer][SelectedM4A1]][killsinweapon]++;
      Player_Info[Killer][k_m4a1]++;
    } 

    case CSW_AWP:
    {
      AWPSkinKills[Killer][Player_Info[Killer][SelectedAWP]][killsinweapon]++;
      Player_Info[Killer][k_awp]++;
    }

    case CSW_DEAGLE:
    {
      DeagleSkinKills[Killer][Player_Info[Killer][SelectedDEAGLE]][killsinweapon]++;
      Player_Info[Killer][k_deagle]++;
    }

    case CSW_KNIFE :
    {
      KnifeSkinKills[Killer][Player_Info[Killer][SelectedKnife]][killsinweapon]++;
      Player_Info[Killer][k_knife]++;
    } 
  }

  if(FragInfo[SwitchFrag])
  FragRacers[Killer][kills]++;

  if(ServerPrizeGame[isPrizeGoing])
  PrizeGame[Killer][kills]++;

  UpdatePrizeKills(Killer);

  switch(Player_Info[Killer][v_isVip])
  {
    case 0:
    {
      if(iHeadshot)
      {
        iMoneyReward = random_float(0.50,1.25);
        iReward = random_float(1.00,2.00);
      }
      else
      {
        iMoneyReward = random_float(0.00,1.00);
        iReward = random_float(0.50,1.50);
      }       
    }
    case 1:
    {
      if(iHeadshot)
      {
        iMoneyReward = random_float(0.75,1.50);
        iReward = random_float(1.50,2.50);
      }
      else
      {
        iMoneyReward = random_float(0.25,1.25);
        iReward = random_float(0.75,1.75);
            }
       }
}
  Player_Info[Killer][money] += iMoneyReward;
  Player_Info[Killer][l_exp] += iReward;
  client_print(Killer, print_team_default, "^4%s ^1Amiért megölted ^3%s ^1kaptál ^4%3.2f% ^1EXP-t, és ^4%3.2f% $!", Prefix, Player_Info[Victim][PlayerName], iReward, iMoneyReward)

}
public ChangeWeapon(iEnt)
{
  new id = get_pdata_cbase(iEnt, 41, 4);
  new wid = cs_get_weapon_id(iEnt);

  if(id > 32 || id < 1 || !is_user_alive(id))
  {
    return HAM_SUPERCEDE
  }

  switch(wid)
  {
    case CSW_AWP: entity_set_string(id, EV_SZ_viewmodel, WeaponAWP[Player_Info[id][SelectedAWP]][model]);
    case CSW_AK47: entity_set_string(id, EV_SZ_viewmodel, WeaponAK[Player_Info[id][SelectedAK]][model]);
    case CSW_M4A1: entity_set_string(id, EV_SZ_viewmodel, WeaponM4A1[Player_Info[id][SelectedM4A1]][model]);
    case CSW_DEAGLE: entity_set_string(id, EV_SZ_viewmodel, WeaponDeagle[Player_Info[id][SelectedDEAGLE]][model]);
    case CSW_KNIFE: entity_set_string(id, EV_SZ_viewmodel, WeaponKnife[Player_Info[id][SelectedKnife]][model]);
  }
  return HAM_SUPERCEDE;
}
public VipMenu(id)
{
  formatex(String, charsmax(String), "\r%s \yVip Menü \r%3.2f$", Prefix, Player_Info[id][money]);
  new menu = menu_create(String , "VipMenu_h");
  new Float:icost = get_pcvar_float(ServerCvars[g_costvip]);

  formatex(String, charsmax(String), "\w1 NAP \yV.I.P \r%3.2f$", icost);
  menu_additem(menu, String, "0", 0);
  
  formatex(String, charsmax(String), "\w7 NAP \yV.I.P \r%3.2f$", icost*7.00);
  menu_additem(menu, String, "1", 0);

  formatex(String, charsmax(String), "\w30 NAP \yV.I.P \r%3.2f$", icost*30.00);
  menu_additem(menu, String, "2", 0)

  menu_setprop(menu, MPROP_NEXTNAME, "Lapozás Előre");
  menu_setprop(menu, MPROP_BACKNAME, "Lapozás Vissza");
  menu_setprop(menu, MPROP_EXITNAME, "Vissza a Főmenübe");
  menu_display(id, menu);
  return PLUGIN_HANDLED
}

public VipMenu_h(id,menu,item){
  if( item == MENU_EXIT )
  {
    if(is_user_connected(id))
      menu_destroy(menu);
    MainMenu(id);
    return;
  }
  new data[9], szName[64];
  new access, callback;
  new Float:icost = get_pcvar_float(ServerCvars[g_costvip]);
  menu_item_getinfo(menu, item, access, data,charsmax(data), szName,charsmax(szName), callback);
  new key = str_to_num(data);
  switch(key)
  {
    case 0:
    {
      if(Player_Info[id][money] > icost)
      {
        Player_Info[id][v_isVip] = 1;
        Player_Info[id][v_time] += 86400;
        Player_Info[id][money] -= icost;
        client_print(id, print_team_default, "^3%s ^1Sikeresen megvásároltad ^4 1 ^1Napra a ^4Vippet!",Prefix)
      }
      else
      client_print(id, print_team_default, "^3%s ^1Nincs elég pénzed!",Prefix)
    }
    case 1:
    {
      if(Player_Info[id][money] > icost*7.00)
      {
        Player_Info[id][v_isVip] = 1;
        Player_Info[id][v_time] += 86400*7;
        Player_Info[id][money] -= icost;
        client_print(id, print_team_default, "^3%s ^1Sikeresen megvásároltad ^4 7 ^1Napra a ^4Vippet!",Prefix)
      }
      else
       client_print(id, print_team_default, "^3%s ^1Nincs elég pénzed!",Prefix)
    }
    case 3:
    {
      if(Player_Info[id][money] > icost*30.00)
      {
        Player_Info[id][v_isVip] = 1;
        Player_Info[id][v_time] += 86400*30;
        Player_Info[id][money] -= icost;
        client_print(id, print_team_default, "^3%s ^1Sikeresen megvásároltad^4 30 ^1Napra a ^4Vippet!",Prefix)
      }
      else
      client_print(id, print_team_default, "^3%s ^1Nincs elég pénzed!",Prefix)
    }
  }
}

public MainMenu(id)
{
  formatex(String, charsmax(String), "\r%s \wFőmenü \r%3.2f$", Prefix, Player_Info[id][money]);
  new menu = menu_create(String , "MainMenu_h");

  formatex(String, charsmax(String), "\wRaktár");
  menu_additem(menu, String, "0", 0);
  
  if(get_cvar_num("BNm_Vip")){  
  formatex(String, charsmax(String), "\wVip Bolt");
  menu_additem(menu, String, "1", 0);
  }
  
  formatex(String, charsmax(String), "\wBeállítások");
  menu_additem(menu, String, "2", 0);

  if(get_cvar_num("BNm_Prefix")){ 
  formatex(String, charsmax(String), "\wChat Prefix");
  menu_additem(menu, String, "3", 0);
  }

  menu_display(id, menu);
}
public MainMenu_h(id,menu,item)
{
  if( item == MENU_EXIT )
  {
    if(is_user_connected(id))
      menu_destroy(menu);
    return;
  }
  new data[9], szName[64];
  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 0: SkinMenuChooser(id);
    case 1: VipMenu(id);
    case 2: PlayerSettingsMenu(id);
    case 3: ChatPrefixMenu(id);
    case 4: client_cmd(id, "messagemode getword");
  }
  menu_destroy(menu);
}
public ChatPrefixMenu(id)
{
  if(get_cvar_num("BNm_Prefix")){
  formatex(String, charsmax(String), "\r%s \wChat Prefix \r%3.2f$", Prefix, Player_Info[id][money]);
  new menu = menu_create(String , "ChatPrefixMenu_h");
  new Float:icost = get_pcvar_float(ServerCvars[g_costprefix]);

  formatex(String, charsmax(String), "\w ChatPrefix Vásárlása \r%3.2f", icost);
  menu_additem(menu, String, "0", 0);

  menu_display(id, menu);
  }
}
public ChatPrefixMenu_h(id, menu, item)
{
  if( item == MENU_EXIT )
  {
    if(is_user_connected(id))
      menu_destroy(menu);
    return;
  }
  new data[9], szName[64];
  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 0:
    {
    if(Player_Info[id][money] >= get_pcvar_float(ServerCvars[g_costprefix]))
    {
      client_cmd(id, "messagemode chatprefixbuy");
    }
    else
    client_print(id, print_team_default, "^3%s ^1Nincs elegendő pénzed!", Prefix)
    }
  }
  menu_destroy(menu);
}

public PlayerSettingsMenu(id)
{
  new iNextRank[32], m_sizeofranks, Float:m_exp, Float:m_nextrankexp;
  m_exp = Player_Info[id][l_exp];
  m_sizeofranks = sizeof(RankInfo);
  if (m_exp < 0.00)
  copy(iNextRank, 31, RankInfo[1][r_name]);
  else if(m_exp >= 0.00)
  {
    for(new i; i < m_sizeofranks; i++)
    {
      if(m_exp >= RankInfo[i][r_exp])
      {     
        copy(iNextRank, 31, RankInfo[i+1][r_name])
        m_nextrankexp = RankInfo[i+1][r_exp];
      }      
    }
  }

  formatex(String, charsmax(String), "\r%s \yBeállítások^nRankod:\r%s\y[EXP:\r%.2f\y]^nKövetkező rank:\r%s\y[EXP:\r%.2f\y]", Prefix, Player_Info[id][l_name], m_exp, iNextRank, m_nextrankexp);
  new menu = menu_create(String, "PlayerSettingsMenu_h")

  // HUD Infó [Egyszerű | Részletes | Kikapcsolva]
  menu_additem(menu, Player_Settings[id][s_lefthud] == 1 ? "Játékos HUD: \r[BE] \y| \d[KI]":"Játékos HUD: \d[BE] \y| \r[KI]", "0", 0);
  menu_additem(menu, Player_Settings[id][s_bottomhud] == 1 ? "Fegyver HUD: \r[BE] \y| \d[KI]":"Fegyver HUD: \d[BE] \y| \r[KI]", "1", 0);
  //"

  menu_setprop(menu, MPROP_NEXTNAME, "Lapozás Előre");
  menu_setprop(menu, MPROP_BACKNAME, "Lapozás Vissza");
  menu_setprop(menu, MPROP_EXITNAME, "Vissza a Főmenübe");
  menu_display(id, menu, 0);
}
public PlayerSettingsMenu_h(id, menu, item)
{
  if(item == MENU_EXIT)
  {
    menu_destroy(menu);
    MainMenu(id);
    return;
  }
  new data[9], szName[64];
  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 0:
    {
      Player_Settings[id][s_lefthud] = !Player_Settings[id][s_lefthud];
    }
    case 1:
    {
      Player_Settings[id][s_bottomhud] = !Player_Settings[id][s_bottomhud];
    }
  }
  PlayerSettingsMenu(id)
  menu_destroy(menu);
}
public SkinMenuChooser(id)
{
  formatex(String, charsmax(String), "\r%s \ySkinmenü", Prefix, Player_Info[id][k_ak47]);
  new menu = menu_create(String , "SkinMenuChooser_h");

  formatex(String, charsmax(String), "\wAK Skinek"); 
  menu_additem(menu, String, "0", 0);

  formatex(String, charsmax(String), "\wM4A1 Skinek"); 
  menu_additem(menu, String, "1", 0);

  formatex(String, charsmax(String), "\wAWP Skinek"); 
  menu_additem(menu, String, "2", 0);

  formatex(String, charsmax(String), "\wDeagle Skinek"); 
  menu_additem(menu, String, "3", 0);

  formatex(String, charsmax(String), "\wKnife Skinek"); 
  menu_additem(menu, String, "4", 0);

  menu_setprop(menu, MPROP_NEXTNAME, "Lapozás Előre");
  menu_setprop(menu, MPROP_BACKNAME, "Lapozás Vissza");
  menu_setprop(menu, MPROP_EXITNAME, "Vissza a Főmenübe");
  menu_display(id, menu);
  return PLUGIN_HANDLED;
}
public SkinMenuChooser_h(id, menu, item)
{
  if( item == MENU_EXIT )
  {
    if(is_user_connected(id))
      menu_destroy(menu);
    MainMenu(id);
    return;
  }
  new data[9], szName[64];
  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 0: AKMenu(id);
    case 1: M4A1Menu(id);
    case 2: AWPMenu(id);
    case 3: DeagleMenu(id);
    case 4: KnifeMenu(id);
  }
}
public AKMenu(id)
{
  formatex(String, charsmax(String), "%s \yAK Menü^n \yÖléseid\r:\w%i", Prefix, Player_Info[id][k_ak47]);
  new menu = menu_create(String , "AKMenu_h");

  new m_nowak = sizeof(WeaponAK);
  new Num[4];

  for(new i=0; i < m_nowak;i++)
  {
  if(Player_Info[id][k_ak47] >= WeaponAK[i][neededkills])
    formatex(String, charsmax(String), "\y%s \r[Megszerezve]", WeaponAK[i][name])
  else
    formatex(String, charsmax(String), "\w%s \r[%i Ölés]\y-\r[LEZÁRVA]", WeaponAK[i][name], WeaponAK[i][neededkills])
  num_to_str(i, Num, 4)

  menu_additem(menu, String, Num, 0);
  }
  
  menu_display(id, menu);
  return PLUGIN_HANDLED;
}
public AKMenu_h(id, menu, item)
{
  if( item == MENU_EXIT )
  {
    if(is_user_connected(id))
      menu_destroy(menu);
    return;
  }
  new data[9], szName[64];
  new access, callback;
  menu_item_getinfo(menu, item, access, data,charsmax(data), szName,charsmax(szName), callback);
  new key = str_to_num(data);

  if(Player_Info[id][k_ak47] >= WeaponAK[key][neededkills])
  {
    Player_Info[id][SelectedAK] = key;
    client_print(id, print_team_default, "^4%s ^1Sikeresen kiválasztottad a ^3%s!", Prefix, WeaponAK[Player_Info[id][SelectedAK]][name]);
  }
  menu_destroy(menu);
}
public M4A1Menu(id)
{
  formatex(String, charsmax(String), "%s \yM4A1 Menü^n \yÖléseid\r:\w%i", Prefix, Player_Info[id][k_m4a1]);
  new menu = menu_create(String , "M4A1Menu_h");

  new m_nowm4 = sizeof(WeaponM4A1);
  new Num[4];

  for(new i=0; i < m_nowm4;i++)
  {
  if(Player_Info[id][k_m4a1] >= WeaponM4A1[i][neededkills])
    formatex(String, charsmax(String), "\y%s \r[Megszerezve]", WeaponM4A1[i][name])
  else
    formatex(String, charsmax(String), "\w%s \r[%i Ölés]\y-\r[LEZÁRVA]", WeaponM4A1[i][name], WeaponM4A1[i][neededkills])
  num_to_str(i, Num, 4)

  menu_additem(menu, String, Num, 0);
  }
  
  menu_display(id, menu);
  return PLUGIN_HANDLED;
}
public M4A1Menu_h(id, menu, item)
{
  if( item == MENU_EXIT )
  {
    if(is_user_connected(id))
      menu_destroy(menu);
    return;
  }
  new data[9], szName[64];
  new access, callback;
  menu_item_getinfo(menu, item, access, data,charsmax(data), szName,charsmax(szName), callback);
  new key = str_to_num(data);

  if(Player_Info[id][k_m4a1] >= WeaponM4A1[key][neededkills])
  {
    Player_Info[id][SelectedM4A1] = key;
    client_print(id, print_team_default, "^4%s ^1Sikeresen kiválasztottad a ^3%s!", Prefix, WeaponM4A1[Player_Info[id][SelectedM4A1]][name]);
  }
  menu_destroy(menu);
}
public AWPMenu(id)
{
  formatex(String, charsmax(String), "%s \yAWP Menü^n \yÖléseid\r:\w%i", Prefix, Player_Info[id][k_awp]);
  new menu = menu_create(String , "AWPMenu_h");

  new m_nowawp = sizeof(WeaponAWP);
  new Num[4];

  for(new i=0; i < m_nowawp;i++)
  {
  if(Player_Info[id][k_awp] >= WeaponAWP[i][neededkills])
    formatex(String, charsmax(String), "\y%s \r[Megszerezve]", WeaponAWP[i][name])
  else
    formatex(String, charsmax(String), "\w%s \r[%i Ölés]\y-\r[LEZÁRVA]", WeaponAWP[i][name], WeaponAWP[i][neededkills])
  num_to_str(i, Num, 4)

  menu_additem(menu, String, Num, 0);
  }
  
  menu_display(id, menu);
  return PLUGIN_HANDLED;
}
public AWPMenu_h(id, menu, item)
{
  if( item == MENU_EXIT )
  {
    if(is_user_connected(id))
      menu_destroy(menu);
    return;
  }
  new data[9], szName[64];
  new access, callback;
  menu_item_getinfo(menu, item, access, data,charsmax(data), szName,charsmax(szName), callback);
  new key = str_to_num(data);

  if(Player_Info[id][k_awp] >= WeaponAWP[key][neededkills])
  {
    Player_Info[id][SelectedAWP] = key;
    client_print(id, print_team_default, "^4%s ^1Sikeresen kiválasztottad a ^3%s!", Prefix, WeaponAWP[Player_Info[id][SelectedAWP]][name]);
  }
  menu_destroy(menu);
}
public DeagleMenu(id)
{
  formatex(String, charsmax(String), "%s \yDeagle Menü^n \yÖléseid\r:\w%i", Prefix, Player_Info[id][k_deagle]);
  new menu = menu_create(String , "DeagleMenu_h");

  new m_nowdeagle = sizeof(WeaponDeagle);
  new Num[4];

  for(new i=0; i < m_nowdeagle;i++)
  {
  if(Player_Info[id][k_deagle] >= WeaponDeagle[i][neededkills])
    formatex(String, charsmax(String), "\y%s \r[Megszerezve]", WeaponDeagle[i][name])
  else
    formatex(String, charsmax(String), "\w%s \r[%i Ölés]\y-\r[LEZÁRVA]", WeaponDeagle[i][name], WeaponDeagle[i][neededkills])
  num_to_str(i, Num, 4)

  menu_additem(menu, String, Num, 0);
  }
  
  menu_display(id, menu);
  return PLUGIN_HANDLED;
}
public DeagleMenu_h(id, menu, item)
{
  if( item == MENU_EXIT )
  {
    if(is_user_connected(id))
      menu_destroy(menu);
    return;
  }
  new data[9], szName[64];
  new access, callback;
  menu_item_getinfo(menu, item, access, data,charsmax(data), szName,charsmax(szName), callback);
  new key = str_to_num(data);

  if(Player_Info[id][k_deagle] >= WeaponDeagle[key][neededkills])
  {
    Player_Info[id][SelectedDEAGLE] = key;
    client_print(id, print_team_default, "^4%s ^1Sikeresen kiválasztottad a ^3%s!", Prefix, WeaponDeagle[Player_Info[id][SelectedDEAGLE]][name]);
  }
  menu_destroy(menu);
}
public KnifeMenu(id)
{
  formatex(String, charsmax(String), "%s \yKésmenü^n \yÖléseid\r:\w%i", Prefix, Player_Info[id][k_knife]);
  new menu = menu_create(String , "KnifeMenu_h");

  new m_nowknifes = sizeof(WeaponKnife);
  new Num[4];

  for(new i=0; i < m_nowknifes;i++)
  {
  if(Player_Info[id][k_knife] >= WeaponKnife[i][neededkills])
    formatex(String, charsmax(String), "\y%s \r[Megszerezve]", WeaponKnife[i][name])
  else
    formatex(String, charsmax(String), "\w%s \r[%i Ölés]\y-\r[LEZÁRVA]", WeaponKnife[i][name], WeaponKnife[i][neededkills])
  num_to_str(i, Num, 4)

  menu_additem(menu, String, Num, 0);
  }
  
  menu_display(id, menu);
  return PLUGIN_HANDLED;
}
public KnifeMenu_h(id, menu, item)
{
  if( item == MENU_EXIT )
  {
    if(is_user_connected(id))
      menu_destroy(menu);
    return;
  }
  new data[9], szName[64];
  new access, callback;
  menu_item_getinfo(menu, item, access, data,charsmax(data), szName,charsmax(szName), callback);
  new key = str_to_num(data);

  if(Player_Info[id][k_knife] >= WeaponKnife[key][neededkills])
  {
    Player_Info[id][SelectedKnife] = key;
    client_print(id, print_team_default, "^4%s ^1Sikeresen kiválasztottad a ^3%s!", Prefix, WeaponKnife[Player_Info[id][SelectedKnife]][name]);
  }
  menu_destroy(menu); 
}

public PlayerSpawn(id)
{
  if(!is_user_alive(id))
    return;
  
  Player_Death[id][Damagers] = 0;
  Player_Death[id][WhoGetDamage] = 0;
  Player_Death[id][DamagedHit] = 0;

  new m_HaveBomb = 0;
  if(user_has_weapon(id, CSW_C4))
    m_HaveBomb = 1;

  strip_user_weapons(id);
  if(m_HaveBomb)
    give_item(id, "weapon_c4");

  Player_Info[id][PlayerBought] = 0;
  WeaponMenu(id);
}

public client_putinserver(id)
{
  if(!is_user_bot(id))
  {
    new m_sizeofAK47 = sizeof(WeaponAK);
    new m_sizeofM4A1 = sizeof(WeaponM4A1);
    new m_sizeofAWP = sizeof(WeaponAWP);
    new m_sizeofDEAGLE = sizeof(WeaponDeagle);
    new m_sizeofKnife = sizeof(WeaponKnife);

    for(new i; i < m_sizeofAK47; i++)
    AKSkinKills[id][i] = Empty;

    for(new i; i < m_sizeofM4A1; i++)
    M4A1SkinKills[id][i] = Empty;

    for(new i; i < m_sizeofAWP; i++)
    AWPSkinKills[id][i] = Empty;

    for(new i; i < m_sizeofDEAGLE; i++)
    DeagleSkinKills[id][i] = Empty;

    for(new i; i < m_sizeofKnife; i++)
    KnifeSkinKills[id][i] = Empty;

    Player_Info[id][PlayerBought] = 0;
    Player_Info[id][a_Id] = 0;
    Player_Info[id][SelectedKnife] = 0;
    Player_Info[id][SelectedAK] = 0;
    Player_Info[id][SelectedM4A1] = 0;
    Player_Info[id][SelectedAWP] = 0;
    Player_Info[id][SelectedDEAGLE] = 0;
    Player_Info[id][Knifeshow] = 0;
    Player_Info[id][k_ak47] = 0;
    Player_Info[id][k_m4a1] = 0;
    Player_Info[id][k_awp] = 0;
    Player_Info[id][k_deagle] = 0;
    Player_Info[id][k_knife] = 0;
    Player_Info[id][l_exp] = 0.00;
    Player_Info[id][money] = 0.00;
    Player_Info[id][PlayTime] = 0;
    Player_Info[id][v_isVip] = 0;
    Player_Info[id][ad_level] = 0;
    Player_Info[id][v_time] = 0;

    Player_Settings[id][s_lefthud] = 1;
    Player_Settings[id][s_bottomhud] = 1;

    get_user_name(id, Player_Info[id][PlayerName], 64);
    get_user_ip(id, Player_Info[id][ip], 32);
    get_user_authid(id, Player_Info[id][steamid], 32);
    Load_All(id);
    set_task(3.0, "DemoRecord", id);
  }
}

public client_disconnected(id)
{
  if(!is_user_bot(id))
  {
    for(new i; i < 3; i++)
    {
      switch(i)
      {
        case 0: Update(id);
        case 1: UpdateSkinKills(id);
      }
    }
  }
}

public plugin_cfg()
{
    g_SqlTuple = SQL_MakeDbTuple(SQLINFO[0], SQLINFO[1], SQLINFO[2], SQLINFO[3]);
    PlayerTable();
    AnnouncmentTable();
    WeaponKillsTable();
}
public AnnouncmentTable()
{
  new Len;

  Len += formatex(Query[Len], charsmax(Query), "CREATE TABLE IF NOT EXISTS `Announcments` ");
  Len += formatex(Query[Len], charsmax(Query)-Len, "( ");
  Len += formatex(Query[Len], charsmax(Query)-Len, "`id` INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,");
  Len += formatex(Query[Len], charsmax(Query)-Len, "`text` VARCHAR(256) NOT NULL)");

  SQL_ThreadQuery(g_SqlTuple, "createTableThread", Query);
}
public PlayerTable()
{
  new Len;

  Len += formatex(Query[Len], charsmax(Query), "CREATE TABLE IF NOT EXISTS `Players` ");
  Len += formatex(Query[Len], charsmax(Query)-Len, "( ");
  Len += formatex(Query[Len], charsmax(Query)-Len, "`id` INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,");
  Len += formatex(Query[Len], charsmax(Query)-Len, "`name` VARCHAR(32) NOT NULL,");
  Len += formatex(Query[Len], charsmax(Query)-Len, "`steamid` VARCHAR(32) NOT NULL,");
  Len += formatex(Query[Len], charsmax(Query)-Len, "`k_ak47` INT(11) NOT NULL,");
  Len += formatex(Query[Len], charsmax(Query)-Len, "`k_m4a1` INT(11) NOT NULL,");
  Len += formatex(Query[Len], charsmax(Query)-Len, "`k_awp` INT(11) NOT NULL,");
  Len += formatex(Query[Len], charsmax(Query)-Len, "`k_deagle` INT(11) NOT NULL,");
  Len += formatex(Query[Len], charsmax(Query)-Len, "`k_knife` INT(11) NOT NULL,");
  Len += formatex(Query[Len], charsmax(Query)-Len, "`SelectedKnife` INT(3) NOT NULL,");
  Len += formatex(Query[Len], charsmax(Query)-Len, "`SelectedAK` INT(3) NOT NULL,");
  Len += formatex(Query[Len], charsmax(Query)-Len, "`SelectedM4A1` INT(3) NOT NULL,");
  Len += formatex(Query[Len], charsmax(Query)-Len, "`SelectedAWP` INT(3) NOT NULL,");
  Len += formatex(Query[Len], charsmax(Query)-Len, "`SelectedDEAGLE` INT(3) NOT NULL,");
  Len += formatex(Query[Len], charsmax(Query)-Len, "`l_exp` INT(32) NOT NULL,")
  Len += formatex(Query[Len], charsmax(Query)-Len, "`money` INT(32) NOT NULL,")
  Len += formatex(Query[Len], charsmax(Query)-Len, "`isVip` INT(1) NOT NULL,")
  Len += formatex(Query[Len], charsmax(Query)-Len, "`vipTime` INT(32) NOT NULL,")
  Len += formatex(Query[Len], charsmax(Query)-Len, "`PlayTime` INT(32) NOT NULL,")
  Len += formatex(Query[Len], charsmax(Query)-Len, "`Knifeshow` INT(1) NOT NULL,");
  Len += formatex(Query[Len], charsmax(Query)-Len, "`lefthud` INT(1) NOT NULL,");
  Len += formatex(Query[Len], charsmax(Query)-Len, "`bottomhud` INT(1) NOT NULL,");
  Len += formatex(Query[Len], charsmax(Query)-Len, "`havePrefix` INT(1) NOT NULL,");
  Len += formatex(Query[Len], charsmax(Query)-Len, "`p_kills` INT(11) NOT NULL,");
  Len += formatex(Query[Len], charsmax(Query)-Len, "`ad_level` INT(1) NOT NULL,");
  Len += formatex(Query[Len], charsmax(Query)-Len, "`ChatPrefix` VARCHAR(32) NOT NULL,");
  Len += formatex(Query[Len], charsmax(Query)-Len, "`ip` VARCHAR(32) NOT NULL)");
  
  SQL_ThreadQuery(g_SqlTuple, "createTableThread", Query);
}
public WeaponKillsTable()
{
  new Len;

  new m_sizeofAK47 = sizeof(WeaponAK);
  new m_sizeofM4A1 = sizeof(WeaponM4A1);
  new m_sizeofAWP = sizeof(WeaponAWP);
  new m_sizeofDEAGLE = sizeof(WeaponDeagle);
  new m_sizeofKnife = sizeof(WeaponKnife);

  Len += formatex(Query[Len], charsmax(Query), "CREATE TABLE IF NOT EXISTS `WeaponKills` ");
  Len += formatex(Query[Len], charsmax(Query)-Len, "( ");
  Len += formatex(Query[Len], charsmax(Query)-Len, "`Id` INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,");
  Len += formatex(Query[Len], charsmax(Query)-Len, "`name` VARCHAR(32) NOT NULL,");

  for(new i; i < m_sizeofAK47; i++)
  Len += formatex(Query[Len], charsmax(Query)-Len, "`ak_%i` INT(11) NOT NULL,", i);
  
  for(new i; i < m_sizeofM4A1; i++)
  Len += formatex(Query[Len], charsmax(Query)-Len, "`m4a1_%i` INT(11) NOT NULL,", i);

  for(new i; i < m_sizeofAWP; i++)
  Len += formatex(Query[Len], charsmax(Query)-Len, "`awp_%i` INT(11) NOT NULL,", i);

  for(new i; i < m_sizeofDEAGLE; i++)
  Len += formatex(Query[Len], charsmax(Query)-Len, "`deagle_%i` INT(11) NOT NULL,", i);

  for(new i; i < m_sizeofKnife; i++)
  Len += formatex(Query[Len], charsmax(Query)-Len, "`knife_%i` INT(11) NOT NULL,", i);

  Len += formatex(Query[Len], charsmax(Query)-Len, "`steamid` VARCHAR(32) NOT NULL)");
  SQL_ThreadQuery(g_SqlTuple, "createTableThread", Query);
}
public createTableThread(FailState, Handle:Query, Error[], Errcode, Data[], DataSize, Float:Queuetime) 
{
  if(Errcode)
  log_amx("[HIBA*] HIBAT DOBTAM: %s",Error);
  if(FailState == TQUERY_CONNECT_FAILED)
  set_fail_state("[HIBA*] NEM TUDTAM CSATLAKOZNI AZ ADATBAZISHOZ!");
  else if(FailState == TQUERY_QUERY_FAILED)
  set_fail_state("Query Error");
}
public Load_All(id)
{
  new Data[1];
  Data[0] = id;
  for (new i=1; i < 3; i++)
  {
    switch(i)
    {
      case 1:
      {
        formatex(Query, charsmax(Query), "SELECT * FROM `Players` WHERE steamid = ^"%s^";", Player_Info[id][steamid])
        SQL_ThreadQuery(g_SqlTuple, "QuerySelectData", Query, Data, 1);
      }
      case 2:
      {
        formatex(Query, charsmax(Query), "SELECT * FROM `WeaponKills` WHERE steamid = ^"%s^";", Player_Info[id][steamid])
        SQL_ThreadQuery(g_SqlTuple, "QuerySelectSkinKills", Query, Data, 1);
      }
    }
  }
}
public LoadAnnouncment()
{
  new Data[1];
  formatex(Query, charsmax(Query), "SELECT * FROM `Announcments`;")
  SQL_ThreadQuery(g_SqlTuple, "QuerySelectAnnouncment", Query, Data, 1);
}
public QuerySelectAnnouncment(FailState, Handle:Query, Error[], Errcode, Data[], DataSize, Float:Queuetime)
{
  if(FailState == TQUERY_CONNECT_FAILED || FailState == TQUERY_QUERY_FAILED)
  {
    log_amx("%s", Error);
    return;
  }
  else
  {
    if(SQL_NumRows(Query) > 0) 
    {
      new Temp[256];
      while(SQL_MoreResults(Query))
      {
        SQL_ReadResult(Query, SQL_FieldNameToNum(Query, "text"), Temp, 256);
        ArrayPushString(g_Advert, Temp);
        g_AdvertSize++;
        console_print(0, "%i, %s", g_AdvertSize, Temp);
        SQL_NextRow(Query);
      }
    }
  }
}
public QuerySelectSkinKills(FailState, Handle:Query, Error[], Errcode, Data[], DataSize, Float:Queuetime)
{
  if(FailState == TQUERY_CONNECT_FAILED || FailState == TQUERY_QUERY_FAILED)
  {
    log_amx("%s", Error);
    return;
  }
  else
  {
    new id = Data[0];
    new m_sizeofAK47 = sizeof(WeaponAK);
    new m_sizeofM4A1 = sizeof(WeaponM4A1);
    new m_sizeofAWP = sizeof(WeaponAWP);
    new m_sizeofDEAGLE = sizeof(WeaponDeagle);
    new m_sizeofKnife = sizeof(WeaponKnife);
    new iString[64];

    if(SQL_NumRows(Query) > 0) 
    {
      for(new i; i < m_sizeofAK47; i++)
      {
        formatex(iString, charsmax(iString), "ak_%d", i);
        AKSkinKills[id][i][killsinweapon] = SQL_ReadResult(Query, SQL_FieldNameToNum(Query, iString));
      }
      
      for(new i; i < m_sizeofM4A1; i++)
      {
        formatex(iString, charsmax(iString), "m4a1_%d", i);
        M4A1SkinKills[id][i][killsinweapon] = SQL_ReadResult(Query, SQL_FieldNameToNum(Query, iString));
      }

      for(new i; i < m_sizeofAWP; i++)
      {
        formatex(iString, charsmax(iString), "awp_%d", i);
        AWPSkinKills[id][i][killsinweapon] = SQL_ReadResult(Query, SQL_FieldNameToNum(Query, iString));
      }
      for(new i; i < m_sizeofDEAGLE; i++)
      {
        formatex(iString, charsmax(iString), "deagle_%d", i);
        DeagleSkinKills[id][i][killsinweapon] = SQL_ReadResult(Query, SQL_FieldNameToNum(Query, iString));
      }
      for(new i; i < m_sizeofKnife; i++)
      {
        formatex(iString, charsmax(iString), "knife_%d", i);
        KnifeSkinKills[id][i][killsinweapon] = SQL_ReadResult(Query, SQL_FieldNameToNum(Query, iString));
      }
    }
    else
    {
      SaveWeaponKills(id);
    }
  }
}
public QuerySelectData(FailState, Handle:Query, Error[], Errcode, Data[], DataSize, Float:Queuetime)
{
  if(FailState == TQUERY_CONNECT_FAILED || FailState == TQUERY_QUERY_FAILED)
  {
    log_amx("%s", Error);
    return;
  }
  else
  {
    new id = Data[0];

    if(SQL_NumRows(Query) > 0) 
    {
      Player_Info[id][k_knife] = SQL_ReadResult(Query, SQL_FieldNameToNum(Query, "k_knife"));
      Player_Info[id][k_ak47] = SQL_ReadResult(Query, SQL_FieldNameToNum(Query, "k_ak47"));
      Player_Info[id][k_m4a1] = SQL_ReadResult(Query, SQL_FieldNameToNum(Query, "k_m4a1"));
      Player_Info[id][k_deagle] = SQL_ReadResult(Query, SQL_FieldNameToNum(Query, "k_deagle"));
      Player_Info[id][k_awp] = SQL_ReadResult(Query, SQL_FieldNameToNum(Query, "k_awp"));
      Player_Info[id][SelectedKnife] = SQL_ReadResult(Query, SQL_FieldNameToNum(Query, "SelectedKnife"));
      Player_Info[id][SelectedAK] = SQL_ReadResult(Query, SQL_FieldNameToNum(Query, "SelectedAK"));
      Player_Info[id][SelectedM4A1] = SQL_ReadResult(Query, SQL_FieldNameToNum(Query, "SelectedM4A1"));
      Player_Info[id][SelectedAWP] = SQL_ReadResult(Query, SQL_FieldNameToNum(Query, "SelectedAWP"));
      Player_Info[id][SelectedDEAGLE] = SQL_ReadResult(Query, SQL_FieldNameToNum(Query, "SelectedDEAGLE"));
      Player_Info[id][havePrefix] = SQL_ReadResult(Query, SQL_FieldNameToNum(Query, "havePrefix"));
      Player_Info[id][ChatPrefix] = SQL_ReadResult(Query, SQL_FieldNameToNum(Query, "ChatPrefix"));
      Player_Info[id][l_exp] = (float(SQL_ReadResult(Query, SQL_FieldNameToNum(Query, "l_exp")))/100.0);
      Player_Info[id][money] = (float(SQL_ReadResult(Query, SQL_FieldNameToNum(Query, "money")))/100.0);
      Player_Info[id][v_isVip] = SQL_ReadResult(Query, SQL_FieldNameToNum(Query, "isVip"));
      Player_Info[id][ad_level] = SQL_ReadResult(Query, SQL_FieldNameToNum(Query, "ad_level"));
      Player_Info[id][PlayTime] = SQL_ReadResult(Query, SQL_FieldNameToNum(Query, "PlayTime"));
      if(Player_Info[id][v_isVip])
      Player_Info[id][v_time] = SQL_ReadResult(Query, SQL_FieldNameToNum(Query, "vipTime"));
      
      SQL_ReadResult(Query, SQL_FieldNameToNum(Query, "ChatPrefix"), Player_Info[id][ChatPrefix], 31);
      Player_Info[id][Knifeshow] = SQL_ReadResult(Query, SQL_FieldNameToNum(Query, "Knifeshow"));

      Player_Settings[id][s_lefthud] = SQL_ReadResult(Query, SQL_FieldNameToNum(Query, "lefthud"));
      Player_Settings[id][s_bottomhud] = SQL_ReadResult(Query, SQL_FieldNameToNum(Query, "bottomhud"));

      Rankadd(id);
      //Set_Permissions(id);
    }
    else
    {
      Save(id);
      }
    }
  }
}
public Save(id)
{
new text[512];
formatex(text, charsmax(text), "INSERT INTO `Players` (`steamid`) VALUES (^"%s^");", Player_Info[id][steamid]);

SQL_ThreadQuery(g_SqlTuple, "QuerySetData", text);
}
public SaveWeaponKills(id)
{
new text[512];
formatex(text, charsmax(text), "INSERT INTO `WeaponKills` (`steamid`) VALUES (^"%s^");", Player_Info[id][steamid]);

SQL_ThreadQuery(g_SqlTuple, "QuerySetData", text);
}
public Anouncment_insert(m_Text[256])
{
  new text[512];
  formatex(text, charsmax(text), "INSERT INTO `Announcments` (`text`) VALUES (^"%s^");", m_Text);
  
  SQL_ThreadQuery(g_SqlTuple, "QuerySetData", text);
}
public Anouncment_delete(m_Text[256])
{
  new text[512];
  formatex(text, charsmax(text), "DELETE FROM `Announcments` WHERE `text` = ^"%s^";", m_Text);
  
  SQL_ThreadQuery(g_SqlTuple, "QuerySetData", text);
}
public Update(id)
{
  new Len;

  Len += formatex(Query[Len], charsmax(Query), "UPDATE `Players` SET k_knife = ^"%i^", ",Player_Info[id][k_knife]);
  Len += formatex(Query[Len], charsmax(Query)-Len, "k_ak47 = ^"%i^", ", Player_Info[id][k_ak47]);
  Len += formatex(Query[Len], charsmax(Query)-Len, "k_m4a1 = ^"%i^", ", Player_Info[id][k_m4a1]);
  Len += formatex(Query[Len], charsmax(Query)-Len, "k_awp = ^"%i^", ", Player_Info[id][k_awp]);
  Len += formatex(Query[Len], charsmax(Query)-Len, "k_deagle = ^"%i^", ", Player_Info[id][k_deagle]);
  Len += formatex(Query[Len], charsmax(Query)-Len, "SelectedKnife = ^"%i^", ", Player_Info[id][SelectedKnife]);
  Len += formatex(Query[Len], charsmax(Query)-Len, "SelectedAK = ^"%i^", ", Player_Info[id][SelectedAK]);
  Len += formatex(Query[Len], charsmax(Query)-Len, "SelectedM4A1 = ^"%i^", ", Player_Info[id][SelectedM4A1]);
  Len += formatex(Query[Len], charsmax(Query)-Len, "SelectedAWP = ^"%i^", ", Player_Info[id][SelectedAWP]);
  Len += formatex(Query[Len], charsmax(Query)-Len, "SelectedDEAGLE = ^"%i^", ", Player_Info[id][SelectedDEAGLE]);
  Len += formatex(Query[Len], charsmax(Query)-Len, "l_exp = ^"%i^", ", floatround(Player_Info[id][l_exp]*100.0))
  Len += formatex(Query[Len], charsmax(Query)-Len, "money = ^"%i^", ", floatround(Player_Info[id][money]*100.0))
  Len += formatex(Query[Len], charsmax(Query)-Len, "isVip = ^"%i^", ", Player_Info[id][v_isVip]);
  Len += formatex(Query[Len], charsmax(Query)-Len, "ad_level = ^"%i^", ", Player_Info[id][ad_level]);
  if(Player_Info[id][v_isVip])
  Len += formatex(Query[Len], charsmax(Query)-Len, "vipTime = ^"%i^", ", Player_Info[id][v_time] - get_user_time(id));
  Len += formatex(Query[Len], charsmax(Query)-Len, "PlayTime = ^"%i^", ", Player_Info[id][PlayTime]+get_user_time(id));
  Len += formatex(Query[Len], charsmax(Query)-Len, "Knifeshow = ^"%i^", ", Player_Info[id][Knifeshow]);

  Len += formatex(Query[Len], charsmax(Query)-Len, "lefthud = ^"%i^", ", Player_Settings[id][s_lefthud]);
  Len += formatex(Query[Len], charsmax(Query)-Len, "bottomhud = ^"%i^", ", Player_Settings[id][s_bottomhud]);

  Len += formatex(Query[Len], charsmax(Query)-Len, "havePrefix = ^"%i^", ", Player_Info[id][havePrefix]);
  Len += formatex(Query[Len], charsmax(Query)-Len, "ChatPrefix = ^"%s^", ", Player_Info[id][ChatPrefix]);


  Len += formatex(Query[Len], charsmax(Query)-Len, "name = ^"%s^" WHERE steamid = ^"%s^";", Player_Info[id][PlayerName], Player_Info[id][steamid]);
  SQL_ThreadQuery(g_SqlTuple, "QuerySetData", Query);
}
public QuerySetData(FailState, Handle:Query, Error[], Errcode, Data[], DataSize, Float:Queuetime) {
	if(FailState == TQUERY_CONNECT_FAILED || FailState == TQUERY_QUERY_FAILED) {
		log_amx("%s", Error);
		return;
	}
}
public UpdateSkinKills(id)
{
  new Len;

  new m_sizeofAK47 = sizeof(WeaponAK);
  new m_sizeofM4A1 = sizeof(WeaponM4A1);
  new m_sizeofAWP = sizeof(WeaponAWP);
  new m_sizeofDEAGLE = sizeof(WeaponDeagle);
  new m_sizeofKnife = sizeof(WeaponKnife);

  Len += formatex(Query[Len], charsmax(Query), "UPDATE `WeaponKills` SET name = ^"%s^", ",Player_Info[id][PlayerName]);

  for(new i; i < m_sizeofAK47; i++)
  Len += formatex(Query[Len], charsmax(Query)-Len, "ak_%i = ^"%i^", ", i, AKSkinKills[id][i][killsinweapon]);

  for(new i; i < m_sizeofM4A1; i++)
  Len += formatex(Query[Len], charsmax(Query)-Len, "m4a1_%i = ^"%i^", ", i, M4A1SkinKills[id][i][killsinweapon]);

  for(new i; i< m_sizeofAWP; i++)
  Len += formatex(Query[Len], charsmax(Query)-Len, "awp_%i = ^"%i^", ", i, AWPSkinKills[id][i][killsinweapon]);

  for(new i; i < m_sizeofDEAGLE; i++)
  Len += formatex(Query[Len], charsmax(Query)-Len, "deagle_%i = ^"%i^", ", i, DeagleSkinKills[id][i][killsinweapon]);

  for(new i; i < m_sizeofKnife; i++)
  Len += formatex(Query[Len], charsmax(Query)-Len, "knife_%i = ^"%i^", ", i, KnifeSkinKills[id][i][killsinweapon]);

  Len += formatex(Query[Len], charsmax(Query)-Len, "name = ^"%s^" WHERE steamid = ^"%s^";", Player_Info[id][PlayerName], Player_Info[id][steamid]);
  SQL_ThreadQuery(g_SqlTuple, "QuerySetData", Query);
}

public cmdSayHook(id)
{
  new Message[512], Status[20], Lenght;

  read_args(Message, charsmax(Message));
  remove_quotes(Message);

  if(Message[0] == '@' || equal (Message, "") || Message[0] == '/')
    return PLUGIN_HANDLED;

  if(!is_user_alive(id))  
    Status = "*Halott* ";

  Lenght += formatex(String[Lenght], charsmax(String)-Lenght, "^1%s", Status);
  

  /*if(Player_Info[id][ad_level] > 0)
    Lenght += formatex(String[Lenght], charsmax(String)-Lenght, "^4%s", AdminPermissions[Player_Info[id][ad_level]][0]);
*/
  if(Player_Info[id][v_isVip] && !(get_user_flags(id) & ADMIN_LEVEL_H) )
    Lenght += formatex(String[Lenght], charsmax(String)-Lenght, "^4[V.I.P]");

  if(Player_Info[id][havePrefix])
    Lenght += formatex(String[Lenght], charsmax(String)-Lenght, "^4[%s]", Player_Info[id][ChatPrefix]);
  
  Lenght += formatex(String[Lenght], charsmax(String)-Lenght, "^4[%s]", Player_Info[id][l_name]);

  if(Player_Info[id][ad_level] > 0) 
    Lenght += formatex(String[Lenght], charsmax(String)-Lenght, "^3%s:^4", Player_Info[id][PlayerName]);
  else
    Lenght += formatex(String[Lenght], charsmax(String)-Lenght, "^3%s:^1", Player_Info[id][PlayerName]);


  format(Message, charsmax(Message), "%s %s", String, Message)

  for(new i; i < MaxPlayerInServer; i++)
  {
    if(!is_user_connected(i))
      continue;

    if(cs_get_user_team(id) == CS_TEAM_CT)
      client_print(i, id, Message);
    else if(cs_get_user_team(id) == CS_TEAM_T)
      client_print(i, id, Message);
    else
      client_print(i, id, Message);
  }
  return PLUGIN_HANDLED;
}

public plugin_end()
{
  SQL_FreeHandle(g_SqlTuple);
  ArrayDestroy(g_Advert);
}
/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1038\\ f0\\ fs16 \n\\ par }
*/
