Page 1 of 4

Plugin de baza FURIEN CLASIC

Posted: 09 May 2015, 17:26
by Mutex
Descriere: Pluginul de baza al furienului (cel care il aveam eu pe fostul server de furien)

Descarcare:
| Afiseaza codul
#include <amxmodx>
#include <cstrike>
#include <engine>
#include <fakemeta>
#include <fakemeta_util>
#include <hamsandwich>
#include <fun>

#define PLUGIN "Furien Clasic"
#define VERSION "2.0"
#define AUTHOR "Aragon*/DaNNe."

#define DMG_HEGRENADE (1<<24)

#define FURIEN_GRAVITY		0.4
#define FURIEN_SPEED		750.0
#define TEAM_FURIEN 1
#define TEAM_ANTIFURIEN 2

#define TASKID_CANPLANT			 10001
#define TASKID_C4COUNTDOWN		 453 

#define VIP_GOLD_LEVEL		ADMIN_LEVEL_H
#define VIP_SILVER_LEVEL	ADMIN_LEVEL_G
#define FOUNDER_LEVEL		ADMIN_IMMUNITY

#if cellbits == 32
#define OFFSET_BZ 235
#else
#define OFFSET_BZ 268
#endif

//Shop
new SuperKnifeModel_V[] = "models/v_superknife_new.mdl"
new bool: HaveSuperKnife[33]

//Settings
new bool:MakeVisible[33], Float:Wallorigin[33][3]

//Parachute
#define PARACHUTE_CLASS		"Parachute"
new ParaENT[33];

new Menu;
new cvar_gamedescription, furienspawnhp, antifurienspawnhp, removebuyzone, superknife_damage_multiplier, cvar_autojoin_class, cvar_autojoin_team, cvar_aim_info, 
MSGID_SayText, MSGID_StatusIcon, MSGID_TextMsg, MSGID_SendAudio, MSGID_ShowMenu, MSGID_VGUIMenu, MSGID_Health, MSGID_ScreenFade,
bool:CanPlant, C4_CountDownDelay;

public plugin_cfg() {
	server_cmd("amx_cvar mp_playerid 2")
	server_cmd("amx_cvar sv_maxspeed 900")
	server_cmd("amx_cvar sv_restart 5")
}


//===========================================================================================//
//===============================[Weapons Settings]=========================================//
//=========================================================================================//
new bool:HavePrimaryWeapon[33], bool:HaveSecondaryWeapon[33], PrimaryWeapon[33], SecondaryWeapon[33];

//---|| Primary
#define M4A1_KEY		100
#define AK47_KEY		101
#define M3_KEY			102
#define AUG_KEY			103 
#define FAMAS_KEY		104
#define MP5_KEY			105
#define XM1014_KEY		106

//---|| Secondary
#define USP_KEY			107
#define DEAGLE_KEY		108
#define ELITE_KEY		109
#define FIVESEVEN_KEY	110

public plugin_init() {
	register_plugin(PLUGIN, VERSION, AUTHOR)
	
	cvar_gamedescription = register_cvar("furien_gamename", "Furien CS1")
	antifurienspawnhp = register_cvar("antifurien_spawnhp", "100")
	furienspawnhp = register_cvar("furien_spawnhp", "100")
	superknife_damage_multiplier = register_cvar("superknife_damage_multiplier", "2.0")
	cvar_autojoin_team = register_cvar("furien_team", "5")
	cvar_autojoin_class = register_cvar("furien_class", "5")
	cvar_aim_info = register_cvar("furien_enable_aiminfo", "1")
	
	MSGID_SayText = get_user_msgid("SayText")
	MSGID_StatusIcon = get_user_msgid("StatusIcon")
	MSGID_TextMsg = get_user_msgid("TextMsg")
	MSGID_SendAudio = get_user_msgid("SendAudio")
	MSGID_ShowMenu = get_user_msgid("ShowMenu")
	MSGID_VGUIMenu = get_user_msgid("VGUIMenu")
	MSGID_ScreenFade = get_user_msgid("ScreenFade")
	
	register_clcmd("say shop", "CmdShopMenu")
	register_clcmd("say /shop", "CmdShopMenu")
	register_clcmd("say_team shop", "CmdShopMenu")
	register_clcmd("say_team /shop", "CmdShopMenu")
	//register_clcmd("say weapons", "CmdWeaponsMenu")
	//register_clcmd("say /weapons", "CmdWeaponsMenu")
	register_clcmd("jointeam", "CMD_BlockJoinTeam")
	register_clcmd("jointeam 1", "CMD_BlockJoinTeam")
	register_clcmd("jointeam 2", "CMD_BlockJoinTeam")
	register_clcmd("jointeam 3", "CMD_BlockJoinTeam")
	register_clcmd("chooseteam", "CMD_BlockChooseTeam")
	register_clcmd("say /beneficii", "CmdShowMotd")
	register_clcmd("say /rs", "CmdResetScore")
	register_clcmd("say_team /rs", "CmdResetScore")
	register_clcmd("say /resetscore", "CmdResetScore")
	register_clcmd("say_team /resetscore", "CmdResetScore")
	
	RegisterHam(Ham_Spawn, "player", "Ham_Spawn_Post", 1)
	RegisterHam(Ham_Touch, "weaponbox", "HAM_Touch_Weapon")
	RegisterHam(Ham_Touch, "armoury_entity", "HAM_Touch_Weapon")
	RegisterHam(Ham_Touch, "weapon_shield", "HAM_Touch_Weapon")
	RegisterHam(Ham_TakeDamage, "player", "SuperKnife_TakeDamage")
	RegisterHam(Ham_Weapon_PrimaryAttack, "weapon_c4", "C4_PrimaryAttack"); 
	
	register_forward(FM_PlayerPreThink, "Player_PreThink");
	register_forward(FM_AddToFullPack, "FWD_AddToFullPack", 1);	
	register_forward(FM_PlayerPreThink, "FWD_ParachutePreThink");
	register_forward(FM_GetGameDescription, "FWD_GameDescription")	
	
	register_event("CurWeapon", "EVENT_CurWeapon", "be", "1=1")
	register_event("DeathMsg", "EVENT_Death", "a");
	register_event("SendAudio", "EVENT_SwitchTeam", "a", "1=0", "2=%!MRAD_ctwin");
	register_event("HLTV", "EVENT_NewRound", "a", "1=0", "2=0");
	register_event("TextMsg", "EVENT_FireINTheHole", "b", "2&#Game_radio", "4&#Fire_in_the_hole")
	register_event("TextMsg", "EVENT_FireINTheHole", "b", "3&#Game_radio", "5&#Fire_in_the_hole")	
	
	
	register_message(MSGID_StatusIcon, "MSG_StatusIcon");
	register_message(MSGID_TextMsg, "MSG_TextMessage");
	register_message(MSGID_ShowMenu, "MSG_ShowMenu");
	register_message(MSGID_VGUIMenu, "MSG_VGUIMenu");
	register_message(MSGID_SendAudio, "MSG_SendAudio");
	register_message(MSGID_Health, "MSG_Health")
	register_message(MSGID_ScreenFade, "MSG_ScreenFade")
}


