Furien XP Mode by Hades Ownage

Pluginuri pentru modul AmxModX.

Moderators: Moderatori ajutatori, Moderatori, Echipa eXtreamCS.com

Post Reply
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:

21 May 2013, 20:42

:) Ce sa faca trq ma ? ca ala nu stie 1 langa 1 cat face:|
am zis.. daca tot a ajuns public.. poate ma ajuta :(
RoyalServer
User avatar
sDs|Aragon*
Membru, skill +2
Membru, skill +2
Posts: 576
Joined: 29 Dec 2011, 21:38
Detinator Steam: Da
SteamID: Mihai_Parkour10
Reputatie: Fost scripter eXtreamCS
Has thanked: 4 times
Been thanked: 132 times

21 May 2013, 20:50

Sursa stearsa la cerere.
Last edited by sDs|Aragon* on 22 May 2013, 18:58, edited 1 time in total.
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:

21 May 2013, 20:55

Aragon da eroare .

:) Asa l-am fost facut si eu prima data.. dar nu a mers.:)) uite.

Image
Askwrite
Moderator ajutator
Moderator ajutator
Posts: 345
Joined: 26 Apr 2013, 21:59
Detinator Steam: Da
CS Status: Scriptez...!
Reputatie: Fost moderator ajutator
Has thanked: 6 times
Been thanked: 55 times
Contact:

21 May 2013, 21:34

| Afiseaza codul
#include < amxmodx >
#include < amxmisc>
#include < nvault > 
#include < engine >
#include < cstrike >
#include < hamsandwich >
#include < fakemeta >
#include < fakemeta_util >
#include < fun >
#include < csx >
#include < xs >
#include < colorchat >
#include < dhudmessage >

#define PLUGIN "Furien XP Mod"
#define VERSION "0.0.1"
#define AUTHOR "hadesownage"

#define is_ent_flare(%1) (pev(%1, pev_iuser4) == 1337) ? 1 : 0

new const szPrefix [ ] = "[Furien XP Mod]^3 -";
new Level [ 33 ], eXP [ 33 ];
new KillXp, HsXp, HeXp, KnifeXp;
new g_Menu [ 33 ];
new g_iCount[ 33 ];
new g_trail;
new amx_gamename;
#define TE_SPRITETRAIL 15
new g_damage;
new g_damages;

new gFurienXP, Vault;

new g_MaxPlayers;

new g_FuriensWin = 0;
new g_AntiFuriensWin = 0;

new gMsgScreenShake;

new g_FurienHealth;
new g_AntiFurienHealth;

#define VIP_ACCESS ADMIN_LEVEL_H

new bool:UserHaveHpAndAp [ 33 ];
new bool:UserHaveHeGrenade [ 33 ];
new bool:UserHaveGodMode [ 33 ];
new bool:UserHaveNoClip [ 33 ];
new bool:UserHaveTeleport [ 33 ];
new bool:UserHaveSuperKnife [ 33 ];
new bool:UserHaveDualMp5 [ 33 ];

new bool:UserHasChoosed [ 33 ];
new bool:g_CanUseHe [ 33 ];

new const buy_FurienHealth[] = "exhealth/zm_buyhealth.wav" 
new const buy_AntiFurienHealth[] = "exhealth/hm_buyhealth.wav" 

static const COLOR[] = "^x04"; //green
static const CONTACT[] = "/vip pentru detalii";

new maxplayers;
new gmsgSayText;
new g_ScoreAttrib;

//======NICK CHANGE-----
new const g_reason[] = "Nu este permisa schimbarea nickului pe server !";

new const g_name[] = "name";
//-------END NICK=====

//======CREDITS-----
new PlayerCredits[10000];
new SymbolsName;
//-------END CREDITS=====

//-------POWERS======

//--| Menu/Power |--//
new HasPower[33], bool:HasChose[33];
//--| HE Grenade |--//
new HE_Cooldown[33] = 0;
//--| GodMode |--//
new GodMode_Cooldown[33] = 0;
new GodMode_DurationCooldown[33] = 0;
//--| Drop Enemy Weapon |--//
new DropSprite, DropSprite2;
new Drop_Cooldown[33] = 0;
new const DROP_HIT_SND[] = "Furien/DropWpn_HIT.wav";
const WPN_NOT_DROP = ((1<<2)|(1<<CSW_HEGRENADE)|(1<<CSW_SMOKEGRENADE)|(1<<CSW_FLASHBANG)|(1<<CSW_KNIFE)|(1<<CSW_C4));
//--| Freeze |--//
new Freeze_Cooldown[33] = 0;
new FreezeSprite, FreezeSprite3;
new Frozen[33];
new Float:TempSpeed[33], Float:TempGravity[33];
new const FreezeSprite2[] = { "models/glassgibs.mdl" };
new const FROSTBREAK_SND[][] = { "Furien/FrostBreak.wav" };
new const FROSTPLAYER_SND[][] = { "Furien/FrostPlayer.wav" };
const BREAK_GLASS = 0x01;
const UNIT_SECOND = (1<<12);
const FFADE_IN = 0x0000;
//--| Drag |--//
new DRAG_MISS_SND[] = "Furien/DragMiss.wav";
new DRAG_HIT_SND[] = "Furien/DragHit.wav";
new Hooked[33], Unable2move[33], OvrDmg[33];
new Float:LastHook[33];
new bool: BindUse[33] = false, bool: Drag_I[33] = false;
new Drag_Cooldown[33] = 0;
new bool:Not_Cooldown[33];
new DragSprite;
//--| Teleport |--//
new TeleportSprite, TeleportSprite2, TeleportSprite3;
new Teleport_Cooldown[33];
new const SOUND_BLINK[] = { "weapons/flashbang-1.wav" };
const UNIT_SEC = 0x1000;
const FFADE = 0x0000;
//--| NoRecoil |--//
new Float: cl_pushangle[33][3];
const WEAPONS_BITSUM = (1<<CSW_KNIFE|1<<CSW_HEGRENADE|1<<CSW_FLASHBANG|1<<CSW_SMOKEGRENADE|1<<CSW_C4);
//--| Cvars |--//
new CvarDropDistance,
CvarDropCooldown, CvarFreezeDuration, CvarFreezeCooldown, CvarFreezeDistance, CvarDragSpeed, CvarDragCooldown,
CvarDragDmg2Stop, CvarDragUnb2Move, CvarTeleportCooldown, CvarTeleportRange;

//-------END POWERS=====

//-------SALAMANDER=====
new const fire_classname[] = "fire_salamander";
new const fire_spr_name[] = "sprites/fire_salamander.spr";

new const v_model[] = "models/furien/v_salamander.mdl";
new const p_model[] = "models/furien/p_salamander.mdl";
new const w_model[] = "models/furien/w_salamander.mdl";

new const fire_sound[] = "weapons/flamegun-2.wav";

#define CSW_SALAMANDER CSW_M249
#define PEV_ENT_TIME pev_fuser1
#define TASK_FIRE 3123123
#define TASK_RELOAD 2342342
new g_had_salamander[33], bool:is_firing[33], bool:is_reloading[33], Float:g_last_fire[33],
bool:can_fire[33], g_reload_ammo[33], g_ammo[33];

enum {
	IDLE_ANIM = 0,
	DRAW_ANIM = 4,
	RELOAD_ANIM = 3,
	SHOOT_ANIM = 1,
	SHOOT_END_ANIM = 2
}

new g_salamander;
new cvar_dmgrd_start, cvar_dmgrd_end, cvar_fire_delay, cvar_max_clip;

//-------END SALAMANDER=======

//---------FURIEN BONUS BOX======

new CvarFurienSpeed, CvarAntiFurienSpeed;
new bool:HasSpeed[33], bool:HasTeleport[33], bool:LowSpeed [ 33 ];
new const ClassName[] = "BonusBox"
new Model[2][] = {
	"models/furien/cadout_new.mdl",
	"models/furien/cadouct.mdl"
}

new Model_Yellow[2][] = {
	"models/furien/cadout_galben.mdl",
	"models/furien/cadouct_galben.mdl"
}

const UNIT_SEC = 0x1000
const FFADE = 0x0000

#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
enum {
	Red,
	Green,
	Blue
};

//---------END FURIEN BONUS BOX======

//---------K1ASUS WEAPON ( SCORPION )======

#define ENG_NULLENT		-1
#define EV_INT_WEAPONKEY	EV_INT_impulse
#define k1ases_WEAPONKEY	890
#define MAX_PLAYERS  			  32
#define IsValidUser(%1) (1 <= %1 <= g_MaxPlayers)
#define write_coord_f(%1)	engfunc(EngFunc_WriteCoord,%1)

const USE_STOPPED = 0
const OFFSET_ACTIVE_ITEM = 373
const OFFSET_WEAPONOWNER = 41
const OFFSET_LINUX = 4
const OFFSET_LINUX_WEAPONS = 4

#define WEAP_LINUX_XTRA_OFF			4
#define m_fKnown				44
#define m_flNextPrimaryAttack 			46
#define m_flTimeWeaponIdle			48
#define m_iClip					51
#define m_fInReload				54
#define PLAYER_LINUX_XTRA_OFF			4
#define m_flNextAttack				83

#define k1ases_RELOAD_TIME 2.5

new bool:k1ases_weapon [ 33 ];

new const Fire_Sounds[][] = { "weapons/k1ar-1.wav" }
new const sprites_exp[] = "sprites/deimosexp.spr"
new const explode_sound[] = "cso/deimos_skill_start.wav"

new const GUNSHOT_DECALS[] = { 41, 42, 43, 44, 45 }
new k1ases_V_MODEL[64] = "models/furien/v_k1ases.mdl"
new k1ases_P_MODEL[64] = "models/furien/p_k1ases.mdl"
new k1ases_W_MODEL[64] = "models/furien/w_k1ases.mdl"

new cvar_dmg_k1ases, cvar_recoil_k1ases, cvar_clip_k1ases, cvar_k1ases_ammo , cvar_k1asesammo , cvar_k1ases_delay , cvar_k1ases_claw , cvar_rad
new g_orig_event_k1ases, g_clip_ammo[33] , cvar_k1ases_fire
new Float:cl_pushangle_k1asus[MAX_PLAYERS + 1][3], m_iBlood[2]
new g_k1ases_TmpClip[33] , oldweap[33] ,  g_has_k1ases[33] , g_ammoclaw[33] , g_delay[33]

new sprites_exp_index

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)
new const WEAPONENTNAMES[][] = { "", "weapon_p228", "", "weapon_scout", "weapon_hegrenade", "weapon_xm1014", "weapon_c4", "weapon_mac10",
	"weapon_aug", "weapon_smokegrenade", "weapon_elite", "weapon_fiveseven", "weapon_ump45", "weapon_sg550",
	"weapon_galil", "weapon_famas", "weapon_usp", "weapon_glock18", "weapon_awp", "weapon_mp5navy", "weapon_m249",
	"weapon_m3", "weapon_m4a1", "weapon_tmp", "weapon_g3sg1", "weapon_flashbang", "weapon_deagle", "weapon_sg552",
"weapon_ak47", "weapon_knife", "weapon_p90" }

//---------END K1ASUS WEAPON ( SCORPION )======

//---------QUAD BARREL======

#define m_pPlayer				41
#define m_flNextPrimaryAttack		46
#define m_flNextSecondaryAttack	47
#define m_flTimeWeaponIdle		48
#define m_iClip				51
#define m_fInReload				54
#define m_fInSpecialReload		55

#define XTRA_OFS_WEAPON			4
#define XTRA_OFS_PLAYER		5
#define m_flNextAttack		83
#define m_rgAmmo_player_Slot0	376

new const qb_v_model[] = "models/furien/v_qbarrel.mdl"
new const qb_p_model[] = "models/furien/p_qbarrel.mdl"
new const qb_w_model[] = "models/furien/w_qbarrel.mdl"

new const qb_sound[5][] = {
	"weapons/qbarrel_clipin1.wav",
	"weapons/qbarrel_clipin2.wav",
	"weapons/qbarrel_clipout1.wav",
	"weapons/qbarrel_draw.wav",
	"weapons/qbarrel_shoot.wav"
}

#define CSW_QB CSW_XM1014
new g_had_qb[33], Float:g_last_fire_qb[33], Float:g_last_fire2[33], g_bloodspray, g_blood
new cvar_default_clip, cvar_delayattack, cvar_reloadtime, cvar_randmg_start, cvar_randmg_end
new g_quad_barrel

//---------END QUAD BARREL======

//---------DRAGON CANNON======

#define CSW_CANNON CSW_UMP45
#define weapon_cannon "weapon_ump45"

#define DEFAULT_W_MODEL "models/w_ump45.mdl"
#define WEAPON_SECRET_CODE 4965
#define CANNONFIRE_CLASSNAME "cannon_round"

// Fire Start
#define WEAPON_ATTACH_F 30.0
#define WEAPON_ATTACH_R 10.0
#define WEAPON_ATTACH_U -10.0

#define TASK_RESET_AMMO 5434

const pev_ammo = pev_iuser4

new const WeaponModel[3][] = {
	"models/furien/v_cannon.mdl",
	"models/furien/p_cannon.mdl",
	"models/furien/w_cannon.mdl"
}

new const WeaponSound[2][] = {
	"weapons/cannon-1.wav",
	"weapons/cannon_draw.wav"
}

new const WeaponResource[5][] = {
	"sprites/fire_cannon.spr",
	"sprites/weapon_cannon.txt",
	"sprites/640hud69.spr",
	"sprites/640hud2_cso.spr",
	"sprites/smokepuff.spr"
}

enum {
	MODEL_V = 0,
	MODEL_P,
	MODEL_W
}

enum {
	CANNON_ANIM_IDLE = 0,
	CANNON_ANIM_SHOOT1,
	CANNON_ANIM_SHOOT2,
	CANNON_ANIM_DRAW
}

new g_had_cannon[33], g_old_weapon[33], g_cannon_ammo[33], g_got_firsttime[33], Float:g_lastshot[33]
new g_cvar_defaultammo, g_cvar_reloadtime, g_cvar_firespeed, g_cvar_radiusdamage, g_cvar_damage
new Float:g_temp_reloadtime, g_smokepuff_id

//---------END DRAGON CANNON======

//---------M79 WEAPON======

#define HUD_HIDE_CROSS (1<<6)

// Weapon/Grenade models
new const m79_P_MODEL[] = "models/furien/p_m79.mdl"
new const m79_V_MODEL[] = "models/furien/v_m79fix2.mdl"
new const m79_W_MODEL[] = "models/furien/w_m79.mdl"
new const m79_GRENADE_MODEL[] = "models/grenade.mdl"

// Fire sound
new const m79_GRENADE_SHOOT[] = "weapons/m79_fire1.wav"
new const m79_GRENADE_CLIPIN[] = "weapons/m79_clipin.wav"
new const m79_GRENADE_CLIPON[] = "weapons/m79_clipon.wav"
new const m79_GRENADE_CLIPOUT[] = "weapons/m79_clipout.wav"
new const m79_GRENADE_DRAW[] = "weapons/m79_draw.wav"

// Sprites
new const m79_GRENADE_TRAIL[] = "sprites/laserbeam.spr"
new const m79_GRENADE_EXPLOSION[] = "sprites/m79_exp.spr"
new const m79_GRENADE_SMOKE[] = "sprites/black_smoke3.spr"

// Cached sprite indexes
new sTrail, sExplo, sSmoke

// Sprites
new gmsgWeaponList

// Bodyparts and blood
new mdl_gib_flesh, mdl_gib_head, mdl_gib_lung, mdl_gib_spine,
blood_drop, blood_spray

// Item ID
new m79

// Player variables
new g_hasM79[33] // whether player has M79
new g_FireM79[33] // player is shooting
new g_canShoot[33] // player can shoot
new Float:g_last_shot_time[33] // last shot time
new grenade_count[33] // current grenade count
new bool:draw_wpn[33] //выбираем пукалку
new bool:hasOnHandM79[33],bool:canfire[33],
cvar_granade_damage_radius,
cvar_granade_max_damage
// Message ID's
new g_msgScreenShake,g_msgStatusText
new gmsgDeathMsg, gmsgScoreInfo

// Customization(CHANGE HERE)
#define LAUNCHER_COST	20
new Float:delayshot = 3.0
// Tasks
#define TASK_HUDAMMO	    1337
#define TASK_FRSTSHT	    1437
#define ID_HUDAMMO (taskid - TASK_HUDAMMO)
#define ID_SHT (taskid - TASK_FRSTSHT)

enum {
	anim_idle,
	anim_shot1,
	anim_shot2,
	anim_draw,
}

//---------END M79 WEAPON======

new dual_mp5_v_model [ 66 ] = "models/furien/weapons/v_dualmp5.mdl";
new dual_mp5_p_model [ 66 ] = "models/furien/weapons/p_dualmp5.mdl";

new infinity_knife_v_model [ 66 ] = "models/furien/knifes/v_infinity_knife1.mdl";
new infinity_knife_p_model [ 66 ] = "models/furien/knifes/p_infinity_knife1.mdl";

new katana_knife_v_model [ 66 ] = "models/furien/knifes/v_katana.mdl";
new katana_knife_p_model [ 66 ] = "models/furien/knifes/p_katana.mdl";

new double_katana_v_knife_model [ 66 ] = "models/furien/knifes/v_double_katana.mdl";
new double_katana_p_knife_model [ 66 ] = "models/furien/knifes/p_double_katana.mdl";

new super_knife_v_model [ 66 ] = "models/furien/knifes/v_natad.mdl";
new super_knife_p_model [ 66 ] = "models/furien/knifes/p_natad.mdl";

new axe_knife_v_model [ 66 ] = "models/furien/knifes/v_vipaxe.mdl";
new axe_knife_p_model [ 66 ] = "models/furien/knifes/p_vipaxe.mdl";

new trainer_v_model [ 66 ] = "models/furien/knifes/v_combatknife.mdl";
new trainer_p_model [ 66 ] = "models/furien/knifes/p_combatknife.mdl";

new ignes_knife_model [ 66 ] = "models/furien/knifes/v_ignes.mdl";
new elf_knife_model [ 66 ] = "models/furien/knifes/v_elf.mdl";

new super_knife_shop_v_model [ 66 ] = "models/furien/knifes/v_superknife_shop.mdl";
// new super_knife_shop_p_model [ 66 ] = "models/furien/knifes/p_superknife_shop.mdl";

new super_knife_shop_v_model2 [ 66 ] = "models/furien/knifes/v_superknife_shop2.mdl";
new super_knife_shop_p_model2 [ 66 ] = "models/furien/knifes/p_superknife_shop2.mdl";

new thompson_v_model [ 66 ] = "models/furien/weapons/v_thompson.mdl";
new thompson_p_model [ 66 ] = "models/furien/weapons/p_thompson.mdl";

new uspx_v_model [ 66 ] = "models/furien/weapons/v_uspx.mdl";
new uspx_p_model [ 66 ] = "models/furien/weapons/p_uspx.mdl";

new hunter_v_model [ 66 ] = "models/furien/weapons/v_f2000.mdl";
new hunter_p_model [ 66 ] = "models/furien/weapons/p_f2000.mdl";

new mage_v_model [ 66 ] = "models/furien/weapons/v_fnc.mdl";
new mage_p_model [ 66 ] = "models/furien/weapons/p_fnc.mdl";

new rogue_v_model [ 66 ] = "models/furien/weapons/v_svdex.mdl";
new rogue_p_model [ 66 ] = "models/furien/weapons/p_svdex.mdl";

new shaman_v_model [ 66 ] = "models/furien/weapons/v_tar21.mdl";
new shaman_p_model [ 66 ] = "models/furien/weapons/p_tar21.mdl";

new warrior_v_model [ 66 ] = "models/furien/weapons/v_kriss.mdl";
new warrior_p_model [ 66 ] = "models/furien/weapons/p_kriss.mdl";

new deklowaz_v_model [ 66 ] = "models/furien/weapons/v_dualkriss.mdl";
new deklowaz_p_model [ 66 ] = "models/furien/weapons/p_dualkriss.mdl";

new flare_v_model [ 66 ] = "models/furien/weapons/v_flare.mdl";
new flare_w_model [ 66 ] = "models/furien/weapons/w_flare.mdl";

new strike_grenade_v_model [ 66 ] = "models/furien/weapons/v_hegrenade.mdl";
new strike_grenade_p_model [ 66 ] = "models/furien/weapons/p_hegrenade.mdl";

new bool:dual_mp5 [ 33 ];
new bool:salamander [ 33 ];
new bool:SalamanderLimit [ 33 ];
new bool:katana_knife [ 33 ];
new bool:double_katana_knife [ 33 ];
new bool:super_knife [ 33 ];
new bool:infinity_knife [ 33 ];
new bool:ignes_knife [ 33 ];
new bool:elf_knife [ 33 ];
new bool:trainer [ 33 ];
new bool:vip_axe_knife [ 33 ];
new bool:hunter [ 33 ];
new bool:mage [ 33 ];
new bool:rogue [ 33 ];
new bool:shaman [ 33 ];
new bool:warrior [ 33 ];
new bool:deklowaz [ 33 ];
new bool:thompson [ 33 ];
new bool:uspx [ 33 ];
new bool:flare [ 33 ];
new bool:druid [ 33 ];
new bool:strike_grenade [ 33 ];
new bool:strike_grenade2 [ 33 ];
new bool:strike_grenade3 [ 33 ];
new bool:super_knife_shop [ 33 ];
new bool:super_knife_shop2 [ 33 ];
new bool:UserHaveQuad [ 33 ];
new bool:UserHaveDragon [ 33 ];
new bool:UserHaveM79 [ 33 ];

new const Levels [ 30 ] =  {
	
	70, //1
	150, //2
	200, //3
	300, //4
	380, //5
	500, //6
	550, //7
	650, //8
	800, //9
	900, //10
	1000, //11
	1200, //12
	1400, //13
	1650, //14
	1800, //15
	2000, //16
	2300, //17
	2600, //18
	3000, //19
	3300, //20
	3600, //21
	4000, //22
	4300, //23
	4900, //24
	5400, //25
	6000, //26
	6500, //27
	7000, //28
	7700, //29
	8000 //30
};

new const Prefix [ 30 +2 ] [ ] = {
	
	"0",
	"1",
	"2",
	"3",
	"4",
	"5",
	"6",
	"7",
	"8",
	"9",
	"10",
	"11",
	"12",
	"13",
	"14",
	"15",
	"16",
	"17",
	"18",
	"19",
	"20",
	"21",
	"22",
	"23",
	"24",
	"25",
	"26",
	"27",
	"28",
	"29",
	"30",
	""
};

public plugin_init ( ) {
	
	register_plugin ( PLUGIN, VERSION, "hadesownage" );
	
	register_clcmd ( "say /xp", "cmdShowXp", -1 );
	register_clcmd ( "say /savexp", "cmdSaveXp", -1 );
	register_clcmd ( "say /level", "cmdShowLevel" );
	register_clcmd ( "say /levele", "cmdShowLevels", -1 );
	register_clcmd ( "say /topxp", "cmdXpTop15", -1 );
	register_clcmd ( "say /clearxp", "cmdClearXp", -1 );
	register_clcmd ( "say /xpmenu", "cmdXpMenu", -1 );
	register_clcmd ( "say /vipweapons", "cmdVipWeaponsMenu", -1 );
	register_clcmd ( "say /class", "cmdClassMenu", -1 );
	register_clcmd ( "say class", "cmdClassMenu", -1 );
	register_clcmd ( "say /refresh", "cmdRefreshXP", -1 );
	register_clcmd ( "say /shop", "cmdShop", -1 );
	register_clcmd ( "say shop", "cmdShop", -1 );
	register_clcmd ( "shop", "cmdShop", -1 );
	register_clcmd ( "say /help", "cmdHelp", -1 );
	register_clcmd ( "say /ajutor", "cmdHelp", -1 );
	register_clcmd ( "say /detalii", "cmdHelp", -1 );
	register_clcmd ( "say /despre", "cmdHelp", -1 );
	register_clcmd ( "say /vip", "cmdShowVipDetails", -1 );
	register_clcmd ( "say /depozit","Depozit", -1 );
	register_clcmd ( "say_team /depozit","Depozit", -1 );
	register_clcmd ( "say /retrage","Retrage", -1 );
	register_clcmd ( "say_team /retrage","Retrage", -1 );
	register_clcmd ( "say /credits","Show_Credits", -1 );
	register_clcmd ( "say /credite","Show_Credits", -1 );
	register_clcmd ( "say_team /credits","Show_Credits", -1 );
	register_clcmd ( "say_team /credite","Show_Credits", -1 );
	register_clcmd ( "+drag","DragStart" );
	register_clcmd ( "-drag","DragEnd" );
	register_clcmd ( "power", "Power" );
	register_clcmd ( "power2", "CmdTeleport" );
	register_clcmd ( "say /furienvip", "cmdCheckVIP", -1 );
	register_clcmd ( "say_team /furienvip", "cmdCheckVIP", -1 );
	register_clcmd ( "vippower", "VIPpower", VIP_ACCESS );
	
	register_concmd ( "amx_givexp", "cmdGiveXp", ADMIN_IMMUNITY, "<target / all> <amount>" );
	register_concmd ( "amx_setxp", "cmdSetXp", ADMIN_IMMUNITY, "<target> <amount>" );
	register_concmd ( "amx_give_credits", "Give_Credits", ADMIN_IMMUNITY, "<target / ct / t / all> <amount>" );
	register_concmd ( "amx_reset_credits", "Reset_Credits", ADMIN_IMMUNITY, "<target / ct / t / all>" );
	
	register_event ( "DeathMsg", "eDeath", "a" );
	register_event ( "DeathMsg", "Death", "a" );
	register_event ( "CurWeapon", "AntiFurienCurrentWeapon", "be", "1=1" );
	register_event ( "CurWeapon", "FurienCurrentWeapon", "be", "1=1" );
	register_event ( "HLTV", "GetRandomPlayer", "a", "1=0", "2=0" );
	//register_event ( "TextMsg", "Round_Restart", "a", "2&#Game_C", "2&#Game_w", "2&#Game_will_restart_in" );
	
	register_forward ( FM_ClientUserInfoChanged, "fwClientUserInfoChanged" );
	register_forward ( FM_PlayerPreThink, "ShowSalamanderIcon" );
	register_forward ( FM_SetModel, "fwd_setmodel" );
	register_forward ( FM_Think, "fwd_think" );
	register_forward ( FM_PlayerPreThink, "ForcePlayerSpeed" );
	register_forward ( FM_CmdStart, "CmdStart" );
	register_forward ( FM_Touch, "Touch" );
	register_forward ( FM_Touch, "Touch_Yellow" );
	register_forward ( FM_GetGameDescription, "GameDesc" ); 
	
	register_logevent ( "round_end", 2, "1=Round_End" );
	register_logevent ( "round_start", 2, "1=Round_Start" );
	
	RegisterHam ( Ham_Spawn, "player", "cmdClassMenu", 1 );
	RegisterHam ( Ham_Spawn, "player", "RefreshWeapons", 1 ); 
	RegisterHam ( Ham_TakeDamage, "player", "FurienAndAntiFurienDamage" );
	RegisterHam ( Ham_Killed, "player", "ham_player_kill" );
	RegisterHam ( Ham_Weapon_PrimaryAttack, "weapon_hegrenade", "ham_PrimaryAttack_He" );
	
	KillXp = register_cvar ( "xm_xp_pr_kill", "10" );
	HsXp = register_cvar ( "xm_xp_pr_hs", "10" ); 
	HeXp = register_cvar ( "xm_xp_pr_nade", "20" );
	KnifeXp = register_cvar ( "xm_xp_pr_knife", "25" );
	
	gFurienXP = nvault_open ( "FurienXPMod" );
	
	g_MaxPlayers = get_maxplayers ( );
	g_ScoreAttrib = get_user_msgid("ScoreAttrib");
	
	maxplayers = get_maxplayers()
	gmsgSayText = get_user_msgid("SayText")
	register_clcmd("say", "handle_say")
	register_cvar("amx_contactinfo", CONTACT, FCVAR_SERVER)
	
	SymbolsName = register_cvar ( "fr_name_symbols", "~`" ); 	//| Symbols Name Restricted |//	
	
	CvarFurienSpeed = register_cvar("amx_bonusbox_furien_speed", "1000");
	CvarAntiFurienSpeed = register_cvar("amx_bonusbox_anitfurien_speed", "750");
	
	gMsgScreenShake = get_user_msgid("ScreenShake");
	
	amx_gamename = register_cvar( "amx_gamename", "XP Mod by Hades" ); 
	
	set_task ( 30.0, "GiveBonus", 38427236, _, _, "b" );
	set_task( 1.0, "ShowHud", _, _, _, "b" );
	set_task( 120.0, "ShowMessages", _, _, _, "b" );
	//set_task( 10.0, "UpdateHudScore", _, _, _, "b" );
	//set_task( 60.0, "CheckTime", _, _, _, "b", 0 );
	
	// POWERS ------------------------------------
	register_event("DeathMsg", "Death", "a");
	RegisterHam(Ham_TakeDamage, "player", "TakeDamage");
	register_forward(FM_PlayerPreThink, "PlayerPreThink");
	
	new weapon_name[24];
	for (new i = 1; i <= 30; i++) {
		if (!(WEAPONS_BITSUM & 1 << i) && get_weaponname(i, weapon_name, 23)) {
			RegisterHam(Ham_Weapon_PrimaryAttack, weapon_name, "Weapon_PrimaryAttack_Pre");
			RegisterHam(Ham_Weapon_PrimaryAttack, weapon_name, "Weapon_PrimaryAttack_Post", 1);
		}
	}
	
	CvarDropDistance = register_cvar ("vip_drop_distance", "5000");		// Distanta maxima la care poate ajunge puterea
	CvarDropCooldown = register_cvar ("vip_drop_cooldown" , "30.0");		// Drop Enemy WPN Cooldown
	CvarFreezeDuration = register_cvar("vip_freeze_duration", "3.0");	// Freeze Duration
	CvarFreezeCooldown = register_cvar("vip_freeze_cooldown", "30.0");	// Freeze Cooldown
	CvarFreezeDistance = register_cvar ("vip_freeze_distance", "5000");	// Distanta maxima la care poate ajunge puterea
	CvarDragSpeed = register_cvar("vip_drag_speed", "500");			// Drag Speed
	CvarDragCooldown = register_cvar("vip_drag_cooldown", "15.0");		// Drag Cooldown
	CvarDragDmg2Stop = register_cvar("vip_drag_dmg2stop", "50");		// Drag Damage to stop
	CvarDragUnb2Move = register_cvar("vip_drag_unable_move", "1");		// Drag Unable to move
	CvarTeleportCooldown = register_cvar("vip_teleport_cooldown", "20.0");	// Teleport Cooldown
	CvarTeleportRange = register_cvar("vip_teleport_range", "12345");	// Teleport Range
	// POWERS ------------------------------------
	
	// SALAMANDER ------------------------------------
	
	register_event("CurWeapon", "event_curweapon", "be", "1=1");
	register_forward(FM_UpdateClientData, "fw_UpdateClientData_Post", 1);
	RegisterHam(Ham_Spawn, "player", "fw_spawn", 1);
	RegisterHam(Ham_Weapon_Reload, "weapon_m249", "fw_weapon_reload", 1);
	RegisterHam(Ham_Item_Deploy, "weapon_m249", "fw_weapon_deploy", 1);
	RegisterHam(Ham_Item_PostFrame, "weapon_m249", "fw_item_postframe", 1);
	RegisterHam(Ham_Item_AddToPlayer, "weapon_m249", "fw_item_addtoplayer", 1);
	register_forward(FM_CmdStart, "fw_cmdstart");
	register_touch(fire_classname, "*", "fw_touch");
	register_think(fire_classname, "fw_think");
	register_forward(FM_SetModel, "fw_SetModel");
	
	register_clcmd("lastinv", "check_lastinv");
	
	cvar_dmgrd_start = register_cvar("zp_salamander_dmgrandom_start", "65.0");
	cvar_dmgrd_end = register_cvar("zp_salamander_dmgrandom_end", "90.0");
	cvar_fire_delay = register_cvar("zp_salamander_fire_delay", "0.1");
	cvar_max_clip = register_cvar("zp_salamander_max_clip", "100");
	
	// SALAMANDER ------------------------------------
	
	// K1ASUS ----------------------------------------------
	register_message(get_user_msgid("DeathMsg"), "message_DeathMsg")
	register_event("CurWeapon","CurrentWeapon","be","1=1")
	RegisterHam(Ham_Item_AddToPlayer, "weapon_mp5navy", "fw_k1ases_AddToPlayer")
	RegisterHam(Ham_Use, "func_tank", "fw_UseStationary_Post", 1)
	RegisterHam(Ham_Use, "func_tankmortar", "fw_UseStationary_Post", 1)
	RegisterHam(Ham_Use, "func_tankrocket", "fw_UseStationary_Post", 1)
	RegisterHam(Ham_Use, "func_tanklaser", "fw_UseStationary_Post", 1)
	for (new i = 1; i < sizeof WEAPONENTNAMES; i++)
		if (WEAPONENTNAMES[0]) RegisterHam(Ham_Item_Deploy, WEAPONENTNAMES, "fw_Item_Deploy_Post", 1)
	RegisterHam(Ham_Weapon_PrimaryAttack, "weapon_mp5navy", "fw_k1ases_PrimaryAttack")
	RegisterHam(Ham_Weapon_PrimaryAttack, "weapon_mp5navy", "fw_k1ases_PrimaryAttack_Post", 1)
	RegisterHam(Ham_Item_PostFrame, "weapon_mp5navy", "k1ases__ItemPostFrame");
	RegisterHam(Ham_Weapon_Reload, "weapon_mp5navy", "k1ases__Reload");
	RegisterHam(Ham_Weapon_Reload, "weapon_mp5navy", "k1ases__Reload_Post", 1);
	RegisterHam(Ham_TakeDamage, "player", "fw_TakeDamage")
	register_forward(FM_SetModel, "fw_SetModel_k1asus")
	register_forward(FM_UpdateClientData, "fw_UpdateClientData_Post_k1asus", 1)
	register_forward(FM_PlaybackEvent, "fwPlaybackEvent")
	register_forward(FM_CmdStart, "fw_CmdStart")
	
	RegisterHam(Ham_TraceAttack, "worldspawn", "fw_TraceAttack", 1)
	RegisterHam(Ham_TraceAttack, "func_breakable", "fw_TraceAttack", 1)
	RegisterHam(Ham_TraceAttack, "func_wall", "fw_TraceAttack", 1)
	RegisterHam(Ham_TraceAttack, "func_door", "fw_TraceAttack", 1)
	RegisterHam(Ham_TraceAttack, "func_door_rotating", "fw_TraceAttack", 1)
	RegisterHam(Ham_TraceAttack, "func_plat", "fw_TraceAttack", 1)
	RegisterHam(Ham_TraceAttack, "func_rotating", "fw_TraceAttack", 1)
	
	cvar_dmg_k1ases = register_cvar("zp_k1ases_dmg", "1.5")
	cvar_recoil_k1ases = register_cvar("zp_k1ases_recoil", "0.5")
	cvar_clip_k1ases = register_cvar("zp_k1ases_clip", "30")
	cvar_k1ases_ammo = register_cvar("zp_k1ases_ammo", "50")
	cvar_k1asesammo =  register_cvar("zp_k1ases_clawammo", "3")
	cvar_k1ases_delay =  register_cvar("zp_k1ases_delay", "5")
	cvar_k1ases_claw = register_cvar("zp_k1ases_clawdmg", "500")
	cvar_rad =  register_cvar("zp_k1ases_clawrad", "100.0")
	cvar_k1ases_fire = register_cvar("zp_k1ases_speedfire", "0.4")
	
	// K1ASUS ----------------------------------------------
	
	// QUAD BARREL ----------------------------------------------
	
	register_forward(FM_CmdStart, "fm_cmdstart")
	register_forward(FM_UpdateClientData, "fw_UpdateClientData_Post_qb", 1)
	register_forward(FM_SetModel, "fw_SetModel_qb")	
	
	RegisterHam(Ham_TakeDamage, "player", "fw_takedmg")
	RegisterHam(Ham_TraceAttack, "worldspawn", "TraceAttack", 1)
	RegisterHam(Ham_TraceAttack, "player", "TraceAttack", 1)	
	
	RegisterHam(Ham_Weapon_Reload, "weapon_xm1014", "ham_reload", 1)
	RegisterHam(Ham_Weapon_PrimaryAttack, "weapon_xm1014", "ham_priattack", 1)
	RegisterHam(Ham_Item_PostFrame, "weapon_xm1014", "ham_postframe")
	RegisterHam(Ham_Item_AddToPlayer, "weapon_xm1014", "fw_item_addtoplayer_qb", 1)
	
	register_clcmd("lastinv", "check_draw_weapon")
	register_clcmd("slot1", "check_draw_weapon")
	
	cvar_default_clip = register_cvar("zp_qbarrel_default_clip", "4")
	cvar_delayattack = register_cvar("zp_qbarrel_delay_attack", "0.35")
	cvar_reloadtime = register_cvar("zp_qbarrel_reload_time", "3.0")
	
	cvar_randmg_start = register_cvar("zp_qbarrel_randomdmg_start", "400.0")
	cvar_randmg_end = register_cvar("zp_qbarrel_randomdmg_end", "600.0")
	
	register_event("CurWeapon", "event_curweapon_quad", "be", "1=1")
	
	// QUAD BARREL ----------------------------------------------
	
	// DRAGON CANNON ----------------------------------------------
	
	register_event("CurWeapon", "event_CurWeapon_dragon", "be", "1=1")
	
	register_forward(FM_UpdateClientData, "fw_UpdateClientData_Post_dc", 1)
	register_forward(FM_CmdStart, "fw_CmdStart_dc")
	register_forward(FM_SetModel, "fw_SetModel_dc")
	
	register_think(CANNONFIRE_CLASSNAME, "fw_Cannon_Think")
	register_touch(CANNONFIRE_CLASSNAME, "*", "fw_Cannon_Touch")
	
	RegisterHam(Ham_Spawn, "player", "fw_Spawn_Post", 1)
	RegisterHam(Ham_Item_AddToPlayer, weapon_cannon, "fw_AddToPlayer_Post", 1)
	
	g_cvar_defaultammo = register_cvar("cannon_default_ammo", "5")
	g_cvar_reloadtime = register_cvar("cannon_reload_time", "4.0")
	g_cvar_firespeed = register_cvar("cannon_fire_speed", "200.0")
	g_cvar_radiusdamage = register_cvar("cannon_radius_damage", "200.0")
	g_cvar_damage = register_cvar("cannon_damage", "700.0")
	
	register_clcmd("amx_get_dragoncannon", "get_dragoncannon", ADMIN_RCON)
	register_clcmd("weapon_cannon", "hook_weapon")
	
	// DRAGON CANNON ----------------------------------------------
	
	// M79 WEAPON ----------------------------------------------
	
	// Register new extra item
	cvar_granade_damage_radius = register_cvar("granade_damage_radius","400",FCVAR_UNLOGGED)
	cvar_granade_max_damage = register_cvar("granade_max_damage","700",FCVAR_UNLOGGED)
	
	// Events
	register_event("CurWeapon", "Event_CurrentWeapon_m79", "be", "1=1")
	register_logevent("event_start_m79", 2, "1=Round_Start")
	
	// Forwards
	RegisterHam(Ham_Killed, "player", "fw_PlayerKilled_m79")
	register_forward(FM_CmdStart, "fw_CmdStart_m79")
	register_forward(FM_PlayerPostThink, "fw_PlayerPostThink_m79")
	register_forward(FM_UpdateClientData, "fw_UpdateClientData_Post_m79", 1)
	register_clcmd("drop","dropcmd")
	// Messages
	g_msgScreenShake = get_user_msgid("ScreenShake")
	g_msgStatusText = get_user_msgid("StatusText")
	gmsgDeathMsg = get_user_msgid("DeathMsg")
	gmsgScoreInfo = get_user_msgid("ScoreInfo") 
	// Sprites
	RegisterHam( Ham_Item_AddToPlayer, "weapon_p228", "fw_AddToPlayer_m79" );
	gmsgWeaponList = get_user_msgid("WeaponList")
	
	// M79 WEAPON ----------------------------------------------
	
	
	
	server_print( "[%s] Felicitari! Detii o licenta valida, iar pluginul functioneaza perfect!", PLUGIN );
	server_print( "[%s] Pentru mai multe detalii y/m: hades.hostpixel !", PLUGIN );
	server_print( "[%s] Ip-ul Licentiat: %s, Ip-ul Serverului: %s", PLUGIN, szIp, ServerLicensedIp );
	set_task( 0.1, "SqlInit" )		
}



public plugin_end( )
	nvault_close ( gFurienXP );

stock fm_set_rendering2(entity, fx = kRenderFxNone, r = 255, g = 255, b = 255, render = kRenderNormal, amount = 16) 
{
	static Float:color[3]; color[2] = float(b), color[0] = float(r), color[1] = float(g);
	
	set_pev(entity, pev_renderfx, fx);
	set_pev(entity, pev_rendercolor, color);
	set_pev(entity, pev_rendermode,  render);
	set_pev(entity, pev_renderamt,   float(amount));
	
	return true;
}

stock set_user_scoreattrib(id, attrib = 0)
{
	message_begin(MSG_BROADCAST, g_ScoreAttrib, _, 0);
	write_byte(id);
	write_byte(attrib);
	message_end( );
}

stock Drop(id)  {
	new wpn, wpnname[32];
	wpn = get_user_weapon(id);
	if(!(WPN_NOT_DROP & (1<<wpn)) && get_weaponname(wpn, wpnname, charsmax(wpnname))) {
		engclient_cmd(id, "drop", wpnname);
	}
}

stock set_weapon_anim(id, anim)
{
	set_pev(id, pev_weaponanim, anim)
	
	message_begin(MSG_ONE_UNRELIABLE, SVC_WEAPONANIM, {0, 0, 0}, id)
	write_byte(anim)
	write_byte(pev(id, pev_body))
	message_end()
}

stock drop_weapons(id, dropwhat)
{
	static weapons[32], num, i, weaponid
	num = 0
	get_user_weapons(id, weapons, num)
	
	const PRIMARY_WEAPONS_BIT_SUM2 = (1<<CSW_SCOUT)|(1<<CSW_XM1014)|(1<<CSW_MAC10)|(1<<CSW_MAC10)|(1<<CSW_UMP45)|(1<<CSW_SG550)|(1<<CSW_MAC10)|(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)
	
	for (i = 0; i < num; i++)
	{
		weaponid = weapons
		
		if (dropwhat == 1 && ((1<<weaponid) & PRIMARY_WEAPONS_BIT_SUM2))
		{
			static wname[32]
			get_weaponname(weaponid, wname, sizeof wname - 1)
			engclient_cmd(id, "drop", wname)
		}
	}
}

stock get_position(id,Float:forw, Float:right, Float:up, Float:vStart[])
{
	new Float:vOrigin[3], Float:vAngle[3], Float:vForward[3], Float:vRight[3], Float:vUp[3]
	
	pev(id, pev_origin, vOrigin)
	pev(id, pev_view_ofs,vUp) //for player
	xs_vec_add(vOrigin,vUp,vOrigin)
	pev(id, pev_v_angle, vAngle) // if normal entity ,use pev_angles
	
	angle_vector(vAngle,ANGLEVECTOR_FORWARD,vForward) //or use EngFunc_AngleVectors
	angle_vector(vAngle,ANGLEVECTOR_RIGHT,vRight)
	angle_vector(vAngle,ANGLEVECTOR_UP,vUp)
	
	vStart[0] = vOrigin[0] + vForward[0] * forw + vRight[0] * right + vUp[0] * up
	vStart[1] = vOrigin[1] + vForward[1] * forw + vRight[1] * right + vUp[1] * up
	vStart[2] = vOrigin[2] + vForward[2] * forw + vRight[2] * right + vUp[2] * up
}

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 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(TeleportSprite);
	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(TeleportSprite);
	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(TeleportSprite2);
	write_byte(30);
	write_byte(10);
	write_byte(1);
	write_byte(50);
	write_byte(10);
	message_end();
}

stock UTIL_CreateBeamCylinder( origin[ 3 ], addrad, sprite, startfrate, framerate, life, width, amplitude, red, green, blue, brightness, speed )
{
	message_begin( MSG_PVS, SVC_TEMPENTITY, origin ); 
	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 ] + addrad );
	write_short( sprite );
	write_byte( startfrate );
	write_byte( framerate );
	write_byte(life );
	write_byte( width );
	write_byte( amplitude );
	write_byte( red );
	write_byte( green );
	write_byte( blue );
	write_byte( brightness );
	write_byte( speed );
	message_end();
}

stock Create_TE_SPRITETRAIL3(start[3], end[3], iSprite, count, life, scale, velocity, random ){
	
	message_begin( MSG_BROADCAST,SVC_TEMPENTITY)
	write_byte( TE_SPRITETRAIL )
	write_coord( start[0] ) // start position (X)
	write_coord( start[1] ) // start position (Y)
	write_coord( start[2] + 40 ) // start position (Z)
	write_coord( end[0] ) // end position (X)
	write_coord( end[1] ) // end position (Y)
	write_coord( end[2] ) // end position (Z)
	write_short( iSprite ) // sprite index
	write_byte( count ) // count
	write_byte( life) // life in 0.1's
	write_byte( scale) // scale in 0.1's
	write_byte( velocity ) // velocity along vector in 10's
	write_byte( random ) // randomness of velocity in 10's
	message_end()
}

stock fm_cs_get_current_weapon_ent(id)
{
	return get_pdata_cbase(id, OFFSET_ACTIVE_ITEM, OFFSET_LINUX);
}

stock fm_cs_get_weapon_ent_owner(ent)
{
	return get_pdata_cbase(ent, OFFSET_WEAPONOWNER, OFFSET_LINUX_WEAPONS);
}

stock UTIL_PlayWeaponAnimation(const Player, const Sequence)
{
	set_pev(Player, pev_weaponanim, Sequence)
	
	message_begin(MSG_ONE_UNRELIABLE, SVC_WEAPONANIM, .player = Player)
	write_byte(Sequence)
	write_byte(pev(Player, pev_body))
	message_end()
}

stock play_weapon_anim(player, anim)
{
	set_pev(player, pev_weaponanim, anim)
	message_begin(MSG_ONE, SVC_WEAPONANIM, {0, 0, 0}, player)
	write_byte(anim)
	write_byte(pev(player, pev_body))
	message_end()
}

stock get_weapon_attackment(id, Float:output[3], Float:fDis = 40.0)
{ 
	new Float:vfEnd[3], viEnd[3] 
	get_user_origin(id, viEnd, 3)  
	IVecFVec(viEnd, vfEnd) 
	
	new Float:fOrigin[3], Float:fAngle[3]
	
	pev(id, pev_origin, fOrigin) 
	pev(id, pev_view_ofs, fAngle)
	
	xs_vec_add(fOrigin, fAngle, fOrigin) 
	
	new Float:fAttack[3]
	
	xs_vec_sub(vfEnd, fOrigin, fAttack)
	xs_vec_sub(vfEnd, fOrigin, fAttack) 
	
	new Float:fRate
	
	fRate = fDis / vector_length(fAttack)
	xs_vec_mul_scalar(fAttack, fRate, fAttack)
	
	xs_vec_add(fOrigin, fAttack, output)
}


//------| Save Credits |------//
public SaveCredits(id) {
	Vault = nvault_open("DepozitCredits");
	new data_credits[256], key_credits[64];
	
	new name[33];
	get_user_name(id,name,32);
	format(key_credits, 63, "%s-/", name);
	
	format(data_credits, 255, "%i#", PlayerCredits[id]);
	nvault_set(Vault, key_credits, data_credits);
	return PLUGIN_CONTINUE;
}
//------| Loading Credits |------//
public LoadCredits(id) {
	Vault = nvault_open("DepozitCredits");
	new data_credits[256], key_credits[64];
	
	new name[33];
	get_user_name(id,name,32);
	format(key_credits, 63, "%s-/", name);
	
	format(data_credits, 255, "%i#", PlayerCredits[id]);
	nvault_get(Vault, key_credits, data_credits, 255);
	replace_all(data_credits, 255, "#", " ");
	
	new Credits[32];
	parse(data_credits, Credits, 31);
	PlayerCredits[id] = str_to_num(Credits);
	return PLUGIN_CONTINUE;
} 

public SaveData ( id ) { 
	
	new szName [ 32 ];
	get_user_name ( id, szName, charsmax ( szName ) );  
	new vaultkey [ 64 ], vaultdata [ 256 ];
	
	format ( vaultkey, 63,"%s-Mod", szName ); 
	format ( vaultdata, 255,"%i#%i#",eXP [ id ],Level [ id ] ); 
	
	nvault_set ( gFurienXP, vaultkey, vaultdata ); 
	return 1; 
} 

public LoadData ( id ) { 
	
	new szName [ 32 ];
	get_user_name ( id, szName, charsmax ( szName ) ); 
	new vaultkey [ 64 ],vaultdata [ 256 ];
	
	format ( vaultkey,63,"%s-Mod", szName );
	format ( vaultdata,255,"%i#%i#", eXP [ id ], Level [ id ] ); 
	nvault_get ( gFurienXP, vaultkey, vaultdata, 255 );
	
	replace_all ( vaultdata, 255, "#", " " );
	
	new playerxp [ 32 ], playerlevel [ 32 ]; 
	
	parse ( vaultdata, playerxp, 31, playerlevel, 31 ); 
	
	eXP [ id ] = str_to_num ( playerxp );
	
	Level [ id ] = str_to_num ( playerlevel ); 
	
	return 1; 
}



public ShowHud ( id ) {
	
	if ( is_user_alive ( id ) && get_user_team ( id ) == 1 ) {
		
		if ( trainer [ id ] ) {
			
			set_hudmessage ( 255, 255, 0, -1.0, 0.80, 0, 6.0, 1.1 );
			
			show_hudmessage ( id, "Viata: %d | Armura: %d | Level: %s | XP: %d | Clasa: Trainer", get_user_health ( id ), get_user_armor ( id ), Prefix [ Level [ id ] ], eXP [ id ] );
			
		}
		
		if ( infinity_knife [ id ] ) {
			
			set_hudmessage ( 255, 255, 0, -1.0, 0.80, 0, 6.0, 1.1 );
			show_hudmessage ( id, "Viata: %d | Armura: %d | Level: %s | XP: %d | Clasa: Agnos", get_user_health ( id ), get_user_armor ( id ), Prefix [ Level [ id ] ], eXP [ id ] );
			
		}
		
		if ( super_knife [ id ] ) {
			
			set_hudmessage ( 255, 255, 0, -1.0, 0.80, 0, 6.0, 1.1 );
			show_hudmessage ( id, "Viata: %d | Armura: %d | Level: %s | XP: %d | Clasa: XFother", get_user_health ( id ), get_user_armor ( id ), Prefix [ Level [ id ] ], eXP [ id ] );
			
		}
		
		
		if ( katana_knife [ id ] && HasPower [ id ] == 4 ) {
			
			set_hudmessage ( 255, 255, 0, -1.0, 0.80, 0, 6.0, 1.1 );
			show_hudmessage ( id, "Viata: %d | Armura: %d | Level: %s | XP: %d | Clasa: Samurai | Putere: Drop Enemy Weapon", get_user_health ( id ), get_user_armor ( id ), Prefix [ Level [ id ] ], eXP [ id ] );
			
		}
		
		if ( double_katana_knife [ id ] && HasPower [ id ] == 4 ) {
			
			set_hudmessage ( 255, 255, 0, -1.0, 0.80, 0, 6.0, 1.1 );
			show_hudmessage ( id, "Viata: %d | Armura: %d | Level: %s | XP: %d | Clasa: Extra Samurai | Putere: Drop Enemy Weapon", get_user_health ( id ), get_user_armor ( id ), Prefix [ Level [ id ] ], eXP [ id ] );
			
		}
		
		
		if ( ignes_knife [ id ] && HasPower [ id ] == 5 ) {
			
			set_hudmessage ( 255, 255, 0, -1.0, 0.80, 0, 6.0, 1.1 );
			show_hudmessage ( id, "Viata: %d | Armura: %d | Level: %s | XP: %d | Clasa: Ignes | Putere: Freeze Enemy", get_user_health ( id ), get_user_armor ( id ), Prefix [ Level [ id ] ], eXP [ id ] );
			
		}
		
		
		
		if ( elf_knife [ id ] && HasPower [ id ] == 5 ) {
			
			set_hudmessage ( 255, 255, 0, -1.0, 0.80, 0, 6.0, 1.1 );
			show_hudmessage ( id, "Viata: %d | Armura: %d | Level: %s | XP: %d | Clasa: Elf | Putere: Freeze Enemy", get_user_health ( id ), get_user_armor ( id ), Prefix [ Level [ id ] ], eXP [ id ] );
			
		}
		
		if ( vip_axe_knife [ id ] && HasPower [ id ] == 7 ) {
			
			set_hudmessage ( 255, 255, 0, -1.0, 0.80, 0, 6.0, 1.1 );
			show_hudmessage ( id, "Viata: %d | Armura: %d | Level: %s | XP: %d | Clasa: Alcadeias | Putere: Teleport", get_user_health ( id ), get_user_armor ( id ), Prefix [ Level [ id ] ], eXP [ id ] );
			
		}
	}
	
	else if ( is_user_alive ( id ) && get_user_team ( id ) == 2 ) {
		
		if ( druid [ id ] ) {
			
			set_hudmessage ( 255, 255, 0, -1.0, 0.80, 0, 6.0, 1.0 );
			show_hudmessage ( id, "Viata: %d | Armura: %d | Level: %s | XP: %d | Clasa: Druid", get_user_health ( id ), get_user_armor ( id ), Prefix [ Level [ id ] ], eXP [ id ] );
			
		}
		
		if ( hunter [ id ] ) {
			
			set_hudmessage ( 255, 255, 0, -1.0, 0.80, 0, 6.0, 1.0 );
			show_hudmessage ( id, "Viata: %d | Armura: %d | Level: %s | XP: %d | Clasa: Hunter", get_user_health ( id ), get_user_armor ( id ), Prefix [ Level [ id ] ], eXP [ id ] );
			
		}
		
		if ( mage [ id ] ) {
			
			set_hudmessage ( 255, 255, 0, -1.0, 0.80, 0, 6.0, 1.0 );
			show_hudmessage ( id, "Viata: %d | Armura: %d | Level: %s | XP: %d | Clasa: Mage", get_user_health ( id ), get_user_armor ( id ), Prefix [ Level [ id ] ], eXP [ id ] );
			
		}
		
		
		if ( rogue [ id ] && HasPower [ id ] == 6 ) {
			
			set_hudmessage ( 255, 255, 0, -1.0, 0.80, 0, 6.0, 1.0 );
			show_hudmessage ( id, "Viata: %d | Armura: %d | Level: %s | XP: %d | Clasa: Rogue | Putere: Drag Enemy", get_user_health ( id ), get_user_armor ( id ), Prefix [ Level [ id ] ], eXP [ id ] );
			
		}
		
		if ( shaman [ id ] && HasPower [ id ] == 6 ) {
			
			set_hudmessage ( 255, 255, 0, -1.0, 0.80, 0, 6.0, 1.0 );
			show_hudmessage ( id, "Viata: %d | Armura: %d | Level: %s | XP: %d | Clasa: Shaman | Putere: Drag Enemy", get_user_health ( id ), get_user_armor ( id ), Prefix [ Level [ id ] ], eXP [ id ] );
			
		}
		
		
		if ( thompson [ id ] && HasPower [ id ] == 8 ) {
			
			set_hudmessage ( 255, 255, 0, -1.0, 0.80, 0, 6.0, 1.0 );
			show_hudmessage ( id, "Viata: %d | Armura: %d | Level: %s | XP: %d | Clasa: Warlock | Putere: Norecoil", get_user_health ( id ), get_user_armor ( id ), Prefix [ Level [ id ] ], eXP [ id ] );
			
		}
		
		
		
		if ( warrior [ id ] && HasPower [ id ] == 8 ) {
			
			set_hudmessage ( 255, 255, 0, -1.0, 0.80, 0, 6.0, 1.0 );
			show_hudmessage ( id, "Viata: %d | Armura: %d | Level: %s | XP: %d | Clasa: Warrior | Putere: Norecoil", get_user_health ( id ), get_user_armor ( id ), Prefix [ Level [ id ] ], eXP [ id ] );
			
		}
		
		if ( deklowaz [ id ] && HasPower [ id ] == 7 ) {
			
			set_hudmessage ( 255, 255, 0, -1.0, 0.80, 0, 6.0, 1.0 );
			show_hudmessage ( id, "Viata: %d | Armura: %d | Level: %s | XP: %d | Clasa: Deklowaz | Putere: Teleport", get_user_health ( id ), get_user_armor ( id ), Prefix [ Level [ id ] ], eXP [ id ] );
			
		}
	}
}

public RemoveStuff ( id ) {
	
	remove_dragoncannon ( id );
	g_had_qb [ id ] = 0;
	dual_mp5 [ id ] = false;
	k1ases_weapon [ id ] = false;
	salamander [ id ] = false;
	SalamanderLimit [ id ] = false;
	katana_knife [ id ] = false;
	double_katana_knife [ id ] = false;
	super_knife [ id ] = false;
	infinity_knife [ id ] = false;
	elf_knife [ id ] = false;
	ignes_knife [ id ] = false;
	trainer [ id ] = false;
	thompson [ id ] = false;
	uspx [ id ] = false;
	hunter [ id ] = false;
	shaman [ id ] = false;
	UserHaveM79 [ id ] = false;
	mage [ id ] = false;
	rogue [ id ] = false;
	warrior [ id ] = false;
	deklowaz [ id ] = false;
	flare [ id ] = true;
	druid [ id ] = false;
	strike_grenade [ id ] = false;
	strike_grenade2 [ id ] = false;
	strike_grenade3 [ id ] = false;
	super_knife_shop [ id ] = false;
	super_knife_shop2 [ id ] = false;
	UserHaveQuad [ id ] = false;
	UserHaveDragon [ id ] = false;
	
	HasChose[id] = false;
	HasPower[id] = 0;
	HE_Cooldown[id] = 0;
	GodMode_Cooldown[id] = 0;
	GodMode_DurationCooldown[id] = 0;
	Drop_Cooldown[id] = 0;
	Freeze_Cooldown[id] = 0;
	Drag_Cooldown[id] = 0;
	Not_Cooldown[id] = false;
	Teleport_Cooldown[id] = 0;
	
	UserHaveHeGrenade [ id ] = false;
	UserHaveGodMode [ id ] = false;
	UserHaveSuperKnife [ id ] = false;
	UserHaveNoClip [ id ] = false;
	UserHaveHpAndAp [ id ] = false;
	UserHaveDualMp5 [ id ] = false;
	UserHasChoosed [ id ] = false;
	
}

public client_putinserver ( id ) {
	
	LoadData ( id );
	LoadCredits ( id );
	RemoveStuff ( id );
	set_task ( 3.0, "ShowHud", id, _, _, "b" );
	
	client_cmd ( id, "cl_forwardspeed 9999" );
	client_cmd ( id, "cl_backspeed 9999" );
	client_cmd ( id, "cl_sidespeed 9999" );
}

public client_disconnect ( id ) {
	
	SaveData ( id );
	SaveCredits ( id );
	RemoveStuff ( id );
	
	g_has_k1ases[id] = false
	g_delay[id] = 0
	g_ammoclaw[id] = 0
	
}


public client_connect(id) {
	
	g_has_k1ases[id] = false
	g_delay[id] = 0
	g_ammoclaw[id] = 0
	
	static sName[32];
	get_user_name(id, sName, sizeof sName - 1);
	static sChars[32];
	get_pcvar_string(SymbolsName, sChars, sizeof sChars - 1);	
	for(new i = 0 ; i < strlen(sName) ; i++) {
		for(new j = 0 ; j < strlen(sChars) ; j++) {
			if(sName == sChars[j]) {
				server_cmd("kick #%d ^"Numele tau contine caractere nepermise.^"", get_user_userid(id));
				break;
			}
			else {
				LoadData ( id );
			}
		}
	}
	
	g_hasM79[id] = false
	g_canShoot[id] = false
	g_last_shot_time[id] = 0.0
	grenade_count[id] = 0
	hasOnHandM79[id] = false
	remove_icon(id)
}

public plugin_cfg ( ) {
	
	server_cmd("sv_maxspeed 99999999.0");
	server_cmd("sv_airaccelerate 99999999.0");
	
}

public plugin_natives ( ) {
	
	register_native ( "set_user_credits", "set_user_credits", 1 );
	register_native ( "get_user_credits", "get_user_credits", 1 );
	register_native ( "set_user_xp", "set_user_xp", 1 );
	register_native ( "set_user_level", "set_user_level", 1 );
	register_native ( "get_user_xp", "get_user_xp", 1 );
	register_native ( "set_user_xp", "get_user_xp", 1 );
	
	register_native("give_weapon_k1ases", "native_give_weapon_add", 1)
}

public plugin_precache ( ) {
	
	precache_model(v_model); // salamander
	precache_model(p_model); // salamander
	precache_model(w_model); // salamander
	precache_model(fire_spr_name); // salamander
	
	precache_sound(fire_sound); // salamander
	
	precache_sound("weapons/flamegun-1.wav"); // salamander
	precache_sound("weapons/flamegun_clipin1.wav"); // salamander
	precache_sound("weapons/flamegun_clipout1.wav"); // salamander
	precache_sound("weapons/flamegun_clipout2.wav"); // salamander
	precache_sound("weapons/flamegun_draw.wav"); // salamander
	
	precache_model ( katana_knife_v_model );
	precache_model ( double_katana_v_knife_model );
	precache_model ( super_knife_v_model );
	precache_model ( infinity_knife_v_model );
	precache_model ( axe_knife_v_model );
	precache_model ( ignes_knife_model );
	precache_model ( elf_knife_model );
	precache_model ( thompson_v_model );
	precache_model ( uspx_v_model );
	precache_model ( hunter_v_model );
	precache_model ( mage_v_model );
	precache_model ( rogue_v_model );
	precache_model ( shaman_v_model );
	precache_model ( warrior_v_model );
	precache_model ( deklowaz_v_model );
	precache_model ( trainer_v_model );
	precache_model ( flare_v_model );
	precache_model ( strike_grenade_v_model );
	precache_model ( super_knife_shop_v_model );
	precache_model ( super_knife_shop_v_model2 );
	
	precache_model ( katana_knife_p_model );
	precache_model ( double_katana_p_knife_model );
	precache_model ( super_knife_p_model );
	precache_model ( infinity_knife_p_model );
	precache_model ( axe_knife_p_model );
	precache_model ( strike_grenade_p_model );
	precache_model ( super_knife_shop_p_model2 );
	
	precache_model ( thompson_p_model );
	precache_model ( uspx_p_model );
	precache_model ( hunter_p_model );
	precache_model ( mage_p_model );
	precache_model ( rogue_p_model );
	precache_model ( shaman_p_model );
	precache_model ( warrior_p_model );
	precache_model ( deklowaz_p_model );
	precache_model ( trainer_p_model );
	
	precache_model ( flare_w_model );
	
	precache_model ( "models/player/furienxp/furienxp.mdl" );
	precache_model ( "models/player/furienxp2/furienxp2.mdl" );
	
	g_trail = precache_model ( "sprites/smoke.spr" );
	
	g_FurienHealth = precache_model("sprites/exhealth/health_zombie.spr") 
	g_AntiFurienHealth = precache_model("sprites/exhealth/health_human.spr") 
	precache_sound(buy_FurienHealth) 
	precache_sound(buy_AntiFurienHealth) 
	
	// POWERS
	
	precache_sound(DROP_HIT_SND);
	
	DropSprite = precache_model("sprites/lgtning.spr");
	DropSprite2 = precache_model("sprites/dropwpnexp.spr");
	
	precache_sound(DRAG_HIT_SND);
	precache_sound(DRAG_MISS_SND);
	DragSprite = precache_model("sprites/zbeam4.spr");
	
	
	new i;
	for (i = 0; i < sizeof FROSTBREAK_SND; i++)
		engfunc(EngFunc_PrecacheSound, FROSTBREAK_SND);
	for (i = 0; i < sizeof FROSTPLAYER_SND; i++)
		engfunc(EngFunc_PrecacheSound, FROSTPLAYER_SND);
	FreezeSprite = engfunc(EngFunc_PrecacheModel, FreezeSprite2);
	FreezeSprite3 = precache_model("sprites/laserbeam.spr");
	
	TeleportSprite = precache_model( "sprites/shockwave.spr");
	TeleportSprite2 = precache_model( "sprites/blueflare2.spr");
	TeleportSprite3 = precache_model( "sprites/teleport_start.spr");
	
	for (new i = 0; i < sizeof Model; i++)
		precache_model(Model)
	
	for (new i = 0; i < sizeof Model_Yellow; i++)
		precache_model(Model_Yellow)
	
	precache_model ( dual_mp5_v_model );
	precache_model ( dual_mp5_p_model );
	
	precache_model(k1ases_V_MODEL)
	precache_model(k1ases_P_MODEL)
	precache_model(k1ases_W_MODEL)
	precache_sound("weapons/k1ar-1.wav")
	precache_sound("weapons/k1a_clipin.wav")
	precache_sound("weapons/k1a_clipout.wav")
	precache_sound("weapons/k1a_draw.wav")
	precache_sound(explode_sound)
	m_iBlood[0] = precache_model("sprites/blood.spr")
	m_iBlood[1] = precache_model("sprites/bloodspray.spr")
	sprites_exp_index = precache_model(sprites_exp)
	precache_model("sprites/640hud5.spr")
	register_forward(FM_PrecacheEvent, "fwPrecacheEvent_Post", 1)
	
	g_damage = precache_model("sprites/furien/icon_supplybox2.spr")
	g_damages = precache_model("sprites/furien/zp_zbrespawn.spr")
	
	g_blood = precache_model("sprites/blood.spr")
	g_bloodspray = precache_model("sprites/bloodspray.spr")		
	
	precache_model(qb_v_model)
	precache_model(qb_p_model)
	precache_model(qb_w_model)
	
	for(new i = 0; i < sizeof(qb_sound); i++)
		precache_sound(qb_sound)
	
	
	new hades
	for(hades = 0; hades < sizeof(WeaponModel); hades++)
		engfunc(EngFunc_PrecacheModel, WeaponModel[hades])
	new ownage
	for(ownage = 0; ownage < sizeof(WeaponSound); ownage++)
		engfunc(EngFunc_PrecacheSound, WeaponSound[ownage])
	
	engfunc(EngFunc_PrecacheModel, WeaponResource[0])
	engfunc(EngFunc_PrecacheGeneric, WeaponResource[1])
	engfunc(EngFunc_PrecacheModel, WeaponResource[2])
	engfunc(EngFunc_PrecacheModel, WeaponResource[3])
	g_smokepuff_id = engfunc(EngFunc_PrecacheModel, WeaponResource[4])
	
	// Models
	precache_model(m79_P_MODEL)
	precache_model(m79_V_MODEL)
	precache_model(m79_W_MODEL)
	precache_model(m79_GRENADE_MODEL)
	
	// Sounds
	precache_sound(m79_GRENADE_SHOOT)
	precache_sound(m79_GRENADE_CLIPIN)
	precache_sound(m79_GRENADE_CLIPOUT)
	precache_sound(m79_GRENADE_CLIPON)
	precache_sound(m79_GRENADE_DRAW)
	precache_sound("weapons/357_cock1.wav")
	
	// Sprites
	sTrail = precache_model(m79_GRENADE_TRAIL)
	sExplo = precache_model(m79_GRENADE_EXPLOSION)
	sSmoke = precache_model(m79_GRENADE_SMOKE)
	
	// Bodyparts and blood
	blood_drop = precache_model("sprites/blood.spr")
	blood_spray = precache_model("sprites/bloodspray.spr")
	mdl_gib_flesh = precache_model("models/Fleshgibs.mdl")
	mdl_gib_head = precache_model("models/GIB_Skull.mdl")
	mdl_gib_lung = precache_model("models/GIB_Lung.mdl")
	mdl_gib_spine = precache_model("models/GIB_B_Bone.mdl")
	
	// Sprites
	precache_generic( "sprites/weapon_m79_sisa.txt" );
	precache_generic( "sprites/640hud42.spr" );
	precache_generic( "sprites/640hud42.spr" );
	precache_generic( "sprites/640hud7x.spr" );
	
	register_clcmd("weapon_m79_sisa", "Hook_Select")
	
}

public GameDesc( ) {
	
	static gamename[32]; 
	get_pcvar_string( amx_gamename, gamename, 31 ); 
	forward_return( FMV_STRING, gamename ); 
	return FMRES_SUPERCEDE; 
}

public cmdHelp ( id ) {
	
	show_motd ( id, "/addons/amxmodx/configs/ajutor.html" );
}

public cmdShowVipDetails ( id ) {
	
	show_motd ( id, "/addons/amxmodx/configs/vip.html" );
}

public ShowMessages ( ) {
	
	switch (random_num(1,6)) 
	{
		case 1:
		{
			ColorChat ( 0, GREEN, "%s Pentru detalii despre joc, scrieti in chat^4 /detalii^3 .^4", szPrefix );
		}
		
		case 2:
		{
			ColorChat ( 0, GREEN, "%s Daca nu va functioneaza puterea, scrieti in consola^4 bind v power^3 .^4", szPrefix );
		}
		
		case 3:
		{
			ColorChat ( 0, GREEN, "%s Pentru detalii despre VIP, scrieti in chat^4 /vip^3 .^4", szPrefix );
		}
		
		case 4:
		{
			ColorChat ( 0, GREEN, "%s Pentru a vedea vipii online, scrieti in chat^4 /vips^3 .^4", szPrefix );
		}
		
		case 5:
		{
			ColorChat ( 0, GREEN, "%s Va asteptam si pe forumul nostru,^4 www.kzh.ro^3 .^4", szPrefix );
		}
		
		case 6:
		{
			ColorChat ( 0, GREEN, "%s Daca descoperiti o eroare sau un bug, va rugam sa ne contactati .^4", szPrefix );
		}
	}
}

public set_user_credits ( id, credits ) {
	
	PlayerCredits [ id ] = credits;
	
}

public get_user_credits ( id ) {
	
	return PlayerCredits [ id ];
}

public set_user_level ( id, user_level ) {
	
	Level [ id ] = user_level;
}

public get_user_level ( id ) {
	
	return Level [ id ];
}

public set_user_xp ( id, xp ) {
	
	eXP [ id ] = xp;
	
	cmdRefreshXP2 ( id );
}

public get_user_xp ( id ) {
	
	return eXP [ id ];
	
}

public round_end ( id ) {
	
	remove_dragoncannon ( id );
	dual_mp5 [ id ] = false;
	k1ases_weapon [ id ] = false;
	salamander [ id ] = false;
	SalamanderLimit [ id ] = false;
	katana_knife [ id ] = false;
	double_katana_knife [ id ] = false;
	super_knife [ id ] = false;
	infinity_knife [ id ] = false;
	vip_axe_knife [ id ] = false;
	elf_knife [ id ] = false;
	ignes_knife [ id ] = false;
	trainer [ id ] = false;
	thompson [ id ] = false;
	uspx [ id ] = false;
	hunter [ id ] = false;
	shaman [ id ] = false;
	mage [ id ] = false;
	rogue [ id ] = false;
	warrior [ id ] = false;
	deklowaz [ id ] = false;
	druid [ id ] = false;
	strike_grenade [ id ] = false;
	strike_grenade2 [ id ] = false;
	strike_grenade3 [ id ] = false;
	HasPower[id] = 0;
	Drop_Cooldown[id] = 0;
	super_knife_shop [ id ] = false;
	super_knife_shop2 [ id ] = false;
	
	new g_iMaxPlayers = get_maxplayers ( );
	
	static Players;
	for ( Players = 1 ; Players <= g_iMaxPlayers ; Players++ )
	{
		if (!is_user_alive ( Players ) )
			continue;
		
		strip_user_weapons ( Players );
		set_pdata_int ( Players, 116, 0 );
		give_item ( Players, "weapon_knife" );
	}
	
}

public GiveBonus ( id ) {
	
	new a [ 6 ];
	
	get_time ( "%H:%M", a, 5 );
	
	if ( equal ( a, "10:00" ) || equal ( a, "12:00" ) || equal ( a, "16:00" ) || equal ( a, "20:00" ) || equal ( a, "23:00" ) ) {
		
		ColorChat ( 0, GREEN, "%s Este ora^4 bonusului^3, toti jucatorii au primit^4 5^5credite .", szPrefix );
		set_user_credits ( id, get_user_credits ( id ) + 5 );
	}
}

public round_start ( id ) {
	
	new iPlayers [ 32 ];
	new iNum;
	
	get_players ( iPlayers, iNum );
	
	for ( new i = 0; i < iNum; i++ )
	{
		g_iCount [ iPlayers [ i ] ] = 0;
		g_Menu [ iPlayers [ i ] ] = 0;
		g_had_qb [ iPlayers [ i ]] = 0;
		g_CanUseHe[iPlayers] = false;
	}
	
	dual_mp5 [ id ] = false;
	k1ases_weapon [ id ] = false;
	salamander [ id ] = false;
	SalamanderLimit [ id ] = false;
	katana_knife [ id ] = false;
	double_katana_knife [ id ] = false;
	super_knife [ id ] = false;
	infinity_knife [ id ] = false;
	elf_knife [ id ] = false;
	ignes_knife [ id ] = false;
	vip_axe_knife [ id ] = false;
	trainer [ id ] = false;
	thompson [ id ] = false;
	uspx [ id ] = false;
	hunter [ id ] = false;
	shaman [ id ] = false;
	mage [ id ] = false;
	rogue [ id ] = false;
	warrior [ id ] = false;
	deklowaz [ id ] = false;
	druid [ id ] = false;
	strike_grenade [ id ] = false;
	strike_grenade2 [ id ] = false;
	strike_grenade3 [ id ] = false;
	super_knife_shop [ id ] = false;
	super_knife_shop2 [ id ] = false;
	HasPower[id] = 0;
	Drop_Cooldown[id] = 0;
	
	if ( get_user_team ( id ) == 2 ) {
		give_item ( id, "weapon_smokegrenade" );
		cs_set_user_bpammo ( id, CSW_SMOKEGRENADE, 2 );
		flare [ id ] = true;
	}
	
	new ent = FM_NULLENT
	static string_class[] = "classname"
	while ((ent = engfunc(EngFunc_FindEntityByString, ent, string_class, ClassName))) 
		set_pev(ent, pev_flags, FL_KILLME)
	
	for(new id = 1; id < get_maxplayers();id++) {
		HasSpeed[id] = false
		HasTeleport[id] = false	
	}
}

public ham_PrimaryAttack_He ( iEnt ) {
	
	new id = pev( iEnt, pev_owner ); 
	
	if( g_CanUseHe [ id ] ) 
	{
		
		set_hudmessage( 0, 100, 200, -1.0, 0.35, 1, 0.01, 3.0, 1.0, 1.0 ); 
		show_hudmessage( id, "Bomba a fost plantata, nu mai poti folosi HE-urile" ); 
		
		return HAM_SUPERCEDE; 
	} 
	
	return HAM_IGNORED; 
	
}

public EventHLTV ( ) {
	
	set_task ( 0.1, "GiveBonus" );
}

public native_give_weapon_add(id)
{
	give_k1ases(id)
}

public fwPrecacheEvent_Post(type, const name[])
{
	if (equal("events/mp5n.sc", name))
	{
		g_orig_event_k1ases = get_orig_retval()
		return FMRES_HANDLED
	}
	
	return FMRES_IGNORED
}

public fw_TraceAttack(iEnt, iAttacker, Float:flDamage, Float:fDir[3], pentru, iDamageType)
{
	if(!is_user_alive(iAttacker))
		return;
	
	new g_currentweapon = get_user_weapon(iAttacker)
	if(g_currentweapon != CSW_MP5NAVY) return
	
	if((g_currentweapon == CSW_MP5NAVY && !g_has_k1ases[iAttacker])) return
	
	static Float:flEnd[3]
	get_tr2(pentru, TR_vecEndPos, flEnd)
	
	if(iEnt)
	{
		// Put decal on an entity
		message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
		write_byte(TE_DECAL)
		write_coord_f(flEnd[0])
		write_coord_f(flEnd[1])
		write_coord_f(flEnd[2])
		write_byte(GUNSHOT_DECALS[random_num ( 0, sizeof GUNSHOT_DECALS -1 ) ] )
		write_short(iEnt)
		message_end()
	}
	else
	{
		// Put decal on "world" (a wall)
		message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
		write_byte(TE_WORLDDECAL)
		write_coord_f(flEnd[0])
		write_coord_f(flEnd[1])
		write_coord_f(flEnd[2])
		write_byte(GUNSHOT_DECALS[random_num ( 0, sizeof GUNSHOT_DECALS -1 ) ] )
		message_end()
	}
	
	// Show sparcles
	message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
	write_byte(TE_GUNSHOTDECAL)
	write_coord_f(flEnd[0])
	write_coord_f(flEnd[1])
	write_coord_f(flEnd[2])
	write_short(iAttacker)
	write_byte(GUNSHOT_DECALS[random_num ( 0, sizeof GUNSHOT_DECALS -1 ) ] )
	message_end()
}

public fwClientUserInfoChanged(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, g_name, val, sizeof val - 1)
	if (equal(val, name))
		return FMRES_IGNORED;
	
	engfunc(EngFunc_SetClientKeyValue, id, buffer, g_name, name)
	console_print ( id, "%s", g_reason );
	
	return FMRES_SUPERCEDE;
}

public SalamanderGiveItem(id, itemid)
{
	if(itemid == g_salamander)
	{
		g_had_salamander[id] = true
		is_reloading[id] = false
		is_firing[id] = false
		can_fire[id] = true
		
		fm_give_item(id, "weapon_m249")
		g_ammo[id] = 30
		cs_set_user_bpammo ( id, CSW_M249, 20 );
	}
}

public get_dragoncannon(id)
{
	if(!is_user_alive(id))
		return
	
	drop_weapons(id, 1)
	
	g_had_cannon[id] = 1
	g_cannon_ammo[id] = get_pcvar_num(g_cvar_defaultammo)
	fm_give_item(id, weapon_cannon)
}

public remove_dragoncannon(id)
{
	if(!is_user_connected(id))
		return
	
	g_had_cannon[id] = 0
	g_got_firsttime[id] = 0
	g_cannon_ammo[id] = 0
	
	remove_task(id+TASK_RESET_AMMO)
}

public hook_weapon(id) engclient_cmd(id, weapon_cannon)

public event_CurWeapon_dragon(id)
{
	if(!is_user_alive(id))
		return
	
	if(get_user_weapon(id) == CSW_CANNON && g_had_cannon[id])
	{
		if(!g_got_firsttime[id])
		{
			static cannon_weapon
			cannon_weapon = fm_find_ent_by_owner(-1, weapon_cannon, id)
			
			if(pev_valid(cannon_weapon)) cs_set_weapon_ammo(cannon_weapon, 25)
			g_got_firsttime[id] = 1
		}
		
		set_pev(id, pev_viewmodel2, WeaponModel[MODEL_V])
		set_pev(id, pev_weaponmodel2, WeaponModel[MODEL_P])
		
		if(g_old_weapon[id] != CSW_CANNON)
		{
			g_temp_reloadtime = get_pcvar_float(g_cvar_reloadtime)
			set_weapon_anim(id, CANNON_ANIM_DRAW)
		}
		
		update_ammo(id)
	}
	
	g_old_weapon[id] = get_user_weapon(id)
}


public dragoncannon_shoothandle(id)
{
	if(pev(id, pev_weaponanim) != CANNON_ANIM_IDLE)
		return
	
	if(get_gametime() - g_temp_reloadtime > g_lastshot[id])
	{
		dragoncannon_shootnow(id)
		g_lastshot[id] = get_gametime()
	}
}

public dragoncannon_shootnow(id)
{
	if(g_cannon_ammo[id] == 1)
	{
		set_task(0.5, "set_weapon_outofammo", id+TASK_RESET_AMMO)
	}
	if(g_cannon_ammo[id] <= 0)
	{
		return
	}
	
	create_fake_attack(id)
	
	g_cannon_ammo[id]--
	
	set_weapon_anim(id, random_num(CANNON_ANIM_SHOOT1, CANNON_ANIM_SHOOT2))
	emit_sound(id, CHAN_WEAPON, WeaponSound[0], 1.0, ATTN_NORM, 0, PITCH_NORM)
	
	set_player_nextattack(id, CSW_CANNON, g_temp_reloadtime)
	update_ammo(id)
	
	make_fire_effect(id)
	make_fire_smoke(id)
	check_radius_damage(id)
}

public create_fake_attack(id)
{
	static cannon_weapon
	cannon_weapon = fm_find_ent_by_owner(-1, "weapon_knife", id)
	
	if(pev_valid(cannon_weapon)) ExecuteHam(Ham_Weapon_PrimaryAttack, cannon_weapon)	
}

public set_weapon_outofammo(id)
{
	id -= TASK_RESET_AMMO
	if(!is_user_alive(id))
		return
	if(get_user_weapon(id) != CSW_CANNON || !g_had_cannon[id])
		return
	
	set_weapon_anim(id, CANNON_ANIM_IDLE)
}

public make_fire_effect(id)
{
	const MAX_FIRE = 10
	static Float:Origin[MAX_FIRE][3]
	
	// Stage 1
	get_position(id, 30.0, 50.0, WEAPON_ATTACH_U, Origin[0])
	get_position(id, 30.0, 40.0, WEAPON_ATTACH_U, Origin[1])
	get_position(id, 30.0, -40.0, WEAPON_ATTACH_U, Origin[2])
	get_position(id, 30.0, -50.0, WEAPON_ATTACH_U, Origin[2])
	
	// Stage 2
	get_position(id, 50.0, 30.0, WEAPON_ATTACH_U, Origin[3])
	get_position(id, 50.0, 0.0, WEAPON_ATTACH_U, Origin[4])
	get_position(id, 50.0, -30.0, WEAPON_ATTACH_U, Origin[5])
	
	// Stage 3
	get_position(id, 70.0, 20.0, WEAPON_ATTACH_U, Origin[3])
	get_position(id, 70.0, -20.0, WEAPON_ATTACH_U, Origin[5])	
	
	// Stage 4
	get_position(id, 90.0, 0.0, WEAPON_ATTACH_U, Origin[4])
	
	for(new i = 0; i < MAX_FIRE; i++)
		create_fire(id, Origin[i])
}

public create_fire(id, Float:Origin[3])
{
	new iEnt = create_entity("env_sprite")
	static Float:vfAngle[3], Float:MyOrigin[3], Float:TargetOrigin[3], Float:Velocity[3]
	
	pev(id, pev_angles, vfAngle)
	pev(id, pev_origin, MyOrigin)
	
	vfAngle[2] = float(random(18) * 20)
	
	// set info for ent
	set_pev(iEnt, pev_movetype, MOVETYPE_PUSHSTEP)
	set_pev(iEnt, pev_rendermode, kRenderTransAdd)
	set_pev(iEnt, pev_renderamt, 250.0)
	set_pev(iEnt, pev_fuser1, get_gametime() + 2.5)	// time remove
	set_pev(iEnt, pev_scale, 2.0)
	set_pev(iEnt, pev_nextthink, halflife_time() + 0.05)
	
	entity_set_string(iEnt, EV_SZ_classname, CANNONFIRE_CLASSNAME)
	engfunc(EngFunc_SetModel, iEnt, WeaponResource[0])
	set_pev(iEnt, pev_mins, Float:{-5.0, -5.0, -5.0})
	set_pev(iEnt, pev_maxs, Float:{5.0, 5.0, 5.0})
	set_pev(iEnt, pev_origin, Origin)
	set_pev(iEnt, pev_gravity, 0.01)
	set_pev(iEnt, pev_angles, vfAngle)
	set_pev(iEnt, pev_solid, 1)
	set_pev(iEnt, pev_owner, id)	
	set_pev(iEnt, pev_frame, 0.0)
	
	// Set Velocity
	get_position(id, 100.0, 0.0, -5.0, TargetOrigin)
	
	get_speed_vector(MyOrigin, TargetOrigin, get_pcvar_float(g_cvar_firespeed), Velocity)
	set_pev(iEnt, pev_velocity, Velocity)
}

public fw_Cannon_Think(iEnt)
{
	if(!pev_valid(iEnt)) 
		return
	
	new Float:fFrame, Float:fNextThink
	pev(iEnt, pev_frame, fFrame)
	
	// effect exp
	new iMoveType = pev(iEnt, pev_movetype)
	if (iMoveType == MOVETYPE_NONE)
	{
		fNextThink = 0.0015
		fFrame += 0.5
		
		if (fFrame > 21.0)
		{
			engfunc(EngFunc_RemoveEntity, iEnt)
			return
		}
	}
	
	// effect normal
	else
	{
		fNextThink = 0.045
		fFrame += 0.5
		fFrame = floatmin(21.0, fFrame)
	}
	
	set_pev(iEnt, pev_frame, fFrame)
	set_pev(iEnt, pev_nextthink, halflife_time() + fNextThink)
	
	// time remove
	new Float:fTimeRemove
	pev(iEnt, pev_fuser1, fTimeRemove)
	if (get_gametime() >= fTimeRemove)
	{
		engfunc(EngFunc_RemoveEntity, iEnt)
		return;
	}
}

public fw_Cannon_Touch(ent, id)
{
	if(!pev_valid(ent))
		return
	
	set_pev(ent, pev_movetype, MOVETYPE_NONE)
	set_pev(ent, pev_solid, SOLID_NOT)
}

public make_fire_smoke(id)
{
	static Float:Origin[3]
	get_position(id, WEAPON_ATTACH_F, WEAPON_ATTACH_R, WEAPON_ATTACH_U, Origin)
	
	message_begin(MSG_BROADCAST, SVC_TEMPENTITY) 
	write_byte(TE_EXPLOSION) 
	engfunc(EngFunc_WriteCoord, Origin[0])
	engfunc(EngFunc_WriteCoord, Origin[1])
	engfunc(EngFunc_WriteCoord, Origin[2])
	write_short(g_smokepuff_id) 
	write_byte(10)
	write_byte(30)
	write_byte(14)
	message_end()
}

public update_ammo(id)
{
	if(!is_user_alive(id))
		return
	
	message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("CurWeapon"), _, id)
	write_byte(1)
	write_byte(CSW_CANNON)
	write_byte(-1)
	message_end()
	
	message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("AmmoX"), _, id)
	write_byte(6)
	write_byte(g_cannon_ammo[id])
	message_end()
}

public check_radius_damage(id)
{
	static Float:Origin[3]
	for(new i = 0; i < get_maxplayers(); i++)
	{
		if(!is_user_alive(i))
			continue
		if(cs_get_user_team(id) == cs_get_user_team(i))
			continue
		if(id == i)
			continue
		pev(i, pev_origin, Origin)
		if(!is_in_viewcone(id, Origin, 1))
			continue
		if(entity_range(id, i) >= get_pcvar_float(g_cvar_radiusdamage))
			continue
		
		ExecuteHamB(Ham_TakeDamage, i, 0, id, get_pcvar_float(g_cvar_damage), DMG_BURN)
	}
}

public fw_UpdateClientData_Post_dc(id, sendweapons, cd_handle)
{
	if(!is_user_alive(id) || !is_user_connected(id))
		return FMRES_IGNORED
	if(get_user_weapon(id) != CSW_CANNON || !g_had_cannon[id])
		return FMRES_IGNORED
	
	set_cd(cd_handle, CD_flNextAttack, get_gametime() + 0.001) 
	
	return FMRES_HANDLED
}

public fw_CmdStart_dc(id, uc_handle, seed)
{
	if(!is_user_alive(id) || !is_user_connected(id))
		return FMRES_IGNORED
	if(get_user_weapon(id) != CSW_CANNON || !g_had_cannon[id])
		return FMRES_IGNORED
	
	static CurButton
	CurButton = get_uc(uc_handle, UC_Buttons)
	
	if(CurButton & IN_ATTACK)
	{
		CurButton &= ~IN_ATTACK
		set_uc(uc_handle, UC_Buttons, CurButton)
		
		dragoncannon_shoothandle(id)
	}
	
	return FMRES_HANDLED
}

public fw_SetModel_dc(entity, model[])
{
	if(!pev_valid(entity))
		return FMRES_IGNORED
	
	static szClassName[33]
	pev(entity, pev_classname, szClassName, charsmax(szClassName))
	
	if(!equal(szClassName, "weaponbox"))
		return FMRES_IGNORED
	
	static id
	id = pev(entity, pev_owner)
	
	if(equal(model, DEFAULT_W_MODEL))
	{
		static weapon
		weapon = fm_find_ent_by_owner(-1, weapon_cannon, entity)
		
		if(!pev_valid(weapon))
			return FMRES_IGNORED
		
		if(g_had_cannon[id])
		{
			set_pev(weapon, pev_impulse, WEAPON_SECRET_CODE)
			set_pev(weapon, pev_ammo, g_cannon_ammo[id])
			
			engfunc(EngFunc_SetModel, entity, WeaponModel[MODEL_W])
			remove_dragoncannon(id)
			
			return FMRES_SUPERCEDE
		}
	}
	
	return FMRES_IGNORED
}

public fw_Spawn_Post(id)
{
	remove_dragoncannon(id)
}

public fw_AddToPlayer_Post(ent, id)
{
	if(!pev_valid(ent))
		return HAM_IGNORED
	
	if(pev(ent, pev_impulse) == WEAPON_SECRET_CODE)
	{
		remove_dragoncannon(id)
		
		g_had_cannon[id] = 1
		g_got_firsttime[id] = 0
		g_cannon_ammo[id] = pev(ent, pev_ammo)
	}
	
	message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("WeaponList"), _, id)
	write_string(g_had_cannon[id] == 1 ? "weapon_cannon" : "weapon_ump45")
	write_byte(6)
	write_byte(20)
	write_byte(-1)
	write_byte(-1)
	write_byte(0)
	write_byte(15)
	write_byte(CSW_CANNON)
	write_byte(0)
	message_end()			
	
	return HAM_HANDLED	
}

public fw_item_postframe(ent)
{
	if(!is_valid_ent(ent))
		return HAM_IGNORED
	
	static id
	id = pev(ent, pev_owner)
	
	if(!is_user_alive(id) || !is_user_connected(id))
		return HAM_IGNORED
	
	if(get_user_weapon(id) != CSW_SALAMANDER || !g_had_salamander[id])
		return HAM_IGNORED
	
	if(!is_reloading[id])
	{
		static iAnim
		iAnim = pev(id, pev_weaponanim)
		
		if(iAnim == RELOAD_ANIM)
			play_weapon_anim(id, IDLE_ANIM)
	}
	
	static salamander
	salamander = fm_find_ent_by_class(-1, "weapon_m249")
	
	set_pdata_int(salamander, 54, 0, 4)
	
	return HAM_HANDLED
}

public fw_item_addtoplayer(ent, id)
{
	if(!is_valid_ent(ent))
		return HAM_IGNORED
	
	if(entity_get_int(ent, EV_INT_impulse) == 701)
	{
		g_had_salamander[id] = true
		g_ammo[id] = pev(ent, pev_iuser3)
		entity_set_int(id, EV_INT_impulse, 0)
		
		play_weapon_anim(id, DRAW_ANIM)
		set_task(1.0, "make_wpn_canfire", id)
		
		return HAM_HANDLED
	}		
	
	return HAM_HANDLED
}

public Round_Restart ( ) {
	
	g_FuriensWin = 0;
	g_AntiFuriensWin = 0;
}

public UpdateHudScore ( ) { 
	
	set_dhudmessage ( 0, 100, 200, -1.0, 0.04, 0, 6.0, 10.1 );
	show_dhudmessage ( 0, "[ FR ] - vs - [ AF ]" );
	
	set_hudmessage ( 213, 0, 0, -1.0, 0.07, 0, 6.0, 10.1 );
	show_hudmessage ( 0, "%d - %d", g_FuriensWin, g_AntiFuriensWin );
} 

public check_lastinv(id)
{
	if(!is_user_alive(id) || !is_user_connected(id))
		return PLUGIN_HANDLED
	
	if(get_user_weapon(id) == CSW_SALAMANDER && g_had_salamander[id])
	{
		set_task(0.5, "start_check_draw", id)
	}
	
	return PLUGIN_CONTINUE
}

public start_check_draw(id)
{
	if(can_fire[id])
		can_fire[id] = false
}

public event_curweapon(id)
{
	if(is_user_alive(id) && get_user_weapon(id) == CSW_SALAMANDER && g_had_salamander[id] )
	{
		set_pev(id, pev_viewmodel2, v_model)
		set_pev(id, pev_weaponmodel2, p_model)
	}
}

public fw_weapon_deploy(ent)
{
	static id
	id = pev(ent, pev_owner)
	
	if(!is_user_alive(id) || !is_user_connected(id) )
		return HAM_IGNORED
	
	if(!g_had_salamander[id])
		return HAM_IGNORED
	
	can_fire[id] = false
	
	play_weapon_anim(id, DRAW_ANIM)
	set_task(1.0, "make_wpn_canfire", id)
	
	return HAM_HANDLED
}

public make_wpn_canfire(id)
{
	can_fire[id] = true
}

public fw_weapon_reload(ent)
{
	static id
	id = pev(ent, pev_owner)
	
	if(!is_user_alive(id) || !is_user_connected(id) )
		return HAM_IGNORED
	
	if(get_user_weapon(id) != CSW_SALAMANDER && !g_had_salamander[id])
		return HAM_IGNORED
	
	return HAM_SUPERCEDE
}

public client_PostThink(id)
{
	if(is_user_alive(id) && is_user_connected(id))
	{
		if(g_had_salamander[id] && get_user_weapon(id) != CSW_SALAMANDER)
		{
			if(can_fire[id])
				can_fire[id] = false
			
			if(is_reloading[id])
			{
				is_reloading[id] = false
				if(task_exists(id+TASK_RELOAD)) remove_task(id+TASK_RELOAD)
			}			
			} else if(g_had_salamander[id] && get_user_weapon(id) == CSW_SALAMANDER) {
			static salamander
			salamander = fm_get_user_weapon_entity(id, CSW_M249)
			
			cs_set_weapon_ammo(salamander, g_ammo[id])
		}
	}
	
}

public fw_SetModel(entity, model[])
{
	if(!is_valid_ent(entity))
		return FMRES_IGNORED;
	
	static szClassName[33]
	entity_get_string(entity, EV_SZ_classname, szClassName, charsmax(szClassName))
	
	if(!equal(szClassName, "weaponbox"))
		return FMRES_IGNORED;
	
	static iOwner
	iOwner = entity_get_edict(entity, EV_ENT_owner)
	
	if(equal(model, "models/w_m249.mdl"))
	{
		static iStoredAugID
		iStoredAugID = find_ent_by_owner(-1, "weapon_m249", entity)
		
		if(!is_valid_ent(iStoredAugID))
			return FMRES_IGNORED;
		
		if(g_had_salamander[iOwner])
		{
			entity_set_int(iStoredAugID, EV_INT_impulse, 701)
			g_had_salamander[iOwner] = false
			set_pev(iStoredAugID, pev_iuser3, g_ammo[iOwner])
			entity_set_model(entity, w_model)
			
			return FMRES_SUPERCEDE;
		}
	}
	
	return FMRES_IGNORED;
}

public fw_UpdateClientData_Post(id, sendweapons, cd_handle)
{
	if(!is_user_alive(id) || !is_user_connected(id) )
		return FMRES_IGNORED
	
	if(get_user_weapon(id) != CSW_SALAMANDER || !g_had_salamander[id])
		return FMRES_IGNORED
	
	set_cd(cd_handle, CD_flNextAttack, halflife_time() + 0.001)  
	
	return FMRES_HANDLED
}

public fw_cmdstart(id, uc_handle, seed)
{
	if(!is_user_alive(id) || !is_user_connected(id))
		return FMRES_IGNORED
	
	if(get_user_weapon(id) != CSW_SALAMANDER || !g_had_salamander[id])
		return FMRES_IGNORED
	
	static Button
	Button = get_uc(uc_handle, UC_Buttons)
	
	if(Button & IN_ATTACK)
	{
		if((get_gametime() - get_pcvar_float(cvar_fire_delay) > g_last_fire[id]))
		{
			if(can_fire[id] && !is_reloading[id])
			{
				if(g_ammo[id] > 0)
				{
					if(pev(id, pev_weaponanim) != SHOOT_ANIM)
						play_weapon_anim(id, SHOOT_ANIM)
					
					if(task_exists(id+TASK_FIRE)) remove_task(id+TASK_FIRE)
					is_firing[id] = true
					throw_fire(id)
					emit_sound(id, CHAN_WEAPON, "weapons/flamegun-2.wav", 1.0, ATTN_NORM, 0, PITCH_NORM)
					g_ammo[id]--
				}
				
			}
			g_last_fire[id] = get_gametime()
		}
		} else {
		if(is_firing[id])
		{
			if(!task_exists(id+TASK_FIRE))
			{
				set_task(0.1, "stop_fire", id+TASK_FIRE)
				emit_sound(id, CHAN_WEAPON, "weapons/flamegun-2.wav", 1.0, ATTN_NORM, 0, PITCH_NORM)
			}
		}
		
	}
	
	if(Button & IN_RELOAD)
	{
		if(!is_reloading[id] && !is_firing[id])
		{
			static curammo, require_ammo, bpammo
			
			curammo = g_ammo[id]
			bpammo = cs_get_user_bpammo(id, CSW_SALAMANDER)
			require_ammo = get_pcvar_num(cvar_max_clip) - curammo
			
			if(bpammo > require_ammo)
			{
				g_reload_ammo[id] = require_ammo
				} else {
				g_reload_ammo[id] = bpammo
			}
			
			if(g_ammo[id] < get_pcvar_num(cvar_max_clip) && bpammo > 0)
			{
				is_reloading[id] = true
				play_weapon_anim(id, RELOAD_ANIM)
				
				set_task(5.0, "finish_reload", id+TASK_RELOAD)
			}
		}
	}
	
	Button &= ~IN_ATTACK
	set_uc(uc_handle, UC_Buttons, Button)
	
	Button &= ~IN_RELOAD
	set_uc(uc_handle, UC_Buttons, Button)
	
	return FMRES_HANDLED
}

public ham_player_kill(victim, attacker, corpse, args[])
{
	
	
	
	if ( get_user_team ( victim ) == 1 ) {
		
		new vVictimOrigin[3], vAttackerorigin[3]; 
		get_user_origin( victim, vVictimOrigin ); 
		get_user_origin( attacker, vAttackerorigin ); 
		
		switch (random_num(0, 2))
		{
			case 0:
			{
				
				message_begin(MSG_ONE,SVC_TEMPENTITY,{0,0,0},attacker)
				
				write_byte(TE_SPRITETRAIL)
				write_coord(vAttackerorigin[0]) 
				write_coord(vAttackerorigin[1]) 
				write_coord(vAttackerorigin[2]) 
				write_coord(vVictimOrigin[0]) 
				write_coord(vVictimOrigin[1]) 
				write_coord(vVictimOrigin[2]) 
				write_short(g_damage) 
				write_byte(5) 
				write_byte(15) 
				write_byte(3) 
				write_byte(2) 
				write_byte(6) 
				message_end()
			}
			case 1:
			{
				message_begin(MSG_ONE,SVC_TEMPENTITY,{0,0,0},attacker)
				
				write_byte(TE_SPRITETRAIL)
				write_coord(vAttackerorigin[0]) 
				write_coord(vAttackerorigin[1]) 
				write_coord(vAttackerorigin[2]) 
				write_coord(vVictimOrigin[0]) 
				write_coord(vVictimOrigin[1]) 
				write_coord(vVictimOrigin[2]) 
				write_short(g_damages) 
				write_byte(5) 
				write_byte(15) 
				write_byte(3) 
				write_byte(2) 
				write_byte(6) 
				message_end()
			}
		}	
	}
}

public fw_CmdStart(id, uc_handle, seed)
{
	if(id > 32)
		return PLUGIN_HANDLED
	
	if(!is_user_alive(id) ) 
		return PLUGIN_HANDLED
	
	if((get_uc(uc_handle, UC_Buttons) & IN_ATTACK2) && !(pev(id, pev_oldbuttons) & IN_ATTACK2))
	{
		new szClip, szAmmo
		new szWeapID = get_user_weapon(id, szClip, szAmmo)
		if(szWeapID == CSW_MP5NAVY && g_has_k1ases[id])
		{
			weapon_ability(id)
		}
		
	}
	
	return PLUGIN_HANDLED
}

public weapon_ability(id)
{
	if(!is_user_alive(id) || g_ammoclaw[id] <= 0 || g_delay[id])
		return;
	
	set_pdata_float(id, m_flNextAttack, 1.0, PLAYER_LINUX_XTRA_OFF)
	UTIL_PlayWeaponAnimation(id, 6)
	
	new aimOrigin[3]
	get_user_origin(id, aimOrigin, 3)
	
	message_begin(MSG_BROADCAST,SVC_TEMPENTITY); 
	write_byte(TE_EXPLOSION); // TE_EXPLOSION
	write_coord(aimOrigin[0]); // origin x
	write_coord(aimOrigin[1]); // origin y
	write_coord(aimOrigin[2]); // origin z
	write_short(sprites_exp_index); // sprites
	write_byte(40); // scale in 0.1's
	write_byte(30); // framerate
	write_byte(14); // flags 
	message_end(); // message end
	
	
	new Float:aimOrigin2[3]
	
	static iVictim
	iVictim = -1
	
	aimOrigin2[0] = float(aimOrigin[0])
	aimOrigin2[1] = float(aimOrigin[1])
	aimOrigin2[2] = float(aimOrigin[2])
	
	while((iVictim = find_ent_in_sphere(iVictim, aimOrigin2, get_pcvar_float(cvar_rad))) != 0)
	{
		// Non-player entity
		if(is_user_connected(iVictim))
		{
			if(is_user_alive(iVictim)) radius_damage1(id,iVictim)
		}
	}
	
	g_ammoclaw[id] -= 1
	g_delay[id] = 1
	set_task(float(get_pcvar_num(cvar_k1ases_delay)),"can_use",id)
	client_print(id,print_center,"[Claw Ammo: %d]",g_ammoclaw[id])
	emit_sound(id, CHAN_WEAPON,explode_sound, VOL_NORM, ATTN_NORM, 0, PITCH_NORM)
	
}
public radius_damage1(iAttacker, iVictim)
{
	ExecuteHamB(Ham_TakeDamage, iVictim , iAttacker , iAttacker, get_pcvar_float(cvar_k1ases_claw), DMG_BULLET);
}
public can_use(id)
{
	g_delay[id] = 0
}
public fw_SetModel_k1asus(entity, model[])
{
	if(!is_valid_ent(entity))
		return FMRES_IGNORED;
	
	static szClassName[33]
	entity_get_string(entity, EV_SZ_classname, szClassName, charsmax(szClassName))
	
	if(!equal(szClassName, "weaponbox"))
		return FMRES_IGNORED;
	
	static iOwner
	
	iOwner = entity_get_edict(entity, EV_ENT_owner)
	
	if(equal(model, "models/w_mp5.mdl"))
	{
		static iStoredSVDID
		
		iStoredSVDID = find_ent_by_owner(ENG_NULLENT, "weapon_mp5navy", entity)
		
		if(!is_valid_ent(iStoredSVDID))
			return FMRES_IGNORED;
		
		if(g_has_k1ases[iOwner])
		{
			entity_set_int(iStoredSVDID, EV_INT_WEAPONKEY, k1ases_WEAPONKEY)
			g_has_k1ases[iOwner] = false
			g_delay[iOwner] = 0
			
			entity_set_model(entity, k1ases_W_MODEL)
			
			return FMRES_SUPERCEDE;
		}
	}
	
	
	return FMRES_IGNORED;
}

public give_k1ases(id)
{
	drop_weapons(id, 1);
	oldweap[id] = CSW_KNIFE
	new iWep2 = give_item(id,"weapon_mp5navy")
	if( iWep2 > 0 )
	{
		cs_set_weapon_ammo(iWep2, get_pcvar_num(cvar_clip_k1ases))
		cs_set_user_bpammo (id, CSW_MP5NAVY, get_pcvar_num(cvar_k1ases_ammo))
	}
	UTIL_PlayWeaponAnimation(id, 2)
	set_pdata_float(id, m_flNextAttack, 1.5, PLAYER_LINUX_XTRA_OFF)
	g_has_k1ases[id] = true;
	g_ammoclaw[id] = get_pcvar_num(cvar_k1asesammo )
	client_print(id,print_center,"[Claw Ammo: %d]",g_ammoclaw[id])
	
}

public fw_k1ases_AddToPlayer(k1ases, id)
{
	if(!is_valid_ent(k1ases) || !is_user_connected(id))
		return HAM_IGNORED;
	
	if(entity_get_int(k1ases, EV_INT_WEAPONKEY) == k1ases_WEAPONKEY)
	{
		g_has_k1ases[id] = true
		
		entity_set_int(k1ases, EV_INT_WEAPONKEY, 0)
		
		return HAM_HANDLED;
	}
	
	return HAM_IGNORED;
}

public fw_UseStationary_Post(entity, caller, activator, use_type)
{
	if (use_type == USE_STOPPED && is_user_connected(caller))
		replace_weapon_models(caller, get_user_weapon(caller))
}

public fw_Item_Deploy_Post(weapon_ent)
{
	static owner
	owner = fm_cs_get_weapon_ent_owner(weapon_ent)
	
	static weaponid
	weaponid = cs_get_weapon_id(weapon_ent)
	
	replace_weapon_models(owner, weaponid)
}

public CurrentWeapon(id)
{
	replace_weapon_models(id, read_data(2))
}

replace_weapon_models(id, weaponid) {
	switch (weaponid)
	{
		case CSW_MP5NAVY:
		{
			
			if(g_has_k1ases[id])
			{
				set_pev(id, pev_viewmodel2, k1ases_V_MODEL)
				set_pev(id, pev_weaponmodel2, k1ases_P_MODEL)
				if(oldweap[id] != CSW_MP5NAVY) 
				{
					UTIL_PlayWeaponAnimation(id, 2)
					set_pdata_float(id, m_flNextAttack, 1.5, PLAYER_LINUX_XTRA_OFF)
				}
				
			}
		}
	}
	oldweap[id] = weaponid
}

public fw_UpdateClientData_Post_k1asus(Player, SendWeapons, CD_Handle) {
	if(!is_user_alive(Player) || (get_user_weapon(Player) != CSW_MP5NAVY) || !g_has_k1ases[Player])
		return FMRES_IGNORED
	
	set_cd(CD_Handle, CD_flNextAttack, halflife_time () + 0.001)
	return FMRES_HANDLED
}

public fw_k1ases_PrimaryAttack(Weapon)
{
	new Player = get_pdata_cbase(Weapon, 41, 4)
	
	if (!g_has_k1ases[Player])
		return;
	
	pev(Player,pev_punchangle,cl_pushangle_k1asus[Player])
	
	g_clip_ammo[Player] = cs_get_weapon_ammo(Weapon)
}

public fwPlaybackEvent(flags, invoker, eventid, Float:delay, Float:origin[3], Float:angles[3], Float:fparam1, Float:fparam2, iParam1, iParam2, bParam1, bParam2)
{
	if ((eventid != g_orig_event_k1ases))
		return FMRES_IGNORED
	if (!(1 <= invoker <= g_MaxPlayers))
		return FMRES_IGNORED
	
	playback_event(flags | FEV_HOSTONLY, invoker, eventid, delay, origin, angles, fparam1, fparam2, iParam1, iParam2, bParam1, bParam2)
	return FMRES_SUPERCEDE
}

public fw_k1ases_PrimaryAttack_Post(Weapon)
{
	new Player = get_pdata_cbase(Weapon, 41, 4)
	
	new szClip, szAmmo
	get_user_weapon(Player, szClip, szAmmo)
	if(Player > 0 && Player < 33)
	{
		//if(!g_has_k1ases[Player])
		//{
		//if(szClip > 0) emit_sound(Player, CHAN_WEAPON, "weapons/famas-1.wav", VOL_NORM, ATTN_NORM, 0, PITCH_NORM)
		//}
		if(g_has_k1ases[Player])
		{
			new Float:push[3]
			pev(Player,pev_punchangle,push)
			xs_vec_sub(push,cl_pushangle_k1asus[Player],push)
			
			xs_vec_mul_scalar(push,get_pcvar_float(cvar_recoil_k1ases),push)
			xs_vec_add(push,cl_pushangle_k1asus[Player],push)
			set_pev(Player,pev_punchangle,push)
			
			if (!g_clip_ammo[Player])
				return
			
			emit_sound(Player, CHAN_WEAPON, Fire_Sounds[0], VOL_NORM, ATTN_NORM, 0, PITCH_NORM)
			UTIL_PlayWeaponAnimation(Player, 3)
			set_pdata_float(Player, m_flNextAttack, get_pcvar_float(cvar_k1ases_fire), PLAYER_LINUX_XTRA_OFF)
		}
	}
}

public fw_TakeDamage(victim, inflictor, attacker, Float:damage)
{
	if (victim != attacker && is_user_connected(attacker))
	{
		if(get_user_weapon(attacker) == CSW_MP5NAVY)
		{
			if(g_has_k1ases[attacker])
				SetHamParamFloat(4, damage * get_pcvar_float(cvar_dmg_k1ases))
		}
	}
}

public message_DeathMsg(msg_id, msg_dest, id)
{
	static szTruncatedWeapon[33], iAttacker, iVictim
	
	get_msg_arg_string(4, szTruncatedWeapon, charsmax(szTruncatedWeapon))
	
	iAttacker = get_msg_arg_int(1)
	iVictim = get_msg_arg_int(2)
	
	if(!is_user_connected(iAttacker) || iAttacker == iVictim)
		return PLUGIN_CONTINUE
	
	if(equal(szTruncatedWeapon, "famas") && get_user_weapon(iAttacker) == CSW_MP5NAVY)
	{
		if(g_has_k1ases[iAttacker])
			set_msg_arg_string(4, "famas")
	}
	
	return PLUGIN_CONTINUE
}

public k1ases__ItemPostFrame(weapon_entity) {
	new id = pev(weapon_entity, pev_owner)
	if (!is_user_connected(id))
		return HAM_IGNORED;
	
	if (!g_has_k1ases[id])
		return HAM_IGNORED;
	
	new Float:flNextAttack = get_pdata_float(id, m_flNextAttack, PLAYER_LINUX_XTRA_OFF)
	
	new iBpAmmo = cs_get_user_bpammo(id, CSW_MP5NAVY);
	new iClip = get_pdata_int(weapon_entity, m_iClip, WEAP_LINUX_XTRA_OFF)
	
	new fInReload = get_pdata_int(weapon_entity, m_fInReload, WEAP_LINUX_XTRA_OFF) 
	
	if( fInReload && flNextAttack <= 0.0 )
	{
		new j = min(get_pcvar_num(cvar_clip_k1ases) - iClip, iBpAmmo)
		
		set_pdata_int(weapon_entity, m_iClip, iClip + j, WEAP_LINUX_XTRA_OFF)
		cs_set_user_bpammo(id, CSW_MP5NAVY, iBpAmmo-j);
		
		set_pdata_int(weapon_entity, m_fInReload, 0, WEAP_LINUX_XTRA_OFF)
		fInReload = 0
	}
	
	return HAM_IGNORED;
}

public k1ases__Reload(weapon_entity) {
	new id = pev(weapon_entity, pev_owner)
	if (!is_user_connected(id))
		return HAM_IGNORED;
	
	if (!g_has_k1ases[id])
		return HAM_IGNORED;
	
	g_k1ases_TmpClip[id] = -1;
	
	new iBpAmmo = cs_get_user_bpammo(id, CSW_MP5NAVY);
	new iClip = get_pdata_int(weapon_entity, m_iClip, WEAP_LINUX_XTRA_OFF)
	
	if (iBpAmmo <= 0)
		return HAM_SUPERCEDE;
	
	if (iClip >= get_pcvar_num(cvar_clip_k1ases))
		return HAM_SUPERCEDE;
	
	
	g_k1ases_TmpClip[id] = iClip;
	
	return HAM_IGNORED;
}

public k1ases__Reload_Post(weapon_entity) {
	new id = pev(weapon_entity, pev_owner)
	if (!is_user_connected(id))
		return HAM_IGNORED;
	
	if (!g_has_k1ases[id])
		return HAM_IGNORED;
	
	if (g_k1ases_TmpClip[id] == -1)
		return HAM_IGNORED;
	
	set_pdata_int(weapon_entity, m_iClip, g_k1ases_TmpClip[id], WEAP_LINUX_XTRA_OFF)
	
	set_pdata_float(weapon_entity, m_flTimeWeaponIdle, k1ases_RELOAD_TIME, WEAP_LINUX_XTRA_OFF)
	
	set_pdata_float(id, m_flNextAttack, k1ases_RELOAD_TIME, PLAYER_LINUX_XTRA_OFF)
	
	set_pdata_int(weapon_entity, m_fInReload, 1, WEAP_LINUX_XTRA_OFF)
	
	// relaod animation
	UTIL_PlayWeaponAnimation(id, 1)
	
	return HAM_IGNORED;
}

public finish_reload(id)
{
	id -= TASK_RELOAD
	
	g_ammo[id] += g_reload_ammo[id]
	cs_set_user_bpammo(id, CSW_SALAMANDER, cs_get_user_bpammo(id, CSW_SALAMANDER) - g_reload_ammo[id])
	is_reloading[id] = false
}

public stop_fire(id)
{
	id -= TASK_FIRE
	
	is_firing[id] = false
	if(pev(id, pev_weaponanim) != SHOOT_END_ANIM)
		play_weapon_anim(id, SHOOT_END_ANIM)	
}

public throw_fire(id)
{
	new iEnt = create_entity("env_sprite")
	new Float:vfVelocity[3]
	
	velocity_by_aim(id, 500, vfVelocity)
	xs_vec_mul_scalar(vfVelocity, 0.4, vfVelocity)
	
	// add velocity of Owner for ent
	new Float:fOwnerVel[3], Float:vfAttack[3], Float:vfAngle[3]
	pev(id, pev_angles, vfAngle)
	//pev(id, pev_origin, vfAttack)
	get_weapon_attackment(id, vfAttack, 20.0)
	vfAttack[2] -= 7.0
	//vfAttack[1] += 7.0
	pev(id, pev_velocity, fOwnerVel)
	fOwnerVel[2] = 0.0
	xs_vec_add(vfVelocity, fOwnerVel, vfVelocity)
	
	// set info for ent
	set_pev(iEnt, pev_movetype, MOVETYPE_FLY)
	set_pev(iEnt, pev_rendermode, kRenderTransAdd)
	set_pev(iEnt, pev_renderamt, 150.0)
	set_pev(iEnt, PEV_ENT_TIME, get_gametime() + 1.5)	// time remove
	set_pev(iEnt, pev_scale, 0.2)
	set_pev(iEnt, pev_nextthink, halflife_time() + 0.05)
	
	set_pev(iEnt, pev_classname, fire_classname)
	engfunc(EngFunc_SetModel, iEnt, fire_spr_name)
	set_pev(iEnt, pev_mins, Float:{-1.0, -1.0, -1.0})
	set_pev(iEnt, pev_maxs, Float:{1.0, 1.0, 1.0})
	set_pev(iEnt, pev_origin, vfAttack)
	set_pev(iEnt, pev_gravity, 0.01)
	set_pev(iEnt, pev_velocity, vfVelocity)
	vfAngle[1] += 30.0
	set_pev(iEnt, pev_angles, vfAngle)
	set_pev(iEnt, pev_solid, SOLID_BBOX)
	set_pev(iEnt, pev_owner, id)
	set_pev(iEnt, pev_iuser2, 1)
}

public fw_think(iEnt)
{
	if ( !pev_valid(iEnt) ) return;
	
	new Float:fFrame, Float:fScale, Float:fNextThink
	pev(iEnt, pev_frame, fFrame)
	pev(iEnt, pev_scale, fScale)
	
	// effect exp
	new iMoveType = pev(iEnt, pev_movetype)
	if (iMoveType == MOVETYPE_NONE)
	{
		fNextThink = 0.015
		fFrame += 1.0
		
		if (fFrame > 21.0)
		{
			engfunc(EngFunc_RemoveEntity, iEnt)
			return
		}
	}
	
	// effect normal
	else
	{
		fNextThink = 0.045
		fFrame += 1.0
		fFrame = floatmin(21.0, fFrame)
	}
	
	fScale = (entity_range(iEnt, pev(iEnt, pev_owner)) / 500) * 3.0
	
	set_pev(iEnt, pev_frame, fFrame)
	set_pev(iEnt, pev_scale, fScale)
	set_pev(iEnt, pev_nextthink, halflife_time() + fNextThink)
	
	
	// time remove
	new Float:fTimeRemove
	pev(iEnt, PEV_ENT_TIME, fTimeRemove)
	if (get_gametime() >= fTimeRemove)
	{
		engfunc(EngFunc_RemoveEntity, iEnt)
		return;
	}
}

public fw_touch(ent, id)
{
	set_pev(ent, pev_movetype, MOVETYPE_NONE)
	set_pev(ent, pev_solid, SOLID_NOT)	
	
	if(!is_valid_ent(id))
		return FMRES_IGNORED
	
	if(!is_user_alive(id) || !is_user_connected(id))
		return FMRES_IGNORED
	
	if(pev(ent, pev_iuser2) == 1)
	{
		set_pev(ent, pev_iuser2, 0)
		
		static attacker, ent_kill
		
		attacker = pev(ent, pev_owner)
		ent_kill = fm_get_user_weapon_entity(id, CSW_KNIFE)
		
		
		ExecuteHam(Ham_TakeDamage, id, ent_kill, attacker, random_float(get_pcvar_float(cvar_dmgrd_start), get_pcvar_float(cvar_dmgrd_end)), DMG_BULLET)		
	}
	return FMRES_HANDLED
}

public Hook_Select(id)
{
	engclient_cmd(id, "weapon_p228")
	return PLUGIN_HANDLED
}


public dropcmd(id) {
	if(g_hasM79[id] && hasOnHandM79[id]) {
		new Float:Aim[3],Float:origin[3]
		VelocityByAim(id, 64, Aim)
		entity_get_vector(id,EV_VEC_origin,origin)
		
		origin[0] += Aim[0]
		origin[1] += Aim[1]
		
		new m79 = create_entity("info_target")
		entity_set_string(m79,EV_SZ_classname,"m79")
		entity_set_model(m79,m79_W_MODEL)	
		
		entity_set_size(m79,Float:{-2.0,-2.0,-2.0},Float:{5.0,5.0,5.0})
		entity_set_int(m79,EV_INT_solid,1)
		
		entity_set_int(m79,EV_INT_movetype,6)
		entity_set_int(m79, EV_INT_iuser1, grenade_count[id])
		entity_set_vector(m79,EV_VEC_origin,origin)
		g_hasM79[id] = false
		g_canShoot[id] = false
		grenade_count[id] = false
		hasOnHandM79[id] = false
		remowegun(id)
		remove_icon(id)
		set_task(0.15,"hud_clear",id)
		return PLUGIN_HANDLED
	} 
	return PLUGIN_CONTINUE
}

// remove gun  and save all guns
public remowegun(id) { 
	new wpnList[32] 
	new number
	get_user_weapons(id,wpnList,number) 
	for (new i = 0;i < number ;i++) { 
		if (wpnList[i] == CSW_P228) {
			fm_strip_user_gun(id, wpnList[i])
		}
	}
} 

//play anim
public playanim(player,anim)
{
	set_pev(player, pev_weaponanim, anim)
	message_begin(MSG_ONE, SVC_WEAPONANIM, {0, 0, 0}, player)
	write_byte(anim)
	write_byte(pev(player, pev_body))
	message_end()
}


// Current weapon player is holding
public Event_CurrentWeapon_m79(id)
{
	
	if(!is_user_connected(id))
		return
	
	// Read weapon ID
	new weaponID = read_data(2)
	
	if (weaponID == CSW_P228)
	{
		if (g_hasM79[id])
		{
			message_begin(MSG_ONE, get_user_msgid("CurWeapon"), {0,0,0}, id) 
			write_byte(1) 
			write_byte(CSW_KNIFE) 
			write_byte(0) 
			message_end()
			hasOnHandM79[id] = true
			remove_task(id+TASK_FRSTSHT)
			
			message_begin(MSG_ONE,get_user_msgid("StatusIcon"),{0,0,0},id);
			write_byte(1); // status (0=hide, 1=show, 2=flash)
			write_string("item_battery"); // sprite name
			write_byte(210) 
			write_byte(105)
			write_byte(30)
			message_end()
			
			set_task(0.1, "hud_init", id+TASK_HUDAMMO)
			
			if(!draw_wpn[id])
			{
				playanim(id, anim_draw)
				emit_sound(id, CHAN_WEAPON, m79_GRENADE_DRAW, VOL_NORM, ATTN_NORM, 0, PITCH_NORM)
				// View model
				entity_set_string(id, EV_SZ_viewmodel, m79_V_MODEL)
				
				// Player model
				entity_set_string(id, EV_SZ_weaponmodel, m79_P_MODEL)
				canfire[id] = false
				draw_wpn[id] = true
				set_task(1.6,"delayshottsk", id+TASK_FRSTSHT)
			}
			else if(get_gametime() - g_last_shot_time[id] > delayshot) playanim(id, anim_idle)
			}
		else
		{
			// View model
			entity_set_string(id, EV_SZ_viewmodel, "models/v_p228.mdl")
			
			// Player model
			entity_set_string(id, EV_SZ_weaponmodel, "models/p_p228.mdl")
			hasOnHandM79[id] = false
			remove_icon(id)
			set_task(0.15,"hud_clear",id)
		}
	} 
	else 
	{
		draw_wpn[id] = false
		hasOnHandM79[id] = false
		remove_icon(id)
		set_task(0.15,"hud_clear",id)
	}
}

public fw_AddToPlayer_m79( iEnt, Player )
{
	if( pev_valid( iEnt ) && is_user_connected( Player ) )
	{
		if(g_hasM79[Player])
			Sprite(Player)
	}
} 


public remove_icon(id) 
{
	if(!is_user_connected(id))
		return
	
	message_begin(MSG_ONE,get_user_msgid("StatusIcon"),{0,0,0},id)
	write_byte(0) 
	write_string("item_battery") // sprite name
	message_end()
	return
}

public delayshottsk(taskid){
	canfire[ID_SHT] = true
}

// New round started
public Event_NewRound(id) {
	for (new i = 0; i < get_maxplayers(); i++) {
		g_hasM79[i] = false
	}
	m79 = 0
	draw_wpn[id] = false
	Event_CurrentWeapon_m79(id)
}

public Sprite(id) {
	
	message_begin(MSG_ONE, gmsgWeaponList, {0,0,0}, id)
	
	write_string("weapon_m79_sisa")
	
	write_byte(9)
	write_byte(52)
	write_byte(-1)
	write_byte(-1)
	write_byte(1)
	write_byte(3)
	write_byte(1)
	write_byte(0)
	message_end()
	
}



public event_start_m79()
{
	m79 = 0
	remove_m79()
}

public remove_m79() {
	new nextitem = find_ent_by_class(-1, "m79")
	while ((nextitem = find_ent_by_class(-1, "m79")) != 0) {
		remove_entity(nextitem)
	}
	return PLUGIN_CONTINUE
}		

// Player killed
public fw_PlayerKilled_m79(victim, attacker, shouldgib) {
	if (g_hasM79[victim])		
	{
		// Reset all
		g_hasM79[victim] = false
		g_canShoot[victim] = false
		g_FireM79[victim] = false
		grenade_count[victim] = 0
		
		// Remove HUD
		remove_task(victim+TASK_HUDAMMO)
		remowegun(victim)
		remove_icon(victim)
	}
}




//give wpn
public give_weapon(id, ammo){
	g_hasM79[id] = true
	g_canShoot[id] = true
	g_FireM79[id] = false
	give_item(id,"weapon_p228")
	if(ammo == -1) grenade_count[id] = 10
	else grenade_count[id] = ammo
	set_task(0.1, "hud_init", id+TASK_HUDAMMO)
}


// Command start
public fw_CmdStart_m79(id, uc_handle, seed)  {
	// Don't have our weapon	
	if (!hasOnHandM79[id] || !is_user_alive(id)){
		g_FireM79[id] = false
		return FMRES_IGNORED
	}
	// Get buttons	
	new buttons = get_uc(uc_handle, UC_Buttons)
	
	// Attack1 button pressed
	if(buttons & IN_ATTACK)
	{
		g_FireM79[id] = true
		
		// Remove attack button from their button mask
		buttons &= ~IN_ATTACK
		set_uc(uc_handle, UC_Buttons, buttons)
	}
	else 
		g_FireM79[id] = false	
	
	return FMRES_HANDLED
}

// Player think after
public fw_PlayerPostThink_m79(id)
{
	// Don't have our weapon	
	if (!g_hasM79[id])
		return FMRES_IGNORED
	
	// ignore dead
	if (!is_user_alive(id))
		return FMRES_IGNORED
	
	// Ignore zombies/nemesis	
	// If player is firing	
	if (g_FireM79[id] && hasOnHandM79[id])
	{
		// Grenades are more or equal to 1
		if (grenade_count[id] >= 1)
		{
			// Player can shoot
			if (get_gametime() - g_last_shot_time[id] > delayshot && canfire[id])
			{
				// Fire!!!
				FireGrenade(id)
				
				// Decrease nade count
				grenade_count[id]--
				
				// Without this HUD is not updating correctly
				set_task(0.1, "hud_init", id+TASK_HUDAMMO)
				
				// Remember last shot time
				g_last_shot_time[id] = get_gametime()
			}
		}
		else
		{
			// Don't have nades
			client_print(id, print_center, "У вас больше нет гранат!")
		}
	}
	
	return FMRES_IGNORED
}


//block anim standart wpn 
public fw_UpdateClientData_Post_m79(id, sendweapons, cd_handle) {
	// Don't have our weapon	
	if (!hasOnHandM79[id] || !is_user_alive(id)) return FMRES_IGNORED
	// Block default sounds	
	if (hasOnHandM79[id] && g_hasM79[id] && g_canShoot[id]) set_cd(cd_handle, CD_flNextAttack, halflife_time() + 0.001 ); 
	return FMRES_HANDLED
}

// Fire gremade
public FireGrenade(id) {
	// Set animation
	if(grenade_count[id]>1){ 
		playanim(id, anim_shot1)
		set_task(0.4,"reloadsnd",id)
		set_task(1.6,"reloadin",id)
		set_task(2.3,"reloadon",id)
		} else { 
		playanim(id, anim_shot2)
	}
	// Get origin. angle and velocity
	new Float:fAngle[3], Float:fVelocity[3]
	pev(id, pev_v_angle, fAngle)
	
	// Create ent
	new grenade = create_entity("info_target")
	
	// Not grenade
	if (!grenade) return PLUGIN_HANDLED
	
	// Classname
	entity_set_string(grenade, EV_SZ_classname, "m79_grenade")
	
	// Model
	entity_set_model(grenade, m79_GRENADE_MODEL)
	
	new Float:vOrigin[3],Float:vUp[3]
	pev(id, pev_origin, vOrigin)
	
	global_get(glb_v_up, vUp)
	new up = 17
	vOrigin[0] = vOrigin[0] + vUp[0] * up
	vOrigin[1] = vOrigin[1] + vUp[1] * up
	vOrigin[2] = vOrigin[2] + vUp[2] * up
	
	// Origin
	entity_set_origin(grenade, vOrigin)
	
	// Angles
	entity_set_vector(grenade, EV_VEC_angles, fAngle)
	
	// Size
	new Float:MinBox[3] = {-1.0, -1.0, -1.0}
	new Float:MaxBox[3] = {1.0, 1.0, 1.0}
	entity_set_vector(grenade, EV_VEC_mins, MinBox)
	entity_set_vector(grenade, EV_VEC_maxs, MaxBox)
	
	// Interaction
	entity_set_int(grenade, EV_INT_solid, SOLID_SLIDEBOX)
	
	// Movetype
	entity_set_int(grenade, EV_INT_movetype, MOVETYPE_TOSS)
	
	// Owner
	entity_set_edict(grenade, EV_ENT_owner, id)
	
	// Effects
	entity_set_int(grenade, EV_INT_effects, EF_BRIGHTLIGHT)
	
	// Velocity
	VelocityByAim(id, 1500, fVelocity)
	
	
	entity_set_vector(grenade, EV_VEC_velocity, fVelocity)
	
	// Launch sound
	emit_sound(grenade, CHAN_WEAPON, m79_GRENADE_SHOOT, VOL_NORM, ATTN_NORM, 0, PITCH_NORM)
	
	message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
	write_byte(TE_BEAMFOLLOW) // Temporary entity ID
	write_short(grenade) // Entity
	write_short(sTrail) // Sprite index
	write_byte(3) // Life
	write_byte(1) // Line width
	write_byte(255) // Red
	write_byte(255) // Green
	write_byte(255) // Blue
	write_byte(255) // Alpha
	message_end() 
	return PLUGIN_CONTINUE
}	

public reloadsnd(id){
	emit_sound(id, CHAN_WEAPON, m79_GRENADE_CLIPOUT, VOL_NORM, ATTN_NORM, 0, PITCH_NORM)
}
public reloadin(id){
	emit_sound(id, CHAN_WEAPON, m79_GRENADE_CLIPIN, VOL_NORM, ATTN_NORM, 0, PITCH_NORM)
}
public reloadon(id){
	emit_sound(id, CHAN_WEAPON, m79_GRENADE_CLIPON, VOL_NORM, ATTN_NORM, 0, PITCH_NORM)
}

// We hit something!!!
public pfn_touch(pentru, ptd) {
	// If ent is valid
	if (pev_valid(pentru))
	{	
		// Get classnames
		static classname[32], classnameptd[32]
		pev(pentru, pev_classname, classname, 31)
		
		
		// Our ent
		if(equal(classname, "m79_grenade"))
		{
			// Get it's origin
			new Float:originF[3]
			pev(pentru, pev_origin, originF)
			
			// Draw explosion
			message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
			write_byte(TE_EXPLOSION) // Temporary entity ID
			engfunc(EngFunc_WriteCoord, originF[0]) // engfunc because float
			engfunc(EngFunc_WriteCoord, originF[1])
			engfunc(EngFunc_WriteCoord, originF[2])
			write_short(sExplo) // Sprite index
			write_byte(50) // Scale
			write_byte(15) // Framerate
			write_byte(0) // Flags
			message_end()
			
			// Draw smoke
			message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
			write_byte(TE_SMOKE) // Temporary entity IF
			engfunc(EngFunc_WriteCoord, originF[0]) // Pos X
			engfunc(EngFunc_WriteCoord, originF[1]) // Pos Y
			engfunc(EngFunc_WriteCoord, originF[2]) // Pos Z
			write_short(sSmoke) // Sprite index
			write_byte(75) // Scale
			write_byte(15) // Framerate
			message_end()
			
			// Get owner
			new owner = pev(pentru, pev_owner)
			
			new Max_Damage = get_pcvar_num(cvar_granade_max_damage)
			new Damage_Radius = get_pcvar_num(cvar_granade_damage_radius)
			
			// Loop through all players
			for(new i = 1; i < get_maxplayers(); i++)
			{
				// Alive...
				if (is_user_alive(i) == 1 && is_user_connected(owner))
				{
					
					// A zombie/nemesis
					if (get_user_team ( i ) == 1)
					{
						// Get victims origin and distance
						new VictimOrigin[3], Distance , origin[3]
						get_user_origin(i, VictimOrigin)
						// Get distance between victim and epicenter
						
						origin[0] = floatround(originF[0])
						origin[1] = floatround(originF[1])
						origin[2] = floatround(originF[2])
						
						Distance = get_distance(VictimOrigin, origin)
						
						if (Distance <= Damage_Radius)
						{
							// Start screen shake
							message_begin(MSG_ONE, g_msgScreenShake, {0,0,0}, i)
							write_short(1<<14) // Amount
							write_short(1<<14) // Duration
							write_short(1<<14) // Frequency
							message_end()
							new Damage
							Damage = Max_Damage - floatround(floatmul(float(Max_Damage), floatdiv(float(Distance), float(Damage_Radius))))
							make_knockback(i, originF, 1.5*float(Damage))	
							do_victim(i,owner,Damage)					
						}
					}
				}
				// Destroy ent
				set_pev(pentru, pev_flags, FL_KILLME)
			}
			// We hit breakable
			if(pev_valid(ptd)){
				pev(ptd, pev_classname, classnameptd, 31)
				if (equali(classnameptd, "func_breakable"))
				{
					// Destroy it
					force_use(pentru,ptd)
				}
		}	}
	}	
	if(is_valid_ent(pentru)) {
		new classname[32]
		entity_get_string(pentru,EV_SZ_classname,classname,31)
		
		if(equal(classname, "m79")) {
			if(is_valid_ent(ptd)) {
				new id = ptd
				if(id > 0 && id < 34) {
					
					// Pick up weapon
					give_weapon(id,entity_get_int(pentru, EV_INT_iuser1))
					remove_entity(pentru)
					
				}
			}
		}
	}
}	

public do_victim (victim,attacker,Damage) {
	
	new namek[32],namev[32],authida[35],authidv[35],teama[32],teamv[32]
	
	get_user_name(victim,namev,31)
	get_user_name(attacker,namek,31)
	get_user_authid(victim,authidv,34)
	get_user_authid(attacker,authida,34)
	get_user_team(victim,teamv,31)
	get_user_team(attacker,teama,31)
	static DamageTake[33]
	if(Damage >= get_user_health(victim)) {
		
		if(get_cvar_num("mp_logdetail") == 3) {
			
			log_message("^"%s<%d><%s><%s>^" attacked ^"%s<%d><%s><%s>^" with ^"grenade^" (hit ^"chest^") (Damage ^"%d^") (health ^"0^")",
			namek,get_user_userid(attacker),authida,teama,namev,get_user_userid(victim),authidv,teamv,Damage)
			
		}
		
		set_user_frags(attacker,get_user_frags(attacker) + 1 )
		
		set_msg_block(gmsgDeathMsg,BLOCK_ONCE)
		set_msg_block(gmsgScoreInfo,BLOCK_ONCE)
		
		ExecuteHamB(Ham_Killed, victim, attacker, 0)
		
		replace_dm(attacker,victim,0)
		
		log_message("^"%s<%d><%s><%s>^" killed ^"%s<%d><%s><%s>^" with ^"grenade^"",
		namek,get_user_userid(attacker),authida,teama,namev,get_user_userid(victim),authidv,teamv)
		
	}
	
	else {
		set_user_health(victim,get_user_health(victim) - Damage )
		
		if(get_cvar_num("mp_logdetail") == 3) {
			
			log_message("^"%s<%d><%s><%s>^" attacked ^"%s<%d><%s><%s>^" with ^"missile^" (hit ^"chest^") (Damage ^"%d^") (health ^"%d^")",
			namek,get_user_userid(attacker),authida,teama,namev,get_user_userid(victim),authidv,teamv,Damage,get_user_health(victim))
			
		}
		
	}
	if(DamageTake[attacker] >= 5000){
		DamageTake[attacker] -= 5000
	} else DamageTake[attacker] += Damage
	
}

public replace_dm (id,tid,tbody) {
	
	//Update killers scorboard with new info
	message_begin(MSG_ALL,gmsgScoreInfo)
	write_byte(id)
	write_short(get_user_frags(id))
	write_short(get_user_deaths(id))
	write_short(0)
	write_short(get_user_team(id))
	message_end()
	
	//Update victims scoreboard with correct info
	message_begin(MSG_ALL,gmsgScoreInfo)
	write_byte(tid)
	write_short(get_user_frags(tid))
	write_short(get_user_deaths(tid))
	write_short(0)
	write_short(get_user_team(tid))
	message_end()
	
	//Headshot Kill
	if (tbody == 1) {
		
		message_begin( MSG_ALL, gmsgDeathMsg,{0,0,0},0)
		write_byte(id)
		write_byte(tid)
		write_string("grenade")
		message_end()
		
	}
	
	//Normal Kill
	else {
		
		message_begin( MSG_ALL, gmsgDeathMsg,{0,0,0},0)
		write_byte(id)
		write_byte(tid)
		write_byte(0)
		write_string("grenade")
		message_end()
		
	}
	
	return PLUGIN_CONTINUE
	
}

// HUD init	
public hud_init(taskid) {
	new HudAmmo[65]
	
	format(HudAmmo, 64, "Grenades Left: [%d]", grenade_count[ID_HUDAMMO])
	
	message_begin(MSG_ONE, g_msgStatusText, {0,0,0}, ID_HUDAMMO)
	write_byte(0)
	write_string(HudAmmo) // Text
	message_end()
	
}
public hud_clear(id) {
	
	message_begin(MSG_ONE, g_msgStatusText, {0,0,0}, id)
	write_byte(0)
	write_string("") // Text
	message_end()
}

public FurienCurrentWeapon ( id ) {
	
	new szKnife = get_user_weapon ( id );
	if ( szKnife == CSW_KNIFE ) {
		if ( katana_knife [ id ] && szKnife == CSW_KNIFE ) {
			
			set_pev ( id, pev_viewmodel2, katana_knife_v_model );
			set_pev ( id, pev_weaponmodel2, katana_knife_p_model );
			//set_task ( 0.1, "Katana_Damage", id );
			
		}
		
		if ( double_katana_knife [ id ] && szKnife == CSW_KNIFE ) {
			
			set_pev ( id, pev_viewmodel2, double_katana_v_knife_model );
			set_pev ( id, pev_weaponmodel2, double_katana_p_knife_model );
			//set_task ( 0.1, "Double_Katana_Damage", id );
			
		}
		
		if ( super_knife [ id ] && szKnife == CSW_KNIFE ) {
			
			set_pev ( id, pev_viewmodel2, super_knife_v_model );
			set_pev ( id, pev_weaponmodel2, super_knife_p_model );
			//set_task ( 0.1, "Super_Knife_Damage", id );
			
		}
		
		if ( infinity_knife [ id ] && szKnife == CSW_KNIFE ) {
			
			set_pev ( id, pev_viewmodel2, infinity_knife_v_model );
			set_pev ( id, pev_weaponmodel2, infinity_knife_p_model );
			//set_task ( 0.1, "Infinity_Knife_Damage", id );
			
		}
		
		if ( vip_axe_knife [ id ] && szKnife == CSW_KNIFE ) {
			
			set_pev ( id, pev_viewmodel2, axe_knife_v_model );
			set_pev ( id, pev_weaponmodel2, axe_knife_p_model );
			//set_task ( 0.1, "VIP_Axe_Knife_Damage", id );
			
		}
		
		if ( elf_knife [ id ] && szKnife == CSW_KNIFE ) {
			
			set_pev ( id, pev_viewmodel2, elf_knife_model );
			//set_task ( 0.1, "Elf_Knife_Damage", id );
			
		}
		
		if ( ignes_knife [ id ] && szKnife == CSW_KNIFE ) {
			
			set_pev ( id, pev_viewmodel2, ignes_knife_model );
			//set_task ( 0.1, "Ignes_Knife_Damage", id );
			
		}
		
		if ( trainer [ id ] && szKnife == CSW_KNIFE ) {
			
			set_pev ( id, pev_viewmodel2, trainer_v_model );
			set_pev ( id, pev_weaponmodel2, trainer_p_model );
			//set_task ( 0.1, "Trainer_Knife_Damage", id );
			
		}
		
		if ( super_knife_shop [ id ] && szKnife == CSW_KNIFE ) {
			set_pev ( id, pev_viewmodel2, super_knife_shop_v_model );
			//set_task ( 0.1, "SK_Knife_Damage", id );
		}
		
		if ( super_knife_shop2 [ id ] && szKnife == CSW_KNIFE ) {
			set_pev ( id, pev_viewmodel2, super_knife_shop_v_model2 );
			set_pev ( id, pev_weaponmodel2, super_knife_shop_p_model2 );
			//set_task ( 0.1, "SK2_Knife_Damage", id );
		}
	}
	
	if ( strike_grenade [ id ] && szKnife == CSW_HEGRENADE && get_user_team ( id ) == 1 ) {
		
		set_pev ( id, pev_viewmodel2, strike_grenade_v_model );
		set_pev ( id, pev_weaponmodel2, strike_grenade_p_model );
		
	}
	
	if ( strike_grenade2 [ id ] && szKnife == CSW_HEGRENADE && get_user_team ( id ) == 1 ) {
		
		set_pev ( id, pev_viewmodel2, strike_grenade_v_model );
		set_pev ( id, pev_weaponmodel2, strike_grenade_p_model );
		
	}
	
	if ( strike_grenade3 [ id ] && szKnife == CSW_HEGRENADE && get_user_team ( id ) == 1 ) {
		
		set_pev ( id, pev_viewmodel2, strike_grenade_v_model );
		set_pev ( id, pev_weaponmodel2, strike_grenade_p_model );
		
	}
	
	else if ( !user_has_weapon ( id, CSW_KNIFE ) || ( !katana_knife [ id ] || !double_katana_knife || !super_knife || !infinity_knife || !vip_axe_knife || !ignes_knife || !elf_knife || !trainer ) )
	{
		give_item ( id, "weapon_knife" );
		return 1;
	}
	return 1;
}

public AntiFurienCurrentWeapon ( id ) {
	
	new szWeapon = get_user_weapon ( id );
	
	if ( szWeapon == CSW_MP5NAVY ) {
		if ( dual_mp5 [ id ] && szWeapon == CSW_MP5NAVY ) {
			
			set_pev ( id, pev_viewmodel2, dual_mp5_v_model );
			set_pev ( id, pev_weaponmodel2, dual_mp5_p_model );
			
		}
	}
	
	
	if ( szWeapon == CSW_P90 ) {
		if ( hunter [ id ] && szWeapon == CSW_P90 ) {
			
			set_pev ( id, pev_viewmodel2, hunter_v_model );
			set_pev ( id, pev_weaponmodel2, hunter_p_model );
			//set_task ( 0.1, "Hunter_Damage", id );
			
		}
		
		if ( thompson [ id ] && szWeapon == CSW_P90 ) {
			
			set_pev ( id, pev_viewmodel2, thompson_v_model );
			set_pev ( id, pev_weaponmodel2, thompson_p_model );
			//set_task ( 0.1, "Thompson_Damage", id );
			
		}
		
		if ( warrior [ id ] && szWeapon == CSW_P90 ) {
			
			set_pev ( id, pev_viewmodel2, warrior_v_model );
			set_pev ( id, pev_weaponmodel2, warrior_p_model );
			//set_task ( 0.1, "Warrior_Damage", id );
			
		}
		
		if ( deklowaz [ id ] && szWeapon == CSW_P90 ) {
			
			set_pev ( id, pev_viewmodel2, deklowaz_v_model );
			set_pev ( id, pev_weaponmodel2, deklowaz_p_model );
			//set_task ( 0.1, "Deklowaz_Damage", id );
			
		}
	}
	
	if ( szWeapon == CSW_GALIL ) {
		if ( mage [ id ] && szWeapon == CSW_GALIL ) {
			
			set_pev ( id, pev_viewmodel2, mage_v_model );
			set_pev ( id, pev_weaponmodel2, mage_p_model );
			//set_task ( 0.1, "Mage_Damage", id );
			
		}
	}
	
	if ( szWeapon == CSW_FAMAS ) {
		if ( rogue [ id ] && szWeapon == CSW_FAMAS ) {
			
			set_pev ( id, pev_viewmodel2, rogue_v_model );
			set_pev ( id, pev_weaponmodel2, rogue_p_model );
			//set_task ( 0.1, "Rogue_Damage", id );
			
		}
	}
	
	if ( szWeapon == CSW_SG552 ) {
		if ( shaman [ id ] && szWeapon == CSW_SG552 ) {
			
			set_pev ( id, pev_viewmodel2, shaman_v_model );
			set_pev ( id, pev_weaponmodel2, shaman_p_model );
			//set_task ( 0.1, "Shaman_Damage", id );
			
		}
	}
	
	if ( szWeapon == CSW_USP ) {
		if ( uspx [ id ] && szWeapon == CSW_USP ) {
			
			set_pev ( id, pev_viewmodel2, uspx_v_model );
			set_pev ( id, pev_weaponmodel2, uspx_p_model );
			
		}
	}
	
	if ( szWeapon == CSW_SMOKEGRENADE ) {
		if ( flare [ id ] && szWeapon == CSW_SMOKEGRENADE && get_user_team ( id ) == 2 ) {
			
			set_pev ( id, pev_viewmodel2, flare_v_model );
			
		}
	}
	
	return 1;
}

public Spawn(id) {
	remove_task(id);
	HasChose[id] = false;
	HE_Cooldown[id] = 0;
	GodMode_Cooldown[id] = 0;
	GodMode_DurationCooldown[id] = 0;
	Drop_Cooldown[id] = 0;
	Freeze_Cooldown[id] = 0;
	remove_freeze ( id );
	DragEnd ( id );
	Drag_Cooldown[id] = 0;
	Not_Cooldown[id] = false;
	Teleport_Cooldown[id] = 0;
}

public remove_freeze(id) {
	if (!Frozen[id] || !is_user_alive(id)) return;
	
	Frozen[id] = false;
	set_task(0.2, "set_normal", id);
	engfunc(EngFunc_EmitSound, id, CHAN_BODY, FROSTBREAK_SND[random_num(0, sizeof FROSTBREAK_SND - 1)], 1.0, ATTN_NORM, 0, PITCH_NORM);
	fm_set_rendering(id);
	static Float:origin2F[3];
	pev(id, pev_origin, origin2F);
	engfunc(EngFunc_MessageBegin, MSG_PVS, SVC_TEMPENTITY, origin2F, 0);
	write_byte(TE_BREAKMODEL);
	engfunc(EngFunc_WriteCoord, origin2F[0]);
	engfunc(EngFunc_WriteCoord, origin2F[1]);
	engfunc(EngFunc_WriteCoord, origin2F[2]+24.0);
	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(FreezeSprite);
	write_byte(10);
	write_byte(25);
	write_byte(BREAK_GLASS);
	message_end();
}

public DragEnd(id) { // drags end function
	LastHook[id] = get_gametime();
	Hooked[id] = 0;
	BeamRemove(id);
	Drag_I[id] = false;
	Unable2move[id] = false;
	if(!Not_Cooldown[id] && HasPower[id] == 6) {
		Drag_Cooldown[id] = get_pcvar_num(CvarDragCooldown);
		set_task(1.0, "DragShowHUD", id, _, _, "b");
		Not_Cooldown[id] = true;
		set_hudmessage(0, 100, 200, 0.05, 0.60, 0, 1.0, 1.1, 0.0, 0.0, -11);
		if(get_pcvar_num(CvarDragCooldown) != 1) {
			show_hudmessage(id, "Puterea iti va reveni in: %d secunde",get_pcvar_num(CvarDragCooldown));
		}
		if(get_pcvar_num(CvarDragCooldown) == 1) {
			show_hudmessage(id, "Puterea iti va reveni in: %d secunda",get_pcvar_num(CvarDragCooldown));
		}
	}
}

public BeamRemove(id) { // remove beam
	message_begin(MSG_BROADCAST, SVC_TEMPENTITY);
	write_byte(99);	//TE_KILLBEAM
	write_short(id);	//entity
	message_end();
}

//------| Client Death |------//
public Death() {
	new i = read_data ( 2 )
	remove_task(read_data(2));
	HE_Cooldown[read_data(2)] = 0;
	GodMode_Cooldown[read_data(2)] = 0;
	GodMode_DurationCooldown[read_data(2)] = 0;
	Drop_Cooldown[read_data(2)] = 0;
	Freeze_Cooldown[read_data(2)] = 0;
	Freeze_Cooldown[read_data(2)] = 0;
	remove_freeze ( i );
	BeamRemove ( i );
	Drag_Cooldown[read_data(2)] = 0;
	if (Hooked[read_data(2)])
		DragEnd ( i );
	
	Not_Cooldown[read_data(2)] = false;
	Teleport_Cooldown[read_data(2)] = 0;
}

//------| Client Power |------//
public Power(id)  {
	new target, body;
	static Float:start[3];
	static Float:aim[3];
	
	pev(id, pev_origin, start);
	fm_get_aim_origin(id, aim);
	
	start[2] += 16.0; // raise
	aim[2] += 16.0; // raise
	
	if ( is_user_alive(id) && HasPower[id] == 4) {
		
		if (Drop_Cooldown[id]) {
			ColorChat(id, GREEN, "%s Puterea iti va reveni in^4 %d^3 secunde .^4", szPrefix, Drop_Cooldown[id]);			
			return PLUGIN_CONTINUE;
		}
		get_user_aiming (id, target, body, CvarDropDistance);
		if(is_user_alive(target) && get_user_team(id) != get_user_team(target)) {
			message_begin(MSG_BROADCAST ,SVC_TEMPENTITY);
			write_byte(TE_EXPLOSION);
			engfunc(EngFunc_WriteCoord, aim[0]);
			engfunc(EngFunc_WriteCoord, aim[1]);
			engfunc(EngFunc_WriteCoord, aim[2]);
			write_short(DropSprite2);
			write_byte(10);
			write_byte(30);
			write_byte(4);
			message_end();
			
			emit_sound(id, CHAN_WEAPON, DROP_HIT_SND, VOL_NORM, ATTN_NORM, 0, PITCH_NORM);
			set_task ( 0.1, "Drop", target );
			message_begin(MSG_ONE, get_user_msgid("ScreenFade"), {0,0,0}, id);
			write_short(1<<10);
			write_short(1<<10);
			write_short(0x0000);
			write_byte(230);
			write_byte(0);
			write_byte(0);
			write_byte(50);
			message_end();
			message_begin(MSG_ONE, get_user_msgid("ScreenFade"), {0,0,0}, target);
			write_short(1<<10);
			write_short(1<<10);
			write_short(0x0000);
			write_byte(230);
			write_byte(0);
			write_byte(0);
			write_byte(50);
			message_end();
		}	
		message_begin(MSG_BROADCAST,SVC_TEMPENTITY);
		write_byte(0);
		engfunc(EngFunc_WriteCoord,start[0]);
		engfunc(EngFunc_WriteCoord,start[1]);
		engfunc(EngFunc_WriteCoord,start[2]);
		engfunc(EngFunc_WriteCoord,aim[0]);
		engfunc(EngFunc_WriteCoord,aim[1]);
		engfunc(EngFunc_WriteCoord,aim[2]);
		write_short(DropSprite); // sprite index
		write_byte(0); // start frame
		write_byte(30); // frame rate in 0.1's
		write_byte(20); // life in 0.1's
		write_byte(50); // line width in 0.1's
		write_byte(50); // noise amplititude in 0.01's
		write_byte(0); // red
		write_byte(100); // green
		write_byte(0); // blue
		write_byte(100); // brightness
		write_byte(50); // scroll speed in 0.1's
		message_end();
		Drop_Cooldown[id] = get_pcvar_num(CvarDropCooldown);
		set_task(1.0, "DropShowHUD", id, _, _, "b");
		set_hudmessage(0, 100, 200, 0.05, 0.60, 0, 1.0, 1.1, 0.0, 0.0, -11);
		if(get_pcvar_num(CvarDropCooldown) != 1) {
			show_hudmessage(id, "Puterea iti va reveni in: %d secunde",get_pcvar_num(CvarDropCooldown));
		}
		if(get_pcvar_num(CvarDropCooldown) == 1) {
			show_hudmessage(id, "Puterea iti va reveni in: %d secunda",get_pcvar_num(CvarDropCooldown));
		}
		return PLUGIN_HANDLED;
	}
	
	else if (is_user_alive(id) && HasPower[id] == 5) {
		if (Freeze_Cooldown[id]) {
			ColorChat(id, GREEN, "%s Puterea iti va reveni in^4 %d^3 secunde .^4", szPrefix,Freeze_Cooldown[id]);
			return PLUGIN_CONTINUE;
		}
		get_user_aiming (id, target, body, CvarFreezeDistance);
		if(is_user_alive(target) && get_user_team(id) != get_user_team(target)) {	
			set_task ( 0.1, "Freeze", target );
			
			message_begin(MSG_ONE, get_user_msgid("ScreenFade"), {0,0,0}, id);
			write_short(1<<10);
			write_short(1<<10);
			write_short(0x0000);
			write_byte(0);
			write_byte(100);
			write_byte(200);
			write_byte(50);
			message_end();
			message_begin(MSG_ONE, get_user_msgid("ScreenFade"), {0,0,0}, target);
			write_short(1<<10);
			write_short(1<<10);
			write_short(0x0000);
			write_byte(0);
			write_byte(100);
			write_byte(200);
			write_byte(50);
			message_end();
		}	
		message_begin(MSG_BROADCAST,SVC_TEMPENTITY);
		write_byte(0);
		engfunc(EngFunc_WriteCoord,start[0]);
		engfunc(EngFunc_WriteCoord,start[1]);
		engfunc(EngFunc_WriteCoord,start[2]);
		engfunc(EngFunc_WriteCoord,aim[0]);
		engfunc(EngFunc_WriteCoord,aim[1]);
		engfunc(EngFunc_WriteCoord,aim[2]);
		write_short(FreezeSprite3); // sprite index
		write_byte(0); // start frame
		write_byte(30); // frame rate in 0.1's
		write_byte(20); // life in 0.1's
		write_byte(50); // line width in 0.1's
		write_byte(50); // noise amplititude in 0.01's
		write_byte(0); // red
		write_byte(100); // green
		write_byte(200); // blue
		write_byte(100); // brightness
		write_byte(50); // scroll speed in 0.1's
		message_end();
		set_user_health ( target, get_user_health ( target ) - 5 );
		set_dhudmessage ( 255, 0, 0, 0.02, 0.90, 0, 6.0, 1.0 );
		show_dhudmessage ( id, "-5 HP" );
		Freeze_Cooldown[id] = get_pcvar_num(CvarFreezeCooldown);
		set_task(1.0, "FreezeShowHUD", id, _, _, "b");
		set_hudmessage(0, 100, 200, 0.05, 0.60, 0, 1.0, 1.1, 0.0, 0.0, -11);
		if(get_pcvar_num(CvarFreezeCooldown) != 1) {
			show_hudmessage(id, "Puterea iti va reveni in: %d secunde",get_pcvar_num(CvarFreezeCooldown));
		}
		if(get_pcvar_num(CvarFreezeCooldown) == 1) {
			show_hudmessage(id, "Puterea iti va reveni in: %d secunda",get_pcvar_num(CvarFreezeCooldown));
		}
		return PLUGIN_HANDLED;
	}
	else if  (is_user_alive(id) && HasPower[id] == 7) {	
		if (Teleport_Cooldown[id]) {
			ColorChat(id, GREEN, "%s Puterea iti va reveni in^4 %d^3 secunde .^4", szPrefix, Teleport_Cooldown[id]);
			return PLUGIN_CONTINUE;
		}
		if (teleport(id)) {
			emit_sound(id, CHAN_STATIC, SOUND_BLINK, 1.0, ATTN_NORM, 0, PITCH_NORM);
			remove_task(id);
			Teleport_Cooldown[id] = get_pcvar_num(CvarTeleportCooldown);
			set_task(1.0, "TeleportShowHUD", id, _, _, "b");
			set_hudmessage(0, 100, 200, 0.05, 0.60, 0, 1.0, 1.1, 0.0, 0.0, -11);
			if(get_pcvar_num(CvarTeleportCooldown) != 1) {
				show_hudmessage(id, "Puterea iti va reveni in: %d secunde",get_pcvar_num(CvarTeleportCooldown));
			}
			if(get_pcvar_num(CvarTeleportCooldown) == 1) {
				show_hudmessage(id, "Puterea iti va reveni in: %d secunda",get_pcvar_num(CvarTeleportCooldown));
			}
			return PLUGIN_HANDLED;
		}
		else {
			Teleport_Cooldown[id] = 0;
			ColorChat(id, GREEN, "%s Pozitia de teleportare este invalida .", szPrefix);
			return PLUGIN_HANDLED;
		}
		return PLUGIN_HANDLED;
	}
	return PLUGIN_CONTINUE;
}

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);
	
	return true;
}

public cmdShowXp ( id ) {
	
	ColorChat ( id, GREEN, "%s Ai ^4%d^3 XP, iar levelul tau este ^4%s^3 .", szPrefix, eXP [ id ], Prefix [ Level [ id ] ] );
	ShowHud ( id );
	
}

public cmdSaveXp ( id ) {
	
	ColorChat ( id, GREEN, "%s Ti-ai salvat XP-ul cu succes .", szPrefix );
	ShowHud ( id );
	
}

public cmdShowLevel ( id ) {
	
	ColorChat ( id, GREEN, "%s Levelul tau este ^4%s^3 .", szPrefix, Prefix [ Level [ id ] ] );
	
}

public cmdShowLevels ( id ) {
	
	ColorChat ( id, GREEN, "%s In total sunt^4 30^3 levele .", szPrefix );
	
}

public cmdClearXp ( id ) {
	
	ColorChat ( id, GREEN, "%s Ti-ai sters XP-ul cu succes .", szPrefix );
	eXP [ id ] -= eXP [ id ];
	Level [ id ] -= Level [ id ];
}

public cmdRefreshXP ( id ) {
	
	Level [ id ] -= Level [ id ];
	ColorChat ( id, GREEN, "%s Ti-ai reimprospatat Xp-ul cu succes !", szPrefix );
	
	if ( !is_user_bot ( id ) && ( Level [ id ] < 30) && ( eXP [ id ] >= Levels [ Level [ id ] ] ) )
	{
		while ( eXP [ id ] >= Levels [ Level [ id ] ] )
		{
			Level [ id ] += 1;
		}
	}
}

public cmdRefreshXP2 ( id ) {
	
	Level [ id ] -= Level [ id ];
	// ColorChat ( id, GREEN, "%s Ti-ai reimprospatat Xp-ul cu succes !", szPrefix );
	
	if ( !is_user_bot ( id ) && ( Level [ id ] < 30) && ( eXP [ id ] >= Levels [ Level [ id ] ] ) )
	{
		while ( eXP [ id ] >= Levels [ Level [ id ] ] )
		{
			Level [ id ] += 1;
		}
	}
}

public cmdXpTop15 ( id ) {
	
	new i, count;
	static sort [ 33 ] [ 2 ], maxPlayers;
	
	if ( !maxPlayers ) maxPlayers = get_maxplayers ( );
	
	for ( i= 1; i <= maxPlayers; i++ )
	{
		sort [ count ][ 0 ] = i;
		sort [ count ][ 1 ] = Level [ i ];
		count++;
	}
	
	SortCustom2D ( sort,count, "stats_custom_compare" );
	
	new motd [ 1024 ], len;
	
	len = format ( motd, 1023, "<body bgcolor=#000000><center><font color=#FFB000><pre>" );
	len += format ( motd [ len ], 1023-len,"%s %-22.22s %3s^n", "#", "Name", "Level" );
	
	new players [ 32 ], num;
	get_players ( players, num );
	
	new b = clamp ( count,0,15 );
	
	new name [ 32 ], player;
	
	for ( new a = 0; a < b; a++ )
	{
		player = sort [ a ] [ 0 ];
		
		get_user_name ( player, name, 31 );		
		len += format ( motd [ len ], 1023-len,"%d %-22.22s %d^n", a+1, name, sort [ a ] [ 1 ] );
	}
	
	len += format ( motd [ len ], 1023-len,"</body></font></pre></center>" );
	show_motd(  id, motd, "Level Top 15" );
	
	return PLUGIN_CONTINUE;
}

public stats_custom_compare ( elem1 [ ], elem2 [ ] ) {
	
	if ( elem1 [ 1 ] > elem2 [ 1 ] ) return -1;
	else if ( elem1 [ 1 ] < elem2 [ 1 ] ) return 1;
		
	return 0;
}

public cmdGiveXp ( id, level, cid ) { 
	
	if(!cmd_access(id, level, cid, 3)) 
		return PLUGIN_HANDLED;
	
	new target[32], amount[21], reason[21], gplayers[32], players, num, i;
	
	read_argv(1, target, 31);
	read_argv(2, amount, 20);
	read_argv(3, reason, 20);
	
	new player = cmd_target(id, target, 8);
	
	if(!player)  
		return PLUGIN_HANDLED;
	
	new admin_name[32], player_name[32];
	get_user_name(id, admin_name, 31);
	get_user_name(player, player_name, 31);
	new expnum = str_to_num(amount);
	
	ColorChat ( 0, GREEN, "^4ADMIN ^3%s^1: ^1give ^4%s ^1xp to ^3%s ^1%s", admin_name, amount, player_name, reason );
	
	eXP [ player ] += expnum;
	cmdRefreshXP2 ( player );
	SaveData ( player );
	
	if(equali(target, "@All") || equali ( target, "all" ) ) {
		
		get_players(gplayers, num, "a");
		for(i = 0; i < num; i++) {
			players = gplayers[i];
			if(!is_user_connected(players))
				continue;
			eXP [ players ] += expnum;
			SaveData(players);
			ColorChat ( 0, GREEN, "^4ADMIN ^3%s^1: ^1give ^4%s ^1xp to ^3All Players ^1%s", admin_name, amount, reason );
		}
	}
	
	return PLUGIN_CONTINUE;
}

public cmdSetXp ( id, level, cid ) { 
	
	if(!cmd_access(id, level, cid, 3)) 
		return PLUGIN_HANDLED;
	
	new target[32], amount[21], reason[21];
	
	read_argv(1, target, 31);
	read_argv(2, amount, 20);
	read_argv(3, reason, 20);
	
	new player = cmd_target(id, target, 8);
	
	if(!player)  
		return PLUGIN_HANDLED;
	
	new admin_name[32], player_name[32];
	get_user_name(id, admin_name, 31);
	get_user_name(player, player_name, 31);
	
	new expnum = str_to_num(amount);
	ColorChat ( 0, GREEN, "^4ADMIN ^3%s^1: ^1set ^4%s ^1xp to ^3%s ^1%s", admin_name, amount, player_name, reason );
	
	eXP [ player ] = expnum;
	cmdRefreshXP2 ( player );
	SaveData ( player );
	
	return PLUGIN_CONTINUE;
}

public fwd_setmodel(ent, const model[]) {
	if(!pev_valid(ent) || !equal(model[9], "smokegrenade.mdl"))
		return FMRES_IGNORED;
	
	static classname[32]; pev(ent, pev_classname, classname, 31);
	if(equal(classname, "grenade") && 1)
	{
		engfunc(EngFunc_SetModel, ent, flare_w_model);
		set_pev(ent, pev_effects, EF_BRIGHTLIGHT);
		set_pev(ent, pev_iuser4, 1337);
		set_pev(ent, pev_nextthink, get_gametime() + 999.9);
		fm_set_rendering2(ent, kRenderFxGlowShell, 150, 150, 250, kRenderNormal, 16);
		
		return FMRES_SUPERCEDE;
	}
	return FMRES_IGNORED;
}

public fwd_think(ent) if(pev_valid(ent) && is_ent_flare(ent))
engfunc(EngFunc_RemoveEntity, ent);

public GetRandomPlayer ( ) { 
	
	new players[32], count;    
	get_players(players, count, "a");    
	
	if(count)              
	{
		new iPlayer = players[random(count)];
		
		new Name[32];
		get_user_name(iPlayer, Name, charsmax(Name));
		set_user_credits ( iPlayer, get_user_credits ( iPlayer ) + 1 );
		
		ColorChat ( iPlayer, GREEN, "%s Felicitari ! Ai primit^4 1^3 credit .^4", szPrefix );
		ColorChat ( 0, GREEN, "%s^4 %s^3 a primit^4 1^3 credit .^4", szPrefix, Name );
	}
}  

public GiveQuadBarrel(id, itemid)
{
	if(itemid != g_quad_barrel)
		return PLUGIN_HANDLED
	
	g_had_qb[id] = 1
	new ent = give_item(id, "weapon_xm1014")
	
	cs_set_weapon_ammo(ent, get_pcvar_num(cvar_default_clip))
	cs_set_user_bpammo(id, CSW_QB, 10)
	
	set_pdata_float(id, 83, 1.0, 4)
	set_weapon_anim(id, 4)
	
	return PLUGIN_CONTINUE
}

public check_draw_weapon(id)
{
	set_task(0.001, "do_check", id)
}

public do_check(id)
{
	if(get_user_weapon(id) == CSW_QB && g_had_qb[id])
	{
		set_weapon_anim(id, 4)
	}
}

public event_curweapon_quad(id)
{
	if(!is_user_alive(id) || !is_user_connected(id))
		return
	if(get_user_weapon(id) != CSW_QB || !g_had_qb[id])
		return	
	
	set_pev(id, pev_viewmodel2, qb_v_model)
	set_pev(id, pev_weaponmodel2, qb_p_model)
	
	return 
}

public fw_UpdateClientData_Post_qb(id, sendweapons, cd_handle)
{
	if(!is_user_alive(id) || !is_user_connected(id))
		return FMRES_IGNORED	
	if(get_user_weapon(id) != CSW_QB || !g_had_qb[id])
		return FMRES_IGNORED
	
	set_cd(cd_handle, CD_flNextAttack, halflife_time() + 0.001) 
	
	return FMRES_HANDLED
}

public TraceAttack(iEnt, iAttacker, Float:flDamage, Float:fDir[3], pentru, iDamageType)
{
	if(!is_user_alive(iAttacker) || !is_user_connected(iAttacker))
		return HAM_IGNORED			
	if(get_user_weapon(iAttacker) != CSW_QB || !g_had_qb[iAttacker])
		return HAM_IGNORED
	
	static Float:flEnd[3]
	get_tr2(pentru, TR_vecEndPos, flEnd)
	
	make_bullet(iAttacker, flEnd)
	
	return HAM_HANDLED
}

public fw_takedmg(victim, inflictor, attacker, Float:damage, damagebits)
{
	if(!is_user_alive(victim) || !is_user_alive(attacker))
		return HAM_IGNORED
	
	
	if(get_user_weapon(attacker) == CSW_QB && g_had_qb[attacker])
	{
		static Float:random_start, Float:random_end
		
		random_start = get_pcvar_float(cvar_randmg_start)
		random_end = get_pcvar_float(cvar_randmg_end)
		
		SetHamParamFloat(4, random_float(random_start, random_end))
	}
	
	return HAM_HANDLED
}

public make_bullet(id, Float:Origin[3])
{
	// Find target
	new target, body
	get_user_aiming(id, target, body, 999999)
	
	if(target > 0 && target <= get_maxplayers())
	{
		new Float:fStart[3], Float:fEnd[3], Float:fRes[3], Float:fVel[3]
		pev(id, pev_origin, fStart)
		
		// Get ids view direction
		velocity_by_aim(id, 64, fVel)
		
		// Calculate position where blood should be displayed
		fStart[0] = Origin[0]
		fStart[1] = Origin[1]
		fStart[2] = Origin[2]
		fEnd[0] = fStart[0]+fVel[0]
		fEnd[1] = fStart[1]+fVel[1]
		fEnd[2] = fStart[2]+fVel[2]
		
		// Draw traceline from victims origin into ids view direction to find
		// the location on the wall to put some blood on there
		new res
		engfunc(EngFunc_TraceLine, fStart, fEnd, 0, target, res)
		get_tr2(res, TR_vecEndPos, fRes)
		
		// Show some blood :)
		message_begin(MSG_BROADCAST, SVC_TEMPENTITY) 
		write_byte(TE_BLOODSPRITE)
		write_coord(floatround(fStart[0])) 
		write_coord(floatround(fStart[1])) 
		write_coord(floatround(fStart[2])) 
		write_short(g_bloodspray)
		write_short(g_blood)
		write_byte(70)
		write_byte(random_num(1,2))
		message_end()
		
		
		} else {
		new decal = 41
		
		// Check if the wall hit is an entity
		if(target)
		{
			// Put decal on an entity
			message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
			write_byte(TE_DECAL)
			write_coord(floatround(Origin[0]))
			write_coord(floatround(Origin[1]))
			write_coord(floatround(Origin[2]))
			write_byte(decal)
			write_short(target)
			message_end()
			} else {
			// Put decal on "world" (a wall)
			message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
			write_byte(TE_WORLDDECAL)
			write_coord(floatround(Origin[0]))
			write_coord(floatround(Origin[1]))
			write_coord(floatround(Origin[2]))
			write_byte(decal)
			message_end()
		}
		
		// Show sparcles
		message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
		write_byte(TE_GUNSHOTDECAL)
		write_coord(floatround(Origin[0]))
		write_coord(floatround(Origin[1]))
		write_coord(floatround(Origin[2]))
		write_short(id)
		write_byte(decal)
		message_end()
	}
}

public fm_cmdstart(id, uc_handle, seed)
{
	if(!is_user_alive(id) || !is_user_connected(id))
		return
	
	if(get_user_weapon(id) != CSW_QB || !g_had_qb[id])
		return 
	
	new CurButton
	CurButton = get_uc(uc_handle, UC_Buttons)
	
	if(CurButton & IN_RELOAD)
	{
		CurButton &= ~IN_RELOAD
		set_uc(uc_handle, UC_Buttons, CurButton)
		new ent = find_ent_by_owner(-1, "weapon_xm1014", id)
		
		if (!ent)
			return
		
		new fInReload = get_pdata_int(ent, m_fInReload, 4)
		
		new Float:flNextAttack ; flNextAttack = get_pdata_float(id, m_flNextAttack, 5)
		
		if (flNextAttack > 0.0)
			return
		
		if (fInReload)
		{
			set_weapon_anim(id, 0)
			return
		}
		if(cs_get_weapon_ammo(ent) >= get_pcvar_num(cvar_default_clip))
		{
			set_weapon_anim(id, 0)
			return
		}
		
		ham_reload(ent)
	}
	
	if(CurButton & IN_ATTACK2)
	{
		static Float:CurTime
		CurTime = get_gametime()
		
		if(CurTime - 4.0 > g_last_fire_qb[id])
		{
			static ent, ammo
			ent = find_ent_by_owner(-1, "weapon_xm1014", id)
			ammo = cs_get_weapon_ammo(ent)
			
			if(cs_get_weapon_ammo(ent) <= 0)
				return			
			
			for(new i = 0; i < ammo; i++)
			{
				ExecuteHamB(Ham_Weapon_PrimaryAttack, ent)
			}
			
			emit_sound(id, CHAN_WEAPON, qb_sound[4], 1.0, ATTN_NORM, 0, PITCH_NORM)
			set_weapon_anim(id, random_num(1, 2))
			
			g_last_fire_qb[id] = CurTime
		}
	}
	
	if(CurButton & IN_ATTACK)
	{
		static Float:CurTime
		CurTime = get_gametime()
		
		CurButton &= ~IN_ATTACK
		set_uc(uc_handle, UC_Buttons, CurButton)
		
		static ent
		ent = find_ent_by_owner(-1, "weapon_xm1014", id)
		
		if(cs_get_weapon_ammo(ent) <= 0 || get_pdata_int(ent, m_fInReload, XTRA_OFS_WEAPON))
			return
		
		if(CurTime - get_pcvar_float(cvar_delayattack) > g_last_fire2[id])
		{
			emit_sound(id, CHAN_WEAPON, qb_sound[4], 1.0, ATTN_NORM, 0, PITCH_NORM)
			
			ExecuteHamB(Ham_Weapon_PrimaryAttack, ent)
			set_weapon_anim(id, random_num(1, 2))
			
			g_last_fire2[id] = CurTime
		}
		
	}	
	
	return 
}

public ham_reload(iEnt)
{
	new id = pev(iEnt, pev_owner)
	
	if( g_had_qb[id])
	{
		static Cur_BpAmmo
		Cur_BpAmmo = cs_get_user_bpammo(id, CSW_QB)
		
		if(Cur_BpAmmo > 0)
		{
			set_pdata_int(iEnt, 55, 0, 4)
			set_pdata_float(id, 83, get_pcvar_float(cvar_reloadtime), 4)
			set_pdata_float(iEnt, 48, get_pcvar_float(cvar_reloadtime) + 0.5, 4)
			set_pdata_float(iEnt, 46, get_pcvar_float(cvar_reloadtime) + 0.25, 4)
			set_pdata_float(iEnt, 47, get_pcvar_float(cvar_reloadtime) + 0.25, 4)
			set_pdata_int(iEnt, 54, 1, 4)
			
			set_weapon_anim(id, 3)			
		}
		
		return HAM_HANDLED
	}
	return HAM_IGNORED
	
}

public fw_SetModel_qb(entity, model[])
{
	if(!is_valid_ent(entity))
		return FMRES_IGNORED;
	
	static szClassName[33]
	entity_get_string(entity, EV_SZ_classname, szClassName, charsmax(szClassName))
	
	if(!equal(szClassName, "weaponbox"))
		return FMRES_IGNORED;
	
	static iOwner
	iOwner = entity_get_edict(entity, EV_ENT_owner)
	
	if(equal(model, "models/w_xm1014.mdl"))
	{
		static weapon
		weapon = find_ent_by_owner(-1, "weapon_xm1014", entity)
		
		if(!is_valid_ent(weapon))
			return FMRES_IGNORED;
		
		if(g_had_qb[iOwner])
		{
			entity_set_int(weapon, EV_INT_impulse, 120)
			g_had_qb[iOwner] = 0
			set_pev(weapon, pev_iuser3, cs_get_weapon_ammo(weapon))
			entity_set_model(entity, qb_w_model)
			
			return FMRES_SUPERCEDE
		}
	}
	
	return FMRES_IGNORED;
}

public fw_item_addtoplayer_qb(ent, id)
{
	if(!is_valid_ent(ent))
		return HAM_IGNORED
	
	
	if(entity_get_int(ent, EV_INT_impulse) == 120)
	{
		g_had_qb[id] = 1
		cs_set_weapon_ammo(ent, pev(ent, pev_iuser3))
		
		entity_set_int(id, EV_INT_impulse, 0)
		check_draw_weapon(id)
		
		return HAM_HANDLED
	}		
	
	return HAM_HANDLED
}

public ham_priattack(ent)
{
	static id
	id = pev(ent, pev_owner)
	
	if(g_had_qb[id])
	{
		if(cs_get_weapon_ammo(ent) > 0)
		{
			emit_sound(id, CHAN_WEAPON, qb_sound[4], 1.0, ATTN_NORM, 0, PITCH_NORM)
		}
		
		set_pdata_float(id, 83, 0.3, 4)
	}
}

public ham_postframe(iEnt)
{
	new id = pev(iEnt, pev_owner)
	
	if(g_had_qb[id])
	{
		static iBpAmmo ; iBpAmmo = get_pdata_int(id, 381, XTRA_OFS_PLAYER)
		static iClip ; iClip = get_pdata_int(iEnt, m_iClip, XTRA_OFS_WEAPON)
		static iMaxClip ; iMaxClip = get_pcvar_num(cvar_default_clip)
		
		if(get_pdata_int(iEnt, m_fInReload, XTRA_OFS_WEAPON) && get_pdata_float(id, m_flNextAttack, 5) <= 0.0 )
		{
			new j = min(iMaxClip - iClip, iBpAmmo)
			set_pdata_int(iEnt, m_iClip, iClip + j, XTRA_OFS_WEAPON)
			set_pdata_int(id, 381, iBpAmmo-j, XTRA_OFS_PLAYER)
			
			set_pdata_int(iEnt, m_fInReload, 0, XTRA_OFS_WEAPON)
			cs_set_weapon_ammo(iEnt, get_pcvar_num(cvar_default_clip))
			
			return
		}
	}
}

public ShowSalamanderIcon ( id ) {
	
	if ( user_has_weapon ( id, CSW_M249 ) && ( salamander [ id ] ) ) {
		
		new iconstatus;
		iconstatus = get_user_msgid ( "StatusIcon" );
		
		if ( ! ( pev ( id,pev_button ) & FL_ONGROUND ) )
		{    
			message_begin ( MSG_ONE,iconstatus,{ 0,0,0 },id );
			write_byte ( 1 ); // status (0=hide, 1=show, 2=flash)
			write_string ( "dmg_heat" ); // sprite name
			write_byte ( 255 ); // red
			write_byte ( 0 ); // green
			write_byte ( 0 ); // blue
			message_end ( );
		}
		
	}
	
	if ( get_user_weapon ( id ) == CSW_M249 && ( salamander [ id ] ) ) {
		
		new iconstatus;
		iconstatus = get_user_msgid ( "StatusIcon" );
		
		if ( ! ( pev ( id,pev_button ) & FL_ONGROUND ) )
		{    
			message_begin ( MSG_ONE,iconstatus,{ 0,0,0 },id );
			write_byte ( 2 ); // status (0=hide, 1=show, 2=flash)
			write_string ( "dmg_heat" ); // sprite name
			write_byte ( 255 ); // red
			write_byte ( 0 ); // green
			write_byte ( 0 ); // blue
			message_end ( );
		}
	}
	
	if ( !salamander [ id ] || !user_has_weapon ( id, CSW_M249 ) ) {
		
		new iconstatus;
		iconstatus = get_user_msgid ( "StatusIcon" );
		
		if ( ! ( pev ( id,pev_button ) & FL_ONGROUND ) )
		{    
			message_begin ( MSG_ONE,iconstatus,{ 0,0,0 },id );
			write_byte ( 0 ); // status (0=hide, 1=show, 2=flash)
			write_string ( "dmg_heat" ); // sprite name
			write_byte ( 255 ); // red
			write_byte ( 0 ); // green
			write_byte ( 0 ); // blue
			message_end ( );
		}
	}
	
}

public fw_spawn ( id ) {
	if(g_had_salamander[id])
		g_had_salamander[id] = false
	
	if(task_exists(id+TASK_FIRE)) remove_task(id+TASK_FIRE)
	if(task_exists(id+TASK_RELOAD)) remove_task(id+TASK_RELOAD)
	
	remove_entity_name(fire_classname)
}

stock make_blood(const Float:vTraceEnd[3], Float:Damage, hitEnt) {
	new bloodColor = ExecuteHam(Ham_BloodColor, hitEnt);
	if(bloodColor == -1)
		return;
	
	new amount = floatround(Damage);
	
	amount *= 2; //according to HLSDK
	
	message_begin(MSG_BROADCAST, SVC_TEMPENTITY);
	write_byte(TE_BLOODSPRITE);
	write_coord(floatround(vTraceEnd[0]));
	write_coord(floatround(vTraceEnd[1]));
	write_coord(floatround(vTraceEnd[2]));
	write_short(BloodSpray);
	write_short(BloodDrop);
	write_byte(bloodColor);
	write_byte(min(max(3, amount/10), 16));
	message_end();
}

// Make knockback
public make_knockback(Victim, Float:origin[3], Float:maxspeed) {
	// Get and set velocity
	new Float:fVelocity[3];
	kickback(Victim, origin, maxspeed, fVelocity);
	entity_set_vector(Victim, EV_VEC_velocity, fVelocity);
	
	return(1);
}

// Extra calulation for knockback
stock kickback(ent, Float:fOrigin[3], Float:fSpeed, Float:fVelocity[3]) {
	// Find origin
	new Float:fEntOrigin[3];
	entity_get_vector(ent, EV_VEC_origin, fEntOrigin);
	
	// Do some calculations
	new Float:fDistance[3];
	fDistance[0] = fEntOrigin[0] - fOrigin[0];
	fDistance[1] = fEntOrigin[1] - fOrigin[1];
	fDistance[2] = fEntOrigin[2] - fOrigin[2];
	new Float:fTime =(vector_distance(fEntOrigin,fOrigin) / fSpeed);
	fVelocity[0] = fDistance[0] / fTime;
	fVelocity[1] = fDistance[1] / fTime;
	fVelocity[2] = fDistance[2] / fTime;
	
	return(fVelocity[0] && fVelocity[1] && fVelocity[2]);
}

stock death_message(Killer, Victim, ScoreBoard, const Weapon[]) {
	// Block death msg
	set_msg_block(get_user_msgid("DeathMsg"), BLOCK_SET);
	ExecuteHamB(Ham_Killed, Victim, Killer, 2);
	set_msg_block(get_user_msgid("DeathMsg"), BLOCK_NOT);
	
	// Death
	make_deathmsg(Killer, Victim, 0, Weapon);
	cs_set_user_money(Killer, cs_get_user_money(Killer) + 300);
	
	// Update score board
	if(ScoreBoard) {
		message_begin(MSG_BROADCAST, get_user_msgid("ScoreInfo"));
		write_byte(Killer); // id
		write_short(pev(Killer, pev_frags)); // frags
		write_short(cs_get_user_deaths(Killer)); // deaths
		write_short(0); // class?
		write_short(get_user_team(Killer)); // team
		message_end();
		
		message_begin(MSG_BROADCAST, get_user_msgid("ScoreInfo"));
		write_byte(Victim); // id
		write_short(pev(Victim, pev_frags)); // frags
		write_short(cs_get_user_deaths(Victim)); // deaths
		write_short(0); // class?
		write_short(get_user_team(Victim)); // team
		message_end();
	}
}

stock get_damage_body(body, Float:damage) {
	switch(body) {
		case HIT_HEAD: damage *= 4.0;
			case HIT_STOMACH: damage *= 1.1;
			case HIT_CHEST: damage *= 1.5;
			case HIT_LEFTARM: damage *= 0.77;
			case HIT_RIGHTARM: damage *= 0.77;
			case HIT_LEFTLEG: damage *= 0.75;
			case HIT_RIGHTLEG: damage *= 0.75;
			default: damage *= 1.0;
	}
	
	return floatround(damage);
}	

stock fm_get_user_bpammo(index, weapon) {
	static offset
	switch(weapon) {
		case CSW_AWP: offset = OFFSET_AMMO_338MAGNUM
			case CSW_SCOUT, CSW_AK47, CSW_G3SG1: offset = OFFSET_AMMO_762NATO
			case CSW_M249: offset = OFFSET_AMMO_556NATOBOX
			case CSW_FAMAS, CSW_M4A1, CSW_AUG, 
			CSW_SG550, CSW_GALI, CSW_SG552: offset = OFFSET_AMMO_556NATO
		case CSW_M3, CSW_XM1014: offset = OFFSET_AMMO_BUCKSHOT
			case CSW_USP, CSW_UMP45, CSW_MAC10: offset = OFFSET_AMMO_45ACP
			case CSW_FIVESEVEN, CSW_P90: offset = OFFSET_AMMO_57MM
			case CSW_DEAGLE: offset = OFFSET_AMMO_50AE
			case CSW_P228: offset = OFFSET_AMMO_357SIG
			case CSW_GLOCK18, CSW_TMP, CSW_ELITE, 
			CSW_MP5NAVY: offset = OFFSET_AMMO_9MM
		default: offset = 0
	}
	return offset ? get_pdata_int(index, offset) : 0
}

stock fm_set_user_bpammo(index, weapon, amount) {
	static offset
	switch(weapon) {
		case CSW_AWP: offset = OFFSET_AMMO_338MAGNUM
			case CSW_SCOUT, CSW_AK47, CSW_G3SG1: offset = OFFSET_AMMO_762NATO
			case CSW_M249: offset = OFFSET_AMMO_556NATOBOX
			case CSW_FAMAS, CSW_M4A1, CSW_AUG, 
			CSW_SG550, CSW_GALI, CSW_SG552: offset = OFFSET_AMMO_556NATO
		case CSW_M3, CSW_XM1014: offset = OFFSET_AMMO_BUCKSHOT
			case CSW_USP, CSW_UMP45, CSW_MAC10: offset = OFFSET_AMMO_45ACP
			case CSW_FIVESEVEN, CSW_P90: offset = OFFSET_AMMO_57MM
			case CSW_DEAGLE: offset = OFFSET_AMMO_50AE
			case CSW_P228: offset = OFFSET_AMMO_357SIG
			case CSW_GLOCK18, CSW_TMP, CSW_ELITE, 
			CSW_MP5NAVY: offset = OFFSET_AMMO_9MM
		default: offset = 0
	}
	
	if(offset) 
		set_pdata_int(index, offset, amount)
	
	return 1
}

// Get Weapon Entity's CSW_ ID
stock fm_get_weapon_ent_id(ent) {
	return get_pdata_int(ent, OFFSET_WEAPONID, 4);
}

// Get Weapon Entity's Owner
stock fm_get_weapon_ent_owner(ent) {
	return get_pdata_cbase(ent, 41, 4);
}

// Drop all primary guns
stock drop_primary_weapons(Player) {
	// Get user weapons
	static weapons[32], num, i, weaponid;
	num = 0; // reset passed weapons count(bugfix)
	get_user_weapons(Player, weapons, num);
	
	// Loop through them and drop primaries
	for(i = 0; i < num; i++) {
		// Prevent re-indexing the array
		weaponid = weapons [i];
		
		// We definetely are holding primary gun
		if(((1<<weaponid) & PRIMARY_WEAPONS_BITSUM)) {
			// Get weapon entity
			static wname[32];
			get_weaponname(weaponid, wname, charsmax(wname));
			
			// Player drops the weapon and looses his bpammo
			engclient_cmd(Player, "drop", wname);
		}
	}
}

public RefreshWeapons ( id ) {
	
	strip_user_weapons ( id );
	give_item ( id, "weapon_knife" );
	remove_dragoncannon ( id );
	
	g_had_qb [ id ] = 0;
	dual_mp5 [ id ] = false;
	k1ases_weapon [ id ] = false;
	salamander [ id ] = false;
	SalamanderLimit [ id ] = false;
	katana_knife [ id ] = false;
	double_katana_knife [ id ] = false;
	super_knife [ id ] = false;
	infinity_knife [ id ] = false;
	elf_knife [ id ] = false;
	ignes_knife [ id ] = false;
	vip_axe_knife [ id ] = false;
	trainer [ id ] = false;
	thompson [ id ] = false;
	uspx [ id ] = false;
	hunter [ id ] = false;
	shaman [ id ] = false;
	mage [ id ] = false;
	rogue [ id ] = false;
	warrior [ id ] = false;
	druid [ id ] = false;
	deklowaz [ id ] = false;
	strike_grenade [ id ] = false;
	HasPower[id] = 0;
	Drop_Cooldown[id] = 0;
	UserHaveQuad [ id ] = false;
	UserHaveDragon [ id ] = false;
	g_hasM79[id] = false
	g_canShoot[id] = false
	g_last_shot_time[id] = 0.0
	grenade_count[id] = 0
	hasOnHandM79[id] = false
	remove_icon(id );
	UserHaveM79 [ id ] = false;
	
	HasSpeed[id] = false;
	HasTeleport[id] = false;
	
	UserHasChoosed [ id ] = false;
	UserHaveHeGrenade [ id ] = false;
	UserHaveGodMode [ id ] = false;
	UserHaveSuperKnife [ id ] = false;
	UserHaveNoClip [ id ] = false;
	UserHaveHpAndAp [ id ] = false;
	UserHaveDualMp5 [ id ] = false;
	
	if( get_user_flags(id) & VIP_ACCESS )
	{
		set_user_scoreattrib(id, 4);
	}
	
	VipBonus ( id );
	
	if ( get_user_team ( id ) == 2 ) {
		give_item ( id, "weapon_smokegrenade" );
		flare [ id ] = true;
	}
	
	ShowHud ( id );
	
	remove_task(id);
	HE_Cooldown[id] = 0;
	GodMode_Cooldown[id] = 0;
	GodMode_DurationCooldown[id] = 0;
	Drop_Cooldown[id] = 0;
	Freeze_Cooldown[id] = 0;
	Freeze_Cooldown[id] = 0;
	remove_freeze ( id );
	BeamRemove ( id );
	Drag_Cooldown[id] = 0;
	if (Hooked[id]) {
		DragEnd ( id );
	}
	
	Not_Cooldown[id] = false;
	Teleport_Cooldown[id] = 0;
}


public cmdCheckVIP ( id ) {
	
	if ( get_user_team ( id ) == 1 && is_user_alive ( id ) ) {
		
		if ( UserHasChoosed [ id ] ) {
			
			ColorChat ( id, GREEN, "%s Ti-ai ales runda aceasta puterea .", szPrefix );
			return 1;
		}
		
		else if ( !UserHasChoosed [ id ] ) {
			
			set_task ( 0.1, "cmdShowTVIPMenu", id );
			
		}
	}
	
	if ( get_user_team ( id ) == 2 && is_user_alive ( id ) ) {
		
		if ( UserHasChoosed [ id ] ) {
			
			ColorChat ( id, GREEN, "%s Ti-ai ales runda aceasta puterea .", szPrefix );
			return 1;
		}
		
		else if ( !UserHasChoosed [ id ] ) {
			
			set_task ( 0.1, "cmdShowCTVIPMenu", id );
			
		}
	}
	
	return 1
	
}

public cmdClassMenu ( id, level, cid ) {
	
	ShowHud ( id );
	
	if ( get_user_team ( id ) == 1 ) {
		
		
		new menu = menu_create ( "\rFurien Class \yMenu", "Class_Giver" );
		
		if ( Level [ id ] >= 0 || Level [ id ] >= 1 || Level [ id ] >= 2 || Level [ id ] >= 3 || Level [ id ] >= 4 ) { 
			menu_additem ( menu, "\yTrainer", "1", 0 );
		}
		
		else if ( Level [ id ] <= 0 || Level [ id ] <= 1 || Level [ id ] <= 2 || Level [ id ] <= 3 || Level [ id ] <= 4 ) {
			menu_additem ( menu, "\yTrainer \y[ \rLOCKED \y]", "1", ADMIN_RCON );
		}
		
		if ( Level [ id ] >= 5 || Level [ id ] >= 6 || Level [ id ] >= 7 || Level [ id ] >= 8 ) { 
			menu_additem ( menu, "\yAgnos", "2", 0 );
		}
		
		else if ( Level [ id ] <= 5 || Level [ id ] <= 6 || Level [ id ] <= 7 || Level [ id ] <= 8 ) {
			menu_additem ( menu, "\yAgnos \y[ \rLOCKED \y]", "2", ADMIN_RCON );
		}
		
		if ( Level [ id ] >= 9 || Level [ id ] >= 10 || Level [ id ] >= 11 || Level [ id ] >= 12 ) { 
			menu_additem ( menu, "\yXFother", "3", 0 );
		}
		
		else if ( Level [ id ] <= 9 || Level [ id ] <= 10 || Level [ id ] <= 11 || Level [ id ] <= 12 ) { 
			menu_additem ( menu, "\yXFother \y[ \rLOCKED \y]", "3", ADMIN_RCON );
		}
		
		if ( Level [ id ] >= 13 || Level [ id ] >= 14 || Level [ id ] >= 15 || Level [ id ] >= 16 ) { 
			menu_additem ( menu, "\ySamurai", "4", 0 );
		}
		
		else if ( Level [ id ] <= 13 || Level [ id ] <= 14 || Level [ id ] <= 15 || Level [ id ] <= 16 ) {
			menu_additem ( menu, "\ySamurai \y[ \rLOCKED \y]", "4", ADMIN_RCON );
		}
		
		if ( Level [ id ] >= 17 || Level [ id ] >= 18 || Level [ id ] >= 19 || Level [ id ] >= 20 ) { 
			menu_additem ( menu, "\yExtra Samurai", "5", 0 );
		}
		
		else if ( Level [ id ] <= 17 || Level [ id ] <= 18 || Level [ id ] <= 19 || Level [ id ] <= 20 ) { 
			menu_additem ( menu, "\yExtra Samurai \y[ \rLOCKED \y]", "5", ADMIN_RCON );
		}
		
		if ( Level [ id ] >= 21 || Level [ id ] >= 22 || Level [ id ] >= 23 || Level [ id ] >= 24 ) { 
			menu_additem ( menu, "\yIgnes", "6", 0 );
		}
		
		else if ( Level [ id ] <= 21 || Level [ id ] <= 22 || Level [ id ] <= 23 || Level [ id ] <= 24 ) {
			menu_additem ( menu, "\yIgnes \y[ \rLOCKED \y]", "6", ADMIN_RCON );
		}
		
		if ( Level [ id ] >= 25 || Level [ id ] >= 26 || Level [ id ] >= 27 || Level [ id ] >= 28 ) { 
			menu_additem ( menu, "\yElf", "7", 0 );
		}
		
		else if ( Level [ id ] <= 25 || Level [ id ] <= 26 || Level [ id ] <= 27 || Level [ id ] <= 28 ) { 
			menu_additem ( menu, "\yElf \y[ \rLOCKED \y]", "7", ADMIN_RCON );
		}
		
		if ( Level [ id ] >= 29 || Level [ id ] >= 30 ) { 
			menu_additem ( menu, "\yAlcadeias", "8", 0 );
		}
		
		else if ( Level [ id ] <= 29 || Level [ id ] <= 30 ) {
			menu_additem ( menu, "\yAlcadeias \y[ \rLOCKED \y]", "8", ADMIN_RCON );
		}
		
		menu_setprop ( menu, MPROP_EXIT, MEXIT_ALL );
		menu_display ( id, menu, 0 );
		
		
		return 1;
	}
	
	else if ( get_user_team ( id ) == 2 ) {
		
		
		new menu = menu_create ( "\rAntiFurien Class \yMenu", "Class_Giver" );
		
		if ( Level [ id ] >= 0 || Level [ id ] >= 1 || Level [ id ] >= 2 || Level [ id ] >= 3 || Level [ id ] >= 4 ) { 
			menu_additem ( menu, "\yDruid", "1", 0 );
		}
		
		else if ( Level [ id ] <= 0 || Level [ id ] <= 1 || Level [ id ] <= 2 || Level [ id ] <= 3 || Level [ id ] <= 4 ) { 
			menu_additem ( menu, "\yDruid \y[ \rLOCKED \y]", "1", ADMIN_RCON );
			
		}
		
		if ( Level [ id ] >= 5 || Level [ id ] >= 6 || Level [ id ] >= 7 || Level [ id ] >= 8 ) { 
			menu_additem ( menu, "\yHunter", "2", 0 );
		}
		
		else if ( Level [ id ] <= 5 || Level [ id ] <= 6 || Level [ id ] <= 7 || Level [ id ] <= 8 ) { 
			menu_additem ( menu, "\yHunter \y[ \rLOCKED \y]", "2", ADMIN_RCON );
		}
		
		if ( Level [ id ] >= 9 || Level [ id ] >= 10 || Level [ id ] >= 11 || Level [ id ] >= 12 ) { 
			menu_additem ( menu, "\yMage", "3", 0 );
		}
		
		else if ( Level [ id ] <= 9 || Level [ id ] <= 10 || Level [ id ] <= 11 || Level [ id ] <= 12 ) { 
			menu_additem ( menu, "\yMage \y[ \rLOCKED \y]", "3", ADMIN_RCON );
		}
		
		if ( Level [ id ] >= 13 || Level [ id ] >= 14 || Level [ id ] >= 15 || Level [ id ] >= 16 ) { 
			menu_additem ( menu, "\yRogue", "4", 0 );
		}
		
		else if ( Level [ id ] <= 13 || Level [ id ] <= 14 || Level [ id ] <= 15 || Level [ id ] <= 16 ) { 
			menu_additem ( menu, "\yRogue \y[ \rLOCKED \y]", "4", ADMIN_RCON );
		}
		
		if ( Level [ id ] >= 17 || Level [ id ] >= 18 || Level [ id ] >= 19 || Level [ id ] >= 20 ) { 
			menu_additem ( menu, "\yShaman", "5", 0 );
		}
		
		else if ( Level [ id ] <= 17 || Level [ id ] <= 18 || Level [ id ] <= 19 || Level [ id ] <= 20 ) { 
			menu_additem ( menu, "\yShaman \y[ \rLOCKED \y]", "5", ADMIN_RCON );
		}
		
		if ( Level [ id ] >= 21 || Level [ id ] >= 22 || Level [ id ] >= 23 || Level [ id ] >= 24 ) { 
			menu_additem ( menu, "\yWarlock", "6", 0 );
		}
		
		else if ( Level [ id ] <= 21 || Level [ id ] <= 22 || Level [ id ] <= 23 || Level [ id ] <= 24 ) { 
			menu_additem ( menu, "\yWarlock \y[ \rLOCKED \y]", "6", ADMIN_RCON );
		}
		
		if ( Level [ id ] >= 25 || Level [ id ] >= 26 || Level [ id ] >= 27 || Level [ id ] >= 28 ) { 
			menu_additem ( menu, "\yWarrior", "7", 0 );
		}
		
		else if ( Level [ id ] <= 25 || Level [ id ] <= 26 || Level [ id ] <= 27 || Level [ id ] <= 28 ) { 
			menu_additem ( menu, "\yWarrior \y[ \rLOCKED \y]", "7", ADMIN_RCON );
		}
		
		if ( Level [ id ] >= 29 || Level [ id ] >= 30 ) { 
			menu_additem ( menu, "\yDeklowaz", "8", 0 );
		}
		
		else if ( Level [ id ] <= 29 || Level [ id ] <= 30 ) { 
			menu_additem ( menu, "yDeklowaz \y[ \rLOCKED \y]", "8", ADMIN_RCON );
		}
		
		menu_setprop ( menu, MPROP_EXIT, MEXIT_ALL );
		menu_display ( id, menu, 0 );
		
		
		return 1;
	}
	
	return 1;
}

public Class_Giver ( id, menu, item ) {
	
	if( item == MENU_EXIT )
	{
		return 1;
	}
	
	new data [ 6 ], szName [ 64 ];
	new access, callback;
	menu_item_getinfo ( menu, item, access, data,charsmax ( data ), szName,charsmax ( szName ), callback );
	new key = str_to_num ( data );
	
	switch(key)
	{
		
		case 1:
		{
			if ( get_user_team ( id ) == 1 ) {
				if ( g_Menu [ id ] >= 3 ) {
					ColorChat ( id, GREEN, "%s Ti-ai ales odata clasa runda aceasta .", szPrefix );
				}
				
				else {
					
					ColorChat ( id, GREEN, "%s Clasa ta este acum^4 Trainer^3 .", szPrefix );
					
					trainer [ id ] = true;
					katana_knife [ id ] = false;
					double_katana_knife [ id ] = false;
					super_knife [ id ] = false;
					infinity_knife [ id ] = false;
					ignes_knife [ id ] = false;
					elf_knife [ id ] = false;
					thompson [ id ] = false;
					uspx [ id ] = false;
					hunter [ id ] = false;
					shaman [ id ] = false;
					mage [ id ] = false;
					rogue [ id ] = false;
					warrior [ id ] = false;
					deklowaz [ id ] = false;
					druid [ id ] = false;
					strike_grenade [ id ] = false;
					strike_grenade2 [ id ] = false;
					strike_grenade3 [ id ] = false;
					super_knife_shop [ id ] = false;
					super_knife_shop2 [ id ] = false;
					set_user_gravity ( id, 0.7 );
					give_item ( id, "weapon_flashbang" );
					//set_pev ( id, pev_viewmodel2, trainer_v_model );
					//set_pev ( id, pev_weaponmodel2, trainer_p_model );
					++g_Menu [ id ];
					++g_Menu [ id ];
				}
				
				
			}
			
			
			if ( get_user_team ( id ) == 2 ) {
				if ( g_Menu [ id ] >= 3 ) {
					ColorChat ( id, GREEN, "%s Ti-ai ales odata clasa runda aceasta .", szPrefix );
				}
				
				else {
					
					ColorChat ( id, GREEN, "%s Clasa ta este acum^4 Druid^3 .", szPrefix );
					give_item ( id, "weapon_xm1014" );
					give_item ( id, "weapon_usp" );
					set_user_health ( id, 105 );
					set_user_armor ( id, 30 );
					cs_set_user_bpammo ( id, CSW_USP, 100 );
					cs_set_user_bpammo ( id, CSW_XM1014, 100 );
					trainer [ id ] = false;
					katana_knife [ id ] = false;
					double_katana_knife [ id ] = false;
					super_knife [ id ] = false;
					infinity_knife [ id ] = false;
					ignes_knife [ id ] = false;
					elf_knife [ id ] = false;
					thompson [ id ] = false;
					uspx [ id ] = true;
					hunter [ id ] = false;
					shaman [ id ] = false;
					mage [ id ] = false;
					rogue [ id ] = false;
					warrior [ id ] = false;
					deklowaz [ id ] = false;
					druid [ id ] = true;
					super_knife_shop [ id ] = false;
					super_knife_shop2 [ id ] = false;
					++g_Menu [ id ];
					++g_Menu [ id ];
					
				}
			}
		}
		
		case 2:
		{
			if ( get_user_team ( id ) == 1 ) {
				if ( g_Menu [ id ] >= 3 ) {
					ColorChat ( id, GREEN, "%s Ti-ai ales odata clasa runda aceasta .", szPrefix );
				}
				
				else {
					
					ColorChat ( id, GREEN, "%s Clasa ta este acum^4 Agnos^3 .", szPrefix );
					
					
					
					
					
					katana_knife [ id ] = false;
					trainer [ id ] = false;
					double_katana_knife [ id ] = false;
					super_knife [ id ] = false;
					
					infinity_knife [ id ] = true;
					ignes_knife [ id ] = false;
					elf_knife [ id ] = false;
					thompson [ id ] = false;
					uspx [ id ] = false;
					hunter [ id ] = false;
					shaman [ id ] = false;
					mage [ id ] = false;
					rogue [ id ] = false;
					warrior [ id ] = false;
					deklowaz [ id ] = false;
					strike_grenade [ id ] = false;
					strike_grenade2 [ id ] = false;
					strike_grenade3 [ id ] = false;
					druid [ id ] = false;
					super_knife_shop [ id ] = false;
					super_knife_shop2 [ id ] = false;
					set_user_gravity ( id, 0.6 );
					set_user_health ( id, 120 );
					set_user_armor ( id, 60 );
					give_item ( id, "weapon_flashbang" );
					//set_pev ( id, pev_viewmodel2, infinity_knife_v_model );
					//set_pev ( id, pev_weaponmodel2, infinity_knife_p_model );
					++g_Menu [ id ];
					++g_Menu [ id ];
					
				}
			}
			
			if ( get_user_team ( id ) == 2 ) {
				if ( g_Menu [ id ] >= 3 ) {
					ColorChat ( id, GREEN, "%s Ti-ai ales odata clasa runda aceasta .", szPrefix );
				}
				
				else {
					
					ColorChat ( id, GREEN, "%s Clasa ta este acum^4 Hunter^3 .", szPrefix );
					give_item ( id, "weapon_p90" );
					give_item ( id, "weapon_usp" );
					set_user_health ( id, 120 );
					set_user_armor ( id, 60 );
					cs_set_user_bpammo ( id, CSW_USP, 100 );
					cs_set_user_bpammo ( id, CSW_P90, 200 );
					trainer [ id ] = false;
					katana_knife [ id ] = false;
					double_katana_knife [ id ] = false;
					super_knife [ id ] = false;
					infinity_knife [ id ] = false;
					ignes_knife [ id ] = false;
					elf_knife [ id ] = false;
					thompson [ id ] = false;
					uspx [ id ] = true;
					hunter [ id ] = true;
					shaman [ id ] = false;
					mage [ id ] = false;
					rogue [ id ] = false;
					warrior [ id ] = false;
					deklowaz [ id ] = false;
					druid [ id ] = false;
					super_knife_shop [ id ] = false;
					super_knife_shop2 [ id ] = false;
					++g_Menu [ id ];
					++g_Menu [ id ];
					
				}
			}
		}
		
		case 3:
		{
			if ( get_user_team ( id ) == 1 ) {
				if ( g_Menu [ id ] >= 3 ) {
					ColorChat ( id, GREEN, "%s Ti-ai ales odata clasa runda aceasta .", szPrefix );
				}
				
				else {
					
					ColorChat ( id, GREEN, "%s Clasa ta este acum^4 XFother^3.^4", szPrefix );
					
					super_knife [ id ] = true;
					katana_knife [ id ] = false;
					trainer [ id ] = false;
					double_katana_knife [ id ] = false;
					infinity_knife [ id ] = false;
					ignes_knife [ id ] = false;
					thompson [ id ] = false;
					uspx [ id ] = false;
					hunter [ id ] = false;
					shaman [ id ] = false;
					mage [ id ] = false;
					rogue [ id ] = false;
					warrior [ id ] = false;
					deklowaz [ id ] = false;
					elf_knife [ id ] = false;
					druid [ id ] = false;
					strike_grenade [ id ] = true;
					super_knife_shop [ id ] = false;
					super_knife_shop2 [ id ] = false;
					set_user_gravity ( id, 0.6 );
					set_user_health ( id, 120 );
					set_user_armor ( id, 60 );
					give_item ( id, "weapon_hegrenade" );
					give_item ( id, "weapon_flashbang" );
					//set_pev ( id, pev_viewmodel2, super_knife_v_model );
					//set_pev ( id, pev_weaponmodel2, super_knife_p_model );
					++g_Menu [ id ];
					++g_Menu [ id ];
					
				}
			}
			
			if ( get_user_team ( id ) == 2 ) {
				if ( g_Menu [ id ] >= 3 ) {
					ColorChat ( id, GREEN, "%s Ti-ai ales odata clasa runda aceasta .", szPrefix );
				}
				
				else {
					
					ColorChat ( id, GREEN, "%s Clasa ta este acum^4 Mage^3 .", szPrefix );
					give_item ( id, "weapon_galil" );
					give_item ( id, "weapon_usp" );
					set_user_gravity ( id, 0.7 );
					set_user_health ( id, 120 );
					set_user_armor ( id, 60 );
					cs_set_user_bpammo ( id, CSW_USP, 100 );
					cs_set_user_bpammo ( id, CSW_GALIL, 200 );
					trainer [ id ] = false;
					katana_knife [ id ] = false;
					double_katana_knife [ id ] = false;
					super_knife [ id ] = false;
					infinity_knife [ id ] = false;
					ignes_knife [ id ] = false;
					elf_knife [ id ] = false;
					thompson [ id ] = false;
					druid [ id ] = false;
					uspx [ id ] = true;
					hunter [ id ] = false;
					shaman [ id ] = false;
					mage [ id ] = true;
					rogue [ id ] = false;
					warrior [ id ] = false;
					deklowaz [ id ] = false;
					super_knife_shop [ id ] = false;
					super_knife_shop2 [ id ] = false;
					++g_Menu [ id ];
					++g_Menu [ id ];
					
				}
			}
		}
		
		case 4:
		{
			if ( get_user_team ( id ) == 1 ) {
				if ( g_Menu [ id ] >= 3 ) {
					ColorChat ( id, GREEN, "%s Ti-ai ales odata clasa runda aceasta .", szPrefix );
				}
				
				else {
					
					ColorChat ( id, GREEN, "%s Clasa ta este acum^4 Samurai^3 + puterea de a arunca armele inamicului .^4", szPrefix );
					ColorChat ( id, GREEN, "%s Pentru activare apasa tasta^4 V^3 .^4", szPrefix );
					
					
					
					
					
					katana_knife [ id ] = true;
					double_katana_knife [ id ] = false;
					super_knife [ id ] = false;
					trainer [ id ] = false;
					infinity_knife [ id ] = false;
					ignes_knife [ id ] = false;
					elf_knife [ id ] = false;
					thompson [ id ] = false;
					uspx [ id ] = false;
					hunter [ id ] = false;
					shaman [ id ] = false;
					druid [ id ] = false;
					mage [ id ] = false;
					rogue [ id ] = false;
					warrior [ id ] = false;
					strike_grenade2 [ id ] = true;
					deklowaz [ id ] = false;
					super_knife_shop [ id ] = false;
					super_knife_shop2 [ id ] = false;
					set_user_gravity ( id, 0.6 );
					set_user_health ( id, 135 );
					set_user_armor ( id, 90 );
					give_item ( id, "weapon_hegrenade" );
					give_item ( id, "weapon_flashbang" );
					client_cmd(id, "bind v power");
					remove_task(id);
					if ( Drop_Cooldown [ id ] ) {
						set_task ( 0.1, "DropShowHUD", id );
					}
					HasPower [ id ] = 4;
					//set_pev ( id, pev_viewmodel2, katana_knife_v_model );
					//set_pev ( id, pev_weaponmodel2, katana_knife_p_model );
					++g_Menu [ id ];
					++g_Menu [ id ];
					
					
					
					
				}
			}
			
			if ( get_user_team ( id ) == 2 ) {
				if ( g_Menu [ id ] >= 3 ) {
					ColorChat ( id, GREEN, "%s Ti-ai ales odata clasa runda aceasta .", szPrefix );
				}
				
				else {
					
					ColorChat ( id, GREEN, "%s Clasa ta este acum^4 Rogue^3 + puterea de a trage inamicul^4 [ drag ]^3 .^4", szPrefix );
					ColorChat ( id, GREEN, "%s Pentru activare apasa tasta^4 V^3 .^4", szPrefix );
					give_item ( id, "weapon_famas" );
					give_item ( id, "weapon_usp" );
					set_user_gravity ( id, 0.7 );
					set_user_health ( id, 130 );
					set_user_armor ( id, 80 );
					cs_set_user_bpammo ( id, CSW_USP, 100 );
					cs_set_user_bpammo ( id, CSW_FAMAS, 200 );
					trainer [ id ] = false;
					katana_knife [ id ] = false;
					double_katana_knife [ id ] = false;
					super_knife [ id ] = false;
					infinity_knife [ id ] = false;
					ignes_knife [ id ] = false;
					elf_knife [ id ] = false;
					thompson [ id ] = false;
					uspx [ id ] = true;
					hunter [ id ] = false;
					shaman [ id ] = false;
					mage [ id ] = false;
					rogue [ id ] = true;
					druid [ id ] = false;
					warrior [ id ] = false;
					deklowaz [ id ] = false;
					super_knife_shop [ id ] = false;
					super_knife_shop2 [ id ] = false;
					++g_Menu [ id ];
					++g_Menu [ id ];
					client_cmd(id, "bind v +drag");
					remove_task(id);
					if(Drag_Cooldown[id]) {
						set_task ( 0.1, "DragShowHUD", id );
					}
					HasPower[id] = 6;
				}
			}
		}
		
		case 5:
		{
			if ( get_user_team ( id ) == 1 ) {
				if ( g_Menu [ id ] >= 3 ) {
					ColorChat ( id, GREEN, "%s Ti-ai ales odata clasa runda aceasta .", szPrefix );
				}
				
				else {
					
					ColorChat ( id, GREEN, "%s Clasa ta este acum^4 Extra Samurai^3 + puterea de a arunca armele inamicului .^4", szPrefix );
					ColorChat ( id, GREEN, "%s Pentru activare apasa tasta^4 V^3 .^4", szPrefix );
					
					
					double_katana_knife [ id ] = true;
					katana_knife [ id ] = false;
					trainer [ id ] = false;
					super_knife [ id ] = false;
					infinity_knife [ id ] = false;
					ignes_knife [ id ] = false;
					elf_knife [ id ] = false;
					thompson [ id ] = false;
					uspx [ id ] = false;
					hunter [ id ] = false;
					shaman [ id ] = false;
					mage [ id ] = false;
					druid [ id ] = false;
					rogue [ id ] = false;
					warrior [ id ] = false;
					deklowaz [ id ] = false;
					strike_grenade2 [ id ] = true;
					super_knife_shop [ id ] = false;
					super_knife_shop2 [ id ] = false;
					set_user_gravity ( id, 0.5 );
					set_user_health ( id, 145 );
					set_user_armor ( id, 105 );
					give_item ( id, "weapon_hegrenade" );
					give_item ( id, "weapon_flashbang" );
					give_item ( id, "weapon_flashbang" );
					client_cmd(id, "bind v power");
					remove_task(id);
					if ( Drop_Cooldown [ id ] ) {
						set_task ( 0.1, "DropShowHUD", id );
					}
					HasPower [ id ] = 4;
					//set_pev ( id, pev_viewmodel2, double_katana_v_knife_model );
					//set_pev ( id, pev_weaponmodel2, double_katana_p_knife_model );
					++g_Menu [ id ];
					++g_Menu [ id ];
					
				}
			}
			
			if ( get_user_team ( id ) == 2 ) {
				if ( g_Menu [ id ] >= 3 ) {
					ColorChat ( id, GREEN, "%s Ti-ai ales odata clasa runda aceasta .", szPrefix );
				}
				
				else {
					
					ColorChat ( id, GREEN, "%s Clasa ta este acum^4 Shaman^3 + puterea de a trage inamicul^4 [ drag ]^3 .^4", szPrefix );
					ColorChat ( id, GREEN, "%s Pentru activare apasa tasta^4 V^3 .^4", szPrefix );
					give_item ( id, "weapon_sg552" );
					give_item ( id, "weapon_usp" );
					set_user_gravity ( id, 0.7 );
					set_user_health ( id, 145 );
					set_user_armor ( id, 90 );
					cs_set_user_bpammo ( id, CSW_USP, 100 );
					cs_set_user_bpammo ( id, CSW_SG552, 200 );
					trainer [ id ] = false;
					katana_knife [ id ] = false;
					double_katana_knife [ id ] = false;
					super_knife [ id ] = false;
					infinity_knife [ id ] = false;
					ignes_knife [ id ] = false;
					elf_knife [ id ] = false;
					thompson [ id ] = false;
					uspx [ id ] = true;
					hunter [ id ] = false;
					shaman [ id ] = true;
					mage [ id ] = false;
					rogue [ id ] = false;
					druid [ id ] = false;
					warrior [ id ] = false;
					deklowaz [ id ] = false;
					super_knife_shop [ id ] = false;
					super_knife_shop2 [ id ] = false;
					++g_Menu [ id ];
					++g_Menu [ id ];
					client_cmd(id, "bind v +drag");
					remove_task(id);
					if(Drag_Cooldown[id]) {
						set_task ( 0.1, "DragShowHUD", id );
					}
					HasPower[id] = 6;
					
				}
			}
		}
		
		case 6:
		{
			if ( get_user_team ( id ) == 1 ) {
				if ( g_Menu [ id ] >= 3 ) {
					ColorChat ( id, GREEN, "%s Ti-ai ales odata clasa runda aceasta .", szPrefix );
				}
				
				else {
					
					ColorChat ( id, GREEN, "%s Clasa ta este acum^4 Ignes^3 + puterea de a ingheta inamicul .^4", szPrefix );
					ColorChat ( id, GREEN, "%s Pentru activare apasa tasta^4 V^3 .^4", szPrefix );
					
					
					katana_knife [ id ] = false;
					double_katana_knife [ id ] = false;
					super_knife [ id ] = false;
					trainer [ id ] = false;
					thompson [ id ] = false;
					uspx [ id ] = false;
					hunter [ id ] = false;
					shaman [ id ] = false;
					mage [ id ] = false;
					rogue [ id ] = false;
					warrior [ id ] = false;
					deklowaz [ id ] = false;
					
					ignes_knife [ id ] = true;
					elf_knife [ id ] = false;
					vip_axe_knife [ id ] = false;
					druid [ id ] = false;
					strike_grenade2 [ id ] = true;
					super_knife_shop [ id ] = false;
					super_knife_shop2 [ id ] = false;
					set_user_gravity ( id, 0.5 );
					set_user_health ( id, 185 );
					set_user_armor ( id, 150 );
					give_item ( id, "weapon_hegrenade" );
					give_item ( id, "weapon_flashbang" );
					give_item ( id, "weapon_flashbang" );
					client_cmd(id, "bind v power");
					remove_task(id);
					if(Freeze_Cooldown[id]) {
						set_task ( 0.1, "FreezeShowHUD", id );
					}
					HasPower[id] = 5;
					//set_pev ( id, pev_viewmodel2, ignes_knife_model );
					++g_Menu [ id ];
					++g_Menu [ id ];
				}
			}
			
			if ( get_user_team ( id ) == 2 ) {
				if ( g_Menu [ id ] >= 3 ) {
					ColorChat ( id, GREEN, "%s Ti-ai ales odata clasa runda aceasta .", szPrefix );
				}
				
				else {
					
					ColorChat ( id, GREEN, "%s Clasa ta este acum^4 Warlock^3 + puterea de a trage perfect^4 [ norecoil ]^3 .^4", szPrefix );
					ColorChat ( id, GREEN, "%s Puterea se activeaza automat .^4", szPrefix );
					give_item ( id, "weapon_p90" );
					give_item ( id, "weapon_usp" );
					set_user_gravity ( id, 0.6 );
					set_user_health ( id, 165 );
					set_user_armor ( id, 105 );
					cs_set_user_bpammo ( id, CSW_USP, 100 );
					cs_set_user_bpammo ( id, CSW_P90, 200 );
					trainer [ id ] = false;
					katana_knife [ id ] = false;
					double_katana_knife [ id ] = false;
					super_knife [ id ] = false;
					infinity_knife [ id ] = false;
					ignes_knife [ id ] = false;
					elf_knife [ id ] = false;
					thompson [ id ] = true;
					uspx [ id ] = true;
					hunter [ id ] = false;
					shaman [ id ] = false;
					mage [ id ] = false;
					druid [ id ] = false;
					rogue [ id ] = false;
					warrior [ id ] = false;
					deklowaz [ id ] = false;
					vip_axe_knife [ id ] = false;
					super_knife_shop [ id ] = false;
					super_knife_shop2 [ id ] = false;
					++g_Menu [ id ];
					++g_Menu [ id ];
					remove_task(id);
					HasPower[id] = 8;
					
				}
			}
		}
		
		case 7:
		{
			if ( get_user_team ( id ) == 1 ) {
				if ( g_Menu [ id ] >= 3 ) {
					ColorChat ( id, GREEN, "%s Ti-ai ales odata clasa runda aceasta .", szPrefix );
				}
				
				else {
					
					ColorChat ( id, GREEN, "%s Clasa ta este acum^4 Elf^3 + puterea de a ingheta inamicul .^4", szPrefix );
					ColorChat ( id, GREEN, "%s Pentru activare apasa tasta^4 V^3 .^4", szPrefix );
					
					
					
					
					
					katana_knife [ id ] = false;
					double_katana_knife [ id ] = false;
					super_knife [ id ] = false;
					trainer [ id ] = false;
					ignes_knife [ id ] = false;
					
					elf_knife [ id ] = true;
					thompson [ id ] = false;
					uspx [ id ] = false;
					hunter [ id ] = false;
					druid [ id ] = false;
					shaman [ id ] = false;
					mage [ id ] = false;
					rogue [ id ] = false;
					warrior [ id ] = false;
					deklowaz [ id ] = false;
					strike_grenade3 [ id ] = true;
					super_knife_shop [ id ] = false;
					super_knife_shop2 [ id ] = false;
					++g_Menu [ id ];
					++g_Menu [ id ];
					set_user_gravity ( id, 0.4 );
					set_user_health ( id, 185 );
					set_user_armor ( id, 160 );
					give_item ( id, "weapon_hegrenade" );
					give_item ( id, "weapon_flashbang" );
					give_item ( id, "weapon_flashbang" );
					client_cmd(id, "bind v power");
					remove_task(id);
					if(Freeze_Cooldown[id]) {
						set_task ( 0.1, "FreezeShowHUD", id );
					}
					HasPower[id] = 5;
					//set_pev ( id, pev_viewmodel2, elf_knife_model );
					
				}
			}
			
			if ( get_user_team ( id ) == 2 ) {
				if ( g_Menu [ id ] >= 3 ) {
					ColorChat ( id, GREEN, "%s Ti-ai ales odata clasa runda aceasta .", szPrefix );
				}
				
				else {
					
					ColorChat ( id, GREEN, "%s Clasa ta este acum^4 Warrior^3 + puterea de a trage perfect^4 [ norecoil ]^3 .^4", szPrefix );
					ColorChat ( id, GREEN, "%s Puterea se activeaza automat .^4", szPrefix );
					give_item ( id, "weapon_p90" );
					give_item ( id, "weapon_usp" );
					set_user_gravity ( id, 0.6 );
					set_user_health ( id, 180 );
					set_user_armor ( id, 115 );
					cs_set_user_bpammo ( id, CSW_USP, 100 );
					cs_set_user_bpammo ( id, CSW_P90, 200 );
					trainer [ id ] = false;
					katana_knife [ id ] = false;
					double_katana_knife [ id ] = false;
					super_knife [ id ] = false;
					infinity_knife [ id ] = false;
					ignes_knife [ id ] = false;
					elf_knife [ id ] = false;
					thompson [ id ] = false;
					uspx [ id ] = true;
					hunter [ id ] = false;
					shaman [ id ] = false;
					druid [ id ] = false;
					mage [ id ] = false;
					rogue [ id ] = false;
					warrior [ id ] = true;
					vip_axe_knife [ id ] = false;
					deklowaz [ id ] = false;
					super_knife_shop [ id ] = false;
					super_knife_shop2 [ id ] = false;
					++g_Menu [ id ];
					++g_Menu [ id ];
					remove_task(id);
					HasPower[id] = 8;
					
				}
			}
		}
		
		case 8:
		{
			if ( get_user_team ( id ) == 1 ) {
				if ( g_Menu [ id ] >= 3 ) {
					ColorChat ( id, GREEN, "%s Ti-ai ales odata clasa runda aceasta .", szPrefix );
				}
				
				else {
					
					ColorChat ( id, GREEN, "%s Clasa ta este acum^4 Alcadeias^3 + puterea de a te teleporta .^4", szPrefix );
					ColorChat ( id, GREEN, "%s Pentru activare apasa tasta^4 V^3 .^4", szPrefix );
					
					vip_axe_knife [ id ] = true;
					katana_knife [ id ] = false;
					double_katana_knife [ id ] = false;
					super_knife [ id ] = false;
					thompson [ id ] = false;
					uspx [ id ] = false;
					hunter [ id ] = false;
					shaman [ id ] = false;
					mage [ id ] = false;
					rogue [ id ] = false;
					druid [ id ] = false;
					warrior [ id ] = false;
					deklowaz [ id ] = false;
					infinity_knife [ id ] = false;
					ignes_knife [ id ] = false;
					trainer [ id ] = false;
					elf_knife [ id ] = false;
					strike_grenade3 [ id ] = true;
					super_knife_shop [ id ] = false;
					super_knife_shop2 [ id ] = false;
					set_user_gravity ( id, 0.4 );
					set_user_health ( id, 200 );
					set_user_armor ( id, 200 );
					give_item ( id, "weapon_hegrenade" );
					give_item ( id, "weapon_flashbang" );
					give_item ( id, "weapon_flashbang" );
					++g_Menu [ id ];
					++g_Menu [ id ];
					client_cmd(id, "bind v power");
					remove_task(id);
					if(Teleport_Cooldown[id]) {
						set_task ( 0.1, "TeleportShowHUD", id );
					}
					HasPower[id] = 7;
					
				}
			}
			
			if ( get_user_team ( id ) == 2 ) {
				if ( g_Menu [ id ] >= 3 ) {
					ColorChat ( id, GREEN, "%s Ti-ai ales odata clasa runda aceasta .", szPrefix );
				}
				
				else {
					ColorChat ( id, GREEN, "%s Clasa ta este acum^4 Deklowaz^3 + puterea de a te teleporta .^4", szPrefix );
					ColorChat ( id, GREEN, "%s Pentru activare apasa tasta^4 V^3 .^4", szPrefix );
					give_item ( id, "weapon_p90" );
					give_item ( id, "weapon_usp" );
					set_user_gravity ( id, 0.6 );
					set_user_health ( id, 200 );
					set_user_armor ( id, 130 );
					cs_set_user_bpammo ( id, CSW_USP, 100 );
					cs_set_user_bpammo ( id, CSW_P90, 200 );
					trainer [ id ] = false;
					katana_knife [ id ] = false;
					double_katana_knife [ id ] = false;
					super_knife [ id ] = false;
					infinity_knife [ id ] = false;
					ignes_knife [ id ] = false;
					elf_knife [ id ] = false;
					thompson [ id ] = false;
					druid [ id ] = false;
					uspx [ id ] = true;
					hunter [ id ] = false;
					shaman [ id ] = false;
					mage [ id ] = false;
					rogue [ id ] = false;
					warrior [ id ] = false;
					deklowaz [ id ] = true;
					super_knife_shop [ id ] = false;
					super_knife_shop2 [ id ] = false;
					++g_Menu [ id ];
					++g_Menu [ id ];
					client_cmd(id, "bind v power");
					remove_task(id);
					if(Teleport_Cooldown[id]) {
						set_task ( 0.1, "TeleportShowHUD", id );
					}
					HasPower[id] = 7;
					
				}
			}
		}
		
	}
	
	ShowHud ( id );
	if ( get_user_team ( id ) == 1 ) {
		cs_set_user_model(id, "furienxp")
	}
	
	if ( get_user_team ( id ) == 2 ) {
		cs_set_user_model(id, "furienxp2")
	}
	
	menu_destroy ( menu );
	return 1;
}

public cmdShop ( id, level, cid ) {
	
	if ( is_user_alive ( id ) ) {
		
		new menu = menu_create( "Shop Menu", "MenuShopGiver");
		
		if ( get_user_team ( id ) == 1 ) {
			menu_additem ( menu, "\ySuper Knife \y[ \r8000 $\y ]", "1", 0 );
		}
		
		menu_additem ( menu, "\yHE Grenade \y[ \r2500 $\y ]", "2", 0 );
		
		if ( get_user_team ( id ) == 2 ) {
			menu_additem ( menu, "\yDefuse Kit \y[ \r300 $\y ]", "3", 0 );
		}
		
		menu_additem ( menu, "\r+\y50 HP \y[ \r3000 $\y ]", "4", 0 );
		menu_additem ( menu, "\r+\y50 AP\r + \yHelmet \y[ \r2000 $\y ]", "5", 0 );
		
		
		menu_setprop(menu, MPROP_EXIT, MEXIT_ALL);
		menu_display(id, menu, 0);
		
		
		return 1;
	}
	
	else {
		ColorChat ( id, GREEN, "%s Nu poti folosi shop-ul cand esti mort.^4", szPrefix );
	}
	
	return 1;
}

public MenuShopGiver ( id, menu, item ) {
	
	if( item == MENU_EXIT )
	{
		return 1;
	}
	
	new data[6], szName[64];
	new access, callback;
	menu_item_getinfo(menu, item, access, data,charsmax(data), szName,charsmax(szName), callback);
	new key = str_to_num(data);
	
	switch(key)
	{
		case 1:
		{
			new iPret = cs_get_user_money ( id ) - 8000;
			if( iPret < 0 )
			{
				client_print( id, print_center, "Nu ai destui bani !" ); 
				return 1;
			}
			else
			{
				if ( Level [ id ] < 15 ) {
					super_knife_shop [ id ] = true;
					set_pev ( id, pev_viewmodel2, super_knife_shop_v_model );
					cs_set_user_money ( id, iPret );
				}
				
				else if ( Level [ id ] >= 15 ) {
					super_knife_shop2 [ id ] = true;
					set_pev ( id, pev_viewmodel2, super_knife_shop_v_model2 );
					set_pev ( id, pev_weaponmodel2, super_knife_shop_p_model2 );
					cs_set_user_money ( id, iPret );
				}
				
				
				return 1;
			}
			return 1
		}
		
		case 2:
		{
			new iPret = cs_get_user_money ( id ) - 2500;
			if( iPret < 0 )
			{
				client_print( id, print_center, "Nu ai destui bani !" );
				return 1;
			}
			else
			{
				give_item ( id, "weapon_hegrenade" );
				cs_set_user_money ( id, iPret );
				return 1;
			}
			return 1
		}
		
		case 3:
		{
			new iPret = cs_get_user_money ( id ) - 300;
			if( iPret < 0 )
			{
				client_print( id, print_center, "Nu ai destui bani !" );
				return 1;
			}
			else
			{
				give_item ( id, "item_thighpack" );
				cs_set_user_money ( id, iPret );
				return 1;
			}
			return 1
		}
		
		case 4:
		{
			new iPret = cs_get_user_money ( id ) - 3000;
			if( iPret < 0 )
			{
				client_print( id, print_center, "Nu ai destui bani !" );
				return 1;
			}
			else
			{
				set_dhudmessage ( 31, 201, 31, 0.02, 0.90, 0, 6.0, 1.0 );
				show_dhudmessage ( id, "+50 HP" );
				set_user_health ( id, get_user_health ( id ) + 50 );
				cs_set_user_money ( id, iPret );
				
				if ( get_user_team ( id ) == 2 && Level [ id ] < 20 ) {
					emit_sound(id, CHAN_ITEM, buy_AntiFurienHealth, 0.6, ATTN_NORM, 0, PITCH_NORM) 
					af ( id );
				}
				
				if ( get_user_team ( id ) == 2 && Level [ id ] >= 20 ) {
					emit_sound(id, CHAN_ITEM, buy_FurienHealth, 0.6, ATTN_NORM, 0, PITCH_NORM) 
					fr ( id );
				}
				
				return 1;
			}
			return 1
		}
		
		case 5:
		{
			new iPret = cs_get_user_money ( id ) - 2000;
			if( iPret < 0 )
			{
				client_print( id, print_center, "Nu ai destui bani !" );
				return 1;
			}
			else
			{
				set_dhudmessage ( 31, 201, 31, 0.20, 0.90, 0, 6.0, 1.0 );
				show_dhudmessage ( id, "+50 AP" );
				set_user_armor ( id, get_user_armor ( id ) + 50 );
				cs_set_user_money ( id, iPret );
				return 1;
			}
			return 1
		}
		
	}
	
	menu_destroy(menu);
	return 1
	
}

furien(origin[3]) { 
	message_begin(MSG_BROADCAST,SVC_TEMPENTITY) 
	write_byte(TE_SPRITE) 
	write_coord(origin[0]) 
	write_coord(origin[1]) 
	write_coord(origin[2]+=30) 
	write_short(g_FurienHealth) 
	write_byte(8) 
	write_byte(255) 
	message_end() 
} 

antifurien(origin[3]) { 
	message_begin(MSG_BROADCAST,SVC_TEMPENTITY) 
	write_byte(TE_SPRITE) 
	write_coord(origin[0]) 
	write_coord(origin[1]) 
	write_coord(origin[2]+=30) 
	write_short(g_AntiFurienHealth) 
	write_byte(8) 
	write_byte(255) 
	message_end() 
} 

public fr(victim) 
{ 
	new origin[3] 
	get_user_origin(victim,origin) 
	
	furien(origin) 
}

public af(victim) 
{ 
	new origin[3] 
	get_user_origin(victim,origin) 
	
	antifurien(origin) 
} 


public cmdShowTVIPMenu ( id, level, cid ) {
	
	new menu = menu_create ( "FurienVIP Menu", "MenuTVIPGiver" )
	
	if ( !UserHaveHpAndAp [ id ] ) {
		
		menu_additem ( menu, "\y225 HP\w &\y 225 AP", "1", VIP_ACCESS );
	}
	
	else if ( UserHaveHpAndAp [ id ] ) {
		
		menu_additem ( menu, "\w225 HP\y &\w 225 AP", "1", VIP_ACCESS );
	}
	
	if ( !UserHaveHeGrenade [ id ] ) {
		
		menu_additem ( menu, "\yHE GRENADE", "2", VIP_ACCESS );
	}
	
	else if ( UserHaveHeGrenade [ id ] ) {
		menu_additem ( menu, "\wHE GRENADE", "2", VIP_ACCESS );
	}
	
	if ( !UserHaveGodMode [ id ] ) {
		
		menu_additem ( menu, "\yGOD MODE", "3", VIP_ACCESS );
	}
	
	else if ( UserHaveGodMode [ id ] ) {
		
		menu_additem ( menu, "\wGOD MODE", "3", VIP_ACCESS );
	}
	
	if ( !UserHaveNoClip [ id ] ) {
		
		menu_additem ( menu, "\yNOCLIP", "4", VIP_ACCESS );
	}
	
	else if ( UserHaveNoClip [ id ] ) {
		
		menu_additem ( menu, "\wNOCLIP", "4", VIP_ACCESS );
	}
	
	if ( !UserHaveTeleport [ id ] ) {
		
		menu_additem ( menu, "\yTELEPORT", "5", VIP_ACCESS );
	}
	
	else if ( UserHaveTeleport [ id ] ) {
		
		menu_additem ( menu, "\wTELEPORT", "5", VIP_ACCESS );
	}
	
	if ( !UserHaveSuperKnife [ id ] ) {
		
		menu_additem ( menu, "\ySUPER KNIFE", "6", VIP_ACCESS );
	}
	
	else if ( UserHaveSuperKnife [ id ] ) {
		
		menu_additem ( menu, "\wSUPER KNIFE", "6", VIP_ACCESS );
	}
	
	menu_setprop(menu, MPROP_EXIT, MEXIT_ALL);
	menu_display(id, menu, 0);
	
	
	return 1
}

public cmdShowCTVIPMenu ( id, level, cid ) {
	
	new menu = menu_create ( "FurienVIP Menu", "MenuCTVIPGiver" )
	
	if ( !UserHaveHpAndAp [ id ] ) {
		
		menu_additem ( menu, "\y225 HP\w &\y 225 AP", "1", VIP_ACCESS );
	}
	
	else if ( UserHaveHpAndAp [ id ] ) {
		
		menu_additem ( menu, "\w225 HP\y &\w 225 AP", "1", VIP_ACCESS );
	}
	
	if ( !UserHaveHeGrenade [ id ] ) {
		
		menu_additem ( menu, "\yHE GRENADE", "2", VIP_ACCESS );
	}
	
	else if ( UserHaveHeGrenade [ id ] ) {
		menu_additem ( menu, "\wHE GRENADE", "2", VIP_ACCESS );
	}
	
	if ( !UserHaveGodMode [ id ] ) {
		
		menu_additem ( menu, "\yGOD MODE", "3", VIP_ACCESS );
	}
	
	else if ( UserHaveGodMode [ id ] ) {
		
		menu_additem ( menu, "\wGOD MODE", "3", VIP_ACCESS );
	}
	
	if ( !UserHaveNoClip [ id ] ) {
		
		menu_additem ( menu, "\yNOCLIP", "4", VIP_ACCESS );
	}
	
	else if ( UserHaveNoClip [ id ] ) {
		
		menu_additem ( menu, "\wNOCLIP", "4", VIP_ACCESS );
	}
	
	if ( !UserHaveTeleport [ id ] ) {
		
		menu_additem ( menu, "\yTELEPORT", "5", VIP_ACCESS );
	}
	
	else if ( UserHaveTeleport [ id ] ) {
		
		menu_additem ( menu, "\wTELEPORT", "5", VIP_ACCESS );
	}
	
	if ( !UserHaveSuperKnife [ id ] ) {
		
		menu_additem ( menu, "\yDUAL MP5", "6", VIP_ACCESS );
	}
	
	else if ( UserHaveSuperKnife [ id ] ) {
		
		menu_additem ( menu, "\wDUAL MP5", "6", VIP_ACCESS );
	}
	
	menu_setprop(menu, MPROP_EXIT, MEXIT_ALL);
	menu_display(id, menu, 0);
	
	
	return 1
}

public MenuCTVIPGiver ( id, menu, item )
{
	if( item == MENU_EXIT )
	{
		return 1
	}
	
	new data[6], szName[64];
	new access, callback;
	menu_item_getinfo(menu, item, access, data,charsmax(data), szName,charsmax(szName), callback);
	new key = str_to_num(data);
	
	switch(key)
	{
		case 1:
		{
			if ( UserHaveHpAndAp [ id ] ) {
				
				ColorChat ( id, GREEN, "%s Ai deja aceasta putere .^4", szPrefix );
				return 1;
			}
			
			else if ( !UserHaveHpAndAp [ id ] ) {
				
				set_user_health ( id, 225 );
				set_user_armor ( id, 225 );
				ColorChat ( id, GREEN, "%s Ai primit^4 225 HP^3 &^4 225 AP^3 .^4", szPrefix );
				UserHaveHpAndAp [ id ] = true;
				
				UserHaveHeGrenade [ id ] = false;
				UserHaveGodMode [ id ] = false;
				UserHaveNoClip [ id ] = false;
				UserHaveSuperKnife [ id ] = false;
				UserHaveTeleport [ id ] = false;
				UserHasChoosed [ id ] = true;
			}
		}
		
		case 2:
		{
			if ( UserHaveHeGrenade [ id ] ) {
				
				ColorChat ( id, GREEN, "%s Ai deja aceasta putere .", szPrefix );
				return 1;
			}
			
			else if ( !UserHaveHeGrenade [ id ] ) {
				
				give_item ( id, "weapon_hegrenade" );
				ColorChat ( id, GREEN, "%s Vei primi o grenada^4 HE^3 odata la^4 15^3 secunde .^4", szPrefix );
				UserHaveHeGrenade [ id ] = true;
				set_task(15.0, "GiveMeAHeGrenade", id, _, _, "b");
				
				UserHaveGodMode [ id ] = false;
				UserHaveNoClip [ id ] = false;
				UserHaveSuperKnife [ id ] = false;
				UserHaveTeleport [ id ] = false;
				UserHaveHpAndAp [ id ] = false;
				UserHasChoosed [ id ] = true;
			}
		}
		
		case 3:
		{
			if ( UserHaveGodMode [ id ] ) {
				
				ColorChat ( id, GREEN, "%s Ai deja aceasta putere .", szPrefix );
				return 1;
			}
			
			else if ( !UserHaveGodMode [ id ] ) {
				
				ColorChat ( id, GREEN, "%s Ai primit^4 GodMode^3, apasa tasta^4 Z^3 pentru activare. ^4", szPrefix );
				UserHaveGodMode [ id ] = true;
				client_cmd ( id, "bind z vippower" );
				
				UserHaveHeGrenade [ id ] = false;
				UserHaveNoClip [ id ] = false;
				UserHaveSuperKnife [ id ] = false;
				UserHaveTeleport [ id ] = false;
				UserHaveHpAndAp [ id ] = false;
				UserHasChoosed [ id ] = true;
			}
		}
		
		case 4:
		{
			if ( UserHaveNoClip [ id ] ) {
				
				ColorChat ( id, GREEN, "%s Ai deja aceasta putere .", szPrefix );
				return 1;
			}
			
			else if ( !UserHaveNoClip [ id ] ) {
				
				ColorChat ( id, GREEN, "%s Ai primit^4 NoClip^3, apasa tasta^4 Z^3 pentru activare. ^4", szPrefix );
				UserHaveNoClip [ id ] = true;
				client_cmd ( id, "bind z vippower" );
				
				UserHaveHeGrenade [ id ] = false;
				UserHaveGodMode [ id ] = false;
				UserHaveSuperKnife [ id ] = false;
				UserHaveTeleport [ id ] = false;
				UserHaveHpAndAp [ id ] = false;
				UserHasChoosed [ id ] = true;
			}
		}
		
		case 5:
		{
			if ( UserHaveTeleport [ id ] ) {
				
				ColorChat ( id, GREEN, "%s Ai deja aceasta putere .", szPrefix );
				return 1;
			}
			
			else if ( !UserHaveTeleport [ id ] ) {
				
				ColorChat ( id, GREEN, "%s Ai primit puterea de a te^4 Teleporta^3, apasa tasta^4 Z^3 pentru activare. ^4", szPrefix );
				UserHaveTeleport [ id ] = true;
				client_cmd ( id, "bind z power" );
				remove_task(id);
				if(Teleport_Cooldown[id]) {
					set_task ( 0.1, "TeleportShowHUD", id );
				}
				
				HasPower[id] = 7;
				
				UserHaveHeGrenade [ id ] = false;
				UserHaveGodMode [ id ] = false;
				UserHaveSuperKnife [ id ] = false;
				UserHaveNoClip [ id ] = false;
				UserHaveHpAndAp [ id ] = false;
				UserHasChoosed [ id ] = true;
			}
		}
		
		case 6:
		{
			if ( UserHaveDualMp5 [ id ] ) {
				
				ColorChat ( id, GREEN, "%s Ai deja aceasta putere .", szPrefix );
				return 1;
			}
			
			else if ( !UserHaveDualMp5 [ id ] ) {
				
				ColorChat ( id, GREEN, "%s Ai primit^4 Dual Mp5^3 . ^4", szPrefix );
				strip_user_weapons ( id );
				give_item ( id, "weapon_knife" );
				give_item ( id, "weapon_mp5navy" );
				give_item ( id, "weapon_hegrenade" );
				give_item ( id, "weapon_flashbang" );
				give_item ( id, "weapon_smokegrenade" );
				give_item ( id, "weapon_usp" );
				cs_set_user_bpammo ( id, CSW_MP5NAVY, 200 );
				cs_set_user_bpammo ( id, CSW_USP, 100 );
				dual_mp5 [ id ] = true;
				uspx [ id ] = true;
				flare [ id ] = true;
				
				UserHaveDualMp5 [ id ] = true;
				
				g_has_k1ases[id] = false
				g_delay[id] = 0
				g_ammoclaw[id] = 0
				UserHaveTeleport [ id ] = false;
				UserHaveHeGrenade [ id ] = false;
				UserHaveGodMode [ id ] = false;
				UserHaveSuperKnife [ id ] = false;
				UserHaveNoClip [ id ] = false;
				UserHaveHpAndAp [ id ] = false;
				UserHasChoosed [ id ] = true;
			}
		}
		
	}
	
	menu_destroy(menu);
	return 1
	
}

public MenuTVIPGiver ( id, menu, item )
{
	if( item == MENU_EXIT )
	{
		return 1
	}
	
	new data[6], szName[64];
	new access, callback;
	menu_item_getinfo(menu, item, access, data,charsmax(data), szName,charsmax(szName), callback);
	new key = str_to_num(data);
	
	switch(key)
	{
		case 1:
		{
			if ( UserHaveHpAndAp [ id ] ) {
				
				ColorChat ( id, GREEN, "%s Ai deja aceasta putere .^4", szPrefix );
				return 1;
			}
			
			else if ( !UserHaveHpAndAp [ id ] ) {
				
				set_user_health ( id, 225 );
				set_user_armor ( id, 225 );
				ColorChat ( id, GREEN, "%s Vei primi^4 225 HP^3 &^4 225 AP^3 in fiecare runda .^4", szPrefix );
				UserHaveHpAndAp [ id ] = true;
				
				UserHaveHeGrenade [ id ] = false;
				UserHaveGodMode [ id ] = false;
				UserHaveNoClip [ id ] = false;
				UserHaveSuperKnife [ id ] = false;
				UserHaveTeleport [ id ] = false;
				UserHasChoosed [ id ] = true;
			}
		}
		
		case 2:
		{
			if ( UserHaveHeGrenade [ id ] ) {
				
				ColorChat ( id, GREEN, "%s Ai deja aceasta putere .", szPrefix );
				return 1;
			}
			
			else if ( !UserHaveHeGrenade [ id ] ) {
				
				give_item ( id, "weapon_hegrenade" );
				ColorChat ( id, GREEN, "%s Vei primi o grenada^4 HE^3 odata la^4 15^3 secunde .^4", szPrefix );
				UserHaveHeGrenade [ id ] = true;
				set_task(15.0, "GiveMeAHeGrenade", id, _, _, "b");
				
				UserHaveGodMode [ id ] = false;
				UserHaveNoClip [ id ] = false;
				UserHaveSuperKnife [ id ] = false;
				UserHaveTeleport [ id ] = false;
				UserHaveHpAndAp [ id ] = false;
				UserHasChoosed [ id ] = true;
			}
		}
		
		case 3:
		{
			if ( UserHaveGodMode [ id ] ) {
				
				ColorChat ( id, GREEN, "%s Ai deja aceasta putere .", szPrefix );
				return 1;
			}
			
			else if ( !UserHaveGodMode [ id ] ) {
				
				ColorChat ( id, GREEN, "%s Vei primi^4 GodMode^3 in fiecare runda, apasa tasta^4 Z^3 pentru activare. ^4", szPrefix );
				UserHaveGodMode [ id ] = true;
				client_cmd ( id, "bind z vippower" );
				
				UserHaveHeGrenade [ id ] = false;
				UserHaveNoClip [ id ] = false;
				UserHaveSuperKnife [ id ] = false;
				UserHaveTeleport [ id ] = false;
				UserHaveHpAndAp [ id ] = false;
				UserHasChoosed [ id ] = true;
			}
		}
		
		case 4:
		{
			if ( UserHaveNoClip [ id ] ) {
				
				ColorChat ( id, GREEN, "%s Ai deja aceasta putere .", szPrefix );
				return 1;
			}
			
			else if ( !UserHaveNoClip [ id ] ) {
				
				ColorChat ( id, GREEN, "%s Vei primi^4 NoClip^3 in fiecare runda, apasa tasta^4 Z^3 pentru activare. ^4", szPrefix );
				UserHaveNoClip [ id ] = true;
				client_cmd ( id, "bind z vippower" );
				
				UserHaveHeGrenade [ id ] = false;
				UserHaveGodMode [ id ] = false;
				UserHaveSuperKnife [ id ] = false;
				UserHaveTeleport [ id ] = false;
				UserHaveHpAndAp [ id ] = false;
				UserHasChoosed [ id ] = true;
			}
		}
		
		case 5:
		{
			if ( UserHaveTeleport [ id ] ) {
				
				ColorChat ( id, GREEN, "%s Ai deja aceasta putere .", szPrefix );
				return 1;
			}
			
			else if ( !UserHaveTeleport [ id ] ) {
				
				ColorChat ( id, GREEN, "%s Vei primi puterea de a te^4 Teleporta^3 in fiecare runda, apasa tasta^4 Z^3 pentru activare. ^4", szPrefix );
				UserHaveTeleport [ id ] = true;
				client_cmd ( id, "bind z power" );
				remove_task(id);
				if(Teleport_Cooldown[id]) {
					set_task ( 0.1, "TeleportShowHUD", id );
				}
				
				HasPower[id] = 7;
				
				UserHaveHeGrenade [ id ] = false;
				UserHaveGodMode [ id ] = false;
				UserHaveSuperKnife [ id ] = false;
				UserHaveNoClip [ id ] = false;
				UserHaveHpAndAp [ id ] = false;
				UserHasChoosed [ id ] = true;
			}
		}
		
		case 6:
		{
			if ( UserHaveSuperKnife [ id ] ) {
				
				ColorChat ( id, GREEN, "%s Ai deja aceasta putere .", szPrefix );
				return 1;
			}
			
			else if ( !UserHaveSuperKnife [ id ] ) {
				
				ColorChat ( id, GREEN, "%s Vei primi^4 SuperKnife^3 in fiecare runda. ^4", szPrefix );
				if ( Level [ id ] < 15 ) {
					super_knife_shop [ id ] = true;
					set_pev ( id, pev_viewmodel2, super_knife_shop_v_model );
				}
				
				else if ( Level [ id ] >= 15 ) {
					super_knife_shop2 [ id ] = true;
					set_pev ( id, pev_viewmodel2, super_knife_shop_v_model2 );
					set_pev ( id, pev_weaponmodel2, super_knife_shop_p_model2 );
				}
				
				UserHaveSuperKnife [ id ] = true;
				
				UserHaveTeleport [ id ] = false;
				UserHaveHeGrenade [ id ] = false;
				UserHaveGodMode [ id ] = false;
				UserHaveSuperKnife [ id ] = false;
				UserHaveNoClip [ id ] = false;
				UserHaveHpAndAp [ id ] = false;
				UserHasChoosed [ id ] = true;
			}
		}
		
	}
	
	menu_destroy(menu);
	return 1
	
}

public GiveMeAHeGrenade ( id ) {
	
	if ( UserHaveHeGrenade [ id ] ) {
		
		give_item ( id, "weapon_hegrenade" );
		set_hudmessage(0, 100, 225, 0.05, 0.60, 0, 6.0, 1.0)
		show_hudmessage ( id, "Ai primit o grenada HE" );
	}
}

public StopGodMode ( id ) {
	
	if ( UserHaveGodMode [ id ] ) {
		set_user_godmode ( id, 0 );
	}
}

public StopNoClip ( id ) {
	
	if ( UserHaveNoClip [ id ] ) {
		set_user_noclip ( id, 0 );
	}
	
}

public VIPpower ( id ) {
	
	if ( UserHaveGodMode [ id ] ) {
		
		set_user_godmode ( id, 1 );
		set_task(3.0, "StopGodMode", id );
		client_print ( id, print_center, "Ai GodMode penbtru 3 secunde" );
	}
	
	if ( UserHaveNoClip [ id ] ) {
		
		set_user_noclip ( id, 1 );
		set_task ( 4.0, "StopNoClip", id );
		client_print ( id, print_center, "Ai NoClip penbtru 4 secunde" );
	}
	
}

public VipBonus ( id ) {
	
	if ( UserHaveHpAndAp [ id ] ) {
		
		set_user_health ( id, 225 );
		set_user_armor ( id, 225 );
	}
	
	if ( UserHaveHeGrenade [ id ] ) {
		
		give_item ( id, "weapon_hegrenade" );
		set_task(15.0, "GiveMeAHeGrenade", id, _, _, "b");
	}
	
	if ( UserHaveGodMode [ id ] ) {
		
		client_cmd ( id, "bind z vippower" );
	}
	
	if ( UserHaveNoClip [ id ] ) {
		
		client_cmd ( id, "bind z vippower" );
		
	}
	
	if ( UserHaveTeleport [ id ] ) {
		
		client_cmd ( id, "bind z power" );
	}
	
	if ( UserHaveSuperKnife [ id ] ) {
		
		if ( Level [ id ] < 15 ) {
			super_knife_shop [ id ] = true;
			set_pev ( id, pev_viewmodel2, super_knife_shop_v_model );
		}
		
		else if ( Level [ id ] >= 15 ) {
			super_knife_shop2 [ id ] = true;
			set_pev ( id, pev_viewmodel2, super_knife_shop_v_model2 );
			set_pev ( id, pev_weaponmodel2, super_knife_shop_p_model2 );
		}
		
	}
	
}

public ForcePlayerSpeed ( id ) {
	
	if ( get_user_team ( id ) == 1 ) {
		
		if ( trainer [ id ] )
		{
			set_pev ( id, pev_maxspeed, 900.0 );
		} 
		
		if ( infinity_knife [ id ] )
		{
			set_pev ( id, pev_maxspeed, 930.0 );
		} 
		
		if ( super_knife [ id ] )
		{
			set_pev ( id, pev_maxspeed, 950.0 );
		} 
		
		if ( katana_knife [ id ] )
		{
			set_pev ( id, pev_maxspeed, 1000.0 );
		} 
		
		if ( double_katana_knife [ id ] )
		{
			set_pev ( id, pev_maxspeed, 1050.0 );
		} 
		
		if ( ignes_knife [ id ] )
		{
			set_pev ( id, pev_maxspeed, 1100.0 );
		} 
		
		if ( elf_knife [ id ] )
		{
			set_pev ( id, pev_maxspeed, 1150.0 );
		} 
		
		if ( vip_axe_knife [ id ] )
		{
			set_pev ( id, pev_maxspeed, 1200.0 );
		}
		
	}
}

public bomb_planted ( planter ) {
	
	eXP [ planter ] += 35;
	ColorChat ( planter, GREEN, "%s Ai primit^4 35^3 XP pentru plantarea bombei .^4", szPrefix );
	
	new originnn[3];
	get_user_origin ( planter, originnn, 0 );
	
	message_begin(MSG_PAS, SVC_TEMPENTITY, originnn);
	write_byte(TE_BEAMCYLINDER);
	write_coord(originnn[0]);
	write_coord(originnn[1]);
	write_coord(originnn[2]+10);
	write_coord(originnn[0]);
	write_coord(originnn[1]);
	write_coord(originnn[2]+60);
	write_short(TeleportSprite);
	write_byte(0);
	write_byte(0);
	write_byte(3);
	write_byte(60);
	write_byte(0);
	write_byte(255); //255
	write_byte(0); //255
	write_byte(0); //255
	write_byte(255); //255 //RED
	write_byte(0);
	message_end();
	
	UTIL_CreateBeamCylinder( originnn, 120, TeleportSprite, 0, 0, 6, 16, 0, 255, 0, 0, 255, 0 );
	UTIL_CreateBeamCylinder( originnn, 320, TeleportSprite, 0, 0, 6, 16, 0, 255, 51, 51, 255, 0 );
	UTIL_CreateBeamCylinder( originnn, 500, TeleportSprite, 0, 0, 6, 16, 0, 255, 102, 102, 255, 0 );
	
	new iPlayers[32]
	new iNum
	
	get_players( iPlayers, iNum, "e", "TERRORIST" )
	
	for( new i = 0; i < iNum; i++ )
	{
		g_CanUseHe[iPlayers[i]] = true;
	}
}

public bomb_defused ( defuser ) {
	eXP [ defuser ] += 35;
	ColorChat ( defuser, GREEN, "%s Ai primit^4 35^3 XP pentru defusarea bombei .^4", szPrefix );
	new originnn[3];
	get_user_origin ( defuser, originnn, 0 );
	message_begin(MSG_PAS, SVC_TEMPENTITY, originnn);
	write_byte(TE_BEAMCYLINDER);
	write_coord(originnn[0]);
	write_coord(originnn[1]);
	write_coord(originnn[2]+10);
	write_coord(originnn[0]);
	write_coord(originnn[1]);
	write_coord(originnn[2]+60);
	write_short(TeleportSprite);
	write_byte(0);
	write_byte(0);
	write_byte(3);
	write_byte(60);
	write_byte(0);
	write_byte(0); //255
	write_byte(0); //255
	write_byte(255); //255 //BLUE
	write_byte(255); //255 
	write_byte(0);
	message_end();
	
	Create_TE_SPRITETRAIL3( originnn, originnn, TeleportSprite3, 50, 10, 2, 50, 10 );
	
	/*---ScreenShake---*/
	message_begin(MSG_ONE , gMsgScreenShake , {0,0,0} ,defuser)
	write_short( 1<<14 );
	write_short( 1<<14 );
	write_short( 1<<14 );
	message_end();
}

public bomb_explode ( planter ) {
	eXP [ planter ] += 25;
	ColorChat ( planter, GREEN, "%s Ai primit^4 25^3 XP pentru explodarea bombei .^4", szPrefix );
}

public handle_say(id) {
	new said[192]
	read_args(said,192)
	if( ( containi(said, "who") != -1 && containi(said, "vips") != -1 ) || contain(said, "/vips") != -1 )
		set_task(0.1,"print_adminlist",id)
	return PLUGIN_CONTINUE
}

public print_adminlist(user) 
{
	new adminnames[33][32]
	new message[256]
	new contactinfo[256], contact[112]
	new id, count, x, len
	
	for(id = 1 ; id <= maxplayers ; id++)
		if(is_user_connected(id))
		if( get_user_flags(id) & VIP_ACCESS )
		get_user_name(id, adminnames[count++], 31)
	
	len = format(message, 255, "%s VIPS ONLINE: ",COLOR)
	if(count > 0) {
		for(x = 0 ; x < count ; x++) {
			len += format(message[len], 255-len, "%s%s ", adminnames[x], x < (count-1) ? ", ":"")
			if(len > 96 ) {
				print_message(user, message)
				len = format(message, 255, "%s ",COLOR)
			}
		}
		print_message(user, message)
	}
	else {
		len += format(message[len], 255-len, "Nici un VIP online.")
		print_message(user, message)
	}
	
	get_cvar_string("amx_contactinfo", contact, 63)
	if(contact[0])  {
		format(contactinfo, 111, "%s Cumpara VIP -- %s", COLOR, contact)
		print_message(user, contactinfo)
	}
}

print_message(id, msg[]) {
	message_begin(MSG_ONE, gmsgSayText, {0,0,0}, id)
	write_byte(id)
	write_string(msg)
	message_end()
}

public eDeath ( ) {
	
	new iKiller = read_data ( 1 );
	new iVictim = read_data ( 2 );
	new Headshot = read_data ( 3 );
	
	new weapon [ 32 ];
	read_data ( 4, weapon, sizeof ( weapon ) -1 );
	if ( iKiller == iVictim )
	{
		return 1;
	}
	new name [ 32 ];
	
	get_user_name ( iVictim, name, sizeof ( name ) -1 );
	
	if ( Headshot && get_user_team ( iKiller ) == 2 )
	{
		
		eXP [ iKiller ] += get_pcvar_num ( HsXp );
		ColorChat ( iKiller, GREEN, "%s Ai primit^4 %i^3 XP^4 [ HeadShot ]^3", szPrefix, get_pcvar_num ( HsXp ) + get_pcvar_num ( KillXp ) );
	}
	
	else if ( Headshot && get_user_team ( iKiller ) == 2 && get_user_flags ( iKiller ) & VIP_ACCESS )
	{
		
		eXP [ iKiller ] += get_pcvar_num ( HsXp ) + 10;
		ColorChat ( iKiller, GREEN, "%s Ai primit^4 %i^3 XP^4 [ HeadShot ]^3", szPrefix, get_pcvar_num ( HsXp ) + get_pcvar_num ( KillXp ) );
	}
	
	else if ( Headshot && get_user_team ( iKiller ) == 1 && get_user_weapon ( iKiller ) == CSW_KNIFE && get_user_flags ( iKiller ) & VIP_ACCESS )
	{
		
		eXP [ iKiller ] += get_pcvar_num ( HsXp ) + 10;
		set_user_health ( iKiller, get_user_health ( iKiller ) + 35 );
		set_dhudmessage ( 31, 201, 31, 0.02, 0.90, 0, 6.0, 1.0 );
		show_dhudmessage ( iKiller, "+35 HP" );
		ColorChat ( iKiller, GREEN, "%s Ai primit^4 %i^3 XP +^4 35^3 HP^4 [ HeadShot ]^3", szPrefix, get_pcvar_num ( HsXp ) + get_pcvar_num ( KillXp ) + 10 );
		
	}
	
	else if ( Headshot && get_user_team ( iKiller ) == 1 && get_user_weapon ( iKiller ) == CSW_KNIFE )
	{
		
		eXP [ iKiller ] += get_pcvar_num ( HsXp );
		set_user_health ( iKiller, get_user_health ( iKiller ) + 25 );
		set_dhudmessage ( 31, 201, 31, 0.02, 0.90, 0, 6.0, 1.0 );
		show_dhudmessage ( iKiller, "+25 HP" );
		ColorChat ( iKiller, GREEN, "%s Ai primit^4 %i^3 XP +^4 25^3 HP^4 [ HeadShot ]^3", szPrefix, get_pcvar_num ( HsXp ) + get_pcvar_num ( KillXp ) );
		
	}
	
	else if ( equali ( weapon, "grenade" ) && Level [ iKiller ] == 0 || Level [ iKiller ] == 1 || Level [ iKiller ] == 2 || Level [ iKiller ] == 3 || Level [ iKiller ] == 4 || Level [ iKiller ] == 5 && get_user_flags ( iKiller ) & VIP_ACCESS )
	{
		eXP [ iKiller ] += get_pcvar_num ( HeXp ) + 5;
		set_user_credits ( iKiller, get_user_credits ( iKiller ) + 2 );
		ColorChat ( iKiller, GREEN, "%s Ai primit^4 %i^3 XP +^4 2^3 credite^4 [ He Grenade ]^3", szPrefix, get_pcvar_num(HeXp) + get_pcvar_num(KillXp) + 5);
	}
	
	else if ( equali ( weapon, "grenade" ) && Level [ iKiller ] == 0 || Level [ iKiller ] == 1 || Level [ iKiller ] == 2 || Level [ iKiller ] == 3 || Level [ iKiller ] == 4 || Level [ iKiller ] == 5 )
	{
		eXP [ iKiller ] += get_pcvar_num ( HeXp );
		set_user_credits ( iKiller, get_user_credits ( iKiller ) + 1 );
		ColorChat ( iKiller, GREEN, "%s Ai primit^4 %i^3 XP +^4 1^3 credit^4 [ He Grenade ]^3", szPrefix, get_pcvar_num(HeXp) + get_pcvar_num(KillXp) );
	}
	
	else if ( equali ( weapon, "grenade" ) && get_user_flags ( iKiller ) & VIP_ACCESS )
	{
		eXP [ iKiller ] += get_pcvar_num ( HeXp ) + 10;
		ColorChat ( iKiller, GREEN, "%s Ai primit^4 %i^3 XP^4 [ He Grenade ]^3", szPrefix, get_pcvar_num(HeXp) + get_pcvar_num(KillXp) + 10 );
		
	}
	
	else if ( equali ( weapon, "grenade" ) )
	{
		eXP [ iKiller ] += get_pcvar_num ( HeXp );
		ColorChat ( iKiller, GREEN, "%s Ai primit^4 %i^3 XP^4 [ He Grenade ]^3", szPrefix, get_pcvar_num(HeXp) + get_pcvar_num(KillXp) );
		
	}
	
	else if ( equali ( weapon, "knife" ) && get_user_team ( iKiller ) == 2 && !salamander [ iKiller ] && get_user_flags ( iKiller ) & VIP_ACCESS )
	{
		eXP [ iKiller ] += get_pcvar_num ( KnifeXp ) + 10;
		ColorChat ( iKiller, GREEN, "%s Ai primit^4 %i^3 XP^4 [ Knife ]^3", szPrefix, get_pcvar_num(KnifeXp) + get_pcvar_num(KillXp) + 10 );
		
	}
	
	else if ( equali ( weapon, "knife" ) && get_user_team ( iKiller ) == 2 && !salamander [ iKiller ] )
	{
		eXP [ iKiller ] += get_pcvar_num ( HeXp );
		ColorChat ( iKiller, GREEN, "%s Ai primit^4 %i^3 XP^4 [ Knife ]^3", szPrefix, get_pcvar_num(KnifeXp) + get_pcvar_num(KillXp) );
		
	}
	
	else
	{
		ColorChat ( iKiller, GREEN, "%s Ai primit^4 %i^3 XP^4 [ Kill ]^3", szPrefix, get_pcvar_num ( KillXp ) );
		
	}
	
	if ( Level [ iVictim ] >= 25 ) {
		AddYellowBonusBox ( iVictim );
	}
	
	else if ( Level [ iVictim ] < 25 ) {
		AddBonusBox ( iVictim );
	}
	
	if ( get_user_team ( iKiller ) == 2 && get_user_team ( iVictim ) == 1 ) {
		cs_set_user_money ( iKiller, cs_get_user_money ( iKiller ) + 600 );
		eXP [ iKiller ] += get_pcvar_num ( KillXp );
	}
	
	if ( get_user_team ( iKiller ) == 1 && get_user_team ( iVictim ) == 2 ) {
		cs_set_user_money ( iKiller, cs_get_user_money ( iKiller ) + 500 );
		eXP [ iKiller ] += get_pcvar_num ( KillXp );
	}
	
	if ( Level [ iKiller ] <= 30 ) {
		ShowHud ( iKiller );
		return 1;
	}
	
	while ( eXP [ iKiller ] >= Levels [ Level [ iKiller ] ] ) {
		ColorChat ( iKiller, GREEN, "%s Felicitari ! Acum ai levelul ^4%s^3, cu ^4%i^3 XP.", szPrefix, Prefix [ Level [ iKiller ] ], eXP [ iKiller ] );
		Level [ iKiller ] ++;
		
	}
	
	SaveData ( iKiller );
	
	if ( !is_user_alive ( iVictim ) && get_user_team ( iVictim ) == 1 ) {
		new gMsgScreenFade = get_user_msgid ( "ScreenFade" );
		message_begin ( MSG_ONE_UNRELIABLE , gMsgScreenFade , {0,0,0} , iVictim );
		write_short ( (6<<10) ); // duration
		write_short ( (5<<10) ); // hold time
		write_short ( (1<<12) ); // fade type
		write_byte ( 255 );
		write_byte ( 0 );
		write_byte ( 0 );
		write_byte ( 170 );
		message_end ( );
	}
	
	else if ( !is_user_alive ( iVictim ) && get_user_team ( iVictim ) == 2 ) {
		new gMsgScreenFade = get_user_msgid ( "ScreenFade" );
		message_begin ( MSG_ONE_UNRELIABLE , gMsgScreenFade , {0,0,0} , iVictim );
		write_short ( (6<<10) ); // duration
		write_short ( (5<<10) ); // hold time
		write_short ( (1<<12) ); // fade type
		write_byte ( 0 );
		write_byte ( 0 );
		write_byte ( 255 );
		write_byte ( 170 );
		message_end ( );
	}
	
	return 1;
}

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: 
				{ 
				}
			}
		}
	}
}

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, Model[1])
				set_pev(ent,pev_team, 2)
			}
			
			case CS_TEAM_CT: {
				engfunc(EngFunc_SetModel,ent, Model[0])	
				set_pev(ent,pev_team, 1)
			}
		}
		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)
	}
}

public AddYellowBonusBox(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, Model_Yellow[1])
				set_pev(ent,pev_team, 2)
			}
			
			case CS_TEAM_CT: {
				engfunc(EngFunc_SetModel,ent, Model_Yellow[0])	
				set_pev(ent,pev_team, 1)
			}
		}
		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)
	}
}

public Touch(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) )
	{
		GiveBonusBox(toucher)
		set_pev(touched, pev_effects, EF_NODRAW)
		set_pev(touched, pev_solid, SOLID_NOT)
		remove_entity(touched);
	}
	
	return FMRES_IGNORED
}

public Touch_Yellow ( 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) )
	{
		GiveYellowBonusBox(toucher)
		set_pev(touched, pev_effects, EF_NODRAW)
		set_pev(touched, pev_solid, SOLID_NOT)
		remove_entity(touched);
	}
	
	return FMRES_IGNORED
}

public event_cur_weapon(id) {
	if(HasSpeed[id] && cs_get_user_team(id) == CS_TEAM_T && get_user_maxspeed(id) < get_pcvar_float(CvarFurienSpeed)) {
		set_user_maxspeed(id, get_pcvar_float(CvarFurienSpeed));
	}
	if(HasSpeed[id] && cs_get_user_team(id) == CS_TEAM_CT && get_user_maxspeed(id) < get_pcvar_float(CvarAntiFurienSpeed)) {
		set_user_maxspeed(id, get_pcvar_float(CvarAntiFurienSpeed));
	}
	
	if ( LowSpeed [ id ] && cs_get_user_team ( id ) == CS_TEAM_T ) {
		set_user_maxspeed ( id, get_user_maxspeed ( id ) - 250 );
	}
	
	if ( LowSpeed [ id ] && cs_get_user_team ( id ) == CS_TEAM_CT ) {
		set_user_maxspeed ( id, get_user_maxspeed ( id ) - 70 );
	}
}

public wrongeffect ( id ) {
	new gMsgScreenFade = get_user_msgid ( "ScreenFade" );
	message_begin ( MSG_ONE_UNRELIABLE , gMsgScreenFade , {0,0,0} , id );
	write_short ( (6<<10) ); // duration
	write_short ( (5<<10) ); // hold time
	write_short ( (1<<12) ); // fade type
	write_byte ( 255 );
	write_byte ( 0 );
	write_byte ( 0 );
	write_byte ( 170 );
	message_end ( );
}

public goodeffect ( id ) {
	new gMsgScreenFade = get_user_msgid ( "ScreenFade" );
	message_begin ( MSG_ONE_UNRELIABLE , gMsgScreenFade , {0,0,0} , id );
	write_short ( (6<<10) ); // duration
	write_short ( (5<<10) ); // hold time
	write_short ( (1<<12) ); // fade type
	write_byte ( 0 );
	write_byte ( 0 );
	write_byte ( 255 );
	write_byte ( 170 );
	message_end ( );
}

public GiveYellowBonusBox ( id ) {
	
	switch (random_num(1,5)) 
	{
		case 1:
		{
			goodeffect ( id );
			set_user_health ( id, get_user_health ( id ) + 150 ); 
			ColorChat ( id, GREEN, "%s Ai primit^4 150^3 HP .^4", szPrefix );
		}
		
		case 2:
		{
			goodeffect ( id );
			set_user_armor ( id, get_user_armor ( id ) + 200 );
			ColorChat ( id, GREEN, "%s Ai Primit^4 200^3 AP .^4", szPrefix );
		}
		
		case 3:
		{
			if ( get_user_team ( id ) == 2 ) {
				
				dual_mp5 [ id ] = true;
				k1ases_weapon [ id ] = false;
				remove_dragoncannon ( id );
				give_item ( id, "weapon_mp5navy" );
				cs_set_user_bpammo ( id, CSW_MP5NAVY, 200 );
				ColorChat ( id, GREEN, "%s Ai primit^4 Dual Mp5^3 .^4", szPrefix );
				
			}
			
			else if ( get_user_team ( id ) == 1 ) {
				
				give_item ( id, "weapon_flashbang" );
				cs_set_user_bpammo ( id, CSW_FLASHBANG, 5 );
				ColorChat ( id, GREEN, "%s Ai primit^4 5^3 grenazi^4 FLASH^3 .^4", szPrefix );
				
			}
			
		}
		
		case 4:
		{
			give_item ( id, "weapon_hegrenade" );
			cs_set_user_bpammo ( id, CSW_HEGRENADE, 3 );
			ColorChat ( id, GREEN, "%s Ai primit^4 3^3 grenazi^4 HE^3 .^4", szPrefix );
		}
		
		case 5:
		{
			set_user_credits ( id, get_user_credits ( id ) + 5 );
			ColorChat ( id, GREEN, "%s Ai primit^4 5^3 credite .^4", szPrefix );
		}
	}
}

public GiveBonusBox(id) {
	
	if ( get_user_team ( id ) == 1 ) {
		
		switch (random_num(1,20)) 
		{
			case 1:
			{
				goodeffect ( id );
				set_user_health ( id, get_user_health ( id ) + 50 ); 
				ColorChat ( id, GREEN, "%s Ai primit^4 50^3 HP .^4", szPrefix );
			}
			
			case 2:
			{
				goodeffect ( id );
				set_user_armor ( id, get_user_armor ( id ) + 100 );
				ColorChat ( id, GREEN, "%s Ai primit^4 100^3 AP .^4", szPrefix );
			}
			
			case 3:
			{
				goodeffect ( id );
				set_user_health ( id, get_user_health ( id ) - 20 ); 
				wrongeffect ( id );
				ColorChat ( id, GREEN, "%s Ai pierdut^4 20^3 HP .^4", szPrefix );
			}
			
			case 4:
			{
				goodeffect ( id );
				set_user_armor ( id, get_user_armor ( id ) - 50 );
				wrongeffect ( id );
				ColorChat ( id, GREEN, "%s Ai pierdut^4 50^3 AP .^4", szPrefix );
			}
			
			case 5:
			{
				goodeffect ( id );
				cs_set_user_money ( id, cs_get_user_money ( id ) + 3000 );
				ColorChat ( id, GREEN, "%s Ai primit^4 3000^3 $ .^4", szPrefix );
			}
			
			case 6:
			{
				cs_set_user_money ( id, cs_get_user_money ( id ) - 2000 );
				wrongeffect ( id );
				ColorChat ( id, GREEN, "%s Ai pierdut^4 2000^3 $ .^4", szPrefix );
			}
			
			case 7:
			{
				goodeffect ( id );
				set_user_gravity ( id, 0.4 );
				ColorChat ( id, GREEN, "%s Ai primit^4 400^3 Gravity .^4", szPrefix );
			}
			
			case 8:
			{
				goodeffect ( id );
				HasSpeed[id] = true;
				ColorChat ( id, GREEN, "%s Ai primit^4 1000^3 Speed .^4", szPrefix );
			}
			
			case 9:
			{
				LowSpeed [ id ] = true;
				wrongeffect ( id );
				ColorChat ( id, GREEN, "%s Ai pierdut din viteza .^4", szPrefix );
			}
			
			case 10:
			{
				set_user_health ( id, 225 );
				set_user_armor ( id, 225 );
				goodeffect ( id );
				ColorChat ( id, GREEN, "%s Acum ai^4 225^3 HP si^4 225^3 AP^4 .^4", szPrefix );
			}
			
			case 11:
			{
				cs_set_user_money ( id, 0 );
				wrongeffect ( id );
				ColorChat ( id, GREEN, "%s Ai pierdut toti banii !^4", szPrefix );
			}
			
			case 12:
			{
				
				if ( !super_knife_shop [ id ] || !super_knife_shop2 [ id ] ) {
					
					goodeffect ( id );
					if ( Level [ id ] < 15 ) {
						super_knife_shop [ id ] = true;
						set_pev ( id, pev_viewmodel2, super_knife_shop_v_model );
					}
					
					else if ( Level [ id ] >= 15 ) {
						super_knife_shop2 [ id ] = true;
						set_pev ( id, pev_viewmodel2, super_knife_shop_v_model2 );
						set_pev ( id, pev_weaponmodel2, super_knife_shop_p_model2 );
					}
					
					ColorChat ( id, GREEN, "%s Ai primit^4 Super Knife^4 .^4", szPrefix ); 
					
				}
				
				else if ( super_knife_shop [ id ] || super_knife_shop2 [ id ] ) {
					goodeffect ( id );
					fm_set_user_health ( id, get_user_health ( id ) + 70 );
					ColorChat ( id, GREEN, "%s Ai primit^4 70^3 HP .^4", szPrefix );
				}
			}
			
			case 13:
			{
				goodeffect ( id );
				set_user_xp ( id, get_user_xp ( id ) + 100 );
				ColorChat ( id, GREEN, "%s Ai primit^4 100^3 XP .^4", szPrefix );
			}
			
			case 14:
			{
				wrongeffect ( id );
				set_user_xp ( id, get_user_xp ( id ) - 50 );
				ColorChat ( id, GREEN, "%s Ai pierdut^4 50^3 XP .^4", szPrefix );
			}
			
			case 15:
			{
				ColorChat ( id, GREEN, "%s A trecut mosul pe la tine, ai primit^4 16000^3 $ .^4", szPrefix );
				goodeffect ( id );
			}
			
			case 16:
			{	
				if ( !vip_axe_knife [ id ] || !deklowaz [ id ] ) {
					HasTeleport[id] = true;
					client_cmd(id, "bind x power2");
					goodeffect ( id );
					ColorChat ( id, GREEN, "%s Ai primit puterea de a te teleporta, apasa tasta^4 X^3 pentru a te teleporta .^4", szPrefix );
				}
				
				else {
					set_user_credits ( id, get_user_credits ( id ) + 2 );
					ColorChat ( id, GREEN, "%s Ai primit^4 2^3 credite .", szPrefix );
				}
				
				
			}
			
			case 17:
			{
				
				HasSpeed[id] = true;
				client_cmd(id, "cl_sidespeed %d",get_pcvar_float(CvarFurienSpeed))
				client_cmd(id, "cl_forwardspeed %d",get_pcvar_float(CvarFurienSpeed))
				client_cmd(id, "cl_backspeed %d",get_pcvar_float(CvarFurienSpeed))
				set_user_maxspeed(id, get_pcvar_float(CvarFurienSpeed));
			}
			
			case 18:
			{
				
				
				fm_set_user_health ( id, get_user_health ( id ) + 80 );
				ColorChat ( id, GREEN, "%s Ai primit^4 80^3 HP .^4", szPrefix );
			}
			
			case 19:
			{
				give_item ( id, "weapon_hegrenade" );
				ColorChat ( id, GREEN, "%s Ai primit o grenada^4 HE^3 .", szPrefix );
			}
			
			case 20:
			{
				give_item ( id, "weapon_flashbang" );
				ColorChat ( id, GREEN, "%s Ai primit o grenada^4 FLASH^3 .", szPrefix );
			}
		}
	}
	
	else if ( get_user_team ( id ) == 2 ) {
		
		switch (random_num(1,23)) 
		{
			case 1:
			{
				goodeffect ( id );
				set_user_health ( id, get_user_health ( id ) + 50 ); 
				ColorChat ( id, GREEN, "%s Ai primit^4 50^3 HP .^4", szPrefix );
			}
			
			case 2:
			{
				goodeffect ( id );
				set_user_armor ( id, get_user_armor ( id ) + 100 );
				ColorChat ( id, GREEN, "%s Ai primit^4 100^3 AP .^4", szPrefix );
			}
			
			case 3:
			{
				goodeffect ( id );
				set_user_health ( id, get_user_health ( id ) - 20 ); 
				wrongeffect ( id );
				ColorChat ( id, GREEN, "%s Ai pierdut^4 20^3 HP .^4", szPrefix );
			}
			
			case 4:
			{
				goodeffect ( id );
				set_user_armor ( id, get_user_armor ( id ) - 50 );
				wrongeffect ( id );
				ColorChat ( id, GREEN, "%s Ai pierdut^4 50^3 AP .^4", szPrefix );
			}
			
			case 5:
			{
				goodeffect ( id );
				cs_set_user_money ( id, cs_get_user_money ( id ) + 3000 );
				ColorChat ( id, GREEN, "%s Ai primit^4 3000^3 $ .^4", szPrefix );
			}
			
			case 6:
			{
				cs_set_user_money ( id, cs_get_user_money ( id ) - 2000 );
				wrongeffect ( id );
				ColorChat ( id, GREEN, "%s Ai pierdut^4 2000^3 $ .^4", szPrefix );
			}
			
			case 7:
			{
				goodeffect ( id );
				set_user_gravity ( id, 0.4 );
				ColorChat ( id, GREEN, "%s Ai primit^4 400^3 Gravity .^4", szPrefix );
			}
			
			case 8:
			{
				goodeffect ( id );
				HasSpeed[id] = true;
				ColorChat ( id, GREEN, "%s Ai primit^4 750^3 Speed .^4", szPrefix );
			}
			
			case 9:
			{
				entity_set_float ( id, EV_FL_maxspeed, 250.0 );
				wrongeffect ( id );
				ColorChat ( id, GREEN, "%s Ai pierdut din viteza .^4", szPrefix );
			}
			
			case 10:
			{
				set_user_health ( id, 10 );
				set_user_armor ( id, 20 );
				wrongeffect ( id );
				ColorChat ( id, GREEN, "%s Acum ai^4 10^3 HP si^4 20^3 AP^4 .^4", szPrefix );
			}
			
			case 11:
			{
				cs_set_user_money ( id, 0 );
				wrongeffect ( id );
				ColorChat ( id, GREEN, "%s Ai pierdut toti banii !^4", szPrefix );
			}
			
			case 12:
			{
				
				if (  !salamander [ id ] ) {
					
					goodeffect ( id );
					salamander [ id ] = true;
					set_task ( 0.1, "SalamanderGiveItem", id );
					set_task ( 30.0, "reverse_salamander", id );
					ColorChat ( id, GREEN, "%s Ai primit^4 Salamander^3 pentru^4 30^3 secunde .", szPrefix );
				}
				
				else if ( salamander [ id ] ) {
					goodeffect ( id );
					fm_set_user_health ( id, get_user_health ( id ) + 100 );
					ColorChat ( id, GREEN, "%s Ai primit^4 100^3 HP .^4", szPrefix );
				}
				
			}
			
			case 13:
			{
				goodeffect ( id );
				set_user_xp ( id, get_user_xp ( id ) + 100 );
				ColorChat ( id, GREEN, "%s Ai primit^4 100^3 XP .^4", szPrefix );
			}
			
			case 14:
			{
				wrongeffect ( id );
				set_user_xp ( id, get_user_xp ( id ) - 20 );
				ColorChat ( id, GREEN, "%s Ai pierdut^4 20^3 XP .^4", szPrefix );
			}
			
			case 15:
			{
				ColorChat ( id, GREEN, "%s A trecut mosul pe la tine, ai primit^4 16000^3 $ .^4", szPrefix );
				goodeffect ( id );
			}
			
			case 16:
			{	
				if ( !vip_axe_knife [ id ] || !deklowaz [ id ] ) {
					HasTeleport[id] = true;
					client_cmd(id, "bind x power2");
					goodeffect ( id );
					ColorChat ( id, GREEN, "%s Ai primit puterea de a te teleporta, apasa tasta^4 X^3 pentru a te teleporta .^4", szPrefix );
				}
				
				else {
					goodeffect ( id );
					set_user_credits ( id, get_user_credits ( id ) + 2 );
					ColorChat ( id, GREEN, "%s Ai primit^4 2^3 credite .", szPrefix );
				}
				
				
			}
			
			case 17:
			{
				goodeffect ( id );
				HasSpeed[id] = true;
				client_cmd(id, "cl_sidespeed %d",get_pcvar_float(CvarAntiFurienSpeed))
				client_cmd(id, "cl_forwardspeed %d",get_pcvar_float(CvarAntiFurienSpeed))
				client_cmd(id, "cl_backspeed %d",get_pcvar_float(CvarAntiFurienSpeed))
				set_user_maxspeed(id, get_pcvar_float(CvarAntiFurienSpeed));
			}
			
			
			case 18:
			{
				
				if ( !k1ases_weapon [ id ] ) {
					goodeffect ( id );
					k1ases_weapon [ id ] = true;
					dual_mp5 [ id ] = false;
					remove_dragoncannon ( id );
					give_k1ases ( id );
					ColorChat ( id, GREEN, "%s Ai primit^4 K1ASUS^3 .^4", szPrefix );
				}
				
				else if ( k1ases_weapon [ id ] ) {
					goodeffect ( id );
					fm_set_user_health ( id, get_user_health ( id ) + 70 );
					ColorChat ( id, GREEN, "%s Ai primit^4 70^3 HP .^4", szPrefix );
				}
				
				
			}
			
			case 19:
			{
				goodeffect ( id );
				give_item ( id, "weapon_hegrenade" );
				ColorChat ( id, GREEN, "%s Ai primit o grenada^4 HE^3 .", szPrefix );
			}
			
			case 20:
			{
				goodeffect ( id );
				give_item ( id, "weapon_flashbang" );
				ColorChat ( id, GREEN, "%s Ai primit o grenada^4 FLASH^3 .", szPrefix );
			}
			
			case 21:
			{
				if ( UserHaveQuad [ id ] ) {
					goodeffect ( id );
					ColorChat ( id, GREEN, "%s Ai primit^4 5^3 gloante pentru^4 Quad-Barrel^3  .^4", szPrefix );
					cs_set_user_bpammo ( id, CSW_QB, cs_get_user_bpammo ( id, CSW_QB ) + 5 );
				}
				
				else {
					goodeffect ( id );
					set_task ( 0.1, "GiveQuadBarrel", id );
					ColorChat ( id, GREEN, "%s Ai primit^4 Quad-Barrel^3 .", szPrefix );
					UserHaveQuad [ id ] = true;
				}
			}
			
			case 22:
			{
				if ( UserHaveDragon [ id ] ) {
					goodeffect ( id );
					g_cannon_ammo [ id ] += 3;
					ColorChat ( id, GREEN, "%s Ai primit^4 3^3 gloante pentru^4 Dragon Cannon^3  .^4", szPrefix );
				}
				else {
					goodeffect ( id );
					ColorChat ( id, GREEN, "%s Ai primit^4 Dragon Cannon^3 .", szPrefix );
					set_task ( 0.1, "get_dragoncannon", id );
					UserHaveDragon [ id ] = true;
				}
			}
			
			case 23:
			{
				if ( UserHaveM79  [ id ] ) {
					goodeffect ( id );
					ColorChat ( id, GREEN, "%s Ai primit^4 2^3 grenazi pentru lansator. ^4", szPrefix );
					grenade_count [ id ] += 2;
				}
				
				else {
					goodeffect ( id );
					ColorChat ( id, GREEN, "%s Ai primit un^4 Lansator de Grenazi^3 .^4", szPrefix );
					give_weapon ( id, 2 );
					m79++;
					UserHaveM79 [ id ] = true;
				}
			}
			
			
		}
	}
}

public CmdTeleport(id) {
	if (!is_user_alive(id) || !HasTeleport[id]) return PLUGIN_CONTINUE
	
	if (Teleport_Cooldown[id]) {
		ColorChat ( id, GREEN, "%s Puterea iti va reveni in^4 %d^3 secunde .", Teleport_Cooldown [ id ] );
		return PLUGIN_CONTINUE
	}
	else if (teleport(id)) {
		emit_sound(id, CHAN_STATIC, SOUND_BLINK, 1.0, ATTN_NORM, 0, PITCH_NORM)
		remove_task(id)
		Teleport_Cooldown[id] = get_pcvar_num(CvarTeleportCooldown);
		set_task(1.0, "TeleportShowHUD", id, _, _, "b");
		set_hudmessage(0, 100, 200, 0.05, 0.60, 0, 1.0, 1.1, 0.0, 0.0, -11);
		if(get_pcvar_num(CvarTeleportCooldown) != 1) {
			show_hudmessage(id, "Puterea iti va reveni in^4 %d^3 secunde",get_pcvar_num(CvarTeleportCooldown));
		}
		if(get_pcvar_num(CvarTeleportCooldown) == 1) {
			show_hudmessage(id, "Puterea iti va reveni in^4 %d^3 secunda",get_pcvar_num(CvarTeleportCooldown));
		}
	}
	else {
		ColorChat ( id, GREEN, "%s Pozitia de teleportare este invalida .^4", szPrefix ); 
	}
	return PLUGIN_CONTINUE
}

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 cmdVipWeaponsMenu ( id, level, cid ) { 
	
	new menu = menu_create ( "\rFurien XP \yMenu", "VIPWeapons_Giver" );
	
	if ( get_user_team ( id ) == 2 ) {
		
		menu_additem ( menu, "\ySCORPION MP5 [ \r3 CREDITE \y]", "1", VIP_ACCESS );
		menu_additem ( menu, "\yQUAD BARREL [ \r3 CREDITE \y]", "2", VIP_ACCESS );
		menu_additem ( menu, "\yDRAGON CANNON [ \r4 CREDITE \y]", "3", VIP_ACCESS );
		menu_additem ( menu, "\yM79 LAUNCHER [ \r4 CREDITE \y]", "4", VIP_ACCESS );
		
		
		menu_setprop ( menu, MPROP_EXIT, MEXIT_ALL );
		menu_display ( id, menu, 0 );
		
	}
	
	return 1;
}

public VIPWeapons_Giver ( id, menu, item ) {
	
	if( item == MENU_EXIT )
	{
		return 1;
	}
	
	new data [ 6 ], szName [ 64 ];
	new access, callback;
	menu_item_getinfo ( menu, item, access, data,charsmax ( data ), szName,charsmax ( szName ), callback );
	new key = str_to_num ( data );
	
	switch(key)
	{
		case 1:
		{
			new iCredits = get_user_credits(id) - 3;
			if( iCredits < 0 )
			{
				ColorChat ( id, GREEN, "%s Nu ai destule credite !", szPrefix );
				return 1;
			}
			else
			{
				ColorChat ( id, GREEN, "%s Ai cumparat^4 Scorpion Mp5^3 .^4", szPrefix );
				give_k1ases ( id );
				set_user_credits ( id, iCredits );
				return 1;
			}
		}
		
		case 2:
		{
			new iCredits = get_user_credits(id) - 3;
			if( iCredits < 0 )
			{
				ColorChat ( id, GREEN, "%s Nu ai destule credite !", szPrefix );
				return 1;
			}
			else
			{
				ColorChat ( id, GREEN, "%s Ai cumparat^4 Quad-Barrel^3 .^4", szPrefix );
				set_task ( 0.1, "GiveQuadBarrel", id );
				set_user_credits ( id, iCredits );
				return 1;
			}
		}
		
		case 3:
		{
			new iCredits = get_user_credits(id) - 4;
			if( iCredits < 0 )
			{
				ColorChat ( id, GREEN, "%s Nu ai destule credite !", szPrefix );
				return 1;
			}
			else
			{
				ColorChat ( id, GREEN, "%s Ai cumparat^4 Dragon Cannon^3 .^4", szPrefix );
				set_task ( 0.1, "get_dragoncannon", id );
				set_user_credits ( id, iCredits );
				return 1;
			}
		}
		
		case 4:
		{
			new iCredits = get_user_credits(id) - 4;
			if( iCredits < 0 )
			{
				ColorChat ( id, GREEN, "%s Nu ai destule credite !", szPrefix );
				return 1;
			}
			else
			{
				ColorChat ( id, GREEN, "%s Ai cumparat^4 M79 Launcher^3 .^4", szPrefix );
				give_weapon ( id, 2 );
				m79++;
				UserHaveM79 [ id ] = true;
				set_user_credits ( id, iCredits );
				return 1;
			}
		}
		
	}
	
	menu_destroy ( menu );
	return 1;
	
}

public cmdXpMenu ( id, level, cid ) { 
	
	new menu = menu_create ( "\rFurien XP \yMenu", "Menu_Giver" );
	menu_additem ( menu, "\y3 HE \y[ \rLvL. 3 - 1 Credit\y ]", "1", 0 );
	menu_additem ( menu, "\y5 FB & 2 SMK \y[ \rLvL. 5 - 1 Credit \y ]", "2", 0 );
	menu_additem ( menu, "\y6 HE \y[ \rLvL. 8 - 2 Credite\y ]", "3", 0 );
	menu_additem ( menu, "\ySPEED \y[ \rLvL. 10 - 2 Credite \y ]", "4", 0 );
	menu_additem ( menu, "\yGRAVITY \y[ \rLvL. 13 - 2 Credite\y ]", "5", 0 );
	menu_additem ( menu, "\yGODMODE \y[ \rLvL. 16 - 3 Credite\y ]", "6", 0 );
	menu_additem ( menu, "\yNOCLIP \y[ \rLvL. 18 - 3 Credite\y ]", "7", 0 );
	menu_additem ( menu, "\yCHAMELEON \y[ \rLvL. 22 - 4 Credite \y ]", "8", 0 );
	menu_additem ( menu, "\yRESPAWN \y[ \rLvL. 25 - 5 Credite \y ]", "9", 0 );
	
	if ( get_user_team ( id ) == 2 ) {
		menu_additem ( menu, "\ySALAMANDER \y[ \rLvL. 28 - 5 Credite \y ]", "10", 0 );
	}
	
	menu_setprop ( menu, MPROP_EXIT, MEXIT_ALL );
	menu_display ( id, menu, 0 );
	
	
	return 1;
}

public Menu_Giver ( id, menu, item ) {
	
	if( item == MENU_EXIT )
	{
		return 1;
	}
	
	if ( g_iCount [ id ] >= 1 ) {
		ColorChat ( id, GREEN, "%s Ai folosit odata aceasta optiune .", szPrefix );
	}
	
	new data [ 6 ], szName [ 64 ];
	new access, callback;
	menu_item_getinfo ( menu, item, access, data,charsmax ( data ), szName,charsmax ( szName ), callback );
	new key = str_to_num ( data );
	
	switch(key)
	{
		case 1:
		{
			if ( g_Menu [ id ] >= 3 ) {
				
				ColorChat ( id, GREEN, "%s Ai folosit deja meniul de^4 3^3 ori .", szPrefix );
				return 1;
			}
			
			else {
				
				if ( Level [ id ] >= 3 ) {
					give_item ( id, "weapon_hegrenade" );
					cs_set_user_bpammo ( id, CSW_HEGRENADE, 3 );
					++g_Menu [ id ];
					set_user_credits ( id, get_user_credits ( id ) - 1 );
					return 1;
				}
				
				else {
					ColorChat ( id, GREEN, "%s Nu ai level 3 .", szPrefix );
					return 1;
				}
			}
		}
		
		case 2:
		{
			
			if ( g_Menu [ id ] >= 3 ) {
				ColorChat ( id, GREEN, "%s Ai folosit deja meniul de^4 3^3 ori .", szPrefix );
				return 1;
			}
			
			else {
				if ( Level [ id ] >= 5 ) {
					give_item ( id, "weapon_flashbang" );
					give_item ( id, "weapon_smokegrenade" );
					cs_set_user_bpammo ( id, CSW_FLASHBANG, 5 );
					cs_set_user_bpammo ( id, CSW_SMOKEGRENADE, 2 );
					set_user_credits ( id, get_user_credits ( id ) - 1 );
					++g_Menu [ id ];
					return 1;
				}
				
				else {
					ColorChat ( id, GREEN, "%s Nu ai level 5 .", szPrefix );
					return 1;
				}
			}
		}
		
		case 3:
		{
			
			if ( g_Menu [ id ] >= 3 ) {
				ColorChat ( id, GREEN, "%s Ai folosit deja meniul de^4 3^3 ori .", szPrefix );
				return 1;
			}
			
			else {
				if ( Level [ id ] >= 8 ) {
					give_item ( id, "weapon_hegrenade" );
					cs_set_user_bpammo ( id, CSW_HEGRENADE, 6 );
					++g_Menu [ id ];
					set_user_credits ( id, get_user_credits ( id ) - 2 );
					return 1;
				}
				
				else {
					ColorChat ( id, GREEN, "%s Nu ai level 8 .", szPrefix );
					return 1;
				}
			}
		}
		
		case 4:
		{
			
			if ( g_Menu [ id ] >= 3 ) {
				ColorChat ( id, GREEN, "%s Ai folosit deja meniul de^4 3^3 ori .", szPrefix );
				return 1;
			}
			
			else {
				if ( Level [ id ] >= 10 ) {
					entity_set_float ( id, EV_FL_maxspeed, 450.0 );  
					++g_Menu [ id ];
					set_user_credits ( id, get_user_credits ( id ) - 2 );
					return 1;
				}
				
				else {
					ColorChat ( id, GREEN, "%s Nu ai level 10 .", szPrefix );
					return 1;
				}
			}
		}
		
		case 5:
		{
			
			if ( g_Menu [ id ] >= 3 ) {
				ColorChat ( id, GREEN, "%s Ai folosit deja meniul de^4 3^3 ori .", szPrefix );
				return 1;
			}
			
			else {
				if ( Level [ id ] >= 13 ) {
					set_user_gravity ( id, 0.5 );
					++g_Menu [ id ];
					set_user_credits ( id, get_user_credits ( id ) - 2 );
					return 1;
				}
				
				else {
					ColorChat ( id, GREEN, "%s Nu ai level 13 .", szPrefix );
					return 1;
				}
			}
		}
		
		case 6:
		{
			if ( g_Menu [ id ] >= 3 ) {
				ColorChat ( id, GREEN, "%s Ai folosit deja meniul de^4 3^3 ori .", szPrefix );
				return 1;
			}
			
			else {
				if ( Level [ id ] >= 16 ) {
					set_user_godmode ( id, 1 );
					ColorChat ( id, GREEN, "%s Ai primit God pentru^4 8^4 secunde .", szPrefix );
					set_task ( 8.0, "reverse_godmode", id );
					++g_Menu [ id ];
					set_user_credits ( id, get_user_credits ( id ) - 3 );
					return 1;
				}
				
				else {
					ColorChat ( id, GREEN, "%s Nu ai level 16 .", szPrefix );
					return 1;
				}
			}
		}
		
		case 7:
		{
			if ( g_Menu [ id ] >= 3 ) {
				ColorChat ( id, GREEN, "%s Ai folosit deja meniul de^4 3^3 ori .", szPrefix );
				return 1;
			}
			
			else {
				if ( Level [ id ] >= 18 ) {
					set_user_noclip ( id, 1 );
					ColorChat ( id, GREEN, "%s Ai primit Noclip pentru^4 5^4 secunde .", szPrefix );
					set_task ( 5.0, "reverse_noclip", id );
					++g_Menu [ id ];
					set_user_credits ( id, get_user_credits ( id ) - 3 );
					return 1;
				}
				
				else {
					ColorChat ( id, GREEN, "%s Nu ai level 18 .", szPrefix );
					return 1;
				}
			}
		}
		
		case 8:
		{
			if ( g_Menu [ id ] >= 3 ) {
				ColorChat ( id, GREEN, "%s Ai folosit deja meniul de^4 3^3 ori .", szPrefix );
				return 1;
			}
			
			else {
				if ( Level [ id ] >= 22 ) {
					chameleon ( id );
					++g_Menu [ id ];
					set_user_credits ( id, get_user_credits ( id ) - 4 );
					return 1;
				}
				
				else {
					ColorChat ( id, GREEN, "%s Nu ai level 22 .", szPrefix );
					return 1;
				}
			}
		}
		
		case 9:
		{
			if ( g_Menu [ id ] >= 3 ) {
				ColorChat ( id, GREEN, "%s Ai folosit deja meniul de^4 3^3 ori .", szPrefix );
			}
			
			else {
				if ( Level [ id ] >= 25 ) {
					
					if(is_user_alive(id)) 
					{
						ColorChat ( id, GREEN, "%s Esti deja in viata .", szPrefix );
						return 1;
					}
					
					if ( get_user_team ( id ) == 3) {
						
						ColorChat ( id, GREEN, "%s Esti spectator .", szPrefix );
						
						if(!is_user_alive(id)) 
						{
							
							ExecuteHamB ( Ham_CS_RoundRespawn, id );
							set_task(0.5, "SetUserWeapons", id + 12345);
							++g_Menu [ id ];
							set_user_credits ( id, get_user_credits ( id ) - 5 );
							return 1;
						}
						
						return 1;
					}
					
					else {
						ColorChat ( id, GREEN, "%s Nu ai level 25 .", szPrefix );
						return 1;
					}
				}
			}
		}
		
		case 10:
		{
			if ( get_user_team ( id ) == 2 ) {
				
				if ( g_Menu [ id ] >= 3 ) {
					ColorChat ( id, GREEN, "%s Ai folosit deja meniul de^4 3^3 ori .", szPrefix );
					return 1;
				}
				
				else {
					if ( Level [ id ] >= 28 && !SalamanderLimit [ id ] ) {
						
						salamander [ id ] = true;
						ColorChat ( id, GREEN, "%s Ai primit aceasta arma pentru^4 1^4 minut .", szPrefix );
						set_task ( 0.1, "SalamanderGiveItem", id );
						set_task ( 60.0, "reverse_salamander", id );
						++g_Menu [ id ];
						SalamanderLimit [ id ] = true;
						set_user_credits ( id, get_user_credits ( id ) - 5 );
						return 1;
						
						
					}
					else if ( SalamanderLimit [ id ] ) {
						ColorChat ( id, GREEN, "%s Ai mai folosit odata aceasta optiune .", szPrefix );
						return 1;
					}
					
					else if ( Level [ id ] < 28 ) {
						ColorChat ( id, GREEN, "%s Nu ai level 30 .", szPrefix );
						return 1;
					}
				}
			}
			
		}
	}
	
	menu_destroy ( menu );
	return 1;
	
}

public SetUserWeapons(id) {
	id -= 12345;
	
	if( !is_user_connected(id) ) return PLUGIN_HANDLED;
	
	strip_user_weapons(id);
	give_item(id, "weapon_knife");
	set_task ( 0.1, "cmdClassMenu", id );
	
	return PLUGIN_CONTINUE;
}

public reverse_godmode ( id ) {
	
	set_user_godmode ( id , 0 );
}

public reverse_noclip ( id ) {
	
	set_user_noclip ( id, 0 );
}

public reverse_invis ( id ) {
	
	set_user_rendering( id, kRenderFxNone, 0, 0, 0, kRenderTransAlpha, 255 );
	ColorChat ( id, GREEN, "%s Timpul a expirat ! Acum esti din nou^4 vizibil^3 .", szPrefix );
}

public reverse_salamander ( id ) {
	
	strip_user_weapons ( id );
	give_item ( id, "weapon_knife" );
	salamander [ id ] = false;
	set_task ( 0.1, "cmdClassMenu", id );
	
	ColorChat ( id, GREEN, "%s Timpul a expirat ! Nu mai ai arma^4 salamander^3 .", szPrefix );
}

public show_salamander_icon ( id ) {
	if ( salamander [ id ] ) {
		if (!(pev(id,pev_button) & FL_ONGROUND))
		{    
			new iconstatus;
			iconstatus = get_user_msgid("StatusIcon");
			message_begin(MSG_ONE,iconstatus,{0,0,0},id);
			write_byte(1); // status (0=hide, 1=show, 2=flash)
			write_string("dmg_heat"); // sprite name
			write_byte(255); // red
			write_byte(0); // green
			write_byte(0); // blue
			message_end();
		}
		
	}
	
	else {
		if (!(pev(id,pev_button) & FL_ONGROUND))
		{    
			new iconstatus;
			iconstatus = get_user_msgid("StatusIcon");
			message_begin(MSG_ONE,iconstatus,{0,0,0},id);
			write_byte(0); // status (0=hide, 1=show, 2=flash)
			write_string("dmg_heat"); // sprite name
			write_byte(255); // red
			write_byte(0); // green
			write_byte(0); // blue
			message_end();
		}
	}
}

public reverse_model ( id ) {
	
	if ( get_user_team ( id ) == 1 ) {
		cs_set_user_model ( id, "guerilla" );
		ColorChat ( id, GREEN, "%s Timpul a expirat ! Acum arati din nou ca un^4 Furien^3 .", szPrefix );
	}
	
	else if ( get_user_team ( id ) == 2 ) {
		cs_set_user_model ( id, "gign" );
		ColorChat ( id, GREEN, "%s Timpul a expirat ! Acum arati din nou ca un^4 AntiFurien^3 .", szPrefix );
	}
}

public chameleon ( id ) {
	
	if ( get_user_team ( id ) == 1 ) {
		cs_set_user_model ( id, "gign" );
		ColorChat ( id, GREEN, "%s Acum arati ca un^4 AntiFurien^3 pentru^4 60^3 secunde .", szPrefix );
		set_task ( 60.0, "reverse_model", id );
	}
	
	else if ( get_user_team ( id ) == 2 ) {
		cs_set_user_model ( id, "guerilla" );
		ColorChat ( id, GREEN, "%s Acum arati ca un^4 Furien^3 pentru^4 60^3 secunde .", szPrefix );
		set_task ( 60.0, "reverse_model", id );
	}
}

public grenade_throw ( id, gid, wid ) {
	
	if ( strike_grenade [ id ] || strike_grenade2 [ id ] || strike_grenade3 [ id ] && get_user_weapon ( id ) == CSW_HEGRENADE && get_user_team ( id ) == 1 ) {
		new gtm = 1;
		if(!gtm) return;
		new r, g, b;
		switch(gtm)
		{
			case 1:
			{
				r = 255;
				g = 0;
				b = 0;
			}
		}
		message_begin(MSG_BROADCAST, SVC_TEMPENTITY);
		write_byte(TE_BEAMFOLLOW);
		write_short(gid);
		write_short(g_trail);
		write_byte(10);
		write_byte(5);
		write_byte(r);
		write_byte(g);
		write_byte(b);
		write_byte(192);
		message_end();
	}
}

// POWERS -------------------------------------

////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Drop Enemy Weapon |
//==========================================================================================================	
public DropShowHUD(id) {
	if (!is_user_alive(id) || HasPower[id] != 4) {
		remove_task(id);
		Drop_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) && Drop_Cooldown[id] == 1) {
		Drop_Cooldown[id] --;
		show_hudmessage(id, "Puterea iti va reveni in: %d secunda",Drop_Cooldown[id]);
	}
	if(is_user_alive(id) && Drop_Cooldown[id] > 1) {
		Drop_Cooldown[id] --;
		show_hudmessage(id, "Puterea iti va reveni in: %d secunde",Drop_Cooldown[id]);
	}
	if(Drop_Cooldown[id] <= 0) {
		show_hudmessage(id, "Ti-a revenit puterea");
		ColorChat(id, GREEN,"%s Iti poti folosi din nou puterea .", szPrefix);
		remove_task(id);
		Drop_Cooldown[id] = 0;
	}
	return PLUGIN_HANDLED;
}


////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Freeze |
//==========================================================================================================
public Freeze(id) {
	if (!is_user_alive(id) || Frozen[id]) return;
	
	pev(id, pev_maxspeed, TempSpeed[id]); //get temp speed
	pev(id, pev_gravity, TempGravity[id]); //get temp speed
	fm_set_rendering(id, kRenderFxGlowShell, 0, 100, 200, kRenderNormal, 25);
	engfunc(EngFunc_EmitSound, id, CHAN_BODY, FROSTPLAYER_SND[random_num(0, sizeof FROSTPLAYER_SND - 1)], 1.0, ATTN_NORM, 0, PITCH_NORM);
	message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("ScreenFade"), _, id);
	write_short(UNIT_SECOND*1);
	write_short(floatround(UNIT_SECOND*get_pcvar_float(CvarFreezeDuration)));
	write_short(FFADE_IN);
	write_byte(0);
	write_byte(50);
	write_byte(200);
	write_byte(100);
	message_end();
	if (pev(id, pev_flags) & FL_ONGROUND)
		set_pev(id, pev_gravity, 999999.9);
	else
		set_pev(id, pev_gravity, 0.000001);
	
	Frozen[id] = true;
	set_task(get_pcvar_float(CvarFreezeDuration), "remove_freeze", id);
}

public set_normal(id) {
	set_pev(id, pev_gravity, TempGravity[id]);
	set_pev(id, pev_maxspeed, TempSpeed[id]);
}

public FreezeShowHUD(id) {
	if (!is_user_alive(id) || HasPower[id] != 5) {
		remove_task(id);
		Freeze_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) && Freeze_Cooldown[id] == 1) {
		Freeze_Cooldown[id] --;
		show_hudmessage(id, "Puterea iti va reveni in: %d secunda",Freeze_Cooldown[id]);
	}
	if(is_user_alive(id) && Freeze_Cooldown[id] > 1) {
		Freeze_Cooldown[id] --;
		show_hudmessage(id, "Puterea iti va reveni in: %d secunde",Freeze_Cooldown[id]);
	}
	if(Freeze_Cooldown[id] <= 0) {
		show_hudmessage(id, "Ti-a revenit puterea");
		ColorChat(id, GREEN, "%s Iti poti folosi din nou puterea .", szPrefix);
		remove_task(id);
		Freeze_Cooldown[id] = 0;
	}
	return PLUGIN_HANDLED;
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Drag |
//==========================================================================================================
public DragStart(id) {
	if (HasPower[id] == 6 && !Drag_I[id]) {
		
		if (!is_user_alive(id)) {
			return PLUGIN_HANDLED;
		}
		if (Drag_Cooldown[id]) {
			ColorChat(id, GREEN,"%s Puterea iti va reveni in^4 %d^3 secunde .^4", szPrefix, Drag_Cooldown[id]);
			return PLUGIN_HANDLED;
		}
		new hooktarget, body;
		get_user_aiming(id, hooktarget, body);
		
		if (is_user_alive(hooktarget)) {
			if (get_user_team(id) != get_user_team(hooktarget)) {				
				Hooked[id] = hooktarget;
				emit_sound(hooktarget, CHAN_BODY, DRAG_HIT_SND, 1.0, ATTN_NORM, 0, PITCH_HIGH);
			}
			else {
				return PLUGIN_HANDLED;
			}
			
			if (get_pcvar_float(CvarDragSpeed) <= 0.0)
				CvarDragSpeed = 1;
			
			new parm[2];
			parm[0] = id;
			parm[1] = hooktarget;
			
			set_task(0.1, "DragReelin", id, parm, 2, "b");
			HarpoonTarget(parm);
			Drag_I[id] = true;
			Not_Cooldown[id] = false;
			if(get_pcvar_num(CvarDragUnb2Move) == 1)
				Unable2move[hooktarget] = true;
			
			if(get_pcvar_num(CvarDragUnb2Move) == 2)
				Unable2move[id] = true;
			
			if(get_pcvar_num(CvarDragUnb2Move) == 3) {
				Unable2move[hooktarget] = true;
				Unable2move[id] = true;
			}
		} 
		else {
			Hooked[id] = 33;
			NoTarget(id);
			Not_Cooldown[id] = false;
			set_task(1.0,"DragEnd",id);
			emit_sound(id, CHAN_BODY, DRAG_MISS_SND, 1.0, ATTN_NORM, 0, PITCH_HIGH);
			Drag_I[id] = true;
		}
	}
	else
		return PLUGIN_HANDLED;
	
	return PLUGIN_CONTINUE;
}

public DragShowHUD(id) {
	if (!is_user_alive(id) || HasPower[id] != 6) {
		remove_task(id);
		Drag_Cooldown[id] = 0;
		Not_Cooldown[id] = true;
		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) && Drag_Cooldown[id] == 1) {
		Drag_Cooldown[id] --;
		show_hudmessage(id, "Puterea iti va reveni in: %d secunda",Drag_Cooldown[id]);
	}
	if(is_user_alive(id) && Drag_Cooldown[id] > 1) {
		Drag_Cooldown[id] --;
		show_hudmessage(id, "Puterea iti va reveni in: %d secunde",Drag_Cooldown[id]);
	}
	if(Drag_Cooldown[id] <= 0) {
		show_hudmessage(id, "Ti-a revenit puterea");
		ColorChat(id, GREEN, "%s Iti poti folosi din nou puterea .", szPrefix);
		remove_task(id);
		Drag_Cooldown[id] = 0;
		Not_Cooldown[id] = true;
	}
	return PLUGIN_HANDLED;
}

public DragReelin(parm[]) {
	new id = parm[0];
	new victim = parm[1];
	
	if (!Hooked[id] || !is_user_alive(victim)) {
		DragEnd(id);
		return;
	}
	
	new Float:fl_Velocity[3];
	new idOrigin[3], vicOrigin[3];
	
	get_user_origin(victim, vicOrigin);
	get_user_origin(id, idOrigin);
	
	new distance = get_distance(idOrigin, vicOrigin);
	
	if (distance > 1) {
		new Float:fl_Time = distance / get_pcvar_float(CvarDragSpeed);
		
		fl_Velocity[0] = (idOrigin[0] - vicOrigin[0]) / fl_Time;
		fl_Velocity[1] = (idOrigin[1] - vicOrigin[1]) / fl_Time;
		fl_Velocity[2] = (idOrigin[2] - vicOrigin[2]) / fl_Time;
	}
	else {
		fl_Velocity[0] = 0.0;
		fl_Velocity[1] = 0.0;
		fl_Velocity[2] = 0.0;
	}
	
	entity_set_vector(victim, EV_VEC_velocity, fl_Velocity); //<- rewritten. now uses engine
}

public TakeDamage(victim, inflictor, attacker, Float:damage) { // if take damage drag off
	if (is_user_alive(attacker) && (get_pcvar_num(CvarDragDmg2Stop) > 0)) {
		OvrDmg[victim] = OvrDmg[victim] + floatround(damage);
		if (OvrDmg[victim] >= get_pcvar_num(CvarDragDmg2Stop)) {
			OvrDmg[victim] = 0;
			DragEnd(victim);
			return HAM_IGNORED;
		}
	}
	
	return HAM_IGNORED;
}

public HarpoonTarget(parm[]) { // set beam (ex. tongue:) if target is player
	
	new id = parm[0];
	new hooktarget = parm[1];
	
	message_begin(MSG_BROADCAST, SVC_TEMPENTITY);
	write_byte(8);	// TE_BEAMENTS
	write_short(id);
	write_short(hooktarget);
	write_short(DragSprite);	// sprite index
	write_byte(0);	// start frame
	write_byte(0);	// framerate
	write_byte(200);	// life
	write_byte(8);	// width
	write_byte(1);	// noise
	write_byte(155);	// r, g, b
	write_byte(155);	// r, g, b
	write_byte(55);	// r, g, b
	write_byte(90);	// brightness
	write_byte(10);	// speed
	message_end();
}

public NoTarget(id) { // set beam if target isn't player
	new endorigin[3];
	
	get_user_origin(id, endorigin, 3);
	
	message_begin(MSG_BROADCAST, SVC_TEMPENTITY);
	write_byte(TE_BEAMENTPOINT); // TE_BEAMENTPOINT
	write_short(id);
	write_coord(endorigin[0]);
	write_coord(endorigin[1]);
	write_coord(endorigin[2]);
	write_short(DragSprite); // sprite index
	write_byte(0);	// start frame
	write_byte(0);	// framerate
	write_byte(200);	// life
	write_byte(8);	// width
	write_byte(1);	// noise
	write_byte(155);	// r, g, b
	write_byte(155);	// r, g, b
	write_byte(55);	// r, g, b
	write_byte(75);	// brightness
	write_byte(0);	// speed
	message_end();
}

public PlayerPreThink(id) {
	new button = get_user_button(id);
	new oldbutton = get_user_oldbutton(id);
	
	if (!is_user_alive(id)) {
		return FMRES_IGNORED;
	}
	
	if (Frozen[id]) {
		set_pev(id, pev_velocity, Float:{0.0,0.0,0.0});
		set_pev(id, pev_maxspeed, 1.0) ;
	}
	
	if(HasPower[id] == 6 ) { 
		if (BindUse[id]) {
			if (!(oldbutton & IN_USE) && (button & IN_USE))
				DragStart(id);
			
			if ((oldbutton & IN_USE) && !(button & IN_USE))
				DragEnd(id);
		}
		
		if (!Drag_I[id]) {
			Unable2move[id] = false;
		}
		
		if (Unable2move[id] && get_pcvar_num(CvarDragUnb2Move) > 0) {
			set_pev(id, pev_maxspeed, 1.0);
		}
	}
	return PLUGIN_CONTINUE;
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Teleport |
//==========================================================================================================
public TeleportShowHUD(id) {
	if (!is_user_alive(id) || HasPower[id] != 7) {
		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(Teleport_Cooldown[id] <= 0) {
		show_hudmessage(id, "Ti-a revenit puterea");
		ColorChat(id, GREEN, "%s Iti poti folosi din nou puterea. ", szPrefix);
		remove_task(id);
		Teleport_Cooldown[id] = 0;
	}
	return PLUGIN_HANDLED;
}





////////////////////////////////////////////////////////////////////////////////////////////////////////////
// NoRecoil |
//==========================================================================================================
public Weapon_PrimaryAttack_Pre(entity) {
	new id = pev(entity, pev_owner);
	
	if (HasPower[id] == 8) {
		pev(id, pev_punchangle, cl_pushangle[id]);
		return HAM_IGNORED;
	}
	return HAM_IGNORED;
}

public Weapon_PrimaryAttack_Post(entity) {
	new id = pev(entity, pev_owner);
	
	if ( HasPower[id] == 8) {
		new Float: push[3];
		pev(id, pev_punchangle, push);
		xs_vec_sub(push, cl_pushangle[id], push);
		xs_vec_mul_scalar(push, 0.0, push);
		xs_vec_add(push, cl_pushangle[id], push);
		set_pev(id, pev_punchangle, push);
		return HAM_IGNORED;
	}
	return HAM_IGNORED;
}

// POWERS -------------------------------------------------

public FurienAndAntiFurienDamage ( iVictim, iInflictor, iAttacker, Float:fDamage, iDamageBits )
{
	if( iInflictor == iAttacker && vip_axe_knife [ iAttacker ] && is_user_alive( iAttacker ) && get_user_weapon( iAttacker ) == CSW_KNIFE && cs_get_user_team( iAttacker ) == CS_TEAM_T )
	{
		SetHamParamFloat( 4, fDamage * 5.3);
		return HAM_HANDLED;
	}
	
	if( iInflictor == iAttacker && katana_knife [ iAttacker ] && is_user_alive( iAttacker ) && get_user_weapon( iAttacker ) == CSW_KNIFE && cs_get_user_team( iAttacker ) == CS_TEAM_T )
	{
		SetHamParamFloat( 4, fDamage * 2.8);
		return HAM_HANDLED;
	}
	
	if( iInflictor == iAttacker && double_katana_knife [ iAttacker ] && is_user_alive( iAttacker ) && get_user_weapon( iAttacker ) == CSW_KNIFE && cs_get_user_team( iAttacker ) == CS_TEAM_T )
	{
		SetHamParamFloat( 4, fDamage * 3.3);
		return HAM_HANDLED;
	}
	
	if( iInflictor == iAttacker && super_knife [ iAttacker ] && is_user_alive( iAttacker ) && get_user_weapon( iAttacker ) == CSW_KNIFE && cs_get_user_team( iAttacker ) == CS_TEAM_T )
	{
		SetHamParamFloat( 4, fDamage * 2.0);
		return HAM_HANDLED;
	}
	
	if( iInflictor == iAttacker && infinity_knife [ iAttacker ] && is_user_alive( iAttacker ) && get_user_weapon( iAttacker ) == CSW_KNIFE && cs_get_user_team( iAttacker ) == CS_TEAM_T )
	{
		SetHamParamFloat( 4, fDamage * 1.5 );
		return HAM_HANDLED;
	}
	
	if( iInflictor == iAttacker && super_knife_shop [ iAttacker ] && is_user_alive( iAttacker ) && get_user_weapon( iAttacker ) == CSW_KNIFE && cs_get_user_team( iAttacker ) == CS_TEAM_T )
	{
		SetHamParamFloat( 4, fDamage * 6.0 );
		return HAM_HANDLED;
	}
	
	if( iInflictor == iAttacker && super_knife_shop2 [ iAttacker ] && is_user_alive( iAttacker ) && get_user_weapon( iAttacker ) == CSW_KNIFE && cs_get_user_team( iAttacker ) == CS_TEAM_T )
	{
		SetHamParamFloat( 4, fDamage * 10.0 );
		return HAM_HANDLED;
	}
	
	if( iInflictor == iAttacker && ignes_knife [ iAttacker ] && is_user_alive( iAttacker ) && get_user_weapon( iAttacker ) == CSW_KNIFE && cs_get_user_team( iAttacker ) == CS_TEAM_T )
	{
		SetHamParamFloat( 4, fDamage * 4.0 );
		return HAM_HANDLED;
	}
	
	if( iInflictor == iAttacker && elf_knife [ iAttacker ] && is_user_alive( iAttacker ) && get_user_weapon( iAttacker ) == CSW_KNIFE && cs_get_user_team( iAttacker ) == CS_TEAM_T )
	{
		SetHamParamFloat( 4, fDamage * 4.5 );
		return HAM_HANDLED;
	}
	
	if( iInflictor == iAttacker && hunter [ iAttacker ] && is_user_alive( iAttacker ) && get_user_weapon( iAttacker ) == CSW_P90 && cs_get_user_team( iAttacker ) == CS_TEAM_CT )
	{
		SetHamParamFloat( 4, fDamage * 1.5 );
		return HAM_HANDLED;
	}
	
	if( iInflictor == iAttacker && mage [ iAttacker ] && is_user_alive( iAttacker ) && get_user_weapon( iAttacker ) == CSW_GALIL && cs_get_user_team( iAttacker ) == CS_TEAM_CT )
	{
		SetHamParamFloat( 4, fDamage * 2.0 );
		return HAM_HANDLED;
	}
	
	if( iInflictor == iAttacker && rogue [ iAttacker ] && is_user_alive( iAttacker ) && get_user_weapon( iAttacker ) == CSW_FAMAS && cs_get_user_team( iAttacker ) == CS_TEAM_CT )
	{
		SetHamParamFloat( 4, fDamage * 2.5 );
		return HAM_HANDLED;
	}
	
	if( iInflictor == iAttacker && shaman [ iAttacker ] && is_user_alive( iAttacker ) && get_user_weapon( iAttacker ) == CSW_SG552 && cs_get_user_team( iAttacker ) == CS_TEAM_CT )
	{
		SetHamParamFloat( 4, fDamage * 2.5 );
		return HAM_HANDLED;
	}
	
	if( iInflictor == iAttacker && thompson [ iAttacker ] && is_user_alive( iAttacker ) && get_user_weapon( iAttacker ) == CSW_P90 && cs_get_user_team( iAttacker ) == CS_TEAM_CT )
	{
		SetHamParamFloat( 4, fDamage * 3.0 );
		return HAM_HANDLED;
	}
	
	if( iInflictor == iAttacker && warrior [ iAttacker ] && is_user_alive( iAttacker ) && get_user_weapon( iAttacker ) == CSW_P90 && cs_get_user_team( iAttacker ) == CS_TEAM_CT )
	{
		SetHamParamFloat( 4, fDamage * 2.0 );
		return HAM_HANDLED;
	}
	
	if( iInflictor == iAttacker && deklowaz [ iAttacker ] && is_user_alive( iAttacker ) && get_user_weapon( iAttacker ) == CSW_P90 && cs_get_user_team( iAttacker ) == CS_TEAM_CT )
	{
		SetHamParamFloat( 4, fDamage * 3.0 );
		return HAM_HANDLED;
	}
	
	if( iInflictor == iAttacker && dual_mp5 [ iAttacker ] && is_user_alive( iAttacker ) && get_user_weapon( iAttacker ) == CSW_MP5NAVY && cs_get_user_team( iAttacker ) == CS_TEAM_CT )
	{
		SetHamParamFloat( 4, fDamage * 2.0 );
		return HAM_HANDLED;
	}
	
	if( iInflictor == iAttacker && strike_grenade [ iAttacker ] && is_user_alive( iAttacker ) && get_user_weapon( iAttacker ) == CSW_HEGRENADE && cs_get_user_team( iAttacker ) == CS_TEAM_T )
	{
		SetHamParamFloat( 4, fDamage * 4.0 );
		return HAM_HANDLED;
	}
	
	if( iInflictor == iAttacker && strike_grenade2 [ iAttacker ] && is_user_alive( iAttacker ) && get_user_weapon( iAttacker ) == CSW_HEGRENADE && cs_get_user_team( iAttacker ) == CS_TEAM_T )
	{
		SetHamParamFloat( 4, fDamage * 5.0 );
		return HAM_HANDLED;
	}
	
	if( iInflictor == iAttacker && strike_grenade3 [ iAttacker ] && is_user_alive( iAttacker ) && get_user_weapon( iAttacker ) == CSW_HEGRENADE && cs_get_user_team( iAttacker ) == CS_TEAM_T )
	{
		SetHamParamFloat( 4, fDamage * 6.0 );
		return HAM_HANDLED;
	}
	
	return HAM_IGNORED;
} 

public Depozit(id) {
	if(cs_get_user_money(id) >= 16000) {
		ColorChat ( id, GREEN, "%s Ai depozitat^4 16000^3 si ai primit^4 1^3 credit .^4", szPrefix );
		set_user_credits(id, get_user_credits(id) + 1);
		cs_set_user_money(id, cs_get_user_money(id) - 16000);
	}
	else {
		ColorChat ( id, GREEN, "%s Ai nevoie de ^4 16000 $^3 pentru a depozita .^4", szPrefix );
	}
	return PLUGIN_HANDLED;
}

public Retrage(id) {
	if(cs_get_user_money(id) >= 16000) {
		ColorChat ( id, GREEN, "%s Detii deja^4 16000 $^3", szPrefix );
	}
	else if(PlayerCredits[id]) {
		ColorChat ( id, GREEN, "%s Ai retras^4 1^3 credit, mai ai^4 %d^3 credite .", szPrefix, PlayerCredits [ id ] - 1 );
		set_user_credits(id, get_user_credits(id) - 1);
		cs_set_user_money(id, cs_get_user_money(id) + 16000);
	}
	else {
		ColorChat ( id, GREEN, "%s Ai nevoie de^4 1^3 credti pentru a putea retrage .^4", szPrefix );
	}
	return PLUGIN_HANDLED;
}

public Show_Credits(id) {
	set_hudmessage(0, 128, 0, 0.03, 0.86, 2, 6.0, 5.0);
	show_hudmessage(id, "Ai %d Credite.", PlayerCredits[id]);
	ColorChat ( id, GREEN, "%s Detii^4 %d^3 credite .^4", szPrefix, PlayerCredits [ id ] );
	return PLUGIN_HANDLED;
}

public Give_Credits(id, level, cid) {
	if(!cmd_access(id, level, cid, 2)) {
		return PLUGIN_HANDLED;
	}
	new arg[23], gplayers[32], num, i, players, name[32];
	get_user_name(id, name, 31);
	read_argv(1, arg, 23);
	new give_credits[5];
	read_argv(2, give_credits, charsmax(give_credits));
	new Credits = str_to_num(give_credits);
	if(equali(arg, "@T") || equali ( arg, "t" ) ) {
		get_players(gplayers, num, "e", "TERRORIST");
		for(i = 0; i < num; i++) {
			players = gplayers[i];
			if(!is_user_connected(players))
				continue;
			set_user_credits(players, get_user_credits(players) + Credits);
			SaveData(id);
		}
		switch(get_cvar_num("amx_show_activity")) {
			case 1: ColorChat(0, GREEN, "^x03ADMIN^x04 give^x03 %i Credits^x04 to all^x03 Ts.", Credits);
				case 2: ColorChat(0, GREEN, "^x03%s^x04 give^x03 %i Credits^x04 to all^x03 Ts.", name, Credits);
			}
	}
	else if(equali(arg, "@CT") || equali ( arg, "ct" ) ) {
		get_players(gplayers, num, "e", "CT");
		for(i = 0; i < num; i++) {
			players = gplayers[i];
			if(!is_user_connected(players))
				continue;
			set_user_credits(players, get_user_credits(players) + Credits);
			SaveData(id);
		}
		switch(get_cvar_num("amx_show_activity")) {
			case 1: ColorChat(0, GREEN, "^x03ADMIN^x04 give^x03 %i Credits^x04 to all^x03 CTs.", Credits);
				case 2: ColorChat(0, GREEN, "^x03%s^x04 give^x03 %i Credits^x04 to all^x03 CTs.", name, Credits);
			}
	}
	if(equali(arg, "@All") || equali ( arg, "all" ) ) {
		get_players(gplayers, num, "a");
		for(i = 0; i < num; i++) {
			players = gplayers[i];
			if(!is_user_connected(players))
				continue;
			set_user_credits(players, get_user_credits(players) + Credits);
			SaveData(id);
		}
		switch(get_cvar_num("amx_show_activity")) {
			case 1: ColorChat(0, GREEN, "^x03ADMIN^x04 give^x03 %i Credits^x04 to all^x03 Players.", Credits);
				case 2: ColorChat(0, GREEN, "^x03%s^x04 give^x03 %i Credits^x04 to all^x03 Players.", name, Credits);
			}
	}
	new player = cmd_target(id, arg, 11);
	if(!player) {
		return PLUGIN_HANDLED;
	}
	set_user_credits(player, get_user_credits(player) + Credits);
	SaveData(id);
	switch(get_cvar_num("amx_show_activity")) {
		case 1: ColorChat(player, GREEN, "^x03ADMIN^x04 give your^x03 %i Credits.", Credits);
			case 2: ColorChat(player, GREEN, "^x03%s^x04 give your^x03 %i Credits.", name, Credits);
		}
	return PLUGIN_HANDLED;
}

public Reset_Credits(id, level, cid) {
	if(!cmd_access(id, level, cid, 2)) {
		return PLUGIN_HANDLED;
	}
	new arg[23], gplayers[32], num, i, players, name[32];
	get_user_name(id, name, 31);
	read_argv(1, arg, 23);
	if(equali(arg, "@T")) {
		get_players(gplayers, num, "e", "TERRORIST");
		for(i = 0; i < num; i++) {
			players = gplayers[i];
			if(!is_user_connected(players))
				continue;
			PlayerCredits [ players ] = 0;
		}
		switch(get_cvar_num("amx_show_activity")) {
			case 1: ColorChat(0, GREEN, "^x03ADMIN^x04 reset^x03 Credits^x04 to all^x03 Ts.");
				case 2: ColorChat(0, GREEN, "^x03%s^x04 reset^x03 Credits^x04 to all^x03 Ts.", name);
			}
	}
	
	else if(equali(arg, "@CT")) {
		get_players(gplayers, num, "e", "CT");
		for(i = 0; i < num; i++) {
			players = gplayers[i];
			if(!is_user_connected(players))
				continue;
			PlayerCredits [ players ] = 0;
		}
		switch(get_cvar_num("amx_show_activity")) {
			case 1: ColorChat(0, GREEN, "^x03ADMIN^x04 reset^x03 %i Credits^x04 to all^x03 CTs.");
				case 2: ColorChat(0, GREEN, "^x03%s^x04 reset^x03 %i Credits^x04 to all^x03 CTs.", name);
			}
	}
	if(equali(arg, "@All")) {
		get_players(gplayers, num, "a");
		for(i = 0; i < num; i++) {
			players = gplayers[i];
			if(!is_user_connected(players))
				continue;
			PlayerCredits [ players ] = 0;
		}
		switch(get_cvar_num("amx_show_activity")) {
			case 1: ColorChat(0, GREEN, "^x03ADMIN^x04 reset^x03 Credits^x04 to all^x03 Players.");
				case 2: ColorChat(0, GREEN, "^x03%s^x04 resetx03 Credits^x04 to all^x03 Players.", name);
			}
	}
	new player = cmd_target(id, arg, 11);
	if(!player) {
		return PLUGIN_HANDLED;
	}
	PlayerCredits [ player ] = 0;
	switch(get_cvar_num("amx_show_activity")) {
		case 1: ColorChat(player, GREEN, "^x03ADMIN^x04 reset your^x03 Credits.");
			case 2: ColorChat(player, GREEN, "^x03%s^x04 reset your^x03 Credits.", name);
		}
	return PLUGIN_HANDLED;
}

stock set_player_nextattack(player, weapon_id, Float:NextTime)
{
	const m_flNextPrimaryAttack_dc = 46
	const m_flNextSecondaryAttack_dc = 47
	const m_flTimeWeaponIdle_dc = 48
	const m_flNextAttack_dc = 83
	
	static weapon
	weapon = fm_get_user_weapon_entity(player, weapon_id)
	
	set_pdata_float(player, m_flNextAttack_dc, NextTime, 5)
	if(pev_valid(weapon))
	{
		set_pdata_float(weapon, m_flNextPrimaryAttack_dc , NextTime, 4)
		set_pdata_float(weapon, m_flNextSecondaryAttack_dc, NextTime, 4)
		set_pdata_float(weapon, m_flTimeWeaponIdle_dc, NextTime, 4)
	}
}

//get weapon id
stock get_weapon_ent(id,wpnid=0,wpnName[]="") {
	// who knows what wpnName will be
	static newName[24];
	
	// need to find the name
	if(wpnid) get_weaponname(wpnid,newName,23);
	
	// go with what we were told
	else formatex(newName,23,"%s",wpnName);
	
	// prefix it if we need to
	if(!equal(newName,"weapon_",7))
		format(newName,23,"weapon_%s",newName);
	
	return fm_find_ent_by_owner(get_maxplayers(),newName,id);
} 

// Blood and bodyparts
stock create_blood(const Float:origin[3]) {
	// Head
	message_begin(MSG_BROADCAST,SVC_TEMPENTITY)
	write_byte(TE_MODEL)
	engfunc(EngFunc_WriteCoord, origin[0])
	engfunc(EngFunc_WriteCoord, origin[1])
	engfunc(EngFunc_WriteCoord, origin[2])
	write_coord(random_num(-100,100))
	write_coord(random_num(-100,100))
	write_coord(random_num(100,200))
	write_angle(random_num(0,360))
	write_short(mdl_gib_head) // Sprite index
	write_byte(0) // bounce
	write_byte(500) // life
	message_end()
	
	// Spine
	message_begin(MSG_BROADCAST,SVC_TEMPENTITY)
	write_byte(TE_MODEL)
	engfunc(EngFunc_WriteCoord, origin[0])
	engfunc(EngFunc_WriteCoord, origin[1])
	engfunc(EngFunc_WriteCoord, origin[2])
	write_coord(random_num(-100,100))
	write_coord(random_num(-100,100))
	write_coord(random_num(100,200))
	write_angle(random_num(0,360))
	write_short(mdl_gib_spine)
	write_byte(0) // bounce
	write_byte(500) // life
	message_end()
	
	// Lung
	for(new i = 0; i < random_num(1,2); i++) 
	{
		message_begin(MSG_BROADCAST,SVC_TEMPENTITY)
		write_byte(TE_MODEL)
		engfunc(EngFunc_WriteCoord, origin[0])
		engfunc(EngFunc_WriteCoord, origin[1])
		engfunc(EngFunc_WriteCoord, origin[2])
		write_coord(random_num(-100,100))
		write_coord(random_num(-100,100))
		write_coord(random_num(100,200))
		write_angle(random_num(0,360))
		write_short(mdl_gib_lung)
		write_byte(0) // bounce
		write_byte(500) // life
		message_end()
	}
	
	// Parts, 10 times
	for(new i = 0; i < 10; i++) 
	{
		message_begin(MSG_BROADCAST,SVC_TEMPENTITY)
		write_byte(TE_MODEL)
		engfunc(EngFunc_WriteCoord, origin[0])
		engfunc(EngFunc_WriteCoord, origin[1])
		engfunc(EngFunc_WriteCoord, origin[2])
		write_coord(random_num(-100,100))
		write_coord(random_num(-100,100))
		write_coord(random_num(100,200))
		write_angle(random_num(0,360))
		write_short(mdl_gib_flesh)
		write_byte(0) // bounce
		write_byte(500) // life
		message_end()
	}
	
	// Blood
	for(new i = 0; i < 3; i++) 
	{
		new x,y,z
		x = random_num(-100,100)
		y = random_num(-100,100)
		z = random_num(0,100)
		for(new j = 0; j < 3; j++)
		{
			message_begin(MSG_BROADCAST,SVC_TEMPENTITY)
			write_byte(TE_BLOODSPRITE)
			engfunc(EngFunc_WriteCoord, origin[0]+(x*j))
			engfunc(EngFunc_WriteCoord, origin[1]+(y*j))
			engfunc(EngFunc_WriteCoord, origin[2]+(z*j))
			write_short(blood_spray)
			write_short(blood_drop)
			write_byte(229) // color index
			write_byte(15) // size
			message_end()
		}
	}
}
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:

21 May 2013, 21:42

AskWrite wrote:
| Afiseaza codul
#include < amxmodx >
#include < amxmisc>
#include < nvault > 
#include < engine >
#include < cstrike >
#include < hamsandwich >
#include < fakemeta >
#include < fakemeta_util >
#include < fun >
#include < csx >
#include < xs >
#include < colorchat >
#include < dhudmessage >

#define PLUGIN "Furien XP Mod"
#define VERSION "0.0.1"
#define AUTHOR "hadesownage"

#define is_ent_flare(%1) (pev(%1, pev_iuser4) == 1337) ? 1 : 0

new const szPrefix [ ] = "[Furien XP Mod]^3 -";
new Level [ 33 ], eXP [ 33 ];
new KillXp, HsXp, HeXp, KnifeXp;
new g_Menu [ 33 ];
new g_iCount[ 33 ];
new g_trail;
new amx_gamename;
#define TE_SPRITETRAIL 15
new g_damage;
new g_damages;

new gFurienXP, Vault;

new g_MaxPlayers;

new g_FuriensWin = 0;
new g_AntiFuriensWin = 0;

new gMsgScreenShake;

new g_FurienHealth;
new g_AntiFurienHealth;

#define VIP_ACCESS ADMIN_LEVEL_H

new bool:UserHaveHpAndAp [ 33 ];
new bool:UserHaveHeGrenade [ 33 ];
new bool:UserHaveGodMode [ 33 ];
new bool:UserHaveNoClip [ 33 ];
new bool:UserHaveTeleport [ 33 ];
new bool:UserHaveSuperKnife [ 33 ];
new bool:UserHaveDualMp5 [ 33 ];

new bool:UserHasChoosed [ 33 ];
new bool:g_CanUseHe [ 33 ];

new const buy_FurienHealth[] = "exhealth/zm_buyhealth.wav" 
new const buy_AntiFurienHealth[] = "exhealth/hm_buyhealth.wav" 

static const COLOR[] = "^x04"; //green
static const CONTACT[] = "/vip pentru detalii";

new maxplayers;
new gmsgSayText;
new g_ScoreAttrib;

//======NICK CHANGE-----
new const g_reason[] = "Nu este permisa schimbarea nickului pe server !";

new const g_name[] = "name";
//-------END NICK=====

//======CREDITS-----
new PlayerCredits[10000];
new SymbolsName;
//-------END CREDITS=====

//-------POWERS======

//--| Menu/Power |--//
new HasPower[33], bool:HasChose[33];
//--| HE Grenade |--//
new HE_Cooldown[33] = 0;
//--| GodMode |--//
new GodMode_Cooldown[33] = 0;
new GodMode_DurationCooldown[33] = 0;
//--| Drop Enemy Weapon |--//
new DropSprite, DropSprite2;
new Drop_Cooldown[33] = 0;
new const DROP_HIT_SND[] = "Furien/DropWpn_HIT.wav";
const WPN_NOT_DROP = ((1<<2)|(1<<CSW_HEGRENADE)|(1<<CSW_SMOKEGRENADE)|(1<<CSW_FLASHBANG)|(1<<CSW_KNIFE)|(1<<CSW_C4));
//--| Freeze |--//
new Freeze_Cooldown[33] = 0;
new FreezeSprite, FreezeSprite3;
new Frozen[33];
new Float:TempSpeed[33], Float:TempGravity[33];
new const FreezeSprite2[] = { "models/glassgibs.mdl" };
new const FROSTBREAK_SND[][] = { "Furien/FrostBreak.wav" };
new const FROSTPLAYER_SND[][] = { "Furien/FrostPlayer.wav" };
const BREAK_GLASS = 0x01;
const UNIT_SECOND = (1<<12);
const FFADE_IN = 0x0000;
//--| Drag |--//
new DRAG_MISS_SND[] = "Furien/DragMiss.wav";
new DRAG_HIT_SND[] = "Furien/DragHit.wav";
new Hooked[33], Unable2move[33], OvrDmg[33];
new Float:LastHook[33];
new bool: BindUse[33] = false, bool: Drag_I[33] = false;
new Drag_Cooldown[33] = 0;
new bool:Not_Cooldown[33];
new DragSprite;
//--| Teleport |--//
new TeleportSprite, TeleportSprite2, TeleportSprite3;
new Teleport_Cooldown[33];
new const SOUND_BLINK[] = { "weapons/flashbang-1.wav" };
const UNIT_SEC = 0x1000;
const FFADE = 0x0000;
//--| NoRecoil |--//
new Float: cl_pushangle[33][3];
const WEAPONS_BITSUM = (1<<CSW_KNIFE|1<<CSW_HEGRENADE|1<<CSW_FLASHBANG|1<<CSW_SMOKEGRENADE|1<<CSW_C4);
//--| Cvars |--//
new CvarDropDistance,
CvarDropCooldown, CvarFreezeDuration, CvarFreezeCooldown, CvarFreezeDistance, CvarDragSpeed, CvarDragCooldown,
CvarDragDmg2Stop, CvarDragUnb2Move, CvarTeleportCooldown, CvarTeleportRange;

//-------END POWERS=====

//-------SALAMANDER=====
new const fire_classname[] = "fire_salamander";
new const fire_spr_name[] = "sprites/fire_salamander.spr";

new const v_model[] = "models/furien/v_salamander.mdl";
new const p_model[] = "models/furien/p_salamander.mdl";
new const w_model[] = "models/furien/w_salamander.mdl";

new const fire_sound[] = "weapons/flamegun-2.wav";

#define CSW_SALAMANDER CSW_M249
#define PEV_ENT_TIME pev_fuser1
#define TASK_FIRE 3123123
#define TASK_RELOAD 2342342
new g_had_salamander[33], bool:is_firing[33], bool:is_reloading[33], Float:g_last_fire[33],
bool:can_fire[33], g_reload_ammo[33], g_ammo[33];

enum {
	IDLE_ANIM = 0,
	DRAW_ANIM = 4,
	RELOAD_ANIM = 3,
	SHOOT_ANIM = 1,
	SHOOT_END_ANIM = 2
}

new g_salamander;
new cvar_dmgrd_start, cvar_dmgrd_end, cvar_fire_delay, cvar_max_clip;

//-------END SALAMANDER=======

//---------FURIEN BONUS BOX======

new CvarFurienSpeed, CvarAntiFurienSpeed;
new bool:HasSpeed[33], bool:HasTeleport[33], bool:LowSpeed [ 33 ];
new const ClassName[] = "BonusBox"
new Model[2][] = {
	"models/furien/cadout_new.mdl",
	"models/furien/cadouct.mdl"
}

new Model_Yellow[2][] = {
	"models/furien/cadout_galben.mdl",
	"models/furien/cadouct_galben.mdl"
}

const UNIT_SEC = 0x1000
const FFADE = 0x0000

#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
enum {
	Red,
	Green,
	Blue
};

//---------END FURIEN BONUS BOX======

//---------K1ASUS WEAPON ( SCORPION )======

#define ENG_NULLENT		-1
#define EV_INT_WEAPONKEY	EV_INT_impulse
#define k1ases_WEAPONKEY	890
#define MAX_PLAYERS  			  32
#define IsValidUser(%1) (1 <= %1 <= g_MaxPlayers)
#define write_coord_f(%1)	engfunc(EngFunc_WriteCoord,%1)

const USE_STOPPED = 0
const OFFSET_ACTIVE_ITEM = 373
const OFFSET_WEAPONOWNER = 41
const OFFSET_LINUX = 4
const OFFSET_LINUX_WEAPONS = 4

#define WEAP_LINUX_XTRA_OFF			4
#define m_fKnown				44
#define m_flNextPrimaryAttack 			46
#define m_flTimeWeaponIdle			48
#define m_iClip					51
#define m_fInReload				54
#define PLAYER_LINUX_XTRA_OFF			4
#define m_flNextAttack				83

#define k1ases_RELOAD_TIME 2.5

new bool:k1ases_weapon [ 33 ];

new const Fire_Sounds[][] = { "weapons/k1ar-1.wav" }
new const sprites_exp[] = "sprites/deimosexp.spr"
new const explode_sound[] = "cso/deimos_skill_start.wav"

new const GUNSHOT_DECALS[] = { 41, 42, 43, 44, 45 }
new k1ases_V_MODEL[64] = "models/furien/v_k1ases.mdl"
new k1ases_P_MODEL[64] = "models/furien/p_k1ases.mdl"
new k1ases_W_MODEL[64] = "models/furien/w_k1ases.mdl"

new cvar_dmg_k1ases, cvar_recoil_k1ases, cvar_clip_k1ases, cvar_k1ases_ammo , cvar_k1asesammo , cvar_k1ases_delay , cvar_k1ases_claw , cvar_rad
new g_orig_event_k1ases, g_clip_ammo[33] , cvar_k1ases_fire
new Float:cl_pushangle_k1asus[MAX_PLAYERS + 1][3], m_iBlood[2]
new g_k1ases_TmpClip[33] , oldweap[33] ,  g_has_k1ases[33] , g_ammoclaw[33] , g_delay[33]

new sprites_exp_index

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)
new const WEAPONENTNAMES[][] = { "", "weapon_p228", "", "weapon_scout", "weapon_hegrenade", "weapon_xm1014", "weapon_c4", "weapon_mac10",
	"weapon_aug", "weapon_smokegrenade", "weapon_elite", "weapon_fiveseven", "weapon_ump45", "weapon_sg550",
	"weapon_galil", "weapon_famas", "weapon_usp", "weapon_glock18", "weapon_awp", "weapon_mp5navy", "weapon_m249",
	"weapon_m3", "weapon_m4a1", "weapon_tmp", "weapon_g3sg1", "weapon_flashbang", "weapon_deagle", "weapon_sg552",
"weapon_ak47", "weapon_knife", "weapon_p90" }

//---------END K1ASUS WEAPON ( SCORPION )======

//---------QUAD BARREL======

#define m_pPlayer				41
#define m_flNextPrimaryAttack		46
#define m_flNextSecondaryAttack	47
#define m_flTimeWeaponIdle		48
#define m_iClip				51
#define m_fInReload				54
#define m_fInSpecialReload		55

#define XTRA_OFS_WEAPON			4
#define XTRA_OFS_PLAYER		5
#define m_flNextAttack		83
#define m_rgAmmo_player_Slot0	376

new const qb_v_model[] = "models/furien/v_qbarrel.mdl"
new const qb_p_model[] = "models/furien/p_qbarrel.mdl"
new const qb_w_model[] = "models/furien/w_qbarrel.mdl"

new const qb_sound[5][] = {
	"weapons/qbarrel_clipin1.wav",
	"weapons/qbarrel_clipin2.wav",
	"weapons/qbarrel_clipout1.wav",
	"weapons/qbarrel_draw.wav",
	"weapons/qbarrel_shoot.wav"
}

#define CSW_QB CSW_XM1014
new g_had_qb[33], Float:g_last_fire_qb[33], Float:g_last_fire2[33], g_bloodspray, g_blood
new cvar_default_clip, cvar_delayattack, cvar_reloadtime, cvar_randmg_start, cvar_randmg_end
new g_quad_barrel

//---------END QUAD BARREL======

//---------DRAGON CANNON======

#define CSW_CANNON CSW_UMP45
#define weapon_cannon "weapon_ump45"

#define DEFAULT_W_MODEL "models/w_ump45.mdl"
#define WEAPON_SECRET_CODE 4965
#define CANNONFIRE_CLASSNAME "cannon_round"

// Fire Start
#define WEAPON_ATTACH_F 30.0
#define WEAPON_ATTACH_R 10.0
#define WEAPON_ATTACH_U -10.0

#define TASK_RESET_AMMO 5434

const pev_ammo = pev_iuser4

new const WeaponModel[3][] = {
	"models/furien/v_cannon.mdl",
	"models/furien/p_cannon.mdl",
	"models/furien/w_cannon.mdl"
}

new const WeaponSound[2][] = {
	"weapons/cannon-1.wav",
	"weapons/cannon_draw.wav"
}

new const WeaponResource[5][] = {
	"sprites/fire_cannon.spr",
	"sprites/weapon_cannon.txt",
	"sprites/640hud69.spr",
	"sprites/640hud2_cso.spr",
	"sprites/smokepuff.spr"
}

enum {
	MODEL_V = 0,
	MODEL_P,
	MODEL_W
}

enum {
	CANNON_ANIM_IDLE = 0,
	CANNON_ANIM_SHOOT1,
	CANNON_ANIM_SHOOT2,
	CANNON_ANIM_DRAW
}

new g_had_cannon[33], g_old_weapon[33], g_cannon_ammo[33], g_got_firsttime[33], Float:g_lastshot[33]
new g_cvar_defaultammo, g_cvar_reloadtime, g_cvar_firespeed, g_cvar_radiusdamage, g_cvar_damage
new Float:g_temp_reloadtime, g_smokepuff_id

//---------END DRAGON CANNON======

//---------M79 WEAPON======

#define HUD_HIDE_CROSS (1<<6)

// Weapon/Grenade models
new const m79_P_MODEL[] = "models/furien/p_m79.mdl"
new const m79_V_MODEL[] = "models/furien/v_m79fix2.mdl"
new const m79_W_MODEL[] = "models/furien/w_m79.mdl"
new const m79_GRENADE_MODEL[] = "models/grenade.mdl"

// Fire sound
new const m79_GRENADE_SHOOT[] = "weapons/m79_fire1.wav"
new const m79_GRENADE_CLIPIN[] = "weapons/m79_clipin.wav"
new const m79_GRENADE_CLIPON[] = "weapons/m79_clipon.wav"
new const m79_GRENADE_CLIPOUT[] = "weapons/m79_clipout.wav"
new const m79_GRENADE_DRAW[] = "weapons/m79_draw.wav"

// Sprites
new const m79_GRENADE_TRAIL[] = "sprites/laserbeam.spr"
new const m79_GRENADE_EXPLOSION[] = "sprites/m79_exp.spr"
new const m79_GRENADE_SMOKE[] = "sprites/black_smoke3.spr"

// Cached sprite indexes
new sTrail, sExplo, sSmoke

// Sprites
new gmsgWeaponList

// Bodyparts and blood
new mdl_gib_flesh, mdl_gib_head, mdl_gib_lung, mdl_gib_spine,
blood_drop, blood_spray

// Item ID
new m79

// Player variables
new g_hasM79[33] // whether player has M79
new g_FireM79[33] // player is shooting
new g_canShoot[33] // player can shoot
new Float:g_last_shot_time[33] // last shot time
new grenade_count[33] // current grenade count
new bool:draw_wpn[33] //выбираем пукалку
new bool:hasOnHandM79[33],bool:canfire[33],
cvar_granade_damage_radius,
cvar_granade_max_damage
// Message ID's
new g_msgScreenShake,g_msgStatusText
new gmsgDeathMsg, gmsgScoreInfo

// Customization(CHANGE HERE)
#define LAUNCHER_COST	20
new Float:delayshot = 3.0
// Tasks
#define TASK_HUDAMMO	    1337
#define TASK_FRSTSHT	    1437
#define ID_HUDAMMO (taskid - TASK_HUDAMMO)
#define ID_SHT (taskid - TASK_FRSTSHT)

enum {
	anim_idle,
	anim_shot1,
	anim_shot2,
	anim_draw,
}

//---------END M79 WEAPON======

new dual_mp5_v_model [ 66 ] = "models/furien/weapons/v_dualmp5.mdl";
new dual_mp5_p_model [ 66 ] = "models/furien/weapons/p_dualmp5.mdl";

new infinity_knife_v_model [ 66 ] = "models/furien/knifes/v_infinity_knife1.mdl";
new infinity_knife_p_model [ 66 ] = "models/furien/knifes/p_infinity_knife1.mdl";

new katana_knife_v_model [ 66 ] = "models/furien/knifes/v_katana.mdl";
new katana_knife_p_model [ 66 ] = "models/furien/knifes/p_katana.mdl";

new double_katana_v_knife_model [ 66 ] = "models/furien/knifes/v_double_katana.mdl";
new double_katana_p_knife_model [ 66 ] = "models/furien/knifes/p_double_katana.mdl";

new super_knife_v_model [ 66 ] = "models/furien/knifes/v_natad.mdl";
new super_knife_p_model [ 66 ] = "models/furien/knifes/p_natad.mdl";

new axe_knife_v_model [ 66 ] = "models/furien/knifes/v_vipaxe.mdl";
new axe_knife_p_model [ 66 ] = "models/furien/knifes/p_vipaxe.mdl";

new trainer_v_model [ 66 ] = "models/furien/knifes/v_combatknife.mdl";
new trainer_p_model [ 66 ] = "models/furien/knifes/p_combatknife.mdl";

new ignes_knife_model [ 66 ] = "models/furien/knifes/v_ignes.mdl";
new elf_knife_model [ 66 ] = "models/furien/knifes/v_elf.mdl";

new super_knife_shop_v_model [ 66 ] = "models/furien/knifes/v_superknife_shop.mdl";
// new super_knife_shop_p_model [ 66 ] = "models/furien/knifes/p_superknife_shop.mdl";

new super_knife_shop_v_model2 [ 66 ] = "models/furien/knifes/v_superknife_shop2.mdl";
new super_knife_shop_p_model2 [ 66 ] = "models/furien/knifes/p_superknife_shop2.mdl";

new thompson_v_model [ 66 ] = "models/furien/weapons/v_thompson.mdl";
new thompson_p_model [ 66 ] = "models/furien/weapons/p_thompson.mdl";

new uspx_v_model [ 66 ] = "models/furien/weapons/v_uspx.mdl";
new uspx_p_model [ 66 ] = "models/furien/weapons/p_uspx.mdl";

new hunter_v_model [ 66 ] = "models/furien/weapons/v_f2000.mdl";
new hunter_p_model [ 66 ] = "models/furien/weapons/p_f2000.mdl";

new mage_v_model [ 66 ] = "models/furien/weapons/v_fnc.mdl";
new mage_p_model [ 66 ] = "models/furien/weapons/p_fnc.mdl";

new rogue_v_model [ 66 ] = "models/furien/weapons/v_svdex.mdl";
new rogue_p_model [ 66 ] = "models/furien/weapons/p_svdex.mdl";

new shaman_v_model [ 66 ] = "models/furien/weapons/v_tar21.mdl";
new shaman_p_model [ 66 ] = "models/furien/weapons/p_tar21.mdl";

new warrior_v_model [ 66 ] = "models/furien/weapons/v_kriss.mdl";
new warrior_p_model [ 66 ] = "models/furien/weapons/p_kriss.mdl";

new deklowaz_v_model [ 66 ] = "models/furien/weapons/v_dualkriss.mdl";
new deklowaz_p_model [ 66 ] = "models/furien/weapons/p_dualkriss.mdl";

new flare_v_model [ 66 ] = "models/furien/weapons/v_flare.mdl";
new flare_w_model [ 66 ] = "models/furien/weapons/w_flare.mdl";

new strike_grenade_v_model [ 66 ] = "models/furien/weapons/v_hegrenade.mdl";
new strike_grenade_p_model [ 66 ] = "models/furien/weapons/p_hegrenade.mdl";

new bool:dual_mp5 [ 33 ];
new bool:salamander [ 33 ];
new bool:SalamanderLimit [ 33 ];
new bool:katana_knife [ 33 ];
new bool:double_katana_knife [ 33 ];
new bool:super_knife [ 33 ];
new bool:infinity_knife [ 33 ];
new bool:ignes_knife [ 33 ];
new bool:elf_knife [ 33 ];
new bool:trainer [ 33 ];
new bool:vip_axe_knife [ 33 ];
new bool:hunter [ 33 ];
new bool:mage [ 33 ];
new bool:rogue [ 33 ];
new bool:shaman [ 33 ];
new bool:warrior [ 33 ];
new bool:deklowaz [ 33 ];
new bool:thompson [ 33 ];
new bool:uspx [ 33 ];
new bool:flare [ 33 ];
new bool:druid [ 33 ];
new bool:strike_grenade [ 33 ];
new bool:strike_grenade2 [ 33 ];
new bool:strike_grenade3 [ 33 ];
new bool:super_knife_shop [ 33 ];
new bool:super_knife_shop2 [ 33 ];
new bool:UserHaveQuad [ 33 ];
new bool:UserHaveDragon [ 33 ];
new bool:UserHaveM79 [ 33 ];

new const Levels [ 30 ] =  {
	
	70, //1
	150, //2
	200, //3
	300, //4
	380, //5
	500, //6
	550, //7
	650, //8
	800, //9
	900, //10
	1000, //11
	1200, //12
	1400, //13
	1650, //14
	1800, //15
	2000, //16
	2300, //17
	2600, //18
	3000, //19
	3300, //20
	3600, //21
	4000, //22
	4300, //23
	4900, //24
	5400, //25
	6000, //26
	6500, //27
	7000, //28
	7700, //29
	8000 //30
};

new const Prefix [ 30 +2 ] [ ] = {
	
	"0",
	"1",
	"2",
	"3",
	"4",
	"5",
	"6",
	"7",
	"8",
	"9",
	"10",
	"11",
	"12",
	"13",
	"14",
	"15",
	"16",
	"17",
	"18",
	"19",
	"20",
	"21",
	"22",
	"23",
	"24",
	"25",
	"26",
	"27",
	"28",
	"29",
	"30",
	""
};

public plugin_init ( ) {
	
	register_plugin ( PLUGIN, VERSION, "hadesownage" );
	
	register_clcmd ( "say /xp", "cmdShowXp", -1 );
	register_clcmd ( "say /savexp", "cmdSaveXp", -1 );
	register_clcmd ( "say /level", "cmdShowLevel" );
	register_clcmd ( "say /levele", "cmdShowLevels", -1 );
	register_clcmd ( "say /topxp", "cmdXpTop15", -1 );
	register_clcmd ( "say /clearxp", "cmdClearXp", -1 );
	register_clcmd ( "say /xpmenu", "cmdXpMenu", -1 );
	register_clcmd ( "say /vipweapons", "cmdVipWeaponsMenu", -1 );
	register_clcmd ( "say /class", "cmdClassMenu", -1 );
	register_clcmd ( "say class", "cmdClassMenu", -1 );
	register_clcmd ( "say /refresh", "cmdRefreshXP", -1 );
	register_clcmd ( "say /shop", "cmdShop", -1 );
	register_clcmd ( "say shop", "cmdShop", -1 );
	register_clcmd ( "shop", "cmdShop", -1 );
	register_clcmd ( "say /help", "cmdHelp", -1 );
	register_clcmd ( "say /ajutor", "cmdHelp", -1 );
	register_clcmd ( "say /detalii", "cmdHelp", -1 );
	register_clcmd ( "say /despre", "cmdHelp", -1 );
	register_clcmd ( "say /vip", "cmdShowVipDetails", -1 );
	register_clcmd ( "say /depozit","Depozit", -1 );
	register_clcmd ( "say_team /depozit","Depozit", -1 );
	register_clcmd ( "say /retrage","Retrage", -1 );
	register_clcmd ( "say_team /retrage","Retrage", -1 );
	register_clcmd ( "say /credits","Show_Credits", -1 );
	register_clcmd ( "say /credite","Show_Credits", -1 );
	register_clcmd ( "say_team /credits","Show_Credits", -1 );
	register_clcmd ( "say_team /credite","Show_Credits", -1 );
	register_clcmd ( "+drag","DragStart" );
	register_clcmd ( "-drag","DragEnd" );
	register_clcmd ( "power", "Power" );
	register_clcmd ( "power2", "CmdTeleport" );
	register_clcmd ( "say /furienvip", "cmdCheckVIP", -1 );
	register_clcmd ( "say_team /furienvip", "cmdCheckVIP", -1 );
	register_clcmd ( "vippower", "VIPpower", VIP_ACCESS );
	
	register_concmd ( "amx_givexp", "cmdGiveXp", ADMIN_IMMUNITY, "<target / all> <amount>" );
	register_concmd ( "amx_setxp", "cmdSetXp", ADMIN_IMMUNITY, "<target> <amount>" );
	register_concmd ( "amx_give_credits", "Give_Credits", ADMIN_IMMUNITY, "<target / ct / t / all> <amount>" );
	register_concmd ( "amx_reset_credits", "Reset_Credits", ADMIN_IMMUNITY, "<target / ct / t / all>" );
	
	register_event ( "DeathMsg", "eDeath", "a" );
	register_event ( "DeathMsg", "Death", "a" );
	register_event ( "CurWeapon", "AntiFurienCurrentWeapon", "be", "1=1" );
	register_event ( "CurWeapon", "FurienCurrentWeapon", "be", "1=1" );
	register_event ( "HLTV", "GetRandomPlayer", "a", "1=0", "2=0" );
	//register_event ( "TextMsg", "Round_Restart", "a", "2&#Game_C", "2&#Game_w", "2&#Game_will_restart_in" );
	
	register_forward ( FM_ClientUserInfoChanged, "fwClientUserInfoChanged" );
	register_forward ( FM_PlayerPreThink, "ShowSalamanderIcon" );
	register_forward ( FM_SetModel, "fwd_setmodel" );
	register_forward ( FM_Think, "fwd_think" );
	register_forward ( FM_PlayerPreThink, "ForcePlayerSpeed" );
	register_forward ( FM_CmdStart, "CmdStart" );
	register_forward ( FM_Touch, "Touch" );
	register_forward ( FM_Touch, "Touch_Yellow" );
	register_forward ( FM_GetGameDescription, "GameDesc" ); 
	
	register_logevent ( "round_end", 2, "1=Round_End" );
	register_logevent ( "round_start", 2, "1=Round_Start" );
	
	RegisterHam ( Ham_Spawn, "player", "cmdClassMenu", 1 );
	RegisterHam ( Ham_Spawn, "player", "RefreshWeapons", 1 ); 
	RegisterHam ( Ham_TakeDamage, "player", "FurienAndAntiFurienDamage" );
	RegisterHam ( Ham_Killed, "player", "ham_player_kill" );
	RegisterHam ( Ham_Weapon_PrimaryAttack, "weapon_hegrenade", "ham_PrimaryAttack_He" );
	
	KillXp = register_cvar ( "xm_xp_pr_kill", "10" );
	HsXp = register_cvar ( "xm_xp_pr_hs", "10" ); 
	HeXp = register_cvar ( "xm_xp_pr_nade", "20" );
	KnifeXp = register_cvar ( "xm_xp_pr_knife", "25" );
	
	gFurienXP = nvault_open ( "FurienXPMod" );
	
	g_MaxPlayers = get_maxplayers ( );
	g_ScoreAttrib = get_user_msgid("ScoreAttrib");
	
	maxplayers = get_maxplayers()
	gmsgSayText = get_user_msgid("SayText")
	register_clcmd("say", "handle_say")
	register_cvar("amx_contactinfo", CONTACT, FCVAR_SERVER)
	
	SymbolsName = register_cvar ( "fr_name_symbols", "~`" ); 	//| Symbols Name Restricted |//	
	
	CvarFurienSpeed = register_cvar("amx_bonusbox_furien_speed", "1000");
	CvarAntiFurienSpeed = register_cvar("amx_bonusbox_anitfurien_speed", "750");
	
	gMsgScreenShake = get_user_msgid("ScreenShake");
	
	amx_gamename = register_cvar( "amx_gamename", "XP Mod by Hades" ); 
	
	set_task ( 30.0, "GiveBonus", 38427236, _, _, "b" );
	set_task( 1.0, "ShowHud", _, _, _, "b" );
	set_task( 120.0, "ShowMessages", _, _, _, "b" );
	//set_task( 10.0, "UpdateHudScore", _, _, _, "b" );
	//set_task( 60.0, "CheckTime", _, _, _, "b", 0 );
	
	// POWERS ------------------------------------
	register_event("DeathMsg", "Death", "a");
	RegisterHam(Ham_TakeDamage, "player", "TakeDamage");
	register_forward(FM_PlayerPreThink, "PlayerPreThink");
	
	new weapon_name[24];
	for (new i = 1; i <= 30; i++) {
		if (!(WEAPONS_BITSUM & 1 << i) && get_weaponname(i, weapon_name, 23)) {
			RegisterHam(Ham_Weapon_PrimaryAttack, weapon_name, "Weapon_PrimaryAttack_Pre");
			RegisterHam(Ham_Weapon_PrimaryAttack, weapon_name, "Weapon_PrimaryAttack_Post", 1);
		}
	}
	
	CvarDropDistance = register_cvar ("vip_drop_distance", "5000");		// Distanta maxima la care poate ajunge puterea
	CvarDropCooldown = register_cvar ("vip_drop_cooldown" , "30.0");		// Drop Enemy WPN Cooldown
	CvarFreezeDuration = register_cvar("vip_freeze_duration", "3.0");	// Freeze Duration
	CvarFreezeCooldown = register_cvar("vip_freeze_cooldown", "30.0");	// Freeze Cooldown
	CvarFreezeDistance = register_cvar ("vip_freeze_distance", "5000");	// Distanta maxima la care poate ajunge puterea
	CvarDragSpeed = register_cvar("vip_drag_speed", "500");			// Drag Speed
	CvarDragCooldown = register_cvar("vip_drag_cooldown", "15.0");		// Drag Cooldown
	CvarDragDmg2Stop = register_cvar("vip_drag_dmg2stop", "50");		// Drag Damage to stop
	CvarDragUnb2Move = register_cvar("vip_drag_unable_move", "1");		// Drag Unable to move
	CvarTeleportCooldown = register_cvar("vip_teleport_cooldown", "20.0");	// Teleport Cooldown
	CvarTeleportRange = register_cvar("vip_teleport_range", "12345");	// Teleport Range
	// POWERS ------------------------------------
	
	// SALAMANDER ------------------------------------
	
	register_event("CurWeapon", "event_curweapon", "be", "1=1");
	register_forward(FM_UpdateClientData, "fw_UpdateClientData_Post", 1);
	RegisterHam(Ham_Spawn, "player", "fw_spawn", 1);
	RegisterHam(Ham_Weapon_Reload, "weapon_m249", "fw_weapon_reload", 1);
	RegisterHam(Ham_Item_Deploy, "weapon_m249", "fw_weapon_deploy", 1);
	RegisterHam(Ham_Item_PostFrame, "weapon_m249", "fw_item_postframe", 1);
	RegisterHam(Ham_Item_AddToPlayer, "weapon_m249", "fw_item_addtoplayer", 1);
	register_forward(FM_CmdStart, "fw_cmdstart");
	register_touch(fire_classname, "*", "fw_touch");
	register_think(fire_classname, "fw_think");
	register_forward(FM_SetModel, "fw_SetModel");
	
	register_clcmd("lastinv", "check_lastinv");
	
	cvar_dmgrd_start = register_cvar("zp_salamander_dmgrandom_start", "65.0");
	cvar_dmgrd_end = register_cvar("zp_salamander_dmgrandom_end", "90.0");
	cvar_fire_delay = register_cvar("zp_salamander_fire_delay", "0.1");
	cvar_max_clip = register_cvar("zp_salamander_max_clip", "100");
	
	// SALAMANDER ------------------------------------
	
	// K1ASUS ----------------------------------------------
	register_message(get_user_msgid("DeathMsg"), "message_DeathMsg")
	register_event("CurWeapon","CurrentWeapon","be","1=1")
	RegisterHam(Ham_Item_AddToPlayer, "weapon_mp5navy", "fw_k1ases_AddToPlayer")
	RegisterHam(Ham_Use, "func_tank", "fw_UseStationary_Post", 1)
	RegisterHam(Ham_Use, "func_tankmortar", "fw_UseStationary_Post", 1)
	RegisterHam(Ham_Use, "func_tankrocket", "fw_UseStationary_Post", 1)
	RegisterHam(Ham_Use, "func_tanklaser", "fw_UseStationary_Post", 1)
	for (new i = 1; i < sizeof WEAPONENTNAMES; i++)
		if (WEAPONENTNAMES[0]) RegisterHam(Ham_Item_Deploy, WEAPONENTNAMES, "fw_Item_Deploy_Post", 1)
	RegisterHam(Ham_Weapon_PrimaryAttack, "weapon_mp5navy", "fw_k1ases_PrimaryAttack")
	RegisterHam(Ham_Weapon_PrimaryAttack, "weapon_mp5navy", "fw_k1ases_PrimaryAttack_Post", 1)
	RegisterHam(Ham_Item_PostFrame, "weapon_mp5navy", "k1ases__ItemPostFrame");
	RegisterHam(Ham_Weapon_Reload, "weapon_mp5navy", "k1ases__Reload");
	RegisterHam(Ham_Weapon_Reload, "weapon_mp5navy", "k1ases__Reload_Post", 1);
	RegisterHam(Ham_TakeDamage, "player", "fw_TakeDamage")
	register_forward(FM_SetModel, "fw_SetModel_k1asus")
	register_forward(FM_UpdateClientData, "fw_UpdateClientData_Post_k1asus", 1)
	register_forward(FM_PlaybackEvent, "fwPlaybackEvent")
	register_forward(FM_CmdStart, "fw_CmdStart")
	
	RegisterHam(Ham_TraceAttack, "worldspawn", "fw_TraceAttack", 1)
	RegisterHam(Ham_TraceAttack, "func_breakable", "fw_TraceAttack", 1)
	RegisterHam(Ham_TraceAttack, "func_wall", "fw_TraceAttack", 1)
	RegisterHam(Ham_TraceAttack, "func_door", "fw_TraceAttack", 1)
	RegisterHam(Ham_TraceAttack, "func_door_rotating", "fw_TraceAttack", 1)
	RegisterHam(Ham_TraceAttack, "func_plat", "fw_TraceAttack", 1)
	RegisterHam(Ham_TraceAttack, "func_rotating", "fw_TraceAttack", 1)
	
	cvar_dmg_k1ases = register_cvar("zp_k1ases_dmg", "1.5")
	cvar_recoil_k1ases = register_cvar("zp_k1ases_recoil", "0.5")
	cvar_clip_k1ases = register_cvar("zp_k1ases_clip", "30")
	cvar_k1ases_ammo = register_cvar("zp_k1ases_ammo", "50")
	cvar_k1asesammo =  register_cvar("zp_k1ases_clawammo", "3")
	cvar_k1ases_delay =  register_cvar("zp_k1ases_delay", "5")
	cvar_k1ases_claw = register_cvar("zp_k1ases_clawdmg", "500")
	cvar_rad =  register_cvar("zp_k1ases_clawrad", "100.0")
	cvar_k1ases_fire = register_cvar("zp_k1ases_speedfire", "0.4")
	
	// K1ASUS ----------------------------------------------
	
	// QUAD BARREL ----------------------------------------------
	
	register_forward(FM_CmdStart, "fm_cmdstart")
	register_forward(FM_UpdateClientData, "fw_UpdateClientData_Post_qb", 1)
	register_forward(FM_SetModel, "fw_SetModel_qb")	
	
	RegisterHam(Ham_TakeDamage, "player", "fw_takedmg")
	RegisterHam(Ham_TraceAttack, "worldspawn", "TraceAttack", 1)
	RegisterHam(Ham_TraceAttack, "player", "TraceAttack", 1)	
	
	RegisterHam(Ham_Weapon_Reload, "weapon_xm1014", "ham_reload", 1)
	RegisterHam(Ham_Weapon_PrimaryAttack, "weapon_xm1014", "ham_priattack", 1)
	RegisterHam(Ham_Item_PostFrame, "weapon_xm1014", "ham_postframe")
	RegisterHam(Ham_Item_AddToPlayer, "weapon_xm1014", "fw_item_addtoplayer_qb", 1)
	
	register_clcmd("lastinv", "check_draw_weapon")
	register_clcmd("slot1", "check_draw_weapon")
	
	cvar_default_clip = register_cvar("zp_qbarrel_default_clip", "4")
	cvar_delayattack = register_cvar("zp_qbarrel_delay_attack", "0.35")
	cvar_reloadtime = register_cvar("zp_qbarrel_reload_time", "3.0")
	
	cvar_randmg_start = register_cvar("zp_qbarrel_randomdmg_start", "400.0")
	cvar_randmg_end = register_cvar("zp_qbarrel_randomdmg_end", "600.0")
	
	register_event("CurWeapon", "event_curweapon_quad", "be", "1=1")
	
	// QUAD BARREL ----------------------------------------------
	
	// DRAGON CANNON ----------------------------------------------
	
	register_event("CurWeapon", "event_CurWeapon_dragon", "be", "1=1")
	
	register_forward(FM_UpdateClientData, "fw_UpdateClientData_Post_dc", 1)
	register_forward(FM_CmdStart, "fw_CmdStart_dc")
	register_forward(FM_SetModel, "fw_SetModel_dc")
	
	register_think(CANNONFIRE_CLASSNAME, "fw_Cannon_Think")
	register_touch(CANNONFIRE_CLASSNAME, "*", "fw_Cannon_Touch")
	
	RegisterHam(Ham_Spawn, "player", "fw_Spawn_Post", 1)
	RegisterHam(Ham_Item_AddToPlayer, weapon_cannon, "fw_AddToPlayer_Post", 1)
	
	g_cvar_defaultammo = register_cvar("cannon_default_ammo", "5")
	g_cvar_reloadtime = register_cvar("cannon_reload_time", "4.0")
	g_cvar_firespeed = register_cvar("cannon_fire_speed", "200.0")
	g_cvar_radiusdamage = register_cvar("cannon_radius_damage", "200.0")
	g_cvar_damage = register_cvar("cannon_damage", "700.0")
	
	register_clcmd("amx_get_dragoncannon", "get_dragoncannon", ADMIN_RCON)
	register_clcmd("weapon_cannon", "hook_weapon")
	
	// DRAGON CANNON ----------------------------------------------
	
	// M79 WEAPON ----------------------------------------------
	
	// Register new extra item
	cvar_granade_damage_radius = register_cvar("granade_damage_radius","400",FCVAR_UNLOGGED)
	cvar_granade_max_damage = register_cvar("granade_max_damage","700",FCVAR_UNLOGGED)
	
	// Events
	register_event("CurWeapon", "Event_CurrentWeapon_m79", "be", "1=1")
	register_logevent("event_start_m79", 2, "1=Round_Start")
	
	// Forwards
	RegisterHam(Ham_Killed, "player", "fw_PlayerKilled_m79")
	register_forward(FM_CmdStart, "fw_CmdStart_m79")
	register_forward(FM_PlayerPostThink, "fw_PlayerPostThink_m79")
	register_forward(FM_UpdateClientData, "fw_UpdateClientData_Post_m79", 1)
	register_clcmd("drop","dropcmd")
	// Messages
	g_msgScreenShake = get_user_msgid("ScreenShake")
	g_msgStatusText = get_user_msgid("StatusText")
	gmsgDeathMsg = get_user_msgid("DeathMsg")
	gmsgScoreInfo = get_user_msgid("ScoreInfo") 
	// Sprites
	RegisterHam( Ham_Item_AddToPlayer, "weapon_p228", "fw_AddToPlayer_m79" );
	gmsgWeaponList = get_user_msgid("WeaponList")
	
	// M79 WEAPON ----------------------------------------------
	
	
	
	server_print( "[%s] Felicitari! Detii o licenta valida, iar pluginul functioneaza perfect!", PLUGIN );
	server_print( "[%s] Pentru mai multe detalii y/m: hades.hostpixel !", PLUGIN );
	server_print( "[%s] Ip-ul Licentiat: %s, Ip-ul Serverului: %s", PLUGIN, szIp, ServerLicensedIp );
	set_task( 0.1, "SqlInit" )		
}



public plugin_end( )
	nvault_close ( gFurienXP );

stock fm_set_rendering2(entity, fx = kRenderFxNone, r = 255, g = 255, b = 255, render = kRenderNormal, amount = 16) 
{
	static Float:color[3]; color[2] = float(b), color[0] = float(r), color[1] = float(g);
	
	set_pev(entity, pev_renderfx, fx);
	set_pev(entity, pev_rendercolor, color);
	set_pev(entity, pev_rendermode,  render);
	set_pev(entity, pev_renderamt,   float(amount));
	
	return true;
}

stock set_user_scoreattrib(id, attrib = 0)
{
	message_begin(MSG_BROADCAST, g_ScoreAttrib, _, 0);
	write_byte(id);
	write_byte(attrib);
	message_end( );
}

stock Drop(id)  {
	new wpn, wpnname[32];
	wpn = get_user_weapon(id);
	if(!(WPN_NOT_DROP & (1<<wpn)) && get_weaponname(wpn, wpnname, charsmax(wpnname))) {
		engclient_cmd(id, "drop", wpnname);
	}
}

stock set_weapon_anim(id, anim)
{
	set_pev(id, pev_weaponanim, anim)
	
	message_begin(MSG_ONE_UNRELIABLE, SVC_WEAPONANIM, {0, 0, 0}, id)
	write_byte(anim)
	write_byte(pev(id, pev_body))
	message_end()
}

stock drop_weapons(id, dropwhat)
{
	static weapons[32], num, i, weaponid
	num = 0
	get_user_weapons(id, weapons, num)
	
	const PRIMARY_WEAPONS_BIT_SUM2 = (1<<CSW_SCOUT)|(1<<CSW_XM1014)|(1<<CSW_MAC10)|(1<<CSW_MAC10)|(1<<CSW_UMP45)|(1<<CSW_SG550)|(1<<CSW_MAC10)|(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)
	
	for (i = 0; i < num; i++)
	{
		weaponid = weapons
		
		if (dropwhat == 1 && ((1<<weaponid) & PRIMARY_WEAPONS_BIT_SUM2))
		{
			static wname[32]
			get_weaponname(weaponid, wname, sizeof wname - 1)
			engclient_cmd(id, "drop", wname)
		}
	}
}

stock get_position(id,Float:forw, Float:right, Float:up, Float:vStart[])
{
	new Float:vOrigin[3], Float:vAngle[3], Float:vForward[3], Float:vRight[3], Float:vUp[3]
	
	pev(id, pev_origin, vOrigin)
	pev(id, pev_view_ofs,vUp) //for player
	xs_vec_add(vOrigin,vUp,vOrigin)
	pev(id, pev_v_angle, vAngle) // if normal entity ,use pev_angles
	
	angle_vector(vAngle,ANGLEVECTOR_FORWARD,vForward) //or use EngFunc_AngleVectors
	angle_vector(vAngle,ANGLEVECTOR_RIGHT,vRight)
	angle_vector(vAngle,ANGLEVECTOR_UP,vUp)
	
	vStart[0] = vOrigin[0] + vForward[0] * forw + vRight[0] * right + vUp[0] * up
	vStart[1] = vOrigin[1] + vForward[1] * forw + vRight[1] * right + vUp[1] * up
	vStart[2] = vOrigin[2] + vForward[2] * forw + vRight[2] * right + vUp[2] * up
}

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 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(TeleportSprite);
	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(TeleportSprite);
	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(TeleportSprite2);
	write_byte(30);
	write_byte(10);
	write_byte(1);
	write_byte(50);
	write_byte(10);
	message_end();
}

stock UTIL_CreateBeamCylinder( origin[ 3 ], addrad, sprite, startfrate, framerate, life, width, amplitude, red, green, blue, brightness, speed )
{
	message_begin( MSG_PVS, SVC_TEMPENTITY, origin ); 
	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 ] + addrad );
	write_short( sprite );
	write_byte( startfrate );
	write_byte( framerate );
	write_byte(life );
	write_byte( width );
	write_byte( amplitude );
	write_byte( red );
	write_byte( green );
	write_byte( blue );
	write_byte( brightness );
	write_byte( speed );
	message_end();
}

stock Create_TE_SPRITETRAIL3(start[3], end[3], iSprite, count, life, scale, velocity, random ){
	
	message_begin( MSG_BROADCAST,SVC_TEMPENTITY)
	write_byte( TE_SPRITETRAIL )
	write_coord( start[0] ) // start position (X)
	write_coord( start[1] ) // start position (Y)
	write_coord( start[2] + 40 ) // start position (Z)
	write_coord( end[0] ) // end position (X)
	write_coord( end[1] ) // end position (Y)
	write_coord( end[2] ) // end position (Z)
	write_short( iSprite ) // sprite index
	write_byte( count ) // count
	write_byte( life) // life in 0.1's
	write_byte( scale) // scale in 0.1's
	write_byte( velocity ) // velocity along vector in 10's
	write_byte( random ) // randomness of velocity in 10's
	message_end()
}

stock fm_cs_get_current_weapon_ent(id)
{
	return get_pdata_cbase(id, OFFSET_ACTIVE_ITEM, OFFSET_LINUX);
}

stock fm_cs_get_weapon_ent_owner(ent)
{
	return get_pdata_cbase(ent, OFFSET_WEAPONOWNER, OFFSET_LINUX_WEAPONS);
}

stock UTIL_PlayWeaponAnimation(const Player, const Sequence)
{
	set_pev(Player, pev_weaponanim, Sequence)
	
	message_begin(MSG_ONE_UNRELIABLE, SVC_WEAPONANIM, .player = Player)
	write_byte(Sequence)
	write_byte(pev(Player, pev_body))
	message_end()
}

stock play_weapon_anim(player, anim)
{
	set_pev(player, pev_weaponanim, anim)
	message_begin(MSG_ONE, SVC_WEAPONANIM, {0, 0, 0}, player)
	write_byte(anim)
	write_byte(pev(player, pev_body))
	message_end()
}

stock get_weapon_attackment(id, Float:output[3], Float:fDis = 40.0)
{ 
	new Float:vfEnd[3], viEnd[3] 
	get_user_origin(id, viEnd, 3)  
	IVecFVec(viEnd, vfEnd) 
	
	new Float:fOrigin[3], Float:fAngle[3]
	
	pev(id, pev_origin, fOrigin) 
	pev(id, pev_view_ofs, fAngle)
	
	xs_vec_add(fOrigin, fAngle, fOrigin) 
	
	new Float:fAttack[3]
	
	xs_vec_sub(vfEnd, fOrigin, fAttack)
	xs_vec_sub(vfEnd, fOrigin, fAttack) 
	
	new Float:fRate
	
	fRate = fDis / vector_length(fAttack)
	xs_vec_mul_scalar(fAttack, fRate, fAttack)
	
	xs_vec_add(fOrigin, fAttack, output)
}


//------| Save Credits |------//
public SaveCredits(id) {
	Vault = nvault_open("DepozitCredits");
	new data_credits[256], key_credits[64];
	
	new name[33];
	get_user_name(id,name,32);
	format(key_credits, 63, "%s-/", name);
	
	format(data_credits, 255, "%i#", PlayerCredits[id]);
	nvault_set(Vault, key_credits, data_credits);
	return PLUGIN_CONTINUE;
}
//------| Loading Credits |------//
public LoadCredits(id) {
	Vault = nvault_open("DepozitCredits");
	new data_credits[256], key_credits[64];
	
	new name[33];
	get_user_name(id,name,32);
	format(key_credits, 63, "%s-/", name);
	
	format(data_credits, 255, "%i#", PlayerCredits[id]);
	nvault_get(Vault, key_credits, data_credits, 255);
	replace_all(data_credits, 255, "#", " ");
	
	new Credits[32];
	parse(data_credits, Credits, 31);
	PlayerCredits[id] = str_to_num(Credits);
	return PLUGIN_CONTINUE;
} 

public SaveData ( id ) { 
	
	new szName [ 32 ];
	get_user_name ( id, szName, charsmax ( szName ) );  
	new vaultkey [ 64 ], vaultdata [ 256 ];
	
	format ( vaultkey, 63,"%s-Mod", szName ); 
	format ( vaultdata, 255,"%i#%i#",eXP [ id ],Level [ id ] ); 
	
	nvault_set ( gFurienXP, vaultkey, vaultdata ); 
	return 1; 
} 

public LoadData ( id ) { 
	
	new szName [ 32 ];
	get_user_name ( id, szName, charsmax ( szName ) ); 
	new vaultkey [ 64 ],vaultdata [ 256 ];
	
	format ( vaultkey,63,"%s-Mod", szName );
	format ( vaultdata,255,"%i#%i#", eXP [ id ], Level [ id ] ); 
	nvault_get ( gFurienXP, vaultkey, vaultdata, 255 );
	
	replace_all ( vaultdata, 255, "#", " " );
	
	new playerxp [ 32 ], playerlevel [ 32 ]; 
	
	parse ( vaultdata, playerxp, 31, playerlevel, 31 ); 
	
	eXP [ id ] = str_to_num ( playerxp );
	
	Level [ id ] = str_to_num ( playerlevel ); 
	
	return 1; 
}



public ShowHud ( id ) {
	
	if ( is_user_alive ( id ) && get_user_team ( id ) == 1 ) {
		
		if ( trainer [ id ] ) {
			
			set_hudmessage ( 255, 255, 0, -1.0, 0.80, 0, 6.0, 1.1 );
			
			show_hudmessage ( id, "Viata: %d | Armura: %d | Level: %s | XP: %d | Clasa: Trainer", get_user_health ( id ), get_user_armor ( id ), Prefix [ Level [ id ] ], eXP [ id ] );
			
		}
		
		if ( infinity_knife [ id ] ) {
			
			set_hudmessage ( 255, 255, 0, -1.0, 0.80, 0, 6.0, 1.1 );
			show_hudmessage ( id, "Viata: %d | Armura: %d | Level: %s | XP: %d | Clasa: Agnos", get_user_health ( id ), get_user_armor ( id ), Prefix [ Level [ id ] ], eXP [ id ] );
			
		}
		
		if ( super_knife [ id ] ) {
			
			set_hudmessage ( 255, 255, 0, -1.0, 0.80, 0, 6.0, 1.1 );
			show_hudmessage ( id, "Viata: %d | Armura: %d | Level: %s | XP: %d | Clasa: XFother", get_user_health ( id ), get_user_armor ( id ), Prefix [ Level [ id ] ], eXP [ id ] );
			
		}
		
		
		if ( katana_knife [ id ] && HasPower [ id ] == 4 ) {
			
			set_hudmessage ( 255, 255, 0, -1.0, 0.80, 0, 6.0, 1.1 );
			show_hudmessage ( id, "Viata: %d | Armura: %d | Level: %s | XP: %d | Clasa: Samurai | Putere: Drop Enemy Weapon", get_user_health ( id ), get_user_armor ( id ), Prefix [ Level [ id ] ], eXP [ id ] );
			
		}
		
		if ( double_katana_knife [ id ] && HasPower [ id ] == 4 ) {
			
			set_hudmessage ( 255, 255, 0, -1.0, 0.80, 0, 6.0, 1.1 );
			show_hudmessage ( id, "Viata: %d | Armura: %d | Level: %s | XP: %d | Clasa: Extra Samurai | Putere: Drop Enemy Weapon", get_user_health ( id ), get_user_armor ( id ), Prefix [ Level [ id ] ], eXP [ id ] );
			
		}
		
		
		if ( ignes_knife [ id ] && HasPower [ id ] == 5 ) {
			
			set_hudmessage ( 255, 255, 0, -1.0, 0.80, 0, 6.0, 1.1 );
			show_hudmessage ( id, "Viata: %d | Armura: %d | Level: %s | XP: %d | Clasa: Ignes | Putere: Freeze Enemy", get_user_health ( id ), get_user_armor ( id ), Prefix [ Level [ id ] ], eXP [ id ] );
			
		}
		
		
		
		if ( elf_knife [ id ] && HasPower [ id ] == 5 ) {
			
			set_hudmessage ( 255, 255, 0, -1.0, 0.80, 0, 6.0, 1.1 );
			show_hudmessage ( id, "Viata: %d | Armura: %d | Level: %s | XP: %d | Clasa: Elf | Putere: Freeze Enemy", get_user_health ( id ), get_user_armor ( id ), Prefix [ Level [ id ] ], eXP [ id ] );
			
		}
		
		if ( vip_axe_knife [ id ] && HasPower [ id ] == 7 ) {
			
			set_hudmessage ( 255, 255, 0, -1.0, 0.80, 0, 6.0, 1.1 );
			show_hudmessage ( id, "Viata: %d | Armura: %d | Level: %s | XP: %d | Clasa: Alcadeias | Putere: Teleport", get_user_health ( id ), get_user_armor ( id ), Prefix [ Level [ id ] ], eXP [ id ] );
			
		}
	}
	
	else if ( is_user_alive ( id ) && get_user_team ( id ) == 2 ) {
		
		if ( druid [ id ] ) {
			
			set_hudmessage ( 255, 255, 0, -1.0, 0.80, 0, 6.0, 1.0 );
			show_hudmessage ( id, "Viata: %d | Armura: %d | Level: %s | XP: %d | Clasa: Druid", get_user_health ( id ), get_user_armor ( id ), Prefix [ Level [ id ] ], eXP [ id ] );
			
		}
		
		if ( hunter [ id ] ) {
			
			set_hudmessage ( 255, 255, 0, -1.0, 0.80, 0, 6.0, 1.0 );
			show_hudmessage ( id, "Viata: %d | Armura: %d | Level: %s | XP: %d | Clasa: Hunter", get_user_health ( id ), get_user_armor ( id ), Prefix [ Level [ id ] ], eXP [ id ] );
			
		}
		
		if ( mage [ id ] ) {
			
			set_hudmessage ( 255, 255, 0, -1.0, 0.80, 0, 6.0, 1.0 );
			show_hudmessage ( id, "Viata: %d | Armura: %d | Level: %s | XP: %d | Clasa: Mage", get_user_health ( id ), get_user_armor ( id ), Prefix [ Level [ id ] ], eXP [ id ] );
			
		}
		
		
		if ( rogue [ id ] && HasPower [ id ] == 6 ) {
			
			set_hudmessage ( 255, 255, 0, -1.0, 0.80, 0, 6.0, 1.0 );
			show_hudmessage ( id, "Viata: %d | Armura: %d | Level: %s | XP: %d | Clasa: Rogue | Putere: Drag Enemy", get_user_health ( id ), get_user_armor ( id ), Prefix [ Level [ id ] ], eXP [ id ] );
			
		}
		
		if ( shaman [ id ] && HasPower [ id ] == 6 ) {
			
			set_hudmessage ( 255, 255, 0, -1.0, 0.80, 0, 6.0, 1.0 );
			show_hudmessage ( id, "Viata: %d | Armura: %d | Level: %s | XP: %d | Clasa: Shaman | Putere: Drag Enemy", get_user_health ( id ), get_user_armor ( id ), Prefix [ Level [ id ] ], eXP [ id ] );
			
		}
		
		
		if ( thompson [ id ] && HasPower [ id ] == 8 ) {
			
			set_hudmessage ( 255, 255, 0, -1.0, 0.80, 0, 6.0, 1.0 );
			show_hudmessage ( id, "Viata: %d | Armura: %d | Level: %s | XP: %d | Clasa: Warlock | Putere: Norecoil", get_user_health ( id ), get_user_armor ( id ), Prefix [ Level [ id ] ], eXP [ id ] );
			
		}
		
		
		
		if ( warrior [ id ] && HasPower [ id ] == 8 ) {
			
			set_hudmessage ( 255, 255, 0, -1.0, 0.80, 0, 6.0, 1.0 );
			show_hudmessage ( id, "Viata: %d | Armura: %d | Level: %s | XP: %d | Clasa: Warrior | Putere: Norecoil", get_user_health ( id ), get_user_armor ( id ), Prefix [ Level [ id ] ], eXP [ id ] );
			
		}
		
		if ( deklowaz [ id ] && HasPower [ id ] == 7 ) {
			
			set_hudmessage ( 255, 255, 0, -1.0, 0.80, 0, 6.0, 1.0 );
			show_hudmessage ( id, "Viata: %d | Armura: %d | Level: %s | XP: %d | Clasa: Deklowaz | Putere: Teleport", get_user_health ( id ), get_user_armor ( id ), Prefix [ Level [ id ] ], eXP [ id ] );
			
		}
	}
}

public RemoveStuff ( id ) {
	
	remove_dragoncannon ( id );
	g_had_qb [ id ] = 0;
	dual_mp5 [ id ] = false;
	k1ases_weapon [ id ] = false;
	salamander [ id ] = false;
	SalamanderLimit [ id ] = false;
	katana_knife [ id ] = false;
	double_katana_knife [ id ] = false;
	super_knife [ id ] = false;
	infinity_knife [ id ] = false;
	elf_knife [ id ] = false;
	ignes_knife [ id ] = false;
	trainer [ id ] = false;
	thompson [ id ] = false;
	uspx [ id ] = false;
	hunter [ id ] = false;
	shaman [ id ] = false;
	UserHaveM79 [ id ] = false;
	mage [ id ] = false;
	rogue [ id ] = false;
	warrior [ id ] = false;
	deklowaz [ id ] = false;
	flare [ id ] = true;
	druid [ id ] = false;
	strike_grenade [ id ] = false;
	strike_grenade2 [ id ] = false;
	strike_grenade3 [ id ] = false;
	super_knife_shop [ id ] = false;
	super_knife_shop2 [ id ] = false;
	UserHaveQuad [ id ] = false;
	UserHaveDragon [ id ] = false;
	
	HasChose[id] = false;
	HasPower[id] = 0;
	HE_Cooldown[id] = 0;
	GodMode_Cooldown[id] = 0;
	GodMode_DurationCooldown[id] = 0;
	Drop_Cooldown[id] = 0;
	Freeze_Cooldown[id] = 0;
	Drag_Cooldown[id] = 0;
	Not_Cooldown[id] = false;
	Teleport_Cooldown[id] = 0;
	
	UserHaveHeGrenade [ id ] = false;
	UserHaveGodMode [ id ] = false;
	UserHaveSuperKnife [ id ] = false;
	UserHaveNoClip [ id ] = false;
	UserHaveHpAndAp [ id ] = false;
	UserHaveDualMp5 [ id ] = false;
	UserHasChoosed [ id ] = false;
	
}

public client_putinserver ( id ) {
	
	LoadData ( id );
	LoadCredits ( id );
	RemoveStuff ( id );
	set_task ( 3.0, "ShowHud", id, _, _, "b" );
	
	client_cmd ( id, "cl_forwardspeed 9999" );
	client_cmd ( id, "cl_backspeed 9999" );
	client_cmd ( id, "cl_sidespeed 9999" );
}

public client_disconnect ( id ) {
	
	SaveData ( id );
	SaveCredits ( id );
	RemoveStuff ( id );
	
	g_has_k1ases[id] = false
	g_delay[id] = 0
	g_ammoclaw[id] = 0
	
}


public client_connect(id) {
	
	g_has_k1ases[id] = false
	g_delay[id] = 0
	g_ammoclaw[id] = 0
	
	static sName[32];
	get_user_name(id, sName, sizeof sName - 1);
	static sChars[32];
	get_pcvar_string(SymbolsName, sChars, sizeof sChars - 1);	
	for(new i = 0 ; i < strlen(sName) ; i++) {
		for(new j = 0 ; j < strlen(sChars) ; j++) {
			if(sName == sChars[j]) {
				server_cmd("kick #%d ^"Numele tau contine caractere nepermise.^"", get_user_userid(id));
				break;
			}
			else {
				LoadData ( id );
			}
		}
	}
	
	g_hasM79[id] = false
	g_canShoot[id] = false
	g_last_shot_time[id] = 0.0
	grenade_count[id] = 0
	hasOnHandM79[id] = false
	remove_icon(id)
}

public plugin_cfg ( ) {
	
	server_cmd("sv_maxspeed 99999999.0");
	server_cmd("sv_airaccelerate 99999999.0");
	
}

public plugin_natives ( ) {
	
	register_native ( "set_user_credits", "set_user_credits", 1 );
	register_native ( "get_user_credits", "get_user_credits", 1 );
	register_native ( "set_user_xp", "set_user_xp", 1 );
	register_native ( "set_user_level", "set_user_level", 1 );
	register_native ( "get_user_xp", "get_user_xp", 1 );
	register_native ( "set_user_xp", "get_user_xp", 1 );
	
	register_native("give_weapon_k1ases", "native_give_weapon_add", 1)
}

public plugin_precache ( ) {
	
	precache_model(v_model); // salamander
	precache_model(p_model); // salamander
	precache_model(w_model); // salamander
	precache_model(fire_spr_name); // salamander
	
	precache_sound(fire_sound); // salamander
	
	precache_sound("weapons/flamegun-1.wav"); // salamander
	precache_sound("weapons/flamegun_clipin1.wav"); // salamander
	precache_sound("weapons/flamegun_clipout1.wav"); // salamander
	precache_sound("weapons/flamegun_clipout2.wav"); // salamander
	precache_sound("weapons/flamegun_draw.wav"); // salamander
	
	precache_model ( katana_knife_v_model );
	precache_model ( double_katana_v_knife_model );
	precache_model ( super_knife_v_model );
	precache_model ( infinity_knife_v_model );
	precache_model ( axe_knife_v_model );
	precache_model ( ignes_knife_model );
	precache_model ( elf_knife_model );
	precache_model ( thompson_v_model );
	precache_model ( uspx_v_model );
	precache_model ( hunter_v_model );
	precache_model ( mage_v_model );
	precache_model ( rogue_v_model );
	precache_model ( shaman_v_model );
	precache_model ( warrior_v_model );
	precache_model ( deklowaz_v_model );
	precache_model ( trainer_v_model );
	precache_model ( flare_v_model );
	precache_model ( strike_grenade_v_model );
	precache_model ( super_knife_shop_v_model );
	precache_model ( super_knife_shop_v_model2 );
	
	precache_model ( katana_knife_p_model );
	precache_model ( double_katana_p_knife_model );
	precache_model ( super_knife_p_model );
	precache_model ( infinity_knife_p_model );
	precache_model ( axe_knife_p_model );
	precache_model ( strike_grenade_p_model );
	precache_model ( super_knife_shop_p_model2 );
	
	precache_model ( thompson_p_model );
	precache_model ( uspx_p_model );
	precache_model ( hunter_p_model );
	precache_model ( mage_p_model );
	precache_model ( rogue_p_model );
	precache_model ( shaman_p_model );
	precache_model ( warrior_p_model );
	precache_model ( deklowaz_p_model );
	precache_model ( trainer_p_model );
	
	precache_model ( flare_w_model );
	
	precache_model ( "models/player/furienxp/furienxp.mdl" );
	precache_model ( "models/player/furienxp2/furienxp2.mdl" );
	
	g_trail = precache_model ( "sprites/smoke.spr" );
	
	g_FurienHealth = precache_model("sprites/exhealth/health_zombie.spr") 
	g_AntiFurienHealth = precache_model("sprites/exhealth/health_human.spr") 
	precache_sound(buy_FurienHealth) 
	precache_sound(buy_AntiFurienHealth) 
	
	// POWERS
	
	precache_sound(DROP_HIT_SND);
	
	DropSprite = precache_model("sprites/lgtning.spr");
	DropSprite2 = precache_model("sprites/dropwpnexp.spr");
	
	precache_sound(DRAG_HIT_SND);
	precache_sound(DRAG_MISS_SND);
	DragSprite = precache_model("sprites/zbeam4.spr");
	
	
	new i;
	for (i = 0; i < sizeof FROSTBREAK_SND; i++)
		engfunc(EngFunc_PrecacheSound, FROSTBREAK_SND);
	for (i = 0; i < sizeof FROSTPLAYER_SND; i++)
		engfunc(EngFunc_PrecacheSound, FROSTPLAYER_SND);
	FreezeSprite = engfunc(EngFunc_PrecacheModel, FreezeSprite2);
	FreezeSprite3 = precache_model("sprites/laserbeam.spr");
	
	TeleportSprite = precache_model( "sprites/shockwave.spr");
	TeleportSprite2 = precache_model( "sprites/blueflare2.spr");
	TeleportSprite3 = precache_model( "sprites/teleport_start.spr");
	
	for (new i = 0; i < sizeof Model; i++)
		precache_model(Model)
	
	for (new i = 0; i < sizeof Model_Yellow; i++)
		precache_model(Model_Yellow)
	
	precache_model ( dual_mp5_v_model );
	precache_model ( dual_mp5_p_model );
	
	precache_model(k1ases_V_MODEL)
	precache_model(k1ases_P_MODEL)
	precache_model(k1ases_W_MODEL)
	precache_sound("weapons/k1ar-1.wav")
	precache_sound("weapons/k1a_clipin.wav")
	precache_sound("weapons/k1a_clipout.wav")
	precache_sound("weapons/k1a_draw.wav")
	precache_sound(explode_sound)
	m_iBlood[0] = precache_model("sprites/blood.spr")
	m_iBlood[1] = precache_model("sprites/bloodspray.spr")
	sprites_exp_index = precache_model(sprites_exp)
	precache_model("sprites/640hud5.spr")
	register_forward(FM_PrecacheEvent, "fwPrecacheEvent_Post", 1)
	
	g_damage = precache_model("sprites/furien/icon_supplybox2.spr")
	g_damages = precache_model("sprites/furien/zp_zbrespawn.spr")
	
	g_blood = precache_model("sprites/blood.spr")
	g_bloodspray = precache_model("sprites/bloodspray.spr")		
	
	precache_model(qb_v_model)
	precache_model(qb_p_model)
	precache_model(qb_w_model)
	
	for(new i = 0; i < sizeof(qb_sound); i++)
		precache_sound(qb_sound)
	
	
	new hades
	for(hades = 0; hades < sizeof(WeaponModel); hades++)
		engfunc(EngFunc_PrecacheModel, WeaponModel[hades])
	new ownage
	for(ownage = 0; ownage < sizeof(WeaponSound); ownage++)
		engfunc(EngFunc_PrecacheSound, WeaponSound[ownage])
	
	engfunc(EngFunc_PrecacheModel, WeaponResource[0])
	engfunc(EngFunc_PrecacheGeneric, WeaponResource[1])
	engfunc(EngFunc_PrecacheModel, WeaponResource[2])
	engfunc(EngFunc_PrecacheModel, WeaponResource[3])
	g_smokepuff_id = engfunc(EngFunc_PrecacheModel, WeaponResource[4])
	
	// Models
	precache_model(m79_P_MODEL)
	precache_model(m79_V_MODEL)
	precache_model(m79_W_MODEL)
	precache_model(m79_GRENADE_MODEL)
	
	// Sounds
	precache_sound(m79_GRENADE_SHOOT)
	precache_sound(m79_GRENADE_CLIPIN)
	precache_sound(m79_GRENADE_CLIPOUT)
	precache_sound(m79_GRENADE_CLIPON)
	precache_sound(m79_GRENADE_DRAW)
	precache_sound("weapons/357_cock1.wav")
	
	// Sprites
	sTrail = precache_model(m79_GRENADE_TRAIL)
	sExplo = precache_model(m79_GRENADE_EXPLOSION)
	sSmoke = precache_model(m79_GRENADE_SMOKE)
	
	// Bodyparts and blood
	blood_drop = precache_model("sprites/blood.spr")
	blood_spray = precache_model("sprites/bloodspray.spr")
	mdl_gib_flesh = precache_model("models/Fleshgibs.mdl")
	mdl_gib_head = precache_model("models/GIB_Skull.mdl")
	mdl_gib_lung = precache_model("models/GIB_Lung.mdl")
	mdl_gib_spine = precache_model("models/GIB_B_Bone.mdl")
	
	// Sprites
	precache_generic( "sprites/weapon_m79_sisa.txt" );
	precache_generic( "sprites/640hud42.spr" );
	precache_generic( "sprites/640hud42.spr" );
	precache_generic( "sprites/640hud7x.spr" );
	
	register_clcmd("weapon_m79_sisa", "Hook_Select")
	
}

public GameDesc( ) {
	
	static gamename[32]; 
	get_pcvar_string( amx_gamename, gamename, 31 ); 
	forward_return( FMV_STRING, gamename ); 
	return FMRES_SUPERCEDE; 
}

public cmdHelp ( id ) {
	
	show_motd ( id, "/addons/amxmodx/configs/ajutor.html" );
}

public cmdShowVipDetails ( id ) {
	
	show_motd ( id, "/addons/amxmodx/configs/vip.html" );
}

public ShowMessages ( ) {
	
	switch (random_num(1,6)) 
	{
		case 1:
		{
			ColorChat ( 0, GREEN, "%s Pentru detalii despre joc, scrieti in chat^4 /detalii^3 .^4", szPrefix );
		}
		
		case 2:
		{
			ColorChat ( 0, GREEN, "%s Daca nu va functioneaza puterea, scrieti in consola^4 bind v power^3 .^4", szPrefix );
		}
		
		case 3:
		{
			ColorChat ( 0, GREEN, "%s Pentru detalii despre VIP, scrieti in chat^4 /vip^3 .^4", szPrefix );
		}
		
		case 4:
		{
			ColorChat ( 0, GREEN, "%s Pentru a vedea vipii online, scrieti in chat^4 /vips^3 .^4", szPrefix );
		}
		
		case 5:
		{
			ColorChat ( 0, GREEN, "%s Va asteptam si pe forumul nostru,^4 http://www.kzh.ro^3 .^4", szPrefix );
		}
		
		case 6:
		{
			ColorChat ( 0, GREEN, "%s Daca descoperiti o eroare sau un bug, va rugam sa ne contactati .^4", szPrefix );
		}
	}
}

public set_user_credits ( id, credits ) {
	
	PlayerCredits [ id ] = credits;
	
}

public get_user_credits ( id ) {
	
	return PlayerCredits [ id ];
}

public set_user_level ( id, user_level ) {
	
	Level [ id ] = user_level;
}

public get_user_level ( id ) {
	
	return Level [ id ];
}

public set_user_xp ( id, xp ) {
	
	eXP [ id ] = xp;
	
	cmdRefreshXP2 ( id );
}

public get_user_xp ( id ) {
	
	return eXP [ id ];
	
}

public round_end ( id ) {
	
	remove_dragoncannon ( id );
	dual_mp5 [ id ] = false;
	k1ases_weapon [ id ] = false;
	salamander [ id ] = false;
	SalamanderLimit [ id ] = false;
	katana_knife [ id ] = false;
	double_katana_knife [ id ] = false;
	super_knife [ id ] = false;
	infinity_knife [ id ] = false;
	vip_axe_knife [ id ] = false;
	elf_knife [ id ] = false;
	ignes_knife [ id ] = false;
	trainer [ id ] = false;
	thompson [ id ] = false;
	uspx [ id ] = false;
	hunter [ id ] = false;
	shaman [ id ] = false;
	mage [ id ] = false;
	rogue [ id ] = false;
	warrior [ id ] = false;
	deklowaz [ id ] = false;
	druid [ id ] = false;
	strike_grenade [ id ] = false;
	strike_grenade2 [ id ] = false;
	strike_grenade3 [ id ] = false;
	HasPower[id] = 0;
	Drop_Cooldown[id] = 0;
	super_knife_shop [ id ] = false;
	super_knife_shop2 [ id ] = false;
	
	new g_iMaxPlayers = get_maxplayers ( );
	
	static Players;
	for ( Players = 1 ; Players <= g_iMaxPlayers ; Players++ )
	{
		if (!is_user_alive ( Players ) )
			continue;
		
		strip_user_weapons ( Players );
		set_pdata_int ( Players, 116, 0 );
		give_item ( Players, "weapon_knife" );
	}
	
}

public GiveBonus ( id ) {
	
	new a [ 6 ];
	
	get_time ( "%H:%M", a, 5 );
	
	if ( equal ( a, "10:00" ) || equal ( a, "12:00" ) || equal ( a, "16:00" ) || equal ( a, "20:00" ) || equal ( a, "23:00" ) ) {
		
		ColorChat ( 0, GREEN, "%s Este ora^4 bonusului^3, toti jucatorii au primit^4 5^5credite .", szPrefix );
		set_user_credits ( id, get_user_credits ( id ) + 5 );
	}
}

public round_start ( id ) {
	
	new iPlayers [ 32 ];
	new iNum;
	
	get_players ( iPlayers, iNum );
	
	for ( new i = 0; i < iNum; i++ )
	{
		g_iCount [ iPlayers [ i ] ] = 0;
		g_Menu [ iPlayers [ i ] ] = 0;
		g_had_qb [ iPlayers [ i ]] = 0;
		g_CanUseHe[iPlayers] = false;
	}
	
	dual_mp5 [ id ] = false;
	k1ases_weapon [ id ] = false;
	salamander [ id ] = false;
	SalamanderLimit [ id ] = false;
	katana_knife [ id ] = false;
	double_katana_knife [ id ] = false;
	super_knife [ id ] = false;
	infinity_knife [ id ] = false;
	elf_knife [ id ] = false;
	ignes_knife [ id ] = false;
	vip_axe_knife [ id ] = false;
	trainer [ id ] = false;
	thompson [ id ] = false;
	uspx [ id ] = false;
	hunter [ id ] = false;
	shaman [ id ] = false;
	mage [ id ] = false;
	rogue [ id ] = false;
	warrior [ id ] = false;
	deklowaz [ id ] = false;
	druid [ id ] = false;
	strike_grenade [ id ] = false;
	strike_grenade2 [ id ] = false;
	strike_grenade3 [ id ] = false;
	super_knife_shop [ id ] = false;
	super_knife_shop2 [ id ] = false;
	HasPower[id] = 0;
	Drop_Cooldown[id] = 0;
	
	if ( get_user_team ( id ) == 2 ) {
		give_item ( id, "weapon_smokegrenade" );
		cs_set_user_bpammo ( id, CSW_SMOKEGRENADE, 2 );
		flare [ id ] = true;
	}
	
	new ent = FM_NULLENT
	static string_class[] = "classname"
	while ((ent = engfunc(EngFunc_FindEntityByString, ent, string_class, ClassName))) 
		set_pev(ent, pev_flags, FL_KILLME)
	
	for(new id = 1; id < get_maxplayers();id++) {
		HasSpeed[id] = false
		HasTeleport[id] = false	
	}
}

public ham_PrimaryAttack_He ( iEnt ) {
	
	new id = pev( iEnt, pev_owner ); 
	
	if( g_CanUseHe [ id ] ) 
	{
		
		set_hudmessage( 0, 100, 200, -1.0, 0.35, 1, 0.01, 3.0, 1.0, 1.0 ); 
		show_hudmessage( id, "Bomba a fost plantata, nu mai poti folosi HE-urile" ); 
		
		return HAM_SUPERCEDE; 
	} 
	
	return HAM_IGNORED; 
	
}

public EventHLTV ( ) {
	
	set_task ( 0.1, "GiveBonus" );
}

public native_give_weapon_add(id)
{
	give_k1ases(id)
}

public fwPrecacheEvent_Post(type, const name[])
{
	if (equal("events/mp5n.sc", name))
	{
		g_orig_event_k1ases = get_orig_retval()
		return FMRES_HANDLED
	}
	
	return FMRES_IGNORED
}

public fw_TraceAttack(iEnt, iAttacker, Float:flDamage, Float:fDir[3], pentru, iDamageType)
{
	if(!is_user_alive(iAttacker))
		return;
	
	new g_currentweapon = get_user_weapon(iAttacker)
	if(g_currentweapon != CSW_MP5NAVY) return
	
	if((g_currentweapon == CSW_MP5NAVY && !g_has_k1ases[iAttacker])) return
	
	static Float:flEnd[3]
	get_tr2(pentru, TR_vecEndPos, flEnd)
	
	if(iEnt)
	{
		// Put decal on an entity
		message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
		write_byte(TE_DECAL)
		write_coord_f(flEnd[0])
		write_coord_f(flEnd[1])
		write_coord_f(flEnd[2])
		write_byte(GUNSHOT_DECALS[random_num ( 0, sizeof GUNSHOT_DECALS -1 ) ] )
		write_short(iEnt)
		message_end()
	}
	else
	{
		// Put decal on "world" (a wall)
		message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
		write_byte(TE_WORLDDECAL)
		write_coord_f(flEnd[0])
		write_coord_f(flEnd[1])
		write_coord_f(flEnd[2])
		write_byte(GUNSHOT_DECALS[random_num ( 0, sizeof GUNSHOT_DECALS -1 ) ] )
		message_end()
	}
	
	// Show sparcles
	message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
	write_byte(TE_GUNSHOTDECAL)
	write_coord_f(flEnd[0])
	write_coord_f(flEnd[1])
	write_coord_f(flEnd[2])
	write_short(iAttacker)
	write_byte(GUNSHOT_DECALS[random_num ( 0, sizeof GUNSHOT_DECALS -1 ) ] )
	message_end()
}

public fwClientUserInfoChanged(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, g_name, val, sizeof val - 1)
	if (equal(val, name))
		return FMRES_IGNORED;
	
	engfunc(EngFunc_SetClientKeyValue, id, buffer, g_name, name)
	console_print ( id, "%s", g_reason );
	
	return FMRES_SUPERCEDE;
}

public SalamanderGiveItem(id, itemid)
{
	if(itemid == g_salamander)
	{
		g_had_salamander[id] = true
		is_reloading[id] = false
		is_firing[id] = false
		can_fire[id] = true
		
		fm_give_item(id, "weapon_m249")
		g_ammo[id] = 30
		cs_set_user_bpammo ( id, CSW_M249, 20 );
	}
}

public get_dragoncannon(id)
{
	if(!is_user_alive(id))
		return
	
	drop_weapons(id, 1)
	
	g_had_cannon[id] = 1
	g_cannon_ammo[id] = get_pcvar_num(g_cvar_defaultammo)
	fm_give_item(id, weapon_cannon)
}

public remove_dragoncannon(id)
{
	if(!is_user_connected(id))
		return
	
	g_had_cannon[id] = 0
	g_got_firsttime[id] = 0
	g_cannon_ammo[id] = 0
	
	remove_task(id+TASK_RESET_AMMO)
}

public hook_weapon(id) engclient_cmd(id, weapon_cannon)

public event_CurWeapon_dragon(id)
{
	if(!is_user_alive(id))
		return
	
	if(get_user_weapon(id) == CSW_CANNON && g_had_cannon[id])
	{
		if(!g_got_firsttime[id])
		{
			static cannon_weapon
			cannon_weapon = fm_find_ent_by_owner(-1, weapon_cannon, id)
			
			if(pev_valid(cannon_weapon)) cs_set_weapon_ammo(cannon_weapon, 25)
			g_got_firsttime[id] = 1
		}
		
		set_pev(id, pev_viewmodel2, WeaponModel[MODEL_V])
		set_pev(id, pev_weaponmodel2, WeaponModel[MODEL_P])
		
		if(g_old_weapon[id] != CSW_CANNON)
		{
			g_temp_reloadtime = get_pcvar_float(g_cvar_reloadtime)
			set_weapon_anim(id, CANNON_ANIM_DRAW)
		}
		
		update_ammo(id)
	}
	
	g_old_weapon[id] = get_user_weapon(id)
}


public dragoncannon_shoothandle(id)
{
	if(pev(id, pev_weaponanim) != CANNON_ANIM_IDLE)
		return
	
	if(get_gametime() - g_temp_reloadtime > g_lastshot[id])
	{
		dragoncannon_shootnow(id)
		g_lastshot[id] = get_gametime()
	}
}

public dragoncannon_shootnow(id)
{
	if(g_cannon_ammo[id] == 1)
	{
		set_task(0.5, "set_weapon_outofammo", id+TASK_RESET_AMMO)
	}
	if(g_cannon_ammo[id] <= 0)
	{
		return
	}
	
	create_fake_attack(id)
	
	g_cannon_ammo[id]--
	
	set_weapon_anim(id, random_num(CANNON_ANIM_SHOOT1, CANNON_ANIM_SHOOT2))
	emit_sound(id, CHAN_WEAPON, WeaponSound[0], 1.0, ATTN_NORM, 0, PITCH_NORM)
	
	set_player_nextattack(id, CSW_CANNON, g_temp_reloadtime)
	update_ammo(id)
	
	make_fire_effect(id)
	make_fire_smoke(id)
	check_radius_damage(id)
}

public create_fake_attack(id)
{
	static cannon_weapon
	cannon_weapon = fm_find_ent_by_owner(-1, "weapon_knife", id)
	
	if(pev_valid(cannon_weapon)) ExecuteHam(Ham_Weapon_PrimaryAttack, cannon_weapon)	
}

public set_weapon_outofammo(id)
{
	id -= TASK_RESET_AMMO
	if(!is_user_alive(id))
		return
	if(get_user_weapon(id) != CSW_CANNON || !g_had_cannon[id])
		return
	
	set_weapon_anim(id, CANNON_ANIM_IDLE)
}

public make_fire_effect(id)
{
	const MAX_FIRE = 10
	static Float:Origin[MAX_FIRE][3]
	
	// Stage 1
	get_position(id, 30.0, 50.0, WEAPON_ATTACH_U, Origin[0])
	get_position(id, 30.0, 40.0, WEAPON_ATTACH_U, Origin[1])
	get_position(id, 30.0, -40.0, WEAPON_ATTACH_U, Origin[2])
	get_position(id, 30.0, -50.0, WEAPON_ATTACH_U, Origin[2])
	
	// Stage 2
	get_position(id, 50.0, 30.0, WEAPON_ATTACH_U, Origin[3])
	get_position(id, 50.0, 0.0, WEAPON_ATTACH_U, Origin[4])
	get_position(id, 50.0, -30.0, WEAPON_ATTACH_U, Origin[5])
	
	// Stage 3
	get_position(id, 70.0, 20.0, WEAPON_ATTACH_U, Origin[3])
	get_position(id, 70.0, -20.0, WEAPON_ATTACH_U, Origin[5])	
	
	// Stage 4
	get_position(id, 90.0, 0.0, WEAPON_ATTACH_U, Origin[4])
	
	for(new i = 0; i < MAX_FIRE; i++)
		create_fire(id, Origin[i])
}

public create_fire(id, Float:Origin[3])
{
	new iEnt = create_entity("env_sprite")
	static Float:vfAngle[3], Float:MyOrigin[3], Float:TargetOrigin[3], Float:Velocity[3]
	
	pev(id, pev_angles, vfAngle)
	pev(id, pev_origin, MyOrigin)
	
	vfAngle[2] = float(random(18) * 20)
	
	// set info for ent
	set_pev(iEnt, pev_movetype, MOVETYPE_PUSHSTEP)
	set_pev(iEnt, pev_rendermode, kRenderTransAdd)
	set_pev(iEnt, pev_renderamt, 250.0)
	set_pev(iEnt, pev_fuser1, get_gametime() + 2.5)	// time remove
	set_pev(iEnt, pev_scale, 2.0)
	set_pev(iEnt, pev_nextthink, halflife_time() + 0.05)
	
	entity_set_string(iEnt, EV_SZ_classname, CANNONFIRE_CLASSNAME)
	engfunc(EngFunc_SetModel, iEnt, WeaponResource[0])
	set_pev(iEnt, pev_mins, Float:{-5.0, -5.0, -5.0})
	set_pev(iEnt, pev_maxs, Float:{5.0, 5.0, 5.0})
	set_pev(iEnt, pev_origin, Origin)
	set_pev(iEnt, pev_gravity, 0.01)
	set_pev(iEnt, pev_angles, vfAngle)
	set_pev(iEnt, pev_solid, 1)
	set_pev(iEnt, pev_owner, id)	
	set_pev(iEnt, pev_frame, 0.0)
	
	// Set Velocity
	get_position(id, 100.0, 0.0, -5.0, TargetOrigin)
	
	get_speed_vector(MyOrigin, TargetOrigin, get_pcvar_float(g_cvar_firespeed), Velocity)
	set_pev(iEnt, pev_velocity, Velocity)
}

public fw_Cannon_Think(iEnt)
{
	if(!pev_valid(iEnt)) 
		return
	
	new Float:fFrame, Float:fNextThink
	pev(iEnt, pev_frame, fFrame)
	
	// effect exp
	new iMoveType = pev(iEnt, pev_movetype)
	if (iMoveType == MOVETYPE_NONE)
	{
		fNextThink = 0.0015
		fFrame += 0.5
		
		if (fFrame > 21.0)
		{
			engfunc(EngFunc_RemoveEntity, iEnt)
			return
		}
	}
	
	// effect normal
	else
	{
		fNextThink = 0.045
		fFrame += 0.5
		fFrame = floatmin(21.0, fFrame)
	}
	
	set_pev(iEnt, pev_frame, fFrame)
	set_pev(iEnt, pev_nextthink, halflife_time() + fNextThink)
	
	// time remove
	new Float:fTimeRemove
	pev(iEnt, pev_fuser1, fTimeRemove)
	if (get_gametime() >= fTimeRemove)
	{
		engfunc(EngFunc_RemoveEntity, iEnt)
		return;
	}
}

public fw_Cannon_Touch(ent, id)
{
	if(!pev_valid(ent))
		return
	
	set_pev(ent, pev_movetype, MOVETYPE_NONE)
	set_pev(ent, pev_solid, SOLID_NOT)
}

public make_fire_smoke(id)
{
	static Float:Origin[3]
	get_position(id, WEAPON_ATTACH_F, WEAPON_ATTACH_R, WEAPON_ATTACH_U, Origin)
	
	message_begin(MSG_BROADCAST, SVC_TEMPENTITY) 
	write_byte(TE_EXPLOSION) 
	engfunc(EngFunc_WriteCoord, Origin[0])
	engfunc(EngFunc_WriteCoord, Origin[1])
	engfunc(EngFunc_WriteCoord, Origin[2])
	write_short(g_smokepuff_id) 
	write_byte(10)
	write_byte(30)
	write_byte(14)
	message_end()
}

public update_ammo(id)
{
	if(!is_user_alive(id))
		return
	
	message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("CurWeapon"), _, id)
	write_byte(1)
	write_byte(CSW_CANNON)
	write_byte(-1)
	message_end()
	
	message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("AmmoX"), _, id)
	write_byte(6)
	write_byte(g_cannon_ammo[id])
	message_end()
}

public check_radius_damage(id)
{
	static Float:Origin[3]
	for(new i = 0; i < get_maxplayers(); i++)
	{
		if(!is_user_alive(i))
			continue
		if(cs_get_user_team(id) == cs_get_user_team(i))
			continue
		if(id == i)
			continue
		pev(i, pev_origin, Origin)
		if(!is_in_viewcone(id, Origin, 1))
			continue
		if(entity_range(id, i) >= get_pcvar_float(g_cvar_radiusdamage))
			continue
		
		ExecuteHamB(Ham_TakeDamage, i, 0, id, get_pcvar_float(g_cvar_damage), DMG_BURN)
	}
}

public fw_UpdateClientData_Post_dc(id, sendweapons, cd_handle)
{
	if(!is_user_alive(id) || !is_user_connected(id))
		return FMRES_IGNORED
	if(get_user_weapon(id) != CSW_CANNON || !g_had_cannon[id])
		return FMRES_IGNORED
	
	set_cd(cd_handle, CD_flNextAttack, get_gametime() + 0.001) 
	
	return FMRES_HANDLED
}

public fw_CmdStart_dc(id, uc_handle, seed)
{
	if(!is_user_alive(id) || !is_user_connected(id))
		return FMRES_IGNORED
	if(get_user_weapon(id) != CSW_CANNON || !g_had_cannon[id])
		return FMRES_IGNORED
	
	static CurButton
	CurButton = get_uc(uc_handle, UC_Buttons)
	
	if(CurButton & IN_ATTACK)
	{
		CurButton &= ~IN_ATTACK
		set_uc(uc_handle, UC_Buttons, CurButton)
		
		dragoncannon_shoothandle(id)
	}
	
	return FMRES_HANDLED
}

public fw_SetModel_dc(entity, model[])
{
	if(!pev_valid(entity))
		return FMRES_IGNORED
	
	static szClassName[33]
	pev(entity, pev_classname, szClassName, charsmax(szClassName))
	
	if(!equal(szClassName, "weaponbox"))
		return FMRES_IGNORED
	
	static id
	id = pev(entity, pev_owner)
	
	if(equal(model, DEFAULT_W_MODEL))
	{
		static weapon
		weapon = fm_find_ent_by_owner(-1, weapon_cannon, entity)
		
		if(!pev_valid(weapon))
			return FMRES_IGNORED
		
		if(g_had_cannon[id])
		{
			set_pev(weapon, pev_impulse, WEAPON_SECRET_CODE)
			set_pev(weapon, pev_ammo, g_cannon_ammo[id])
			
			engfunc(EngFunc_SetModel, entity, WeaponModel[MODEL_W])
			remove_dragoncannon(id)
			
			return FMRES_SUPERCEDE
		}
	}
	
	return FMRES_IGNORED
}

public fw_Spawn_Post(id)
{
	remove_dragoncannon(id)
}

public fw_AddToPlayer_Post(ent, id)
{
	if(!pev_valid(ent))
		return HAM_IGNORED
	
	if(pev(ent, pev_impulse) == WEAPON_SECRET_CODE)
	{
		remove_dragoncannon(id)
		
		g_had_cannon[id] = 1
		g_got_firsttime[id] = 0
		g_cannon_ammo[id] = pev(ent, pev_ammo)
	}
	
	message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("WeaponList"), _, id)
	write_string(g_had_cannon[id] == 1 ? "weapon_cannon" : "weapon_ump45")
	write_byte(6)
	write_byte(20)
	write_byte(-1)
	write_byte(-1)
	write_byte(0)
	write_byte(15)
	write_byte(CSW_CANNON)
	write_byte(0)
	message_end()			
	
	return HAM_HANDLED	
}

public fw_item_postframe(ent)
{
	if(!is_valid_ent(ent))
		return HAM_IGNORED
	
	static id
	id = pev(ent, pev_owner)
	
	if(!is_user_alive(id) || !is_user_connected(id))
		return HAM_IGNORED
	
	if(get_user_weapon(id) != CSW_SALAMANDER || !g_had_salamander[id])
		return HAM_IGNORED
	
	if(!is_reloading[id])
	{
		static iAnim
		iAnim = pev(id, pev_weaponanim)
		
		if(iAnim == RELOAD_ANIM)
			play_weapon_anim(id, IDLE_ANIM)
	}
	
	static salamander
	salamander = fm_find_ent_by_class(-1, "weapon_m249")
	
	set_pdata_int(salamander, 54, 0, 4)
	
	return HAM_HANDLED
}

public fw_item_addtoplayer(ent, id)
{
	if(!is_valid_ent(ent))
		return HAM_IGNORED
	
	if(entity_get_int(ent, EV_INT_impulse) == 701)
	{
		g_had_salamander[id] = true
		g_ammo[id] = pev(ent, pev_iuser3)
		entity_set_int(id, EV_INT_impulse, 0)
		
		play_weapon_anim(id, DRAW_ANIM)
		set_task(1.0, "make_wpn_canfire", id)
		
		return HAM_HANDLED
	}		
	
	return HAM_HANDLED
}

public Round_Restart ( ) {
	
	g_FuriensWin = 0;
	g_AntiFuriensWin = 0;
}

public UpdateHudScore ( ) { 
	
	set_dhudmessage ( 0, 100, 200, -1.0, 0.04, 0, 6.0, 10.1 );
	show_dhudmessage ( 0, "[ FR ] - vs - [ AF ]" );
	
	set_hudmessage ( 213, 0, 0, -1.0, 0.07, 0, 6.0, 10.1 );
	show_hudmessage ( 0, "%d - %d", g_FuriensWin, g_AntiFuriensWin );
} 

public check_lastinv(id)
{
	if(!is_user_alive(id) || !is_user_connected(id))
		return PLUGIN_HANDLED
	
	if(get_user_weapon(id) == CSW_SALAMANDER && g_had_salamander[id])
	{
		set_task(0.5, "start_check_draw", id)
	}
	
	return PLUGIN_CONTINUE
}

public start_check_draw(id)
{
	if(can_fire[id])
		can_fire[id] = false
}

public event_curweapon(id)
{
	if(is_user_alive(id) && get_user_weapon(id) == CSW_SALAMANDER && g_had_salamander[id] )
	{
		set_pev(id, pev_viewmodel2, v_model)
		set_pev(id, pev_weaponmodel2, p_model)
	}
}

public fw_weapon_deploy(ent)
{
	static id
	id = pev(ent, pev_owner)
	
	if(!is_user_alive(id) || !is_user_connected(id) )
		return HAM_IGNORED
	
	if(!g_had_salamander[id])
		return HAM_IGNORED
	
	can_fire[id] = false
	
	play_weapon_anim(id, DRAW_ANIM)
	set_task(1.0, "make_wpn_canfire", id)
	
	return HAM_HANDLED
}

public make_wpn_canfire(id)
{
	can_fire[id] = true
}

public fw_weapon_reload(ent)
{
	static id
	id = pev(ent, pev_owner)
	
	if(!is_user_alive(id) || !is_user_connected(id) )
		return HAM_IGNORED
	
	if(get_user_weapon(id) != CSW_SALAMANDER && !g_had_salamander[id])
		return HAM_IGNORED
	
	return HAM_SUPERCEDE
}

public client_PostThink(id)
{
	if(is_user_alive(id) && is_user_connected(id))
	{
		if(g_had_salamander[id] && get_user_weapon(id) != CSW_SALAMANDER)
		{
			if(can_fire[id])
				can_fire[id] = false
			
			if(is_reloading[id])
			{
				is_reloading[id] = false
				if(task_exists(id+TASK_RELOAD)) remove_task(id+TASK_RELOAD)
			}			
			} else if(g_had_salamander[id] && get_user_weapon(id) == CSW_SALAMANDER) {
			static salamander
			salamander = fm_get_user_weapon_entity(id, CSW_M249)
			
			cs_set_weapon_ammo(salamander, g_ammo[id])
		}
	}
	
}

public fw_SetModel(entity, model[])
{
	if(!is_valid_ent(entity))
		return FMRES_IGNORED;
	
	static szClassName[33]
	entity_get_string(entity, EV_SZ_classname, szClassName, charsmax(szClassName))
	
	if(!equal(szClassName, "weaponbox"))
		return FMRES_IGNORED;
	
	static iOwner
	iOwner = entity_get_edict(entity, EV_ENT_owner)
	
	if(equal(model, "models/w_m249.mdl"))
	{
		static iStoredAugID
		iStoredAugID = find_ent_by_owner(-1, "weapon_m249", entity)
		
		if(!is_valid_ent(iStoredAugID))
			return FMRES_IGNORED;
		
		if(g_had_salamander[iOwner])
		{
			entity_set_int(iStoredAugID, EV_INT_impulse, 701)
			g_had_salamander[iOwner] = false
			set_pev(iStoredAugID, pev_iuser3, g_ammo[iOwner])
			entity_set_model(entity, w_model)
			
			return FMRES_SUPERCEDE;
		}
	}
	
	return FMRES_IGNORED;
}

public fw_UpdateClientData_Post(id, sendweapons, cd_handle)
{
	if(!is_user_alive(id) || !is_user_connected(id) )
		return FMRES_IGNORED
	
	if(get_user_weapon(id) != CSW_SALAMANDER || !g_had_salamander[id])
		return FMRES_IGNORED
	
	set_cd(cd_handle, CD_flNextAttack, halflife_time() + 0.001)  
	
	return FMRES_HANDLED
}

public fw_cmdstart(id, uc_handle, seed)
{
	if(!is_user_alive(id) || !is_user_connected(id))
		return FMRES_IGNORED
	
	if(get_user_weapon(id) != CSW_SALAMANDER || !g_had_salamander[id])
		return FMRES_IGNORED
	
	static Button
	Button = get_uc(uc_handle, UC_Buttons)
	
	if(Button & IN_ATTACK)
	{
		if((get_gametime() - get_pcvar_float(cvar_fire_delay) > g_last_fire[id]))
		{
			if(can_fire[id] && !is_reloading[id])
			{
				if(g_ammo[id] > 0)
				{
					if(pev(id, pev_weaponanim) != SHOOT_ANIM)
						play_weapon_anim(id, SHOOT_ANIM)
					
					if(task_exists(id+TASK_FIRE)) remove_task(id+TASK_FIRE)
					is_firing[id] = true
					throw_fire(id)
					emit_sound(id, CHAN_WEAPON, "weapons/flamegun-2.wav", 1.0, ATTN_NORM, 0, PITCH_NORM)
					g_ammo[id]--
				}
				
			}
			g_last_fire[id] = get_gametime()
		}
		} else {
		if(is_firing[id])
		{
			if(!task_exists(id+TASK_FIRE))
			{
				set_task(0.1, "stop_fire", id+TASK_FIRE)
				emit_sound(id, CHAN_WEAPON, "weapons/flamegun-2.wav", 1.0, ATTN_NORM, 0, PITCH_NORM)
			}
		}
		
	}
	
	if(Button & IN_RELOAD)
	{
		if(!is_reloading[id] && !is_firing[id])
		{
			static curammo, require_ammo, bpammo
			
			curammo = g_ammo[id]
			bpammo = cs_get_user_bpammo(id, CSW_SALAMANDER)
			require_ammo = get_pcvar_num(cvar_max_clip) - curammo
			
			if(bpammo > require_ammo)
			{
				g_reload_ammo[id] = require_ammo
				} else {
				g_reload_ammo[id] = bpammo
			}
			
			if(g_ammo[id] < get_pcvar_num(cvar_max_clip) && bpammo > 0)
			{
				is_reloading[id] = true
				play_weapon_anim(id, RELOAD_ANIM)
				
				set_task(5.0, "finish_reload", id+TASK_RELOAD)
			}
		}
	}
	
	Button &= ~IN_ATTACK
	set_uc(uc_handle, UC_Buttons, Button)
	
	Button &= ~IN_RELOAD
	set_uc(uc_handle, UC_Buttons, Button)
	
	return FMRES_HANDLED
}

public ham_player_kill(victim, attacker, corpse, args[])
{
	
	
	
	if ( get_user_team ( victim ) == 1 ) {
		
		new vVictimOrigin[3], vAttackerorigin[3]; 
		get_user_origin( victim, vVictimOrigin ); 
		get_user_origin( attacker, vAttackerorigin ); 
		
		switch (random_num(0, 2))
		{
			case 0:
			{
				
				message_begin(MSG_ONE,SVC_TEMPENTITY,{0,0,0},attacker)
				
				write_byte(TE_SPRITETRAIL)
				write_coord(vAttackerorigin[0]) 
				write_coord(vAttackerorigin[1]) 
				write_coord(vAttackerorigin[2]) 
				write_coord(vVictimOrigin[0]) 
				write_coord(vVictimOrigin[1]) 
				write_coord(vVictimOrigin[2]) 
				write_short(g_damage) 
				write_byte(5) 
				write_byte(15) 
				write_byte(3) 
				write_byte(2) 
				write_byte(6) 
				message_end()
			}
			case 1:
			{
				message_begin(MSG_ONE,SVC_TEMPENTITY,{0,0,0},attacker)
				
				write_byte(TE_SPRITETRAIL)
				write_coord(vAttackerorigin[0]) 
				write_coord(vAttackerorigin[1]) 
				write_coord(vAttackerorigin[2]) 
				write_coord(vVictimOrigin[0]) 
				write_coord(vVictimOrigin[1]) 
				write_coord(vVictimOrigin[2]) 
				write_short(g_damages) 
				write_byte(5) 
				write_byte(15) 
				write_byte(3) 
				write_byte(2) 
				write_byte(6) 
				message_end()
			}
		}	
	}
}

public fw_CmdStart(id, uc_handle, seed)
{
	if(id > 32)
		return PLUGIN_HANDLED
	
	if(!is_user_alive(id) ) 
		return PLUGIN_HANDLED
	
	if((get_uc(uc_handle, UC_Buttons) & IN_ATTACK2) && !(pev(id, pev_oldbuttons) & IN_ATTACK2))
	{
		new szClip, szAmmo
		new szWeapID = get_user_weapon(id, szClip, szAmmo)
		if(szWeapID == CSW_MP5NAVY && g_has_k1ases[id])
		{
			weapon_ability(id)
		}
		
	}
	
	return PLUGIN_HANDLED
}

public weapon_ability(id)
{
	if(!is_user_alive(id) || g_ammoclaw[id] <= 0 || g_delay[id])
		return;
	
	set_pdata_float(id, m_flNextAttack, 1.0, PLAYER_LINUX_XTRA_OFF)
	UTIL_PlayWeaponAnimation(id, 6)
	
	new aimOrigin[3]
	get_user_origin(id, aimOrigin, 3)
	
	message_begin(MSG_BROADCAST,SVC_TEMPENTITY); 
	write_byte(TE_EXPLOSION); // TE_EXPLOSION
	write_coord(aimOrigin[0]); // origin x
	write_coord(aimOrigin[1]); // origin y
	write_coord(aimOrigin[2]); // origin z
	write_short(sprites_exp_index); // sprites
	write_byte(40); // scale in 0.1's
	write_byte(30); // framerate
	write_byte(14); // flags 
	message_end(); // message end
	
	
	new Float:aimOrigin2[3]
	
	static iVictim
	iVictim = -1
	
	aimOrigin2[0] = float(aimOrigin[0])
	aimOrigin2[1] = float(aimOrigin[1])
	aimOrigin2[2] = float(aimOrigin[2])
	
	while((iVictim = find_ent_in_sphere(iVictim, aimOrigin2, get_pcvar_float(cvar_rad))) != 0)
	{
		// Non-player entity
		if(is_user_connected(iVictim))
		{
			if(is_user_alive(iVictim)) radius_damage1(id,iVictim)
		}
	}
	
	g_ammoclaw[id] -= 1
	g_delay[id] = 1
	set_task(float(get_pcvar_num(cvar_k1ases_delay)),"can_use",id)
	client_print(id,print_center,"[Claw Ammo: %d]",g_ammoclaw[id])
	emit_sound(id, CHAN_WEAPON,explode_sound, VOL_NORM, ATTN_NORM, 0, PITCH_NORM)
	
}
public radius_damage1(iAttacker, iVictim)
{
	ExecuteHamB(Ham_TakeDamage, iVictim , iAttacker , iAttacker, get_pcvar_float(cvar_k1ases_claw), DMG_BULLET);
}
public can_use(id)
{
	g_delay[id] = 0
}
public fw_SetModel_k1asus(entity, model[])
{
	if(!is_valid_ent(entity))
		return FMRES_IGNORED;
	
	static szClassName[33]
	entity_get_string(entity, EV_SZ_classname, szClassName, charsmax(szClassName))
	
	if(!equal(szClassName, "weaponbox"))
		return FMRES_IGNORED;
	
	static iOwner
	
	iOwner = entity_get_edict(entity, EV_ENT_owner)
	
	if(equal(model, "models/w_mp5.mdl"))
	{
		static iStoredSVDID
		
		iStoredSVDID = find_ent_by_owner(ENG_NULLENT, "weapon_mp5navy", entity)
		
		if(!is_valid_ent(iStoredSVDID))
			return FMRES_IGNORED;
		
		if(g_has_k1ases[iOwner])
		{
			entity_set_int(iStoredSVDID, EV_INT_WEAPONKEY, k1ases_WEAPONKEY)
			g_has_k1ases[iOwner] = false
			g_delay[iOwner] = 0
			
			entity_set_model(entity, k1ases_W_MODEL)
			
			return FMRES_SUPERCEDE;
		}
	}
	
	
	return FMRES_IGNORED;
}

public give_k1ases(id)
{
	drop_weapons(id, 1);
	oldweap[id] = CSW_KNIFE
	new iWep2 = give_item(id,"weapon_mp5navy")
	if( iWep2 > 0 )
	{
		cs_set_weapon_ammo(iWep2, get_pcvar_num(cvar_clip_k1ases))
		cs_set_user_bpammo (id, CSW_MP5NAVY, get_pcvar_num(cvar_k1ases_ammo))
	}
	UTIL_PlayWeaponAnimation(id, 2)
	set_pdata_float(id, m_flNextAttack, 1.5, PLAYER_LINUX_XTRA_OFF)
	g_has_k1ases[id] = true;
	g_ammoclaw[id] = get_pcvar_num(cvar_k1asesammo )
	client_print(id,print_center,"[Claw Ammo: %d]",g_ammoclaw[id])
	
}

public fw_k1ases_AddToPlayer(k1ases, id)
{
	if(!is_valid_ent(k1ases) || !is_user_connected(id))
		return HAM_IGNORED;
	
	if(entity_get_int(k1ases, EV_INT_WEAPONKEY) == k1ases_WEAPONKEY)
	{
		g_has_k1ases[id] = true
		
		entity_set_int(k1ases, EV_INT_WEAPONKEY, 0)
		
		return HAM_HANDLED;
	}
	
	return HAM_IGNORED;
}

public fw_UseStationary_Post(entity, caller, activator, use_type)
{
	if (use_type == USE_STOPPED && is_user_connected(caller))
		replace_weapon_models(caller, get_user_weapon(caller))
}

public fw_Item_Deploy_Post(weapon_ent)
{
	static owner
	owner = fm_cs_get_weapon_ent_owner(weapon_ent)
	
	static weaponid
	weaponid = cs_get_weapon_id(weapon_ent)
	
	replace_weapon_models(owner, weaponid)
}

public CurrentWeapon(id)
{
	replace_weapon_models(id, read_data(2))
}

replace_weapon_models(id, weaponid) {
	switch (weaponid)
	{
		case CSW_MP5NAVY:
		{
			
			if(g_has_k1ases[id])
			{
				set_pev(id, pev_viewmodel2, k1ases_V_MODEL)
				set_pev(id, pev_weaponmodel2, k1ases_P_MODEL)
				if(oldweap[id] != CSW_MP5NAVY) 
				{
					UTIL_PlayWeaponAnimation(id, 2)
					set_pdata_float(id, m_flNextAttack, 1.5, PLAYER_LINUX_XTRA_OFF)
				}
				
			}
		}
	}
	oldweap[id] = weaponid
}

public fw_UpdateClientData_Post_k1asus(Player, SendWeapons, CD_Handle) {
	if(!is_user_alive(Player) || (get_user_weapon(Player) != CSW_MP5NAVY) || !g_has_k1ases[Player])
		return FMRES_IGNORED
	
	set_cd(CD_Handle, CD_flNextAttack, halflife_time () + 0.001)
	return FMRES_HANDLED
}

public fw_k1ases_PrimaryAttack(Weapon)
{
	new Player = get_pdata_cbase(Weapon, 41, 4)
	
	if (!g_has_k1ases[Player])
		return;
	
	pev(Player,pev_punchangle,cl_pushangle_k1asus[Player])
	
	g_clip_ammo[Player] = cs_get_weapon_ammo(Weapon)
}

public fwPlaybackEvent(flags, invoker, eventid, Float:delay, Float:origin[3], Float:angles[3], Float:fparam1, Float:fparam2, iParam1, iParam2, bParam1, bParam2)
{
	if ((eventid != g_orig_event_k1ases))
		return FMRES_IGNORED
	if (!(1 <= invoker <= g_MaxPlayers))
		return FMRES_IGNORED
	
	playback_event(flags | FEV_HOSTONLY, invoker, eventid, delay, origin, angles, fparam1, fparam2, iParam1, iParam2, bParam1, bParam2)
	return FMRES_SUPERCEDE
}

public fw_k1ases_PrimaryAttack_Post(Weapon)
{
	new Player = get_pdata_cbase(Weapon, 41, 4)
	
	new szClip, szAmmo
	get_user_weapon(Player, szClip, szAmmo)
	if(Player > 0 && Player < 33)
	{
		//if(!g_has_k1ases[Player])
		//{
		//if(szClip > 0) emit_sound(Player, CHAN_WEAPON, "weapons/famas-1.wav", VOL_NORM, ATTN_NORM, 0, PITCH_NORM)
		//}
		if(g_has_k1ases[Player])
		{
			new Float:push[3]
			pev(Player,pev_punchangle,push)
			xs_vec_sub(push,cl_pushangle_k1asus[Player],push)
			
			xs_vec_mul_scalar(push,get_pcvar_float(cvar_recoil_k1ases),push)
			xs_vec_add(push,cl_pushangle_k1asus[Player],push)
			set_pev(Player,pev_punchangle,push)
			
			if (!g_clip_ammo[Player])
				return
			
			emit_sound(Player, CHAN_WEAPON, Fire_Sounds[0], VOL_NORM, ATTN_NORM, 0, PITCH_NORM)
			UTIL_PlayWeaponAnimation(Player, 3)
			set_pdata_float(Player, m_flNextAttack, get_pcvar_float(cvar_k1ases_fire), PLAYER_LINUX_XTRA_OFF)
		}
	}
}

public fw_TakeDamage(victim, inflictor, attacker, Float:damage)
{
	if (victim != attacker && is_user_connected(attacker))
	{
		if(get_user_weapon(attacker) == CSW_MP5NAVY)
		{
			if(g_has_k1ases[attacker])
				SetHamParamFloat(4, damage * get_pcvar_float(cvar_dmg_k1ases))
		}
	}
}

public message_DeathMsg(msg_id, msg_dest, id)
{
	static szTruncatedWeapon[33], iAttacker, iVictim
	
	get_msg_arg_string(4, szTruncatedWeapon, charsmax(szTruncatedWeapon))
	
	iAttacker = get_msg_arg_int(1)
	iVictim = get_msg_arg_int(2)
	
	if(!is_user_connected(iAttacker) || iAttacker == iVictim)
		return PLUGIN_CONTINUE
	
	if(equal(szTruncatedWeapon, "famas") && get_user_weapon(iAttacker) == CSW_MP5NAVY)
	{
		if(g_has_k1ases[iAttacker])
			set_msg_arg_string(4, "famas")
	}
	
	return PLUGIN_CONTINUE
}

public k1ases__ItemPostFrame(weapon_entity) {
	new id = pev(weapon_entity, pev_owner)
	if (!is_user_connected(id))
		return HAM_IGNORED;
	
	if (!g_has_k1ases[id])
		return HAM_IGNORED;
	
	new Float:flNextAttack = get_pdata_float(id, m_flNextAttack, PLAYER_LINUX_XTRA_OFF)
	
	new iBpAmmo = cs_get_user_bpammo(id, CSW_MP5NAVY);
	new iClip = get_pdata_int(weapon_entity, m_iClip, WEAP_LINUX_XTRA_OFF)
	
	new fInReload = get_pdata_int(weapon_entity, m_fInReload, WEAP_LINUX_XTRA_OFF) 
	
	if( fInReload && flNextAttack <= 0.0 )
	{
		new j = min(get_pcvar_num(cvar_clip_k1ases) - iClip, iBpAmmo)
		
		set_pdata_int(weapon_entity, m_iClip, iClip + j, WEAP_LINUX_XTRA_OFF)
		cs_set_user_bpammo(id, CSW_MP5NAVY, iBpAmmo-j);
		
		set_pdata_int(weapon_entity, m_fInReload, 0, WEAP_LINUX_XTRA_OFF)
		fInReload = 0
	}
	
	return HAM_IGNORED;
}

public k1ases__Reload(weapon_entity) {
	new id = pev(weapon_entity, pev_owner)
	if (!is_user_connected(id))
		return HAM_IGNORED;
	
	if (!g_has_k1ases[id])
		return HAM_IGNORED;
	
	g_k1ases_TmpClip[id] = -1;
	
	new iBpAmmo = cs_get_user_bpammo(id, CSW_MP5NAVY);
	new iClip = get_pdata_int(weapon_entity, m_iClip, WEAP_LINUX_XTRA_OFF)
	
	if (iBpAmmo <= 0)
		return HAM_SUPERCEDE;
	
	if (iClip >= get_pcvar_num(cvar_clip_k1ases))
		return HAM_SUPERCEDE;
	
	
	g_k1ases_TmpClip[id] = iClip;
	
	return HAM_IGNORED;
}

public k1ases__Reload_Post(weapon_entity) {
	new id = pev(weapon_entity, pev_owner)
	if (!is_user_connected(id))
		return HAM_IGNORED;
	
	if (!g_has_k1ases[id])
		return HAM_IGNORED;
	
	if (g_k1ases_TmpClip[id] == -1)
		return HAM_IGNORED;
	
	set_pdata_int(weapon_entity, m_iClip, g_k1ases_TmpClip[id], WEAP_LINUX_XTRA_OFF)
	
	set_pdata_float(weapon_entity, m_flTimeWeaponIdle, k1ases_RELOAD_TIME, WEAP_LINUX_XTRA_OFF)
	
	set_pdata_float(id, m_flNextAttack, k1ases_RELOAD_TIME, PLAYER_LINUX_XTRA_OFF)
	
	set_pdata_int(weapon_entity, m_fInReload, 1, WEAP_LINUX_XTRA_OFF)
	
	// relaod animation
	UTIL_PlayWeaponAnimation(id, 1)
	
	return HAM_IGNORED;
}

public finish_reload(id)
{
	id -= TASK_RELOAD
	
	g_ammo[id] += g_reload_ammo[id]
	cs_set_user_bpammo(id, CSW_SALAMANDER, cs_get_user_bpammo(id, CSW_SALAMANDER) - g_reload_ammo[id])
	is_reloading[id] = false
}

public stop_fire(id)
{
	id -= TASK_FIRE
	
	is_firing[id] = false
	if(pev(id, pev_weaponanim) != SHOOT_END_ANIM)
		play_weapon_anim(id, SHOOT_END_ANIM)	
}

public throw_fire(id)
{
	new iEnt = create_entity("env_sprite")
	new Float:vfVelocity[3]
	
	velocity_by_aim(id, 500, vfVelocity)
	xs_vec_mul_scalar(vfVelocity, 0.4, vfVelocity)
	
	// add velocity of Owner for ent
	new Float:fOwnerVel[3], Float:vfAttack[3], Float:vfAngle[3]
	pev(id, pev_angles, vfAngle)
	//pev(id, pev_origin, vfAttack)
	get_weapon_attackment(id, vfAttack, 20.0)
	vfAttack[2] -= 7.0
	//vfAttack[1] += 7.0
	pev(id, pev_velocity, fOwnerVel)
	fOwnerVel[2] = 0.0
	xs_vec_add(vfVelocity, fOwnerVel, vfVelocity)
	
	// set info for ent
	set_pev(iEnt, pev_movetype, MOVETYPE_FLY)
	set_pev(iEnt, pev_rendermode, kRenderTransAdd)
	set_pev(iEnt, pev_renderamt, 150.0)
	set_pev(iEnt, PEV_ENT_TIME, get_gametime() + 1.5)	// time remove
	set_pev(iEnt, pev_scale, 0.2)
	set_pev(iEnt, pev_nextthink, halflife_time() + 0.05)
	
	set_pev(iEnt, pev_classname, fire_classname)
	engfunc(EngFunc_SetModel, iEnt, fire_spr_name)
	set_pev(iEnt, pev_mins, Float:{-1.0, -1.0, -1.0})
	set_pev(iEnt, pev_maxs, Float:{1.0, 1.0, 1.0})
	set_pev(iEnt, pev_origin, vfAttack)
	set_pev(iEnt, pev_gravity, 0.01)
	set_pev(iEnt, pev_velocity, vfVelocity)
	vfAngle[1] += 30.0
	set_pev(iEnt, pev_angles, vfAngle)
	set_pev(iEnt, pev_solid, SOLID_BBOX)
	set_pev(iEnt, pev_owner, id)
	set_pev(iEnt, pev_iuser2, 1)
}

public fw_think(iEnt)
{
	if ( !pev_valid(iEnt) ) return;
	
	new Float:fFrame, Float:fScale, Float:fNextThink
	pev(iEnt, pev_frame, fFrame)
	pev(iEnt, pev_scale, fScale)
	
	// effect exp
	new iMoveType = pev(iEnt, pev_movetype)
	if (iMoveType == MOVETYPE_NONE)
	{
		fNextThink = 0.015
		fFrame += 1.0
		
		if (fFrame > 21.0)
		{
			engfunc(EngFunc_RemoveEntity, iEnt)
			return
		}
	}
	
	// effect normal
	else
	{
		fNextThink = 0.045
		fFrame += 1.0
		fFrame = floatmin(21.0, fFrame)
	}
	
	fScale = (entity_range(iEnt, pev(iEnt, pev_owner)) / 500) * 3.0
	
	set_pev(iEnt, pev_frame, fFrame)
	set_pev(iEnt, pev_scale, fScale)
	set_pev(iEnt, pev_nextthink, halflife_time() + fNextThink)
	
	
	// time remove
	new Float:fTimeRemove
	pev(iEnt, PEV_ENT_TIME, fTimeRemove)
	if (get_gametime() >= fTimeRemove)
	{
		engfunc(EngFunc_RemoveEntity, iEnt)
		return;
	}
}

public fw_touch(ent, id)
{
	set_pev(ent, pev_movetype, MOVETYPE_NONE)
	set_pev(ent, pev_solid, SOLID_NOT)	
	
	if(!is_valid_ent(id))
		return FMRES_IGNORED
	
	if(!is_user_alive(id) || !is_user_connected(id))
		return FMRES_IGNORED
	
	if(pev(ent, pev_iuser2) == 1)
	{
		set_pev(ent, pev_iuser2, 0)
		
		static attacker, ent_kill
		
		attacker = pev(ent, pev_owner)
		ent_kill = fm_get_user_weapon_entity(id, CSW_KNIFE)
		
		
		ExecuteHam(Ham_TakeDamage, id, ent_kill, attacker, random_float(get_pcvar_float(cvar_dmgrd_start), get_pcvar_float(cvar_dmgrd_end)), DMG_BULLET)		
	}
	return FMRES_HANDLED
}

public Hook_Select(id)
{
	engclient_cmd(id, "weapon_p228")
	return PLUGIN_HANDLED
}


public dropcmd(id) {
	if(g_hasM79[id] && hasOnHandM79[id]) {
		new Float:Aim[3],Float:origin[3]
		VelocityByAim(id, 64, Aim)
		entity_get_vector(id,EV_VEC_origin,origin)
		
		origin[0] += Aim[0]
		origin[1] += Aim[1]
		
		new m79 = create_entity("info_target")
		entity_set_string(m79,EV_SZ_classname,"m79")
		entity_set_model(m79,m79_W_MODEL)	
		
		entity_set_size(m79,Float:{-2.0,-2.0,-2.0},Float:{5.0,5.0,5.0})
		entity_set_int(m79,EV_INT_solid,1)
		
		entity_set_int(m79,EV_INT_movetype,6)
		entity_set_int(m79, EV_INT_iuser1, grenade_count[id])
		entity_set_vector(m79,EV_VEC_origin,origin)
		g_hasM79[id] = false
		g_canShoot[id] = false
		grenade_count[id] = false
		hasOnHandM79[id] = false
		remowegun(id)
		remove_icon(id)
		set_task(0.15,"hud_clear",id)
		return PLUGIN_HANDLED
	} 
	return PLUGIN_CONTINUE
}

// remove gun  and save all guns
public remowegun(id) { 
	new wpnList[32] 
	new number
	get_user_weapons(id,wpnList,number) 
	for (new i = 0;i < number ;i++) { 
		if (wpnList[i] == CSW_P228) {
			fm_strip_user_gun(id, wpnList[i])
		}
	}
} 

//play anim
public playanim(player,anim)
{
	set_pev(player, pev_weaponanim, anim)
	message_begin(MSG_ONE, SVC_WEAPONANIM, {0, 0, 0}, player)
	write_byte(anim)
	write_byte(pev(player, pev_body))
	message_end()
}


// Current weapon player is holding
public Event_CurrentWeapon_m79(id)
{
	
	if(!is_user_connected(id))
		return
	
	// Read weapon ID
	new weaponID = read_data(2)
	
	if (weaponID == CSW_P228)
	{
		if (g_hasM79[id])
		{
			message_begin(MSG_ONE, get_user_msgid("CurWeapon"), {0,0,0}, id) 
			write_byte(1) 
			write_byte(CSW_KNIFE) 
			write_byte(0) 
			message_end()
			hasOnHandM79[id] = true
			remove_task(id+TASK_FRSTSHT)
			
			message_begin(MSG_ONE,get_user_msgid("StatusIcon"),{0,0,0},id);
			write_byte(1); // status (0=hide, 1=show, 2=flash)
			write_string("item_battery"); // sprite name
			write_byte(210) 
			write_byte(105)
			write_byte(30)
			message_end()
			
			set_task(0.1, "hud_init", id+TASK_HUDAMMO)
			
			if(!draw_wpn[id])
			{
				playanim(id, anim_draw)
				emit_sound(id, CHAN_WEAPON, m79_GRENADE_DRAW, VOL_NORM, ATTN_NORM, 0, PITCH_NORM)
				// View model
				entity_set_string(id, EV_SZ_viewmodel, m79_V_MODEL)
				
				// Player model
				entity_set_string(id, EV_SZ_weaponmodel, m79_P_MODEL)
				canfire[id] = false
				draw_wpn[id] = true
				set_task(1.6,"delayshottsk", id+TASK_FRSTSHT)
			}
			else if(get_gametime() - g_last_shot_time[id] > delayshot) playanim(id, anim_idle)
			}
		else
		{
			// View model
			entity_set_string(id, EV_SZ_viewmodel, "models/v_p228.mdl")
			
			// Player model
			entity_set_string(id, EV_SZ_weaponmodel, "models/p_p228.mdl")
			hasOnHandM79[id] = false
			remove_icon(id)
			set_task(0.15,"hud_clear",id)
		}
	} 
	else 
	{
		draw_wpn[id] = false
		hasOnHandM79[id] = false
		remove_icon(id)
		set_task(0.15,"hud_clear",id)
	}
}

public fw_AddToPlayer_m79( iEnt, Player )
{
	if( pev_valid( iEnt ) && is_user_connected( Player ) )
	{
		if(g_hasM79[Player])
			Sprite(Player)
	}
} 


public remove_icon(id) 
{
	if(!is_user_connected(id))
		return
	
	message_begin(MSG_ONE,get_user_msgid("StatusIcon"),{0,0,0},id)
	write_byte(0) 
	write_string("item_battery") // sprite name
	message_end()
	return
}

public delayshottsk(taskid){
	canfire[ID_SHT] = true
}

// New round started
public Event_NewRound(id) {
	for (new i = 0; i < get_maxplayers(); i++) {
		g_hasM79[i] = false
	}
	m79 = 0
	draw_wpn[id] = false
	Event_CurrentWeapon_m79(id)
}

public Sprite(id) {
	
	message_begin(MSG_ONE, gmsgWeaponList, {0,0,0}, id)
	
	write_string("weapon_m79_sisa")
	
	write_byte(9)
	write_byte(52)
	write_byte(-1)
	write_byte(-1)
	write_byte(1)
	write_byte(3)
	write_byte(1)
	write_byte(0)
	message_end()
	
}



public event_start_m79()
{
	m79 = 0
	remove_m79()
}

public remove_m79() {
	new nextitem = find_ent_by_class(-1, "m79")
	while ((nextitem = find_ent_by_class(-1, "m79")) != 0) {
		remove_entity(nextitem)
	}
	return PLUGIN_CONTINUE
}		

// Player killed
public fw_PlayerKilled_m79(victim, attacker, shouldgib) {
	if (g_hasM79[victim])		
	{
		// Reset all
		g_hasM79[victim] = false
		g_canShoot[victim] = false
		g_FireM79[victim] = false
		grenade_count[victim] = 0
		
		// Remove HUD
		remove_task(victim+TASK_HUDAMMO)
		remowegun(victim)
		remove_icon(victim)
	}
}




//give wpn
public give_weapon(id, ammo){
	g_hasM79[id] = true
	g_canShoot[id] = true
	g_FireM79[id] = false
	give_item(id,"weapon_p228")
	if(ammo == -1) grenade_count[id] = 10
	else grenade_count[id] = ammo
	set_task(0.1, "hud_init", id+TASK_HUDAMMO)
}


// Command start
public fw_CmdStart_m79(id, uc_handle, seed)  {
	// Don't have our weapon	
	if (!hasOnHandM79[id] || !is_user_alive(id)){
		g_FireM79[id] = false
		return FMRES_IGNORED
	}
	// Get buttons	
	new buttons = get_uc(uc_handle, UC_Buttons)
	
	// Attack1 button pressed
	if(buttons & IN_ATTACK)
	{
		g_FireM79[id] = true
		
		// Remove attack button from their button mask
		buttons &= ~IN_ATTACK
		set_uc(uc_handle, UC_Buttons, buttons)
	}
	else 
		g_FireM79[id] = false	
	
	return FMRES_HANDLED
}

// Player think after
public fw_PlayerPostThink_m79(id)
{
	// Don't have our weapon	
	if (!g_hasM79[id])
		return FMRES_IGNORED
	
	// ignore dead
	if (!is_user_alive(id))
		return FMRES_IGNORED
	
	// Ignore zombies/nemesis	
	// If player is firing	
	if (g_FireM79[id] && hasOnHandM79[id])
	{
		// Grenades are more or equal to 1
		if (grenade_count[id] >= 1)
		{
			// Player can shoot
			if (get_gametime() - g_last_shot_time[id] > delayshot && canfire[id])
			{
				// Fire!!!
				FireGrenade(id)
				
				// Decrease nade count
				grenade_count[id]--
				
				// Without this HUD is not updating correctly
				set_task(0.1, "hud_init", id+TASK_HUDAMMO)
				
				// Remember last shot time
				g_last_shot_time[id] = get_gametime()
			}
		}
		else
		{
			// Don't have nades
			client_print(id, print_center, "У вас больше нет гранат!")
		}
	}
	
	return FMRES_IGNORED
}


//block anim standart wpn 
public fw_UpdateClientData_Post_m79(id, sendweapons, cd_handle) {
	// Don't have our weapon	
	if (!hasOnHandM79[id] || !is_user_alive(id)) return FMRES_IGNORED
	// Block default sounds	
	if (hasOnHandM79[id] && g_hasM79[id] && g_canShoot[id]) set_cd(cd_handle, CD_flNextAttack, halflife_time() + 0.001 ); 
	return FMRES_HANDLED
}

// Fire gremade
public FireGrenade(id) {
	// Set animation
	if(grenade_count[id]>1){ 
		playanim(id, anim_shot1)
		set_task(0.4,"reloadsnd",id)
		set_task(1.6,"reloadin",id)
		set_task(2.3,"reloadon",id)
		} else { 
		playanim(id, anim_shot2)
	}
	// Get origin. angle and velocity
	new Float:fAngle[3], Float:fVelocity[3]
	pev(id, pev_v_angle, fAngle)
	
	// Create ent
	new grenade = create_entity("info_target")
	
	// Not grenade
	if (!grenade) return PLUGIN_HANDLED
	
	// Classname
	entity_set_string(grenade, EV_SZ_classname, "m79_grenade")
	
	// Model
	entity_set_model(grenade, m79_GRENADE_MODEL)
	
	new Float:vOrigin[3],Float:vUp[3]
	pev(id, pev_origin, vOrigin)
	
	global_get(glb_v_up, vUp)
	new up = 17
	vOrigin[0] = vOrigin[0] + vUp[0] * up
	vOrigin[1] = vOrigin[1] + vUp[1] * up
	vOrigin[2] = vOrigin[2] + vUp[2] * up
	
	// Origin
	entity_set_origin(grenade, vOrigin)
	
	// Angles
	entity_set_vector(grenade, EV_VEC_angles, fAngle)
	
	// Size
	new Float:MinBox[3] = {-1.0, -1.0, -1.0}
	new Float:MaxBox[3] = {1.0, 1.0, 1.0}
	entity_set_vector(grenade, EV_VEC_mins, MinBox)
	entity_set_vector(grenade, EV_VEC_maxs, MaxBox)
	
	// Interaction
	entity_set_int(grenade, EV_INT_solid, SOLID_SLIDEBOX)
	
	// Movetype
	entity_set_int(grenade, EV_INT_movetype, MOVETYPE_TOSS)
	
	// Owner
	entity_set_edict(grenade, EV_ENT_owner, id)
	
	// Effects
	entity_set_int(grenade, EV_INT_effects, EF_BRIGHTLIGHT)
	
	// Velocity
	VelocityByAim(id, 1500, fVelocity)
	
	
	entity_set_vector(grenade, EV_VEC_velocity, fVelocity)
	
	// Launch sound
	emit_sound(grenade, CHAN_WEAPON, m79_GRENADE_SHOOT, VOL_NORM, ATTN_NORM, 0, PITCH_NORM)
	
	message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
	write_byte(TE_BEAMFOLLOW) // Temporary entity ID
	write_short(grenade) // Entity
	write_short(sTrail) // Sprite index
	write_byte(3) // Life
	write_byte(1) // Line width
	write_byte(255) // Red
	write_byte(255) // Green
	write_byte(255) // Blue
	write_byte(255) // Alpha
	message_end() 
	return PLUGIN_CONTINUE
}	

public reloadsnd(id){
	emit_sound(id, CHAN_WEAPON, m79_GRENADE_CLIPOUT, VOL_NORM, ATTN_NORM, 0, PITCH_NORM)
}
public reloadin(id){
	emit_sound(id, CHAN_WEAPON, m79_GRENADE_CLIPIN, VOL_NORM, ATTN_NORM, 0, PITCH_NORM)
}
public reloadon(id){
	emit_sound(id, CHAN_WEAPON, m79_GRENADE_CLIPON, VOL_NORM, ATTN_NORM, 0, PITCH_NORM)
}

// We hit something!!!
public pfn_touch(pentru, ptd) {
	// If ent is valid
	if (pev_valid(pentru))
	{	
		// Get classnames
		static classname[32], classnameptd[32]
		pev(pentru, pev_classname, classname, 31)
		
		
		// Our ent
		if(equal(classname, "m79_grenade"))
		{
			// Get it's origin
			new Float:originF[3]
			pev(pentru, pev_origin, originF)
			
			// Draw explosion
			message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
			write_byte(TE_EXPLOSION) // Temporary entity ID
			engfunc(EngFunc_WriteCoord, originF[0]) // engfunc because float
			engfunc(EngFunc_WriteCoord, originF[1])
			engfunc(EngFunc_WriteCoord, originF[2])
			write_short(sExplo) // Sprite index
			write_byte(50) // Scale
			write_byte(15) // Framerate
			write_byte(0) // Flags
			message_end()
			
			// Draw smoke
			message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
			write_byte(TE_SMOKE) // Temporary entity IF
			engfunc(EngFunc_WriteCoord, originF[0]) // Pos X
			engfunc(EngFunc_WriteCoord, originF[1]) // Pos Y
			engfunc(EngFunc_WriteCoord, originF[2]) // Pos Z
			write_short(sSmoke) // Sprite index
			write_byte(75) // Scale
			write_byte(15) // Framerate
			message_end()
			
			// Get owner
			new owner = pev(pentru, pev_owner)
			
			new Max_Damage = get_pcvar_num(cvar_granade_max_damage)
			new Damage_Radius = get_pcvar_num(cvar_granade_damage_radius)
			
			// Loop through all players
			for(new i = 1; i < get_maxplayers(); i++)
			{
				// Alive...
				if (is_user_alive(i) == 1 && is_user_connected(owner))
				{
					
					// A zombie/nemesis
					if (get_user_team ( i ) == 1)
					{
						// Get victims origin and distance
						new VictimOrigin[3], Distance , origin[3]
						get_user_origin(i, VictimOrigin)
						// Get distance between victim and epicenter
						
						origin[0] = floatround(originF[0])
						origin[1] = floatround(originF[1])
						origin[2] = floatround(originF[2])
						
						Distance = get_distance(VictimOrigin, origin)
						
						if (Distance <= Damage_Radius)
						{
							// Start screen shake
							message_begin(MSG_ONE, g_msgScreenShake, {0,0,0}, i)
							write_short(1<<14) // Amount
							write_short(1<<14) // Duration
							write_short(1<<14) // Frequency
							message_end()
							new Damage
							Damage = Max_Damage - floatround(floatmul(float(Max_Damage), floatdiv(float(Distance), float(Damage_Radius))))
							make_knockback(i, originF, 1.5*float(Damage))	
							do_victim(i,owner,Damage)					
						}
					}
				}
				// Destroy ent
				set_pev(pentru, pev_flags, FL_KILLME)
			}
			// We hit breakable
			if(pev_valid(ptd)){
				pev(ptd, pev_classname, classnameptd, 31)
				if (equali(classnameptd, "func_breakable"))
				{
					// Destroy it
					force_use(pentru,ptd)
				}
		}	}
	}	
	if(is_valid_ent(pentru)) {
		new classname[32]
		entity_get_string(pentru,EV_SZ_classname,classname,31)
		
		if(equal(classname, "m79")) {
			if(is_valid_ent(ptd)) {
				new id = ptd
				if(id > 0 && id < 34) {
					
					// Pick up weapon
					give_weapon(id,entity_get_int(pentru, EV_INT_iuser1))
					remove_entity(pentru)
					
				}
			}
		}
	}
}	

public do_victim (victim,attacker,Damage) {
	
	new namek[32],namev[32],authida[35],authidv[35],teama[32],teamv[32]
	
	get_user_name(victim,namev,31)
	get_user_name(attacker,namek,31)
	get_user_authid(victim,authidv,34)
	get_user_authid(attacker,authida,34)
	get_user_team(victim,teamv,31)
	get_user_team(attacker,teama,31)
	static DamageTake[33]
	if(Damage >= get_user_health(victim)) {
		
		if(get_cvar_num("mp_logdetail") == 3) {
			
			log_message("^"%s<%d><%s><%s>^" attacked ^"%s<%d><%s><%s>^" with ^"grenade^" (hit ^"chest^") (Damage ^"%d^") (health ^"0^")",
			namek,get_user_userid(attacker),authida,teama,namev,get_user_userid(victim),authidv,teamv,Damage)
			
		}
		
		set_user_frags(attacker,get_user_frags(attacker) + 1 )
		
		set_msg_block(gmsgDeathMsg,BLOCK_ONCE)
		set_msg_block(gmsgScoreInfo,BLOCK_ONCE)
		
		ExecuteHamB(Ham_Killed, victim, attacker, 0)
		
		replace_dm(attacker,victim,0)
		
		log_message("^"%s<%d><%s><%s>^" killed ^"%s<%d><%s><%s>^" with ^"grenade^"",
		namek,get_user_userid(attacker),authida,teama,namev,get_user_userid(victim),authidv,teamv)
		
	}
	
	else {
		set_user_health(victim,get_user_health(victim) - Damage )
		
		if(get_cvar_num("mp_logdetail") == 3) {
			
			log_message("^"%s<%d><%s><%s>^" attacked ^"%s<%d><%s><%s>^" with ^"missile^" (hit ^"chest^") (Damage ^"%d^") (health ^"%d^")",
			namek,get_user_userid(attacker),authida,teama,namev,get_user_userid(victim),authidv,teamv,Damage,get_user_health(victim))
			
		}
		
	}
	if(DamageTake[attacker] >= 5000){
		DamageTake[attacker] -= 5000
	} else DamageTake[attacker] += Damage
	
}

public replace_dm (id,tid,tbody) {
	
	//Update killers scorboard with new info
	message_begin(MSG_ALL,gmsgScoreInfo)
	write_byte(id)
	write_short(get_user_frags(id))
	write_short(get_user_deaths(id))
	write_short(0)
	write_short(get_user_team(id))
	message_end()
	
	//Update victims scoreboard with correct info
	message_begin(MSG_ALL,gmsgScoreInfo)
	write_byte(tid)
	write_short(get_user_frags(tid))
	write_short(get_user_deaths(tid))
	write_short(0)
	write_short(get_user_team(tid))
	message_end()
	
	//Headshot Kill
	if (tbody == 1) {
		
		message_begin( MSG_ALL, gmsgDeathMsg,{0,0,0},0)
		write_byte(id)
		write_byte(tid)
		write_string("grenade")
		message_end()
		
	}
	
	//Normal Kill
	else {
		
		message_begin( MSG_ALL, gmsgDeathMsg,{0,0,0},0)
		write_byte(id)
		write_byte(tid)
		write_byte(0)
		write_string("grenade")
		message_end()
		
	}
	
	return PLUGIN_CONTINUE
	
}

// HUD init	
public hud_init(taskid) {
	new HudAmmo[65]
	
	format(HudAmmo, 64, "Grenades Left: [%d]", grenade_count[ID_HUDAMMO])
	
	message_begin(MSG_ONE, g_msgStatusText, {0,0,0}, ID_HUDAMMO)
	write_byte(0)
	write_string(HudAmmo) // Text
	message_end()
	
}
public hud_clear(id) {
	
	message_begin(MSG_ONE, g_msgStatusText, {0,0,0}, id)
	write_byte(0)
	write_string("") // Text
	message_end()
}

public FurienCurrentWeapon ( id ) {
	
	new szKnife = get_user_weapon ( id );
	if ( szKnife == CSW_KNIFE ) {
		if ( katana_knife [ id ] && szKnife == CSW_KNIFE ) {
			
			set_pev ( id, pev_viewmodel2, katana_knife_v_model );
			set_pev ( id, pev_weaponmodel2, katana_knife_p_model );
			//set_task ( 0.1, "Katana_Damage", id );
			
		}
		
		if ( double_katana_knife [ id ] && szKnife == CSW_KNIFE ) {
			
			set_pev ( id, pev_viewmodel2, double_katana_v_knife_model );
			set_pev ( id, pev_weaponmodel2, double_katana_p_knife_model );
			//set_task ( 0.1, "Double_Katana_Damage", id );
			
		}
		
		if ( super_knife [ id ] && szKnife == CSW_KNIFE ) {
			
			set_pev ( id, pev_viewmodel2, super_knife_v_model );
			set_pev ( id, pev_weaponmodel2, super_knife_p_model );
			//set_task ( 0.1, "Super_Knife_Damage", id );
			
		}
		
		if ( infinity_knife [ id ] && szKnife == CSW_KNIFE ) {
			
			set_pev ( id, pev_viewmodel2, infinity_knife_v_model );
			set_pev ( id, pev_weaponmodel2, infinity_knife_p_model );
			//set_task ( 0.1, "Infinity_Knife_Damage", id );
			
		}
		
		if ( vip_axe_knife [ id ] && szKnife == CSW_KNIFE ) {
			
			set_pev ( id, pev_viewmodel2, axe_knife_v_model );
			set_pev ( id, pev_weaponmodel2, axe_knife_p_model );
			//set_task ( 0.1, "VIP_Axe_Knife_Damage", id );
			
		}
		
		if ( elf_knife [ id ] && szKnife == CSW_KNIFE ) {
			
			set_pev ( id, pev_viewmodel2, elf_knife_model );
			//set_task ( 0.1, "Elf_Knife_Damage", id );
			
		}
		
		if ( ignes_knife [ id ] && szKnife == CSW_KNIFE ) {
			
			set_pev ( id, pev_viewmodel2, ignes_knife_model );
			//set_task ( 0.1, "Ignes_Knife_Damage", id );
			
		}
		
		if ( trainer [ id ] && szKnife == CSW_KNIFE ) {
			
			set_pev ( id, pev_viewmodel2, trainer_v_model );
			set_pev ( id, pev_weaponmodel2, trainer_p_model );
			//set_task ( 0.1, "Trainer_Knife_Damage", id );
			
		}
		
		if ( super_knife_shop [ id ] && szKnife == CSW_KNIFE ) {
			set_pev ( id, pev_viewmodel2, super_knife_shop_v_model );
			//set_task ( 0.1, "SK_Knife_Damage", id );
		}
		
		if ( super_knife_shop2 [ id ] && szKnife == CSW_KNIFE ) {
			set_pev ( id, pev_viewmodel2, super_knife_shop_v_model2 );
			set_pev ( id, pev_weaponmodel2, super_knife_shop_p_model2 );
			//set_task ( 0.1, "SK2_Knife_Damage", id );
		}
	}
	
	if ( strike_grenade [ id ] && szKnife == CSW_HEGRENADE && get_user_team ( id ) == 1 ) {
		
		set_pev ( id, pev_viewmodel2, strike_grenade_v_model );
		set_pev ( id, pev_weaponmodel2, strike_grenade_p_model );
		
	}
	
	if ( strike_grenade2 [ id ] && szKnife == CSW_HEGRENADE && get_user_team ( id ) == 1 ) {
		
		set_pev ( id, pev_viewmodel2, strike_grenade_v_model );
		set_pev ( id, pev_weaponmodel2, strike_grenade_p_model );
		
	}
	
	if ( strike_grenade3 [ id ] && szKnife == CSW_HEGRENADE && get_user_team ( id ) == 1 ) {
		
		set_pev ( id, pev_viewmodel2, strike_grenade_v_model );
		set_pev ( id, pev_weaponmodel2, strike_grenade_p_model );
		
	}
	
	else if ( !user_has_weapon ( id, CSW_KNIFE ) || ( !katana_knife [ id ] || !double_katana_knife || !super_knife || !infinity_knife || !vip_axe_knife || !ignes_knife || !elf_knife || !trainer ) )
	{
		give_item ( id, "weapon_knife" );
		return 1;
	}
	return 1;
}

public AntiFurienCurrentWeapon ( id ) {
	
	new szWeapon = get_user_weapon ( id );
	
	if ( szWeapon == CSW_MP5NAVY ) {
		if ( dual_mp5 [ id ] && szWeapon == CSW_MP5NAVY ) {
			
			set_pev ( id, pev_viewmodel2, dual_mp5_v_model );
			set_pev ( id, pev_weaponmodel2, dual_mp5_p_model );
			
		}
	}
	
	
	if ( szWeapon == CSW_P90 ) {
		if ( hunter [ id ] && szWeapon == CSW_P90 ) {
			
			set_pev ( id, pev_viewmodel2, hunter_v_model );
			set_pev ( id, pev_weaponmodel2, hunter_p_model );
			//set_task ( 0.1, "Hunter_Damage", id );
			
		}
		
		if ( thompson [ id ] && szWeapon == CSW_P90 ) {
			
			set_pev ( id, pev_viewmodel2, thompson_v_model );
			set_pev ( id, pev_weaponmodel2, thompson_p_model );
			//set_task ( 0.1, "Thompson_Damage", id );
			
		}
		
		if ( warrior [ id ] && szWeapon == CSW_P90 ) {
			
			set_pev ( id, pev_viewmodel2, warrior_v_model );
			set_pev ( id, pev_weaponmodel2, warrior_p_model );
			//set_task ( 0.1, "Warrior_Damage", id );
			
		}
		
		if ( deklowaz [ id ] && szWeapon == CSW_P90 ) {
			
			set_pev ( id, pev_viewmodel2, deklowaz_v_model );
			set_pev ( id, pev_weaponmodel2, deklowaz_p_model );
			//set_task ( 0.1, "Deklowaz_Damage", id );
			
		}
	}
	
	if ( szWeapon == CSW_GALIL ) {
		if ( mage [ id ] && szWeapon == CSW_GALIL ) {
			
			set_pev ( id, pev_viewmodel2, mage_v_model );
			set_pev ( id, pev_weaponmodel2, mage_p_model );
			//set_task ( 0.1, "Mage_Damage", id );
			
		}
	}
	
	if ( szWeapon == CSW_FAMAS ) {
		if ( rogue [ id ] && szWeapon == CSW_FAMAS ) {
			
			set_pev ( id, pev_viewmodel2, rogue_v_model );
			set_pev ( id, pev_weaponmodel2, rogue_p_model );
			//set_task ( 0.1, "Rogue_Damage", id );
			
		}
	}
	
	if ( szWeapon == CSW_SG552 ) {
		if ( shaman [ id ] && szWeapon == CSW_SG552 ) {
			
			set_pev ( id, pev_viewmodel2, shaman_v_model );
			set_pev ( id, pev_weaponmodel2, shaman_p_model );
			//set_task ( 0.1, "Shaman_Damage", id );
			
		}
	}
	
	if ( szWeapon == CSW_USP ) {
		if ( uspx [ id ] && szWeapon == CSW_USP ) {
			
			set_pev ( id, pev_viewmodel2, uspx_v_model );
			set_pev ( id, pev_weaponmodel2, uspx_p_model );
			
		}
	}
	
	if ( szWeapon == CSW_SMOKEGRENADE ) {
		if ( flare [ id ] && szWeapon == CSW_SMOKEGRENADE && get_user_team ( id ) == 2 ) {
			
			set_pev ( id, pev_viewmodel2, flare_v_model );
			
		}
	}
	
	return 1;
}

public Spawn(id) {
	remove_task(id);
	HasChose[id] = false;
	HE_Cooldown[id] = 0;
	GodMode_Cooldown[id] = 0;
	GodMode_DurationCooldown[id] = 0;
	Drop_Cooldown[id] = 0;
	Freeze_Cooldown[id] = 0;
	remove_freeze ( id );
	DragEnd ( id );
	Drag_Cooldown[id] = 0;
	Not_Cooldown[id] = false;
	Teleport_Cooldown[id] = 0;
}

public remove_freeze(id) {
	if (!Frozen[id] || !is_user_alive(id)) return;
	
	Frozen[id] = false;
	set_task(0.2, "set_normal", id);
	engfunc(EngFunc_EmitSound, id, CHAN_BODY, FROSTBREAK_SND[random_num(0, sizeof FROSTBREAK_SND - 1)], 1.0, ATTN_NORM, 0, PITCH_NORM);
	fm_set_rendering(id);
	static Float:origin2F[3];
	pev(id, pev_origin, origin2F);
	engfunc(EngFunc_MessageBegin, MSG_PVS, SVC_TEMPENTITY, origin2F, 0);
	write_byte(TE_BREAKMODEL);
	engfunc(EngFunc_WriteCoord, origin2F[0]);
	engfunc(EngFunc_WriteCoord, origin2F[1]);
	engfunc(EngFunc_WriteCoord, origin2F[2]+24.0);
	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(FreezeSprite);
	write_byte(10);
	write_byte(25);
	write_byte(BREAK_GLASS);
	message_end();
}

public DragEnd(id) { // drags end function
	LastHook[id] = get_gametime();
	Hooked[id] = 0;
	BeamRemove(id);
	Drag_I[id] = false;
	Unable2move[id] = false;
	if(!Not_Cooldown[id] && HasPower[id] == 6) {
		Drag_Cooldown[id] = get_pcvar_num(CvarDragCooldown);
		set_task(1.0, "DragShowHUD", id, _, _, "b");
		Not_Cooldown[id] = true;
		set_hudmessage(0, 100, 200, 0.05, 0.60, 0, 1.0, 1.1, 0.0, 0.0, -11);
		if(get_pcvar_num(CvarDragCooldown) != 1) {
			show_hudmessage(id, "Puterea iti va reveni in: %d secunde",get_pcvar_num(CvarDragCooldown));
		}
		if(get_pcvar_num(CvarDragCooldown) == 1) {
			show_hudmessage(id, "Puterea iti va reveni in: %d secunda",get_pcvar_num(CvarDragCooldown));
		}
	}
}

public BeamRemove(id) { // remove beam
	message_begin(MSG_BROADCAST, SVC_TEMPENTITY);
	write_byte(99);	//TE_KILLBEAM
	write_short(id);	//entity
	message_end();
}

//------| Client Death |------//
public Death() {
	new i = read_data ( 2 )
	remove_task(read_data(2));
	HE_Cooldown[read_data(2)] = 0;
	GodMode_Cooldown[read_data(2)] = 0;
	GodMode_DurationCooldown[read_data(2)] = 0;
	Drop_Cooldown[read_data(2)] = 0;
	Freeze_Cooldown[read_data(2)] = 0;
	Freeze_Cooldown[read_data(2)] = 0;
	remove_freeze ( i );
	BeamRemove ( i );
	Drag_Cooldown[read_data(2)] = 0;
	if (Hooked[read_data(2)])
		DragEnd ( i );
	
	Not_Cooldown[read_data(2)] = false;
	Teleport_Cooldown[read_data(2)] = 0;
}

//------| Client Power |------//
public Power(id)  {
	new target, body;
	static Float:start[3];
	static Float:aim[3];
	
	pev(id, pev_origin, start);
	fm_get_aim_origin(id, aim);
	
	start[2] += 16.0; // raise
	aim[2] += 16.0; // raise
	
	if ( is_user_alive(id) && HasPower[id] == 4) {
		
		if (Drop_Cooldown[id]) {
			ColorChat(id, GREEN, "%s Puterea iti va reveni in^4 %d^3 secunde .^4", szPrefix, Drop_Cooldown[id]);			
			return PLUGIN_CONTINUE;
		}
		get_user_aiming (id, target, body, CvarDropDistance);
		if(is_user_alive(target) && get_user_team(id) != get_user_team(target)) {
			message_begin(MSG_BROADCAST ,SVC_TEMPENTITY);
			write_byte(TE_EXPLOSION);
			engfunc(EngFunc_WriteCoord, aim[0]);
			engfunc(EngFunc_WriteCoord, aim[1]);
			engfunc(EngFunc_WriteCoord, aim[2]);
			write_short(DropSprite2);
			write_byte(10);
			write_byte(30);
			write_byte(4);
			message_end();
			
			emit_sound(id, CHAN_WEAPON, DROP_HIT_SND, VOL_NORM, ATTN_NORM, 0, PITCH_NORM);
			set_task ( 0.1, "Drop", target );
			message_begin(MSG_ONE, get_user_msgid("ScreenFade"), {0,0,0}, id);
			write_short(1<<10);
			write_short(1<<10);
			write_short(0x0000);
			write_byte(230);
			write_byte(0);
			write_byte(0);
			write_byte(50);
			message_end();
			message_begin(MSG_ONE, get_user_msgid("ScreenFade"), {0,0,0}, target);
			write_short(1<<10);
			write_short(1<<10);
			write_short(0x0000);
			write_byte(230);
			write_byte(0);
			write_byte(0);
			write_byte(50);
			message_end();
		}	
		message_begin(MSG_BROADCAST,SVC_TEMPENTITY);
		write_byte(0);
		engfunc(EngFunc_WriteCoord,start[0]);
		engfunc(EngFunc_WriteCoord,start[1]);
		engfunc(EngFunc_WriteCoord,start[2]);
		engfunc(EngFunc_WriteCoord,aim[0]);
		engfunc(EngFunc_WriteCoord,aim[1]);
		engfunc(EngFunc_WriteCoord,aim[2]);
		write_short(DropSprite); // sprite index
		write_byte(0); // start frame
		write_byte(30); // frame rate in 0.1's
		write_byte(20); // life in 0.1's
		write_byte(50); // line width in 0.1's
		write_byte(50); // noise amplititude in 0.01's
		write_byte(0); // red
		write_byte(100); // green
		write_byte(0); // blue
		write_byte(100); // brightness
		write_byte(50); // scroll speed in 0.1's
		message_end();
		Drop_Cooldown[id] = get_pcvar_num(CvarDropCooldown);
		set_task(1.0, "DropShowHUD", id, _, _, "b");
		set_hudmessage(0, 100, 200, 0.05, 0.60, 0, 1.0, 1.1, 0.0, 0.0, -11);
		if(get_pcvar_num(CvarDropCooldown) != 1) {
			show_hudmessage(id, "Puterea iti va reveni in: %d secunde",get_pcvar_num(CvarDropCooldown));
		}
		if(get_pcvar_num(CvarDropCooldown) == 1) {
			show_hudmessage(id, "Puterea iti va reveni in: %d secunda",get_pcvar_num(CvarDropCooldown));
		}
		return PLUGIN_HANDLED;
	}
	
	else if (is_user_alive(id) && HasPower[id] == 5) {
		if (Freeze_Cooldown[id]) {
			ColorChat(id, GREEN, "%s Puterea iti va reveni in^4 %d^3 secunde .^4", szPrefix,Freeze_Cooldown[id]);
			return PLUGIN_CONTINUE;
		}
		get_user_aiming (id, target, body, CvarFreezeDistance);
		if(is_user_alive(target) && get_user_team(id) != get_user_team(target)) {	
			set_task ( 0.1, "Freeze", target );
			
			message_begin(MSG_ONE, get_user_msgid("ScreenFade"), {0,0,0}, id);
			write_short(1<<10);
			write_short(1<<10);
			write_short(0x0000);
			write_byte(0);
			write_byte(100);
			write_byte(200);
			write_byte(50);
			message_end();
			message_begin(MSG_ONE, get_user_msgid("ScreenFade"), {0,0,0}, target);
			write_short(1<<10);
			write_short(1<<10);
			write_short(0x0000);
			write_byte(0);
			write_byte(100);
			write_byte(200);
			write_byte(50);
			message_end();
		}	
		message_begin(MSG_BROADCAST,SVC_TEMPENTITY);
		write_byte(0);
		engfunc(EngFunc_WriteCoord,start[0]);
		engfunc(EngFunc_WriteCoord,start[1]);
		engfunc(EngFunc_WriteCoord,start[2]);
		engfunc(EngFunc_WriteCoord,aim[0]);
		engfunc(EngFunc_WriteCoord,aim[1]);
		engfunc(EngFunc_WriteCoord,aim[2]);
		write_short(FreezeSprite3); // sprite index
		write_byte(0); // start frame
		write_byte(30); // frame rate in 0.1's
		write_byte(20); // life in 0.1's
		write_byte(50); // line width in 0.1's
		write_byte(50); // noise amplititude in 0.01's
		write_byte(0); // red
		write_byte(100); // green
		write_byte(200); // blue
		write_byte(100); // brightness
		write_byte(50); // scroll speed in 0.1's
		message_end();
		set_user_health ( target, get_user_health ( target ) - 5 );
		set_dhudmessage ( 255, 0, 0, 0.02, 0.90, 0, 6.0, 1.0 );
		show_dhudmessage ( id, "-5 HP" );
		Freeze_Cooldown[id] = get_pcvar_num(CvarFreezeCooldown);
		set_task(1.0, "FreezeShowHUD", id, _, _, "b");
		set_hudmessage(0, 100, 200, 0.05, 0.60, 0, 1.0, 1.1, 0.0, 0.0, -11);
		if(get_pcvar_num(CvarFreezeCooldown) != 1) {
			show_hudmessage(id, "Puterea iti va reveni in: %d secunde",get_pcvar_num(CvarFreezeCooldown));
		}
		if(get_pcvar_num(CvarFreezeCooldown) == 1) {
			show_hudmessage(id, "Puterea iti va reveni in: %d secunda",get_pcvar_num(CvarFreezeCooldown));
		}
		return PLUGIN_HANDLED;
	}
	else if  (is_user_alive(id) && HasPower[id] == 7) {	
		if (Teleport_Cooldown[id]) {
			ColorChat(id, GREEN, "%s Puterea iti va reveni in^4 %d^3 secunde .^4", szPrefix, Teleport_Cooldown[id]);
			return PLUGIN_CONTINUE;
		}
		if (teleport(id)) {
			emit_sound(id, CHAN_STATIC, SOUND_BLINK, 1.0, ATTN_NORM, 0, PITCH_NORM);
			remove_task(id);
			Teleport_Cooldown[id] = get_pcvar_num(CvarTeleportCooldown);
			set_task(1.0, "TeleportShowHUD", id, _, _, "b");
			set_hudmessage(0, 100, 200, 0.05, 0.60, 0, 1.0, 1.1, 0.0, 0.0, -11);
			if(get_pcvar_num(CvarTeleportCooldown) != 1) {
				show_hudmessage(id, "Puterea iti va reveni in: %d secunde",get_pcvar_num(CvarTeleportCooldown));
			}
			if(get_pcvar_num(CvarTeleportCooldown) == 1) {
				show_hudmessage(id, "Puterea iti va reveni in: %d secunda",get_pcvar_num(CvarTeleportCooldown));
			}
			return PLUGIN_HANDLED;
		}
		else {
			Teleport_Cooldown[id] = 0;
			ColorChat(id, GREEN, "%s Pozitia de teleportare este invalida .", szPrefix);
			return PLUGIN_HANDLED;
		}
		return PLUGIN_HANDLED;
	}
	return PLUGIN_CONTINUE;
}

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);
	
	return true;
}

public cmdShowXp ( id ) {
	
	ColorChat ( id, GREEN, "%s Ai ^4%d^3 XP, iar levelul tau este ^4%s^3 .", szPrefix, eXP [ id ], Prefix [ Level [ id ] ] );
	ShowHud ( id );
	
}

public cmdSaveXp ( id ) {
	
	ColorChat ( id, GREEN, "%s Ti-ai salvat XP-ul cu succes .", szPrefix );
	ShowHud ( id );
	
}

public cmdShowLevel ( id ) {
	
	ColorChat ( id, GREEN, "%s Levelul tau este ^4%s^3 .", szPrefix, Prefix [ Level [ id ] ] );
	
}

public cmdShowLevels ( id ) {
	
	ColorChat ( id, GREEN, "%s In total sunt^4 30^3 levele .", szPrefix );
	
}

public cmdClearXp ( id ) {
	
	ColorChat ( id, GREEN, "%s Ti-ai sters XP-ul cu succes .", szPrefix );
	eXP [ id ] -= eXP [ id ];
	Level [ id ] -= Level [ id ];
}

public cmdRefreshXP ( id ) {
	
	Level [ id ] -= Level [ id ];
	ColorChat ( id, GREEN, "%s Ti-ai reimprospatat Xp-ul cu succes !", szPrefix );
	
	if ( !is_user_bot ( id ) && ( Level [ id ] < 30) && ( eXP [ id ] >= Levels [ Level [ id ] ] ) )
	{
		while ( eXP [ id ] >= Levels [ Level [ id ] ] )
		{
			Level [ id ] += 1;
		}
	}
}

public cmdRefreshXP2 ( id ) {
	
	Level [ id ] -= Level [ id ];
	// ColorChat ( id, GREEN, "%s Ti-ai reimprospatat Xp-ul cu succes !", szPrefix );
	
	if ( !is_user_bot ( id ) && ( Level [ id ] < 30) && ( eXP [ id ] >= Levels [ Level [ id ] ] ) )
	{
		while ( eXP [ id ] >= Levels [ Level [ id ] ] )
		{
			Level [ id ] += 1;
		}
	}
}

public cmdXpTop15 ( id ) {
	
	new i, count;
	static sort [ 33 ] [ 2 ], maxPlayers;
	
	if ( !maxPlayers ) maxPlayers = get_maxplayers ( );
	
	for ( i= 1; i <= maxPlayers; i++ )
	{
		sort [ count ][ 0 ] = i;
		sort [ count ][ 1 ] = Level [ i ];
		count++;
	}
	
	SortCustom2D ( sort,count, "stats_custom_compare" );
	
	new motd [ 1024 ], len;
	
	len = format ( motd, 1023, "<body bgcolor=#000000><center><font color=#FFB000><pre>" );
	len += format ( motd [ len ], 1023-len,"%s %-22.22s %3s^n", "#", "Name", "Level" );
	
	new players [ 32 ], num;
	get_players ( players, num );
	
	new b = clamp ( count,0,15 );
	
	new name [ 32 ], player;
	
	for ( new a = 0; a < b; a++ )
	{
		player = sort [ a ] [ 0 ];
		
		get_user_name ( player, name, 31 );		
		len += format ( motd [ len ], 1023-len,"%d %-22.22s %d^n", a+1, name, sort [ a ] [ 1 ] );
	}
	
	len += format ( motd [ len ], 1023-len,"</body></font></pre></center>" );
	show_motd(  id, motd, "Level Top 15" );
	
	return PLUGIN_CONTINUE;
}

public stats_custom_compare ( elem1 [ ], elem2 [ ] ) {
	
	if ( elem1 [ 1 ] > elem2 [ 1 ] ) return -1;
	else if ( elem1 [ 1 ] < elem2 [ 1 ] ) return 1;
		
	return 0;
}

public cmdGiveXp ( id, level, cid ) { 
	
	if(!cmd_access(id, level, cid, 3)) 
		return PLUGIN_HANDLED;
	
	new target[32], amount[21], reason[21], gplayers[32], players, num, i;
	
	read_argv(1, target, 31);
	read_argv(2, amount, 20);
	read_argv(3, reason, 20);
	
	new player = cmd_target(id, target, 8);
	
	if(!player)  
		return PLUGIN_HANDLED;
	
	new admin_name[32], player_name[32];
	get_user_name(id, admin_name, 31);
	get_user_name(player, player_name, 31);
	new expnum = str_to_num(amount);
	
	ColorChat ( 0, GREEN, "^4ADMIN ^3%s^1: ^1give ^4%s ^1xp to ^3%s ^1%s", admin_name, amount, player_name, reason );
	
	eXP [ player ] += expnum;
	cmdRefreshXP2 ( player );
	SaveData ( player );
	
	if(equali(target, "@All") || equali ( target, "all" ) ) {
		
		get_players(gplayers, num, "a");
		for(i = 0; i < num; i++) {
			players = gplayers[i];
			if(!is_user_connected(players))
				continue;
			eXP [ players ] += expnum;
			SaveData(players);
			ColorChat ( 0, GREEN, "^4ADMIN ^3%s^1: ^1give ^4%s ^1xp to ^3All Players ^1%s", admin_name, amount, reason );
		}
	}
	
	return PLUGIN_CONTINUE;
}

public cmdSetXp ( id, level, cid ) { 
	
	if(!cmd_access(id, level, cid, 3)) 
		return PLUGIN_HANDLED;
	
	new target[32], amount[21], reason[21];
	
	read_argv(1, target, 31);
	read_argv(2, amount, 20);
	read_argv(3, reason, 20);
	
	new player = cmd_target(id, target, 8);
	
	if(!player)  
		return PLUGIN_HANDLED;
	
	new admin_name[32], player_name[32];
	get_user_name(id, admin_name, 31);
	get_user_name(player, player_name, 31);
	
	new expnum = str_to_num(amount);
	ColorChat ( 0, GREEN, "^4ADMIN ^3%s^1: ^1set ^4%s ^1xp to ^3%s ^1%s", admin_name, amount, player_name, reason );
	
	eXP [ player ] = expnum;
	cmdRefreshXP2 ( player );
	SaveData ( player );
	
	return PLUGIN_CONTINUE;
}

public fwd_setmodel(ent, const model[]) {
	if(!pev_valid(ent) || !equal(model[9], "smokegrenade.mdl"))
		return FMRES_IGNORED;
	
	static classname[32]; pev(ent, pev_classname, classname, 31);
	if(equal(classname, "grenade") && 1)
	{
		engfunc(EngFunc_SetModel, ent, flare_w_model);
		set_pev(ent, pev_effects, EF_BRIGHTLIGHT);
		set_pev(ent, pev_iuser4, 1337);
		set_pev(ent, pev_nextthink, get_gametime() + 999.9);
		fm_set_rendering2(ent, kRenderFxGlowShell, 150, 150, 250, kRenderNormal, 16);
		
		return FMRES_SUPERCEDE;
	}
	return FMRES_IGNORED;
}

public fwd_think(ent) if(pev_valid(ent) && is_ent_flare(ent))
engfunc(EngFunc_RemoveEntity, ent);

public GetRandomPlayer ( ) { 
	
	new players[32], count;    
	get_players(players, count, "a");    
	
	if(count)              
	{
		new iPlayer = players[random(count)];
		
		new Name[32];
		get_user_name(iPlayer, Name, charsmax(Name));
		set_user_credits ( iPlayer, get_user_credits ( iPlayer ) + 1 );
		
		ColorChat ( iPlayer, GREEN, "%s Felicitari ! Ai primit^4 1^3 credit .^4", szPrefix );
		ColorChat ( 0, GREEN, "%s^4 %s^3 a primit^4 1^3 credit .^4", szPrefix, Name );
	}
}  

public GiveQuadBarrel(id, itemid)
{
	if(itemid != g_quad_barrel)
		return PLUGIN_HANDLED
	
	g_had_qb[id] = 1
	new ent = give_item(id, "weapon_xm1014")
	
	cs_set_weapon_ammo(ent, get_pcvar_num(cvar_default_clip))
	cs_set_user_bpammo(id, CSW_QB, 10)
	
	set_pdata_float(id, 83, 1.0, 4)
	set_weapon_anim(id, 4)
	
	return PLUGIN_CONTINUE
}

public check_draw_weapon(id)
{
	set_task(0.001, "do_check", id)
}

public do_check(id)
{
	if(get_user_weapon(id) == CSW_QB && g_had_qb[id])
	{
		set_weapon_anim(id, 4)
	}
}

public event_curweapon_quad(id)
{
	if(!is_user_alive(id) || !is_user_connected(id))
		return
	if(get_user_weapon(id) != CSW_QB || !g_had_qb[id])
		return	
	
	set_pev(id, pev_viewmodel2, qb_v_model)
	set_pev(id, pev_weaponmodel2, qb_p_model)
	
	return 
}

public fw_UpdateClientData_Post_qb(id, sendweapons, cd_handle)
{
	if(!is_user_alive(id) || !is_user_connected(id))
		return FMRES_IGNORED	
	if(get_user_weapon(id) != CSW_QB || !g_had_qb[id])
		return FMRES_IGNORED
	
	set_cd(cd_handle, CD_flNextAttack, halflife_time() + 0.001) 
	
	return FMRES_HANDLED
}

public TraceAttack(iEnt, iAttacker, Float:flDamage, Float:fDir[3], pentru, iDamageType)
{
	if(!is_user_alive(iAttacker) || !is_user_connected(iAttacker))
		return HAM_IGNORED			
	if(get_user_weapon(iAttacker) != CSW_QB || !g_had_qb[iAttacker])
		return HAM_IGNORED
	
	static Float:flEnd[3]
	get_tr2(pentru, TR_vecEndPos, flEnd)
	
	make_bullet(iAttacker, flEnd)
	
	return HAM_HANDLED
}

public fw_takedmg(victim, inflictor, attacker, Float:damage, damagebits)
{
	if(!is_user_alive(victim) || !is_user_alive(attacker))
		return HAM_IGNORED
	
	
	if(get_user_weapon(attacker) == CSW_QB && g_had_qb[attacker])
	{
		static Float:random_start, Float:random_end
		
		random_start = get_pcvar_float(cvar_randmg_start)
		random_end = get_pcvar_float(cvar_randmg_end)
		
		SetHamParamFloat(4, random_float(random_start, random_end))
	}
	
	return HAM_HANDLED
}

public make_bullet(id, Float:Origin[3])
{
	// Find target
	new target, body
	get_user_aiming(id, target, body, 999999)
	
	if(target > 0 && target <= get_maxplayers())
	{
		new Float:fStart[3], Float:fEnd[3], Float:fRes[3], Float:fVel[3]
		pev(id, pev_origin, fStart)
		
		// Get ids view direction
		velocity_by_aim(id, 64, fVel)
		
		// Calculate position where blood should be displayed
		fStart[0] = Origin[0]
		fStart[1] = Origin[1]
		fStart[2] = Origin[2]
		fEnd[0] = fStart[0]+fVel[0]
		fEnd[1] = fStart[1]+fVel[1]
		fEnd[2] = fStart[2]+fVel[2]
		
		// Draw traceline from victims origin into ids view direction to find
		// the location on the wall to put some blood on there
		new res
		engfunc(EngFunc_TraceLine, fStart, fEnd, 0, target, res)
		get_tr2(res, TR_vecEndPos, fRes)
		
		// Show some blood :)
		message_begin(MSG_BROADCAST, SVC_TEMPENTITY) 
		write_byte(TE_BLOODSPRITE)
		write_coord(floatround(fStart[0])) 
		write_coord(floatround(fStart[1])) 
		write_coord(floatround(fStart[2])) 
		write_short(g_bloodspray)
		write_short(g_blood)
		write_byte(70)
		write_byte(random_num(1,2))
		message_end()
		
		
		} else {
		new decal = 41
		
		// Check if the wall hit is an entity
		if(target)
		{
			// Put decal on an entity
			message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
			write_byte(TE_DECAL)
			write_coord(floatround(Origin[0]))
			write_coord(floatround(Origin[1]))
			write_coord(floatround(Origin[2]))
			write_byte(decal)
			write_short(target)
			message_end()
			} else {
			// Put decal on "world" (a wall)
			message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
			write_byte(TE_WORLDDECAL)
			write_coord(floatround(Origin[0]))
			write_coord(floatround(Origin[1]))
			write_coord(floatround(Origin[2]))
			write_byte(decal)
			message_end()
		}
		
		// Show sparcles
		message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
		write_byte(TE_GUNSHOTDECAL)
		write_coord(floatround(Origin[0]))
		write_coord(floatround(Origin[1]))
		write_coord(floatround(Origin[2]))
		write_short(id)
		write_byte(decal)
		message_end()
	}
}

public fm_cmdstart(id, uc_handle, seed)
{
	if(!is_user_alive(id) || !is_user_connected(id))
		return
	
	if(get_user_weapon(id) != CSW_QB || !g_had_qb[id])
		return 
	
	new CurButton
	CurButton = get_uc(uc_handle, UC_Buttons)
	
	if(CurButton & IN_RELOAD)
	{
		CurButton &= ~IN_RELOAD
		set_uc(uc_handle, UC_Buttons, CurButton)
		new ent = find_ent_by_owner(-1, "weapon_xm1014", id)
		
		if (!ent)
			return
		
		new fInReload = get_pdata_int(ent, m_fInReload, 4)
		
		new Float:flNextAttack ; flNextAttack = get_pdata_float(id, m_flNextAttack, 5)
		
		if (flNextAttack > 0.0)
			return
		
		if (fInReload)
		{
			set_weapon_anim(id, 0)
			return
		}
		if(cs_get_weapon_ammo(ent) >= get_pcvar_num(cvar_default_clip))
		{
			set_weapon_anim(id, 0)
			return
		}
		
		ham_reload(ent)
	}
	
	if(CurButton & IN_ATTACK2)
	{
		static Float:CurTime
		CurTime = get_gametime()
		
		if(CurTime - 4.0 > g_last_fire_qb[id])
		{
			static ent, ammo
			ent = find_ent_by_owner(-1, "weapon_xm1014", id)
			ammo = cs_get_weapon_ammo(ent)
			
			if(cs_get_weapon_ammo(ent) <= 0)
				return			
			
			for(new i = 0; i < ammo; i++)
			{
				ExecuteHamB(Ham_Weapon_PrimaryAttack, ent)
			}
			
			emit_sound(id, CHAN_WEAPON, qb_sound[4], 1.0, ATTN_NORM, 0, PITCH_NORM)
			set_weapon_anim(id, random_num(1, 2))
			
			g_last_fire_qb[id] = CurTime
		}
	}
	
	if(CurButton & IN_ATTACK)
	{
		static Float:CurTime
		CurTime = get_gametime()
		
		CurButton &= ~IN_ATTACK
		set_uc(uc_handle, UC_Buttons, CurButton)
		
		static ent
		ent = find_ent_by_owner(-1, "weapon_xm1014", id)
		
		if(cs_get_weapon_ammo(ent) <= 0 || get_pdata_int(ent, m_fInReload, XTRA_OFS_WEAPON))
			return
		
		if(CurTime - get_pcvar_float(cvar_delayattack) > g_last_fire2[id])
		{
			emit_sound(id, CHAN_WEAPON, qb_sound[4], 1.0, ATTN_NORM, 0, PITCH_NORM)
			
			ExecuteHamB(Ham_Weapon_PrimaryAttack, ent)
			set_weapon_anim(id, random_num(1, 2))
			
			g_last_fire2[id] = CurTime
		}
		
	}	
	
	return 
}

public ham_reload(iEnt)
{
	new id = pev(iEnt, pev_owner)
	
	if( g_had_qb[id])
	{
		static Cur_BpAmmo
		Cur_BpAmmo = cs_get_user_bpammo(id, CSW_QB)
		
		if(Cur_BpAmmo > 0)
		{
			set_pdata_int(iEnt, 55, 0, 4)
			set_pdata_float(id, 83, get_pcvar_float(cvar_reloadtime), 4)
			set_pdata_float(iEnt, 48, get_pcvar_float(cvar_reloadtime) + 0.5, 4)
			set_pdata_float(iEnt, 46, get_pcvar_float(cvar_reloadtime) + 0.25, 4)
			set_pdata_float(iEnt, 47, get_pcvar_float(cvar_reloadtime) + 0.25, 4)
			set_pdata_int(iEnt, 54, 1, 4)
			
			set_weapon_anim(id, 3)			
		}
		
		return HAM_HANDLED
	}
	return HAM_IGNORED
	
}

public fw_SetModel_qb(entity, model[])
{
	if(!is_valid_ent(entity))
		return FMRES_IGNORED;
	
	static szClassName[33]
	entity_get_string(entity, EV_SZ_classname, szClassName, charsmax(szClassName))
	
	if(!equal(szClassName, "weaponbox"))
		return FMRES_IGNORED;
	
	static iOwner
	iOwner = entity_get_edict(entity, EV_ENT_owner)
	
	if(equal(model, "models/w_xm1014.mdl"))
	{
		static weapon
		weapon = find_ent_by_owner(-1, "weapon_xm1014", entity)
		
		if(!is_valid_ent(weapon))
			return FMRES_IGNORED;
		
		if(g_had_qb[iOwner])
		{
			entity_set_int(weapon, EV_INT_impulse, 120)
			g_had_qb[iOwner] = 0
			set_pev(weapon, pev_iuser3, cs_get_weapon_ammo(weapon))
			entity_set_model(entity, qb_w_model)
			
			return FMRES_SUPERCEDE
		}
	}
	
	return FMRES_IGNORED;
}

public fw_item_addtoplayer_qb(ent, id)
{
	if(!is_valid_ent(ent))
		return HAM_IGNORED
	
	
	if(entity_get_int(ent, EV_INT_impulse) == 120)
	{
		g_had_qb[id] = 1
		cs_set_weapon_ammo(ent, pev(ent, pev_iuser3))
		
		entity_set_int(id, EV_INT_impulse, 0)
		check_draw_weapon(id)
		
		return HAM_HANDLED
	}		
	
	return HAM_HANDLED
}

public ham_priattack(ent)
{
	static id
	id = pev(ent, pev_owner)
	
	if(g_had_qb[id])
	{
		if(cs_get_weapon_ammo(ent) > 0)
		{
			emit_sound(id, CHAN_WEAPON, qb_sound[4], 1.0, ATTN_NORM, 0, PITCH_NORM)
		}
		
		set_pdata_float(id, 83, 0.3, 4)
	}
}

public ham_postframe(iEnt)
{
	new id = pev(iEnt, pev_owner)
	
	if(g_had_qb[id])
	{
		static iBpAmmo ; iBpAmmo = get_pdata_int(id, 381, XTRA_OFS_PLAYER)
		static iClip ; iClip = get_pdata_int(iEnt, m_iClip, XTRA_OFS_WEAPON)
		static iMaxClip ; iMaxClip = get_pcvar_num(cvar_default_clip)
		
		if(get_pdata_int(iEnt, m_fInReload, XTRA_OFS_WEAPON) && get_pdata_float(id, m_flNextAttack, 5) <= 0.0 )
		{
			new j = min(iMaxClip - iClip, iBpAmmo)
			set_pdata_int(iEnt, m_iClip, iClip + j, XTRA_OFS_WEAPON)
			set_pdata_int(id, 381, iBpAmmo-j, XTRA_OFS_PLAYER)
			
			set_pdata_int(iEnt, m_fInReload, 0, XTRA_OFS_WEAPON)
			cs_set_weapon_ammo(iEnt, get_pcvar_num(cvar_default_clip))
			
			return
		}
	}
}

public ShowSalamanderIcon ( id ) {
	
	if ( user_has_weapon ( id, CSW_M249 ) && ( salamander [ id ] ) ) {
		
		new iconstatus;
		iconstatus = get_user_msgid ( "StatusIcon" );
		
		if ( ! ( pev ( id,pev_button ) & FL_ONGROUND ) )
		{    
			message_begin ( MSG_ONE,iconstatus,{ 0,0,0 },id );
			write_byte ( 1 ); // status (0=hide, 1=show, 2=flash)
			write_string ( "dmg_heat" ); // sprite name
			write_byte ( 255 ); // red
			write_byte ( 0 ); // green
			write_byte ( 0 ); // blue
			message_end ( );
		}
		
	}
	
	if ( get_user_weapon ( id ) == CSW_M249 && ( salamander [ id ] ) ) {
		
		new iconstatus;
		iconstatus = get_user_msgid ( "StatusIcon" );
		
		if ( ! ( pev ( id,pev_button ) & FL_ONGROUND ) )
		{    
			message_begin ( MSG_ONE,iconstatus,{ 0,0,0 },id );
			write_byte ( 2 ); // status (0=hide, 1=show, 2=flash)
			write_string ( "dmg_heat" ); // sprite name
			write_byte ( 255 ); // red
			write_byte ( 0 ); // green
			write_byte ( 0 ); // blue
			message_end ( );
		}
	}
	
	if ( !salamander [ id ] || !user_has_weapon ( id, CSW_M249 ) ) {
		
		new iconstatus;
		iconstatus = get_user_msgid ( "StatusIcon" );
		
		if ( ! ( pev ( id,pev_button ) & FL_ONGROUND ) )
		{    
			message_begin ( MSG_ONE,iconstatus,{ 0,0,0 },id );
			write_byte ( 0 ); // status (0=hide, 1=show, 2=flash)
			write_string ( "dmg_heat" ); // sprite name
			write_byte ( 255 ); // red
			write_byte ( 0 ); // green
			write_byte ( 0 ); // blue
			message_end ( );
		}
	}
	
}

public fw_spawn ( id ) {
	if(g_had_salamander[id])
		g_had_salamander[id] = false
	
	if(task_exists(id+TASK_FIRE)) remove_task(id+TASK_FIRE)
	if(task_exists(id+TASK_RELOAD)) remove_task(id+TASK_RELOAD)
	
	remove_entity_name(fire_classname)
}

stock make_blood(const Float:vTraceEnd[3], Float:Damage, hitEnt) {
	new bloodColor = ExecuteHam(Ham_BloodColor, hitEnt);
	if(bloodColor == -1)
		return;
	
	new amount = floatround(Damage);
	
	amount *= 2; //according to HLSDK
	
	message_begin(MSG_BROADCAST, SVC_TEMPENTITY);
	write_byte(TE_BLOODSPRITE);
	write_coord(floatround(vTraceEnd[0]));
	write_coord(floatround(vTraceEnd[1]));
	write_coord(floatround(vTraceEnd[2]));
	write_short(BloodSpray);
	write_short(BloodDrop);
	write_byte(bloodColor);
	write_byte(min(max(3, amount/10), 16));
	message_end();
}

// Make knockback
public make_knockback(Victim, Float:origin[3], Float:maxspeed) {
	// Get and set velocity
	new Float:fVelocity[3];
	kickback(Victim, origin, maxspeed, fVelocity);
	entity_set_vector(Victim, EV_VEC_velocity, fVelocity);
	
	return(1);
}

// Extra calulation for knockback
stock kickback(ent, Float:fOrigin[3], Float:fSpeed, Float:fVelocity[3]) {
	// Find origin
	new Float:fEntOrigin[3];
	entity_get_vector(ent, EV_VEC_origin, fEntOrigin);
	
	// Do some calculations
	new Float:fDistance[3];
	fDistance[0] = fEntOrigin[0] - fOrigin[0];
	fDistance[1] = fEntOrigin[1] - fOrigin[1];
	fDistance[2] = fEntOrigin[2] - fOrigin[2];
	new Float:fTime =(vector_distance(fEntOrigin,fOrigin) / fSpeed);
	fVelocity[0] = fDistance[0] / fTime;
	fVelocity[1] = fDistance[1] / fTime;
	fVelocity[2] = fDistance[2] / fTime;
	
	return(fVelocity[0] && fVelocity[1] && fVelocity[2]);
}

stock death_message(Killer, Victim, ScoreBoard, const Weapon[]) {
	// Block death msg
	set_msg_block(get_user_msgid("DeathMsg"), BLOCK_SET);
	ExecuteHamB(Ham_Killed, Victim, Killer, 2);
	set_msg_block(get_user_msgid("DeathMsg"), BLOCK_NOT);
	
	// Death
	make_deathmsg(Killer, Victim, 0, Weapon);
	cs_set_user_money(Killer, cs_get_user_money(Killer) + 300);
	
	// Update score board
	if(ScoreBoard) {
		message_begin(MSG_BROADCAST, get_user_msgid("ScoreInfo"));
		write_byte(Killer); // id
		write_short(pev(Killer, pev_frags)); // frags
		write_short(cs_get_user_deaths(Killer)); // deaths
		write_short(0); // class?
		write_short(get_user_team(Killer)); // team
		message_end();
		
		message_begin(MSG_BROADCAST, get_user_msgid("ScoreInfo"));
		write_byte(Victim); // id
		write_short(pev(Victim, pev_frags)); // frags
		write_short(cs_get_user_deaths(Victim)); // deaths
		write_short(0); // class?
		write_short(get_user_team(Victim)); // team
		message_end();
	}
}

stock get_damage_body(body, Float:damage) {
	switch(body) {
		case HIT_HEAD: damage *= 4.0;
			case HIT_STOMACH: damage *= 1.1;
			case HIT_CHEST: damage *= 1.5;
			case HIT_LEFTARM: damage *= 0.77;
			case HIT_RIGHTARM: damage *= 0.77;
			case HIT_LEFTLEG: damage *= 0.75;
			case HIT_RIGHTLEG: damage *= 0.75;
			default: damage *= 1.0;
	}
	
	return floatround(damage);
}	

stock fm_get_user_bpammo(index, weapon) {
	static offset
	switch(weapon) {
		case CSW_AWP: offset = OFFSET_AMMO_338MAGNUM
			case CSW_SCOUT, CSW_AK47, CSW_G3SG1: offset = OFFSET_AMMO_762NATO
			case CSW_M249: offset = OFFSET_AMMO_556NATOBOX
			case CSW_FAMAS, CSW_M4A1, CSW_AUG, 
			CSW_SG550, CSW_GALI, CSW_SG552: offset = OFFSET_AMMO_556NATO
		case CSW_M3, CSW_XM1014: offset = OFFSET_AMMO_BUCKSHOT
			case CSW_USP, CSW_UMP45, CSW_MAC10: offset = OFFSET_AMMO_45ACP
			case CSW_FIVESEVEN, CSW_P90: offset = OFFSET_AMMO_57MM
			case CSW_DEAGLE: offset = OFFSET_AMMO_50AE
			case CSW_P228: offset = OFFSET_AMMO_357SIG
			case CSW_GLOCK18, CSW_TMP, CSW_ELITE, 
			CSW_MP5NAVY: offset = OFFSET_AMMO_9MM
		default: offset = 0
	}
	return offset ? get_pdata_int(index, offset) : 0
}

stock fm_set_user_bpammo(index, weapon, amount) {
	static offset
	switch(weapon) {
		case CSW_AWP: offset = OFFSET_AMMO_338MAGNUM
			case CSW_SCOUT, CSW_AK47, CSW_G3SG1: offset = OFFSET_AMMO_762NATO
			case CSW_M249: offset = OFFSET_AMMO_556NATOBOX
			case CSW_FAMAS, CSW_M4A1, CSW_AUG, 
			CSW_SG550, CSW_GALI, CSW_SG552: offset = OFFSET_AMMO_556NATO
		case CSW_M3, CSW_XM1014: offset = OFFSET_AMMO_BUCKSHOT
			case CSW_USP, CSW_UMP45, CSW_MAC10: offset = OFFSET_AMMO_45ACP
			case CSW_FIVESEVEN, CSW_P90: offset = OFFSET_AMMO_57MM
			case CSW_DEAGLE: offset = OFFSET_AMMO_50AE
			case CSW_P228: offset = OFFSET_AMMO_357SIG
			case CSW_GLOCK18, CSW_TMP, CSW_ELITE, 
			CSW_MP5NAVY: offset = OFFSET_AMMO_9MM
		default: offset = 0
	}
	
	if(offset) 
		set_pdata_int(index, offset, amount)
	
	return 1
}

// Get Weapon Entity's CSW_ ID
stock fm_get_weapon_ent_id(ent) {
	return get_pdata_int(ent, OFFSET_WEAPONID, 4);
}

// Get Weapon Entity's Owner
stock fm_get_weapon_ent_owner(ent) {
	return get_pdata_cbase(ent, 41, 4);
}

// Drop all primary guns
stock drop_primary_weapons(Player) {
	// Get user weapons
	static weapons[32], num, i, weaponid;
	num = 0; // reset passed weapons count(bugfix)
	get_user_weapons(Player, weapons, num);
	
	// Loop through them and drop primaries
	for(i = 0; i < num; i++) {
		// Prevent re-indexing the array
		weaponid = weapons [i];
		
		// We definetely are holding primary gun
		if(((1<<weaponid) & PRIMARY_WEAPONS_BITSUM)) {
			// Get weapon entity
			static wname[32];
			get_weaponname(weaponid, wname, charsmax(wname));
			
			// Player drops the weapon and looses his bpammo
			engclient_cmd(Player, "drop", wname);
		}
	}
}

public RefreshWeapons ( id ) {
	
	strip_user_weapons ( id );
	give_item ( id, "weapon_knife" );
	remove_dragoncannon ( id );
	
	g_had_qb [ id ] = 0;
	dual_mp5 [ id ] = false;
	k1ases_weapon [ id ] = false;
	salamander [ id ] = false;
	SalamanderLimit [ id ] = false;
	katana_knife [ id ] = false;
	double_katana_knife [ id ] = false;
	super_knife [ id ] = false;
	infinity_knife [ id ] = false;
	elf_knife [ id ] = false;
	ignes_knife [ id ] = false;
	vip_axe_knife [ id ] = false;
	trainer [ id ] = false;
	thompson [ id ] = false;
	uspx [ id ] = false;
	hunter [ id ] = false;
	shaman [ id ] = false;
	mage [ id ] = false;
	rogue [ id ] = false;
	warrior [ id ] = false;
	druid [ id ] = false;
	deklowaz [ id ] = false;
	strike_grenade [ id ] = false;
	HasPower[id] = 0;
	Drop_Cooldown[id] = 0;
	UserHaveQuad [ id ] = false;
	UserHaveDragon [ id ] = false;
	g_hasM79[id] = false
	g_canShoot[id] = false
	g_last_shot_time[id] = 0.0
	grenade_count[id] = 0
	hasOnHandM79[id] = false
	remove_icon(id );
	UserHaveM79 [ id ] = false;
	
	HasSpeed[id] = false;
	HasTeleport[id] = false;
	
	UserHasChoosed [ id ] = false;
	UserHaveHeGrenade [ id ] = false;
	UserHaveGodMode [ id ] = false;
	UserHaveSuperKnife [ id ] = false;
	UserHaveNoClip [ id ] = false;
	UserHaveHpAndAp [ id ] = false;
	UserHaveDualMp5 [ id ] = false;
	
	if( get_user_flags(id) & VIP_ACCESS )
	{
		set_user_scoreattrib(id, 4);
	}
	
	VipBonus ( id );
	
	if ( get_user_team ( id ) == 2 ) {
		give_item ( id, "weapon_smokegrenade" );
		flare [ id ] = true;
	}
	
	ShowHud ( id );
	
	remove_task(id);
	HE_Cooldown[id] = 0;
	GodMode_Cooldown[id] = 0;
	GodMode_DurationCooldown[id] = 0;
	Drop_Cooldown[id] = 0;
	Freeze_Cooldown[id] = 0;
	Freeze_Cooldown[id] = 0;
	remove_freeze ( id );
	BeamRemove ( id );
	Drag_Cooldown[id] = 0;
	if (Hooked[id]) {
		DragEnd ( id );
	}
	
	Not_Cooldown[id] = false;
	Teleport_Cooldown[id] = 0;
}


public cmdCheckVIP ( id ) {
	
	if ( get_user_team ( id ) == 1 && is_user_alive ( id ) ) {
		
		if ( UserHasChoosed [ id ] ) {
			
			ColorChat ( id, GREEN, "%s Ti-ai ales runda aceasta puterea .", szPrefix );
			return 1;
		}
		
		else if ( !UserHasChoosed [ id ] ) {
			
			set_task ( 0.1, "cmdShowTVIPMenu", id );
			
		}
	}
	
	if ( get_user_team ( id ) == 2 && is_user_alive ( id ) ) {
		
		if ( UserHasChoosed [ id ] ) {
			
			ColorChat ( id, GREEN, "%s Ti-ai ales runda aceasta puterea .", szPrefix );
			return 1;
		}
		
		else if ( !UserHasChoosed [ id ] ) {
			
			set_task ( 0.1, "cmdShowCTVIPMenu", id );
			
		}
	}
	
	return 1
	
}

public cmdClassMenu ( id, level, cid ) {
	
	ShowHud ( id );
	
	if ( get_user_team ( id ) == 1 ) {
		
		
		new menu = menu_create ( "\rFurien Class \yMenu", "Class_Giver" );
		
		if ( Level [ id ] >= 0 || Level [ id ] >= 1 || Level [ id ] >= 2 || Level [ id ] >= 3 || Level [ id ] >= 4 ) { 
			menu_additem ( menu, "\yTrainer", "1", 0 );
		}
		
		else if ( Level [ id ] <= 0 || Level [ id ] <= 1 || Level [ id ] <= 2 || Level [ id ] <= 3 || Level [ id ] <= 4 ) {
			menu_additem ( menu, "\yTrainer \y[ \rLOCKED \y]", "1", ADMIN_RCON );
		}
		
		if ( Level [ id ] >= 5 || Level [ id ] >= 6 || Level [ id ] >= 7 || Level [ id ] >= 8 ) { 
			menu_additem ( menu, "\yAgnos", "2", 0 );
		}
		
		else if ( Level [ id ] <= 5 || Level [ id ] <= 6 || Level [ id ] <= 7 || Level [ id ] <= 8 ) {
			menu_additem ( menu, "\yAgnos \y[ \rLOCKED \y]", "2", ADMIN_RCON );
		}
		
		if ( Level [ id ] >= 9 || Level [ id ] >= 10 || Level [ id ] >= 11 || Level [ id ] >= 12 ) { 
			menu_additem ( menu, "\yXFother", "3", 0 );
		}
		
		else if ( Level [ id ] <= 9 || Level [ id ] <= 10 || Level [ id ] <= 11 || Level [ id ] <= 12 ) { 
			menu_additem ( menu, "\yXFother \y[ \rLOCKED \y]", "3", ADMIN_RCON );
		}
		
		if ( Level [ id ] >= 13 || Level [ id ] >= 14 || Level [ id ] >= 15 || Level [ id ] >= 16 ) { 
			menu_additem ( menu, "\ySamurai", "4", 0 );
		}
		
		else if ( Level [ id ] <= 13 || Level [ id ] <= 14 || Level [ id ] <= 15 || Level [ id ] <= 16 ) {
			menu_additem ( menu, "\ySamurai \y[ \rLOCKED \y]", "4", ADMIN_RCON );
		}
		
		if ( Level [ id ] >= 17 || Level [ id ] >= 18 || Level [ id ] >= 19 || Level [ id ] >= 20 ) { 
			menu_additem ( menu, "\yExtra Samurai", "5", 0 );
		}
		
		else if ( Level [ id ] <= 17 || Level [ id ] <= 18 || Level [ id ] <= 19 || Level [ id ] <= 20 ) { 
			menu_additem ( menu, "\yExtra Samurai \y[ \rLOCKED \y]", "5", ADMIN_RCON );
		}
		
		if ( Level [ id ] >= 21 || Level [ id ] >= 22 || Level [ id ] >= 23 || Level [ id ] >= 24 ) { 
			menu_additem ( menu, "\yIgnes", "6", 0 );
		}
		
		else if ( Level [ id ] <= 21 || Level [ id ] <= 22 || Level [ id ] <= 23 || Level [ id ] <= 24 ) {
			menu_additem ( menu, "\yIgnes \y[ \rLOCKED \y]", "6", ADMIN_RCON );
		}
		
		if ( Level [ id ] >= 25 || Level [ id ] >= 26 || Level [ id ] >= 27 || Level [ id ] >= 28 ) { 
			menu_additem ( menu, "\yElf", "7", 0 );
		}
		
		else if ( Level [ id ] <= 25 || Level [ id ] <= 26 || Level [ id ] <= 27 || Level [ id ] <= 28 ) { 
			menu_additem ( menu, "\yElf \y[ \rLOCKED \y]", "7", ADMIN_RCON );
		}
		
		if ( Level [ id ] >= 29 || Level [ id ] >= 30 ) { 
			menu_additem ( menu, "\yAlcadeias", "8", 0 );
		}
		
		else if ( Level [ id ] <= 29 || Level [ id ] <= 30 ) {
			menu_additem ( menu, "\yAlcadeias \y[ \rLOCKED \y]", "8", ADMIN_RCON );
		}
		
		menu_setprop ( menu, MPROP_EXIT, MEXIT_ALL );
		menu_display ( id, menu, 0 );
		
		
		return 1;
	}
	
	else if ( get_user_team ( id ) == 2 ) {
		
		
		new menu = menu_create ( "\rAntiFurien Class \yMenu", "Class_Giver" );
		
		if ( Level [ id ] >= 0 || Level [ id ] >= 1 || Level [ id ] >= 2 || Level [ id ] >= 3 || Level [ id ] >= 4 ) { 
			menu_additem ( menu, "\yDruid", "1", 0 );
		}
		
		else if ( Level [ id ] <= 0 || Level [ id ] <= 1 || Level [ id ] <= 2 || Level [ id ] <= 3 || Level [ id ] <= 4 ) { 
			menu_additem ( menu, "\yDruid \y[ \rLOCKED \y]", "1", ADMIN_RCON );
			
		}
		
		if ( Level [ id ] >= 5 || Level [ id ] >= 6 || Level [ id ] >= 7 || Level [ id ] >= 8 ) { 
			menu_additem ( menu, "\yHunter", "2", 0 );
		}
		
		else if ( Level [ id ] <= 5 || Level [ id ] <= 6 || Level [ id ] <= 7 || Level [ id ] <= 8 ) { 
			menu_additem ( menu, "\yHunter \y[ \rLOCKED \y]", "2", ADMIN_RCON );
		}
		
		if ( Level [ id ] >= 9 || Level [ id ] >= 10 || Level [ id ] >= 11 || Level [ id ] >= 12 ) { 
			menu_additem ( menu, "\yMage", "3", 0 );
		}
		
		else if ( Level [ id ] <= 9 || Level [ id ] <= 10 || Level [ id ] <= 11 || Level [ id ] <= 12 ) { 
			menu_additem ( menu, "\yMage \y[ \rLOCKED \y]", "3", ADMIN_RCON );
		}
		
		if ( Level [ id ] >= 13 || Level [ id ] >= 14 || Level [ id ] >= 15 || Level [ id ] >= 16 ) { 
			menu_additem ( menu, "\yRogue", "4", 0 );
		}
		
		else if ( Level [ id ] <= 13 || Level [ id ] <= 14 || Level [ id ] <= 15 || Level [ id ] <= 16 ) { 
			menu_additem ( menu, "\yRogue \y[ \rLOCKED \y]", "4", ADMIN_RCON );
		}
		
		if ( Level [ id ] >= 17 || Level [ id ] >= 18 || Level [ id ] >= 19 || Level [ id ] >= 20 ) { 
			menu_additem ( menu, "\yShaman", "5", 0 );
		}
		
		else if ( Level [ id ] <= 17 || Level [ id ] <= 18 || Level [ id ] <= 19 || Level [ id ] <= 20 ) { 
			menu_additem ( menu, "\yShaman \y[ \rLOCKED \y]", "5", ADMIN_RCON );
		}
		
		if ( Level [ id ] >= 21 || Level [ id ] >= 22 || Level [ id ] >= 23 || Level [ id ] >= 24 ) { 
			menu_additem ( menu, "\yWarlock", "6", 0 );
		}
		
		else if ( Level [ id ] <= 21 || Level [ id ] <= 22 || Level [ id ] <= 23 || Level [ id ] <= 24 ) { 
			menu_additem ( menu, "\yWarlock \y[ \rLOCKED \y]", "6", ADMIN_RCON );
		}
		
		if ( Level [ id ] >= 25 || Level [ id ] >= 26 || Level [ id ] >= 27 || Level [ id ] >= 28 ) { 
			menu_additem ( menu, "\yWarrior", "7", 0 );
		}
		
		else if ( Level [ id ] <= 25 || Level [ id ] <= 26 || Level [ id ] <= 27 || Level [ id ] <= 28 ) { 
			menu_additem ( menu, "\yWarrior \y[ \rLOCKED \y]", "7", ADMIN_RCON );
		}
		
		if ( Level [ id ] >= 29 || Level [ id ] >= 30 ) { 
			menu_additem ( menu, "\yDeklowaz", "8", 0 );
		}
		
		else if ( Level [ id ] <= 29 || Level [ id ] <= 30 ) { 
			menu_additem ( menu, "yDeklowaz \y[ \rLOCKED \y]", "8", ADMIN_RCON );
		}
		
		menu_setprop ( menu, MPROP_EXIT, MEXIT_ALL );
		menu_display ( id, menu, 0 );
		
		
		return 1;
	}
	
	return 1;
}

public Class_Giver ( id, menu, item ) {
	
	if( item == MENU_EXIT )
	{
		return 1;
	}
	
	new data [ 6 ], szName [ 64 ];
	new access, callback;
	menu_item_getinfo ( menu, item, access, data,charsmax ( data ), szName,charsmax ( szName ), callback );
	new key = str_to_num ( data );
	
	switch(key)
	{
		
		case 1:
		{
			if ( get_user_team ( id ) == 1 ) {
				if ( g_Menu [ id ] >= 3 ) {
					ColorChat ( id, GREEN, "%s Ti-ai ales odata clasa runda aceasta .", szPrefix );
				}
				
				else {
					
					ColorChat ( id, GREEN, "%s Clasa ta este acum^4 Trainer^3 .", szPrefix );
					
					trainer [ id ] = true;
					katana_knife [ id ] = false;
					double_katana_knife [ id ] = false;
					super_knife [ id ] = false;
					infinity_knife [ id ] = false;
					ignes_knife [ id ] = false;
					elf_knife [ id ] = false;
					thompson [ id ] = false;
					uspx [ id ] = false;
					hunter [ id ] = false;
					shaman [ id ] = false;
					mage [ id ] = false;
					rogue [ id ] = false;
					warrior [ id ] = false;
					deklowaz [ id ] = false;
					druid [ id ] = false;
					strike_grenade [ id ] = false;
					strike_grenade2 [ id ] = false;
					strike_grenade3 [ id ] = false;
					super_knife_shop [ id ] = false;
					super_knife_shop2 [ id ] = false;
					set_user_gravity ( id, 0.7 );
					give_item ( id, "weapon_flashbang" );
					//set_pev ( id, pev_viewmodel2, trainer_v_model );
					//set_pev ( id, pev_weaponmodel2, trainer_p_model );
					++g_Menu [ id ];
					++g_Menu [ id ];
				}
				
				
			}
			
			
			if ( get_user_team ( id ) == 2 ) {
				if ( g_Menu [ id ] >= 3 ) {
					ColorChat ( id, GREEN, "%s Ti-ai ales odata clasa runda aceasta .", szPrefix );
				}
				
				else {
					
					ColorChat ( id, GREEN, "%s Clasa ta este acum^4 Druid^3 .", szPrefix );
					give_item ( id, "weapon_xm1014" );
					give_item ( id, "weapon_usp" );
					set_user_health ( id, 105 );
					set_user_armor ( id, 30 );
					cs_set_user_bpammo ( id, CSW_USP, 100 );
					cs_set_user_bpammo ( id, CSW_XM1014, 100 );
					trainer [ id ] = false;
					katana_knife [ id ] = false;
					double_katana_knife [ id ] = false;
					super_knife [ id ] = false;
					infinity_knife [ id ] = false;
					ignes_knife [ id ] = false;
					elf_knife [ id ] = false;
					thompson [ id ] = false;
					uspx [ id ] = true;
					hunter [ id ] = false;
					shaman [ id ] = false;
					mage [ id ] = false;
					rogue [ id ] = false;
					warrior [ id ] = false;
					deklowaz [ id ] = false;
					druid [ id ] = true;
					super_knife_shop [ id ] = false;
					super_knife_shop2 [ id ] = false;
					++g_Menu [ id ];
					++g_Menu [ id ];
					
				}
			}
		}
		
		case 2:
		{
			if ( get_user_team ( id ) == 1 ) {
				if ( g_Menu [ id ] >= 3 ) {
					ColorChat ( id, GREEN, "%s Ti-ai ales odata clasa runda aceasta .", szPrefix );
				}
				
				else {
					
					ColorChat ( id, GREEN, "%s Clasa ta este acum^4 Agnos^3 .", szPrefix );
					
					
					
					
					
					katana_knife [ id ] = false;
					trainer [ id ] = false;
					double_katana_knife [ id ] = false;
					super_knife [ id ] = false;
					
					infinity_knife [ id ] = true;
					ignes_knife [ id ] = false;
					elf_knife [ id ] = false;
					thompson [ id ] = false;
					uspx [ id ] = false;
					hunter [ id ] = false;
					shaman [ id ] = false;
					mage [ id ] = false;
					rogue [ id ] = false;
					warrior [ id ] = false;
					deklowaz [ id ] = false;
					strike_grenade [ id ] = false;
					strike_grenade2 [ id ] = false;
					strike_grenade3 [ id ] = false;
					druid [ id ] = false;
					super_knife_shop [ id ] = false;
					super_knife_shop2 [ id ] = false;
					set_user_gravity ( id, 0.6 );
					set_user_health ( id, 120 );
					set_user_armor ( id, 60 );
					give_item ( id, "weapon_flashbang" );
					//set_pev ( id, pev_viewmodel2, infinity_knife_v_model );
					//set_pev ( id, pev_weaponmodel2, infinity_knife_p_model );
					++g_Menu [ id ];
					++g_Menu [ id ];
					
				}
			}
			
			if ( get_user_team ( id ) == 2 ) {
				if ( g_Menu [ id ] >= 3 ) {
					ColorChat ( id, GREEN, "%s Ti-ai ales odata clasa runda aceasta .", szPrefix );
				}
				
				else {
					
					ColorChat ( id, GREEN, "%s Clasa ta este acum^4 Hunter^3 .", szPrefix );
					give_item ( id, "weapon_p90" );
					give_item ( id, "weapon_usp" );
					set_user_health ( id, 120 );
					set_user_armor ( id, 60 );
					cs_set_user_bpammo ( id, CSW_USP, 100 );
					cs_set_user_bpammo ( id, CSW_P90, 200 );
					trainer [ id ] = false;
					katana_knife [ id ] = false;
					double_katana_knife [ id ] = false;
					super_knife [ id ] = false;
					infinity_knife [ id ] = false;
					ignes_knife [ id ] = false;
					elf_knife [ id ] = false;
					thompson [ id ] = false;
					uspx [ id ] = true;
					hunter [ id ] = true;
					shaman [ id ] = false;
					mage [ id ] = false;
					rogue [ id ] = false;
					warrior [ id ] = false;
					deklowaz [ id ] = false;
					druid [ id ] = false;
					super_knife_shop [ id ] = false;
					super_knife_shop2 [ id ] = false;
					++g_Menu [ id ];
					++g_Menu [ id ];
					
				}
			}
		}
		
		case 3:
		{
			if ( get_user_team ( id ) == 1 ) {
				if ( g_Menu [ id ] >= 3 ) {
					ColorChat ( id, GREEN, "%s Ti-ai ales odata clasa runda aceasta .", szPrefix );
				}
				
				else {
					
					ColorChat ( id, GREEN, "%s Clasa ta este acum^4 XFother^3.^4", szPrefix );
					
					super_knife [ id ] = true;
					katana_knife [ id ] = false;
					trainer [ id ] = false;
					double_katana_knife [ id ] = false;
					infinity_knife [ id ] = false;
					ignes_knife [ id ] = false;
					thompson [ id ] = false;
					uspx [ id ] = false;
					hunter [ id ] = false;
					shaman [ id ] = false;
					mage [ id ] = false;
					rogue [ id ] = false;
					warrior [ id ] = false;
					deklowaz [ id ] = false;
					elf_knife [ id ] = false;
					druid [ id ] = false;
					strike_grenade [ id ] = true;
					super_knife_shop [ id ] = false;
					super_knife_shop2 [ id ] = false;
					set_user_gravity ( id, 0.6 );
					set_user_health ( id, 120 );
					set_user_armor ( id, 60 );
					give_item ( id, "weapon_hegrenade" );
					give_item ( id, "weapon_flashbang" );
					//set_pev ( id, pev_viewmodel2, super_knife_v_model );
					//set_pev ( id, pev_weaponmodel2, super_knife_p_model );
					++g_Menu [ id ];
					++g_Menu [ id ];
					
				}
			}
			
			if ( get_user_team ( id ) == 2 ) {
				if ( g_Menu [ id ] >= 3 ) {
					ColorChat ( id, GREEN, "%s Ti-ai ales odata clasa runda aceasta .", szPrefix );
				}
				
				else {
					
					ColorChat ( id, GREEN, "%s Clasa ta este acum^4 Mage^3 .", szPrefix );
					give_item ( id, "weapon_galil" );
					give_item ( id, "weapon_usp" );
					set_user_gravity ( id, 0.7 );
					set_user_health ( id, 120 );
					set_user_armor ( id, 60 );
					cs_set_user_bpammo ( id, CSW_USP, 100 );
					cs_set_user_bpammo ( id, CSW_GALIL, 200 );
					trainer [ id ] = false;
					katana_knife [ id ] = false;
					double_katana_knife [ id ] = false;
					super_knife [ id ] = false;
					infinity_knife [ id ] = false;
					ignes_knife [ id ] = false;
					elf_knife [ id ] = false;
					thompson [ id ] = false;
					druid [ id ] = false;
					uspx [ id ] = true;
					hunter [ id ] = false;
					shaman [ id ] = false;
					mage [ id ] = true;
					rogue [ id ] = false;
					warrior [ id ] = false;
					deklowaz [ id ] = false;
					super_knife_shop [ id ] = false;
					super_knife_shop2 [ id ] = false;
					++g_Menu [ id ];
					++g_Menu [ id ];
					
				}
			}
		}
		
		case 4:
		{
			if ( get_user_team ( id ) == 1 ) {
				if ( g_Menu [ id ] >= 3 ) {
					ColorChat ( id, GREEN, "%s Ti-ai ales odata clasa runda aceasta .", szPrefix );
				}
				
				else {
					
					ColorChat ( id, GREEN, "%s Clasa ta este acum^4 Samurai^3 + puterea de a arunca armele inamicului .^4", szPrefix );
					ColorChat ( id, GREEN, "%s Pentru activare apasa tasta^4 V^3 .^4", szPrefix );
					
					
					
					
					
					katana_knife [ id ] = true;
					double_katana_knife [ id ] = false;
					super_knife [ id ] = false;
					trainer [ id ] = false;
					infinity_knife [ id ] = false;
					ignes_knife [ id ] = false;
					elf_knife [ id ] = false;
					thompson [ id ] = false;
					uspx [ id ] = false;
					hunter [ id ] = false;
					shaman [ id ] = false;
					druid [ id ] = false;
					mage [ id ] = false;
					rogue [ id ] = false;
					warrior [ id ] = false;
					strike_grenade2 [ id ] = true;
					deklowaz [ id ] = false;
					super_knife_shop [ id ] = false;
					super_knife_shop2 [ id ] = false;
					set_user_gravity ( id, 0.6 );
					set_user_health ( id, 135 );
					set_user_armor ( id, 90 );
					give_item ( id, "weapon_hegrenade" );
					give_item ( id, "weapon_flashbang" );
					client_cmd(id, "bind v power");
					remove_task(id);
					if ( Drop_Cooldown [ id ] ) {
						set_task ( 0.1, "DropShowHUD", id );
					}
					HasPower [ id ] = 4;
					//set_pev ( id, pev_viewmodel2, katana_knife_v_model );
					//set_pev ( id, pev_weaponmodel2, katana_knife_p_model );
					++g_Menu [ id ];
					++g_Menu [ id ];
					
					
					
					
				}
			}
			
			if ( get_user_team ( id ) == 2 ) {
				if ( g_Menu [ id ] >= 3 ) {
					ColorChat ( id, GREEN, "%s Ti-ai ales odata clasa runda aceasta .", szPrefix );
				}
				
				else {
					
					ColorChat ( id, GREEN, "%s Clasa ta este acum^4 Rogue^3 + puterea de a trage inamicul^4 [ drag ]^3 .^4", szPrefix );
					ColorChat ( id, GREEN, "%s Pentru activare apasa tasta^4 V^3 .^4", szPrefix );
					give_item ( id, "weapon_famas" );
					give_item ( id, "weapon_usp" );
					set_user_gravity ( id, 0.7 );
					set_user_health ( id, 130 );
					set_user_armor ( id, 80 );
					cs_set_user_bpammo ( id, CSW_USP, 100 );
					cs_set_user_bpammo ( id, CSW_FAMAS, 200 );
					trainer [ id ] = false;
					katana_knife [ id ] = false;
					double_katana_knife [ id ] = false;
					super_knife [ id ] = false;
					infinity_knife [ id ] = false;
					ignes_knife [ id ] = false;
					elf_knife [ id ] = false;
					thompson [ id ] = false;
					uspx [ id ] = true;
					hunter [ id ] = false;
					shaman [ id ] = false;
					mage [ id ] = false;
					rogue [ id ] = true;
					druid [ id ] = false;
					warrior [ id ] = false;
					deklowaz [ id ] = false;
					super_knife_shop [ id ] = false;
					super_knife_shop2 [ id ] = false;
					++g_Menu [ id ];
					++g_Menu [ id ];
					client_cmd(id, "bind v +drag");
					remove_task(id);
					if(Drag_Cooldown[id]) {
						set_task ( 0.1, "DragShowHUD", id );
					}
					HasPower[id] = 6;
				}
			}
		}
		
		case 5:
		{
			if ( get_user_team ( id ) == 1 ) {
				if ( g_Menu [ id ] >= 3 ) {
					ColorChat ( id, GREEN, "%s Ti-ai ales odata clasa runda aceasta .", szPrefix );
				}
				
				else {
					
					ColorChat ( id, GREEN, "%s Clasa ta este acum^4 Extra Samurai^3 + puterea de a arunca armele inamicului .^4", szPrefix );
					ColorChat ( id, GREEN, "%s Pentru activare apasa tasta^4 V^3 .^4", szPrefix );
					
					
					double_katana_knife [ id ] = true;
					katana_knife [ id ] = false;
					trainer [ id ] = false;
					super_knife [ id ] = false;
					infinity_knife [ id ] = false;
					ignes_knife [ id ] = false;
					elf_knife [ id ] = false;
					thompson [ id ] = false;
					uspx [ id ] = false;
					hunter [ id ] = false;
					shaman [ id ] = false;
					mage [ id ] = false;
					druid [ id ] = false;
					rogue [ id ] = false;
					warrior [ id ] = false;
					deklowaz [ id ] = false;
					strike_grenade2 [ id ] = true;
					super_knife_shop [ id ] = false;
					super_knife_shop2 [ id ] = false;
					set_user_gravity ( id, 0.5 );
					set_user_health ( id, 145 );
					set_user_armor ( id, 105 );
					give_item ( id, "weapon_hegrenade" );
					give_item ( id, "weapon_flashbang" );
					give_item ( id, "weapon_flashbang" );
					client_cmd(id, "bind v power");
					remove_task(id);
					if ( Drop_Cooldown [ id ] ) {
						set_task ( 0.1, "DropShowHUD", id );
					}
					HasPower [ id ] = 4;
					//set_pev ( id, pev_viewmodel2, double_katana_v_knife_model );
					//set_pev ( id, pev_weaponmodel2, double_katana_p_knife_model );
					++g_Menu [ id ];
					++g_Menu [ id ];
					
				}
			}
			
			if ( get_user_team ( id ) == 2 ) {
				if ( g_Menu [ id ] >= 3 ) {
					ColorChat ( id, GREEN, "%s Ti-ai ales odata clasa runda aceasta .", szPrefix );
				}
				
				else {
					
					ColorChat ( id, GREEN, "%s Clasa ta este acum^4 Shaman^3 + puterea de a trage inamicul^4 [ drag ]^3 .^4", szPrefix );
					ColorChat ( id, GREEN, "%s Pentru activare apasa tasta^4 V^3 .^4", szPrefix );
					give_item ( id, "weapon_sg552" );
					give_item ( id, "weapon_usp" );
					set_user_gravity ( id, 0.7 );
					set_user_health ( id, 145 );
					set_user_armor ( id, 90 );
					cs_set_user_bpammo ( id, CSW_USP, 100 );
					cs_set_user_bpammo ( id, CSW_SG552, 200 );
					trainer [ id ] = false;
					katana_knife [ id ] = false;
					double_katana_knife [ id ] = false;
					super_knife [ id ] = false;
					infinity_knife [ id ] = false;
					ignes_knife [ id ] = false;
					elf_knife [ id ] = false;
					thompson [ id ] = false;
					uspx [ id ] = true;
					hunter [ id ] = false;
					shaman [ id ] = true;
					mage [ id ] = false;
					rogue [ id ] = false;
					druid [ id ] = false;
					warrior [ id ] = false;
					deklowaz [ id ] = false;
					super_knife_shop [ id ] = false;
					super_knife_shop2 [ id ] = false;
					++g_Menu [ id ];
					++g_Menu [ id ];
					client_cmd(id, "bind v +drag");
					remove_task(id);
					if(Drag_Cooldown[id]) {
						set_task ( 0.1, "DragShowHUD", id );
					}
					HasPower[id] = 6;
					
				}
			}
		}
		
		case 6:
		{
			if ( get_user_team ( id ) == 1 ) {
				if ( g_Menu [ id ] >= 3 ) {
					ColorChat ( id, GREEN, "%s Ti-ai ales odata clasa runda aceasta .", szPrefix );
				}
				
				else {
					
					ColorChat ( id, GREEN, "%s Clasa ta este acum^4 Ignes^3 + puterea de a ingheta inamicul .^4", szPrefix );
					ColorChat ( id, GREEN, "%s Pentru activare apasa tasta^4 V^3 .^4", szPrefix );
					
					
					katana_knife [ id ] = false;
					double_katana_knife [ id ] = false;
					super_knife [ id ] = false;
					trainer [ id ] = false;
					thompson [ id ] = false;
					uspx [ id ] = false;
					hunter [ id ] = false;
					shaman [ id ] = false;
					mage [ id ] = false;
					rogue [ id ] = false;
					warrior [ id ] = false;
					deklowaz [ id ] = false;
					
					ignes_knife [ id ] = true;
					elf_knife [ id ] = false;
					vip_axe_knife [ id ] = false;
					druid [ id ] = false;
					strike_grenade2 [ id ] = true;
					super_knife_shop [ id ] = false;
					super_knife_shop2 [ id ] = false;
					set_user_gravity ( id, 0.5 );
					set_user_health ( id, 185 );
					set_user_armor ( id, 150 );
					give_item ( id, "weapon_hegrenade" );
					give_item ( id, "weapon_flashbang" );
					give_item ( id, "weapon_flashbang" );
					client_cmd(id, "bind v power");
					remove_task(id);
					if(Freeze_Cooldown[id]) {
						set_task ( 0.1, "FreezeShowHUD", id );
					}
					HasPower[id] = 5;
					//set_pev ( id, pev_viewmodel2, ignes_knife_model );
					++g_Menu [ id ];
					++g_Menu [ id ];
				}
			}
			
			if ( get_user_team ( id ) == 2 ) {
				if ( g_Menu [ id ] >= 3 ) {
					ColorChat ( id, GREEN, "%s Ti-ai ales odata clasa runda aceasta .", szPrefix );
				}
				
				else {
					
					ColorChat ( id, GREEN, "%s Clasa ta este acum^4 Warlock^3 + puterea de a trage perfect^4 [ norecoil ]^3 .^4", szPrefix );
					ColorChat ( id, GREEN, "%s Puterea se activeaza automat .^4", szPrefix );
					give_item ( id, "weapon_p90" );
					give_item ( id, "weapon_usp" );
					set_user_gravity ( id, 0.6 );
					set_user_health ( id, 165 );
					set_user_armor ( id, 105 );
					cs_set_user_bpammo ( id, CSW_USP, 100 );
					cs_set_user_bpammo ( id, CSW_P90, 200 );
					trainer [ id ] = false;
					katana_knife [ id ] = false;
					double_katana_knife [ id ] = false;
					super_knife [ id ] = false;
					infinity_knife [ id ] = false;
					ignes_knife [ id ] = false;
					elf_knife [ id ] = false;
					thompson [ id ] = true;
					uspx [ id ] = true;
					hunter [ id ] = false;
					shaman [ id ] = false;
					mage [ id ] = false;
					druid [ id ] = false;
					rogue [ id ] = false;
					warrior [ id ] = false;
					deklowaz [ id ] = false;
					vip_axe_knife [ id ] = false;
					super_knife_shop [ id ] = false;
					super_knife_shop2 [ id ] = false;
					++g_Menu [ id ];
					++g_Menu [ id ];
					remove_task(id);
					HasPower[id] = 8;
					
				}
			}
		}
		
		case 7:
		{
			if ( get_user_team ( id ) == 1 ) {
				if ( g_Menu [ id ] >= 3 ) {
					ColorChat ( id, GREEN, "%s Ti-ai ales odata clasa runda aceasta .", szPrefix );
				}
				
				else {
					
					ColorChat ( id, GREEN, "%s Clasa ta este acum^4 Elf^3 + puterea de a ingheta inamicul .^4", szPrefix );
					ColorChat ( id, GREEN, "%s Pentru activare apasa tasta^4 V^3 .^4", szPrefix );
					
					
					
					
					
					katana_knife [ id ] = false;
					double_katana_knife [ id ] = false;
					super_knife [ id ] = false;
					trainer [ id ] = false;
					ignes_knife [ id ] = false;
					
					elf_knife [ id ] = true;
					thompson [ id ] = false;
					uspx [ id ] = false;
					hunter [ id ] = false;
					druid [ id ] = false;
					shaman [ id ] = false;
					mage [ id ] = false;
					rogue [ id ] = false;
					warrior [ id ] = false;
					deklowaz [ id ] = false;
					strike_grenade3 [ id ] = true;
					super_knife_shop [ id ] = false;
					super_knife_shop2 [ id ] = false;
					++g_Menu [ id ];
					++g_Menu [ id ];
					set_user_gravity ( id, 0.4 );
					set_user_health ( id, 185 );
					set_user_armor ( id, 160 );
					give_item ( id, "weapon_hegrenade" );
					give_item ( id, "weapon_flashbang" );
					give_item ( id, "weapon_flashbang" );
					client_cmd(id, "bind v power");
					remove_task(id);
					if(Freeze_Cooldown[id]) {
						set_task ( 0.1, "FreezeShowHUD", id );
					}
					HasPower[id] = 5;
					//set_pev ( id, pev_viewmodel2, elf_knife_model );
					
				}
			}
			
			if ( get_user_team ( id ) == 2 ) {
				if ( g_Menu [ id ] >= 3 ) {
					ColorChat ( id, GREEN, "%s Ti-ai ales odata clasa runda aceasta .", szPrefix );
				}
				
				else {
					
					ColorChat ( id, GREEN, "%s Clasa ta este acum^4 Warrior^3 + puterea de a trage perfect^4 [ norecoil ]^3 .^4", szPrefix );
					ColorChat ( id, GREEN, "%s Puterea se activeaza automat .^4", szPrefix );
					give_item ( id, "weapon_p90" );
					give_item ( id, "weapon_usp" );
					set_user_gravity ( id, 0.6 );
					set_user_health ( id, 180 );
					set_user_armor ( id, 115 );
					cs_set_user_bpammo ( id, CSW_USP, 100 );
					cs_set_user_bpammo ( id, CSW_P90, 200 );
					trainer [ id ] = false;
					katana_knife [ id ] = false;
					double_katana_knife [ id ] = false;
					super_knife [ id ] = false;
					infinity_knife [ id ] = false;
					ignes_knife [ id ] = false;
					elf_knife [ id ] = false;
					thompson [ id ] = false;
					uspx [ id ] = true;
					hunter [ id ] = false;
					shaman [ id ] = false;
					druid [ id ] = false;
					mage [ id ] = false;
					rogue [ id ] = false;
					warrior [ id ] = true;
					vip_axe_knife [ id ] = false;
					deklowaz [ id ] = false;
					super_knife_shop [ id ] = false;
					super_knife_shop2 [ id ] = false;
					++g_Menu [ id ];
					++g_Menu [ id ];
					remove_task(id);
					HasPower[id] = 8;
					
				}
			}
		}
		
		case 8:
		{
			if ( get_user_team ( id ) == 1 ) {
				if ( g_Menu [ id ] >= 3 ) {
					ColorChat ( id, GREEN, "%s Ti-ai ales odata clasa runda aceasta .", szPrefix );
				}
				
				else {
					
					ColorChat ( id, GREEN, "%s Clasa ta este acum^4 Alcadeias^3 + puterea de a te teleporta .^4", szPrefix );
					ColorChat ( id, GREEN, "%s Pentru activare apasa tasta^4 V^3 .^4", szPrefix );
					
					vip_axe_knife [ id ] = true;
					katana_knife [ id ] = false;
					double_katana_knife [ id ] = false;
					super_knife [ id ] = false;
					thompson [ id ] = false;
					uspx [ id ] = false;
					hunter [ id ] = false;
					shaman [ id ] = false;
					mage [ id ] = false;
					rogue [ id ] = false;
					druid [ id ] = false;
					warrior [ id ] = false;
					deklowaz [ id ] = false;
					infinity_knife [ id ] = false;
					ignes_knife [ id ] = false;
					trainer [ id ] = false;
					elf_knife [ id ] = false;
					strike_grenade3 [ id ] = true;
					super_knife_shop [ id ] = false;
					super_knife_shop2 [ id ] = false;
					set_user_gravity ( id, 0.4 );
					set_user_health ( id, 200 );
					set_user_armor ( id, 200 );
					give_item ( id, "weapon_hegrenade" );
					give_item ( id, "weapon_flashbang" );
					give_item ( id, "weapon_flashbang" );
					++g_Menu [ id ];
					++g_Menu [ id ];
					client_cmd(id, "bind v power");
					remove_task(id);
					if(Teleport_Cooldown[id]) {
						set_task ( 0.1, "TeleportShowHUD", id );
					}
					HasPower[id] = 7;
					
				}
			}
			
			if ( get_user_team ( id ) == 2 ) {
				if ( g_Menu [ id ] >= 3 ) {
					ColorChat ( id, GREEN, "%s Ti-ai ales odata clasa runda aceasta .", szPrefix );
				}
				
				else {
					ColorChat ( id, GREEN, "%s Clasa ta este acum^4 Deklowaz^3 + puterea de a te teleporta .^4", szPrefix );
					ColorChat ( id, GREEN, "%s Pentru activare apasa tasta^4 V^3 .^4", szPrefix );
					give_item ( id, "weapon_p90" );
					give_item ( id, "weapon_usp" );
					set_user_gravity ( id, 0.6 );
					set_user_health ( id, 200 );
					set_user_armor ( id, 130 );
					cs_set_user_bpammo ( id, CSW_USP, 100 );
					cs_set_user_bpammo ( id, CSW_P90, 200 );
					trainer [ id ] = false;
					katana_knife [ id ] = false;
					double_katana_knife [ id ] = false;
					super_knife [ id ] = false;
					infinity_knife [ id ] = false;
					ignes_knife [ id ] = false;
					elf_knife [ id ] = false;
					thompson [ id ] = false;
					druid [ id ] = false;
					uspx [ id ] = true;
					hunter [ id ] = false;
					shaman [ id ] = false;
					mage [ id ] = false;
					rogue [ id ] = false;
					warrior [ id ] = false;
					deklowaz [ id ] = true;
					super_knife_shop [ id ] = false;
					super_knife_shop2 [ id ] = false;
					++g_Menu [ id ];
					++g_Menu [ id ];
					client_cmd(id, "bind v power");
					remove_task(id);
					if(Teleport_Cooldown[id]) {
						set_task ( 0.1, "TeleportShowHUD", id );
					}
					HasPower[id] = 7;
					
				}
			}
		}
		
	}
	
	ShowHud ( id );
	if ( get_user_team ( id ) == 1 ) {
		cs_set_user_model(id, "furienxp")
	}
	
	if ( get_user_team ( id ) == 2 ) {
		cs_set_user_model(id, "furienxp2")
	}
	
	menu_destroy ( menu );
	return 1;
}

public cmdShop ( id, level, cid ) {
	
	if ( is_user_alive ( id ) ) {
		
		new menu = menu_create( "Shop Menu", "MenuShopGiver");
		
		if ( get_user_team ( id ) == 1 ) {
			menu_additem ( menu, "\ySuper Knife \y[ \r8000 $\y ]", "1", 0 );
		}
		
		menu_additem ( menu, "\yHE Grenade \y[ \r2500 $\y ]", "2", 0 );
		
		if ( get_user_team ( id ) == 2 ) {
			menu_additem ( menu, "\yDefuse Kit \y[ \r300 $\y ]", "3", 0 );
		}
		
		menu_additem ( menu, "\r+\y50 HP \y[ \r3000 $\y ]", "4", 0 );
		menu_additem ( menu, "\r+\y50 AP\r + \yHelmet \y[ \r2000 $\y ]", "5", 0 );
		
		
		menu_setprop(menu, MPROP_EXIT, MEXIT_ALL);
		menu_display(id, menu, 0);
		
		
		return 1;
	}
	
	else {
		ColorChat ( id, GREEN, "%s Nu poti folosi shop-ul cand esti mort.^4", szPrefix );
	}
	
	return 1;
}

public MenuShopGiver ( id, menu, item ) {
	
	if( item == MENU_EXIT )
	{
		return 1;
	}
	
	new data[6], szName[64];
	new access, callback;
	menu_item_getinfo(menu, item, access, data,charsmax(data), szName,charsmax(szName), callback);
	new key = str_to_num(data);
	
	switch(key)
	{
		case 1:
		{
			new iPret = cs_get_user_money ( id ) - 8000;
			if( iPret < 0 )
			{
				client_print( id, print_center, "Nu ai destui bani !" ); 
				return 1;
			}
			else
			{
				if ( Level [ id ] < 15 ) {
					super_knife_shop [ id ] = true;
					set_pev ( id, pev_viewmodel2, super_knife_shop_v_model );
					cs_set_user_money ( id, iPret );
				}
				
				else if ( Level [ id ] >= 15 ) {
					super_knife_shop2 [ id ] = true;
					set_pev ( id, pev_viewmodel2, super_knife_shop_v_model2 );
					set_pev ( id, pev_weaponmodel2, super_knife_shop_p_model2 );
					cs_set_user_money ( id, iPret );
				}
				
				
				return 1;
			}
			return 1
		}
		
		case 2:
		{
			new iPret = cs_get_user_money ( id ) - 2500;
			if( iPret < 0 )
			{
				client_print( id, print_center, "Nu ai destui bani !" );
				return 1;
			}
			else
			{
				give_item ( id, "weapon_hegrenade" );
				cs_set_user_money ( id, iPret );
				return 1;
			}
			return 1
		}
		
		case 3:
		{
			new iPret = cs_get_user_money ( id ) - 300;
			if( iPret < 0 )
			{
				client_print( id, print_center, "Nu ai destui bani !" );
				return 1;
			}
			else
			{
				give_item ( id, "item_thighpack" );
				cs_set_user_money ( id, iPret );
				return 1;
			}
			return 1
		}
		
		case 4:
		{
			new iPret = cs_get_user_money ( id ) - 3000;
			if( iPret < 0 )
			{
				client_print( id, print_center, "Nu ai destui bani !" );
				return 1;
			}
			else
			{
				set_dhudmessage ( 31, 201, 31, 0.02, 0.90, 0, 6.0, 1.0 );
				show_dhudmessage ( id, "+50 HP" );
				set_user_health ( id, get_user_health ( id ) + 50 );
				cs_set_user_money ( id, iPret );
				
				if ( get_user_team ( id ) == 2 && Level [ id ] < 20 ) {
					emit_sound(id, CHAN_ITEM, buy_AntiFurienHealth, 0.6, ATTN_NORM, 0, PITCH_NORM) 
					af ( id );
				}
				
				if ( get_user_team ( id ) == 2 && Level [ id ] >= 20 ) {
					emit_sound(id, CHAN_ITEM, buy_FurienHealth, 0.6, ATTN_NORM, 0, PITCH_NORM) 
					fr ( id );
				}
				
				return 1;
			}
			return 1
		}
		
		case 5:
		{
			new iPret = cs_get_user_money ( id ) - 2000;
			if( iPret < 0 )
			{
				client_print( id, print_center, "Nu ai destui bani !" );
				return 1;
			}
			else
			{
				set_dhudmessage ( 31, 201, 31, 0.20, 0.90, 0, 6.0, 1.0 );
				show_dhudmessage ( id, "+50 AP" );
				set_user_armor ( id, get_user_armor ( id ) + 50 );
				cs_set_user_money ( id, iPret );
				return 1;
			}
			return 1
		}
		
	}
	
	menu_destroy(menu);
	return 1
	
}

furien(origin[3]) { 
	message_begin(MSG_BROADCAST,SVC_TEMPENTITY) 
	write_byte(TE_SPRITE) 
	write_coord(origin[0]) 
	write_coord(origin[1]) 
	write_coord(origin[2]+=30) 
	write_short(g_FurienHealth) 
	write_byte(8) 
	write_byte(255) 
	message_end() 
} 

antifurien(origin[3]) { 
	message_begin(MSG_BROADCAST,SVC_TEMPENTITY) 
	write_byte(TE_SPRITE) 
	write_coord(origin[0]) 
	write_coord(origin[1]) 
	write_coord(origin[2]+=30) 
	write_short(g_AntiFurienHealth) 
	write_byte(8) 
	write_byte(255) 
	message_end() 
} 

public fr(victim) 
{ 
	new origin[3] 
	get_user_origin(victim,origin) 
	
	furien(origin) 
}

public af(victim) 
{ 
	new origin[3] 
	get_user_origin(victim,origin) 
	
	antifurien(origin) 
} 


public cmdShowTVIPMenu ( id, level, cid ) {
	
	new menu = menu_create ( "FurienVIP Menu", "MenuTVIPGiver" )
	
	if ( !UserHaveHpAndAp [ id ] ) {
		
		menu_additem ( menu, "\y225 HP\w &\y 225 AP", "1", VIP_ACCESS );
	}
	
	else if ( UserHaveHpAndAp [ id ] ) {
		
		menu_additem ( menu, "\w225 HP\y &\w 225 AP", "1", VIP_ACCESS );
	}
	
	if ( !UserHaveHeGrenade [ id ] ) {
		
		menu_additem ( menu, "\yHE GRENADE", "2", VIP_ACCESS );
	}
	
	else if ( UserHaveHeGrenade [ id ] ) {
		menu_additem ( menu, "\wHE GRENADE", "2", VIP_ACCESS );
	}
	
	if ( !UserHaveGodMode [ id ] ) {
		
		menu_additem ( menu, "\yGOD MODE", "3", VIP_ACCESS );
	}
	
	else if ( UserHaveGodMode [ id ] ) {
		
		menu_additem ( menu, "\wGOD MODE", "3", VIP_ACCESS );
	}
	
	if ( !UserHaveNoClip [ id ] ) {
		
		menu_additem ( menu, "\yNOCLIP", "4", VIP_ACCESS );
	}
	
	else if ( UserHaveNoClip [ id ] ) {
		
		menu_additem ( menu, "\wNOCLIP", "4", VIP_ACCESS );
	}
	
	if ( !UserHaveTeleport [ id ] ) {
		
		menu_additem ( menu, "\yTELEPORT", "5", VIP_ACCESS );
	}
	
	else if ( UserHaveTeleport [ id ] ) {
		
		menu_additem ( menu, "\wTELEPORT", "5", VIP_ACCESS );
	}
	
	if ( !UserHaveSuperKnife [ id ] ) {
		
		menu_additem ( menu, "\ySUPER KNIFE", "6", VIP_ACCESS );
	}
	
	else if ( UserHaveSuperKnife [ id ] ) {
		
		menu_additem ( menu, "\wSUPER KNIFE", "6", VIP_ACCESS );
	}
	
	menu_setprop(menu, MPROP_EXIT, MEXIT_ALL);
	menu_display(id, menu, 0);
	
	
	return 1
}

public cmdShowCTVIPMenu ( id, level, cid ) {
	
	new menu = menu_create ( "FurienVIP Menu", "MenuCTVIPGiver" )
	
	if ( !UserHaveHpAndAp [ id ] ) {
		
		menu_additem ( menu, "\y225 HP\w &\y 225 AP", "1", VIP_ACCESS );
	}
	
	else if ( UserHaveHpAndAp [ id ] ) {
		
		menu_additem ( menu, "\w225 HP\y &\w 225 AP", "1", VIP_ACCESS );
	}
	
	if ( !UserHaveHeGrenade [ id ] ) {
		
		menu_additem ( menu, "\yHE GRENADE", "2", VIP_ACCESS );
	}
	
	else if ( UserHaveHeGrenade [ id ] ) {
		menu_additem ( menu, "\wHE GRENADE", "2", VIP_ACCESS );
	}
	
	if ( !UserHaveGodMode [ id ] ) {
		
		menu_additem ( menu, "\yGOD MODE", "3", VIP_ACCESS );
	}
	
	else if ( UserHaveGodMode [ id ] ) {
		
		menu_additem ( menu, "\wGOD MODE", "3", VIP_ACCESS );
	}
	
	if ( !UserHaveNoClip [ id ] ) {
		
		menu_additem ( menu, "\yNOCLIP", "4", VIP_ACCESS );
	}
	
	else if ( UserHaveNoClip [ id ] ) {
		
		menu_additem ( menu, "\wNOCLIP", "4", VIP_ACCESS );
	}
	
	if ( !UserHaveTeleport [ id ] ) {
		
		menu_additem ( menu, "\yTELEPORT", "5", VIP_ACCESS );
	}
	
	else if ( UserHaveTeleport [ id ] ) {
		
		menu_additem ( menu, "\wTELEPORT", "5", VIP_ACCESS );
	}
	
	if ( !UserHaveSuperKnife [ id ] ) {
		
		menu_additem ( menu, "\yDUAL MP5", "6", VIP_ACCESS );
	}
	
	else if ( UserHaveSuperKnife [ id ] ) {
		
		menu_additem ( menu, "\wDUAL MP5", "6", VIP_ACCESS );
	}
	
	menu_setprop(menu, MPROP_EXIT, MEXIT_ALL);
	menu_display(id, menu, 0);
	
	
	return 1
}

public MenuCTVIPGiver ( id, menu, item )
{
	if( item == MENU_EXIT )
	{
		return 1
	}
	
	new data[6], szName[64];
	new access, callback;
	menu_item_getinfo(menu, item, access, data,charsmax(data), szName,charsmax(szName), callback);
	new key = str_to_num(data);
	
	switch(key)
	{
		case 1:
		{
			if ( UserHaveHpAndAp [ id ] ) {
				
				ColorChat ( id, GREEN, "%s Ai deja aceasta putere .^4", szPrefix );
				return 1;
			}
			
			else if ( !UserHaveHpAndAp [ id ] ) {
				
				set_user_health ( id, 225 );
				set_user_armor ( id, 225 );
				ColorChat ( id, GREEN, "%s Ai primit^4 225 HP^3 &^4 225 AP^3 .^4", szPrefix );
				UserHaveHpAndAp [ id ] = true;
				
				UserHaveHeGrenade [ id ] = false;
				UserHaveGodMode [ id ] = false;
				UserHaveNoClip [ id ] = false;
				UserHaveSuperKnife [ id ] = false;
				UserHaveTeleport [ id ] = false;
				UserHasChoosed [ id ] = true;
			}
		}
		
		case 2:
		{
			if ( UserHaveHeGrenade [ id ] ) {
				
				ColorChat ( id, GREEN, "%s Ai deja aceasta putere .", szPrefix );
				return 1;
			}
			
			else if ( !UserHaveHeGrenade [ id ] ) {
				
				give_item ( id, "weapon_hegrenade" );
				ColorChat ( id, GREEN, "%s Vei primi o grenada^4 HE^3 odata la^4 15^3 secunde .^4", szPrefix );
				UserHaveHeGrenade [ id ] = true;
				set_task(15.0, "GiveMeAHeGrenade", id, _, _, "b");
				
				UserHaveGodMode [ id ] = false;
				UserHaveNoClip [ id ] = false;
				UserHaveSuperKnife [ id ] = false;
				UserHaveTeleport [ id ] = false;
				UserHaveHpAndAp [ id ] = false;
				UserHasChoosed [ id ] = true;
			}
		}
		
		case 3:
		{
			if ( UserHaveGodMode [ id ] ) {
				
				ColorChat ( id, GREEN, "%s Ai deja aceasta putere .", szPrefix );
				return 1;
			}
			
			else if ( !UserHaveGodMode [ id ] ) {
				
				ColorChat ( id, GREEN, "%s Ai primit^4 GodMode^3, apasa tasta^4 Z^3 pentru activare. ^4", szPrefix );
				UserHaveGodMode [ id ] = true;
				client_cmd ( id, "bind z vippower" );
				
				UserHaveHeGrenade [ id ] = false;
				UserHaveNoClip [ id ] = false;
				UserHaveSuperKnife [ id ] = false;
				UserHaveTeleport [ id ] = false;
				UserHaveHpAndAp [ id ] = false;
				UserHasChoosed [ id ] = true;
			}
		}
		
		case 4:
		{
			if ( UserHaveNoClip [ id ] ) {
				
				ColorChat ( id, GREEN, "%s Ai deja aceasta putere .", szPrefix );
				return 1;
			}
			
			else if ( !UserHaveNoClip [ id ] ) {
				
				ColorChat ( id, GREEN, "%s Ai primit^4 NoClip^3, apasa tasta^4 Z^3 pentru activare. ^4", szPrefix );
				UserHaveNoClip [ id ] = true;
				client_cmd ( id, "bind z vippower" );
				
				UserHaveHeGrenade [ id ] = false;
				UserHaveGodMode [ id ] = false;
				UserHaveSuperKnife [ id ] = false;
				UserHaveTeleport [ id ] = false;
				UserHaveHpAndAp [ id ] = false;
				UserHasChoosed [ id ] = true;
			}
		}
		
		case 5:
		{
			if ( UserHaveTeleport [ id ] ) {
				
				ColorChat ( id, GREEN, "%s Ai deja aceasta putere .", szPrefix );
				return 1;
			}
			
			else if ( !UserHaveTeleport [ id ] ) {
				
				ColorChat ( id, GREEN, "%s Ai primit puterea de a te^4 Teleporta^3, apasa tasta^4 Z^3 pentru activare. ^4", szPrefix );
				UserHaveTeleport [ id ] = true;
				client_cmd ( id, "bind z power" );
				remove_task(id);
				if(Teleport_Cooldown[id]) {
					set_task ( 0.1, "TeleportShowHUD", id );
				}
				
				HasPower[id] = 7;
				
				UserHaveHeGrenade [ id ] = false;
				UserHaveGodMode [ id ] = false;
				UserHaveSuperKnife [ id ] = false;
				UserHaveNoClip [ id ] = false;
				UserHaveHpAndAp [ id ] = false;
				UserHasChoosed [ id ] = true;
			}
		}
		
		case 6:
		{
			if ( UserHaveDualMp5 [ id ] ) {
				
				ColorChat ( id, GREEN, "%s Ai deja aceasta putere .", szPrefix );
				return 1;
			}
			
			else if ( !UserHaveDualMp5 [ id ] ) {
				
				ColorChat ( id, GREEN, "%s Ai primit^4 Dual Mp5^3 . ^4", szPrefix );
				strip_user_weapons ( id );
				give_item ( id, "weapon_knife" );
				give_item ( id, "weapon_mp5navy" );
				give_item ( id, "weapon_hegrenade" );
				give_item ( id, "weapon_flashbang" );
				give_item ( id, "weapon_smokegrenade" );
				give_item ( id, "weapon_usp" );
				cs_set_user_bpammo ( id, CSW_MP5NAVY, 200 );
				cs_set_user_bpammo ( id, CSW_USP, 100 );
				dual_mp5 [ id ] = true;
				uspx [ id ] = true;
				flare [ id ] = true;
				
				UserHaveDualMp5 [ id ] = true;
				
				g_has_k1ases[id] = false
				g_delay[id] = 0
				g_ammoclaw[id] = 0
				UserHaveTeleport [ id ] = false;
				UserHaveHeGrenade [ id ] = false;
				UserHaveGodMode [ id ] = false;
				UserHaveSuperKnife [ id ] = false;
				UserHaveNoClip [ id ] = false;
				UserHaveHpAndAp [ id ] = false;
				UserHasChoosed [ id ] = true;
			}
		}
		
	}
	
	menu_destroy(menu);
	return 1
	
}

public MenuTVIPGiver ( id, menu, item )
{
	if( item == MENU_EXIT )
	{
		return 1
	}
	
	new data[6], szName[64];
	new access, callback;
	menu_item_getinfo(menu, item, access, data,charsmax(data), szName,charsmax(szName), callback);
	new key = str_to_num(data);
	
	switch(key)
	{
		case 1:
		{
			if ( UserHaveHpAndAp [ id ] ) {
				
				ColorChat ( id, GREEN, "%s Ai deja aceasta putere .^4", szPrefix );
				return 1;
			}
			
			else if ( !UserHaveHpAndAp [ id ] ) {
				
				set_user_health ( id, 225 );
				set_user_armor ( id, 225 );
				ColorChat ( id, GREEN, "%s Vei primi^4 225 HP^3 &^4 225 AP^3 in fiecare runda .^4", szPrefix );
				UserHaveHpAndAp [ id ] = true;
				
				UserHaveHeGrenade [ id ] = false;
				UserHaveGodMode [ id ] = false;
				UserHaveNoClip [ id ] = false;
				UserHaveSuperKnife [ id ] = false;
				UserHaveTeleport [ id ] = false;
				UserHasChoosed [ id ] = true;
			}
		}
		
		case 2:
		{
			if ( UserHaveHeGrenade [ id ] ) {
				
				ColorChat ( id, GREEN, "%s Ai deja aceasta putere .", szPrefix );
				return 1;
			}
			
			else if ( !UserHaveHeGrenade [ id ] ) {
				
				give_item ( id, "weapon_hegrenade" );
				ColorChat ( id, GREEN, "%s Vei primi o grenada^4 HE^3 odata la^4 15^3 secunde .^4", szPrefix );
				UserHaveHeGrenade [ id ] = true;
				set_task(15.0, "GiveMeAHeGrenade", id, _, _, "b");
				
				UserHaveGodMode [ id ] = false;
				UserHaveNoClip [ id ] = false;
				UserHaveSuperKnife [ id ] = false;
				UserHaveTeleport [ id ] = false;
				UserHaveHpAndAp [ id ] = false;
				UserHasChoosed [ id ] = true;
			}
		}
		
		case 3:
		{
			if ( UserHaveGodMode [ id ] ) {
				
				ColorChat ( id, GREEN, "%s Ai deja aceasta putere .", szPrefix );
				return 1;
			}
			
			else if ( !UserHaveGodMode [ id ] ) {
				
				ColorChat ( id, GREEN, "%s Vei primi^4 GodMode^3 in fiecare runda, apasa tasta^4 Z^3 pentru activare. ^4", szPrefix );
				UserHaveGodMode [ id ] = true;
				client_cmd ( id, "bind z vippower" );
				
				UserHaveHeGrenade [ id ] = false;
				UserHaveNoClip [ id ] = false;
				UserHaveSuperKnife [ id ] = false;
				UserHaveTeleport [ id ] = false;
				UserHaveHpAndAp [ id ] = false;
				UserHasChoosed [ id ] = true;
			}
		}
		
		case 4:
		{
			if ( UserHaveNoClip [ id ] ) {
				
				ColorChat ( id, GREEN, "%s Ai deja aceasta putere .", szPrefix );
				return 1;
			}
			
			else if ( !UserHaveNoClip [ id ] ) {
				
				ColorChat ( id, GREEN, "%s Vei primi^4 NoClip^3 in fiecare runda, apasa tasta^4 Z^3 pentru activare. ^4", szPrefix );
				UserHaveNoClip [ id ] = true;
				client_cmd ( id, "bind z vippower" );
				
				UserHaveHeGrenade [ id ] = false;
				UserHaveGodMode [ id ] = false;
				UserHaveSuperKnife [ id ] = false;
				UserHaveTeleport [ id ] = false;
				UserHaveHpAndAp [ id ] = false;
				UserHasChoosed [ id ] = true;
			}
		}
		
		case 5:
		{
			if ( UserHaveTeleport [ id ] ) {
				
				ColorChat ( id, GREEN, "%s Ai deja aceasta putere .", szPrefix );
				return 1;
			}
			
			else if ( !UserHaveTeleport [ id ] ) {
				
				ColorChat ( id, GREEN, "%s Vei primi puterea de a te^4 Teleporta^3 in fiecare runda, apasa tasta^4 Z^3 pentru activare. ^4", szPrefix );
				UserHaveTeleport [ id ] = true;
				client_cmd ( id, "bind z power" );
				remove_task(id);
				if(Teleport_Cooldown[id]) {
					set_task ( 0.1, "TeleportShowHUD", id );
				}
				
				HasPower[id] = 7;
				
				UserHaveHeGrenade [ id ] = false;
				UserHaveGodMode [ id ] = false;
				UserHaveSuperKnife [ id ] = false;
				UserHaveNoClip [ id ] = false;
				UserHaveHpAndAp [ id ] = false;
				UserHasChoosed [ id ] = true;
			}
		}
		
		case 6:
		{
			if ( UserHaveSuperKnife [ id ] ) {
				
				ColorChat ( id, GREEN, "%s Ai deja aceasta putere .", szPrefix );
				return 1;
			}
			
			else if ( !UserHaveSuperKnife [ id ] ) {
				
				ColorChat ( id, GREEN, "%s Vei primi^4 SuperKnife^3 in fiecare runda. ^4", szPrefix );
				if ( Level [ id ] < 15 ) {
					super_knife_shop [ id ] = true;
					set_pev ( id, pev_viewmodel2, super_knife_shop_v_model );
				}
				
				else if ( Level [ id ] >= 15 ) {
					super_knife_shop2 [ id ] = true;
					set_pev ( id, pev_viewmodel2, super_knife_shop_v_model2 );
					set_pev ( id, pev_weaponmodel2, super_knife_shop_p_model2 );
				}
				
				UserHaveSuperKnife [ id ] = true;
				
				UserHaveTeleport [ id ] = false;
				UserHaveHeGrenade [ id ] = false;
				UserHaveGodMode [ id ] = false;
				UserHaveSuperKnife [ id ] = false;
				UserHaveNoClip [ id ] = false;
				UserHaveHpAndAp [ id ] = false;
				UserHasChoosed [ id ] = true;
			}
		}
		
	}
	
	menu_destroy(menu);
	return 1
	
}

public GiveMeAHeGrenade ( id ) {
	
	if ( UserHaveHeGrenade [ id ] ) {
		
		give_item ( id, "weapon_hegrenade" );
		set_hudmessage(0, 100, 225, 0.05, 0.60, 0, 6.0, 1.0)
		show_hudmessage ( id, "Ai primit o grenada HE" );
	}
}

public StopGodMode ( id ) {
	
	if ( UserHaveGodMode [ id ] ) {
		set_user_godmode ( id, 0 );
	}
}

public StopNoClip ( id ) {
	
	if ( UserHaveNoClip [ id ] ) {
		set_user_noclip ( id, 0 );
	}
	
}

public VIPpower ( id ) {
	
	if ( UserHaveGodMode [ id ] ) {
		
		set_user_godmode ( id, 1 );
		set_task(3.0, "StopGodMode", id );
		client_print ( id, print_center, "Ai GodMode penbtru 3 secunde" );
	}
	
	if ( UserHaveNoClip [ id ] ) {
		
		set_user_noclip ( id, 1 );
		set_task ( 4.0, "StopNoClip", id );
		client_print ( id, print_center, "Ai NoClip penbtru 4 secunde" );
	}
	
}

public VipBonus ( id ) {
	
	if ( UserHaveHpAndAp [ id ] ) {
		
		set_user_health ( id, 225 );
		set_user_armor ( id, 225 );
	}
	
	if ( UserHaveHeGrenade [ id ] ) {
		
		give_item ( id, "weapon_hegrenade" );
		set_task(15.0, "GiveMeAHeGrenade", id, _, _, "b");
	}
	
	if ( UserHaveGodMode [ id ] ) {
		
		client_cmd ( id, "bind z vippower" );
	}
	
	if ( UserHaveNoClip [ id ] ) {
		
		client_cmd ( id, "bind z vippower" );
		
	}
	
	if ( UserHaveTeleport [ id ] ) {
		
		client_cmd ( id, "bind z power" );
	}
	
	if ( UserHaveSuperKnife [ id ] ) {
		
		if ( Level [ id ] < 15 ) {
			super_knife_shop [ id ] = true;
			set_pev ( id, pev_viewmodel2, super_knife_shop_v_model );
		}
		
		else if ( Level [ id ] >= 15 ) {
			super_knife_shop2 [ id ] = true;
			set_pev ( id, pev_viewmodel2, super_knife_shop_v_model2 );
			set_pev ( id, pev_weaponmodel2, super_knife_shop_p_model2 );
		}
		
	}
	
}

public ForcePlayerSpeed ( id ) {
	
	if ( get_user_team ( id ) == 1 ) {
		
		if ( trainer [ id ] )
		{
			set_pev ( id, pev_maxspeed, 900.0 );
		} 
		
		if ( infinity_knife [ id ] )
		{
			set_pev ( id, pev_maxspeed, 930.0 );
		} 
		
		if ( super_knife [ id ] )
		{
			set_pev ( id, pev_maxspeed, 950.0 );
		} 
		
		if ( katana_knife [ id ] )
		{
			set_pev ( id, pev_maxspeed, 1000.0 );
		} 
		
		if ( double_katana_knife [ id ] )
		{
			set_pev ( id, pev_maxspeed, 1050.0 );
		} 
		
		if ( ignes_knife [ id ] )
		{
			set_pev ( id, pev_maxspeed, 1100.0 );
		} 
		
		if ( elf_knife [ id ] )
		{
			set_pev ( id, pev_maxspeed, 1150.0 );
		} 
		
		if ( vip_axe_knife [ id ] )
		{
			set_pev ( id, pev_maxspeed, 1200.0 );
		}
		
	}
}

public bomb_planted ( planter ) {
	
	eXP [ planter ] += 35;
	ColorChat ( planter, GREEN, "%s Ai primit^4 35^3 XP pentru plantarea bombei .^4", szPrefix );
	
	new originnn[3];
	get_user_origin ( planter, originnn, 0 );
	
	message_begin(MSG_PAS, SVC_TEMPENTITY, originnn);
	write_byte(TE_BEAMCYLINDER);
	write_coord(originnn[0]);
	write_coord(originnn[1]);
	write_coord(originnn[2]+10);
	write_coord(originnn[0]);
	write_coord(originnn[1]);
	write_coord(originnn[2]+60);
	write_short(TeleportSprite);
	write_byte(0);
	write_byte(0);
	write_byte(3);
	write_byte(60);
	write_byte(0);
	write_byte(255); //255
	write_byte(0); //255
	write_byte(0); //255
	write_byte(255); //255 //RED
	write_byte(0);
	message_end();
	
	UTIL_CreateBeamCylinder( originnn, 120, TeleportSprite, 0, 0, 6, 16, 0, 255, 0, 0, 255, 0 );
	UTIL_CreateBeamCylinder( originnn, 320, TeleportSprite, 0, 0, 6, 16, 0, 255, 51, 51, 255, 0 );
	UTIL_CreateBeamCylinder( originnn, 500, TeleportSprite, 0, 0, 6, 16, 0, 255, 102, 102, 255, 0 );
	
	new iPlayers[32]
	new iNum
	
	get_players( iPlayers, iNum, "e", "TERRORIST" )
	
	for( new i = 0; i < iNum; i++ )
	{
		g_CanUseHe[iPlayers[i]] = true;
	}
}

public bomb_defused ( defuser ) {
	eXP [ defuser ] += 35;
	ColorChat ( defuser, GREEN, "%s Ai primit^4 35^3 XP pentru defusarea bombei .^4", szPrefix );
	new originnn[3];
	get_user_origin ( defuser, originnn, 0 );
	message_begin(MSG_PAS, SVC_TEMPENTITY, originnn);
	write_byte(TE_BEAMCYLINDER);
	write_coord(originnn[0]);
	write_coord(originnn[1]);
	write_coord(originnn[2]+10);
	write_coord(originnn[0]);
	write_coord(originnn[1]);
	write_coord(originnn[2]+60);
	write_short(TeleportSprite);
	write_byte(0);
	write_byte(0);
	write_byte(3);
	write_byte(60);
	write_byte(0);
	write_byte(0); //255
	write_byte(0); //255
	write_byte(255); //255 //BLUE
	write_byte(255); //255 
	write_byte(0);
	message_end();
	
	Create_TE_SPRITETRAIL3( originnn, originnn, TeleportSprite3, 50, 10, 2, 50, 10 );
	
	/*---ScreenShake---*/
	message_begin(MSG_ONE , gMsgScreenShake , {0,0,0} ,defuser)
	write_short( 1<<14 );
	write_short( 1<<14 );
	write_short( 1<<14 );
	message_end();
}

public bomb_explode ( planter ) {
	eXP [ planter ] += 25;
	ColorChat ( planter, GREEN, "%s Ai primit^4 25^3 XP pentru explodarea bombei .^4", szPrefix );
}

public handle_say(id) {
	new said[192]
	read_args(said,192)
	if( ( containi(said, "who") != -1 && containi(said, "vips") != -1 ) || contain(said, "/vips") != -1 )
		set_task(0.1,"print_adminlist",id)
	return PLUGIN_CONTINUE
}

public print_adminlist(user) 
{
	new adminnames[33][32]
	new message[256]
	new contactinfo[256], contact[112]
	new id, count, x, len
	
	for(id = 1 ; id <= maxplayers ; id++)
		if(is_user_connected(id))
		if( get_user_flags(id) & VIP_ACCESS )
		get_user_name(id, adminnames[count++], 31)
	
	len = format(message, 255, "%s VIPS ONLINE: ",COLOR)
	if(count > 0) {
		for(x = 0 ; x < count ; x++) {
			len += format(message[len], 255-len, "%s%s ", adminnames[x], x < (count-1) ? ", ":"")
			if(len > 96 ) {
				print_message(user, message)
				len = format(message, 255, "%s ",COLOR)
			}
		}
		print_message(user, message)
	}
	else {
		len += format(message[len], 255-len, "Nici un VIP online.")
		print_message(user, message)
	}
	
	get_cvar_string("amx_contactinfo", contact, 63)
	if(contact[0])  {
		format(contactinfo, 111, "%s Cumpara VIP -- %s", COLOR, contact)
		print_message(user, contactinfo)
	}
}

print_message(id, msg[]) {
	message_begin(MSG_ONE, gmsgSayText, {0,0,0}, id)
	write_byte(id)
	write_string(msg)
	message_end()
}

public eDeath ( ) {
	
	new iKiller = read_data ( 1 );
	new iVictim = read_data ( 2 );
	new Headshot = read_data ( 3 );
	
	new weapon [ 32 ];
	read_data ( 4, weapon, sizeof ( weapon ) -1 );
	if ( iKiller == iVictim )
	{
		return 1;
	}
	new name [ 32 ];
	
	get_user_name ( iVictim, name, sizeof ( name ) -1 );
	
	if ( Headshot && get_user_team ( iKiller ) == 2 )
	{
		
		eXP [ iKiller ] += get_pcvar_num ( HsXp );
		ColorChat ( iKiller, GREEN, "%s Ai primit^4 %i^3 XP^4 [ HeadShot ]^3", szPrefix, get_pcvar_num ( HsXp ) + get_pcvar_num ( KillXp ) );
	}
	
	else if ( Headshot && get_user_team ( iKiller ) == 2 && get_user_flags ( iKiller ) & VIP_ACCESS )
	{
		
		eXP [ iKiller ] += get_pcvar_num ( HsXp ) + 10;
		ColorChat ( iKiller, GREEN, "%s Ai primit^4 %i^3 XP^4 [ HeadShot ]^3", szPrefix, get_pcvar_num ( HsXp ) + get_pcvar_num ( KillXp ) );
	}
	
	else if ( Headshot && get_user_team ( iKiller ) == 1 && get_user_weapon ( iKiller ) == CSW_KNIFE && get_user_flags ( iKiller ) & VIP_ACCESS )
	{
		
		eXP [ iKiller ] += get_pcvar_num ( HsXp ) + 10;
		set_user_health ( iKiller, get_user_health ( iKiller ) + 35 );
		set_dhudmessage ( 31, 201, 31, 0.02, 0.90, 0, 6.0, 1.0 );
		show_dhudmessage ( iKiller, "+35 HP" );
		ColorChat ( iKiller, GREEN, "%s Ai primit^4 %i^3 XP +^4 35^3 HP^4 [ HeadShot ]^3", szPrefix, get_pcvar_num ( HsXp ) + get_pcvar_num ( KillXp ) + 10 );
		
	}
	
	else if ( Headshot && get_user_team ( iKiller ) == 1 && get_user_weapon ( iKiller ) == CSW_KNIFE )
	{
		
		eXP [ iKiller ] += get_pcvar_num ( HsXp );
		set_user_health ( iKiller, get_user_health ( iKiller ) + 25 );
		set_dhudmessage ( 31, 201, 31, 0.02, 0.90, 0, 6.0, 1.0 );
		show_dhudmessage ( iKiller, "+25 HP" );
		ColorChat ( iKiller, GREEN, "%s Ai primit^4 %i^3 XP +^4 25^3 HP^4 [ HeadShot ]^3", szPrefix, get_pcvar_num ( HsXp ) + get_pcvar_num ( KillXp ) );
		
	}
	
	else if ( equali ( weapon, "grenade" ) && Level [ iKiller ] == 0 || Level [ iKiller ] == 1 || Level [ iKiller ] == 2 || Level [ iKiller ] == 3 || Level [ iKiller ] == 4 || Level [ iKiller ] == 5 && get_user_flags ( iKiller ) & VIP_ACCESS )
	{
		eXP [ iKiller ] += get_pcvar_num ( HeXp ) + 5;
		set_user_credits ( iKiller, get_user_credits ( iKiller ) + 2 );
		ColorChat ( iKiller, GREEN, "%s Ai primit^4 %i^3 XP +^4 2^3 credite^4 [ He Grenade ]^3", szPrefix, get_pcvar_num(HeXp) + get_pcvar_num(KillXp) + 5);
	}
	
	else if ( equali ( weapon, "grenade" ) && Level [ iKiller ] == 0 || Level [ iKiller ] == 1 || Level [ iKiller ] == 2 || Level [ iKiller ] == 3 || Level [ iKiller ] == 4 || Level [ iKiller ] == 5 )
	{
		eXP [ iKiller ] += get_pcvar_num ( HeXp );
		set_user_credits ( iKiller, get_user_credits ( iKiller ) + 1 );
		ColorChat ( iKiller, GREEN, "%s Ai primit^4 %i^3 XP +^4 1^3 credit^4 [ He Grenade ]^3", szPrefix, get_pcvar_num(HeXp) + get_pcvar_num(KillXp) );
	}
	
	else if ( equali ( weapon, "grenade" ) && get_user_flags ( iKiller ) & VIP_ACCESS )
	{
		eXP [ iKiller ] += get_pcvar_num ( HeXp ) + 10;
		ColorChat ( iKiller, GREEN, "%s Ai primit^4 %i^3 XP^4 [ He Grenade ]^3", szPrefix, get_pcvar_num(HeXp) + get_pcvar_num(KillXp) + 10 );
		
	}
	
	else if ( equali ( weapon, "grenade" ) )
	{
		eXP [ iKiller ] += get_pcvar_num ( HeXp );
		ColorChat ( iKiller, GREEN, "%s Ai primit^4 %i^3 XP^4 [ He Grenade ]^3", szPrefix, get_pcvar_num(HeXp) + get_pcvar_num(KillXp) );
		
	}
	
	else if ( equali ( weapon, "knife" ) && get_user_team ( iKiller ) == 2 && !salamander [ iKiller ] && get_user_flags ( iKiller ) & VIP_ACCESS )
	{
		eXP [ iKiller ] += get_pcvar_num ( KnifeXp ) + 10;
		ColorChat ( iKiller, GREEN, "%s Ai primit^4 %i^3 XP^4 [ Knife ]^3", szPrefix, get_pcvar_num(KnifeXp) + get_pcvar_num(KillXp) + 10 );
		
	}
	
	else if ( equali ( weapon, "knife" ) && get_user_team ( iKiller ) == 2 && !salamander [ iKiller ] )
	{
		eXP [ iKiller ] += get_pcvar_num ( HeXp );
		ColorChat ( iKiller, GREEN, "%s Ai primit^4 %i^3 XP^4 [ Knife ]^3", szPrefix, get_pcvar_num(KnifeXp) + get_pcvar_num(KillXp) );
		
	}
	
	else
	{
		ColorChat ( iKiller, GREEN, "%s Ai primit^4 %i^3 XP^4 [ Kill ]^3", szPrefix, get_pcvar_num ( KillXp ) );
		
	}
	
	if ( Level [ iVictim ] >= 25 ) {
		AddYellowBonusBox ( iVictim );
	}
	
	else if ( Level [ iVictim ] < 25 ) {
		AddBonusBox ( iVictim );
	}
	
	if ( get_user_team ( iKiller ) == 2 && get_user_team ( iVictim ) == 1 ) {
		cs_set_user_money ( iKiller, cs_get_user_money ( iKiller ) + 600 );
		eXP [ iKiller ] += get_pcvar_num ( KillXp );
	}
	
	if ( get_user_team ( iKiller ) == 1 && get_user_team ( iVictim ) == 2 ) {
		cs_set_user_money ( iKiller, cs_get_user_money ( iKiller ) + 500 );
		eXP [ iKiller ] += get_pcvar_num ( KillXp );
	}
	
	if ( Level [ iKiller ] <= 30 ) {
		ShowHud ( iKiller );
		return 1;
	}
	
	while ( eXP [ iKiller ] >= Levels [ Level [ iKiller ] ] ) {
		ColorChat ( iKiller, GREEN, "%s Felicitari ! Acum ai levelul ^4%s^3, cu ^4%i^3 XP.", szPrefix, Prefix [ Level [ iKiller ] ], eXP [ iKiller ] );
		Level [ iKiller ] ++;
		
	}
	
	SaveData ( iKiller );
	
	if ( !is_user_alive ( iVictim ) && get_user_team ( iVictim ) == 1 ) {
		new gMsgScreenFade = get_user_msgid ( "ScreenFade" );
		message_begin ( MSG_ONE_UNRELIABLE , gMsgScreenFade , {0,0,0} , iVictim );
		write_short ( (6<<10) ); // duration
		write_short ( (5<<10) ); // hold time
		write_short ( (1<<12) ); // fade type
		write_byte ( 255 );
		write_byte ( 0 );
		write_byte ( 0 );
		write_byte ( 170 );
		message_end ( );
	}
	
	else if ( !is_user_alive ( iVictim ) && get_user_team ( iVictim ) == 2 ) {
		new gMsgScreenFade = get_user_msgid ( "ScreenFade" );
		message_begin ( MSG_ONE_UNRELIABLE , gMsgScreenFade , {0,0,0} , iVictim );
		write_short ( (6<<10) ); // duration
		write_short ( (5<<10) ); // hold time
		write_short ( (1<<12) ); // fade type
		write_byte ( 0 );
		write_byte ( 0 );
		write_byte ( 255 );
		write_byte ( 170 );
		message_end ( );
	}
	
	return 1;
}

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: 
				{ 
				}
			}
		}
	}
}

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, Model[1])
				set_pev(ent,pev_team, 2)
			}
			
			case CS_TEAM_CT: {
				engfunc(EngFunc_SetModel,ent, Model[0])	
				set_pev(ent,pev_team, 1)
			}
		}
		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)
	}
}

public AddYellowBonusBox(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, Model_Yellow[1])
				set_pev(ent,pev_team, 2)
			}
			
			case CS_TEAM_CT: {
				engfunc(EngFunc_SetModel,ent, Model_Yellow[0])	
				set_pev(ent,pev_team, 1)
			}
		}
		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)
	}
}

public Touch(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) )
	{
		GiveBonusBox(toucher)
		set_pev(touched, pev_effects, EF_NODRAW)
		set_pev(touched, pev_solid, SOLID_NOT)
		remove_entity(touched);
	}
	
	return FMRES_IGNORED
}

public Touch_Yellow ( 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) )
	{
		GiveYellowBonusBox(toucher)
		set_pev(touched, pev_effects, EF_NODRAW)
		set_pev(touched, pev_solid, SOLID_NOT)
		remove_entity(touched);
	}
	
	return FMRES_IGNORED
}

public event_cur_weapon(id) {
	if(HasSpeed[id] && cs_get_user_team(id) == CS_TEAM_T && get_user_maxspeed(id) < get_pcvar_float(CvarFurienSpeed)) {
		set_user_maxspeed(id, get_pcvar_float(CvarFurienSpeed));
	}
	if(HasSpeed[id] && cs_get_user_team(id) == CS_TEAM_CT && get_user_maxspeed(id) < get_pcvar_float(CvarAntiFurienSpeed)) {
		set_user_maxspeed(id, get_pcvar_float(CvarAntiFurienSpeed));
	}
	
	if ( LowSpeed [ id ] && cs_get_user_team ( id ) == CS_TEAM_T ) {
		set_user_maxspeed ( id, get_user_maxspeed ( id ) - 250 );
	}
	
	if ( LowSpeed [ id ] && cs_get_user_team ( id ) == CS_TEAM_CT ) {
		set_user_maxspeed ( id, get_user_maxspeed ( id ) - 70 );
	}
}

public wrongeffect ( id ) {
	new gMsgScreenFade = get_user_msgid ( "ScreenFade" );
	message_begin ( MSG_ONE_UNRELIABLE , gMsgScreenFade , {0,0,0} , id );
	write_short ( (6<<10) ); // duration
	write_short ( (5<<10) ); // hold time
	write_short ( (1<<12) ); // fade type
	write_byte ( 255 );
	write_byte ( 0 );
	write_byte ( 0 );
	write_byte ( 170 );
	message_end ( );
}

public goodeffect ( id ) {
	new gMsgScreenFade = get_user_msgid ( "ScreenFade" );
	message_begin ( MSG_ONE_UNRELIABLE , gMsgScreenFade , {0,0,0} , id );
	write_short ( (6<<10) ); // duration
	write_short ( (5<<10) ); // hold time
	write_short ( (1<<12) ); // fade type
	write_byte ( 0 );
	write_byte ( 0 );
	write_byte ( 255 );
	write_byte ( 170 );
	message_end ( );
}

public GiveYellowBonusBox ( id ) {
	
	switch (random_num(1,5)) 
	{
		case 1:
		{
			goodeffect ( id );
			set_user_health ( id, get_user_health ( id ) + 150 ); 
			ColorChat ( id, GREEN, "%s Ai primit^4 150^3 HP .^4", szPrefix );
		}
		
		case 2:
		{
			goodeffect ( id );
			set_user_armor ( id, get_user_armor ( id ) + 200 );
			ColorChat ( id, GREEN, "%s Ai Primit^4 200^3 AP .^4", szPrefix );
		}
		
		case 3:
		{
			if ( get_user_team ( id ) == 2 ) {
				
				dual_mp5 [ id ] = true;
				k1ases_weapon [ id ] = false;
				remove_dragoncannon ( id );
				give_item ( id, "weapon_mp5navy" );
				cs_set_user_bpammo ( id, CSW_MP5NAVY, 200 );
				ColorChat ( id, GREEN, "%s Ai primit^4 Dual Mp5^3 .^4", szPrefix );
				
			}
			
			else if ( get_user_team ( id ) == 1 ) {
				
				give_item ( id, "weapon_flashbang" );
				cs_set_user_bpammo ( id, CSW_FLASHBANG, 5 );
				ColorChat ( id, GREEN, "%s Ai primit^4 5^3 grenazi^4 FLASH^3 .^4", szPrefix );
				
			}
			
		}
		
		case 4:
		{
			give_item ( id, "weapon_hegrenade" );
			cs_set_user_bpammo ( id, CSW_HEGRENADE, 3 );
			ColorChat ( id, GREEN, "%s Ai primit^4 3^3 grenazi^4 HE^3 .^4", szPrefix );
		}
		
		case 5:
		{
			set_user_credits ( id, get_user_credits ( id ) + 5 );
			ColorChat ( id, GREEN, "%s Ai primit^4 5^3 credite .^4", szPrefix );
		}
	}
}

public GiveBonusBox(id) {
	
	if ( get_user_team ( id ) == 1 ) {
		
		switch (random_num(1,20)) 
		{
			case 1:
			{
				goodeffect ( id );
				set_user_health ( id, get_user_health ( id ) + 50 ); 
				ColorChat ( id, GREEN, "%s Ai primit^4 50^3 HP .^4", szPrefix );
			}
			
			case 2:
			{
				goodeffect ( id );
				set_user_armor ( id, get_user_armor ( id ) + 100 );
				ColorChat ( id, GREEN, "%s Ai primit^4 100^3 AP .^4", szPrefix );
			}
			
			case 3:
			{
				goodeffect ( id );
				set_user_health ( id, get_user_health ( id ) - 20 ); 
				wrongeffect ( id );
				ColorChat ( id, GREEN, "%s Ai pierdut^4 20^3 HP .^4", szPrefix );
			}
			
			case 4:
			{
				goodeffect ( id );
				set_user_armor ( id, get_user_armor ( id ) - 50 );
				wrongeffect ( id );
				ColorChat ( id, GREEN, "%s Ai pierdut^4 50^3 AP .^4", szPrefix );
			}
			
			case 5:
			{
				goodeffect ( id );
				cs_set_user_money ( id, cs_get_user_money ( id ) + 3000 );
				ColorChat ( id, GREEN, "%s Ai primit^4 3000^3 $ .^4", szPrefix );
			}
			
			case 6:
			{
				cs_set_user_money ( id, cs_get_user_money ( id ) - 2000 );
				wrongeffect ( id );
				ColorChat ( id, GREEN, "%s Ai pierdut^4 2000^3 $ .^4", szPrefix );
			}
			
			case 7:
			{
				goodeffect ( id );
				set_user_gravity ( id, 0.4 );
				ColorChat ( id, GREEN, "%s Ai primit^4 400^3 Gravity .^4", szPrefix );
			}
			
			case 8:
			{
				goodeffect ( id );
				HasSpeed[id] = true;
				ColorChat ( id, GREEN, "%s Ai primit^4 1000^3 Speed .^4", szPrefix );
			}
			
			case 9:
			{
				LowSpeed [ id ] = true;
				wrongeffect ( id );
				ColorChat ( id, GREEN, "%s Ai pierdut din viteza .^4", szPrefix );
			}
			
			case 10:
			{
				set_user_health ( id, 225 );
				set_user_armor ( id, 225 );
				goodeffect ( id );
				ColorChat ( id, GREEN, "%s Acum ai^4 225^3 HP si^4 225^3 AP^4 .^4", szPrefix );
			}
			
			case 11:
			{
				cs_set_user_money ( id, 0 );
				wrongeffect ( id );
				ColorChat ( id, GREEN, "%s Ai pierdut toti banii !^4", szPrefix );
			}
			
			case 12:
			{
				
				if ( !super_knife_shop [ id ] || !super_knife_shop2 [ id ] ) {
					
					goodeffect ( id );
					if ( Level [ id ] < 15 ) {
						super_knife_shop [ id ] = true;
						set_pev ( id, pev_viewmodel2, super_knife_shop_v_model );
					}
					
					else if ( Level [ id ] >= 15 ) {
						super_knife_shop2 [ id ] = true;
						set_pev ( id, pev_viewmodel2, super_knife_shop_v_model2 );
						set_pev ( id, pev_weaponmodel2, super_knife_shop_p_model2 );
					}
					
					ColorChat ( id, GREEN, "%s Ai primit^4 Super Knife^4 .^4", szPrefix ); 
					
				}
				
				else if ( super_knife_shop [ id ] || super_knife_shop2 [ id ] ) {
					goodeffect ( id );
					fm_set_user_health ( id, get_user_health ( id ) + 70 );
					ColorChat ( id, GREEN, "%s Ai primit^4 70^3 HP .^4", szPrefix );
				}
			}
			
			case 13:
			{
				goodeffect ( id );
				set_user_xp ( id, get_user_xp ( id ) + 100 );
				ColorChat ( id, GREEN, "%s Ai primit^4 100^3 XP .^4", szPrefix );
			}
			
			case 14:
			{
				wrongeffect ( id );
				set_user_xp ( id, get_user_xp ( id ) - 50 );
				ColorChat ( id, GREEN, "%s Ai pierdut^4 50^3 XP .^4", szPrefix );
			}
			
			case 15:
			{
				ColorChat ( id, GREEN, "%s A trecut mosul pe la tine, ai primit^4 16000^3 $ .^4", szPrefix );
				goodeffect ( id );
			}
			
			case 16:
			{	
				if ( !vip_axe_knife [ id ] || !deklowaz [ id ] ) {
					HasTeleport[id] = true;
					client_cmd(id, "bind x power2");
					goodeffect ( id );
					ColorChat ( id, GREEN, "%s Ai primit puterea de a te teleporta, apasa tasta^4 X^3 pentru a te teleporta .^4", szPrefix );
				}
				
				else {
					set_user_credits ( id, get_user_credits ( id ) + 2 );
					ColorChat ( id, GREEN, "%s Ai primit^4 2^3 credite .", szPrefix );
				}
				
				
			}
			
			case 17:
			{
				
				HasSpeed[id] = true;
				client_cmd(id, "cl_sidespeed %d",get_pcvar_float(CvarFurienSpeed))
				client_cmd(id, "cl_forwardspeed %d",get_pcvar_float(CvarFurienSpeed))
				client_cmd(id, "cl_backspeed %d",get_pcvar_float(CvarFurienSpeed))
				set_user_maxspeed(id, get_pcvar_float(CvarFurienSpeed));
			}
			
			case 18:
			{
				
				
				fm_set_user_health ( id, get_user_health ( id ) + 80 );
				ColorChat ( id, GREEN, "%s Ai primit^4 80^3 HP .^4", szPrefix );
			}
			
			case 19:
			{
				give_item ( id, "weapon_hegrenade" );
				ColorChat ( id, GREEN, "%s Ai primit o grenada^4 HE^3 .", szPrefix );
			}
			
			case 20:
			{
				give_item ( id, "weapon_flashbang" );
				ColorChat ( id, GREEN, "%s Ai primit o grenada^4 FLASH^3 .", szPrefix );
			}
		}
	}
	
	else if ( get_user_team ( id ) == 2 ) {
		
		switch (random_num(1,23)) 
		{
			case 1:
			{
				goodeffect ( id );
				set_user_health ( id, get_user_health ( id ) + 50 ); 
				ColorChat ( id, GREEN, "%s Ai primit^4 50^3 HP .^4", szPrefix );
			}
			
			case 2:
			{
				goodeffect ( id );
				set_user_armor ( id, get_user_armor ( id ) + 100 );
				ColorChat ( id, GREEN, "%s Ai primit^4 100^3 AP .^4", szPrefix );
			}
			
			case 3:
			{
				goodeffect ( id );
				set_user_health ( id, get_user_health ( id ) - 20 ); 
				wrongeffect ( id );
				ColorChat ( id, GREEN, "%s Ai pierdut^4 20^3 HP .^4", szPrefix );
			}
			
			case 4:
			{
				goodeffect ( id );
				set_user_armor ( id, get_user_armor ( id ) - 50 );
				wrongeffect ( id );
				ColorChat ( id, GREEN, "%s Ai pierdut^4 50^3 AP .^4", szPrefix );
			}
			
			case 5:
			{
				goodeffect ( id );
				cs_set_user_money ( id, cs_get_user_money ( id ) + 3000 );
				ColorChat ( id, GREEN, "%s Ai primit^4 3000^3 $ .^4", szPrefix );
			}
			
			case 6:
			{
				cs_set_user_money ( id, cs_get_user_money ( id ) - 2000 );
				wrongeffect ( id );
				ColorChat ( id, GREEN, "%s Ai pierdut^4 2000^3 $ .^4", szPrefix );
			}
			
			case 7:
			{
				goodeffect ( id );
				set_user_gravity ( id, 0.4 );
				ColorChat ( id, GREEN, "%s Ai primit^4 400^3 Gravity .^4", szPrefix );
			}
			
			case 8:
			{
				goodeffect ( id );
				HasSpeed[id] = true;
				ColorChat ( id, GREEN, "%s Ai primit^4 750^3 Speed .^4", szPrefix );
			}
			
			case 9:
			{
				entity_set_float ( id, EV_FL_maxspeed, 250.0 );
				wrongeffect ( id );
				ColorChat ( id, GREEN, "%s Ai pierdut din viteza .^4", szPrefix );
			}
			
			case 10:
			{
				set_user_health ( id, 10 );
				set_user_armor ( id, 20 );
				wrongeffect ( id );
				ColorChat ( id, GREEN, "%s Acum ai^4 10^3 HP si^4 20^3 AP^4 .^4", szPrefix );
			}
			
			case 11:
			{
				cs_set_user_money ( id, 0 );
				wrongeffect ( id );
				ColorChat ( id, GREEN, "%s Ai pierdut toti banii !^4", szPrefix );
			}
			
			case 12:
			{
				
				if (  !salamander [ id ] ) {
					
					goodeffect ( id );
					salamander [ id ] = true;
					set_task ( 0.1, "SalamanderGiveItem", id );
					set_task ( 30.0, "reverse_salamander", id );
					ColorChat ( id, GREEN, "%s Ai primit^4 Salamander^3 pentru^4 30^3 secunde .", szPrefix );
				}
				
				else if ( salamander [ id ] ) {
					goodeffect ( id );
					fm_set_user_health ( id, get_user_health ( id ) + 100 );
					ColorChat ( id, GREEN, "%s Ai primit^4 100^3 HP .^4", szPrefix );
				}
				
			}
			
			case 13:
			{
				goodeffect ( id );
				set_user_xp ( id, get_user_xp ( id ) + 100 );
				ColorChat ( id, GREEN, "%s Ai primit^4 100^3 XP .^4", szPrefix );
			}
			
			case 14:
			{
				wrongeffect ( id );
				set_user_xp ( id, get_user_xp ( id ) - 20 );
				ColorChat ( id, GREEN, "%s Ai pierdut^4 20^3 XP .^4", szPrefix );
			}
			
			case 15:
			{
				ColorChat ( id, GREEN, "%s A trecut mosul pe la tine, ai primit^4 16000^3 $ .^4", szPrefix );
				goodeffect ( id );
			}
			
			case 16:
			{	
				if ( !vip_axe_knife [ id ] || !deklowaz [ id ] ) {
					HasTeleport[id] = true;
					client_cmd(id, "bind x power2");
					goodeffect ( id );
					ColorChat ( id, GREEN, "%s Ai primit puterea de a te teleporta, apasa tasta^4 X^3 pentru a te teleporta .^4", szPrefix );
				}
				
				else {
					goodeffect ( id );
					set_user_credits ( id, get_user_credits ( id ) + 2 );
					ColorChat ( id, GREEN, "%s Ai primit^4 2^3 credite .", szPrefix );
				}
				
				
			}
			
			case 17:
			{
				goodeffect ( id );
				HasSpeed[id] = true;
				client_cmd(id, "cl_sidespeed %d",get_pcvar_float(CvarAntiFurienSpeed))
				client_cmd(id, "cl_forwardspeed %d",get_pcvar_float(CvarAntiFurienSpeed))
				client_cmd(id, "cl_backspeed %d",get_pcvar_float(CvarAntiFurienSpeed))
				set_user_maxspeed(id, get_pcvar_float(CvarAntiFurienSpeed));
			}
			
			
			case 18:
			{
				
				if ( !k1ases_weapon [ id ] ) {
					goodeffect ( id );
					k1ases_weapon [ id ] = true;
					dual_mp5 [ id ] = false;
					remove_dragoncannon ( id );
					give_k1ases ( id );
					ColorChat ( id, GREEN, "%s Ai primit^4 K1ASUS^3 .^4", szPrefix );
				}
				
				else if ( k1ases_weapon [ id ] ) {
					goodeffect ( id );
					fm_set_user_health ( id, get_user_health ( id ) + 70 );
					ColorChat ( id, GREEN, "%s Ai primit^4 70^3 HP .^4", szPrefix );
				}
				
				
			}
			
			case 19:
			{
				goodeffect ( id );
				give_item ( id, "weapon_hegrenade" );
				ColorChat ( id, GREEN, "%s Ai primit o grenada^4 HE^3 .", szPrefix );
			}
			
			case 20:
			{
				goodeffect ( id );
				give_item ( id, "weapon_flashbang" );
				ColorChat ( id, GREEN, "%s Ai primit o grenada^4 FLASH^3 .", szPrefix );
			}
			
			case 21:
			{
				if ( UserHaveQuad [ id ] ) {
					goodeffect ( id );
					ColorChat ( id, GREEN, "%s Ai primit^4 5^3 gloante pentru^4 Quad-Barrel^3  .^4", szPrefix );
					cs_set_user_bpammo ( id, CSW_QB, cs_get_user_bpammo ( id, CSW_QB ) + 5 );
				}
				
				else {
					goodeffect ( id );
					set_task ( 0.1, "GiveQuadBarrel", id );
					ColorChat ( id, GREEN, "%s Ai primit^4 Quad-Barrel^3 .", szPrefix );
					UserHaveQuad [ id ] = true;
				}
			}
			
			case 22:
			{
				if ( UserHaveDragon [ id ] ) {
					goodeffect ( id );
					g_cannon_ammo [ id ] += 3;
					ColorChat ( id, GREEN, "%s Ai primit^4 3^3 gloante pentru^4 Dragon Cannon^3  .^4", szPrefix );
				}
				else {
					goodeffect ( id );
					ColorChat ( id, GREEN, "%s Ai primit^4 Dragon Cannon^3 .", szPrefix );
					set_task ( 0.1, "get_dragoncannon", id );
					UserHaveDragon [ id ] = true;
				}
			}
			
			case 23:
			{
				if ( UserHaveM79  [ id ] ) {
					goodeffect ( id );
					ColorChat ( id, GREEN, "%s Ai primit^4 2^3 grenazi pentru lansator. ^4", szPrefix );
					grenade_count [ id ] += 2;
				}
				
				else {
					goodeffect ( id );
					ColorChat ( id, GREEN, "%s Ai primit un^4 Lansator de Grenazi^3 .^4", szPrefix );
					give_weapon ( id, 2 );
					m79++;
					UserHaveM79 [ id ] = true;
				}
			}
			
			
		}
	}
}

public CmdTeleport(id) {
	if (!is_user_alive(id) || !HasTeleport[id]) return PLUGIN_CONTINUE
	
	if (Teleport_Cooldown[id]) {
		ColorChat ( id, GREEN, "%s Puterea iti va reveni in^4 %d^3 secunde .", Teleport_Cooldown [ id ] );
		return PLUGIN_CONTINUE
	}
	else if (teleport(id)) {
		emit_sound(id, CHAN_STATIC, SOUND_BLINK, 1.0, ATTN_NORM, 0, PITCH_NORM)
		remove_task(id)
		Teleport_Cooldown[id] = get_pcvar_num(CvarTeleportCooldown);
		set_task(1.0, "TeleportShowHUD", id, _, _, "b");
		set_hudmessage(0, 100, 200, 0.05, 0.60, 0, 1.0, 1.1, 0.0, 0.0, -11);
		if(get_pcvar_num(CvarTeleportCooldown) != 1) {
			show_hudmessage(id, "Puterea iti va reveni in^4 %d^3 secunde",get_pcvar_num(CvarTeleportCooldown));
		}
		if(get_pcvar_num(CvarTeleportCooldown) == 1) {
			show_hudmessage(id, "Puterea iti va reveni in^4 %d^3 secunda",get_pcvar_num(CvarTeleportCooldown));
		}
	}
	else {
		ColorChat ( id, GREEN, "%s Pozitia de teleportare este invalida .^4", szPrefix ); 
	}
	return PLUGIN_CONTINUE
}

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 cmdVipWeaponsMenu ( id, level, cid ) { 
	
	new menu = menu_create ( "\rFurien XP \yMenu", "VIPWeapons_Giver" );
	
	if ( get_user_team ( id ) == 2 ) {
		
		menu_additem ( menu, "\ySCORPION MP5 [ \r3 CREDITE \y]", "1", VIP_ACCESS );
		menu_additem ( menu, "\yQUAD BARREL [ \r3 CREDITE \y]", "2", VIP_ACCESS );
		menu_additem ( menu, "\yDRAGON CANNON [ \r4 CREDITE \y]", "3", VIP_ACCESS );
		menu_additem ( menu, "\yM79 LAUNCHER [ \r4 CREDITE \y]", "4", VIP_ACCESS );
		
		
		menu_setprop ( menu, MPROP_EXIT, MEXIT_ALL );
		menu_display ( id, menu, 0 );
		
	}
	
	return 1;
}

public VIPWeapons_Giver ( id, menu, item ) {
	
	if( item == MENU_EXIT )
	{
		return 1;
	}
	
	new data [ 6 ], szName [ 64 ];
	new access, callback;
	menu_item_getinfo ( menu, item, access, data,charsmax ( data ), szName,charsmax ( szName ), callback );
	new key = str_to_num ( data );
	
	switch(key)
	{
		case 1:
		{
			new iCredits = get_user_credits(id) - 3;
			if( iCredits < 0 )
			{
				ColorChat ( id, GREEN, "%s Nu ai destule credite !", szPrefix );
				return 1;
			}
			else
			{
				ColorChat ( id, GREEN, "%s Ai cumparat^4 Scorpion Mp5^3 .^4", szPrefix );
				give_k1ases ( id );
				set_user_credits ( id, iCredits );
				return 1;
			}
		}
		
		case 2:
		{
			new iCredits = get_user_credits(id) - 3;
			if( iCredits < 0 )
			{
				ColorChat ( id, GREEN, "%s Nu ai destule credite !", szPrefix );
				return 1;
			}
			else
			{
				ColorChat ( id, GREEN, "%s Ai cumparat^4 Quad-Barrel^3 .^4", szPrefix );
				set_task ( 0.1, "GiveQuadBarrel", id );
				set_user_credits ( id, iCredits );
				return 1;
			}
		}
		
		case 3:
		{
			new iCredits = get_user_credits(id) - 4;
			if( iCredits < 0 )
			{
				ColorChat ( id, GREEN, "%s Nu ai destule credite !", szPrefix );
				return 1;
			}
			else
			{
				ColorChat ( id, GREEN, "%s Ai cumparat^4 Dragon Cannon^3 .^4", szPrefix );
				set_task ( 0.1, "get_dragoncannon", id );
				set_user_credits ( id, iCredits );
				return 1;
			}
		}
		
		case 4:
		{
			new iCredits = get_user_credits(id) - 4;
			if( iCredits < 0 )
			{
				ColorChat ( id, GREEN, "%s Nu ai destule credite !", szPrefix );
				return 1;
			}
			else
			{
				ColorChat ( id, GREEN, "%s Ai cumparat^4 M79 Launcher^3 .^4", szPrefix );
				give_weapon ( id, 2 );
				m79++;
				UserHaveM79 [ id ] = true;
				set_user_credits ( id, iCredits );
				return 1;
			}
		}
		
	}
	
	menu_destroy ( menu );
	return 1;
	
}

public cmdXpMenu ( id, level, cid ) { 
	
	new menu = menu_create ( "\rFurien XP \yMenu", "Menu_Giver" );
	menu_additem ( menu, "\y3 HE \y[ \rLvL. 3 - 1 Credit\y ]", "1", 0 );
	menu_additem ( menu, "\y5 FB & 2 SMK \y[ \rLvL. 5 - 1 Credit \y ]", "2", 0 );
	menu_additem ( menu, "\y6 HE \y[ \rLvL. 8 - 2 Credite\y ]", "3", 0 );
	menu_additem ( menu, "\ySPEED \y[ \rLvL. 10 - 2 Credite \y ]", "4", 0 );
	menu_additem ( menu, "\yGRAVITY \y[ \rLvL. 13 - 2 Credite\y ]", "5", 0 );
	menu_additem ( menu, "\yGODMODE \y[ \rLvL. 16 - 3 Credite\y ]", "6", 0 );
	menu_additem ( menu, "\yNOCLIP \y[ \rLvL. 18 - 3 Credite\y ]", "7", 0 );
	menu_additem ( menu, "\yCHAMELEON \y[ \rLvL. 22 - 4 Credite \y ]", "8", 0 );
	menu_additem ( menu, "\yRESPAWN \y[ \rLvL. 25 - 5 Credite \y ]", "9", 0 );
	
	if ( get_user_team ( id ) == 2 ) {
		menu_additem ( menu, "\ySALAMANDER \y[ \rLvL. 28 - 5 Credite \y ]", "10", 0 );
	}
	
	menu_setprop ( menu, MPROP_EXIT, MEXIT_ALL );
	menu_display ( id, menu, 0 );
	
	
	return 1;
}

public Menu_Giver ( id, menu, item ) {
	
	if( item == MENU_EXIT )
	{
		return 1;
	}
	
	if ( g_iCount [ id ] >= 1 ) {
		ColorChat ( id, GREEN, "%s Ai folosit odata aceasta optiune .", szPrefix );
	}
	
	new data [ 6 ], szName [ 64 ];
	new access, callback;
	menu_item_getinfo ( menu, item, access, data,charsmax ( data ), szName,charsmax ( szName ), callback );
	new key = str_to_num ( data );
	
	switch(key)
	{
		case 1:
		{
			if ( g_Menu [ id ] >= 3 ) {
				
				ColorChat ( id, GREEN, "%s Ai folosit deja meniul de^4 3^3 ori .", szPrefix );
				return 1;
			}
			
			else {
				
				if ( Level [ id ] >= 3 ) {
					give_item ( id, "weapon_hegrenade" );
					cs_set_user_bpammo ( id, CSW_HEGRENADE, 3 );
					++g_Menu [ id ];
					set_user_credits ( id, get_user_credits ( id ) - 1 );
					return 1;
				}
				
				else {
					ColorChat ( id, GREEN, "%s Nu ai level 3 .", szPrefix );
					return 1;
				}
			}
		}
		
		case 2:
		{
			
			if ( g_Menu [ id ] >= 3 ) {
				ColorChat ( id, GREEN, "%s Ai folosit deja meniul de^4 3^3 ori .", szPrefix );
				return 1;
			}
			
			else {
				if ( Level [ id ] >= 5 ) {
					give_item ( id, "weapon_flashbang" );
					give_item ( id, "weapon_smokegrenade" );
					cs_set_user_bpammo ( id, CSW_FLASHBANG, 5 );
					cs_set_user_bpammo ( id, CSW_SMOKEGRENADE, 2 );
					set_user_credits ( id, get_user_credits ( id ) - 1 );
					++g_Menu [ id ];
					return 1;
				}
				
				else {
					ColorChat ( id, GREEN, "%s Nu ai level 5 .", szPrefix );
					return 1;
				}
			}
		}
		
		case 3:
		{
			
			if ( g_Menu [ id ] >= 3 ) {
				ColorChat ( id, GREEN, "%s Ai folosit deja meniul de^4 3^3 ori .", szPrefix );
				return 1;
			}
			
			else {
				if ( Level [ id ] >= 8 ) {
					give_item ( id, "weapon_hegrenade" );
					cs_set_user_bpammo ( id, CSW_HEGRENADE, 6 );
					++g_Menu [ id ];
					set_user_credits ( id, get_user_credits ( id ) - 2 );
					return 1;
				}
				
				else {
					ColorChat ( id, GREEN, "%s Nu ai level 8 .", szPrefix );
					return 1;
				}
			}
		}
		
		case 4:
		{
			
			if ( g_Menu [ id ] >= 3 ) {
				ColorChat ( id, GREEN, "%s Ai folosit deja meniul de^4 3^3 ori .", szPrefix );
				return 1;
			}
			
			else {
				if ( Level [ id ] >= 10 ) {
					entity_set_float ( id, EV_FL_maxspeed, 450.0 );  
					++g_Menu [ id ];
					set_user_credits ( id, get_user_credits ( id ) - 2 );
					return 1;
				}
				
				else {
					ColorChat ( id, GREEN, "%s Nu ai level 10 .", szPrefix );
					return 1;
				}
			}
		}
		
		case 5:
		{
			
			if ( g_Menu [ id ] >= 3 ) {
				ColorChat ( id, GREEN, "%s Ai folosit deja meniul de^4 3^3 ori .", szPrefix );
				return 1;
			}
			
			else {
				if ( Level [ id ] >= 13 ) {
					set_user_gravity ( id, 0.5 );
					++g_Menu [ id ];
					set_user_credits ( id, get_user_credits ( id ) - 2 );
					return 1;
				}
				
				else {
					ColorChat ( id, GREEN, "%s Nu ai level 13 .", szPrefix );
					return 1;
				}
			}
		}
		
		case 6:
		{
			if ( g_Menu [ id ] >= 3 ) {
				ColorChat ( id, GREEN, "%s Ai folosit deja meniul de^4 3^3 ori .", szPrefix );
				return 1;
			}
			
			else {
				if ( Level [ id ] >= 16 ) {
					set_user_godmode ( id, 1 );
					ColorChat ( id, GREEN, "%s Ai primit God pentru^4 8^4 secunde .", szPrefix );
					set_task ( 8.0, "reverse_godmode", id );
					++g_Menu [ id ];
					set_user_credits ( id, get_user_credits ( id ) - 3 );
					return 1;
				}
				
				else {
					ColorChat ( id, GREEN, "%s Nu ai level 16 .", szPrefix );
					return 1;
				}
			}
		}
		
		case 7:
		{
			if ( g_Menu [ id ] >= 3 ) {
				ColorChat ( id, GREEN, "%s Ai folosit deja meniul de^4 3^3 ori .", szPrefix );
				return 1;
			}
			
			else {
				if ( Level [ id ] >= 18 ) {
					set_user_noclip ( id, 1 );
					ColorChat ( id, GREEN, "%s Ai primit Noclip pentru^4 5^4 secunde .", szPrefix );
					set_task ( 5.0, "reverse_noclip", id );
					++g_Menu [ id ];
					set_user_credits ( id, get_user_credits ( id ) - 3 );
					return 1;
				}
				
				else {
					ColorChat ( id, GREEN, "%s Nu ai level 18 .", szPrefix );
					return 1;
				}
			}
		}
		
		case 8:
		{
			if ( g_Menu [ id ] >= 3 ) {
				ColorChat ( id, GREEN, "%s Ai folosit deja meniul de^4 3^3 ori .", szPrefix );
				return 1;
			}
			
			else {
				if ( Level [ id ] >= 22 ) {
					chameleon ( id );
					++g_Menu [ id ];
					set_user_credits ( id, get_user_credits ( id ) - 4 );
					return 1;
				}
				
				else {
					ColorChat ( id, GREEN, "%s Nu ai level 22 .", szPrefix );
					return 1;
				}
			}
		}
		
		case 9:
		{
			if ( g_Menu [ id ] >= 3 ) {
				ColorChat ( id, GREEN, "%s Ai folosit deja meniul de^4 3^3 ori .", szPrefix );
			}
			
			else {
				if ( Level [ id ] >= 25 ) {
					
					if(is_user_alive(id)) 
					{
						ColorChat ( id, GREEN, "%s Esti deja in viata .", szPrefix );
						return 1;
					}
					
					if ( get_user_team ( id ) == 3) {
						
						ColorChat ( id, GREEN, "%s Esti spectator .", szPrefix );
						
						if(!is_user_alive(id)) 
						{
							
							ExecuteHamB ( Ham_CS_RoundRespawn, id );
							set_task(0.5, "SetUserWeapons", id + 12345);
							++g_Menu [ id ];
							set_user_credits ( id, get_user_credits ( id ) - 5 );
							return 1;
						}
						
						return 1;
					}
					
					else {
						ColorChat ( id, GREEN, "%s Nu ai level 25 .", szPrefix );
						return 1;
					}
				}
			}
		}
		
		case 10:
		{
			if ( get_user_team ( id ) == 2 ) {
				
				if ( g_Menu [ id ] >= 3 ) {
					ColorChat ( id, GREEN, "%s Ai folosit deja meniul de^4 3^3 ori .", szPrefix );
					return 1;
				}
				
				else {
					if ( Level [ id ] >= 28 && !SalamanderLimit [ id ] ) {
						
						salamander [ id ] = true;
						ColorChat ( id, GREEN, "%s Ai primit aceasta arma pentru^4 1^4 minut .", szPrefix );
						set_task ( 0.1, "SalamanderGiveItem", id );
						set_task ( 60.0, "reverse_salamander", id );
						++g_Menu [ id ];
						SalamanderLimit [ id ] = true;
						set_user_credits ( id, get_user_credits ( id ) - 5 );
						return 1;
						
						
					}
					else if ( SalamanderLimit [ id ] ) {
						ColorChat ( id, GREEN, "%s Ai mai folosit odata aceasta optiune .", szPrefix );
						return 1;
					}
					
					else if ( Level [ id ] < 28 ) {
						ColorChat ( id, GREEN, "%s Nu ai level 30 .", szPrefix );
						return 1;
					}
				}
			}
			
		}
	}
	
	menu_destroy ( menu );
	return 1;
	
}

public SetUserWeapons(id) {
	id -= 12345;
	
	if( !is_user_connected(id) ) return PLUGIN_HANDLED;
	
	strip_user_weapons(id);
	give_item(id, "weapon_knife");
	set_task ( 0.1, "cmdClassMenu", id );
	
	return PLUGIN_CONTINUE;
}

public reverse_godmode ( id ) {
	
	set_user_godmode ( id , 0 );
}

public reverse_noclip ( id ) {
	
	set_user_noclip ( id, 0 );
}

public reverse_invis ( id ) {
	
	set_user_rendering( id, kRenderFxNone, 0, 0, 0, kRenderTransAlpha, 255 );
	ColorChat ( id, GREEN, "%s Timpul a expirat ! Acum esti din nou^4 vizibil^3 .", szPrefix );
}

public reverse_salamander ( id ) {
	
	strip_user_weapons ( id );
	give_item ( id, "weapon_knife" );
	salamander [ id ] = false;
	set_task ( 0.1, "cmdClassMenu", id );
	
	ColorChat ( id, GREEN, "%s Timpul a expirat ! Nu mai ai arma^4 salamander^3 .", szPrefix );
}

public show_salamander_icon ( id ) {
	if ( salamander [ id ] ) {
		if (!(pev(id,pev_button) & FL_ONGROUND))
		{    
			new iconstatus;
			iconstatus = get_user_msgid("StatusIcon");
			message_begin(MSG_ONE,iconstatus,{0,0,0},id);
			write_byte(1); // status (0=hide, 1=show, 2=flash)
			write_string("dmg_heat"); // sprite name
			write_byte(255); // red
			write_byte(0); // green
			write_byte(0); // blue
			message_end();
		}
		
	}
	
	else {
		if (!(pev(id,pev_button) & FL_ONGROUND))
		{    
			new iconstatus;
			iconstatus = get_user_msgid("StatusIcon");
			message_begin(MSG_ONE,iconstatus,{0,0,0},id);
			write_byte(0); // status (0=hide, 1=show, 2=flash)
			write_string("dmg_heat"); // sprite name
			write_byte(255); // red
			write_byte(0); // green
			write_byte(0); // blue
			message_end();
		}
	}
}

public reverse_model ( id ) {
	
	if ( get_user_team ( id ) == 1 ) {
		cs_set_user_model ( id, "guerilla" );
		ColorChat ( id, GREEN, "%s Timpul a expirat ! Acum arati din nou ca un^4 Furien^3 .", szPrefix );
	}
	
	else if ( get_user_team ( id ) == 2 ) {
		cs_set_user_model ( id, "gign" );
		ColorChat ( id, GREEN, "%s Timpul a expirat ! Acum arati din nou ca un^4 AntiFurien^3 .", szPrefix );
	}
}

public chameleon ( id ) {
	
	if ( get_user_team ( id ) == 1 ) {
		cs_set_user_model ( id, "gign" );
		ColorChat ( id, GREEN, "%s Acum arati ca un^4 AntiFurien^3 pentru^4 60^3 secunde .", szPrefix );
		set_task ( 60.0, "reverse_model", id );
	}
	
	else if ( get_user_team ( id ) == 2 ) {
		cs_set_user_model ( id, "guerilla" );
		ColorChat ( id, GREEN, "%s Acum arati ca un^4 Furien^3 pentru^4 60^3 secunde .", szPrefix );
		set_task ( 60.0, "reverse_model", id );
	}
}

public grenade_throw ( id, gid, wid ) {
	
	if ( strike_grenade [ id ] || strike_grenade2 [ id ] || strike_grenade3 [ id ] && get_user_weapon ( id ) == CSW_HEGRENADE && get_user_team ( id ) == 1 ) {
		new gtm = 1;
		if(!gtm) return;
		new r, g, b;
		switch(gtm)
		{
			case 1:
			{
				r = 255;
				g = 0;
				b = 0;
			}
		}
		message_begin(MSG_BROADCAST, SVC_TEMPENTITY);
		write_byte(TE_BEAMFOLLOW);
		write_short(gid);
		write_short(g_trail);
		write_byte(10);
		write_byte(5);
		write_byte(r);
		write_byte(g);
		write_byte(b);
		write_byte(192);
		message_end();
	}
}

// POWERS -------------------------------------

////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Drop Enemy Weapon |
//==========================================================================================================	
public DropShowHUD(id) {
	if (!is_user_alive(id) || HasPower[id] != 4) {
		remove_task(id);
		Drop_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) && Drop_Cooldown[id] == 1) {
		Drop_Cooldown[id] --;
		show_hudmessage(id, "Puterea iti va reveni in: %d secunda",Drop_Cooldown[id]);
	}
	if(is_user_alive(id) && Drop_Cooldown[id] > 1) {
		Drop_Cooldown[id] --;
		show_hudmessage(id, "Puterea iti va reveni in: %d secunde",Drop_Cooldown[id]);
	}
	if(Drop_Cooldown[id] <= 0) {
		show_hudmessage(id, "Ti-a revenit puterea");
		ColorChat(id, GREEN,"%s Iti poti folosi din nou puterea .", szPrefix);
		remove_task(id);
		Drop_Cooldown[id] = 0;
	}
	return PLUGIN_HANDLED;
}


////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Freeze |
//==========================================================================================================
public Freeze(id) {
	if (!is_user_alive(id) || Frozen[id]) return;
	
	pev(id, pev_maxspeed, TempSpeed[id]); //get temp speed
	pev(id, pev_gravity, TempGravity[id]); //get temp speed
	fm_set_rendering(id, kRenderFxGlowShell, 0, 100, 200, kRenderNormal, 25);
	engfunc(EngFunc_EmitSound, id, CHAN_BODY, FROSTPLAYER_SND[random_num(0, sizeof FROSTPLAYER_SND - 1)], 1.0, ATTN_NORM, 0, PITCH_NORM);
	message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("ScreenFade"), _, id);
	write_short(UNIT_SECOND*1);
	write_short(floatround(UNIT_SECOND*get_pcvar_float(CvarFreezeDuration)));
	write_short(FFADE_IN);
	write_byte(0);
	write_byte(50);
	write_byte(200);
	write_byte(100);
	message_end();
	if (pev(id, pev_flags) & FL_ONGROUND)
		set_pev(id, pev_gravity, 999999.9);
	else
		set_pev(id, pev_gravity, 0.000001);
	
	Frozen[id] = true;
	set_task(get_pcvar_float(CvarFreezeDuration), "remove_freeze", id);
}

public set_normal(id) {
	set_pev(id, pev_gravity, TempGravity[id]);
	set_pev(id, pev_maxspeed, TempSpeed[id]);
}

public FreezeShowHUD(id) {
	if (!is_user_alive(id) || HasPower[id] != 5) {
		remove_task(id);
		Freeze_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) && Freeze_Cooldown[id] == 1) {
		Freeze_Cooldown[id] --;
		show_hudmessage(id, "Puterea iti va reveni in: %d secunda",Freeze_Cooldown[id]);
	}
	if(is_user_alive(id) && Freeze_Cooldown[id] > 1) {
		Freeze_Cooldown[id] --;
		show_hudmessage(id, "Puterea iti va reveni in: %d secunde",Freeze_Cooldown[id]);
	}
	if(Freeze_Cooldown[id] <= 0) {
		show_hudmessage(id, "Ti-a revenit puterea");
		ColorChat(id, GREEN, "%s Iti poti folosi din nou puterea .", szPrefix);
		remove_task(id);
		Freeze_Cooldown[id] = 0;
	}
	return PLUGIN_HANDLED;
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Drag |
//==========================================================================================================
public DragStart(id) {
	if (HasPower[id] == 6 && !Drag_I[id]) {
		
		if (!is_user_alive(id)) {
			return PLUGIN_HANDLED;
		}
		if (Drag_Cooldown[id]) {
			ColorChat(id, GREEN,"%s Puterea iti va reveni in^4 %d^3 secunde .^4", szPrefix, Drag_Cooldown[id]);
			return PLUGIN_HANDLED;
		}
		new hooktarget, body;
		get_user_aiming(id, hooktarget, body);
		
		if (is_user_alive(hooktarget)) {
			if (get_user_team(id) != get_user_team(hooktarget)) {				
				Hooked[id] = hooktarget;
				emit_sound(hooktarget, CHAN_BODY, DRAG_HIT_SND, 1.0, ATTN_NORM, 0, PITCH_HIGH);
			}
			else {
				return PLUGIN_HANDLED;
			}
			
			if (get_pcvar_float(CvarDragSpeed) <= 0.0)
				CvarDragSpeed = 1;
			
			new parm[2];
			parm[0] = id;
			parm[1] = hooktarget;
			
			set_task(0.1, "DragReelin", id, parm, 2, "b");
			HarpoonTarget(parm);
			Drag_I[id] = true;
			Not_Cooldown[id] = false;
			if(get_pcvar_num(CvarDragUnb2Move) == 1)
				Unable2move[hooktarget] = true;
			
			if(get_pcvar_num(CvarDragUnb2Move) == 2)
				Unable2move[id] = true;
			
			if(get_pcvar_num(CvarDragUnb2Move) == 3) {
				Unable2move[hooktarget] = true;
				Unable2move[id] = true;
			}
		} 
		else {
			Hooked[id] = 33;
			NoTarget(id);
			Not_Cooldown[id] = false;
			set_task(1.0,"DragEnd",id);
			emit_sound(id, CHAN_BODY, DRAG_MISS_SND, 1.0, ATTN_NORM, 0, PITCH_HIGH);
			Drag_I[id] = true;
		}
	}
	else
		return PLUGIN_HANDLED;
	
	return PLUGIN_CONTINUE;
}

public DragShowHUD(id) {
	if (!is_user_alive(id) || HasPower[id] != 6) {
		remove_task(id);
		Drag_Cooldown[id] = 0;
		Not_Cooldown[id] = true;
		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) && Drag_Cooldown[id] == 1) {
		Drag_Cooldown[id] --;
		show_hudmessage(id, "Puterea iti va reveni in: %d secunda",Drag_Cooldown[id]);
	}
	if(is_user_alive(id) && Drag_Cooldown[id] > 1) {
		Drag_Cooldown[id] --;
		show_hudmessage(id, "Puterea iti va reveni in: %d secunde",Drag_Cooldown[id]);
	}
	if(Drag_Cooldown[id] <= 0) {
		show_hudmessage(id, "Ti-a revenit puterea");
		ColorChat(id, GREEN, "%s Iti poti folosi din nou puterea .", szPrefix);
		remove_task(id);
		Drag_Cooldown[id] = 0;
		Not_Cooldown[id] = true;
	}
	return PLUGIN_HANDLED;
}

public DragReelin(parm[]) {
	new id = parm[0];
	new victim = parm[1];
	
	if (!Hooked[id] || !is_user_alive(victim)) {
		DragEnd(id);
		return;
	}
	
	new Float:fl_Velocity[3];
	new idOrigin[3], vicOrigin[3];
	
	get_user_origin(victim, vicOrigin);
	get_user_origin(id, idOrigin);
	
	new distance = get_distance(idOrigin, vicOrigin);
	
	if (distance > 1) {
		new Float:fl_Time = distance / get_pcvar_float(CvarDragSpeed);
		
		fl_Velocity[0] = (idOrigin[0] - vicOrigin[0]) / fl_Time;
		fl_Velocity[1] = (idOrigin[1] - vicOrigin[1]) / fl_Time;
		fl_Velocity[2] = (idOrigin[2] - vicOrigin[2]) / fl_Time;
	}
	else {
		fl_Velocity[0] = 0.0;
		fl_Velocity[1] = 0.0;
		fl_Velocity[2] = 0.0;
	}
	
	entity_set_vector(victim, EV_VEC_velocity, fl_Velocity); //<- rewritten. now uses engine
}

public TakeDamage(victim, inflictor, attacker, Float:damage) { // if take damage drag off
	if (is_user_alive(attacker) && (get_pcvar_num(CvarDragDmg2Stop) > 0)) {
		OvrDmg[victim] = OvrDmg[victim] + floatround(damage);
		if (OvrDmg[victim] >= get_pcvar_num(CvarDragDmg2Stop)) {
			OvrDmg[victim] = 0;
			DragEnd(victim);
			return HAM_IGNORED;
		}
	}
	
	return HAM_IGNORED;
}

public HarpoonTarget(parm[]) { // set beam (ex. tongue:) if target is player
	
	new id = parm[0];
	new hooktarget = parm[1];
	
	message_begin(MSG_BROADCAST, SVC_TEMPENTITY);
	write_byte(8);	// TE_BEAMENTS
	write_short(id);
	write_short(hooktarget);
	write_short(DragSprite);	// sprite index
	write_byte(0);	// start frame
	write_byte(0);	// framerate
	write_byte(200);	// life
	write_byte(8);	// width
	write_byte(1);	// noise
	write_byte(155);	// r, g, b
	write_byte(155);	// r, g, b
	write_byte(55);	// r, g, b
	write_byte(90);	// brightness
	write_byte(10);	// speed
	message_end();
}

public NoTarget(id) { // set beam if target isn't player
	new endorigin[3];
	
	get_user_origin(id, endorigin, 3);
	
	message_begin(MSG_BROADCAST, SVC_TEMPENTITY);
	write_byte(TE_BEAMENTPOINT); // TE_BEAMENTPOINT
	write_short(id);
	write_coord(endorigin[0]);
	write_coord(endorigin[1]);
	write_coord(endorigin[2]);
	write_short(DragSprite); // sprite index
	write_byte(0);	// start frame
	write_byte(0);	// framerate
	write_byte(200);	// life
	write_byte(8);	// width
	write_byte(1);	// noise
	write_byte(155);	// r, g, b
	write_byte(155);	// r, g, b
	write_byte(55);	// r, g, b
	write_byte(75);	// brightness
	write_byte(0);	// speed
	message_end();
}

public PlayerPreThink(id) {
	new button = get_user_button(id);
	new oldbutton = get_user_oldbutton(id);
	
	if (!is_user_alive(id)) {
		return FMRES_IGNORED;
	}
	
	if (Frozen[id]) {
		set_pev(id, pev_velocity, Float:{0.0,0.0,0.0});
		set_pev(id, pev_maxspeed, 1.0) ;
	}
	
	if(HasPower[id] == 6 ) { 
		if (BindUse[id]) {
			if (!(oldbutton & IN_USE) && (button & IN_USE))
				DragStart(id);
			
			if ((oldbutton & IN_USE) && !(button & IN_USE))
				DragEnd(id);
		}
		
		if (!Drag_I[id]) {
			Unable2move[id] = false;
		}
		
		if (Unable2move[id] && get_pcvar_num(CvarDragUnb2Move) > 0) {
			set_pev(id, pev_maxspeed, 1.0);
		}
	}
	return PLUGIN_CONTINUE;
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Teleport |
//==========================================================================================================
public TeleportShowHUD(id) {
	if (!is_user_alive(id) || HasPower[id] != 7) {
		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(Teleport_Cooldown[id] <= 0) {
		show_hudmessage(id, "Ti-a revenit puterea");
		ColorChat(id, GREEN, "%s Iti poti folosi din nou puterea. ", szPrefix);
		remove_task(id);
		Teleport_Cooldown[id] = 0;
	}
	return PLUGIN_HANDLED;
}





////////////////////////////////////////////////////////////////////////////////////////////////////////////
// NoRecoil |
//==========================================================================================================
public Weapon_PrimaryAttack_Pre(entity) {
	new id = pev(entity, pev_owner);
	
	if (HasPower[id] == 8) {
		pev(id, pev_punchangle, cl_pushangle[id]);
		return HAM_IGNORED;
	}
	return HAM_IGNORED;
}

public Weapon_PrimaryAttack_Post(entity) {
	new id = pev(entity, pev_owner);
	
	if ( HasPower[id] == 8) {
		new Float: push[3];
		pev(id, pev_punchangle, push);
		xs_vec_sub(push, cl_pushangle[id], push);
		xs_vec_mul_scalar(push, 0.0, push);
		xs_vec_add(push, cl_pushangle[id], push);
		set_pev(id, pev_punchangle, push);
		return HAM_IGNORED;
	}
	return HAM_IGNORED;
}

// POWERS -------------------------------------------------

public FurienAndAntiFurienDamage ( iVictim, iInflictor, iAttacker, Float:fDamage, iDamageBits )
{
	if( iInflictor == iAttacker && vip_axe_knife [ iAttacker ] && is_user_alive( iAttacker ) && get_user_weapon( iAttacker ) == CSW_KNIFE && cs_get_user_team( iAttacker ) == CS_TEAM_T )
	{
		SetHamParamFloat( 4, fDamage * 5.3);
		return HAM_HANDLED;
	}
	
	if( iInflictor == iAttacker && katana_knife [ iAttacker ] && is_user_alive( iAttacker ) && get_user_weapon( iAttacker ) == CSW_KNIFE && cs_get_user_team( iAttacker ) == CS_TEAM_T )
	{
		SetHamParamFloat( 4, fDamage * 2.8);
		return HAM_HANDLED;
	}
	
	if( iInflictor == iAttacker && double_katana_knife [ iAttacker ] && is_user_alive( iAttacker ) && get_user_weapon( iAttacker ) == CSW_KNIFE && cs_get_user_team( iAttacker ) == CS_TEAM_T )
	{
		SetHamParamFloat( 4, fDamage * 3.3);
		return HAM_HANDLED;
	}
	
	if( iInflictor == iAttacker && super_knife [ iAttacker ] && is_user_alive( iAttacker ) && get_user_weapon( iAttacker ) == CSW_KNIFE && cs_get_user_team( iAttacker ) == CS_TEAM_T )
	{
		SetHamParamFloat( 4, fDamage * 2.0);
		return HAM_HANDLED;
	}
	
	if( iInflictor == iAttacker && infinity_knife [ iAttacker ] && is_user_alive( iAttacker ) && get_user_weapon( iAttacker ) == CSW_KNIFE && cs_get_user_team( iAttacker ) == CS_TEAM_T )
	{
		SetHamParamFloat( 4, fDamage * 1.5 );
		return HAM_HANDLED;
	}
	
	if( iInflictor == iAttacker && super_knife_shop [ iAttacker ] && is_user_alive( iAttacker ) && get_user_weapon( iAttacker ) == CSW_KNIFE && cs_get_user_team( iAttacker ) == CS_TEAM_T )
	{
		SetHamParamFloat( 4, fDamage * 6.0 );
		return HAM_HANDLED;
	}
	
	if( iInflictor == iAttacker && super_knife_shop2 [ iAttacker ] && is_user_alive( iAttacker ) && get_user_weapon( iAttacker ) == CSW_KNIFE && cs_get_user_team( iAttacker ) == CS_TEAM_T )
	{
		SetHamParamFloat( 4, fDamage * 10.0 );
		return HAM_HANDLED;
	}
	
	if( iInflictor == iAttacker && ignes_knife [ iAttacker ] && is_user_alive( iAttacker ) && get_user_weapon( iAttacker ) == CSW_KNIFE && cs_get_user_team( iAttacker ) == CS_TEAM_T )
	{
		SetHamParamFloat( 4, fDamage * 4.0 );
		return HAM_HANDLED;
	}
	
	if( iInflictor == iAttacker && elf_knife [ iAttacker ] && is_user_alive( iAttacker ) && get_user_weapon( iAttacker ) == CSW_KNIFE && cs_get_user_team( iAttacker ) == CS_TEAM_T )
	{
		SetHamParamFloat( 4, fDamage * 4.5 );
		return HAM_HANDLED;
	}
	
	if( iInflictor == iAttacker && hunter [ iAttacker ] && is_user_alive( iAttacker ) && get_user_weapon( iAttacker ) == CSW_P90 && cs_get_user_team( iAttacker ) == CS_TEAM_CT )
	{
		SetHamParamFloat( 4, fDamage * 1.5 );
		return HAM_HANDLED;
	}
	
	if( iInflictor == iAttacker && mage [ iAttacker ] && is_user_alive( iAttacker ) && get_user_weapon( iAttacker ) == CSW_GALIL && cs_get_user_team( iAttacker ) == CS_TEAM_CT )
	{
		SetHamParamFloat( 4, fDamage * 2.0 );
		return HAM_HANDLED;
	}
	
	if( iInflictor == iAttacker && rogue [ iAttacker ] && is_user_alive( iAttacker ) && get_user_weapon( iAttacker ) == CSW_FAMAS && cs_get_user_team( iAttacker ) == CS_TEAM_CT )
	{
		SetHamParamFloat( 4, fDamage * 2.5 );
		return HAM_HANDLED;
	}
	
	if( iInflictor == iAttacker && shaman [ iAttacker ] && is_user_alive( iAttacker ) && get_user_weapon( iAttacker ) == CSW_SG552 && cs_get_user_team( iAttacker ) == CS_TEAM_CT )
	{
		SetHamParamFloat( 4, fDamage * 2.5 );
		return HAM_HANDLED;
	}
	
	if( iInflictor == iAttacker && thompson [ iAttacker ] && is_user_alive( iAttacker ) && get_user_weapon( iAttacker ) == CSW_P90 && cs_get_user_team( iAttacker ) == CS_TEAM_CT )
	{
		SetHamParamFloat( 4, fDamage * 3.0 );
		return HAM_HANDLED;
	}
	
	if( iInflictor == iAttacker && warrior [ iAttacker ] && is_user_alive( iAttacker ) && get_user_weapon( iAttacker ) == CSW_P90 && cs_get_user_team( iAttacker ) == CS_TEAM_CT )
	{
		SetHamParamFloat( 4, fDamage * 2.0 );
		return HAM_HANDLED;
	}
	
	if( iInflictor == iAttacker && deklowaz [ iAttacker ] && is_user_alive( iAttacker ) && get_user_weapon( iAttacker ) == CSW_P90 && cs_get_user_team( iAttacker ) == CS_TEAM_CT )
	{
		SetHamParamFloat( 4, fDamage * 3.0 );
		return HAM_HANDLED;
	}
	
	if( iInflictor == iAttacker && dual_mp5 [ iAttacker ] && is_user_alive( iAttacker ) && get_user_weapon( iAttacker ) == CSW_MP5NAVY && cs_get_user_team( iAttacker ) == CS_TEAM_CT )
	{
		SetHamParamFloat( 4, fDamage * 2.0 );
		return HAM_HANDLED;
	}
	
	if( iInflictor == iAttacker && strike_grenade [ iAttacker ] && is_user_alive( iAttacker ) && get_user_weapon( iAttacker ) == CSW_HEGRENADE && cs_get_user_team( iAttacker ) == CS_TEAM_T )
	{
		SetHamParamFloat( 4, fDamage * 4.0 );
		return HAM_HANDLED;
	}
	
	if( iInflictor == iAttacker && strike_grenade2 [ iAttacker ] && is_user_alive( iAttacker ) && get_user_weapon( iAttacker ) == CSW_HEGRENADE && cs_get_user_team( iAttacker ) == CS_TEAM_T )
	{
		SetHamParamFloat( 4, fDamage * 5.0 );
		return HAM_HANDLED;
	}
	
	if( iInflictor == iAttacker && strike_grenade3 [ iAttacker ] && is_user_alive( iAttacker ) && get_user_weapon( iAttacker ) == CSW_HEGRENADE && cs_get_user_team( iAttacker ) == CS_TEAM_T )
	{
		SetHamParamFloat( 4, fDamage * 6.0 );
		return HAM_HANDLED;
	}
	
	return HAM_IGNORED;
} 

public Depozit(id) {
	if(cs_get_user_money(id) >= 16000) {
		ColorChat ( id, GREEN, "%s Ai depozitat^4 16000^3 si ai primit^4 1^3 credit .^4", szPrefix );
		set_user_credits(id, get_user_credits(id) + 1);
		cs_set_user_money(id, cs_get_user_money(id) - 16000);
	}
	else {
		ColorChat ( id, GREEN, "%s Ai nevoie de ^4 16000 $^3 pentru a depozita .^4", szPrefix );
	}
	return PLUGIN_HANDLED;
}

public Retrage(id) {
	if(cs_get_user_money(id) >= 16000) {
		ColorChat ( id, GREEN, "%s Detii deja^4 16000 $^3", szPrefix );
	}
	else if(PlayerCredits[id]) {
		ColorChat ( id, GREEN, "%s Ai retras^4 1^3 credit, mai ai^4 %d^3 credite .", szPrefix, PlayerCredits [ id ] - 1 );
		set_user_credits(id, get_user_credits(id) - 1);
		cs_set_user_money(id, cs_get_user_money(id) + 16000);
	}
	else {
		ColorChat ( id, GREEN, "%s Ai nevoie de^4 1^3 credti pentru a putea retrage .^4", szPrefix );
	}
	return PLUGIN_HANDLED;
}

public Show_Credits(id) {
	set_hudmessage(0, 128, 0, 0.03, 0.86, 2, 6.0, 5.0);
	show_hudmessage(id, "Ai %d Credite.", PlayerCredits[id]);
	ColorChat ( id, GREEN, "%s Detii^4 %d^3 credite .^4", szPrefix, PlayerCredits [ id ] );
	return PLUGIN_HANDLED;
}

public Give_Credits(id, level, cid) {
	if(!cmd_access(id, level, cid, 2)) {
		return PLUGIN_HANDLED;
	}
	new arg[23], gplayers[32], num, i, players, name[32];
	get_user_name(id, name, 31);
	read_argv(1, arg, 23);
	new give_credits[5];
	read_argv(2, give_credits, charsmax(give_credits));
	new Credits = str_to_num(give_credits);
	if(equali(arg, "@T") || equali ( arg, "t" ) ) {
		get_players(gplayers, num, "e", "TERRORIST");
		for(i = 0; i < num; i++) {
			players = gplayers[i];
			if(!is_user_connected(players))
				continue;
			set_user_credits(players, get_user_credits(players) + Credits);
			SaveData(id);
		}
		switch(get_cvar_num("amx_show_activity")) {
			case 1: ColorChat(0, GREEN, "^x03ADMIN^x04 give^x03 %i Credits^x04 to all^x03 Ts.", Credits);
				case 2: ColorChat(0, GREEN, "^x03%s^x04 give^x03 %i Credits^x04 to all^x03 Ts.", name, Credits);
			}
	}
	else if(equali(arg, "@CT") || equali ( arg, "ct" ) ) {
		get_players(gplayers, num, "e", "CT");
		for(i = 0; i < num; i++) {
			players = gplayers[i];
			if(!is_user_connected(players))
				continue;
			set_user_credits(players, get_user_credits(players) + Credits);
			SaveData(id);
		}
		switch(get_cvar_num("amx_show_activity")) {
			case 1: ColorChat(0, GREEN, "^x03ADMIN^x04 give^x03 %i Credits^x04 to all^x03 CTs.", Credits);
				case 2: ColorChat(0, GREEN, "^x03%s^x04 give^x03 %i Credits^x04 to all^x03 CTs.", name, Credits);
			}
	}
	if(equali(arg, "@All") || equali ( arg, "all" ) ) {
		get_players(gplayers, num, "a");
		for(i = 0; i < num; i++) {
			players = gplayers[i];
			if(!is_user_connected(players))
				continue;
			set_user_credits(players, get_user_credits(players) + Credits);
			SaveData(id);
		}
		switch(get_cvar_num("amx_show_activity")) {
			case 1: ColorChat(0, GREEN, "^x03ADMIN^x04 give^x03 %i Credits^x04 to all^x03 Players.", Credits);
				case 2: ColorChat(0, GREEN, "^x03%s^x04 give^x03 %i Credits^x04 to all^x03 Players.", name, Credits);
			}
	}
	new player = cmd_target(id, arg, 11);
	if(!player) {
		return PLUGIN_HANDLED;
	}
	set_user_credits(player, get_user_credits(player) + Credits);
	SaveData(id);
	switch(get_cvar_num("amx_show_activity")) {
		case 1: ColorChat(player, GREEN, "^x03ADMIN^x04 give your^x03 %i Credits.", Credits);
			case 2: ColorChat(player, GREEN, "^x03%s^x04 give your^x03 %i Credits.", name, Credits);
		}
	return PLUGIN_HANDLED;
}

public Reset_Credits(id, level, cid) {
	if(!cmd_access(id, level, cid, 2)) {
		return PLUGIN_HANDLED;
	}
	new arg[23], gplayers[32], num, i, players, name[32];
	get_user_name(id, name, 31);
	read_argv(1, arg, 23);
	if(equali(arg, "@T")) {
		get_players(gplayers, num, "e", "TERRORIST");
		for(i = 0; i < num; i++) {
			players = gplayers[i];
			if(!is_user_connected(players))
				continue;
			PlayerCredits [ players ] = 0;
		}
		switch(get_cvar_num("amx_show_activity")) {
			case 1: ColorChat(0, GREEN, "^x03ADMIN^x04 reset^x03 Credits^x04 to all^x03 Ts.");
				case 2: ColorChat(0, GREEN, "^x03%s^x04 reset^x03 Credits^x04 to all^x03 Ts.", name);
			}
	}
	
	else if(equali(arg, "@CT")) {
		get_players(gplayers, num, "e", "CT");
		for(i = 0; i < num; i++) {
			players = gplayers[i];
			if(!is_user_connected(players))
				continue;
			PlayerCredits [ players ] = 0;
		}
		switch(get_cvar_num("amx_show_activity")) {
			case 1: ColorChat(0, GREEN, "^x03ADMIN^x04 reset^x03 %i Credits^x04 to all^x03 CTs.");
				case 2: ColorChat(0, GREEN, "^x03%s^x04 reset^x03 %i Credits^x04 to all^x03 CTs.", name);
			}
	}
	if(equali(arg, "@All")) {
		get_players(gplayers, num, "a");
		for(i = 0; i < num; i++) {
			players = gplayers[i];
			if(!is_user_connected(players))
				continue;
			PlayerCredits [ players ] = 0;
		}
		switch(get_cvar_num("amx_show_activity")) {
			case 1: ColorChat(0, GREEN, "^x03ADMIN^x04 reset^x03 Credits^x04 to all^x03 Players.");
				case 2: ColorChat(0, GREEN, "^x03%s^x04 resetx03 Credits^x04 to all^x03 Players.", name);
			}
	}
	new player = cmd_target(id, arg, 11);
	if(!player) {
		return PLUGIN_HANDLED;
	}
	PlayerCredits [ player ] = 0;
	switch(get_cvar_num("amx_show_activity")) {
		case 1: ColorChat(player, GREEN, "^x03ADMIN^x04 reset your^x03 Credits.");
			case 2: ColorChat(player, GREEN, "^x03%s^x04 reset your^x03 Credits.", name);
		}
	return PLUGIN_HANDLED;
}

stock set_player_nextattack(player, weapon_id, Float:NextTime)
{
	const m_flNextPrimaryAttack_dc = 46
	const m_flNextSecondaryAttack_dc = 47
	const m_flTimeWeaponIdle_dc = 48
	const m_flNextAttack_dc = 83
	
	static weapon
	weapon = fm_get_user_weapon_entity(player, weapon_id)
	
	set_pdata_float(player, m_flNextAttack_dc, NextTime, 5)
	if(pev_valid(weapon))
	{
		set_pdata_float(weapon, m_flNextPrimaryAttack_dc , NextTime, 4)
		set_pdata_float(weapon, m_flNextSecondaryAttack_dc, NextTime, 4)
		set_pdata_float(weapon, m_flTimeWeaponIdle_dc, NextTime, 4)
	}
}

//get weapon id
stock get_weapon_ent(id,wpnid=0,wpnName[]="") {
	// who knows what wpnName will be
	static newName[24];
	
	// need to find the name
	if(wpnid) get_weaponname(wpnid,newName,23);
	
	// go with what we were told
	else formatex(newName,23,"%s",wpnName);
	
	// prefix it if we need to
	if(!equal(newName,"weapon_",7))
		format(newName,23,"weapon_%s",newName);
	
	return fm_find_ent_by_owner(get_maxplayers(),newName,id);
} 

// Blood and bodyparts
stock create_blood(const Float:origin[3]) {
	// Head
	message_begin(MSG_BROADCAST,SVC_TEMPENTITY)
	write_byte(TE_MODEL)
	engfunc(EngFunc_WriteCoord, origin[0])
	engfunc(EngFunc_WriteCoord, origin[1])
	engfunc(EngFunc_WriteCoord, origin[2])
	write_coord(random_num(-100,100))
	write_coord(random_num(-100,100))
	write_coord(random_num(100,200))
	write_angle(random_num(0,360))
	write_short(mdl_gib_head) // Sprite index
	write_byte(0) // bounce
	write_byte(500) // life
	message_end()
	
	// Spine
	message_begin(MSG_BROADCAST,SVC_TEMPENTITY)
	write_byte(TE_MODEL)
	engfunc(EngFunc_WriteCoord, origin[0])
	engfunc(EngFunc_WriteCoord, origin[1])
	engfunc(EngFunc_WriteCoord, origin[2])
	write_coord(random_num(-100,100))
	write_coord(random_num(-100,100))
	write_coord(random_num(100,200))
	write_angle(random_num(0,360))
	write_short(mdl_gib_spine)
	write_byte(0) // bounce
	write_byte(500) // life
	message_end()
	
	// Lung
	for(new i = 0; i < random_num(1,2); i++) 
	{
		message_begin(MSG_BROADCAST,SVC_TEMPENTITY)
		write_byte(TE_MODEL)
		engfunc(EngFunc_WriteCoord, origin[0])
		engfunc(EngFunc_WriteCoord, origin[1])
		engfunc(EngFunc_WriteCoord, origin[2])
		write_coord(random_num(-100,100))
		write_coord(random_num(-100,100))
		write_coord(random_num(100,200))
		write_angle(random_num(0,360))
		write_short(mdl_gib_lung)
		write_byte(0) // bounce
		write_byte(500) // life
		message_end()
	}
	
	// Parts, 10 times
	for(new i = 0; i < 10; i++) 
	{
		message_begin(MSG_BROADCAST,SVC_TEMPENTITY)
		write_byte(TE_MODEL)
		engfunc(EngFunc_WriteCoord, origin[0])
		engfunc(EngFunc_WriteCoord, origin[1])
		engfunc(EngFunc_WriteCoord, origin[2])
		write_coord(random_num(-100,100))
		write_coord(random_num(-100,100))
		write_coord(random_num(100,200))
		write_angle(random_num(0,360))
		write_short(mdl_gib_flesh)
		write_byte(0) // bounce
		write_byte(500) // life
		message_end()
	}
	
	// Blood
	for(new i = 0; i < 3; i++) 
	{
		new x,y,z
		x = random_num(-100,100)
		y = random_num(-100,100)
		z = random_num(0,100)
		for(new j = 0; j < 3; j++)
		{
			message_begin(MSG_BROADCAST,SVC_TEMPENTITY)
			write_byte(TE_BLOODSPRITE)
			engfunc(EngFunc_WriteCoord, origin[0]+(x*j))
			engfunc(EngFunc_WriteCoord, origin[1]+(y*j))
			engfunc(EngFunc_WriteCoord, origin[2]+(z*j))
			write_short(blood_spray)
			write_short(blood_drop)
			write_byte(229) // color index
			write_byte(15) // size
			message_end()
		}
	}
}



Tot eroare da :(..
Askwrite
Moderator ajutator
Moderator ajutator
Posts: 345
Joined: 26 Apr 2013, 21:59
Detinator Steam: Da
CS Status: Scriptez...!
Reputatie: Fost moderator ajutator
Has thanked: 6 times
Been thanked: 55 times
Contact:

21 May 2013, 21:57

Posteaza si tu, ca n-am toate includeurile, posteaza liniile cu erori.
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:

21 May 2013, 22:12

Iti dau acum include.. erorile sun cele din poza de mai sus.
| Afiseaza codul
#if defined _dhudmessage_included
    #endinput
#endif

#define _dhudmessage_included

#include <amxmodx>

stock __dhud_color;
stock __dhud_x;
stock __dhud_y;
stock __dhud_effect;
stock __dhud_fxtime;
stock __dhud_holdtime;
stock __dhud_fadeintime;
stock __dhud_fadeouttime;
stock __dhud_reliable;

stock set_dhudmessage( red = 0, green = 160, blue = 0, Float:x = -1.0, Float:y = 0.65, effects = 2, Float:fxtime = 6.0, Float:holdtime = 3.0, Float:fadeintime = 0.1, Float:fadeouttime = 1.5, bool:reliable = false )
{
    #define clamp_byte(%1)       ( clamp( %1, 0, 255 ) )
    #define pack_color(%1,%2,%3) ( %3 + ( %2 << 8 ) + ( %1 << 16 ) )

    __dhud_color       = pack_color( clamp_byte( red ), clamp_byte( green ), clamp_byte( blue ) );
    __dhud_x           = _:x;
    __dhud_y           = _:y;
    __dhud_effect      = effects;
    __dhud_fxtime      = _:fxtime;
    __dhud_holdtime    = _:holdtime;
    __dhud_fadeintime  = _:fadeintime;
    __dhud_fadeouttime = _:fadeouttime;
    __dhud_reliable    = _:reliable;

    return 1;
}

stock show_dhudmessage( index, const message[], any:... )
{
    new buffer[ 128 ];
    new numArguments = numargs();

    if( numArguments == 2 )
    {
        send_dhudMessage( index, message );
    }
    else if( index || numArguments == 3 )
    {
        vformat( buffer, charsmax( buffer ), message, 3 );
        send_dhudMessage( index, buffer );
    }
    else
    {
        new playersList[ 32 ], numPlayers;
        get_players( playersList, numPlayers, "ch" );

        if( !numPlayers )
        {
            return 0;
        }

        new Array:handleArrayML = ArrayCreate();

        for( new i = 2, j; i < numArguments; i++ )
        {
            if( getarg( i ) == LANG_PLAYER )
            {
                while( ( buffer[ j ] = getarg( i + 1, j++ ) ) ) {}
                j = 0;

                if( GetLangTransKey( buffer ) != TransKey_Bad )
                {
                    ArrayPushCell( handleArrayML, i++ );
                }
            }
        }

        new size = ArraySize( handleArrayML );

        if( !size )
        {
            vformat( buffer, charsmax( buffer ), message, 3 );
            send_dhudMessage( index, buffer );
        }
        else
        {
            for( new i = 0, j; i < numPlayers; i++ )
            {
                index = playersList[ i ];

                for( j = 0; j < size; j++ )
                {
                    setarg( ArrayGetCell( handleArrayML, j ), 0, index );
                }

                vformat( buffer, charsmax( buffer ), message, 3 );
                send_dhudMessage( index, buffer );
            }
        }

        ArrayDestroy( handleArrayML );
    }

    return 1;
}

stock send_dhudMessage( const index, const message[] )
{
    message_begin( __dhud_reliable ? ( index ? MSG_ONE : MSG_ALL ) : ( index ? MSG_ONE_UNRELIABLE : MSG_BROADCAST ), SVC_DIRECTOR, _, index );
    {
        write_byte( strlen( message ) + 31 );
        write_byte( DRC_CMD_MESSAGE );
        write_byte( __dhud_effect );
        write_long( __dhud_color );
        write_long( __dhud_x );
        write_long( __dhud_y );
        write_long( __dhud_fadeintime );
        write_long( __dhud_fadeouttime );
        write_long( __dhud_holdtime );
        write_long( __dhud_fxtime );
        write_string( message );
    }
    message_end();
}
Asta e dhudmessage.inc
| Afiseaza codul
/* Fun functions
*
* by Numb
*
* This file is provided as is (no warranties).
*/

#if defined _colorchat_included
  #endinput
#endif
#define _colorchat_included

enum Color
{
	NORMAL = 1, // clients scr_concolor cvar color
	GREEN, // Green Color
	TEAM_COLOR, // Red, grey, blue
	GREY, // grey
	RED, // Red
	BLUE, // Blue
}

new TeamName[][] = 
{
	"",
	"TERRORIST",
	"CT",
	"SPECTATOR"
}

ColorChat(id, Color:type, const msg[], {Float,Sql,Result,_}:...)
{
	if( !get_playersnum() ) return;
	
	new message[256];

	switch(type)
	{
		case NORMAL: // clients scr_concolor cvar color
		{
			message[0] = 0x01;
		}
		case GREEN: // Green
		{
			message[0] = 0x04;
		}
		default: // White, Red, Blue
		{
			message[0] = 0x03;
		}
	}

	vformat(message[1], 251, msg, 4);

	// Make sure message is not longer than 192 character. Will crash the server.
	message[192] = '^0';

	new team, ColorChange, index, MSG_Type;
	
	if(id)
	{
		MSG_Type = MSG_ONE;
		index = id;
	} else {
		index = FindPlayer();
		MSG_Type = MSG_ALL;
	}
	
	team = get_user_team(index);
	ColorChange = ColorSelection(index, MSG_Type, type);

	ShowColorMessage(index, MSG_Type, message);
		
	if(ColorChange)
	{
		Team_Info(index, MSG_Type, TeamName[team]);
	}
}

ShowColorMessage(id, type, message[])
{
	static bool:saytext_used;
	static get_user_msgid_saytext;
	if(!saytext_used)
	{
		get_user_msgid_saytext = get_user_msgid("SayText");
		saytext_used = true;
	}
	message_begin(type, get_user_msgid_saytext, _, id);
	write_byte(id)		
	write_string(message);
	message_end();	
}

Team_Info(id, type, team[])
{
	static bool:teaminfo_used;
	static get_user_msgid_teaminfo;
	if(!teaminfo_used)
	{
		get_user_msgid_teaminfo = get_user_msgid("TeamInfo");
		teaminfo_used = true;
	}
	message_begin(type, get_user_msgid_teaminfo, _, id);
	write_byte(id);
	write_string(team);
	message_end();

	return 1;
}

ColorSelection(index, type, Color:Type)
{
	switch(Type)
	{
		case RED:
		{
			return Team_Info(index, type, TeamName[1]);
		}
		case BLUE:
		{
			return Team_Info(index, type, TeamName[2]);
		}
		case GREY:
		{
			return Team_Info(index, type, TeamName[0]);
		}
	}

	return 0;
}

FindPlayer()
{
	new i = -1;

	while(i <= get_maxplayers())
	{
		if(is_user_connected(++i))
			return i;
	}

	return -1;
}
/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1033\\ f0\\ fs16 \n\\ par }
*/
colorchat.inc

:-?... doar alea 2 ai nevoie.
Edit:
Uite si o poza cu erorile (poza noua).
Image
Last edited by FlyingSnow on 21 May 2013, 22:18, edited 1 time in total.
Askwrite
Moderator ajutator
Moderator ajutator
Posts: 345
Joined: 26 Apr 2013, 21:59
Detinator Steam: Da
CS Status: Scriptez...!
Reputatie: Fost moderator ajutator
Has thanked: 6 times
Been thanked: 55 times
Contact:

21 May 2013, 22:16

Nu are cum sa-ti dea aceleasi erori, szpluginame nici nu mai exista.
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:

21 May 2013, 22:19

Da, scuze. e szIp...:-s am pus poza noua.
Askwrite
Moderator ajutator
Moderator ajutator
Posts: 345
Joined: 26 Apr 2013, 21:59
Detinator Steam: Da
CS Status: Scriptez...!
Reputatie: Fost moderator ajutator
Has thanked: 6 times
Been thanked: 55 times
Contact:

21 May 2013, 22:33

| Afiseaza codul
#include < amxmodx >
#include < amxmisc>
#include < nvault > 
#include < engine >
#include < cstrike >
#include < hamsandwich >
#include < fakemeta >
#include < fakemeta_util >
#include < fun >
#include < csx >
#include < xs >
#include < colorchat >
#include < dhudmessage >

#define PLUGIN "Furien XP Mod"
#define VERSION "0.0.1"
#define AUTHOR "hadesownage"

#define is_ent_flare(%1) (pev(%1, pev_iuser4) == 1337) ? 1 : 0

new const szPrefix [ ] = "[Furien XP Mod]^3 -";
new Level [ 33 ], eXP [ 33 ];
new KillXp, HsXp, HeXp, KnifeXp;
new g_Menu [ 33 ];
new g_iCount[ 33 ];
new g_trail;
new amx_gamename;
#define TE_SPRITETRAIL 15
new g_damage;
new g_damages;

new gFurienXP, Vault;

new g_MaxPlayers;

new g_FuriensWin = 0;
new g_AntiFuriensWin = 0;

new gMsgScreenShake;

new g_FurienHealth;
new g_AntiFurienHealth;

#define VIP_ACCESS ADMIN_LEVEL_H

new bool:UserHaveHpAndAp [ 33 ];
new bool:UserHaveHeGrenade [ 33 ];
new bool:UserHaveGodMode [ 33 ];
new bool:UserHaveNoClip [ 33 ];
new bool:UserHaveTeleport [ 33 ];
new bool:UserHaveSuperKnife [ 33 ];
new bool:UserHaveDualMp5 [ 33 ];

new bool:UserHasChoosed [ 33 ];
new bool:g_CanUseHe [ 33 ];

new const buy_FurienHealth[] = "exhealth/zm_buyhealth.wav" 
new const buy_AntiFurienHealth[] = "exhealth/hm_buyhealth.wav" 

static const COLOR[] = "^x04"; //green
static const CONTACT[] = "/vip pentru detalii";

new maxplayers;
new gmsgSayText;
new g_ScoreAttrib;

//======NICK CHANGE-----
new const g_reason[] = "Nu este permisa schimbarea nickului pe server !";

new const g_name[] = "name";
//-------END NICK=====

//======CREDITS-----
new PlayerCredits[10000];
new SymbolsName;
//-------END CREDITS=====

//-------POWERS======

//--| Menu/Power |--//
new HasPower[33], bool:HasChose[33];
//--| HE Grenade |--//
new HE_Cooldown[33] = 0;
//--| GodMode |--//
new GodMode_Cooldown[33] = 0;
new GodMode_DurationCooldown[33] = 0;
//--| Drop Enemy Weapon |--//
new DropSprite, DropSprite2;
new Drop_Cooldown[33] = 0;
new const DROP_HIT_SND[] = "Furien/DropWpn_HIT.wav";
const WPN_NOT_DROP = ((1<<2)|(1<<CSW_HEGRENADE)|(1<<CSW_SMOKEGRENADE)|(1<<CSW_FLASHBANG)|(1<<CSW_KNIFE)|(1<<CSW_C4));
//--| Freeze |--//
new Freeze_Cooldown[33] = 0;
new FreezeSprite, FreezeSprite3;
new Frozen[33];
new Float:TempSpeed[33], Float:TempGravity[33];
new const FreezeSprite2[] = { "models/glassgibs.mdl" };
new const FROSTBREAK_SND[][] = { "Furien/FrostBreak.wav" };
new const FROSTPLAYER_SND[][] = { "Furien/FrostPlayer.wav" };
const BREAK_GLASS = 0x01;
const UNIT_SECOND = (1<<12);
const FFADE_IN = 0x0000;
//--| Drag |--//
new DRAG_MISS_SND[] = "Furien/DragMiss.wav";
new DRAG_HIT_SND[] = "Furien/DragHit.wav";
new Hooked[33], Unable2move[33], OvrDmg[33];
new Float:LastHook[33];
new bool: BindUse[33] = false, bool: Drag_I[33] = false;
new Drag_Cooldown[33] = 0;
new bool:Not_Cooldown[33];
new DragSprite;
//--| Teleport |--//
new TeleportSprite, TeleportSprite2, TeleportSprite3;
new Teleport_Cooldown[33];
new const SOUND_BLINK[] = { "weapons/flashbang-1.wav" };
const UNIT_SEC = 0x1000;
const FFADE = 0x0000;
//--| NoRecoil |--//
new Float: cl_pushangle[33][3];
const WEAPONS_BITSUM = (1<<CSW_KNIFE|1<<CSW_HEGRENADE|1<<CSW_FLASHBANG|1<<CSW_SMOKEGRENADE|1<<CSW_C4);
//--| Cvars |--//
new CvarDropDistance,
CvarDropCooldown, CvarFreezeDuration, CvarFreezeCooldown, CvarFreezeDistance, CvarDragSpeed, CvarDragCooldown,
CvarDragDmg2Stop, CvarDragUnb2Move, CvarTeleportCooldown, CvarTeleportRange;

//-------END POWERS=====

//-------SALAMANDER=====
new const fire_classname[] = "fire_salamander";
new const fire_spr_name[] = "sprites/fire_salamander.spr";

new const v_model[] = "models/furien/v_salamander.mdl";
new const p_model[] = "models/furien/p_salamander.mdl";
new const w_model[] = "models/furien/w_salamander.mdl";

new const fire_sound[] = "weapons/flamegun-2.wav";

#define CSW_SALAMANDER CSW_M249
#define PEV_ENT_TIME pev_fuser1
#define TASK_FIRE 3123123
#define TASK_RELOAD 2342342
new g_had_salamander[33], bool:is_firing[33], bool:is_reloading[33], Float:g_last_fire[33],
bool:can_fire[33], g_reload_ammo[33], g_ammo[33];

enum {
	IDLE_ANIM = 0,
	DRAW_ANIM = 4,
	RELOAD_ANIM = 3,
	SHOOT_ANIM = 1,
	SHOOT_END_ANIM = 2
}

new g_salamander;
new cvar_dmgrd_start, cvar_dmgrd_end, cvar_fire_delay, cvar_max_clip;

//-------END SALAMANDER=======

//---------FURIEN BONUS BOX======

new CvarFurienSpeed, CvarAntiFurienSpeed;
new bool:HasSpeed[33], bool:HasTeleport[33], bool:LowSpeed [ 33 ];
new const ClassName[] = "BonusBox"
new Model[2][] = {
	"models/furien/cadout_new.mdl",
	"models/furien/cadouct.mdl"
}

new Model_Yellow[2][] = {
	"models/furien/cadout_galben.mdl",
	"models/furien/cadouct_galben.mdl"
}

const UNIT_SEC = 0x1000
const FFADE = 0x0000

#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
enum {
	Red,
	Green,
	Blue
};

//---------END FURIEN BONUS BOX======

//---------K1ASUS WEAPON ( SCORPION )======

#define ENG_NULLENT		-1
#define EV_INT_WEAPONKEY	EV_INT_impulse
#define k1ases_WEAPONKEY	890
#define MAX_PLAYERS  			  32
#define IsValidUser(%1) (1 <= %1 <= g_MaxPlayers)
#define write_coord_f(%1)	engfunc(EngFunc_WriteCoord,%1)

const USE_STOPPED = 0
const OFFSET_ACTIVE_ITEM = 373
const OFFSET_WEAPONOWNER = 41
const OFFSET_LINUX = 4
const OFFSET_LINUX_WEAPONS = 4

#define WEAP_LINUX_XTRA_OFF			4
#define m_fKnown				44
#define m_flNextPrimaryAttack 			46
#define m_flTimeWeaponIdle			48
#define m_iClip					51
#define m_fInReload				54
#define PLAYER_LINUX_XTRA_OFF			4
#define m_flNextAttack				83

#define k1ases_RELOAD_TIME 2.5

new bool:k1ases_weapon [ 33 ];

new const Fire_Sounds[][] = { "weapons/k1ar-1.wav" }
new const sprites_exp[] = "sprites/deimosexp.spr"
new const explode_sound[] = "cso/deimos_skill_start.wav"

new const GUNSHOT_DECALS[] = { 41, 42, 43, 44, 45 }
new k1ases_V_MODEL[64] = "models/furien/v_k1ases.mdl"
new k1ases_P_MODEL[64] = "models/furien/p_k1ases.mdl"
new k1ases_W_MODEL[64] = "models/furien/w_k1ases.mdl"

new cvar_dmg_k1ases, cvar_recoil_k1ases, cvar_clip_k1ases, cvar_k1ases_ammo , cvar_k1asesammo , cvar_k1ases_delay , cvar_k1ases_claw , cvar_rad
new g_orig_event_k1ases, g_clip_ammo[33] , cvar_k1ases_fire
new Float:cl_pushangle_k1asus[MAX_PLAYERS + 1][3], m_iBlood[2]
new g_k1ases_TmpClip[33] , oldweap[33] ,  g_has_k1ases[33] , g_ammoclaw[33] , g_delay[33]

new sprites_exp_index

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)
new const WEAPONENTNAMES[][] = { "", "weapon_p228", "", "weapon_scout", "weapon_hegrenade", "weapon_xm1014", "weapon_c4", "weapon_mac10",
	"weapon_aug", "weapon_smokegrenade", "weapon_elite", "weapon_fiveseven", "weapon_ump45", "weapon_sg550",
	"weapon_galil", "weapon_famas", "weapon_usp", "weapon_glock18", "weapon_awp", "weapon_mp5navy", "weapon_m249",
	"weapon_m3", "weapon_m4a1", "weapon_tmp", "weapon_g3sg1", "weapon_flashbang", "weapon_deagle", "weapon_sg552",
"weapon_ak47", "weapon_knife", "weapon_p90" }

//---------END K1ASUS WEAPON ( SCORPION )======

//---------QUAD BARREL======

#define m_pPlayer				41
#define m_flNextPrimaryAttack		46
#define m_flNextSecondaryAttack	47
#define m_flTimeWeaponIdle		48
#define m_iClip				51
#define m_fInReload				54
#define m_fInSpecialReload		55

#define XTRA_OFS_WEAPON			4
#define XTRA_OFS_PLAYER		5
#define m_flNextAttack		83
#define m_rgAmmo_player_Slot0	376

new const qb_v_model[] = "models/furien/v_qbarrel.mdl"
new const qb_p_model[] = "models/furien/p_qbarrel.mdl"
new const qb_w_model[] = "models/furien/w_qbarrel.mdl"

new const qb_sound[5][] = {
	"weapons/qbarrel_clipin1.wav",
	"weapons/qbarrel_clipin2.wav",
	"weapons/qbarrel_clipout1.wav",
	"weapons/qbarrel_draw.wav",
	"weapons/qbarrel_shoot.wav"
}

#define CSW_QB CSW_XM1014
new g_had_qb[33], Float:g_last_fire_qb[33], Float:g_last_fire2[33], g_bloodspray, g_blood
new cvar_default_clip, cvar_delayattack, cvar_reloadtime, cvar_randmg_start, cvar_randmg_end
new g_quad_barrel

//---------END QUAD BARREL======

//---------DRAGON CANNON======

#define CSW_CANNON CSW_UMP45
#define weapon_cannon "weapon_ump45"

#define DEFAULT_W_MODEL "models/w_ump45.mdl"
#define WEAPON_SECRET_CODE 4965
#define CANNONFIRE_CLASSNAME "cannon_round"

// Fire Start
#define WEAPON_ATTACH_F 30.0
#define WEAPON_ATTACH_R 10.0
#define WEAPON_ATTACH_U -10.0

#define TASK_RESET_AMMO 5434

const pev_ammo = pev_iuser4

new const WeaponModel[3][] = {
	"models/furien/v_cannon.mdl",
	"models/furien/p_cannon.mdl",
	"models/furien/w_cannon.mdl"
}

new const WeaponSound[2][] = {
	"weapons/cannon-1.wav",
	"weapons/cannon_draw.wav"
}

new const WeaponResource[5][] = {
	"sprites/fire_cannon.spr",
	"sprites/weapon_cannon.txt",
	"sprites/640hud69.spr",
	"sprites/640hud2_cso.spr",
	"sprites/smokepuff.spr"
}

enum {
	MODEL_V = 0,
	MODEL_P,
	MODEL_W
}

enum {
	CANNON_ANIM_IDLE = 0,
	CANNON_ANIM_SHOOT1,
	CANNON_ANIM_SHOOT2,
	CANNON_ANIM_DRAW
}

new g_had_cannon[33], g_old_weapon[33], g_cannon_ammo[33], g_got_firsttime[33], Float:g_lastshot[33]
new g_cvar_defaultammo, g_cvar_reloadtime, g_cvar_firespeed, g_cvar_radiusdamage, g_cvar_damage
new Float:g_temp_reloadtime, g_smokepuff_id

//---------END DRAGON CANNON======

//---------M79 WEAPON======

#define HUD_HIDE_CROSS (1<<6)

// Weapon/Grenade models
new const m79_P_MODEL[] = "models/furien/p_m79.mdl"
new const m79_V_MODEL[] = "models/furien/v_m79fix2.mdl"
new const m79_W_MODEL[] = "models/furien/w_m79.mdl"
new const m79_GRENADE_MODEL[] = "models/grenade.mdl"

// Fire sound
new const m79_GRENADE_SHOOT[] = "weapons/m79_fire1.wav"
new const m79_GRENADE_CLIPIN[] = "weapons/m79_clipin.wav"
new const m79_GRENADE_CLIPON[] = "weapons/m79_clipon.wav"
new const m79_GRENADE_CLIPOUT[] = "weapons/m79_clipout.wav"
new const m79_GRENADE_DRAW[] = "weapons/m79_draw.wav"

// Sprites
new const m79_GRENADE_TRAIL[] = "sprites/laserbeam.spr"
new const m79_GRENADE_EXPLOSION[] = "sprites/m79_exp.spr"
new const m79_GRENADE_SMOKE[] = "sprites/black_smoke3.spr"

// Cached sprite indexes
new sTrail, sExplo, sSmoke

// Sprites
new gmsgWeaponList

// Bodyparts and blood
new mdl_gib_flesh, mdl_gib_head, mdl_gib_lung, mdl_gib_spine,
blood_drop, blood_spray

// Item ID
new m79

// Player variables
new g_hasM79[33] // whether player has M79
new g_FireM79[33] // player is shooting
new g_canShoot[33] // player can shoot
new Float:g_last_shot_time[33] // last shot time
new grenade_count[33] // current grenade count
new bool:draw_wpn[33] //выбираем пукалку
new bool:hasOnHandM79[33],bool:canfire[33],
cvar_granade_damage_radius,
cvar_granade_max_damage
// Message ID's
new g_msgScreenShake,g_msgStatusText
new gmsgDeathMsg, gmsgScoreInfo

// Customization(CHANGE HERE)
#define LAUNCHER_COST	20
new Float:delayshot = 3.0
// Tasks
#define TASK_HUDAMMO	    1337
#define TASK_FRSTSHT	    1437
#define ID_HUDAMMO (taskid - TASK_HUDAMMO)
#define ID_SHT (taskid - TASK_FRSTSHT)

enum {
	anim_idle,
	anim_shot1,
	anim_shot2,
	anim_draw,
}

//---------END M79 WEAPON======

new dual_mp5_v_model [ 66 ] = "models/furien/weapons/v_dualmp5.mdl";
new dual_mp5_p_model [ 66 ] = "models/furien/weapons/p_dualmp5.mdl";

new infinity_knife_v_model [ 66 ] = "models/furien/knifes/v_infinity_knife1.mdl";
new infinity_knife_p_model [ 66 ] = "models/furien/knifes/p_infinity_knife1.mdl";

new katana_knife_v_model [ 66 ] = "models/furien/knifes/v_katana.mdl";
new katana_knife_p_model [ 66 ] = "models/furien/knifes/p_katana.mdl";

new double_katana_v_knife_model [ 66 ] = "models/furien/knifes/v_double_katana.mdl";
new double_katana_p_knife_model [ 66 ] = "models/furien/knifes/p_double_katana.mdl";

new super_knife_v_model [ 66 ] = "models/furien/knifes/v_natad.mdl";
new super_knife_p_model [ 66 ] = "models/furien/knifes/p_natad.mdl";

new axe_knife_v_model [ 66 ] = "models/furien/knifes/v_vipaxe.mdl";
new axe_knife_p_model [ 66 ] = "models/furien/knifes/p_vipaxe.mdl";

new trainer_v_model [ 66 ] = "models/furien/knifes/v_combatknife.mdl";
new trainer_p_model [ 66 ] = "models/furien/knifes/p_combatknife.mdl";

new ignes_knife_model [ 66 ] = "models/furien/knifes/v_ignes.mdl";
new elf_knife_model [ 66 ] = "models/furien/knifes/v_elf.mdl";

new super_knife_shop_v_model [ 66 ] = "models/furien/knifes/v_superknife_shop.mdl";
// new super_knife_shop_p_model [ 66 ] = "models/furien/knifes/p_superknife_shop.mdl";

new super_knife_shop_v_model2 [ 66 ] = "models/furien/knifes/v_superknife_shop2.mdl";
new super_knife_shop_p_model2 [ 66 ] = "models/furien/knifes/p_superknife_shop2.mdl";

new thompson_v_model [ 66 ] = "models/furien/weapons/v_thompson.mdl";
new thompson_p_model [ 66 ] = "models/furien/weapons/p_thompson.mdl";

new uspx_v_model [ 66 ] = "models/furien/weapons/v_uspx.mdl";
new uspx_p_model [ 66 ] = "models/furien/weapons/p_uspx.mdl";

new hunter_v_model [ 66 ] = "models/furien/weapons/v_f2000.mdl";
new hunter_p_model [ 66 ] = "models/furien/weapons/p_f2000.mdl";

new mage_v_model [ 66 ] = "models/furien/weapons/v_fnc.mdl";
new mage_p_model [ 66 ] = "models/furien/weapons/p_fnc.mdl";

new rogue_v_model [ 66 ] = "models/furien/weapons/v_svdex.mdl";
new rogue_p_model [ 66 ] = "models/furien/weapons/p_svdex.mdl";

new shaman_v_model [ 66 ] = "models/furien/weapons/v_tar21.mdl";
new shaman_p_model [ 66 ] = "models/furien/weapons/p_tar21.mdl";

new warrior_v_model [ 66 ] = "models/furien/weapons/v_kriss.mdl";
new warrior_p_model [ 66 ] = "models/furien/weapons/p_kriss.mdl";

new deklowaz_v_model [ 66 ] = "models/furien/weapons/v_dualkriss.mdl";
new deklowaz_p_model [ 66 ] = "models/furien/weapons/p_dualkriss.mdl";

new flare_v_model [ 66 ] = "models/furien/weapons/v_flare.mdl";
new flare_w_model [ 66 ] = "models/furien/weapons/w_flare.mdl";

new strike_grenade_v_model [ 66 ] = "models/furien/weapons/v_hegrenade.mdl";
new strike_grenade_p_model [ 66 ] = "models/furien/weapons/p_hegrenade.mdl";

new bool:dual_mp5 [ 33 ];
new bool:salamander [ 33 ];
new bool:SalamanderLimit [ 33 ];
new bool:katana_knife [ 33 ];
new bool:double_katana_knife [ 33 ];
new bool:super_knife [ 33 ];
new bool:infinity_knife [ 33 ];
new bool:ignes_knife [ 33 ];
new bool:elf_knife [ 33 ];
new bool:trainer [ 33 ];
new bool:vip_axe_knife [ 33 ];
new bool:hunter [ 33 ];
new bool:mage [ 33 ];
new bool:rogue [ 33 ];
new bool:shaman [ 33 ];
new bool:warrior [ 33 ];
new bool:deklowaz [ 33 ];
new bool:thompson [ 33 ];
new bool:uspx [ 33 ];
new bool:flare [ 33 ];
new bool:druid [ 33 ];
new bool:strike_grenade [ 33 ];
new bool:strike_grenade2 [ 33 ];
new bool:strike_grenade3 [ 33 ];
new bool:super_knife_shop [ 33 ];
new bool:super_knife_shop2 [ 33 ];
new bool:UserHaveQuad [ 33 ];
new bool:UserHaveDragon [ 33 ];
new bool:UserHaveM79 [ 33 ];

new const Levels [ 30 ] =  {
	
	70, //1
	150, //2
	200, //3
	300, //4
	380, //5
	500, //6
	550, //7
	650, //8
	800, //9
	900, //10
	1000, //11
	1200, //12
	1400, //13
	1650, //14
	1800, //15
	2000, //16
	2300, //17
	2600, //18
	3000, //19
	3300, //20
	3600, //21
	4000, //22
	4300, //23
	4900, //24
	5400, //25
	6000, //26
	6500, //27
	7000, //28
	7700, //29
	8000 //30
};

new const Prefix [ 30 +2 ] [ ] = {
	
	"0",
	"1",
	"2",
	"3",
	"4",
	"5",
	"6",
	"7",
	"8",
	"9",
	"10",
	"11",
	"12",
	"13",
	"14",
	"15",
	"16",
	"17",
	"18",
	"19",
	"20",
	"21",
	"22",
	"23",
	"24",
	"25",
	"26",
	"27",
	"28",
	"29",
	"30",
	""
};

public plugin_init ( ) {
	
	register_plugin ( PLUGIN, VERSION, "hadesownage" );
	
	register_clcmd ( "say /xp", "cmdShowXp", -1 );
	register_clcmd ( "say /savexp", "cmdSaveXp", -1 );
	register_clcmd ( "say /level", "cmdShowLevel" );
	register_clcmd ( "say /levele", "cmdShowLevels", -1 );
	register_clcmd ( "say /topxp", "cmdXpTop15", -1 );
	register_clcmd ( "say /clearxp", "cmdClearXp", -1 );
	register_clcmd ( "say /xpmenu", "cmdXpMenu", -1 );
	register_clcmd ( "say /vipweapons", "cmdVipWeaponsMenu", -1 );
	register_clcmd ( "say /class", "cmdClassMenu", -1 );
	register_clcmd ( "say class", "cmdClassMenu", -1 );
	register_clcmd ( "say /refresh", "cmdRefreshXP", -1 );
	register_clcmd ( "say /shop", "cmdShop", -1 );
	register_clcmd ( "say shop", "cmdShop", -1 );
	register_clcmd ( "shop", "cmdShop", -1 );
	register_clcmd ( "say /help", "cmdHelp", -1 );
	register_clcmd ( "say /ajutor", "cmdHelp", -1 );
	register_clcmd ( "say /detalii", "cmdHelp", -1 );
	register_clcmd ( "say /despre", "cmdHelp", -1 );
	register_clcmd ( "say /vip", "cmdShowVipDetails", -1 );
	register_clcmd ( "say /depozit","Depozit", -1 );
	register_clcmd ( "say_team /depozit","Depozit", -1 );
	register_clcmd ( "say /retrage","Retrage", -1 );
	register_clcmd ( "say_team /retrage","Retrage", -1 );
	register_clcmd ( "say /credits","Show_Credits", -1 );
	register_clcmd ( "say /credite","Show_Credits", -1 );
	register_clcmd ( "say_team /credits","Show_Credits", -1 );
	register_clcmd ( "say_team /credite","Show_Credits", -1 );
	register_clcmd ( "+drag","DragStart" );
	register_clcmd ( "-drag","DragEnd" );
	register_clcmd ( "power", "Power" );
	register_clcmd ( "power2", "CmdTeleport" );
	register_clcmd ( "say /furienvip", "cmdCheckVIP", -1 );
	register_clcmd ( "say_team /furienvip", "cmdCheckVIP", -1 );
	register_clcmd ( "vippower", "VIPpower", VIP_ACCESS );
	
	register_concmd ( "amx_givexp", "cmdGiveXp", ADMIN_IMMUNITY, "<target / all> <amount>" );
	register_concmd ( "amx_setxp", "cmdSetXp", ADMIN_IMMUNITY, "<target> <amount>" );
	register_concmd ( "amx_give_credits", "Give_Credits", ADMIN_IMMUNITY, "<target / ct / t / all> <amount>" );
	register_concmd ( "amx_reset_credits", "Reset_Credits", ADMIN_IMMUNITY, "<target / ct / t / all>" );
	
	register_event ( "DeathMsg", "eDeath", "a" );
	register_event ( "DeathMsg", "Death", "a" );
	register_event ( "CurWeapon", "AntiFurienCurrentWeapon", "be", "1=1" );
	register_event ( "CurWeapon", "FurienCurrentWeapon", "be", "1=1" );
	register_event ( "HLTV", "GetRandomPlayer", "a", "1=0", "2=0" );
	//register_event ( "TextMsg", "Round_Restart", "a", "2&#Game_C", "2&#Game_w", "2&#Game_will_restart_in" );
	
	register_forward ( FM_ClientUserInfoChanged, "fwClientUserInfoChanged" );
	register_forward ( FM_PlayerPreThink, "ShowSalamanderIcon" );
	register_forward ( FM_SetModel, "fwd_setmodel" );
	register_forward ( FM_Think, "fwd_think" );
	register_forward ( FM_PlayerPreThink, "ForcePlayerSpeed" );
	register_forward ( FM_CmdStart, "CmdStart" );
	register_forward ( FM_Touch, "Touch" );
	register_forward ( FM_Touch, "Touch_Yellow" );
	register_forward ( FM_GetGameDescription, "GameDesc" ); 
	
	register_logevent ( "round_end", 2, "1=Round_End" );
	register_logevent ( "round_start", 2, "1=Round_Start" );
	
	RegisterHam ( Ham_Spawn, "player", "cmdClassMenu", 1 );
	RegisterHam ( Ham_Spawn, "player", "RefreshWeapons", 1 ); 
	RegisterHam ( Ham_TakeDamage, "player", "FurienAndAntiFurienDamage" );
	RegisterHam ( Ham_Killed, "player", "ham_player_kill" );
	RegisterHam ( Ham_Weapon_PrimaryAttack, "weapon_hegrenade", "ham_PrimaryAttack_He" );
	
	KillXp = register_cvar ( "xm_xp_pr_kill", "10" );
	HsXp = register_cvar ( "xm_xp_pr_hs", "10" ); 
	HeXp = register_cvar ( "xm_xp_pr_nade", "20" );
	KnifeXp = register_cvar ( "xm_xp_pr_knife", "25" );
	
	gFurienXP = nvault_open ( "FurienXPMod" );
	
	g_MaxPlayers = get_maxplayers ( );
	g_ScoreAttrib = get_user_msgid("ScoreAttrib");
	
	maxplayers = get_maxplayers()
	gmsgSayText = get_user_msgid("SayText")
	register_clcmd("say", "handle_say")
	register_cvar("amx_contactinfo", CONTACT, FCVAR_SERVER)
	
	SymbolsName = register_cvar ( "fr_name_symbols", "~`" ); 	//| Symbols Name Restricted |//	
	
	CvarFurienSpeed = register_cvar("amx_bonusbox_furien_speed", "1000");
	CvarAntiFurienSpeed = register_cvar("amx_bonusbox_anitfurien_speed", "750");
	
	gMsgScreenShake = get_user_msgid("ScreenShake");
	
	amx_gamename = register_cvar( "amx_gamename", "XP Mod by Hades" ); 
	
	set_task ( 30.0, "GiveBonus", 38427236, _, _, "b" );
	set_task( 1.0, "ShowHud", _, _, _, "b" );
	set_task( 120.0, "ShowMessages", _, _, _, "b" );
	//set_task( 10.0, "UpdateHudScore", _, _, _, "b" );
	//set_task( 60.0, "CheckTime", _, _, _, "b", 0 );
	
	// POWERS ------------------------------------
	register_event("DeathMsg", "Death", "a");
	RegisterHam(Ham_TakeDamage, "player", "TakeDamage");
	register_forward(FM_PlayerPreThink, "PlayerPreThink");
	
	new weapon_name[24];
	for (new i = 1; i <= 30; i++) {
		if (!(WEAPONS_BITSUM & 1 << i) && get_weaponname(i, weapon_name, 23)) {
			RegisterHam(Ham_Weapon_PrimaryAttack, weapon_name, "Weapon_PrimaryAttack_Pre");
			RegisterHam(Ham_Weapon_PrimaryAttack, weapon_name, "Weapon_PrimaryAttack_Post", 1);
		}
	}
	
	CvarDropDistance = register_cvar ("vip_drop_distance", "5000");		// Distanta maxima la care poate ajunge puterea
	CvarDropCooldown = register_cvar ("vip_drop_cooldown" , "30.0");		// Drop Enemy WPN Cooldown
	CvarFreezeDuration = register_cvar("vip_freeze_duration", "3.0");	// Freeze Duration
	CvarFreezeCooldown = register_cvar("vip_freeze_cooldown", "30.0");	// Freeze Cooldown
	CvarFreezeDistance = register_cvar ("vip_freeze_distance", "5000");	// Distanta maxima la care poate ajunge puterea
	CvarDragSpeed = register_cvar("vip_drag_speed", "500");			// Drag Speed
	CvarDragCooldown = register_cvar("vip_drag_cooldown", "15.0");		// Drag Cooldown
	CvarDragDmg2Stop = register_cvar("vip_drag_dmg2stop", "50");		// Drag Damage to stop
	CvarDragUnb2Move = register_cvar("vip_drag_unable_move", "1");		// Drag Unable to move
	CvarTeleportCooldown = register_cvar("vip_teleport_cooldown", "20.0");	// Teleport Cooldown
	CvarTeleportRange = register_cvar("vip_teleport_range", "12345");	// Teleport Range
	// POWERS ------------------------------------
	
	// SALAMANDER ------------------------------------
	
	register_event("CurWeapon", "event_curweapon", "be", "1=1");
	register_forward(FM_UpdateClientData, "fw_UpdateClientData_Post", 1);
	RegisterHam(Ham_Spawn, "player", "fw_spawn", 1);
	RegisterHam(Ham_Weapon_Reload, "weapon_m249", "fw_weapon_reload", 1);
	RegisterHam(Ham_Item_Deploy, "weapon_m249", "fw_weapon_deploy", 1);
	RegisterHam(Ham_Item_PostFrame, "weapon_m249", "fw_item_postframe", 1);
	RegisterHam(Ham_Item_AddToPlayer, "weapon_m249", "fw_item_addtoplayer", 1);
	register_forward(FM_CmdStart, "fw_cmdstart");
	register_touch(fire_classname, "*", "fw_touch");
	register_think(fire_classname, "fw_think");
	register_forward(FM_SetModel, "fw_SetModel");
	
	register_clcmd("lastinv", "check_lastinv");
	
	cvar_dmgrd_start = register_cvar("zp_salamander_dmgrandom_start", "65.0");
	cvar_dmgrd_end = register_cvar("zp_salamander_dmgrandom_end", "90.0");
	cvar_fire_delay = register_cvar("zp_salamander_fire_delay", "0.1");
	cvar_max_clip = register_cvar("zp_salamander_max_clip", "100");
	
	// SALAMANDER ------------------------------------
	
	// K1ASUS ----------------------------------------------
	register_message(get_user_msgid("DeathMsg"), "message_DeathMsg")
	register_event("CurWeapon","CurrentWeapon","be","1=1")
	RegisterHam(Ham_Item_AddToPlayer, "weapon_mp5navy", "fw_k1ases_AddToPlayer")
	RegisterHam(Ham_Use, "func_tank", "fw_UseStationary_Post", 1)
	RegisterHam(Ham_Use, "func_tankmortar", "fw_UseStationary_Post", 1)
	RegisterHam(Ham_Use, "func_tankrocket", "fw_UseStationary_Post", 1)
	RegisterHam(Ham_Use, "func_tanklaser", "fw_UseStationary_Post", 1)
	for (new i = 1; i < sizeof WEAPONENTNAMES; i++)
		if (WEAPONENTNAMES[0]) RegisterHam(Ham_Item_Deploy, WEAPONENTNAMES, "fw_Item_Deploy_Post", 1)
	RegisterHam(Ham_Weapon_PrimaryAttack, "weapon_mp5navy", "fw_k1ases_PrimaryAttack")
	RegisterHam(Ham_Weapon_PrimaryAttack, "weapon_mp5navy", "fw_k1ases_PrimaryAttack_Post", 1)
	RegisterHam(Ham_Item_PostFrame, "weapon_mp5navy", "k1ases__ItemPostFrame");
	RegisterHam(Ham_Weapon_Reload, "weapon_mp5navy", "k1ases__Reload");
	RegisterHam(Ham_Weapon_Reload, "weapon_mp5navy", "k1ases__Reload_Post", 1);
	RegisterHam(Ham_TakeDamage, "player", "fw_TakeDamage")
	register_forward(FM_SetModel, "fw_SetModel_k1asus")
	register_forward(FM_UpdateClientData, "fw_UpdateClientData_Post_k1asus", 1)
	register_forward(FM_PlaybackEvent, "fwPlaybackEvent")
	register_forward(FM_CmdStart, "fw_CmdStart")
	
	RegisterHam(Ham_TraceAttack, "worldspawn", "fw_TraceAttack", 1)
	RegisterHam(Ham_TraceAttack, "func_breakable", "fw_TraceAttack", 1)
	RegisterHam(Ham_TraceAttack, "func_wall", "fw_TraceAttack", 1)
	RegisterHam(Ham_TraceAttack, "func_door", "fw_TraceAttack", 1)
	RegisterHam(Ham_TraceAttack, "func_door_rotating", "fw_TraceAttack", 1)
	RegisterHam(Ham_TraceAttack, "func_plat", "fw_TraceAttack", 1)
	RegisterHam(Ham_TraceAttack, "func_rotating", "fw_TraceAttack", 1)
	
	cvar_dmg_k1ases = register_cvar("zp_k1ases_dmg", "1.5")
	cvar_recoil_k1ases = register_cvar("zp_k1ases_recoil", "0.5")
	cvar_clip_k1ases = register_cvar("zp_k1ases_clip", "30")
	cvar_k1ases_ammo = register_cvar("zp_k1ases_ammo", "50")
	cvar_k1asesammo =  register_cvar("zp_k1ases_clawammo", "3")
	cvar_k1ases_delay =  register_cvar("zp_k1ases_delay", "5")
	cvar_k1ases_claw = register_cvar("zp_k1ases_clawdmg", "500")
	cvar_rad =  register_cvar("zp_k1ases_clawrad", "100.0")
	cvar_k1ases_fire = register_cvar("zp_k1ases_speedfire", "0.4")
	
	// K1ASUS ----------------------------------------------
	
	// QUAD BARREL ----------------------------------------------
	
	register_forward(FM_CmdStart, "fm_cmdstart")
	register_forward(FM_UpdateClientData, "fw_UpdateClientData_Post_qb", 1)
	register_forward(FM_SetModel, "fw_SetModel_qb")	
	
	RegisterHam(Ham_TakeDamage, "player", "fw_takedmg")
	RegisterHam(Ham_TraceAttack, "worldspawn", "TraceAttack", 1)
	RegisterHam(Ham_TraceAttack, "player", "TraceAttack", 1)	
	
	RegisterHam(Ham_Weapon_Reload, "weapon_xm1014", "ham_reload", 1)
	RegisterHam(Ham_Weapon_PrimaryAttack, "weapon_xm1014", "ham_priattack", 1)
	RegisterHam(Ham_Item_PostFrame, "weapon_xm1014", "ham_postframe")
	RegisterHam(Ham_Item_AddToPlayer, "weapon_xm1014", "fw_item_addtoplayer_qb", 1)
	
	register_clcmd("lastinv", "check_draw_weapon")
	register_clcmd("slot1", "check_draw_weapon")
	
	cvar_default_clip = register_cvar("zp_qbarrel_default_clip", "4")
	cvar_delayattack = register_cvar("zp_qbarrel_delay_attack", "0.35")
	cvar_reloadtime = register_cvar("zp_qbarrel_reload_time", "3.0")
	
	cvar_randmg_start = register_cvar("zp_qbarrel_randomdmg_start", "400.0")
	cvar_randmg_end = register_cvar("zp_qbarrel_randomdmg_end", "600.0")
	
	register_event("CurWeapon", "event_curweapon_quad", "be", "1=1")
	
	// QUAD BARREL ----------------------------------------------
	
	// DRAGON CANNON ----------------------------------------------
	
	register_event("CurWeapon", "event_CurWeapon_dragon", "be", "1=1")
	
	register_forward(FM_UpdateClientData, "fw_UpdateClientData_Post_dc", 1)
	register_forward(FM_CmdStart, "fw_CmdStart_dc")
	register_forward(FM_SetModel, "fw_SetModel_dc")
	
	register_think(CANNONFIRE_CLASSNAME, "fw_Cannon_Think")
	register_touch(CANNONFIRE_CLASSNAME, "*", "fw_Cannon_Touch")
	
	RegisterHam(Ham_Spawn, "player", "fw_Spawn_Post", 1)
	RegisterHam(Ham_Item_AddToPlayer, weapon_cannon, "fw_AddToPlayer_Post", 1)
	
	g_cvar_defaultammo = register_cvar("cannon_default_ammo", "5")
	g_cvar_reloadtime = register_cvar("cannon_reload_time", "4.0")
	g_cvar_firespeed = register_cvar("cannon_fire_speed", "200.0")
	g_cvar_radiusdamage = register_cvar("cannon_radius_damage", "200.0")
	g_cvar_damage = register_cvar("cannon_damage", "700.0")
	
	register_clcmd("amx_get_dragoncannon", "get_dragoncannon", ADMIN_RCON)
	register_clcmd("weapon_cannon", "hook_weapon")
	
	// DRAGON CANNON ----------------------------------------------
	
	// M79 WEAPON ----------------------------------------------
	
	// Register new extra item
	cvar_granade_damage_radius = register_cvar("granade_damage_radius","400",FCVAR_UNLOGGED)
	cvar_granade_max_damage = register_cvar("granade_max_damage","700",FCVAR_UNLOGGED)
	
	// Events
	register_event("CurWeapon", "Event_CurrentWeapon_m79", "be", "1=1")
	register_logevent("event_start_m79", 2, "1=Round_Start")
	
	// Forwards
	RegisterHam(Ham_Killed, "player", "fw_PlayerKilled_m79")
	register_forward(FM_CmdStart, "fw_CmdStart_m79")
	register_forward(FM_PlayerPostThink, "fw_PlayerPostThink_m79")
	register_forward(FM_UpdateClientData, "fw_UpdateClientData_Post_m79", 1)
	register_clcmd("drop","dropcmd")
	// Messages
	g_msgScreenShake = get_user_msgid("ScreenShake")
	g_msgStatusText = get_user_msgid("StatusText")
	gmsgDeathMsg = get_user_msgid("DeathMsg")
	gmsgScoreInfo = get_user_msgid("ScoreInfo") 
	// Sprites
	RegisterHam( Ham_Item_AddToPlayer, "weapon_p228", "fw_AddToPlayer_m79" );
	gmsgWeaponList = get_user_msgid("WeaponList")
	
	// M79 WEAPON ----------------------------------------------
	
	
	
	set_task( 0.1, "SqlInit" )
	
}



public plugin_end( )
	nvault_close ( gFurienXP );

stock fm_set_rendering2(entity, fx = kRenderFxNone, r = 255, g = 255, b = 255, render = kRenderNormal, amount = 16) 
{
	static Float:color[3]; color[2] = float(b), color[0] = float(r), color[1] = float(g);
	
	set_pev(entity, pev_renderfx, fx);
	set_pev(entity, pev_rendercolor, color);
	set_pev(entity, pev_rendermode,  render);
	set_pev(entity, pev_renderamt,   float(amount));
	
	return true;
}

stock set_user_scoreattrib(id, attrib = 0)
{
	message_begin(MSG_BROADCAST, g_ScoreAttrib, _, 0);
	write_byte(id);
	write_byte(attrib);
	message_end( );
}

stock Drop(id)  {
	new wpn, wpnname[32];
	wpn = get_user_weapon(id);
	if(!(WPN_NOT_DROP & (1<<wpn)) && get_weaponname(wpn, wpnname, charsmax(wpnname))) {
		engclient_cmd(id, "drop", wpnname);
	}
}

stock set_weapon_anim(id, anim)
{
	set_pev(id, pev_weaponanim, anim)
	
	message_begin(MSG_ONE_UNRELIABLE, SVC_WEAPONANIM, {0, 0, 0}, id)
	write_byte(anim)
	write_byte(pev(id, pev_body))
	message_end()
}

stock drop_weapons(id, dropwhat)
{
	static weapons[32], num, i, weaponid
	num = 0
	get_user_weapons(id, weapons, num)
	
	const PRIMARY_WEAPONS_BIT_SUM2 = (1<<CSW_SCOUT)|(1<<CSW_XM1014)|(1<<CSW_MAC10)|(1<<CSW_MAC10)|(1<<CSW_UMP45)|(1<<CSW_SG550)|(1<<CSW_MAC10)|(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)
	
	for (i = 0; i < num; i++)
	{
		weaponid = weapons
		
		if (dropwhat == 1 && ((1<<weaponid) & PRIMARY_WEAPONS_BIT_SUM2))
		{
			static wname[32]
			get_weaponname(weaponid, wname, sizeof wname - 1)
			engclient_cmd(id, "drop", wname)
		}
	}
}

stock get_position(id,Float:forw, Float:right, Float:up, Float:vStart[])
{
	new Float:vOrigin[3], Float:vAngle[3], Float:vForward[3], Float:vRight[3], Float:vUp[3]
	
	pev(id, pev_origin, vOrigin)
	pev(id, pev_view_ofs,vUp) //for player
	xs_vec_add(vOrigin,vUp,vOrigin)
	pev(id, pev_v_angle, vAngle) // if normal entity ,use pev_angles
	
	angle_vector(vAngle,ANGLEVECTOR_FORWARD,vForward) //or use EngFunc_AngleVectors
	angle_vector(vAngle,ANGLEVECTOR_RIGHT,vRight)
	angle_vector(vAngle,ANGLEVECTOR_UP,vUp)
	
	vStart[0] = vOrigin[0] + vForward[0] * forw + vRight[0] * right + vUp[0] * up
	vStart[1] = vOrigin[1] + vForward[1] * forw + vRight[1] * right + vUp[1] * up
	vStart[2] = vOrigin[2] + vForward[2] * forw + vRight[2] * right + vUp[2] * up
}

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 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(TeleportSprite);
	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(TeleportSprite);
	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(TeleportSprite2);
	write_byte(30);
	write_byte(10);
	write_byte(1);
	write_byte(50);
	write_byte(10);
	message_end();
}

stock UTIL_CreateBeamCylinder( origin[ 3 ], addrad, sprite, startfrate, framerate, life, width, amplitude, red, green, blue, brightness, speed )
{
	message_begin( MSG_PVS, SVC_TEMPENTITY, origin ); 
	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 ] + addrad );
	write_short( sprite );
	write_byte( startfrate );
	write_byte( framerate );
	write_byte(life );
	write_byte( width );
	write_byte( amplitude );
	write_byte( red );
	write_byte( green );
	write_byte( blue );
	write_byte( brightness );
	write_byte( speed );
	message_end();
}

stock Create_TE_SPRITETRAIL3(start[3], end[3], iSprite, count, life, scale, velocity, random ){
	
	message_begin( MSG_BROADCAST,SVC_TEMPENTITY)
	write_byte( TE_SPRITETRAIL )
	write_coord( start[0] ) // start position (X)
	write_coord( start[1] ) // start position (Y)
	write_coord( start[2] + 40 ) // start position (Z)
	write_coord( end[0] ) // end position (X)
	write_coord( end[1] ) // end position (Y)
	write_coord( end[2] ) // end position (Z)
	write_short( iSprite ) // sprite index
	write_byte( count ) // count
	write_byte( life) // life in 0.1's
	write_byte( scale) // scale in 0.1's
	write_byte( velocity ) // velocity along vector in 10's
	write_byte( random ) // randomness of velocity in 10's
	message_end()
}

stock fm_cs_get_current_weapon_ent(id)
{
	return get_pdata_cbase(id, OFFSET_ACTIVE_ITEM, OFFSET_LINUX);
}

stock fm_cs_get_weapon_ent_owner(ent)
{
	return get_pdata_cbase(ent, OFFSET_WEAPONOWNER, OFFSET_LINUX_WEAPONS);
}

stock UTIL_PlayWeaponAnimation(const Player, const Sequence)
{
	set_pev(Player, pev_weaponanim, Sequence)
	
	message_begin(MSG_ONE_UNRELIABLE, SVC_WEAPONANIM, .player = Player)
	write_byte(Sequence)
	write_byte(pev(Player, pev_body))
	message_end()
}

stock play_weapon_anim(player, anim)
{
	set_pev(player, pev_weaponanim, anim)
	message_begin(MSG_ONE, SVC_WEAPONANIM, {0, 0, 0}, player)
	write_byte(anim)
	write_byte(pev(player, pev_body))
	message_end()
}

stock get_weapon_attackment(id, Float:output[3], Float:fDis = 40.0)
{ 
	new Float:vfEnd[3], viEnd[3] 
	get_user_origin(id, viEnd, 3)  
	IVecFVec(viEnd, vfEnd) 
	
	new Float:fOrigin[3], Float:fAngle[3]
	
	pev(id, pev_origin, fOrigin) 
	pev(id, pev_view_ofs, fAngle)
	
	xs_vec_add(fOrigin, fAngle, fOrigin) 
	
	new Float:fAttack[3]
	
	xs_vec_sub(vfEnd, fOrigin, fAttack)
	xs_vec_sub(vfEnd, fOrigin, fAttack) 
	
	new Float:fRate
	
	fRate = fDis / vector_length(fAttack)
	xs_vec_mul_scalar(fAttack, fRate, fAttack)
	
	xs_vec_add(fOrigin, fAttack, output)
}


//------| Save Credits |------//
public SaveCredits(id) {
	Vault = nvault_open("DepozitCredits");
	new data_credits[256], key_credits[64];
	
	new name[33];
	get_user_name(id,name,32);
	format(key_credits, 63, "%s-/", name);
	
	format(data_credits, 255, "%i#", PlayerCredits[id]);
	nvault_set(Vault, key_credits, data_credits);
	return PLUGIN_CONTINUE;
}
//------| Loading Credits |------//
public LoadCredits(id) {
	Vault = nvault_open("DepozitCredits");
	new data_credits[256], key_credits[64];
	
	new name[33];
	get_user_name(id,name,32);
	format(key_credits, 63, "%s-/", name);
	
	format(data_credits, 255, "%i#", PlayerCredits[id]);
	nvault_get(Vault, key_credits, data_credits, 255);
	replace_all(data_credits, 255, "#", " ");
	
	new Credits[32];
	parse(data_credits, Credits, 31);
	PlayerCredits[id] = str_to_num(Credits);
	return PLUGIN_CONTINUE;
} 

public SaveData ( id ) { 
	
	new szName [ 32 ];
	get_user_name ( id, szName, charsmax ( szName ) );  
	new vaultkey [ 64 ], vaultdata [ 256 ];
	
	format ( vaultkey, 63,"%s-Mod", szName ); 
	format ( vaultdata, 255,"%i#%i#",eXP [ id ],Level [ id ] ); 
	
	nvault_set ( gFurienXP, vaultkey, vaultdata ); 
	return 1; 
} 

public LoadData ( id ) { 
	
	new szName [ 32 ];
	get_user_name ( id, szName, charsmax ( szName ) ); 
	new vaultkey [ 64 ],vaultdata [ 256 ];
	
	format ( vaultkey,63,"%s-Mod", szName );
	format ( vaultdata,255,"%i#%i#", eXP [ id ], Level [ id ] ); 
	nvault_get ( gFurienXP, vaultkey, vaultdata, 255 );
	
	replace_all ( vaultdata, 255, "#", " " );
	
	new playerxp [ 32 ], playerlevel [ 32 ]; 
	
	parse ( vaultdata, playerxp, 31, playerlevel, 31 ); 
	
	eXP [ id ] = str_to_num ( playerxp );
	
	Level [ id ] = str_to_num ( playerlevel ); 
	
	return 1; 
}



public ShowHud ( id ) {
	
	if ( is_user_alive ( id ) && get_user_team ( id ) == 1 ) {
		
		if ( trainer [ id ] ) {
			
			set_hudmessage ( 255, 255, 0, -1.0, 0.80, 0, 6.0, 1.1 );
			
			show_hudmessage ( id, "Viata: %d | Armura: %d | Level: %s | XP: %d | Clasa: Trainer", get_user_health ( id ), get_user_armor ( id ), Prefix [ Level [ id ] ], eXP [ id ] );
			
		}
		
		if ( infinity_knife [ id ] ) {
			
			set_hudmessage ( 255, 255, 0, -1.0, 0.80, 0, 6.0, 1.1 );
			show_hudmessage ( id, "Viata: %d | Armura: %d | Level: %s | XP: %d | Clasa: Agnos", get_user_health ( id ), get_user_armor ( id ), Prefix [ Level [ id ] ], eXP [ id ] );
			
		}
		
		if ( super_knife [ id ] ) {
			
			set_hudmessage ( 255, 255, 0, -1.0, 0.80, 0, 6.0, 1.1 );
			show_hudmessage ( id, "Viata: %d | Armura: %d | Level: %s | XP: %d | Clasa: XFother", get_user_health ( id ), get_user_armor ( id ), Prefix [ Level [ id ] ], eXP [ id ] );
			
		}
		
		
		if ( katana_knife [ id ] && HasPower [ id ] == 4 ) {
			
			set_hudmessage ( 255, 255, 0, -1.0, 0.80, 0, 6.0, 1.1 );
			show_hudmessage ( id, "Viata: %d | Armura: %d | Level: %s | XP: %d | Clasa: Samurai | Putere: Drop Enemy Weapon", get_user_health ( id ), get_user_armor ( id ), Prefix [ Level [ id ] ], eXP [ id ] );
			
		}
		
		if ( double_katana_knife [ id ] && HasPower [ id ] == 4 ) {
			
			set_hudmessage ( 255, 255, 0, -1.0, 0.80, 0, 6.0, 1.1 );
			show_hudmessage ( id, "Viata: %d | Armura: %d | Level: %s | XP: %d | Clasa: Extra Samurai | Putere: Drop Enemy Weapon", get_user_health ( id ), get_user_armor ( id ), Prefix [ Level [ id ] ], eXP [ id ] );
			
		}
		
		
		if ( ignes_knife [ id ] && HasPower [ id ] == 5 ) {
			
			set_hudmessage ( 255, 255, 0, -1.0, 0.80, 0, 6.0, 1.1 );
			show_hudmessage ( id, "Viata: %d | Armura: %d | Level: %s | XP: %d | Clasa: Ignes | Putere: Freeze Enemy", get_user_health ( id ), get_user_armor ( id ), Prefix [ Level [ id ] ], eXP [ id ] );
			
		}
		
		
		
		if ( elf_knife [ id ] && HasPower [ id ] == 5 ) {
			
			set_hudmessage ( 255, 255, 0, -1.0, 0.80, 0, 6.0, 1.1 );
			show_hudmessage ( id, "Viata: %d | Armura: %d | Level: %s | XP: %d | Clasa: Elf | Putere: Freeze Enemy", get_user_health ( id ), get_user_armor ( id ), Prefix [ Level [ id ] ], eXP [ id ] );
			
		}
		
		if ( vip_axe_knife [ id ] && HasPower [ id ] == 7 ) {
			
			set_hudmessage ( 255, 255, 0, -1.0, 0.80, 0, 6.0, 1.1 );
			show_hudmessage ( id, "Viata: %d | Armura: %d | Level: %s | XP: %d | Clasa: Alcadeias | Putere: Teleport", get_user_health ( id ), get_user_armor ( id ), Prefix [ Level [ id ] ], eXP [ id ] );
			
		}
	}
	
	else if ( is_user_alive ( id ) && get_user_team ( id ) == 2 ) {
		
		if ( druid [ id ] ) {
			
			set_hudmessage ( 255, 255, 0, -1.0, 0.80, 0, 6.0, 1.0 );
			show_hudmessage ( id, "Viata: %d | Armura: %d | Level: %s | XP: %d | Clasa: Druid", get_user_health ( id ), get_user_armor ( id ), Prefix [ Level [ id ] ], eXP [ id ] );
			
		}
		
		if ( hunter [ id ] ) {
			
			set_hudmessage ( 255, 255, 0, -1.0, 0.80, 0, 6.0, 1.0 );
			show_hudmessage ( id, "Viata: %d | Armura: %d | Level: %s | XP: %d | Clasa: Hunter", get_user_health ( id ), get_user_armor ( id ), Prefix [ Level [ id ] ], eXP [ id ] );
			
		}
		
		if ( mage [ id ] ) {
			
			set_hudmessage ( 255, 255, 0, -1.0, 0.80, 0, 6.0, 1.0 );
			show_hudmessage ( id, "Viata: %d | Armura: %d | Level: %s | XP: %d | Clasa: Mage", get_user_health ( id ), get_user_armor ( id ), Prefix [ Level [ id ] ], eXP [ id ] );
			
		}
		
		
		if ( rogue [ id ] && HasPower [ id ] == 6 ) {
			
			set_hudmessage ( 255, 255, 0, -1.0, 0.80, 0, 6.0, 1.0 );
			show_hudmessage ( id, "Viata: %d | Armura: %d | Level: %s | XP: %d | Clasa: Rogue | Putere: Drag Enemy", get_user_health ( id ), get_user_armor ( id ), Prefix [ Level [ id ] ], eXP [ id ] );
			
		}
		
		if ( shaman [ id ] && HasPower [ id ] == 6 ) {
			
			set_hudmessage ( 255, 255, 0, -1.0, 0.80, 0, 6.0, 1.0 );
			show_hudmessage ( id, "Viata: %d | Armura: %d | Level: %s | XP: %d | Clasa: Shaman | Putere: Drag Enemy", get_user_health ( id ), get_user_armor ( id ), Prefix [ Level [ id ] ], eXP [ id ] );
			
		}
		
		
		if ( thompson [ id ] && HasPower [ id ] == 8 ) {
			
			set_hudmessage ( 255, 255, 0, -1.0, 0.80, 0, 6.0, 1.0 );
			show_hudmessage ( id, "Viata: %d | Armura: %d | Level: %s | XP: %d | Clasa: Warlock | Putere: Norecoil", get_user_health ( id ), get_user_armor ( id ), Prefix [ Level [ id ] ], eXP [ id ] );
			
		}
		
		
		
		if ( warrior [ id ] && HasPower [ id ] == 8 ) {
			
			set_hudmessage ( 255, 255, 0, -1.0, 0.80, 0, 6.0, 1.0 );
			show_hudmessage ( id, "Viata: %d | Armura: %d | Level: %s | XP: %d | Clasa: Warrior | Putere: Norecoil", get_user_health ( id ), get_user_armor ( id ), Prefix [ Level [ id ] ], eXP [ id ] );
			
		}
		
		if ( deklowaz [ id ] && HasPower [ id ] == 7 ) {
			
			set_hudmessage ( 255, 255, 0, -1.0, 0.80, 0, 6.0, 1.0 );
			show_hudmessage ( id, "Viata: %d | Armura: %d | Level: %s | XP: %d | Clasa: Deklowaz | Putere: Teleport", get_user_health ( id ), get_user_armor ( id ), Prefix [ Level [ id ] ], eXP [ id ] );
			
		}
	}
}

public RemoveStuff ( id ) {
	
	remove_dragoncannon ( id );
	g_had_qb [ id ] = 0;
	dual_mp5 [ id ] = false;
	k1ases_weapon [ id ] = false;
	salamander [ id ] = false;
	SalamanderLimit [ id ] = false;
	katana_knife [ id ] = false;
	double_katana_knife [ id ] = false;
	super_knife [ id ] = false;
	infinity_knife [ id ] = false;
	elf_knife [ id ] = false;
	ignes_knife [ id ] = false;
	trainer [ id ] = false;
	thompson [ id ] = false;
	uspx [ id ] = false;
	hunter [ id ] = false;
	shaman [ id ] = false;
	UserHaveM79 [ id ] = false;
	mage [ id ] = false;
	rogue [ id ] = false;
	warrior [ id ] = false;
	deklowaz [ id ] = false;
	flare [ id ] = true;
	druid [ id ] = false;
	strike_grenade [ id ] = false;
	strike_grenade2 [ id ] = false;
	strike_grenade3 [ id ] = false;
	super_knife_shop [ id ] = false;
	super_knife_shop2 [ id ] = false;
	UserHaveQuad [ id ] = false;
	UserHaveDragon [ id ] = false;
	
	HasChose[id] = false;
	HasPower[id] = 0;
	HE_Cooldown[id] = 0;
	GodMode_Cooldown[id] = 0;
	GodMode_DurationCooldown[id] = 0;
	Drop_Cooldown[id] = 0;
	Freeze_Cooldown[id] = 0;
	Drag_Cooldown[id] = 0;
	Not_Cooldown[id] = false;
	Teleport_Cooldown[id] = 0;
	
	UserHaveHeGrenade [ id ] = false;
	UserHaveGodMode [ id ] = false;
	UserHaveSuperKnife [ id ] = false;
	UserHaveNoClip [ id ] = false;
	UserHaveHpAndAp [ id ] = false;
	UserHaveDualMp5 [ id ] = false;
	UserHasChoosed [ id ] = false;
	
}

public client_putinserver ( id ) {
	
	LoadData ( id );
	LoadCredits ( id );
	RemoveStuff ( id );
	set_task ( 3.0, "ShowHud", id, _, _, "b" );
	
	client_cmd ( id, "cl_forwardspeed 9999" );
	client_cmd ( id, "cl_backspeed 9999" );
	client_cmd ( id, "cl_sidespeed 9999" );
}

public client_disconnect ( id ) {
	
	SaveData ( id );
	SaveCredits ( id );
	RemoveStuff ( id );
	
	g_has_k1ases[id] = false
	g_delay[id] = 0
	g_ammoclaw[id] = 0
	
}


public client_connect(id) {
	
	g_has_k1ases[id] = false
	g_delay[id] = 0
	g_ammoclaw[id] = 0
	
	static sName[32];
	get_user_name(id, sName, sizeof sName - 1);
	static sChars[32];
	get_pcvar_string(SymbolsName, sChars, sizeof sChars - 1);	
	for(new i = 0 ; i < strlen(sName) ; i++) {
		for(new j = 0 ; j < strlen(sChars) ; j++) {
			if(sName == sChars[j]) {
				server_cmd("kick #%d ^"Numele tau contine caractere nepermise.^"", get_user_userid(id));
				break;
			}
			else {
				LoadData ( id );
			}
		}
	}
	
	g_hasM79[id] = false
	g_canShoot[id] = false
	g_last_shot_time[id] = 0.0
	grenade_count[id] = 0
	hasOnHandM79[id] = false
	remove_icon(id)
}

public plugin_cfg ( ) {
	
	server_cmd("sv_maxspeed 99999999.0");
	server_cmd("sv_airaccelerate 99999999.0");
	
}

public plugin_natives ( ) {
	
	register_native ( "set_user_credits", "set_user_credits", 1 );
	register_native ( "get_user_credits", "get_user_credits", 1 );
	register_native ( "set_user_xp", "set_user_xp", 1 );
	register_native ( "set_user_level", "set_user_level", 1 );
	register_native ( "get_user_xp", "get_user_xp", 1 );
	register_native ( "set_user_xp", "get_user_xp", 1 );
	
	register_native("give_weapon_k1ases", "native_give_weapon_add", 1)
}

public plugin_precache ( ) {
	
	precache_model(v_model); // salamander
	precache_model(p_model); // salamander
	precache_model(w_model); // salamander
	precache_model(fire_spr_name); // salamander
	
	precache_sound(fire_sound); // salamander
	
	precache_sound("weapons/flamegun-1.wav"); // salamander
	precache_sound("weapons/flamegun_clipin1.wav"); // salamander
	precache_sound("weapons/flamegun_clipout1.wav"); // salamander
	precache_sound("weapons/flamegun_clipout2.wav"); // salamander
	precache_sound("weapons/flamegun_draw.wav"); // salamander
	
	precache_model ( katana_knife_v_model );
	precache_model ( double_katana_v_knife_model );
	precache_model ( super_knife_v_model );
	precache_model ( infinity_knife_v_model );
	precache_model ( axe_knife_v_model );
	precache_model ( ignes_knife_model );
	precache_model ( elf_knife_model );
	precache_model ( thompson_v_model );
	precache_model ( uspx_v_model );
	precache_model ( hunter_v_model );
	precache_model ( mage_v_model );
	precache_model ( rogue_v_model );
	precache_model ( shaman_v_model );
	precache_model ( warrior_v_model );
	precache_model ( deklowaz_v_model );
	precache_model ( trainer_v_model );
	precache_model ( flare_v_model );
	precache_model ( strike_grenade_v_model );
	precache_model ( super_knife_shop_v_model );
	precache_model ( super_knife_shop_v_model2 );
	
	precache_model ( katana_knife_p_model );
	precache_model ( double_katana_p_knife_model );
	precache_model ( super_knife_p_model );
	precache_model ( infinity_knife_p_model );
	precache_model ( axe_knife_p_model );
	precache_model ( strike_grenade_p_model );
	precache_model ( super_knife_shop_p_model2 );
	
	precache_model ( thompson_p_model );
	precache_model ( uspx_p_model );
	precache_model ( hunter_p_model );
	precache_model ( mage_p_model );
	precache_model ( rogue_p_model );
	precache_model ( shaman_p_model );
	precache_model ( warrior_p_model );
	precache_model ( deklowaz_p_model );
	precache_model ( trainer_p_model );
	
	precache_model ( flare_w_model );
	
	precache_model ( "models/player/furienxp/furienxp.mdl" );
	precache_model ( "models/player/furienxp2/furienxp2.mdl" );
	
	g_trail = precache_model ( "sprites/smoke.spr" );
	
	g_FurienHealth = precache_model("sprites/exhealth/health_zombie.spr") 
	g_AntiFurienHealth = precache_model("sprites/exhealth/health_human.spr") 
	precache_sound(buy_FurienHealth) 
	precache_sound(buy_AntiFurienHealth) 
	
	// POWERS
	
	precache_sound(DROP_HIT_SND);
	
	DropSprite = precache_model("sprites/lgtning.spr");
	DropSprite2 = precache_model("sprites/dropwpnexp.spr");
	
	precache_sound(DRAG_HIT_SND);
	precache_sound(DRAG_MISS_SND);
	DragSprite = precache_model("sprites/zbeam4.spr");
	
	
	new i;
	for (i = 0; i < sizeof FROSTBREAK_SND; i++)
		engfunc(EngFunc_PrecacheSound, FROSTBREAK_SND);
	for (i = 0; i < sizeof FROSTPLAYER_SND; i++)
		engfunc(EngFunc_PrecacheSound, FROSTPLAYER_SND);
	FreezeSprite = engfunc(EngFunc_PrecacheModel, FreezeSprite2);
	FreezeSprite3 = precache_model("sprites/laserbeam.spr");
	
	TeleportSprite = precache_model( "sprites/shockwave.spr");
	TeleportSprite2 = precache_model( "sprites/blueflare2.spr");
	TeleportSprite3 = precache_model( "sprites/teleport_start.spr");
	
	for (new i = 0; i < sizeof Model; i++)
		precache_model(Model)
	
	for (new i = 0; i < sizeof Model_Yellow; i++)
		precache_model(Model_Yellow)
	
	precache_model ( dual_mp5_v_model );
	precache_model ( dual_mp5_p_model );
	
	precache_model(k1ases_V_MODEL)
	precache_model(k1ases_P_MODEL)
	precache_model(k1ases_W_MODEL)
	precache_sound("weapons/k1ar-1.wav")
	precache_sound("weapons/k1a_clipin.wav")
	precache_sound("weapons/k1a_clipout.wav")
	precache_sound("weapons/k1a_draw.wav")
	precache_sound(explode_sound)
	m_iBlood[0] = precache_model("sprites/blood.spr")
	m_iBlood[1] = precache_model("sprites/bloodspray.spr")
	sprites_exp_index = precache_model(sprites_exp)
	precache_model("sprites/640hud5.spr")
	register_forward(FM_PrecacheEvent, "fwPrecacheEvent_Post", 1)
	
	g_damage = precache_model("sprites/furien/icon_supplybox2.spr")
	g_damages = precache_model("sprites/furien/zp_zbrespawn.spr")
	
	g_blood = precache_model("sprites/blood.spr")
	g_bloodspray = precache_model("sprites/bloodspray.spr")		
	
	precache_model(qb_v_model)
	precache_model(qb_p_model)
	precache_model(qb_w_model)
	
	for(new i = 0; i < sizeof(qb_sound); i++)
		precache_sound(qb_sound)
	
	
	new hades
	for(hades = 0; hades < sizeof(WeaponModel); hades++)
		engfunc(EngFunc_PrecacheModel, WeaponModel[hades])
	new ownage
	for(ownage = 0; ownage < sizeof(WeaponSound); ownage++)
		engfunc(EngFunc_PrecacheSound, WeaponSound[ownage])
	
	engfunc(EngFunc_PrecacheModel, WeaponResource[0])
	engfunc(EngFunc_PrecacheGeneric, WeaponResource[1])
	engfunc(EngFunc_PrecacheModel, WeaponResource[2])
	engfunc(EngFunc_PrecacheModel, WeaponResource[3])
	g_smokepuff_id = engfunc(EngFunc_PrecacheModel, WeaponResource[4])
	
	// Models
	precache_model(m79_P_MODEL)
	precache_model(m79_V_MODEL)
	precache_model(m79_W_MODEL)
	precache_model(m79_GRENADE_MODEL)
	
	// Sounds
	precache_sound(m79_GRENADE_SHOOT)
	precache_sound(m79_GRENADE_CLIPIN)
	precache_sound(m79_GRENADE_CLIPOUT)
	precache_sound(m79_GRENADE_CLIPON)
	precache_sound(m79_GRENADE_DRAW)
	precache_sound("weapons/357_cock1.wav")
	
	// Sprites
	sTrail = precache_model(m79_GRENADE_TRAIL)
	sExplo = precache_model(m79_GRENADE_EXPLOSION)
	sSmoke = precache_model(m79_GRENADE_SMOKE)
	
	// Bodyparts and blood
	blood_drop = precache_model("sprites/blood.spr")
	blood_spray = precache_model("sprites/bloodspray.spr")
	mdl_gib_flesh = precache_model("models/Fleshgibs.mdl")
	mdl_gib_head = precache_model("models/GIB_Skull.mdl")
	mdl_gib_lung = precache_model("models/GIB_Lung.mdl")
	mdl_gib_spine = precache_model("models/GIB_B_Bone.mdl")
	
	// Sprites
	precache_generic( "sprites/weapon_m79_sisa.txt" );
	precache_generic( "sprites/640hud42.spr" );
	precache_generic( "sprites/640hud42.spr" );
	precache_generic( "sprites/640hud7x.spr" );
	
	register_clcmd("weapon_m79_sisa", "Hook_Select")
	
}

public GameDesc( ) {
	
	static gamename[32]; 
	get_pcvar_string( amx_gamename, gamename, 31 ); 
	forward_return( FMV_STRING, gamename ); 
	return FMRES_SUPERCEDE; 
}

public cmdHelp ( id ) {
	
	show_motd ( id, "/addons/amxmodx/configs/ajutor.html" );
}

public cmdShowVipDetails ( id ) {
	
	show_motd ( id, "/addons/amxmodx/configs/vip.html" );
}

public ShowMessages ( ) {
	
	switch (random_num(1,6)) 
	{
		case 1:
		{
			ColorChat ( 0, GREEN, "%s Pentru detalii despre joc, scrieti in chat^4 /detalii^3 .^4", szPrefix );
		}
		
		case 2:
		{
			ColorChat ( 0, GREEN, "%s Daca nu va functioneaza puterea, scrieti in consola^4 bind v power^3 .^4", szPrefix );
		}
		
		case 3:
		{
			ColorChat ( 0, GREEN, "%s Pentru detalii despre VIP, scrieti in chat^4 /vip^3 .^4", szPrefix );
		}
		
		case 4:
		{
			ColorChat ( 0, GREEN, "%s Pentru a vedea vipii online, scrieti in chat^4 /vips^3 .^4", szPrefix );
		}
		
		case 5:
		{
			ColorChat ( 0, GREEN, "%s Va asteptam si pe forumul nostru,^4 http://www.kzh.ro^3 .^4", szPrefix );
		}
		
		case 6:
		{
			ColorChat ( 0, GREEN, "%s Daca descoperiti o eroare sau un bug, va rugam sa ne contactati .^4", szPrefix );
		}
	}
}

public set_user_credits ( id, credits ) {
	
	PlayerCredits [ id ] = credits;
	
}

public get_user_credits ( id ) {
	
	return PlayerCredits [ id ];
}

public set_user_level ( id, user_level ) {
	
	Level [ id ] = user_level;
}

public get_user_level ( id ) {
	
	return Level [ id ];
}

public set_user_xp ( id, xp ) {
	
	eXP [ id ] = xp;
	
	cmdRefreshXP2 ( id );
}

public get_user_xp ( id ) {
	
	return eXP [ id ];
	
}

public round_end ( id ) {
	
	remove_dragoncannon ( id );
	dual_mp5 [ id ] = false;
	k1ases_weapon [ id ] = false;
	salamander [ id ] = false;
	SalamanderLimit [ id ] = false;
	katana_knife [ id ] = false;
	double_katana_knife [ id ] = false;
	super_knife [ id ] = false;
	infinity_knife [ id ] = false;
	vip_axe_knife [ id ] = false;
	elf_knife [ id ] = false;
	ignes_knife [ id ] = false;
	trainer [ id ] = false;
	thompson [ id ] = false;
	uspx [ id ] = false;
	hunter [ id ] = false;
	shaman [ id ] = false;
	mage [ id ] = false;
	rogue [ id ] = false;
	warrior [ id ] = false;
	deklowaz [ id ] = false;
	druid [ id ] = false;
	strike_grenade [ id ] = false;
	strike_grenade2 [ id ] = false;
	strike_grenade3 [ id ] = false;
	HasPower[id] = 0;
	Drop_Cooldown[id] = 0;
	super_knife_shop [ id ] = false;
	super_knife_shop2 [ id ] = false;
	
	new g_iMaxPlayers = get_maxplayers ( );
	
	static Players;
	for ( Players = 1 ; Players <= g_iMaxPlayers ; Players++ )
	{
		if (!is_user_alive ( Players ) )
			continue;
		
		strip_user_weapons ( Players );
		set_pdata_int ( Players, 116, 0 );
		give_item ( Players, "weapon_knife" );
	}
	
}

public GiveBonus ( id ) {
	
	new a [ 6 ];
	
	get_time ( "%H:%M", a, 5 );
	
	if ( equal ( a, "10:00" ) || equal ( a, "12:00" ) || equal ( a, "16:00" ) || equal ( a, "20:00" ) || equal ( a, "23:00" ) ) {
		
		ColorChat ( 0, GREEN, "%s Este ora^4 bonusului^3, toti jucatorii au primit^4 5^5credite .", szPrefix );
		set_user_credits ( id, get_user_credits ( id ) + 5 );
	}
}

public round_start ( id ) {
	
	new iPlayers [ 32 ];
	new iNum;
	
	get_players ( iPlayers, iNum );
	
	for ( new i = 0; i < iNum; i++ )
	{
		g_iCount [ iPlayers [ i ] ] = 0;
		g_Menu [ iPlayers [ i ] ] = 0;
		g_had_qb [ iPlayers [ i ]] = 0;
		g_CanUseHe[iPlayers] = false;
	}
	
	dual_mp5 [ id ] = false;
	k1ases_weapon [ id ] = false;
	salamander [ id ] = false;
	SalamanderLimit [ id ] = false;
	katana_knife [ id ] = false;
	double_katana_knife [ id ] = false;
	super_knife [ id ] = false;
	infinity_knife [ id ] = false;
	elf_knife [ id ] = false;
	ignes_knife [ id ] = false;
	vip_axe_knife [ id ] = false;
	trainer [ id ] = false;
	thompson [ id ] = false;
	uspx [ id ] = false;
	hunter [ id ] = false;
	shaman [ id ] = false;
	mage [ id ] = false;
	rogue [ id ] = false;
	warrior [ id ] = false;
	deklowaz [ id ] = false;
	druid [ id ] = false;
	strike_grenade [ id ] = false;
	strike_grenade2 [ id ] = false;
	strike_grenade3 [ id ] = false;
	super_knife_shop [ id ] = false;
	super_knife_shop2 [ id ] = false;
	HasPower[id] = 0;
	Drop_Cooldown[id] = 0;
	
	if ( get_user_team ( id ) == 2 ) {
		give_item ( id, "weapon_smokegrenade" );
		cs_set_user_bpammo ( id, CSW_SMOKEGRENADE, 2 );
		flare [ id ] = true;
	}
	
	new ent = FM_NULLENT
	static string_class[] = "classname"
	while ((ent = engfunc(EngFunc_FindEntityByString, ent, string_class, ClassName))) 
		set_pev(ent, pev_flags, FL_KILLME)
	
	for(new id = 1; id < get_maxplayers();id++) {
		HasSpeed[id] = false
		HasTeleport[id] = false	
	}
}

public ham_PrimaryAttack_He ( iEnt ) {
	
	new id = pev( iEnt, pev_owner ); 
	
	if( g_CanUseHe [ id ] ) 
	{
		
		set_hudmessage( 0, 100, 200, -1.0, 0.35, 1, 0.01, 3.0, 1.0, 1.0 ); 
		show_hudmessage( id, "Bomba a fost plantata, nu mai poti folosi HE-urile" ); 
		
		return HAM_SUPERCEDE; 
	} 
	
	return HAM_IGNORED; 
	
}

public EventHLTV ( ) {
	
	set_task ( 0.1, "GiveBonus" );
}

public native_give_weapon_add(id)
{
	give_k1ases(id)
}

public fwPrecacheEvent_Post(type, const name[])
{
	if (equal("events/mp5n.sc", name))
	{
		g_orig_event_k1ases = get_orig_retval()
		return FMRES_HANDLED
	}
	
	return FMRES_IGNORED
}

public fw_TraceAttack(iEnt, iAttacker, Float:flDamage, Float:fDir[3], pentru, iDamageType)
{
	if(!is_user_alive(iAttacker))
		return;
	
	new g_currentweapon = get_user_weapon(iAttacker)
	if(g_currentweapon != CSW_MP5NAVY) return
	
	if((g_currentweapon == CSW_MP5NAVY && !g_has_k1ases[iAttacker])) return
	
	static Float:flEnd[3]
	get_tr2(pentru, TR_vecEndPos, flEnd)
	
	if(iEnt)
	{
		// Put decal on an entity
		message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
		write_byte(TE_DECAL)
		write_coord_f(flEnd[0])
		write_coord_f(flEnd[1])
		write_coord_f(flEnd[2])
		write_byte(GUNSHOT_DECALS[random_num ( 0, sizeof GUNSHOT_DECALS -1 ) ] )
		write_short(iEnt)
		message_end()
	}
	else
	{
		// Put decal on "world" (a wall)
		message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
		write_byte(TE_WORLDDECAL)
		write_coord_f(flEnd[0])
		write_coord_f(flEnd[1])
		write_coord_f(flEnd[2])
		write_byte(GUNSHOT_DECALS[random_num ( 0, sizeof GUNSHOT_DECALS -1 ) ] )
		message_end()
	}
	
	// Show sparcles
	message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
	write_byte(TE_GUNSHOTDECAL)
	write_coord_f(flEnd[0])
	write_coord_f(flEnd[1])
	write_coord_f(flEnd[2])
	write_short(iAttacker)
	write_byte(GUNSHOT_DECALS[random_num ( 0, sizeof GUNSHOT_DECALS -1 ) ] )
	message_end()
}

public fwClientUserInfoChanged(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, g_name, val, sizeof val - 1)
	if (equal(val, name))
		return FMRES_IGNORED;
	
	engfunc(EngFunc_SetClientKeyValue, id, buffer, g_name, name)
	console_print ( id, "%s", g_reason );
	
	return FMRES_SUPERCEDE;
}

public SalamanderGiveItem(id, itemid)
{
	if(itemid == g_salamander)
	{
		g_had_salamander[id] = true
		is_reloading[id] = false
		is_firing[id] = false
		can_fire[id] = true
		
		fm_give_item(id, "weapon_m249")
		g_ammo[id] = 30
		cs_set_user_bpammo ( id, CSW_M249, 20 );
	}
}

public get_dragoncannon(id)
{
	if(!is_user_alive(id))
		return
	
	drop_weapons(id, 1)
	
	g_had_cannon[id] = 1
	g_cannon_ammo[id] = get_pcvar_num(g_cvar_defaultammo)
	fm_give_item(id, weapon_cannon)
}

public remove_dragoncannon(id)
{
	if(!is_user_connected(id))
		return
	
	g_had_cannon[id] = 0
	g_got_firsttime[id] = 0
	g_cannon_ammo[id] = 0
	
	remove_task(id+TASK_RESET_AMMO)
}

public hook_weapon(id) engclient_cmd(id, weapon_cannon)

public event_CurWeapon_dragon(id)
{
	if(!is_user_alive(id))
		return
	
	if(get_user_weapon(id) == CSW_CANNON && g_had_cannon[id])
	{
		if(!g_got_firsttime[id])
		{
			static cannon_weapon
			cannon_weapon = fm_find_ent_by_owner(-1, weapon_cannon, id)
			
			if(pev_valid(cannon_weapon)) cs_set_weapon_ammo(cannon_weapon, 25)
			g_got_firsttime[id] = 1
		}
		
		set_pev(id, pev_viewmodel2, WeaponModel[MODEL_V])
		set_pev(id, pev_weaponmodel2, WeaponModel[MODEL_P])
		
		if(g_old_weapon[id] != CSW_CANNON)
		{
			g_temp_reloadtime = get_pcvar_float(g_cvar_reloadtime)
			set_weapon_anim(id, CANNON_ANIM_DRAW)
		}
		
		update_ammo(id)
	}
	
	g_old_weapon[id] = get_user_weapon(id)
}


public dragoncannon_shoothandle(id)
{
	if(pev(id, pev_weaponanim) != CANNON_ANIM_IDLE)
		return
	
	if(get_gametime() - g_temp_reloadtime > g_lastshot[id])
	{
		dragoncannon_shootnow(id)
		g_lastshot[id] = get_gametime()
	}
}

public dragoncannon_shootnow(id)
{
	if(g_cannon_ammo[id] == 1)
	{
		set_task(0.5, "set_weapon_outofammo", id+TASK_RESET_AMMO)
	}
	if(g_cannon_ammo[id] <= 0)
	{
		return
	}
	
	create_fake_attack(id)
	
	g_cannon_ammo[id]--
	
	set_weapon_anim(id, random_num(CANNON_ANIM_SHOOT1, CANNON_ANIM_SHOOT2))
	emit_sound(id, CHAN_WEAPON, WeaponSound[0], 1.0, ATTN_NORM, 0, PITCH_NORM)
	
	set_player_nextattack(id, CSW_CANNON, g_temp_reloadtime)
	update_ammo(id)
	
	make_fire_effect(id)
	make_fire_smoke(id)
	check_radius_damage(id)
}

public create_fake_attack(id)
{
	static cannon_weapon
	cannon_weapon = fm_find_ent_by_owner(-1, "weapon_knife", id)
	
	if(pev_valid(cannon_weapon)) ExecuteHam(Ham_Weapon_PrimaryAttack, cannon_weapon)	
}

public set_weapon_outofammo(id)
{
	id -= TASK_RESET_AMMO
	if(!is_user_alive(id))
		return
	if(get_user_weapon(id) != CSW_CANNON || !g_had_cannon[id])
		return
	
	set_weapon_anim(id, CANNON_ANIM_IDLE)
}

public make_fire_effect(id)
{
	const MAX_FIRE = 10
	static Float:Origin[MAX_FIRE][3]
	
	// Stage 1
	get_position(id, 30.0, 50.0, WEAPON_ATTACH_U, Origin[0])
	get_position(id, 30.0, 40.0, WEAPON_ATTACH_U, Origin[1])
	get_position(id, 30.0, -40.0, WEAPON_ATTACH_U, Origin[2])
	get_position(id, 30.0, -50.0, WEAPON_ATTACH_U, Origin[2])
	
	// Stage 2
	get_position(id, 50.0, 30.0, WEAPON_ATTACH_U, Origin[3])
	get_position(id, 50.0, 0.0, WEAPON_ATTACH_U, Origin[4])
	get_position(id, 50.0, -30.0, WEAPON_ATTACH_U, Origin[5])
	
	// Stage 3
	get_position(id, 70.0, 20.0, WEAPON_ATTACH_U, Origin[3])
	get_position(id, 70.0, -20.0, WEAPON_ATTACH_U, Origin[5])	
	
	// Stage 4
	get_position(id, 90.0, 0.0, WEAPON_ATTACH_U, Origin[4])
	
	for(new i = 0; i < MAX_FIRE; i++)
		create_fire(id, Origin[i])
}

public create_fire(id, Float:Origin[3])
{
	new iEnt = create_entity("env_sprite")
	static Float:vfAngle[3], Float:MyOrigin[3], Float:TargetOrigin[3], Float:Velocity[3]
	
	pev(id, pev_angles, vfAngle)
	pev(id, pev_origin, MyOrigin)
	
	vfAngle[2] = float(random(18) * 20)
	
	// set info for ent
	set_pev(iEnt, pev_movetype, MOVETYPE_PUSHSTEP)
	set_pev(iEnt, pev_rendermode, kRenderTransAdd)
	set_pev(iEnt, pev_renderamt, 250.0)
	set_pev(iEnt, pev_fuser1, get_gametime() + 2.5)	// time remove
	set_pev(iEnt, pev_scale, 2.0)
	set_pev(iEnt, pev_nextthink, halflife_time() + 0.05)
	
	entity_set_string(iEnt, EV_SZ_classname, CANNONFIRE_CLASSNAME)
	engfunc(EngFunc_SetModel, iEnt, WeaponResource[0])
	set_pev(iEnt, pev_mins, Float:{-5.0, -5.0, -5.0})
	set_pev(iEnt, pev_maxs, Float:{5.0, 5.0, 5.0})
	set_pev(iEnt, pev_origin, Origin)
	set_pev(iEnt, pev_gravity, 0.01)
	set_pev(iEnt, pev_angles, vfAngle)
	set_pev(iEnt, pev_solid, 1)
	set_pev(iEnt, pev_owner, id)	
	set_pev(iEnt, pev_frame, 0.0)
	
	// Set Velocity
	get_position(id, 100.0, 0.0, -5.0, TargetOrigin)
	
	get_speed_vector(MyOrigin, TargetOrigin, get_pcvar_float(g_cvar_firespeed), Velocity)
	set_pev(iEnt, pev_velocity, Velocity)
}

public fw_Cannon_Think(iEnt)
{
	if(!pev_valid(iEnt)) 
		return
	
	new Float:fFrame, Float:fNextThink
	pev(iEnt, pev_frame, fFrame)
	
	// effect exp
	new iMoveType = pev(iEnt, pev_movetype)
	if (iMoveType == MOVETYPE_NONE)
	{
		fNextThink = 0.0015
		fFrame += 0.5
		
		if (fFrame > 21.0)
		{
			engfunc(EngFunc_RemoveEntity, iEnt)
			return
		}
	}
	
	// effect normal
	else
	{
		fNextThink = 0.045
		fFrame += 0.5
		fFrame = floatmin(21.0, fFrame)
	}
	
	set_pev(iEnt, pev_frame, fFrame)
	set_pev(iEnt, pev_nextthink, halflife_time() + fNextThink)
	
	// time remove
	new Float:fTimeRemove
	pev(iEnt, pev_fuser1, fTimeRemove)
	if (get_gametime() >= fTimeRemove)
	{
		engfunc(EngFunc_RemoveEntity, iEnt)
		return;
	}
}

public fw_Cannon_Touch(ent, id)
{
	if(!pev_valid(ent))
		return
	
	set_pev(ent, pev_movetype, MOVETYPE_NONE)
	set_pev(ent, pev_solid, SOLID_NOT)
}

public make_fire_smoke(id)
{
	static Float:Origin[3]
	get_position(id, WEAPON_ATTACH_F, WEAPON_ATTACH_R, WEAPON_ATTACH_U, Origin)
	
	message_begin(MSG_BROADCAST, SVC_TEMPENTITY) 
	write_byte(TE_EXPLOSION) 
	engfunc(EngFunc_WriteCoord, Origin[0])
	engfunc(EngFunc_WriteCoord, Origin[1])
	engfunc(EngFunc_WriteCoord, Origin[2])
	write_short(g_smokepuff_id) 
	write_byte(10)
	write_byte(30)
	write_byte(14)
	message_end()
}

public update_ammo(id)
{
	if(!is_user_alive(id))
		return
	
	message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("CurWeapon"), _, id)
	write_byte(1)
	write_byte(CSW_CANNON)
	write_byte(-1)
	message_end()
	
	message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("AmmoX"), _, id)
	write_byte(6)
	write_byte(g_cannon_ammo[id])
	message_end()
}

public check_radius_damage(id)
{
	static Float:Origin[3]
	for(new i = 0; i < get_maxplayers(); i++)
	{
		if(!is_user_alive(i))
			continue
		if(cs_get_user_team(id) == cs_get_user_team(i))
			continue
		if(id == i)
			continue
		pev(i, pev_origin, Origin)
		if(!is_in_viewcone(id, Origin, 1))
			continue
		if(entity_range(id, i) >= get_pcvar_float(g_cvar_radiusdamage))
			continue
		
		ExecuteHamB(Ham_TakeDamage, i, 0, id, get_pcvar_float(g_cvar_damage), DMG_BURN)
	}
}

public fw_UpdateClientData_Post_dc(id, sendweapons, cd_handle)
{
	if(!is_user_alive(id) || !is_user_connected(id))
		return FMRES_IGNORED
	if(get_user_weapon(id) != CSW_CANNON || !g_had_cannon[id])
		return FMRES_IGNORED
	
	set_cd(cd_handle, CD_flNextAttack, get_gametime() + 0.001) 
	
	return FMRES_HANDLED
}

public fw_CmdStart_dc(id, uc_handle, seed)
{
	if(!is_user_alive(id) || !is_user_connected(id))
		return FMRES_IGNORED
	if(get_user_weapon(id) != CSW_CANNON || !g_had_cannon[id])
		return FMRES_IGNORED
	
	static CurButton
	CurButton = get_uc(uc_handle, UC_Buttons)
	
	if(CurButton & IN_ATTACK)
	{
		CurButton &= ~IN_ATTACK
		set_uc(uc_handle, UC_Buttons, CurButton)
		
		dragoncannon_shoothandle(id)
	}
	
	return FMRES_HANDLED
}

public fw_SetModel_dc(entity, model[])
{
	if(!pev_valid(entity))
		return FMRES_IGNORED
	
	static szClassName[33]
	pev(entity, pev_classname, szClassName, charsmax(szClassName))
	
	if(!equal(szClassName, "weaponbox"))
		return FMRES_IGNORED
	
	static id
	id = pev(entity, pev_owner)
	
	if(equal(model, DEFAULT_W_MODEL))
	{
		static weapon
		weapon = fm_find_ent_by_owner(-1, weapon_cannon, entity)
		
		if(!pev_valid(weapon))
			return FMRES_IGNORED
		
		if(g_had_cannon[id])
		{
			set_pev(weapon, pev_impulse, WEAPON_SECRET_CODE)
			set_pev(weapon, pev_ammo, g_cannon_ammo[id])
			
			engfunc(EngFunc_SetModel, entity, WeaponModel[MODEL_W])
			remove_dragoncannon(id)
			
			return FMRES_SUPERCEDE
		}
	}
	
	return FMRES_IGNORED
}

public fw_Spawn_Post(id)
{
	remove_dragoncannon(id)
}

public fw_AddToPlayer_Post(ent, id)
{
	if(!pev_valid(ent))
		return HAM_IGNORED
	
	if(pev(ent, pev_impulse) == WEAPON_SECRET_CODE)
	{
		remove_dragoncannon(id)
		
		g_had_cannon[id] = 1
		g_got_firsttime[id] = 0
		g_cannon_ammo[id] = pev(ent, pev_ammo)
	}
	
	message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("WeaponList"), _, id)
	write_string(g_had_cannon[id] == 1 ? "weapon_cannon" : "weapon_ump45")
	write_byte(6)
	write_byte(20)
	write_byte(-1)
	write_byte(-1)
	write_byte(0)
	write_byte(15)
	write_byte(CSW_CANNON)
	write_byte(0)
	message_end()			
	
	return HAM_HANDLED	
}

public fw_item_postframe(ent)
{
	if(!is_valid_ent(ent))
		return HAM_IGNORED
	
	static id
	id = pev(ent, pev_owner)
	
	if(!is_user_alive(id) || !is_user_connected(id))
		return HAM_IGNORED
	
	if(get_user_weapon(id) != CSW_SALAMANDER || !g_had_salamander[id])
		return HAM_IGNORED
	
	if(!is_reloading[id])
	{
		static iAnim
		iAnim = pev(id, pev_weaponanim)
		
		if(iAnim == RELOAD_ANIM)
			play_weapon_anim(id, IDLE_ANIM)
	}
	
	static salamander
	salamander = fm_find_ent_by_class(-1, "weapon_m249")
	
	set_pdata_int(salamander, 54, 0, 4)
	
	return HAM_HANDLED
}

public fw_item_addtoplayer(ent, id)
{
	if(!is_valid_ent(ent))
		return HAM_IGNORED
	
	if(entity_get_int(ent, EV_INT_impulse) == 701)
	{
		g_had_salamander[id] = true
		g_ammo[id] = pev(ent, pev_iuser3)
		entity_set_int(id, EV_INT_impulse, 0)
		
		play_weapon_anim(id, DRAW_ANIM)
		set_task(1.0, "make_wpn_canfire", id)
		
		return HAM_HANDLED
	}		
	
	return HAM_HANDLED
}

public Round_Restart ( ) {
	
	g_FuriensWin = 0;
	g_AntiFuriensWin = 0;
}

public UpdateHudScore ( ) { 
	
	set_dhudmessage ( 0, 100, 200, -1.0, 0.04, 0, 6.0, 10.1 );
	show_dhudmessage ( 0, "[ FR ] - vs - [ AF ]" );
	
	set_hudmessage ( 213, 0, 0, -1.0, 0.07, 0, 6.0, 10.1 );
	show_hudmessage ( 0, "%d - %d", g_FuriensWin, g_AntiFuriensWin );
} 

public check_lastinv(id)
{
	if(!is_user_alive(id) || !is_user_connected(id))
		return PLUGIN_HANDLED
	
	if(get_user_weapon(id) == CSW_SALAMANDER && g_had_salamander[id])
	{
		set_task(0.5, "start_check_draw", id)
	}
	
	return PLUGIN_CONTINUE
}

public start_check_draw(id)
{
	if(can_fire[id])
		can_fire[id] = false
}

public event_curweapon(id)
{
	if(is_user_alive(id) && get_user_weapon(id) == CSW_SALAMANDER && g_had_salamander[id] )
	{
		set_pev(id, pev_viewmodel2, v_model)
		set_pev(id, pev_weaponmodel2, p_model)
	}
}

public fw_weapon_deploy(ent)
{
	static id
	id = pev(ent, pev_owner)
	
	if(!is_user_alive(id) || !is_user_connected(id) )
		return HAM_IGNORED
	
	if(!g_had_salamander[id])
		return HAM_IGNORED
	
	can_fire[id] = false
	
	play_weapon_anim(id, DRAW_ANIM)
	set_task(1.0, "make_wpn_canfire", id)
	
	return HAM_HANDLED
}

public make_wpn_canfire(id)
{
	can_fire[id] = true
}

public fw_weapon_reload(ent)
{
	static id
	id = pev(ent, pev_owner)
	
	if(!is_user_alive(id) || !is_user_connected(id) )
		return HAM_IGNORED
	
	if(get_user_weapon(id) != CSW_SALAMANDER && !g_had_salamander[id])
		return HAM_IGNORED
	
	return HAM_SUPERCEDE
}

public client_PostThink(id)
{
	if(is_user_alive(id) && is_user_connected(id))
	{
		if(g_had_salamander[id] && get_user_weapon(id) != CSW_SALAMANDER)
		{
			if(can_fire[id])
				can_fire[id] = false
			
			if(is_reloading[id])
			{
				is_reloading[id] = false
				if(task_exists(id+TASK_RELOAD)) remove_task(id+TASK_RELOAD)
			}			
			} else if(g_had_salamander[id] && get_user_weapon(id) == CSW_SALAMANDER) {
			static salamander
			salamander = fm_get_user_weapon_entity(id, CSW_M249)
			
			cs_set_weapon_ammo(salamander, g_ammo[id])
		}
	}
	
}

public fw_SetModel(entity, model[])
{
	if(!is_valid_ent(entity))
		return FMRES_IGNORED;
	
	static szClassName[33]
	entity_get_string(entity, EV_SZ_classname, szClassName, charsmax(szClassName))
	
	if(!equal(szClassName, "weaponbox"))
		return FMRES_IGNORED;
	
	static iOwner
	iOwner = entity_get_edict(entity, EV_ENT_owner)
	
	if(equal(model, "models/w_m249.mdl"))
	{
		static iStoredAugID
		iStoredAugID = find_ent_by_owner(-1, "weapon_m249", entity)
		
		if(!is_valid_ent(iStoredAugID))
			return FMRES_IGNORED;
		
		if(g_had_salamander[iOwner])
		{
			entity_set_int(iStoredAugID, EV_INT_impulse, 701)
			g_had_salamander[iOwner] = false
			set_pev(iStoredAugID, pev_iuser3, g_ammo[iOwner])
			entity_set_model(entity, w_model)
			
			return FMRES_SUPERCEDE;
		}
	}
	
	return FMRES_IGNORED;
}

public fw_UpdateClientData_Post(id, sendweapons, cd_handle)
{
	if(!is_user_alive(id) || !is_user_connected(id) )
		return FMRES_IGNORED
	
	if(get_user_weapon(id) != CSW_SALAMANDER || !g_had_salamander[id])
		return FMRES_IGNORED
	
	set_cd(cd_handle, CD_flNextAttack, halflife_time() + 0.001)  
	
	return FMRES_HANDLED
}

public fw_cmdstart(id, uc_handle, seed)
{
	if(!is_user_alive(id) || !is_user_connected(id))
		return FMRES_IGNORED
	
	if(get_user_weapon(id) != CSW_SALAMANDER || !g_had_salamander[id])
		return FMRES_IGNORED
	
	static Button
	Button = get_uc(uc_handle, UC_Buttons)
	
	if(Button & IN_ATTACK)
	{
		if((get_gametime() - get_pcvar_float(cvar_fire_delay) > g_last_fire[id]))
		{
			if(can_fire[id] && !is_reloading[id])
			{
				if(g_ammo[id] > 0)
				{
					if(pev(id, pev_weaponanim) != SHOOT_ANIM)
						play_weapon_anim(id, SHOOT_ANIM)
					
					if(task_exists(id+TASK_FIRE)) remove_task(id+TASK_FIRE)
					is_firing[id] = true
					throw_fire(id)
					emit_sound(id, CHAN_WEAPON, "weapons/flamegun-2.wav", 1.0, ATTN_NORM, 0, PITCH_NORM)
					g_ammo[id]--
				}
				
			}
			g_last_fire[id] = get_gametime()
		}
		} else {
		if(is_firing[id])
		{
			if(!task_exists(id+TASK_FIRE))
			{
				set_task(0.1, "stop_fire", id+TASK_FIRE)
				emit_sound(id, CHAN_WEAPON, "weapons/flamegun-2.wav", 1.0, ATTN_NORM, 0, PITCH_NORM)
			}
		}
		
	}
	
	if(Button & IN_RELOAD)
	{
		if(!is_reloading[id] && !is_firing[id])
		{
			static curammo, require_ammo, bpammo
			
			curammo = g_ammo[id]
			bpammo = cs_get_user_bpammo(id, CSW_SALAMANDER)
			require_ammo = get_pcvar_num(cvar_max_clip) - curammo
			
			if(bpammo > require_ammo)
			{
				g_reload_ammo[id] = require_ammo
				} else {
				g_reload_ammo[id] = bpammo
			}
			
			if(g_ammo[id] < get_pcvar_num(cvar_max_clip) && bpammo > 0)
			{
				is_reloading[id] = true
				play_weapon_anim(id, RELOAD_ANIM)
				
				set_task(5.0, "finish_reload", id+TASK_RELOAD)
			}
		}
	}
	
	Button &= ~IN_ATTACK
	set_uc(uc_handle, UC_Buttons, Button)
	
	Button &= ~IN_RELOAD
	set_uc(uc_handle, UC_Buttons, Button)
	
	return FMRES_HANDLED
}

public ham_player_kill(victim, attacker, corpse, args[])
{
	
	
	
	if ( get_user_team ( victim ) == 1 ) {
		
		new vVictimOrigin[3], vAttackerorigin[3]; 
		get_user_origin( victim, vVictimOrigin ); 
		get_user_origin( attacker, vAttackerorigin ); 
		
		switch (random_num(0, 2))
		{
			case 0:
			{
				
				message_begin(MSG_ONE,SVC_TEMPENTITY,{0,0,0},attacker)
				
				write_byte(TE_SPRITETRAIL)
				write_coord(vAttackerorigin[0]) 
				write_coord(vAttackerorigin[1]) 
				write_coord(vAttackerorigin[2]) 
				write_coord(vVictimOrigin[0]) 
				write_coord(vVictimOrigin[1]) 
				write_coord(vVictimOrigin[2]) 
				write_short(g_damage) 
				write_byte(5) 
				write_byte(15) 
				write_byte(3) 
				write_byte(2) 
				write_byte(6) 
				message_end()
			}
			case 1:
			{
				message_begin(MSG_ONE,SVC_TEMPENTITY,{0,0,0},attacker)
				
				write_byte(TE_SPRITETRAIL)
				write_coord(vAttackerorigin[0]) 
				write_coord(vAttackerorigin[1]) 
				write_coord(vAttackerorigin[2]) 
				write_coord(vVictimOrigin[0]) 
				write_coord(vVictimOrigin[1]) 
				write_coord(vVictimOrigin[2]) 
				write_short(g_damages) 
				write_byte(5) 
				write_byte(15) 
				write_byte(3) 
				write_byte(2) 
				write_byte(6) 
				message_end()
			}
		}	
	}
}

public fw_CmdStart(id, uc_handle, seed)
{
	if(id > 32)
		return PLUGIN_HANDLED
	
	if(!is_user_alive(id) ) 
		return PLUGIN_HANDLED
	
	if((get_uc(uc_handle, UC_Buttons) & IN_ATTACK2) && !(pev(id, pev_oldbuttons) & IN_ATTACK2))
	{
		new szClip, szAmmo
		new szWeapID = get_user_weapon(id, szClip, szAmmo)
		if(szWeapID == CSW_MP5NAVY && g_has_k1ases[id])
		{
			weapon_ability(id)
		}
		
	}
	
	return PLUGIN_HANDLED
}

public weapon_ability(id)
{
	if(!is_user_alive(id) || g_ammoclaw[id] <= 0 || g_delay[id])
		return;
	
	set_pdata_float(id, m_flNextAttack, 1.0, PLAYER_LINUX_XTRA_OFF)
	UTIL_PlayWeaponAnimation(id, 6)
	
	new aimOrigin[3]
	get_user_origin(id, aimOrigin, 3)
	
	message_begin(MSG_BROADCAST,SVC_TEMPENTITY); 
	write_byte(TE_EXPLOSION); // TE_EXPLOSION
	write_coord(aimOrigin[0]); // origin x
	write_coord(aimOrigin[1]); // origin y
	write_coord(aimOrigin[2]); // origin z
	write_short(sprites_exp_index); // sprites
	write_byte(40); // scale in 0.1's
	write_byte(30); // framerate
	write_byte(14); // flags 
	message_end(); // message end
	
	
	new Float:aimOrigin2[3]
	
	static iVictim
	iVictim = -1
	
	aimOrigin2[0] = float(aimOrigin[0])
	aimOrigin2[1] = float(aimOrigin[1])
	aimOrigin2[2] = float(aimOrigin[2])
	
	while((iVictim = find_ent_in_sphere(iVictim, aimOrigin2, get_pcvar_float(cvar_rad))) != 0)
	{
		// Non-player entity
		if(is_user_connected(iVictim))
		{
			if(is_user_alive(iVictim)) radius_damage1(id,iVictim)
		}
	}
	
	g_ammoclaw[id] -= 1
	g_delay[id] = 1
	set_task(float(get_pcvar_num(cvar_k1ases_delay)),"can_use",id)
	client_print(id,print_center,"[Claw Ammo: %d]",g_ammoclaw[id])
	emit_sound(id, CHAN_WEAPON,explode_sound, VOL_NORM, ATTN_NORM, 0, PITCH_NORM)
	
}
public radius_damage1(iAttacker, iVictim)
{
	ExecuteHamB(Ham_TakeDamage, iVictim , iAttacker , iAttacker, get_pcvar_float(cvar_k1ases_claw), DMG_BULLET);
}
public can_use(id)
{
	g_delay[id] = 0
}
public fw_SetModel_k1asus(entity, model[])
{
	if(!is_valid_ent(entity))
		return FMRES_IGNORED;
	
	static szClassName[33]
	entity_get_string(entity, EV_SZ_classname, szClassName, charsmax(szClassName))
	
	if(!equal(szClassName, "weaponbox"))
		return FMRES_IGNORED;
	
	static iOwner
	
	iOwner = entity_get_edict(entity, EV_ENT_owner)
	
	if(equal(model, "models/w_mp5.mdl"))
	{
		static iStoredSVDID
		
		iStoredSVDID = find_ent_by_owner(ENG_NULLENT, "weapon_mp5navy", entity)
		
		if(!is_valid_ent(iStoredSVDID))
			return FMRES_IGNORED;
		
		if(g_has_k1ases[iOwner])
		{
			entity_set_int(iStoredSVDID, EV_INT_WEAPONKEY, k1ases_WEAPONKEY)
			g_has_k1ases[iOwner] = false
			g_delay[iOwner] = 0
			
			entity_set_model(entity, k1ases_W_MODEL)
			
			return FMRES_SUPERCEDE;
		}
	}
	
	
	return FMRES_IGNORED;
}

public give_k1ases(id)
{
	drop_weapons(id, 1);
	oldweap[id] = CSW_KNIFE
	new iWep2 = give_item(id,"weapon_mp5navy")
	if( iWep2 > 0 )
	{
		cs_set_weapon_ammo(iWep2, get_pcvar_num(cvar_clip_k1ases))
		cs_set_user_bpammo (id, CSW_MP5NAVY, get_pcvar_num(cvar_k1ases_ammo))
	}
	UTIL_PlayWeaponAnimation(id, 2)
	set_pdata_float(id, m_flNextAttack, 1.5, PLAYER_LINUX_XTRA_OFF)
	g_has_k1ases[id] = true;
	g_ammoclaw[id] = get_pcvar_num(cvar_k1asesammo )
	client_print(id,print_center,"[Claw Ammo: %d]",g_ammoclaw[id])
	
}

public fw_k1ases_AddToPlayer(k1ases, id)
{
	if(!is_valid_ent(k1ases) || !is_user_connected(id))
		return HAM_IGNORED;
	
	if(entity_get_int(k1ases, EV_INT_WEAPONKEY) == k1ases_WEAPONKEY)
	{
		g_has_k1ases[id] = true
		
		entity_set_int(k1ases, EV_INT_WEAPONKEY, 0)
		
		return HAM_HANDLED;
	}
	
	return HAM_IGNORED;
}

public fw_UseStationary_Post(entity, caller, activator, use_type)
{
	if (use_type == USE_STOPPED && is_user_connected(caller))
		replace_weapon_models(caller, get_user_weapon(caller))
}

public fw_Item_Deploy_Post(weapon_ent)
{
	static owner
	owner = fm_cs_get_weapon_ent_owner(weapon_ent)
	
	static weaponid
	weaponid = cs_get_weapon_id(weapon_ent)
	
	replace_weapon_models(owner, weaponid)
}

public CurrentWeapon(id)
{
	replace_weapon_models(id, read_data(2))
}

replace_weapon_models(id, weaponid) {
	switch (weaponid)
	{
		case CSW_MP5NAVY:
		{
			
			if(g_has_k1ases[id])
			{
				set_pev(id, pev_viewmodel2, k1ases_V_MODEL)
				set_pev(id, pev_weaponmodel2, k1ases_P_MODEL)
				if(oldweap[id] != CSW_MP5NAVY) 
				{
					UTIL_PlayWeaponAnimation(id, 2)
					set_pdata_float(id, m_flNextAttack, 1.5, PLAYER_LINUX_XTRA_OFF)
				}
				
			}
		}
	}
	oldweap[id] = weaponid
}

public fw_UpdateClientData_Post_k1asus(Player, SendWeapons, CD_Handle) {
	if(!is_user_alive(Player) || (get_user_weapon(Player) != CSW_MP5NAVY) || !g_has_k1ases[Player])
		return FMRES_IGNORED
	
	set_cd(CD_Handle, CD_flNextAttack, halflife_time () + 0.001)
	return FMRES_HANDLED
}

public fw_k1ases_PrimaryAttack(Weapon)
{
	new Player = get_pdata_cbase(Weapon, 41, 4)
	
	if (!g_has_k1ases[Player])
		return;
	
	pev(Player,pev_punchangle,cl_pushangle_k1asus[Player])
	
	g_clip_ammo[Player] = cs_get_weapon_ammo(Weapon)
}

public fwPlaybackEvent(flags, invoker, eventid, Float:delay, Float:origin[3], Float:angles[3], Float:fparam1, Float:fparam2, iParam1, iParam2, bParam1, bParam2)
{
	if ((eventid != g_orig_event_k1ases))
		return FMRES_IGNORED
	if (!(1 <= invoker <= g_MaxPlayers))
		return FMRES_IGNORED
	
	playback_event(flags | FEV_HOSTONLY, invoker, eventid, delay, origin, angles, fparam1, fparam2, iParam1, iParam2, bParam1, bParam2)
	return FMRES_SUPERCEDE
}

public fw_k1ases_PrimaryAttack_Post(Weapon)
{
	new Player = get_pdata_cbase(Weapon, 41, 4)
	
	new szClip, szAmmo
	get_user_weapon(Player, szClip, szAmmo)
	if(Player > 0 && Player < 33)
	{
		//if(!g_has_k1ases[Player])
		//{
		//if(szClip > 0) emit_sound(Player, CHAN_WEAPON, "weapons/famas-1.wav", VOL_NORM, ATTN_NORM, 0, PITCH_NORM)
		//}
		if(g_has_k1ases[Player])
		{
			new Float:push[3]
			pev(Player,pev_punchangle,push)
			xs_vec_sub(push,cl_pushangle_k1asus[Player],push)
			
			xs_vec_mul_scalar(push,get_pcvar_float(cvar_recoil_k1ases),push)
			xs_vec_add(push,cl_pushangle_k1asus[Player],push)
			set_pev(Player,pev_punchangle,push)
			
			if (!g_clip_ammo[Player])
				return
			
			emit_sound(Player, CHAN_WEAPON, Fire_Sounds[0], VOL_NORM, ATTN_NORM, 0, PITCH_NORM)
			UTIL_PlayWeaponAnimation(Player, 3)
			set_pdata_float(Player, m_flNextAttack, get_pcvar_float(cvar_k1ases_fire), PLAYER_LINUX_XTRA_OFF)
		}
	}
}

public fw_TakeDamage(victim, inflictor, attacker, Float:damage)
{
	if (victim != attacker && is_user_connected(attacker))
	{
		if(get_user_weapon(attacker) == CSW_MP5NAVY)
		{
			if(g_has_k1ases[attacker])
				SetHamParamFloat(4, damage * get_pcvar_float(cvar_dmg_k1ases))
		}
	}
}

public message_DeathMsg(msg_id, msg_dest, id)
{
	static szTruncatedWeapon[33], iAttacker, iVictim
	
	get_msg_arg_string(4, szTruncatedWeapon, charsmax(szTruncatedWeapon))
	
	iAttacker = get_msg_arg_int(1)
	iVictim = get_msg_arg_int(2)
	
	if(!is_user_connected(iAttacker) || iAttacker == iVictim)
		return PLUGIN_CONTINUE
	
	if(equal(szTruncatedWeapon, "famas") && get_user_weapon(iAttacker) == CSW_MP5NAVY)
	{
		if(g_has_k1ases[iAttacker])
			set_msg_arg_string(4, "famas")
	}
	
	return PLUGIN_CONTINUE
}

public k1ases__ItemPostFrame(weapon_entity) {
	new id = pev(weapon_entity, pev_owner)
	if (!is_user_connected(id))
		return HAM_IGNORED;
	
	if (!g_has_k1ases[id])
		return HAM_IGNORED;
	
	new Float:flNextAttack = get_pdata_float(id, m_flNextAttack, PLAYER_LINUX_XTRA_OFF)
	
	new iBpAmmo = cs_get_user_bpammo(id, CSW_MP5NAVY);
	new iClip = get_pdata_int(weapon_entity, m_iClip, WEAP_LINUX_XTRA_OFF)
	
	new fInReload = get_pdata_int(weapon_entity, m_fInReload, WEAP_LINUX_XTRA_OFF) 
	
	if( fInReload && flNextAttack <= 0.0 )
	{
		new j = min(get_pcvar_num(cvar_clip_k1ases) - iClip, iBpAmmo)
		
		set_pdata_int(weapon_entity, m_iClip, iClip + j, WEAP_LINUX_XTRA_OFF)
		cs_set_user_bpammo(id, CSW_MP5NAVY, iBpAmmo-j);
		
		set_pdata_int(weapon_entity, m_fInReload, 0, WEAP_LINUX_XTRA_OFF)
		fInReload = 0
	}
	
	return HAM_IGNORED;
}

public k1ases__Reload(weapon_entity) {
	new id = pev(weapon_entity, pev_owner)
	if (!is_user_connected(id))
		return HAM_IGNORED;
	
	if (!g_has_k1ases[id])
		return HAM_IGNORED;
	
	g_k1ases_TmpClip[id] = -1;
	
	new iBpAmmo = cs_get_user_bpammo(id, CSW_MP5NAVY);
	new iClip = get_pdata_int(weapon_entity, m_iClip, WEAP_LINUX_XTRA_OFF)
	
	if (iBpAmmo <= 0)
		return HAM_SUPERCEDE;
	
	if (iClip >= get_pcvar_num(cvar_clip_k1ases))
		return HAM_SUPERCEDE;
	
	
	g_k1ases_TmpClip[id] = iClip;
	
	return HAM_IGNORED;
}

public k1ases__Reload_Post(weapon_entity) {
	new id = pev(weapon_entity, pev_owner)
	if (!is_user_connected(id))
		return HAM_IGNORED;
	
	if (!g_has_k1ases[id])
		return HAM_IGNORED;
	
	if (g_k1ases_TmpClip[id] == -1)
		return HAM_IGNORED;
	
	set_pdata_int(weapon_entity, m_iClip, g_k1ases_TmpClip[id], WEAP_LINUX_XTRA_OFF)
	
	set_pdata_float(weapon_entity, m_flTimeWeaponIdle, k1ases_RELOAD_TIME, WEAP_LINUX_XTRA_OFF)
	
	set_pdata_float(id, m_flNextAttack, k1ases_RELOAD_TIME, PLAYER_LINUX_XTRA_OFF)
	
	set_pdata_int(weapon_entity, m_fInReload, 1, WEAP_LINUX_XTRA_OFF)
	
	// relaod animation
	UTIL_PlayWeaponAnimation(id, 1)
	
	return HAM_IGNORED;
}

public finish_reload(id)
{
	id -= TASK_RELOAD
	
	g_ammo[id] += g_reload_ammo[id]
	cs_set_user_bpammo(id, CSW_SALAMANDER, cs_get_user_bpammo(id, CSW_SALAMANDER) - g_reload_ammo[id])
	is_reloading[id] = false
}

public stop_fire(id)
{
	id -= TASK_FIRE
	
	is_firing[id] = false
	if(pev(id, pev_weaponanim) != SHOOT_END_ANIM)
		play_weapon_anim(id, SHOOT_END_ANIM)	
}

public throw_fire(id)
{
	new iEnt = create_entity("env_sprite")
	new Float:vfVelocity[3]
	
	velocity_by_aim(id, 500, vfVelocity)
	xs_vec_mul_scalar(vfVelocity, 0.4, vfVelocity)
	
	// add velocity of Owner for ent
	new Float:fOwnerVel[3], Float:vfAttack[3], Float:vfAngle[3]
	pev(id, pev_angles, vfAngle)
	//pev(id, pev_origin, vfAttack)
	get_weapon_attackment(id, vfAttack, 20.0)
	vfAttack[2] -= 7.0
	//vfAttack[1] += 7.0
	pev(id, pev_velocity, fOwnerVel)
	fOwnerVel[2] = 0.0
	xs_vec_add(vfVelocity, fOwnerVel, vfVelocity)
	
	// set info for ent
	set_pev(iEnt, pev_movetype, MOVETYPE_FLY)
	set_pev(iEnt, pev_rendermode, kRenderTransAdd)
	set_pev(iEnt, pev_renderamt, 150.0)
	set_pev(iEnt, PEV_ENT_TIME, get_gametime() + 1.5)	// time remove
	set_pev(iEnt, pev_scale, 0.2)
	set_pev(iEnt, pev_nextthink, halflife_time() + 0.05)
	
	set_pev(iEnt, pev_classname, fire_classname)
	engfunc(EngFunc_SetModel, iEnt, fire_spr_name)
	set_pev(iEnt, pev_mins, Float:{-1.0, -1.0, -1.0})
	set_pev(iEnt, pev_maxs, Float:{1.0, 1.0, 1.0})
	set_pev(iEnt, pev_origin, vfAttack)
	set_pev(iEnt, pev_gravity, 0.01)
	set_pev(iEnt, pev_velocity, vfVelocity)
	vfAngle[1] += 30.0
	set_pev(iEnt, pev_angles, vfAngle)
	set_pev(iEnt, pev_solid, SOLID_BBOX)
	set_pev(iEnt, pev_owner, id)
	set_pev(iEnt, pev_iuser2, 1)
}

public fw_think(iEnt)
{
	if ( !pev_valid(iEnt) ) return;
	
	new Float:fFrame, Float:fScale, Float:fNextThink
	pev(iEnt, pev_frame, fFrame)
	pev(iEnt, pev_scale, fScale)
	
	// effect exp
	new iMoveType = pev(iEnt, pev_movetype)
	if (iMoveType == MOVETYPE_NONE)
	{
		fNextThink = 0.015
		fFrame += 1.0
		
		if (fFrame > 21.0)
		{
			engfunc(EngFunc_RemoveEntity, iEnt)
			return
		}
	}
	
	// effect normal
	else
	{
		fNextThink = 0.045
		fFrame += 1.0
		fFrame = floatmin(21.0, fFrame)
	}
	
	fScale = (entity_range(iEnt, pev(iEnt, pev_owner)) / 500) * 3.0
	
	set_pev(iEnt, pev_frame, fFrame)
	set_pev(iEnt, pev_scale, fScale)
	set_pev(iEnt, pev_nextthink, halflife_time() + fNextThink)
	
	
	// time remove
	new Float:fTimeRemove
	pev(iEnt, PEV_ENT_TIME, fTimeRemove)
	if (get_gametime() >= fTimeRemove)
	{
		engfunc(EngFunc_RemoveEntity, iEnt)
		return;
	}
}

public fw_touch(ent, id)
{
	set_pev(ent, pev_movetype, MOVETYPE_NONE)
	set_pev(ent, pev_solid, SOLID_NOT)	
	
	if(!is_valid_ent(id))
		return FMRES_IGNORED
	
	if(!is_user_alive(id) || !is_user_connected(id))
		return FMRES_IGNORED
	
	if(pev(ent, pev_iuser2) == 1)
	{
		set_pev(ent, pev_iuser2, 0)
		
		static attacker, ent_kill
		
		attacker = pev(ent, pev_owner)
		ent_kill = fm_get_user_weapon_entity(id, CSW_KNIFE)
		
		
		ExecuteHam(Ham_TakeDamage, id, ent_kill, attacker, random_float(get_pcvar_float(cvar_dmgrd_start), get_pcvar_float(cvar_dmgrd_end)), DMG_BULLET)		
	}
	return FMRES_HANDLED
}

public Hook_Select(id)
{
	engclient_cmd(id, "weapon_p228")
	return PLUGIN_HANDLED
}


public dropcmd(id) {
	if(g_hasM79[id] && hasOnHandM79[id]) {
		new Float:Aim[3],Float:origin[3]
		VelocityByAim(id, 64, Aim)
		entity_get_vector(id,EV_VEC_origin,origin)
		
		origin[0] += Aim[0]
		origin[1] += Aim[1]
		
		new m79 = create_entity("info_target")
		entity_set_string(m79,EV_SZ_classname,"m79")
		entity_set_model(m79,m79_W_MODEL)	
		
		entity_set_size(m79,Float:{-2.0,-2.0,-2.0},Float:{5.0,5.0,5.0})
		entity_set_int(m79,EV_INT_solid,1)
		
		entity_set_int(m79,EV_INT_movetype,6)
		entity_set_int(m79, EV_INT_iuser1, grenade_count[id])
		entity_set_vector(m79,EV_VEC_origin,origin)
		g_hasM79[id] = false
		g_canShoot[id] = false
		grenade_count[id] = false
		hasOnHandM79[id] = false
		remowegun(id)
		remove_icon(id)
		set_task(0.15,"hud_clear",id)
		return PLUGIN_HANDLED
	} 
	return PLUGIN_CONTINUE
}

// remove gun  and save all guns
public remowegun(id) { 
	new wpnList[32] 
	new number
	get_user_weapons(id,wpnList,number) 
	for (new i = 0;i < number ;i++) { 
		if (wpnList[i] == CSW_P228) {
			fm_strip_user_gun(id, wpnList[i])
		}
	}
} 

//play anim
public playanim(player,anim)
{
	set_pev(player, pev_weaponanim, anim)
	message_begin(MSG_ONE, SVC_WEAPONANIM, {0, 0, 0}, player)
	write_byte(anim)
	write_byte(pev(player, pev_body))
	message_end()
}


// Current weapon player is holding
public Event_CurrentWeapon_m79(id)
{
	
	if(!is_user_connected(id))
		return
	
	// Read weapon ID
	new weaponID = read_data(2)
	
	if (weaponID == CSW_P228)
	{
		if (g_hasM79[id])
		{
			message_begin(MSG_ONE, get_user_msgid("CurWeapon"), {0,0,0}, id) 
			write_byte(1) 
			write_byte(CSW_KNIFE) 
			write_byte(0) 
			message_end()
			hasOnHandM79[id] = true
			remove_task(id+TASK_FRSTSHT)
			
			message_begin(MSG_ONE,get_user_msgid("StatusIcon"),{0,0,0},id);
			write_byte(1); // status (0=hide, 1=show, 2=flash)
			write_string("item_battery"); // sprite name
			write_byte(210) 
			write_byte(105)
			write_byte(30)
			message_end()
			
			set_task(0.1, "hud_init", id+TASK_HUDAMMO)
			
			if(!draw_wpn[id])
			{
				playanim(id, anim_draw)
				emit_sound(id, CHAN_WEAPON, m79_GRENADE_DRAW, VOL_NORM, ATTN_NORM, 0, PITCH_NORM)
				// View model
				entity_set_string(id, EV_SZ_viewmodel, m79_V_MODEL)
				
				// Player model
				entity_set_string(id, EV_SZ_weaponmodel, m79_P_MODEL)
				canfire[id] = false
				draw_wpn[id] = true
				set_task(1.6,"delayshottsk", id+TASK_FRSTSHT)
			}
			else if(get_gametime() - g_last_shot_time[id] > delayshot) playanim(id, anim_idle)
			}
		else
		{
			// View model
			entity_set_string(id, EV_SZ_viewmodel, "models/v_p228.mdl")
			
			// Player model
			entity_set_string(id, EV_SZ_weaponmodel, "models/p_p228.mdl")
			hasOnHandM79[id] = false
			remove_icon(id)
			set_task(0.15,"hud_clear",id)
		}
	} 
	else 
	{
		draw_wpn[id] = false
		hasOnHandM79[id] = false
		remove_icon(id)
		set_task(0.15,"hud_clear",id)
	}
}

public fw_AddToPlayer_m79( iEnt, Player )
{
	if( pev_valid( iEnt ) && is_user_connected( Player ) )
	{
		if(g_hasM79[Player])
			Sprite(Player)
	}
} 


public remove_icon(id) 
{
	if(!is_user_connected(id))
		return
	
	message_begin(MSG_ONE,get_user_msgid("StatusIcon"),{0,0,0},id)
	write_byte(0) 
	write_string("item_battery") // sprite name
	message_end()
	return
}

public delayshottsk(taskid){
	canfire[ID_SHT] = true
}

// New round started
public Event_NewRound(id) {
	for (new i = 0; i < get_maxplayers(); i++) {
		g_hasM79[i] = false
	}
	m79 = 0
	draw_wpn[id] = false
	Event_CurrentWeapon_m79(id)
}

public Sprite(id) {
	
	message_begin(MSG_ONE, gmsgWeaponList, {0,0,0}, id)
	
	write_string("weapon_m79_sisa")
	
	write_byte(9)
	write_byte(52)
	write_byte(-1)
	write_byte(-1)
	write_byte(1)
	write_byte(3)
	write_byte(1)
	write_byte(0)
	message_end()
	
}



public event_start_m79()
{
	m79 = 0
	remove_m79()
}

public remove_m79() {
	new nextitem = find_ent_by_class(-1, "m79")
	while ((nextitem = find_ent_by_class(-1, "m79")) != 0) {
		remove_entity(nextitem)
	}
	return PLUGIN_CONTINUE
}		

// Player killed
public fw_PlayerKilled_m79(victim, attacker, shouldgib) {
	if (g_hasM79[victim])		
	{
		// Reset all
		g_hasM79[victim] = false
		g_canShoot[victim] = false
		g_FireM79[victim] = false
		grenade_count[victim] = 0
		
		// Remove HUD
		remove_task(victim+TASK_HUDAMMO)
		remowegun(victim)
		remove_icon(victim)
	}
}




//give wpn
public give_weapon(id, ammo){
	g_hasM79[id] = true
	g_canShoot[id] = true
	g_FireM79[id] = false
	give_item(id,"weapon_p228")
	if(ammo == -1) grenade_count[id] = 10
	else grenade_count[id] = ammo
	set_task(0.1, "hud_init", id+TASK_HUDAMMO)
}


// Command start
public fw_CmdStart_m79(id, uc_handle, seed)  {
	// Don't have our weapon	
	if (!hasOnHandM79[id] || !is_user_alive(id)){
		g_FireM79[id] = false
		return FMRES_IGNORED
	}
	// Get buttons	
	new buttons = get_uc(uc_handle, UC_Buttons)
	
	// Attack1 button pressed
	if(buttons & IN_ATTACK)
	{
		g_FireM79[id] = true
		
		// Remove attack button from their button mask
		buttons &= ~IN_ATTACK
		set_uc(uc_handle, UC_Buttons, buttons)
	}
	else 
		g_FireM79[id] = false	
	
	return FMRES_HANDLED
}

// Player think after
public fw_PlayerPostThink_m79(id)
{
	// Don't have our weapon	
	if (!g_hasM79[id])
		return FMRES_IGNORED
	
	// ignore dead
	if (!is_user_alive(id))
		return FMRES_IGNORED
	
	// Ignore zombies/nemesis	
	// If player is firing	
	if (g_FireM79[id] && hasOnHandM79[id])
	{
		// Grenades are more or equal to 1
		if (grenade_count[id] >= 1)
		{
			// Player can shoot
			if (get_gametime() - g_last_shot_time[id] > delayshot && canfire[id])
			{
				// Fire!!!
				FireGrenade(id)
				
				// Decrease nade count
				grenade_count[id]--
				
				// Without this HUD is not updating correctly
				set_task(0.1, "hud_init", id+TASK_HUDAMMO)
				
				// Remember last shot time
				g_last_shot_time[id] = get_gametime()
			}
		}
		else
		{
			// Don't have nades
			client_print(id, print_center, "У вас больше нет гранат!")
		}
	}
	
	return FMRES_IGNORED
}


//block anim standart wpn 
public fw_UpdateClientData_Post_m79(id, sendweapons, cd_handle) {
	// Don't have our weapon	
	if (!hasOnHandM79[id] || !is_user_alive(id)) return FMRES_IGNORED
	// Block default sounds	
	if (hasOnHandM79[id] && g_hasM79[id] && g_canShoot[id]) set_cd(cd_handle, CD_flNextAttack, halflife_time() + 0.001 ); 
	return FMRES_HANDLED
}

// Fire gremade
public FireGrenade(id) {
	// Set animation
	if(grenade_count[id]>1){ 
		playanim(id, anim_shot1)
		set_task(0.4,"reloadsnd",id)
		set_task(1.6,"reloadin",id)
		set_task(2.3,"reloadon",id)
		} else { 
		playanim(id, anim_shot2)
	}
	// Get origin. angle and velocity
	new Float:fAngle[3], Float:fVelocity[3]
	pev(id, pev_v_angle, fAngle)
	
	// Create ent
	new grenade = create_entity("info_target")
	
	// Not grenade
	if (!grenade) return PLUGIN_HANDLED
	
	// Classname
	entity_set_string(grenade, EV_SZ_classname, "m79_grenade")
	
	// Model
	entity_set_model(grenade, m79_GRENADE_MODEL)
	
	new Float:vOrigin[3],Float:vUp[3]
	pev(id, pev_origin, vOrigin)
	
	global_get(glb_v_up, vUp)
	new up = 17
	vOrigin[0] = vOrigin[0] + vUp[0] * up
	vOrigin[1] = vOrigin[1] + vUp[1] * up
	vOrigin[2] = vOrigin[2] + vUp[2] * up
	
	// Origin
	entity_set_origin(grenade, vOrigin)
	
	// Angles
	entity_set_vector(grenade, EV_VEC_angles, fAngle)
	
	// Size
	new Float:MinBox[3] = {-1.0, -1.0, -1.0}
	new Float:MaxBox[3] = {1.0, 1.0, 1.0}
	entity_set_vector(grenade, EV_VEC_mins, MinBox)
	entity_set_vector(grenade, EV_VEC_maxs, MaxBox)
	
	// Interaction
	entity_set_int(grenade, EV_INT_solid, SOLID_SLIDEBOX)
	
	// Movetype
	entity_set_int(grenade, EV_INT_movetype, MOVETYPE_TOSS)
	
	// Owner
	entity_set_edict(grenade, EV_ENT_owner, id)
	
	// Effects
	entity_set_int(grenade, EV_INT_effects, EF_BRIGHTLIGHT)
	
	// Velocity
	VelocityByAim(id, 1500, fVelocity)
	
	
	entity_set_vector(grenade, EV_VEC_velocity, fVelocity)
	
	// Launch sound
	emit_sound(grenade, CHAN_WEAPON, m79_GRENADE_SHOOT, VOL_NORM, ATTN_NORM, 0, PITCH_NORM)
	
	message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
	write_byte(TE_BEAMFOLLOW) // Temporary entity ID
	write_short(grenade) // Entity
	write_short(sTrail) // Sprite index
	write_byte(3) // Life
	write_byte(1) // Line width
	write_byte(255) // Red
	write_byte(255) // Green
	write_byte(255) // Blue
	write_byte(255) // Alpha
	message_end() 
	return PLUGIN_CONTINUE
}	

public reloadsnd(id){
	emit_sound(id, CHAN_WEAPON, m79_GRENADE_CLIPOUT, VOL_NORM, ATTN_NORM, 0, PITCH_NORM)
}
public reloadin(id){
	emit_sound(id, CHAN_WEAPON, m79_GRENADE_CLIPIN, VOL_NORM, ATTN_NORM, 0, PITCH_NORM)
}
public reloadon(id){
	emit_sound(id, CHAN_WEAPON, m79_GRENADE_CLIPON, VOL_NORM, ATTN_NORM, 0, PITCH_NORM)
}

// We hit something!!!
public pfn_touch(pentru, ptd) {
	// If ent is valid
	if (pev_valid(pentru))
	{	
		// Get classnames
		static classname[32], classnameptd[32]
		pev(pentru, pev_classname, classname, 31)
		
		
		// Our ent
		if(equal(classname, "m79_grenade"))
		{
			// Get it's origin
			new Float:originF[3]
			pev(pentru, pev_origin, originF)
			
			// Draw explosion
			message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
			write_byte(TE_EXPLOSION) // Temporary entity ID
			engfunc(EngFunc_WriteCoord, originF[0]) // engfunc because float
			engfunc(EngFunc_WriteCoord, originF[1])
			engfunc(EngFunc_WriteCoord, originF[2])
			write_short(sExplo) // Sprite index
			write_byte(50) // Scale
			write_byte(15) // Framerate
			write_byte(0) // Flags
			message_end()
			
			// Draw smoke
			message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
			write_byte(TE_SMOKE) // Temporary entity IF
			engfunc(EngFunc_WriteCoord, originF[0]) // Pos X
			engfunc(EngFunc_WriteCoord, originF[1]) // Pos Y
			engfunc(EngFunc_WriteCoord, originF[2]) // Pos Z
			write_short(sSmoke) // Sprite index
			write_byte(75) // Scale
			write_byte(15) // Framerate
			message_end()
			
			// Get owner
			new owner = pev(pentru, pev_owner)
			
			new Max_Damage = get_pcvar_num(cvar_granade_max_damage)
			new Damage_Radius = get_pcvar_num(cvar_granade_damage_radius)
			
			// Loop through all players
			for(new i = 1; i < get_maxplayers(); i++)
			{
				// Alive...
				if (is_user_alive(i) == 1 && is_user_connected(owner))
				{
					
					// A zombie/nemesis
					if (get_user_team ( i ) == 1)
					{
						// Get victims origin and distance
						new VictimOrigin[3], Distance , origin[3]
						get_user_origin(i, VictimOrigin)
						// Get distance between victim and epicenter
						
						origin[0] = floatround(originF[0])
						origin[1] = floatround(originF[1])
						origin[2] = floatround(originF[2])
						
						Distance = get_distance(VictimOrigin, origin)
						
						if (Distance <= Damage_Radius)
						{
							// Start screen shake
							message_begin(MSG_ONE, g_msgScreenShake, {0,0,0}, i)
							write_short(1<<14) // Amount
							write_short(1<<14) // Duration
							write_short(1<<14) // Frequency
							message_end()
							new Damage
							Damage = Max_Damage - floatround(floatmul(float(Max_Damage), floatdiv(float(Distance), float(Damage_Radius))))
							make_knockback(i, originF, 1.5*float(Damage))	
							do_victim(i,owner,Damage)					
						}
					}
				}
				// Destroy ent
				set_pev(pentru, pev_flags, FL_KILLME)
			}
			// We hit breakable
			if(pev_valid(ptd)){
				pev(ptd, pev_classname, classnameptd, 31)
				if (equali(classnameptd, "func_breakable"))
				{
					// Destroy it
					force_use(pentru,ptd)
				}
		}	}
	}	
	if(is_valid_ent(pentru)) {
		new classname[32]
		entity_get_string(pentru,EV_SZ_classname,classname,31)
		
		if(equal(classname, "m79")) {
			if(is_valid_ent(ptd)) {
				new id = ptd
				if(id > 0 && id < 34) {
					
					// Pick up weapon
					give_weapon(id,entity_get_int(pentru, EV_INT_iuser1))
					remove_entity(pentru)
					
				}
			}
		}
	}
}	

public do_victim (victim,attacker,Damage) {
	
	new namek[32],namev[32],authida[35],authidv[35],teama[32],teamv[32]
	
	get_user_name(victim,namev,31)
	get_user_name(attacker,namek,31)
	get_user_authid(victim,authidv,34)
	get_user_authid(attacker,authida,34)
	get_user_team(victim,teamv,31)
	get_user_team(attacker,teama,31)
	static DamageTake[33]
	if(Damage >= get_user_health(victim)) {
		
		if(get_cvar_num("mp_logdetail") == 3) {
			
			log_message("^"%s<%d><%s><%s>^" attacked ^"%s<%d><%s><%s>^" with ^"grenade^" (hit ^"chest^") (Damage ^"%d^") (health ^"0^")",
			namek,get_user_userid(attacker),authida,teama,namev,get_user_userid(victim),authidv,teamv,Damage)
			
		}
		
		set_user_frags(attacker,get_user_frags(attacker) + 1 )
		
		set_msg_block(gmsgDeathMsg,BLOCK_ONCE)
		set_msg_block(gmsgScoreInfo,BLOCK_ONCE)
		
		ExecuteHamB(Ham_Killed, victim, attacker, 0)
		
		replace_dm(attacker,victim,0)
		
		log_message("^"%s<%d><%s><%s>^" killed ^"%s<%d><%s><%s>^" with ^"grenade^"",
		namek,get_user_userid(attacker),authida,teama,namev,get_user_userid(victim),authidv,teamv)
		
	}
	
	else {
		set_user_health(victim,get_user_health(victim) - Damage )
		
		if(get_cvar_num("mp_logdetail") == 3) {
			
			log_message("^"%s<%d><%s><%s>^" attacked ^"%s<%d><%s><%s>^" with ^"missile^" (hit ^"chest^") (Damage ^"%d^") (health ^"%d^")",
			namek,get_user_userid(attacker),authida,teama,namev,get_user_userid(victim),authidv,teamv,Damage,get_user_health(victim))
			
		}
		
	}
	if(DamageTake[attacker] >= 5000){
		DamageTake[attacker] -= 5000
	} else DamageTake[attacker] += Damage
	
}

public replace_dm (id,tid,tbody) {
	
	//Update killers scorboard with new info
	message_begin(MSG_ALL,gmsgScoreInfo)
	write_byte(id)
	write_short(get_user_frags(id))
	write_short(get_user_deaths(id))
	write_short(0)
	write_short(get_user_team(id))
	message_end()
	
	//Update victims scoreboard with correct info
	message_begin(MSG_ALL,gmsgScoreInfo)
	write_byte(tid)
	write_short(get_user_frags(tid))
	write_short(get_user_deaths(tid))
	write_short(0)
	write_short(get_user_team(tid))
	message_end()
	
	//Headshot Kill
	if (tbody == 1) {
		
		message_begin( MSG_ALL, gmsgDeathMsg,{0,0,0},0)
		write_byte(id)
		write_byte(tid)
		write_string("grenade")
		message_end()
		
	}
	
	//Normal Kill
	else {
		
		message_begin( MSG_ALL, gmsgDeathMsg,{0,0,0},0)
		write_byte(id)
		write_byte(tid)
		write_byte(0)
		write_string("grenade")
		message_end()
		
	}
	
	return PLUGIN_CONTINUE
	
}

// HUD init	
public hud_init(taskid) {
	new HudAmmo[65]
	
	format(HudAmmo, 64, "Grenades Left: [%d]", grenade_count[ID_HUDAMMO])
	
	message_begin(MSG_ONE, g_msgStatusText, {0,0,0}, ID_HUDAMMO)
	write_byte(0)
	write_string(HudAmmo) // Text
	message_end()
	
}
public hud_clear(id) {
	
	message_begin(MSG_ONE, g_msgStatusText, {0,0,0}, id)
	write_byte(0)
	write_string("") // Text
	message_end()
}

public FurienCurrentWeapon ( id ) {
	
	new szKnife = get_user_weapon ( id );
	if ( szKnife == CSW_KNIFE ) {
		if ( katana_knife [ id ] && szKnife == CSW_KNIFE ) {
			
			set_pev ( id, pev_viewmodel2, katana_knife_v_model );
			set_pev ( id, pev_weaponmodel2, katana_knife_p_model );
			//set_task ( 0.1, "Katana_Damage", id );
			
		}
		
		if ( double_katana_knife [ id ] && szKnife == CSW_KNIFE ) {
			
			set_pev ( id, pev_viewmodel2, double_katana_v_knife_model );
			set_pev ( id, pev_weaponmodel2, double_katana_p_knife_model );
			//set_task ( 0.1, "Double_Katana_Damage", id );
			
		}
		
		if ( super_knife [ id ] && szKnife == CSW_KNIFE ) {
			
			set_pev ( id, pev_viewmodel2, super_knife_v_model );
			set_pev ( id, pev_weaponmodel2, super_knife_p_model );
			//set_task ( 0.1, "Super_Knife_Damage", id );
			
		}
		
		if ( infinity_knife [ id ] && szKnife == CSW_KNIFE ) {
			
			set_pev ( id, pev_viewmodel2, infinity_knife_v_model );
			set_pev ( id, pev_weaponmodel2, infinity_knife_p_model );
			//set_task ( 0.1, "Infinity_Knife_Damage", id );
			
		}
		
		if ( vip_axe_knife [ id ] && szKnife == CSW_KNIFE ) {
			
			set_pev ( id, pev_viewmodel2, axe_knife_v_model );
			set_pev ( id, pev_weaponmodel2, axe_knife_p_model );
			//set_task ( 0.1, "VIP_Axe_Knife_Damage", id );
			
		}
		
		if ( elf_knife [ id ] && szKnife == CSW_KNIFE ) {
			
			set_pev ( id, pev_viewmodel2, elf_knife_model );
			//set_task ( 0.1, "Elf_Knife_Damage", id );
			
		}
		
		if ( ignes_knife [ id ] && szKnife == CSW_KNIFE ) {
			
			set_pev ( id, pev_viewmodel2, ignes_knife_model );
			//set_task ( 0.1, "Ignes_Knife_Damage", id );
			
		}
		
		if ( trainer [ id ] && szKnife == CSW_KNIFE ) {
			
			set_pev ( id, pev_viewmodel2, trainer_v_model );
			set_pev ( id, pev_weaponmodel2, trainer_p_model );
			//set_task ( 0.1, "Trainer_Knife_Damage", id );
			
		}
		
		if ( super_knife_shop [ id ] && szKnife == CSW_KNIFE ) {
			set_pev ( id, pev_viewmodel2, super_knife_shop_v_model );
			//set_task ( 0.1, "SK_Knife_Damage", id );
		}
		
		if ( super_knife_shop2 [ id ] && szKnife == CSW_KNIFE ) {
			set_pev ( id, pev_viewmodel2, super_knife_shop_v_model2 );
			set_pev ( id, pev_weaponmodel2, super_knife_shop_p_model2 );
			//set_task ( 0.1, "SK2_Knife_Damage", id );
		}
	}
	
	if ( strike_grenade [ id ] && szKnife == CSW_HEGRENADE && get_user_team ( id ) == 1 ) {
		
		set_pev ( id, pev_viewmodel2, strike_grenade_v_model );
		set_pev ( id, pev_weaponmodel2, strike_grenade_p_model );
		
	}
	
	if ( strike_grenade2 [ id ] && szKnife == CSW_HEGRENADE && get_user_team ( id ) == 1 ) {
		
		set_pev ( id, pev_viewmodel2, strike_grenade_v_model );
		set_pev ( id, pev_weaponmodel2, strike_grenade_p_model );
		
	}
	
	if ( strike_grenade3 [ id ] && szKnife == CSW_HEGRENADE && get_user_team ( id ) == 1 ) {
		
		set_pev ( id, pev_viewmodel2, strike_grenade_v_model );
		set_pev ( id, pev_weaponmodel2, strike_grenade_p_model );
		
	}
	
	else if ( !user_has_weapon ( id, CSW_KNIFE ) || ( !katana_knife [ id ] || !double_katana_knife || !super_knife || !infinity_knife || !vip_axe_knife || !ignes_knife || !elf_knife || !trainer ) )
	{
		give_item ( id, "weapon_knife" );
		return 1;
	}
	return 1;
}

public AntiFurienCurrentWeapon ( id ) {
	
	new szWeapon = get_user_weapon ( id );
	
	if ( szWeapon == CSW_MP5NAVY ) {
		if ( dual_mp5 [ id ] && szWeapon == CSW_MP5NAVY ) {
			
			set_pev ( id, pev_viewmodel2, dual_mp5_v_model );
			set_pev ( id, pev_weaponmodel2, dual_mp5_p_model );
			
		}
	}
	
	
	if ( szWeapon == CSW_P90 ) {
		if ( hunter [ id ] && szWeapon == CSW_P90 ) {
			
			set_pev ( id, pev_viewmodel2, hunter_v_model );
			set_pev ( id, pev_weaponmodel2, hunter_p_model );
			//set_task ( 0.1, "Hunter_Damage", id );
			
		}
		
		if ( thompson [ id ] && szWeapon == CSW_P90 ) {
			
			set_pev ( id, pev_viewmodel2, thompson_v_model );
			set_pev ( id, pev_weaponmodel2, thompson_p_model );
			//set_task ( 0.1, "Thompson_Damage", id );
			
		}
		
		if ( warrior [ id ] && szWeapon == CSW_P90 ) {
			
			set_pev ( id, pev_viewmodel2, warrior_v_model );
			set_pev ( id, pev_weaponmodel2, warrior_p_model );
			//set_task ( 0.1, "Warrior_Damage", id );
			
		}
		
		if ( deklowaz [ id ] && szWeapon == CSW_P90 ) {
			
			set_pev ( id, pev_viewmodel2, deklowaz_v_model );
			set_pev ( id, pev_weaponmodel2, deklowaz_p_model );
			//set_task ( 0.1, "Deklowaz_Damage", id );
			
		}
	}
	
	if ( szWeapon == CSW_GALIL ) {
		if ( mage [ id ] && szWeapon == CSW_GALIL ) {
			
			set_pev ( id, pev_viewmodel2, mage_v_model );
			set_pev ( id, pev_weaponmodel2, mage_p_model );
			//set_task ( 0.1, "Mage_Damage", id );
			
		}
	}
	
	if ( szWeapon == CSW_FAMAS ) {
		if ( rogue [ id ] && szWeapon == CSW_FAMAS ) {
			
			set_pev ( id, pev_viewmodel2, rogue_v_model );
			set_pev ( id, pev_weaponmodel2, rogue_p_model );
			//set_task ( 0.1, "Rogue_Damage", id );
			
		}
	}
	
	if ( szWeapon == CSW_SG552 ) {
		if ( shaman [ id ] && szWeapon == CSW_SG552 ) {
			
			set_pev ( id, pev_viewmodel2, shaman_v_model );
			set_pev ( id, pev_weaponmodel2, shaman_p_model );
			//set_task ( 0.1, "Shaman_Damage", id );
			
		}
	}
	
	if ( szWeapon == CSW_USP ) {
		if ( uspx [ id ] && szWeapon == CSW_USP ) {
			
			set_pev ( id, pev_viewmodel2, uspx_v_model );
			set_pev ( id, pev_weaponmodel2, uspx_p_model );
			
		}
	}
	
	if ( szWeapon == CSW_SMOKEGRENADE ) {
		if ( flare [ id ] && szWeapon == CSW_SMOKEGRENADE && get_user_team ( id ) == 2 ) {
			
			set_pev ( id, pev_viewmodel2, flare_v_model );
			
		}
	}
	
	return 1;
}

public Spawn(id) {
	remove_task(id);
	HasChose[id] = false;
	HE_Cooldown[id] = 0;
	GodMode_Cooldown[id] = 0;
	GodMode_DurationCooldown[id] = 0;
	Drop_Cooldown[id] = 0;
	Freeze_Cooldown[id] = 0;
	remove_freeze ( id );
	DragEnd ( id );
	Drag_Cooldown[id] = 0;
	Not_Cooldown[id] = false;
	Teleport_Cooldown[id] = 0;
}

public remove_freeze(id) {
	if (!Frozen[id] || !is_user_alive(id)) return;
	
	Frozen[id] = false;
	set_task(0.2, "set_normal", id);
	engfunc(EngFunc_EmitSound, id, CHAN_BODY, FROSTBREAK_SND[random_num(0, sizeof FROSTBREAK_SND - 1)], 1.0, ATTN_NORM, 0, PITCH_NORM);
	fm_set_rendering(id);
	static Float:origin2F[3];
	pev(id, pev_origin, origin2F);
	engfunc(EngFunc_MessageBegin, MSG_PVS, SVC_TEMPENTITY, origin2F, 0);
	write_byte(TE_BREAKMODEL);
	engfunc(EngFunc_WriteCoord, origin2F[0]);
	engfunc(EngFunc_WriteCoord, origin2F[1]);
	engfunc(EngFunc_WriteCoord, origin2F[2]+24.0);
	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(FreezeSprite);
	write_byte(10);
	write_byte(25);
	write_byte(BREAK_GLASS);
	message_end();
}

public DragEnd(id) { // drags end function
	LastHook[id] = get_gametime();
	Hooked[id] = 0;
	BeamRemove(id);
	Drag_I[id] = false;
	Unable2move[id] = false;
	if(!Not_Cooldown[id] && HasPower[id] == 6) {
		Drag_Cooldown[id] = get_pcvar_num(CvarDragCooldown);
		set_task(1.0, "DragShowHUD", id, _, _, "b");
		Not_Cooldown[id] = true;
		set_hudmessage(0, 100, 200, 0.05, 0.60, 0, 1.0, 1.1, 0.0, 0.0, -11);
		if(get_pcvar_num(CvarDragCooldown) != 1) {
			show_hudmessage(id, "Puterea iti va reveni in: %d secunde",get_pcvar_num(CvarDragCooldown));
		}
		if(get_pcvar_num(CvarDragCooldown) == 1) {
			show_hudmessage(id, "Puterea iti va reveni in: %d secunda",get_pcvar_num(CvarDragCooldown));
		}
	}
}

public BeamRemove(id) { // remove beam
	message_begin(MSG_BROADCAST, SVC_TEMPENTITY);
	write_byte(99);	//TE_KILLBEAM
	write_short(id);	//entity
	message_end();
}

//------| Client Death |------//
public Death() {
	new i = read_data ( 2 )
	remove_task(read_data(2));
	HE_Cooldown[read_data(2)] = 0;
	GodMode_Cooldown[read_data(2)] = 0;
	GodMode_DurationCooldown[read_data(2)] = 0;
	Drop_Cooldown[read_data(2)] = 0;
	Freeze_Cooldown[read_data(2)] = 0;
	Freeze_Cooldown[read_data(2)] = 0;
	remove_freeze ( i );
	BeamRemove ( i );
	Drag_Cooldown[read_data(2)] = 0;
	if (Hooked[read_data(2)])
		DragEnd ( i );
	
	Not_Cooldown[read_data(2)] = false;
	Teleport_Cooldown[read_data(2)] = 0;
}

//------| Client Power |------//
public Power(id)  {
	new target, body;
	static Float:start[3];
	static Float:aim[3];
	
	pev(id, pev_origin, start);
	fm_get_aim_origin(id, aim);
	
	start[2] += 16.0; // raise
	aim[2] += 16.0; // raise
	
	if ( is_user_alive(id) && HasPower[id] == 4) {
		
		if (Drop_Cooldown[id]) {
			ColorChat(id, GREEN, "%s Puterea iti va reveni in^4 %d^3 secunde .^4", szPrefix, Drop_Cooldown[id]);			
			return PLUGIN_CONTINUE;
		}
		get_user_aiming (id, target, body, CvarDropDistance);
		if(is_user_alive(target) && get_user_team(id) != get_user_team(target)) {
			message_begin(MSG_BROADCAST ,SVC_TEMPENTITY);
			write_byte(TE_EXPLOSION);
			engfunc(EngFunc_WriteCoord, aim[0]);
			engfunc(EngFunc_WriteCoord, aim[1]);
			engfunc(EngFunc_WriteCoord, aim[2]);
			write_short(DropSprite2);
			write_byte(10);
			write_byte(30);
			write_byte(4);
			message_end();
			
			emit_sound(id, CHAN_WEAPON, DROP_HIT_SND, VOL_NORM, ATTN_NORM, 0, PITCH_NORM);
			set_task ( 0.1, "Drop", target );
			message_begin(MSG_ONE, get_user_msgid("ScreenFade"), {0,0,0}, id);
			write_short(1<<10);
			write_short(1<<10);
			write_short(0x0000);
			write_byte(230);
			write_byte(0);
			write_byte(0);
			write_byte(50);
			message_end();
			message_begin(MSG_ONE, get_user_msgid("ScreenFade"), {0,0,0}, target);
			write_short(1<<10);
			write_short(1<<10);
			write_short(0x0000);
			write_byte(230);
			write_byte(0);
			write_byte(0);
			write_byte(50);
			message_end();
		}	
		message_begin(MSG_BROADCAST,SVC_TEMPENTITY);
		write_byte(0);
		engfunc(EngFunc_WriteCoord,start[0]);
		engfunc(EngFunc_WriteCoord,start[1]);
		engfunc(EngFunc_WriteCoord,start[2]);
		engfunc(EngFunc_WriteCoord,aim[0]);
		engfunc(EngFunc_WriteCoord,aim[1]);
		engfunc(EngFunc_WriteCoord,aim[2]);
		write_short(DropSprite); // sprite index
		write_byte(0); // start frame
		write_byte(30); // frame rate in 0.1's
		write_byte(20); // life in 0.1's
		write_byte(50); // line width in 0.1's
		write_byte(50); // noise amplititude in 0.01's
		write_byte(0); // red
		write_byte(100); // green
		write_byte(0); // blue
		write_byte(100); // brightness
		write_byte(50); // scroll speed in 0.1's
		message_end();
		Drop_Cooldown[id] = get_pcvar_num(CvarDropCooldown);
		set_task(1.0, "DropShowHUD", id, _, _, "b");
		set_hudmessage(0, 100, 200, 0.05, 0.60, 0, 1.0, 1.1, 0.0, 0.0, -11);
		if(get_pcvar_num(CvarDropCooldown) != 1) {
			show_hudmessage(id, "Puterea iti va reveni in: %d secunde",get_pcvar_num(CvarDropCooldown));
		}
		if(get_pcvar_num(CvarDropCooldown) == 1) {
			show_hudmessage(id, "Puterea iti va reveni in: %d secunda",get_pcvar_num(CvarDropCooldown));
		}
		return PLUGIN_HANDLED;
	}
	
	else if (is_user_alive(id) && HasPower[id] == 5) {
		if (Freeze_Cooldown[id]) {
			ColorChat(id, GREEN, "%s Puterea iti va reveni in^4 %d^3 secunde .^4", szPrefix,Freeze_Cooldown[id]);
			return PLUGIN_CONTINUE;
		}
		get_user_aiming (id, target, body, CvarFreezeDistance);
		if(is_user_alive(target) && get_user_team(id) != get_user_team(target)) {	
			set_task ( 0.1, "Freeze", target );
			
			message_begin(MSG_ONE, get_user_msgid("ScreenFade"), {0,0,0}, id);
			write_short(1<<10);
			write_short(1<<10);
			write_short(0x0000);
			write_byte(0);
			write_byte(100);
			write_byte(200);
			write_byte(50);
			message_end();
			message_begin(MSG_ONE, get_user_msgid("ScreenFade"), {0,0,0}, target);
			write_short(1<<10);
			write_short(1<<10);
			write_short(0x0000);
			write_byte(0);
			write_byte(100);
			write_byte(200);
			write_byte(50);
			message_end();
		}	
		message_begin(MSG_BROADCAST,SVC_TEMPENTITY);
		write_byte(0);
		engfunc(EngFunc_WriteCoord,start[0]);
		engfunc(EngFunc_WriteCoord,start[1]);
		engfunc(EngFunc_WriteCoord,start[2]);
		engfunc(EngFunc_WriteCoord,aim[0]);
		engfunc(EngFunc_WriteCoord,aim[1]);
		engfunc(EngFunc_WriteCoord,aim[2]);
		write_short(FreezeSprite3); // sprite index
		write_byte(0); // start frame
		write_byte(30); // frame rate in 0.1's
		write_byte(20); // life in 0.1's
		write_byte(50); // line width in 0.1's
		write_byte(50); // noise amplititude in 0.01's
		write_byte(0); // red
		write_byte(100); // green
		write_byte(200); // blue
		write_byte(100); // brightness
		write_byte(50); // scroll speed in 0.1's
		message_end();
		set_user_health ( target, get_user_health ( target ) - 5 );
		set_dhudmessage ( 255, 0, 0, 0.02, 0.90, 0, 6.0, 1.0 );
		show_dhudmessage ( id, "-5 HP" );
		Freeze_Cooldown[id] = get_pcvar_num(CvarFreezeCooldown);
		set_task(1.0, "FreezeShowHUD", id, _, _, "b");
		set_hudmessage(0, 100, 200, 0.05, 0.60, 0, 1.0, 1.1, 0.0, 0.0, -11);
		if(get_pcvar_num(CvarFreezeCooldown) != 1) {
			show_hudmessage(id, "Puterea iti va reveni in: %d secunde",get_pcvar_num(CvarFreezeCooldown));
		}
		if(get_pcvar_num(CvarFreezeCooldown) == 1) {
			show_hudmessage(id, "Puterea iti va reveni in: %d secunda",get_pcvar_num(CvarFreezeCooldown));
		}
		return PLUGIN_HANDLED;
	}
	else if  (is_user_alive(id) && HasPower[id] == 7) {	
		if (Teleport_Cooldown[id]) {
			ColorChat(id, GREEN, "%s Puterea iti va reveni in^4 %d^3 secunde .^4", szPrefix, Teleport_Cooldown[id]);
			return PLUGIN_CONTINUE;
		}
		if (teleport(id)) {
			emit_sound(id, CHAN_STATIC, SOUND_BLINK, 1.0, ATTN_NORM, 0, PITCH_NORM);
			remove_task(id);
			Teleport_Cooldown[id] = get_pcvar_num(CvarTeleportCooldown);
			set_task(1.0, "TeleportShowHUD", id, _, _, "b");
			set_hudmessage(0, 100, 200, 0.05, 0.60, 0, 1.0, 1.1, 0.0, 0.0, -11);
			if(get_pcvar_num(CvarTeleportCooldown) != 1) {
				show_hudmessage(id, "Puterea iti va reveni in: %d secunde",get_pcvar_num(CvarTeleportCooldown));
			}
			if(get_pcvar_num(CvarTeleportCooldown) == 1) {
				show_hudmessage(id, "Puterea iti va reveni in: %d secunda",get_pcvar_num(CvarTeleportCooldown));
			}
			return PLUGIN_HANDLED;
		}
		else {
			Teleport_Cooldown[id] = 0;
			ColorChat(id, GREEN, "%s Pozitia de teleportare este invalida .", szPrefix);
			return PLUGIN_HANDLED;
		}
		return PLUGIN_HANDLED;
	}
	return PLUGIN_CONTINUE;
}

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);
	
	return true;
}

public cmdShowXp ( id ) {
	
	ColorChat ( id, GREEN, "%s Ai ^4%d^3 XP, iar levelul tau este ^4%s^3 .", szPrefix, eXP [ id ], Prefix [ Level [ id ] ] );
	ShowHud ( id );
	
}

public cmdSaveXp ( id ) {
	
	ColorChat ( id, GREEN, "%s Ti-ai salvat XP-ul cu succes .", szPrefix );
	ShowHud ( id );
	
}

public cmdShowLevel ( id ) {
	
	ColorChat ( id, GREEN, "%s Levelul tau este ^4%s^3 .", szPrefix, Prefix [ Level [ id ] ] );
	
}

public cmdShowLevels ( id ) {
	
	ColorChat ( id, GREEN, "%s In total sunt^4 30^3 levele .", szPrefix );
	
}

public cmdClearXp ( id ) {
	
	ColorChat ( id, GREEN, "%s Ti-ai sters XP-ul cu succes .", szPrefix );
	eXP [ id ] -= eXP [ id ];
	Level [ id ] -= Level [ id ];
}

public cmdRefreshXP ( id ) {
	
	Level [ id ] -= Level [ id ];
	ColorChat ( id, GREEN, "%s Ti-ai reimprospatat Xp-ul cu succes !", szPrefix );
	
	if ( !is_user_bot ( id ) && ( Level [ id ] < 30) && ( eXP [ id ] >= Levels [ Level [ id ] ] ) )
	{
		while ( eXP [ id ] >= Levels [ Level [ id ] ] )
		{
			Level [ id ] += 1;
		}
	}
}

public cmdRefreshXP2 ( id ) {
	
	Level [ id ] -= Level [ id ];
	// ColorChat ( id, GREEN, "%s Ti-ai reimprospatat Xp-ul cu succes !", szPrefix );
	
	if ( !is_user_bot ( id ) && ( Level [ id ] < 30) && ( eXP [ id ] >= Levels [ Level [ id ] ] ) )
	{
		while ( eXP [ id ] >= Levels [ Level [ id ] ] )
		{
			Level [ id ] += 1;
		}
	}
}

public cmdXpTop15 ( id ) {
	
	new i, count;
	static sort [ 33 ] [ 2 ], maxPlayers;
	
	if ( !maxPlayers ) maxPlayers = get_maxplayers ( );
	
	for ( i= 1; i <= maxPlayers; i++ )
	{
		sort [ count ][ 0 ] = i;
		sort [ count ][ 1 ] = Level [ i ];
		count++;
	}
	
	SortCustom2D ( sort,count, "stats_custom_compare" );
	
	new motd [ 1024 ], len;
	
	len = format ( motd, 1023, "<body bgcolor=#000000><center><font color=#FFB000><pre>" );
	len += format ( motd [ len ], 1023-len,"%s %-22.22s %3s^n", "#", "Name", "Level" );
	
	new players [ 32 ], num;
	get_players ( players, num );
	
	new b = clamp ( count,0,15 );
	
	new name [ 32 ], player;
	
	for ( new a = 0; a < b; a++ )
	{
		player = sort [ a ] [ 0 ];
		
		get_user_name ( player, name, 31 );		
		len += format ( motd [ len ], 1023-len,"%d %-22.22s %d^n", a+1, name, sort [ a ] [ 1 ] );
	}
	
	len += format ( motd [ len ], 1023-len,"</body></font></pre></center>" );
	show_motd(  id, motd, "Level Top 15" );
	
	return PLUGIN_CONTINUE;
}

public stats_custom_compare ( elem1 [ ], elem2 [ ] ) {
	
	if ( elem1 [ 1 ] > elem2 [ 1 ] ) return -1;
	else if ( elem1 [ 1 ] < elem2 [ 1 ] ) return 1;
		
	return 0;
}

public cmdGiveXp ( id, level, cid ) { 
	
	if(!cmd_access(id, level, cid, 3)) 
		return PLUGIN_HANDLED;
	
	new target[32], amount[21], reason[21], gplayers[32], players, num, i;
	
	read_argv(1, target, 31);
	read_argv(2, amount, 20);
	read_argv(3, reason, 20);
	
	new player = cmd_target(id, target, 8);
	
	if(!player)  
		return PLUGIN_HANDLED;
	
	new admin_name[32], player_name[32];
	get_user_name(id, admin_name, 31);
	get_user_name(player, player_name, 31);
	new expnum = str_to_num(amount);
	
	ColorChat ( 0, GREEN, "^4ADMIN ^3%s^1: ^1give ^4%s ^1xp to ^3%s ^1%s", admin_name, amount, player_name, reason );
	
	eXP [ player ] += expnum;
	cmdRefreshXP2 ( player );
	SaveData ( player );
	
	if(equali(target, "@All") || equali ( target, "all" ) ) {
		
		get_players(gplayers, num, "a");
		for(i = 0; i < num; i++) {
			players = gplayers[i];
			if(!is_user_connected(players))
				continue;
			eXP [ players ] += expnum;
			SaveData(players);
			ColorChat ( 0, GREEN, "^4ADMIN ^3%s^1: ^1give ^4%s ^1xp to ^3All Players ^1%s", admin_name, amount, reason );
		}
	}
	
	return PLUGIN_CONTINUE;
}

public cmdSetXp ( id, level, cid ) { 
	
	if(!cmd_access(id, level, cid, 3)) 
		return PLUGIN_HANDLED;
	
	new target[32], amount[21], reason[21];
	
	read_argv(1, target, 31);
	read_argv(2, amount, 20);
	read_argv(3, reason, 20);
	
	new player = cmd_target(id, target, 8);
	
	if(!player)  
		return PLUGIN_HANDLED;
	
	new admin_name[32], player_name[32];
	get_user_name(id, admin_name, 31);
	get_user_name(player, player_name, 31);
	
	new expnum = str_to_num(amount);
	ColorChat ( 0, GREEN, "^4ADMIN ^3%s^1: ^1set ^4%s ^1xp to ^3%s ^1%s", admin_name, amount, player_name, reason );
	
	eXP [ player ] = expnum;
	cmdRefreshXP2 ( player );
	SaveData ( player );
	
	return PLUGIN_CONTINUE;
}

public fwd_setmodel(ent, const model[]) {
	if(!pev_valid(ent) || !equal(model[9], "smokegrenade.mdl"))
		return FMRES_IGNORED;
	
	static classname[32]; pev(ent, pev_classname, classname, 31);
	if(equal(classname, "grenade") && 1)
	{
		engfunc(EngFunc_SetModel, ent, flare_w_model);
		set_pev(ent, pev_effects, EF_BRIGHTLIGHT);
		set_pev(ent, pev_iuser4, 1337);
		set_pev(ent, pev_nextthink, get_gametime() + 999.9);
		fm_set_rendering2(ent, kRenderFxGlowShell, 150, 150, 250, kRenderNormal, 16);
		
		return FMRES_SUPERCEDE;
	}
	return FMRES_IGNORED;
}

public fwd_think(ent) if(pev_valid(ent) && is_ent_flare(ent))
engfunc(EngFunc_RemoveEntity, ent);

public GetRandomPlayer ( ) { 
	
	new players[32], count;    
	get_players(players, count, "a");    
	
	if(count)              
	{
		new iPlayer = players[random(count)];
		
		new Name[32];
		get_user_name(iPlayer, Name, charsmax(Name));
		set_user_credits ( iPlayer, get_user_credits ( iPlayer ) + 1 );
		
		ColorChat ( iPlayer, GREEN, "%s Felicitari ! Ai primit^4 1^3 credit .^4", szPrefix );
		ColorChat ( 0, GREEN, "%s^4 %s^3 a primit^4 1^3 credit .^4", szPrefix, Name );
	}
}  

public GiveQuadBarrel(id, itemid)
{
	if(itemid != g_quad_barrel)
		return PLUGIN_HANDLED
	
	g_had_qb[id] = 1
	new ent = give_item(id, "weapon_xm1014")
	
	cs_set_weapon_ammo(ent, get_pcvar_num(cvar_default_clip))
	cs_set_user_bpammo(id, CSW_QB, 10)
	
	set_pdata_float(id, 83, 1.0, 4)
	set_weapon_anim(id, 4)
	
	return PLUGIN_CONTINUE
}

public check_draw_weapon(id)
{
	set_task(0.001, "do_check", id)
}

public do_check(id)
{
	if(get_user_weapon(id) == CSW_QB && g_had_qb[id])
	{
		set_weapon_anim(id, 4)
	}
}

public event_curweapon_quad(id)
{
	if(!is_user_alive(id) || !is_user_connected(id))
		return
	if(get_user_weapon(id) != CSW_QB || !g_had_qb[id])
		return	
	
	set_pev(id, pev_viewmodel2, qb_v_model)
	set_pev(id, pev_weaponmodel2, qb_p_model)
	
	return 
}

public fw_UpdateClientData_Post_qb(id, sendweapons, cd_handle)
{
	if(!is_user_alive(id) || !is_user_connected(id))
		return FMRES_IGNORED	
	if(get_user_weapon(id) != CSW_QB || !g_had_qb[id])
		return FMRES_IGNORED
	
	set_cd(cd_handle, CD_flNextAttack, halflife_time() + 0.001) 
	
	return FMRES_HANDLED
}

public TraceAttack(iEnt, iAttacker, Float:flDamage, Float:fDir[3], pentru, iDamageType)
{
	if(!is_user_alive(iAttacker) || !is_user_connected(iAttacker))
		return HAM_IGNORED			
	if(get_user_weapon(iAttacker) != CSW_QB || !g_had_qb[iAttacker])
		return HAM_IGNORED
	
	static Float:flEnd[3]
	get_tr2(pentru, TR_vecEndPos, flEnd)
	
	make_bullet(iAttacker, flEnd)
	
	return HAM_HANDLED
}

public fw_takedmg(victim, inflictor, attacker, Float:damage, damagebits)
{
	if(!is_user_alive(victim) || !is_user_alive(attacker))
		return HAM_IGNORED
	
	
	if(get_user_weapon(attacker) == CSW_QB && g_had_qb[attacker])
	{
		static Float:random_start, Float:random_end
		
		random_start = get_pcvar_float(cvar_randmg_start)
		random_end = get_pcvar_float(cvar_randmg_end)
		
		SetHamParamFloat(4, random_float(random_start, random_end))
	}
	
	return HAM_HANDLED
}

public make_bullet(id, Float:Origin[3])
{
	// Find target
	new target, body
	get_user_aiming(id, target, body, 999999)
	
	if(target > 0 && target <= get_maxplayers())
	{
		new Float:fStart[3], Float:fEnd[3], Float:fRes[3], Float:fVel[3]
		pev(id, pev_origin, fStart)
		
		// Get ids view direction
		velocity_by_aim(id, 64, fVel)
		
		// Calculate position where blood should be displayed
		fStart[0] = Origin[0]
		fStart[1] = Origin[1]
		fStart[2] = Origin[2]
		fEnd[0] = fStart[0]+fVel[0]
		fEnd[1] = fStart[1]+fVel[1]
		fEnd[2] = fStart[2]+fVel[2]
		
		// Draw traceline from victims origin into ids view direction to find
		// the location on the wall to put some blood on there
		new res
		engfunc(EngFunc_TraceLine, fStart, fEnd, 0, target, res)
		get_tr2(res, TR_vecEndPos, fRes)
		
		// Show some blood :)
		message_begin(MSG_BROADCAST, SVC_TEMPENTITY) 
		write_byte(TE_BLOODSPRITE)
		write_coord(floatround(fStart[0])) 
		write_coord(floatround(fStart[1])) 
		write_coord(floatround(fStart[2])) 
		write_short(g_bloodspray)
		write_short(g_blood)
		write_byte(70)
		write_byte(random_num(1,2))
		message_end()
		
		
		} else {
		new decal = 41
		
		// Check if the wall hit is an entity
		if(target)
		{
			// Put decal on an entity
			message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
			write_byte(TE_DECAL)
			write_coord(floatround(Origin[0]))
			write_coord(floatround(Origin[1]))
			write_coord(floatround(Origin[2]))
			write_byte(decal)
			write_short(target)
			message_end()
			} else {
			// Put decal on "world" (a wall)
			message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
			write_byte(TE_WORLDDECAL)
			write_coord(floatround(Origin[0]))
			write_coord(floatround(Origin[1]))
			write_coord(floatround(Origin[2]))
			write_byte(decal)
			message_end()
		}
		
		// Show sparcles
		message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
		write_byte(TE_GUNSHOTDECAL)
		write_coord(floatround(Origin[0]))
		write_coord(floatround(Origin[1]))
		write_coord(floatround(Origin[2]))
		write_short(id)
		write_byte(decal)
		message_end()
	}
}

public fm_cmdstart(id, uc_handle, seed)
{
	if(!is_user_alive(id) || !is_user_connected(id))
		return
	
	if(get_user_weapon(id) != CSW_QB || !g_had_qb[id])
		return 
	
	new CurButton
	CurButton = get_uc(uc_handle, UC_Buttons)
	
	if(CurButton & IN_RELOAD)
	{
		CurButton &= ~IN_RELOAD
		set_uc(uc_handle, UC_Buttons, CurButton)
		new ent = find_ent_by_owner(-1, "weapon_xm1014", id)
		
		if (!ent)
			return
		
		new fInReload = get_pdata_int(ent, m_fInReload, 4)
		
		new Float:flNextAttack ; flNextAttack = get_pdata_float(id, m_flNextAttack, 5)
		
		if (flNextAttack > 0.0)
			return
		
		if (fInReload)
		{
			set_weapon_anim(id, 0)
			return
		}
		if(cs_get_weapon_ammo(ent) >= get_pcvar_num(cvar_default_clip))
		{
			set_weapon_anim(id, 0)
			return
		}
		
		ham_reload(ent)
	}
	
	if(CurButton & IN_ATTACK2)
	{
		static Float:CurTime
		CurTime = get_gametime()
		
		if(CurTime - 4.0 > g_last_fire_qb[id])
		{
			static ent, ammo
			ent = find_ent_by_owner(-1, "weapon_xm1014", id)
			ammo = cs_get_weapon_ammo(ent)
			
			if(cs_get_weapon_ammo(ent) <= 0)
				return			
			
			for(new i = 0; i < ammo; i++)
			{
				ExecuteHamB(Ham_Weapon_PrimaryAttack, ent)
			}
			
			emit_sound(id, CHAN_WEAPON, qb_sound[4], 1.0, ATTN_NORM, 0, PITCH_NORM)
			set_weapon_anim(id, random_num(1, 2))
			
			g_last_fire_qb[id] = CurTime
		}
	}
	
	if(CurButton & IN_ATTACK)
	{
		static Float:CurTime
		CurTime = get_gametime()
		
		CurButton &= ~IN_ATTACK
		set_uc(uc_handle, UC_Buttons, CurButton)
		
		static ent
		ent = find_ent_by_owner(-1, "weapon_xm1014", id)
		
		if(cs_get_weapon_ammo(ent) <= 0 || get_pdata_int(ent, m_fInReload, XTRA_OFS_WEAPON))
			return
		
		if(CurTime - get_pcvar_float(cvar_delayattack) > g_last_fire2[id])
		{
			emit_sound(id, CHAN_WEAPON, qb_sound[4], 1.0, ATTN_NORM, 0, PITCH_NORM)
			
			ExecuteHamB(Ham_Weapon_PrimaryAttack, ent)
			set_weapon_anim(id, random_num(1, 2))
			
			g_last_fire2[id] = CurTime
		}
		
	}	
	
	return 
}

public ham_reload(iEnt)
{
	new id = pev(iEnt, pev_owner)
	
	if( g_had_qb[id])
	{
		static Cur_BpAmmo
		Cur_BpAmmo = cs_get_user_bpammo(id, CSW_QB)
		
		if(Cur_BpAmmo > 0)
		{
			set_pdata_int(iEnt, 55, 0, 4)
			set_pdata_float(id, 83, get_pcvar_float(cvar_reloadtime), 4)
			set_pdata_float(iEnt, 48, get_pcvar_float(cvar_reloadtime) + 0.5, 4)
			set_pdata_float(iEnt, 46, get_pcvar_float(cvar_reloadtime) + 0.25, 4)
			set_pdata_float(iEnt, 47, get_pcvar_float(cvar_reloadtime) + 0.25, 4)
			set_pdata_int(iEnt, 54, 1, 4)
			
			set_weapon_anim(id, 3)			
		}
		
		return HAM_HANDLED
	}
	return HAM_IGNORED
	
}

public fw_SetModel_qb(entity, model[])
{
	if(!is_valid_ent(entity))
		return FMRES_IGNORED;
	
	static szClassName[33]
	entity_get_string(entity, EV_SZ_classname, szClassName, charsmax(szClassName))
	
	if(!equal(szClassName, "weaponbox"))
		return FMRES_IGNORED;
	
	static iOwner
	iOwner = entity_get_edict(entity, EV_ENT_owner)
	
	if(equal(model, "models/w_xm1014.mdl"))
	{
		static weapon
		weapon = find_ent_by_owner(-1, "weapon_xm1014", entity)
		
		if(!is_valid_ent(weapon))
			return FMRES_IGNORED;
		
		if(g_had_qb[iOwner])
		{
			entity_set_int(weapon, EV_INT_impulse, 120)
			g_had_qb[iOwner] = 0
			set_pev(weapon, pev_iuser3, cs_get_weapon_ammo(weapon))
			entity_set_model(entity, qb_w_model)
			
			return FMRES_SUPERCEDE
		}
	}
	
	return FMRES_IGNORED;
}

public fw_item_addtoplayer_qb(ent, id)
{
	if(!is_valid_ent(ent))
		return HAM_IGNORED
	
	
	if(entity_get_int(ent, EV_INT_impulse) == 120)
	{
		g_had_qb[id] = 1
		cs_set_weapon_ammo(ent, pev(ent, pev_iuser3))
		
		entity_set_int(id, EV_INT_impulse, 0)
		check_draw_weapon(id)
		
		return HAM_HANDLED
	}		
	
	return HAM_HANDLED
}

public ham_priattack(ent)
{
	static id
	id = pev(ent, pev_owner)
	
	if(g_had_qb[id])
	{
		if(cs_get_weapon_ammo(ent) > 0)
		{
			emit_sound(id, CHAN_WEAPON, qb_sound[4], 1.0, ATTN_NORM, 0, PITCH_NORM)
		}
		
		set_pdata_float(id, 83, 0.3, 4)
	}
}

public ham_postframe(iEnt)
{
	new id = pev(iEnt, pev_owner)
	
	if(g_had_qb[id])
	{
		static iBpAmmo ; iBpAmmo = get_pdata_int(id, 381, XTRA_OFS_PLAYER)
		static iClip ; iClip = get_pdata_int(iEnt, m_iClip, XTRA_OFS_WEAPON)
		static iMaxClip ; iMaxClip = get_pcvar_num(cvar_default_clip)
		
		if(get_pdata_int(iEnt, m_fInReload, XTRA_OFS_WEAPON) && get_pdata_float(id, m_flNextAttack, 5) <= 0.0 )
		{
			new j = min(iMaxClip - iClip, iBpAmmo)
			set_pdata_int(iEnt, m_iClip, iClip + j, XTRA_OFS_WEAPON)
			set_pdata_int(id, 381, iBpAmmo-j, XTRA_OFS_PLAYER)
			
			set_pdata_int(iEnt, m_fInReload, 0, XTRA_OFS_WEAPON)
			cs_set_weapon_ammo(iEnt, get_pcvar_num(cvar_default_clip))
			
			return
		}
	}
}

public ShowSalamanderIcon ( id ) {
	
	if ( user_has_weapon ( id, CSW_M249 ) && ( salamander [ id ] ) ) {
		
		new iconstatus;
		iconstatus = get_user_msgid ( "StatusIcon" );
		
		if ( ! ( pev ( id,pev_button ) & FL_ONGROUND ) )
		{    
			message_begin ( MSG_ONE,iconstatus,{ 0,0,0 },id );
			write_byte ( 1 ); // status (0=hide, 1=show, 2=flash)
			write_string ( "dmg_heat" ); // sprite name
			write_byte ( 255 ); // red
			write_byte ( 0 ); // green
			write_byte ( 0 ); // blue
			message_end ( );
		}
		
	}
	
	if ( get_user_weapon ( id ) == CSW_M249 && ( salamander [ id ] ) ) {
		
		new iconstatus;
		iconstatus = get_user_msgid ( "StatusIcon" );
		
		if ( ! ( pev ( id,pev_button ) & FL_ONGROUND ) )
		{    
			message_begin ( MSG_ONE,iconstatus,{ 0,0,0 },id );
			write_byte ( 2 ); // status (0=hide, 1=show, 2=flash)
			write_string ( "dmg_heat" ); // sprite name
			write_byte ( 255 ); // red
			write_byte ( 0 ); // green
			write_byte ( 0 ); // blue
			message_end ( );
		}
	}
	
	if ( !salamander [ id ] || !user_has_weapon ( id, CSW_M249 ) ) {
		
		new iconstatus;
		iconstatus = get_user_msgid ( "StatusIcon" );
		
		if ( ! ( pev ( id,pev_button ) & FL_ONGROUND ) )
		{    
			message_begin ( MSG_ONE,iconstatus,{ 0,0,0 },id );
			write_byte ( 0 ); // status (0=hide, 1=show, 2=flash)
			write_string ( "dmg_heat" ); // sprite name
			write_byte ( 255 ); // red
			write_byte ( 0 ); // green
			write_byte ( 0 ); // blue
			message_end ( );
		}
	}
	
}

public fw_spawn ( id ) {
	if(g_had_salamander[id])
		g_had_salamander[id] = false
	
	if(task_exists(id+TASK_FIRE)) remove_task(id+TASK_FIRE)
	if(task_exists(id+TASK_RELOAD)) remove_task(id+TASK_RELOAD)
	
	remove_entity_name(fire_classname)
}

stock make_blood(const Float:vTraceEnd[3], Float:Damage, hitEnt) {
	new bloodColor = ExecuteHam(Ham_BloodColor, hitEnt);
	if(bloodColor == -1)
		return;
	
	new amount = floatround(Damage);
	
	amount *= 2; //according to HLSDK
	
	message_begin(MSG_BROADCAST, SVC_TEMPENTITY);
	write_byte(TE_BLOODSPRITE);
	write_coord(floatround(vTraceEnd[0]));
	write_coord(floatround(vTraceEnd[1]));
	write_coord(floatround(vTraceEnd[2]));
	write_short(BloodSpray);
	write_short(BloodDrop);
	write_byte(bloodColor);
	write_byte(min(max(3, amount/10), 16));
	message_end();
}

// Make knockback
public make_knockback(Victim, Float:origin[3], Float:maxspeed) {
	// Get and set velocity
	new Float:fVelocity[3];
	kickback(Victim, origin, maxspeed, fVelocity);
	entity_set_vector(Victim, EV_VEC_velocity, fVelocity);
	
	return(1);
}

// Extra calulation for knockback
stock kickback(ent, Float:fOrigin[3], Float:fSpeed, Float:fVelocity[3]) {
	// Find origin
	new Float:fEntOrigin[3];
	entity_get_vector(ent, EV_VEC_origin, fEntOrigin);
	
	// Do some calculations
	new Float:fDistance[3];
	fDistance[0] = fEntOrigin[0] - fOrigin[0];
	fDistance[1] = fEntOrigin[1] - fOrigin[1];
	fDistance[2] = fEntOrigin[2] - fOrigin[2];
	new Float:fTime =(vector_distance(fEntOrigin,fOrigin) / fSpeed);
	fVelocity[0] = fDistance[0] / fTime;
	fVelocity[1] = fDistance[1] / fTime;
	fVelocity[2] = fDistance[2] / fTime;
	
	return(fVelocity[0] && fVelocity[1] && fVelocity[2]);
}

stock death_message(Killer, Victim, ScoreBoard, const Weapon[]) {
	// Block death msg
	set_msg_block(get_user_msgid("DeathMsg"), BLOCK_SET);
	ExecuteHamB(Ham_Killed, Victim, Killer, 2);
	set_msg_block(get_user_msgid("DeathMsg"), BLOCK_NOT);
	
	// Death
	make_deathmsg(Killer, Victim, 0, Weapon);
	cs_set_user_money(Killer, cs_get_user_money(Killer) + 300);
	
	// Update score board
	if(ScoreBoard) {
		message_begin(MSG_BROADCAST, get_user_msgid("ScoreInfo"));
		write_byte(Killer); // id
		write_short(pev(Killer, pev_frags)); // frags
		write_short(cs_get_user_deaths(Killer)); // deaths
		write_short(0); // class?
		write_short(get_user_team(Killer)); // team
		message_end();
		
		message_begin(MSG_BROADCAST, get_user_msgid("ScoreInfo"));
		write_byte(Victim); // id
		write_short(pev(Victim, pev_frags)); // frags
		write_short(cs_get_user_deaths(Victim)); // deaths
		write_short(0); // class?
		write_short(get_user_team(Victim)); // team
		message_end();
	}
}

stock get_damage_body(body, Float:damage) {
	switch(body) {
		case HIT_HEAD: damage *= 4.0;
			case HIT_STOMACH: damage *= 1.1;
			case HIT_CHEST: damage *= 1.5;
			case HIT_LEFTARM: damage *= 0.77;
			case HIT_RIGHTARM: damage *= 0.77;
			case HIT_LEFTLEG: damage *= 0.75;
			case HIT_RIGHTLEG: damage *= 0.75;
			default: damage *= 1.0;
	}
	
	return floatround(damage);
}	

stock fm_get_user_bpammo(index, weapon) {
	static offset
	switch(weapon) {
		case CSW_AWP: offset = OFFSET_AMMO_338MAGNUM
			case CSW_SCOUT, CSW_AK47, CSW_G3SG1: offset = OFFSET_AMMO_762NATO
			case CSW_M249: offset = OFFSET_AMMO_556NATOBOX
			case CSW_FAMAS, CSW_M4A1, CSW_AUG, 
			CSW_SG550, CSW_GALI, CSW_SG552: offset = OFFSET_AMMO_556NATO
		case CSW_M3, CSW_XM1014: offset = OFFSET_AMMO_BUCKSHOT
			case CSW_USP, CSW_UMP45, CSW_MAC10: offset = OFFSET_AMMO_45ACP
			case CSW_FIVESEVEN, CSW_P90: offset = OFFSET_AMMO_57MM
			case CSW_DEAGLE: offset = OFFSET_AMMO_50AE
			case CSW_P228: offset = OFFSET_AMMO_357SIG
			case CSW_GLOCK18, CSW_TMP, CSW_ELITE, 
			CSW_MP5NAVY: offset = OFFSET_AMMO_9MM
		default: offset = 0
	}
	return offset ? get_pdata_int(index, offset) : 0
}

stock fm_set_user_bpammo(index, weapon, amount) {
	static offset
	switch(weapon) {
		case CSW_AWP: offset = OFFSET_AMMO_338MAGNUM
			case CSW_SCOUT, CSW_AK47, CSW_G3SG1: offset = OFFSET_AMMO_762NATO
			case CSW_M249: offset = OFFSET_AMMO_556NATOBOX
			case CSW_FAMAS, CSW_M4A1, CSW_AUG, 
			CSW_SG550, CSW_GALI, CSW_SG552: offset = OFFSET_AMMO_556NATO
		case CSW_M3, CSW_XM1014: offset = OFFSET_AMMO_BUCKSHOT
			case CSW_USP, CSW_UMP45, CSW_MAC10: offset = OFFSET_AMMO_45ACP
			case CSW_FIVESEVEN, CSW_P90: offset = OFFSET_AMMO_57MM
			case CSW_DEAGLE: offset = OFFSET_AMMO_50AE
			case CSW_P228: offset = OFFSET_AMMO_357SIG
			case CSW_GLOCK18, CSW_TMP, CSW_ELITE, 
			CSW_MP5NAVY: offset = OFFSET_AMMO_9MM
		default: offset = 0
	}
	
	if(offset) 
		set_pdata_int(index, offset, amount)
	
	return 1
}

// Get Weapon Entity's CSW_ ID
stock fm_get_weapon_ent_id(ent) {
	return get_pdata_int(ent, OFFSET_WEAPONID, 4);
}

// Get Weapon Entity's Owner
stock fm_get_weapon_ent_owner(ent) {
	return get_pdata_cbase(ent, 41, 4);
}

// Drop all primary guns
stock drop_primary_weapons(Player) {
	// Get user weapons
	static weapons[32], num, i, weaponid;
	num = 0; // reset passed weapons count(bugfix)
	get_user_weapons(Player, weapons, num);
	
	// Loop through them and drop primaries
	for(i = 0; i < num; i++) {
		// Prevent re-indexing the array
		weaponid = weapons [i];
		
		// We definetely are holding primary gun
		if(((1<<weaponid) & PRIMARY_WEAPONS_BITSUM)) {
			// Get weapon entity
			static wname[32];
			get_weaponname(weaponid, wname, charsmax(wname));
			
			// Player drops the weapon and looses his bpammo
			engclient_cmd(Player, "drop", wname);
		}
	}
}

public RefreshWeapons ( id ) {
	
	strip_user_weapons ( id );
	give_item ( id, "weapon_knife" );
	remove_dragoncannon ( id );
	
	g_had_qb [ id ] = 0;
	dual_mp5 [ id ] = false;
	k1ases_weapon [ id ] = false;
	salamander [ id ] = false;
	SalamanderLimit [ id ] = false;
	katana_knife [ id ] = false;
	double_katana_knife [ id ] = false;
	super_knife [ id ] = false;
	infinity_knife [ id ] = false;
	elf_knife [ id ] = false;
	ignes_knife [ id ] = false;
	vip_axe_knife [ id ] = false;
	trainer [ id ] = false;
	thompson [ id ] = false;
	uspx [ id ] = false;
	hunter [ id ] = false;
	shaman [ id ] = false;
	mage [ id ] = false;
	rogue [ id ] = false;
	warrior [ id ] = false;
	druid [ id ] = false;
	deklowaz [ id ] = false;
	strike_grenade [ id ] = false;
	HasPower[id] = 0;
	Drop_Cooldown[id] = 0;
	UserHaveQuad [ id ] = false;
	UserHaveDragon [ id ] = false;
	g_hasM79[id] = false
	g_canShoot[id] = false
	g_last_shot_time[id] = 0.0
	grenade_count[id] = 0
	hasOnHandM79[id] = false
	remove_icon(id );
	UserHaveM79 [ id ] = false;
	
	HasSpeed[id] = false;
	HasTeleport[id] = false;
	
	UserHasChoosed [ id ] = false;
	UserHaveHeGrenade [ id ] = false;
	UserHaveGodMode [ id ] = false;
	UserHaveSuperKnife [ id ] = false;
	UserHaveNoClip [ id ] = false;
	UserHaveHpAndAp [ id ] = false;
	UserHaveDualMp5 [ id ] = false;
	
	if( get_user_flags(id) & VIP_ACCESS )
	{
		set_user_scoreattrib(id, 4);
	}
	
	VipBonus ( id );
	
	if ( get_user_team ( id ) == 2 ) {
		give_item ( id, "weapon_smokegrenade" );
		flare [ id ] = true;
	}
	
	ShowHud ( id );
	
	remove_task(id);
	HE_Cooldown[id] = 0;
	GodMode_Cooldown[id] = 0;
	GodMode_DurationCooldown[id] = 0;
	Drop_Cooldown[id] = 0;
	Freeze_Cooldown[id] = 0;
	Freeze_Cooldown[id] = 0;
	remove_freeze ( id );
	BeamRemove ( id );
	Drag_Cooldown[id] = 0;
	if (Hooked[id]) {
		DragEnd ( id );
	}
	
	Not_Cooldown[id] = false;
	Teleport_Cooldown[id] = 0;
}


public cmdCheckVIP ( id ) {
	
	if ( get_user_team ( id ) == 1 && is_user_alive ( id ) ) {
		
		if ( UserHasChoosed [ id ] ) {
			
			ColorChat ( id, GREEN, "%s Ti-ai ales runda aceasta puterea .", szPrefix );
			return 1;
		}
		
		else if ( !UserHasChoosed [ id ] ) {
			
			set_task ( 0.1, "cmdShowTVIPMenu", id );
			
		}
	}
	
	if ( get_user_team ( id ) == 2 && is_user_alive ( id ) ) {
		
		if ( UserHasChoosed [ id ] ) {
			
			ColorChat ( id, GREEN, "%s Ti-ai ales runda aceasta puterea .", szPrefix );
			return 1;
		}
		
		else if ( !UserHasChoosed [ id ] ) {
			
			set_task ( 0.1, "cmdShowCTVIPMenu", id );
			
		}
	}
	
	return 1
	
}

public cmdClassMenu ( id, level, cid ) {
	
	ShowHud ( id );
	
	if ( get_user_team ( id ) == 1 ) {
		
		
		new menu = menu_create ( "\rFurien Class \yMenu", "Class_Giver" );
		
		if ( Level [ id ] >= 0 || Level [ id ] >= 1 || Level [ id ] >= 2 || Level [ id ] >= 3 || Level [ id ] >= 4 ) { 
			menu_additem ( menu, "\yTrainer", "1", 0 );
		}
		
		else if ( Level [ id ] <= 0 || Level [ id ] <= 1 || Level [ id ] <= 2 || Level [ id ] <= 3 || Level [ id ] <= 4 ) {
			menu_additem ( menu, "\yTrainer \y[ \rLOCKED \y]", "1", ADMIN_RCON );
		}
		
		if ( Level [ id ] >= 5 || Level [ id ] >= 6 || Level [ id ] >= 7 || Level [ id ] >= 8 ) { 
			menu_additem ( menu, "\yAgnos", "2", 0 );
		}
		
		else if ( Level [ id ] <= 5 || Level [ id ] <= 6 || Level [ id ] <= 7 || Level [ id ] <= 8 ) {
			menu_additem ( menu, "\yAgnos \y[ \rLOCKED \y]", "2", ADMIN_RCON );
		}
		
		if ( Level [ id ] >= 9 || Level [ id ] >= 10 || Level [ id ] >= 11 || Level [ id ] >= 12 ) { 
			menu_additem ( menu, "\yXFother", "3", 0 );
		}
		
		else if ( Level [ id ] <= 9 || Level [ id ] <= 10 || Level [ id ] <= 11 || Level [ id ] <= 12 ) { 
			menu_additem ( menu, "\yXFother \y[ \rLOCKED \y]", "3", ADMIN_RCON );
		}
		
		if ( Level [ id ] >= 13 || Level [ id ] >= 14 || Level [ id ] >= 15 || Level [ id ] >= 16 ) { 
			menu_additem ( menu, "\ySamurai", "4", 0 );
		}
		
		else if ( Level [ id ] <= 13 || Level [ id ] <= 14 || Level [ id ] <= 15 || Level [ id ] <= 16 ) {
			menu_additem ( menu, "\ySamurai \y[ \rLOCKED \y]", "4", ADMIN_RCON );
		}
		
		if ( Level [ id ] >= 17 || Level [ id ] >= 18 || Level [ id ] >= 19 || Level [ id ] >= 20 ) { 
			menu_additem ( menu, "\yExtra Samurai", "5", 0 );
		}
		
		else if ( Level [ id ] <= 17 || Level [ id ] <= 18 || Level [ id ] <= 19 || Level [ id ] <= 20 ) { 
			menu_additem ( menu, "\yExtra Samurai \y[ \rLOCKED \y]", "5", ADMIN_RCON );
		}
		
		if ( Level [ id ] >= 21 || Level [ id ] >= 22 || Level [ id ] >= 23 || Level [ id ] >= 24 ) { 
			menu_additem ( menu, "\yIgnes", "6", 0 );
		}
		
		else if ( Level [ id ] <= 21 || Level [ id ] <= 22 || Level [ id ] <= 23 || Level [ id ] <= 24 ) {
			menu_additem ( menu, "\yIgnes \y[ \rLOCKED \y]", "6", ADMIN_RCON );
		}
		
		if ( Level [ id ] >= 25 || Level [ id ] >= 26 || Level [ id ] >= 27 || Level [ id ] >= 28 ) { 
			menu_additem ( menu, "\yElf", "7", 0 );
		}
		
		else if ( Level [ id ] <= 25 || Level [ id ] <= 26 || Level [ id ] <= 27 || Level [ id ] <= 28 ) { 
			menu_additem ( menu, "\yElf \y[ \rLOCKED \y]", "7", ADMIN_RCON );
		}
		
		if ( Level [ id ] >= 29 || Level [ id ] >= 30 ) { 
			menu_additem ( menu, "\yAlcadeias", "8", 0 );
		}
		
		else if ( Level [ id ] <= 29 || Level [ id ] <= 30 ) {
			menu_additem ( menu, "\yAlcadeias \y[ \rLOCKED \y]", "8", ADMIN_RCON );
		}
		
		menu_setprop ( menu, MPROP_EXIT, MEXIT_ALL );
		menu_display ( id, menu, 0 );
		
		
		return 1;
	}
	
	else if ( get_user_team ( id ) == 2 ) {
		
		
		new menu = menu_create ( "\rAntiFurien Class \yMenu", "Class_Giver" );
		
		if ( Level [ id ] >= 0 || Level [ id ] >= 1 || Level [ id ] >= 2 || Level [ id ] >= 3 || Level [ id ] >= 4 ) { 
			menu_additem ( menu, "\yDruid", "1", 0 );
		}
		
		else if ( Level [ id ] <= 0 || Level [ id ] <= 1 || Level [ id ] <= 2 || Level [ id ] <= 3 || Level [ id ] <= 4 ) { 
			menu_additem ( menu, "\yDruid \y[ \rLOCKED \y]", "1", ADMIN_RCON );
			
		}
		
		if ( Level [ id ] >= 5 || Level [ id ] >= 6 || Level [ id ] >= 7 || Level [ id ] >= 8 ) { 
			menu_additem ( menu, "\yHunter", "2", 0 );
		}
		
		else if ( Level [ id ] <= 5 || Level [ id ] <= 6 || Level [ id ] <= 7 || Level [ id ] <= 8 ) { 
			menu_additem ( menu, "\yHunter \y[ \rLOCKED \y]", "2", ADMIN_RCON );
		}
		
		if ( Level [ id ] >= 9 || Level [ id ] >= 10 || Level [ id ] >= 11 || Level [ id ] >= 12 ) { 
			menu_additem ( menu, "\yMage", "3", 0 );
		}
		
		else if ( Level [ id ] <= 9 || Level [ id ] <= 10 || Level [ id ] <= 11 || Level [ id ] <= 12 ) { 
			menu_additem ( menu, "\yMage \y[ \rLOCKED \y]", "3", ADMIN_RCON );
		}
		
		if ( Level [ id ] >= 13 || Level [ id ] >= 14 || Level [ id ] >= 15 || Level [ id ] >= 16 ) { 
			menu_additem ( menu, "\yRogue", "4", 0 );
		}
		
		else if ( Level [ id ] <= 13 || Level [ id ] <= 14 || Level [ id ] <= 15 || Level [ id ] <= 16 ) { 
			menu_additem ( menu, "\yRogue \y[ \rLOCKED \y]", "4", ADMIN_RCON );
		}
		
		if ( Level [ id ] >= 17 || Level [ id ] >= 18 || Level [ id ] >= 19 || Level [ id ] >= 20 ) { 
			menu_additem ( menu, "\yShaman", "5", 0 );
		}
		
		else if ( Level [ id ] <= 17 || Level [ id ] <= 18 || Level [ id ] <= 19 || Level [ id ] <= 20 ) { 
			menu_additem ( menu, "\yShaman \y[ \rLOCKED \y]", "5", ADMIN_RCON );
		}
		
		if ( Level [ id ] >= 21 || Level [ id ] >= 22 || Level [ id ] >= 23 || Level [ id ] >= 24 ) { 
			menu_additem ( menu, "\yWarlock", "6", 0 );
		}
		
		else if ( Level [ id ] <= 21 || Level [ id ] <= 22 || Level [ id ] <= 23 || Level [ id ] <= 24 ) { 
			menu_additem ( menu, "\yWarlock \y[ \rLOCKED \y]", "6", ADMIN_RCON );
		}
		
		if ( Level [ id ] >= 25 || Level [ id ] >= 26 || Level [ id ] >= 27 || Level [ id ] >= 28 ) { 
			menu_additem ( menu, "\yWarrior", "7", 0 );
		}
		
		else if ( Level [ id ] <= 25 || Level [ id ] <= 26 || Level [ id ] <= 27 || Level [ id ] <= 28 ) { 
			menu_additem ( menu, "\yWarrior \y[ \rLOCKED \y]", "7", ADMIN_RCON );
		}
		
		if ( Level [ id ] >= 29 || Level [ id ] >= 30 ) { 
			menu_additem ( menu, "\yDeklowaz", "8", 0 );
		}
		
		else if ( Level [ id ] <= 29 || Level [ id ] <= 30 ) { 
			menu_additem ( menu, "yDeklowaz \y[ \rLOCKED \y]", "8", ADMIN_RCON );
		}
		
		menu_setprop ( menu, MPROP_EXIT, MEXIT_ALL );
		menu_display ( id, menu, 0 );
		
		
		return 1;
	}
	
	return 1;
}

public Class_Giver ( id, menu, item ) {
	
	if( item == MENU_EXIT )
	{
		return 1;
	}
	
	new data [ 6 ], szName [ 64 ];
	new access, callback;
	menu_item_getinfo ( menu, item, access, data,charsmax ( data ), szName,charsmax ( szName ), callback );
	new key = str_to_num ( data );
	
	switch(key)
	{
		
		case 1:
		{
			if ( get_user_team ( id ) == 1 ) {
				if ( g_Menu [ id ] >= 3 ) {
					ColorChat ( id, GREEN, "%s Ti-ai ales odata clasa runda aceasta .", szPrefix );
				}
				
				else {
					
					ColorChat ( id, GREEN, "%s Clasa ta este acum^4 Trainer^3 .", szPrefix );
					
					trainer [ id ] = true;
					katana_knife [ id ] = false;
					double_katana_knife [ id ] = false;
					super_knife [ id ] = false;
					infinity_knife [ id ] = false;
					ignes_knife [ id ] = false;
					elf_knife [ id ] = false;
					thompson [ id ] = false;
					uspx [ id ] = false;
					hunter [ id ] = false;
					shaman [ id ] = false;
					mage [ id ] = false;
					rogue [ id ] = false;
					warrior [ id ] = false;
					deklowaz [ id ] = false;
					druid [ id ] = false;
					strike_grenade [ id ] = false;
					strike_grenade2 [ id ] = false;
					strike_grenade3 [ id ] = false;
					super_knife_shop [ id ] = false;
					super_knife_shop2 [ id ] = false;
					set_user_gravity ( id, 0.7 );
					give_item ( id, "weapon_flashbang" );
					//set_pev ( id, pev_viewmodel2, trainer_v_model );
					//set_pev ( id, pev_weaponmodel2, trainer_p_model );
					++g_Menu [ id ];
					++g_Menu [ id ];
				}
				
				
			}
			
			
			if ( get_user_team ( id ) == 2 ) {
				if ( g_Menu [ id ] >= 3 ) {
					ColorChat ( id, GREEN, "%s Ti-ai ales odata clasa runda aceasta .", szPrefix );
				}
				
				else {
					
					ColorChat ( id, GREEN, "%s Clasa ta este acum^4 Druid^3 .", szPrefix );
					give_item ( id, "weapon_xm1014" );
					give_item ( id, "weapon_usp" );
					set_user_health ( id, 105 );
					set_user_armor ( id, 30 );
					cs_set_user_bpammo ( id, CSW_USP, 100 );
					cs_set_user_bpammo ( id, CSW_XM1014, 100 );
					trainer [ id ] = false;
					katana_knife [ id ] = false;
					double_katana_knife [ id ] = false;
					super_knife [ id ] = false;
					infinity_knife [ id ] = false;
					ignes_knife [ id ] = false;
					elf_knife [ id ] = false;
					thompson [ id ] = false;
					uspx [ id ] = true;
					hunter [ id ] = false;
					shaman [ id ] = false;
					mage [ id ] = false;
					rogue [ id ] = false;
					warrior [ id ] = false;
					deklowaz [ id ] = false;
					druid [ id ] = true;
					super_knife_shop [ id ] = false;
					super_knife_shop2 [ id ] = false;
					++g_Menu [ id ];
					++g_Menu [ id ];
					
				}
			}
		}
		
		case 2:
		{
			if ( get_user_team ( id ) == 1 ) {
				if ( g_Menu [ id ] >= 3 ) {
					ColorChat ( id, GREEN, "%s Ti-ai ales odata clasa runda aceasta .", szPrefix );
				}
				
				else {
					
					ColorChat ( id, GREEN, "%s Clasa ta este acum^4 Agnos^3 .", szPrefix );
					
					
					
					
					
					katana_knife [ id ] = false;
					trainer [ id ] = false;
					double_katana_knife [ id ] = false;
					super_knife [ id ] = false;
					
					infinity_knife [ id ] = true;
					ignes_knife [ id ] = false;
					elf_knife [ id ] = false;
					thompson [ id ] = false;
					uspx [ id ] = false;
					hunter [ id ] = false;
					shaman [ id ] = false;
					mage [ id ] = false;
					rogue [ id ] = false;
					warrior [ id ] = false;
					deklowaz [ id ] = false;
					strike_grenade [ id ] = false;
					strike_grenade2 [ id ] = false;
					strike_grenade3 [ id ] = false;
					druid [ id ] = false;
					super_knife_shop [ id ] = false;
					super_knife_shop2 [ id ] = false;
					set_user_gravity ( id, 0.6 );
					set_user_health ( id, 120 );
					set_user_armor ( id, 60 );
					give_item ( id, "weapon_flashbang" );
					//set_pev ( id, pev_viewmodel2, infinity_knife_v_model );
					//set_pev ( id, pev_weaponmodel2, infinity_knife_p_model );
					++g_Menu [ id ];
					++g_Menu [ id ];
					
				}
			}
			
			if ( get_user_team ( id ) == 2 ) {
				if ( g_Menu [ id ] >= 3 ) {
					ColorChat ( id, GREEN, "%s Ti-ai ales odata clasa runda aceasta .", szPrefix );
				}
				
				else {
					
					ColorChat ( id, GREEN, "%s Clasa ta este acum^4 Hunter^3 .", szPrefix );
					give_item ( id, "weapon_p90" );
					give_item ( id, "weapon_usp" );
					set_user_health ( id, 120 );
					set_user_armor ( id, 60 );
					cs_set_user_bpammo ( id, CSW_USP, 100 );
					cs_set_user_bpammo ( id, CSW_P90, 200 );
					trainer [ id ] = false;
					katana_knife [ id ] = false;
					double_katana_knife [ id ] = false;
					super_knife [ id ] = false;
					infinity_knife [ id ] = false;
					ignes_knife [ id ] = false;
					elf_knife [ id ] = false;
					thompson [ id ] = false;
					uspx [ id ] = true;
					hunter [ id ] = true;
					shaman [ id ] = false;
					mage [ id ] = false;
					rogue [ id ] = false;
					warrior [ id ] = false;
					deklowaz [ id ] = false;
					druid [ id ] = false;
					super_knife_shop [ id ] = false;
					super_knife_shop2 [ id ] = false;
					++g_Menu [ id ];
					++g_Menu [ id ];
					
				}
			}
		}
		
		case 3:
		{
			if ( get_user_team ( id ) == 1 ) {
				if ( g_Menu [ id ] >= 3 ) {
					ColorChat ( id, GREEN, "%s Ti-ai ales odata clasa runda aceasta .", szPrefix );
				}
				
				else {
					
					ColorChat ( id, GREEN, "%s Clasa ta este acum^4 XFother^3.^4", szPrefix );
					
					super_knife [ id ] = true;
					katana_knife [ id ] = false;
					trainer [ id ] = false;
					double_katana_knife [ id ] = false;
					infinity_knife [ id ] = false;
					ignes_knife [ id ] = false;
					thompson [ id ] = false;
					uspx [ id ] = false;
					hunter [ id ] = false;
					shaman [ id ] = false;
					mage [ id ] = false;
					rogue [ id ] = false;
					warrior [ id ] = false;
					deklowaz [ id ] = false;
					elf_knife [ id ] = false;
					druid [ id ] = false;
					strike_grenade [ id ] = true;
					super_knife_shop [ id ] = false;
					super_knife_shop2 [ id ] = false;
					set_user_gravity ( id, 0.6 );
					set_user_health ( id, 120 );
					set_user_armor ( id, 60 );
					give_item ( id, "weapon_hegrenade" );
					give_item ( id, "weapon_flashbang" );
					//set_pev ( id, pev_viewmodel2, super_knife_v_model );
					//set_pev ( id, pev_weaponmodel2, super_knife_p_model );
					++g_Menu [ id ];
					++g_Menu [ id ];
					
				}
			}
			
			if ( get_user_team ( id ) == 2 ) {
				if ( g_Menu [ id ] >= 3 ) {
					ColorChat ( id, GREEN, "%s Ti-ai ales odata clasa runda aceasta .", szPrefix );
				}
				
				else {
					
					ColorChat ( id, GREEN, "%s Clasa ta este acum^4 Mage^3 .", szPrefix );
					give_item ( id, "weapon_galil" );
					give_item ( id, "weapon_usp" );
					set_user_gravity ( id, 0.7 );
					set_user_health ( id, 120 );
					set_user_armor ( id, 60 );
					cs_set_user_bpammo ( id, CSW_USP, 100 );
					cs_set_user_bpammo ( id, CSW_GALIL, 200 );
					trainer [ id ] = false;
					katana_knife [ id ] = false;
					double_katana_knife [ id ] = false;
					super_knife [ id ] = false;
					infinity_knife [ id ] = false;
					ignes_knife [ id ] = false;
					elf_knife [ id ] = false;
					thompson [ id ] = false;
					druid [ id ] = false;
					uspx [ id ] = true;
					hunter [ id ] = false;
					shaman [ id ] = false;
					mage [ id ] = true;
					rogue [ id ] = false;
					warrior [ id ] = false;
					deklowaz [ id ] = false;
					super_knife_shop [ id ] = false;
					super_knife_shop2 [ id ] = false;
					++g_Menu [ id ];
					++g_Menu [ id ];
					
				}
			}
		}
		
		case 4:
		{
			if ( get_user_team ( id ) == 1 ) {
				if ( g_Menu [ id ] >= 3 ) {
					ColorChat ( id, GREEN, "%s Ti-ai ales odata clasa runda aceasta .", szPrefix );
				}
				
				else {
					
					ColorChat ( id, GREEN, "%s Clasa ta este acum^4 Samurai^3 + puterea de a arunca armele inamicului .^4", szPrefix );
					ColorChat ( id, GREEN, "%s Pentru activare apasa tasta^4 V^3 .^4", szPrefix );
					
					
					
					
					
					katana_knife [ id ] = true;
					double_katana_knife [ id ] = false;
					super_knife [ id ] = false;
					trainer [ id ] = false;
					infinity_knife [ id ] = false;
					ignes_knife [ id ] = false;
					elf_knife [ id ] = false;
					thompson [ id ] = false;
					uspx [ id ] = false;
					hunter [ id ] = false;
					shaman [ id ] = false;
					druid [ id ] = false;
					mage [ id ] = false;
					rogue [ id ] = false;
					warrior [ id ] = false;
					strike_grenade2 [ id ] = true;
					deklowaz [ id ] = false;
					super_knife_shop [ id ] = false;
					super_knife_shop2 [ id ] = false;
					set_user_gravity ( id, 0.6 );
					set_user_health ( id, 135 );
					set_user_armor ( id, 90 );
					give_item ( id, "weapon_hegrenade" );
					give_item ( id, "weapon_flashbang" );
					client_cmd(id, "bind v power");
					remove_task(id);
					if ( Drop_Cooldown [ id ] ) {
						set_task ( 0.1, "DropShowHUD", id );
					}
					HasPower [ id ] = 4;
					//set_pev ( id, pev_viewmodel2, katana_knife_v_model );
					//set_pev ( id, pev_weaponmodel2, katana_knife_p_model );
					++g_Menu [ id ];
					++g_Menu [ id ];
					
					
					
					
				}
			}
			
			if ( get_user_team ( id ) == 2 ) {
				if ( g_Menu [ id ] >= 3 ) {
					ColorChat ( id, GREEN, "%s Ti-ai ales odata clasa runda aceasta .", szPrefix );
				}
				
				else {
					
					ColorChat ( id, GREEN, "%s Clasa ta este acum^4 Rogue^3 + puterea de a trage inamicul^4 [ drag ]^3 .^4", szPrefix );
					ColorChat ( id, GREEN, "%s Pentru activare apasa tasta^4 V^3 .^4", szPrefix );
					give_item ( id, "weapon_famas" );
					give_item ( id, "weapon_usp" );
					set_user_gravity ( id, 0.7 );
					set_user_health ( id, 130 );
					set_user_armor ( id, 80 );
					cs_set_user_bpammo ( id, CSW_USP, 100 );
					cs_set_user_bpammo ( id, CSW_FAMAS, 200 );
					trainer [ id ] = false;
					katana_knife [ id ] = false;
					double_katana_knife [ id ] = false;
					super_knife [ id ] = false;
					infinity_knife [ id ] = false;
					ignes_knife [ id ] = false;
					elf_knife [ id ] = false;
					thompson [ id ] = false;
					uspx [ id ] = true;
					hunter [ id ] = false;
					shaman [ id ] = false;
					mage [ id ] = false;
					rogue [ id ] = true;
					druid [ id ] = false;
					warrior [ id ] = false;
					deklowaz [ id ] = false;
					super_knife_shop [ id ] = false;
					super_knife_shop2 [ id ] = false;
					++g_Menu [ id ];
					++g_Menu [ id ];
					client_cmd(id, "bind v +drag");
					remove_task(id);
					if(Drag_Cooldown[id]) {
						set_task ( 0.1, "DragShowHUD", id );
					}
					HasPower[id] = 6;
				}
			}
		}
		
		case 5:
		{
			if ( get_user_team ( id ) == 1 ) {
				if ( g_Menu [ id ] >= 3 ) {
					ColorChat ( id, GREEN, "%s Ti-ai ales odata clasa runda aceasta .", szPrefix );
				}
				
				else {
					
					ColorChat ( id, GREEN, "%s Clasa ta este acum^4 Extra Samurai^3 + puterea de a arunca armele inamicului .^4", szPrefix );
					ColorChat ( id, GREEN, "%s Pentru activare apasa tasta^4 V^3 .^4", szPrefix );
					
					
					double_katana_knife [ id ] = true;
					katana_knife [ id ] = false;
					trainer [ id ] = false;
					super_knife [ id ] = false;
					infinity_knife [ id ] = false;
					ignes_knife [ id ] = false;
					elf_knife [ id ] = false;
					thompson [ id ] = false;
					uspx [ id ] = false;
					hunter [ id ] = false;
					shaman [ id ] = false;
					mage [ id ] = false;
					druid [ id ] = false;
					rogue [ id ] = false;
					warrior [ id ] = false;
					deklowaz [ id ] = false;
					strike_grenade2 [ id ] = true;
					super_knife_shop [ id ] = false;
					super_knife_shop2 [ id ] = false;
					set_user_gravity ( id, 0.5 );
					set_user_health ( id, 145 );
					set_user_armor ( id, 105 );
					give_item ( id, "weapon_hegrenade" );
					give_item ( id, "weapon_flashbang" );
					give_item ( id, "weapon_flashbang" );
					client_cmd(id, "bind v power");
					remove_task(id);
					if ( Drop_Cooldown [ id ] ) {
						set_task ( 0.1, "DropShowHUD", id );
					}
					HasPower [ id ] = 4;
					//set_pev ( id, pev_viewmodel2, double_katana_v_knife_model );
					//set_pev ( id, pev_weaponmodel2, double_katana_p_knife_model );
					++g_Menu [ id ];
					++g_Menu [ id ];
					
				}
			}
			
			if ( get_user_team ( id ) == 2 ) {
				if ( g_Menu [ id ] >= 3 ) {
					ColorChat ( id, GREEN, "%s Ti-ai ales odata clasa runda aceasta .", szPrefix );
				}
				
				else {
					
					ColorChat ( id, GREEN, "%s Clasa ta este acum^4 Shaman^3 + puterea de a trage inamicul^4 [ drag ]^3 .^4", szPrefix );
					ColorChat ( id, GREEN, "%s Pentru activare apasa tasta^4 V^3 .^4", szPrefix );
					give_item ( id, "weapon_sg552" );
					give_item ( id, "weapon_usp" );
					set_user_gravity ( id, 0.7 );
					set_user_health ( id, 145 );
					set_user_armor ( id, 90 );
					cs_set_user_bpammo ( id, CSW_USP, 100 );
					cs_set_user_bpammo ( id, CSW_SG552, 200 );
					trainer [ id ] = false;
					katana_knife [ id ] = false;
					double_katana_knife [ id ] = false;
					super_knife [ id ] = false;
					infinity_knife [ id ] = false;
					ignes_knife [ id ] = false;
					elf_knife [ id ] = false;
					thompson [ id ] = false;
					uspx [ id ] = true;
					hunter [ id ] = false;
					shaman [ id ] = true;
					mage [ id ] = false;
					rogue [ id ] = false;
					druid [ id ] = false;
					warrior [ id ] = false;
					deklowaz [ id ] = false;
					super_knife_shop [ id ] = false;
					super_knife_shop2 [ id ] = false;
					++g_Menu [ id ];
					++g_Menu [ id ];
					client_cmd(id, "bind v +drag");
					remove_task(id);
					if(Drag_Cooldown[id]) {
						set_task ( 0.1, "DragShowHUD", id );
					}
					HasPower[id] = 6;
					
				}
			}
		}
		
		case 6:
		{
			if ( get_user_team ( id ) == 1 ) {
				if ( g_Menu [ id ] >= 3 ) {
					ColorChat ( id, GREEN, "%s Ti-ai ales odata clasa runda aceasta .", szPrefix );
				}
				
				else {
					
					ColorChat ( id, GREEN, "%s Clasa ta este acum^4 Ignes^3 + puterea de a ingheta inamicul .^4", szPrefix );
					ColorChat ( id, GREEN, "%s Pentru activare apasa tasta^4 V^3 .^4", szPrefix );
					
					
					katana_knife [ id ] = false;
					double_katana_knife [ id ] = false;
					super_knife [ id ] = false;
					trainer [ id ] = false;
					thompson [ id ] = false;
					uspx [ id ] = false;
					hunter [ id ] = false;
					shaman [ id ] = false;
					mage [ id ] = false;
					rogue [ id ] = false;
					warrior [ id ] = false;
					deklowaz [ id ] = false;
					
					ignes_knife [ id ] = true;
					elf_knife [ id ] = false;
					vip_axe_knife [ id ] = false;
					druid [ id ] = false;
					strike_grenade2 [ id ] = true;
					super_knife_shop [ id ] = false;
					super_knife_shop2 [ id ] = false;
					set_user_gravity ( id, 0.5 );
					set_user_health ( id, 185 );
					set_user_armor ( id, 150 );
					give_item ( id, "weapon_hegrenade" );
					give_item ( id, "weapon_flashbang" );
					give_item ( id, "weapon_flashbang" );
					client_cmd(id, "bind v power");
					remove_task(id);
					if(Freeze_Cooldown[id]) {
						set_task ( 0.1, "FreezeShowHUD", id );
					}
					HasPower[id] = 5;
					//set_pev ( id, pev_viewmodel2, ignes_knife_model );
					++g_Menu [ id ];
					++g_Menu [ id ];
				}
			}
			
			if ( get_user_team ( id ) == 2 ) {
				if ( g_Menu [ id ] >= 3 ) {
					ColorChat ( id, GREEN, "%s Ti-ai ales odata clasa runda aceasta .", szPrefix );
				}
				
				else {
					
					ColorChat ( id, GREEN, "%s Clasa ta este acum^4 Warlock^3 + puterea de a trage perfect^4 [ norecoil ]^3 .^4", szPrefix );
					ColorChat ( id, GREEN, "%s Puterea se activeaza automat .^4", szPrefix );
					give_item ( id, "weapon_p90" );
					give_item ( id, "weapon_usp" );
					set_user_gravity ( id, 0.6 );
					set_user_health ( id, 165 );
					set_user_armor ( id, 105 );
					cs_set_user_bpammo ( id, CSW_USP, 100 );
					cs_set_user_bpammo ( id, CSW_P90, 200 );
					trainer [ id ] = false;
					katana_knife [ id ] = false;
					double_katana_knife [ id ] = false;
					super_knife [ id ] = false;
					infinity_knife [ id ] = false;
					ignes_knife [ id ] = false;
					elf_knife [ id ] = false;
					thompson [ id ] = true;
					uspx [ id ] = true;
					hunter [ id ] = false;
					shaman [ id ] = false;
					mage [ id ] = false;
					druid [ id ] = false;
					rogue [ id ] = false;
					warrior [ id ] = false;
					deklowaz [ id ] = false;
					vip_axe_knife [ id ] = false;
					super_knife_shop [ id ] = false;
					super_knife_shop2 [ id ] = false;
					++g_Menu [ id ];
					++g_Menu [ id ];
					remove_task(id);
					HasPower[id] = 8;
					
				}
			}
		}
		
		case 7:
		{
			if ( get_user_team ( id ) == 1 ) {
				if ( g_Menu [ id ] >= 3 ) {
					ColorChat ( id, GREEN, "%s Ti-ai ales odata clasa runda aceasta .", szPrefix );
				}
				
				else {
					
					ColorChat ( id, GREEN, "%s Clasa ta este acum^4 Elf^3 + puterea de a ingheta inamicul .^4", szPrefix );
					ColorChat ( id, GREEN, "%s Pentru activare apasa tasta^4 V^3 .^4", szPrefix );
					
					
					
					
					
					katana_knife [ id ] = false;
					double_katana_knife [ id ] = false;
					super_knife [ id ] = false;
					trainer [ id ] = false;
					ignes_knife [ id ] = false;
					
					elf_knife [ id ] = true;
					thompson [ id ] = false;
					uspx [ id ] = false;
					hunter [ id ] = false;
					druid [ id ] = false;
					shaman [ id ] = false;
					mage [ id ] = false;
					rogue [ id ] = false;
					warrior [ id ] = false;
					deklowaz [ id ] = false;
					strike_grenade3 [ id ] = true;
					super_knife_shop [ id ] = false;
					super_knife_shop2 [ id ] = false;
					++g_Menu [ id ];
					++g_Menu [ id ];
					set_user_gravity ( id, 0.4 );
					set_user_health ( id, 185 );
					set_user_armor ( id, 160 );
					give_item ( id, "weapon_hegrenade" );
					give_item ( id, "weapon_flashbang" );
					give_item ( id, "weapon_flashbang" );
					client_cmd(id, "bind v power");
					remove_task(id);
					if(Freeze_Cooldown[id]) {
						set_task ( 0.1, "FreezeShowHUD", id );
					}
					HasPower[id] = 5;
					//set_pev ( id, pev_viewmodel2, elf_knife_model );
					
				}
			}
			
			if ( get_user_team ( id ) == 2 ) {
				if ( g_Menu [ id ] >= 3 ) {
					ColorChat ( id, GREEN, "%s Ti-ai ales odata clasa runda aceasta .", szPrefix );
				}
				
				else {
					
					ColorChat ( id, GREEN, "%s Clasa ta este acum^4 Warrior^3 + puterea de a trage perfect^4 [ norecoil ]^3 .^4", szPrefix );
					ColorChat ( id, GREEN, "%s Puterea se activeaza automat .^4", szPrefix );
					give_item ( id, "weapon_p90" );
					give_item ( id, "weapon_usp" );
					set_user_gravity ( id, 0.6 );
					set_user_health ( id, 180 );
					set_user_armor ( id, 115 );
					cs_set_user_bpammo ( id, CSW_USP, 100 );
					cs_set_user_bpammo ( id, CSW_P90, 200 );
					trainer [ id ] = false;
					katana_knife [ id ] = false;
					double_katana_knife [ id ] = false;
					super_knife [ id ] = false;
					infinity_knife [ id ] = false;
					ignes_knife [ id ] = false;
					elf_knife [ id ] = false;
					thompson [ id ] = false;
					uspx [ id ] = true;
					hunter [ id ] = false;
					shaman [ id ] = false;
					druid [ id ] = false;
					mage [ id ] = false;
					rogue [ id ] = false;
					warrior [ id ] = true;
					vip_axe_knife [ id ] = false;
					deklowaz [ id ] = false;
					super_knife_shop [ id ] = false;
					super_knife_shop2 [ id ] = false;
					++g_Menu [ id ];
					++g_Menu [ id ];
					remove_task(id);
					HasPower[id] = 8;
					
				}
			}
		}
		
		case 8:
		{
			if ( get_user_team ( id ) == 1 ) {
				if ( g_Menu [ id ] >= 3 ) {
					ColorChat ( id, GREEN, "%s Ti-ai ales odata clasa runda aceasta .", szPrefix );
				}
				
				else {
					
					ColorChat ( id, GREEN, "%s Clasa ta este acum^4 Alcadeias^3 + puterea de a te teleporta .^4", szPrefix );
					ColorChat ( id, GREEN, "%s Pentru activare apasa tasta^4 V^3 .^4", szPrefix );
					
					vip_axe_knife [ id ] = true;
					katana_knife [ id ] = false;
					double_katana_knife [ id ] = false;
					super_knife [ id ] = false;
					thompson [ id ] = false;
					uspx [ id ] = false;
					hunter [ id ] = false;
					shaman [ id ] = false;
					mage [ id ] = false;
					rogue [ id ] = false;
					druid [ id ] = false;
					warrior [ id ] = false;
					deklowaz [ id ] = false;
					infinity_knife [ id ] = false;
					ignes_knife [ id ] = false;
					trainer [ id ] = false;
					elf_knife [ id ] = false;
					strike_grenade3 [ id ] = true;
					super_knife_shop [ id ] = false;
					super_knife_shop2 [ id ] = false;
					set_user_gravity ( id, 0.4 );
					set_user_health ( id, 200 );
					set_user_armor ( id, 200 );
					give_item ( id, "weapon_hegrenade" );
					give_item ( id, "weapon_flashbang" );
					give_item ( id, "weapon_flashbang" );
					++g_Menu [ id ];
					++g_Menu [ id ];
					client_cmd(id, "bind v power");
					remove_task(id);
					if(Teleport_Cooldown[id]) {
						set_task ( 0.1, "TeleportShowHUD", id );
					}
					HasPower[id] = 7;
					
				}
			}
			
			if ( get_user_team ( id ) == 2 ) {
				if ( g_Menu [ id ] >= 3 ) {
					ColorChat ( id, GREEN, "%s Ti-ai ales odata clasa runda aceasta .", szPrefix );
				}
				
				else {
					ColorChat ( id, GREEN, "%s Clasa ta este acum^4 Deklowaz^3 + puterea de a te teleporta .^4", szPrefix );
					ColorChat ( id, GREEN, "%s Pentru activare apasa tasta^4 V^3 .^4", szPrefix );
					give_item ( id, "weapon_p90" );
					give_item ( id, "weapon_usp" );
					set_user_gravity ( id, 0.6 );
					set_user_health ( id, 200 );
					set_user_armor ( id, 130 );
					cs_set_user_bpammo ( id, CSW_USP, 100 );
					cs_set_user_bpammo ( id, CSW_P90, 200 );
					trainer [ id ] = false;
					katana_knife [ id ] = false;
					double_katana_knife [ id ] = false;
					super_knife [ id ] = false;
					infinity_knife [ id ] = false;
					ignes_knife [ id ] = false;
					elf_knife [ id ] = false;
					thompson [ id ] = false;
					druid [ id ] = false;
					uspx [ id ] = true;
					hunter [ id ] = false;
					shaman [ id ] = false;
					mage [ id ] = false;
					rogue [ id ] = false;
					warrior [ id ] = false;
					deklowaz [ id ] = true;
					super_knife_shop [ id ] = false;
					super_knife_shop2 [ id ] = false;
					++g_Menu [ id ];
					++g_Menu [ id ];
					client_cmd(id, "bind v power");
					remove_task(id);
					if(Teleport_Cooldown[id]) {
						set_task ( 0.1, "TeleportShowHUD", id );
					}
					HasPower[id] = 7;
					
				}
			}
		}
		
	}
	
	ShowHud ( id );
	if ( get_user_team ( id ) == 1 ) {
		cs_set_user_model(id, "furienxp")
	}
	
	if ( get_user_team ( id ) == 2 ) {
		cs_set_user_model(id, "furienxp2")
	}
	
	menu_destroy ( menu );
	return 1;
}

public cmdShop ( id, level, cid ) {
	
	if ( is_user_alive ( id ) ) {
		
		new menu = menu_create( "Shop Menu", "MenuShopGiver");
		
		if ( get_user_team ( id ) == 1 ) {
			menu_additem ( menu, "\ySuper Knife \y[ \r8000 $\y ]", "1", 0 );
		}
		
		menu_additem ( menu, "\yHE Grenade \y[ \r2500 $\y ]", "2", 0 );
		
		if ( get_user_team ( id ) == 2 ) {
			menu_additem ( menu, "\yDefuse Kit \y[ \r300 $\y ]", "3", 0 );
		}
		
		menu_additem ( menu, "\r+\y50 HP \y[ \r3000 $\y ]", "4", 0 );
		menu_additem ( menu, "\r+\y50 AP\r + \yHelmet \y[ \r2000 $\y ]", "5", 0 );
		
		
		menu_setprop(menu, MPROP_EXIT, MEXIT_ALL);
		menu_display(id, menu, 0);
		
		
		return 1;
	}
	
	else {
		ColorChat ( id, GREEN, "%s Nu poti folosi shop-ul cand esti mort.^4", szPrefix );
	}
	
	return 1;
}

public MenuShopGiver ( id, menu, item ) {
	
	if( item == MENU_EXIT )
	{
		return 1;
	}
	
	new data[6], szName[64];
	new access, callback;
	menu_item_getinfo(menu, item, access, data,charsmax(data), szName,charsmax(szName), callback);
	new key = str_to_num(data);
	
	switch(key)
	{
		case 1:
		{
			new iPret = cs_get_user_money ( id ) - 8000;
			if( iPret < 0 )
			{
				client_print( id, print_center, "Nu ai destui bani !" ); 
				return 1;
			}
			else
			{
				if ( Level [ id ] < 15 ) {
					super_knife_shop [ id ] = true;
					set_pev ( id, pev_viewmodel2, super_knife_shop_v_model );
					cs_set_user_money ( id, iPret );
				}
				
				else if ( Level [ id ] >= 15 ) {
					super_knife_shop2 [ id ] = true;
					set_pev ( id, pev_viewmodel2, super_knife_shop_v_model2 );
					set_pev ( id, pev_weaponmodel2, super_knife_shop_p_model2 );
					cs_set_user_money ( id, iPret );
				}
				
				
				return 1;
			}
			return 1
		}
		
		case 2:
		{
			new iPret = cs_get_user_money ( id ) - 2500;
			if( iPret < 0 )
			{
				client_print( id, print_center, "Nu ai destui bani !" );
				return 1;
			}
			else
			{
				give_item ( id, "weapon_hegrenade" );
				cs_set_user_money ( id, iPret );
				return 1;
			}
			return 1
		}
		
		case 3:
		{
			new iPret = cs_get_user_money ( id ) - 300;
			if( iPret < 0 )
			{
				client_print( id, print_center, "Nu ai destui bani !" );
				return 1;
			}
			else
			{
				give_item ( id, "item_thighpack" );
				cs_set_user_money ( id, iPret );
				return 1;
			}
			return 1
		}
		
		case 4:
		{
			new iPret = cs_get_user_money ( id ) - 3000;
			if( iPret < 0 )
			{
				client_print( id, print_center, "Nu ai destui bani !" );
				return 1;
			}
			else
			{
				set_dhudmessage ( 31, 201, 31, 0.02, 0.90, 0, 6.0, 1.0 );
				show_dhudmessage ( id, "+50 HP" );
				set_user_health ( id, get_user_health ( id ) + 50 );
				cs_set_user_money ( id, iPret );
				
				if ( get_user_team ( id ) == 2 && Level [ id ] < 20 ) {
					emit_sound(id, CHAN_ITEM, buy_AntiFurienHealth, 0.6, ATTN_NORM, 0, PITCH_NORM) 
					af ( id );
				}
				
				if ( get_user_team ( id ) == 2 && Level [ id ] >= 20 ) {
					emit_sound(id, CHAN_ITEM, buy_FurienHealth, 0.6, ATTN_NORM, 0, PITCH_NORM) 
					fr ( id );
				}
				
				return 1;
			}
			return 1
		}
		
		case 5:
		{
			new iPret = cs_get_user_money ( id ) - 2000;
			if( iPret < 0 )
			{
				client_print( id, print_center, "Nu ai destui bani !" );
				return 1;
			}
			else
			{
				set_dhudmessage ( 31, 201, 31, 0.20, 0.90, 0, 6.0, 1.0 );
				show_dhudmessage ( id, "+50 AP" );
				set_user_armor ( id, get_user_armor ( id ) + 50 );
				cs_set_user_money ( id, iPret );
				return 1;
			}
			return 1
		}
		
	}
	
	menu_destroy(menu);
	return 1
	
}

furien(origin[3]) { 
	message_begin(MSG_BROADCAST,SVC_TEMPENTITY) 
	write_byte(TE_SPRITE) 
	write_coord(origin[0]) 
	write_coord(origin[1]) 
	write_coord(origin[2]+=30) 
	write_short(g_FurienHealth) 
	write_byte(8) 
	write_byte(255) 
	message_end() 
} 

antifurien(origin[3]) { 
	message_begin(MSG_BROADCAST,SVC_TEMPENTITY) 
	write_byte(TE_SPRITE) 
	write_coord(origin[0]) 
	write_coord(origin[1]) 
	write_coord(origin[2]+=30) 
	write_short(g_AntiFurienHealth) 
	write_byte(8) 
	write_byte(255) 
	message_end() 
} 

public fr(victim) 
{ 
	new origin[3] 
	get_user_origin(victim,origin) 
	
	furien(origin) 
}

public af(victim) 
{ 
	new origin[3] 
	get_user_origin(victim,origin) 
	
	antifurien(origin) 
} 


public cmdShowTVIPMenu ( id, level, cid ) {
	
	new menu = menu_create ( "FurienVIP Menu", "MenuTVIPGiver" )
	
	if ( !UserHaveHpAndAp [ id ] ) {
		
		menu_additem ( menu, "\y225 HP\w &\y 225 AP", "1", VIP_ACCESS );
	}
	
	else if ( UserHaveHpAndAp [ id ] ) {
		
		menu_additem ( menu, "\w225 HP\y &\w 225 AP", "1", VIP_ACCESS );
	}
	
	if ( !UserHaveHeGrenade [ id ] ) {
		
		menu_additem ( menu, "\yHE GRENADE", "2", VIP_ACCESS );
	}
	
	else if ( UserHaveHeGrenade [ id ] ) {
		menu_additem ( menu, "\wHE GRENADE", "2", VIP_ACCESS );
	}
	
	if ( !UserHaveGodMode [ id ] ) {
		
		menu_additem ( menu, "\yGOD MODE", "3", VIP_ACCESS );
	}
	
	else if ( UserHaveGodMode [ id ] ) {
		
		menu_additem ( menu, "\wGOD MODE", "3", VIP_ACCESS );
	}
	
	if ( !UserHaveNoClip [ id ] ) {
		
		menu_additem ( menu, "\yNOCLIP", "4", VIP_ACCESS );
	}
	
	else if ( UserHaveNoClip [ id ] ) {
		
		menu_additem ( menu, "\wNOCLIP", "4", VIP_ACCESS );
	}
	
	if ( !UserHaveTeleport [ id ] ) {
		
		menu_additem ( menu, "\yTELEPORT", "5", VIP_ACCESS );
	}
	
	else if ( UserHaveTeleport [ id ] ) {
		
		menu_additem ( menu, "\wTELEPORT", "5", VIP_ACCESS );
	}
	
	if ( !UserHaveSuperKnife [ id ] ) {
		
		menu_additem ( menu, "\ySUPER KNIFE", "6", VIP_ACCESS );
	}
	
	else if ( UserHaveSuperKnife [ id ] ) {
		
		menu_additem ( menu, "\wSUPER KNIFE", "6", VIP_ACCESS );
	}
	
	menu_setprop(menu, MPROP_EXIT, MEXIT_ALL);
	menu_display(id, menu, 0);
	
	
	return 1
}

public cmdShowCTVIPMenu ( id, level, cid ) {
	
	new menu = menu_create ( "FurienVIP Menu", "MenuCTVIPGiver" )
	
	if ( !UserHaveHpAndAp [ id ] ) {
		
		menu_additem ( menu, "\y225 HP\w &\y 225 AP", "1", VIP_ACCESS );
	}
	
	else if ( UserHaveHpAndAp [ id ] ) {
		
		menu_additem ( menu, "\w225 HP\y &\w 225 AP", "1", VIP_ACCESS );
	}
	
	if ( !UserHaveHeGrenade [ id ] ) {
		
		menu_additem ( menu, "\yHE GRENADE", "2", VIP_ACCESS );
	}
	
	else if ( UserHaveHeGrenade [ id ] ) {
		menu_additem ( menu, "\wHE GRENADE", "2", VIP_ACCESS );
	}
	
	if ( !UserHaveGodMode [ id ] ) {
		
		menu_additem ( menu, "\yGOD MODE", "3", VIP_ACCESS );
	}
	
	else if ( UserHaveGodMode [ id ] ) {
		
		menu_additem ( menu, "\wGOD MODE", "3", VIP_ACCESS );
	}
	
	if ( !UserHaveNoClip [ id ] ) {
		
		menu_additem ( menu, "\yNOCLIP", "4", VIP_ACCESS );
	}
	
	else if ( UserHaveNoClip [ id ] ) {
		
		menu_additem ( menu, "\wNOCLIP", "4", VIP_ACCESS );
	}
	
	if ( !UserHaveTeleport [ id ] ) {
		
		menu_additem ( menu, "\yTELEPORT", "5", VIP_ACCESS );
	}
	
	else if ( UserHaveTeleport [ id ] ) {
		
		menu_additem ( menu, "\wTELEPORT", "5", VIP_ACCESS );
	}
	
	if ( !UserHaveSuperKnife [ id ] ) {
		
		menu_additem ( menu, "\yDUAL MP5", "6", VIP_ACCESS );
	}
	
	else if ( UserHaveSuperKnife [ id ] ) {
		
		menu_additem ( menu, "\wDUAL MP5", "6", VIP_ACCESS );
	}
	
	menu_setprop(menu, MPROP_EXIT, MEXIT_ALL);
	menu_display(id, menu, 0);
	
	
	return 1
}

public MenuCTVIPGiver ( id, menu, item )
{
	if( item == MENU_EXIT )
	{
		return 1
	}
	
	new data[6], szName[64];
	new access, callback;
	menu_item_getinfo(menu, item, access, data,charsmax(data), szName,charsmax(szName), callback);
	new key = str_to_num(data);
	
	switch(key)
	{
		case 1:
		{
			if ( UserHaveHpAndAp [ id ] ) {
				
				ColorChat ( id, GREEN, "%s Ai deja aceasta putere .^4", szPrefix );
				return 1;
			}
			
			else if ( !UserHaveHpAndAp [ id ] ) {
				
				set_user_health ( id, 225 );
				set_user_armor ( id, 225 );
				ColorChat ( id, GREEN, "%s Ai primit^4 225 HP^3 &^4 225 AP^3 .^4", szPrefix );
				UserHaveHpAndAp [ id ] = true;
				
				UserHaveHeGrenade [ id ] = false;
				UserHaveGodMode [ id ] = false;
				UserHaveNoClip [ id ] = false;
				UserHaveSuperKnife [ id ] = false;
				UserHaveTeleport [ id ] = false;
				UserHasChoosed [ id ] = true;
			}
		}
		
		case 2:
		{
			if ( UserHaveHeGrenade [ id ] ) {
				
				ColorChat ( id, GREEN, "%s Ai deja aceasta putere .", szPrefix );
				return 1;
			}
			
			else if ( !UserHaveHeGrenade [ id ] ) {
				
				give_item ( id, "weapon_hegrenade" );
				ColorChat ( id, GREEN, "%s Vei primi o grenada^4 HE^3 odata la^4 15^3 secunde .^4", szPrefix );
				UserHaveHeGrenade [ id ] = true;
				set_task(15.0, "GiveMeAHeGrenade", id, _, _, "b");
				
				UserHaveGodMode [ id ] = false;
				UserHaveNoClip [ id ] = false;
				UserHaveSuperKnife [ id ] = false;
				UserHaveTeleport [ id ] = false;
				UserHaveHpAndAp [ id ] = false;
				UserHasChoosed [ id ] = true;
			}
		}
		
		case 3:
		{
			if ( UserHaveGodMode [ id ] ) {
				
				ColorChat ( id, GREEN, "%s Ai deja aceasta putere .", szPrefix );
				return 1;
			}
			
			else if ( !UserHaveGodMode [ id ] ) {
				
				ColorChat ( id, GREEN, "%s Ai primit^4 GodMode^3, apasa tasta^4 Z^3 pentru activare. ^4", szPrefix );
				UserHaveGodMode [ id ] = true;
				client_cmd ( id, "bind z vippower" );
				
				UserHaveHeGrenade [ id ] = false;
				UserHaveNoClip [ id ] = false;
				UserHaveSuperKnife [ id ] = false;
				UserHaveTeleport [ id ] = false;
				UserHaveHpAndAp [ id ] = false;
				UserHasChoosed [ id ] = true;
			}
		}
		
		case 4:
		{
			if ( UserHaveNoClip [ id ] ) {
				
				ColorChat ( id, GREEN, "%s Ai deja aceasta putere .", szPrefix );
				return 1;
			}
			
			else if ( !UserHaveNoClip [ id ] ) {
				
				ColorChat ( id, GREEN, "%s Ai primit^4 NoClip^3, apasa tasta^4 Z^3 pentru activare. ^4", szPrefix );
				UserHaveNoClip [ id ] = true;
				client_cmd ( id, "bind z vippower" );
				
				UserHaveHeGrenade [ id ] = false;
				UserHaveGodMode [ id ] = false;
				UserHaveSuperKnife [ id ] = false;
				UserHaveTeleport [ id ] = false;
				UserHaveHpAndAp [ id ] = false;
				UserHasChoosed [ id ] = true;
			}
		}
		
		case 5:
		{
			if ( UserHaveTeleport [ id ] ) {
				
				ColorChat ( id, GREEN, "%s Ai deja aceasta putere .", szPrefix );
				return 1;
			}
			
			else if ( !UserHaveTeleport [ id ] ) {
				
				ColorChat ( id, GREEN, "%s Ai primit puterea de a te^4 Teleporta^3, apasa tasta^4 Z^3 pentru activare. ^4", szPrefix );
				UserHaveTeleport [ id ] = true;
				client_cmd ( id, "bind z power" );
				remove_task(id);
				if(Teleport_Cooldown[id]) {
					set_task ( 0.1, "TeleportShowHUD", id );
				}
				
				HasPower[id] = 7;
				
				UserHaveHeGrenade [ id ] = false;
				UserHaveGodMode [ id ] = false;
				UserHaveSuperKnife [ id ] = false;
				UserHaveNoClip [ id ] = false;
				UserHaveHpAndAp [ id ] = false;
				UserHasChoosed [ id ] = true;
			}
		}
		
		case 6:
		{
			if ( UserHaveDualMp5 [ id ] ) {
				
				ColorChat ( id, GREEN, "%s Ai deja aceasta putere .", szPrefix );
				return 1;
			}
			
			else if ( !UserHaveDualMp5 [ id ] ) {
				
				ColorChat ( id, GREEN, "%s Ai primit^4 Dual Mp5^3 . ^4", szPrefix );
				strip_user_weapons ( id );
				give_item ( id, "weapon_knife" );
				give_item ( id, "weapon_mp5navy" );
				give_item ( id, "weapon_hegrenade" );
				give_item ( id, "weapon_flashbang" );
				give_item ( id, "weapon_smokegrenade" );
				give_item ( id, "weapon_usp" );
				cs_set_user_bpammo ( id, CSW_MP5NAVY, 200 );
				cs_set_user_bpammo ( id, CSW_USP, 100 );
				dual_mp5 [ id ] = true;
				uspx [ id ] = true;
				flare [ id ] = true;
				
				UserHaveDualMp5 [ id ] = true;
				
				g_has_k1ases[id] = false
				g_delay[id] = 0
				g_ammoclaw[id] = 0
				UserHaveTeleport [ id ] = false;
				UserHaveHeGrenade [ id ] = false;
				UserHaveGodMode [ id ] = false;
				UserHaveSuperKnife [ id ] = false;
				UserHaveNoClip [ id ] = false;
				UserHaveHpAndAp [ id ] = false;
				UserHasChoosed [ id ] = true;
			}
		}
		
	}
	
	menu_destroy(menu);
	return 1
	
}

public MenuTVIPGiver ( id, menu, item )
{
	if( item == MENU_EXIT )
	{
		return 1
	}
	
	new data[6], szName[64];
	new access, callback;
	menu_item_getinfo(menu, item, access, data,charsmax(data), szName,charsmax(szName), callback);
	new key = str_to_num(data);
	
	switch(key)
	{
		case 1:
		{
			if ( UserHaveHpAndAp [ id ] ) {
				
				ColorChat ( id, GREEN, "%s Ai deja aceasta putere .^4", szPrefix );
				return 1;
			}
			
			else if ( !UserHaveHpAndAp [ id ] ) {
				
				set_user_health ( id, 225 );
				set_user_armor ( id, 225 );
				ColorChat ( id, GREEN, "%s Vei primi^4 225 HP^3 &^4 225 AP^3 in fiecare runda .^4", szPrefix );
				UserHaveHpAndAp [ id ] = true;
				
				UserHaveHeGrenade [ id ] = false;
				UserHaveGodMode [ id ] = false;
				UserHaveNoClip [ id ] = false;
				UserHaveSuperKnife [ id ] = false;
				UserHaveTeleport [ id ] = false;
				UserHasChoosed [ id ] = true;
			}
		}
		
		case 2:
		{
			if ( UserHaveHeGrenade [ id ] ) {
				
				ColorChat ( id, GREEN, "%s Ai deja aceasta putere .", szPrefix );
				return 1;
			}
			
			else if ( !UserHaveHeGrenade [ id ] ) {
				
				give_item ( id, "weapon_hegrenade" );
				ColorChat ( id, GREEN, "%s Vei primi o grenada^4 HE^3 odata la^4 15^3 secunde .^4", szPrefix );
				UserHaveHeGrenade [ id ] = true;
				set_task(15.0, "GiveMeAHeGrenade", id, _, _, "b");
				
				UserHaveGodMode [ id ] = false;
				UserHaveNoClip [ id ] = false;
				UserHaveSuperKnife [ id ] = false;
				UserHaveTeleport [ id ] = false;
				UserHaveHpAndAp [ id ] = false;
				UserHasChoosed [ id ] = true;
			}
		}
		
		case 3:
		{
			if ( UserHaveGodMode [ id ] ) {
				
				ColorChat ( id, GREEN, "%s Ai deja aceasta putere .", szPrefix );
				return 1;
			}
			
			else if ( !UserHaveGodMode [ id ] ) {
				
				ColorChat ( id, GREEN, "%s Vei primi^4 GodMode^3 in fiecare runda, apasa tasta^4 Z^3 pentru activare. ^4", szPrefix );
				UserHaveGodMode [ id ] = true;
				client_cmd ( id, "bind z vippower" );
				
				UserHaveHeGrenade [ id ] = false;
				UserHaveNoClip [ id ] = false;
				UserHaveSuperKnife [ id ] = false;
				UserHaveTeleport [ id ] = false;
				UserHaveHpAndAp [ id ] = false;
				UserHasChoosed [ id ] = true;
			}
		}
		
		case 4:
		{
			if ( UserHaveNoClip [ id ] ) {
				
				ColorChat ( id, GREEN, "%s Ai deja aceasta putere .", szPrefix );
				return 1;
			}
			
			else if ( !UserHaveNoClip [ id ] ) {
				
				ColorChat ( id, GREEN, "%s Vei primi^4 NoClip^3 in fiecare runda, apasa tasta^4 Z^3 pentru activare. ^4", szPrefix );
				UserHaveNoClip [ id ] = true;
				client_cmd ( id, "bind z vippower" );
				
				UserHaveHeGrenade [ id ] = false;
				UserHaveGodMode [ id ] = false;
				UserHaveSuperKnife [ id ] = false;
				UserHaveTeleport [ id ] = false;
				UserHaveHpAndAp [ id ] = false;
				UserHasChoosed [ id ] = true;
			}
		}
		
		case 5:
		{
			if ( UserHaveTeleport [ id ] ) {
				
				ColorChat ( id, GREEN, "%s Ai deja aceasta putere .", szPrefix );
				return 1;
			}
			
			else if ( !UserHaveTeleport [ id ] ) {
				
				ColorChat ( id, GREEN, "%s Vei primi puterea de a te^4 Teleporta^3 in fiecare runda, apasa tasta^4 Z^3 pentru activare. ^4", szPrefix );
				UserHaveTeleport [ id ] = true;
				client_cmd ( id, "bind z power" );
				remove_task(id);
				if(Teleport_Cooldown[id]) {
					set_task ( 0.1, "TeleportShowHUD", id );
				}
				
				HasPower[id] = 7;
				
				UserHaveHeGrenade [ id ] = false;
				UserHaveGodMode [ id ] = false;
				UserHaveSuperKnife [ id ] = false;
				UserHaveNoClip [ id ] = false;
				UserHaveHpAndAp [ id ] = false;
				UserHasChoosed [ id ] = true;
			}
		}
		
		case 6:
		{
			if ( UserHaveSuperKnife [ id ] ) {
				
				ColorChat ( id, GREEN, "%s Ai deja aceasta putere .", szPrefix );
				return 1;
			}
			
			else if ( !UserHaveSuperKnife [ id ] ) {
				
				ColorChat ( id, GREEN, "%s Vei primi^4 SuperKnife^3 in fiecare runda. ^4", szPrefix );
				if ( Level [ id ] < 15 ) {
					super_knife_shop [ id ] = true;
					set_pev ( id, pev_viewmodel2, super_knife_shop_v_model );
				}
				
				else if ( Level [ id ] >= 15 ) {
					super_knife_shop2 [ id ] = true;
					set_pev ( id, pev_viewmodel2, super_knife_shop_v_model2 );
					set_pev ( id, pev_weaponmodel2, super_knife_shop_p_model2 );
				}
				
				UserHaveSuperKnife [ id ] = true;
				
				UserHaveTeleport [ id ] = false;
				UserHaveHeGrenade [ id ] = false;
				UserHaveGodMode [ id ] = false;
				UserHaveSuperKnife [ id ] = false;
				UserHaveNoClip [ id ] = false;
				UserHaveHpAndAp [ id ] = false;
				UserHasChoosed [ id ] = true;
			}
		}
		
	}
	
	menu_destroy(menu);
	return 1
	
}

public GiveMeAHeGrenade ( id ) {
	
	if ( UserHaveHeGrenade [ id ] ) {
		
		give_item ( id, "weapon_hegrenade" );
		set_hudmessage(0, 100, 225, 0.05, 0.60, 0, 6.0, 1.0)
		show_hudmessage ( id, "Ai primit o grenada HE" );
	}
}

public StopGodMode ( id ) {
	
	if ( UserHaveGodMode [ id ] ) {
		set_user_godmode ( id, 0 );
	}
}

public StopNoClip ( id ) {
	
	if ( UserHaveNoClip [ id ] ) {
		set_user_noclip ( id, 0 );
	}
	
}

public VIPpower ( id ) {
	
	if ( UserHaveGodMode [ id ] ) {
		
		set_user_godmode ( id, 1 );
		set_task(3.0, "StopGodMode", id );
		client_print ( id, print_center, "Ai GodMode penbtru 3 secunde" );
	}
	
	if ( UserHaveNoClip [ id ] ) {
		
		set_user_noclip ( id, 1 );
		set_task ( 4.0, "StopNoClip", id );
		client_print ( id, print_center, "Ai NoClip penbtru 4 secunde" );
	}
	
}

public VipBonus ( id ) {
	
	if ( UserHaveHpAndAp [ id ] ) {
		
		set_user_health ( id, 225 );
		set_user_armor ( id, 225 );
	}
	
	if ( UserHaveHeGrenade [ id ] ) {
		
		give_item ( id, "weapon_hegrenade" );
		set_task(15.0, "GiveMeAHeGrenade", id, _, _, "b");
	}
	
	if ( UserHaveGodMode [ id ] ) {
		
		client_cmd ( id, "bind z vippower" );
	}
	
	if ( UserHaveNoClip [ id ] ) {
		
		client_cmd ( id, "bind z vippower" );
		
	}
	
	if ( UserHaveTeleport [ id ] ) {
		
		client_cmd ( id, "bind z power" );
	}
	
	if ( UserHaveSuperKnife [ id ] ) {
		
		if ( Level [ id ] < 15 ) {
			super_knife_shop [ id ] = true;
			set_pev ( id, pev_viewmodel2, super_knife_shop_v_model );
		}
		
		else if ( Level [ id ] >= 15 ) {
			super_knife_shop2 [ id ] = true;
			set_pev ( id, pev_viewmodel2, super_knife_shop_v_model2 );
			set_pev ( id, pev_weaponmodel2, super_knife_shop_p_model2 );
		}
		
	}
	
}

public ForcePlayerSpeed ( id ) {
	
	if ( get_user_team ( id ) == 1 ) {
		
		if ( trainer [ id ] )
		{
			set_pev ( id, pev_maxspeed, 900.0 );
		} 
		
		if ( infinity_knife [ id ] )
		{
			set_pev ( id, pev_maxspeed, 930.0 );
		} 
		
		if ( super_knife [ id ] )
		{
			set_pev ( id, pev_maxspeed, 950.0 );
		} 
		
		if ( katana_knife [ id ] )
		{
			set_pev ( id, pev_maxspeed, 1000.0 );
		} 
		
		if ( double_katana_knife [ id ] )
		{
			set_pev ( id, pev_maxspeed, 1050.0 );
		} 
		
		if ( ignes_knife [ id ] )
		{
			set_pev ( id, pev_maxspeed, 1100.0 );
		} 
		
		if ( elf_knife [ id ] )
		{
			set_pev ( id, pev_maxspeed, 1150.0 );
		} 
		
		if ( vip_axe_knife [ id ] )
		{
			set_pev ( id, pev_maxspeed, 1200.0 );
		}
		
	}
}

public bomb_planted ( planter ) {
	
	eXP [ planter ] += 35;
	ColorChat ( planter, GREEN, "%s Ai primit^4 35^3 XP pentru plantarea bombei .^4", szPrefix );
	
	new originnn[3];
	get_user_origin ( planter, originnn, 0 );
	
	message_begin(MSG_PAS, SVC_TEMPENTITY, originnn);
	write_byte(TE_BEAMCYLINDER);
	write_coord(originnn[0]);
	write_coord(originnn[1]);
	write_coord(originnn[2]+10);
	write_coord(originnn[0]);
	write_coord(originnn[1]);
	write_coord(originnn[2]+60);
	write_short(TeleportSprite);
	write_byte(0);
	write_byte(0);
	write_byte(3);
	write_byte(60);
	write_byte(0);
	write_byte(255); //255
	write_byte(0); //255
	write_byte(0); //255
	write_byte(255); //255 //RED
	write_byte(0);
	message_end();
	
	UTIL_CreateBeamCylinder( originnn, 120, TeleportSprite, 0, 0, 6, 16, 0, 255, 0, 0, 255, 0 );
	UTIL_CreateBeamCylinder( originnn, 320, TeleportSprite, 0, 0, 6, 16, 0, 255, 51, 51, 255, 0 );
	UTIL_CreateBeamCylinder( originnn, 500, TeleportSprite, 0, 0, 6, 16, 0, 255, 102, 102, 255, 0 );
	
	new iPlayers[32]
	new iNum
	
	get_players( iPlayers, iNum, "e", "TERRORIST" )
	
	for( new i = 0; i < iNum; i++ )
	{
		g_CanUseHe[iPlayers[i]] = true;
	}
}

public bomb_defused ( defuser ) {
	eXP [ defuser ] += 35;
	ColorChat ( defuser, GREEN, "%s Ai primit^4 35^3 XP pentru defusarea bombei .^4", szPrefix );
	new originnn[3];
	get_user_origin ( defuser, originnn, 0 );
	message_begin(MSG_PAS, SVC_TEMPENTITY, originnn);
	write_byte(TE_BEAMCYLINDER);
	write_coord(originnn[0]);
	write_coord(originnn[1]);
	write_coord(originnn[2]+10);
	write_coord(originnn[0]);
	write_coord(originnn[1]);
	write_coord(originnn[2]+60);
	write_short(TeleportSprite);
	write_byte(0);
	write_byte(0);
	write_byte(3);
	write_byte(60);
	write_byte(0);
	write_byte(0); //255
	write_byte(0); //255
	write_byte(255); //255 //BLUE
	write_byte(255); //255 
	write_byte(0);
	message_end();
	
	Create_TE_SPRITETRAIL3( originnn, originnn, TeleportSprite3, 50, 10, 2, 50, 10 );
	
	/*---ScreenShake---*/
	message_begin(MSG_ONE , gMsgScreenShake , {0,0,0} ,defuser)
	write_short( 1<<14 );
	write_short( 1<<14 );
	write_short( 1<<14 );
	message_end();
}

public bomb_explode ( planter ) {
	eXP [ planter ] += 25;
	ColorChat ( planter, GREEN, "%s Ai primit^4 25^3 XP pentru explodarea bombei .^4", szPrefix );
}

public handle_say(id) {
	new said[192]
	read_args(said,192)
	if( ( containi(said, "who") != -1 && containi(said, "vips") != -1 ) || contain(said, "/vips") != -1 )
		set_task(0.1,"print_adminlist",id)
	return PLUGIN_CONTINUE
}

public print_adminlist(user) 
{
	new adminnames[33][32]
	new message[256]
	new contactinfo[256], contact[112]
	new id, count, x, len
	
	for(id = 1 ; id <= maxplayers ; id++)
		if(is_user_connected(id))
		if( get_user_flags(id) & VIP_ACCESS )
		get_user_name(id, adminnames[count++], 31)
	
	len = format(message, 255, "%s VIPS ONLINE: ",COLOR)
	if(count > 0) {
		for(x = 0 ; x < count ; x++) {
			len += format(message[len], 255-len, "%s%s ", adminnames[x], x < (count-1) ? ", ":"")
			if(len > 96 ) {
				print_message(user, message)
				len = format(message, 255, "%s ",COLOR)
			}
		}
		print_message(user, message)
	}
	else {
		len += format(message[len], 255-len, "Nici un VIP online.")
		print_message(user, message)
	}
	
	get_cvar_string("amx_contactinfo", contact, 63)
	if(contact[0])  {
		format(contactinfo, 111, "%s Cumpara VIP -- %s", COLOR, contact)
		print_message(user, contactinfo)
	}
}

print_message(id, msg[]) {
	message_begin(MSG_ONE, gmsgSayText, {0,0,0}, id)
	write_byte(id)
	write_string(msg)
	message_end()
}

public eDeath ( ) {
	
	new iKiller = read_data ( 1 );
	new iVictim = read_data ( 2 );
	new Headshot = read_data ( 3 );
	
	new weapon [ 32 ];
	read_data ( 4, weapon, sizeof ( weapon ) -1 );
	if ( iKiller == iVictim )
	{
		return 1;
	}
	new name [ 32 ];
	
	get_user_name ( iVictim, name, sizeof ( name ) -1 );
	
	if ( Headshot && get_user_team ( iKiller ) == 2 )
	{
		
		eXP [ iKiller ] += get_pcvar_num ( HsXp );
		ColorChat ( iKiller, GREEN, "%s Ai primit^4 %i^3 XP^4 [ HeadShot ]^3", szPrefix, get_pcvar_num ( HsXp ) + get_pcvar_num ( KillXp ) );
	}
	
	else if ( Headshot && get_user_team ( iKiller ) == 2 && get_user_flags ( iKiller ) & VIP_ACCESS )
	{
		
		eXP [ iKiller ] += get_pcvar_num ( HsXp ) + 10;
		ColorChat ( iKiller, GREEN, "%s Ai primit^4 %i^3 XP^4 [ HeadShot ]^3", szPrefix, get_pcvar_num ( HsXp ) + get_pcvar_num ( KillXp ) );
	}
	
	else if ( Headshot && get_user_team ( iKiller ) == 1 && get_user_weapon ( iKiller ) == CSW_KNIFE && get_user_flags ( iKiller ) & VIP_ACCESS )
	{
		
		eXP [ iKiller ] += get_pcvar_num ( HsXp ) + 10;
		set_user_health ( iKiller, get_user_health ( iKiller ) + 35 );
		set_dhudmessage ( 31, 201, 31, 0.02, 0.90, 0, 6.0, 1.0 );
		show_dhudmessage ( iKiller, "+35 HP" );
		ColorChat ( iKiller, GREEN, "%s Ai primit^4 %i^3 XP +^4 35^3 HP^4 [ HeadShot ]^3", szPrefix, get_pcvar_num ( HsXp ) + get_pcvar_num ( KillXp ) + 10 );
		
	}
	
	else if ( Headshot && get_user_team ( iKiller ) == 1 && get_user_weapon ( iKiller ) == CSW_KNIFE )
	{
		
		eXP [ iKiller ] += get_pcvar_num ( HsXp );
		set_user_health ( iKiller, get_user_health ( iKiller ) + 25 );
		set_dhudmessage ( 31, 201, 31, 0.02, 0.90, 0, 6.0, 1.0 );
		show_dhudmessage ( iKiller, "+25 HP" );
		ColorChat ( iKiller, GREEN, "%s Ai primit^4 %i^3 XP +^4 25^3 HP^4 [ HeadShot ]^3", szPrefix, get_pcvar_num ( HsXp ) + get_pcvar_num ( KillXp ) );
		
	}
	
	else if ( equali ( weapon, "grenade" ) && Level [ iKiller ] == 0 || Level [ iKiller ] == 1 || Level [ iKiller ] == 2 || Level [ iKiller ] == 3 || Level [ iKiller ] == 4 || Level [ iKiller ] == 5 && get_user_flags ( iKiller ) & VIP_ACCESS )
	{
		eXP [ iKiller ] += get_pcvar_num ( HeXp ) + 5;
		set_user_credits ( iKiller, get_user_credits ( iKiller ) + 2 );
		ColorChat ( iKiller, GREEN, "%s Ai primit^4 %i^3 XP +^4 2^3 credite^4 [ He Grenade ]^3", szPrefix, get_pcvar_num(HeXp) + get_pcvar_num(KillXp) + 5);
	}
	
	else if ( equali ( weapon, "grenade" ) && Level [ iKiller ] == 0 || Level [ iKiller ] == 1 || Level [ iKiller ] == 2 || Level [ iKiller ] == 3 || Level [ iKiller ] == 4 || Level [ iKiller ] == 5 )
	{
		eXP [ iKiller ] += get_pcvar_num ( HeXp );
		set_user_credits ( iKiller, get_user_credits ( iKiller ) + 1 );
		ColorChat ( iKiller, GREEN, "%s Ai primit^4 %i^3 XP +^4 1^3 credit^4 [ He Grenade ]^3", szPrefix, get_pcvar_num(HeXp) + get_pcvar_num(KillXp) );
	}
	
	else if ( equali ( weapon, "grenade" ) && get_user_flags ( iKiller ) & VIP_ACCESS )
	{
		eXP [ iKiller ] += get_pcvar_num ( HeXp ) + 10;
		ColorChat ( iKiller, GREEN, "%s Ai primit^4 %i^3 XP^4 [ He Grenade ]^3", szPrefix, get_pcvar_num(HeXp) + get_pcvar_num(KillXp) + 10 );
		
	}
	
	else if ( equali ( weapon, "grenade" ) )
	{
		eXP [ iKiller ] += get_pcvar_num ( HeXp );
		ColorChat ( iKiller, GREEN, "%s Ai primit^4 %i^3 XP^4 [ He Grenade ]^3", szPrefix, get_pcvar_num(HeXp) + get_pcvar_num(KillXp) );
		
	}
	
	else if ( equali ( weapon, "knife" ) && get_user_team ( iKiller ) == 2 && !salamander [ iKiller ] && get_user_flags ( iKiller ) & VIP_ACCESS )
	{
		eXP [ iKiller ] += get_pcvar_num ( KnifeXp ) + 10;
		ColorChat ( iKiller, GREEN, "%s Ai primit^4 %i^3 XP^4 [ Knife ]^3", szPrefix, get_pcvar_num(KnifeXp) + get_pcvar_num(KillXp) + 10 );
		
	}
	
	else if ( equali ( weapon, "knife" ) && get_user_team ( iKiller ) == 2 && !salamander [ iKiller ] )
	{
		eXP [ iKiller ] += get_pcvar_num ( HeXp );
		ColorChat ( iKiller, GREEN, "%s Ai primit^4 %i^3 XP^4 [ Knife ]^3", szPrefix, get_pcvar_num(KnifeXp) + get_pcvar_num(KillXp) );
		
	}
	
	else
	{
		ColorChat ( iKiller, GREEN, "%s Ai primit^4 %i^3 XP^4 [ Kill ]^3", szPrefix, get_pcvar_num ( KillXp ) );
		
	}
	
	if ( Level [ iVictim ] >= 25 ) {
		AddYellowBonusBox ( iVictim );
	}
	
	else if ( Level [ iVictim ] < 25 ) {
		AddBonusBox ( iVictim );
	}
	
	if ( get_user_team ( iKiller ) == 2 && get_user_team ( iVictim ) == 1 ) {
		cs_set_user_money ( iKiller, cs_get_user_money ( iKiller ) + 600 );
		eXP [ iKiller ] += get_pcvar_num ( KillXp );
	}
	
	if ( get_user_team ( iKiller ) == 1 && get_user_team ( iVictim ) == 2 ) {
		cs_set_user_money ( iKiller, cs_get_user_money ( iKiller ) + 500 );
		eXP [ iKiller ] += get_pcvar_num ( KillXp );
	}
	
	if ( Level [ iKiller ] <= 30 ) {
		ShowHud ( iKiller );
		return 1;
	}
	
	while ( eXP [ iKiller ] >= Levels [ Level [ iKiller ] ] ) {
		ColorChat ( iKiller, GREEN, "%s Felicitari ! Acum ai levelul ^4%s^3, cu ^4%i^3 XP.", szPrefix, Prefix [ Level [ iKiller ] ], eXP [ iKiller ] );
		Level [ iKiller ] ++;
		
	}
	
	SaveData ( iKiller );
	
	if ( !is_user_alive ( iVictim ) && get_user_team ( iVictim ) == 1 ) {
		new gMsgScreenFade = get_user_msgid ( "ScreenFade" );
		message_begin ( MSG_ONE_UNRELIABLE , gMsgScreenFade , {0,0,0} , iVictim );
		write_short ( (6<<10) ); // duration
		write_short ( (5<<10) ); // hold time
		write_short ( (1<<12) ); // fade type
		write_byte ( 255 );
		write_byte ( 0 );
		write_byte ( 0 );
		write_byte ( 170 );
		message_end ( );
	}
	
	else if ( !is_user_alive ( iVictim ) && get_user_team ( iVictim ) == 2 ) {
		new gMsgScreenFade = get_user_msgid ( "ScreenFade" );
		message_begin ( MSG_ONE_UNRELIABLE , gMsgScreenFade , {0,0,0} , iVictim );
		write_short ( (6<<10) ); // duration
		write_short ( (5<<10) ); // hold time
		write_short ( (1<<12) ); // fade type
		write_byte ( 0 );
		write_byte ( 0 );
		write_byte ( 255 );
		write_byte ( 170 );
		message_end ( );
	}
	
	return 1;
}

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: 
				{ 
				}
			}
		}
	}
}

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, Model[1])
				set_pev(ent,pev_team, 2)
			}
			
			case CS_TEAM_CT: {
				engfunc(EngFunc_SetModel,ent, Model[0])	
				set_pev(ent,pev_team, 1)
			}
		}
		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)
	}
}

public AddYellowBonusBox(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, Model_Yellow[1])
				set_pev(ent,pev_team, 2)
			}
			
			case CS_TEAM_CT: {
				engfunc(EngFunc_SetModel,ent, Model_Yellow[0])	
				set_pev(ent,pev_team, 1)
			}
		}
		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)
	}
}

public Touch(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) )
	{
		GiveBonusBox(toucher)
		set_pev(touched, pev_effects, EF_NODRAW)
		set_pev(touched, pev_solid, SOLID_NOT)
		remove_entity(touched);
	}
	
	return FMRES_IGNORED
}

public Touch_Yellow ( 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) )
	{
		GiveYellowBonusBox(toucher)
		set_pev(touched, pev_effects, EF_NODRAW)
		set_pev(touched, pev_solid, SOLID_NOT)
		remove_entity(touched);
	}
	
	return FMRES_IGNORED
}

public event_cur_weapon(id) {
	if(HasSpeed[id] && cs_get_user_team(id) == CS_TEAM_T && get_user_maxspeed(id) < get_pcvar_float(CvarFurienSpeed)) {
		set_user_maxspeed(id, get_pcvar_float(CvarFurienSpeed));
	}
	if(HasSpeed[id] && cs_get_user_team(id) == CS_TEAM_CT && get_user_maxspeed(id) < get_pcvar_float(CvarAntiFurienSpeed)) {
		set_user_maxspeed(id, get_pcvar_float(CvarAntiFurienSpeed));
	}
	
	if ( LowSpeed [ id ] && cs_get_user_team ( id ) == CS_TEAM_T ) {
		set_user_maxspeed ( id, get_user_maxspeed ( id ) - 250 );
	}
	
	if ( LowSpeed [ id ] && cs_get_user_team ( id ) == CS_TEAM_CT ) {
		set_user_maxspeed ( id, get_user_maxspeed ( id ) - 70 );
	}
}

public wrongeffect ( id ) {
	new gMsgScreenFade = get_user_msgid ( "ScreenFade" );
	message_begin ( MSG_ONE_UNRELIABLE , gMsgScreenFade , {0,0,0} , id );
	write_short ( (6<<10) ); // duration
	write_short ( (5<<10) ); // hold time
	write_short ( (1<<12) ); // fade type
	write_byte ( 255 );
	write_byte ( 0 );
	write_byte ( 0 );
	write_byte ( 170 );
	message_end ( );
}

public goodeffect ( id ) {
	new gMsgScreenFade = get_user_msgid ( "ScreenFade" );
	message_begin ( MSG_ONE_UNRELIABLE , gMsgScreenFade , {0,0,0} , id );
	write_short ( (6<<10) ); // duration
	write_short ( (5<<10) ); // hold time
	write_short ( (1<<12) ); // fade type
	write_byte ( 0 );
	write_byte ( 0 );
	write_byte ( 255 );
	write_byte ( 170 );
	message_end ( );
}

public GiveYellowBonusBox ( id ) {
	
	switch (random_num(1,5)) 
	{
		case 1:
		{
			goodeffect ( id );
			set_user_health ( id, get_user_health ( id ) + 150 ); 
			ColorChat ( id, GREEN, "%s Ai primit^4 150^3 HP .^4", szPrefix );
		}
		
		case 2:
		{
			goodeffect ( id );
			set_user_armor ( id, get_user_armor ( id ) + 200 );
			ColorChat ( id, GREEN, "%s Ai Primit^4 200^3 AP .^4", szPrefix );
		}
		
		case 3:
		{
			if ( get_user_team ( id ) == 2 ) {
				
				dual_mp5 [ id ] = true;
				k1ases_weapon [ id ] = false;
				remove_dragoncannon ( id );
				give_item ( id, "weapon_mp5navy" );
				cs_set_user_bpammo ( id, CSW_MP5NAVY, 200 );
				ColorChat ( id, GREEN, "%s Ai primit^4 Dual Mp5^3 .^4", szPrefix );
				
			}
			
			else if ( get_user_team ( id ) == 1 ) {
				
				give_item ( id, "weapon_flashbang" );
				cs_set_user_bpammo ( id, CSW_FLASHBANG, 5 );
				ColorChat ( id, GREEN, "%s Ai primit^4 5^3 grenazi^4 FLASH^3 .^4", szPrefix );
				
			}
			
		}
		
		case 4:
		{
			give_item ( id, "weapon_hegrenade" );
			cs_set_user_bpammo ( id, CSW_HEGRENADE, 3 );
			ColorChat ( id, GREEN, "%s Ai primit^4 3^3 grenazi^4 HE^3 .^4", szPrefix );
		}
		
		case 5:
		{
			set_user_credits ( id, get_user_credits ( id ) + 5 );
			ColorChat ( id, GREEN, "%s Ai primit^4 5^3 credite .^4", szPrefix );
		}
	}
}

public GiveBonusBox(id) {
	
	if ( get_user_team ( id ) == 1 ) {
		
		switch (random_num(1,20)) 
		{
			case 1:
			{
				goodeffect ( id );
				set_user_health ( id, get_user_health ( id ) + 50 ); 
				ColorChat ( id, GREEN, "%s Ai primit^4 50^3 HP .^4", szPrefix );
			}
			
			case 2:
			{
				goodeffect ( id );
				set_user_armor ( id, get_user_armor ( id ) + 100 );
				ColorChat ( id, GREEN, "%s Ai primit^4 100^3 AP .^4", szPrefix );
			}
			
			case 3:
			{
				goodeffect ( id );
				set_user_health ( id, get_user_health ( id ) - 20 ); 
				wrongeffect ( id );
				ColorChat ( id, GREEN, "%s Ai pierdut^4 20^3 HP .^4", szPrefix );
			}
			
			case 4:
			{
				goodeffect ( id );
				set_user_armor ( id, get_user_armor ( id ) - 50 );
				wrongeffect ( id );
				ColorChat ( id, GREEN, "%s Ai pierdut^4 50^3 AP .^4", szPrefix );
			}
			
			case 5:
			{
				goodeffect ( id );
				cs_set_user_money ( id, cs_get_user_money ( id ) + 3000 );
				ColorChat ( id, GREEN, "%s Ai primit^4 3000^3 $ .^4", szPrefix );
			}
			
			case 6:
			{
				cs_set_user_money ( id, cs_get_user_money ( id ) - 2000 );
				wrongeffect ( id );
				ColorChat ( id, GREEN, "%s Ai pierdut^4 2000^3 $ .^4", szPrefix );
			}
			
			case 7:
			{
				goodeffect ( id );
				set_user_gravity ( id, 0.4 );
				ColorChat ( id, GREEN, "%s Ai primit^4 400^3 Gravity .^4", szPrefix );
			}
			
			case 8:
			{
				goodeffect ( id );
				HasSpeed[id] = true;
				ColorChat ( id, GREEN, "%s Ai primit^4 1000^3 Speed .^4", szPrefix );
			}
			
			case 9:
			{
				LowSpeed [ id ] = true;
				wrongeffect ( id );
				ColorChat ( id, GREEN, "%s Ai pierdut din viteza .^4", szPrefix );
			}
			
			case 10:
			{
				set_user_health ( id, 225 );
				set_user_armor ( id, 225 );
				goodeffect ( id );
				ColorChat ( id, GREEN, "%s Acum ai^4 225^3 HP si^4 225^3 AP^4 .^4", szPrefix );
			}
			
			case 11:
			{
				cs_set_user_money ( id, 0 );
				wrongeffect ( id );
				ColorChat ( id, GREEN, "%s Ai pierdut toti banii !^4", szPrefix );
			}
			
			case 12:
			{
				
				if ( !super_knife_shop [ id ] || !super_knife_shop2 [ id ] ) {
					
					goodeffect ( id );
					if ( Level [ id ] < 15 ) {
						super_knife_shop [ id ] = true;
						set_pev ( id, pev_viewmodel2, super_knife_shop_v_model );
					}
					
					else if ( Level [ id ] >= 15 ) {
						super_knife_shop2 [ id ] = true;
						set_pev ( id, pev_viewmodel2, super_knife_shop_v_model2 );
						set_pev ( id, pev_weaponmodel2, super_knife_shop_p_model2 );
					}
					
					ColorChat ( id, GREEN, "%s Ai primit^4 Super Knife^4 .^4", szPrefix ); 
					
				}
				
				else if ( super_knife_shop [ id ] || super_knife_shop2 [ id ] ) {
					goodeffect ( id );
					fm_set_user_health ( id, get_user_health ( id ) + 70 );
					ColorChat ( id, GREEN, "%s Ai primit^4 70^3 HP .^4", szPrefix );
				}
			}
			
			case 13:
			{
				goodeffect ( id );
				set_user_xp ( id, get_user_xp ( id ) + 100 );
				ColorChat ( id, GREEN, "%s Ai primit^4 100^3 XP .^4", szPrefix );
			}
			
			case 14:
			{
				wrongeffect ( id );
				set_user_xp ( id, get_user_xp ( id ) - 50 );
				ColorChat ( id, GREEN, "%s Ai pierdut^4 50^3 XP .^4", szPrefix );
			}
			
			case 15:
			{
				ColorChat ( id, GREEN, "%s A trecut mosul pe la tine, ai primit^4 16000^3 $ .^4", szPrefix );
				goodeffect ( id );
			}
			
			case 16:
			{	
				if ( !vip_axe_knife [ id ] || !deklowaz [ id ] ) {
					HasTeleport[id] = true;
					client_cmd(id, "bind x power2");
					goodeffect ( id );
					ColorChat ( id, GREEN, "%s Ai primit puterea de a te teleporta, apasa tasta^4 X^3 pentru a te teleporta .^4", szPrefix );
				}
				
				else {
					set_user_credits ( id, get_user_credits ( id ) + 2 );
					ColorChat ( id, GREEN, "%s Ai primit^4 2^3 credite .", szPrefix );
				}
				
				
			}
			
			case 17:
			{
				
				HasSpeed[id] = true;
				client_cmd(id, "cl_sidespeed %d",get_pcvar_float(CvarFurienSpeed))
				client_cmd(id, "cl_forwardspeed %d",get_pcvar_float(CvarFurienSpeed))
				client_cmd(id, "cl_backspeed %d",get_pcvar_float(CvarFurienSpeed))
				set_user_maxspeed(id, get_pcvar_float(CvarFurienSpeed));
			}
			
			case 18:
			{
				
				
				fm_set_user_health ( id, get_user_health ( id ) + 80 );
				ColorChat ( id, GREEN, "%s Ai primit^4 80^3 HP .^4", szPrefix );
			}
			
			case 19:
			{
				give_item ( id, "weapon_hegrenade" );
				ColorChat ( id, GREEN, "%s Ai primit o grenada^4 HE^3 .", szPrefix );
			}
			
			case 20:
			{
				give_item ( id, "weapon_flashbang" );
				ColorChat ( id, GREEN, "%s Ai primit o grenada^4 FLASH^3 .", szPrefix );
			}
		}
	}
	
	else if ( get_user_team ( id ) == 2 ) {
		
		switch (random_num(1,23)) 
		{
			case 1:
			{
				goodeffect ( id );
				set_user_health ( id, get_user_health ( id ) + 50 ); 
				ColorChat ( id, GREEN, "%s Ai primit^4 50^3 HP .^4", szPrefix );
			}
			
			case 2:
			{
				goodeffect ( id );
				set_user_armor ( id, get_user_armor ( id ) + 100 );
				ColorChat ( id, GREEN, "%s Ai primit^4 100^3 AP .^4", szPrefix );
			}
			
			case 3:
			{
				goodeffect ( id );
				set_user_health ( id, get_user_health ( id ) - 20 ); 
				wrongeffect ( id );
				ColorChat ( id, GREEN, "%s Ai pierdut^4 20^3 HP .^4", szPrefix );
			}
			
			case 4:
			{
				goodeffect ( id );
				set_user_armor ( id, get_user_armor ( id ) - 50 );
				wrongeffect ( id );
				ColorChat ( id, GREEN, "%s Ai pierdut^4 50^3 AP .^4", szPrefix );
			}
			
			case 5:
			{
				goodeffect ( id );
				cs_set_user_money ( id, cs_get_user_money ( id ) + 3000 );
				ColorChat ( id, GREEN, "%s Ai primit^4 3000^3 $ .^4", szPrefix );
			}
			
			case 6:
			{
				cs_set_user_money ( id, cs_get_user_money ( id ) - 2000 );
				wrongeffect ( id );
				ColorChat ( id, GREEN, "%s Ai pierdut^4 2000^3 $ .^4", szPrefix );
			}
			
			case 7:
			{
				goodeffect ( id );
				set_user_gravity ( id, 0.4 );
				ColorChat ( id, GREEN, "%s Ai primit^4 400^3 Gravity .^4", szPrefix );
			}
			
			case 8:
			{
				goodeffect ( id );
				HasSpeed[id] = true;
				ColorChat ( id, GREEN, "%s Ai primit^4 750^3 Speed .^4", szPrefix );
			}
			
			case 9:
			{
				entity_set_float ( id, EV_FL_maxspeed, 250.0 );
				wrongeffect ( id );
				ColorChat ( id, GREEN, "%s Ai pierdut din viteza .^4", szPrefix );
			}
			
			case 10:
			{
				set_user_health ( id, 10 );
				set_user_armor ( id, 20 );
				wrongeffect ( id );
				ColorChat ( id, GREEN, "%s Acum ai^4 10^3 HP si^4 20^3 AP^4 .^4", szPrefix );
			}
			
			case 11:
			{
				cs_set_user_money ( id, 0 );
				wrongeffect ( id );
				ColorChat ( id, GREEN, "%s Ai pierdut toti banii !^4", szPrefix );
			}
			
			case 12:
			{
				
				if (  !salamander [ id ] ) {
					
					goodeffect ( id );
					salamander [ id ] = true;
					set_task ( 0.1, "SalamanderGiveItem", id );
					set_task ( 30.0, "reverse_salamander", id );
					ColorChat ( id, GREEN, "%s Ai primit^4 Salamander^3 pentru^4 30^3 secunde .", szPrefix );
				}
				
				else if ( salamander [ id ] ) {
					goodeffect ( id );
					fm_set_user_health ( id, get_user_health ( id ) + 100 );
					ColorChat ( id, GREEN, "%s Ai primit^4 100^3 HP .^4", szPrefix );
				}
				
			}
			
			case 13:
			{
				goodeffect ( id );
				set_user_xp ( id, get_user_xp ( id ) + 100 );
				ColorChat ( id, GREEN, "%s Ai primit^4 100^3 XP .^4", szPrefix );
			}
			
			case 14:
			{
				wrongeffect ( id );
				set_user_xp ( id, get_user_xp ( id ) - 20 );
				ColorChat ( id, GREEN, "%s Ai pierdut^4 20^3 XP .^4", szPrefix );
			}
			
			case 15:
			{
				ColorChat ( id, GREEN, "%s A trecut mosul pe la tine, ai primit^4 16000^3 $ .^4", szPrefix );
				goodeffect ( id );
			}
			
			case 16:
			{	
				if ( !vip_axe_knife [ id ] || !deklowaz [ id ] ) {
					HasTeleport[id] = true;
					client_cmd(id, "bind x power2");
					goodeffect ( id );
					ColorChat ( id, GREEN, "%s Ai primit puterea de a te teleporta, apasa tasta^4 X^3 pentru a te teleporta .^4", szPrefix );
				}
				
				else {
					goodeffect ( id );
					set_user_credits ( id, get_user_credits ( id ) + 2 );
					ColorChat ( id, GREEN, "%s Ai primit^4 2^3 credite .", szPrefix );
				}
				
				
			}
			
			case 17:
			{
				goodeffect ( id );
				HasSpeed[id] = true;
				client_cmd(id, "cl_sidespeed %d",get_pcvar_float(CvarAntiFurienSpeed))
				client_cmd(id, "cl_forwardspeed %d",get_pcvar_float(CvarAntiFurienSpeed))
				client_cmd(id, "cl_backspeed %d",get_pcvar_float(CvarAntiFurienSpeed))
				set_user_maxspeed(id, get_pcvar_float(CvarAntiFurienSpeed));
			}
			
			
			case 18:
			{
				
				if ( !k1ases_weapon [ id ] ) {
					goodeffect ( id );
					k1ases_weapon [ id ] = true;
					dual_mp5 [ id ] = false;
					remove_dragoncannon ( id );
					give_k1ases ( id );
					ColorChat ( id, GREEN, "%s Ai primit^4 K1ASUS^3 .^4", szPrefix );
				}
				
				else if ( k1ases_weapon [ id ] ) {
					goodeffect ( id );
					fm_set_user_health ( id, get_user_health ( id ) + 70 );
					ColorChat ( id, GREEN, "%s Ai primit^4 70^3 HP .^4", szPrefix );
				}
				
				
			}
			
			case 19:
			{
				goodeffect ( id );
				give_item ( id, "weapon_hegrenade" );
				ColorChat ( id, GREEN, "%s Ai primit o grenada^4 HE^3 .", szPrefix );
			}
			
			case 20:
			{
				goodeffect ( id );
				give_item ( id, "weapon_flashbang" );
				ColorChat ( id, GREEN, "%s Ai primit o grenada^4 FLASH^3 .", szPrefix );
			}
			
			case 21:
			{
				if ( UserHaveQuad [ id ] ) {
					goodeffect ( id );
					ColorChat ( id, GREEN, "%s Ai primit^4 5^3 gloante pentru^4 Quad-Barrel^3  .^4", szPrefix );
					cs_set_user_bpammo ( id, CSW_QB, cs_get_user_bpammo ( id, CSW_QB ) + 5 );
				}
				
				else {
					goodeffect ( id );
					set_task ( 0.1, "GiveQuadBarrel", id );
					ColorChat ( id, GREEN, "%s Ai primit^4 Quad-Barrel^3 .", szPrefix );
					UserHaveQuad [ id ] = true;
				}
			}
			
			case 22:
			{
				if ( UserHaveDragon [ id ] ) {
					goodeffect ( id );
					g_cannon_ammo [ id ] += 3;
					ColorChat ( id, GREEN, "%s Ai primit^4 3^3 gloante pentru^4 Dragon Cannon^3  .^4", szPrefix );
				}
				else {
					goodeffect ( id );
					ColorChat ( id, GREEN, "%s Ai primit^4 Dragon Cannon^3 .", szPrefix );
					set_task ( 0.1, "get_dragoncannon", id );
					UserHaveDragon [ id ] = true;
				}
			}
			
			case 23:
			{
				if ( UserHaveM79  [ id ] ) {
					goodeffect ( id );
					ColorChat ( id, GREEN, "%s Ai primit^4 2^3 grenazi pentru lansator. ^4", szPrefix );
					grenade_count [ id ] += 2;
				}
				
				else {
					goodeffect ( id );
					ColorChat ( id, GREEN, "%s Ai primit un^4 Lansator de Grenazi^3 .^4", szPrefix );
					give_weapon ( id, 2 );
					m79++;
					UserHaveM79 [ id ] = true;
				}
			}
			
			
		}
	}
}

public CmdTeleport(id) {
	if (!is_user_alive(id) || !HasTeleport[id]) return PLUGIN_CONTINUE
	
	if (Teleport_Cooldown[id]) {
		ColorChat ( id, GREEN, "%s Puterea iti va reveni in^4 %d^3 secunde .", Teleport_Cooldown [ id ] );
		return PLUGIN_CONTINUE
	}
	else if (teleport(id)) {
		emit_sound(id, CHAN_STATIC, SOUND_BLINK, 1.0, ATTN_NORM, 0, PITCH_NORM)
		remove_task(id)
		Teleport_Cooldown[id] = get_pcvar_num(CvarTeleportCooldown);
		set_task(1.0, "TeleportShowHUD", id, _, _, "b");
		set_hudmessage(0, 100, 200, 0.05, 0.60, 0, 1.0, 1.1, 0.0, 0.0, -11);
		if(get_pcvar_num(CvarTeleportCooldown) != 1) {
			show_hudmessage(id, "Puterea iti va reveni in^4 %d^3 secunde",get_pcvar_num(CvarTeleportCooldown));
		}
		if(get_pcvar_num(CvarTeleportCooldown) == 1) {
			show_hudmessage(id, "Puterea iti va reveni in^4 %d^3 secunda",get_pcvar_num(CvarTeleportCooldown));
		}
	}
	else {
		ColorChat ( id, GREEN, "%s Pozitia de teleportare este invalida .^4", szPrefix ); 
	}
	return PLUGIN_CONTINUE
}

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 cmdVipWeaponsMenu ( id, level, cid ) { 
	
	new menu = menu_create ( "\rFurien XP \yMenu", "VIPWeapons_Giver" );
	
	if ( get_user_team ( id ) == 2 ) {
		
		menu_additem ( menu, "\ySCORPION MP5 [ \r3 CREDITE \y]", "1", VIP_ACCESS );
		menu_additem ( menu, "\yQUAD BARREL [ \r3 CREDITE \y]", "2", VIP_ACCESS );
		menu_additem ( menu, "\yDRAGON CANNON [ \r4 CREDITE \y]", "3", VIP_ACCESS );
		menu_additem ( menu, "\yM79 LAUNCHER [ \r4 CREDITE \y]", "4", VIP_ACCESS );
		
		
		menu_setprop ( menu, MPROP_EXIT, MEXIT_ALL );
		menu_display ( id, menu, 0 );
		
	}
	
	return 1;
}

public VIPWeapons_Giver ( id, menu, item ) {
	
	if( item == MENU_EXIT )
	{
		return 1;
	}
	
	new data [ 6 ], szName [ 64 ];
	new access, callback;
	menu_item_getinfo ( menu, item, access, data,charsmax ( data ), szName,charsmax ( szName ), callback );
	new key = str_to_num ( data );
	
	switch(key)
	{
		case 1:
		{
			new iCredits = get_user_credits(id) - 3;
			if( iCredits < 0 )
			{
				ColorChat ( id, GREEN, "%s Nu ai destule credite !", szPrefix );
				return 1;
			}
			else
			{
				ColorChat ( id, GREEN, "%s Ai cumparat^4 Scorpion Mp5^3 .^4", szPrefix );
				give_k1ases ( id );
				set_user_credits ( id, iCredits );
				return 1;
			}
		}
		
		case 2:
		{
			new iCredits = get_user_credits(id) - 3;
			if( iCredits < 0 )
			{
				ColorChat ( id, GREEN, "%s Nu ai destule credite !", szPrefix );
				return 1;
			}
			else
			{
				ColorChat ( id, GREEN, "%s Ai cumparat^4 Quad-Barrel^3 .^4", szPrefix );
				set_task ( 0.1, "GiveQuadBarrel", id );
				set_user_credits ( id, iCredits );
				return 1;
			}
		}
		
		case 3:
		{
			new iCredits = get_user_credits(id) - 4;
			if( iCredits < 0 )
			{
				ColorChat ( id, GREEN, "%s Nu ai destule credite !", szPrefix );
				return 1;
			}
			else
			{
				ColorChat ( id, GREEN, "%s Ai cumparat^4 Dragon Cannon^3 .^4", szPrefix );
				set_task ( 0.1, "get_dragoncannon", id );
				set_user_credits ( id, iCredits );
				return 1;
			}
		}
		
		case 4:
		{
			new iCredits = get_user_credits(id) - 4;
			if( iCredits < 0 )
			{
				ColorChat ( id, GREEN, "%s Nu ai destule credite !", szPrefix );
				return 1;
			}
			else
			{
				ColorChat ( id, GREEN, "%s Ai cumparat^4 M79 Launcher^3 .^4", szPrefix );
				give_weapon ( id, 2 );
				m79++;
				UserHaveM79 [ id ] = true;
				set_user_credits ( id, iCredits );
				return 1;
			}
		}
		
	}
	
	menu_destroy ( menu );
	return 1;
	
}

public cmdXpMenu ( id, level, cid ) { 
	
	new menu = menu_create ( "\rFurien XP \yMenu", "Menu_Giver" );
	menu_additem ( menu, "\y3 HE \y[ \rLvL. 3 - 1 Credit\y ]", "1", 0 );
	menu_additem ( menu, "\y5 FB & 2 SMK \y[ \rLvL. 5 - 1 Credit \y ]", "2", 0 );
	menu_additem ( menu, "\y6 HE \y[ \rLvL. 8 - 2 Credite\y ]", "3", 0 );
	menu_additem ( menu, "\ySPEED \y[ \rLvL. 10 - 2 Credite \y ]", "4", 0 );
	menu_additem ( menu, "\yGRAVITY \y[ \rLvL. 13 - 2 Credite\y ]", "5", 0 );
	menu_additem ( menu, "\yGODMODE \y[ \rLvL. 16 - 3 Credite\y ]", "6", 0 );
	menu_additem ( menu, "\yNOCLIP \y[ \rLvL. 18 - 3 Credite\y ]", "7", 0 );
	menu_additem ( menu, "\yCHAMELEON \y[ \rLvL. 22 - 4 Credite \y ]", "8", 0 );
	menu_additem ( menu, "\yRESPAWN \y[ \rLvL. 25 - 5 Credite \y ]", "9", 0 );
	
	if ( get_user_team ( id ) == 2 ) {
		menu_additem ( menu, "\ySALAMANDER \y[ \rLvL. 28 - 5 Credite \y ]", "10", 0 );
	}
	
	menu_setprop ( menu, MPROP_EXIT, MEXIT_ALL );
	menu_display ( id, menu, 0 );
	
	
	return 1;
}

public Menu_Giver ( id, menu, item ) {
	
	if( item == MENU_EXIT )
	{
		return 1;
	}
	
	if ( g_iCount [ id ] >= 1 ) {
		ColorChat ( id, GREEN, "%s Ai folosit odata aceasta optiune .", szPrefix );
	}
	
	new data [ 6 ], szName [ 64 ];
	new access, callback;
	menu_item_getinfo ( menu, item, access, data,charsmax ( data ), szName,charsmax ( szName ), callback );
	new key = str_to_num ( data );
	
	switch(key)
	{
		case 1:
		{
			if ( g_Menu [ id ] >= 3 ) {
				
				ColorChat ( id, GREEN, "%s Ai folosit deja meniul de^4 3^3 ori .", szPrefix );
				return 1;
			}
			
			else {
				
				if ( Level [ id ] >= 3 ) {
					give_item ( id, "weapon_hegrenade" );
					cs_set_user_bpammo ( id, CSW_HEGRENADE, 3 );
					++g_Menu [ id ];
					set_user_credits ( id, get_user_credits ( id ) - 1 );
					return 1;
				}
				
				else {
					ColorChat ( id, GREEN, "%s Nu ai level 3 .", szPrefix );
					return 1;
				}
			}
		}
		
		case 2:
		{
			
			if ( g_Menu [ id ] >= 3 ) {
				ColorChat ( id, GREEN, "%s Ai folosit deja meniul de^4 3^3 ori .", szPrefix );
				return 1;
			}
			
			else {
				if ( Level [ id ] >= 5 ) {
					give_item ( id, "weapon_flashbang" );
					give_item ( id, "weapon_smokegrenade" );
					cs_set_user_bpammo ( id, CSW_FLASHBANG, 5 );
					cs_set_user_bpammo ( id, CSW_SMOKEGRENADE, 2 );
					set_user_credits ( id, get_user_credits ( id ) - 1 );
					++g_Menu [ id ];
					return 1;
				}
				
				else {
					ColorChat ( id, GREEN, "%s Nu ai level 5 .", szPrefix );
					return 1;
				}
			}
		}
		
		case 3:
		{
			
			if ( g_Menu [ id ] >= 3 ) {
				ColorChat ( id, GREEN, "%s Ai folosit deja meniul de^4 3^3 ori .", szPrefix );
				return 1;
			}
			
			else {
				if ( Level [ id ] >= 8 ) {
					give_item ( id, "weapon_hegrenade" );
					cs_set_user_bpammo ( id, CSW_HEGRENADE, 6 );
					++g_Menu [ id ];
					set_user_credits ( id, get_user_credits ( id ) - 2 );
					return 1;
				}
				
				else {
					ColorChat ( id, GREEN, "%s Nu ai level 8 .", szPrefix );
					return 1;
				}
			}
		}
		
		case 4:
		{
			
			if ( g_Menu [ id ] >= 3 ) {
				ColorChat ( id, GREEN, "%s Ai folosit deja meniul de^4 3^3 ori .", szPrefix );
				return 1;
			}
			
			else {
				if ( Level [ id ] >= 10 ) {
					entity_set_float ( id, EV_FL_maxspeed, 450.0 );  
					++g_Menu [ id ];
					set_user_credits ( id, get_user_credits ( id ) - 2 );
					return 1;
				}
				
				else {
					ColorChat ( id, GREEN, "%s Nu ai level 10 .", szPrefix );
					return 1;
				}
			}
		}
		
		case 5:
		{
			
			if ( g_Menu [ id ] >= 3 ) {
				ColorChat ( id, GREEN, "%s Ai folosit deja meniul de^4 3^3 ori .", szPrefix );
				return 1;
			}
			
			else {
				if ( Level [ id ] >= 13 ) {
					set_user_gravity ( id, 0.5 );
					++g_Menu [ id ];
					set_user_credits ( id, get_user_credits ( id ) - 2 );
					return 1;
				}
				
				else {
					ColorChat ( id, GREEN, "%s Nu ai level 13 .", szPrefix );
					return 1;
				}
			}
		}
		
		case 6:
		{
			if ( g_Menu [ id ] >= 3 ) {
				ColorChat ( id, GREEN, "%s Ai folosit deja meniul de^4 3^3 ori .", szPrefix );
				return 1;
			}
			
			else {
				if ( Level [ id ] >= 16 ) {
					set_user_godmode ( id, 1 );
					ColorChat ( id, GREEN, "%s Ai primit God pentru^4 8^4 secunde .", szPrefix );
					set_task ( 8.0, "reverse_godmode", id );
					++g_Menu [ id ];
					set_user_credits ( id, get_user_credits ( id ) - 3 );
					return 1;
				}
				
				else {
					ColorChat ( id, GREEN, "%s Nu ai level 16 .", szPrefix );
					return 1;
				}
			}
		}
		
		case 7:
		{
			if ( g_Menu [ id ] >= 3 ) {
				ColorChat ( id, GREEN, "%s Ai folosit deja meniul de^4 3^3 ori .", szPrefix );
				return 1;
			}
			
			else {
				if ( Level [ id ] >= 18 ) {
					set_user_noclip ( id, 1 );
					ColorChat ( id, GREEN, "%s Ai primit Noclip pentru^4 5^4 secunde .", szPrefix );
					set_task ( 5.0, "reverse_noclip", id );
					++g_Menu [ id ];
					set_user_credits ( id, get_user_credits ( id ) - 3 );
					return 1;
				}
				
				else {
					ColorChat ( id, GREEN, "%s Nu ai level 18 .", szPrefix );
					return 1;
				}
			}
		}
		
		case 8:
		{
			if ( g_Menu [ id ] >= 3 ) {
				ColorChat ( id, GREEN, "%s Ai folosit deja meniul de^4 3^3 ori .", szPrefix );
				return 1;
			}
			
			else {
				if ( Level [ id ] >= 22 ) {
					chameleon ( id );
					++g_Menu [ id ];
					set_user_credits ( id, get_user_credits ( id ) - 4 );
					return 1;
				}
				
				else {
					ColorChat ( id, GREEN, "%s Nu ai level 22 .", szPrefix );
					return 1;
				}
			}
		}
		
		case 9:
		{
			if ( g_Menu [ id ] >= 3 ) {
				ColorChat ( id, GREEN, "%s Ai folosit deja meniul de^4 3^3 ori .", szPrefix );
			}
			
			else {
				if ( Level [ id ] >= 25 ) {
					
					if(is_user_alive(id)) 
					{
						ColorChat ( id, GREEN, "%s Esti deja in viata .", szPrefix );
						return 1;
					}
					
					if ( get_user_team ( id ) == 3) {
						
						ColorChat ( id, GREEN, "%s Esti spectator .", szPrefix );
						
						if(!is_user_alive(id)) 
						{
							
							ExecuteHamB ( Ham_CS_RoundRespawn, id );
							set_task(0.5, "SetUserWeapons", id + 12345);
							++g_Menu [ id ];
							set_user_credits ( id, get_user_credits ( id ) - 5 );
							return 1;
						}
						
						return 1;
					}
					
					else {
						ColorChat ( id, GREEN, "%s Nu ai level 25 .", szPrefix );
						return 1;
					}
				}
			}
		}
		
		case 10:
		{
			if ( get_user_team ( id ) == 2 ) {
				
				if ( g_Menu [ id ] >= 3 ) {
					ColorChat ( id, GREEN, "%s Ai folosit deja meniul de^4 3^3 ori .", szPrefix );
					return 1;
				}
				
				else {
					if ( Level [ id ] >= 28 && !SalamanderLimit [ id ] ) {
						
						salamander [ id ] = true;
						ColorChat ( id, GREEN, "%s Ai primit aceasta arma pentru^4 1^4 minut .", szPrefix );
						set_task ( 0.1, "SalamanderGiveItem", id );
						set_task ( 60.0, "reverse_salamander", id );
						++g_Menu [ id ];
						SalamanderLimit [ id ] = true;
						set_user_credits ( id, get_user_credits ( id ) - 5 );
						return 1;
						
						
					}
					else if ( SalamanderLimit [ id ] ) {
						ColorChat ( id, GREEN, "%s Ai mai folosit odata aceasta optiune .", szPrefix );
						return 1;
					}
					
					else if ( Level [ id ] < 28 ) {
						ColorChat ( id, GREEN, "%s Nu ai level 30 .", szPrefix );
						return 1;
					}
				}
			}
			
		}
	}
	
	menu_destroy ( menu );
	return 1;
	
}

public SetUserWeapons(id) {
	id -= 12345;
	
	if( !is_user_connected(id) ) return PLUGIN_HANDLED;
	
	strip_user_weapons(id);
	give_item(id, "weapon_knife");
	set_task ( 0.1, "cmdClassMenu", id );
	
	return PLUGIN_CONTINUE;
}

public reverse_godmode ( id ) {
	
	set_user_godmode ( id , 0 );
}

public reverse_noclip ( id ) {
	
	set_user_noclip ( id, 0 );
}

public reverse_invis ( id ) {
	
	set_user_rendering( id, kRenderFxNone, 0, 0, 0, kRenderTransAlpha, 255 );
	ColorChat ( id, GREEN, "%s Timpul a expirat ! Acum esti din nou^4 vizibil^3 .", szPrefix );
}

public reverse_salamander ( id ) {
	
	strip_user_weapons ( id );
	give_item ( id, "weapon_knife" );
	salamander [ id ] = false;
	set_task ( 0.1, "cmdClassMenu", id );
	
	ColorChat ( id, GREEN, "%s Timpul a expirat ! Nu mai ai arma^4 salamander^3 .", szPrefix );
}

public show_salamander_icon ( id ) {
	if ( salamander [ id ] ) {
		if (!(pev(id,pev_button) & FL_ONGROUND))
		{    
			new iconstatus;
			iconstatus = get_user_msgid("StatusIcon");
			message_begin(MSG_ONE,iconstatus,{0,0,0},id);
			write_byte(1); // status (0=hide, 1=show, 2=flash)
			write_string("dmg_heat"); // sprite name
			write_byte(255); // red
			write_byte(0); // green
			write_byte(0); // blue
			message_end();
		}
		
	}
	
	else {
		if (!(pev(id,pev_button) & FL_ONGROUND))
		{    
			new iconstatus;
			iconstatus = get_user_msgid("StatusIcon");
			message_begin(MSG_ONE,iconstatus,{0,0,0},id);
			write_byte(0); // status (0=hide, 1=show, 2=flash)
			write_string("dmg_heat"); // sprite name
			write_byte(255); // red
			write_byte(0); // green
			write_byte(0); // blue
			message_end();
		}
	}
}

public reverse_model ( id ) {
	
	if ( get_user_team ( id ) == 1 ) {
		cs_set_user_model ( id, "guerilla" );
		ColorChat ( id, GREEN, "%s Timpul a expirat ! Acum arati din nou ca un^4 Furien^3 .", szPrefix );
	}
	
	else if ( get_user_team ( id ) == 2 ) {
		cs_set_user_model ( id, "gign" );
		ColorChat ( id, GREEN, "%s Timpul a expirat ! Acum arati din nou ca un^4 AntiFurien^3 .", szPrefix );
	}
}

public chameleon ( id ) {
	
	if ( get_user_team ( id ) == 1 ) {
		cs_set_user_model ( id, "gign" );
		ColorChat ( id, GREEN, "%s Acum arati ca un^4 AntiFurien^3 pentru^4 60^3 secunde .", szPrefix );
		set_task ( 60.0, "reverse_model", id );
	}
	
	else if ( get_user_team ( id ) == 2 ) {
		cs_set_user_model ( id, "guerilla" );
		ColorChat ( id, GREEN, "%s Acum arati ca un^4 Furien^3 pentru^4 60^3 secunde .", szPrefix );
		set_task ( 60.0, "reverse_model", id );
	}
}

public grenade_throw ( id, gid, wid ) {
	
	if ( strike_grenade [ id ] || strike_grenade2 [ id ] || strike_grenade3 [ id ] && get_user_weapon ( id ) == CSW_HEGRENADE && get_user_team ( id ) == 1 ) {
		new gtm = 1;
		if(!gtm) return;
		new r, g, b;
		switch(gtm)
		{
			case 1:
			{
				r = 255;
				g = 0;
				b = 0;
			}
		}
		message_begin(MSG_BROADCAST, SVC_TEMPENTITY);
		write_byte(TE_BEAMFOLLOW);
		write_short(gid);
		write_short(g_trail);
		write_byte(10);
		write_byte(5);
		write_byte(r);
		write_byte(g);
		write_byte(b);
		write_byte(192);
		message_end();
	}
}

// POWERS -------------------------------------

////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Drop Enemy Weapon |
//==========================================================================================================	
public DropShowHUD(id) {
	if (!is_user_alive(id) || HasPower[id] != 4) {
		remove_task(id);
		Drop_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) && Drop_Cooldown[id] == 1) {
		Drop_Cooldown[id] --;
		show_hudmessage(id, "Puterea iti va reveni in: %d secunda",Drop_Cooldown[id]);
	}
	if(is_user_alive(id) && Drop_Cooldown[id] > 1) {
		Drop_Cooldown[id] --;
		show_hudmessage(id, "Puterea iti va reveni in: %d secunde",Drop_Cooldown[id]);
	}
	if(Drop_Cooldown[id] <= 0) {
		show_hudmessage(id, "Ti-a revenit puterea");
		ColorChat(id, GREEN,"%s Iti poti folosi din nou puterea .", szPrefix);
		remove_task(id);
		Drop_Cooldown[id] = 0;
	}
	return PLUGIN_HANDLED;
}


////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Freeze |
//==========================================================================================================
public Freeze(id) {
	if (!is_user_alive(id) || Frozen[id]) return;
	
	pev(id, pev_maxspeed, TempSpeed[id]); //get temp speed
	pev(id, pev_gravity, TempGravity[id]); //get temp speed
	fm_set_rendering(id, kRenderFxGlowShell, 0, 100, 200, kRenderNormal, 25);
	engfunc(EngFunc_EmitSound, id, CHAN_BODY, FROSTPLAYER_SND[random_num(0, sizeof FROSTPLAYER_SND - 1)], 1.0, ATTN_NORM, 0, PITCH_NORM);
	message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("ScreenFade"), _, id);
	write_short(UNIT_SECOND*1);
	write_short(floatround(UNIT_SECOND*get_pcvar_float(CvarFreezeDuration)));
	write_short(FFADE_IN);
	write_byte(0);
	write_byte(50);
	write_byte(200);
	write_byte(100);
	message_end();
	if (pev(id, pev_flags) & FL_ONGROUND)
		set_pev(id, pev_gravity, 999999.9);
	else
		set_pev(id, pev_gravity, 0.000001);
	
	Frozen[id] = true;
	set_task(get_pcvar_float(CvarFreezeDuration), "remove_freeze", id);
}

public set_normal(id) {
	set_pev(id, pev_gravity, TempGravity[id]);
	set_pev(id, pev_maxspeed, TempSpeed[id]);
}

public FreezeShowHUD(id) {
	if (!is_user_alive(id) || HasPower[id] != 5) {
		remove_task(id);
		Freeze_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) && Freeze_Cooldown[id] == 1) {
		Freeze_Cooldown[id] --;
		show_hudmessage(id, "Puterea iti va reveni in: %d secunda",Freeze_Cooldown[id]);
	}
	if(is_user_alive(id) && Freeze_Cooldown[id] > 1) {
		Freeze_Cooldown[id] --;
		show_hudmessage(id, "Puterea iti va reveni in: %d secunde",Freeze_Cooldown[id]);
	}
	if(Freeze_Cooldown[id] <= 0) {
		show_hudmessage(id, "Ti-a revenit puterea");
		ColorChat(id, GREEN, "%s Iti poti folosi din nou puterea .", szPrefix);
		remove_task(id);
		Freeze_Cooldown[id] = 0;
	}
	return PLUGIN_HANDLED;
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Drag |
//==========================================================================================================
public DragStart(id) {
	if (HasPower[id] == 6 && !Drag_I[id]) {
		
		if (!is_user_alive(id)) {
			return PLUGIN_HANDLED;
		}
		if (Drag_Cooldown[id]) {
			ColorChat(id, GREEN,"%s Puterea iti va reveni in^4 %d^3 secunde .^4", szPrefix, Drag_Cooldown[id]);
			return PLUGIN_HANDLED;
		}
		new hooktarget, body;
		get_user_aiming(id, hooktarget, body);
		
		if (is_user_alive(hooktarget)) {
			if (get_user_team(id) != get_user_team(hooktarget)) {				
				Hooked[id] = hooktarget;
				emit_sound(hooktarget, CHAN_BODY, DRAG_HIT_SND, 1.0, ATTN_NORM, 0, PITCH_HIGH);
			}
			else {
				return PLUGIN_HANDLED;
			}
			
			if (get_pcvar_float(CvarDragSpeed) <= 0.0)
				CvarDragSpeed = 1;
			
			new parm[2];
			parm[0] = id;
			parm[1] = hooktarget;
			
			set_task(0.1, "DragReelin", id, parm, 2, "b");
			HarpoonTarget(parm);
			Drag_I[id] = true;
			Not_Cooldown[id] = false;
			if(get_pcvar_num(CvarDragUnb2Move) == 1)
				Unable2move[hooktarget] = true;
			
			if(get_pcvar_num(CvarDragUnb2Move) == 2)
				Unable2move[id] = true;
			
			if(get_pcvar_num(CvarDragUnb2Move) == 3) {
				Unable2move[hooktarget] = true;
				Unable2move[id] = true;
			}
		} 
		else {
			Hooked[id] = 33;
			NoTarget(id);
			Not_Cooldown[id] = false;
			set_task(1.0,"DragEnd",id);
			emit_sound(id, CHAN_BODY, DRAG_MISS_SND, 1.0, ATTN_NORM, 0, PITCH_HIGH);
			Drag_I[id] = true;
		}
	}
	else
		return PLUGIN_HANDLED;
	
	return PLUGIN_CONTINUE;
}

public DragShowHUD(id) {
	if (!is_user_alive(id) || HasPower[id] != 6) {
		remove_task(id);
		Drag_Cooldown[id] = 0;
		Not_Cooldown[id] = true;
		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) && Drag_Cooldown[id] == 1) {
		Drag_Cooldown[id] --;
		show_hudmessage(id, "Puterea iti va reveni in: %d secunda",Drag_Cooldown[id]);
	}
	if(is_user_alive(id) && Drag_Cooldown[id] > 1) {
		Drag_Cooldown[id] --;
		show_hudmessage(id, "Puterea iti va reveni in: %d secunde",Drag_Cooldown[id]);
	}
	if(Drag_Cooldown[id] <= 0) {
		show_hudmessage(id, "Ti-a revenit puterea");
		ColorChat(id, GREEN, "%s Iti poti folosi din nou puterea .", szPrefix);
		remove_task(id);
		Drag_Cooldown[id] = 0;
		Not_Cooldown[id] = true;
	}
	return PLUGIN_HANDLED;
}

public DragReelin(parm[]) {
	new id = parm[0];
	new victim = parm[1];
	
	if (!Hooked[id] || !is_user_alive(victim)) {
		DragEnd(id);
		return;
	}
	
	new Float:fl_Velocity[3];
	new idOrigin[3], vicOrigin[3];
	
	get_user_origin(victim, vicOrigin);
	get_user_origin(id, idOrigin);
	
	new distance = get_distance(idOrigin, vicOrigin);
	
	if (distance > 1) {
		new Float:fl_Time = distance / get_pcvar_float(CvarDragSpeed);
		
		fl_Velocity[0] = (idOrigin[0] - vicOrigin[0]) / fl_Time;
		fl_Velocity[1] = (idOrigin[1] - vicOrigin[1]) / fl_Time;
		fl_Velocity[2] = (idOrigin[2] - vicOrigin[2]) / fl_Time;
	}
	else {
		fl_Velocity[0] = 0.0;
		fl_Velocity[1] = 0.0;
		fl_Velocity[2] = 0.0;
	}
	
	entity_set_vector(victim, EV_VEC_velocity, fl_Velocity); //<- rewritten. now uses engine
}

public TakeDamage(victim, inflictor, attacker, Float:damage) { // if take damage drag off
	if (is_user_alive(attacker) && (get_pcvar_num(CvarDragDmg2Stop) > 0)) {
		OvrDmg[victim] = OvrDmg[victim] + floatround(damage);
		if (OvrDmg[victim] >= get_pcvar_num(CvarDragDmg2Stop)) {
			OvrDmg[victim] = 0;
			DragEnd(victim);
			return HAM_IGNORED;
		}
	}
	
	return HAM_IGNORED;
}

public HarpoonTarget(parm[]) { // set beam (ex. tongue:) if target is player
	
	new id = parm[0];
	new hooktarget = parm[1];
	
	message_begin(MSG_BROADCAST, SVC_TEMPENTITY);
	write_byte(8);	// TE_BEAMENTS
	write_short(id);
	write_short(hooktarget);
	write_short(DragSprite);	// sprite index
	write_byte(0);	// start frame
	write_byte(0);	// framerate
	write_byte(200);	// life
	write_byte(8);	// width
	write_byte(1);	// noise
	write_byte(155);	// r, g, b
	write_byte(155);	// r, g, b
	write_byte(55);	// r, g, b
	write_byte(90);	// brightness
	write_byte(10);	// speed
	message_end();
}

public NoTarget(id) { // set beam if target isn't player
	new endorigin[3];
	
	get_user_origin(id, endorigin, 3);
	
	message_begin(MSG_BROADCAST, SVC_TEMPENTITY);
	write_byte(TE_BEAMENTPOINT); // TE_BEAMENTPOINT
	write_short(id);
	write_coord(endorigin[0]);
	write_coord(endorigin[1]);
	write_coord(endorigin[2]);
	write_short(DragSprite); // sprite index
	write_byte(0);	// start frame
	write_byte(0);	// framerate
	write_byte(200);	// life
	write_byte(8);	// width
	write_byte(1);	// noise
	write_byte(155);	// r, g, b
	write_byte(155);	// r, g, b
	write_byte(55);	// r, g, b
	write_byte(75);	// brightness
	write_byte(0);	// speed
	message_end();
}

public PlayerPreThink(id) {
	new button = get_user_button(id);
	new oldbutton = get_user_oldbutton(id);
	
	if (!is_user_alive(id)) {
		return FMRES_IGNORED;
	}
	
	if (Frozen[id]) {
		set_pev(id, pev_velocity, Float:{0.0,0.0,0.0});
		set_pev(id, pev_maxspeed, 1.0) ;
	}
	
	if(HasPower[id] == 6 ) { 
		if (BindUse[id]) {
			if (!(oldbutton & IN_USE) && (button & IN_USE))
				DragStart(id);
			
			if ((oldbutton & IN_USE) && !(button & IN_USE))
				DragEnd(id);
		}
		
		if (!Drag_I[id]) {
			Unable2move[id] = false;
		}
		
		if (Unable2move[id] && get_pcvar_num(CvarDragUnb2Move) > 0) {
			set_pev(id, pev_maxspeed, 1.0);
		}
	}
	return PLUGIN_CONTINUE;
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Teleport |
//==========================================================================================================
public TeleportShowHUD(id) {
	if (!is_user_alive(id) || HasPower[id] != 7) {
		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(Teleport_Cooldown[id] <= 0) {
		show_hudmessage(id, "Ti-a revenit puterea");
		ColorChat(id, GREEN, "%s Iti poti folosi din nou puterea. ", szPrefix);
		remove_task(id);
		Teleport_Cooldown[id] = 0;
	}
	return PLUGIN_HANDLED;
}





////////////////////////////////////////////////////////////////////////////////////////////////////////////
// NoRecoil |
//==========================================================================================================
public Weapon_PrimaryAttack_Pre(entity) {
	new id = pev(entity, pev_owner);
	
	if (HasPower[id] == 8) {
		pev(id, pev_punchangle, cl_pushangle[id]);
		return HAM_IGNORED;
	}
	return HAM_IGNORED;
}

public Weapon_PrimaryAttack_Post(entity) {
	new id = pev(entity, pev_owner);
	
	if ( HasPower[id] == 8) {
		new Float: push[3];
		pev(id, pev_punchangle, push);
		xs_vec_sub(push, cl_pushangle[id], push);
		xs_vec_mul_scalar(push, 0.0, push);
		xs_vec_add(push, cl_pushangle[id], push);
		set_pev(id, pev_punchangle, push);
		return HAM_IGNORED;
	}
	return HAM_IGNORED;
}

// POWERS -------------------------------------------------

public FurienAndAntiFurienDamage ( iVictim, iInflictor, iAttacker, Float:fDamage, iDamageBits )
{
	if( iInflictor == iAttacker && vip_axe_knife [ iAttacker ] && is_user_alive( iAttacker ) && get_user_weapon( iAttacker ) == CSW_KNIFE && cs_get_user_team( iAttacker ) == CS_TEAM_T )
	{
		SetHamParamFloat( 4, fDamage * 5.3);
		return HAM_HANDLED;
	}
	
	if( iInflictor == iAttacker && katana_knife [ iAttacker ] && is_user_alive( iAttacker ) && get_user_weapon( iAttacker ) == CSW_KNIFE && cs_get_user_team( iAttacker ) == CS_TEAM_T )
	{
		SetHamParamFloat( 4, fDamage * 2.8);
		return HAM_HANDLED;
	}
	
	if( iInflictor == iAttacker && double_katana_knife [ iAttacker ] && is_user_alive( iAttacker ) && get_user_weapon( iAttacker ) == CSW_KNIFE && cs_get_user_team( iAttacker ) == CS_TEAM_T )
	{
		SetHamParamFloat( 4, fDamage * 3.3);
		return HAM_HANDLED;
	}
	
	if( iInflictor == iAttacker && super_knife [ iAttacker ] && is_user_alive( iAttacker ) && get_user_weapon( iAttacker ) == CSW_KNIFE && cs_get_user_team( iAttacker ) == CS_TEAM_T )
	{
		SetHamParamFloat( 4, fDamage * 2.0);
		return HAM_HANDLED;
	}
	
	if( iInflictor == iAttacker && infinity_knife [ iAttacker ] && is_user_alive( iAttacker ) && get_user_weapon( iAttacker ) == CSW_KNIFE && cs_get_user_team( iAttacker ) == CS_TEAM_T )
	{
		SetHamParamFloat( 4, fDamage * 1.5 );
		return HAM_HANDLED;
	}
	
	if( iInflictor == iAttacker && super_knife_shop [ iAttacker ] && is_user_alive( iAttacker ) && get_user_weapon( iAttacker ) == CSW_KNIFE && cs_get_user_team( iAttacker ) == CS_TEAM_T )
	{
		SetHamParamFloat( 4, fDamage * 6.0 );
		return HAM_HANDLED;
	}
	
	if( iInflictor == iAttacker && super_knife_shop2 [ iAttacker ] && is_user_alive( iAttacker ) && get_user_weapon( iAttacker ) == CSW_KNIFE && cs_get_user_team( iAttacker ) == CS_TEAM_T )
	{
		SetHamParamFloat( 4, fDamage * 10.0 );
		return HAM_HANDLED;
	}
	
	if( iInflictor == iAttacker && ignes_knife [ iAttacker ] && is_user_alive( iAttacker ) && get_user_weapon( iAttacker ) == CSW_KNIFE && cs_get_user_team( iAttacker ) == CS_TEAM_T )
	{
		SetHamParamFloat( 4, fDamage * 4.0 );
		return HAM_HANDLED;
	}
	
	if( iInflictor == iAttacker && elf_knife [ iAttacker ] && is_user_alive( iAttacker ) && get_user_weapon( iAttacker ) == CSW_KNIFE && cs_get_user_team( iAttacker ) == CS_TEAM_T )
	{
		SetHamParamFloat( 4, fDamage * 4.5 );
		return HAM_HANDLED;
	}
	
	if( iInflictor == iAttacker && hunter [ iAttacker ] && is_user_alive( iAttacker ) && get_user_weapon( iAttacker ) == CSW_P90 && cs_get_user_team( iAttacker ) == CS_TEAM_CT )
	{
		SetHamParamFloat( 4, fDamage * 1.5 );
		return HAM_HANDLED;
	}
	
	if( iInflictor == iAttacker && mage [ iAttacker ] && is_user_alive( iAttacker ) && get_user_weapon( iAttacker ) == CSW_GALIL && cs_get_user_team( iAttacker ) == CS_TEAM_CT )
	{
		SetHamParamFloat( 4, fDamage * 2.0 );
		return HAM_HANDLED;
	}
	
	if( iInflictor == iAttacker && rogue [ iAttacker ] && is_user_alive( iAttacker ) && get_user_weapon( iAttacker ) == CSW_FAMAS && cs_get_user_team( iAttacker ) == CS_TEAM_CT )
	{
		SetHamParamFloat( 4, fDamage * 2.5 );
		return HAM_HANDLED;
	}
	
	if( iInflictor == iAttacker && shaman [ iAttacker ] && is_user_alive( iAttacker ) && get_user_weapon( iAttacker ) == CSW_SG552 && cs_get_user_team( iAttacker ) == CS_TEAM_CT )
	{
		SetHamParamFloat( 4, fDamage * 2.5 );
		return HAM_HANDLED;
	}
	
	if( iInflictor == iAttacker && thompson [ iAttacker ] && is_user_alive( iAttacker ) && get_user_weapon( iAttacker ) == CSW_P90 && cs_get_user_team( iAttacker ) == CS_TEAM_CT )
	{
		SetHamParamFloat( 4, fDamage * 3.0 );
		return HAM_HANDLED;
	}
	
	if( iInflictor == iAttacker && warrior [ iAttacker ] && is_user_alive( iAttacker ) && get_user_weapon( iAttacker ) == CSW_P90 && cs_get_user_team( iAttacker ) == CS_TEAM_CT )
	{
		SetHamParamFloat( 4, fDamage * 2.0 );
		return HAM_HANDLED;
	}
	
	if( iInflictor == iAttacker && deklowaz [ iAttacker ] && is_user_alive( iAttacker ) && get_user_weapon( iAttacker ) == CSW_P90 && cs_get_user_team( iAttacker ) == CS_TEAM_CT )
	{
		SetHamParamFloat( 4, fDamage * 3.0 );
		return HAM_HANDLED;
	}
	
	if( iInflictor == iAttacker && dual_mp5 [ iAttacker ] && is_user_alive( iAttacker ) && get_user_weapon( iAttacker ) == CSW_MP5NAVY && cs_get_user_team( iAttacker ) == CS_TEAM_CT )
	{
		SetHamParamFloat( 4, fDamage * 2.0 );
		return HAM_HANDLED;
	}
	
	if( iInflictor == iAttacker && strike_grenade [ iAttacker ] && is_user_alive( iAttacker ) && get_user_weapon( iAttacker ) == CSW_HEGRENADE && cs_get_user_team( iAttacker ) == CS_TEAM_T )
	{
		SetHamParamFloat( 4, fDamage * 4.0 );
		return HAM_HANDLED;
	}
	
	if( iInflictor == iAttacker && strike_grenade2 [ iAttacker ] && is_user_alive( iAttacker ) && get_user_weapon( iAttacker ) == CSW_HEGRENADE && cs_get_user_team( iAttacker ) == CS_TEAM_T )
	{
		SetHamParamFloat( 4, fDamage * 5.0 );
		return HAM_HANDLED;
	}
	
	if( iInflictor == iAttacker && strike_grenade3 [ iAttacker ] && is_user_alive( iAttacker ) && get_user_weapon( iAttacker ) == CSW_HEGRENADE && cs_get_user_team( iAttacker ) == CS_TEAM_T )
	{
		SetHamParamFloat( 4, fDamage * 6.0 );
		return HAM_HANDLED;
	}
	
	return HAM_IGNORED;
} 

public Depozit(id) {
	if(cs_get_user_money(id) >= 16000) {
		ColorChat ( id, GREEN, "%s Ai depozitat^4 16000^3 si ai primit^4 1^3 credit .^4", szPrefix );
		set_user_credits(id, get_user_credits(id) + 1);
		cs_set_user_money(id, cs_get_user_money(id) - 16000);
	}
	else {
		ColorChat ( id, GREEN, "%s Ai nevoie de ^4 16000 $^3 pentru a depozita .^4", szPrefix );
	}
	return PLUGIN_HANDLED;
}

public Retrage(id) {
	if(cs_get_user_money(id) >= 16000) {
		ColorChat ( id, GREEN, "%s Detii deja^4 16000 $^3", szPrefix );
	}
	else if(PlayerCredits[id]) {
		ColorChat ( id, GREEN, "%s Ai retras^4 1^3 credit, mai ai^4 %d^3 credite .", szPrefix, PlayerCredits [ id ] - 1 );
		set_user_credits(id, get_user_credits(id) - 1);
		cs_set_user_money(id, cs_get_user_money(id) + 16000);
	}
	else {
		ColorChat ( id, GREEN, "%s Ai nevoie de^4 1^3 credti pentru a putea retrage .^4", szPrefix );
	}
	return PLUGIN_HANDLED;
}

public Show_Credits(id) {
	set_hudmessage(0, 128, 0, 0.03, 0.86, 2, 6.0, 5.0);
	show_hudmessage(id, "Ai %d Credite.", PlayerCredits[id]);
	ColorChat ( id, GREEN, "%s Detii^4 %d^3 credite .^4", szPrefix, PlayerCredits [ id ] );
	return PLUGIN_HANDLED;
}

public Give_Credits(id, level, cid) {
	if(!cmd_access(id, level, cid, 2)) {
		return PLUGIN_HANDLED;
	}
	new arg[23], gplayers[32], num, i, players, name[32];
	get_user_name(id, name, 31);
	read_argv(1, arg, 23);
	new give_credits[5];
	read_argv(2, give_credits, charsmax(give_credits));
	new Credits = str_to_num(give_credits);
	if(equali(arg, "@T") || equali ( arg, "t" ) ) {
		get_players(gplayers, num, "e", "TERRORIST");
		for(i = 0; i < num; i++) {
			players = gplayers[i];
			if(!is_user_connected(players))
				continue;
			set_user_credits(players, get_user_credits(players) + Credits);
			SaveData(id);
		}
		switch(get_cvar_num("amx_show_activity")) {
			case 1: ColorChat(0, GREEN, "^x03ADMIN^x04 give^x03 %i Credits^x04 to all^x03 Ts.", Credits);
				case 2: ColorChat(0, GREEN, "^x03%s^x04 give^x03 %i Credits^x04 to all^x03 Ts.", name, Credits);
			}
	}
	else if(equali(arg, "@CT") || equali ( arg, "ct" ) ) {
		get_players(gplayers, num, "e", "CT");
		for(i = 0; i < num; i++) {
			players = gplayers[i];
			if(!is_user_connected(players))
				continue;
			set_user_credits(players, get_user_credits(players) + Credits);
			SaveData(id);
		}
		switch(get_cvar_num("amx_show_activity")) {
			case 1: ColorChat(0, GREEN, "^x03ADMIN^x04 give^x03 %i Credits^x04 to all^x03 CTs.", Credits);
				case 2: ColorChat(0, GREEN, "^x03%s^x04 give^x03 %i Credits^x04 to all^x03 CTs.", name, Credits);
			}
	}
	if(equali(arg, "@All") || equali ( arg, "all" ) ) {
		get_players(gplayers, num, "a");
		for(i = 0; i < num; i++) {
			players = gplayers[i];
			if(!is_user_connected(players))
				continue;
			set_user_credits(players, get_user_credits(players) + Credits);
			SaveData(id);
		}
		switch(get_cvar_num("amx_show_activity")) {
			case 1: ColorChat(0, GREEN, "^x03ADMIN^x04 give^x03 %i Credits^x04 to all^x03 Players.", Credits);
				case 2: ColorChat(0, GREEN, "^x03%s^x04 give^x03 %i Credits^x04 to all^x03 Players.", name, Credits);
			}
	}
	new player = cmd_target(id, arg, 11);
	if(!player) {
		return PLUGIN_HANDLED;
	}
	set_user_credits(player, get_user_credits(player) + Credits);
	SaveData(id);
	switch(get_cvar_num("amx_show_activity")) {
		case 1: ColorChat(player, GREEN, "^x03ADMIN^x04 give your^x03 %i Credits.", Credits);
			case 2: ColorChat(player, GREEN, "^x03%s^x04 give your^x03 %i Credits.", name, Credits);
		}
	return PLUGIN_HANDLED;
}

public Reset_Credits(id, level, cid) {
	if(!cmd_access(id, level, cid, 2)) {
		return PLUGIN_HANDLED;
	}
	new arg[23], gplayers[32], num, i, players, name[32];
	get_user_name(id, name, 31);
	read_argv(1, arg, 23);
	if(equali(arg, "@T")) {
		get_players(gplayers, num, "e", "TERRORIST");
		for(i = 0; i < num; i++) {
			players = gplayers[i];
			if(!is_user_connected(players))
				continue;
			PlayerCredits [ players ] = 0;
		}
		switch(get_cvar_num("amx_show_activity")) {
			case 1: ColorChat(0, GREEN, "^x03ADMIN^x04 reset^x03 Credits^x04 to all^x03 Ts.");
				case 2: ColorChat(0, GREEN, "^x03%s^x04 reset^x03 Credits^x04 to all^x03 Ts.", name);
			}
	}
	
	else if(equali(arg, "@CT")) {
		get_players(gplayers, num, "e", "CT");
		for(i = 0; i < num; i++) {
			players = gplayers[i];
			if(!is_user_connected(players))
				continue;
			PlayerCredits [ players ] = 0;
		}
		switch(get_cvar_num("amx_show_activity")) {
			case 1: ColorChat(0, GREEN, "^x03ADMIN^x04 reset^x03 %i Credits^x04 to all^x03 CTs.");
				case 2: ColorChat(0, GREEN, "^x03%s^x04 reset^x03 %i Credits^x04 to all^x03 CTs.", name);
			}
	}
	if(equali(arg, "@All")) {
		get_players(gplayers, num, "a");
		for(i = 0; i < num; i++) {
			players = gplayers[i];
			if(!is_user_connected(players))
				continue;
			PlayerCredits [ players ] = 0;
		}
		switch(get_cvar_num("amx_show_activity")) {
			case 1: ColorChat(0, GREEN, "^x03ADMIN^x04 reset^x03 Credits^x04 to all^x03 Players.");
				case 2: ColorChat(0, GREEN, "^x03%s^x04 resetx03 Credits^x04 to all^x03 Players.", name);
			}
	}
	new player = cmd_target(id, arg, 11);
	if(!player) {
		return PLUGIN_HANDLED;
	}
	PlayerCredits [ player ] = 0;
	switch(get_cvar_num("amx_show_activity")) {
		case 1: ColorChat(player, GREEN, "^x03ADMIN^x04 reset your^x03 Credits.");
			case 2: ColorChat(player, GREEN, "^x03%s^x04 reset your^x03 Credits.", name);
		}
	return PLUGIN_HANDLED;
}

stock set_player_nextattack(player, weapon_id, Float:NextTime)
{
	const m_flNextPrimaryAttack_dc = 46
	const m_flNextSecondaryAttack_dc = 47
	const m_flTimeWeaponIdle_dc = 48
	const m_flNextAttack_dc = 83
	
	static weapon
	weapon = fm_get_user_weapon_entity(player, weapon_id)
	
	set_pdata_float(player, m_flNextAttack_dc, NextTime, 5)
	if(pev_valid(weapon))
	{
		set_pdata_float(weapon, m_flNextPrimaryAttack_dc , NextTime, 4)
		set_pdata_float(weapon, m_flNextSecondaryAttack_dc, NextTime, 4)
		set_pdata_float(weapon, m_flTimeWeaponIdle_dc, NextTime, 4)
	}
}

//get weapon id
stock get_weapon_ent(id,wpnid=0,wpnName[]="") {
	// who knows what wpnName will be
	static newName[24];
	
	// need to find the name
	if(wpnid) get_weaponname(wpnid,newName,23);
	
	// go with what we were told
	else formatex(newName,23,"%s",wpnName);
	
	// prefix it if we need to
	if(!equal(newName,"weapon_",7))
		format(newName,23,"weapon_%s",newName);
	
	return fm_find_ent_by_owner(get_maxplayers(),newName,id);
} 

// Blood and bodyparts
stock create_blood(const Float:origin[3]) {
	// Head
	message_begin(MSG_BROADCAST,SVC_TEMPENTITY)
	write_byte(TE_MODEL)
	engfunc(EngFunc_WriteCoord, origin[0])
	engfunc(EngFunc_WriteCoord, origin[1])
	engfunc(EngFunc_WriteCoord, origin[2])
	write_coord(random_num(-100,100))
	write_coord(random_num(-100,100))
	write_coord(random_num(100,200))
	write_angle(random_num(0,360))
	write_short(mdl_gib_head) // Sprite index
	write_byte(0) // bounce
	write_byte(500) // life
	message_end()
	
	// Spine
	message_begin(MSG_BROADCAST,SVC_TEMPENTITY)
	write_byte(TE_MODEL)
	engfunc(EngFunc_WriteCoord, origin[0])
	engfunc(EngFunc_WriteCoord, origin[1])
	engfunc(EngFunc_WriteCoord, origin[2])
	write_coord(random_num(-100,100))
	write_coord(random_num(-100,100))
	write_coord(random_num(100,200))
	write_angle(random_num(0,360))
	write_short(mdl_gib_spine)
	write_byte(0) // bounce
	write_byte(500) // life
	message_end()
	
	// Lung
	for(new i = 0; i < random_num(1,2); i++) 
	{
		message_begin(MSG_BROADCAST,SVC_TEMPENTITY)
		write_byte(TE_MODEL)
		engfunc(EngFunc_WriteCoord, origin[0])
		engfunc(EngFunc_WriteCoord, origin[1])
		engfunc(EngFunc_WriteCoord, origin[2])
		write_coord(random_num(-100,100))
		write_coord(random_num(-100,100))
		write_coord(random_num(100,200))
		write_angle(random_num(0,360))
		write_short(mdl_gib_lung)
		write_byte(0) // bounce
		write_byte(500) // life
		message_end()
	}
	
	// Parts, 10 times
	for(new i = 0; i < 10; i++) 
	{
		message_begin(MSG_BROADCAST,SVC_TEMPENTITY)
		write_byte(TE_MODEL)
		engfunc(EngFunc_WriteCoord, origin[0])
		engfunc(EngFunc_WriteCoord, origin[1])
		engfunc(EngFunc_WriteCoord, origin[2])
		write_coord(random_num(-100,100))
		write_coord(random_num(-100,100))
		write_coord(random_num(100,200))
		write_angle(random_num(0,360))
		write_short(mdl_gib_flesh)
		write_byte(0) // bounce
		write_byte(500) // life
		message_end()
	}
	
	// Blood
	for(new i = 0; i < 3; i++) 
	{
		new x,y,z
		x = random_num(-100,100)
		y = random_num(-100,100)
		z = random_num(0,100)
		for(new j = 0; j < 3; j++)
		{
			message_begin(MSG_BROADCAST,SVC_TEMPENTITY)
			write_byte(TE_BLOODSPRITE)
			engfunc(EngFunc_WriteCoord, origin[0]+(x*j))
			engfunc(EngFunc_WriteCoord, origin[1]+(y*j))
			engfunc(EngFunc_WriteCoord, origin[2]+(z*j))
			write_short(blood_spray)
			write_short(blood_drop)
			write_byte(229) // color index
			write_byte(15) // size
			message_end()
		}
	}
}
/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1033\\ f0\\ fs16 \n\\ par }
*/
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:

21 May 2013, 22:46

Eroare.. :(

Image


O_o
Askwrite
Moderator ajutator
Moderator ajutator
Posts: 345
Joined: 26 Apr 2013, 21:59
Detinator Steam: Da
CS Status: Scriptez...!
Reputatie: Fost moderator ajutator
Has thanked: 6 times
Been thanked: 55 times
Contact:

21 May 2013, 22:48

Nu stiu de ce, vezi poate ai copiat tu gresit.
Post Reply

Return to “AmxModX”

  • Information
  • Who is online

    Users browsing this forum: No registered users and 11 guests