Raised This Month: $ Target: $400
 0% 

¿Cómo puedo añadir una clase de COD con está estructura?


  
 
 
Thread Tools Display Modes
Author Message
ClauSanta
Junior Member
Join Date: Mar 2011
Old 01-07-2012 , 10:17   ¿Cómo puedo añadir una clase de COD con está estructura?
#1

Hola, el problema que tengo es que yo se añadir pequeñas clases modificando el .sma directamente del plugin, pero me eh encontrado un par de clases que me gustaría añadir con una estructura muy diferente, es decir es un plugin aparte, entonces no se como podría hacer para que al ponerla saliese en el menú para elegir dicha clase.
Aquí un ejemplo del tipo de clase que me refiero;

Code:
#include <amxmodx>
#include <amxmisc>
#include <fakemeta>
#include <cstrike>
#include <engine>
#include <fun>
#include <csx>
#include <xs>
#include <hamsandwich>
#include <codmod>

new const nazwa[] = "Miotacz";
new const opis[] = "Posiada miotacz ognia zamiast noza!";
new const bronie = 1<<CSW_M3;
new const zdrowie = 15;
new const kondycja = 20;
new const inteligencja = 10;
new const wytrzymalosc = 5;

new bool:ma_klase[33];

new wpn_ft
new sprite_fire
new sprite_burn
new sprite_xplo
new g_freezetime
new g_restarted
new Float:g_starttime
new cvar_enabled
new cvar_client_buy
new cvar_damage
new cvar_xplode_dmg
new cvar_cost
new cvar_fuelcost
new cvar_fueltank
new cvar_buyzone
new cvar_buytime
new cvar_damage_dis
new cvar_splash_dis
new g_buyzone[33]
new g_FuelTank[33]
new g_Activated[33]
new Float:g_Delay[33]
new g_hasFlamethrower[33]
new g_FireFlamethrower[33]
new g_BuyFuel[33]
new cvar_expcod

static PLUGIN_NAME[] 	= "Miotacz ognia for cod"
static PLUGIN_AUTHOR[] 	= "Cheap_Suit eited by Crew"
static PLUGIN_VERSION[] = "1.1"

public plugin_init()
{
	RegisterHam(Ham_Spawn, "player", "Spawn", 1);
	cod_register_class(nazwa, opis, bronie, zdrowie, kondycja, inteligencja, wytrzymalosc);
	register_plugin(PLUGIN_NAME, PLUGIN_VERSION, PLUGIN_AUTHOR)
	register_cvar("ft_version", PLUGIN_VERSION, FCVAR_SERVER)
	
	cvar_enabled 	= register_cvar("ft_enable", 		"1")
	cvar_fueltank 	= register_cvar("ft_fueltank", 		"50")
	cvar_damage	= register_cvar("ft_damage", 		"2")
	cvar_xplode_dmg = register_cvar("ft_xplode_dmg", 	"30")
	cvar_damage_dis	= register_cvar("ft_damage_dis", 	"100")
	cvar_splash_dis = register_cvar("ft_splash_dis", 	"40")
	cvar_expcod 	= register_cvar("cod_xpmiotacz", 	"20")
	
	register_event("DeathMsg",  	"Event_DeathMsg", 	"a")
	register_event("CurWeapon", 	"Event_CurWeapon", 	"be", 	"1=1")
	register_event("StatusIcon", 	"Event_BuyZone",  	"b", 	"2=buyzone")
	register_event("HLTV", 		"Event_NewRound", 	"a", 	"1=0", "2=0")
	register_event("TextMsg", 	"Event_WeaponDrop", 	"be", 	"2=#Weapon_Cannot_Be_Dropped")
	register_event("TextMsg", 	"Event_GameRestart", 	"a", 	"2=#Game_Commencing", 	"2=#Game_will_restart_in")
	register_logevent("LogEvent_RoundStart", 		 2, 	"0=World triggered",	"1=Round_Start")
	
	register_forward(FM_CmdStart,		"fw_CmdStart")
	register_forward(FM_PlayerPostThink, 	"fw_PlayerPostThink")
	register_forward(FM_UpdateClientData, 	"fw_UpdateClientData_Post", 1)
	
	register_think("flamethrower", "think_Flamethrower")
	register_touch("flamethrower", "player", "touch_Flamethrower")
	wpn_ft = custom_weapon_add("weapon_flamethrower", 0, "flamethrower")
	
	if(!get_pcvar_num(cvar_enabled)) pause("ad", PLUGIN_NAME)
}