public plugin_precache() {
	removebuyzone = register_cvar("furien_removebuyzone", "1")
	
	if(get_pcvar_num(removebuyzone)) {
		
		remove_entity_name("info_map_parameters");
		remove_entity_name("func_buyzone");
		
		new Entity = create_entity("info_map_parameters");
		
		DispatchKeyValue(Entity, "buying", "3");
		DispatchSpawn(Entity);
	}
	precache_model(SuperKnifeModel_V)
}

public client_connect(id) {
	client_cmd(id, "cl_forwardspeed 999.0")
	client_cmd(id, "cl_sidespeed 999.0")
	client_cmd(id, "cl_backspeed 999.0")
}

public client_putinserver(id) {
	client_cmd(id, "cl_forwardspeed 999.0")
	client_cmd(id, "cl_sidespeed 999.0")
	client_cmd(id, "cl_backspeed 999.0")
	PrimaryWeapon[id] = 0
	SecondaryWeapon[id] = 0
}
	

public Ham_Spawn_Post(id) {
	if(is_user_connected(id) && is_user_alive(id)) {
		strip_user_weapons(id)
		HavePrimaryWeapon[id] = false
		HaveSecondaryWeapon[id] = false
		switch(get_user_team(id)) {
			case TEAM_FURIEN: {
				fm_give_item(id, "weapon_hegrenade")
				fm_give_item(id, "weapon_knife")
				fm_give_item(id, "weapon_flashbang")
				set_user_footsteps(id, 1)
				fm_set_user_health(id, get_pcvar_num(furienspawnhp))
			}
			case TEAM_ANTIFURIEN: {
				fm_give_item(id, "weapon_flashbang")
				fm_give_item(id, "weapon_hegrenade")
				fm_give_item(id, "weapon_knife")
				set_user_footsteps(id, 0)
				fm_set_user_health(id, get_pcvar_num(antifurienspawnhp))
				HaveSuperKnife[id] = false;
				Equipment(id)					
			}
		}
	}
}

public EVENT_NewRound() {
	CanPlant = false;
	new Float:FloatTime = get_cvar_num("mp_freezetime") + (get_cvar_num("mp_roundtime") * 60) - 60.0
	set_task(FloatTime, "TASK_CanPlant", TASKID_CANPLANT)
	remove_task(TASKID_C4COUNTDOWN)
}

public EVENT_FireINTheHole() 
	return PLUGIN_HANDLED

public HAM_Touch_Weapon(ent, id) {
	if(is_user_alive(id) && get_user_team(id) == TEAM_FURIEN && !(get_pdata_cbase(ent, 39, 4) > 0))
		return HAM_SUPERCEDE
	
	return HAM_IGNORED
}

public SuperKnife_TakeDamage(Victim, Inflictor, Attacker, Float:Damage, DamageType) {
	if(is_user_connected(Attacker) && is_user_alive(Attacker) && is_user_connected(Victim)) {
		if(get_user_weapon(Attacker) == CSW_KNIFE) {
			if(HaveSuperKnife[Attacker])
				SetHamParamFloat(4, Damage * get_pcvar_float(superknife_damage_multiplier))
		}
		if(get_user_flags(Victim) & VIP_GOLD_LEVEL) {
			if(DamageType & DMG_HEGRENADE)
				return HAM_SUPERCEDE
		}
	}
	return HAM_IGNORED
}

///////////////////////////////////////////////////////////////////////////////////////////////

public C4_PrimaryAttack(Ent) {
	if(!CanPlant) 
		return HAM_SUPERCEDE
		
	return HAM_IGNORED
}

public CmdResetScore(id) {
	if(get_user_frags(id) == 0 && get_user_deaths(id) == 0) 
		ColorChat(id, "!gScorul tau este deja!t 0-0!g !")
	else {
		for(new i = 0; i < 2; i++) {
			cs_set_user_deaths(id, 0);
			set_user_frags(id, 0);
		}
		ColorChat(id, "!gTi-ai resetat scorul cu succes !")
	}
}

public CmdShopMenu(id) {
	if(!is_user_alive(id))
		return PLUGIN_HANDLED
	switch(get_user_team(id)) {
		case TEAM_FURIEN: CmdFurienShop(id)
		case TEAM_ANTIFURIEN: CmdAntiFurienShop(id)
	}
	return PLUGIN_HANDLED
}

public CmdFurienShop(id) {
	if(is_user_alive(id) && get_user_team(id) == TEAM_FURIEN) {
		Menu = menu_create("\yFurien Shop", "CmdFurienHandler")
		
		new SuperKnife[256];
		formatex(SuperKnife, sizeof(SuperKnife)-1, "Super knife - \y10000$")   
		menu_additem(Menu, SuperKnife, "1", 0)
		
		new Health[256];
		formatex(Health, sizeof(Health)-1, "50 HP	- \y3000$")
		menu_additem(Menu, Health, "2", 0)
		
		new Armor[256];
		formatex(Armor, sizeof(Armor)-1, "50 AP + Helmet - \y500$")
		menu_additem(Menu, Armor, "3", 0)
		
		new Grenade[256];
		formatex(Grenade, sizeof(Grenade)-1, "He grenade - \y4000$")
		menu_additem(Menu, Grenade, "4", 0)
		
		menu_setprop(Menu, MPROP_EXIT, MEXIT_ALL);
		menu_display(id, Menu, 0);
	}
}

