cerere plugin Furien remake

Categoria cu cereri de pluginuri si nu numai.

Moderators: Moderatori ajutatori, Moderatori, Echipa eXtreamCS.com

Forum rules
Accesează link-ul pentru a putea vedea regulile forumului

Daca doriti sa vi se modifice un plugin, va rugam postati aici .
Joekata
Membru, skill 0
Membru, skill 0
Posts: 20
Joined: 20 Oct 2014, 21:49
Detinator Steam: Nu
CS Status: Citesc forumul eXtreamCS.com...!
Fond eXtream: 0
Contact:

24 Oct 2014, 14:47

Descriere plugin cerut:Salut vreau si eu addonsul /pluginul asta furien remake by cyby Am gasit amxx pe internet dar are reclama cine pozte sa mi-l dea si mie fara reclama?.Am gasit si sma dar imi da o eroare la compilare Cine stie il rog sa ma ajute
  • | Afiseaza codul
    #include <amxmodx>
    #include <amxmisc>
    #include <engine>
    #include <cstrike>
    #include <csx>
    #include <dhudmessage>  
    #include <fun>
    #include <fakemeta>
    #include <fakemeta_util>
    #include <hamsandwich>
    #include <nvault>
    #include <xs>
    //#include <Licentiere>
    
    #define MODELCHANGE_DELAY 0.4
    #define ROUNDSTART_DELAY 2.0
    
    #define TASK_SPAWN	06081993
    #define TASK_MODELCHANGE 100
    #define ID_MODELCHANGE (taskid - TASK_MODELCHANGE)
    
    #define ATTRIB_BOMB (1<<1)
    
    #define PDATA_SAFE 2
    #define OFFSET_CSMENUCODE 205
    #define OFFSET_LINUX 5
    #define OFFSET_CSTEAMS 114
    #define OFFSET_MODELINDEX 491
    #define OFFSET_CSDEATHS 444
    #define OFFSET_LAST_HIT_GROUP 75
    
    #define INFO_ZERO 0
    #define NTOP 10
    
    #define PEV_NADE_TYPE pev_flTimeStepSound
    #define NADE_TYPE_NAPALM 1111
    #define NADE_TYPE_FROST 2222
    #define NADE_TYPE_CRAZY 3333
    #define NADE_TYPE_KILL 4444
    #define BREAK_GLASS 0x01
    #define FFADE_IN 0x0000
    #define FFADE_STAYOUT 0x0004
    #define UNIT_SECOND (1<<12)
    #define DMG_NADE (1<<24)
    
    new 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);
    new const SECONDARY_WEAPONS_BITSUM = (1<<CSW_GLOCK18)|(1<<CSW_USP)|(1<<CSW_P228)|(1<<CSW_DEAGLE)|(1<<CSW_FIVESEVEN)|(1<<CSW_ELITE);
    
    #define TASK_BURN 10202
    #define TASK_MINUTES 1201
    #define TASK_REMOVEC4 20122
    #define TASK_AFFECT 4303
    
    #define ID_BURN (taskid - TASK_BURN)
    #define ID_MINUTE (taskid - TASK_MINUTES)
    
    static const TAG[] = "[Furien]";
    new bomba, LaserSprite; 
    new nivel[33], complete_hours[33], minutes[33];
    
    new Sprite
    new Sprite2
    new bool:HasTeleport[33]
    new Teleport_Cooldown[33], g_teleports[33] = 0
    
    new modname[32];
    
    enum { Red, Green, Blue }
    new const ClassName[] = "BonusBox"
    new const SOUND_BLINK[] = { "weapons/flashbang-1.wav" }
    new const mdl_box[] = "models/furien.tk/furienbox.mdl"
    new const get_present[] = "furien.tk/get_present.wav"
    
    enum
    {
    	FM_CS_TEAM_UNASSIGNED = 0,
    	FM_CS_TEAM_T,
    	FM_CS_TEAM_CT,
    	FM_CS_TEAM_SPECTATOR
    }
    
    new const team_names[][] =
    {
    	"UNASSIGNED",
    	"TERRORIST",
    	"CT",
    	"SPECTATOR"
    }
    
    enum
    {
    	RED = 1,
    	BLUE,
    	GREY
    }
    
    #define	m_iHideHUD			361
    #define	m_iClientHideHUD		362
    
    new const g_names[][] =
    {
    	"cTmoNe",
    	"DldCS16[.]Com-Player",
    	"(1)RCPlayer",
    	"(2)RCPlayer",
    	"(3)RCPlayer",
    	"(4)RCPlayer",
    	"(5)RCPlayer",
    	"rcplayer",
    	"gametracker.rs Player",
    	"RCPlayer-PRO",
    	"<Warrior> Player",
    	"RCPlayer",
    	"rcplayer",
    	"www.",
    	".com",
    	".ro",
    	".net",
    	".org",
    	".info",
    	":27",
    	"<warrior",
    	"warrior player",
    	"watf",
    	"pgl",
    	"[antimat]",
    	"no swear",
    	"jucator de",
    	"leagane",
    	")player",
    	"DldCS16.Com Player",
    	"csblackdevil",
    	"csblackangel",
    	"CSBESTIAL.COM",
    	"DldCS16.Com",
    	"ZombieCity.IndunGi.Ro",
    	"ecila"
    }
    
    #define FFADE_IN			0x0000		// Just here so we don't pass 0 into the function
    #define FFADE_OUT			0x0001		// Fade out (not in)
    #define FFADE_MODULATE		0x0002		// Modulate (don't blend)
    #define FFADE_STAYOUT		0x0004		// ignores the duration, stays faded out until new ScreenFade message received
    const UNIT_SEC = 0x1000
    const FFADE = 0x0000
    
    new g_Argping[33][3], g_Offset[ 33 ][ 2 ];
    
    new g_sizeof_names = sizeof g_names
    new const g_names_new[][] =
    {
    	"Furien.CsToPz.Ro",
    	"www.cstopz.ro/forum",
    	"Furien.CsToPz.Ro#Player"
    }
    
    new const explosion_sound[] = "furien.tk/misc/crazy_explode.wav";
    
    #define ANTI_FURIEN_MODEL "bdcs_afurien"
    #define FURIEN_MODEL "bdcs_furien"
    
    #define TASK_SHOWHUD 94345
    #define ARATA_HUD (taskid - TASK_SHOWHUD)
    #define TASK_AURA 3994
    #define ID_AURA (taskid - TASK_AURA)
    new g_sizeof_names_new = sizeof g_names_new - 1
    new g_filter_chars[29] = " ~`@#$%&*()-_=+\|[{]};',<>/?" //^";
    new g_names_changed = 1
    
    new bool:plrSolid[33]
    new bool:plrRestore[33]
    new plrTeam[33];
    
    new const events_sound_wav[][] =
    {
    	"furien.tk/events/bomb_explode.wav",
    	"furien.tk/events/furiens_won.wav",
    	"furien.tk/events/target_saved.wav"
    }
    
    new const events_sound_mp3[][] =
    {
    	"sound/furien.tk/events/anti_furiens_won.mp3",
    	"sound/furien.tk/events/bomb_defused.mp3"
    }
    
    new const misc_sound_wav[][] =
    {
    	"furien.tk/misc/cash.wav",
    	"furien.tk/misc/frostbreak.wav",
    	"furien.tk/misc/frostexp.wav",	
    	"furien.tk/misc/frosthit.wav",
    	"furien.tk/misc/plasma_bomb_beep.wav",
    	"furien.tk/misc/plasma_bomb_last10.wav",	
    	"furien.tk/misc/plasma_bomb_set.wav",
    	"furien.tk/misc/napalm_explode.wav"
    }
    
    new const plasma_bomb[][] =
    {
    	"models/furien.tk/p_plasmabomb.mdl",
    	"models/furien.tk/v_plasmabomb.mdl",
    	"models/furien.tk/w_plasmabomb.mdl"
    }
    
    new const random_msg[][] = 
    {
    	"Pentru.v TOP 10.g nivele apasa.e M si 5.g.",
    	"Pentru.v RANK.g apasa.e M si 3.g.",
    	"Pentru.v TOP 15 RANK.g apasa.e M si 4.g.",
    	"Pentru.v SHOP.g apasa.e M si 2.g.",
    	"Pentru a face nivel trebuie sa joci mult pe server.",
    	"Cand esti Furienul cu C4 poti merge invizibil cu CTRL.",
    	"Laserul de la Furien Detector poate detecta furienii invizibili",
    	"Nu ai ales arma? Apasa.e M si 1.g."
    }
    
    new const v_grenade_furien[][] =
    {
    	"models/furien.tk/v_fu_fi.mdl",
    	"models/furien.tk/v_fu_fr.mdl",
    	"models/furien.tk/v_fu_ki.mdl"
    }
    
    new const w_grenade_furien[][] =
    {
    	"models/furien.tk/w_fu_fi.mdl",
    	"models/furien.tk/w_fu_fr.mdl",
    	"models/furien.tk/w_fu_ki.mdl"
    }
    
    #define VIP_FLAG ADMIN_LEVEL_H
    
    new bool:g_m4a1[33], bool:g_ak47[33], bool:g_deagle[33], bool:g_used_life[33], bool:g_pet[33], item_pet[33];
    
    static const p_deagle[] = "models/furien.tk/p_deagle.mdl";
    static const p_ak47[] = "models/furien.tk/p_ak47.mdl";
    static const p_m4a1[] = "models/furien.tk/p_m4a1.mdl";
    static const v_deagle[] = "models/furien.tk/v_deagle.mdl";
    static const v_ak47[] = "models/furien.tk/v_ak47.mdl";
    static const v_m4a1[] = "models/furien.tk/v_m4a1.mdl";
    
    new const items_menu[][] =
    {
    	"AK-47 Gold",
    	"M4A1 Gold",
    	"Deagle Gold",
    	"Life",
    	"Pet"
    }
    
    new const cost[] =
    {
    	15,
    	20,
    	10,
    	20,
    	20
    }
    
    const PEV_ADDITIONAL_AMMO = pev_iuser1
    const PRIMARY_WEAPONS_BIT_SUM = (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_BIT_SUM = (1<<CSW_P228)|(1<<CSW_ELITE)|(1<<CSW_FIVESEVEN)|(1<<CSW_USP)|(1<<CSW_GLOCK18)|(1<<CSW_DEAGLE)
    #define dmin Float:{ -2.440000, -3.540000, -4.960000 }
    #define dmax Float:{ 5.880000, 3.780000, 4.750000 }
    
    #define fm_remove_entity(%1) 		engfunc(EngFunc_RemoveEntity, %1)
    #define fm_find_ent_by_class(%1,%2) 	engfunc(EngFunc_FindEntityByString, %1, "classname", %2)
    
    #define PET_FLAG 			pev_flTimeStepSound
    #define PET_KILLED 			389
    
    static const pet_model[] = "models/stukabat.mdl"
    static const pet_sounds[][] = { "bullchicken/bc_die1.wav", "bullchicken/bc_die2.wav", "bullchicken/bc_die3.wav", "bullchicken/bc_idle1.wav", "bullchicken/bc_pain3.wav" }
    static const pet_idle = 13
    static const pet_run = 13
    static const pet_die = 5
    static const Float:pet_idle_speed = 0.5
    static const Float:pet_run_speed = 13.0
    
    #define write_coord_f(%1)	engfunc(EngFunc_WriteCoord,%1)
    
    new Trie:g_tClassNames
    
    new bool:g_endround;
    
    new const knife_furien[] = "models/furien.tk/v_furienknife.mdl";
    new const super_knife_furien[] = "models/furien.tk/v_superknifefurien.mdl";
    new g_msgStatusIcon;
    
    #define flag_get(%1,%2)		(%1 & (1 << (%2 & 31)))
    #define flag_set(%1,%2)		(%1 |= (1 << (%2 & 31)));
    #define flag_unset(%1,%2)	(%1 &= ~(1 << (%2 & 31)));
    
    #define SPECMODE_ALIVE 0 
    
    new g_HasCustomModel, g_msgHideWeapon, g_msgCrosshair;
    new Float:g_ModelChangeTargetTime
    new g_CustomPlayerModel[33][32];
    
    new const burn_player[][] =
    {
    	"furien.tk/player/anti-furiens/burn1.wav",
    	"furien.tk/player/anti-furiens/burn2.wav",
    	"furien.tk/player/anti-furiens/burn3.wav"
    }
    
    new const start_sounds[][] =
    {
    	"furien.tk/misc/time1.wav",
    	"furien.tk/misc/time2.wav",
    	"furien.tk/misc/time3.wav",
    	"furien.tk/misc/time4.wav",
    	"furien.tk/misc/time5.wav"
    };
    
    new const FURIEN_ITEMS[][] =
    {
    	"Super Knife",
    	"Health [+40]",
    	"Armor [+50]",
    	"No Flash",
    	"Napalm Nade",
    	"Frost Nade",
    	"Kill Nade"
    }
    
    new const ANTI_FURIEN_ITEMS[][] =
    {
    	"Furien Detector",
    	"Health [+50]",
    	"Armor [+60]",
    	"No Frost",
    	"He Grenade",
    	"Flash Grenade"
    }
    
    new const FURIEN_COST[] =
    {
    	20,
    	15,
    	15,
    	10,
    	10,
    	10,
    	50
    }
    
    new const ANTI_FURIEN_COST[] =
    {
    	1200,
    	10,
    	10,
    	5,
    	5,
    	5
    }
    
    new const LEVELS[] =
    {
    	0, // nu-mi pasa.
    	2, // 1
    	4, // 2
    	6, // 3
    	8, // 4
    	10, // 5
    	12, // 6
    	14, // 7
    	16, // 8
    	18, // 9
    	20, // 10
    	22, // 11
    	24, // 12
    	26, // 13
    	28, // 14
    	30, // 15
    	32, // 16
    	34, // 17
    	36, // 18
    	38, // 19
    	40, // 20
    	42, // 21
    	44, // 22
    	46, // 23
    	48, // 24
    	50 // 25
    }
    
    #define TASK_CANPLANT 10001
    #define HIDE_HEALTH (1<<3)
    #define HIDE_MONEY (1<<5)
    
    new mp_freezetime, bool:g_dontdelete;
    new SecondsUntillInvasion, salvare_nvault, g_msgfog;
    
    new g_end_health[33], mp_roundtime;
    
    new bool:g_cmdguns[33], g_primary_select[33], g_secondary_select[33], g_gunsselect[33];
    
    new bool:have_killnade[33];
    
    new const PRIMARY_NAME[][] =
    {
    	"",
    	"MP5",
    	"GALIL",
    	"AUG",
    	"SG552"
    }
    
    new const SECONDARY_NAME[][] =
    {
    	"",
    	"GLOCK18",
    	"USP"
    }
    
    new const wp_give_primary[][] = 
    {
    	"",
    	"weapon_mp5navy",
    	"weapon_galil",
    	"weapon_aug",
    	"weapon_sg552"
    }
    
    new const wp_give_secondary[][] =
    {
    	"",
    	"weapon_glock18",
    	"weapon_usp"
    }
    
    new const bullets_primary[] =
    {
    	CSW_MP5NAVY,
    	CSW_MP5NAVY,
    	CSW_GALIL,
    	CSW_AUG,
    	CSW_SG552
    }
    
    new const bullets_secondary[] =
    {
    	CSW_GLOCK18,
    	CSW_GLOCK18,
    	CSW_USP
    }
    
    new const DMG_CS_BULLETS_KNIFE = (DMG_NEVERGIB | DMG_BULLET)
    new bool:g_noflash[33], bool:g_nofrost[33], bool:g_superknife[33], bool:g_furiendetector[33];
    new bool:savior[33], bool:destroyer[33];
    
    new g_c4timer, pointnum, g_msgScreenFade, beam_effect;
    new bool:b_planted = false, bool:g_firstround = true;
    
    new const ambience[] = "sound/furien.tk/misc/ambience.mp3";
    
    new bool:has_parachute[33]
    new para_ent[33]
    new jumpnum[33] = 0
    new bool:dojump[33] = false
    
    new restart_seconds = 20;
    new g_rounds = 0;
    #define MAX_PLAYERS	32
    #define Ham_Player_ResetMaxSpeed Ham_Item_PreFrame
    
    new g_iMaxPlayers, g_frozen[33], g_burning_duration[33];
    #define FIRST_PLAYER_ID	1
    #define IsPlayer(%1)	(FIRST_PLAYER_ID <= %1 <= g_iMaxPlayers)
    #define XO_WEAPONBOX				4
    #define m_rgpPlayerItems_wpnbx_Slot5	39
    #define IsWeaponBoxC4(%1)	(get_pdata_cbase(%1, m_rgpPlayerItems_wpnbx_Slot5, XO_WEAPONBOX) > 0)
    new g_msgSayText;
    #define ID_AFFECT (taskid - TASK_AFFECT)
    
    new const Float:g_flCoords[][] = 
    {
    	{0.50, 0.40},
    	{0.56, 0.44},
    	{0.60, 0.50},
    	{0.56, 0.56},
    	{0.50, 0.60},
    	{0.44, 0.56},
    	{0.40, 0.50},
    	{0.44, 0.44}
    }
    
    new g_iPlayerPos[33];
    new smoke_spr, lighting, frostgib, firegib, frostexp, fireexp, trail_spr, flame_spr, mdl_glass, crazygib, crazyexp, spr_nadebits, spr_blood_drop, spr_blood_spray;
    new event_hud, g_screenshake, g_msg_teaminfo, mp_startmoney, mesaj_sync;
    
    new g_money[33];
    
    #define INFO_ZERO 0
    #define NTOP 10
    #define TIME 5.0
    
    new toplevels[33], tophours[33], topminutes[33];
    new topnames[33][33];
    
    new data_save[64]
    new const g_szClassName[] = "ScanCampers";
    
    new cvar_activebox, CvarTeleportCooldown, CvarTeleportRange, CvarFadeTime, CvarColor, CvarHpMax, cvar_activefog, cvar_activehuds;
    
    new Float:g_fUserOrigin[33][3];
    new Float:g_fUserOldOrigin[33][3];
    
    new bool:g_bSpawnCheckEnabled = false;
    new bool:g_bUserIsCamping[33];
    new g_iUserCampSeconds[33];
    new g_iMagicEntity;
    
    new bool:active_box, bool:active_fog, bool:active_huds;
    
    public plugin_init()
    {
    	register_plugin("Furien Mod", "1.1.2", "cyby")
    	
    	RegisterHam(Ham_Spawn, "player", "spawn_post", 1)
    	RegisterHam(Ham_Player_ResetMaxSpeed, "player", "reset_max_speed", 1)
    	
    	register_clcmd("say /shop", "shop_enter")
    	register_clcmd("say shop", "shop_enter")
    	register_clcmd("say /meniu" ,"game_menu")
            register_clcmd("chooseteam", "game_menu")
    	register_clcmd("say /level", "detail_level")
    	register_clcmd("say /resetscore", "reset_score")
    	register_clcmd("say /rs", "reset_score")
    	register_clcmd("say rs", "reset_score")
    	register_clcmd("say resetscore", "reset_score")
    	register_clcmd("drop", "hook_drop")
    	
    	register_logevent("get_bomb", 3, "2=Spawned_With_The_Bomb")
    	register_message(get_user_msgid("SendAudio"), "send_audio")
    	register_message(get_user_msgid("TextMsg"), "message_textmsg")
    	register_event("HLTV", "new_round", "a", "1=0", "2=0")
    	register_logevent("end_round", 2, "1=Round_End")
    	register_forward(FM_ClientUserInfoChanged, "ChangeName")
    	register_forward(FM_EmitSound, "sound_emit")
    	RegisterHam(Ham_Think, "grenade", "think_grenade")
    	register_forward(FM_CmdStart, "CmdStart")
    	register_forward(FM_SetModel, "set_model")
    	RegisterHam(Ham_Killed, "player", "killed_player")
    	RegisterHam(Ham_Killed, "player", "player_killed_post", 1)
    	register_forward(FM_PlayerPreThink, "prethink_player")
    	register_forward(FM_PlayerPostThink, "prethink_player_post")
    	register_forward(FM_AddToFullPack, "addToFullPack", 1)
    	register_event("CurWeapon", "check_weapon", "be", "1=1")
    	RegisterHam(Ham_Touch, "weaponbox", "CWeaponBox_Touch")
    	RegisterHam(Ham_Touch, "armoury_entity", "GroundWeapon_Touch")
    	g_msgHideWeapon = get_user_msgid("HideWeapon");
    	g_msgCrosshair = get_user_msgid("Crosshair");
    	register_message(g_msgHideWeapon, "messageHideWeapon")
    	register_event("HideWeapon", "Event_HideWeapon", "b")
    	RegisterHam(Ham_Touch, "weapon_shield", "GroundWeapon_Touch")
    	RegisterHam(Ham_Touch, "grenade", "ham_touch")
    	register_message(get_user_msgid("ScreenFade"), "msg_screenfade")
    	register_message(get_user_msgid("ShowMenu"), "message_show_menu")
    	register_message(get_user_msgid("VGUIMenu"), "message_vgui_menu")
    	RegisterHam(Ham_TakeDamage, "player", "ham_take_damage", 0)
    	register_event("Damage", "on_damage", "b", "2!0", "3=0", "4!0")	
    	register_event("ResetHUD", "newSpawn", "be")
    	register_forward(FM_SetClientKeyValue, "fw_SetClientKeyValue")
    	register_event("Money", "eventMoney", "b")
    	g_msgStatusIcon = get_user_msgid("StatusIcon")
    	register_message(get_user_msgid("ScoreAttrib"), "score_attrib")
    	register_message(g_msgStatusIcon, "msgStatusIcon")
    	mp_freezetime = get_cvar_pointer("mp_freezetime")
    	register_clcmd("jointeam", "block_command")
    	register_clcmd("fullupdate", "block_command")
    	register_forward(FM_GetGameDescription, "set_gamename")
    	mp_startmoney = register_cvar("furien_start_money", "1")
    	register_forward(FM_Touch, "fwdTouch")
    	mp_roundtime = get_cvar_pointer("mp_roundtime")
    	register_forward(FM_UpdateClientData, "Data")
    	set_task(2.0, "Calcu", 232222, _, _, "b")
    	register_event("DeathMsg", "Fix", "a")
    	register_event("TeamInfo", "Fix", "a")
    	set_pcvar_num(mp_freezetime, 5)
    	set_pcvar_num(mp_roundtime, 2)
    	pointnum = get_cvar_pointer("mp_c4timer")
    	
    	cvar_activebox = register_cvar("furien_bonusbox", "1")
    	CvarTeleportCooldown = register_cvar("furien_bb_tel_cd", "10")
    	CvarTeleportRange = register_cvar("furien_bb_tel_range", "123456789")
    	CvarFadeTime = register_cvar("furien_bb_tel_fadetime", "1.5")
    	CvarColor = register_cvar("furien_bb_tel_color", "255255255")
    	CvarHpMax = register_cvar("furien_bb_bns_max", "250")
    	cvar_activefog = register_cvar("furien_fog_effects", "1")
    	cvar_activehuds = register_cvar("furien_huds_eliminate", "1")
    	
    	new iEnt
    	iEnt = create_entity("info_target")
    	set_pev(iEnt, pev_classname, "check_speed")
    	set_pev(iEnt, pev_nextthink, get_gametime() + 0.1)
    	register_think("check_speed", "set_furien_invisibility")
    	register_buy_cmd()
    	anti_camp()
    	
    	set_task(1.0, "first_round", _, _, _, "a", restart_seconds)
    	set_task(60.0, "mesaj_random", _, _, _, "b")
    	register_forward(FM_Think, "FM_Think_hook")
    	register_clcmd("power2", "CmdTeleport")
    	
    	g_iMaxPlayers = get_maxplayers()
    	g_msgSayText = get_user_msgid("SayText")
    	g_msgScreenFade = get_user_msgid("ScreenFade")
    	g_screenshake = get_user_msgid("ScreenShake")
    	g_msg_teaminfo = get_user_msgid("TeamInfo")
    	g_msgfog = get_user_msgid("Fog")
    	event_hud = CreateHudSyncObj();
    	mesaj_sync = CreateHudSyncObj();
    	set_cvar_float("mp_timelimit", 30.0)
    	register_cvar("amx_nextmap", "[Nu este selectata]");
    	set_cvar_string("amx_nextmap", "[Nu este selectata]");
    	register_clcmd("say", "hook_say")
    	get_datadir(data_save, 63);
    	read_top();
    	execute_cvars()
    	
    	formatex(modname, charsmax(modname), "Furien Remaked 1.1.2")
    }
    
    public execute_cvars()
    {
    	if(!get_pcvar_num(cvar_activebox))
    		active_box = false
    	else
    		active_box = true
    		
    	if(!get_pcvar_num(cvar_activefog))
    		active_fog = false
    	else
    		active_fog = true
    		
    	if(!get_pcvar_num(cvar_activehuds))
    		active_huds = true
    	else
    		active_huds = false
    }
    
    public plugin_precache()
    {
    	precache_generic(ambience)
    	precache_model(knife_furien)
    	precache_sound(explosion_sound)
    	precache_model(super_knife_furien)
    	precache_model(pet_model)
    	precache_model(p_deagle)
    	precache_model(p_ak47)
    	precache_model(p_m4a1)
    	precache_model(v_deagle)
    	precache_model(v_m4a1)
    	precache_model(v_ak47)
    	precache_model(mdl_box)
    	precache_sound(get_present)
    	precache_sound(SOUND_BLINK)
    	Sprite = precache_model("sprites/shockwave.spr")
    	Sprite2 = precache_model("sprites/blueflare2.spr")
    	g_tClassNames = TrieCreate()
    	RegisterHam(Ham_TraceAttack, "worldspawn", "TraceAttack", 1)
    	TrieSetCell(g_tClassNames, "worldspawn", 1)
    	RegisterHam(Ham_TraceAttack, "player", "TraceAttack", 1)
    	TrieSetCell(g_tClassNames, "player", 1)
    	register_forward(FM_Spawn, "Spawn", 1)
    	LaserSprite = precache_model("sprites/white.spr")
    	beam_effect = precache_model("sprites/furien.tk/beam.spr")
    	smoke_spr = precache_model("sprites/black_smoke3.spr")
    	lighting = precache_model("sprites/lgtning.spr")
    	frostgib = precache_model("sprites/furien.tk/frostgib.spr")
    	firegib = precache_model("sprites/furien.tk/firegib.spr")
    	frostexp = precache_model("sprites/furien.tk/frostexp.spr")
    	fireexp = precache_model("sprites/furien.tk/fireexp.spr")
    	trail_spr = precache_model("sprites/furien.tk/trail.spr")
    	flame_spr = precache_model("sprites/furien.tk/flame.spr")
    	mdl_glass = precache_model("models/glassgibs.mdl")
    	crazygib = precache_model("sprites/furien.tk/crazygib.spr")
    	crazyexp = precache_model("sprites/furien.tk/crazyexp.spr")
    	spr_nadebits  = precache_model("models/chromegibs.mdl")
    	spr_blood_drop = precache_model("sprites/blood.spr")
    	spr_blood_spray = precache_model("sprites/bloodspray.spr")
    	precache_model("models/parachute.mdl")
    	static model[128];
    	formatex(model, charsmax(model), "models/player/%s/%s.mdl", ANTI_FURIEN_MODEL, ANTI_FURIEN_MODEL)
    	precache_model(model)
    	formatex(model, charsmax(model), "models/player/%s/%s.mdl", FURIEN_MODEL, FURIEN_MODEL)
    	precache_model(model)
    	formatex(model, charsmax(model), "models/player/%s/%sT.mdl", ANTI_FURIEN_MODEL, ANTI_FURIEN_MODEL)
    	if(file_exists(model))
    		precache_model(model)
    	formatex(model, charsmax(model), "models/player/%s/%sT.mdl", FURIEN_MODEL, FURIEN_MODEL)
    	if(file_exists(model))
    		precache_model(model)
    	
    	static i;
    	for(i = 0; i < sizeof plasma_bomb; i++)
    		precache_model(plasma_bomb)
    		
    	for(i = 0; i < sizeof misc_sound_wav; i++)
    		precache_sound(misc_sound_wav)
    		
    	for(i = 0; i < sizeof events_sound_mp3; i++)
    		precache_generic(events_sound_mp3)
    		
    	for(i = 0; i < sizeof events_sound_wav; i++)
    		precache_sound(events_sound_wav)
    		
    	for(i = 0; i < sizeof w_grenade_furien; i++)
    		precache_model(w_grenade_furien)
    		
    	for(i = 0; i < sizeof v_grenade_furien; i++)
    		precache_model(v_grenade_furien)
    		
    	for(i = 0; i < sizeof burn_player; i++)
    		precache_sound(burn_player)
    		
    	for(i = 0; i < sizeof start_sounds; i++)
    		precache_sound(start_sounds)
    	for(i = 0; i < sizeof pet_sounds; i++)
    		precache_sound(pet_sounds)
    }
    
    public Spawn(iEnt)
    {
    	if(pev_valid(iEnt))
    	{
    		static szClassName[32];
    		pev(iEnt, pev_classname, szClassName, charsmax(szClassName))
    		if(!TrieKeyExists(g_tClassNames, szClassName))
    		{
    			RegisterHam(Ham_TraceAttack, szClassName, "TraceAttack", 1)
    			TrieSetCell(g_tClassNames, szClassName, 1)
    		}
    	}
    }
    
    public plugin_cfg()
    {
    	salvare_nvault = nvault_open("furien_lvl")
    	
    	server_cmd("exec addons/amxmodx/configs/furien_remaked.cfg");
    	
    	if(salvare_nvault == INVALID_HANDLE)
            set_fail_state("Eroare la deschiderea bazei de date.")
    }
    
    public plugin_end()
    {
    	TrieDestroy(g_tClassNames)
    	nvault_close(salvare_nvault)
    }
    
    public plugin_natives()
    {
    	register_native("get_dollars", "get_dollars", 1)
    	register_native("set_dollars", "set_dollars", 1)
    }
    
    public get_dollars(id)
    {
    	if(!IsPlayer(id))
    		return -1;
    		
    	return g_money[id];
    }
    
    public set_dollars(id, amount)
    {
    	if(!IsPlayer(id))
    		return -1;
    		
    	g_money[id] = amount
    	return 1;
    }
    	
    public mesaj_random()
    	color(0, ".v%s.g %s", TAG, random_msg[random_num(0, sizeof random_msg - 1)])
    
    public spawn_post(id)
    {
    	if(!is_user_alive(id))
    		return
    	
    	set_vars_speed(id)
    	savior[id] = false
    	destroyer[id] = false
    	g_frozen[id] = false
    	HasTeleport[id] = false
    	g_burning_duration[id] = 0
    	remove_task(id+TASK_BURN)
    	strip_user_weapons(id)
    	ham_give_weapon(id, "weapon_knife")
    	ham_give_weapon(id, "weapon_hegrenade")
    	ham_give_weapon(id, "weapon_flashbang")
    	g_bUserIsCamping[id] = false;
    	g_cmdguns[id] = false
    	g_iUserCampSeconds[id] = 0;
    	set_user_rendering(id)
    	cs_set_user_defuse(id, 0)
    	remove_task(id+TASK_AURA)
    	have_killnade[id] = false
    	if(g_firstround)
    		set_user_godmode(id, 1)
    	else
    		set_user_godmode(id, 0)
    	
    	ExecuteHamB(Ham_Player_ResetMaxSpeed, id)
    	switch(get_user_team(id))
    	{
    		case 1:
    		{
    			set_user_gravity(id, 0.375)
    			set_user_footsteps(id, 1)
    			ham_give_weapon(id, "weapon_flashbang")
    			g_nofrost[id] = false
    			g_furiendetector[id] = false
    			remove_task(id+TASK_MODELCHANGE)
    			flag_set(g_HasCustomModel, id)
    			copy(g_CustomPlayerModel[id], charsmax(g_CustomPlayerModel[]), FURIEN_MODEL)
    			new currentmodel[32]
    			fm_cs_get_user_model(id, currentmodel, charsmax(currentmodel))
    			if(!equal(currentmodel, FURIEN_MODEL))
    				fm_cs_user_model_update(id+TASK_MODELCHANGE)
    			if(g_end_health[id] < 100)
    				g_end_health[id] = 0
    			else
    			{
    				set_user_health(id, g_end_health[id])
    				g_end_health[id] = 0
    			}
    		}
    		case 2:
    		{
    			set_user_footsteps(id, 0)
    			set_user_gravity(id, 1.0)
    			remove_task(id+TASK_MODELCHANGE)
    			flag_set(g_HasCustomModel, id)
    			copy(g_CustomPlayerModel[id], charsmax(g_CustomPlayerModel[]), ANTI_FURIEN_MODEL)
    			new currentmodel[32]
    			fm_cs_get_user_model(id, currentmodel, charsmax(currentmodel))
    			if(!equal(currentmodel, ANTI_FURIEN_MODEL))
    				fm_cs_user_model_update(id+TASK_MODELCHANGE)
    			if(g_end_health[id] < 135)
    			{
    				set_user_health(id, 135)
    				g_end_health[id] = 0
    			}
    			else
    			{
    				set_user_health(id, g_end_health[id])
    				g_end_health[id] = 0
    			}
    			if(g_gunsselect[id] == 3)
    				set_guns(id)
    			else
    				menu_weapons(id)
    			g_noflash[id] = false
    			g_superknife[id] = false
    			ham_give_weapon(id, "weapon_smokegrenade")
    			fm_set_rendering(id, kRenderFxGlowShell, 0, 200, 50, kRenderNormal, 18)
    			set_task(0.2, "remove_c4")
    		}
    	}
    }
    
    public remove_c4()
    {
    	for(new id; id <= 32; id++)
    	{
    		if(IsPlayer(id))
    		{
    			if(user_has_weapon(id, CSW_C4))
    			{
    				ham_strip_weapon(id, "weapon_c4")
    				engclient_cmd(id, "weapon_knife")
    				check_weapon(id)
    			}
    		}
    	}
    }
    
    public HealthHud(taskid)
    {
    	static id;
    	id = ARATA_HUD;
    	
    	if(!is_user_alive(id))
    	{
    		id = pev(id, pev_iuser2)
    		
    		if(!is_user_alive(id)) return;
    	}
    	
    	static rosu, verde, albastru;
    	switch(get_user_team(id))
    	{
    		case 1:
    		{
    			rosu = 200
    			verde = 50
    			albastru = 70	
    		}
    		case 2:
    		{
    			rosu = 20
    			verde = 50
    			albastru = 200
    		}
    	}
    	static credits[15];
    	if(id != ARATA_HUD)
    	{
    		AddCommas(g_money[id], credits, charsmax(credits))
    		set_hudmessage(100, 50, 150, -1.0, 0.85, 1, 0.3, 0.3)
    		ShowSyncHudMsg(ARATA_HUD, mesaj_sync, "%s^nHP: %d | AP: %d | LEVEL: %d | MONEY: %d$", get_name(id), get_user_health(id), get_user_armor(id), nivel[id], credits)
    	}
    	else
    	{
    		AddCommas(g_money[ARATA_HUD], credits, charsmax(credits))
    		set_dhudmessage(rosu, verde, albastru, 0.01, 0.94, 0, 0.0, 0.3, 0.0, 0.0)
    		show_dhudmessage(ARATA_HUD, "HP: %d | AP: %d | %s$ | LVL: %d", get_user_health(ARATA_HUD), get_user_armor(ARATA_HUD), credits, nivel[ARATA_HUD])
    	}
    }
    
    public block_command(id)
    	return PLUGIN_HANDLED;
    
    public anti_camp()
    {
    	new iEnt;
    	CreateMagicEntity:
    	
    	iEnt = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, "info_target"));
    	if(!iEnt || !pev_valid(iEnt))
    		goto CreateMagicEntity;
    	
    	set_pev(iEnt, pev_classname, g_szClassName);
    	set_pev(iEnt, pev_nextthink, get_gametime() + 0.3);
    	register_forward(FM_Think, "FM_MagicEntityThink");
    	
    	g_iMagicEntity = iEnt;
    }
    
    public reset_max_speed(id)
    {
    	if(g_endround)
    		set_pev(id, pev_maxspeed, 70.0)
    		
    	if(is_user_alive(id) && get_user_team(id) == 1 && get_user_maxspeed(id) != 1.0)
    		set_pev(id, pev_maxspeed, 850.0)
    		
    	if(is_user_alive(id) && get_user_team(id) == 2 && g_frozen[id])
    		set_pev(id, pev_maxspeed, 1.0)
    }
    
    public client_connect(id)
    	verify_name(id)
    
    public set_furien_invisibility(iEnt) 
    {
    	entity_set_float(iEnt, EV_FL_nextthink, get_gametime() + 0.1)
    
    	static iPlayers[32], iNum, id, Float:fVecVelocity[3], iSpeed;
    
    	get_players(iPlayers, iNum, "ae", "TERRORIST")
    
    	for(new i; i < iNum; i++)
    	{
    		id = iPlayers
    		if(get_user_weapon(id) == CSW_KNIFE || user_has_weapon(id, CSW_SMOKEGRENADE) && have_killnade[id])
    		{
    			entity_get_vector(id, EV_VEC_velocity, fVecVelocity)
    			iSpeed = floatround(vector_length(fVecVelocity))
    			if(iSpeed < 300)
    				set_user_rendering(id, kRenderFxNone, 0, 0, 0, kRenderTransAlpha, iSpeed/1)
    			else
    				set_user_rendering(id)
    			if(destroyer[id])
    			{
    				new button = pev(id, pev_button)
    				if(button&IN_DUCK)
    				{
    					if(iSpeed < 350)
    						set_user_rendering(id, kRenderFxNone, 0, 0, 0, kRenderTransAlpha, 0)
    					else
    						set_user_rendering(id, kRenderFxNone, 0, 0, 0, kRenderTransAlpha, iSpeed/1)
    				}
    			}
    		}
    		else
    			set_user_rendering(id)
    	}
    }
    
    public send_audio()
    {
    	static sunet[17]
    	get_msg_arg_string(2, sunet, charsmax(sunet))
    	
    	if(equal(sunet, "terwin") || equal(sunet, "ctwin") || equal(sunet, "rounddraw") || equal(sunet, "bombpl") || equal(sunet, "bombdef"))
    		return PLUGIN_HANDLED;
    	
    	return PLUGIN_CONTINUE;
    }
    
    public message_textmsg()
    {
    	static textmsg[22]
    	get_msg_arg_string(2, textmsg, charsmax(textmsg))
    	
    	if(equal(textmsg, "#Game_will_restart_in"))
    	{
    		static secunde[4], cifra;
    		get_msg_arg_string(3, secunde, charsmax(secunde))
    		cifra = str_to_num(secunde)
    		set_hudmessage(164, 211, 238, -1.0, 0.15, 1, 3.1, 3.0)
    		ShowSyncHudMsg(0, event_hud, "Jocul se restarteaza in: %d secund%s!", cifra, cifra < 2 ? "a" : "e")
    		return PLUGIN_HANDLED;
    	}
    	else if(equal(textmsg, "#Game_Commencing"))
    	{
    		set_hudmessage(164, 211, 238, -1.0, 0.15, 1, 3.1, 3.0)
    		ShowSyncHudMsg(0, event_hud, "Incepe jocul!")
    		return PLUGIN_HANDLED;
    	}
    	else if(equal(textmsg, "#Terrorists_Win"))
    	{
    		set_hudmessage(220, 30, 0, -1.0, 0.15, 1, 5.1, 5.0)
    		ShowSyncHudMsg(0, event_hud, "Furienii au eliminat rasa umana!")
    		ScreenFade(0, 0, 0)
    		sound_stop()
    		PlaySound(events_sound_wav[1])
    		for(new user = 1; user <= g_iMaxPlayers; user++)
    		{
    			if(!IsPlayer(user))
    				continue
    			
    			if(get_user_team(user) == 1)
    			{
    				g_money[user] += 5
    				color(user, ".v%s.g Ai castigat.e 5$.g pentru castigarea rundei.", TAG)
    			}
    		}
    		return PLUGIN_HANDLED;
    	}
    	else if(equal(textmsg, "#CTs_Win"))
    	{
    		set_hudmessage(0, 30, 220, -1.0, 0.15, 1, 5.1, 5.0)
    		ShowSyncHudMsg(0, event_hud, "Anti-Furienii au eliminat pericolul!")
    		ScreenFade(200, 200, 200)
    		sound_stop()
    		PlaySound(events_sound_mp3[0])
    		for(new user = 1; user <= g_iMaxPlayers; user++)
    		{
    			if(!IsPlayer(user))
    				continue
    				
    			if(get_user_team(user) == 2)
    			{
    				g_money[user] += 5
    				color(user, ".v%s.g Ai castigat.e 5$.g pentru castigarea rundei.", TAG)
    			}
    			
    			new Team = get_user_team(user);
    			if(Team == 1)
    				cs_set_user_team(user, CS_TEAM_CT);
    			if(Team == 2)
    				cs_set_user_team(user, CS_TEAM_T);
    		}
    		return PLUGIN_HANDLED;
    	}
    	else if(equal(textmsg, "#Bomb_Defused"))
    	{
    		set_hudmessage(0, 30, 220, -1.0, 0.15, 1, 5.1, 5.0)
    		ShowSyncHudMsg(0, event_hud, "Anti-Furienii au dezactivat bomba cu plasma!")
    		ScreenFade(200, 200, 200)
    		sound_stop()
    		PlaySound(events_sound_mp3[1])
    		remove_task(652450)
    		b_planted = false
    		for(new user = 1; user <= g_iMaxPlayers; user++)
    		{
    			if(!IsPlayer(user))
    				continue
    				
    			if(get_user_team(user) == 2)
    			{
    				g_money[user] += 5
    				color(user, ".v%s.g Ai castigat.e 5$.g pentru castigarea rundei.", TAG)
    			}
    			
    			new Team = get_user_team(user);
    			if(Team == 1)
    				cs_set_user_team(user, CS_TEAM_CT);
    			if(Team == 2)
    				cs_set_user_team(user, CS_TEAM_T);
    		}
    		return PLUGIN_HANDLED;
    	}
    	else if(equal(textmsg, "#Bomb_Planted"))
    	{
    		set_hudmessage(random(255), random(255), random(255), -1.0, 0.15, 1, 5.1, 5.0)
    		ShowSyncHudMsg(0, event_hud, "Furienii au plantat bomba cu plasma!")
    		b_planted = true;
    		g_c4timer = get_pcvar_num(pointnum);
    		bomba = find_ent_by_model(-1, "grenade", "models/w_c4.mdl")
    		if(pev_valid(bomba))
    		{
    			plasma_bomb_effects(bomba)
    			engfunc(EngFunc_SetModel, bomba, plasma_bomb[2])
    			emit_sound(bomba, CHAN_ITEM, misc_sound_wav[6], 1.0, ATTN_NORM, 0, PITCH_NORM)
    			set_task(1.0, "plasma_bomb_effects", bomba+652450, "", 0, "b")
    		}
    		return PLUGIN_HANDLED;
    	}
    	else if(equal(textmsg, "#Game_bomb_drop"))
    	{
    		static nume[32];
    		get_msg_arg_string(3, nume, charsmax(nume) - 1)
    		set_hudmessage(random(255), random(255), random(255), -1.0, 0.15, 1, 3.1, 3.0)
    		ShowSyncHudMsg(0, event_hud, "%s a scapat bomba cu plasma!", nume)
    		return PLUGIN_HANDLED;
    	}
    	else if(equal(textmsg, "#Game_bomb_pickup"))
    	{
    		static nume[32];
    		get_msg_arg_string(3, nume, charsmax(nume) - 1)
    		set_hudmessage(random(255), random(255), random(255), -1.0, 0.15, 1, 3.1, 3.0)
    		ShowSyncHudMsg(0, event_hud, "%s a ridicat bomba cu plasma!", nume)
    		return PLUGIN_HANDLED;
    	}
    	else if(equal(textmsg, "#Got_bomb"))
    		set_msg_arg_string(2, "Ai ridicat bomba de plasma.")
    	else if(equal(textmsg, "#Hint_spotted_a_friend"))
    		return PLUGIN_HANDLED;
    	else if(equal(textmsg, "#Hint_spotted_an_enemy"))
    		return PLUGIN_HANDLED;
    	else if(equal(textmsg, "#Hint_press_buy_to_purchase"))
    		return PLUGIN_HANDLED;
    	else if(equal(textmsg, "#Name_change_at_respawn"))
    		set_msg_arg_string(2, "Numele tau va fi schimbat runda viitoare.")
    	else if(equal(textmsg, "#Spec_Duck"))
    		return PLUGIN_HANDLED;
    	else if(equal(textmsg, "#Weapon_Cannot_Be_Dropped"))
    		set_msg_arg_string(2, "Aceasta arma nu poate fi aruncata.")
    	else if(equal(textmsg, "#Round_Draw"))
    	{
    		set_hudmessage(random(255), random(255), random(255), -1.0, 0.15, 1, 5.1, 5.0)
    		ShowSyncHudMsg(0, event_hud, "Round Draw!")
    		ScreenFade(0, 0, 0)
    		return PLUGIN_HANDLED;
    	}
    	else if(equal(textmsg, "#Target_Bombed"))
    	{
    		set_hudmessage(220, 30, 0, -1.0, 0.15, 1, 5.1, 5.0)
    		ShowSyncHudMsg(0, event_hud, "Bomba cu plasma a explodat.")
    		ScreenFade(0, 0, 0)
    		b_planted = false
    		sound_stop()
    		remove_task(652450)
    		PlaySound(events_sound_wav[0])
    		for(new user = 1; user <= g_iMaxPlayers; user++)
    		{
    			if(!IsPlayer(user))
    				continue
    				
    			if(get_user_team(user) == 1)
    			{
    				g_money[user] += 5
    				color(user, ".v%s.g Ai castigat.e 5$.g pentru castigarea rundei.", TAG)
    			}
    		}
    		return PLUGIN_HANDLED;
    	}
    	else if(equal(textmsg, "#Target_Saved"))
    	{
    		set_hudmessage(0, 30, 220, -1.0, 0.15, 1, 5.1, 5.0)
    		ShowSyncHudMsg(0, event_hud, "Locurile unde se pot planta bombele cu plasma^nau fost salvate!")
    		sound_stop()
    		PlaySound(events_sound_wav[2])
    		for(new user = 1; user <= g_iMaxPlayers; user++)
    		{
    			if(!IsPlayer(user))
    				continue
    				
    			if(get_user_team(user) == 2)
    			{
    
    				g_money[user] += 5
    				color(user, ".v%s.g Ai castigat.e 5$.g pentru castigarea rundei.", TAG)
    			}
    			
    			new Team = get_user_team(user);
    			if(Team == 1)
    				cs_set_user_team(user, CS_TEAM_CT);
    			if(Team == 2)
    				cs_set_user_team(user, CS_TEAM_T);
    		}
    		return PLUGIN_HANDLED;
    	}
    	else if(equal(textmsg, "#Hostages_Not_Rescued"))
    		return PLUGIN_HANDLED;
    
    	return PLUGIN_CONTINUE;
    }
    
    public sound_emit(id, channel, const sound[])
    {
    	if(sound[8] == 'c' && sound[9] == '4')
    		return FMRES_SUPERCEDE;
    	
    	return FMRES_IGNORED;
    }
    
    public menu_weapons(id)
    {
    	static menu;
    	menu = menu_create("\ySelecteaza-ti arma:", "guns_handler")
    	menu_additem(menu, "\yArma noua", "")
    	if(g_gunsselect[id] == 0)
    		menu_additem(menu, "\dArma anterioara", "")
    	else
    		menu_additem(menu, "\yArma anterioara", "")
    	if(g_gunsselect[id] == 0)
    		menu_additem(menu, "\dArma anterioara [+AUTOMAT DATA VIITOARE]", "")
    	else
    		menu_additem(menu, "\yArma anterioara [+AUTOMAT DATA VIITOARE]", "")
    	menu_display(id, menu, 0)
    }
    
    public guns_handler(id, menu, item)
    {
    	if(!is_user_alive(id))
    		return;
    		
    	if(get_user_team(id) != 2)
    		return
    
    	switch(item)
    	{
    		case 0:
    		{
    			g_gunsselect[id] = 1
    			primary_weap(id)
    		}
    		case 1:
    		{
    			if(g_gunsselect[id] == 0)
    				menu_weapons(id)
    			else
    			{
    				g_gunsselect[id] = 2
    				set_guns(id)
    			}
    		}
    		case 2:
    		{
    			if(g_gunsselect[id] == 0)
    				menu_weapons(id)
    			else
    			{
    				g_gunsselect[id] = 3
    				set_guns(id)
    			}
    		}
    	}
    }
    
    public primary_weap(id)
    {
    	if(!is_user_alive(id) || get_user_team(id) != 2)
    		return
    	
    	static menu_head[128], menu_item[128], tasta[2];
    	formatex(menu_head, charsmax(menu_head), "Selecteaza arma primara:")
    	new menu = menu_create(menu_head, "primary_handled")
    	for(new i = 1; i < sizeof PRIMARY_NAME; i++)
    	{
    		formatex(menu_item, charsmax(menu_item), "\y%s", PRIMARY_NAME[i])
    		tasta[0] = i
    		tasta[1] = 0
    		menu_additem(menu, menu_item, tasta)
    	}
    	if(pev_valid(id) == PDATA_SAFE)
    		set_pdata_int(id, OFFSET_CSMENUCODE, 0, OFFSET_LINUX)
    	
    	menu_display(id, menu, 0)
    }
    
    public primary_handled(id, menu, item)
    {
    	if(!is_user_alive(id) || get_user_team(id) != 2)
    		return PLUGIN_HANDLED;
    		
    	if(item == MENU_EXIT)
        {
            menu_destroy(menu);
            return PLUGIN_HANDLED;
        }
    	if(item >= sizeof PRIMARY_NAME) return PLUGIN_HANDLED;
    	
    	g_primary_select[id] = item + 1
    	menu_destroy(menu)
    	secondary_weap(id)
    	return PLUGIN_HANDLED;
    }
    
    public secondary_weap(id)
    {
    	if(!is_user_alive(id) || get_user_team(id) != 2)
    		return
    	
    	static menu_head[128], menu_item[128], tasta[2];
    	formatex(menu_head, charsmax(menu_head), "Selecteaza arma secundara:")
    	new menu = menu_create(menu_head, "secondary_handled")
    	for(new i = 1; i < sizeof SECONDARY_NAME; i++)
    	{
    		formatex(menu_item, charsmax(menu_item), "\y%s", SECONDARY_NAME[i])
    		tasta[0] = i
    		tasta[1] = 0
    		menu_additem(menu, menu_item, tasta)
    	}
    	if(pev_valid(id) == PDATA_SAFE)
    		set_pdata_int(id, OFFSET_CSMENUCODE, 0, OFFSET_LINUX)
    	menu_display(id, menu, 0)
    }
    
    public secondary_handled(id, menu, item)
    {
    	if(!is_user_alive(id) || get_user_team(id) != 2)
    		return PLUGIN_HANDLED;
    		
    	if(item == MENU_EXIT)
        {
            menu_destroy(menu);
            return PLUGIN_HANDLED;
        }
    	
    	if(item >= sizeof SECONDARY_NAME) return PLUGIN_HANDLED;
    	
    	g_secondary_select[id] = item + 1
    	menu_destroy(menu)
    	set_guns(id)
    	return PLUGIN_HANDLED;
    }
    
    public set_guns(id)
    {
    	if(!is_user_alive(id) || get_user_team(id) != 2)
    		return;
    		
    	ham_give_weapon(id, wp_give_primary[g_primary_select[id]])
    	cs_set_user_bpammo(id, bullets_primary[g_primary_select[id]], 250)
    	ham_give_weapon(id, wp_give_secondary[g_secondary_select[id]])
    	cs_set_user_bpammo(id, bullets_secondary[g_secondary_select[id]], 250)
    	g_cmdguns[id] = true
    }
    
    public new_round()
    {
    	if(g_firstround)
    	{
    		set_hudmessage(random(255), random(255), random(255), -1.0, 0.15, 1, 5.1, 5.0)
    		ShowSyncHudMsg(0, event_hud, "Inca asteptam jucatorii sa se conecteze.")
    		return;
    	}
    	
    	remove_task(TASK_CANPLANT)
    	g_endround = false
    	new Float: flTime = get_cvar_num("mp_freezetime") + (get_cvar_num("mp_roundtime") * 60) - 60.0; 
    	set_task(flTime, "task_CanPlant", TASK_CANPLANT)
    	g_dontdelete = false
    	remove_task(TASK_REMOVEC4)
    	delete_c4()
    	set_task(2.0, "delete_c4", TASK_REMOVEC4, _, _, "b")
    	set_lights("g")
    	g_ModelChangeTargetTime = get_gametime() + ROUNDSTART_DELAY
    	g_c4timer = -1;
    	b_planted = false;
    	g_rounds++
    	color(0, ".v%s.e Furien Mod.g Remaked by.v cyby.e 1.1.2.g .", TAG)
    	color(0, ".v%s.g Apasa tasta.e M.g pentru afisarea meniului de joc.", TAG)
    	SecondsUntillInvasion = 5
    	if(active_fog)
    		msg_create_fog(20, 200, 50, 1)
    	set_task(0.1, "CountDown")
    	set_hudmessage(random(255), random(255), random(255), -1.0, 0.15, 1, 5.1, 5.0)
    	ShowSyncHudMsg(0, event_hud, "Pregateste-te de lupta!^nRunda %d.", g_rounds)
    	set_task(5.2, "start_ambience")
    	static entid = FM_NULLENT
    	while((entid = fm_find_ent_by_class(entid, ClassName)))
    		fm_remove_entity(entid)
    	while((entid = fm_find_ent_by_class(entid, "bat")))
    		fm_remove_entity(entid)
    	remove_task(TASK_SPAWN)
    	g_bSpawnCheckEnabled = true
    	static player
    	for(player = 1; player <= g_iMaxPlayers; player++)
    	{
    		reset_vars(player)
    		HasTeleport[player] = false
    		if(task_exists(player+TASK_MODELCHANGE))
    		{
    			remove_task(player+TASK_MODELCHANGE)
    			fm_cs_user_model_update(player+TASK_MODELCHANGE)
    		}
    	}
    	set_task(120.0, "TaskDisableSpawnCheck", TASK_SPAWN)
    }
    
    public kill_pet(id)
    {
    	if(pev_valid(item_pet[id]))
    	{
    		set_pev(item_pet[id],pev_sequence,pet_die)
    		set_pev(item_pet[id],pev_gaitsequence,pet_die)
    		set_pev(item_pet[id],pev_framerate,1.0)
    		
    		set_pev(item_pet[id],PET_FLAG,PET_KILLED)
    		
    		engfunc(EngFunc_DropToFloor, item_pet[id])
    		
    		g_pet[id] = false
    	}	
    	item_pet[id] = 0
    }
    
    public TaskDisableSpawnCheck()
    	g_bSpawnCheckEnabled = false;
    	
    public FM_MagicEntityThink(iEnt)
    {
    	if(iEnt != g_iMagicEntity || !pev_valid(iEnt))
    		return FMRES_IGNORED;
    		
    	set_pev(iEnt, pev_nextthink, get_gametime() + 1.0)
    	static iPlayers[32];
    	static iPlayersNum;
    	
    	get_players(iPlayers, iPlayersNum, "ce", "CT")
    	if(!iPlayersNum)
    		return FMRES_IGNORED;
    		
    	static id, i;
    	for(i = 0; i < iPlayersNum; i++)
    	{
    		id = iPlayers[i];
    		
    		if(IsPlayer(id))
    		{
    			if(is_user_alive(id))
    			{
    				pev(id, pev_origin, g_fUserOrigin[id]);
    					
    				if(g_fUserOrigin[id][0] == g_fUserOldOrigin[id][0]
    					&& g_fUserOrigin[id][1] == g_fUserOldOrigin[id][1]
    					&& g_fUserOrigin[id][2] == g_fUserOldOrigin[id][2])
    				{
    					g_iUserCampSeconds[id]++;
    					if(g_iUserCampSeconds[id] == 5)
    						g_bUserIsCamping[id] = true;
    					
    					else if(g_iUserCampSeconds[id] > 5 && g_bSpawnCheckEnabled)
    					{
    						if(g_iUserCampSeconds[id] == 11)
    						{
    							color(0, ".v%s.e %s.g a primit slay pentru ca a campat sau e afk!", TAG, get_name(id))
    							
    							user_silentkill(id);
    							
    							g_bUserIsCamping[id] = false;
    							g_iUserCampSeconds[id] = 0;
    							
    						}
    						else
    							color(id, ".v%s.g Vei primi slay in.e %i.g secund%s daca nu te misti!", TAG, 11 - g_iUserCampSeconds[id], (11 - g_iUserCampSeconds[id]) == 1 ? "a" : "e")
    					}
    				}
    	
    				else if(g_fUserOrigin[id][0] != g_fUserOldOrigin[id][0]
    					|| g_fUserOrigin[id][1] != g_fUserOldOrigin[id][1]
    					|| g_fUserOrigin[id][2] != g_fUserOldOrigin[id][2]) 
    				{
    					
    					g_iUserCampSeconds[id] = 0;
    					g_bUserIsCamping[id] = false;
    				}
    			}
    		}
    		g_fUserOldOrigin[id][0] = g_fUserOrigin[id][0];
    		g_fUserOldOrigin[id][1] = g_fUserOrigin[id][1];
    		g_fUserOldOrigin[id][2] = g_fUserOrigin[id][2];
    	}
    	return FMRES_IGNORED;
    }
    
    public end_round()
    {
    	for(new id; id <= 32; id++)
    	{
    		remove_task(id+TASK_AFFECT)
    		if(is_user_alive(id) && !savior[id] && !destroyer[id])
    			g_end_health[id] = get_user_health(id)
    		if(is_user_alive(id))
    		{
    			set_user_godmode(id, 1)
    			client_cmd(id, "+jump;-jump")
    			ExecuteHamB(Ham_Player_ResetMaxSpeed, id)
    		}
    	}
    	g_c4timer = -1;
    	g_endround = true
    }
    
    public first_round()
    {
    	restart_seconds--
    	if(restart_seconds > 0)
    		g_firstround = true
    	else
    	{
    		server_cmd("sv_restart 1")
    		g_firstround = false
    		return;
    	}
    	set_hudmessage(85, 255, 170, 0.0, 0.19, 1, 1.1, 1.0)
    	show_hudmessage(0, "Asteptam ca toti jucatorii sa se conecteze.^n%d secund%s ramas%s.", restart_seconds, restart_seconds < 2 ? "a" : "e", restart_seconds < 2 ? "a" : "e")
    }
    
    public think_grenade(ent)
    {
    	if(!pev_valid(ent))
    		return HAM_IGNORED;
    	
    	static Float:dmgtime, Float:current_time
    	pev(ent, pev_dmgtime, dmgtime)
    	current_time = get_gametime()
    	
    	if(dmgtime > current_time)
    		return HAM_IGNORED;
    	
    	switch(pev(ent, PEV_NADE_TYPE))
    	{
    		case NADE_TYPE_NAPALM:
    		{
    			fire_explode(ent)
    			return HAM_SUPERCEDE;
    		}
    		case NADE_TYPE_FROST:
    		{
    			frost_explode(ent)
    			return HAM_SUPERCEDE;
    		}
    		case NADE_TYPE_CRAZY:
    		{
    			crazy_explode(ent)
    			return HAM_SUPERCEDE;
    		}
    		case NADE_TYPE_KILL:
    		{
    			if (entity_get_int(ent, EV_INT_movetype) != MOVETYPE_BOUNCEMISSILE)
    				return HAM_IGNORED
    			
    			if (entity_get_float(ent, EV_FL_dmgtime) > get_gametime() + 2.5)
    			{
    				entity_set_float(ent, EV_FL_dmgtime, get_gametime() + 2.5)
    			}
    			
    			new owner = pev(ent, pev_owner)
    			new Float:origin[3]
    			entity_get_vector(ent, EV_VEC_origin, origin)
    			
    			if (entity_get_float(ent, EV_FL_dmgtime) < get_gametime() || !is_user_connected(owner) || is_user_connecting(owner))
    			{
    				clear_beamfollow(ent)
    				entity_set_int(ent, EV_INT_flags, FL_KILLME)
    				metal_gibs(origin)
    				
    				return HAM_SUPERCEDE
    			}
    			
    			new team = _:cs_get_user_team(owner)
    			
    			new target, Float:velocity[3], oldtarget
    			target = entity_get_edict(ent, EV_ENT_euser2)
    			oldtarget = entity_get_edict(ent, EV_ENT_euser3)
    			
    			if (target == owner)
    			{
    				target = 0
    				entity_set_edict(ent, EV_ENT_euser2, 0)
    			}
    			
    			if (target == 0)
    			{
    				entity_get_vector(ent, EV_VEC_velocity, velocity)
    				
    				if (xs_vec_len(velocity) < 200.0)
    				{
    					xs_vec_mul_scalar(velocity, xs_vec_len(velocity) + 50.0, velocity)
    					entity_set_vector(ent, EV_VEC_velocity, velocity)
    				}
    				
    				new i = -1, Float:distance = 300.0, Float:junk[3], targetteam
    				
    				while ((i = find_ent_in_sphere(i, origin, distance)))
    				{
    					if (i > g_iMaxPlayers)
    						break
    					
    					if (i == owner)
    						continue
    					
    					if (i == oldtarget)
    						continue
    					
    					if (!is_user_connected(i) || is_user_connecting(i))
    						continue
    					
    					if (!is_user_alive(i))
    						continue
    					
    					targetteam = _:cs_get_user_team(i)
    					
    					if ((team != targetteam && targetteam != _:CS_TEAM_SPECTATOR && targetteam != _:CS_TEAM_UNASSIGNED))
    					{
    						static Float:o[3]
    						entity_get_vector(i, EV_VEC_origin, o)
    						entity_get_vector(i, EV_VEC_view_ofs, junk)
    						xs_vec_add(o, junk, o)
    						static Float:new_distance
    						new_distance = get_distance_f(o, origin)
    						
    						if (new_distance < distance)
    						{
    							distance = new_distance
    							entity_set_edict(ent, EV_ENT_euser2, i)
    						}
    					}
    				}
    				
    				if (entity_range(owner, ent) < distance && entity_get_int(ent, EV_INT_iuser2) > 0)
    				{
    					entity_set_edict(ent, EV_ENT_euser2, owner)
    				}
    				
    				entity_set_float(ent, EV_FL_nextthink, get_gametime() + 0.02)
    				
    				return HAM_SUPERCEDE
    			}
    			else if (!is_user_alive(target))
    			{
    				entity_get_vector(ent, EV_VEC_velocity, velocity)
    				
    				if (xs_vec_len(velocity) < 200.0)
    				{
    					xs_vec_mul_scalar(velocity, xs_vec_len(velocity) + 50.0, velocity)
    					entity_set_vector(ent, EV_VEC_velocity, velocity)
    				}
    				
    				entity_set_edict(ent, EV_ENT_euser2, 0)
    				entity_set_float(ent, EV_FL_nextthink, get_gametime() + 0.02)
    				return HAM_SUPERCEDE
    			}
    			else
    			{
    				new Float:aim[3], Float:targetorigin[3], Float:velocity_normal[3], Float:aim_normal[3]
    				
    				entity_get_vector(target, EV_VEC_origin, targetorigin)
    				
    				xs_vec_add(targetorigin, Float:{0.0, 0.0, 30.0}, targetorigin)
    				
    				if (!is_point_visible(origin, targetorigin, ent))
    				{
    					entity_set_edict(ent, EV_ENT_euser2, 0)
    					entity_set_float(ent, EV_FL_nextthink, get_gametime() + 0.02)
    					return HAM_SUPERCEDE
    				}
    				
    				xs_vec_sub(targetorigin, origin, aim)
    				
    				if (xs_vec_len(aim) <= 100.0)
    				{
    					xs_vec_mul_scalar(aim, 800.0/xs_vec_len(aim), aim)
    					
    					entity_set_vector(ent, EV_VEC_velocity, aim)
    					
    					if (target == owner && get_distance_f(targetorigin, origin) <= 1.0)
    					{
    						new Float:torigin[3]
    						entity_get_vector(owner, EV_VEC_origin, torigin)
    						blood(torigin)
    						set_pdata_int(owner, OFFSET_LAST_HIT_GROUP, HIT_HEAD, 5)
    						ExecuteHamB(Ham_TakeDamage, owner, ent, owner, 135.0, DMG_CS_BULLETS_KNIFE)
    						entity_set_edict(ent, EV_ENT_euser2, 0)
    						entity_set_edict(ent, EV_ENT_euser3, owner)
    						
    						new color[3] , impacts
    						color[0] = 165
    						color[1] = 45
    						color[2] = 45
    						
    						create_blast(origin, color)
    						
    						impacts = entity_get_int(ent, EV_INT_iuser2)
    						
    						impacts++
    						
    						entity_set_int(ent, EV_INT_iuser2, impacts)
    						
    						if (impacts >= 1)
    						{
    							clear_beamfollow(ent)
    							entity_set_int(ent, EV_INT_flags, FL_KILLME)
    							metal_gibs(origin)
    						}
    					}
    					
    					entity_set_float(ent, EV_FL_nextthink, get_gametime() + 0.02)
    					return HAM_SUPERCEDE
    				}
    				
    				entity_get_vector(ent, EV_VEC_velocity, velocity)
    				
    				xs_vec_sub(targetorigin, origin, aim)
    				
    				xs_vec_normalize(velocity, velocity_normal)
    				xs_vec_normalize(aim, aim_normal)
    				
    				if (xs_vec_len(velocity) < 200.0)
    				{
    					xs_vec_mul_scalar(velocity, xs_vec_len(velocity) + 50.0, velocity)
    				}
    				
    				if (xs_vec_dot(aim_normal, velocity_normal) < 0)
    				{
    					entity_set_edict(ent, EV_ENT_euser2, 0)
    					entity_set_float(ent, EV_FL_nextthink, get_gametime() + 0.02)
    					entity_set_vector(ent, EV_VEC_velocity, velocity)
    					return HAM_SUPERCEDE
    				}
    				
    				if (velocity_normal[0] < aim_normal[0])
    				{
    					velocity[0] += 150.0
    				}
    				else if (velocity_normal[0] > aim_normal[0])
    				{
    					velocity[0] -= 150.0
    				}
    				
    				if (velocity_normal[1] < aim_normal[1])
    				{
    					velocity[1] += 150.0
    				}
    				else if (velocity_normal[1] > aim_normal[1])
    				{
    					velocity[1] -= 150.0
    				}
    				
    				if (velocity_normal[2] < aim_normal[2])
    				{
    					velocity[2] += 25.0
    				}
    				else if (velocity_normal[2] > aim_normal[2])
    				{
    					velocity[2] -= 25.0
    				}
    				
    				velocity[2] += 5.0
    				
    				entity_set_vector(ent, EV_VEC_velocity, velocity)
    			}
    			
    			entity_set_float(ent, EV_FL_nextthink, get_gametime() + 0.02)
    			return HAM_SUPERCEDE
    		}
    	}
    	return HAM_IGNORED;
    }
    
    public crazy_explode(entity)
    {
    	if(!pev_valid(entity))
    		return
    	
    	static Float:origin[3];
    	pev(entity, pev_origin, origin)
    	create_blast4(origin)
    	emit_sound(entity, CHAN_WEAPON, explosion_sound, VOL_NORM, ATTN_NORM, 0, PITCH_NORM)
    	static victim 
    	victim = -1
    	
    	while((victim = engfunc (EngFunc_FindEntityInSphere, victim, origin, 250.0)) != 0)
    	{
    		if (!is_user_alive(victim) || get_user_team(victim) != 1)
    			continue
    			
    		if(!task_exists(victim+TASK_AFFECT)) 
    			set_task(0.2, "affect_victim", victim+TASK_AFFECT, _, _, "a", 30)
    	}
    	engfunc(EngFunc_RemoveEntity, entity)
    }
    
    create_blast4(const Float:originF[3])
    {
    	engfunc(EngFunc_MessageBegin, MSG_PVS, SVC_TEMPENTITY, originF, 0)
    	write_byte(TE_BEAMCYLINDER)
    	engfunc(EngFunc_WriteCoord, originF[0])
    	engfunc(EngFunc_WriteCoord, originF[1])
    	engfunc(EngFunc_WriteCoord, originF[2])
    	engfunc(EngFunc_WriteCoord, originF[0])
    	engfunc(EngFunc_WriteCoord, originF[1])
    	engfunc(EngFunc_WriteCoord, originF[2]+470.0)
    	write_short(beam_effect)
    	write_byte(0)
    	write_byte(0)
    	write_byte(4)
    	write_byte(60)
    	write_byte(0)
    	write_byte(50)
    	write_byte(70)
    	write_byte(100)
    	write_byte(200)
    	write_byte(0)
    	message_end()
    	
    	engfunc(EngFunc_MessageBegin, MSG_PVS, SVC_TEMPENTITY, originF, 0)
    	write_byte(TE_BEAMCYLINDER)
    	engfunc(EngFunc_WriteCoord, originF[0])
    	engfunc(EngFunc_WriteCoord, originF[1])
    	engfunc(EngFunc_WriteCoord, originF[2])
    	engfunc(EngFunc_WriteCoord, originF[0])
    	engfunc(EngFunc_WriteCoord, originF[1])
    	engfunc(EngFunc_WriteCoord, originF[2]+555.0)
    	write_short(beam_effect)
    	write_byte(0)
    	write_byte(0)
    	write_byte(4)
    	write_byte(60)
    	write_byte(0)
    	write_byte(50)
    	write_byte(70)
    	write_byte(100)
    	write_byte(200)
    	write_byte(0)
    	message_end()
    	
    	engfunc(EngFunc_MessageBegin, MSG_PVS, SVC_TEMPENTITY, originF, 0)
    	write_byte(TE_DLIGHT)
    	engfunc(EngFunc_WriteCoord, originF[0])
    	engfunc(EngFunc_WriteCoord, originF[1])
    	engfunc(EngFunc_WriteCoord, originF[2])
    	write_byte(50)
    	write_byte(50)
    	write_byte(70)
    	write_byte(100)
    	write_byte(30)
    	write_byte(30)
    	message_end()
    
    	engfunc(EngFunc_MessageBegin, MSG_BROADCAST,SVC_TEMPENTITY, originF, 0)
    	write_byte(TE_EXPLOSION)
    	engfunc(EngFunc_WriteCoord, originF[0])
    	engfunc(EngFunc_WriteCoord, originF[1])
    	engfunc(EngFunc_WriteCoord, originF[2]+75)
    	write_short(crazyexp)
    	write_byte(17)
    	write_byte(15)
    	write_byte(TE_EXPLFLAG_NOSOUND)
    	message_end();	
    	
    	engfunc(EngFunc_MessageBegin, MSG_BROADCAST,SVC_TEMPENTITY, originF, 0)
    	write_byte(TE_SPRITETRAIL)
    	engfunc(EngFunc_WriteCoord, originF[0])
    	engfunc(EngFunc_WriteCoord, originF[1])
    	engfunc(EngFunc_WriteCoord, originF[2] + 40)
    	engfunc(EngFunc_WriteCoord, originF[0])
    	engfunc(EngFunc_WriteCoord, originF[1])
    	engfunc(EngFunc_WriteCoord, originF[2])
    	write_short(crazygib)
    	write_byte(30)
    	write_byte(10)
    	write_byte(2)
    	write_byte(50)
    	write_byte(10)
    	message_end();
    }
    
    public affect_victim(taskid)
    {
    	if(g_endround)
    		return;
    	
    	if(!is_user_alive(ID_AFFECT) || get_user_team(ID_AFFECT) != 1)
    		return
    		
    	message_begin(MSG_ONE_UNRELIABLE, g_msgScreenFade, {0,0,0}, ID_AFFECT)
    	write_short(1<<13)
    	write_short(1<<14)
    	write_short(0x0000)
    	write_byte(random_num(50, 200))
    	write_byte(random_num(50, 200))
    	write_byte(random_num(50, 200))
    	write_byte(random_num(50, 200))
    	message_end()
    		
    	message_begin(MSG_ONE_UNRELIABLE, g_screenshake, {0,0,0}, ID_AFFECT)
    	write_short(0xFFFF)
    	write_short(1<<13)
    	write_short(0xFFFF)
    	message_end()
    	remove_task(ID_AFFECT)
    }
    
    public set_model(entity, const model[])
    {
    	if(strlen(model) < 8)
    		return FMRES_IGNORED;
    
    	if(model[7] != 'w' || model[8] != '_')
    		return FMRES_IGNORED;
    	
    	static Float:dmgtime
    	pev(entity, pev_dmgtime, dmgtime)
    	
    	if(get_user_team(pev(entity, pev_owner)) == 1)
    	{
    		if(dmgtime == 0.0)
    			return FMRES_IGNORED;
    		if(model[9] == 'h' && model[10] == 'e')
    		{
    			message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
    			write_byte(TE_BEAMFOLLOW)
    			write_short(entity)
    			write_short(trail_spr)
    			write_byte(15)
    			write_byte(10)
    			write_byte(200)
    			write_byte(20)
    			write_byte(10)
    			write_byte(200)
    			message_end()
    			set_pev(entity, PEV_NADE_TYPE, NADE_TYPE_NAPALM)
    			fm_set_rendering(entity, kRenderFxGlowShell, 200, 20, 10, kRenderNormal, 18)
    			entity_set_model(entity, w_grenade_furien[0])
    			return FMRES_SUPERCEDE;
    		}
    		else if(model[9] == 'f' && model[10] == 'l')
    		{
    			message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
    			write_byte(TE_BEAMFOLLOW)
    			write_short(entity)
    			write_short(trail_spr)
    			write_byte(15)
    			write_byte(10)
    			write_byte(10)
    			write_byte(20)
    			write_byte(200)
    			write_byte(200)
    			message_end()
    			set_pev(entity, PEV_NADE_TYPE, NADE_TYPE_FROST)
    			fm_set_rendering(entity, kRenderFxGlowShell, 10, 20, 200, kRenderNormal, 18)
    			entity_set_model(entity, w_grenade_furien[1])
    			return FMRES_SUPERCEDE;
    		}
    		else if(model[9] == 's' && model[10] == 'm')
    		{
    			if(have_killnade[pev(entity, pev_owner)])
    			{
    				message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
    				write_byte(TE_BEAMFOLLOW)
    				write_short(entity)
    				write_short(trail_spr)
    				write_byte(15)
    				write_byte(15)
    				write_byte(165)
    				write_byte(45)
    				write_byte(45)
    				write_byte(200)
    				message_end()
    				set_pev(entity, PEV_NADE_TYPE, NADE_TYPE_KILL)
    				entity_set_int(entity, EV_INT_movetype, MOVETYPE_BOUNCEMISSILE)
    				entity_set_int(entity, EV_INT_iuser2, 0)
    				entity_set_edict(entity, EV_ENT_euser2, 0)
    				entity_set_size(entity, Float:{-2.0,-4.0,-2.0}, Float:{2.0, 4.0, 2.0})
    				fm_set_rendering(entity, kRenderFxGlowShell, 165, 45, 45, kRenderNormal, 18)
    				entity_set_float(entity, EV_FL_dmgtime, get_gametime() + 2.5)
    				entity_set_model(entity, w_grenade_furien[2])
    				have_killnade[pev(entity, pev_owner)] = false
    				return FMRES_SUPERCEDE;
    			}
    			return FMRES_IGNORED;
    		}
    		return FMRES_IGNORED;
    	}
    	else
    	{
    		if(model[9] == 'h' && model[10] == 'e')
    		{
    			if(dmgtime == 0.0)
    				return FMRES_IGNORED;
    			message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
    			write_byte(TE_BEAMFOLLOW)
    			write_short(entity)
    			write_short(trail_spr)
    			write_byte(15)
    			write_byte(10)
    			write_byte(100)
    			write_byte(50)
    			write_byte(70)
    			write_byte(200)
    			message_end()
    			fm_set_rendering(entity, kRenderFxGlowShell, 100, 50, 70, kRenderNormal, 18)
    		}
    		else if(model[9] == 'f' && model[10] == 'l')
    		{
    			if(dmgtime == 0.0)
    				return FMRES_IGNORED;
    			message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
    			write_byte(TE_BEAMFOLLOW)
    			write_short(entity)
    			write_short(trail_spr)
    			write_byte(15)
    			write_byte(10)
    			write_byte(200)
    			write_byte(200)
    			write_byte(200)
    			write_byte(200)
    			message_end()
    			fm_set_rendering(entity, kRenderFxGlowShell, 200, 200, 200, kRenderNormal, 18)
    		}
    		else if(model[9] == 's' && model[10] == 'm')
    		{
    			if(dmgtime == 0.0)
    				return FMRES_IGNORED;
    			message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
    			write_byte(TE_BEAMFOLLOW)
    			write_short(entity)
    			write_short(trail_spr)
    			write_byte(15)
    			write_byte(10)
    			write_byte(50)
    			write_byte(70)
    			write_byte(100)
    			write_byte(200)
    			message_end()
    			set_pev(entity, PEV_NADE_TYPE, NADE_TYPE_CRAZY)
    			fm_set_rendering(entity, kRenderFxGlowShell, 50, 70, 100, kRenderNormal, 18)
    		}
    		else
    			fm_set_rendering(entity, kRenderFxGlowShell, random(256), random(256), random(256), kRenderNormal, 18)
    	}
    	return FMRES_IGNORED;
    }
    
    public CWeaponBox_Touch(iWeaponBox, id)
    {
    	if(IsPlayer(id))
    	{
    		if(!is_user_alive(id))
    			return HAM_SUPERCEDE
    
    		if(IsWeaponBoxC4(iWeaponBox))
    			return HAM_IGNORED
    
    		if(get_user_team(id) == 1)
    			return HAM_SUPERCEDE
    		return HAM_IGNORED
    	}
    	return HAM_IGNORED
    }
    
    public GroundWeapon_Touch(iWeapon, id)
    {
    	if(IsPlayer(id))
    	{
    		if(!is_user_alive(id))
    			return HAM_SUPERCEDE
    
    		if(get_user_team(id) == 1)
    			return HAM_SUPERCEDE
    		return HAM_IGNORED
    	}
    	return HAM_IGNORED
    }
    
    public game_menu(id)
    {
    	if(get_user_team(id) == 3)
    		return PLUGIN_CONTINUE;
    	
    	static menu_title[150], menu;
    	formatex(menu_title, charsmax(menu_title), "\yFurien Mod Remaked" )
    	menu = menu_create(menu_title, "gmenu_handler")
    	static menu_item[150];
    	static izStats[8], izBody[8], iRankPos, iRankMax;
    	iRankPos = get_user_stats(id, izStats, izBody)
    	iRankMax = get_statsnum()
    	if(get_user_team(id) != 2 || !is_user_alive(id))
    		formatex(menu_item, charsmax(menu_item), "\dMeniu Arme")
    	else
    	{
    		if(g_cmdguns[id] && g_gunsselect[id] == 0)
    			formatex(menu_item, charsmax(menu_item), "\dMeniu Arme [FOLOSIT | NU ESTE AUTOMAT]")
    		else if(g_cmdguns[id] && g_gunsselect[id] == 1)
    			formatex(menu_item, charsmax(menu_item), "\dMeniu Arme [FOLOSIT | NU ESTE AUTOMAT]")
    		else if(g_cmdguns[id] && g_gunsselect[id] == 2)
    			formatex(menu_item, charsmax(menu_item), "\dMeniu Arme [FOLOSIT | ALES DE RUNDA TRECUTA]")
    		else if(g_cmdguns[id] && g_gunsselect[id] == 3)
    			formatex(menu_item, charsmax(menu_item), "\dMeniu Arme [FOLOSIT | AUTOMAT]")
    		else if(!g_cmdguns[id])
    			formatex(menu_item, charsmax(menu_item), "\yMeniu Arme\r [NEFOLOSIT]")
    	}
    	menu_additem(menu, menu_item, "")
    	if(!is_user_alive(id))
    		formatex(menu_item, charsmax(menu_item), "\dMeniu Shop [%i$]", g_money[id])
    	else
    		formatex(menu_item, charsmax(menu_item), "\yMeniu Shop\r [%i$]", g_money[id])
    	menu_additem(menu, menu_item, "")
    	if(!(get_user_flags(id) & VIP_FLAG))
    		formatex(menu_item, charsmax(menu_item), "\dOpen Vip Shop")
    	else
    		formatex(menu_item, charsmax(menu_item), "\yOpen Vip Shop")
    	menu_additem(menu, menu_item, "")
    	formatex(menu_item, charsmax(menu_item), "\yRank:\r [%d\y/\r %d]^nTotal:\r [%d\y UCIDERI |\r %d\y DECESE]", iRankPos, iRankMax, izStats[0], izStats[1])
    	menu_additem(menu, menu_item, "")
    	formatex(menu_item, charsmax(menu_item), "\yTop Rank\r Players")
    	menu_additem(menu, menu_item, "")
    	formatex(menu_item, charsmax(menu_item), "\yTop 15\r Levels")
    	menu_additem(menu, menu_item, "")
    	if(get_user_flags(id) & ADMIN_SLAY)
    		formatex(menu_item, charsmax(menu_item), "\yJoin Spectator")
    	else
    		formatex(menu_item, charsmax(menu_item), "\dJoin Spectator")
    	menu_additem(menu, menu_item, "")
    	menu_display(id, menu, 0)
    	return PLUGIN_HANDLED;
    }
    
    public gmenu_handler(id, menu, item)
    {
    	switch(item)
    	{
    		case 0:
    		{
    			if(!is_user_alive(id))
    			{
    				color(id, ".v%s.g Trebuie sa fii in.e viata.g pentru acest meniu.", TAG)
    				return PLUGIN_HANDLED;
    			}
    			
    			if(get_user_team(id) != 2)
    			{
    				color(id, ".v%s.g Trebuie sa fii.e Anti-Furien.g pentru a folosi acest meniu.", TAG)
    				return PLUGIN_HANDLED;
    			}
    			
    			if(g_cmdguns[id] && g_gunsselect[id] == 0)
    			{
    				color(id, ".v%s.g Meniul tau este deja activat.g.", TAG)
    				return PLUGIN_HANDLED;
    			}
    			else if(g_cmdguns[id] && g_gunsselect[id] == 1)
    			{
    				color(id, ".v%s.g Meniul tau este deja.e activat.g.", TAG)
    				return PLUGIN_HANDLED;
    			}
    			else if(g_cmdguns[id] && g_gunsselect[id] == 2)
    			{
    				color(id, ".v%s.g Meniul tau este deja.e activat.g.", TAG)
    				return PLUGIN_HANDLED;
    			}
    			else if(g_cmdguns[id] && g_gunsselect[id] == 3)
    			{
    				color(id, ".v%s.g Meniul tau a fost.e reactivat.g.", TAG)
    				g_gunsselect[id] = 0
    				return PLUGIN_HANDLED;
    			}
    			else if(!g_cmdguns[id])
    			{
    				color(id, ".v%s.g Meniul tau de.e arme.g este reafisat.", TAG)
    				primary_weap(id)
    				return PLUGIN_HANDLED;
    			}
    			return PLUGIN_HANDLED;
    		}
    		case 1:
    		{
    			if(!is_user_alive(id))
    			{
    				color(id, ".v%s.g Shopul poate fi folosit doar daca sunteti in viata.", TAG)
    				return PLUGIN_HANDLED;
    			}
    			shop_enter(id)
    			return PLUGIN_HANDLED;
    		}
    		case 2:
    		{
    			if(!is_user_connected(id))
    				return PLUGIN_HANDLED;
    			
    			shop_menu(id)
    			return PLUGIN_HANDLED;
    		}
    		case 3:
    		{
    			if(!is_user_connected(id))
    				return PLUGIN_HANDLED;
    			
    			static izStats[8], izBody[8], iRankPos, iRankMax;
    			iRankPos = get_user_stats(id, izStats, izBody)
    			iRankMax = get_statsnum()
    			color(0, ".v%s.e %s.g este pe locul.e %d/%d.g. Are.e %d.g ucideri si.e %d.g decese.", TAG, get_name(id), iRankPos, iRankMax, izStats[0], izStats[1])
    			return PLUGIN_HANDLED;
    		}
    		case 4:
    		{
    			if(!is_user_connected(id))
    				return PLUGIN_HANDLED;
    				
    			open_topmenu(id)
    			return PLUGIN_HANDLED;
    		}
    		case 5:
    		{
    			if(!is_user_connected(id))
    				return PLUGIN_HANDLED;
    
    			show_top(id)
    			return PLUGIN_HANDLED;
    		}
    		case 6:
    		{
    			if(get_user_flags(id) & ADMIN_SLAY)
    			{
    				if(is_user_alive(id))
    					user_kill(id)
    				cs_set_user_team(id, CS_TEAM_SPECTATOR)
    				color(0, ".v%s.e %s.g s-a mutat spectator.", TAG, get_name(id))
    				return PLUGIN_HANDLED;
    			}
    			else
    			{
    				color(id, ".v%s.g Nu ai acces la aceasta comanda.", TAG)
    				return PLUGIN_HANDLED;
    			}
    			return PLUGIN_HANDLED;
    		}
    	}
    	return PLUGIN_HANDLED;
    }
    
    public open_topmenu(id)
    {
    	new menu = menu_create("\yTop Rank Players", "topmenu_handler")
    	new stats_taked[8], crap[8], player_name[32], temp_message[256], add_item_menu[4], max_pages, iRankMax = get_statsnum();
    	
    	if(iRankMax < 360)
    		max_pages = iRankMax
    	else
    		max_pages = 360
    	
    	for(new page = 0; page < max_pages; page++) 
    	{
    		get_stats(page, stats_taked, crap, player_name, charsmax(player_name))
    		num_to_str(page + 1, add_item_menu, charsmax(add_item_menu))
    		format(temp_message, charsmax(temp_message), "\y%s\d R:\r %i\d K:\r %i\d D:\r %i", player_name, page + 1, stats_taked[0], stats_taked[1])
    		menu_additem(menu, temp_message, add_item_menu, 0)
    	}
    	menu_display(id, menu, 0)
    }
    
    public topmenu_handler(id, menu, item)
    	return PLUGIN_HANDLED;
    	
    public reset_score(id)
    {
    	if(!is_user_connected(id))
    		return PLUGIN_HANDLED;
    		
    	if(!is_user_alive(id))
    	{
    		color(id, ".v%s.g Poti sa-ti resetezi scorul doar cand esti in viata!", TAG)
    		return PLUGIN_CONTINUE;
    	}
    	
    	if(g_money[id] < 1)
    	{
    		color(id, ".v%s.g Iti trebuie.e 1$.g pentru a putea sa-ti resetezi scorul. Necesar.e %d$.g.", TAG, 1 - g_money[id])
    		return PLUGIN_CONTINUE;
    	}
    	set_pev(id, pev_frags, 0.0)
    	fm_cs_set_user_deaths(id, 0)
    	g_money[id] -= 1
    	color(0, ".v%s.e %s.g si-a resetat scorul!", TAG, get_name(id))
    	return PLUGIN_HANDLED;
    }
    
    public plasma_bomb_effects(c4)
    {
    	c4 -= 652450
    	
    	if(g_endround)
    	{
    		remove_task(c4+652450)
    		return;
    	}
    	
    	if(!b_planted)
    	{
    		remove_task(c4+652450)
    		return;
    	}
    	
    	if(!pev_valid(c4))
    	{
    		remove_task(c4+652450)
    		return;
    	}
    	
    	new Float:origini[3]
    	pev(c4, pev_origin, origini)
    	engfunc(EngFunc_MessageBegin, MSG_PVS, SVC_TEMPENTITY, origini, 0)
    	write_byte(TE_BEAMCYLINDER)
    	engfunc(EngFunc_WriteCoord, origini[0])
    	engfunc(EngFunc_WriteCoord, origini[1])
    	engfunc(EngFunc_WriteCoord, origini[2])
    	engfunc(EngFunc_WriteCoord, origini[0])
    	engfunc(EngFunc_WriteCoord, origini[1])
    	engfunc(EngFunc_WriteCoord, origini[2]+400.0)
    	write_short(beam_effect)
    	write_byte(0)
    	write_byte(0)
    	write_byte(4)
    	write_byte(10)
    	write_byte(0)
    	write_byte(random(256))
    	write_byte(random(256))
    	write_byte(random(256))
    	write_byte(200)
    	write_byte(0)
    	message_end()
    	
    	engfunc(EngFunc_MessageBegin, MSG_PVS, SVC_TEMPENTITY, origini, 0)
    	write_byte(TE_BEAMCYLINDER)
    	engfunc(EngFunc_WriteCoord, origini[0])
    	engfunc(EngFunc_WriteCoord, origini[1])
    	engfunc(EngFunc_WriteCoord, origini[2])
    	engfunc(EngFunc_WriteCoord, origini[0])
    	engfunc(EngFunc_WriteCoord, origini[1])
    	engfunc(EngFunc_WriteCoord, origini[2]+450.0)
    	write_short(beam_effect)
    	write_byte(0)
    	write_byte(0)
    	write_byte(4)
    	write_byte(15)
    	write_byte(0)
    	write_byte(random(256))
    	write_byte(random(256))
    	write_byte(random(256))
    	write_byte(200)
    	write_byte(0)
    	message_end()
    	engfunc(EngFunc_MessageBegin, MSG_PVS, SVC_TEMPENTITY, origini, 0)
    	write_byte(TE_BEAMCYLINDER)
    	engfunc(EngFunc_WriteCoord, origini[0])
    	engfunc(EngFunc_WriteCoord, origini[1])
    	engfunc(EngFunc_WriteCoord, origini[2])
    	engfunc(EngFunc_WriteCoord, origini[0])
    	engfunc(EngFunc_WriteCoord, origini[1])
    	engfunc(EngFunc_WriteCoord, origini[2]+550.0)
    	write_short(beam_effect)
    	write_byte(0)
    	write_byte(0)
    	write_byte(4)
    	write_byte(25)
    	write_byte(0)
    	write_byte(random(256))
    	write_byte(random(256))
    	write_byte(random(256))
    	write_byte(200)
    	write_byte(0)
    	message_end()
    	
    	fm_set_rendering(c4, kRenderFxGlowShell, random(255), random(255), random(255), kRenderNormal, 50)
    	if(g_c4timer < 11)
    	{
    		static Float:coord[3];
    		coord[0] = origini[0] + 150.0;
    		coord[1] = origini[1] + 150.0;
    		coord[2] = origini[2] + 800.0;
    		create_thunder(coord, origini);
    		if(active_fog)
    			msg_create_fog(random(250), random(250), random(250), 3)
    	}
    
    	if(g_c4timer >= 0)
    	{
    		--g_c4timer;
    		if(g_c4timer < 41 && g_c4timer > 13)
    			emit_sound(c4, CHAN_ITEM, misc_sound_wav[4], 1.0, ATTN_NORM, 0, PITCH_NORM)
    		else if(g_c4timer == 13)
    		{
    			emit_sound(c4, CHAN_ITEM, misc_sound_wav[5], 1.0, ATTN_NORM, 0, PITCH_NORM)
    			set_lights("c")
    		}
    		set_dhudmessage(random(255), random(255), random(255), -1.0, 0.0, 1, 1.0, 1.0, 0.0, 0.0)
    		if(g_c4timer > 0)
    			show_dhudmessage(0, "%d secund%s ramas%s pana la explozie!", g_c4timer, g_c4timer < 2 ? "a" : "e", g_c4timer < 2 ? "a" : "e")
    	}
    }
    
    public check_weapon(id)
    {
    	if(!is_user_alive(id))
    		return;
    		
    	switch(get_user_team(id))
    	{
    		case 1:
    		{
    			switch(get_user_weapon(id))
    			{
    				case CSW_KNIFE:
    				{
    					if(g_superknife[id])
    						set_pev(id, pev_viewmodel2, super_knife_furien)
    					else
    						set_pev(id, pev_viewmodel2, knife_furien)
    				}
    				case CSW_HEGRENADE: set_pev(id, pev_viewmodel2, v_grenade_furien[0])
    				case CSW_FLASHBANG: set_pev(id, pev_viewmodel2, v_grenade_furien[1])
    				case CSW_SMOKEGRENADE:
    				{
    					if(have_killnade[id])
    						set_pev(id, pev_viewmodel2, v_grenade_furien[2])
    				}
    				case CSW_C4:
    				{
    					set_pev(id, pev_viewmodel2, plasma_bomb[1])
    					set_pev(id, pev_weaponmodel2, plasma_bomb[0])
    				}
    			}
    		}
    		case 2:
    		{
    			if(g_ak47[id] && get_user_weapon(id) == CSW_AK47)
    			{
    				set_pev(id, pev_viewmodel2, v_ak47)
    				set_pev(id, pev_weaponmodel2, p_ak47)
    			}
    			else if(g_m4a1[id] && get_user_weapon(id) == CSW_M4A1)
    			{
    				set_pev(id, pev_viewmodel2, v_m4a1)
    				set_pev(id, pev_weaponmodel2, p_m4a1)
    			}
    			else if(g_deagle[id] && get_user_weapon(id) == CSW_DEAGLE)
    			{
    				set_pev(id, pev_viewmodel2, v_deagle)
    				set_pev(id, pev_weaponmodel2, p_deagle)
    			}
    		}
    	}
    }
    
    public msg_screenfade(msgid, dest, id)
    {
    	if(!IsPlayer(id))
    		return PLUGIN_CONTINUE
    	
    	if(get_user_team(id) == 2 || !is_user_alive(id) || g_noflash[id])
    	{
    		static date[4]
    		date[0] = get_msg_arg_int(4); date[1] = get_msg_arg_int(5)
    		date[2] = get_msg_arg_int(6); date[3] = get_msg_arg_int(7)
    		
    		if(date[0] == 255 && date[1] == 255 && date[2] == 255 && date[3] > 199)
    			return PLUGIN_HANDLED
    	}
    	return PLUGIN_CONTINUE
    }
    
    public ham_take_damage(vic, inf, att, Float:dmg, dmgbits)
    {
    	if(get_user_team(att) == 1 && g_superknife[att] && !(dmgbits & DMG_NADE))
    		dmg *= 2.0
    		
    	if(is_user_alive(att) && get_user_team(att) == 2 && ((g_ak47[att] && get_user_weapon(att) == CSW_AK47) || (g_m4a1[att] && get_user_weapon(att) == CSW_M4A1) || (g_deagle[att] && get_user_weapon(att) == CSW_DEAGLE)))
    		dmg *= 2.0
    	
    	SetHamParamFloat(4, dmg)
    	
    	if(is_user_alive(vic) && inf == bomba)
    	{
    		SetHamParamFloat(4, 0.0);
    		return HAM_SUPERCEDE;
    	}
    	if((vic == att) && (dmgbits & DMG_NADE))
    		return HAM_SUPERCEDE;
    	return HAM_IGNORED;
    }
    
    public on_damage(id)
    {
    	static attacker; attacker = get_user_attacker(id)
    	static damage; damage = read_data(2)		
    	if(IsPlayer(attacker))
    	{
    		if(fm_is_ent_visible(attacker, id))
    		{
    			g_iPlayerPos[attacker] += 1
    			if(g_iPlayerPos[attacker] == sizeof(g_flCoords))
    				g_iPlayerPos[attacker] = 0		
    			set_dhudmessage(random(256), random(256), random(256), Float:g_flCoords[g_iPlayerPos[attacker]][0], Float:g_flCoords[g_iPlayerPos[attacker]][1], 0, 0.1, 2.5, 0.02, 0.02)
    			show_dhudmessage(attacker, "%i^n", damage)				
    		}
    	}
    }
    
    register_buy_cmd()
    {
    	register_clcmd("buy", "ClientCommand_Buy")
    	register_clcmd("bUy", "ClientCommand_Buy")
    	register_clcmd("buY", "ClientCommand_Buy")
    	register_clcmd("bUY", "ClientCommand_Buy")
    	register_clcmd("Buy", "ClientCommand_Buy")
    	register_clcmd("BUy", "ClientCommand_Buy")
    	register_clcmd("BuY", "ClientCommand_Buy")
    	register_clcmd("BUY", "ClientCommand_Buy")
    }
    
    public ClientCommand_Buy(id)
    	return PLUGIN_HANDLED_MAIN
    
    PlaySound(const sound[])
    {
    	if(equal(sound[strlen(sound)-4], ".mp3"))
    		client_cmd(0, "mp3 play ^"%s^"", sound)
    	else
    		client_cmd(0, "spk ^"%s^"", sound)
    }
    
    public ScreenFade(red, green, blue)
    {
    	message_begin(MSG_BROADCAST, g_msgScreenFade);
    	write_short((1<<12)*4);
    	write_short((1<<12)*1);
    	write_short(0x0001);
    	write_byte(red);
    	write_byte(green);
    	write_byte(blue);
    	write_byte(250);
    	message_end();
    }
    
    set_vars_speed(id)
    	client_cmd(id, "cl_sidespeed 700;cl_backspeed 700;cl_forwardspeed 700")
    	
    public sound_stop()
    	client_cmd(0, "mp3 stop; stopsound")
    	
    public start_ambience()
    {
    	sound_stop()
    	client_cmd(0, "mp3 play ^"%s^"", ambience)
    }
    
    public killed_player(victim, attacker)
    {
    	if(is_user_connected(victim) && is_user_alive(attacker))
    		color(victim, ".v%s.e %s.g mai are inca.e[.v%d HP.e].g", TAG, get_name(attacker), get_user_health(attacker))
    	g_frozen[victim] = false
    	g_noflash[victim] = false
    	g_nofrost[victim] = false
    	g_superknife[victim] = false
    	g_furiendetector[victim] = false
    	g_end_health[victim] = 0
    	parachute_reset(victim)
    	have_killnade[victim] = false
    	remove_task(victim+TASK_AFFECT)
    	remove_task(victim+TASK_AURA)
    	if(g_pet[victim])
    		kill_pet(victim)
    
    	reset_vars(victim)
    	if(active_box)
    		AddBonusBox(victim)
    	if(get_user_team(victim) == 2)
    		remove_task(victim+TASK_BURN)
    		
    	if(is_user_connected(attacker) && is_user_connected(victim) && attacker != victim)
    		g_money[attacker] += 3
    		
    	if(destroyer[victim])
    	{
    		ham_strip_weapon(victim, "weapon_c4")
    		destroyer[victim] = false
    		select_destroyer()
    	}
    	if(savior[victim])
    	{
    		strip_user_weapons(victim)
    		savior[victim] = false
    		select_savior()
    	}
    }
    
    public newSpawn(id)
    {
    	if(para_ent[id] > 0) 
    		if(is_valid_ent(para_ent[id])) 
    			remove_entity(para_ent[id])
    	has_parachute[id] = true
    	para_ent[id] = 0
    	if(!active_huds)
    	{
    		set_pdata_int(id, m_iClientHideHUD, 0)
    		set_pdata_int(id, m_iHideHUD, HIDE_HEALTH)
    	}
    	make_HideWeapon(id, HIDE_MONEY);
    }
    
    public fw_SetClientKeyValue(id, const infobuffer[], const key[], const value[])
    {
    	if(flag_get(g_HasCustomModel, id) && equal(key, "model"))
    	{
    		static currentmodel[32]
    		fm_cs_get_user_model(id, currentmodel, charsmax(currentmodel))
    		if(!equal(currentmodel, g_CustomPlayerModel[id]) && !task_exists(id+TASK_MODELCHANGE))
    			fm_cs_set_user_model(id+TASK_MODELCHANGE)
    		return FMRES_SUPERCEDE;
    	}
    	return FMRES_IGNORED;
    }
    
    public CmdStart(id, uc_handle, seed)
    {
    	new ent = fm_find_ent_by_class(id, ClassName)
    	if(is_valid_ent(ent))
    	{
    		new classname[32]	
    		pev(ent, pev_classname, classname, 31)
    		if (equal(classname, ClassName))
    		{
    			if (pev(ent, pev_frame) >= 120)
    				set_pev(ent, pev_frame, 0.0)
    			else
    				set_pev(ent, pev_frame, pev(ent, pev_frame) + 1.0)
    			
    			switch(pev(ent, pev_team))
    			{
    				case 1: 
    				{
    					//
    				}
    				case 2: 
    				{
    					//
    				}
    			}
    		}
    	}
    }
    
    parachute_reset(id)
    {
    	if(para_ent[id] > 0) 
    		if(is_valid_ent(para_ent[id])) 
    			remove_entity(para_ent[id])
    	has_parachute[id] = false
    	para_ent[id] = 0
    }
    
    fire_explode(ent)
    {
    	if(g_endround)
    		return
    	
    	static Float:originF[3]
    	pev(ent, pev_origin, originF)
    	create_blast2(originF)
    	emit_sound(ent, CHAN_WEAPON, misc_sound_wav[7], 1.0, ATTN_NORM, 0, PITCH_NORM)
    	static victim
    	victim = -1
    	while((victim = engfunc(EngFunc_FindEntityInSphere, victim, originF, 250.0)) != 0)
    	{
    		if(!is_user_alive(victim) || get_user_team(victim) != 2)
    			continue;
    			
    		g_burning_duration[victim] += 15
    		
    		if(!task_exists(victim+TASK_BURN))
    			set_task(0.2, "burning_flame", victim+TASK_BURN, _, _, "b")
    	}
    	engfunc(EngFunc_RemoveEntity, ent)
    }
    
    frost_explode(ent)
    {
    	if(g_endround)
    		return
    		
    	static Float:originF[3]
    	pev(ent, pev_origin, originF)
    	create_blast3(originF)
    	emit_sound(ent, CHAN_WEAPON, misc_sound_wav[2], 1.0, ATTN_NORM, 0, PITCH_NORM)
    	static victim
    	victim = -1
    	
    	while((victim = engfunc(EngFunc_FindEntityInSphere, victim, originF, 250.0)) != 0)
    	{
    		if(!is_user_alive(victim) || get_user_team(victim) != 2 || g_nofrost[victim])
    			continue;
    		
    		fm_set_rendering(victim, kRenderFxGlowShell, 0, 100, 200, kRenderNormal, 25)
    		emit_sound(victim, CHAN_BODY, misc_sound_wav[3], 1.0, ATTN_NORM, 0, PITCH_NORM)
    		
    		message_begin(MSG_ONE_UNRELIABLE, g_msgScreenFade, _, victim)
    		write_short(0)
    		write_short(0)
    		write_short(FFADE_STAYOUT)
    		write_byte(10)
    		write_byte(20)
    		write_byte(200)
    		write_byte(150)
    		message_end()
    		g_frozen[victim] = true
    		if(pev(victim, pev_flags) & FL_ONGROUND)
    			set_pev(victim, pev_gravity, 999999.9)
    		else
    			set_pev(victim, pev_gravity, 0.000001)
    		reset_max_speed(victim)
    		set_task(0.2, "freeze_effect", victim, _, _, "b")
    		set_task(1.2, "remove_freeze", victim)
    	}
    	engfunc(EngFunc_RemoveEntity, ent)
    }
    
    public burning_flame(taskid)
    {
    	static origin[3], flags
    	get_user_origin(ID_BURN, origin)
    	flags = pev(ID_BURN, pev_flags)
    	
    	if((flags & FL_INWATER) || g_burning_duration[ID_BURN] < 1)
    	{
    		message_begin(MSG_PVS, SVC_TEMPENTITY, origin)
    		write_byte(TE_SMOKE)
    		write_coord(origin[0])
    		write_coord(origin[1])
    		write_coord(origin[2]-50)
    		write_short(smoke_spr)
    		write_byte(random_num(15, 20))
    		write_byte(random_num(10, 20))
    		message_end()
    		remove_task(taskid);
    		return;
    	}
    
    	if(random_num(0, 20) < 3)
    	{
    		emit_sound(ID_BURN, CHAN_VOICE, burn_player[random_num(0, 2)], 1.0, ATTN_NORM, 0, PITCH_NORM)
    
    		if((flags & FL_ONGROUND) > 0.0)
    		{
    			static Float:velocity[3];
    			pev(ID_BURN, pev_velocity, velocity);
    			xs_vec_mul_scalar(velocity, 0.5, velocity);
    			set_pev(ID_BURN, pev_velocity, velocity);
    		}
    	}
    	
    	static health
    	health = get_user_health(ID_BURN)
    	if(health - 1 > 0)
    		set_user_health(ID_BURN, get_user_health(ID_BURN) - 1)
    	
    	message_begin(MSG_PVS, SVC_TEMPENTITY, origin)
    	write_byte(TE_SPRITE)
    	write_coord(origin[0]+random_num(-5, 5))
    	write_coord(origin[1]+random_num(-5, 5))
    	write_coord(origin[2]+random_num(-10, 10))
    	write_short(flame_spr)
    	write_byte(random_num(5, 10))
    	write_byte(200)
    	message_end()
    	
    	g_burning_duration[ID_BURN]--
    }
    
    public prethink_player(id)
    {
    	if(!is_user_alive(id))
    		return;
    		
    	static i, LastThink
    	
    	if(LastThink > id)
    		FirstThink()
    	LastThink = id
    	
    	if(g_frozen[id])
    	{
    		set_pev(id, pev_velocity, Float:{0.0,0.0,0.0})
    		return;
    	}
    	
    	new nbut = get_user_button(id)
    	new obut = get_user_oldbutton(id)
    	if((nbut & IN_JUMP) && !(get_entity_flags(id) & FL_ONGROUND) && !(obut & IN_JUMP))
    	{
    		if(jumpnum[id] < 1)
    		{
    			dojump[id] = true
    			jumpnum[id]++
    			return
    		}
    	}
    	if((nbut & IN_JUMP) && (get_entity_flags(id) & FL_ONGROUND))
    	{
    		jumpnum[id] = 0
    		return
    	}
    	
    	if(get_user_team(id) == 2 && (g_furiendetector[id] || savior[id]))
    	{
    		static Target, Body, Weapon;
    		
    		get_user_aiming(id, Target, Body);
    		Weapon = get_user_weapon(id);
    			
    		if((1<<Weapon) & PRIMARY_WEAPONS_BITSUM || (1<<Weapon) & SECONDARY_WEAPONS_BITSUM) 
    		{
    			static Target, Body, Weapon;
    			
    			get_user_aiming(id, Target, Body);
    			Weapon = get_user_weapon(id);
    			
    			if((1<<Weapon) & PRIMARY_WEAPONS_BITSUM || (1<<Weapon) & SECONDARY_WEAPONS_BITSUM) 
    			{
    				static Origin[3];
    				get_user_origin(id, Origin, 3);
    				
    				message_begin(MSG_BROADCAST, SVC_TEMPENTITY);
    				write_byte(TE_BEAMENTPOINT);
    				write_short(id | 0x1000);
    				write_coord(Origin[0]);
    				write_coord(Origin[1]);
    				write_coord(Origin[2]);
    				write_short(LaserSprite);
    				write_byte(0);
    				write_byte(10);
    				write_byte(1);
    				write_byte(5);
    				write_byte(0);
    				if(is_user_alive(Target) && get_user_team(Target) == 1) 
    				{
    					write_byte(150);
    					write_byte(0);
    					write_byte(0);
    				}
    				else 
    				{
    					write_byte(0);
    					write_byte(150);
    					write_byte(0);
    				}
    				write_byte(250);
    				write_byte(25);
    				message_end();
    			}
    		}
    	}
    	
    	if(!has_parachute[id])
    		return
    
    	new Float:fallspeed = 100.0 * -1.0
    	new Float:frame
    
    	new button = get_user_button(id)
    	new oldbutton = get_user_oldbutton(id)
    	new flags = get_entity_flags(id)
    
    	if(para_ent[id] > 0 && (flags & FL_ONGROUND)) 
    	{
    		if(entity_get_int(para_ent[id],EV_INT_sequence) != 2) 
    		{
    			entity_set_int(para_ent[id], EV_INT_sequence, 2)
    			entity_set_int(para_ent[id], EV_INT_gaitsequence, 1)
    			entity_set_float(para_ent[id], EV_FL_frame, 0.0)
    			entity_set_float(para_ent[id], EV_FL_fuser1, 0.0)
    			entity_set_float(para_ent[id], EV_FL_animtime, 0.0)
    			entity_set_float(para_ent[id], EV_FL_framerate, 0.0)
    			return
    		}
    
    		frame = entity_get_float(para_ent[id],EV_FL_fuser1) + 2.0
    		entity_set_float(para_ent[id],EV_FL_fuser1,frame)
    		entity_set_float(para_ent[id],EV_FL_frame,frame)
    
    		if(frame > 254.0) 
    		{
    			remove_entity(para_ent[id])
    			para_ent[id] = 0
    		}
    	}
    
    	if(button & IN_USE) 
    	{
    		new Float:velocity[3]
    		entity_get_vector(id, EV_VEC_velocity, velocity)
    
    		if(velocity[2] < 0.0) {
    
    			if(para_ent[id] <= 0) {
    				para_ent[id] = create_entity("info_target")
    				if(para_ent[id] > 0) {
    					entity_set_string(para_ent[id],EV_SZ_classname,"parachute")
    					entity_set_edict(para_ent[id], EV_ENT_aiment, id)
    					entity_set_edict(para_ent[id], EV_ENT_owner, id)
    					entity_set_int(para_ent[id], EV_INT_movetype, MOVETYPE_FOLLOW)
    					entity_set_model(para_ent[id], "models/parachute.mdl")
    					entity_set_int(para_ent[id], EV_INT_sequence, 0)
    					entity_set_int(para_ent[id], EV_INT_gaitsequence, 1)
    					entity_set_float(para_ent[id], EV_FL_frame, 0.0)
    					entity_set_float(para_ent[id], EV_FL_fuser1, 0.0)
    				}
    			}
    
    			if(para_ent[id] > 0) {
    
    				entity_set_int(id, EV_INT_sequence, 3)
    				entity_set_int(id, EV_INT_gaitsequence, 1)
    				entity_set_float(id, EV_FL_frame, 1.0)
    				entity_set_float(id, EV_FL_framerate, 1.0)
    
    				velocity[2] = (velocity[2] + 40.0 < fallspeed) ? velocity[2] + 40.0 : fallspeed
    				entity_set_vector(id, EV_VEC_velocity, velocity)
    
    				if(entity_get_int(para_ent[id],EV_INT_sequence) == 0) {
    
    					frame = entity_get_float(para_ent[id],EV_FL_fuser1) + 1.0
    					entity_set_float(para_ent[id],EV_FL_fuser1,frame)
    					entity_set_float(para_ent[id],EV_FL_frame,frame)
    
    					if(frame > 100.0) {
    						entity_set_float(para_ent[id], EV_FL_animtime, 0.0)
    						entity_set_float(para_ent[id], EV_FL_framerate, 0.4)
    						entity_set_int(para_ent[id], EV_INT_sequence, 1)
    						entity_set_int(para_ent[id], EV_INT_gaitsequence, 1)
    						entity_set_float(para_ent[id], EV_FL_frame, 0.0)
    						entity_set_float(para_ent[id], EV_FL_fuser1, 0.0)
    					}
    				}
    			}
    		}
    		else if(para_ent[id] > 0) 
    		{
    			remove_entity(para_ent[id])
    			para_ent[id] = 0
    		}
    	}
    	else if((oldbutton & IN_USE) && para_ent[id] > 0) 
    	{
    		remove_entity(para_ent[id])
    		para_ent[id] = 0
    	}
    	
    	if(g_endround)
    	{
    		set_pev(id, pev_velocity, Float:{18.0, 18.0, 16.0})
    		return;
    	}
    	
    	if(!plrSolid[id]) return
    	
    	for(i = 1; i <= g_iMaxPlayers; i++)
    	{
    		if(!plrSolid[i] || id == i) continue
    		
    		if(plrTeam[i] == plrTeam[id])
    		{
    			set_pev(i, pev_solid, SOLID_NOT)
    			plrRestore[i] = true
    		}
    	}
    }
    
    public set_gamename()
    {
    	forward_return(FMV_STRING, modname)
    	return FMRES_SUPERCEDE;
    }
    
    public Fix()
    {
    	static i, fpf;
    	if(!fpf)
    		fpf = g_iMaxPlayers;
    	
    	for(i = 1; i <= fpf; i++)
    	{
    		if(IsPlayer(i))
    			Data(i);
    	}
    }
    
    public Calcu()
    {
    	static Iterator, ping, fpf;
    	if(!fpf)
    		fpf = g_iMaxPlayers;
    	for(Iterator = 1; Iterator <= fpf; Iterator++) 
    	{ 
    		ping = random_num(10, 35);
    		for(g_Offset[Iterator][0] = 0; g_Offset[Iterator][0] < 4; g_Offset[Iterator][0]++)
    		{
    			if((ping - g_Offset[Iterator][0]) % 4 == 0)
    			{
    				g_Argping[Iterator][0] = (ping - g_Offset[Iterator][0]) / 4;
    				break;
    			}
    		}
    		for(g_Offset[Iterator][1] = 0; g_Offset[Iterator][1] < 2; g_Offset[Iterator][1]++)
    		{
    			if((ping - g_Offset[Iterator][1]) % 2 == 0)
    			{
    				g_Argping[Iterator][1] = (ping - g_Offset[Iterator][1]) / 2;
    				break;
    			}
    		}
    		g_Argping[Iterator][2] = ping;
    	}
    }
    
    public Data(i)
    {
    	static j, send, fpf;
    	if(!(pev(i,pev_button)&IN_SCORE)&&!(pev(i,pev_oldbuttons)&IN_SCORE)) 
    		return;
    	if(!fpf)
    		fpf=g_iMaxPlayers;
    	
    	send = 0;
    	for(j = 1; j <= fpf; j++) 
    	{
    		if(!IsPlayer(j))
    			continue;
    		switch(send)
    		{
    			case 0:
    			{
    				message_begin(MSG_ONE_UNRELIABLE, SVC_PINGS, _, i);
    				write_byte((g_Offset[j][0]*64)+(1+2*(j-1)));
    				write_short(g_Argping[j][0]);
    				send ++;
    			}
    			case 1:
    			{
    				write_byte((g_Offset[j][1]*128)+(2+4*(j-1)));
    				write_short(g_Argping[j][1]);
    				send ++;
    			}
    			case 2:
    			{
    				write_byte((4+8*(j-1)));
    				write_short(g_Argping[j][2]);
    				write_byte(0);
    				message_end();
    				send = 0;
    			}
    		}
    	}
    	if(send)
    	{
    		write_byte(0);
    		message_end();
    	}
    }
    
    public eventMoney(plr)
    {
    	make_HideWeapon(plr, HIDE_MONEY);
    	if(!active_huds)
    	{
    		set_pdata_int(plr, m_iClientHideHUD, 0)
    		set_pdata_int(plr, m_iHideHUD, HIDE_HEALTH)
    	}
    	return PLUGIN_HANDLED;
    }
    
    public bomb_planted(id)
    {
    	if(is_user_alive(id))
    	{
    		color(0, ".v%s.e %s.g a primit.e 5$.g ca a plantat bomba cu plasma.", TAG, get_name(id))
    		g_money[id] += 5
    	}
    }
    
    public bomb_defused(id)
    {
    	if(is_user_alive(id))
    	{
    		color(0, ".v%s.e %s.g a primit.e 5$.g ca a dezamorsat bomba cu plasma.", TAG, get_name(id))
    		g_money[id] += 5
    	}
    }
    
    public ham_touch(toucher, touched)
    {
    	if(entity_get_int(toucher, EV_INT_movetype) != MOVETYPE_BOUNCEMISSILE)
    		return HAM_IGNORED
    	
    	new Float:origin[3]
    	new impacts = entity_get_int(toucher, EV_INT_iuser2)
    	new owner = entity_get_edict(toucher, EV_ENT_owner)
    	entity_get_vector(toucher, EV_VEC_origin, origin)
    	
    	if(1 <= touched <= g_iMaxPlayers)
    	{
    		new CsTeams:team[2]
    		team[0] = cs_get_user_team(touched)
    		team[1] = cs_get_user_team(owner)
    		
    		if((team[0] != team[1] && team[0] != CS_TEAM_SPECTATOR && team[0] != CS_TEAM_UNASSIGNED))
    		{
    			new Float:origin[3]
    			entity_get_vector(touched, EV_VEC_origin, origin)
    			blood(origin)
    			set_pdata_int(touched, OFFSET_LAST_HIT_GROUP, HIT_HEAD, 5)
    			ExecuteHamB(Ham_TakeDamage, touched, toucher, owner, 135.0, DMG_CS_BULLETS_KNIFE)
    			entity_set_edict(toucher, EV_ENT_euser2, 0)
    			entity_set_edict(toucher, EV_ENT_euser3, touched)
    			
    			new color[3] 
    			color[0] = 165
    			color[1] = 45
    			color[2] = 45
    			
    			create_blast(origin, color)
    		}
    	}
    	
    	if(touched > g_iMaxPlayers || touched == 0)
    		msg_ricochet(origin)
    	
    	impacts++
    	
    	entity_set_int(toucher, EV_INT_iuser2, impacts)
    	
    	if(impacts >= 1)
    	{
    		clear_beamfollow(toucher)
    		entity_set_int(toucher, EV_INT_flags, FL_KILLME)
    		metal_gibs(origin)
    	}
    	
    	return HAM_IGNORED
    }
    
    clear_beamfollow(ent)
    {
    	message_begin(MSG_ALL,SVC_TEMPENTITY)
    	write_byte(TE_KILLBEAM)
    	write_short(ent)
    	message_end()
    }
    
    msg_ricochet(Float:origin[3])
    {
    	engfunc(EngFunc_MessageBegin, MSG_PVS, SVC_TEMPENTITY, origin, 0)
    	write_byte(TE_ARMOR_RICOCHET)
    	engfunc(EngFunc_WriteCoord, origin[0])
    	engfunc(EngFunc_WriteCoord, origin[1])
    	engfunc(EngFunc_WriteCoord, origin[2])
    	write_byte(5)
    	message_end()
    }
    
    metal_gibs(const Float: origin[3])
    {
    	engfunc(EngFunc_MessageBegin, MSG_PVS, SVC_TEMPENTITY, origin, 0)
    	write_byte(TE_BREAKMODEL)
    	engfunc(EngFunc_WriteCoord,origin[0])
    	engfunc(EngFunc_WriteCoord,origin[1])
    	engfunc(EngFunc_WriteCoord,origin[2] + 24)
    	engfunc(EngFunc_WriteCoord,20.0)
    	engfunc(EngFunc_WriteCoord,20.0)
    	engfunc(EngFunc_WriteCoord,20.0)
    	engfunc(EngFunc_WriteCoord,random_num(-50,50))
    	engfunc(EngFunc_WriteCoord,random_num(-50,50))
    	engfunc(EngFunc_WriteCoord,25.0)
    	write_byte(10)
    	write_short(spr_nadebits)
    	write_byte(10)
    	write_byte(25)
    	write_byte(2)
    	message_end()
    }
    
    
    create_blast(Float:originF[3], rgb[3])
    {
    	new origin[3]
    	FVecIVec(originF,origin)
    
    	message_begin(MSG_BROADCAST,SVC_TEMPENTITY)
    	write_byte(TE_BEAMCYLINDER)
    	write_coord(origin[0])
    	write_coord(origin[1])
    	write_coord(origin[2])
    	write_coord(origin[0])
    	write_coord(origin[1])
    	write_coord(origin[2] + 50)
    	write_short(beam_effect)
    	write_byte(0)
    	write_byte(0)
    	write_byte(4)
    	write_byte(60)
    	write_byte(0)
    	write_byte(rgb[0])
    	write_byte(rgb[1])
    	write_byte(rgb[2])
    	write_byte(100)
    	write_byte(0)
    	message_end()
    }
    
    public message_show_menu(msgid, dest, id) 
    {
    	if(!should_autojoin(id))
    		return PLUGIN_CONTINUE
    
    	static team_select[] = "#Team_Select"
    	static menu_text_code[sizeof team_select]
    	get_msg_arg_string(4, menu_text_code, sizeof menu_text_code - 1)
    	if(!equal(menu_text_code, team_select))
    		return PLUGIN_CONTINUE
    
    	set_force_team_join_task(id, msgid)
    	return PLUGIN_HANDLED
    }
    
    public message_vgui_menu(msgid, dest, id) 
    {
    	if(get_msg_arg_int(1) != 2 || !should_autojoin(id))
    		return PLUGIN_CONTINUE
    
    	set_force_team_join_task(id, msgid)
    
    	return PLUGIN_HANDLED
    }
    
    bool:should_autojoin(id)
    	return (!get_user_team(id) && !task_exists(id))
    	
    set_force_team_join_task(id, menu_msgid) 
    {
    	static param_menu_msgid[2]
    	param_menu_msgid[0] = menu_msgid
    	set_task(0.1, "task_force_team_join", id, param_menu_msgid, sizeof param_menu_msgid)
    }
    
    public task_force_team_join(menu_msgid[], id) 
    {
    	if(get_user_team(id))
    		return
    
    	force_team_join(id, menu_msgid[0])
    }
    
    stock force_team_join(id, menu_msgid) 
    {
    	static jointeam[] = "jointeam"
    	static msg_block, joinclass[] = "joinclass"
    	msg_block = get_msg_block(menu_msgid)
    	set_msg_block(menu_msgid, BLOCK_SET)
    	engclient_cmd(id, jointeam, "5")
    	engclient_cmd(id, joinclass, "5")
    	set_msg_block(menu_msgid, msg_block)
    }
    
    public prethink_player_post(id)
    {
    	if(!is_user_alive(id))
    		return PLUGIN_CONTINUE
    		
    	static i
    	for(i = 1; i <= g_iMaxPlayers; i++)
    	{
    		if(plrRestore[i])
    		{
    			set_pev(i, pev_solid, SOLID_SLIDEBOX)
    			plrRestore[i] = false
    		}
    	}
    	
    	if(dojump[id] == true)
    	{
    		new Float:velocity[3]	
    		entity_get_vector(id,EV_VEC_velocity,velocity)
    		velocity[2] = random_float(265.0,285.0)
    		entity_set_vector(id,EV_VEC_velocity,velocity)
    		dojump[id] = false
    		return PLUGIN_CONTINUE
    	}
    	return PLUGIN_CONTINUE
    }
    
    public msgStatusIcon(msgid, msgdest, id)
    {
    	static szIcon[8];
    	get_msg_arg_string(2, szIcon, 7);
    
    	if(equal(szIcon, "buyzone") && get_msg_arg_int(1))
    	{
    		set_pdata_int(id, 235, get_pdata_int(id, 235) & ~(1<<0));
    		return PLUGIN_HANDLED;
    	}
    	return PLUGIN_CONTINUE;
    }
    
    public ChangeName(id, buffer)
    {
    	if(!is_user_connected(id))
    		return FMRES_IGNORED;
    
    	static Name[32], Val[32];
    	get_user_name(id, Name, sizeof Name - 1);
    	engfunc(EngFunc_InfoKeyValue, buffer, "name", Val, sizeof Val - 1);
    	
    	if(equal(Val, Name))
    		return FMRES_IGNORED;
    
    	remove_task(id+TASK_MINUTES)
    	remove_task(id+TASK_SHOWHUD)
    	set_task(0.2, "client_putinserver", id)
    	verify_name(id)
    	return FMRES_SUPERCEDE;
    }
    
    public hook_say(id)
    {
    	if(!is_user_connected(id))
    		return PLUGIN_HANDLED;
    
    	static chat[192], users_team, name[32]
    	read_argv(1, chat, charsmax(chat))
    	get_user_name(id, name, charsmax(name) - 1)
    	users_team = fm_cs_get_user_team(id)
    		
    	/*
    	if(chat[0] == '#')
    	{
    		static comanda[16], nume[32];
    		strbreak(chat, comanda, charsmax(comanda), nume, charsmax(nume))
    		if(contain(chat, "cc"))
    			execute_clearchat(id)
    		else if(contain(chat, "kick"))
    		{
    			static nume[32], nume2[32], motiv[32];
    			strbreak(chat, nume, charsmax(nume), nume2, charsmax(nume2), motiv, charsmax(motiv))
    			change_name(id, nume, nume2, motiv)
    		}
    		else if(contain(chat, "slay"))
    		{
    			static nume[32], motiv[32];
    			strbreak(chat, nume, charsmax(nume), motiv, charsmax(motiv))
    			slay_user(id, nume, motiv)
    		}
    		else if(contain(chat, "slap"))
    		{
    			static nume[32], damage[5];
    			strbreak(chat, nume, charsmax(nume), damage, charsmax(damage))
    			slap_user(id, nume, damage)
    		}
    		else if(contain(chat, "banip"))
    		{
    			static nume[32], durata[6], motiv[32];
    			strbreak(chat, nume, charsmax(nume), durata, charsmax(durata), motiv, charsmax(motiv))
    			banip_player(id, nume, durata, motiv)
    		}
    		else if(contain(chat, "votemap"))
    		{
    			static harta[32], harta1[20], harta2[20];
    			strbreak(chat, harta, charsmax(harta), harta1, charsmax(harta1), harta2, charsmax(harta2))
    			votemap(id, harta, harta1, harta2)
    		}
    		else if(contain(chat, "map"))
    		{
    			static harta[20], motiv[32];
    			strbreak(chat, harta, charsmax(harta), motiv, charsmax(motiv))
    			set_map(id, harta, motiv)
    		}
    		else if(contain(chat, "say"))
    		{
    			static mesaj[100];
    			strbreak(chat, mesaj, charsmax(mesaj))
    			admin_message(id, mesaj)
    		}
    		else if(contain(chat, "gag"))
    		{
    			static nume[32], durata[3], motiv[32];
    			strbreak(chat, nume, charsmax(nume), durata, charsmax(durata), motiv, charsmax(motiv))
    			gag_user(id, nume, durata, motiv)
    		}
    		else if(contain(chat, "ungag"))
    		{
    			static nume[32], motiv[32];
    			strbreak(chat, nume, charsmax(nume), motiv, charsmax(motiv))
    			ungag_user(id, nume, motiv)
    		}
    		else if(contain(chat, "cvar"))
    		{
    			static comanda[32], valoare[32];
    			strbreak(chat, comanda, charsmax(comanda), valoare, charsmax(valoare))
    			cvar_talent(id, comanda, valoare)
    		}
    		else if(contain(chat, "addban"))
    		{
    			static ip[32], motiv[32], durata[5];
    			strbreak(chat, ip, charsmax(ip), durata, charsmax(durata), motiv, charsmax(motiv))
    			addban_client(id, ip, durata, motiv)
    		}
    		else if(contain(chat, "ss"))
    		{
    			static name[32], motiv[32];
    			strbreak(chat, name, charsmax(name), motiv, charsmax(motiv))
    			screenshot_client(id, name, motiv)
    		}
    		else if(contain(chat, "blind"))
    		{
    			static name[32], motiv[32];
    			strbreak(chat, name, charsmax(name), motiv, charsmax(motiv))
    			blind_client(id, name, motiv)
    		}
    		else if(contain(chat, "unblind))
    		{
    			static name[32];
    			strbreak(chat, name, charsmax(name))
    			unblind_client(id, name)
    		}
    	}
    	*/
    	
    	static comanda[16], nume[32]
    
    	strbreak(chat, comanda, charsmax(comanda), nume, charsmax(nume))
    	if(equal(comanda, "/donate", 7))
    		donate(id, nume)
    	if(is_user_alive(id))
    	{
    		if(get_user_team(id) == 1)
    		{
    			if((get_user_flags(id) & VIP_FLAG) && (get_user_flags(id) & ADMIN_SLAY))
    				color_chat(0, id, users_team, RED,  "^3[LVL:^4 %d^3] [^4VIP+ADMIN^3] %s:^4 %s", nivel[id], name, chat)
    			else if((get_user_flags(id) & ADMIN_SLAY) && !(get_user_flags(id) & VIP_FLAG))
    				color_chat(0, id, users_team, RED,  "^3[LVL:^4 %d^3] [^4ADMIN^3] %s:^4 %s", nivel[id], name, chat)
    			else if(!(get_user_flags(id) & ADMIN_SLAY) && (get_user_flags(id) & VIP_FLAG))
    				color_chat(0, id, users_team, RED,  "^3[LVL:^4 %d^3] [^4VIP^3] %s:^4 %s", nivel[id], name, chat)
    			else
    				color_chat(0, id, users_team, RED,  "^3[LVL:^4 %d^3] %s:^1 %s", nivel[id], name, chat)	
    		}
    		else if(get_user_team(id) == 2)
    		{
    			if((get_user_flags(id) & VIP_FLAG) && (get_user_flags(id) & ADMIN_SLAY))
    				color_chat(0, id, users_team, BLUE,  "^3[LVL:^4 %d^3] [^4VIP+ADMIN^3] %s:^4 %s", nivel[id], name, chat)
    			else if((get_user_flags(id) & ADMIN_SLAY) && !(get_user_flags(id) & VIP_FLAG))
    				color_chat(0, id, users_team, BLUE,  "^3[LVL:^4 %d^3] [^4ADMIN^3] %s:^4 %s", nivel[id], name, chat)
    			else if(!(get_user_flags(id) & ADMIN_SLAY) && (get_user_flags(id) & VIP_FLAG))
    				color_chat(0, id, users_team, BLUE,  "^3[LVL:^4 %d^3] [^4VIP^3] %s:^4 %s", nivel[id], name, chat)
    			else
    				color_chat(0, id, users_team, BLUE,  "^3[LVL:^4 %d^3] %s:^1 %s", nivel[id], name, chat)	
    		}
    	}
    	else
    	{
    		if(users_team == FM_CS_TEAM_SPECTATOR)
    		{
    			if((get_user_flags(id) & VIP_FLAG) && (get_user_flags(id) & ADMIN_SLAY))
    				color_chat(0, id, users_team, GREY,  "^3[LVL:^4 %d^3] [^4VIP+ADMIN^3] %s:^4 %s", nivel[id], name, chat)
    			else if((get_user_flags(id) & ADMIN_SLAY) && !(get_user_flags(id) & VIP_FLAG))
    				color_chat(0, id, users_team, GREY,  "^3[LVL:^4 %d^3] [^4ADMIN^3] %s:^4 %s", nivel[id], name, chat)
    			else if(!(get_user_flags(id) & ADMIN_SLAY) && (get_user_flags(id) & VIP_FLAG))
    				color_chat(0, id, users_team, GREY,  "^3[LVL:^4 %d^3] [^4VIP^3] %s:^4 %s", nivel[id], name, chat)
    			else
    				color_chat(0, id, users_team, GREY,  "^3[LVL:^4 %d^3] %s:^1 %s", nivel[id], name, chat)	
    		}
    		else if(get_user_team(id) == 1)
    		{
    			if((get_user_flags(id) & VIP_FLAG) && (get_user_flags(id) & ADMIN_SLAY))
    				color_chat(0, id, users_team, RED,  "^3[LVL:^4 %d^3] [^4VIP+ADMIN^3] *%s:^4 %s", nivel[id], name, chat)
    			else if((get_user_flags(id) & ADMIN_SLAY) && !(get_user_flags(id) & VIP_FLAG))
    				color_chat(0, id, users_team, RED,  "^3[LVL:^4 %d^3] [^4ADMIN^3] *%s:^4 %s", nivel[id], name, chat)
    			else if(!(get_user_flags(id) & ADMIN_SLAY) && (get_user_flags(id) & VIP_FLAG))
    				color_chat(0, id, users_team, RED,  "^3[LVL:^4 %d^3] [^4VIP^3] *%s:^4 %s", nivel[id], name, chat)
    			else
    				color_chat(0, id, users_team, RED,  "^3[LVL:^4 %d^3] %s:^1 *%s", nivel[id], name, chat)	
    		}
    		else if(get_user_team(id) == 2)
    		{
    			if((get_user_flags(id) & VIP_FLAG) && (get_user_flags(id) & ADMIN_SLAY))
    				color_chat(0, id, users_team, BLUE,  "^3[LVL:^4 %d^3] [^4VIP+ADMIN^3] *%s:^4 %s", nivel[id], name, chat)
    			else if((get_user_flags(id) & ADMIN_SLAY) && !(get_user_flags(id) & VIP_FLAG))
    				color_chat(0, id, users_team, BLUE,  "^3[LVL:^4 %d^3] [^4ADMIN^3] *%s:^4 %s", nivel[id], name, chat)
    			else if(!(get_user_flags(id) & ADMIN_SLAY) && (get_user_flags(id) & VIP_FLAG))
    				color_chat(0, id, users_team, BLUE,  "^3[LVL:^4 %d^3] [^4VIP^3] *%s:^4 %s", nivel[id], name, chat)
    			else
    				color_chat(0, id, users_team, BLUE,  "^3[LVL:^4 %d^3] %s:^1 *%s", nivel[id], name, chat)	
    		}		
    	}
    	return PLUGIN_HANDLED
    }
    
    public messageHideWeapon(msgid, dest, plr)
    {
    	set_msg_arg_int(1, ARG_BYTE, get_msg_arg_int(1)|HIDE_MONEY)
    	return PLUGIN_CONTINUE;
    }
    
    public Event_HideWeapon(id)
    {
    	if(!active_huds)
    	{
            message_begin(MSG_ONE_UNRELIABLE, g_msgHideWeapon, _, id)
            write_byte(HIDE_HEALTH)
            message_end()
            message_begin(MSG_ONE_UNRELIABLE, g_msgCrosshair, _, id)
            write_byte(0);
            message_end();
    	}
    }
    
    public increase_level(taskid)
    {
    	if(get_user_team(ID_MINUTE) == 3)
    		return;
    	
    	minutes[ID_MINUTE]++
    	if(minutes[ID_MINUTE] >= 5)
    	{
    		minutes[ID_MINUTE] = 0
    		complete_hours[ID_MINUTE]++
    		if(complete_hours[ID_MINUTE] >= LEVELS[nivel[ID_MINUTE]])
    		{
    			color(ID_MINUTE, ".v%s.g Ai avansat un nivel! Nivelul tau acum este.e %d.g.", TAG, nivel[ID_MINUTE])
    			nivel[ID_MINUTE]++
    		}
    	}
    	SaveData(ID_MINUTE)
    	checkandupdatetop(ID_MINUTE, nivel[ID_MINUTE], complete_hours[ID_MINUTE], minutes[ID_MINUTE])
    }
    
    public addToFullPack(es, e, ent, host, hostflags, player, pSet)
    {
    	if(player)
    	{
    		if(plrSolid[host] && plrSolid[ent] && plrTeam[host] == plrTeam[ent])
    			set_es(es, ES_Solid, SOLID_NOT)
    	}
    }
    
    FirstThink()
    {
    	for(new i = 1; i <= g_iMaxPlayers; i++)
    	{
    		if(!is_user_alive(i))
    		{
    			plrSolid[i] = false
    			continue
    		}
    		plrTeam[i] = get_user_team(i)
    		plrSolid[i] = pev(i, pev_solid) == SOLID_SLIDEBOX ? true : false
    	}
    }
    
    public LoadData(id) 
    { 
    	new vaultkey[64], vaultdata[256];
    	format(vaultkey, 63, "%s", get_name(id))
    	format(vaultdata, 255, "^"%i^" ^"%i^" ^"%i^"", nivel[id], complete_hours[id], minutes[id])
    	nvault_get(salvare_nvault, vaultkey, vaultdata, 255)
    	new lvl[32], ore[32], minute[32];
    	parse(vaultdata, lvl, 31, ore, 31, minute, 31)
    	nivel[id] = str_to_num(lvl)
    	complete_hours[id] = str_to_num(ore)
    	minutes[id] = str_to_num(minute)
    	if(nivel[id] == 0)
    		nivel[id] = 1
    		
    	color(id, "Am preluat salvarile.")
    }
    
    public SaveData(id) 
    {
    	new vaultkey[64], vaultdata[256];
    	format(vaultkey, 63, "%s", get_name(id))
    	format(vaultdata, 255, "^"%i^" ^"%i^" ^"%i^"", nivel[id], complete_hours[id], minutes[id])
    	nvault_set(salvare_nvault, vaultkey, vaultdata)
    }
    
    public client_putinserver(id)
    {
    	g_cmdguns[id] = false
    	g_gunsselect[id] = 0
    	g_primary_select[id] = 0
    	g_secondary_select[id] = 0
    	reset_vars(id)
    	g_money[id] = get_pcvar_num(mp_startmoney)
    	set_task(60.0, "increase_level", id+TASK_MINUTES, _, _, "b")
    	set_task(0.3, "HealthHud", id+TASK_SHOWHUD, _, _, "b")
    	LoadData(id)
    }
    
    public client_disconnect(id)
    {
    	if(g_pet[id])
    		kill_pet(id)
    	reset_vars(id)
    	g_frozen[id] = false
    	g_burning_duration[id] = 0
    	g_cmdguns[id] = false
    	g_gunsselect[id] = 0
    	g_primary_select[id] = 0
    	g_secondary_select[id] = 0
    	parachute_reset(id)
    	have_killnade[id] = false
    	jumpnum[id] = 0
    	dojump[id] = false
    	g_furiendetector[id] = false
    	g_noflash[id] = false
    	g_superknife[id] = false
    	g_nofrost[id] = false
    	g_end_health[id] = 0
    	remove_task(id+TASK_MINUTES);
    	remove_task(id+TASK_MODELCHANGE);
    	remove_task(id+TASK_AFFECT);
    	flag_unset(g_HasCustomModel, id)
    	remove_task(id+TASK_SHOWHUD)
    	remove_task(id+TASK_AURA)
    	if(destroyer[id])
    	{
    		ham_strip_weapon(id, "weapon_c4")
    		destroyer[id] = false
    		select_destroyer()
    	}
    	if(savior[id])
    	{
    		//strip_user_weapons(id)
    		savior[id] = false
    		select_savior()
    	}
    }
    
    public player_killed_post(id)
    	set_pev(id, pev_iuser1, SPECMODE_ALIVE)
    
    public freeze_effect(id)
    {
    	if(!is_user_alive(id) || !g_frozen[id])
    	{
    		remove_task(id)
    		return;
    	}
    	new Float:fOrigin[3], iOrigin[3]
    	pev(id, pev_origin, fOrigin)
    	FVecIVec(fOrigin, iOrigin)
    	UTIL_CreateFlares(iOrigin, frostgib, 5, 5, 2)
    }
    
    verify_name(id)
    {
    	static name[32]
    	get_user_info(id, "name", name, 31)
    	
    	static i, ignore
    	ignore = false
    	
    	for(i = 0; i <= g_sizeof_names_new; i++)
    		if(containi(name, g_names_new[i]) != -1)
    		{
    			ignore = true
    			break;
    		}
    	
    	if(ignore)
    		return;
    	
    	for(i = 0; i < 29; i++)
    		replace_all(name, 31, g_filter_chars[i], "")
    	
    	for(i = 0; i < g_sizeof_names; i++)
    		if(containi(name, g_names[i]) != -1)
    		{
    			formatex(name, 31, "%s [%d]", g_names_new[random_num(0, g_sizeof_names_new)], g_names_changed)
    			set_user_info(id, "name", name)
    			client_cmd(id, "name ^"%s^"", name)
    			g_names_changed++
    		}
    }
    
    public remove_freeze(id)
    {
    	if(!is_user_alive(id) || !g_frozen[id])
    		return;
    	
    	g_frozen[id] = false;
    	if(get_user_team(id) == 2)
    		set_pev(id, pev_gravity, 1.0)
    
    	reset_max_speed(id)
    	fm_set_rendering(id, kRenderFxGlowShell, 0, 200, 50, kRenderNormal, 18)
    	message_begin(MSG_ONE_UNRELIABLE, g_msgScreenFade, _, id)
    	write_short(UNIT_SECOND)
    	write_short(0)
    	write_short(FFADE_IN)
    	write_byte(10)
    	write_byte(20)
    	write_byte(200)
    	write_byte(100)
    	message_end()
    	emit_sound(id, CHAN_BODY, misc_sound_wav[1], 1.0, ATTN_NORM, 0, PITCH_NORM)
    	static origin2[3]
    	get_user_origin(id, origin2)
    	message_begin(MSG_PVS, SVC_TEMPENTITY, origin2)
    	write_byte(TE_BREAKMODEL)
    	write_coord(origin2[0])
    	write_coord(origin2[1])
    	write_coord(origin2[2]+24)
    	write_coord(16)
    	write_coord(16)
    	write_coord(16) 
    	write_coord(random_num(-50, 50))
    	write_coord(random_num(-50, 50))
    	write_coord(25)
    	write_byte(10)
    	write_short(mdl_glass)
    	write_byte(10)
    	write_byte(25)
    	write_byte(BREAK_GLASS)
    	message_end()
    	ExecuteHamB(Ham_Player_ResetMaxSpeed, id)
    }
    
    create_blast2(const Float:originF[3])
    {
    	engfunc(EngFunc_MessageBegin, MSG_PVS, SVC_TEMPENTITY, originF, 0)
    	write_byte(TE_BEAMCYLINDER)
    	engfunc(EngFunc_WriteCoord, originF[0])
    	engfunc(EngFunc_WriteCoord, originF[1])
    	engfunc(EngFunc_WriteCoord, originF[2])
    	engfunc(EngFunc_WriteCoord, originF[0])
    	engfunc(EngFunc_WriteCoord, originF[1])
    	engfunc(EngFunc_WriteCoord, originF[2]+470.0)
    	write_short(beam_effect)
    	write_byte(0)
    	write_byte(0)
    	write_byte(4)
    	write_byte(60)
    	write_byte(0)
    	write_byte(255)
    	write_byte(127)
    	write_byte(80)
    	write_byte(200)
    	write_byte(0)
    	message_end()
    	
    	engfunc(EngFunc_MessageBegin, MSG_PVS, SVC_TEMPENTITY, originF, 0)
    	write_byte(TE_BEAMCYLINDER)
    	engfunc(EngFunc_WriteCoord, originF[0])
    	engfunc(EngFunc_WriteCoord, originF[1])
    	engfunc(EngFunc_WriteCoord, originF[2])
    	engfunc(EngFunc_WriteCoord, originF[0])
    	engfunc(EngFunc_WriteCoord, originF[1])
    	engfunc(EngFunc_WriteCoord, originF[2]+555.0)
    	write_short(beam_effect)
    	write_byte(0)
    	write_byte(0)
    	write_byte(4)
    	write_byte(60)
    	write_byte(0)
    	write_byte(255)
    	write_byte(20)
    	write_byte(10)
    	write_byte(200)
    	write_byte(0)
    	message_end()
    	
    	engfunc(EngFunc_MessageBegin, MSG_PVS, SVC_TEMPENTITY, originF, 0)
    	write_byte(TE_DLIGHT)
    	engfunc(EngFunc_WriteCoord, originF[0])
    	engfunc(EngFunc_WriteCoord, originF[1])
    	engfunc(EngFunc_WriteCoord, originF[2])
    	write_byte(50)
    	write_byte(255)
    	write_byte(20)
    	write_byte(10)
    	write_byte(30)
    	write_byte(30)
    	message_end()
    
    	engfunc(EngFunc_MessageBegin, MSG_BROADCAST,SVC_TEMPENTITY, originF, 0)
    	write_byte(TE_EXPLOSION)
    	engfunc(EngFunc_WriteCoord, originF[0])
    	engfunc(EngFunc_WriteCoord, originF[1])
    	engfunc(EngFunc_WriteCoord, originF[2]+75)
    	write_short(fireexp)
    	write_byte(17)
    	write_byte(15)
    	write_byte(TE_EXPLFLAG_NOSOUND)
    	message_end();	
    	
    	engfunc(EngFunc_MessageBegin, MSG_BROADCAST,SVC_TEMPENTITY, originF, 0)
    	write_byte(TE_SPRITETRAIL)
    	engfunc(EngFunc_WriteCoord, originF[0])
    	engfunc(EngFunc_WriteCoord, originF[1])
    	engfunc(EngFunc_WriteCoord, originF[2] + 40)
    	engfunc(EngFunc_WriteCoord, originF[0])
    	engfunc(EngFunc_WriteCoord, originF[1])
    	engfunc(EngFunc_WriteCoord, originF[2])
    	write_short(firegib)
    	write_byte(30)
    	write_byte(10)
    	write_byte(2)
    	write_byte(50)
    	write_byte(10)
    	message_end();
    }
    
    create_blast3(const Float:originF[3])
    {
    	engfunc(EngFunc_MessageBegin, MSG_PVS, SVC_TEMPENTITY, originF, 0)
    	write_byte(TE_BEAMCYLINDER)
    	engfunc(EngFunc_WriteCoord, originF[0])
    	engfunc(EngFunc_WriteCoord, originF[1])
    	engfunc(EngFunc_WriteCoord, originF[2])
    	engfunc(EngFunc_WriteCoord, originF[0])
    	engfunc(EngFunc_WriteCoord, originF[1])
    	engfunc(EngFunc_WriteCoord, originF[2]+470.0)
    	write_short(beam_effect)
    	write_byte(0)
    	write_byte(0)
    	write_byte(4)
    	write_byte(60)
    	write_byte(0)
    	write_byte(0)
    	write_byte(191)
    	write_byte(255)
    	write_byte(200)
    	write_byte(0)
    	message_end()
    	
    	engfunc(EngFunc_MessageBegin, MSG_PVS, SVC_TEMPENTITY, originF, 0)
    	write_byte(TE_BEAMCYLINDER)
    	engfunc(EngFunc_WriteCoord, originF[0])
    	engfunc(EngFunc_WriteCoord, originF[1])
    	engfunc(EngFunc_WriteCoord, originF[2])
    	engfunc(EngFunc_WriteCoord, originF[0])
    	engfunc(EngFunc_WriteCoord, originF[1])
    	engfunc(EngFunc_WriteCoord, originF[2]+555.0)
    	write_short(beam_effect)
    	write_byte(0)
    	write_byte(0)
    	write_byte(4)
    	write_byte(60)
    	write_byte(0)
    	write_byte(0)
    	write_byte(191)
    	write_byte(255)
    	write_byte(200)
    	write_byte(0)
    	message_end()
    
    	engfunc(EngFunc_MessageBegin, MSG_PVS, SVC_TEMPENTITY, originF, 0)
    	write_byte(TE_DLIGHT)
    	engfunc(EngFunc_WriteCoord, originF[0])
    	engfunc(EngFunc_WriteCoord, originF[1])
    	engfunc(EngFunc_WriteCoord, originF[2])
    	write_byte(50)
    	write_byte(0)
    	write_byte(191)
    	write_byte(255)
    	write_byte(30)
    	write_byte(30)
    	message_end()
    
    	engfunc(EngFunc_MessageBegin, MSG_BROADCAST,SVC_TEMPENTITY, originF, 0)
    	write_byte(TE_EXPLOSION)
    	engfunc(EngFunc_WriteCoord, originF[0])
    	engfunc(EngFunc_WriteCoord, originF[1])
    	engfunc(EngFunc_WriteCoord, originF[2]+75)
    	write_short(frostexp)
    	write_byte(17)
    	write_byte(15)
    	write_byte(TE_EXPLFLAG_NOSOUND)
    	message_end();
    	
    	
    	engfunc(EngFunc_MessageBegin, MSG_BROADCAST,SVC_TEMPENTITY, originF, 0)
    	write_byte(TE_SPRITETRAIL)
    	engfunc(EngFunc_WriteCoord, originF[0])
    	engfunc(EngFunc_WriteCoord, originF[1])
    	engfunc(EngFunc_WriteCoord, originF[2] + 40)
    	engfunc(EngFunc_WriteCoord, originF[0])
    	engfunc(EngFunc_WriteCoord, originF[1])
    	engfunc(EngFunc_WriteCoord, originF[2])
    	write_short(frostgib)
    	write_byte(20)
    	write_byte(7)
    	write_byte(2)
    	write_byte(50)
    	write_byte(10)
    	message_end()
    }
    
    public detail_level(id)
    {
    	if(!is_user_connected(id))
    		return
    		
    	color(id, ".v%s.g Nivelul tau este:.e %d.g | Ai:.e %d/%d.g | Minute:.e %d/5.g.", TAG, nivel[id], complete_hours[id], LEVELS[nivel[id]], minutes[id])
    	return;
    }
    
    blood(const Float:origin[3])
    {
    	engfunc(EngFunc_MessageBegin, MSG_PVS, SVC_TEMPENTITY, origin, 0)
    	write_byte(TE_BLOODSPRITE)
    	engfunc(EngFunc_WriteCoord, origin[0])
    	engfunc(EngFunc_WriteCoord, origin[1])
    	engfunc(EngFunc_WriteCoord, origin[2] + 30.0)
    	write_short(spr_blood_spray)
    	write_short(spr_blood_drop)
    	write_byte(248)
    	write_byte(15)
    	message_end()
    }
    
    public save_top() 
    {
    	new path[128];
    	formatex(path, 127, "%s/TopLevels.dat", data_save);
    	if(file_exists(path)) 
    		delete_file(path);
    	new Buffer[256];
    	new f = fopen(path, "at");
    	for(new i = INFO_ZERO; i < NTOP; i++)
    	{
    		formatex(Buffer, 255, "^"%s^" ^"%d^" ^"%d^" ^"%d^"^n", topnames[i], toplevels[i], tophours[i], topminutes[i])
    		fputs(f, Buffer);
    	}
    	fclose(f);
    }
    
    reset_vars(id)
    {
    	g_ak47[id] = false
    	g_m4a1[id] = false
    	g_deagle[id] = false
    	g_pet[id] = false
    	g_used_life[id] = false
    	item_pet[id] = 0
    }
    
    public FM_Think_hook(ent)
    {
    	for(new i = 0; i <= g_iMaxPlayers; i++)
    	{
    		if(ent == item_pet[i])
    		{
    			static Float:origin[3]
    			static Float:origin2[3]
    			static Float:velocity[3]
    			pev(ent,pev_origin,origin2)
    			get_offset_origin_body(i,Float:{50.0,0.0,0.0},origin)
    			
    			if(get_distance_f(origin,origin2) > 300.0)
    			{
    				set_pev(ent,pev_origin,origin)
    			}
    			
    			else if(get_distance_f(origin,origin2) > 80.0)
    			{
    				get_speed_vector(origin2,origin,250.0,velocity)
    				set_pev(ent,pev_velocity,velocity)
    				if(pev(ent,pev_sequence) != pet_run || pev(ent,pev_framerate) != pet_run_speed)
    				{
    					set_pev(ent,pev_sequence,pet_run)
    					set_pev(ent,pev_gaitsequence,pet_run)
    					set_pev(ent,pev_framerate,pet_run_speed)
    				}
    			}
    			
    			else if(get_distance_f(origin,origin2) < 75.0)
    			{
    				if(pev(ent,pev_sequence) != pet_idle || pev(ent,pev_framerate) != pet_idle_speed)
    				{
    					set_pev(ent,pev_sequence,pet_idle)
    					set_pev(ent,pev_gaitsequence,pet_idle)
    					set_pev(ent,pev_framerate,pet_idle_speed)
    				}
    				set_pev(ent,pev_velocity,Float:{0.0,0.0,0.0})
    			}
    			pev(i,pev_origin,origin)
    			origin[2] = origin2[2]
    			entity_set_aim(ent,origin)			
    			set_pev(ent,pev_nextthink,1.0)
    			break
    		}
    	}
    }
    
    public TraceAttack(iEnt, iAttacker, Float:flDamage, Float:fDir[3], pentru, iDamageType)
    {
    	if(!IsPlayer(iAttacker))
    		return
    
    	static iWeapon;
    	iWeapon = get_user_weapon(iAttacker);
    	
    	if((g_ak47[iAttacker] && iWeapon == CSW_AK47) || (g_m4a1[iAttacker] && iWeapon == CSW_M4A1) || (g_deagle[iAttacker] && iWeapon == CSW_DEAGLE))
    	{
    		static iOrigin[3], Float:flEnd[3]
    		get_user_origin(iAttacker, iOrigin, 1)
    		get_tr2(pentru, TR_vecEndPos, flEnd)
    		message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
    		write_byte(TE_TRACER)
    		write_coord(iOrigin[0])
    		write_coord(iOrigin[1])
    		write_coord(iOrigin[2])
    		write_coord_f(flEnd[0]) 
    		write_coord_f(flEnd[1]) 
    		write_coord_f(flEnd[2]) 
    		message_end()
    	}
    }
    
    public is_a_player(ent)
    {
    	if(ent > 0 && ent < 33)
    		return true
    	
    	return false
    }
    
    public remove_pet(ent) 
    	if(pev_valid(ent))
    		fm_remove_entity(ent)
    
    stock get_offset_origin_body(ent,const Float:offset[3],Float:origin[3])
    {
    	if(!pev_valid(ent))
    		return 0;
    	
    	new Float:angle[3]
    	pev(ent,pev_angles,angle)
    	
    	pev(ent,pev_origin,origin)
    	
    	origin[0] += floatcos(angle[1],degrees) * offset[0]
    	origin[1] += floatsin(angle[1],degrees) * offset[0]
    	
    	origin[1] += floatcos(angle[1],degrees) * offset[1]
    	origin[0] += floatsin(angle[1],degrees) * offset[1]
    	
    	return 1;
    }
    
    stock get_speed_vector(const Float:origin1[3],const Float:origin2[3],Float:speed, Float:new_velocity[3])
    {
    	new_velocity[0] = origin2[0] - origin1[0]
    	new_velocity[1] = origin2[1] - origin1[1]
    	new_velocity[2] = origin2[2] - origin1[2]
    	new Float:num = floatsqroot(speed*speed / (new_velocity[0]*new_velocity[0] + new_velocity[1]*new_velocity[1] + new_velocity[2]*new_velocity[2]))
    	new_velocity[0] *= num
    	new_velocity[1] *= num
    	new_velocity[2] *= num
    	
    	return 1;
    }
    
    stock entity_set_aim(ent,const Float:origin2[3],bone=0)
    {
    	if(!pev_valid(ent))
    		return 0;
    	
    	static Float:origin[3]
    	origin[0] = origin2[0]
    	origin[1] = origin2[1]
    	origin[2] = origin2[2]
    	
    	static Float:ent_origin[3], Float:angles[3]
    	
    	if(bone)
    		engfunc(EngFunc_GetBonePosition,ent,bone,ent_origin,angles)
    	else
    		pev(ent,pev_origin,ent_origin)
    	
    	origin[0] -= ent_origin[0]
    	origin[1] -= ent_origin[1]
    	origin[2] -= ent_origin[2]
    	
    	static Float:v_length
    	v_length = vector_length(origin)
    	
    	static Float:aim_vector[3]
    	aim_vector[0] = origin[0] / v_length
    	aim_vector[1] = origin[1] / v_length
    	aim_vector[2] = origin[2] / v_length
    	
    	static Float:new_angles[3]
    	vector_to_angle(aim_vector,new_angles)
    	
    	new_angles[0] *= -1
    	
    	if(new_angles[1]>180.0) new_angles[1] -= 360
    	if(new_angles[1]<-180.0) new_angles[1] += 360
    	if(new_angles[1]==180.0 || new_angles[1]==-180.0) new_angles[1]=-179.999999
    	
    	set_pev(ent,pev_angles,new_angles)
    	set_pev(ent,pev_fixangle,1)
    	
    	return 1;
    }
    
    stock drop_weapons(id, dropwhat)
    {
    	static weapons[32], num, i, weaponid
    	num = 0
    	get_user_weapons(id, weapons, num)
    	
    	for(i = 0; i < num; i++)
    	{
    		weaponid = weapons[i]
    		
    		if((dropwhat == 1 && ((1<<weaponid) & PRIMARY_WEAPONS_BIT_SUM)) || (dropwhat == 2 && ((1<<weaponid) & SECONDARY_WEAPONS_BIT_SUM)))
    		{
    			static wname[32], weapon_ent
    			get_weaponname(weaponid, wname, charsmax(wname))
    			weapon_ent = fm_find_ent_by_owner(-1, wname, id)
    			set_pev(weapon_ent, PEV_ADDITIONAL_AMMO, cs_get_user_bpammo(id, weaponid))
    			engclient_cmd(id, "drop", wname)
    			cs_set_user_bpammo(id, weaponid, 0)
    		}
    	}
    }
    
    public fwdTouch(toucher, touched)
    {
    	if (!is_user_alive(toucher) || !pev_valid(touched))
    		return FMRES_IGNORED
    	
    	new classname[32]	
    	pev(touched, pev_classname, classname, 31)
    	if (!equal(classname, ClassName))
    		return FMRES_IGNORED
    	
    	if(get_user_team(toucher) == pev(touched, pev_team))
    	{
    		emit_sound(toucher, CHAN_STATIC, get_present, 1.0, ATTN_NORM, 0, PITCH_NORM)
    		GiveBonus(toucher)
    		set_pev(touched, pev_effects, EF_NODRAW)
    		set_pev(touched, pev_solid, SOLID_NOT)
    		remove_entity(touched)
    	}
    	return FMRES_IGNORED
    }
    
    public AddBonusBox(id)
    {
    	if(is_user_connected(id) && cs_get_user_team(id) != CS_TEAM_SPECTATOR)
    	{
    		new ent = fm_create_entity("info_target")
    		new origin[3]
    		get_user_origin(id, origin, 0)
    		set_pev(ent,pev_classname, ClassName)
    		switch(cs_get_user_team(id))
    		{
    			case CS_TEAM_T:
    			{
    				engfunc(EngFunc_SetModel, ent, mdl_box)
    				set_pev(ent,pev_team, 2)
    				entity_set_int(ent,EV_INT_iuser1,0) 
    				entity_set_int(ent,EV_INT_iuser2,0) 
    				entity_set_int(ent,EV_INT_iuser3,200) 
    				set_rendering(ent,kRenderFxGlowShell,entity_get_int(ent,EV_INT_iuser1),entity_get_int(ent,EV_INT_iuser2),entity_get_int(ent,EV_INT_iuser3),kRenderNormal,120)
    			}
    			case CS_TEAM_CT:
    			{
    				engfunc(EngFunc_SetModel, ent, mdl_box)	
    				set_pev(ent,pev_team, 1)
    				entity_set_int(ent,EV_INT_iuser1,200) 
    				entity_set_int(ent,EV_INT_iuser2,0) 
    				entity_set_int(ent,EV_INT_iuser3,0) 
    				set_rendering(ent,kRenderFxGlowShell,entity_get_int(ent,EV_INT_iuser1),entity_get_int(ent,EV_INT_iuser2),entity_get_int(ent,EV_INT_iuser3),kRenderNormal,120)
    			}
    		}
    		set_pev(ent, pev_mins, Float:{-10.0,-10.0,0.0})
    		set_pev(ent, pev_maxs, Float:{10.0,10.0,25.0})
    		set_pev(ent, pev_size, Float:{-10.0,-10.0,0.0,10.0,10.0,25.0})
    		engfunc(EngFunc_SetSize, ent, Float:{-10.0,-10.0,0.0}, Float:{10.0,10.0,25.0})
    		
    		set_pev(ent, pev_solid, SOLID_BBOX)
    		set_pev(ent, pev_movetype, MOVETYPE_TOSS)
    		
    		new Float:fOrigin[3]
    		IVecFVec(origin, fOrigin)
    		set_pev(ent, pev_origin, fOrigin)
    	}
    }
    /* __________________________________________________________
    		GiveBonus
    ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯|| */
    public GiveBonus(id)
    {	
    	if(is_user_alive(id)) 
    	{
    		switch(random_num(1,6)) 
    		{
    			case 1: 
    			{
    				if(pev(id, pev_health) + 20.0 > get_pcvar_num(CvarHpMax))
    					set_pev(id, pev_health, get_pcvar_float(CvarHpMax))
    				else
    					set_pev(id, pev_health, pev(id, pev_health) + 20.0)
    				color(id, ".v%s.g Ai gasit.e 20HP.g.", TAG)
    			}
    			case 2:
    			{
    				g_money[id] += 2
    				color(id, ".v%s.g Ai gasit.e 2$.g.", TAG)
    			}
    			case 3:
    			{
    				if(pev(id, pev_armorvalue) + 25.0 > get_pcvar_num(CvarHpMax))
    					set_pev(id, pev_armorvalue, get_pcvar_float(CvarHpMax))
    				else
    					set_pev(id, pev_armorvalue, pev(id, pev_armorvalue) + 25.0)
    				color(id, ".v%s.g Ai gasit.e 25AP.g.", TAG)
    			}
    			case 4:
    			{
    				g_money[id] += 4
    				color(id, ".v%s.g Ai gasit.e 4$.g.", TAG)
    			}
    			case 5:
    			{
    				g_money[id] += 6
    				color(id, ".v%s.g Ai gasit.e 6$.g.", TAG)
    			}
    			case 6:
    			{
    				HasTeleport[id] = true
    				g_teleports[id] += 1
    				client_cmd(id, "bind ^"alt^" ^"power2^"")
    				color(id, ".v%s.g Ai gasit puterea de.e teleportare.g, apasa.e ALT.g pentru a utiliza puterea.", TAG)
    			}
    		}
    	}
    }
    /* __________________________________________________________
    		CmdTeleport
    ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯|| */
    public CmdTeleport(id)
    {
    	if(!is_user_alive(id) || !HasTeleport[id])
    		return PLUGIN_CONTINUE
    	
    	if (Teleport_Cooldown[id])
    	{
    		color(id, ".v%s.g Puterea iti va reveni in:.e %d.g secund%s.", TAG, Teleport_Cooldown[id], Teleport_Cooldown[id] == 1 ? "a" : "e")
    		return PLUGIN_CONTINUE
    	}
    	else if (teleport(id))
    	{
    		emit_sound(id, CHAN_STATIC, SOUND_BLINK, 1.0, ATTN_NORM, 0, PITCH_NORM)
    		remove_task(id)
    		g_teleports[id] -= 1
    		Teleport_Cooldown[id] = get_pcvar_num(CvarTeleportCooldown)
    		set_task(1.0, "ShowHUD", id, _, _, "b")
    		set_hudmessage(0, 100, 200, 0.05, 0.60, 0, 1.0, 1.1, 0.0, 0.0, -11)
    		show_hudmessage(id, "Puterea iti va reveni in: %d secund%s", Teleport_Cooldown[id], Teleport_Cooldown[id] == 1 ? "a" : "e")
    	}
    	else
    		color(id, ".v%s.g Pozitia de teleportare este invalida!", TAG)
    	return PLUGIN_CONTINUE
    }
    
    public ShowHUD(id)
    {
    	if(!is_user_alive(id) || !HasTeleport[id])
    	{
    		remove_task(id)
    		Teleport_Cooldown[id] = 0
    		return PLUGIN_HANDLED
    	}
    	set_hudmessage(0, 100, 200, 0.05, 0.60, 0, 1.0, 1.1, 0.0, 0.0, -11)
    	if(is_user_alive(id) && Teleport_Cooldown[id] == 1)
    	{
    		Teleport_Cooldown[id]--
    		show_hudmessage(id, "Puterea iti va reveni in: %d secunda",Teleport_Cooldown[id])
    	}
    	if(is_user_alive(id) && Teleport_Cooldown[id] > 1)
    	{
    		Teleport_Cooldown[id]--
    		show_hudmessage(id, "Puterea iti va reveni in: %d secunde",Teleport_Cooldown[id])
    	}
    	if(is_user_alive(id) && Teleport_Cooldown[id] <= 0)
    	{
    		show_hudmessage(id, "Ti-a revenit puterea")
    		color(id, ".v%s.g Poti folosi din nou puterea de a te teleporta!", TAG)
    		remove_task(id)
    		Teleport_Cooldown[id] = 0
    	}
    	return PLUGIN_HANDLED
    }
    
    bool:teleport(id)
    {
    	new Float:vOrigin[3], Float:vNewOrigin[3],
    	Float:vNormal[3], Float:vTraceDirection[3],
    	Float:vTraceEnd[3]
    	
    	pev(id, pev_origin, vOrigin)
    	
    	velocity_by_aim(id, get_pcvar_num(CvarTeleportRange), vTraceDirection)
    	xs_vec_add(vTraceDirection, vOrigin, vTraceEnd)
    	
    	engfunc(EngFunc_TraceLine, vOrigin, vTraceEnd, DONT_IGNORE_MONSTERS, id, 0)
    	
    	new Float:flFraction
    	get_tr2(0, TR_flFraction, flFraction)
    	if (flFraction < 1.0)
    	{
    		get_tr2(0, TR_vecEndPos, vTraceEnd)
    		get_tr2(0, TR_vecPlaneNormal, vNormal)
    	}
    	
    	xs_vec_mul_scalar(vNormal, 40.0, vNormal) // do not decrease the 40.0
    	xs_vec_add(vTraceEnd, vNormal, vNewOrigin)
    	
    	if (is_player_stuck(id, vNewOrigin))
    		return false
    	
    	emit_sound(id, CHAN_STATIC, SOUND_BLINK, 1.0, ATTN_NORM, 0, PITCH_NORM)
    	tele_effect(vOrigin)
    	
    	engfunc(EngFunc_SetOrigin, id, vNewOrigin)
    	
    	tele_effect2(vNewOrigin)
    	
    	if(is_user_connected(id))
    		UTIL_ScreenFade(id, get_color(CvarColor), get_pcvar_float(CvarFadeTime), get_pcvar_float(CvarFadeTime), 75)
    	return true
    }
    
    stock is_player_stuck(id, Float:originF[3])
    {
    	engfunc(EngFunc_TraceHull, originF, originF, 0, (pev(id, pev_flags) & FL_DUCKING) ? HULL_HEAD : HULL_HUMAN, id, 0)
    	
    	if (get_tr2(0, TR_StartSolid) || get_tr2(0, TR_AllSolid) || !get_tr2(0, TR_InOpen))
    		return true
    	
    	return false
    }
    
    stock tele_effect(const Float:torigin[3])
    {
    	new origin[3]
    	origin[0] = floatround(torigin[0])
    	origin[1] = floatround(torigin[1])
    	origin[2] = floatround(torigin[2])
    	
    	message_begin(MSG_PAS, SVC_TEMPENTITY, origin)
    	write_byte(TE_BEAMCYLINDER)
    	write_coord(origin[0])
    	write_coord(origin[1])
    	write_coord(origin[2]+10)
    	write_coord(origin[0])
    	write_coord(origin[1])
    	write_coord(origin[2]+60)
    	write_short(Sprite)
    	write_byte(0)
    	write_byte(0)
    	write_byte(3)
    	write_byte(60)
    	write_byte(0)
    	write_byte(255)
    	write_byte(255)
    	write_byte(255)
    	write_byte(255)
    	write_byte(0)
    	message_end()
    }
    
    stock tele_effect2(const Float:torigin[3])
    {
    	new origin[3]
    	origin[0] = floatround(torigin[0])
    	origin[1] = floatround(torigin[1])
    	origin[2] = floatround(torigin[2])
    	
    	message_begin(MSG_PAS, SVC_TEMPENTITY, origin)
    	write_byte(TE_BEAMCYLINDER)
    	write_coord(origin[0])
    	write_coord(origin[1])
    	write_coord(origin[2]+10)
    	write_coord(origin[0])
    	write_coord(origin[1])
    	write_coord(origin[2]+60)
    	write_short(Sprite)
    	write_byte(0)
    	write_byte(0)
    	write_byte(3)
    	write_byte(60)
    	write_byte(0)
    	write_byte(255)
    	write_byte(255)
    	write_byte(255)
    	write_byte(255)
    	write_byte(0)
    	message_end()
    	
    	message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
    	write_byte(TE_SPRITETRAIL)
    	write_coord(origin[0])
    	write_coord(origin[1])
    	write_coord(origin[2]+40)
    	write_coord(origin[0])
    	write_coord(origin[1])
    	write_coord(origin[2])
    	write_short(Sprite2)
    	write_byte(30)
    	write_byte(10)
    	write_byte(1)
    	write_byte(50)
    	write_byte(10)
    	message_end()
    }	
    
    get_color(pcvar)
    {
    	new iColor[3], szColor[10]
    	get_pcvar_string(pcvar, szColor, charsmax(szColor))
    	new c = str_to_num(szColor)
    	
    	iColor[Red] = c / 1000000
    	c %= 1000000
    	iColor[Green] = c / 1000
    	iColor[Blue] = c % 1000
    	
    	return iColor
    }
    
    stock FixedUnsigned16(Float:flValue, iScale)
    {
    	new iOutput
    	iOutput = floatround(flValue * iScale)
    	
    	if (iOutput < 0)
    		iOutput = 0
    	
    	if (iOutput > 0xFFFF)
    		iOutput = 0xFFFF
    	
    	return iOutput
    }
    
    stock UTIL_ScreenFade(id=0,iColor[3]={0,0,0},Float:flFxTime=-1.0,Float:flHoldTime=0.0,iAlpha=0,iFlags=FFADE_IN,bool:bReliable=false,bool:bExternal=false)
    {
    	if(id && !is_user_connected(id))
    		return
    	
    	new iFadeTime
    	if(flFxTime == -1.0)
    	{
    		iFadeTime = 4
    	}
    	else
    	{
    		iFadeTime = FixedUnsigned16(flFxTime , 1<<12)
    	}
    	
    	static gmsgScreenFade
    	if(!gmsgScreenFade)
    	{
    		gmsgScreenFade = get_user_msgid("ScreenFade")
    	}
    	
    	new MSG_DEST
    	if(bReliable)
    	{
    		MSG_DEST = id ? MSG_ONE : MSG_ALL
    	}
    	else
    	{
    		MSG_DEST = id ? MSG_ONE_UNRELIABLE : MSG_BROADCAST
    	}
    	
    	if(bExternal)
    	{
    		emessage_begin(MSG_DEST, gmsgScreenFade, _, id)
    		ewrite_short(iFadeTime)
    		ewrite_short(FixedUnsigned16(flHoldTime , 1<<12))
    		ewrite_short(iFlags)
    		ewrite_byte(iColor[Red])
    		ewrite_byte(iColor[Green])
    		ewrite_byte(iColor[Blue])
    		ewrite_byte(iAlpha)
    		emessage_end()
    	}
    	else
    	{
    		message_begin(MSG_DEST, gmsgScreenFade, _, id)
    		write_short(iFadeTime)
    		write_short(FixedUnsigned16(flHoldTime , 1<<12))
    		write_short(iFlags)
    		write_byte(iColor[Red])
    		write_byte(iColor[Green])
    		write_byte(iColor[Blue])
    		write_byte(iAlpha)
    		message_end()
    	}
    }
    /* __________________________________________________________
    		UTIL_FadeToBlack
    ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯|| */
    stock UTIL_FadeToBlack(id,Float:fxtime=3.0,bool:bReliable=false,bool:bExternal=false)
    	UTIL_ScreenFade(id, _, fxtime, fxtime, 255, FFADE_OUT|FFADE_STAYOUT,bReliable,bExternal)
    /* __________________________________________________________
    		Light
    ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯|| */
    public Light(entity, red, green, blue)
    {	
    	if(is_valid_ent(entity))
    	{
    		static Float:origin[3]
    		pev(entity, pev_origin, origin)
    		
    		message_begin(MSG_BROADCAST, SVC_TEMPENTITY, _, entity)
    		write_byte(TE_DLIGHT) // TE id
    		engfunc(EngFunc_WriteCoord, origin[0])
    		engfunc(EngFunc_WriteCoord, origin[1])
    		engfunc(EngFunc_WriteCoord, origin[2])
    		write_byte(7) 
    		write_byte(red)
    		write_byte(green)
    		write_byte(blue)
    		write_byte(2)
    		write_byte(0)
    		message_end()
    	}
    }
    
    public shop_menu(id)
    {
    	if(!is_user_connected(id))
    		return;
    		
    	static menu_name[75];
    	formatex(menu_name, charsmax(menu_name), "Ultimate Remaked Furien Shop^nCredits: %d^n", g_money[id])
    	static menu;
    	menu = menu_create(menu_name, "shop_handler");
    
    	static i_menu[100];
    
    	if(!(get_user_flags(id) & VIP_FLAG))
    		formatex(i_menu, charsmax(i_menu), "\d%s\R [ONLY VIP]", items_menu[0])
    	else
    	{
    		if(!is_user_alive(id))
    			formatex(i_menu, charsmax(i_menu), "\d%s\R [ONLY ALIVE]", items_menu[0])
    		else
    		{
    			switch(get_user_team(id))
    			{
    				case 1: formatex(i_menu, charsmax(i_menu), "\d%s\R [ONLY ANTI-FURIEN]", items_menu[0])
    				case 2:
    				{
    					if(g_ak47[id])
    						formatex(i_menu, charsmax(i_menu), "\y%s\r\R [ALREADY HAVE]", items_menu[0])
    					else
    					{
    						if(g_money[id] < cost[0])
    							formatex(i_menu, charsmax(i_menu), "\d%s\R %d", items_menu[0], cost[0])
    						else
    							formatex(i_menu, charsmax(i_menu), "\y%s\r\R %d", items_menu[0], cost[0])
    					}
    				}
    			}
    		}
    	}
    	menu_additem(menu, i_menu, "")
    	if(!(get_user_flags(id) & VIP_FLAG))
    		formatex(i_menu, charsmax(i_menu), "\d%s\R [ONLY VIP]", items_menu[1])
    	else
    	{
    		if(!is_user_alive(id))
    			formatex(i_menu, charsmax(i_menu), "\d%s\R [ONLY ALIVE]", items_menu[1])
    		else
    		{
    			switch(get_user_team(id))
    			{
    				case 1: formatex(i_menu, charsmax(i_menu), "\d%s\R [ONLY ANTI-FURIEN]", items_menu[1])
    				case 2:
    				{
    					if(g_m4a1[id])
    						formatex(i_menu, charsmax(i_menu), "\y%s\r\R [ALREADY HAVE]", items_menu[1])
    					else
    					{
    						if(g_money[id] < cost[1])
    							formatex(i_menu, charsmax(i_menu), "\d%s\R %d", items_menu[1], cost[1])
    						else
    							formatex(i_menu, charsmax(i_menu), "\y%s\r\R %d", items_menu[1], cost[1])
    					}
    				}
    			}
    		}
    	}
    	menu_additem(menu, i_menu, "")
    	if(!(get_user_flags(id) & VIP_FLAG))
    		formatex(i_menu, charsmax(i_menu), "\d%s\R [ONLY VIP]", items_menu[2])
    	else
    	{
    		if(!is_user_alive(id))
    			formatex(i_menu, charsmax(i_menu), "\d%s\R [ONLY ALIVE]", items_menu[2])
    		else
    		{
    			switch(get_user_team(id))
    			{
    				case 1: formatex(i_menu, charsmax(i_menu), "\d%s\R [ONLY ANTI-FURIEN]", items_menu[2])
    				case 2:
    				{
    					if(g_deagle[id])
    						formatex(i_menu, charsmax(i_menu), "\y%s\r\R [ALREADY HAVE]", items_menu[2])
    					else
    					{
    						if(g_money[id] < cost[2])
    							formatex(i_menu, charsmax(i_menu), "\d%s\R %d", items_menu[2], cost[2])
    						else
    							formatex(i_menu, charsmax(i_menu), "\y%s\r\R %d", items_menu[2], cost[2])
    					}
    				}
    			}
    		}
    	}
    	menu_additem(menu, i_menu, "")
    	if(!(get_user_flags(id) & VIP_FLAG))
    		formatex(i_menu, charsmax(i_menu), "\d%s\R [ONLY VIP]", items_menu[3])
    	else
    	{
    		if(!is_user_alive(id))
    		{
    			if(g_used_life[id])
    				formatex(i_menu, charsmax(i_menu), "\y%s\r\R [USED]", items_menu[3])
    			else
    			{
    				if(g_money[id] < cost[3])
    					formatex(i_menu, charsmax(i_menu), "\d%s\R %d", items_menu[3], cost[3])
    				else
    					formatex(i_menu, charsmax(i_menu), "\y%s\r\R %d", items_menu[3], cost[3])
    			}
    		}
    		else
    			formatex(i_menu, charsmax(i_menu), "\d%s\R [ONLY DEAD]", items_menu[3])
    	}
    	menu_additem(menu, i_menu, "")
    	if(!(get_user_flags(id) & VIP_FLAG))
    		formatex(i_menu, charsmax(i_menu), "\d%s\R [ONLY VIP]", items_menu[4])
    	else
    	{
    		if(!is_user_alive(id))
    			formatex(i_menu, charsmax(i_menu), "\d%s\R [ONLY ALIVE]", items_menu[4])
    		else
    		{
    			switch(get_user_team(id))
    			{
    				case 1: formatex(i_menu, charsmax(i_menu), "\d%s\R [ONLY ANTI-FURIEN]", items_menu[4])
    				case 2:
    				{
    					if(g_pet[id])
    						formatex(i_menu, charsmax(i_menu), "\y%s\r\R [ALREADY HAVE]", items_menu[4])
    					else
    					{
    						if(g_money[id] < cost[4])
    							formatex(i_menu, charsmax(i_menu), "\d%s\R %d", items_menu[4], cost[4])
    						else
    							formatex(i_menu, charsmax(i_menu), "\y%s\r\R %d", items_menu[4], cost[4])
    					}
    				}
    			}
    		}
    	}
    	menu_additem(menu, i_menu, "")
    	menu_display(id, menu, 0)
    }
    
    public donate(id, arg[])
    {
    	static cui[32], count[10];
    	strbreak(arg, cui, 31, count, 9)
    	
    	if(!cui[0] || !count[0])
    	{
    		color(id, ".v%s.g Comanda se foloseste sub forma urmatoare:.e /donate nume bani.g.", TAG)
    		return
    	}
    	static credite_trimise, credite;
    	credite_trimise = g_money[id]
    	if(equal(count, "all"))
    		credite = credite_trimise
    	else
    		credite = str_to_num(count)
    	
    	if(credite <= 0)
    	{
    		color(id, ".v%s.g Valoarea introdusa de tine este invalida.", TAG)
    		return
    	}
    	credite_trimise -= credite
    	if(credite_trimise < 0)
    	{
    		credite += credite_trimise
    		credite_trimise = 0
    	}
    	static primitor;
    	primitor = cmd_target(id, cui, (CMDTARGET_ALLOW_SELF))
    	if(!primitor || primitor == id)
    	{
    		color(id, ".v%s.e %s.g nu exista pe server.", TAG, cui)
    		return
    	}
    	g_money[primitor] += credite
    	g_money[id] = credite_trimise
    	
    	color(0, ".v%s.e %s.g ii trimite lui.e %s %d$.g.", TAG, get_name(id), get_name(primitor), credite)
    }
    
    public shop_handler(id, menu, item)
    {
    	if(!(get_user_flags(id) & VIP_FLAG))
    	{
    		color(id, ".v%s.g Trebuie sa detii.e VIP.g pentru a folosi acest shop.", TAG)
    		menu_destroy(menu);
    		return PLUGIN_HANDLED;
    	}
    	if(item == MENU_EXIT)
        {
            menu_destroy(menu);
            return PLUGIN_HANDLED;
        }
    	
    	if(g_money[id] < cost[item])
    	{
    		color(id, ".v%s.g Nu ai destule credite sa cumperi.e %s.g. Iti mai trebuiesc.e %d.g credite.", TAG, items_menu[item], cost[item] - g_money[id])
    		menu_destroy(menu);
    		return PLUGIN_HANDLED;
    	}
    	
    	switch(item)
    	{
    		case 0:
    		{
    			if(!is_user_alive(id))
    			{
    				color(id, ".v%s.g Trebuie sa fii in viata pentru a putea cumpara.e %s.g", items_menu[item])
    				menu_destroy(menu);
    				return PLUGIN_HANDLED;
    			}
    			if(get_user_team(id) != 2)
    			{
    				color(id, ".v%s.g Trebuie sa fii.e Anti-Furien.g pentru a putea cumpara.e %s.g.", TAG, items_menu[item])
    				menu_destroy(menu);
    				return PLUGIN_HANDLED;
    			}
    			if(g_ak47[id])
    			{
    				color(id, ".v%s.g Ai deja.e %s.g.", TAG, items_menu[item])
    				menu_destroy(menu);
    				return PLUGIN_HANDLED;
    			}
    			drop_weapons(id, 1)
    			g_ak47[id] = true
    			give_item(id, "weapon_ak47")
    			cs_set_user_bpammo(id, CSW_AK47, 90)
    		}
    		case 1:
    		{
    			if(!is_user_alive(id))
    			{
    				color(id, ".v%s.g Trebuie sa fii in viata pentru a putea cumpara.e %s.g", items_menu[item])
    				menu_destroy(menu);
    				return PLUGIN_HANDLED;
    			}
    			if(get_user_team(id) != 2)
    			{
    				color(id, ".v%s.g Trebuie sa fii.e Anti-Furien.g pentru a putea cumpara.e %s.g.", TAG, items_menu[item])
    				menu_destroy(menu);
    				return PLUGIN_HANDLED;
    			}
    			if(g_m4a1[id])
    			{
    				color(id, ".v%s.g Ai deja.e %s.g.", TAG, items_menu[item])
    				menu_destroy(menu);
    				return PLUGIN_HANDLED;
    			}
    			drop_weapons(id, 1)
    			g_m4a1[id] = true
    			give_item(id, "weapon_m4a1")
    			cs_set_user_bpammo(id, CSW_M4A1, 90)
    		}
    		case 2:
    		{
    			if(!is_user_alive(id))
    			{
    				color(id, ".v%s.g Trebuie sa fii in viata pentru a putea cumpara.e %s.g", items_menu[item])
    				menu_destroy(menu);
    				return PLUGIN_HANDLED;
    			}
    			if(get_user_team(id) != 2)
    			{
    				color(id, ".v%s.g Trebuie sa fii.e Anti-Furien.g pentru a putea cumpara.e %s.g.", TAG, items_menu[item])
    				menu_destroy(menu);
    				return PLUGIN_HANDLED;
    			}
    			if(g_deagle[id])
    			{
    				color(id, ".v%s.g Ai deja.e %s.g.", TAG, items_menu[item])
    				menu_destroy(menu);
    				return PLUGIN_HANDLED;
    			}
    			drop_weapons(id, 2)
    			g_deagle[id] = true
    			give_item(id, "weapon_deagle")
    			cs_set_user_bpammo(id, CSW_DEAGLE, 90)
    		}
    		case 3:
    		{
    			if(is_user_alive(id))
    			{
    				color(id, ".v%s.g Trebuie sa fii.e mort.g pentru a folosi.e %s.g.", TAG, items_menu[item])
    				menu_destroy(menu);
    				return PLUGIN_HANDLED;
    			}
    			if(get_user_team(id) == 3)
    			{
    				color(id, ".v%s.g Esti spectator si nu poti folosi.e %s.g.", TAG, items_menu[item])
    				menu_destroy(menu);
    				return PLUGIN_HANDLED;
    			}
    			if(g_used_life[id])
    			{
    				color(id, ".v%s.g Ai folosit deja.e %s.g.", TAG, items_menu[item])
    				menu_destroy(menu);
    				return PLUGIN_HANDLED;
    			}
    			g_used_life[id] = true
    			ExecuteHamB(Ham_CS_RoundRespawn, id)
    		}
    		case 4:
    		{
    			if(!is_user_alive(id))
    			{
    				color(id, ".v%s.g Trebuie sa fii.e viu.g pentru a folosi.e %s.g.", TAG, items_menu[item])
    				menu_destroy(menu);
    				return PLUGIN_HANDLED;
    			}
    			if(get_user_team(id) != 2)
    			{
    				color(id, ".v%s.g Trebuie sa fii.e Anti-Furien.g pentru a folosi.e %s.g.", TAG, items_menu[item])
    				menu_destroy(menu);
    				return PLUGIN_HANDLED;
    			}
    			if(g_pet[id])
    			{
    				color(id, ".v%s.g Ai deja.e %s.g.", TAG, items_menu[item])
    				menu_destroy(menu);
    				return PLUGIN_HANDLED;
    			}
    			create_pet(id)
    			set_pev(id, pev_health, 200.0)
    			set_pev(id, pev_armorvalue, 200.0)
    			set_pev(id, pev_gravity, 0.5)
    		}
    	}
    	g_money[id] -= cost[item]
    	check_weapon(id)
    	color(id, ".v%s.g Ai cumparat.e %s.g pentru.e %d$.g.", TAG, items_menu[item], cost[item])
    	menu_destroy(menu);
    	return PLUGIN_HANDLED;	
    }
    
    public create_pet(id)
    {
    	item_pet[id] = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString,"info_target"))
    	set_pev(item_pet[id], pev_classname, "bat")
    	
    	engfunc(EngFunc_SetModel,item_pet[id],pet_model)
    	
    	new Float:origin[3]
    	pev(id,pev_origin,origin)			
    	
    	set_pev(item_pet[id],pev_origin,origin)
    	set_pev(item_pet[id],pev_solid,SOLID_TRIGGER)
    	set_pev(item_pet[id],pev_movetype,MOVETYPE_FLY)
    	set_pev(item_pet[id],pev_owner,33)
    	set_pev(item_pet[id],pev_nextthink,1.0)
    	set_pev(item_pet[id],pev_sequence,0)
    	set_pev(item_pet[id],pev_gaitsequence,0)
    	set_pev(item_pet[id],pev_framerate,1.0)	
    	
    	engfunc(EngFunc_EmitSound,item_pet[id],CHAN_AUTO,pet_sounds[random_num(0,sizeof pet_sounds - 1)],1.0, 1.2, 0, PITCH_NORM)	
    	
    	client_print(id, print_center, "Ai primit liliacul magic")		
    	
    	g_pet[id] = true
    	return PLUGIN_HANDLED
    }
    
    public checkandupdatetop(id, leveles, ori, minuti) 
    {	
    
    	static name[32];
    	get_user_name(id, name, charsmax(name) - 1);
    	for(new i = INFO_ZERO; i < NTOP; i++)
    	{
    		if(leveles > toplevels[i] || leveles == toplevels[i] && ori > tophours[i] && minuti > topminutes[i] || leveles == toplevels[i] && ori == tophours[i] && minuti > topminutes[i])
    		{
    			new pos = i;	
    			while(!equal(topnames[pos],name) && pos < NTOP)
    				pos++;
    			
    			for(new j = pos; j > i; j--)
    			{
    				formatex(topnames[j], 31, topnames[j-1]);
    				toplevels[j] = toplevels[j-1];
    				tophours[j] = tophours[j-1];
    				topminutes[j] = topminutes[j-1];
    			}
    			formatex(topnames[i], charsmax(name) - 1, name);
    			toplevels[i] = leveles;
    			tophours[i]= ori;
    			topminutes[i] = minuti;
    			save_top();
    			break;
    		}
    		else if(equal(topnames[i], name)) 
    		break;	
    	}
    }
    public read_top() 
    {
    	new Buffer[256],path[128];
    	formatex(path, 127, "%s/TopLevels.dat", data_save);
    	
    	new f = fopen(path, "rt");
    	new i = INFO_ZERO;
    	while(!feof(f) && i < NTOP+1)
    	{
    		fgets(f, Buffer, 255)
    		new niveluri[25], hours[25], minutes[25];
    		parse(Buffer, topnames[i], 31, niveluri, 25,  hours, 25, minutes, 25);
    		toplevels[i] = str_to_num(niveluri);
    		tophours[i]= str_to_num(hours);
    		topminutes[i]= str_to_num(minutes);
    		
    		i++;
    	}
    	fclose(f);
    }
    public show_top(id) 
    {	
    	static buffer[2368], name[131], len, i;
    	len = format(buffer[len], 2367-len,"<STYLE>body{background:#232323;color:#cfcbc2;font-family:sans-serif}table{border-style:solid;border-width:1px;border-color:#FFFFFF;font-size:13px}</STYLE><table align=center width=100%% cellpadding=2 cellspacing=0");
    	len += format(buffer[len], 2367-len, "<tr align=center bgcolor=#52697B><th width=4%% > # <th width=24%%> NAME <th width=24%%>LEVEL <th width=24%%> HOURS <th  width=24%%> MINUTES");	
    	for(i = INFO_ZERO; i < NTOP; i++)
    	{		
    			if(tophours[i] == 0 && topminutes[i] == 0)
    				len += format(buffer[len], 2367-len, "<tr align=center bgcolor=#232323><td> %d <td> %s <td> %s<td> %s <td> %s", (i+1), "-", "-", "-","-");
    			else 
    			{
    				name = topnames[i];
    				while(containi(name, "<") != -1)
    					replace(name, 129, "<", "<");
    				while(containi(name, ">") != -1)
    					replace(name, 129, ">", ">");
    				static plname[32];
    				get_user_name(id, plname ,32);
    				if(equal(topnames[i],plname)) 
    					len += format(buffer[len], 2367-len, "<tr align=center bgcolor=#2D2D2D><td> %d <td> %s <td> %d<td> %d <td> %d", (i+1), name, toplevels[i], tophours[i], topminutes[i]);
    				else
    					len += format(buffer[len], 2367-len, "<tr align=center bgcolor=#232323><td> %d <td> %s <td> %d<td> %d <td> %d", (i+1), name, toplevels[i], tophours[i], topminutes[i]);
    			}
    		}
    	len += format(buffer[len], 2367-len, "</table>");
    	len += formatex(buffer[len], 2367-len, "<tr align=bottom font-size:11px><Center><br><br><br><br>TOP 10 LEVELS</body>");
    	static strin[20];
    	format(strin,33, "TOP 10 LEVELS");
    	show_motd(id, buffer, strin);
    }
    
    create_thunder(const Float:vec1[3], const Float:vec2[3])
    {
    	engfunc(EngFunc_MessageBegin, MSG_PVS, SVC_TEMPENTITY, vec2, 0)
    	write_byte(0)
    	engfunc(EngFunc_WriteCoord, vec1[0])
    	engfunc(EngFunc_WriteCoord, vec1[1])
    	engfunc(EngFunc_WriteCoord, vec1[2])
    	engfunc(EngFunc_WriteCoord, vec2[0])
    	engfunc(EngFunc_WriteCoord, vec2[1])
    	engfunc(EngFunc_WriteCoord, vec2[2])
    	write_short(lighting)
    	write_byte(1)
    	write_byte(5)
    	write_byte(2)
    	write_byte(20)
    	write_byte(30)
    	write_byte(200)
    	write_byte(200)
    	write_byte(200)
    	write_byte(200)
    	write_byte(200)
    	message_end()
    
    	engfunc(EngFunc_MessageBegin, MSG_PVS, SVC_TEMPENTITY, vec2, 0)
    	write_byte(TE_SPARKS)
    	engfunc(EngFunc_WriteCoord, vec2[0])
    	engfunc(EngFunc_WriteCoord, vec2[1])
    	engfunc(EngFunc_WriteCoord, vec2[2])
    	message_end()
    	
    	engfunc(EngFunc_MessageBegin, MSG_PVS, SVC_TEMPENTITY, vec2, 0)
    	write_byte(TE_SMOKE)
    	engfunc(EngFunc_WriteCoord, vec2[0])
    	engfunc(EngFunc_WriteCoord, vec2[1])
    	engfunc(EngFunc_WriteCoord, vec2[2])
    	write_short(smoke_spr)
    	write_byte(10)
    	write_byte(10)
    	message_end()
    }
    
    make_HideWeapon(plr, flags)
    {
    	static i; i = plr ? plr : get_player();
    	if(!i)
    		return 0;
    	message_begin(plr ? MSG_ONE : MSG_ALL, g_msgHideWeapon, {0, 0, 0}, plr);
    	write_byte(flags);
    	message_end();
    	return 1;
    }
    
    get_player()
    {
    	for( new plr = 1; plr <= g_iMaxPlayers; plr++ )
    	{
    		if( IsPlayer(plr))
    		{
    			return plr;
    		}
    	}
    	
    	return 0;
    }
    
    stock UTIL_CreateFlares(const iOrigin[3], const iSpriteID, const iCount, const iLife, const iScale)
    {
    	message_begin(MSG_BROADCAST,SVC_TEMPENTITY);
    	write_byte(TE_SPRITETRAIL);
    	write_coord(iOrigin[0]);
    	write_coord(iOrigin[1]);
    	write_coord(iOrigin[2]);
    	write_coord(iOrigin[0]);
    	write_coord(iOrigin[1]);
    	write_coord(iOrigin[2] + random_num(5, 10));
    	write_short(iSpriteID);
    	write_byte(iCount);
    	write_byte(iLife);
    	write_byte(iScale);
    	write_byte(random_num(30, 50));
    	write_byte(random_num(10, 15));
    	message_end();
    }
    
    public hook_drop(id)
    {
    	if(!is_user_alive(id))
    		return PLUGIN_CONTINUE;
    		
    	if(get_user_team(id) == 1)
    	{
    		client_print(id, print_center, "Nu poti arunca nimic!")
    		return PLUGIN_HANDLED;
    	}
    	return PLUGIN_CONTINUE;
    }
    
    public CountDown()
    {
    	if(g_endround)
    		return;
    		
    	set_dhudmessage(random(255), random(255), random(255), -1.0, 0.24, 1, 0.0, 1.0, 0.0, 0.0)
    	SecondsUntillInvasion -= 1
    	switch(SecondsUntillInvasion)
    	{
    		case 0:
    		{
    			show_dhudmessage(0, "Furienii ataca planeta in o secunda.")
    			TerroTeamEffects()
    			CounterTeamEffects()
    			PlaySound(start_sounds[SecondsUntillInvasion])
    			return
    		}
    		case 1:
    		{
    			PlaySound(start_sounds[SecondsUntillInvasion])
    			show_dhudmessage(0, "Furienii ataca planeta in doua secunde.")
    			TerroTeamEffects()
    			CounterTeamEffects()
    		}
    		case 2:
    		{
    			PlaySound(start_sounds[SecondsUntillInvasion])
    			show_dhudmessage(0, "Furienii ataca planeta in trei secunde.")
    			TerroTeamEffects()
    			CounterTeamEffects()
    		}
    		case 3:
    		{
    			PlaySound(start_sounds[SecondsUntillInvasion])
    			show_dhudmessage(0, "Furienii ataca planeta in patru secunde.")
    			TerroTeamEffects()
    			CounterTeamEffects()
    		}
    		case 4:
    		{
    			PlaySound(start_sounds[SecondsUntillInvasion])
    			show_dhudmessage(0, "Furienii ataca planeta in cinci secunde.")
    			TerroTeamEffects()
    			CounterTeamEffects()
    		}
    	}	
    	set_task(1.0, "CountDown");
    } 
    
    public TerroTeamEffects()
    {
    	new iPlayers[32];
    	new iPlayersNum;
    	
    	get_players(iPlayers, iPlayersNum, "aceh", "TERRORIST");
    	
    	for(new i = 0 ; i < iPlayersNum ; i++)
    	{
    		if(IsPlayer(iPlayers[i]))
    		{      
    			ShakeScreen(iPlayers[i], 0.9);
    			FadeScreen(iPlayers[i], 0.5, 230, 40, 0, 180);
    		}
    	}
    }
    public CounterTeamEffects()
    {
    	new iPlayers[32];
    	new iPlayersNum;
    	
    	get_players(iPlayers, iPlayersNum, "aceh", "CT");
    	
    	for(new i = 0; i < iPlayersNum ; i++)
    	{
    		if(IsPlayer(iPlayers[i]))
    		{      
    			ShakeScreen(iPlayers[i], 0.9);
    			FadeScreen(iPlayers[i], 0.5, 0, 40, 230, 180);
    		}
    	}
    }
    
    public task_CanPlant() 
    {
    	set_lights("d")
    	if(active_fog)
    		msg_create_fog(random(255), random(255), random(255), 2)
    	g_dontdelete = true
    	remove_task(TASK_REMOVEC4)
    	static CT, TERO, salvator, distrugator;
    	CT = fnGetAliveCT();
    	if(CT < 1)
    		return;
    		
    	TERO = fnGetAliveT();
    	if(TERO < 1)
    		return;
    	
    	salvator = fnGetRandomAliveCT(random_num(1, CT))
    	distrugator = fnGetRandomAliveT(random_num(1, TERO))
    	g_end_health[distrugator] = get_user_health(distrugator)
    	g_end_health[salvator] = get_user_health(salvator)
    	set_user_health(salvator, 200)
    	savior[salvator] = true
    	cs_set_user_defuse(salvator, 1)
    	set_task(0.1, "savior_aura", salvator+TASK_AURA, _, _, "b")
    	set_user_health(distrugator, 135)
    	destroyer[distrugator] = true
    	ham_give_weapon(distrugator, "weapon_c4")
    	cs_set_user_plant(distrugator, 1, 1);
    	engclient_cmd(distrugator, "weapon_knife")
    	check_weapon(distrugator)
    	set_hudmessage(200, 30, 20, -1.0, 0.15, 1, 3.1, 3.0)
    	ShowSyncHudMsg(0, event_hud, "Bomba cu plasma poate fi plantata!^n%s a fost ales ca EROU!!!^n%s a fost ales ca DISTRUGATOR!!!", get_name(salvator), get_name(distrugator))
    }
    
    public select_destroyer()
    {
    	if(g_endround)
    		return;
    	
    	static TERO, distrugator;
    	TERO = fnGetAliveT();
    	if(TERO < 1)
    		return;
    		
    	distrugator = fnGetRandomAliveT(random_num(1, TERO))
    	g_end_health[distrugator] = get_user_health(distrugator)
    	set_user_health(distrugator, 135)
    	color(0, ".v%s.e %s.g a fost ales NOUL.e DISTRUGATOR.g.", TAG, get_name(distrugator))
    	destroyer[distrugator] = true
    	if(!b_planted)
    	{
    		ham_give_weapon(distrugator, "weapon_c4")
    		cs_set_user_plant(distrugator, 1, 1);
    	}
    	engclient_cmd(distrugator, "weapon_knife")
    	check_weapon(distrugator)
    }
    
    public select_savior()
    {
    	if(g_endround)
    		return;
    	
    	static CT, salvator;
    	CT = fnGetAliveCT();
    	if(CT < 1)
    		return;
    		
    	salvator = fnGetRandomAliveCT(random_num(1, CT))
    	g_end_health[salvator] = get_user_health(salvator)
    	set_user_health(salvator, 200)
    	color(0, ".v%s.e %s.g a fost ales NOUL EROU.", TAG, get_name(salvator))
    	savior[salvator] = true
    	cs_set_user_defuse(salvator, 1);
    }
    
    public savior_aura(taskid)
    {
    	if(!savior[ID_AURA] || !is_user_alive(ID_AURA))
    	{
    		remove_task(taskid);
    		return;
    	}
    	static origin[3]
    	get_user_origin(ID_AURA, origin)
    
    	message_begin(MSG_PVS, SVC_TEMPENTITY, origin)
    	write_byte(TE_DLIGHT)
    	write_coord(origin[0])
    	write_coord(origin[1])
    	write_coord(origin[2])
    	write_byte(20)
    	write_byte(0)
    	write_byte(200)
    	write_byte(50)
    	write_byte(2)
    	write_byte(0)
    	message_end()
    }
    
    public score_attrib(msgid, dest, id)
    {
    	static juc, attrib;
    	juc = get_msg_arg_int(1);
    	attrib = get_msg_arg_int(2);
    	
    	if(attrib == ATTRIB_BOMB)
    	{
    		if(destroyer[juc] && user_has_weapon(juc, CSW_C4))
    			return PLUGIN_CONTINUE;
    		else
    			set_msg_arg_int(2, ARG_BYTE, 0)
    		return PLUGIN_HANDLED;
    	}
    	return PLUGIN_CONTINUE;
    }
    
    public status_icon(msgid, dest, id)
    {
    	static juc, icon[3];
    	juc = get_msg_arg_int(1);
    	get_msg_arg_string(2, icon, 2);
    	if((icon[0] == 'c' && icon[1] == '4'))
    	{
    		if(destroyer[juc])
    			return PLUGIN_CONTINUE;
    		return PLUGIN_HANDLED;
    	}
    	return PLUGIN_CONTINUE
    }
    
    fnGetAliveCT()
    {
    	static iAlive, id
    	iAlive = 0
    	
    	for (id = 1; id <= g_iMaxPlayers; id++)
    	{
    		if(is_user_alive(id) && get_user_team(id) == 2)
    			iAlive++
    	}
    	
    	return iAlive;
    }
    
    fnGetRandomAliveCT(n)
    {
    	static iAlive, id
    	iAlive = 0
    	
    	for (id = 1; id <= g_iMaxPlayers; id++)
    	{
    		if(is_user_alive(id) && get_user_team(id) == 2)
    			iAlive++
    		
    		if(iAlive == n)
    			return id;
    	}
    	
    	return -1;
    }
    
    fnGetAliveT()
    {
    	static iAlive, id
    	iAlive = 0
    	
    	for (id = 1; id <= g_iMaxPlayers; id++)
    	{
    		if(is_user_alive(id) && get_user_team(id) == 1)
    			iAlive++
    	}
    	
    	return iAlive;
    }
    
    fnGetRandomAliveT(n)
    {
    	static iAlive, id
    	iAlive = 0
    	
    	for (id = 1; id <= g_iMaxPlayers; id++)
    	{
    		if(is_user_alive(id) && get_user_team(id) == 1)
    			iAlive++
    		
    		if(iAlive == n)
    			return id;
    	}
    	
    	return -1;
    }
    
    public ShakeScreen(id, const Float:seconds)
    {
    	message_begin(MSG_ONE_UNRELIABLE, g_screenshake, {0, 0, 0}, id);
    	write_short(floatround(4096.0 * seconds, floatround_round));
    	write_short(floatround(4096.0 * seconds, floatround_round));
    	write_short(1<<13);
    	message_end();
    }
    
    public FadeScreen(id, const Float:seconds, const red, const green, const blue, const alpha)
    {      
    	message_begin(MSG_ONE_UNRELIABLE, g_msgScreenFade, _, id);
    	write_short(floatround(4096.0 * seconds, floatround_round));
    	write_short(floatround(4096.0 * seconds, floatround_round));
    	write_short(0x0000);
    	write_byte(red);
    	write_byte(green);
    	write_byte(blue);
    	write_byte(alpha);
    	message_end();
    }
    
    public shop_enter(id)
    {
    	if(get_user_team(id) == 3)
    		return PLUGIN_CONTINUE;
    		
    	switch(get_user_team(id))
    	{
    		case 1: shop_furien(id)
    		case 2: shop_anti_furien(id)
    	}
    	return PLUGIN_HANDLED;
    }
    
    public shop_furien(id)
    {
    	static menu_name[128];
    	formatex(menu_name, charsmax(menu_name), "\yShop Furien^n\rBani: %i$^n^n", g_money[id])
    	new menu = menu_create(menu_name, "furien_handler")
    	static menu_item[80], tasta[2];
    	for(new i = 0; i < sizeof FURIEN_ITEMS; i++)
    	{
    		if(g_money[id] < FURIEN_COST[i])
    			formatex(menu_item, charsmax(menu_item), "\d%s\R %d$", FURIEN_ITEMS[i], FURIEN_COST[i])
    		else
    			formatex(menu_item, charsmax(menu_item), "\y%s\r\R %d$", FURIEN_ITEMS[i], FURIEN_COST[i])
    		tasta[0] = i
    		tasta[1] = 0
    		menu_additem(menu, menu_item, tasta)
    	}
    	if(pev_valid(id) == PDATA_SAFE)
    		set_pdata_int(id, OFFSET_CSMENUCODE, 0, OFFSET_LINUX)
    	menu_display(id, menu, 0)
    }
    
    public get_bomb()
    	remove_c4()
    
    public delete_c4()
    {
    	if(g_dontdelete)
    	{
    		remove_task(TASK_REMOVEC4)
    		return;
    	}
    	remove_c4()
    }
    
    public shop_anti_furien(id)
    {
    	static menu_name[128];
    	formatex(menu_name, charsmax(menu_name), "\yShop Anti-Furien^n\rBani: %i$^n^n", g_money[id])
    	new menu = menu_create(menu_name, "anti_furien_handler")
    	static menu_item[80], tasta[2];
    	for(new i = 0; i < sizeof ANTI_FURIEN_ITEMS; i++)
    	{
    		if(g_money[id] < ANTI_FURIEN_COST[i])
    			formatex(menu_item, charsmax(menu_item), "\d%s\R %d$", ANTI_FURIEN_ITEMS[i], ANTI_FURIEN_COST[i])
    		else
    			formatex(menu_item, charsmax(menu_item), "\y%s\r\R %d$", ANTI_FURIEN_ITEMS[i], ANTI_FURIEN_COST[i])
    		tasta[0] = i
    		tasta[1] = 0
    		menu_additem(menu, menu_item, tasta)
    	}
    	if(pev_valid(id) == PDATA_SAFE)
    		set_pdata_int(id, OFFSET_CSMENUCODE, 0, OFFSET_LINUX)
    	menu_display(id, menu, 0)
    }
    
    public furien_handler(id, menu, item)
    {
    	if(item == MENU_EXIT)
    	{
    		menu_destroy(menu);
    		return PLUGIN_HANDLED;
    	}
    	
    	if(item >= sizeof FURIEN_ITEMS) return PLUGIN_HANDLED;
    	
    	if(!is_user_alive(id))
    	{
    		color(id, ".v%s.g Esti mort. Nu poti cumpara.e %s.g.", TAG, FURIEN_ITEMS[item])
    		menu_destroy(menu);
    		return PLUGIN_HANDLED;
    	}
    	
    	if(get_user_team(id) != 1)
    	{
    		menu_destroy(menu);
    		shop_anti_furien(id)
    		return PLUGIN_HANDLED;
    	}
    	
    	if(g_money[id] < FURIEN_COST[item])
    	{
    		color(id, ".v%s.g Nu ai destui bani pentru.e %s.g. Iti mai trebuiesc:.e %d$.g.", TAG, FURIEN_ITEMS[item], FURIEN_COST[item] - g_money[id])
    		menu_destroy(menu);
    		return PLUGIN_HANDLED;
    	}
    	
    	switch(item)
    	{
    		case 0:
    		{
    			if(g_superknife[id])
    			{
    				color(id, ".v%s.g Ai deja.e Super Knife.g.", TAG)
    				menu_destroy(menu);
    				return PLUGIN_HANDLED;
    			}
    			g_superknife[id] = true
    			check_weapon(id)
    		}
    		case 1:
    		{
    			if(get_user_health(id) == 320)
    			{
    				color(id, ".v%s.g Ai deja maximul de HP.", TAG)
    				menu_destroy(menu);
    				return PLUGIN_HANDLED;
    			}
    			else if(get_user_health(id) + 40 > 200)
    				set_user_health(id, 200)
    			else
    				set_user_health(id, get_user_health(id) + 40)
    		}
    		case 2:
    		{
    			if(get_user_armor(id) == 250)
    			{
    				color(id, ".v%s.g Ai deja maximul de armura.", TAG)
    				menu_destroy(menu);
    				return PLUGIN_HANDLED;
    			}	
    			else if(get_user_armor(id) + 50 > 250)
    				set_user_armor(id, 250)
    			else
    				set_user_armor(id, get_user_armor(id) + 50)
    		}
    		case 3:
    		{
    			if(g_noflash[id])
    			{
    				color(id, ".v%s.g Ai deja.e No Flash.g.", TAG)
    				menu_destroy(menu);
    				return PLUGIN_HANDLED;
    			}
    			g_noflash[id] = true
    		}
    		case 4:
    		{
    			if(user_has_weapon(id, CSW_HEGRENADE))
    			{
    				color(id, ".v%s.g Ai deja un.e Napalm Nade.g.", TAG)
    				menu_destroy(menu);
    				return PLUGIN_HANDLED;
    			}
    			ham_give_weapon(id, "weapon_hegrenade")
    		}
    		case 5:
    		{
    			if(user_has_weapon(id, CSW_FLASHBANG))
    			{
    				color(id, ".v%s.g Ai deja un.e Frost Nade.g.", TAG)
    				menu_destroy(menu);
    				return PLUGIN_HANDLED;
    			}
    			ham_give_weapon(id, "weapon_flashbang")
    		}
    		case 6:
    		{
    			if(user_has_weapon(id, CSW_SMOKEGRENADE) && have_killnade[id])
    			{
    				color(id, ".v%s.g Ai deja un.e KILL NADE.g.", TAG)
    				menu_destroy(menu);
    				return PLUGIN_HANDLED;
    			}
    			ham_give_weapon(id, "weapon_smokegrenade")
    			have_killnade[id] = true
    		}
    	}
    	color(id, ".v%s.g Ai cumparat.e %s.g cu.e %d$.g.", TAG, FURIEN_ITEMS[item], FURIEN_COST[item])
    	g_money[id] -= FURIEN_COST[item]
    	emit_sound(id, CHAN_ITEM, misc_sound_wav[0], 1.0, ATTN_NORM, 0, PITCH_NORM)
    	menu_destroy(menu);
    	return PLUGIN_HANDLED;
    }
    	
    public anti_furien_handler(id, menu, item)
    {
    	if(item == MENU_EXIT)
    	{
    		menu_destroy(menu);
    		return PLUGIN_HANDLED;
    	}
    	if(item >= sizeof ANTI_FURIEN_ITEMS) return PLUGIN_HANDLED;
    	
    	if(!is_user_alive(id))
    	{
    		menu_destroy(menu);
    		color(id, ".v%s.g Esti mort. Nu poti cumpara.e %s.g.", TAG, ANTI_FURIEN_ITEMS[item])
    		return PLUGIN_HANDLED;
    	}
    	
    	if(get_user_team(id) != 2)
    	{
    		menu_destroy(menu);
    		shop_furien(id)
    		return PLUGIN_HANDLED;
    	}
    	
    	if(g_money[id] < ANTI_FURIEN_COST[item])
    	{
    		menu_destroy(menu);
    		color(id, ".v%s.g Nu ai destui bani pentru.e %s.g. Iti mai trebuiesc:.e %d$.g.", TAG, ANTI_FURIEN_ITEMS[item], ANTI_FURIEN_COST[item] - g_money[id])
    		return PLUGIN_HANDLED;
    	}
    	
    	switch(item)
    	{
    		case 0:
    		{
    			if(g_furiendetector[id])
    			{
    				color(id, ".v%s.g Ai deja.e Furien Detector.g.", TAG)
    				menu_destroy(menu);
    				return PLUGIN_HANDLED;
    			}
    			g_furiendetector[id] = true
    		}
    		case 1:
    		{
    			if(get_user_health(id) == 280)
    			{
    				color(id, ".v%s.g Ai deja maximul de HP.", TAG)
    				menu_destroy(menu);
    				return PLUGIN_HANDLED;
    			}
    			else if(get_user_health(id) + 50 > 200)
    				set_user_health(id, 200)
    			else
    				set_user_health(id, get_user_health(id) + 50)
    		}
    		case 2:
    		{
    			if(get_user_armor(id) == 250)
    			{
    				color(id, ".v%s.g Ai deja maximul de armura.", TAG)
    				menu_destroy(menu);
    				return PLUGIN_HANDLED;
    			}	
    			else if(get_user_armor(id) + 60 > 250)
    				set_user_armor(id, 250)
    			else
    				set_user_armor(id, get_user_armor(id) + 60)
    		}
    		case 3:
    		{
    			if(g_nofrost[id])
    			{
    				color(id, ".v%s.g Ai deja.e No Frost.g.", TAG)
    				menu_destroy(menu);
    				return PLUGIN_HANDLED;
    			}
    			g_nofrost[id] = true
    		}
    		case 4:
    		{
    			if(user_has_weapon(id, CSW_HEGRENADE))
    			{
    				color(id, ".v%s.g Ai deja un.e He Grenade.g.", TAG)
    				menu_destroy(menu);
    				return PLUGIN_HANDLED;
    			}
    			ham_give_weapon(id, "weapon_hegrenade")
    		}
    		case 5:
    		{
    			if(user_has_weapon(id, CSW_FLASHBANG))
    			{
    				color(id, ".v%s.g Ai deja un.e Flash Bang.g.", TAG)
    				menu_destroy(menu);
    				return PLUGIN_HANDLED;
    			}
    			ham_give_weapon(id, "weapon_flashbang")
    		}
    	}
    	color(id, ".v%s.g Ai cumparat.e %s.g cu.e %d$.g.", TAG, ANTI_FURIEN_ITEMS[item], ANTI_FURIEN_COST[item])
    	g_money[id] -= ANTI_FURIEN_COST[item]
    	emit_sound(id, CHAN_ITEM, misc_sound_wav[0], 1.0, ATTN_NORM, 0, PITCH_NORM)
    	menu_destroy(menu);
    	return PLUGIN_HANDLED;
    }
    
    bool:is_point_visible(Float:start[3], Float:end[3], ignore_ent)
    {
    	static pentru
    	pentru = create_tr2()
    	
    	engfunc(EngFunc_TraceLine, start, end, IGNORE_MONSTERS, ignore_ent, pentru)
    	
    	static Float:dist
    	get_tr2(pentru, TR_flFraction, dist)
    	
    	free_tr2(pentru)
    	
    	return ((dist == 1.0) ? true : false)
    }
    
    public reset_player_model(id)
    {
    	if(!is_user_connected(id))
    		return false;
    
    	if(!flag_get(g_HasCustomModel, id))
    		return true;
    	
    	remove_task(id+TASK_MODELCHANGE)
    	flag_unset(g_HasCustomModel, id)
    	fm_cs_reset_user_model(id)
    	
    	return true;
    }
    
    public fm_cs_set_user_model(taskid)
    	set_user_info(ID_MODELCHANGE, "model", g_CustomPlayerModel[ID_MODELCHANGE])
    
    stock fm_cs_get_user_model(id, model[], len)
    	get_user_info(id, "model", model, len)
    
    stock fm_cs_reset_user_model(id)
    {
    	copy(g_CustomPlayerModel[id], charsmax(g_CustomPlayerModel[]), "gordon")
    	fm_cs_user_model_update(id+TASK_MODELCHANGE)
    }
    
    stock fm_cs_user_model_update(taskid)
    {
    	new Float:current_time
    	current_time = get_gametime()
    	
    	if(current_time - g_ModelChangeTargetTime >= MODELCHANGE_DELAY)
    	{
    		fm_cs_set_user_model(taskid)
    		g_ModelChangeTargetTime = current_time
    	}
    	else
    	{
    		set_task((g_ModelChangeTargetTime + MODELCHANGE_DELAY) - current_time, "fm_cs_set_user_model", taskid)
    		g_ModelChangeTargetTime = g_ModelChangeTargetTime + MODELCHANGE_DELAY
    	}
    }
    
    stock color(const id, const input[], any:...)
    {
    	new count = 1, players[32];
    	static msg[191]
    	vformat(msg, 190, input, 3)
    	
    	replace_all(msg, 190, ".v", "^4")
    	replace_all(msg, 190, ".g", "^1")
    	replace_all(msg, 190, ".e", "^3")
    	
    	if(id) players[0] = id; else get_players(players, count, "ch")
    	{
    		for (new i = 0; i < count; i++)
    		{
    			if(IsPlayer(players[i]))
    			{
    				message_begin(MSG_ONE_UNRELIABLE, g_msgSayText, _, players[i])
    				write_byte(players[i]);
    				write_string(msg);
    				message_end();
    			}
    		}
    	}
    }
    
    public AddCommas(iNum , szOutput[] , iLen)
    {
    	new szTmp[15], iOutputPos, iNumPos, iNumLen;
    
    	if(iNum < 0)
    	{
    		szOutput[iOutputPos++] = '-'
    		iNum = abs(iNum)
    	}
    
    	iNumLen = num_to_str(iNum, szTmp, charsmax(szTmp))
    
    	if(iNumLen <= 3)
    		iOutputPos += copy(szOutput[iOutputPos], iLen, szTmp)
    	else
    	{
    		while((iNumPos < iNumLen) && (iOutputPos < iLen)) 
    		{
    			szOutput[iOutputPos++] = szTmp[iNumPos++]
    		
    			if((iNumLen - iNumPos) && !((iNumLen - iNumPos) % 3)) 
    				szOutput[iOutputPos++] = ','
    		}
    		szOutput[iOutputPos] = EOS
    	}
    	return iOutputPos;
    }
    
    color_chat(team_format, player, player_team, color, const chat_msg[], ...)
    {
    	static msg[192]
    	vformat(msg, charsmax(msg) - 1, chat_msg, 6)
    	
    	if(team_format)
    	{
    		static id, i, players[32], count
    		get_players(players, count, "e", team_names[player_team])
    		
    		for(i = 0; i < count; i++)
    		{
    			id = players[i]
    			
    			if(!id) continue;
    			
    			message_begin(MSG_ONE_UNRELIABLE, g_msgSayText, _, id)
    			write_byte(player)
    			write_string(msg)
    			message_end()
    			
    		}
    	}
    	else
    	{
    		if(player_team == color)
    		{
    			message_begin(MSG_BROADCAST, g_msgSayText)
    			write_byte(player)
    			write_string(msg)
    			message_end()
    		}
    		else
    		{
    			message_begin(MSG_BROADCAST, g_msg_teaminfo)
    			write_byte(player)
    			write_string(team_names[color])
    			message_end()
    			
    			message_begin(MSG_BROADCAST, g_msgSayText)
    			write_byte(player)
    			write_string(msg)
    			message_end()
    			
    			message_begin(MSG_BROADCAST, g_msg_teaminfo)
    			write_byte(player)
    			write_string(team_names[player_team])
    			message_end()
    		}
    	}
    }
    
    stock fm_cs_get_user_team(id)
    {
    	if(pev_valid(id) != PDATA_SAFE)
    		return FM_CS_TEAM_UNASSIGNED;
    	
    	return get_pdata_int(id, OFFSET_CSTEAMS, OFFSET_LINUX);
    }
    
    stock get_name(id)
    {
    	static name[32];
    	get_user_name(id, name, charsmax(name) - 1)
    	return name;
    }
    
    stock ham_give_weapon(id, const weapon[])
    {
        if(!equal(weapon,"weapon_",7)) return 0;
    
        new wEnt = engfunc(EngFunc_CreateNamedEntity,engfunc(EngFunc_AllocString,weapon));
        if(!pev_valid(wEnt)) return 0;
    
        set_pev(wEnt, pev_spawnflags, SF_NORESPAWN);
        dllfunc(DLLFunc_Spawn, wEnt);
        
        if(!ExecuteHamB(Ham_AddPlayerItem,id,wEnt))
        {
            if(pev_valid(wEnt)) set_pev(wEnt,pev_flags,pev(wEnt,pev_flags) | FL_KILLME);
            return 0;
        }
    
        ExecuteHamB(Ham_Item_AttachToPlayer, wEnt, id)
        return 1;
    }
    
    stock ham_strip_weapon(id,weapon[])
    {
        if(!equal(weapon,"weapon_",7)) return 0;
    
        new wId = get_weaponid(weapon);
        if(!wId) return 0;
    
        new wEnt;
        while((wEnt = engfunc(EngFunc_FindEntityByString,wEnt,"classname",weapon)) && pev(wEnt,pev_owner) != id) {}
        if(!wEnt) return 0;
    
        if(get_user_weapon(id) == wId) ExecuteHamB(Ham_Weapon_RetireWeapon,wEnt);
    
        if(!ExecuteHamB(Ham_RemovePlayerItem,id,wEnt)) return 0;
        ExecuteHamB(Ham_Item_Kill,wEnt);
    
        set_pev(id,pev_weapons,pev(id,pev_weapons) & ~(1<<wId));
    
        if(wId == CSW_C4)
        {
            cs_set_user_plant(id,0,0);
            cs_set_user_bpammo(id,CSW_C4,0);
        }
        else if(wId == CSW_SMOKEGRENADE || wId == CSW_FLASHBANG || wId == CSW_HEGRENADE)
            cs_set_user_bpammo(id, wId, 0);
    
        return 1;
    }
    
    stock msg_create_fog(iRed, iGreen, iBlue, iDensity) 
    {     
    	new const fog_density[] = { 0, 0, 0, 0, 111, 18, 3, 58, 111, 18, 125, 58, 66, 96, 27, 59, 90, 101, 60, 59, 90,
    	101, 68, 59, 10, 41, 95, 59, 111, 18, 125, 59, 111, 18, 3, 60, 68, 116, 19, 60 }
    
    	new dens
    	dens = (4 * iDensity)
     
    	message_begin(MSG_BROADCAST, g_msgfog, { 0, 0, 0 }, 0)
    	write_byte(iRed)
    	write_byte(iGreen)
    	write_byte(iBlue)
    	write_byte(fog_density[dens])
    	write_byte(fog_density[dens + 1])
    	write_byte(fog_density[dens + 2])
    	write_byte(fog_density[dens + 3])
    	message_end()
    }
    
    stock fm_cs_set_user_deaths(id, value)
    {
    	if(pev_valid(id) != PDATA_SAFE)
    		return;
    	
    	set_pdata_int(id, OFFSET_CSDEATHS, value, OFFSET_LINUX)
    }
Last edited by Joekata on 24 Oct 2014, 23:22, edited 3 times in total.
RoyalServer
Cosmin
Fost moderator
Fost moderator
Posts: 9362
Joined: 06 Jul 2013, 22:08
Detinator Steam: Da
Detinator server CS: Nu
Reputatie: Fost eXtream Mod
Fost Scripter eXtreamCS
Nume anterior: scosmynnnn
Has thanked: 492 times
Been thanked: 547 times

24 Oct 2014, 15:30

a fost si pe net candva (pe la pluginuri extream daca mai stiu bine),cauta si o sa gasesti
User avatar
EuSemakka
Membru, skill +1
Membru, skill +1
Posts: 301
Joined: 26 Nov 2013, 17:40
Detinator Steam: Da
Detinator server CS: Furien.FaraLaG.Ro
Has thanked: 38 times
Been thanked: 7 times

24 Oct 2014, 16:09

Uite aici sursa cea de pe net.
| Afiseaza codul
#include <amxmodx>
#include <amxmisc>
#include <engine>
#include <cstrike>
#include <csx>
#include <dhudmessage>  
#include <fun>
#include <fakemeta>
#include <fakemeta_util>
#include <hamsandwich>
#include <nvault>
#include <xs>
//#include <Licentiere>

#define MODELCHANGE_DELAY 0.4
#define ROUNDSTART_DELAY 2.0

#define TASK_SPAWN	06081993
#define TASK_MODELCHANGE 100
#define ID_MODELCHANGE (taskid - TASK_MODELCHANGE)

#define ATTRIB_BOMB (1<<1)

#define PDATA_SAFE 2
#define OFFSET_CSMENUCODE 205
#define OFFSET_LINUX 5
#define OFFSET_CSTEAMS 114
#define OFFSET_MODELINDEX 491
#define OFFSET_CSDEATHS 444
#define OFFSET_LAST_HIT_GROUP 75

#define INFO_ZERO 0
#define NTOP 10

#define PEV_NADE_TYPE pev_flTimeStepSound
#define NADE_TYPE_NAPALM 1111
#define NADE_TYPE_FROST 2222
#define NADE_TYPE_CRAZY 3333
#define NADE_TYPE_KILL 4444
#define BREAK_GLASS 0x01
#define FFADE_IN 0x0000
#define FFADE_STAYOUT 0x0004
#define UNIT_SECOND (1<<12)
#define DMG_NADE (1<<24)

new 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);
new const SECONDARY_WEAPONS_BITSUM = (1<<CSW_GLOCK18)|(1<<CSW_USP)|(1<<CSW_P228)|(1<<CSW_DEAGLE)|(1<<CSW_FIVESEVEN)|(1<<CSW_ELITE);

#define TASK_BURN 10202
#define TASK_MINUTES 1201
#define TASK_REMOVEC4 20122
#define TASK_AFFECT 4303

#define ID_BURN (taskid - TASK_BURN)
#define ID_MINUTE (taskid - TASK_MINUTES)

static const TAG[] = "[Furien]";
new bomba, LaserSprite; 
new nivel[33], complete_hours[33], minutes[33];

new Sprite
new Sprite2
new bool:HasTeleport[33]
new Teleport_Cooldown[33], g_teleports[33] = 0

new modname[32];

enum { Red, Green, Blue }
new const ClassName[] = "BonusBox"
new const SOUND_BLINK[] = { "weapons/flashbang-1.wav" }
new const mdl_box[] = "models/furien.tk/furienbox.mdl"
new const get_present[] = "furien.tk/get_present.wav"

enum
{
	FM_CS_TEAM_UNASSIGNED = 0,
	FM_CS_TEAM_T,
	FM_CS_TEAM_CT,
	FM_CS_TEAM_SPECTATOR
}

new const team_names[][] =
{
	"UNASSIGNED",
	"TERRORIST",
	"CT",
	"SPECTATOR"
}

enum
{
	RED = 1,
	BLUE,
	GREY
}

#define	m_iHideHUD			361
#define	m_iClientHideHUD		362

new const g_names[][] =
{
	"cTmoNe",
	"DldCS16[.]Com-Player",
	"(1)RCPlayer",
	"(2)RCPlayer",
	"(3)RCPlayer",
	"(4)RCPlayer",
	"(5)RCPlayer",
	"rcplayer",
	"gametracker.rs Player",
	"RCPlayer-PRO",
	"<Warrior> Player",
	"RCPlayer",
	"rcplayer",
	"www.",
	".com",
	".ro",
	".net",
	".org",
	".info",
	":27",
	"<warrior",
	"warrior player",
	"watf",
	"pgl",
	"[antimat]",
	"no swear",
	"jucator de",
	"leagane",
	")player",
	"DldCS16.Com Player",
	"csblackdevil",
	"csblackangel",
	"CSBESTIAL.COM",
	"DldCS16.Com",
	"ZombieCity.IndunGi.Ro",
	"ecila"
}

#define FFADE_IN			0x0000		// Just here so we don't pass 0 into the function
#define FFADE_OUT			0x0001		// Fade out (not in)
#define FFADE_MODULATE		0x0002		// Modulate (don't blend)
#define FFADE_STAYOUT		0x0004		// ignores the duration, stays faded out until new ScreenFade message received
const UNIT_SEC = 0x1000
const FFADE = 0x0000

new g_Argping[33][3], g_Offset[ 33 ][ 2 ];

new g_sizeof_names = sizeof g_names
new const g_names_new[][] =
{
	"Furien.CsToPz.Ro",
	"www.cstopz.ro/forum",
	"Furien.CsToPz.Ro#Player"
}

new const explosion_sound[] = "furien.tk/misc/crazy_explode.wav";

#define ANTI_FURIEN_MODEL "bdcs_afurien"
#define FURIEN_MODEL "bdcs_furien"

#define TASK_SHOWHUD 94345
#define ARATA_HUD (taskid - TASK_SHOWHUD)
#define TASK_AURA 3994
#define ID_AURA (taskid - TASK_AURA)
new g_sizeof_names_new = sizeof g_names_new - 1
new g_filter_chars[29] = " ~`@#$%&*()-_=+\|[{]};',<>/?" //^";
new g_names_changed = 1

new bool:plrSolid[33]
new bool:plrRestore[33]
new plrTeam[33];

new const events_sound_wav[][] =
{
	"furien.tk/events/bomb_explode.wav",
	"furien.tk/events/furiens_won.wav",
	"furien.tk/events/target_saved.wav"
}

new const events_sound_mp3[][] =
{
	"sound/furien.tk/events/anti_furiens_won.mp3",
	"sound/furien.tk/events/bomb_defused.mp3"
}

new const misc_sound_wav[][] =
{
	"furien.tk/misc/cash.wav",
	"furien.tk/misc/frostbreak.wav",
	"furien.tk/misc/frostexp.wav",	
	"furien.tk/misc/frosthit.wav",
	"furien.tk/misc/plasma_bomb_beep.wav",
	"furien.tk/misc/plasma_bomb_last10.wav",	
	"furien.tk/misc/plasma_bomb_set.wav",
	"furien.tk/misc/napalm_explode.wav"
}

new const plasma_bomb[][] =
{
	"models/furien.tk/p_plasmabomb.mdl",
	"models/furien.tk/v_plasmabomb.mdl",
	"models/furien.tk/w_plasmabomb.mdl"
}

new const random_msg[][] = 
{
	"Pentru.v TOP 10.g nivele apasa.e M si 5.g.",
	"Pentru.v RANK.g apasa.e M si 3.g.",
	"Pentru.v TOP 15 RANK.g apasa.e M si 4.g.",
	"Pentru.v SHOP.g apasa.e M si 2.g.",
	"Pentru a face nivel trebuie sa joci mult pe server.",
	"Cand esti Furienul cu C4 poti merge invizibil cu CTRL.",
	"Laserul de la Furien Detector poate detecta furienii invizibili",
	"Nu ai ales arma? Apasa.e M si 1.g."
}

new const v_grenade_furien[][] =
{
	"models/furien.tk/v_fu_fi.mdl",
	"models/furien.tk/v_fu_fr.mdl",
	"models/furien.tk/v_fu_ki.mdl"
}

new const w_grenade_furien[][] =
{
	"models/furien.tk/w_fu_fi.mdl",
	"models/furien.tk/w_fu_fr.mdl",
	"models/furien.tk/w_fu_ki.mdl"
}

#define VIP_FLAG ADMIN_LEVEL_H

new bool:g_m4a1[33], bool:g_ak47[33], bool:g_deagle[33], bool:g_used_life[33], bool:g_pet[33], item_pet[33];

static const p_deagle[] = "models/furien.tk/p_deagle.mdl";
static const p_ak47[] = "models/furien.tk/p_ak47.mdl";
static const p_m4a1[] = "models/furien.tk/p_m4a1.mdl";
static const v_deagle[] = "models/furien.tk/v_deagle.mdl";
static const v_ak47[] = "models/furien.tk/v_ak47.mdl";
static const v_m4a1[] = "models/furien.tk/v_m4a1.mdl";

new const items_menu[][] =
{
	"AK-47 Gold",
	"M4A1 Gold",
	"Deagle Gold",
	"Life",
	"Pet"
}

new const cost[] =
{
	15,
	20,
	10,
	20,
	20
}

const PEV_ADDITIONAL_AMMO = pev_iuser1
const PRIMARY_WEAPONS_BIT_SUM = (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_BIT_SUM = (1<<CSW_P228)|(1<<CSW_ELITE)|(1<<CSW_FIVESEVEN)|(1<<CSW_USP)|(1<<CSW_GLOCK18)|(1<<CSW_DEAGLE)
#define dmin Float:{ -2.440000, -3.540000, -4.960000 }
#define dmax Float:{ 5.880000, 3.780000, 4.750000 }

#define fm_remove_entity(%1) 		engfunc(EngFunc_RemoveEntity, %1)
#define fm_find_ent_by_class(%1,%2) 	engfunc(EngFunc_FindEntityByString, %1, "classname", %2)

#define PET_FLAG 			pev_flTimeStepSound
#define PET_KILLED 			389

static const pet_model[] = "models/stukabat.mdl"
static const pet_sounds[][] = { "bullchicken/bc_die1.wav", "bullchicken/bc_die2.wav", "bullchicken/bc_die3.wav", "bullchicken/bc_idle1.wav", "bullchicken/bc_pain3.wav" }
static const pet_idle = 13
static const pet_run = 13
static const pet_die = 5
static const Float:pet_idle_speed = 0.5
static const Float:pet_run_speed = 13.0

#define write_coord_f(%1)	engfunc(EngFunc_WriteCoord,%1)

new Trie:g_tClassNames

new bool:g_endround;

new const knife_furien[] = "models/furien.tk/v_furienknife.mdl";
new const super_knife_furien[] = "models/furien.tk/v_superknifefurien.mdl";
new g_msgStatusIcon;

#define flag_get(%1,%2)		(%1 & (1 << (%2 & 31)))
#define flag_set(%1,%2)		(%1 |= (1 << (%2 & 31)));
#define flag_unset(%1,%2)	(%1 &= ~(1 << (%2 & 31)));

#define SPECMODE_ALIVE 0 

new g_HasCustomModel, g_msgHideWeapon, g_msgCrosshair;
new Float:g_ModelChangeTargetTime
new g_CustomPlayerModel[33][32];

new const burn_player[][] =
{
	"furien.tk/player/anti-furiens/burn1.wav",
	"furien.tk/player/anti-furiens/burn2.wav",
	"furien.tk/player/anti-furiens/burn3.wav"
}

new const start_sounds[][] =
{
	"furien.tk/misc/time1.wav",
	"furien.tk/misc/time2.wav",
	"furien.tk/misc/time3.wav",
	"furien.tk/misc/time4.wav",
	"furien.tk/misc/time5.wav"
};

new const FURIEN_ITEMS[][] =
{
	"Super Knife",
	"Health [+40]",
	"Armor [+50]",
	"No Flash",
	"Napalm Nade",
	"Frost Nade",
	"Kill Nade"
}

new const ANTI_FURIEN_ITEMS[][] =
{
	"Furien Detector",
	"Health [+50]",
	"Armor [+60]",
	"No Frost",
	"He Grenade",
	"Flash Grenade"
}

new const FURIEN_COST[] =
{
	20,
	15,
	15,
	10,
	10,
	10,
	50
}

new const ANTI_FURIEN_COST[] =
{
	1200,
	10,
	10,
	5,
	5,
	5
}

new const LEVELS[] =
{
	0, // nu-mi pasa.
	2, // 1
	4, // 2
	6, // 3
	8, // 4
	10, // 5
	12, // 6
	14, // 7
	16, // 8
	18, // 9
	20, // 10
	22, // 11
	24, // 12
	26, // 13
	28, // 14
	30, // 15
	32, // 16
	34, // 17
	36, // 18
	38, // 19
	40, // 20
	42, // 21
	44, // 22
	46, // 23
	48, // 24
	50 // 25
}

#define TASK_CANPLANT 10001
#define HIDE_HEALTH (1<<3)
#define HIDE_MONEY (1<<5)

new mp_freezetime, bool:g_dontdelete;
new SecondsUntillInvasion, salvare_nvault, g_msgfog;

new g_end_health[33], mp_roundtime;

new bool:g_cmdguns[33], g_primary_select[33], g_secondary_select[33], g_gunsselect[33];

new bool:have_killnade[33];

new const PRIMARY_NAME[][] =
{
	"",
	"MP5",
	"GALIL",
	"AUG",
	"SG552"
}

new const SECONDARY_NAME[][] =
{
	"",
	"GLOCK18",
	"USP"
}

new const wp_give_primary[][] = 
{
	"",
	"weapon_mp5navy",
	"weapon_galil",
	"weapon_aug",
	"weapon_sg552"
}

new const wp_give_secondary[][] =
{
	"",
	"weapon_glock18",
	"weapon_usp"
}

new const bullets_primary[] =
{
	CSW_MP5NAVY,
	CSW_MP5NAVY,
	CSW_GALIL,
	CSW_AUG,
	CSW_SG552
}

new const bullets_secondary[] =
{
	CSW_GLOCK18,
	CSW_GLOCK18,
	CSW_USP
}

new const DMG_CS_BULLETS_KNIFE = (DMG_NEVERGIB | DMG_BULLET)
new bool:g_noflash[33], bool:g_nofrost[33], bool:g_superknife[33], bool:g_furiendetector[33];
new bool:savior[33], bool:destroyer[33];

new g_c4timer, pointnum, g_msgScreenFade, beam_effect;
new bool:b_planted = false, bool:g_firstround = true;

new const ambience[] = "sound/furien.tk/misc/ambience.mp3";

new bool:has_parachute[33]
new para_ent[33]
new jumpnum[33] = 0
new bool:dojump[33] = false

new restart_seconds = 20;
new g_rounds = 0;
#define MAX_PLAYERS	32
#define Ham_Player_ResetMaxSpeed Ham_Item_PreFrame

new g_iMaxPlayers, g_frozen[33], g_burning_duration[33];
#define FIRST_PLAYER_ID	1
#define IsPlayer(%1)	(FIRST_PLAYER_ID <= %1 <= g_iMaxPlayers)
#define XO_WEAPONBOX				4
#define m_rgpPlayerItems_wpnbx_Slot5	39
#define IsWeaponBoxC4(%1)	(get_pdata_cbase(%1, m_rgpPlayerItems_wpnbx_Slot5, XO_WEAPONBOX) > 0)
new g_msgSayText;
#define ID_AFFECT (taskid - TASK_AFFECT)

new const Float:g_flCoords[][] = 
{
	{0.50, 0.40},
	{0.56, 0.44},
	{0.60, 0.50},
	{0.56, 0.56},
	{0.50, 0.60},
	{0.44, 0.56},
	{0.40, 0.50},
	{0.44, 0.44}
}

new g_iPlayerPos[33];
new smoke_spr, lighting, frostgib, firegib, frostexp, fireexp, trail_spr, flame_spr, mdl_glass, crazygib, crazyexp, spr_nadebits, spr_blood_drop, spr_blood_spray;
new event_hud, g_screenshake, g_msg_teaminfo, mp_startmoney, mesaj_sync;

new g_money[33];

#define INFO_ZERO 0
#define NTOP 10
#define TIME 5.0

new toplevels[33], tophours[33], topminutes[33];
new topnames[33][33];

new data_save[64]
new const g_szClassName[] = "ScanCampers";

new cvar_activebox, CvarTeleportCooldown, CvarTeleportRange, CvarFadeTime, CvarColor, CvarHpMax, cvar_activefog, cvar_activehuds;

new Float:g_fUserOrigin[33][3];
new Float:g_fUserOldOrigin[33][3];

new bool:g_bSpawnCheckEnabled = false;
new bool:g_bUserIsCamping[33];
new g_iUserCampSeconds[33];
new g_iMagicEntity;

new bool:active_box, bool:active_fog, bool:active_huds;

public plugin_init()
{
	register_plugin("Furien Mod", "1.1.2", "cyby")
	
	RegisterHam(Ham_Spawn, "player", "spawn_post", 1)
	RegisterHam(Ham_Player_ResetMaxSpeed, "player", "reset_max_speed", 1)
	
	register_clcmd("say /shop", "shop_enter")
	register_clcmd("say shop", "shop_enter")
	register_clcmd("say /meniu" ,"game_menu")
        register_clcmd("chooseteam", "game_menu")
	register_clcmd("say /level", "detail_level")
	register_clcmd("say /resetscore", "reset_score")
	register_clcmd("say /rs", "reset_score")
	register_clcmd("say rs", "reset_score")
	register_clcmd("say resetscore", "reset_score")
	register_clcmd("drop", "hook_drop")
	
	register_logevent("get_bomb", 3, "2=Spawned_With_The_Bomb")
	register_message(get_user_msgid("SendAudio"), "send_audio")
	register_message(get_user_msgid("TextMsg"), "message_textmsg")
	register_event("HLTV", "new_round", "a", "1=0", "2=0")
	register_logevent("end_round", 2, "1=Round_End")
	register_forward(FM_ClientUserInfoChanged, "ChangeName")
	register_forward(FM_EmitSound, "sound_emit")
	RegisterHam(Ham_Think, "grenade", "think_grenade")
	register_forward(FM_CmdStart, "CmdStart")
	register_forward(FM_SetModel, "set_model")
	RegisterHam(Ham_Killed, "player", "killed_player")
	RegisterHam(Ham_Killed, "player", "player_killed_post", 1)
	register_forward(FM_PlayerPreThink, "prethink_player")
	register_forward(FM_PlayerPostThink, "prethink_player_post")
	register_forward(FM_AddToFullPack, "addToFullPack", 1)
	register_event("CurWeapon", "check_weapon", "be", "1=1")
	RegisterHam(Ham_Touch, "weaponbox", "CWeaponBox_Touch")
	RegisterHam(Ham_Touch, "armoury_entity", "GroundWeapon_Touch")
	g_msgHideWeapon = get_user_msgid("HideWeapon");
	g_msgCrosshair = get_user_msgid("Crosshair");
	register_message(g_msgHideWeapon, "messageHideWeapon")
	register_event("HideWeapon", "Event_HideWeapon", "b")
	RegisterHam(Ham_Touch, "weapon_shield", "GroundWeapon_Touch")
	RegisterHam(Ham_Touch, "grenade", "ham_touch")
	register_message(get_user_msgid("ScreenFade"), "msg_screenfade")
	register_message(get_user_msgid("ShowMenu"), "message_show_menu")
	register_message(get_user_msgid("VGUIMenu"), "message_vgui_menu")
	RegisterHam(Ham_TakeDamage, "player", "ham_take_damage", 0)
	register_event("Damage", "on_damage", "b", "2!0", "3=0", "4!0")	
	register_event("ResetHUD", "newSpawn", "be")
	register_forward(FM_SetClientKeyValue, "fw_SetClientKeyValue")
	register_event("Money", "eventMoney", "b")
	g_msgStatusIcon = get_user_msgid("StatusIcon")
	register_message(get_user_msgid("ScoreAttrib"), "score_attrib")
	register_message(g_msgStatusIcon, "msgStatusIcon")
	mp_freezetime = get_cvar_pointer("mp_freezetime")
	register_clcmd("jointeam", "block_command")
	register_clcmd("fullupdate", "block_command")
	register_forward(FM_GetGameDescription, "set_gamename")
	mp_startmoney = register_cvar("furien_start_money", "1")
	register_forward(FM_Touch, "fwdTouch")
	mp_roundtime = get_cvar_pointer("mp_roundtime")
	register_forward(FM_UpdateClientData, "Data")
	set_task(2.0, "Calcu", 232222, _, _, "b")
	register_event("DeathMsg", "Fix", "a")
	register_event("TeamInfo", "Fix", "a")
	set_pcvar_num(mp_freezetime, 5)
	set_pcvar_num(mp_roundtime, 2)
	pointnum = get_cvar_pointer("mp_c4timer")
	
	cvar_activebox = register_cvar("furien_bonusbox", "1")
	CvarTeleportCooldown = register_cvar("furien_bb_tel_cd", "10")
	CvarTeleportRange = register_cvar("furien_bb_tel_range", "123456789")
	CvarFadeTime = register_cvar("furien_bb_tel_fadetime", "1.5")
	CvarColor = register_cvar("furien_bb_tel_color", "255255255")
	CvarHpMax = register_cvar("furien_bb_bns_max", "250")
	cvar_activefog = register_cvar("furien_fog_effects", "1")
	cvar_activehuds = register_cvar("furien_huds_eliminate", "1")
	
	new iEnt
	iEnt = create_entity("info_target")
	set_pev(iEnt, pev_classname, "check_speed")
	set_pev(iEnt, pev_nextthink, get_gametime() + 0.1)
	register_think("check_speed", "set_furien_invisibility")
	register_buy_cmd()
	anti_camp()
	
	set_task(1.0, "first_round", _, _, _, "a", restart_seconds)
	set_task(60.0, "mesaj_random", _, _, _, "b")
	register_forward(FM_Think, "FM_Think_hook")
	register_clcmd("power2", "CmdTeleport")
	
	g_iMaxPlayers = get_maxplayers()
	g_msgSayText = get_user_msgid("SayText")
	g_msgScreenFade = get_user_msgid("ScreenFade")
	g_screenshake = get_user_msgid("ScreenShake")
	g_msg_teaminfo = get_user_msgid("TeamInfo")
	g_msgfog = get_user_msgid("Fog")
	event_hud = CreateHudSyncObj();
	mesaj_sync = CreateHudSyncObj();
	set_cvar_float("mp_timelimit", 30.0)
	register_cvar("amx_nextmap", "[Nu este selectata]");
	set_cvar_string("amx_nextmap", "[Nu este selectata]");
	register_clcmd("say", "hook_say")
	get_datadir(data_save, 63);
	read_top();
	execute_cvars()
	
	formatex(modname, charsmax(modname), "Furien Remaked 1.1.2")
}

public execute_cvars()
{
	if(!get_pcvar_num(cvar_activebox))
		active_box = false
	else
		active_box = true
		
	if(!get_pcvar_num(cvar_activefog))
		active_fog = false
	else
		active_fog = true
		
	if(!get_pcvar_num(cvar_activehuds))
		active_huds = true
	else
		active_huds = false
}

public plugin_precache()
{
	precache_generic(ambience)
	precache_model(knife_furien)
	precache_sound(explosion_sound)
	precache_model(super_knife_furien)
	precache_model(pet_model)
	precache_model(p_deagle)
	precache_model(p_ak47)
	precache_model(p_m4a1)
	precache_model(v_deagle)
	precache_model(v_m4a1)
	precache_model(v_ak47)
	precache_model(mdl_box)
	precache_sound(get_present)
	precache_sound(SOUND_BLINK)
	Sprite = precache_model("sprites/shockwave.spr")
	Sprite2 = precache_model("sprites/blueflare2.spr")
	g_tClassNames = TrieCreate()
	RegisterHam(Ham_TraceAttack, "worldspawn", "TraceAttack", 1)
	TrieSetCell(g_tClassNames, "worldspawn", 1)
	RegisterHam(Ham_TraceAttack, "player", "TraceAttack", 1)
	TrieSetCell(g_tClassNames, "player", 1)
	register_forward(FM_Spawn, "Spawn", 1)
	LaserSprite = precache_model("sprites/white.spr")
	beam_effect = precache_model("sprites/furien.tk/beam.spr")
	smoke_spr = precache_model("sprites/black_smoke3.spr")
	lighting = precache_model("sprites/lgtning.spr")
	frostgib = precache_model("sprites/furien.tk/frostgib.spr")
	firegib = precache_model("sprites/furien.tk/firegib.spr")
	frostexp = precache_model("sprites/furien.tk/frostexp.spr")
	fireexp = precache_model("sprites/furien.tk/fireexp.spr")
	trail_spr = precache_model("sprites/furien.tk/trail.spr")
	flame_spr = precache_model("sprites/furien.tk/flame.spr")
	mdl_glass = precache_model("models/glassgibs.mdl")
	crazygib = precache_model("sprites/furien.tk/crazygib.spr")
	crazyexp = precache_model("sprites/furien.tk/crazyexp.spr")
	spr_nadebits  = precache_model("models/chromegibs.mdl")
	spr_blood_drop = precache_model("sprites/blood.spr")
	spr_blood_spray = precache_model("sprites/bloodspray.spr")
	precache_model("models/parachute.mdl")
	static model[128];
	formatex(model, charsmax(model), "models/player/%s/%s.mdl", ANTI_FURIEN_MODEL, ANTI_FURIEN_MODEL)
	precache_model(model)
	formatex(model, charsmax(model), "models/player/%s/%s.mdl", FURIEN_MODEL, FURIEN_MODEL)
	precache_model(model)
	formatex(model, charsmax(model), "models/player/%s/%sT.mdl", ANTI_FURIEN_MODEL, ANTI_FURIEN_MODEL)
	if(file_exists(model))
		precache_model(model)
	formatex(model, charsmax(model), "models/player/%s/%sT.mdl", FURIEN_MODEL, FURIEN_MODEL)
	if(file_exists(model))
		precache_model(model)
	
	static i;
	for(i = 0; i < sizeof plasma_bomb; i++)
		precache_model(plasma_bomb)
		
	for(i = 0; i < sizeof misc_sound_wav; i++)
		precache_sound(misc_sound_wav)
		
	for(i = 0; i < sizeof events_sound_mp3; i++)
		precache_generic(events_sound_mp3)
		
	for(i = 0; i < sizeof events_sound_wav; i++)
		precache_sound(events_sound_wav)
		
	for(i = 0; i < sizeof w_grenade_furien; i++)
		precache_model(w_grenade_furien)
		
	for(i = 0; i < sizeof v_grenade_furien; i++)
		precache_model(v_grenade_furien)
		
	for(i = 0; i < sizeof burn_player; i++)
		precache_sound(burn_player)
		
	for(i = 0; i < sizeof start_sounds; i++)
		precache_sound(start_sounds)
	for(i = 0; i < sizeof pet_sounds; i++)
		precache_sound(pet_sounds)
}

public Spawn(iEnt)
{
	if(pev_valid(iEnt))
	{
		static szClassName[32];
		pev(iEnt, pev_classname, szClassName, charsmax(szClassName))
		if(!TrieKeyExists(g_tClassNames, szClassName))
		{
			RegisterHam(Ham_TraceAttack, szClassName, "TraceAttack", 1)
			TrieSetCell(g_tClassNames, szClassName, 1)
		}
	}
}

public plugin_cfg()
{
	salvare_nvault = nvault_open("furien_lvl")
	
	server_cmd("exec addons/amxmodx/configs/furien_remaked.cfg");
	
	if(salvare_nvault == INVALID_HANDLE)
        set_fail_state("Eroare la deschiderea bazei de date.")
}

public plugin_end()
{
	TrieDestroy(g_tClassNames)
	nvault_close(salvare_nvault)
}

public plugin_natives()
{
	register_native("get_dollars", "get_dollars", 1)
	register_native("set_dollars", "set_dollars", 1)
}

public get_dollars(id)
{
	if(!IsPlayer(id))
		return -1;
		
	return g_money[id];
}

public set_dollars(id, amount)
{
	if(!IsPlayer(id))
		return -1;
		
	g_money[id] = amount
	return 1;
}
	
public mesaj_random()
	color(0, ".v%s.g %s", TAG, random_msg[random_num(0, sizeof random_msg - 1)])

public spawn_post(id)
{
	if(!is_user_alive(id))
		return
	
	set_vars_speed(id)
	savior[id] = false
	destroyer[id] = false
	g_frozen[id] = false
	HasTeleport[id] = false
	g_burning_duration[id] = 0
	remove_task(id+TASK_BURN)
	strip_user_weapons(id)
	ham_give_weapon(id, "weapon_knife")
	ham_give_weapon(id, "weapon_hegrenade")
	ham_give_weapon(id, "weapon_flashbang")
	g_bUserIsCamping[id] = false;
	g_cmdguns[id] = false
	g_iUserCampSeconds[id] = 0;
	set_user_rendering(id)
	cs_set_user_defuse(id, 0)
	remove_task(id+TASK_AURA)
	have_killnade[id] = false
	if(g_firstround)
		set_user_godmode(id, 1)
	else
		set_user_godmode(id, 0)
	
	ExecuteHamB(Ham_Player_ResetMaxSpeed, id)
	switch(get_user_team(id))
	{
		case 1:
		{
			set_user_gravity(id, 0.375)
			set_user_footsteps(id, 1)
			ham_give_weapon(id, "weapon_flashbang")
			g_nofrost[id] = false
			g_furiendetector[id] = false
			remove_task(id+TASK_MODELCHANGE)
			flag_set(g_HasCustomModel, id)
			copy(g_CustomPlayerModel[id], charsmax(g_CustomPlayerModel[]), FURIEN_MODEL)
			new currentmodel[32]
			fm_cs_get_user_model(id, currentmodel, charsmax(currentmodel))
			if(!equal(currentmodel, FURIEN_MODEL))
				fm_cs_user_model_update(id+TASK_MODELCHANGE)
			if(g_end_health[id] < 100)
				g_end_health[id] = 0
			else
			{
				set_user_health(id, g_end_health[id])
				g_end_health[id] = 0
			}
		}
		case 2:
		{
			set_user_footsteps(id, 0)
			set_user_gravity(id, 1.0)
			remove_task(id+TASK_MODELCHANGE)
			flag_set(g_HasCustomModel, id)
			copy(g_CustomPlayerModel[id], charsmax(g_CustomPlayerModel[]), ANTI_FURIEN_MODEL)
			new currentmodel[32]
			fm_cs_get_user_model(id, currentmodel, charsmax(currentmodel))
			if(!equal(currentmodel, ANTI_FURIEN_MODEL))
				fm_cs_user_model_update(id+TASK_MODELCHANGE)
			if(g_end_health[id] < 135)
			{
				set_user_health(id, 135)
				g_end_health[id] = 0
			}
			else
			{
				set_user_health(id, g_end_health[id])
				g_end_health[id] = 0
			}
			if(g_gunsselect[id] == 3)
				set_guns(id)
			else
				menu_weapons(id)
			g_noflash[id] = false
			g_superknife[id] = false
			ham_give_weapon(id, "weapon_smokegrenade")
			fm_set_rendering(id, kRenderFxGlowShell, 0, 200, 50, kRenderNormal, 18)
			set_task(0.2, "remove_c4")
		}
	}
}

public remove_c4()
{
	for(new id; id <= 32; id++)
	{
		if(IsPlayer(id))
		{
			if(user_has_weapon(id, CSW_C4))
			{
				ham_strip_weapon(id, "weapon_c4")
				engclient_cmd(id, "weapon_knife")
				check_weapon(id)
			}
		}
	}
}

public HealthHud(taskid)
{
	static id;
	id = ARATA_HUD;
	
	if(!is_user_alive(id))
	{
		id = pev(id, pev_iuser2)
		
		if(!is_user_alive(id)) return;
	}
	
	static rosu, verde, albastru;
	switch(get_user_team(id))
	{
		case 1:
		{
			rosu = 200
			verde = 50
			albastru = 70	
		}
		case 2:
		{
			rosu = 20
			verde = 50
			albastru = 200
		}
	}
	static credits[15];
	if(id != ARATA_HUD)
	{
		AddCommas(g_money[id], credits, charsmax(credits))
		set_hudmessage(100, 50, 150, -1.0, 0.85, 1, 0.3, 0.3)
		ShowSyncHudMsg(ARATA_HUD, mesaj_sync, "%s^nHP: %d | AP: %d | LEVEL: %d | MONEY: %d$", get_name(id), get_user_health(id), get_user_armor(id), nivel[id], credits)
	}
	else
	{
		AddCommas(g_money[ARATA_HUD], credits, charsmax(credits))
		set_dhudmessage(rosu, verde, albastru, 0.01, 0.94, 0, 0.0, 0.3, 0.0, 0.0)
		show_dhudmessage(ARATA_HUD, "HP: %d | AP: %d | %s$ | LVL: %d", get_user_health(ARATA_HUD), get_user_armor(ARATA_HUD), credits, nivel[ARATA_HUD])
	}
}

public block_command(id)
	return PLUGIN_HANDLED;

public anti_camp()
{
	new iEnt;
	CreateMagicEntity:
	
	iEnt = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, "info_target"));
	if(!iEnt || !pev_valid(iEnt))
		goto CreateMagicEntity;
	
	set_pev(iEnt, pev_classname, g_szClassName);
	set_pev(iEnt, pev_nextthink, get_gametime() + 0.3);
	register_forward(FM_Think, "FM_MagicEntityThink");
	
	g_iMagicEntity = iEnt;
}

public reset_max_speed(id)
{
	if(g_endround)
		set_pev(id, pev_maxspeed, 70.0)
		
	if(is_user_alive(id) && get_user_team(id) == 1 && get_user_maxspeed(id) != 1.0)
		set_pev(id, pev_maxspeed, 850.0)
		
	if(is_user_alive(id) && get_user_team(id) == 2 && g_frozen[id])
		set_pev(id, pev_maxspeed, 1.0)
}

public client_connect(id)
	verify_name(id)

public set_furien_invisibility(iEnt) 
{
	entity_set_float(iEnt, EV_FL_nextthink, get_gametime() + 0.1)

	static iPlayers[32], iNum, id, Float:fVecVelocity[3], iSpeed;

	get_players(iPlayers, iNum, "ae", "TERRORIST")

	for(new i; i < iNum; i++)
	{
		id = iPlayers
		if(get_user_weapon(id) == CSW_KNIFE || user_has_weapon(id, CSW_SMOKEGRENADE) && have_killnade[id])
		{
			entity_get_vector(id, EV_VEC_velocity, fVecVelocity)
			iSpeed = floatround(vector_length(fVecVelocity))
			if(iSpeed < 300)
				set_user_rendering(id, kRenderFxNone, 0, 0, 0, kRenderTransAlpha, iSpeed/1)
			else
				set_user_rendering(id)
			if(destroyer[id])
			{
				new button = pev(id, pev_button)
				if(button&IN_DUCK)
				{
					if(iSpeed < 350)
						set_user_rendering(id, kRenderFxNone, 0, 0, 0, kRenderTransAlpha, 0)
					else
						set_user_rendering(id, kRenderFxNone, 0, 0, 0, kRenderTransAlpha, iSpeed/1)
				}
			}
		}
		else
			set_user_rendering(id)
	}
}

public send_audio()
{
	static sunet[17]
	get_msg_arg_string(2, sunet, charsmax(sunet))
	
	if(equal(sunet, "terwin") || equal(sunet, "ctwin") || equal(sunet, "rounddraw") || equal(sunet, "bombpl") || equal(sunet, "bombdef"))
		return PLUGIN_HANDLED;
	
	return PLUGIN_CONTINUE;
}

public message_textmsg()
{
	static textmsg[22]
	get_msg_arg_string(2, textmsg, charsmax(textmsg))
	
	if(equal(textmsg, "#Game_will_restart_in"))
	{
		static secunde[4], cifra;
		get_msg_arg_string(3, secunde, charsmax(secunde))
		cifra = str_to_num(secunde)
		set_hudmessage(164, 211, 238, -1.0, 0.15, 1, 3.1, 3.0)
		ShowSyncHudMsg(0, event_hud, "Jocul se restarteaza in: %d secund%s!", cifra, cifra < 2 ? "a" : "e")
		return PLUGIN_HANDLED;
	}
	else if(equal(textmsg, "#Game_Commencing"))
	{
		set_hudmessage(164, 211, 238, -1.0, 0.15, 1, 3.1, 3.0)
		ShowSyncHudMsg(0, event_hud, "Incepe jocul!")
		return PLUGIN_HANDLED;
	}
	else if(equal(textmsg, "#Terrorists_Win"))
	{
		set_hudmessage(220, 30, 0, -1.0, 0.15, 1, 5.1, 5.0)
		ShowSyncHudMsg(0, event_hud, "Furienii au eliminat rasa umana!")
		ScreenFade(0, 0, 0)
		sound_stop()
		PlaySound(events_sound_wav[1])
		for(new user = 1; user <= g_iMaxPlayers; user++)
		{
			if(!IsPlayer(user))
				continue
			
			if(get_user_team(user) == 1)
			{
				g_money[user] += 5
				color(user, ".v%s.g Ai castigat.e 5$.g pentru castigarea rundei.", TAG)
			}
		}
		return PLUGIN_HANDLED;
	}
	else if(equal(textmsg, "#CTs_Win"))
	{
		set_hudmessage(0, 30, 220, -1.0, 0.15, 1, 5.1, 5.0)
		ShowSyncHudMsg(0, event_hud, "Anti-Furienii au eliminat pericolul!")
		ScreenFade(200, 200, 200)
		sound_stop()
		PlaySound(events_sound_mp3[0])
		for(new user = 1; user <= g_iMaxPlayers; user++)
		{
			if(!IsPlayer(user))
				continue
				
			if(get_user_team(user) == 2)
			{
				g_money[user] += 5
				color(user, ".v%s.g Ai castigat.e 5$.g pentru castigarea rundei.", TAG)
			}
			
			new Team = get_user_team(user);
			if(Team == 1)
				cs_set_user_team(user, CS_TEAM_CT);
			if(Team == 2)
				cs_set_user_team(user, CS_TEAM_T);
		}
		return PLUGIN_HANDLED;
	}
	else if(equal(textmsg, "#Bomb_Defused"))
	{
		set_hudmessage(0, 30, 220, -1.0, 0.15, 1, 5.1, 5.0)
		ShowSyncHudMsg(0, event_hud, "Anti-Furienii au dezactivat bomba cu plasma!")
		ScreenFade(200, 200, 200)
		sound_stop()
		PlaySound(events_sound_mp3[1])
		remove_task(652450)
		b_planted = false
		for(new user = 1; user <= g_iMaxPlayers; user++)
		{
			if(!IsPlayer(user))
				continue
				
			if(get_user_team(user) == 2)
			{
				g_money[user] += 5
				color(user, ".v%s.g Ai castigat.e 5$.g pentru castigarea rundei.", TAG)
			}
			
			new Team = get_user_team(user);
			if(Team == 1)
				cs_set_user_team(user, CS_TEAM_CT);
			if(Team == 2)
				cs_set_user_team(user, CS_TEAM_T);
		}
		return PLUGIN_HANDLED;
	}
	else if(equal(textmsg, "#Bomb_Planted"))
	{
		set_hudmessage(random(255), random(255), random(255), -1.0, 0.15, 1, 5.1, 5.0)
		ShowSyncHudMsg(0, event_hud, "Furienii au plantat bomba cu plasma!")
		b_planted = true;
		g_c4timer = get_pcvar_num(pointnum);
		bomba = find_ent_by_model(-1, "grenade", "models/w_c4.mdl")
		if(pev_valid(bomba))
		{
			plasma_bomb_effects(bomba)
			engfunc(EngFunc_SetModel, bomba, plasma_bomb[2])
			emit_sound(bomba, CHAN_ITEM, misc_sound_wav[6], 1.0, ATTN_NORM, 0, PITCH_NORM)
			set_task(1.0, "plasma_bomb_effects", bomba+652450, "", 0, "b")
		}
		return PLUGIN_HANDLED;
	}
	else if(equal(textmsg, "#Game_bomb_drop"))
	{
		static nume[32];
		get_msg_arg_string(3, nume, charsmax(nume) - 1)
		set_hudmessage(random(255), random(255), random(255), -1.0, 0.15, 1, 3.1, 3.0)
		ShowSyncHudMsg(0, event_hud, "%s a scapat bomba cu plasma!", nume)
		return PLUGIN_HANDLED;
	}
	else if(equal(textmsg, "#Game_bomb_pickup"))
	{
		static nume[32];
		get_msg_arg_string(3, nume, charsmax(nume) - 1)
		set_hudmessage(random(255), random(255), random(255), -1.0, 0.15, 1, 3.1, 3.0)
		ShowSyncHudMsg(0, event_hud, "%s a ridicat bomba cu plasma!", nume)
		return PLUGIN_HANDLED;
	}
	else if(equal(textmsg, "#Got_bomb"))
		set_msg_arg_string(2, "Ai ridicat bomba de plasma.")
	else if(equal(textmsg, "#Hint_spotted_a_friend"))
		return PLUGIN_HANDLED;
	else if(equal(textmsg, "#Hint_spotted_an_enemy"))
		return PLUGIN_HANDLED;
	else if(equal(textmsg, "#Hint_press_buy_to_purchase"))
		return PLUGIN_HANDLED;
	else if(equal(textmsg, "#Name_change_at_respawn"))
		set_msg_arg_string(2, "Numele tau va fi schimbat runda viitoare.")
	else if(equal(textmsg, "#Spec_Duck"))
		return PLUGIN_HANDLED;
	else if(equal(textmsg, "#Weapon_Cannot_Be_Dropped"))
		set_msg_arg_string(2, "Aceasta arma nu poate fi aruncata.")
	else if(equal(textmsg, "#Round_Draw"))
	{
		set_hudmessage(random(255), random(255), random(255), -1.0, 0.15, 1, 5.1, 5.0)
		ShowSyncHudMsg(0, event_hud, "Round Draw!")
		ScreenFade(0, 0, 0)
		return PLUGIN_HANDLED;
	}
	else if(equal(textmsg, "#Target_Bombed"))
	{
		set_hudmessage(220, 30, 0, -1.0, 0.15, 1, 5.1, 5.0)
		ShowSyncHudMsg(0, event_hud, "Bomba cu plasma a explodat.")
		ScreenFade(0, 0, 0)
		b_planted = false
		sound_stop()
		remove_task(652450)
		PlaySound(events_sound_wav[0])
		for(new user = 1; user <= g_iMaxPlayers; user++)
		{
			if(!IsPlayer(user))
				continue
				
			if(get_user_team(user) == 1)
			{
				g_money[user] += 5
				color(user, ".v%s.g Ai castigat.e 5$.g pentru castigarea rundei.", TAG)
			}
		}
		return PLUGIN_HANDLED;
	}
	else if(equal(textmsg, "#Target_Saved"))
	{
		set_hudmessage(0, 30, 220, -1.0, 0.15, 1, 5.1, 5.0)
		ShowSyncHudMsg(0, event_hud, "Locurile unde se pot planta bombele cu plasma^nau fost salvate!")
		sound_stop()
		PlaySound(events_sound_wav[2])
		for(new user = 1; user <= g_iMaxPlayers; user++)
		{
			if(!IsPlayer(user))
				continue
				
			if(get_user_team(user) == 2)
			{

				g_money[user] += 5
				color(user, ".v%s.g Ai castigat.e 5$.g pentru castigarea rundei.", TAG)
			}
			
			new Team = get_user_team(user);
			if(Team == 1)
				cs_set_user_team(user, CS_TEAM_CT);
			if(Team == 2)
				cs_set_user_team(user, CS_TEAM_T);
		}
		return PLUGIN_HANDLED;
	}
	else if(equal(textmsg, "#Hostages_Not_Rescued"))
		return PLUGIN_HANDLED;

	return PLUGIN_CONTINUE;
}

public sound_emit(id, channel, const sound[])
{
	if(sound[8] == 'c' && sound[9] == '4')
		return FMRES_SUPERCEDE;
	
	return FMRES_IGNORED;
}

public menu_weapons(id)
{
	static menu;
	menu = menu_create("\ySelecteaza-ti arma:", "guns_handler")
	menu_additem(menu, "\yArma noua", "")
	if(g_gunsselect[id] == 0)
		menu_additem(menu, "\dArma anterioara", "")
	else
		menu_additem(menu, "\yArma anterioara", "")
	if(g_gunsselect[id] == 0)
		menu_additem(menu, "\dArma anterioara [+AUTOMAT DATA VIITOARE]", "")
	else
		menu_additem(menu, "\yArma anterioara [+AUTOMAT DATA VIITOARE]", "")
	menu_display(id, menu, 0)
}

public guns_handler(id, menu, item)
{
	if(!is_user_alive(id))
		return;
		
	if(get_user_team(id) != 2)
		return

	switch(item)
	{
		case 0:
		{
			g_gunsselect[id] = 1
			primary_weap(id)
		}
		case 1:
		{
			if(g_gunsselect[id] == 0)
				menu_weapons(id)
			else
			{
				g_gunsselect[id] = 2
				set_guns(id)
			}
		}
		case 2:
		{
			if(g_gunsselect[id] == 0)
				menu_weapons(id)
			else
			{
				g_gunsselect[id] = 3
				set_guns(id)
			}
		}
	}
}

public primary_weap(id)
{
	if(!is_user_alive(id) || get_user_team(id) != 2)
		return
	
	static menu_head[128], menu_item[128], tasta[2];
	formatex(menu_head, charsmax(menu_head), "Selecteaza arma primara:")
	new menu = menu_create(menu_head, "primary_handled")
	for(new i = 1; i < sizeof PRIMARY_NAME; i++)
	{
		formatex(menu_item, charsmax(menu_item), "\y%s", PRIMARY_NAME[i])
		tasta[0] = i
		tasta[1] = 0
		menu_additem(menu, menu_item, tasta)
	}
	if(pev_valid(id) == PDATA_SAFE)
		set_pdata_int(id, OFFSET_CSMENUCODE, 0, OFFSET_LINUX)
	
	menu_display(id, menu, 0)
}

public primary_handled(id, menu, item)
{
	if(!is_user_alive(id) || get_user_team(id) != 2)
		return PLUGIN_HANDLED;
		
	if(item == MENU_EXIT)
    {
        menu_destroy(menu);
        return PLUGIN_HANDLED;
    }
	if(item >= sizeof PRIMARY_NAME) return PLUGIN_HANDLED;
	
	g_primary_select[id] = item + 1
	menu_destroy(menu)
	secondary_weap(id)
	return PLUGIN_HANDLED;
}

public secondary_weap(id)
{
	if(!is_user_alive(id) || get_user_team(id) != 2)
		return
	
	static menu_head[128], menu_item[128], tasta[2];
	formatex(menu_head, charsmax(menu_head), "Selecteaza arma secundara:")
	new menu = menu_create(menu_head, "secondary_handled")
	for(new i = 1; i < sizeof SECONDARY_NAME; i++)
	{
		formatex(menu_item, charsmax(menu_item), "\y%s", SECONDARY_NAME[i])
		tasta[0] = i
		tasta[1] = 0
		menu_additem(menu, menu_item, tasta)
	}
	if(pev_valid(id) == PDATA_SAFE)
		set_pdata_int(id, OFFSET_CSMENUCODE, 0, OFFSET_LINUX)
	menu_display(id, menu, 0)
}

public secondary_handled(id, menu, item)
{
	if(!is_user_alive(id) || get_user_team(id) != 2)
		return PLUGIN_HANDLED;
		
	if(item == MENU_EXIT)
    {
        menu_destroy(menu);
        return PLUGIN_HANDLED;
    }
	
	if(item >= sizeof SECONDARY_NAME) return PLUGIN_HANDLED;
	
	g_secondary_select[id] = item + 1
	menu_destroy(menu)
	set_guns(id)
	return PLUGIN_HANDLED;
}

public set_guns(id)
{
	if(!is_user_alive(id) || get_user_team(id) != 2)
		return;
		
	ham_give_weapon(id, wp_give_primary[g_primary_select[id]])
	cs_set_user_bpammo(id, bullets_primary[g_primary_select[id]], 250)
	ham_give_weapon(id, wp_give_secondary[g_secondary_select[id]])
	cs_set_user_bpammo(id, bullets_secondary[g_secondary_select[id]], 250)
	g_cmdguns[id] = true
}

public new_round()
{
	if(g_firstround)
	{
		set_hudmessage(random(255), random(255), random(255), -1.0, 0.15, 1, 5.1, 5.0)
		ShowSyncHudMsg(0, event_hud, "Inca asteptam jucatorii sa se conecteze.")
		return;
	}
	
	remove_task(TASK_CANPLANT)
	g_endround = false
	new Float: flTime = get_cvar_num("mp_freezetime") + (get_cvar_num("mp_roundtime") * 60) - 60.0; 
	set_task(flTime, "task_CanPlant", TASK_CANPLANT)
	g_dontdelete = false
	remove_task(TASK_REMOVEC4)
	delete_c4()
	set_task(2.0, "delete_c4", TASK_REMOVEC4, _, _, "b")
	set_lights("g")
	g_ModelChangeTargetTime = get_gametime() + ROUNDSTART_DELAY
	g_c4timer = -1;
	b_planted = false;
	g_rounds++
	color(0, ".v%s.e Furien Mod.g Remaked by.v cyby.e 1.1.2.g .", TAG)
	color(0, ".v%s.g Apasa tasta.e M.g pentru afisarea meniului de joc.", TAG)
	SecondsUntillInvasion = 5
	if(active_fog)
		msg_create_fog(20, 200, 50, 1)
	set_task(0.1, "CountDown")
	set_hudmessage(random(255), random(255), random(255), -1.0, 0.15, 1, 5.1, 5.0)
	ShowSyncHudMsg(0, event_hud, "Pregateste-te de lupta!^nRunda %d.", g_rounds)
	set_task(5.2, "start_ambience")
	static entid = FM_NULLENT
	while((entid = fm_find_ent_by_class(entid, ClassName)))
		fm_remove_entity(entid)
	while((entid = fm_find_ent_by_class(entid, "bat")))
		fm_remove_entity(entid)
	remove_task(TASK_SPAWN)
	g_bSpawnCheckEnabled = true
	static player
	for(player = 1; player <= g_iMaxPlayers; player++)
	{
		reset_vars(player)
		HasTeleport[player] = false
		if(task_exists(player+TASK_MODELCHANGE))
		{
			remove_task(player+TASK_MODELCHANGE)
			fm_cs_user_model_update(player+TASK_MODELCHANGE)
		}
	}
	set_task(120.0, "TaskDisableSpawnCheck", TASK_SPAWN)
}

public kill_pet(id)
{
	if(pev_valid(item_pet[id]))
	{
		set_pev(item_pet[id],pev_sequence,pet_die)
		set_pev(item_pet[id],pev_gaitsequence,pet_die)
		set_pev(item_pet[id],pev_framerate,1.0)
		
		set_pev(item_pet[id],PET_FLAG,PET_KILLED)
		
		engfunc(EngFunc_DropToFloor, item_pet[id])
		
		g_pet[id] = false
	}	
	item_pet[id] = 0
}

public TaskDisableSpawnCheck()
	g_bSpawnCheckEnabled = false;
	
public FM_MagicEntityThink(iEnt)
{
	if(iEnt != g_iMagicEntity || !pev_valid(iEnt))
		return FMRES_IGNORED;
		
	set_pev(iEnt, pev_nextthink, get_gametime() + 1.0)
	static iPlayers[32];
	static iPlayersNum;
	
	get_players(iPlayers, iPlayersNum, "ce", "CT")
	if(!iPlayersNum)
		return FMRES_IGNORED;
		
	static id, i;
	for(i = 0; i < iPlayersNum; i++)
	{
		id = iPlayers[i];
		
		if(IsPlayer(id))
		{
			if(is_user_alive(id))
			{
				pev(id, pev_origin, g_fUserOrigin[id]);
					
				if(g_fUserOrigin[id][0] == g_fUserOldOrigin[id][0]
					&& g_fUserOrigin[id][1] == g_fUserOldOrigin[id][1]
					&& g_fUserOrigin[id][2] == g_fUserOldOrigin[id][2])
				{
					g_iUserCampSeconds[id]++;
					if(g_iUserCampSeconds[id] == 5)
						g_bUserIsCamping[id] = true;
					
					else if(g_iUserCampSeconds[id] > 5 && g_bSpawnCheckEnabled)
					{
						if(g_iUserCampSeconds[id] == 11)
						{
							color(0, ".v%s.e %s.g a primit slay pentru ca a campat sau e afk!", TAG, get_name(id))
							
							user_silentkill(id);
							
							g_bUserIsCamping[id] = false;
							g_iUserCampSeconds[id] = 0;
							
						}
						else
							color(id, ".v%s.g Vei primi slay in.e %i.g secund%s daca nu te misti!", TAG, 11 - g_iUserCampSeconds[id], (11 - g_iUserCampSeconds[id]) == 1 ? "a" : "e")
					}
				}
	
				else if(g_fUserOrigin[id][0] != g_fUserOldOrigin[id][0]
					|| g_fUserOrigin[id][1] != g_fUserOldOrigin[id][1]
					|| g_fUserOrigin[id][2] != g_fUserOldOrigin[id][2]) 
				{
					
					g_iUserCampSeconds[id] = 0;
					g_bUserIsCamping[id] = false;
				}
			}
		}
		g_fUserOldOrigin[id][0] = g_fUserOrigin[id][0];
		g_fUserOldOrigin[id][1] = g_fUserOrigin[id][1];
		g_fUserOldOrigin[id][2] = g_fUserOrigin[id][2];
	}
	return FMRES_IGNORED;
}

public end_round()
{
	for(new id; id <= 32; id++)
	{
		remove_task(id+TASK_AFFECT)
		if(is_user_alive(id) && !savior[id] && !destroyer[id])
			g_end_health[id] = get_user_health(id)
		if(is_user_alive(id))
		{
			set_user_godmode(id, 1)
			client_cmd(id, "+jump;-jump")
			ExecuteHamB(Ham_Player_ResetMaxSpeed, id)
		}
	}
	g_c4timer = -1;
	g_endround = true
}

public first_round()
{
	restart_seconds--
	if(restart_seconds > 0)
		g_firstround = true
	else
	{
		server_cmd("sv_restart 1")
		g_firstround = false
		return;
	}
	set_hudmessage(85, 255, 170, 0.0, 0.19, 1, 1.1, 1.0)
	show_hudmessage(0, "Asteptam ca toti jucatorii sa se conecteze.^n%d secund%s ramas%s.", restart_seconds, restart_seconds < 2 ? "a" : "e", restart_seconds < 2 ? "a" : "e")
}

public think_grenade(ent)
{
	if(!pev_valid(ent))
		return HAM_IGNORED;
	
	static Float:dmgtime, Float:current_time
	pev(ent, pev_dmgtime, dmgtime)
	current_time = get_gametime()
	
	if(dmgtime > current_time)
		return HAM_IGNORED;
	
	switch(pev(ent, PEV_NADE_TYPE))
	{
		case NADE_TYPE_NAPALM:
		{
			fire_explode(ent)
			return HAM_SUPERCEDE;
		}
		case NADE_TYPE_FROST:
		{
			frost_explode(ent)
			return HAM_SUPERCEDE;
		}
		case NADE_TYPE_CRAZY:
		{
			crazy_explode(ent)
			return HAM_SUPERCEDE;
		}
		case NADE_TYPE_KILL:
		{
			if (entity_get_int(ent, EV_INT_movetype) != MOVETYPE_BOUNCEMISSILE)
				return HAM_IGNORED
			
			if (entity_get_float(ent, EV_FL_dmgtime) > get_gametime() + 2.5)
			{
				entity_set_float(ent, EV_FL_dmgtime, get_gametime() + 2.5)
			}
			
			new owner = pev(ent, pev_owner)
			new Float:origin[3]
			entity_get_vector(ent, EV_VEC_origin, origin)
			
			if (entity_get_float(ent, EV_FL_dmgtime) < get_gametime() || !is_user_connected(owner) || is_user_connecting(owner))
			{
				clear_beamfollow(ent)
				entity_set_int(ent, EV_INT_flags, FL_KILLME)
				metal_gibs(origin)
				
				return HAM_SUPERCEDE
			}
			
			new team = _:cs_get_user_team(owner)
			
			new target, Float:velocity[3], oldtarget
			target = entity_get_edict(ent, EV_ENT_euser2)
			oldtarget = entity_get_edict(ent, EV_ENT_euser3)
			
			if (target == owner)
			{
				target = 0
				entity_set_edict(ent, EV_ENT_euser2, 0)
			}
			
			if (target == 0)
			{
				entity_get_vector(ent, EV_VEC_velocity, velocity)
				
				if (xs_vec_len(velocity) < 200.0)
				{
					xs_vec_mul_scalar(velocity, xs_vec_len(velocity) + 50.0, velocity)
					entity_set_vector(ent, EV_VEC_velocity, velocity)
				}
				
				new i = -1, Float:distance = 300.0, Float:junk[3], targetteam
				
				while ((i = find_ent_in_sphere(i, origin, distance)))
				{
					if (i > g_iMaxPlayers)
						break
					
					if (i == owner)
						continue
					
					if (i == oldtarget)
						continue
					
					if (!is_user_connected(i) || is_user_connecting(i))
						continue
					
					if (!is_user_alive(i))
						continue
					
					targetteam = _:cs_get_user_team(i)
					
					if ((team != targetteam && targetteam != _:CS_TEAM_SPECTATOR && targetteam != _:CS_TEAM_UNASSIGNED))
					{
						static Float:o[3]
						entity_get_vector(i, EV_VEC_origin, o)
						entity_get_vector(i, EV_VEC_view_ofs, junk)
						xs_vec_add(o, junk, o)
						static Float:new_distance
						new_distance = get_distance_f(o, origin)
						
						if (new_distance < distance)
						{
							distance = new_distance
							entity_set_edict(ent, EV_ENT_euser2, i)
						}
					}
				}
				
				if (entity_range(owner, ent) < distance && entity_get_int(ent, EV_INT_iuser2) > 0)
				{
					entity_set_edict(ent, EV_ENT_euser2, owner)
				}
				
				entity_set_float(ent, EV_FL_nextthink, get_gametime() + 0.02)
				
				return HAM_SUPERCEDE
			}
			else if (!is_user_alive(target))
			{
				entity_get_vector(ent, EV_VEC_velocity, velocity)
				
				if (xs_vec_len(velocity) < 200.0)
				{
					xs_vec_mul_scalar(velocity, xs_vec_len(velocity) + 50.0, velocity)
					entity_set_vector(ent, EV_VEC_velocity, velocity)
				}
				
				entity_set_edict(ent, EV_ENT_euser2, 0)
				entity_set_float(ent, EV_FL_nextthink, get_gametime() + 0.02)
				return HAM_SUPERCEDE
			}
			else
			{
				new Float:aim[3], Float:targetorigin[3], Float:velocity_normal[3], Float:aim_normal[3]
				
				entity_get_vector(target, EV_VEC_origin, targetorigin)
				
				xs_vec_add(targetorigin, Float:{0.0, 0.0, 30.0}, targetorigin)
				
				if (!is_point_visible(origin, targetorigin, ent))
				{
					entity_set_edict(ent, EV_ENT_euser2, 0)
					entity_set_float(ent, EV_FL_nextthink, get_gametime() + 0.02)
					return HAM_SUPERCEDE
				}
				
				xs_vec_sub(targetorigin, origin, aim)
				
				if (xs_vec_len(aim) <= 100.0)
				{
					xs_vec_mul_scalar(aim, 800.0/xs_vec_len(aim), aim)
					
					entity_set_vector(ent, EV_VEC_velocity, aim)
					
					if (target == owner && get_distance_f(targetorigin, origin) <= 1.0)
					{
						new Float:torigin[3]
						entity_get_vector(owner, EV_VEC_origin, torigin)
						blood(torigin)
						set_pdata_int(owner, OFFSET_LAST_HIT_GROUP, HIT_HEAD, 5)
						ExecuteHamB(Ham_TakeDamage, owner, ent, owner, 135.0, DMG_CS_BULLETS_KNIFE)
						entity_set_edict(ent, EV_ENT_euser2, 0)
						entity_set_edict(ent, EV_ENT_euser3, owner)
						
						new color[3] , impacts
						color[0] = 165
						color[1] = 45
						color[2] = 45
						
						create_blast(origin, color)
						
						impacts = entity_get_int(ent, EV_INT_iuser2)
						
						impacts++
						
						entity_set_int(ent, EV_INT_iuser2, impacts)
						
						if (impacts >= 1)
						{
							clear_beamfollow(ent)
							entity_set_int(ent, EV_INT_flags, FL_KILLME)
							metal_gibs(origin)
						}
					}
					
					entity_set_float(ent, EV_FL_nextthink, get_gametime() + 0.02)
					return HAM_SUPERCEDE
				}
				
				entity_get_vector(ent, EV_VEC_velocity, velocity)
				
				xs_vec_sub(targetorigin, origin, aim)
				
				xs_vec_normalize(velocity, velocity_normal)
				xs_vec_normalize(aim, aim_normal)
				
				if (xs_vec_len(velocity) < 200.0)
				{
					xs_vec_mul_scalar(velocity, xs_vec_len(velocity) + 50.0, velocity)
				}
				
				if (xs_vec_dot(aim_normal, velocity_normal) < 0)
				{
					entity_set_edict(ent, EV_ENT_euser2, 0)
					entity_set_float(ent, EV_FL_nextthink, get_gametime() + 0.02)
					entity_set_vector(ent, EV_VEC_velocity, velocity)
					return HAM_SUPERCEDE
				}
				
				if (velocity_normal[0] < aim_normal[0])
				{
					velocity[0] += 150.0
				}
				else if (velocity_normal[0] > aim_normal[0])
				{
					velocity[0] -= 150.0
				}
				
				if (velocity_normal[1] < aim_normal[1])
				{
					velocity[1] += 150.0
				}
				else if (velocity_normal[1] > aim_normal[1])
				{
					velocity[1] -= 150.0
				}
				
				if (velocity_normal[2] < aim_normal[2])
				{
					velocity[2] += 25.0
				}
				else if (velocity_normal[2] > aim_normal[2])
				{
					velocity[2] -= 25.0
				}
				
				velocity[2] += 5.0
				
				entity_set_vector(ent, EV_VEC_velocity, velocity)
			}
			
			entity_set_float(ent, EV_FL_nextthink, get_gametime() + 0.02)
			return HAM_SUPERCEDE
		}
	}
	return HAM_IGNORED;
}

public crazy_explode(entity)
{
	if(!pev_valid(entity))
		return
	
	static Float:origin[3];
	pev(entity, pev_origin, origin)
	create_blast4(origin)
	emit_sound(entity, CHAN_WEAPON, explosion_sound, VOL_NORM, ATTN_NORM, 0, PITCH_NORM)
	static victim 
	victim = -1
	
	while((victim = engfunc (EngFunc_FindEntityInSphere, victim, origin, 250.0)) != 0)
	{
		if (!is_user_alive(victim) || get_user_team(victim) != 1)
			continue
			
		if(!task_exists(victim+TASK_AFFECT)) 
			set_task(0.2, "affect_victim", victim+TASK_AFFECT, _, _, "a", 30)
	}
	engfunc(EngFunc_RemoveEntity, entity)
}

create_blast4(const Float:originF[3])
{
	engfunc(EngFunc_MessageBegin, MSG_PVS, SVC_TEMPENTITY, originF, 0)
	write_byte(TE_BEAMCYLINDER)
	engfunc(EngFunc_WriteCoord, originF[0])
	engfunc(EngFunc_WriteCoord, originF[1])
	engfunc(EngFunc_WriteCoord, originF[2])
	engfunc(EngFunc_WriteCoord, originF[0])
	engfunc(EngFunc_WriteCoord, originF[1])
	engfunc(EngFunc_WriteCoord, originF[2]+470.0)
	write_short(beam_effect)
	write_byte(0)
	write_byte(0)
	write_byte(4)
	write_byte(60)
	write_byte(0)
	write_byte(50)
	write_byte(70)
	write_byte(100)
	write_byte(200)
	write_byte(0)
	message_end()
	
	engfunc(EngFunc_MessageBegin, MSG_PVS, SVC_TEMPENTITY, originF, 0)
	write_byte(TE_BEAMCYLINDER)
	engfunc(EngFunc_WriteCoord, originF[0])
	engfunc(EngFunc_WriteCoord, originF[1])
	engfunc(EngFunc_WriteCoord, originF[2])
	engfunc(EngFunc_WriteCoord, originF[0])
	engfunc(EngFunc_WriteCoord, originF[1])
	engfunc(EngFunc_WriteCoord, originF[2]+555.0)
	write_short(beam_effect)
	write_byte(0)
	write_byte(0)
	write_byte(4)
	write_byte(60)
	write_byte(0)
	write_byte(50)
	write_byte(70)
	write_byte(100)
	write_byte(200)
	write_byte(0)
	message_end()
	
	engfunc(EngFunc_MessageBegin, MSG_PVS, SVC_TEMPENTITY, originF, 0)
	write_byte(TE_DLIGHT)
	engfunc(EngFunc_WriteCoord, originF[0])
	engfunc(EngFunc_WriteCoord, originF[1])
	engfunc(EngFunc_WriteCoord, originF[2])
	write_byte(50)
	write_byte(50)
	write_byte(70)
	write_byte(100)
	write_byte(30)
	write_byte(30)
	message_end()

	engfunc(EngFunc_MessageBegin, MSG_BROADCAST,SVC_TEMPENTITY, originF, 0)
	write_byte(TE_EXPLOSION)
	engfunc(EngFunc_WriteCoord, originF[0])
	engfunc(EngFunc_WriteCoord, originF[1])
	engfunc(EngFunc_WriteCoord, originF[2]+75)
	write_short(crazyexp)
	write_byte(17)
	write_byte(15)
	write_byte(TE_EXPLFLAG_NOSOUND)
	message_end();	
	
	engfunc(EngFunc_MessageBegin, MSG_BROADCAST,SVC_TEMPENTITY, originF, 0)
	write_byte(TE_SPRITETRAIL)
	engfunc(EngFunc_WriteCoord, originF[0])
	engfunc(EngFunc_WriteCoord, originF[1])
	engfunc(EngFunc_WriteCoord, originF[2] + 40)
	engfunc(EngFunc_WriteCoord, originF[0])
	engfunc(EngFunc_WriteCoord, originF[1])
	engfunc(EngFunc_WriteCoord, originF[2])
	write_short(crazygib)
	write_byte(30)
	write_byte(10)
	write_byte(2)
	write_byte(50)
	write_byte(10)
	message_end();
}

public affect_victim(taskid)
{
	if(g_endround)
		return;
	
	if(!is_user_alive(ID_AFFECT) || get_user_team(ID_AFFECT) != 1)
		return
		
	message_begin(MSG_ONE_UNRELIABLE, g_msgScreenFade, {0,0,0}, ID_AFFECT)
	write_short(1<<13)
	write_short(1<<14)
	write_short(0x0000)
	write_byte(random_num(50, 200))
	write_byte(random_num(50, 200))
	write_byte(random_num(50, 200))
	write_byte(random_num(50, 200))
	message_end()
		
	message_begin(MSG_ONE_UNRELIABLE, g_screenshake, {0,0,0}, ID_AFFECT)
	write_short(0xFFFF)
	write_short(1<<13)
	write_short(0xFFFF)
	message_end()
	remove_task(ID_AFFECT)
}

public set_model(entity, const model[])
{
	if(strlen(model) < 8)
		return FMRES_IGNORED;

	if(model[7] != 'w' || model[8] != '_')
		return FMRES_IGNORED;
	
	static Float:dmgtime
	pev(entity, pev_dmgtime, dmgtime)
	
	if(get_user_team(pev(entity, pev_owner)) == 1)
	{
		if(dmgtime == 0.0)
			return FMRES_IGNORED;
		if(model[9] == 'h' && model[10] == 'e')
		{
			message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
			write_byte(TE_BEAMFOLLOW)
			write_short(entity)
			write_short(trail_spr)
			write_byte(15)
			write_byte(10)
			write_byte(200)
			write_byte(20)
			write_byte(10)
			write_byte(200)
			message_end()
			set_pev(entity, PEV_NADE_TYPE, NADE_TYPE_NAPALM)
			fm_set_rendering(entity, kRenderFxGlowShell, 200, 20, 10, kRenderNormal, 18)
			entity_set_model(entity, w_grenade_furien[0])
			return FMRES_SUPERCEDE;
		}
		else if(model[9] == 'f' && model[10] == 'l')
		{
			message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
			write_byte(TE_BEAMFOLLOW)
			write_short(entity)
			write_short(trail_spr)
			write_byte(15)
			write_byte(10)
			write_byte(10)
			write_byte(20)
			write_byte(200)
			write_byte(200)
			message_end()
			set_pev(entity, PEV_NADE_TYPE, NADE_TYPE_FROST)
			fm_set_rendering(entity, kRenderFxGlowShell, 10, 20, 200, kRenderNormal, 18)
			entity_set_model(entity, w_grenade_furien[1])
			return FMRES_SUPERCEDE;
		}
		else if(model[9] == 's' && model[10] == 'm')
		{
			if(have_killnade[pev(entity, pev_owner)])
			{
				message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
				write_byte(TE_BEAMFOLLOW)
				write_short(entity)
				write_short(trail_spr)
				write_byte(15)
				write_byte(15)
				write_byte(165)
				write_byte(45)
				write_byte(45)
				write_byte(200)
				message_end()
				set_pev(entity, PEV_NADE_TYPE, NADE_TYPE_KILL)
				entity_set_int(entity, EV_INT_movetype, MOVETYPE_BOUNCEMISSILE)
				entity_set_int(entity, EV_INT_iuser2, 0)
				entity_set_edict(entity, EV_ENT_euser2, 0)
				entity_set_size(entity, Float:{-2.0,-4.0,-2.0}, Float:{2.0, 4.0, 2.0})
				fm_set_rendering(entity, kRenderFxGlowShell, 165, 45, 45, kRenderNormal, 18)
				entity_set_float(entity, EV_FL_dmgtime, get_gametime() + 2.5)
				entity_set_model(entity, w_grenade_furien[2])
				have_killnade[pev(entity, pev_owner)] = false
				return FMRES_SUPERCEDE;
			}
			return FMRES_IGNORED;
		}
		return FMRES_IGNORED;
	}
	else
	{
		if(model[9] == 'h' && model[10] == 'e')
		{
			if(dmgtime == 0.0)
				return FMRES_IGNORED;
			message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
			write_byte(TE_BEAMFOLLOW)
			write_short(entity)
			write_short(trail_spr)
			write_byte(15)
			write_byte(10)
			write_byte(100)
			write_byte(50)
			write_byte(70)
			write_byte(200)
			message_end()
			fm_set_rendering(entity, kRenderFxGlowShell, 100, 50, 70, kRenderNormal, 18)
		}
		else if(model[9] == 'f' && model[10] == 'l')
		{
			if(dmgtime == 0.0)
				return FMRES_IGNORED;
			message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
			write_byte(TE_BEAMFOLLOW)
			write_short(entity)
			write_short(trail_spr)
			write_byte(15)
			write_byte(10)
			write_byte(200)
			write_byte(200)
			write_byte(200)
			write_byte(200)
			message_end()
			fm_set_rendering(entity, kRenderFxGlowShell, 200, 200, 200, kRenderNormal, 18)
		}
		else if(model[9] == 's' && model[10] == 'm')
		{
			if(dmgtime == 0.0)
				return FMRES_IGNORED;
			message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
			write_byte(TE_BEAMFOLLOW)
			write_short(entity)
			write_short(trail_spr)
			write_byte(15)
			write_byte(10)
			write_byte(50)
			write_byte(70)
			write_byte(100)
			write_byte(200)
			message_end()
			set_pev(entity, PEV_NADE_TYPE, NADE_TYPE_CRAZY)
			fm_set_rendering(entity, kRenderFxGlowShell, 50, 70, 100, kRenderNormal, 18)
		}
		else
			fm_set_rendering(entity, kRenderFxGlowShell, random(256), random(256), random(256), kRenderNormal, 18)
	}
	return FMRES_IGNORED;
}

public CWeaponBox_Touch(iWeaponBox, id)
{
	if(IsPlayer(id))
	{
		if(!is_user_alive(id))
			return HAM_SUPERCEDE

		if(IsWeaponBoxC4(iWeaponBox))
			return HAM_IGNORED

		if(get_user_team(id) == 1)
			return HAM_SUPERCEDE
		return HAM_IGNORED
	}
	return HAM_IGNORED
}

public GroundWeapon_Touch(iWeapon, id)
{
	if(IsPlayer(id))
	{
		if(!is_user_alive(id))
			return HAM_SUPERCEDE

		if(get_user_team(id) == 1)
			return HAM_SUPERCEDE
		return HAM_IGNORED
	}
	return HAM_IGNORED
}

public game_menu(id)
{
	if(get_user_team(id) == 3)
		return PLUGIN_CONTINUE;
	
	static menu_title[150], menu;
	formatex(menu_title, charsmax(menu_title), "\yFurien Mod Remaked" )
	menu = menu_create(menu_title, "gmenu_handler")
	static menu_item[150];
	static izStats[8], izBody[8], iRankPos, iRankMax;
	iRankPos = get_user_stats(id, izStats, izBody)
	iRankMax = get_statsnum()
	if(get_user_team(id) != 2 || !is_user_alive(id))
		formatex(menu_item, charsmax(menu_item), "\dMeniu Arme")
	else
	{
		if(g_cmdguns[id] && g_gunsselect[id] == 0)
			formatex(menu_item, charsmax(menu_item), "\dMeniu Arme [FOLOSIT | NU ESTE AUTOMAT]")
		else if(g_cmdguns[id] && g_gunsselect[id] == 1)
			formatex(menu_item, charsmax(menu_item), "\dMeniu Arme [FOLOSIT | NU ESTE AUTOMAT]")
		else if(g_cmdguns[id] && g_gunsselect[id] == 2)
			formatex(menu_item, charsmax(menu_item), "\dMeniu Arme [FOLOSIT | ALES DE RUNDA TRECUTA]")
		else if(g_cmdguns[id] && g_gunsselect[id] == 3)
			formatex(menu_item, charsmax(menu_item), "\dMeniu Arme [FOLOSIT | AUTOMAT]")
		else if(!g_cmdguns[id])
			formatex(menu_item, charsmax(menu_item), "\yMeniu Arme\r [NEFOLOSIT]")
	}
	menu_additem(menu, menu_item, "")
	if(!is_user_alive(id))
		formatex(menu_item, charsmax(menu_item), "\dMeniu Shop [%i$]", g_money[id])
	else
		formatex(menu_item, charsmax(menu_item), "\yMeniu Shop\r [%i$]", g_money[id])
	menu_additem(menu, menu_item, "")
	if(!(get_user_flags(id) & VIP_FLAG))
		formatex(menu_item, charsmax(menu_item), "\dOpen Vip Shop")
	else
		formatex(menu_item, charsmax(menu_item), "\yOpen Vip Shop")
	menu_additem(menu, menu_item, "")
	formatex(menu_item, charsmax(menu_item), "\yRank:\r [%d\y/\r %d]^nTotal:\r [%d\y UCIDERI |\r %d\y DECESE]", iRankPos, iRankMax, izStats[0], izStats[1])
	menu_additem(menu, menu_item, "")
	formatex(menu_item, charsmax(menu_item), "\yTop Rank\r Players")
	menu_additem(menu, menu_item, "")
	formatex(menu_item, charsmax(menu_item), "\yTop 15\r Levels")
	menu_additem(menu, menu_item, "")
	if(get_user_flags(id) & ADMIN_SLAY)
		formatex(menu_item, charsmax(menu_item), "\yJoin Spectator")
	else
		formatex(menu_item, charsmax(menu_item), "\dJoin Spectator")
	menu_additem(menu, menu_item, "")
	menu_display(id, menu, 0)
	return PLUGIN_HANDLED;
}

public gmenu_handler(id, menu, item)
{
	switch(item)
	{
		case 0:
		{
			if(!is_user_alive(id))
			{
				color(id, ".v%s.g Trebuie sa fii in.e viata.g pentru acest meniu.", TAG)
				return PLUGIN_HANDLED;
			}
			
			if(get_user_team(id) != 2)
			{
				color(id, ".v%s.g Trebuie sa fii.e Anti-Furien.g pentru a folosi acest meniu.", TAG)
				return PLUGIN_HANDLED;
			}
			
			if(g_cmdguns[id] && g_gunsselect[id] == 0)
			{
				color(id, ".v%s.g Meniul tau este deja activat.g.", TAG)
				return PLUGIN_HANDLED;
			}
			else if(g_cmdguns[id] && g_gunsselect[id] == 1)
			{
				color(id, ".v%s.g Meniul tau este deja.e activat.g.", TAG)
				return PLUGIN_HANDLED;
			}
			else if(g_cmdguns[id] && g_gunsselect[id] == 2)
			{
				color(id, ".v%s.g Meniul tau este deja.e activat.g.", TAG)
				return PLUGIN_HANDLED;
			}
			else if(g_cmdguns[id] && g_gunsselect[id] == 3)
			{
				color(id, ".v%s.g Meniul tau a fost.e reactivat.g.", TAG)
				g_gunsselect[id] = 0
				return PLUGIN_HANDLED;
			}
			else if(!g_cmdguns[id])
			{
				color(id, ".v%s.g Meniul tau de.e arme.g este reafisat.", TAG)
				primary_weap(id)
				return PLUGIN_HANDLED;
			}
			return PLUGIN_HANDLED;
		}
		case 1:
		{
			if(!is_user_alive(id))
			{
				color(id, ".v%s.g Shopul poate fi folosit doar daca sunteti in viata.", TAG)
				return PLUGIN_HANDLED;
			}
			shop_enter(id)
			return PLUGIN_HANDLED;
		}
		case 2:
		{
			if(!is_user_connected(id))
				return PLUGIN_HANDLED;
			
			shop_menu(id)
			return PLUGIN_HANDLED;
		}
		case 3:
		{
			if(!is_user_connected(id))
				return PLUGIN_HANDLED;
			
			static izStats[8], izBody[8], iRankPos, iRankMax;
			iRankPos = get_user_stats(id, izStats, izBody)
			iRankMax = get_statsnum()
			color(0, ".v%s.e %s.g este pe locul.e %d/%d.g. Are.e %d.g ucideri si.e %d.g decese.", TAG, get_name(id), iRankPos, iRankMax, izStats[0], izStats[1])
			return PLUGIN_HANDLED;
		}
		case 4:
		{
			if(!is_user_connected(id))
				return PLUGIN_HANDLED;
				
			open_topmenu(id)
			return PLUGIN_HANDLED;
		}
		case 5:
		{
			if(!is_user_connected(id))
				return PLUGIN_HANDLED;

			show_top(id)
			return PLUGIN_HANDLED;
		}
		case 6:
		{
			if(get_user_flags(id) & ADMIN_SLAY)
			{
				if(is_user_alive(id))
					user_kill(id)
				cs_set_user_team(id, CS_TEAM_SPECTATOR)
				color(0, ".v%s.e %s.g s-a mutat spectator.", TAG, get_name(id))
				return PLUGIN_HANDLED;
			}
			else
			{
				color(id, ".v%s.g Nu ai acces la aceasta comanda.", TAG)
				return PLUGIN_HANDLED;
			}
			return PLUGIN_HANDLED;
		}
	}
	return PLUGIN_HANDLED;
}

public open_topmenu(id)
{
	new menu = menu_create("\yTop Rank Players", "topmenu_handler")
	new stats_taked[8], crap[8], player_name[32], temp_message[256], add_item_menu[4], max_pages, iRankMax = get_statsnum();
	
	if(iRankMax < 360)
		max_pages = iRankMax
	else
		max_pages = 360
	
	for(new page = 0; page < max_pages; page++) 
	{
		get_stats(page, stats_taked, crap, player_name, charsmax(player_name))
		num_to_str(page + 1, add_item_menu, charsmax(add_item_menu))
		format(temp_message, charsmax(temp_message), "\y%s\d R:\r %i\d K:\r %i\d D:\r %i", player_name, page + 1, stats_taked[0], stats_taked[1])
		menu_additem(menu, temp_message, add_item_menu, 0)
	}
	menu_display(id, menu, 0)
}

public topmenu_handler(id, menu, item)
	return PLUGIN_HANDLED;
	
public reset_score(id)
{
	if(!is_user_connected(id))
		return PLUGIN_HANDLED;
		
	if(!is_user_alive(id))
	{
		color(id, ".v%s.g Poti sa-ti resetezi scorul doar cand esti in viata!", TAG)
		return PLUGIN_CONTINUE;
	}
	
	if(g_money[id] < 1)
	{
		color(id, ".v%s.g Iti trebuie.e 1$.g pentru a putea sa-ti resetezi scorul. Necesar.e %d$.g.", TAG, 1 - g_money[id])
		return PLUGIN_CONTINUE;
	}
	set_pev(id, pev_frags, 0.0)
	fm_cs_set_user_deaths(id, 0)
	g_money[id] -= 1
	color(0, ".v%s.e %s.g si-a resetat scorul!", TAG, get_name(id))
	return PLUGIN_HANDLED;
}

public plasma_bomb_effects(c4)
{
	c4 -= 652450
	
	if(g_endround)
	{
		remove_task(c4+652450)
		return;
	}
	
	if(!b_planted)
	{
		remove_task(c4+652450)
		return;
	}
	
	if(!pev_valid(c4))
	{
		remove_task(c4+652450)
		return;
	}
	
	new Float:origini[3]
	pev(c4, pev_origin, origini)
	engfunc(EngFunc_MessageBegin, MSG_PVS, SVC_TEMPENTITY, origini, 0)
	write_byte(TE_BEAMCYLINDER)
	engfunc(EngFunc_WriteCoord, origini[0])
	engfunc(EngFunc_WriteCoord, origini[1])
	engfunc(EngFunc_WriteCoord, origini[2])
	engfunc(EngFunc_WriteCoord, origini[0])
	engfunc(EngFunc_WriteCoord, origini[1])
	engfunc(EngFunc_WriteCoord, origini[2]+400.0)
	write_short(beam_effect)
	write_byte(0)
	write_byte(0)
	write_byte(4)
	write_byte(10)
	write_byte(0)
	write_byte(random(256))
	write_byte(random(256))
	write_byte(random(256))
	write_byte(200)
	write_byte(0)
	message_end()
	
	engfunc(EngFunc_MessageBegin, MSG_PVS, SVC_TEMPENTITY, origini, 0)
	write_byte(TE_BEAMCYLINDER)
	engfunc(EngFunc_WriteCoord, origini[0])
	engfunc(EngFunc_WriteCoord, origini[1])
	engfunc(EngFunc_WriteCoord, origini[2])
	engfunc(EngFunc_WriteCoord, origini[0])
	engfunc(EngFunc_WriteCoord, origini[1])
	engfunc(EngFunc_WriteCoord, origini[2]+450.0)
	write_short(beam_effect)
	write_byte(0)
	write_byte(0)
	write_byte(4)
	write_byte(15)
	write_byte(0)
	write_byte(random(256))
	write_byte(random(256))
	write_byte(random(256))
	write_byte(200)
	write_byte(0)
	message_end()
	engfunc(EngFunc_MessageBegin, MSG_PVS, SVC_TEMPENTITY, origini, 0)
	write_byte(TE_BEAMCYLINDER)
	engfunc(EngFunc_WriteCoord, origini[0])
	engfunc(EngFunc_WriteCoord, origini[1])
	engfunc(EngFunc_WriteCoord, origini[2])
	engfunc(EngFunc_WriteCoord, origini[0])
	engfunc(EngFunc_WriteCoord, origini[1])
	engfunc(EngFunc_WriteCoord, origini[2]+550.0)
	write_short(beam_effect)
	write_byte(0)
	write_byte(0)
	write_byte(4)
	write_byte(25)
	write_byte(0)
	write_byte(random(256))
	write_byte(random(256))
	write_byte(random(256))
	write_byte(200)
	write_byte(0)
	message_end()
	
	fm_set_rendering(c4, kRenderFxGlowShell, random(255), random(255), random(255), kRenderNormal, 50)
	if(g_c4timer < 11)
	{
		static Float:coord[3];
		coord[0] = origini[0] + 150.0;
		coord[1] = origini[1] + 150.0;
		coord[2] = origini[2] + 800.0;
		create_thunder(coord, origini);
		if(active_fog)
			msg_create_fog(random(250), random(250), random(250), 3)
	}

	if(g_c4timer >= 0)
	{
		--g_c4timer;
		if(g_c4timer < 41 && g_c4timer > 13)
			emit_sound(c4, CHAN_ITEM, misc_sound_wav[4], 1.0, ATTN_NORM, 0, PITCH_NORM)
		else if(g_c4timer == 13)
		{
			emit_sound(c4, CHAN_ITEM, misc_sound_wav[5], 1.0, ATTN_NORM, 0, PITCH_NORM)
			set_lights("c")
		}
		set_dhudmessage(random(255), random(255), random(255), -1.0, 0.0, 1, 1.0, 1.0, 0.0, 0.0)
		if(g_c4timer > 0)
			show_dhudmessage(0, "%d secund%s ramas%s pana la explozie!", g_c4timer, g_c4timer < 2 ? "a" : "e", g_c4timer < 2 ? "a" : "e")
	}
}

public check_weapon(id)
{
	if(!is_user_alive(id))
		return;
		
	switch(get_user_team(id))
	{
		case 1:
		{
			switch(get_user_weapon(id))
			{
				case CSW_KNIFE:
				{
					if(g_superknife[id])
						set_pev(id, pev_viewmodel2, super_knife_furien)
					else
						set_pev(id, pev_viewmodel2, knife_furien)
				}
				case CSW_HEGRENADE: set_pev(id, pev_viewmodel2, v_grenade_furien[0])
				case CSW_FLASHBANG: set_pev(id, pev_viewmodel2, v_grenade_furien[1])
				case CSW_SMOKEGRENADE:
				{
					if(have_killnade[id])
						set_pev(id, pev_viewmodel2, v_grenade_furien[2])
				}
				case CSW_C4:
				{
					set_pev(id, pev_viewmodel2, plasma_bomb[1])
					set_pev(id, pev_weaponmodel2, plasma_bomb[0])
				}
			}
		}
		case 2:
		{
			if(g_ak47[id] && get_user_weapon(id) == CSW_AK47)
			{
				set_pev(id, pev_viewmodel2, v_ak47)
				set_pev(id, pev_weaponmodel2, p_ak47)
			}
			else if(g_m4a1[id] && get_user_weapon(id) == CSW_M4A1)
			{
				set_pev(id, pev_viewmodel2, v_m4a1)
				set_pev(id, pev_weaponmodel2, p_m4a1)
			}
			else if(g_deagle[id] && get_user_weapon(id) == CSW_DEAGLE)
			{
				set_pev(id, pev_viewmodel2, v_deagle)
				set_pev(id, pev_weaponmodel2, p_deagle)
			}
		}
	}
}

public msg_screenfade(msgid, dest, id)
{
	if(!IsPlayer(id))
		return PLUGIN_CONTINUE
	
	if(get_user_team(id) == 2 || !is_user_alive(id) || g_noflash[id])
	{
		static date[4]
		date[0] = get_msg_arg_int(4); date[1] = get_msg_arg_int(5)
		date[2] = get_msg_arg_int(6); date[3] = get_msg_arg_int(7)
		
		if(date[0] == 255 && date[1] == 255 && date[2] == 255 && date[3] > 199)
			return PLUGIN_HANDLED
	}
	return PLUGIN_CONTINUE
}

public ham_take_damage(vic, inf, att, Float:dmg, dmgbits)
{
	if(get_user_team(att) == 1 && g_superknife[att] && !(dmgbits & DMG_NADE))
		dmg *= 2.0
		
	if(is_user_alive(att) && get_user_team(att) == 2 && ((g_ak47[att] && get_user_weapon(att) == CSW_AK47) || (g_m4a1[att] && get_user_weapon(att) == CSW_M4A1) || (g_deagle[att] && get_user_weapon(att) == CSW_DEAGLE)))
		dmg *= 2.0
	
	SetHamParamFloat(4, dmg)
	
	if(is_user_alive(vic) && inf == bomba)
	{
		SetHamParamFloat(4, 0.0);
		return HAM_SUPERCEDE;
	}
	if((vic == att) && (dmgbits & DMG_NADE))
		return HAM_SUPERCEDE;
	return HAM_IGNORED;
}

public on_damage(id)
{
	static attacker; attacker = get_user_attacker(id)
	static damage; damage = read_data(2)		
	if(IsPlayer(attacker))
	{
		if(fm_is_ent_visible(attacker, id))
		{
			g_iPlayerPos[attacker] += 1
			if(g_iPlayerPos[attacker] == sizeof(g_flCoords))
				g_iPlayerPos[attacker] = 0		
			set_dhudmessage(random(256), random(256), random(256), Float:g_flCoords[g_iPlayerPos[attacker]][0], Float:g_flCoords[g_iPlayerPos[attacker]][1], 0, 0.1, 2.5, 0.02, 0.02)
			show_dhudmessage(attacker, "%i^n", damage)				
		}
	}
}

register_buy_cmd()
{
	register_clcmd("buy", "ClientCommand_Buy")
	register_clcmd("bUy", "ClientCommand_Buy")
	register_clcmd("buY", "ClientCommand_Buy")
	register_clcmd("bUY", "ClientCommand_Buy")
	register_clcmd("Buy", "ClientCommand_Buy")
	register_clcmd("BUy", "ClientCommand_Buy")
	register_clcmd("BuY", "ClientCommand_Buy")
	register_clcmd("BUY", "ClientCommand_Buy")
}

public ClientCommand_Buy(id)
	return PLUGIN_HANDLED_MAIN

PlaySound(const sound[])
{
	if(equal(sound[strlen(sound)-4], ".mp3"))
		client_cmd(0, "mp3 play ^"%s^"", sound)
	else
		client_cmd(0, "spk ^"%s^"", sound)
}

public ScreenFade(red, green, blue)
{
	message_begin(MSG_BROADCAST, g_msgScreenFade);
	write_short((1<<12)*4);
	write_short((1<<12)*1);
	write_short(0x0001);
	write_byte(red);
	write_byte(green);
	write_byte(blue);
	write_byte(250);
	message_end();
}

set_vars_speed(id)
	client_cmd(id, "cl_sidespeed 700;cl_backspeed 700;cl_forwardspeed 700")
	
public sound_stop()
	client_cmd(0, "mp3 stop; stopsound")
	
public start_ambience()
{
	sound_stop()
	client_cmd(0, "mp3 play ^"%s^"", ambience)
}

public killed_player(victim, attacker)
{
	if(is_user_connected(victim) && is_user_alive(attacker))
		color(victim, ".v%s.e %s.g mai are inca.e[.v%d HP.e].g", TAG, get_name(attacker), get_user_health(attacker))
	g_frozen[victim] = false
	g_noflash[victim] = false
	g_nofrost[victim] = false
	g_superknife[victim] = false
	g_furiendetector[victim] = false
	g_end_health[victim] = 0
	parachute_reset(victim)
	have_killnade[victim] = false
	remove_task(victim+TASK_AFFECT)
	remove_task(victim+TASK_AURA)
	if(g_pet[victim])
		kill_pet(victim)

	reset_vars(victim)
	if(active_box)
		AddBonusBox(victim)
	if(get_user_team(victim) == 2)
		remove_task(victim+TASK_BURN)
		
	if(is_user_connected(attacker) && is_user_connected(victim) && attacker != victim)
		g_money[attacker] += 3
		
	if(destroyer[victim])
	{
		ham_strip_weapon(victim, "weapon_c4")
		destroyer[victim] = false
		select_destroyer()
	}
	if(savior[victim])
	{
		strip_user_weapons(victim)
		savior[victim] = false
		select_savior()
	}
}

public newSpawn(id)
{
	if(para_ent[id] > 0) 
		if(is_valid_ent(para_ent[id])) 
			remove_entity(para_ent[id])
	has_parachute[id] = true
	para_ent[id] = 0
	if(!active_huds)
	{
		set_pdata_int(id, m_iClientHideHUD, 0)
		set_pdata_int(id, m_iHideHUD, HIDE_HEALTH)
	}
	make_HideWeapon(id, HIDE_MONEY);
}

public fw_SetClientKeyValue(id, const infobuffer[], const key[], const value[])
{
	if(flag_get(g_HasCustomModel, id) && equal(key, "model"))
	{
		static currentmodel[32]
		fm_cs_get_user_model(id, currentmodel, charsmax(currentmodel))
		if(!equal(currentmodel, g_CustomPlayerModel[id]) && !task_exists(id+TASK_MODELCHANGE))
			fm_cs_set_user_model(id+TASK_MODELCHANGE)
		return FMRES_SUPERCEDE;
	}
	return FMRES_IGNORED;
}

public CmdStart(id, uc_handle, seed)
{
	new ent = fm_find_ent_by_class(id, ClassName)
	if(is_valid_ent(ent))
	{
		new classname[32]	
		pev(ent, pev_classname, classname, 31)
		if (equal(classname, ClassName))
		{
			if (pev(ent, pev_frame) >= 120)
				set_pev(ent, pev_frame, 0.0)
			else
				set_pev(ent, pev_frame, pev(ent, pev_frame) + 1.0)
			
			switch(pev(ent, pev_team))
			{
				case 1: 
				{
					//
				}
				case 2: 
				{
					//
				}
			}
		}
	}
}

parachute_reset(id)
{
	if(para_ent[id] > 0) 
		if(is_valid_ent(para_ent[id])) 
			remove_entity(para_ent[id])
	has_parachute[id] = false
	para_ent[id] = 0
}

fire_explode(ent)
{
	if(g_endround)
		return
	
	static Float:originF[3]
	pev(ent, pev_origin, originF)
	create_blast2(originF)
	emit_sound(ent, CHAN_WEAPON, misc_sound_wav[7], 1.0, ATTN_NORM, 0, PITCH_NORM)
	static victim
	victim = -1
	while((victim = engfunc(EngFunc_FindEntityInSphere, victim, originF, 250.0)) != 0)
	{
		if(!is_user_alive(victim) || get_user_team(victim) != 2)
			continue;
			
		g_burning_duration[victim] += 15
		
		if(!task_exists(victim+TASK_BURN))
			set_task(0.2, "burning_flame", victim+TASK_BURN, _, _, "b")
	}
	engfunc(EngFunc_RemoveEntity, ent)
}

frost_explode(ent)
{
	if(g_endround)
		return
		
	static Float:originF[3]
	pev(ent, pev_origin, originF)
	create_blast3(originF)
	emit_sound(ent, CHAN_WEAPON, misc_sound_wav[2], 1.0, ATTN_NORM, 0, PITCH_NORM)
	static victim
	victim = -1
	
	while((victim = engfunc(EngFunc_FindEntityInSphere, victim, originF, 250.0)) != 0)
	{
		if(!is_user_alive(victim) || get_user_team(victim) != 2 || g_nofrost[victim])
			continue;
		
		fm_set_rendering(victim, kRenderFxGlowShell, 0, 100, 200, kRenderNormal, 25)
		emit_sound(victim, CHAN_BODY, misc_sound_wav[3], 1.0, ATTN_NORM, 0, PITCH_NORM)
		
		message_begin(MSG_ONE_UNRELIABLE, g_msgScreenFade, _, victim)
		write_short(0)
		write_short(0)
		write_short(FFADE_STAYOUT)
		write_byte(10)
		write_byte(20)
		write_byte(200)
		write_byte(150)
		message_end()
		g_frozen[victim] = true
		if(pev(victim, pev_flags) & FL_ONGROUND)
			set_pev(victim, pev_gravity, 999999.9)
		else
			set_pev(victim, pev_gravity, 0.000001)
		reset_max_speed(victim)
		set_task(0.2, "freeze_effect", victim, _, _, "b")
		set_task(1.2, "remove_freeze", victim)
	}
	engfunc(EngFunc_RemoveEntity, ent)
}

public burning_flame(taskid)
{
	static origin[3], flags
	get_user_origin(ID_BURN, origin)
	flags = pev(ID_BURN, pev_flags)
	
	if((flags & FL_INWATER) || g_burning_duration[ID_BURN] < 1)
	{
		message_begin(MSG_PVS, SVC_TEMPENTITY, origin)
		write_byte(TE_SMOKE)
		write_coord(origin[0])
		write_coord(origin[1])
		write_coord(origin[2]-50)
		write_short(smoke_spr)
		write_byte(random_num(15, 20))
		write_byte(random_num(10, 20))
		message_end()
		remove_task(taskid);
		return;
	}

	if(random_num(0, 20) < 3)
	{
		emit_sound(ID_BURN, CHAN_VOICE, burn_player[random_num(0, 2)], 1.0, ATTN_NORM, 0, PITCH_NORM)

		if((flags & FL_ONGROUND) > 0.0)
		{
			static Float:velocity[3];
			pev(ID_BURN, pev_velocity, velocity);
			xs_vec_mul_scalar(velocity, 0.5, velocity);
			set_pev(ID_BURN, pev_velocity, velocity);
		}
	}
	
	static health
	health = get_user_health(ID_BURN)
	if(health - 1 > 0)
		set_user_health(ID_BURN, get_user_health(ID_BURN) - 1)
	
	message_begin(MSG_PVS, SVC_TEMPENTITY, origin)
	write_byte(TE_SPRITE)
	write_coord(origin[0]+random_num(-5, 5))
	write_coord(origin[1]+random_num(-5, 5))
	write_coord(origin[2]+random_num(-10, 10))
	write_short(flame_spr)
	write_byte(random_num(5, 10))
	write_byte(200)
	message_end()
	
	g_burning_duration[ID_BURN]--
}

public prethink_player(id)
{
	if(!is_user_alive(id))
		return;
		
	static i, LastThink
	
	if(LastThink > id)
		FirstThink()
	LastThink = id
	
	if(g_frozen[id])
	{
		set_pev(id, pev_velocity, Float:{0.0,0.0,0.0})
		return;
	}
	
	new nbut = get_user_button(id)
	new obut = get_user_oldbutton(id)
	if((nbut & IN_JUMP) && !(get_entity_flags(id) & FL_ONGROUND) && !(obut & IN_JUMP))
	{
		if(jumpnum[id] < 1)
		{
			dojump[id] = true
			jumpnum[id]++
			return
		}
	}
	if((nbut & IN_JUMP) && (get_entity_flags(id) & FL_ONGROUND))
	{
		jumpnum[id] = 0
		return
	}
	
	if(get_user_team(id) == 2 && (g_furiendetector[id] || savior[id]))
	{
		static Target, Body, Weapon;
		
		get_user_aiming(id, Target, Body);
		Weapon = get_user_weapon(id);
			
		if((1<<Weapon) & PRIMARY_WEAPONS_BITSUM || (1<<Weapon) & SECONDARY_WEAPONS_BITSUM) 
		{
			static Target, Body, Weapon;
			
			get_user_aiming(id, Target, Body);
			Weapon = get_user_weapon(id);
			
			if((1<<Weapon) & PRIMARY_WEAPONS_BITSUM || (1<<Weapon) & SECONDARY_WEAPONS_BITSUM) 
			{
				static Origin[3];
				get_user_origin(id, Origin, 3);
				
				message_begin(MSG_BROADCAST, SVC_TEMPENTITY);
				write_byte(TE_BEAMENTPOINT);
				write_short(id | 0x1000);
				write_coord(Origin[0]);
				write_coord(Origin[1]);
				write_coord(Origin[2]);
				write_short(LaserSprite);
				write_byte(0);
				write_byte(10);
				write_byte(1);
				write_byte(5);
				write_byte(0);
				if(is_user_alive(Target) && get_user_team(Target) == 1) 
				{
					write_byte(150);
					write_byte(0);
					write_byte(0);
				}
				else 
				{
					write_byte(0);
					write_byte(150);
					write_byte(0);
				}
				write_byte(250);
				write_byte(25);
				message_end();
			}
		}
	}
	
	if(!has_parachute[id])
		return

	new Float:fallspeed = 100.0 * -1.0
	new Float:frame

	new button = get_user_button(id)
	new oldbutton = get_user_oldbutton(id)
	new flags = get_entity_flags(id)

	if(para_ent[id] > 0 && (flags & FL_ONGROUND)) 
	{
		if(entity_get_int(para_ent[id],EV_INT_sequence) != 2) 
		{
			entity_set_int(para_ent[id], EV_INT_sequence, 2)
			entity_set_int(para_ent[id], EV_INT_gaitsequence, 1)
			entity_set_float(para_ent[id], EV_FL_frame, 0.0)
			entity_set_float(para_ent[id], EV_FL_fuser1, 0.0)
			entity_set_float(para_ent[id], EV_FL_animtime, 0.0)
			entity_set_float(para_ent[id], EV_FL_framerate, 0.0)
			return
		}

		frame = entity_get_float(para_ent[id],EV_FL_fuser1) + 2.0
		entity_set_float(para_ent[id],EV_FL_fuser1,frame)
		entity_set_float(para_ent[id],EV_FL_frame,frame)

		if(frame > 254.0) 
		{
			remove_entity(para_ent[id])
			para_ent[id] = 0
		}
	}

	if(button & IN_USE) 
	{
		new Float:velocity[3]
		entity_get_vector(id, EV_VEC_velocity, velocity)

		if(velocity[2] < 0.0) {

			if(para_ent[id] <= 0) {
				para_ent[id] = create_entity("info_target")
				if(para_ent[id] > 0) {
					entity_set_string(para_ent[id],EV_SZ_classname,"parachute")
					entity_set_edict(para_ent[id], EV_ENT_aiment, id)
					entity_set_edict(para_ent[id], EV_ENT_owner, id)
					entity_set_int(para_ent[id], EV_INT_movetype, MOVETYPE_FOLLOW)
					entity_set_model(para_ent[id], "models/parachute.mdl")
					entity_set_int(para_ent[id], EV_INT_sequence, 0)
					entity_set_int(para_ent[id], EV_INT_gaitsequence, 1)
					entity_set_float(para_ent[id], EV_FL_frame, 0.0)
					entity_set_float(para_ent[id], EV_FL_fuser1, 0.0)
				}
			}

			if(para_ent[id] > 0) {

				entity_set_int(id, EV_INT_sequence, 3)
				entity_set_int(id, EV_INT_gaitsequence, 1)
				entity_set_float(id, EV_FL_frame, 1.0)
				entity_set_float(id, EV_FL_framerate, 1.0)

				velocity[2] = (velocity[2] + 40.0 < fallspeed) ? velocity[2] + 40.0 : fallspeed
				entity_set_vector(id, EV_VEC_velocity, velocity)

				if(entity_get_int(para_ent[id],EV_INT_sequence) == 0) {

					frame = entity_get_float(para_ent[id],EV_FL_fuser1) + 1.0
					entity_set_float(para_ent[id],EV_FL_fuser1,frame)
					entity_set_float(para_ent[id],EV_FL_frame,frame)

					if(frame > 100.0) {
						entity_set_float(para_ent[id], EV_FL_animtime, 0.0)
						entity_set_float(para_ent[id], EV_FL_framerate, 0.4)
						entity_set_int(para_ent[id], EV_INT_sequence, 1)
						entity_set_int(para_ent[id], EV_INT_gaitsequence, 1)
						entity_set_float(para_ent[id], EV_FL_frame, 0.0)
						entity_set_float(para_ent[id], EV_FL_fuser1, 0.0)
					}
				}
			}
		}
		else if(para_ent[id] > 0) 
		{
			remove_entity(para_ent[id])
			para_ent[id] = 0
		}
	}
	else if((oldbutton & IN_USE) && para_ent[id] > 0) 
	{
		remove_entity(para_ent[id])
		para_ent[id] = 0
	}
	
	if(g_endround)
	{
		set_pev(id, pev_velocity, Float:{18.0, 18.0, 16.0})
		return;
	}
	
	if(!plrSolid[id]) return
	
	for(i = 1; i <= g_iMaxPlayers; i++)
	{
		if(!plrSolid[i] || id == i) continue
		
		if(plrTeam[i] == plrTeam[id])
		{
			set_pev(i, pev_solid, SOLID_NOT)
			plrRestore[i] = true
		}
	}
}

public set_gamename()
{
	forward_return(FMV_STRING, modname)
	return FMRES_SUPERCEDE;
}

public Fix()
{
	static i, fpf;
	if(!fpf)
		fpf = g_iMaxPlayers;
	
	for(i = 1; i <= fpf; i++)
	{
		if(IsPlayer(i))
			Data(i);
	}
}

public Calcu()
{
	static Iterator, ping, fpf;
	if(!fpf)
		fpf = g_iMaxPlayers;
	for(Iterator = 1; Iterator <= fpf; Iterator++) 
	{ 
		ping = random_num(10, 35);
		for(g_Offset[Iterator][0] = 0; g_Offset[Iterator][0] < 4; g_Offset[Iterator][0]++)
		{
			if((ping - g_Offset[Iterator][0]) % 4 == 0)
			{
				g_Argping[Iterator][0] = (ping - g_Offset[Iterator][0]) / 4;
				break;
			}
		}
		for(g_Offset[Iterator][1] = 0; g_Offset[Iterator][1] < 2; g_Offset[Iterator][1]++)
		{
			if((ping - g_Offset[Iterator][1]) % 2 == 0)
			{
				g_Argping[Iterator][1] = (ping - g_Offset[Iterator][1]) / 2;
				break;
			}
		}
		g_Argping[Iterator][2] = ping;
	}
}

public Data(i)
{
	static j, send, fpf;
	if(!(pev(i,pev_button)&IN_SCORE)&&!(pev(i,pev_oldbuttons)&IN_SCORE)) 
		return;
	if(!fpf)
		fpf=g_iMaxPlayers;
	
	send = 0;
	for(j = 1; j <= fpf; j++) 
	{
		if(!IsPlayer(j))
			continue;
		switch(send)
		{
			case 0:
			{
				message_begin(MSG_ONE_UNRELIABLE, SVC_PINGS, _, i);
				write_byte((g_Offset[j][0]*64)+(1+2*(j-1)));
				write_short(g_Argping[j][0]);
				send ++;
			}
			case 1:
			{
				write_byte((g_Offset[j][1]*128)+(2+4*(j-1)));
				write_short(g_Argping[j][1]);
				send ++;
			}
			case 2:
			{
				write_byte((4+8*(j-1)));
				write_short(g_Argping[j][2]);
				write_byte(0);
				message_end();
				send = 0;
			}
		}
	}
	if(send)
	{
		write_byte(0);
		message_end();
	}
}

public eventMoney(plr)
{
	make_HideWeapon(plr, HIDE_MONEY);
	if(!active_huds)
	{
		set_pdata_int(plr, m_iClientHideHUD, 0)
		set_pdata_int(plr, m_iHideHUD, HIDE_HEALTH)
	}
	return PLUGIN_HANDLED;
}

public bomb_planted(id)
{
	if(is_user_alive(id))
	{
		color(0, ".v%s.e %s.g a primit.e 5$.g ca a plantat bomba cu plasma.", TAG, get_name(id))
		g_money[id] += 5
	}
}

public bomb_defused(id)
{
	if(is_user_alive(id))
	{
		color(0, ".v%s.e %s.g a primit.e 5$.g ca a dezamorsat bomba cu plasma.", TAG, get_name(id))
		g_money[id] += 5
	}
}

public ham_touch(toucher, touched)
{
	if(entity_get_int(toucher, EV_INT_movetype) != MOVETYPE_BOUNCEMISSILE)
		return HAM_IGNORED
	
	new Float:origin[3]
	new impacts = entity_get_int(toucher, EV_INT_iuser2)
	new owner = entity_get_edict(toucher, EV_ENT_owner)
	entity_get_vector(toucher, EV_VEC_origin, origin)
	
	if(1 <= touched <= g_iMaxPlayers)
	{
		new CsTeams:team[2]
		team[0] = cs_get_user_team(touched)
		team[1] = cs_get_user_team(owner)
		
		if((team[0] != team[1] && team[0] != CS_TEAM_SPECTATOR && team[0] != CS_TEAM_UNASSIGNED))
		{
			new Float:origin[3]
			entity_get_vector(touched, EV_VEC_origin, origin)
			blood(origin)
			set_pdata_int(touched, OFFSET_LAST_HIT_GROUP, HIT_HEAD, 5)
			ExecuteHamB(Ham_TakeDamage, touched, toucher, owner, 135.0, DMG_CS_BULLETS_KNIFE)
			entity_set_edict(toucher, EV_ENT_euser2, 0)
			entity_set_edict(toucher, EV_ENT_euser3, touched)
			
			new color[3] 
			color[0] = 165
			color[1] = 45
			color[2] = 45
			
			create_blast(origin, color)
		}
	}
	
	if(touched > g_iMaxPlayers || touched == 0)
		msg_ricochet(origin)
	
	impacts++
	
	entity_set_int(toucher, EV_INT_iuser2, impacts)
	
	if(impacts >= 1)
	{
		clear_beamfollow(toucher)
		entity_set_int(toucher, EV_INT_flags, FL_KILLME)
		metal_gibs(origin)
	}
	
	return HAM_IGNORED
}

clear_beamfollow(ent)
{
	message_begin(MSG_ALL,SVC_TEMPENTITY)
	write_byte(TE_KILLBEAM)
	write_short(ent)
	message_end()
}

msg_ricochet(Float:origin[3])
{
	engfunc(EngFunc_MessageBegin, MSG_PVS, SVC_TEMPENTITY, origin, 0)
	write_byte(TE_ARMOR_RICOCHET)
	engfunc(EngFunc_WriteCoord, origin[0])
	engfunc(EngFunc_WriteCoord, origin[1])
	engfunc(EngFunc_WriteCoord, origin[2])
	write_byte(5)
	message_end()
}

metal_gibs(const Float: origin[3])
{
	engfunc(EngFunc_MessageBegin, MSG_PVS, SVC_TEMPENTITY, origin, 0)
	write_byte(TE_BREAKMODEL)
	engfunc(EngFunc_WriteCoord,origin[0])
	engfunc(EngFunc_WriteCoord,origin[1])
	engfunc(EngFunc_WriteCoord,origin[2] + 24)
	engfunc(EngFunc_WriteCoord,20.0)
	engfunc(EngFunc_WriteCoord,20.0)
	engfunc(EngFunc_WriteCoord,20.0)
	engfunc(EngFunc_WriteCoord,random_num(-50,50))
	engfunc(EngFunc_WriteCoord,random_num(-50,50))
	engfunc(EngFunc_WriteCoord,25.0)
	write_byte(10)
	write_short(spr_nadebits)
	write_byte(10)
	write_byte(25)
	write_byte(2)
	message_end()
}


create_blast(Float:originF[3], rgb[3])
{
	new origin[3]
	FVecIVec(originF,origin)

	message_begin(MSG_BROADCAST,SVC_TEMPENTITY)
	write_byte(TE_BEAMCYLINDER)
	write_coord(origin[0])
	write_coord(origin[1])
	write_coord(origin[2])
	write_coord(origin[0])
	write_coord(origin[1])
	write_coord(origin[2] + 50)
	write_short(beam_effect)
	write_byte(0)
	write_byte(0)
	write_byte(4)
	write_byte(60)
	write_byte(0)
	write_byte(rgb[0])
	write_byte(rgb[1])
	write_byte(rgb[2])
	write_byte(100)
	write_byte(0)
	message_end()
}

public message_show_menu(msgid, dest, id) 
{
	if(!should_autojoin(id))
		return PLUGIN_CONTINUE

	static team_select[] = "#Team_Select"
	static menu_text_code[sizeof team_select]
	get_msg_arg_string(4, menu_text_code, sizeof menu_text_code - 1)
	if(!equal(menu_text_code, team_select))
		return PLUGIN_CONTINUE

	set_force_team_join_task(id, msgid)
	return PLUGIN_HANDLED
}

public message_vgui_menu(msgid, dest, id) 
{
	if(get_msg_arg_int(1) != 2 || !should_autojoin(id))
		return PLUGIN_CONTINUE

	set_force_team_join_task(id, msgid)

	return PLUGIN_HANDLED
}

bool:should_autojoin(id)
	return (!get_user_team(id) && !task_exists(id))
	
set_force_team_join_task(id, menu_msgid) 
{
	static param_menu_msgid[2]
	param_menu_msgid[0] = menu_msgid
	set_task(0.1, "task_force_team_join", id, param_menu_msgid, sizeof param_menu_msgid)
}

public task_force_team_join(menu_msgid[], id) 
{
	if(get_user_team(id))
		return

	force_team_join(id, menu_msgid[0])
}

stock force_team_join(id, menu_msgid) 
{
	static jointeam[] = "jointeam"
	static msg_block, joinclass[] = "joinclass"
	msg_block = get_msg_block(menu_msgid)
	set_msg_block(menu_msgid, BLOCK_SET)
	engclient_cmd(id, jointeam, "5")
	engclient_cmd(id, joinclass, "5")
	set_msg_block(menu_msgid, msg_block)
}

public prethink_player_post(id)
{
	if(!is_user_alive(id))
		return PLUGIN_CONTINUE
		
	static i
	for(i = 1; i <= g_iMaxPlayers; i++)
	{
		if(plrRestore[i])
		{
			set_pev(i, pev_solid, SOLID_SLIDEBOX)
			plrRestore[i] = false
		}
	}
	
	if(dojump[id] == true)
	{
		new Float:velocity[3]	
		entity_get_vector(id,EV_VEC_velocity,velocity)
		velocity[2] = random_float(265.0,285.0)
		entity_set_vector(id,EV_VEC_velocity,velocity)
		dojump[id] = false
		return PLUGIN_CONTINUE
	}
	return PLUGIN_CONTINUE
}

public msgStatusIcon(msgid, msgdest, id)
{
	static szIcon[8];
	get_msg_arg_string(2, szIcon, 7);

	if(equal(szIcon, "buyzone") && get_msg_arg_int(1))
	{
		set_pdata_int(id, 235, get_pdata_int(id, 235) & ~(1<<0));
		return PLUGIN_HANDLED;
	}
	return PLUGIN_CONTINUE;
}

public ChangeName(id, buffer)
{
	if(!is_user_connected(id))
		return FMRES_IGNORED;

	static Name[32], Val[32];
	get_user_name(id, Name, sizeof Name - 1);
	engfunc(EngFunc_InfoKeyValue, buffer, "name", Val, sizeof Val - 1);
	
	if(equal(Val, Name))
		return FMRES_IGNORED;

	remove_task(id+TASK_MINUTES)
	remove_task(id+TASK_SHOWHUD)
	set_task(0.2, "client_putinserver", id)
	verify_name(id)
	return FMRES_SUPERCEDE;
}

public hook_say(id)
{
	if(!is_user_connected(id))
		return PLUGIN_HANDLED;

	static chat[192], users_team, name[32]
	read_argv(1, chat, charsmax(chat))
	get_user_name(id, name, charsmax(name) - 1)
	users_team = fm_cs_get_user_team(id)
		
	/*
	if(chat[0] == '#')
	{
		static comanda[16], nume[32];
		strbreak(chat, comanda, charsmax(comanda), nume, charsmax(nume))
		if(contain(chat, "cc"))
			execute_clearchat(id)
		else if(contain(chat, "kick"))
		{
			static nume[32], nume2[32], motiv[32];
			strbreak(chat, nume, charsmax(nume), nume2, charsmax(nume2), motiv, charsmax(motiv))
			change_name(id, nume, nume2, motiv)
		}
		else if(contain(chat, "slay"))
		{
			static nume[32], motiv[32];
			strbreak(chat, nume, charsmax(nume), motiv, charsmax(motiv))
			slay_user(id, nume, motiv)
		}
		else if(contain(chat, "slap"))
		{
			static nume[32], damage[5];
			strbreak(chat, nume, charsmax(nume), damage, charsmax(damage))
			slap_user(id, nume, damage)
		}
		else if(contain(chat, "banip"))
		{
			static nume[32], durata[6], motiv[32];
			strbreak(chat, nume, charsmax(nume), durata, charsmax(durata), motiv, charsmax(motiv))
			banip_player(id, nume, durata, motiv)
		}
		else if(contain(chat, "votemap"))
		{
			static harta[32], harta1[20], harta2[20];
			strbreak(chat, harta, charsmax(harta), harta1, charsmax(harta1), harta2, charsmax(harta2))
			votemap(id, harta, harta1, harta2)
		}
		else if(contain(chat, "map"))
		{
			static harta[20], motiv[32];
			strbreak(chat, harta, charsmax(harta), motiv, charsmax(motiv))
			set_map(id, harta, motiv)
		}
		else if(contain(chat, "say"))
		{
			static mesaj[100];
			strbreak(chat, mesaj, charsmax(mesaj))
			admin_message(id, mesaj)
		}
		else if(contain(chat, "gag"))
		{
			static nume[32], durata[3], motiv[32];
			strbreak(chat, nume, charsmax(nume), durata, charsmax(durata), motiv, charsmax(motiv))
			gag_user(id, nume, durata, motiv)
		}
		else if(contain(chat, "ungag"))
		{
			static nume[32], motiv[32];
			strbreak(chat, nume, charsmax(nume), motiv, charsmax(motiv))
			ungag_user(id, nume, motiv)
		}
		else if(contain(chat, "cvar"))
		{
			static comanda[32], valoare[32];
			strbreak(chat, comanda, charsmax(comanda), valoare, charsmax(valoare))
			cvar_talent(id, comanda, valoare)
		}
		else if(contain(chat, "addban"))
		{
			static ip[32], motiv[32], durata[5];
			strbreak(chat, ip, charsmax(ip), durata, charsmax(durata), motiv, charsmax(motiv))
			addban_client(id, ip, durata, motiv)
		}
		else if(contain(chat, "ss"))
		{
			static name[32], motiv[32];
			strbreak(chat, name, charsmax(name), motiv, charsmax(motiv))
			screenshot_client(id, name, motiv)
		}
		else if(contain(chat, "blind"))
		{
			static name[32], motiv[32];
			strbreak(chat, name, charsmax(name), motiv, charsmax(motiv))
			blind_client(id, name, motiv)
		}
		else if(contain(chat, "unblind))
		{
			static name[32];
			strbreak(chat, name, charsmax(name))
			unblind_client(id, name)
		}
	}
	*/
	
	static comanda[16], nume[32]

	strbreak(chat, comanda, charsmax(comanda), nume, charsmax(nume))
	if(equal(comanda, "/donate", 7))
		donate(id, nume)
	if(is_user_alive(id))
	{
		if(get_user_team(id) == 1)
		{
			if((get_user_flags(id) & VIP_FLAG) && (get_user_flags(id) & ADMIN_SLAY))
				color_chat(0, id, users_team, RED,  "^3[LVL:^4 %d^3] [^4VIP+ADMIN^3] %s:^4 %s", nivel[id], name, chat)
			else if((get_user_flags(id) & ADMIN_SLAY) && !(get_user_flags(id) & VIP_FLAG))
				color_chat(0, id, users_team, RED,  "^3[LVL:^4 %d^3] [^4ADMIN^3] %s:^4 %s", nivel[id], name, chat)
			else if(!(get_user_flags(id) & ADMIN_SLAY) && (get_user_flags(id) & VIP_FLAG))
				color_chat(0, id, users_team, RED,  "^3[LVL:^4 %d^3] [^4VIP^3] %s:^4 %s", nivel[id], name, chat)
			else
				color_chat(0, id, users_team, RED,  "^3[LVL:^4 %d^3] %s:^1 %s", nivel[id], name, chat)	
		}
		else if(get_user_team(id) == 2)
		{
			if((get_user_flags(id) & VIP_FLAG) && (get_user_flags(id) & ADMIN_SLAY))
				color_chat(0, id, users_team, BLUE,  "^3[LVL:^4 %d^3] [^4VIP+ADMIN^3] %s:^4 %s", nivel[id], name, chat)
			else if((get_user_flags(id) & ADMIN_SLAY) && !(get_user_flags(id) & VIP_FLAG))
				color_chat(0, id, users_team, BLUE,  "^3[LVL:^4 %d^3] [^4ADMIN^3] %s:^4 %s", nivel[id], name, chat)
			else if(!(get_user_flags(id) & ADMIN_SLAY) && (get_user_flags(id) & VIP_FLAG))
				color_chat(0, id, users_team, BLUE,  "^3[LVL:^4 %d^3] [^4VIP^3] %s:^4 %s", nivel[id], name, chat)
			else
				color_chat(0, id, users_team, BLUE,  "^3[LVL:^4 %d^3] %s:^1 %s", nivel[id], name, chat)	
		}
	}
	else
	{
		if(users_team == FM_CS_TEAM_SPECTATOR)
		{
			if((get_user_flags(id) & VIP_FLAG) && (get_user_flags(id) & ADMIN_SLAY))
				color_chat(0, id, users_team, GREY,  "^3[LVL:^4 %d^3] [^4VIP+ADMIN^3] %s:^4 %s", nivel[id], name, chat)
			else if((get_user_flags(id) & ADMIN_SLAY) && !(get_user_flags(id) & VIP_FLAG))
				color_chat(0, id, users_team, GREY,  "^3[LVL:^4 %d^3] [^4ADMIN^3] %s:^4 %s", nivel[id], name, chat)
			else if(!(get_user_flags(id) & ADMIN_SLAY) && (get_user_flags(id) & VIP_FLAG))
				color_chat(0, id, users_team, GREY,  "^3[LVL:^4 %d^3] [^4VIP^3] %s:^4 %s", nivel[id], name, chat)
			else
				color_chat(0, id, users_team, GREY,  "^3[LVL:^4 %d^3] %s:^1 %s", nivel[id], name, chat)	
		}
		else if(get_user_team(id) == 1)
		{
			if((get_user_flags(id) & VIP_FLAG) && (get_user_flags(id) & ADMIN_SLAY))
				color_chat(0, id, users_team, RED,  "^3[LVL:^4 %d^3] [^4VIP+ADMIN^3] *%s:^4 %s", nivel[id], name, chat)
			else if((get_user_flags(id) & ADMIN_SLAY) && !(get_user_flags(id) & VIP_FLAG))
				color_chat(0, id, users_team, RED,  "^3[LVL:^4 %d^3] [^4ADMIN^3] *%s:^4 %s", nivel[id], name, chat)
			else if(!(get_user_flags(id) & ADMIN_SLAY) && (get_user_flags(id) & VIP_FLAG))
				color_chat(0, id, users_team, RED,  "^3[LVL:^4 %d^3] [^4VIP^3] *%s:^4 %s", nivel[id], name, chat)
			else
				color_chat(0, id, users_team, RED,  "^3[LVL:^4 %d^3] %s:^1 *%s", nivel[id], name, chat)	
		}
		else if(get_user_team(id) == 2)
		{
			if((get_user_flags(id) & VIP_FLAG) && (get_user_flags(id) & ADMIN_SLAY))
				color_chat(0, id, users_team, BLUE,  "^3[LVL:^4 %d^3] [^4VIP+ADMIN^3] *%s:^4 %s", nivel[id], name, chat)
			else if((get_user_flags(id) & ADMIN_SLAY) && !(get_user_flags(id) & VIP_FLAG))
				color_chat(0, id, users_team, BLUE,  "^3[LVL:^4 %d^3] [^4ADMIN^3] *%s:^4 %s", nivel[id], name, chat)
			else if(!(get_user_flags(id) & ADMIN_SLAY) && (get_user_flags(id) & VIP_FLAG))
				color_chat(0, id, users_team, BLUE,  "^3[LVL:^4 %d^3] [^4VIP^3] *%s:^4 %s", nivel[id], name, chat)
			else
				color_chat(0, id, users_team, BLUE,  "^3[LVL:^4 %d^3] %s:^1 *%s", nivel[id], name, chat)	
		}		
	}
	return PLUGIN_HANDLED
}

public messageHideWeapon(msgid, dest, plr)
{
	set_msg_arg_int(1, ARG_BYTE, get_msg_arg_int(1)|HIDE_MONEY)
	return PLUGIN_CONTINUE;
}

public Event_HideWeapon(id)
{
	if(!active_huds)
	{
        message_begin(MSG_ONE_UNRELIABLE, g_msgHideWeapon, _, id)
        write_byte(HIDE_HEALTH)
        message_end()
        message_begin(MSG_ONE_UNRELIABLE, g_msgCrosshair, _, id)
        write_byte(0);
        message_end();
	}
}

public increase_level(taskid)
{
	if(get_user_team(ID_MINUTE) == 3)
		return;
	
	minutes[ID_MINUTE]++
	if(minutes[ID_MINUTE] >= 5)
	{
		minutes[ID_MINUTE] = 0
		complete_hours[ID_MINUTE]++
		if(complete_hours[ID_MINUTE] >= LEVELS[nivel[ID_MINUTE]])
		{
			color(ID_MINUTE, ".v%s.g Ai avansat un nivel! Nivelul tau acum este.e %d.g.", TAG, nivel[ID_MINUTE])
			nivel[ID_MINUTE]++
		}
	}
	SaveData(ID_MINUTE)
	checkandupdatetop(ID_MINUTE, nivel[ID_MINUTE], complete_hours[ID_MINUTE], minutes[ID_MINUTE])
}

public addToFullPack(es, e, ent, host, hostflags, player, pSet)
{
	if(player)
	{
		if(plrSolid[host] && plrSolid[ent] && plrTeam[host] == plrTeam[ent])
			set_es(es, ES_Solid, SOLID_NOT)
	}
}

FirstThink()
{
	for(new i = 1; i <= g_iMaxPlayers; i++)
	{
		if(!is_user_alive(i))
		{
			plrSolid[i] = false
			continue
		}
		plrTeam[i] = get_user_team(i)
		plrSolid[i] = pev(i, pev_solid) == SOLID_SLIDEBOX ? true : false
	}
}

public LoadData(id) 
{ 
	new vaultkey[64], vaultdata[256];
	format(vaultkey, 63, "%s", get_name(id))
	format(vaultdata, 255, "^"%i^" ^"%i^" ^"%i^"", nivel[id], complete_hours[id], minutes[id])
	nvault_get(salvare_nvault, vaultkey, vaultdata, 255)
	new lvl[32], ore[32], minute[32];
	parse(vaultdata, lvl, 31, ore, 31, minute, 31)
	nivel[id] = str_to_num(lvl)
	complete_hours[id] = str_to_num(ore)
	minutes[id] = str_to_num(minute)
	if(nivel[id] == 0)
		nivel[id] = 1
		
	color(id, "Am preluat salvarile.")
}

public SaveData(id) 
{
	new vaultkey[64], vaultdata[256];
	format(vaultkey, 63, "%s", get_name(id))
	format(vaultdata, 255, "^"%i^" ^"%i^" ^"%i^"", nivel[id], complete_hours[id], minutes[id])
	nvault_set(salvare_nvault, vaultkey, vaultdata)
}

public client_putinserver(id)
{
	g_cmdguns[id] = false
	g_gunsselect[id] = 0
	g_primary_select[id] = 0
	g_secondary_select[id] = 0
	reset_vars(id)
	g_money[id] = get_pcvar_num(mp_startmoney)
	set_task(60.0, "increase_level", id+TASK_MINUTES, _, _, "b")
	set_task(0.3, "HealthHud", id+TASK_SHOWHUD, _, _, "b")
	LoadData(id)
}

public client_disconnect(id)
{
	if(g_pet[id])
		kill_pet(id)
	reset_vars(id)
	g_frozen[id] = false
	g_burning_duration[id] = 0
	g_cmdguns[id] = false
	g_gunsselect[id] = 0
	g_primary_select[id] = 0
	g_secondary_select[id] = 0
	parachute_reset(id)
	have_killnade[id] = false
	jumpnum[id] = 0
	dojump[id] = false
	g_furiendetector[id] = false
	g_noflash[id] = false
	g_superknife[id] = false
	g_nofrost[id] = false
	g_end_health[id] = 0
	remove_task(id+TASK_MINUTES);
	remove_task(id+TASK_MODELCHANGE);
	remove_task(id+TASK_AFFECT);
	flag_unset(g_HasCustomModel, id)
	remove_task(id+TASK_SHOWHUD)
	remove_task(id+TASK_AURA)
	if(destroyer[id])
	{
		ham_strip_weapon(id, "weapon_c4")
		destroyer[id] = false
		select_destroyer()
	}
	if(savior[id])
	{
		//strip_user_weapons(id)
		savior[id] = false
		select_savior()
	}
}

public player_killed_post(id)
	set_pev(id, pev_iuser1, SPECMODE_ALIVE)

public freeze_effect(id)
{
	if(!is_user_alive(id) || !g_frozen[id])
	{
		remove_task(id)
		return;
	}
	new Float:fOrigin[3], iOrigin[3]
	pev(id, pev_origin, fOrigin)
	FVecIVec(fOrigin, iOrigin)
	UTIL_CreateFlares(iOrigin, frostgib, 5, 5, 2)
}

verify_name(id)
{
	static name[32]
	get_user_info(id, "name", name, 31)
	
	static i, ignore
	ignore = false
	
	for(i = 0; i <= g_sizeof_names_new; i++)
		if(containi(name, g_names_new[i]) != -1)
		{
			ignore = true
			break;
		}
	
	if(ignore)
		return;
	
	for(i = 0; i < 29; i++)
		replace_all(name, 31, g_filter_chars[i], "")
	
	for(i = 0; i < g_sizeof_names; i++)
		if(containi(name, g_names[i]) != -1)
		{
			formatex(name, 31, "%s [%d]", g_names_new[random_num(0, g_sizeof_names_new)], g_names_changed)
			set_user_info(id, "name", name)
			client_cmd(id, "name ^"%s^"", name)
			g_names_changed++
		}
}

public remove_freeze(id)
{
	if(!is_user_alive(id) || !g_frozen[id])
		return;
	
	g_frozen[id] = false;
	if(get_user_team(id) == 2)
		set_pev(id, pev_gravity, 1.0)

	reset_max_speed(id)
	fm_set_rendering(id, kRenderFxGlowShell, 0, 200, 50, kRenderNormal, 18)
	message_begin(MSG_ONE_UNRELIABLE, g_msgScreenFade, _, id)
	write_short(UNIT_SECOND)
	write_short(0)
	write_short(FFADE_IN)
	write_byte(10)
	write_byte(20)
	write_byte(200)
	write_byte(100)
	message_end()
	emit_sound(id, CHAN_BODY, misc_sound_wav[1], 1.0, ATTN_NORM, 0, PITCH_NORM)
	static origin2[3]
	get_user_origin(id, origin2)
	message_begin(MSG_PVS, SVC_TEMPENTITY, origin2)
	write_byte(TE_BREAKMODEL)
	write_coord(origin2[0])
	write_coord(origin2[1])
	write_coord(origin2[2]+24)
	write_coord(16)
	write_coord(16)
	write_coord(16) 
	write_coord(random_num(-50, 50))
	write_coord(random_num(-50, 50))
	write_coord(25)
	write_byte(10)
	write_short(mdl_glass)
	write_byte(10)
	write_byte(25)
	write_byte(BREAK_GLASS)
	message_end()
	ExecuteHamB(Ham_Player_ResetMaxSpeed, id)
}

create_blast2(const Float:originF[3])
{
	engfunc(EngFunc_MessageBegin, MSG_PVS, SVC_TEMPENTITY, originF, 0)
	write_byte(TE_BEAMCYLINDER)
	engfunc(EngFunc_WriteCoord, originF[0])
	engfunc(EngFunc_WriteCoord, originF[1])
	engfunc(EngFunc_WriteCoord, originF[2])
	engfunc(EngFunc_WriteCoord, originF[0])
	engfunc(EngFunc_WriteCoord, originF[1])
	engfunc(EngFunc_WriteCoord, originF[2]+470.0)
	write_short(beam_effect)
	write_byte(0)
	write_byte(0)
	write_byte(4)
	write_byte(60)
	write_byte(0)
	write_byte(255)
	write_byte(127)
	write_byte(80)
	write_byte(200)
	write_byte(0)
	message_end()
	
	engfunc(EngFunc_MessageBegin, MSG_PVS, SVC_TEMPENTITY, originF, 0)
	write_byte(TE_BEAMCYLINDER)
	engfunc(EngFunc_WriteCoord, originF[0])
	engfunc(EngFunc_WriteCoord, originF[1])
	engfunc(EngFunc_WriteCoord, originF[2])
	engfunc(EngFunc_WriteCoord, originF[0])
	engfunc(EngFunc_WriteCoord, originF[1])
	engfunc(EngFunc_WriteCoord, originF[2]+555.0)
	write_short(beam_effect)
	write_byte(0)
	write_byte(0)
	write_byte(4)
	write_byte(60)
	write_byte(0)
	write_byte(255)
	write_byte(20)
	write_byte(10)
	write_byte(200)
	write_byte(0)
	message_end()
	
	engfunc(EngFunc_MessageBegin, MSG_PVS, SVC_TEMPENTITY, originF, 0)
	write_byte(TE_DLIGHT)
	engfunc(EngFunc_WriteCoord, originF[0])
	engfunc(EngFunc_WriteCoord, originF[1])
	engfunc(EngFunc_WriteCoord, originF[2])
	write_byte(50)
	write_byte(255)
	write_byte(20)
	write_byte(10)
	write_byte(30)
	write_byte(30)
	message_end()

	engfunc(EngFunc_MessageBegin, MSG_BROADCAST,SVC_TEMPENTITY, originF, 0)
	write_byte(TE_EXPLOSION)
	engfunc(EngFunc_WriteCoord, originF[0])
	engfunc(EngFunc_WriteCoord, originF[1])
	engfunc(EngFunc_WriteCoord, originF[2]+75)
	write_short(fireexp)
	write_byte(17)
	write_byte(15)
	write_byte(TE_EXPLFLAG_NOSOUND)
	message_end();	
	
	engfunc(EngFunc_MessageBegin, MSG_BROADCAST,SVC_TEMPENTITY, originF, 0)
	write_byte(TE_SPRITETRAIL)
	engfunc(EngFunc_WriteCoord, originF[0])
	engfunc(EngFunc_WriteCoord, originF[1])
	engfunc(EngFunc_WriteCoord, originF[2] + 40)
	engfunc(EngFunc_WriteCoord, originF[0])
	engfunc(EngFunc_WriteCoord, originF[1])
	engfunc(EngFunc_WriteCoord, originF[2])
	write_short(firegib)
	write_byte(30)
	write_byte(10)
	write_byte(2)
	write_byte(50)
	write_byte(10)
	message_end();
}

create_blast3(const Float:originF[3])
{
	engfunc(EngFunc_MessageBegin, MSG_PVS, SVC_TEMPENTITY, originF, 0)
	write_byte(TE_BEAMCYLINDER)
	engfunc(EngFunc_WriteCoord, originF[0])
	engfunc(EngFunc_WriteCoord, originF[1])
	engfunc(EngFunc_WriteCoord, originF[2])
	engfunc(EngFunc_WriteCoord, originF[0])
	engfunc(EngFunc_WriteCoord, originF[1])
	engfunc(EngFunc_WriteCoord, originF[2]+470.0)
	write_short(beam_effect)
	write_byte(0)
	write_byte(0)
	write_byte(4)
	write_byte(60)
	write_byte(0)
	write_byte(0)
	write_byte(191)
	write_byte(255)
	write_byte(200)
	write_byte(0)
	message_end()
	
	engfunc(EngFunc_MessageBegin, MSG_PVS, SVC_TEMPENTITY, originF, 0)
	write_byte(TE_BEAMCYLINDER)
	engfunc(EngFunc_WriteCoord, originF[0])
	engfunc(EngFunc_WriteCoord, originF[1])
	engfunc(EngFunc_WriteCoord, originF[2])
	engfunc(EngFunc_WriteCoord, originF[0])
	engfunc(EngFunc_WriteCoord, originF[1])
	engfunc(EngFunc_WriteCoord, originF[2]+555.0)
	write_short(beam_effect)
	write_byte(0)
	write_byte(0)
	write_byte(4)
	write_byte(60)
	write_byte(0)
	write_byte(0)
	write_byte(191)
	write_byte(255)
	write_byte(200)
	write_byte(0)
	message_end()

	engfunc(EngFunc_MessageBegin, MSG_PVS, SVC_TEMPENTITY, originF, 0)
	write_byte(TE_DLIGHT)
	engfunc(EngFunc_WriteCoord, originF[0])
	engfunc(EngFunc_WriteCoord, originF[1])
	engfunc(EngFunc_WriteCoord, originF[2])
	write_byte(50)
	write_byte(0)
	write_byte(191)
	write_byte(255)
	write_byte(30)
	write_byte(30)
	message_end()

	engfunc(EngFunc_MessageBegin, MSG_BROADCAST,SVC_TEMPENTITY, originF, 0)
	write_byte(TE_EXPLOSION)
	engfunc(EngFunc_WriteCoord, originF[0])
	engfunc(EngFunc_WriteCoord, originF[1])
	engfunc(EngFunc_WriteCoord, originF[2]+75)
	write_short(frostexp)
	write_byte(17)
	write_byte(15)
	write_byte(TE_EXPLFLAG_NOSOUND)
	message_end();
	
	
	engfunc(EngFunc_MessageBegin, MSG_BROADCAST,SVC_TEMPENTITY, originF, 0)
	write_byte(TE_SPRITETRAIL)
	engfunc(EngFunc_WriteCoord, originF[0])
	engfunc(EngFunc_WriteCoord, originF[1])
	engfunc(EngFunc_WriteCoord, originF[2] + 40)
	engfunc(EngFunc_WriteCoord, originF[0])
	engfunc(EngFunc_WriteCoord, originF[1])
	engfunc(EngFunc_WriteCoord, originF[2])
	write_short(frostgib)
	write_byte(20)
	write_byte(7)
	write_byte(2)
	write_byte(50)
	write_byte(10)
	message_end()
}

public detail_level(id)
{
	if(!is_user_connected(id))
		return
		
	color(id, ".v%s.g Nivelul tau este:.e %d.g | Ai:.e %d/%d.g | Minute:.e %d/5.g.", TAG, nivel[id], complete_hours[id], LEVELS[nivel[id]], minutes[id])
	return;
}

blood(const Float:origin[3])
{
	engfunc(EngFunc_MessageBegin, MSG_PVS, SVC_TEMPENTITY, origin, 0)
	write_byte(TE_BLOODSPRITE)
	engfunc(EngFunc_WriteCoord, origin[0])
	engfunc(EngFunc_WriteCoord, origin[1])
	engfunc(EngFunc_WriteCoord, origin[2] + 30.0)
	write_short(spr_blood_spray)
	write_short(spr_blood_drop)
	write_byte(248)
	write_byte(15)
	message_end()
}

public save_top() 
{
	new path[128];
	formatex(path, 127, "%s/TopLevels.dat", data_save);
	if(file_exists(path)) 
		delete_file(path);
	new Buffer[256];
	new f = fopen(path, "at");
	for(new i = INFO_ZERO; i < NTOP; i++)
	{
		formatex(Buffer, 255, "^"%s^" ^"%d^" ^"%d^" ^"%d^"^n", topnames[i], toplevels[i], tophours[i], topminutes[i])
		fputs(f, Buffer);
	}
	fclose(f);
}

reset_vars(id)
{
	g_ak47[id] = false
	g_m4a1[id] = false
	g_deagle[id] = false
	g_pet[id] = false
	g_used_life[id] = false
	item_pet[id] = 0
}

public FM_Think_hook(ent)
{
	for(new i = 0; i <= g_iMaxPlayers; i++)
	{
		if(ent == item_pet[i])
		{
			static Float:origin[3]
			static Float:origin2[3]
			static Float:velocity[3]
			pev(ent,pev_origin,origin2)
			get_offset_origin_body(i,Float:{50.0,0.0,0.0},origin)
			
			if(get_distance_f(origin,origin2) > 300.0)
			{
				set_pev(ent,pev_origin,origin)
			}
			
			else if(get_distance_f(origin,origin2) > 80.0)
			{
				get_speed_vector(origin2,origin,250.0,velocity)
				set_pev(ent,pev_velocity,velocity)
				if(pev(ent,pev_sequence) != pet_run || pev(ent,pev_framerate) != pet_run_speed)
				{
					set_pev(ent,pev_sequence,pet_run)
					set_pev(ent,pev_gaitsequence,pet_run)
					set_pev(ent,pev_framerate,pet_run_speed)
				}
			}
			
			else if(get_distance_f(origin,origin2) < 75.0)
			{
				if(pev(ent,pev_sequence) != pet_idle || pev(ent,pev_framerate) != pet_idle_speed)
				{
					set_pev(ent,pev_sequence,pet_idle)
					set_pev(ent,pev_gaitsequence,pet_idle)
					set_pev(ent,pev_framerate,pet_idle_speed)
				}
				set_pev(ent,pev_velocity,Float:{0.0,0.0,0.0})
			}
			pev(i,pev_origin,origin)
			origin[2] = origin2[2]
			entity_set_aim(ent,origin)			
			set_pev(ent,pev_nextthink,1.0)
			break
		}
	}
}

public TraceAttack(iEnt, iAttacker, Float:flDamage, Float:fDir[3], pentru, iDamageType)
{
	if(!IsPlayer(iAttacker))
		return

	static iWeapon;
	iWeapon = get_user_weapon(iAttacker);
	
	if((g_ak47[iAttacker] && iWeapon == CSW_AK47) || (g_m4a1[iAttacker] && iWeapon == CSW_M4A1) || (g_deagle[iAttacker] && iWeapon == CSW_DEAGLE))
	{
		static iOrigin[3], Float:flEnd[3]
		get_user_origin(iAttacker, iOrigin, 1)
		get_tr2(pentru, TR_vecEndPos, flEnd)
		message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
		write_byte(TE_TRACER)
		write_coord(iOrigin[0])
		write_coord(iOrigin[1])
		write_coord(iOrigin[2])
		write_coord_f(flEnd[0]) 
		write_coord_f(flEnd[1]) 
		write_coord_f(flEnd[2]) 
		message_end()
	}
}

public is_a_player(ent)
{
	if(ent > 0 && ent < 33)
		return true
	
	return false
}

public remove_pet(ent) 
	if(pev_valid(ent))
		fm_remove_entity(ent)

stock get_offset_origin_body(ent,const Float:offset[3],Float:origin[3])
{
	if(!pev_valid(ent))
		return 0;
	
	new Float:angle[3]
	pev(ent,pev_angles,angle)
	
	pev(ent,pev_origin,origin)
	
	origin[0] += floatcos(angle[1],degrees) * offset[0]
	origin[1] += floatsin(angle[1],degrees) * offset[0]
	
	origin[1] += floatcos(angle[1],degrees) * offset[1]
	origin[0] += floatsin(angle[1],degrees) * offset[1]
	
	return 1;
}

stock get_speed_vector(const Float:origin1[3],const Float:origin2[3],Float:speed, Float:new_velocity[3])
{
	new_velocity[0] = origin2[0] - origin1[0]
	new_velocity[1] = origin2[1] - origin1[1]
	new_velocity[2] = origin2[2] - origin1[2]
	new Float:num = floatsqroot(speed*speed / (new_velocity[0]*new_velocity[0] + new_velocity[1]*new_velocity[1] + new_velocity[2]*new_velocity[2]))
	new_velocity[0] *= num
	new_velocity[1] *= num
	new_velocity[2] *= num
	
	return 1;
}

stock entity_set_aim(ent,const Float:origin2[3],bone=0)
{
	if(!pev_valid(ent))
		return 0;
	
	static Float:origin[3]
	origin[0] = origin2[0]
	origin[1] = origin2[1]
	origin[2] = origin2[2]
	
	static Float:ent_origin[3], Float:angles[3]
	
	if(bone)
		engfunc(EngFunc_GetBonePosition,ent,bone,ent_origin,angles)
	else
		pev(ent,pev_origin,ent_origin)
	
	origin[0] -= ent_origin[0]
	origin[1] -= ent_origin[1]
	origin[2] -= ent_origin[2]
	
	static Float:v_length
	v_length = vector_length(origin)
	
	static Float:aim_vector[3]
	aim_vector[0] = origin[0] / v_length
	aim_vector[1] = origin[1] / v_length
	aim_vector[2] = origin[2] / v_length
	
	static Float:new_angles[3]
	vector_to_angle(aim_vector,new_angles)
	
	new_angles[0] *= -1
	
	if(new_angles[1]>180.0) new_angles[1] -= 360
	if(new_angles[1]<-180.0) new_angles[1] += 360
	if(new_angles[1]==180.0 || new_angles[1]==-180.0) new_angles[1]=-179.999999
	
	set_pev(ent,pev_angles,new_angles)
	set_pev(ent,pev_fixangle,1)
	
	return 1;
}

stock drop_weapons(id, dropwhat)
{
	static weapons[32], num, i, weaponid
	num = 0
	get_user_weapons(id, weapons, num)
	
	for(i = 0; i < num; i++)
	{
		weaponid = weapons[i]
		
		if((dropwhat == 1 && ((1<<weaponid) & PRIMARY_WEAPONS_BIT_SUM)) || (dropwhat == 2 && ((1<<weaponid) & SECONDARY_WEAPONS_BIT_SUM)))
		{
			static wname[32], weapon_ent
			get_weaponname(weaponid, wname, charsmax(wname))
			weapon_ent = fm_find_ent_by_owner(-1, wname, id)
			set_pev(weapon_ent, PEV_ADDITIONAL_AMMO, cs_get_user_bpammo(id, weaponid))
			engclient_cmd(id, "drop", wname)
			cs_set_user_bpammo(id, weaponid, 0)
		}
	}
}

public fwdTouch(toucher, touched)
{
	if (!is_user_alive(toucher) || !pev_valid(touched))
		return FMRES_IGNORED
	
	new classname[32]	
	pev(touched, pev_classname, classname, 31)
	if (!equal(classname, ClassName))
		return FMRES_IGNORED
	
	if(get_user_team(toucher) == pev(touched, pev_team))
	{
		emit_sound(toucher, CHAN_STATIC, get_present, 1.0, ATTN_NORM, 0, PITCH_NORM)
		GiveBonus(toucher)
		set_pev(touched, pev_effects, EF_NODRAW)
		set_pev(touched, pev_solid, SOLID_NOT)
		remove_entity(touched)
	}
	return FMRES_IGNORED
}

public AddBonusBox(id)
{
	if(is_user_connected(id) && cs_get_user_team(id) != CS_TEAM_SPECTATOR)
	{
		new ent = fm_create_entity("info_target")
		new origin[3]
		get_user_origin(id, origin, 0)
		set_pev(ent,pev_classname, ClassName)
		switch(cs_get_user_team(id))
		{
			case CS_TEAM_T:
			{
				engfunc(EngFunc_SetModel, ent, mdl_box)
				set_pev(ent,pev_team, 2)
				entity_set_int(ent,EV_INT_iuser1,0) 
				entity_set_int(ent,EV_INT_iuser2,0) 
				entity_set_int(ent,EV_INT_iuser3,200) 
				set_rendering(ent,kRenderFxGlowShell,entity_get_int(ent,EV_INT_iuser1),entity_get_int(ent,EV_INT_iuser2),entity_get_int(ent,EV_INT_iuser3),kRenderNormal,120)
			}
			case CS_TEAM_CT:
			{
				engfunc(EngFunc_SetModel, ent, mdl_box)	
				set_pev(ent,pev_team, 1)
				entity_set_int(ent,EV_INT_iuser1,200) 
				entity_set_int(ent,EV_INT_iuser2,0) 
				entity_set_int(ent,EV_INT_iuser3,0) 
				set_rendering(ent,kRenderFxGlowShell,entity_get_int(ent,EV_INT_iuser1),entity_get_int(ent,EV_INT_iuser2),entity_get_int(ent,EV_INT_iuser3),kRenderNormal,120)
			}
		}
		set_pev(ent, pev_mins, Float:{-10.0,-10.0,0.0})
		set_pev(ent, pev_maxs, Float:{10.0,10.0,25.0})
		set_pev(ent, pev_size, Float:{-10.0,-10.0,0.0,10.0,10.0,25.0})
		engfunc(EngFunc_SetSize, ent, Float:{-10.0,-10.0,0.0}, Float:{10.0,10.0,25.0})
		
		set_pev(ent, pev_solid, SOLID_BBOX)
		set_pev(ent, pev_movetype, MOVETYPE_TOSS)
		
		new Float:fOrigin[3]
		IVecFVec(origin, fOrigin)
		set_pev(ent, pev_origin, fOrigin)
	}
}
/* __________________________________________________________
		GiveBonus
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯|| */
public GiveBonus(id)
{	
	if(is_user_alive(id)) 
	{
		switch(random_num(1,6)) 
		{
			case 1: 
			{
				if(pev(id, pev_health) + 20.0 > get_pcvar_num(CvarHpMax))
					set_pev(id, pev_health, get_pcvar_float(CvarHpMax))
				else
					set_pev(id, pev_health, pev(id, pev_health) + 20.0)
				color(id, ".v%s.g Ai gasit.e 20HP.g.", TAG)
			}
			case 2:
			{
				g_money[id] += 2
				color(id, ".v%s.g Ai gasit.e 2$.g.", TAG)
			}
			case 3:
			{
				if(pev(id, pev_armorvalue) + 25.0 > get_pcvar_num(CvarHpMax))
					set_pev(id, pev_armorvalue, get_pcvar_float(CvarHpMax))
				else
					set_pev(id, pev_armorvalue, pev(id, pev_armorvalue) + 25.0)
				color(id, ".v%s.g Ai gasit.e 25AP.g.", TAG)
			}
			case 4:
			{
				g_money[id] += 4
				color(id, ".v%s.g Ai gasit.e 4$.g.", TAG)
			}
			case 5:
			{
				g_money[id] += 6
				color(id, ".v%s.g Ai gasit.e 6$.g.", TAG)
			}
			case 6:
			{
				HasTeleport[id] = true
				g_teleports[id] += 1
				client_cmd(id, "bind ^"alt^" ^"power2^"")
				color(id, ".v%s.g Ai gasit puterea de.e teleportare.g, apasa.e ALT.g pentru a utiliza puterea.", TAG)
			}
		}
	}
}
/* __________________________________________________________
		CmdTeleport
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯|| */
public CmdTeleport(id)
{
	if(!is_user_alive(id) || !HasTeleport[id])
		return PLUGIN_CONTINUE
	
	if (Teleport_Cooldown[id])
	{
		color(id, ".v%s.g Puterea iti va reveni in:.e %d.g secund%s.", TAG, Teleport_Cooldown[id], Teleport_Cooldown[id] == 1 ? "a" : "e")
		return PLUGIN_CONTINUE
	}
	else if (teleport(id))
	{
		emit_sound(id, CHAN_STATIC, SOUND_BLINK, 1.0, ATTN_NORM, 0, PITCH_NORM)
		remove_task(id)
		g_teleports[id] -= 1
		Teleport_Cooldown[id] = get_pcvar_num(CvarTeleportCooldown)
		set_task(1.0, "ShowHUD", id, _, _, "b")
		set_hudmessage(0, 100, 200, 0.05, 0.60, 0, 1.0, 1.1, 0.0, 0.0, -11)
		show_hudmessage(id, "Puterea iti va reveni in: %d secund%s", Teleport_Cooldown[id], Teleport_Cooldown[id] == 1 ? "a" : "e")
	}
	else
		color(id, ".v%s.g Pozitia de teleportare este invalida!", TAG)
	return PLUGIN_CONTINUE
}

public ShowHUD(id)
{
	if(!is_user_alive(id) || !HasTeleport[id])
	{
		remove_task(id)
		Teleport_Cooldown[id] = 0
		return PLUGIN_HANDLED
	}
	set_hudmessage(0, 100, 200, 0.05, 0.60, 0, 1.0, 1.1, 0.0, 0.0, -11)
	if(is_user_alive(id) && Teleport_Cooldown[id] == 1)
	{
		Teleport_Cooldown[id]--
		show_hudmessage(id, "Puterea iti va reveni in: %d secunda",Teleport_Cooldown[id])
	}
	if(is_user_alive(id) && Teleport_Cooldown[id] > 1)
	{
		Teleport_Cooldown[id]--
		show_hudmessage(id, "Puterea iti va reveni in: %d secunde",Teleport_Cooldown[id])
	}
	if(is_user_alive(id) && Teleport_Cooldown[id] <= 0)
	{
		show_hudmessage(id, "Ti-a revenit puterea")
		color(id, ".v%s.g Poti folosi din nou puterea de a te teleporta!", TAG)
		remove_task(id)
		Teleport_Cooldown[id] = 0
	}
	return PLUGIN_HANDLED
}

bool:teleport(id)
{
	new Float:vOrigin[3], Float:vNewOrigin[3],
	Float:vNormal[3], Float:vTraceDirection[3],
	Float:vTraceEnd[3]
	
	pev(id, pev_origin, vOrigin)
	
	velocity_by_aim(id, get_pcvar_num(CvarTeleportRange), vTraceDirection)
	xs_vec_add(vTraceDirection, vOrigin, vTraceEnd)
	
	engfunc(EngFunc_TraceLine, vOrigin, vTraceEnd, DONT_IGNORE_MONSTERS, id, 0)
	
	new Float:flFraction
	get_tr2(0, TR_flFraction, flFraction)
	if (flFraction < 1.0)
	{
		get_tr2(0, TR_vecEndPos, vTraceEnd)
		get_tr2(0, TR_vecPlaneNormal, vNormal)
	}
	
	xs_vec_mul_scalar(vNormal, 40.0, vNormal) // do not decrease the 40.0
	xs_vec_add(vTraceEnd, vNormal, vNewOrigin)
	
	if (is_player_stuck(id, vNewOrigin))
		return false
	
	emit_sound(id, CHAN_STATIC, SOUND_BLINK, 1.0, ATTN_NORM, 0, PITCH_NORM)
	tele_effect(vOrigin)
	
	engfunc(EngFunc_SetOrigin, id, vNewOrigin)
	
	tele_effect2(vNewOrigin)
	
	if(is_user_connected(id))
		UTIL_ScreenFade(id, get_color(CvarColor), get_pcvar_float(CvarFadeTime), get_pcvar_float(CvarFadeTime), 75)
	return true
}

stock is_player_stuck(id, Float:originF[3])
{
	engfunc(EngFunc_TraceHull, originF, originF, 0, (pev(id, pev_flags) & FL_DUCKING) ? HULL_HEAD : HULL_HUMAN, id, 0)
	
	if (get_tr2(0, TR_StartSolid) || get_tr2(0, TR_AllSolid) || !get_tr2(0, TR_InOpen))
		return true
	
	return false
}

stock tele_effect(const Float:torigin[3])
{
	new origin[3]
	origin[0] = floatround(torigin[0])
	origin[1] = floatround(torigin[1])
	origin[2] = floatround(torigin[2])
	
	message_begin(MSG_PAS, SVC_TEMPENTITY, origin)
	write_byte(TE_BEAMCYLINDER)
	write_coord(origin[0])
	write_coord(origin[1])
	write_coord(origin[2]+10)
	write_coord(origin[0])
	write_coord(origin[1])
	write_coord(origin[2]+60)
	write_short(Sprite)
	write_byte(0)
	write_byte(0)
	write_byte(3)
	write_byte(60)
	write_byte(0)
	write_byte(255)
	write_byte(255)
	write_byte(255)
	write_byte(255)
	write_byte(0)
	message_end()
}

stock tele_effect2(const Float:torigin[3])
{
	new origin[3]
	origin[0] = floatround(torigin[0])
	origin[1] = floatround(torigin[1])
	origin[2] = floatround(torigin[2])
	
	message_begin(MSG_PAS, SVC_TEMPENTITY, origin)
	write_byte(TE_BEAMCYLINDER)
	write_coord(origin[0])
	write_coord(origin[1])
	write_coord(origin[2]+10)
	write_coord(origin[0])
	write_coord(origin[1])
	write_coord(origin[2]+60)
	write_short(Sprite)
	write_byte(0)
	write_byte(0)
	write_byte(3)
	write_byte(60)
	write_byte(0)
	write_byte(255)
	write_byte(255)
	write_byte(255)
	write_byte(255)
	write_byte(0)
	message_end()
	
	message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
	write_byte(TE_SPRITETRAIL)
	write_coord(origin[0])
	write_coord(origin[1])
	write_coord(origin[2]+40)
	write_coord(origin[0])
	write_coord(origin[1])
	write_coord(origin[2])
	write_short(Sprite2)
	write_byte(30)
	write_byte(10)
	write_byte(1)
	write_byte(50)
	write_byte(10)
	message_end()
}	

get_color(pcvar)
{
	new iColor[3], szColor[10]
	get_pcvar_string(pcvar, szColor, charsmax(szColor))
	new c = str_to_num(szColor)
	
	iColor[Red] = c / 1000000
	c %= 1000000
	iColor[Green] = c / 1000
	iColor[Blue] = c % 1000
	
	return iColor
}

stock FixedUnsigned16(Float:flValue, iScale)
{
	new iOutput
	iOutput = floatround(flValue * iScale)
	
	if (iOutput < 0)
		iOutput = 0
	
	if (iOutput > 0xFFFF)
		iOutput = 0xFFFF
	
	return iOutput
}

stock UTIL_ScreenFade(id=0,iColor[3]={0,0,0},Float:flFxTime=-1.0,Float:flHoldTime=0.0,iAlpha=0,iFlags=FFADE_IN,bool:bReliable=false,bool:bExternal=false)
{
	if(id && !is_user_connected(id))
		return
	
	new iFadeTime
	if(flFxTime == -1.0)
	{
		iFadeTime = 4
	}
	else
	{
		iFadeTime = FixedUnsigned16(flFxTime , 1<<12)
	}
	
	static gmsgScreenFade
	if(!gmsgScreenFade)
	{
		gmsgScreenFade = get_user_msgid("ScreenFade")
	}
	
	new MSG_DEST
	if(bReliable)
	{
		MSG_DEST = id ? MSG_ONE : MSG_ALL
	}
	else
	{
		MSG_DEST = id ? MSG_ONE_UNRELIABLE : MSG_BROADCAST
	}
	
	if(bExternal)
	{
		emessage_begin(MSG_DEST, gmsgScreenFade, _, id)
		ewrite_short(iFadeTime)
		ewrite_short(FixedUnsigned16(flHoldTime , 1<<12))
		ewrite_short(iFlags)
		ewrite_byte(iColor[Red])
		ewrite_byte(iColor[Green])
		ewrite_byte(iColor[Blue])
		ewrite_byte(iAlpha)
		emessage_end()
	}
	else
	{
		message_begin(MSG_DEST, gmsgScreenFade, _, id)
		write_short(iFadeTime)
		write_short(FixedUnsigned16(flHoldTime , 1<<12))
		write_short(iFlags)
		write_byte(iColor[Red])
		write_byte(iColor[Green])
		write_byte(iColor[Blue])
		write_byte(iAlpha)
		message_end()
	}
}
/* __________________________________________________________
		UTIL_FadeToBlack
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯|| */
stock UTIL_FadeToBlack(id,Float:fxtime=3.0,bool:bReliable=false,bool:bExternal=false)
	UTIL_ScreenFade(id, _, fxtime, fxtime, 255, FFADE_OUT|FFADE_STAYOUT,bReliable,bExternal)
/* __________________________________________________________
		Light
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯|| */
public Light(entity, red, green, blue)
{	
	if(is_valid_ent(entity))
	{
		static Float:origin[3]
		pev(entity, pev_origin, origin)
		
		message_begin(MSG_BROADCAST, SVC_TEMPENTITY, _, entity)
		write_byte(TE_DLIGHT) // TE id
		engfunc(EngFunc_WriteCoord, origin[0])
		engfunc(EngFunc_WriteCoord, origin[1])
		engfunc(EngFunc_WriteCoord, origin[2])
		write_byte(7) 
		write_byte(red)
		write_byte(green)
		write_byte(blue)
		write_byte(2)
		write_byte(0)
		message_end()
	}
}

public shop_menu(id)
{
	if(!is_user_connected(id))
		return;
		
	static menu_name[75];
	formatex(menu_name, charsmax(menu_name), "Ultimate Remaked Furien Shop^nCredits: %d^n", g_money[id])
	static menu;
	menu = menu_create(menu_name, "shop_handler");

	static i_menu[100];

	if(!(get_user_flags(id) & VIP_FLAG))
		formatex(i_menu, charsmax(i_menu), "\d%s\R [ONLY VIP]", items_menu[0])
	else
	{
		if(!is_user_alive(id))
			formatex(i_menu, charsmax(i_menu), "\d%s\R [ONLY ALIVE]", items_menu[0])
		else
		{
			switch(get_user_team(id))
			{
				case 1: formatex(i_menu, charsmax(i_menu), "\d%s\R [ONLY ANTI-FURIEN]", items_menu[0])
				case 2:
				{
					if(g_ak47[id])
						formatex(i_menu, charsmax(i_menu), "\y%s\r\R [ALREADY HAVE]", items_menu[0])
					else
					{
						if(g_money[id] < cost[0])
							formatex(i_menu, charsmax(i_menu), "\d%s\R %d", items_menu[0], cost[0])
						else
							formatex(i_menu, charsmax(i_menu), "\y%s\r\R %d", items_menu[0], cost[0])
					}
				}
			}
		}
	}
	menu_additem(menu, i_menu, "")
	if(!(get_user_flags(id) & VIP_FLAG))
		formatex(i_menu, charsmax(i_menu), "\d%s\R [ONLY VIP]", items_menu[1])
	else
	{
		if(!is_user_alive(id))
			formatex(i_menu, charsmax(i_menu), "\d%s\R [ONLY ALIVE]", items_menu[1])
		else
		{
			switch(get_user_team(id))
			{
				case 1: formatex(i_menu, charsmax(i_menu), "\d%s\R [ONLY ANTI-FURIEN]", items_menu[1])
				case 2:
				{
					if(g_m4a1[id])
						formatex(i_menu, charsmax(i_menu), "\y%s\r\R [ALREADY HAVE]", items_menu[1])
					else
					{
						if(g_money[id] < cost[1])
							formatex(i_menu, charsmax(i_menu), "\d%s\R %d", items_menu[1], cost[1])
						else
							formatex(i_menu, charsmax(i_menu), "\y%s\r\R %d", items_menu[1], cost[1])
					}
				}
			}
		}
	}
	menu_additem(menu, i_menu, "")
	if(!(get_user_flags(id) & VIP_FLAG))
		formatex(i_menu, charsmax(i_menu), "\d%s\R [ONLY VIP]", items_menu[2])
	else
	{
		if(!is_user_alive(id))
			formatex(i_menu, charsmax(i_menu), "\d%s\R [ONLY ALIVE]", items_menu[2])
		else
		{
			switch(get_user_team(id))
			{
				case 1: formatex(i_menu, charsmax(i_menu), "\d%s\R [ONLY ANTI-FURIEN]", items_menu[2])
				case 2:
				{
					if(g_deagle[id])
						formatex(i_menu, charsmax(i_menu), "\y%s\r\R [ALREADY HAVE]", items_menu[2])
					else
					{
						if(g_money[id] < cost[2])
							formatex(i_menu, charsmax(i_menu), "\d%s\R %d", items_menu[2], cost[2])
						else
							formatex(i_menu, charsmax(i_menu), "\y%s\r\R %d", items_menu[2], cost[2])
					}
				}
			}
		}
	}
	menu_additem(menu, i_menu, "")
	if(!(get_user_flags(id) & VIP_FLAG))
		formatex(i_menu, charsmax(i_menu), "\d%s\R [ONLY VIP]", items_menu[3])
	else
	{
		if(!is_user_alive(id))
		{
			if(g_used_life[id])
				formatex(i_menu, charsmax(i_menu), "\y%s\r\R [USED]", items_menu[3])
			else
			{
				if(g_money[id] < cost[3])
					formatex(i_menu, charsmax(i_menu), "\d%s\R %d", items_menu[3], cost[3])
				else
					formatex(i_menu, charsmax(i_menu), "\y%s\r\R %d", items_menu[3], cost[3])
			}
		}
		else
			formatex(i_menu, charsmax(i_menu), "\d%s\R [ONLY DEAD]", items_menu[3])
	}
	menu_additem(menu, i_menu, "")
	if(!(get_user_flags(id) & VIP_FLAG))
		formatex(i_menu, charsmax(i_menu), "\d%s\R [ONLY VIP]", items_menu[4])
	else
	{
		if(!is_user_alive(id))
			formatex(i_menu, charsmax(i_menu), "\d%s\R [ONLY ALIVE]", items_menu[4])
		else
		{
			switch(get_user_team(id))
			{
				case 1: formatex(i_menu, charsmax(i_menu), "\d%s\R [ONLY ANTI-FURIEN]", items_menu[4])
				case 2:
				{
					if(g_pet[id])
						formatex(i_menu, charsmax(i_menu), "\y%s\r\R [ALREADY HAVE]", items_menu[4])
					else
					{
						if(g_money[id] < cost[4])
							formatex(i_menu, charsmax(i_menu), "\d%s\R %d", items_menu[4], cost[4])
						else
							formatex(i_menu, charsmax(i_menu), "\y%s\r\R %d", items_menu[4], cost[4])
					}
				}
			}
		}
	}
	menu_additem(menu, i_menu, "")
	menu_display(id, menu, 0)
}

public donate(id, arg[])
{
	static cui[32], count[10];
	strbreak(arg, cui, 31, count, 9)
	
	if(!cui[0] || !count[0])
	{
		color(id, ".v%s.g Comanda se foloseste sub forma urmatoare:.e /donate nume bani.g.", TAG)
		return
	}
	static credite_trimise, credite;
	credite_trimise = g_money[id]
	if(equal(count, "all"))
		credite = credite_trimise
	else
		credite = str_to_num(count)
	
	if(credite <= 0)
	{
		color(id, ".v%s.g Valoarea introdusa de tine este invalida.", TAG)
		return
	}
	credite_trimise -= credite
	if(credite_trimise < 0)
	{
		credite += credite_trimise
		credite_trimise = 0
	}
	static primitor;
	primitor = cmd_target(id, cui, (CMDTARGET_ALLOW_SELF))
	if(!primitor || primitor == id)
	{
		color(id, ".v%s.e %s.g nu exista pe server.", TAG, cui)
		return
	}
	g_money[primitor] += credite
	g_money[id] = credite_trimise
	
	color(0, ".v%s.e %s.g ii trimite lui.e %s %d$.g.", TAG, get_name(id), get_name(primitor), credite)
}

public shop_handler(id, menu, item)
{
	if(!(get_user_flags(id) & VIP_FLAG))
	{
		color(id, ".v%s.g Trebuie sa detii.e VIP.g pentru a folosi acest shop.", TAG)
		menu_destroy(menu);
		return PLUGIN_HANDLED;
	}
	if(item == MENU_EXIT)
    {
        menu_destroy(menu);
        return PLUGIN_HANDLED;
    }
	
	if(g_money[id] < cost[item])
	{
		color(id, ".v%s.g Nu ai destule credite sa cumperi.e %s.g. Iti mai trebuiesc.e %d.g credite.", TAG, items_menu[item], cost[item] - g_money[id])
		menu_destroy(menu);
		return PLUGIN_HANDLED;
	}
	
	switch(item)
	{
		case 0:
		{
			if(!is_user_alive(id))
			{
				color(id, ".v%s.g Trebuie sa fii in viata pentru a putea cumpara.e %s.g", items_menu[item])
				menu_destroy(menu);
				return PLUGIN_HANDLED;
			}
			if(get_user_team(id) != 2)
			{
				color(id, ".v%s.g Trebuie sa fii.e Anti-Furien.g pentru a putea cumpara.e %s.g.", TAG, items_menu[item])
				menu_destroy(menu);
				return PLUGIN_HANDLED;
			}
			if(g_ak47[id])
			{
				color(id, ".v%s.g Ai deja.e %s.g.", TAG, items_menu[item])
				menu_destroy(menu);
				return PLUGIN_HANDLED;
			}
			drop_weapons(id, 1)
			g_ak47[id] = true
			give_item(id, "weapon_ak47")
			cs_set_user_bpammo(id, CSW_AK47, 90)
		}
		case 1:
		{
			if(!is_user_alive(id))
			{
				color(id, ".v%s.g Trebuie sa fii in viata pentru a putea cumpara.e %s.g", items_menu[item])
				menu_destroy(menu);
				return PLUGIN_HANDLED;
			}
			if(get_user_team(id) != 2)
			{
				color(id, ".v%s.g Trebuie sa fii.e Anti-Furien.g pentru a putea cumpara.e %s.g.", TAG, items_menu[item])
				menu_destroy(menu);
				return PLUGIN_HANDLED;
			}
			if(g_m4a1[id])
			{
				color(id, ".v%s.g Ai deja.e %s.g.", TAG, items_menu[item])
				menu_destroy(menu);
				return PLUGIN_HANDLED;
			}
			drop_weapons(id, 1)
			g_m4a1[id] = true
			give_item(id, "weapon_m4a1")
			cs_set_user_bpammo(id, CSW_M4A1, 90)
		}
		case 2:
		{
			if(!is_user_alive(id))
			{
				color(id, ".v%s.g Trebuie sa fii in viata pentru a putea cumpara.e %s.g", items_menu[item])
				menu_destroy(menu);
				return PLUGIN_HANDLED;
			}
			if(get_user_team(id) != 2)
			{
				color(id, ".v%s.g Trebuie sa fii.e Anti-Furien.g pentru a putea cumpara.e %s.g.", TAG, items_menu[item])
				menu_destroy(menu);
				return PLUGIN_HANDLED;
			}
			if(g_deagle[id])
			{
				color(id, ".v%s.g Ai deja.e %s.g.", TAG, items_menu[item])
				menu_destroy(menu);
				return PLUGIN_HANDLED;
			}
			drop_weapons(id, 2)
			g_deagle[id] = true
			give_item(id, "weapon_deagle")
			cs_set_user_bpammo(id, CSW_DEAGLE, 90)
		}
		case 3:
		{
			if(is_user_alive(id))
			{
				color(id, ".v%s.g Trebuie sa fii.e mort.g pentru a folosi.e %s.g.", TAG, items_menu[item])
				menu_destroy(menu);
				return PLUGIN_HANDLED;
			}
			if(get_user_team(id) == 3)
			{
				color(id, ".v%s.g Esti spectator si nu poti folosi.e %s.g.", TAG, items_menu[item])
				menu_destroy(menu);
				return PLUGIN_HANDLED;
			}
			if(g_used_life[id])
			{
				color(id, ".v%s.g Ai folosit deja.e %s.g.", TAG, items_menu[item])
				menu_destroy(menu);
				return PLUGIN_HANDLED;
			}
			g_used_life[id] = true
			ExecuteHamB(Ham_CS_RoundRespawn, id)
		}
		case 4:
		{
			if(!is_user_alive(id))
			{
				color(id, ".v%s.g Trebuie sa fii.e viu.g pentru a folosi.e %s.g.", TAG, items_menu[item])
				menu_destroy(menu);
				return PLUGIN_HANDLED;
			}
			if(get_user_team(id) != 2)
			{
				color(id, ".v%s.g Trebuie sa fii.e Anti-Furien.g pentru a folosi.e %s.g.", TAG, items_menu[item])
				menu_destroy(menu);
				return PLUGIN_HANDLED;
			}
			if(g_pet[id])
			{
				color(id, ".v%s.g Ai deja.e %s.g.", TAG, items_menu[item])
				menu_destroy(menu);
				return PLUGIN_HANDLED;
			}
			create_pet(id)
			set_pev(id, pev_health, 200.0)
			set_pev(id, pev_armorvalue, 200.0)
			set_pev(id, pev_gravity, 0.5)
		}
	}
	g_money[id] -= cost[item]
	check_weapon(id)
	color(id, ".v%s.g Ai cumparat.e %s.g pentru.e %d$.g.", TAG, items_menu[item], cost[item])
	menu_destroy(menu);
	return PLUGIN_HANDLED;	
}

public create_pet(id)
{
	item_pet[id] = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString,"info_target"))
	set_pev(item_pet[id], pev_classname, "bat")
	
	engfunc(EngFunc_SetModel,item_pet[id],pet_model)
	
	new Float:origin[3]
	pev(id,pev_origin,origin)			
	
	set_pev(item_pet[id],pev_origin,origin)
	set_pev(item_pet[id],pev_solid,SOLID_TRIGGER)
	set_pev(item_pet[id],pev_movetype,MOVETYPE_FLY)
	set_pev(item_pet[id],pev_owner,33)
	set_pev(item_pet[id],pev_nextthink,1.0)
	set_pev(item_pet[id],pev_sequence,0)
	set_pev(item_pet[id],pev_gaitsequence,0)
	set_pev(item_pet[id],pev_framerate,1.0)	
	
	engfunc(EngFunc_EmitSound,item_pet[id],CHAN_AUTO,pet_sounds[random_num(0,sizeof pet_sounds - 1)],1.0, 1.2, 0, PITCH_NORM)	
	
	client_print(id, print_center, "Ai primit liliacul magic")		
	
	g_pet[id] = true
	return PLUGIN_HANDLED
}

public checkandupdatetop(id, leveles, ori, minuti) 
{	

	static name[32];
	get_user_name(id, name, charsmax(name) - 1);
	for(new i = INFO_ZERO; i < NTOP; i++)
	{
		if(leveles > toplevels[i] || leveles == toplevels[i] && ori > tophours[i] && minuti > topminutes[i] || leveles == toplevels[i] && ori == tophours[i] && minuti > topminutes[i])
		{
			new pos = i;	
			while(!equal(topnames[pos],name) && pos < NTOP)
				pos++;
			
			for(new j = pos; j > i; j--)
			{
				formatex(topnames[j], 31, topnames[j-1]);
				toplevels[j] = toplevels[j-1];
				tophours[j] = tophours[j-1];
				topminutes[j] = topminutes[j-1];
			}
			formatex(topnames[i], charsmax(name) - 1, name);
			toplevels[i] = leveles;
			tophours[i]= ori;
			topminutes[i] = minuti;
			save_top();
			break;
		}
		else if(equal(topnames[i], name)) 
		break;	
	}
}
public read_top() 
{
	new Buffer[256],path[128];
	formatex(path, 127, "%s/TopLevels.dat", data_save);
	
	new f = fopen(path, "rt");
	new i = INFO_ZERO;
	while(!feof(f) && i < NTOP+1)
	{
		fgets(f, Buffer, 255)
		new niveluri[25], hours[25], minutes[25];
		parse(Buffer, topnames[i], 31, niveluri, 25,  hours, 25, minutes, 25);
		toplevels[i] = str_to_num(niveluri);
		tophours[i]= str_to_num(hours);
		topminutes[i]= str_to_num(minutes);
		
		i++;
	}
	fclose(f);
}
public show_top(id) 
{	
	static buffer[2368], name[131], len, i;
	len = format(buffer[len], 2367-len,"<STYLE>body{background:#232323;color:#cfcbc2;font-family:sans-serif}table{border-style:solid;border-width:1px;border-color:#FFFFFF;font-size:13px}</STYLE><table align=center width=100%% cellpadding=2 cellspacing=0");
	len += format(buffer[len], 2367-len, "<tr align=center bgcolor=#52697B><th width=4%% > # <th width=24%%> NAME <th width=24%%>LEVEL <th width=24%%> HOURS <th  width=24%%> MINUTES");	
	for(i = INFO_ZERO; i < NTOP; i++)
	{		
			if(tophours[i] == 0 && topminutes[i] == 0)
				len += format(buffer[len], 2367-len, "<tr align=center bgcolor=#232323><td> %d <td> %s <td> %s<td> %s <td> %s", (i+1), "-", "-", "-","-");
			else 
			{
				name = topnames[i];
				while(containi(name, "<") != -1)
					replace(name, 129, "<", "<");
				while(containi(name, ">") != -1)
					replace(name, 129, ">", ">");
				static plname[32];
				get_user_name(id, plname ,32);
				if(equal(topnames[i],plname)) 
					len += format(buffer[len], 2367-len, "<tr align=center bgcolor=#2D2D2D><td> %d <td> %s <td> %d<td> %d <td> %d", (i+1), name, toplevels[i], tophours[i], topminutes[i]);
				else
					len += format(buffer[len], 2367-len, "<tr align=center bgcolor=#232323><td> %d <td> %s <td> %d<td> %d <td> %d", (i+1), name, toplevels[i], tophours[i], topminutes[i]);
			}
		}
	len += format(buffer[len], 2367-len, "</table>");
	len += formatex(buffer[len], 2367-len, "<tr align=bottom font-size:11px><Center><br><br><br><br>TOP 10 LEVELS</body>");
	static strin[20];
	format(strin,33, "TOP 10 LEVELS");
	show_motd(id, buffer, strin);
}

create_thunder(const Float:vec1[3], const Float:vec2[3])
{
	engfunc(EngFunc_MessageBegin, MSG_PVS, SVC_TEMPENTITY, vec2, 0)
	write_byte(0)
	engfunc(EngFunc_WriteCoord, vec1[0])
	engfunc(EngFunc_WriteCoord, vec1[1])
	engfunc(EngFunc_WriteCoord, vec1[2])
	engfunc(EngFunc_WriteCoord, vec2[0])
	engfunc(EngFunc_WriteCoord, vec2[1])
	engfunc(EngFunc_WriteCoord, vec2[2])
	write_short(lighting)
	write_byte(1)
	write_byte(5)
	write_byte(2)
	write_byte(20)
	write_byte(30)
	write_byte(200)
	write_byte(200)
	write_byte(200)
	write_byte(200)
	write_byte(200)
	message_end()

	engfunc(EngFunc_MessageBegin, MSG_PVS, SVC_TEMPENTITY, vec2, 0)
	write_byte(TE_SPARKS)
	engfunc(EngFunc_WriteCoord, vec2[0])
	engfunc(EngFunc_WriteCoord, vec2[1])
	engfunc(EngFunc_WriteCoord, vec2[2])
	message_end()
	
	engfunc(EngFunc_MessageBegin, MSG_PVS, SVC_TEMPENTITY, vec2, 0)
	write_byte(TE_SMOKE)
	engfunc(EngFunc_WriteCoord, vec2[0])
	engfunc(EngFunc_WriteCoord, vec2[1])
	engfunc(EngFunc_WriteCoord, vec2[2])
	write_short(smoke_spr)
	write_byte(10)
	write_byte(10)
	message_end()
}

make_HideWeapon(plr, flags)
{
	static i; i = plr ? plr : get_player();
	if(!i)
		return 0;
	message_begin(plr ? MSG_ONE : MSG_ALL, g_msgHideWeapon, {0, 0, 0}, plr);
	write_byte(flags);
	message_end();
	return 1;
}

get_player()
{
	for( new plr = 1; plr <= g_iMaxPlayers; plr++ )
	{
		if( IsPlayer(plr))
		{
			return plr;
		}
	}
	
	return 0;
}

stock UTIL_CreateFlares(const iOrigin[3], const iSpriteID, const iCount, const iLife, const iScale)
{
	message_begin(MSG_BROADCAST,SVC_TEMPENTITY);
	write_byte(TE_SPRITETRAIL);
	write_coord(iOrigin[0]);
	write_coord(iOrigin[1]);
	write_coord(iOrigin[2]);
	write_coord(iOrigin[0]);
	write_coord(iOrigin[1]);
	write_coord(iOrigin[2] + random_num(5, 10));
	write_short(iSpriteID);
	write_byte(iCount);
	write_byte(iLife);
	write_byte(iScale);
	write_byte(random_num(30, 50));
	write_byte(random_num(10, 15));
	message_end();
}

public hook_drop(id)
{
	if(!is_user_alive(id))
		return PLUGIN_CONTINUE;
		
	if(get_user_team(id) == 1)
	{
		client_print(id, print_center, "Nu poti arunca nimic!")
		return PLUGIN_HANDLED;
	}
	return PLUGIN_CONTINUE;
}

public CountDown()
{
	if(g_endround)
		return;
		
	set_dhudmessage(random(255), random(255), random(255), -1.0, 0.24, 1, 0.0, 1.0, 0.0, 0.0)
	SecondsUntillInvasion -= 1
	switch(SecondsUntillInvasion)
	{
		case 0:
		{
			show_dhudmessage(0, "Furienii ataca planeta in o secunda.")
			TerroTeamEffects()
			CounterTeamEffects()
			PlaySound(start_sounds[SecondsUntillInvasion])
			return
		}
		case 1:
		{
			PlaySound(start_sounds[SecondsUntillInvasion])
			show_dhudmessage(0, "Furienii ataca planeta in doua secunde.")
			TerroTeamEffects()
			CounterTeamEffects()
		}
		case 2:
		{
			PlaySound(start_sounds[SecondsUntillInvasion])
			show_dhudmessage(0, "Furienii ataca planeta in trei secunde.")
			TerroTeamEffects()
			CounterTeamEffects()
		}
		case 3:
		{
			PlaySound(start_sounds[SecondsUntillInvasion])
			show_dhudmessage(0, "Furienii ataca planeta in patru secunde.")
			TerroTeamEffects()
			CounterTeamEffects()
		}
		case 4:
		{
			PlaySound(start_sounds[SecondsUntillInvasion])
			show_dhudmessage(0, "Furienii ataca planeta in cinci secunde.")
			TerroTeamEffects()
			CounterTeamEffects()
		}
	}	
	set_task(1.0, "CountDown");
} 

public TerroTeamEffects()
{
	new iPlayers[32];
	new iPlayersNum;
	
	get_players(iPlayers, iPlayersNum, "aceh", "TERRORIST");
	
	for(new i = 0 ; i < iPlayersNum ; i++)
	{
		if(IsPlayer(iPlayers[i]))
		{      
			ShakeScreen(iPlayers[i], 0.9);
			FadeScreen(iPlayers[i], 0.5, 230, 40, 0, 180);
		}
	}
}
public CounterTeamEffects()
{
	new iPlayers[32];
	new iPlayersNum;
	
	get_players(iPlayers, iPlayersNum, "aceh", "CT");
	
	for(new i = 0; i < iPlayersNum ; i++)
	{
		if(IsPlayer(iPlayers[i]))
		{      
			ShakeScreen(iPlayers[i], 0.9);
			FadeScreen(iPlayers[i], 0.5, 0, 40, 230, 180);
		}
	}
}

public task_CanPlant() 
{
	set_lights("d")
	if(active_fog)
		msg_create_fog(random(255), random(255), random(255), 2)
	g_dontdelete = true
	remove_task(TASK_REMOVEC4)
	static CT, TERO, salvator, distrugator;
	CT = fnGetAliveCT();
	if(CT < 1)
		return;
		
	TERO = fnGetAliveT();
	if(TERO < 1)
		return;
	
	salvator = fnGetRandomAliveCT(random_num(1, CT))
	distrugator = fnGetRandomAliveT(random_num(1, TERO))
	g_end_health[distrugator] = get_user_health(distrugator)
	g_end_health[salvator] = get_user_health(salvator)
	set_user_health(salvator, 200)
	savior[salvator] = true
	cs_set_user_defuse(salvator, 1)
	set_task(0.1, "savior_aura", salvator+TASK_AURA, _, _, "b")
	set_user_health(distrugator, 135)
	destroyer[distrugator] = true
	ham_give_weapon(distrugator, "weapon_c4")
	cs_set_user_plant(distrugator, 1, 1);
	engclient_cmd(distrugator, "weapon_knife")
	check_weapon(distrugator)
	set_hudmessage(200, 30, 20, -1.0, 0.15, 1, 3.1, 3.0)
	ShowSyncHudMsg(0, event_hud, "Bomba cu plasma poate fi plantata!^n%s a fost ales ca EROU!!!^n%s a fost ales ca DISTRUGATOR!!!", get_name(salvator), get_name(distrugator))
}

public select_destroyer()
{
	if(g_endround)
		return;
	
	static TERO, distrugator;
	TERO = fnGetAliveT();
	if(TERO < 1)
		return;
		
	distrugator = fnGetRandomAliveT(random_num(1, TERO))
	g_end_health[distrugator] = get_user_health(distrugator)
	set_user_health(distrugator, 135)
	color(0, ".v%s.e %s.g a fost ales NOUL.e DISTRUGATOR.g.", TAG, get_name(distrugator))
	destroyer[distrugator] = true
	if(!b_planted)
	{
		ham_give_weapon(distrugator, "weapon_c4")
		cs_set_user_plant(distrugator, 1, 1);
	}
	engclient_cmd(distrugator, "weapon_knife")
	check_weapon(distrugator)
}

public select_savior()
{
	if(g_endround)
		return;
	
	static CT, salvator;
	CT = fnGetAliveCT();
	if(CT < 1)
		return;
		
	salvator = fnGetRandomAliveCT(random_num(1, CT))
	g_end_health[salvator] = get_user_health(salvator)
	set_user_health(salvator, 200)
	color(0, ".v%s.e %s.g a fost ales NOUL EROU.", TAG, get_name(salvator))
	savior[salvator] = true
	cs_set_user_defuse(salvator, 1);
}

public savior_aura(taskid)
{
	if(!savior[ID_AURA] || !is_user_alive(ID_AURA))
	{
		remove_task(taskid);
		return;
	}
	static origin[3]
	get_user_origin(ID_AURA, origin)

	message_begin(MSG_PVS, SVC_TEMPENTITY, origin)
	write_byte(TE_DLIGHT)
	write_coord(origin[0])
	write_coord(origin[1])
	write_coord(origin[2])
	write_byte(20)
	write_byte(0)
	write_byte(200)
	write_byte(50)
	write_byte(2)
	write_byte(0)
	message_end()
}

public score_attrib(msgid, dest, id)
{
	static juc, attrib;
	juc = get_msg_arg_int(1);
	attrib = get_msg_arg_int(2);
	
	if(attrib == ATTRIB_BOMB)
	{
		if(destroyer[juc] && user_has_weapon(juc, CSW_C4))
			return PLUGIN_CONTINUE;
		else
			set_msg_arg_int(2, ARG_BYTE, 0)
		return PLUGIN_HANDLED;
	}
	return PLUGIN_CONTINUE;
}

public status_icon(msgid, dest, id)
{
	static juc, icon[3];
	juc = get_msg_arg_int(1);
	get_msg_arg_string(2, icon, 2);
	if((icon[0] == 'c' && icon[1] == '4'))
	{
		if(destroyer[juc])
			return PLUGIN_CONTINUE;
		return PLUGIN_HANDLED;
	}
	return PLUGIN_CONTINUE
}

fnGetAliveCT()
{
	static iAlive, id
	iAlive = 0
	
	for (id = 1; id <= g_iMaxPlayers; id++)
	{
		if(is_user_alive(id) && get_user_team(id) == 2)
			iAlive++
	}
	
	return iAlive;
}

fnGetRandomAliveCT(n)
{
	static iAlive, id
	iAlive = 0
	
	for (id = 1; id <= g_iMaxPlayers; id++)
	{
		if(is_user_alive(id) && get_user_team(id) == 2)
			iAlive++
		
		if(iAlive == n)
			return id;
	}
	
	return -1;
}

fnGetAliveT()
{
	static iAlive, id
	iAlive = 0
	
	for (id = 1; id <= g_iMaxPlayers; id++)
	{
		if(is_user_alive(id) && get_user_team(id) == 1)
			iAlive++
	}
	
	return iAlive;
}

fnGetRandomAliveT(n)
{
	static iAlive, id
	iAlive = 0
	
	for (id = 1; id <= g_iMaxPlayers; id++)
	{
		if(is_user_alive(id) && get_user_team(id) == 1)
			iAlive++
		
		if(iAlive == n)
			return id;
	}
	
	return -1;
}

public ShakeScreen(id, const Float:seconds)
{
	message_begin(MSG_ONE_UNRELIABLE, g_screenshake, {0, 0, 0}, id);
	write_short(floatround(4096.0 * seconds, floatround_round));
	write_short(floatround(4096.0 * seconds, floatround_round));
	write_short(1<<13);
	message_end();
}

public FadeScreen(id, const Float:seconds, const red, const green, const blue, const alpha)
{      
	message_begin(MSG_ONE_UNRELIABLE, g_msgScreenFade, _, id);
	write_short(floatround(4096.0 * seconds, floatround_round));
	write_short(floatround(4096.0 * seconds, floatround_round));
	write_short(0x0000);
	write_byte(red);
	write_byte(green);
	write_byte(blue);
	write_byte(alpha);
	message_end();
}

public shop_enter(id)
{
	if(get_user_team(id) == 3)
		return PLUGIN_CONTINUE;
		
	switch(get_user_team(id))
	{
		case 1: shop_furien(id)
		case 2: shop_anti_furien(id)
	}
	return PLUGIN_HANDLED;
}

public shop_furien(id)
{
	static menu_name[128];
	formatex(menu_name, charsmax(menu_name), "\yShop Furien^n\rBani: %i$^n^n", g_money[id])
	new menu = menu_create(menu_name, "furien_handler")
	static menu_item[80], tasta[2];
	for(new i = 0; i < sizeof FURIEN_ITEMS; i++)
	{
		if(g_money[id] < FURIEN_COST[i])
			formatex(menu_item, charsmax(menu_item), "\d%s\R %d$", FURIEN_ITEMS[i], FURIEN_COST[i])
		else
			formatex(menu_item, charsmax(menu_item), "\y%s\r\R %d$", FURIEN_ITEMS[i], FURIEN_COST[i])
		tasta[0] = i
		tasta[1] = 0
		menu_additem(menu, menu_item, tasta)
	}
	if(pev_valid(id) == PDATA_SAFE)
		set_pdata_int(id, OFFSET_CSMENUCODE, 0, OFFSET_LINUX)
	menu_display(id, menu, 0)
}

public get_bomb()
	remove_c4()

public delete_c4()
{
	if(g_dontdelete)
	{
		remove_task(TASK_REMOVEC4)
		return;
	}
	remove_c4()
}

public shop_anti_furien(id)
{
	static menu_name[128];
	formatex(menu_name, charsmax(menu_name), "\yShop Anti-Furien^n\rBani: %i$^n^n", g_money[id])
	new menu = menu_create(menu_name, "anti_furien_handler")
	static menu_item[80], tasta[2];
	for(new i = 0; i < sizeof ANTI_FURIEN_ITEMS; i++)
	{
		if(g_money[id] < ANTI_FURIEN_COST[i])
			formatex(menu_item, charsmax(menu_item), "\d%s\R %d$", ANTI_FURIEN_ITEMS[i], ANTI_FURIEN_COST[i])
		else
			formatex(menu_item, charsmax(menu_item), "\y%s\r\R %d$", ANTI_FURIEN_ITEMS[i], ANTI_FURIEN_COST[i])
		tasta[0] = i
		tasta[1] = 0
		menu_additem(menu, menu_item, tasta)
	}
	if(pev_valid(id) == PDATA_SAFE)
		set_pdata_int(id, OFFSET_CSMENUCODE, 0, OFFSET_LINUX)
	menu_display(id, menu, 0)
}

public furien_handler(id, menu, item)
{
	if(item == MENU_EXIT)
	{
		menu_destroy(menu);
		return PLUGIN_HANDLED;
	}
	
	if(item >= sizeof FURIEN_ITEMS) return PLUGIN_HANDLED;
	
	if(!is_user_alive(id))
	{
		color(id, ".v%s.g Esti mort. Nu poti cumpara.e %s.g.", TAG, FURIEN_ITEMS[item])
		menu_destroy(menu);
		return PLUGIN_HANDLED;
	}
	
	if(get_user_team(id) != 1)
	{
		menu_destroy(menu);
		shop_anti_furien(id)
		return PLUGIN_HANDLED;
	}
	
	if(g_money[id] < FURIEN_COST[item])
	{
		color(id, ".v%s.g Nu ai destui bani pentru.e %s.g. Iti mai trebuiesc:.e %d$.g.", TAG, FURIEN_ITEMS[item], FURIEN_COST[item] - g_money[id])
		menu_destroy(menu);
		return PLUGIN_HANDLED;
	}
	
	switch(item)
	{
		case 0:
		{
			if(g_superknife[id])
			{
				color(id, ".v%s.g Ai deja.e Super Knife.g.", TAG)
				menu_destroy(menu);
				return PLUGIN_HANDLED;
			}
			g_superknife[id] = true
			check_weapon(id)
		}
		case 1:
		{
			if(get_user_health(id) == 320)
			{
				color(id, ".v%s.g Ai deja maximul de HP.", TAG)
				menu_destroy(menu);
				return PLUGIN_HANDLED;
			}
			else if(get_user_health(id) + 40 > 200)
				set_user_health(id, 200)
			else
				set_user_health(id, get_user_health(id) + 40)
		}
		case 2:
		{
			if(get_user_armor(id) == 250)
			{
				color(id, ".v%s.g Ai deja maximul de armura.", TAG)
				menu_destroy(menu);
				return PLUGIN_HANDLED;
			}	
			else if(get_user_armor(id) + 50 > 250)
				set_user_armor(id, 250)
			else
				set_user_armor(id, get_user_armor(id) + 50)
		}
		case 3:
		{
			if(g_noflash[id])
			{
				color(id, ".v%s.g Ai deja.e No Flash.g.", TAG)
				menu_destroy(menu);
				return PLUGIN_HANDLED;
			}
			g_noflash[id] = true
		}
		case 4:
		{
			if(user_has_weapon(id, CSW_HEGRENADE))
			{
				color(id, ".v%s.g Ai deja un.e Napalm Nade.g.", TAG)
				menu_destroy(menu);
				return PLUGIN_HANDLED;
			}
			ham_give_weapon(id, "weapon_hegrenade")
		}
		case 5:
		{
			if(user_has_weapon(id, CSW_FLASHBANG))
			{
				color(id, ".v%s.g Ai deja un.e Frost Nade.g.", TAG)
				menu_destroy(menu);
				return PLUGIN_HANDLED;
			}
			ham_give_weapon(id, "weapon_flashbang")
		}
		case 6:
		{
			if(user_has_weapon(id, CSW_SMOKEGRENADE) && have_killnade[id])
			{
				color(id, ".v%s.g Ai deja un.e KILL NADE.g.", TAG)
				menu_destroy(menu);
				return PLUGIN_HANDLED;
			}
			ham_give_weapon(id, "weapon_smokegrenade")
			have_killnade[id] = true
		}
	}
	color(id, ".v%s.g Ai cumparat.e %s.g cu.e %d$.g.", TAG, FURIEN_ITEMS[item], FURIEN_COST[item])
	g_money[id] -= FURIEN_COST[item]
	emit_sound(id, CHAN_ITEM, misc_sound_wav[0], 1.0, ATTN_NORM, 0, PITCH_NORM)
	menu_destroy(menu);
	return PLUGIN_HANDLED;
}
	
public anti_furien_handler(id, menu, item)
{
	if(item == MENU_EXIT)
	{
		menu_destroy(menu);
		return PLUGIN_HANDLED;
	}
	if(item >= sizeof ANTI_FURIEN_ITEMS) return PLUGIN_HANDLED;
	
	if(!is_user_alive(id))
	{
		menu_destroy(menu);
		color(id, ".v%s.g Esti mort. Nu poti cumpara.e %s.g.", TAG, ANTI_FURIEN_ITEMS[item])
		return PLUGIN_HANDLED;
	}
	
	if(get_user_team(id) != 2)
	{
		menu_destroy(menu);
		shop_furien(id)
		return PLUGIN_HANDLED;
	}
	
	if(g_money[id] < ANTI_FURIEN_COST[item])
	{
		menu_destroy(menu);
		color(id, ".v%s.g Nu ai destui bani pentru.e %s.g. Iti mai trebuiesc:.e %d$.g.", TAG, ANTI_FURIEN_ITEMS[item], ANTI_FURIEN_COST[item] - g_money[id])
		return PLUGIN_HANDLED;
	}
	
	switch(item)
	{
		case 0:
		{
			if(g_furiendetector[id])
			{
				color(id, ".v%s.g Ai deja.e Furien Detector.g.", TAG)
				menu_destroy(menu);
				return PLUGIN_HANDLED;
			}
			g_furiendetector[id] = true
		}
		case 1:
		{
			if(get_user_health(id) == 280)
			{
				color(id, ".v%s.g Ai deja maximul de HP.", TAG)
				menu_destroy(menu);
				return PLUGIN_HANDLED;
			}
			else if(get_user_health(id) + 50 > 200)
				set_user_health(id, 200)
			else
				set_user_health(id, get_user_health(id) + 50)
		}
		case 2:
		{
			if(get_user_armor(id) == 250)
			{
				color(id, ".v%s.g Ai deja maximul de armura.", TAG)
				menu_destroy(menu);
				return PLUGIN_HANDLED;
			}	
			else if(get_user_armor(id) + 60 > 250)
				set_user_armor(id, 250)
			else
				set_user_armor(id, get_user_armor(id) + 60)
		}
		case 3:
		{
			if(g_nofrost[id])
			{
				color(id, ".v%s.g Ai deja.e No Frost.g.", TAG)
				menu_destroy(menu);
				return PLUGIN_HANDLED;
			}
			g_nofrost[id] = true
		}
		case 4:
		{
			if(user_has_weapon(id, CSW_HEGRENADE))
			{
				color(id, ".v%s.g Ai deja un.e He Grenade.g.", TAG)
				menu_destroy(menu);
				return PLUGIN_HANDLED;
			}
			ham_give_weapon(id, "weapon_hegrenade")
		}
		case 5:
		{
			if(user_has_weapon(id, CSW_FLASHBANG))
			{
				color(id, ".v%s.g Ai deja un.e Flash Bang.g.", TAG)
				menu_destroy(menu);
				return PLUGIN_HANDLED;
			}
			ham_give_weapon(id, "weapon_flashbang")
		}
	}
	color(id, ".v%s.g Ai cumparat.e %s.g cu.e %d$.g.", TAG, ANTI_FURIEN_ITEMS[item], ANTI_FURIEN_COST[item])
	g_money[id] -= ANTI_FURIEN_COST[item]
	emit_sound(id, CHAN_ITEM, misc_sound_wav[0], 1.0, ATTN_NORM, 0, PITCH_NORM)
	menu_destroy(menu);
	return PLUGIN_HANDLED;
}

bool:is_point_visible(Float:start[3], Float:end[3], ignore_ent)
{
	static pentru
	pentru = create_tr2()
	
	engfunc(EngFunc_TraceLine, start, end, IGNORE_MONSTERS, ignore_ent, pentru)
	
	static Float:dist
	get_tr2(pentru, TR_flFraction, dist)
	
	free_tr2(pentru)
	
	return ((dist == 1.0) ? true : false)
}

public reset_player_model(id)
{
	if(!is_user_connected(id))
		return false;

	if(!flag_get(g_HasCustomModel, id))
		return true;
	
	remove_task(id+TASK_MODELCHANGE)
	flag_unset(g_HasCustomModel, id)
	fm_cs_reset_user_model(id)
	
	return true;
}

public fm_cs_set_user_model(taskid)
	set_user_info(ID_MODELCHANGE, "model", g_CustomPlayerModel[ID_MODELCHANGE])

stock fm_cs_get_user_model(id, model[], len)
	get_user_info(id, "model", model, len)

stock fm_cs_reset_user_model(id)
{
	copy(g_CustomPlayerModel[id], charsmax(g_CustomPlayerModel[]), "gordon")
	fm_cs_user_model_update(id+TASK_MODELCHANGE)
}

stock fm_cs_user_model_update(taskid)
{
	new Float:current_time
	current_time = get_gametime()
	
	if(current_time - g_ModelChangeTargetTime >= MODELCHANGE_DELAY)
	{
		fm_cs_set_user_model(taskid)
		g_ModelChangeTargetTime = current_time
	}
	else
	{
		set_task((g_ModelChangeTargetTime + MODELCHANGE_DELAY) - current_time, "fm_cs_set_user_model", taskid)
		g_ModelChangeTargetTime = g_ModelChangeTargetTime + MODELCHANGE_DELAY
	}
}

stock color(const id, const input[], any:...)
{
	new count = 1, players[32];
	static msg[191]
	vformat(msg, 190, input, 3)
	
	replace_all(msg, 190, ".v", "^4")
	replace_all(msg, 190, ".g", "^1")
	replace_all(msg, 190, ".e", "^3")
	
	if(id) players[0] = id; else get_players(players, count, "ch")
	{
		for (new i = 0; i < count; i++)
		{
			if(IsPlayer(players[i]))
			{
				message_begin(MSG_ONE_UNRELIABLE, g_msgSayText, _, players[i])
				write_byte(players[i]);
				write_string(msg);
				message_end();
			}
		}
	}
}

public AddCommas(iNum , szOutput[] , iLen)
{
	new szTmp[15], iOutputPos, iNumPos, iNumLen;

	if(iNum < 0)
	{
		szOutput[iOutputPos++] = '-'
		iNum = abs(iNum)
	}

	iNumLen = num_to_str(iNum, szTmp, charsmax(szTmp))

	if(iNumLen <= 3)
		iOutputPos += copy(szOutput[iOutputPos], iLen, szTmp)
	else
	{
		while((iNumPos < iNumLen) && (iOutputPos < iLen)) 
		{
			szOutput[iOutputPos++] = szTmp[iNumPos++]
		
			if((iNumLen - iNumPos) && !((iNumLen - iNumPos) % 3)) 
				szOutput[iOutputPos++] = ','
		}
		szOutput[iOutputPos] = EOS
	}
	return iOutputPos;
}

color_chat(team_format, player, player_team, color, const chat_msg[], ...)
{
	static msg[192]
	vformat(msg, charsmax(msg) - 1, chat_msg, 6)
	
	if(team_format)
	{
		static id, i, players[32], count
		get_players(players, count, "e", team_names[player_team])
		
		for(i = 0; i < count; i++)
		{
			id = players[i]
			
			if(!id) continue;
			
			message_begin(MSG_ONE_UNRELIABLE, g_msgSayText, _, id)
			write_byte(player)
			write_string(msg)
			message_end()
			
		}
	}
	else
	{
		if(player_team == color)
		{
			message_begin(MSG_BROADCAST, g_msgSayText)
			write_byte(player)
			write_string(msg)
			message_end()
		}
		else
		{
			message_begin(MSG_BROADCAST, g_msg_teaminfo)
			write_byte(player)
			write_string(team_names[color])
			message_end()
			
			message_begin(MSG_BROADCAST, g_msgSayText)
			write_byte(player)
			write_string(msg)
			message_end()
			
			message_begin(MSG_BROADCAST, g_msg_teaminfo)
			write_byte(player)
			write_string(team_names[player_team])
			message_end()
		}
	}
}

stock fm_cs_get_user_team(id)
{
	if(pev_valid(id) != PDATA_SAFE)
		return FM_CS_TEAM_UNASSIGNED;
	
	return get_pdata_int(id, OFFSET_CSTEAMS, OFFSET_LINUX);
}

stock get_name(id)
{
	static name[32];
	get_user_name(id, name, charsmax(name) - 1)
	return name;
}

stock ham_give_weapon(id, const weapon[])
{
    if(!equal(weapon,"weapon_",7)) return 0;

    new wEnt = engfunc(EngFunc_CreateNamedEntity,engfunc(EngFunc_AllocString,weapon));
    if(!pev_valid(wEnt)) return 0;

    set_pev(wEnt, pev_spawnflags, SF_NORESPAWN);
    dllfunc(DLLFunc_Spawn, wEnt);
    
    if(!ExecuteHamB(Ham_AddPlayerItem,id,wEnt))
    {
        if(pev_valid(wEnt)) set_pev(wEnt,pev_flags,pev(wEnt,pev_flags) | FL_KILLME);
        return 0;
    }

    ExecuteHamB(Ham_Item_AttachToPlayer, wEnt, id)
    return 1;
}

stock ham_strip_weapon(id,weapon[])
{
    if(!equal(weapon,"weapon_",7)) return 0;

    new wId = get_weaponid(weapon);
    if(!wId) return 0;

    new wEnt;
    while((wEnt = engfunc(EngFunc_FindEntityByString,wEnt,"classname",weapon)) && pev(wEnt,pev_owner) != id) {}
    if(!wEnt) return 0;

    if(get_user_weapon(id) == wId) ExecuteHamB(Ham_Weapon_RetireWeapon,wEnt);

    if(!ExecuteHamB(Ham_RemovePlayerItem,id,wEnt)) return 0;
    ExecuteHamB(Ham_Item_Kill,wEnt);

    set_pev(id,pev_weapons,pev(id,pev_weapons) & ~(1<<wId));

    if(wId == CSW_C4)
    {
        cs_set_user_plant(id,0,0);
        cs_set_user_bpammo(id,CSW_C4,0);
    }
    else if(wId == CSW_SMOKEGRENADE || wId == CSW_FLASHBANG || wId == CSW_HEGRENADE)
        cs_set_user_bpammo(id, wId, 0);

    return 1;
}

stock msg_create_fog(iRed, iGreen, iBlue, iDensity) 
{     
	new const fog_density[] = { 0, 0, 0, 0, 111, 18, 3, 58, 111, 18, 125, 58, 66, 96, 27, 59, 90, 101, 60, 59, 90,
	101, 68, 59, 10, 41, 95, 59, 111, 18, 125, 59, 111, 18, 3, 60, 68, 116, 19, 60 }

	new dens
	dens = (4 * iDensity)
 
	message_begin(MSG_BROADCAST, g_msgfog, { 0, 0, 0 }, 0)
	write_byte(iRed)
	write_byte(iGreen)
	write_byte(iBlue)
	write_byte(fog_density[dens])
	write_byte(fog_density[dens + 1])
	write_byte(fog_density[dens + 2])
	write_byte(fog_density[dens + 3])
	message_end()
}

stock fm_cs_set_user_deaths(id, value)
{
	if(pev_valid(id) != PDATA_SAFE)
		return;
	
	set_pdata_int(id, OFFSET_CSDEATHS, value, OFFSET_LINUX)
}





EDIT : Moderator nu mai modifica ca e gratis de mult versiunea care am pus-o eu stai linistit ca si eu am gasit-o pe filehost.
Last edited by EuSemakka on 06 Nov 2014, 16:48, edited 1 time in total.
User avatar
MzQ*
Membru eXtream
Membru eXtream
Posts: 3473
Joined: 07 Jul 2014, 18:30
Detinator Steam: Da
Fond eXtream: 0
Has thanked: 10 times
Been thanked: 8 times
Contact:

24 Oct 2014, 20:31

nu aveti si resursele ;))
Image
User avatar
^ionutz^
Fost moderator
Fost moderator
Posts: 1995
Joined: 05 Oct 2013, 15:12
Detinator Steam: Da
CS Status: activitate scazuta !
SteamID: /id/ionutz_cs/
Reputatie: Fost moderator ajutator
Location: Galati
Has thanked: 46 times
Been thanked: 23 times

24 Oct 2014, 21:59

De unde aveți atatea pluginuri private?
User avatar
EuSemakka
Membru, skill +1
Membru, skill +1
Posts: 301
Joined: 26 Nov 2013, 17:40
Detinator Steam: Da
Detinator server CS: Furien.FaraLaG.Ro
Has thanked: 38 times
Been thanked: 7 times

25 Oct 2014, 15:35

Am si resursele pm sa vi le dau.
User avatar
YONTU
Scripter eXtreamCS
Scripter eXtreamCS
Posts: 2466
Joined: 10 May 2013, 14:25
Detinator Steam: Nu
CS Status: Everyone is looking at ur shoes
Reputatie: Moderator ajutator
Fost scripter eXtreamCS
Location: Gura Humorului
Has thanked: 256 times
Been thanked: 288 times
Contact:

25 Oct 2014, 16:55

EuSemakka wrote:Am si resursele pm sa vi le dau.
Daca tu vorbesti la plural, ce rost mai are sa-ti dam PM, cand tu le poti posta direct aici? :meme :meme
„Peste douăzeci de ani vei fi dezamăgit din cauza lucrurilor pe care nu le-ai făcut, nu din cauza celor pe care le-ai făcut.” - Mark Twain
„Asa e si in viata, hotii castiga, prostii care invata pierd.” - Mihai Nemeș


Bio.LeagueCs.Ro - Biohazard v4.4 Xmas Edition
discord: IonutC#5114

Experinta in: Java/Spring boot/Angular/C/C++/C#/Javascript/Python/HTML/CSS/Pawn/SQL
Ai nevoie de ajutorul meu? Ma poti gasi doar la adresa de discord de mai sus.
User avatar
EuSemakka
Membru, skill +1
Membru, skill +1
Posts: 301
Joined: 26 Nov 2013, 17:40
Detinator Steam: Da
Detinator server CS: Furien.FaraLaG.Ro
Has thanked: 38 times
Been thanked: 7 times

25 Oct 2014, 17:38

The YONTU wrote:
EuSemakka wrote:Am si resursele pm sa vi le dau.
Daca tu vorbesti la plural, ce rost mai are sa-ti dam PM, cand tu le poti posta direct aici? :meme :meme
Poate nu vreau sa le pun aici :) le dau doar in privat ca asa vreau eu.
User avatar
^ionutz^
Fost moderator
Fost moderator
Posts: 1995
Joined: 05 Oct 2013, 15:12
Detinator Steam: Da
CS Status: activitate scazuta !
SteamID: /id/ionutz_cs/
Reputatie: Fost moderator ajutator
Location: Galati
Has thanked: 46 times
Been thanked: 23 times

25 Oct 2014, 20:01

models
sound
sprites
Cu placere
User avatar
FlyingSnow
Membru, skill +2
Membru, skill +2
Posts: 825
Joined: 01 Oct 2012, 02:22
Detinator Steam: Da
Detinator server CS: Dap.
SteamID: Nu-i public.
Has thanked: 26 times
Been thanked: 52 times
Contact:

06 Nov 2014, 14:14

Foloseste careva remake pe servere linux :)? Are bugg-uri ceva.. :D?
FuckingAwesome
Membru, skill +1
Membru, skill +1
Posts: 111
Joined: 02 Sep 2014, 15:57
Detinator Steam: Nu
CS Status: Citesc forumul eXtreamCS.com...!
Fond eXtream: 0
Contact:

06 Nov 2014, 15:05

Poate scoate careva efectele alea de la HE/SMOKE (DE LA GRENAZI IN GENERAL, provoaca laag )
Cosmin
Fost moderator
Fost moderator
Posts: 9362
Joined: 06 Jul 2013, 22:08
Detinator Steam: Da
Detinator server CS: Nu
Reputatie: Fost eXtream Mod
Fost Scripter eXtreamCS
Nume anterior: scosmynnnn
Has thanked: 492 times
Been thanked: 547 times

06 Nov 2014, 15:07

am testat si eu ceva timp cu cyby ,nu avea buguri insa nu este ultima versiune ;)

@fucking.... ai categoria modificari
Post Reply

Return to “Cereri”

  • Information
  • Who is online

    Users browsing this forum: No registered users and 19 guests