public plugin_precache()
{
	precache_sound("flamethrower.wav")
	precache_sound("items/ammopickup2.wav")
	
	sprite_xplo = precache_model("sprites/zerogxplode.spr")
	sprite_fire = precache_model("sprites/explode1.spr")
	sprite_burn = precache_model("sprites/xfire.spr")
	
	precache_model("models/v_knife.mdl")
	precache_model("models/p_knife.mdl")
	precache_model("models/shield/v_shield_knife.mdl")
	precache_model("models/shield/p_shield_knife.mdl")
	precache_model("models/w_flamethrower.mdl")
	precache_model("models/v_flamethrower.mdl")
	precache_model("models/p_flamethrower.mdl")
}

public cmd_GiveFlamethrowers(id, level, cid) 
{
	if(!cmd_access(id, level, cid, 2))
		return PLUGIN_HANDLED
	
	new Arg1[64], target
	read_argv(1, Arg1, 63)
	
	new adminName[32]
	get_user_name(id, adminName, 31)
	
	new targetTeam
	new Players[32], iNum
	if(Arg1[0] == '@') 
	{
		if(equali(Arg1[1], "all")) 
		{
			targetTeam = 0
			get_players(Players, iNum, "a")
		} 
		else if(equali(Arg1[1], "t")) 
		{
			targetTeam = 1
			get_players(Players, iNum, "ae" , "terrorist")
			
		} 
		else if(equali(Arg1[1], "ct")) 
		{
			targetTeam = 2
			get_players(Players, iNum, "ae" , "ct")
		}
		
		for(new i = 0; i < iNum; ++i)
		{
			target = Players[i]
			
			g_hasFlamethrower[target] = 1
			g_FuelTank[target] = get_pcvar_num(cvar_fueltank)
			
			new temp[2], weaponID = get_user_weapon(target, temp[0], temp[1])
			if(weaponID == CSW_KNIFE) 
			{
				g_Activated[target] = true
				set_flamethrower_model(target)
			}
			
			client_cmd(target, "spk items/ammopickup2")
			client_print(target, print_chat, "You have been given a flamethrower (press 3 to use)")
		}
		
		switch(targetTeam)
		{
			case 0: client_print(0, print_chat, "Admin: %s has given everyone a flamethrower", adminName)
				case 1: client_print(0, print_chat, "Admin: %s has given all terrorist a flamethrower", adminName)
				case 2: client_print(0, print_chat, "Admin: %s has given all ct's a flamethrower", adminName)
			}
	}
	else
	{
		target = cmd_target(id, Arg1, 0)
		if(!is_user_connected(target) || !is_user_alive(target))
			return PLUGIN_HANDLED
		
		new targetName[32]
		get_user_name(target, targetName, 31)
		
		g_hasFlamethrower[target] = 1
		g_FuelTank[target] = get_pcvar_num(cvar_fueltank)
		
		new temp[2], weaponID = get_user_weapon(target, temp[0], temp[1])
		if(weaponID == CSW_KNIFE) 
		{
			g_Activated[target] = true
			set_flamethrower_model(target)
			entity_set_int(id, EV_INT_weaponanim, 9)
		}
		
		client_cmd(target, "spk items/ammopickup2")
		client_print(target, print_chat, "You have been given a flamethrower (press 3 to use)")
		client_print(target, print_chat, "Admin: %s has given you a flamethrower", adminName)
	}
	return PLUGIN_HANDLED
}