public CmdAntiFurienShop(id) {
	if(is_user_alive(id) && get_user_team(id) == TEAM_ANTIFURIEN) {
		Menu = menu_create("\yAnti-Furien Shop", "CmdAntiFurienHandler")	

		new Defuse[256];
		formatex(Defuse, sizeof(Defuse)-1, "Defuse kit - \y500$")
		menu_additem(Menu, Defuse, "1", 0)
		
		new Health[256];
		formatex(Health, sizeof(Health)-1, "50 HP	- \y3000$")
		menu_additem(Menu, Health, "2", 0)
		
		new Armor[256];
		formatex(Armor, sizeof(Armor)-1, "50 AP + Helmet - \y500$")
		menu_additem(Menu, Armor, "3", 0)
		
		new Grenade[256];
		formatex(Grenade, sizeof(Grenade)-1, "He grenade - \y4000$")
		menu_additem(Menu, Grenade, "4", 0)

		menu_setprop(Menu, MPROP_EXIT, MEXIT_ALL);
		menu_display(id, Menu, 0);
	}
}

public CmdFurienHandler(id, menu, item) {
	if(item == MENU_EXIT || !is_user_alive(id) || get_user_team(id) != 1) {
		menu_destroy(menu);
		return PLUGIN_HANDLED;
	}
	new Data[6], Name[64];
	new Access, CallBack;
	menu_item_getinfo(menu, item, Access, Data,5, Name, 63, CallBack);
	new Key = str_to_num(Data);
	switch(Key) {
		case 1: {
			if(HaveSuperKnife[id])
				client_print(id, print_center, "You already have SuperKnife!")
			else {
				new Money = cs_get_user_money(id) - 10000
				if(Money < 0) 
					client_print(id, print_center, "You have  insufficient founds!")
				else {
					HaveSuperKnife[id] = true;
					EVENT_CurWeapon(id)
					cs_set_user_money(id, Money)
				}
			}
		}
		case 2: {
			if(get_user_health(id) >= 250) 
				client_print(id, print_center, "You already have 250 HP!")
			else {
				new Money = cs_get_user_money(id) - 3000
				if(Money < 0) 
					client_print(id, print_center, "You have  insufficient founds!")
				else {
					if(get_user_health(id) + 50 > 250)
						fm_set_user_health(id, 250)
					else 
						fm_set_user_health(id, get_user_health(id) + 50)
					cs_set_user_money(id, Money)
				}
			}
		}
		case 3: {
			if(get_user_armor(id) >= 250) 
				client_print(id, print_center, "You already have 250 AP!")
			else {
				new Money = cs_get_user_money(id) - 500
				if(Money < 0) 
					client_print(id, print_center, "You have  insufficient founds!")
				else {
					if(get_user_armor(id) + 50 > 250) 
						fm_set_user_armor(id, 250)
					else 
						fm_set_user_armor(id, get_user_armor(id) + 50)
					cs_set_user_money(id, Money)
				}
			}
		}
		case 4: {
			if(user_has_weapon(id, CSW_HEGRENADE))
				client_print(id, print_center, "You already have HE GRENADE!")
			else {
				new Money = cs_get_user_money(id) - 4000
				if(Money < 0) 
					client_print(id, print_center, "You have  insufficient founds!")
				else {	
					fm_give_item(id, "weapon_hegrenade")
					cs_set_user_money(id, Money)
				}
			}
		}
	}
	menu_destroy(menu)
	return PLUGIN_HANDLED
}

public CmdAntiFurienHandler(id, menu, item) {
	if(item == MENU_EXIT || !is_user_alive(id) || get_user_team(id) != 2) {
		menu_destroy(menu);
		return PLUGIN_HANDLED;
	}
	new Data[6], Name[64];
	new Access, CallBack;
	menu_item_getinfo(menu, item, Access, Data,5, Name, 63, CallBack);
	new Key = str_to_num(Data);
	switch(Key) {
		case 1: {
			if(cs_get_user_defuse(id))
				client_print(id, print_center, "You already have Defuse KIT!")
			else {
				new Money = cs_get_user_money(id) - 500
				if(Money < 0) 
					client_print(id, print_center, "You have  insufficient founds!")
				else {
					cs_set_user_defuse(id, 1)
					cs_set_user_money(id, Money)
				}
			}
		}
		case 2: {
			if(get_user_health(id) >= 250) 
				client_print(id, print_center, "You already have 250 HP!")
			else {
				new Money = cs_get_user_money(id) - 3000
				if(Money < 0) 
					client_print(id, print_center, "You have  insufficient founds!")
				else {
					if(get_user_health(id) + 50 > 250)
						fm_set_user_health(id, 250)
					else 
						fm_set_user_health(id, get_user_health(id) + 50)
					cs_set_user_money(id, Money)
				}
			}
		}
		case 3: {
			if(get_user_armor(id) >= 250) 
				client_print(id, print_center, "You already have 250 AP!")
			else {
				new Money = cs_get_user_money(id) - 500
				if(Money < 0) 
					client_print(id, print_center, "You have  insufficient founds!")
				else {
					if(get_user_armor(id) + 50 > 250) 
						fm_set_user_armor(id, 250)
					else 
						fm_set_user_armor(id, get_user_armor(id) + 50)
					cs_set_user_money(id, Money)
				}
			}
		}
		case 4: {
			if(user_has_weapon(id, CSW_HEGRENADE))
				client_print(id, print_center, "You already have HE GRENADE!")
			else {
				new Money = cs_get_user_money(id) - 4000
				if(Money < 0) 
					client_print(id, print_center, "You have  insufficient founds!")
				else {	
					fm_give_item(id, "weapon_hegrenade")
					cs_set_user_money(id, Money)
				}
			}
		}
	}
	menu_destroy(menu)
	return PLUGIN_HANDLED
}

//=========================================================================//
//=======================[Weapons Settings]===============================//
//=======================================================================//

public Equipment(id) {
	if(is_user_alive(id) && get_user_team(id) == 2) {
		Menu = menu_create("\rWeapons Menu", "EquipmentCmd");
		menu_additem(Menu, "\wNew Weapons", "1", 0);
		if(PrimaryWeapon[id] && SecondaryWeapon[id])
			menu_additem(Menu, "\wPrevious Setup", "2", 0);
		else 
			menu_additem(Menu, "\dPrevious Setup", "2", 0);
		menu_setprop(Menu, MPROP_EXIT, MEXIT_NEVER)
		menu_display(id, Menu, 0);
	}
}

public EquipmentCmd(id, menu, item) {
	if(item == MENU_EXIT || !is_user_alive(id) || get_user_team(id) != 2) {
		menu_destroy(menu);
		return PLUGIN_HANDLED;
	}
	new Data[6], Name[64];
	new Access, CallBack;
	menu_item_getinfo(menu, item, Access, Data,5, Name, 63, CallBack);
	new Key = str_to_num(Data);
	switch(Key) {
		case 1: {
			if(!HavePrimaryWeapon[id])
				Primary(id)
			else if(!HaveSecondaryWeapon[id])
				Secondary(id)
		}
		case 2: {
			if(PrimaryWeapon[id] && SecondaryWeapon[id])
				GiveLastWeapons(id)
			else Equipment(id)
		}
		default: return PLUGIN_HANDLED;
	}
	menu_destroy(menu);
	return PLUGIN_HANDLED;
}

public Primary(id) {
	if(is_user_alive(id) && get_user_team(id) == TEAM_ANTIFURIEN) {
		Menu = menu_create("\yAnti-Furien Weapons^n\rPrimary:", "CmdWeaponsHandler")
		
		menu_additem(Menu, "M4A1", "1", 0)
		menu_additem(Menu, "AK47", "2", 0)
		menu_additem(Menu, "M3", "3", 0)
		menu_additem(Menu, "Aug", "4", 0)
		menu_additem(Menu, "Famas", "5", 0)
		menu_additem(Menu, "MP5 Navy", "6", 0)
		menu_additem(Menu, "XM1014", "7", 0)
		
		menu_setprop(Menu, MPROP_EXIT, MEXIT_ALL);
		menu_display(id, Menu, 0);
	}
}

public CmdWeaponsHandler(id, menu, item) {
	if(item == MENU_EXIT || !is_user_alive(id) || get_user_team(id) != 2) {
		menu_destroy(menu);
		return PLUGIN_HANDLED;
	}
	new Data[6], Name[64];
	new Access, CallBack;
	menu_item_getinfo(menu, item, Access, Data,5, Name, 63, CallBack);
	new Key = str_to_num(Data);
	switch(Key) {
		case 1: {
			fm_give_item(id, "weapon_m4a1")
			cs_set_user_bpammo(id, CSW_M4A1, 254)
			PrimaryWeapon[id] = M4A1_KEY
			HavePrimaryWeapon[id] = true;
			Secondary(id)
		}
		case 2: {
			fm_give_item(id, "weapon_ak47")
			cs_set_user_bpammo(id, CSW_AK47, 254)
			PrimaryWeapon[id] = AK47_KEY
			HavePrimaryWeapon[id] = true;
			Secondary(id)
		}
		case 3: {
			fm_give_item(id, "weapon_m3")
			cs_set_user_bpammo(id, CSW_M3, 254)
			PrimaryWeapon[id] = M3_KEY
			HavePrimaryWeapon[id] = true;
			Secondary(id)
		}
		case 4: {
			fm_give_item(id, "weapon_aug")
			cs_set_user_bpammo(id, CSW_AUG, 254)
			PrimaryWeapon[id] = AUG_KEY
			HavePrimaryWeapon[id] = true;
			Secondary(id)
		}
		case 5: {
			fm_give_item(id, "weapon_famas")
			cs_set_user_bpammo(id, CSW_FAMAS, 254)
			PrimaryWeapon[id] = FAMAS_KEY
			HavePrimaryWeapon[id] = true;
			Secondary(id)
		}
		case 6: {
			fm_give_item(id, "weapon_mp5navy")
			cs_set_user_bpammo(id, CSW_MP5NAVY, 254)
			PrimaryWeapon[id] = MP5_KEY
			HavePrimaryWeapon[id] = true;
			Secondary(id)
		}
		case 7: {
			fm_give_item(id, "weapon_xm1014")
			cs_set_user_bpammo(id, CSW_XM1014, 254)
			PrimaryWeapon[id] = XM1014_KEY
			HavePrimaryWeapon[id] = true;
			Secondary(id)
		}
	}
	menu_destroy(menu)
	return PLUGIN_HANDLED
}

public Secondary(id) {
	if(is_user_alive(id) && get_user_team(id) == TEAM_ANTIFURIEN) {
		Menu = menu_create("\yAnti-Furien Weapons^n\rSecondary:", "CmdSecondaryHandler")
		
		menu_additem(Menu, "USP", "1", 0)
		menu_additem(Menu, "Deagle", "2", 0)
		menu_additem(Menu, "Elite", "3", 0)
		menu_additem(Menu, "Five Seven", "4", 0)
		
		menu_setprop(Menu, MPROP_EXIT, MEXIT_ALL);
		menu_display(id, Menu, 0);
	}
}

public CmdSecondaryHandler(id, menu, item) {
	if(item == MENU_EXIT || !is_user_alive(id) || get_user_team(id) != 2) {
		menu_destroy(menu);
		return PLUGIN_HANDLED;
	}
	new Data[6], Name[64];
	new Access, CallBack;
	menu_item_getinfo(menu, item, Access, Data,5, Name, 63, CallBack);
	new Key = str_to_num(Data);
	switch(Key) {		
		case 1: {
			fm_give_item(id, "weapon_usp")
			cs_set_user_bpammo(id, CSW_USP, 256)
			SecondaryWeapon[id] = USP_KEY
			HaveSecondaryWeapon[id] = true;
		}
		case 2: {
			fm_give_item(id, "weapon_deagle")
			cs_set_user_bpammo(id, CSW_DEAGLE, 256)
			SecondaryWeapon[id] = DEAGLE_KEY 
			HaveSecondaryWeapon[id] = true;
		}
		case 3: {
			fm_give_item(id, "weapon_elite")
			cs_set_user_bpammo(id, CSW_ELITE, 256)
			SecondaryWeapon[id] = ELITE_KEY
			HaveSecondaryWeapon[id] = true;
		}
		case 4: {
			fm_give_item(id, "weapon_fiveseven")
			cs_set_user_bpammo(id, CSW_FIVESEVEN, 256)
			SecondaryWeapon[id] = FIVESEVEN_KEY
			HaveSecondaryWeapon[id] = true;
		}
	}
	menu_destroy(menu)
	return PLUGIN_HANDLED
}