public cmd_BuyFlamethrower(id)
{
	if(!get_pcvar_num(cvar_client_buy))
		return PLUGIN_CONTINUE
	
	if(get_pcvar_num(cvar_buyzone))
	{
		if(!g_buyzone[id])
		{
			client_print(id, print_center, "You need to be in the buyzone")
			return PLUGIN_HANDLED
		} 
	}
	
	if(get_pcvar_num(cvar_buytime))
	{
		new Float:fBuyTime = get_cvar_float("mp_buytime") * 60
		if(!g_freezetime && (get_gametime() - g_starttime) > fBuyTime) 
		{
			client_print(id, print_center, "%d seconds have passed.^nYou can't buy anything now!", floatround(fBuyTime))
			return PLUGIN_HANDLED
		}
	}
	
	new iMoney = cs_get_user_money(id)
	new iCost = get_pcvar_num(cvar_cost)
	
	if(!is_user_alive(id)) 
		client_print(id, print_center, "You cant buy when your dead!")
	else if(g_hasFlamethrower[id])
		client_print(id, print_center, "You already own that weapon.")
	else if(iMoney < iCost)
		client_print(id, print_center, "Insufficient funds! ($%d)", iCost)
	else
	{
		g_hasFlamethrower[id] = 1
		g_FuelTank[id] = get_pcvar_num(cvar_fueltank)
		
		new temp[2], weaponID = get_user_weapon(id, temp[0], temp[1])
		if(weaponID == CSW_KNIFE) 
		{
			g_Activated[id] = true
			set_flamethrower_model(id)
		}
		
		cs_set_user_money(id, iMoney - iCost)
		client_cmd(id, "spk items/ammopickup2")
		client_print(id, print_chat, "You bought a flamethrower (press 3 to use)")
	}
	return PLUGIN_HANDLED
}

public Event_BuyZone(id) {
	g_buyzone[id] = read_data(1)
}

public Event_GameRestart() {
	g_restarted = 1
}

public Event_NewRound() 
{
	if(g_restarted)
	{
		new Players[32], iNum = 0
		get_players(Players, iNum)
		for(new i = 0; i < iNum; i++) 
		{
			new id = Players[i]
			
			g_FuelTank[id] = 0
			g_Activated[id] = 0
			g_hasFlamethrower[id] = 0
			
			new temp[2], weaponID = get_user_weapon(id, temp[0], temp[1])
			if(weaponID == CSW_KNIFE) set_knife_model(id)
			
			g_restarted = 0
		}
	}
	
	new flamethrowers = -1
	while((flamethrowers = find_ent_by_class(flamethrowers, "flamethrower")))
		remove_entity(flamethrowers)
	
	g_freezetime = 1
}

public LogEvent_RoundStart()
{
	g_freezetime = 0
	g_starttime = get_gametime()
}

public Event_WeaponDrop(id)
{
	if(!is_user_alive(id) || !g_Activated[id])
		return PLUGIN_CONTINUE
	
	client_print(id, print_center, "")
	return PLUGIN_HANDLED
}

public Event_DeathMsg() 
{ 
	new id = read_data(2)
	if(!is_user_connected(id) || !g_hasFlamethrower[id]) {
		return PLUGIN_CONTINUE
	}
	
	return PLUGIN_CONTINUE
}

public Event_CurWeapon(id)
{
	if(!is_user_alive(id) || !g_hasFlamethrower[id]) 
		return PLUGIN_CONTINUE
	
	new WeaponID = read_data(2)
	switch(WeaponID) 
	{
		case CSW_KNIFE:
		{
			set_task(0.3, "task_ActivateFlamethrower", id)
			set_flamethrower_model(id)
			entity_set_int(id, EV_INT_weaponanim, 9)
		}
		default: g_Activated[id] = 0
	}
	return PLUGIN_CONTINUE
}

public touch_Flamethrower(ent, id)
{
	if(!is_valid_ent(ent) || !is_user_alive(id)) 
		return PLUGIN_CONTINUE
	
	if(g_hasFlamethrower[id])
		return PLUGIN_CONTINUE
	
	if(has_shield(id))
		return PLUGIN_CONTINUE
	
	g_hasFlamethrower[id] = 1
	client_cmd(id, "spk items/ammopickup2")
	g_FuelTank[id] = entity_get_int(ent, EV_INT_iuser4)
	show_fuel_percentage(id)
	
	new temp[2], weaponID = get_user_weapon(id, temp[0], temp[1])
	if(weaponID == CSW_KNIFE) 
	{
		g_Activated[id] = true
		set_flamethrower_model(id)
		entity_set_int(id, EV_INT_weaponanim, 9)
	}
	remove_entity(ent)
	
	return PLUGIN_CONTINUE
}