public GiveLastWeapons(id) {
	if(!HavePrimaryWeapon[id]) {
		switch(PrimaryWeapon[id]) {
			case M4A1_KEY: {
				fm_give_item(id, "weapon_m4a1")
				cs_set_user_bpammo(id, CSW_M4A1, 256)
				HavePrimaryWeapon[id] = true;
			}
			case AK47_KEY: {
				fm_give_item(id, "weapon_ak47")
				cs_set_user_bpammo(id, CSW_AK47, 256)
				HavePrimaryWeapon[id] = true;
			}
			case M3_KEY: {
				fm_give_item(id, "weapon_m3")
				cs_set_user_bpammo(id, CSW_M3, 256)
				HavePrimaryWeapon[id] = true;
			}
			case AUG_KEY: {
				fm_give_item(id, "weapon_aug")
				cs_set_user_bpammo(id, CSW_AUG, 256)
				HavePrimaryWeapon[id] = true;
			}
			case FAMAS_KEY: {
				fm_give_item(id, "weapon_famas")
				cs_set_user_bpammo(id, CSW_FAMAS, 256)
				HavePrimaryWeapon[id] = true;
			}
			case MP5_KEY: {
				fm_give_item(id, "weapon_mp5navy")
				cs_set_user_bpammo(id, CSW_MP5NAVY, 256)
				HavePrimaryWeapon[id] = true;
			}
			case XM1014_KEY: {
				fm_give_item(id, "weapon_xm1014")
				cs_set_user_bpammo(id, CSW_XM1014, 256)
				HavePrimaryWeapon[id] = true;
			}
		}
	}
	if(!HaveSecondaryWeapon[id]) {
		switch(SecondaryWeapon[id]) {
			case USP_KEY: {
				fm_give_item(id, "weapon_usp")
				cs_set_user_bpammo(id, CSW_USP, 256)
				HaveSecondaryWeapon[id] = true;
			}
			case DEAGLE_KEY: {
				fm_give_item(id, "weapon_deagle")
				cs_set_user_bpammo(id, CSW_DEAGLE, 256)
				HaveSecondaryWeapon[id] = true;
			}
			case ELITE_KEY: {
				fm_give_item(id, "weapon_elite")
				cs_set_user_bpammo(id, CSW_ELITE, 256)
				HaveSecondaryWeapon[id] = true;
			}
			case FIVESEVEN_KEY: {
				fm_give_item(id, "weapon_fiveseven")
				cs_set_user_bpammo(id, CSW_FIVESEVEN, 256)
				HaveSecondaryWeapon[id] = true;
			}
		}
	}
}
public CMD_BlockJoinTeam(id) {
	console_print(id, "*** Nu ai voie sa foloseti JoinTeam ! ***")
	return 1;
}

public CMD_BlockChooseTeam(id) {
	console_print(id, "*** Nu ai voie sa foloseti ChooseTeam ! ***")
	return 1;
}

public CmdShowMotd(id)
	show_motd(id, "addons/amxmodx/configs/beneficii.html")

/////////////////////////////////////////////////////////////////////////

public EVENT_CurWeapon(id) {
	if(is_user_connected(id)) {
		if(get_user_weapon(id) == CSW_KNIFE) {
			if(HaveSuperKnife[id]) 
				set_pev(id, pev_viewmodel2, SuperKnifeModel_V)
		}
		new PlayerHealth;
		PlayerHealth = get_user_health(id)
		if(PlayerHealth == 256)
			fm_set_user_health(id, 255)
	}

}

public EVENT_Death() {
	static Attacker, Victim;
	Attacker = read_data(1)
	Victim = read_data(2)
	HaveSuperKnife[Victim] = false;
	if(Victim == Attacker) 
		return 1;
	
	if(is_user_connected(Attacker)) {
		if(get_user_flags(Attacker) & VIP_GOLD_LEVEL) {
			cs_set_user_money(Attacker, cs_get_user_money(Attacker) + 6000)
			fm_set_user_health(Attacker, get_user_health(Attacker) + 60)
			fm_set_user_armor(Attacker, get_user_armor(Attacker) + 60)
		}
		else if(get_user_flags(Attacker) & VIP_SILVER_LEVEL) {
			cs_set_user_money(Attacker, cs_get_user_money(Attacker) + 3000)
			fm_set_user_health(Attacker, get_user_health(Attacker) + 30)
			fm_set_user_armor(Attacker, get_user_armor(Attacker) + 30)
		}
		else if(get_user_flags(Attacker) & FOUNDER_LEVEL) {
			cs_set_user_money(Attacker, cs_get_user_money(Attacker) + 7000)
			fm_set_user_health(Attacker, get_user_health(Attacker) + 70)
			fm_set_user_armor(Attacker, get_user_armor(Attacker) + 70)	
		}
		else {
			if(get_user_team(Victim) == 2) 
				cs_set_user_money(Attacker, cs_get_user_money(Attacker) + 1200)
			else if(get_user_team(Victim) == 1)
				cs_set_user_money(Attacker, cs_get_user_money(Attacker) + 3000)
		}
	}

	return 1;
}

public MSG_StatusIcon(msg_id, msg_dest, id) {
	static Attrib 
	Attrib = get_msg_arg_int(2)
	
	if(Attrib == (1<<1))
		set_msg_arg_int(2, ARG_BYTE, 0)
	
	new Icon[8];
	get_msg_arg_string(2, Icon, 7);
	if(get_pcvar_num(removebuyzone)) {
		static const BuyZone[] = "buyzone";
		
		if(equal(Icon, BuyZone)) {
			set_pdata_int(id, OFFSET_BZ, get_pdata_int(id, OFFSET_BZ, 5) & ~(1 << 0), 5);
			
			return PLUGIN_HANDLED;
		}
	}
	return PLUGIN_CONTINUE;
}