public fw_UpdateClientData_Post(id, sendweapons, cd_handle) 
{
	if(!g_hasFlamethrower[id] || !g_Activated[id])
		return FMRES_IGNORED
	
	set_cd(cd_handle, CD_ID, 0)
	return FMRES_HANDLED
}

public fw_CmdStart(id, uc_handle, seed) 
{
	if(!g_hasFlamethrower[id] || !g_Activated[id])
		return FMRES_IGNORED
	
	new buttons = get_uc(uc_handle, UC_Buttons)
	if(buttons & IN_ATTACK)
	{
		g_FireFlamethrower[id] = 1
		
		buttons &= ~IN_ATTACK
		set_uc(uc_handle, UC_Buttons, buttons)
	} else 
	g_FireFlamethrower[id] = 0
	
	return FMRES_HANDLED
}

public fw_PlayerPostThink(id)
{
	if(!is_user_connected(id) || !is_user_alive(id))
		return FMRES_IGNORED
	
	if(!g_hasFlamethrower[id] || !g_Activated[id])
		return FMRES_IGNORED
	
	if(entity_get_int(id, EV_INT_waterlevel) > 1)
		return FMRES_IGNORED
	
	if(has_shield(id))
	{
		return FMRES_IGNORED
	}
	
	if(g_BuyFuel[id])
	{
		if((g_Delay[id] + 0.2) < get_gametime())
		{
			buy_fuel(id)
			g_Delay[id] = get_gametime()
		}
	}
	
	if(g_FireFlamethrower[id])
	{
		if(g_FuelTank[id] > 0)
		{
			if((g_Delay[id] + 0.2) < get_gametime())
			{
				g_FuelTank[id] -= 1
				g_Delay[id] = get_gametime()
			}
			
			new Float:fOrigin[3], Float:fVelocity[3]
			entity_get_vector(id,EV_VEC_origin, fOrigin)
			VelocityByAim(id, 35, fVelocity)
			
			new Float:fTemp[3], iFireOrigin[3]
			xs_vec_add(fOrigin, fVelocity, fTemp)
			FVecIVec(fTemp, iFireOrigin)
			
			new Float:fFireVelocity[3], iFireVelocity[3]
			VelocityByAim(id, get_pcvar_num(cvar_damage_dis), fFireVelocity)
			FVecIVec(fFireVelocity, iFireVelocity)
			
			create_flames_n_sounds(id, iFireOrigin, iFireVelocity)
			
			new doDamage
			switch(get_cvar_num("mp_friendlyfire"))
			{
				case 0: doDamage = 0
					case 1: doDamage = 1
				}
			
			show_fuel_percentage(id)
			direct_damage(id, doDamage)
			indirect_damage(id, doDamage)
			custom_weapon_shot(wpn_ft, id)
		} else
		client_print(id, print_center, "Brak Benzyny")
	}
	return FMRES_IGNORED
}

public think_Flamethrower(ent)
{
	if(is_valid_ent(ent) && entity_get_float(ent, EV_FL_health) < 950.0) 
	{
		new Float:fOrigin[3], iOrigin[3]
		entity_get_vector(ent, EV_VEC_origin, fOrigin)
		FVecIVec(fOrigin, iOrigin)
		
		message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
		write_byte(99)
		write_short(ent)
		message_end()
		
		message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
		write_byte(3)
		write_coord(iOrigin[0])
		write_coord(iOrigin[1])
		write_coord(iOrigin[2])
		write_short(sprite_xplo)
		write_byte(50)
		write_byte(15)
		write_byte(0)
		message_end()
		
		RadiusDamage(fOrigin, get_pcvar_num(cvar_xplode_dmg), entity_get_int(ent, EV_INT_iuser4))
		remove_entity(ent)
	}
	if(is_valid_ent(ent)) entity_set_float(ent, EV_FL_nextthink, halflife_time() + 0.01)
}