public MSG_TextMessage() {
	static TextMsg[22];
	get_msg_arg_string(2, TextMsg, charsmax(TextMsg))
	if(equal(TextMsg, "#Terrorists_Win")) {
		client_print(0, print_center, "The Furiens have won this round!")
		return PLUGIN_HANDLED;
	}
	else if(equal(TextMsg, "#CTs_Win")) {
		client_print(0, print_center, "The Anti-Furiens have won this round!")
		return PLUGIN_HANDLED;
	}
	else if(equal(TextMsg, "#Bomb_Defused")) {
		client_print(0, print_center, "The Anti-Furiens have won this round!")
		return PLUGIN_HANDLED;
	}
	else if(equal(TextMsg, "#Target_Bombed")) {
		client_print(0, print_center, "The Furiens have won this round!")
		return PLUGIN_HANDLED;
	}
	else if(equal(TextMsg, "#Target_Saved")) {
		client_print(0, print_center, "The Anti-Furiens have won this round!")
		return PLUGIN_HANDLED;
	}
	else if(equal(TextMsg, "#Fire_in_the_hole"))
		return PLUGIN_HANDLED
	else if(equal(TextMsg, "#C4_Plant_At_Bomb_Spot")) {
		if(!CanPlant)
			return PLUGIN_HANDLED
	}
	return PLUGIN_CONTINUE;
}

public MSG_ShowMenu(msgid, dest, id) {
	if(!Should_AutoJoin(id))
		return PLUGIN_CONTINUE
	
	static team_select[] = "#Team_Select"
	static menu_text_code[sizeof team_select]
	get_msg_arg_string(4, menu_text_code, sizeof menu_text_code - 1)
	if(!equal(menu_text_code, team_select))
		return PLUGIN_CONTINUE
	
	JoinTeam_Task(id, msgid)
	
	return PLUGIN_HANDLED
}

public MSG_VGUIMenu(msgid, dest, id) {
	if(get_msg_arg_int(1) != 2 || !Should_AutoJoin(id))
		return PLUGIN_CONTINUE
	
	JoinTeam_Task(id, msgid)
	
	return PLUGIN_HANDLED
}

public MSG_SendAudio() {
	static Sound[17]
	get_msg_arg_string(2, Sound, sizeof Sound - 1)
	
	if(equal(Sound, "terwin") || equal(Sound, "ctwin") || equal(Sound, "rounddraw") || equal(Sound, "bombpl") || equal(Sound, "bombdef"))
		return PLUGIN_HANDLED;
	
	return PLUGIN_CONTINUE;
}

public MSG_Health(msgid, dest, id) {
	static Health;
	Health = get_msg_arg_int(1)
	if(Health > 255)
		set_msg_arg_int(1, ARG_BYTE, 255);
	else if(Health == 256) 
		set_msg_arg_int(1, ARG_BYTE, get_user_health(id) + 10)
}

public MSG_ScreenFade(msgid, dest, id) {
	if(is_user_connected(id)) {
		if(get_user_flags(id) & VIP_GOLD_LEVEL) {
			static data[4]
			data[0] = get_msg_arg_int(4)
			data[1] = get_msg_arg_int(5)
			data[2] = get_msg_arg_int(6)
			data[3] = get_msg_arg_int(7)
		
			if(data[0] == 255 && data[1] == 255 && data[2] == 255 && data[3] > 199)
				return PLUGIN_HANDLED
		}
	}
	return PLUGIN_CONTINUE
}

bool:Should_AutoJoin(id) {
	return(get_pcvar_num(cvar_autojoin_team) && !get_user_team(id) && !task_exists(id))
}

JoinTeam_Task(id, menu_msgid) {
	static param_menu_msgid[2]
	param_menu_msgid[0] = menu_msgid
	
	set_task(0.1, "Force_JoinTeam", id, param_menu_msgid, sizeof param_menu_msgid)
}

public Force_JoinTeam(menu_msgid[], id) {
	if(get_user_team(id))
		return
	
	static team[2], class[2]
	get_pcvar_string(cvar_autojoin_team, team, sizeof team - 1)
	get_pcvar_string(cvar_autojoin_class, class, sizeof class - 1)
	Force_Team_Join(id, menu_msgid[0], team, class)
}

stock Force_Team_Join(id, menu_msgid,  team[] = "5", class[] = "0") {
	static jointeam[] = "jointeam"
	if(class[0] == '0') {
		engclient_cmd(id, jointeam, team)
		return
	}
	
	static msg_block, joinclass[] = "joinclass"
	msg_block = get_msg_block(menu_msgid)
	set_msg_block(menu_msgid, BLOCK_SET)
	engclient_cmd(id, jointeam, team)
	engclient_cmd(id, joinclass, class)
	set_msg_block(menu_msgid, msg_block)
}

public bomb_planted(planter) {
	C4_CountDownDelay = get_cvar_num("mp_c4timer") - 1
	TASK_C4_CountDown();
	set_hudmessage(random(255), random(255), random(255), -1.0, -1.0, 1, 3.1, 3.0)
	show_hudmessage(0, "Furienii au plantat bomba!")
}

public EVENT_SwitchTeam() {
	new Players[32], PlayersNum, id;
	get_players(Players, PlayersNum)
	if(PlayersNum) {
		for(new i; i < PlayersNum; i++) {
			id = Players
			BeginDelay(id)
		}
	}
}

public BeginDelay(id) {
	if(is_user_connected(id)) {
		switch(id) {
			case 1..7: set_task(0.1, "BeginTeamSwap", id)
			case 8..15: set_task(0.2, "BeginTeamSwap", id)
			case 16..23: set_task(0.3, "BeginTeamSwap", id)
			case 24..32: set_task(0.4, "BeginTeamSwap", id)
		}
	}
}

public BeginTeamSwap(id) {
	if(is_user_connected(id)) {
		switch(get_user_team(id)) {
			case TEAM_FURIEN: cs_set_user_team(id, CS_TEAM_CT)
			case TEAM_ANTIFURIEN: cs_set_user_team(id, CS_TEAM_T)
		}
	}
}	

///////////////////////////////////////////////////////////////////////////////////////////////

public Player_PreThink(id) {
	if(is_user_connected(id)) {
		if(get_user_team(id) == TEAM_FURIEN) {
			if(pev(id, pev_gravity) > FURIEN_GRAVITY && pev(id, pev_gravity) > 0.1)
				set_pev(id, pev_gravity, FURIEN_GRAVITY)
		
			if(pev(id, pev_maxspeed) < FURIEN_SPEED && pev(id, pev_maxspeed) > 1.0) {
				set_pev(id, pev_maxspeed, FURIEN_SPEED)
				set_user_footsteps(id, 1)
			}
		}
		if(get_pcvar_num(cvar_aim_info)) {
			new Target, Body;
			get_user_aiming(id, Target, Body);
			if(is_user_alive(id) && is_user_connected(Target) && is_user_alive(Target)) {
				new TargetTeam, PlayerTeam, TargetName[32], Message[128], TargetHealth, TargetArmor, RED, GREEN, BLUE;
				TargetTeam = get_user_team(Target)
				PlayerTeam = get_user_team(id)
				get_user_name(Target, TargetName, 31)
				TargetHealth = get_user_health(Target)
				TargetArmor = get_user_armor(Target)
				if(PlayerTeam == TEAM_FURIEN && TargetTeam == TEAM_ANTIFURIEN) {
					formatex(Message, sizeof(Message)-1, "%s^nHP: %i | AP: %i", TargetName, TargetHealth, TargetArmor)
					RED = 20
					GREEN = 200
					BLUE = 50
				}
				else if(PlayerTeam == TEAM_FURIEN && TargetTeam == TEAM_FURIEN) {
					formatex(Message, sizeof(Message)-1, "%s^nHP: %i | AP: %i", TargetName, TargetHealth, TargetArmor)
					RED = 200
					GREEN = 20 
					BLUE = 20 
				}
				else if(PlayerTeam == TEAM_ANTIFURIEN && TargetTeam == TEAM_ANTIFURIEN) {
					formatex(Message, sizeof(Message)-1, "%s^nHP: %i | AP: %i", TargetName, TargetHealth, TargetArmor)
					RED = 200
					GREEN = 20 
					BLUE = 20 
				}
				else if(PlayerTeam == TEAM_ANTIFURIEN && TargetTeam == TEAM_FURIEN)
					return 
				set_hudmessage(RED, GREEN, BLUE, -1.0, -1.0, 0, 0.0, 0.1, 0.0, 0.0, -1);
				show_hudmessage(id, "%s", Message)
			}
		}
	}
}

public FWD_AddToFullPack(es, e, ent, host, host_flags, player, p_set) {
	if(is_user_connected(ent) && is_user_connected(host) && is_user_alive(ent)) {
		if(is_user_alive(host) && get_user_team(ent) == 1 && get_user_team(host) == 1 
		|| !is_user_alive(host) && get_user_team(ent) == 1 && pev(host, pev_iuser2) == ent
		|| get_user_team(ent) == 1 && pev(ent, pev_maxspeed) <= 1.0) {
			set_es(es, ES_RenderFx, kRenderFxNone);
			set_es(es, ES_RenderMode, kRenderTransTexture);
			set_es(es, ES_RenderAmt, 255);
		}
		else if(get_user_team(ent) == 1) {
			set_es(es, ES_RenderFx, kRenderFxNone);
			set_es(es, ES_RenderMode, kRenderTransTexture);
			static Float:Origin[3]
			pev(ent, pev_origin, Origin)
			
			if(get_user_weapon(ent) == CSW_KNIFE && !MakeVisible[ent] && fm_get_speed(ent) <= 5 || get_user_weapon(ent) == CSW_KNIFE && !MakeVisible[ent] && Origin[0] == Wallorigin[ent][0] && Origin[1] == Wallorigin[ent][1] && Origin[2] == Wallorigin[ent][2])
				set_es(es, ES_RenderAmt, 0);
			else
				set_es(es, ES_RenderAmt, 255);
		}
	}
}

public FWD_ParachutePreThink(id) {
	if(is_user_alive(id) && get_user_team(id) == TEAM_ANTIFURIEN) {
		new Float:FallSpeed = -50.0;
		new Float:Frame;
		
		new Button = pev(id, pev_button);
		new OldButton = pev(id, pev_oldbuttons);
		new Flags = pev(id, pev_flags);
		
		if(ParaENT[id] > 0 &&(Flags & FL_ONGROUND)) {
			
			if(pev(ParaENT[id],pev_sequence) != 2) {
				set_pev(ParaENT[id], pev_sequence, 2);
				set_pev(ParaENT[id], pev_gaitsequence, 1);
				set_pev(ParaENT[id], pev_frame, 0.0);
				set_pev(ParaENT[id], pev_fuser1, 0.0);
				set_pev(ParaENT[id], pev_animtime, 0.0);
				return;
			}
			
			pev(ParaENT[id],pev_fuser1, Frame);
			Frame += 2.0;
			set_pev(ParaENT[id],pev_fuser1,Frame);
			set_pev(ParaENT[id],pev_frame,Frame);
			
			if(Frame > 254.0) {
				engfunc(EngFunc_RemoveEntity, ParaENT[id]);
				ParaENT[id] = 0;
			}
			else {
				engfunc(EngFunc_RemoveEntity, ParaENT[id]);
				ParaENT[id] = 0;
			}
			return;
		}
		
		if(Button & IN_USE) {
			new Float:Velocity[3];
			pev(id, pev_velocity, Velocity);
			
			if(Velocity[2] < 0.0) {
				if(ParaENT[id] <= 0) {
					ParaENT[id] = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, "info_target"));
					
					if(ParaENT[id] > 0) {
						set_pev(ParaENT[id],pev_classname, PARACHUTE_CLASS);
						set_pev(ParaENT[id], pev_aiment, id);
						set_pev(ParaENT[id], pev_owner, id);
						set_pev(ParaENT[id], pev_movetype, MOVETYPE_FLY);
						set_pev(ParaENT[id], pev_sequence, 0);
						set_pev(ParaENT[id], pev_gaitsequence, 1);
						set_pev(ParaENT[id], pev_frame, 0.0);
						set_pev(ParaENT[id], pev_fuser1, 0.0);
					}
				}
				if(ParaENT[id] > 0) {
					set_pev(id, pev_sequence, 3);
					set_pev(id, pev_gaitsequence, 1);
					set_pev(id, pev_frame, 1.0);
					set_pev(id, pev_framerate, 1.0);
					
					Velocity[2] = (Velocity[2] + 40.0 < FallSpeed) ? Velocity[2] + 40.0 : FallSpeed;
					set_pev(id, pev_velocity, Velocity);
					
					if(pev(ParaENT[id],pev_sequence) == 0) {
						pev(ParaENT[id],pev_fuser1, Frame);
						Frame += 1.0;
						set_pev(ParaENT[id],pev_fuser1,Frame);
						set_pev(ParaENT[id],pev_frame,Frame);
						
						if(Frame > 100.0) {
							set_pev(ParaENT[id], pev_animtime, 0.0);
							set_pev(ParaENT[id], pev_framerate, 0.4);
							set_pev(ParaENT[id], pev_sequence, 1);
							set_pev(ParaENT[id], pev_gaitsequence, 1);
							set_pev(ParaENT[id], pev_frame, 0.0);
							set_pev(ParaENT[id], pev_fuser1, 0.0);
						}
					}
				}
			}
			
			else if(ParaENT[id] > 0) {
				engfunc(EngFunc_RemoveEntity, ParaENT[id]);
				ParaENT[id] = 0;
			}
		}
		
		else if((OldButton & IN_USE) && ParaENT[id] > 0) {
			engfunc(EngFunc_RemoveEntity, ParaENT[id]);
			ParaENT[id] = 0;
		}
	}
}