public create_flames_n_sounds(id, origin[3], velocity[3])
{
	message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
	write_byte(120)
	write_coord(origin[0])
	write_coord(origin[1])
	write_coord(origin[2])
	write_coord(velocity[0])
	write_coord(velocity[1])
	write_coord(velocity[2] + 5)
	write_short(sprite_fire)
	write_byte(1)
	write_byte(10)
	write_byte(1)
	write_byte(5)
	message_end()
	
	emit_sound(id, CHAN_WEAPON, "flamethrower.wav", VOL_NORM, ATTN_NORM, 0, PITCH_NORM)
}

public direct_damage(id, doDamage)
{
	new ent, body
	get_user_aiming(id, ent, body, get_pcvar_num(cvar_damage_dis) + 500)
	
	if(ent > 0 && is_user_alive(ent))
	{
		if(!doDamage)
		{
			if(get_user_team(id) != get_user_team(ent)) 
			{
				damage_user(id, ent, get_pcvar_num(cvar_damage))
				custom_weapon_dmg(wpn_ft, id, ent, get_pcvar_num(cvar_damage))
			}
		}
		else
		{
			damage_user(id, ent, get_pcvar_num(cvar_damage))	
			custom_weapon_dmg(wpn_ft, id, ent, get_pcvar_num(cvar_damage))
		}
	}
}

public indirect_damage(id, doDamage)
{
	new Players[32], iNum
	get_players(Players, iNum, "a")
	for(new i = 0; i < iNum; ++i) if(id != Players[i])
{
	new target = Players[i]
	
	new Float:fOrigin[3], Float:fOrigin2[3]
	entity_get_vector(id,EV_VEC_origin, fOrigin)
	entity_get_vector(target, EV_VEC_origin, fOrigin2)
	
	new temp[3], Float:fAim[3]
	get_user_origin(id, temp, 3)
	IVecFVec(temp, fAim)
	
	new Float:fDistance = get_pcvar_num(cvar_damage_dis) + 500.0
	if(get_distance_f(fOrigin, fOrigin2) > fDistance)
		continue 
		
		new iDistance = get_distance_to_line(fOrigin, fOrigin2, fAim)
		if(iDistance > get_pcvar_num(cvar_splash_dis) || iDistance < 0 || !fm_is_ent_visible(id, target))
			continue 
		
		if(!doDamage)
		{
			if(get_user_team(id) != get_user_team(target))
			{
				damage_user(id, target, get_pcvar_num(cvar_damage))
				custom_weapon_dmg(wpn_ft, id, target, get_pcvar_num(cvar_damage))
			}
		}
		else 
		{
			damage_user(id, target, get_pcvar_num(cvar_damage) / 2)
			custom_weapon_dmg(wpn_ft, id, target, get_pcvar_num(cvar_damage) / 2)
		}
	}
}

public buy_fuel(id)
{
	if(get_pcvar_num(cvar_buyzone) && !g_buyzone[id])
		return PLUGIN_CONTINUE
	
	new Float:fBuyTime = get_cvar_float("mp_buytime") * 60
	if(get_pcvar_num(cvar_buytime) && !g_freezetime 
	&& (get_gametime() - g_starttime) > fBuyTime)
	return PLUGIN_CONTINUE
	
	if(g_FuelTank[id] >= get_pcvar_num(cvar_fueltank))
		return PLUGIN_CONTINUE
	
	new iMoney = cs_get_user_money(id)
	new iCost = get_pcvar_num(cvar_fuelcost)
	if(iMoney >= iCost)
	{
		g_FuelTank[id] += 1
		show_fuel_percentage(id)
		cs_set_user_money(id, iMoney - iCost)
		
		return PLUGIN_CONTINUE
	}	
	return PLUGIN_CONTINUE
}