public FWD_GameDescription() { 
	static GameName[32]
	get_pcvar_string(cvar_gamedescription, GameName, 31)
	
	forward_return(FMV_STRING, GameName)
	
	return FMRES_SUPERCEDE
}

public TASK_CanPlant() {
	CanPlant = true;
	set_hudmessage(random(255), random(255), random(255), -1.0, -1.0, 1, 3.1, 3.0)
	show_hudmessage(0, "Furienii pot planta bomba!")
}

public TASK_C4_CountDown() {
	new Red, Green, Blue
	if(C4_CountDownDelay > 10)
		Red = 0, Green = 255, Blue = 0;
	else if(C4_CountDownDelay > 5)
		Red = 255, Green = 200, Blue = 0;
	else if(C4_CountDownDelay <= 5)
		Red = 255, Green = 0, Blue = 0;
	
	if(C4_CountDownDelay) {
		new Message[256];
		formatex(Message,sizeof(Message)-1,"----------^n| C4: %d |^n----------", C4_CountDownDelay);

		set_hudmessage(Red, Green, Blue, -1.0, 0.78, 0, 6.0, 1.0)
		show_hudmessage(0, "%s", Message)
		set_task(1.0, "TASK_C4_CountDown", TASKID_C4COUNTDOWN);
		C4_CountDownDelay--;
	}
	else if(!C4_CountDownDelay)
		C4_CountDownDelay = 0;
}

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


Nume: Furien plugin de baza
Versiune: 2.0
Link oficial: -

Instalare:
1.Se compileaza sursa.
2.Se pune nume_plugin.amxx in addons/amxmodx/plugins .
3.Se trece nume_plugin.amxx in plugins.ini din addons/amxmodx/configs

Cvar-uri (se adauga in fisierul amxmodx\configs\amxx.cfg):
-

Comenzi administrative (se tasteaza in consola si trebuie sa fiti administrator):
-

Comenzi publice
/shop
/shop
/beneficii
/rs
/weapons

Module necesare (se sterge ; din fata modulului de mai jos; acestea le gasiti in fisierul amxmodx\configs\modules.ini):
#include <amxmodx>
#include <cstrike>
#include <engine>
#include <fakemeta>
#include <fakemeta_util>
#include <hamsandwich>
#include <fun>

Imagini: -

Sa va bucurati de el ! Multumiri lui danne (the shield) ca mi-a facut acest plugin la comanda.Si-a meritat toti banii,insa cum nu ma mai pasioneaza furienul am decis sa postez sursa.

Re: Plugin de baza FURIEN CLASIC

Posted: 09 May 2015, 20:00
by dreadSquad
L-am pus si am server'ul offline . :| , Sti de ce oare ? :-w

Re: Plugin de baza FURIEN CLASIC

Posted: 09 May 2015, 20:02
by Mutex
dreadSquad wrote:L-am pus si am server'ul offline . :| , Sti de ce oare ? :-w
Oare nu ai modelul superknife?

Re: Plugin de baza FURIEN CLASIC

Posted: 09 May 2015, 20:03
by dreadSquad
Nu-mi apare despre asta in consola, pot sa postez tot ce apare in consola dupa restart, daca vrei .. :)

Re: Plugin de baza FURIEN CLASIC

Posted: 09 May 2015, 20:11
by dreadSquad
Nu mai e nevoie, multumesc mult, e superb plugin'ul . UP recomand ;)

Re: Plugin de baza FURIEN CLASIC

Posted: 10 May 2015, 18:43
by Challenger.
Multumesc mult !
E foarte bun pluginul !

Re: Plugin de baza FURIEN CLASIC

Posted: 10 May 2015, 18:57
by LOLpgl
Frumos plugin ;)

Re: Plugin de baza FURIEN CLASIC

Posted: 11 May 2015, 12:32
by ^ionutz^
frumos plugin bv lui DaNNe. dar la ce fps rula serverul ?

Re: Plugin de baza FURIEN CLASIC

Posted: 11 May 2015, 14:20
by Mutex
^ionutz^ wrote:frumos plugin bv lui DaNNe. dar la ce fps rula serverul ?
350+ full

Re: Plugin de baza FURIEN CLASIC

Posted: 11 May 2015, 20:33
by Challenger.
EDIT:Am rezolvat :) !

Re: Plugin de baza FURIEN CLASIC

Posted: 01 Jun 2015, 13:44
by DaNNe.
^ionutz^ wrote:frumos plugin bv lui DaNNe. dar la ce fps rula serverul ?
Pluginul a fost capabil sa duca un server in top mondial. Furienul lui Mutex a fost locul 2 mondial la acest mod o buna perioada de timp, deci nu se pune problema de crash-uri sau alte erori.

Aveam de facut multe, multe update-uri, doar ca m-am lasat de CS si n-am mai continuat.

Re: Plugin de baza FURIEN CLASIC

Posted: 03 Jun 2015, 18:48
by Parano1a
Daca se poate sa-mi scoate shopu si meniu-l de arme va rog ! As ramane foarte recunoscator