public drop_flamethrower(id)
{
	new Float:fVelocity[3], Float:fOrigin[3]
	entity_get_vector(id, EV_VEC_origin, fOrigin)
	VelocityByAim(id, 34, fVelocity)
	
	fOrigin[0] += fVelocity[0]
	fOrigin[1] += fVelocity[1]
	
	VelocityByAim(id, 300, fVelocity)
	
	new ent = create_entity("info_target")
	if(is_valid_ent(ent))
	{
		entity_set_string(ent, EV_SZ_classname, "flamethrower")
		entity_set_model(ent, "models/w_flamethrower.mdl")
		entity_set_int(ent, EV_INT_movetype, MOVETYPE_TOSS)
		entity_set_int(ent, EV_INT_solid, SOLID_TRIGGER)
		entity_set_vector(ent, EV_VEC_origin, fOrigin)
		entity_set_vector(ent, EV_VEC_velocity, fVelocity)
		entity_set_int(ent, EV_INT_iuser4, g_FuelTank[id])
		entity_set_float(ent, EV_FL_takedamage, 1.0)
		entity_set_float(ent, EV_FL_health, 1000.0)
		entity_set_size(ent, Float:{-2.5, -2.5, -1.5}, Float:{2.5, 2.5, 1.5})
		entity_set_float(ent, EV_FL_nextthink, halflife_time() + 0.01)
	}
	
	g_FuelTank[id] = 0
	g_Activated[id] = 0
	g_hasFlamethrower[id] = 0
	
	if(has_shield(id))
		set_shield_model(id)
	else 
		set_knife_model(id)
	
	return PLUGIN_CONTINUE
}

public task_ActivateFlamethrower(id) 
{
	if(!is_user_connected(id) || !is_user_alive(id))
		return PLUGIN_CONTINUE
	
	new temp[2], weaponID = get_user_weapon(id, temp[0], temp[1])
	if(weaponID == CSW_KNIFE) g_Activated[id] = 1
	
	return PLUGIN_CONTINUE
}

public show_fuel_percentage(id)
{
	set_hudmessage(255, 170, 0, 0.91, 0.95, _, _, 1.0, _, _, 4)
	show_hudmessage(id, "Benzyna: %d%%", get_percent(g_FuelTank[id], get_pcvar_num(cvar_fueltank)))
}

public set_flamethrower_model(id)
{
	entity_set_string(id, EV_SZ_viewmodel, "models/v_flamethrower.mdl")
	entity_set_string(id, EV_SZ_weaponmodel, "models/p_flamethrower.mdl")
}

public set_knife_model(id)
{
	entity_set_string(id, EV_SZ_viewmodel, "models/v_knife.mdl")
	entity_set_string(id, EV_SZ_weaponmodel, "models/p_knife.mdl")	
}

public set_shield_model(id)
{
	entity_set_string(id, EV_SZ_viewmodel, "models/shield/v_shield_knife.mdl")
	entity_set_string(id, EV_SZ_weaponmodel, "models/shield/p_shield_knife.mdl")
}

stock damage_user(id, victim, damage)
{
	new iHealth = get_user_health(victim)
	if(iHealth > damage) 
		fakedamage(victim, "weapon_flamethrower", float(damage), DMG_BURN)
	else
	{
		new iXp = get_pcvar_num(cvar_expcod);
		set_hudmessage(255, 212, 0, -1.0, 0.30, 0, 2.0, 2.0, 0.05, 0.05, 4)
		show_hudmessage(0, "+ %d", iXp);
		cod_set_user_xp(id,cod_get_user_xp(id) + iXp)
		
		user_silentkill(victim)
		make_deathmsg(id, victim, 0, "flamethrower")
		
		new iOrigin[3]
		get_user_origin(victim, iOrigin, 0)
		
		message_begin(MSG_BROADCAST,SVC_TEMPENTITY)
		write_byte(17)
		write_coord(iOrigin[0])
		write_coord(iOrigin[1])
		write_coord(iOrigin[2] + 10)
		write_short(sprite_burn)
		write_byte(30)
		write_byte(40)
		message_end()
		
		if(get_user_team(id) != get_user_team(victim))
		{
			set_user_frags(id, get_user_frags(id) + 1)
			cs_set_user_money(id, cs_get_user_money(id) + 300)
		}
		else
		{
			set_user_frags(id, get_user_frags(id) - 1)
			cs_set_user_money(id, cs_get_user_money(id) - 300)
		}
		
		message_begin(MSG_ALL, get_user_msgid("ScoreInfo")) 
		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() 
		
		message_begin(MSG_ALL, get_user_msgid("ScoreInfo")) 
		write_byte(victim) 
		write_short(get_user_frags(victim))
		write_short(get_user_deaths(victim))
		write_short(0)
		write_short(get_user_team(victim))
		message_end()
	}
}

stock get_percent(value, tvalue) {       
	return floatround(floatmul(float(value) / float(tvalue) , 100.0))  
}

stock get_distance_to_line(Float:pos_start[3], Float:pos_end[3], Float:pos_object[3])  
{  
	new Float:vec_start_end[3], Float:vec_start_object[3], Float:vec_end_object[3], Float:vec_end_start[3]
	xs_vec_sub(pos_end, pos_start, vec_start_end) 		// vector from start to end 
	xs_vec_sub(pos_object, pos_start, vec_start_object) 	// vector from end to object 
	xs_vec_sub(pos_start, pos_end, vec_end_start) 		// vector from end to start 
	xs_vec_sub(pos_end, pos_object, vec_end_object) 		// vector object to end 
	
	new Float:len_start_object = getVecLen(vec_start_object) 
	new Float:angle_start = floatacos(xs_vec_dot(vec_start_end, vec_start_object) / (getVecLen(vec_start_end) * len_start_object), degrees)  
	new Float:angle_end = floatacos(xs_vec_dot(vec_end_start, vec_end_object) / (getVecLen(vec_end_start) * getVecLen(vec_end_object)), degrees)  
	
	if(angle_start <= 90.0 && angle_end <= 90.0) 
		return floatround(len_start_object * floatsin(angle_start, degrees)) 
	return -1  
}

stock Float:getVecLen(Float:Vec[3])
{ 
	new Float:VecNull[3] = {0.0, 0.0, 0.0}
	new Float:len = get_distance_f(Vec, VecNull)
	return len
}

stock bool:fm_is_ent_visible(index, entity) 
{
	new Float:origin[3], Float:view_ofs[3], Float:eyespos[3]
	pev(index, pev_origin, origin)
	pev(index, pev_view_ofs, view_ofs)
	xs_vec_add(origin, view_ofs, eyespos)
	
	new Float:entpos[3]
	pev(entity, pev_origin, entpos)
	engfunc(EngFunc_TraceLine, eyespos, entpos, 0, index)
	
	switch(pev(entity, pev_solid)) {
		case SOLID_BBOX..SOLID_BSP: return global_get(glb_trace_ent) == entity
		}
	
	new Float:fraction
	global_get(glb_trace_fraction, fraction)
	if(fraction == 1.0)
		return true
	
	return false
}

stock bool:has_shield(id)
{
	new modelName[32]
	entity_get_string(id, EV_SZ_viewmodel, modelName, 31)
	
	if(containi(modelName, "v_shield_") != -1)
		return true
	
	return false
}

public cod_class_enabled(id){       
	ma_klase[id] = true;
	
	g_hasFlamethrower[id] = 1
	g_FuelTank[id] = get_pcvar_num(cvar_fueltank)
	
	new temp[2], weaponID = get_user_weapon(id, temp[0], temp[1])
	if(weaponID == CSW_KNIFE) 
	{
		g_Activated[id] = true
		set_flamethrower_model(id)
	}
	
	client_cmd(id, "spk items/ammopickup2")
	client_print(id, print_chat, "Masz miotacz ognia nacisnij 3 aby uzyc")
}

public cod_class_disabled(id){
	ma_klase[id] = false;
	g_hasFlamethrower[id] = 0
}

public Spawn(id)
{
	if(is_user_connected(id) && ma_klase[id])
	{
		g_hasFlamethrower[id] = 1
		g_FuelTank[id] = get_pcvar_num(cvar_fueltank)
		
		new temp[2], weaponID = get_user_weapon(id, temp[0], temp[1])
		if(weaponID == CSW_KNIFE) 
		{
			g_Activated[id] = true
			set_flamethrower_model(id)
		}
		
		client_cmd(id, "spk items/ammopickup2")
		client_print(id, print_chat, "Masz miotacz ognia nacisnij 3 aby uzyc")
	}
	
	return PLUGIN_CONTINUE;
	
}
Si por algún casual ese ejemplo no vale, revisen esté tema;
- https://forums.alliedmods.net/showthread.php?t=173861
Ese usuario quiere añadir esa clase, y es un plugin aparte... entonces se me hace bastante lioso y complicado.
ClauSanta is offline
 



Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT -4. The time now is 17:32.


Powered by vBulletin®
Copyright ©2000 - 2024, vBulletin Solutions, Inc.
Theme made by Freecode