Unlock Gun Can anyone make it work for my gunxpmod please?

В този раздел можете да подавате всякакви заявки за намиране, изработка или преработка на плъгини/модове.
Аватар
Infamous2018
Извън линия
Foreigner
Foreigner
Мнения: 522
Регистриран на: 08 Апр 2018, 16:56
Се отблагодари: 14 пъти
Получена благодарност: 21 пъти

Unlock Gun Can anyone make it work for my gunxpmod please?

Мнение от Infamous2018 » 28 Май 2020, 22:33

Hello can anyone make it for my gunxpmod? And that only CT TEAM can use it? I got failed only. :/

here is the code:

Код за потвърждение: Избери целия код

#include <amxmodx>
#include <engine>
#include <fakemeta>
#include <fakemeta_util>
#include <hamsandwich>
#include <cstrike>
#include <xs>
#include <gxm_shop>

#define PLUGIN "Balrog-9"
#define VERSION "1.0"
#define AUTHOR "Dias - edited by older brother sneaky.amxx :)"


// ================ Weapon Config ======================
// =====================================================
// Draw Time
#define DRAW_TIME 1.0

// Next Attack Time
#define NEXTATTACK_MISS 0.5
#define NEXTATTACK_HIT 0.35

// Attack Distance
#define ATTACKDIS_SLASH 58.0
#define ATTACKDIS_CHARGE 68.0

// Attack Damage
#define DAMAGE_SLASH 1200.0
#define DAMAGE_CHARGE 3000.0

// Charge Mode
#define CHARGE_STARTTIME 0.75
#define CHARGE_ATTACKTIME 0.75
#define CHARGE_TIME 2.0
#define CHARGE_NEXTATTACK 1.0
#define CHARGE_EXPRADIUS 120

#define CHARGE_ATTACK_KNOCKPOWER 1000.0

// Task
#define TASK_CHARGE_STARTING 75675
#define TASK_CHARGING 464334

new const v_model[] = "models/v_balrog9.mdl"
new const p_model[] = "models/p_balrog9.mdl"
new const exp_spr[] = "sprites/balrogcritical.spr"

new const weapon_sound[9][] =
{
	"weapons/balrog9_draw.wav",
	"weapons/balrog9_slash1.wav",
	"weapons/balrog9_slash2.wav",
	"weapons/balrog9_hitwall.wav",
	"weapons/balrog9_hit1.wav",
	"weapons/balrog9_hit2.wav",
	"weapons/balrog9_charge_start1.wav",
	"weapons/balrog9_charge_finish1.wav",
	"weapons/balrog9_charge_attack2.wav"
}

new const falcon_punch[2][] =
{
	"weapons/balrog9_falcon.wav",
	"weapons/balrog9_punch.wav"
}

enum
{
	B9_DRAW = 0,
	B9_SLASH1,
	B9_SLASH2,
	B9_HITWALL,
	B9_HIT1,
	B9_HIT2,
	B9_CHARGE_START,
	B9_CHARGE_FINISH,
	B9_CHARGE_ATTACK
}

new g_balrog9, g_bot, g_exp_sprid
new g_had_balrog9[33], g_attack_mode[33], g_charging[33], g_charged[33], g_chargeattack[33]

enum
{
	MODE_NORMAL = 1,
	MODE_CHARGE
}

enum
{
	KNIFE_ANIM_IDLE = 0,
	KNIFE_ANIM_SLASH1,
	KNIFE_ANIM_SLASH2,
	KNIFE_ANIM_DRAW,
	KNIFE_ANIM_STAB_HIT,
	KNIFE_ANIM_STAB_MISS,
	KNIFE_ANIM_MIDSLASH1,
	KNIFE_ANIM_MIDSLASH2
}

enum
{
	BALROG9_ANIM_IDLE = 0,
	BALROG9_ANIM_SLASH1,
	BALROG9_ANIM_SLASH2,
	BALROG9_ANIM_SLASH3,
	BALROG9_ANIM_SLASH4,
	BALROG9_ANIM_SLASH5,
	BALROG9_ANIM_DRAW,
	BALROG9_ANIM_CHARGE_START,
	BALROG9_ANIM_CHARGE_FINISH,
	BALROG9_ANIM_CHARGE_IDLE1,
	BALROG9_ANIM_CHARGE_IDLE2,
	BALROG9_ANIM_CHARGE_ATTACK1,
	BALROG9_ANIM_CHARGE_ATTACK2
}

public plugin_init() 
{
	register_plugin(PLUGIN, VERSION, AUTHOR)
	
	register_event("CurWeapon", "Event_CurWeapon", "be", "1=1")
	register_gxm_item( "Balrog-9 Falcon\r[ADMIN\VIP]", " +power +( Knife)", 1000)
	
	register_forward(FM_EmitSound, "fw_EmitSound")
	register_forward(FM_CmdStart, "fw_CmdStart")
	register_forward(FM_TraceLine, "fw_TraceLine")
	register_forward(FM_TraceHull, "fw_TraceHull")		
	
	RegisterHam(Ham_CS_Weapon_SendWeaponAnim, "weapon_knife", "fw_Knife_SendAnim")
	RegisterHam(Ham_TraceAttack, "player", "fw_TraceAttack")
	RegisterHam(Ham_TraceAttack, "player", "fw_TraceAttack_Post", 1)
	
	//register_clcmd("amx_get_b9", "get_balrog9", ADMIN_ADMIN)
}
public gxm_item_enabled(id)
{
	g_had_balrog9[id] = 1
}

public plugin_precache()
{
	engfunc(EngFunc_PrecacheModel, v_model)
	engfunc(EngFunc_PrecacheModel, p_model)
	
	for(new i = 0; i < sizeof(weapon_sound); i++)
		engfunc(EngFunc_PrecacheSound, weapon_sound[i])
	for(new i = 0; i < sizeof(falcon_punch); i++)
		engfunc(EngFunc_PrecacheSound, falcon_punch[i])
		
	g_exp_sprid = engfunc(EngFunc_PrecacheModel, exp_spr)
}

public get_balrog9(id)
{
	g_had_balrog9[id] = 1
	g_attack_mode[id] = 0
	g_charged[id] = 0
	g_charging[id] = 0
	g_chargeattack[id] = 0
	
	if(get_user_weapon(id) == CSW_KNIFE) 
	{
		Event_CurWeapon(id)
		set_weapon_anim(id, BALROG9_ANIM_DRAW)
	}
}

public remove_balrog9(id)
{
	g_had_balrog9[id] = 0
	g_attack_mode[id] = 0
	g_charged[id] = 0
	g_charging[id] = 0	
	g_chargeattack[id] = 0
	
	remove_task(id+TASK_CHARGE_STARTING)
	remove_task(id+TASK_CHARGING)
}

public client_putinserver(id)
{
	if(is_user_bot(id) && !g_bot)
	{
		g_bot = 1
		set_task(0.1, "Do_RegisterHamBot", id)
	}
}

public Do_RegisterHamBot(id)
{
	RegisterHamFromEntity(Ham_TraceAttack, id, "fw_TraceAttack")
	RegisterHamFromEntity(Ham_TraceAttack, id, "fw_TraceAttack_Post", 1)
}

public Event_CurWeapon(id)
{
	if(!is_user_alive(id) || cs_get_user_team(id) != CS_TEAM_CT)
		return 1
	if(!is_user_alive(id))
		return 1
	if(get_user_weapon(id) != CSW_KNIFE)
		return 1
	if(!g_had_balrog9[id])
		return 1
		
	set_pev(id, pev_viewmodel2, v_model)
	set_pev(id, pev_weaponmodel2, p_model)
		
	return 0
}

public fw_Knife_SendAnim(ent, anim, skip_local)
{	
	if(!pev_valid(ent))
		return HAM_IGNORED
		
	new id
	id = get_pdata_cbase(ent, 41 , 4)
	
	if(!g_had_balrog9[id])
		return HAM_IGNORED
	
	static Float:PunchAngles[3]
	
	if(anim == KNIFE_ANIM_DRAW)
	{
		set_weapons_timeidle(id, DRAW_TIME)
		set_player_nextattack(id, DRAW_TIME)	
		
		set_weapon_anim(id, BALROG9_ANIM_DRAW)
		Remove_OldStuff(id)
	} else if(anim == KNIFE_ANIM_MIDSLASH1) {
		PunchAngles[0] = random_float(-1.0, -2.0)
		PunchAngles[1] = random_float(0.5, 1.5)
		PunchAngles[2] = 0.0
		
		set_pev(id, pev_punchangle, PunchAngles)
		set_weapon_anim(id, BALROG9_ANIM_SLASH1)
		Remove_OldStuff(id)
	} else if(anim == KNIFE_ANIM_MIDSLASH2) {
		PunchAngles[0] = random_float(-1.0, -2.0)
		PunchAngles[1] = random_float(-0.5, -1.5)
		PunchAngles[2] = 0.0
		
		set_pev(id, pev_punchangle, PunchAngles)
		set_weapon_anim(id, BALROG9_ANIM_SLASH2)
		Remove_OldStuff(id)
	} else if(anim == KNIFE_ANIM_STAB_HIT) {
		PunchAngles[0] = random_float(-0.5, 0.5)
		PunchAngles[1] = random_float(-0.5, -1.0)
		PunchAngles[2] = 0.0
		
		set_pev(id, pev_punchangle, PunchAngles)
		
		if(g_chargeattack[id] == 2) 
		{
			set_weapon_anim(id, BALROG9_ANIM_CHARGE_ATTACK2)
			set_task(0.1, "Effect_ChargedAttack", id)
		} else set_weapon_anim(id, BALROG9_ANIM_CHARGE_ATTACK1)
	} else if(anim == KNIFE_ANIM_STAB_MISS) {
		PunchAngles[0] = random_float(-0.5, 0.5)
		PunchAngles[1] = random_float(-0.5, -1.0)
		PunchAngles[2] = 0.0
		
		if(g_chargeattack[id] == 2) 
		{
			set_weapon_anim(id, BALROG9_ANIM_CHARGE_ATTACK2)
			set_task(0.1, "Effect_ChargedAttack", id)
		} else set_weapon_anim(id, BALROG9_ANIM_CHARGE_ATTACK1)
	}

	return HAM_IGNORED
}

public Remove_OldStuff(id)
{
	g_charging[id] = 0
	g_charged[id] = 0
	g_chargeattack[id] = 0

	remove_task(id+TASK_CHARGE_STARTING)
	remove_task(id+TASK_CHARGING)	
}

public Effect_ChargedAttack(id)
{
	static Float:Origin[3]
	get_position(id, 36.0, 0.0, 0.0, Origin)
	
	// DLight
	message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
	write_byte(27)
	engfunc(EngFunc_WriteCoord, Origin[0])
	engfunc(EngFunc_WriteCoord, Origin[1])
	engfunc(EngFunc_WriteCoord, Origin[2])
	write_byte(20)
	write_byte(200)
	write_byte(0)
	write_byte(0)
	write_byte(10)
	write_byte(60)
	message_end()
	
	// Exp
	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_exp_sprid)	// sprite index
	write_byte(3)	// scale in 0.1's
	write_byte(7)	// framerate
	write_byte(4)	// flags
	message_end()

	emit_sound(id, CHAN_AUTO, falcon_punch[1], VOL_NORM, ATTN_NORM, 0, PITCH_NORM);
	
	// Check Attack Damage
	HamRadiusDamage(id, fm_get_user_weapon_entity(id, CSW_KNIFE), float(CHARGE_EXPRADIUS), DAMAGE_CHARGE, DMG_BURN)
}

stock HamRadiusDamage(id, ent, Float:radius, Float:damage, bits) 
{ 
	static target, Float:origin[3] 
	
	target = -1
	pev(ent, pev_origin, origin) 
     
	while((target = find_ent_in_sphere(target, origin, radius) )) 
	{ 
		static Float:o[3] 
		pev(target, pev_origin, o) 
         
		xs_vec_sub(origin, o, o) 
         
		// Recheck if the entity is in radius 
		if (xs_vec_len(o) > radius) 
			continue 
		
		if(is_user_alive(target))
		{
			if(id == target)
				continue
			if(cs_get_user_team(id) == cs_get_user_team(target))
				continue
		}
         
		Ham_ExecDamageB(target, ent, id, damage * (xs_vec_len(o) / radius), HIT_GENERIC, bits) 
	} 
}  

stock Ham_ExecDamageB(victim, inflictor, attacker, Float:damage, hitgroup, bits)
{
	static const Float:hitgroup_multi[] =
	{
		1.0,  // HIT_GENERIC
		4.0,  // HIT_HEAD
		1.0,  // HIT_CHEST
		1.25, // HIT_STOMACH
		1.0,  // HIT_LEFTARM
		1.0,  // HIT_RIGHTARM
		0.75, // HIT_LEFTLEG
		0.75,  // HIT_RIGHTLEG
		0.0   // HIT_SHIELD
	} 
	
	set_pdata_int(victim, 75, hitgroup, 5)
	ExecuteHamB(Ham_TakeDamage, victim, inflictor, attacker, damage * hitgroup_multi[hitgroup], bits)
} 

public fw_TraceAttack(ent, attacker, Float:Damage, Float:Dir[3], ptr, DamageType)
{
	if(!is_user_alive(attacker))
		return HAM_IGNORED
	if(get_user_weapon(attacker) != CSW_KNIFE || !g_had_balrog9[attacker])
		return HAM_IGNORED
		
	if(g_attack_mode[attacker] == MODE_NORMAL) SetHamParamFloat(3, DAMAGE_SLASH)
	else if(g_attack_mode[attacker] == MODE_CHARGE) SetHamParamFloat(3, DAMAGE_CHARGE)
	
	return HAM_HANDLED
}

public fw_TraceAttack_Post(ent, attacker, Float:Damage, Float:Dir[3], ptr, DamageType)
{
	if(!is_user_alive(attacker))
		return HAM_IGNORED
	if(get_user_weapon(attacker) != CSW_KNIFE || !g_had_balrog9[attacker])
		return HAM_IGNORED
	if(g_attack_mode[attacker] == MODE_CHARGE) 
	{
		if(g_chargeattack[attacker] == 2) // Do KnockBack Here
		{
			static Float:Origin[3]
			pev(attacker, pev_origin, Origin)
			
			hook_ent2(ent, Origin, CHARGE_ATTACK_KNOCKPOWER, 2)
		}
	}
	
	return HAM_HANDLED
}

public fw_EmitSound(id, channel, const sample[], Float:volume, Float:attn, flags, pitch)
{
	if(!equal(sample, "weapons/knife_", 14) || !Knife[id] || cs_get_user_team(id) != CS_TEAM_CT)
		return FMRES_IGNORED
	if(!is_user_connected(id))
		return FMRES_IGNORED
	if(get_user_weapon(id) != CSW_KNIFE || !g_had_balrog9[id])
		return FMRES_IGNORED
		
	if(sample[8] == 'k' && sample[9] == 'n' && sample[10] == 'i')
	{
		if(sample[14] == 's' && sample[15] == 'l' && sample[16] == 'a')
		{
			set_weapons_timeidle(id, NEXTATTACK_MISS)
			set_player_nextattack(id, NEXTATTACK_MISS)
			
			if(g_attack_mode[id] == MODE_CHARGE)
			{
				if(g_chargeattack[id] == 2)
					emit_sound(id, channel, weapon_sound[B9_CHARGE_ATTACK], volume, attn, flags, pitch)
				else
					emit_sound(id, channel, weapon_sound[random_num(B9_SLASH1, B9_SLASH2)], volume, attn, flags, pitch)
			} else emit_sound(id, channel, weapon_sound[random_num(B9_SLASH1, B9_SLASH2)], volume, attn, flags, pitch)
			return FMRES_SUPERCEDE
		}
		if (sample[14] == 'h' && sample[15] == 'i' && sample[16] == 't') // hit
		{
			if (sample[17] == 'w') // wall
			{
				set_weapons_timeidle(id, NEXTATTACK_HIT)
				set_player_nextattack(id, NEXTATTACK_HIT)	
				
				if(g_attack_mode[id] == MODE_CHARGE)
				{
					if(g_chargeattack[id] == 2)
						emit_sound(id, channel, weapon_sound[B9_CHARGE_ATTACK], volume, attn, flags, pitch)
					else
						emit_sound(id, channel, weapon_sound[B9_HITWALL], volume, attn, flags, pitch)
				} else emit_sound(id, channel, weapon_sound[B9_HITWALL], volume, attn, flags, pitch)
				return FMRES_SUPERCEDE
			} else {
				set_weapons_timeidle(id, NEXTATTACK_HIT)
				set_player_nextattack(id, NEXTATTACK_HIT)
				
				if(g_attack_mode[id] == MODE_CHARGE)
				{
					if(g_chargeattack[id] == 2)
						emit_sound(id, channel, weapon_sound[B9_CHARGE_ATTACK], volume, attn, flags, pitch)
					else
						emit_sound(id, channel, weapon_sound[random_num(B9_HIT1, B9_HIT2)], volume, attn, flags, pitch)
				} else emit_sound(id, channel, weapon_sound[random_num(B9_HIT1, B9_HIT2)], volume, attn, flags, pitch)
				return FMRES_SUPERCEDE
			}
		}
		if(sample[14] == 's' && sample[15] == 't' && sample[16] == 'a') // stab
		{
			if(g_chargeattack[id] == 2)
				emit_sound(id, channel, weapon_sound[B9_CHARGE_ATTACK], volume, attn, flags, pitch)
			else
				emit_sound(id, channel, weapon_sound[random_num(B9_HIT1, B9_HIT2)], volume, attn, flags, pitch)
				
			return FMRES_SUPERCEDE
		}
	}
	
	return FMRES_IGNORED
}

public fw_CmdStart(id, uc_handle, seed)
{
	if (!is_user_alive(id)) 
		return
	if(get_user_weapon(id) != CSW_KNIFE)
		return
	if(!g_had_balrog9[id])
		return
	
	static ent
	ent = find_ent_by_owner(-1, "weapon_knife", id)
	
	if(!pev_valid(ent))
		return
	
	static CurButton, OldButton
	
	CurButton = get_uc(uc_handle, UC_Buttons)
	OldButton = (pev(id, pev_oldbuttons) & IN_ATTACK2)
	
	if(CurButton & IN_ATTACK)
	{
		if(get_pdata_float(ent, 46, 4) > 0.0 || get_pdata_float(ent, 47, 4) > 0.0) 
			return
		
		g_attack_mode[id] = MODE_NORMAL
		set_uc(uc_handle, UC_Buttons, CurButton & ~IN_ATTACK2)
	} else {
		if(CurButton & IN_ATTACK2) 
		{
			set_uc(uc_handle, UC_Buttons, CurButton & ~IN_ATTACK2)
			set_uc(uc_handle, UC_Buttons, CurButton & ~IN_ATTACK)
			
			if(OldButton) // Holding This Button
			{
				if(g_charging[id] == 2)
				{
					if(get_pdata_float(ent, 46, 4) > 0.0 || get_pdata_float(ent, 47, 4) > 0.0) 
						return
					
					if(g_charged[id])
					{
						set_weapons_timeidle(id, 99999.0)
						set_player_nextattack(id, 99999.0)
						
						if(pev(id, pev_weaponanim) != BALROG9_ANIM_CHARGE_IDLE2)
							set_weapon_anim(id, BALROG9_ANIM_CHARGE_IDLE2)
					} else {
						set_weapons_timeidle(id, 99999.5)
						set_player_nextattack(id, 9999.5)
						
						if(pev(id, pev_weaponanim) != BALROG9_ANIM_CHARGE_IDLE1)
							set_weapon_anim(id, BALROG9_ANIM_CHARGE_IDLE1)
					}
				}
			}		
			
			if(get_pdata_float(ent, 46, 4) > 0.0 || get_pdata_float(ent, 47, 4) > 0.0) 
				return
			
			remove_task(id+TASK_CHARGE_STARTING)
			remove_task(id+TASK_CHARGING)	
			
			g_attack_mode[id] = MODE_CHARGE
			g_charging[id] = 1
			g_charged[id] = 0
			g_chargeattack[id] = 1
			
			set_weapons_timeidle(id, CHARGE_STARTTIME + 0.25)
			set_player_nextattack(id, CHARGE_STARTTIME + 0.25)
		
			set_weapon_anim(id, BALROG9_ANIM_CHARGE_START)
			emit_sound(id, CHAN_AUTO, falcon_punch[0], VOL_NORM, ATTN_NORM, 0, PITCH_NORM);
			
			set_task(CHARGE_STARTTIME, "Do_HoldCharge", id+TASK_CHARGE_STARTING)
			set_task(CHARGE_TIME, "Do_SetCharge", id+TASK_CHARGING)
		} else {
			if(OldButton) // After Press this Button (no Hold)
			{
				if(g_charging[id] == 2)
				{
					if(g_chargeattack[id])
					{
						ExecuteHamB(Ham_Weapon_SecondaryAttack, ent)
		
						set_weapons_timeidle(id, CHARGE_NEXTATTACK)
						set_player_nextattack(id, CHARGE_NEXTATTACK)
						
						g_charging[id] = 0
						g_charged[id] = 0
						g_chargeattack[id] = 0
						
						remove_task(id+TASK_CHARGE_STARTING)
						remove_task(id+TASK_CHARGING)
					}
				}
			}
		}
	}
}

public Do_SetCharge(id)
{
	id -= TASK_CHARGING
	
	if(!is_user_alive(id)) 
		return
	if(get_user_weapon(id) != CSW_KNIFE)
		return
	if(!g_had_balrog9[id])
		return
		
	g_charging[id] = 2
	g_charged[id] = 1
	g_chargeattack[id] = 2
	
	set_weapons_timeidle(id, 0.25)
	set_player_nextattack(id, 0.25)
						
	set_weapon_anim(id, BALROG9_ANIM_CHARGE_FINISH)	
}

public Do_HoldCharge(id)
{
	id -= TASK_CHARGE_STARTING
	
	if(!is_user_alive(id)) 
		return
	if(get_user_weapon(id) != CSW_KNIFE)
		return
	if(!g_had_balrog9[id])
		return
		
	if(!(pev(id, pev_button) & IN_ATTACK2) && !(pev(id, pev_oldbuttons) & IN_ATTACK2))
	{
		static ent
		ent = find_ent_by_owner(-1, "weapon_knife", id)
	
		if(!pev_valid(ent))
			return		
			
		ExecuteHamB(Ham_Weapon_SecondaryAttack, ent)
		
		set_weapons_timeidle(id, CHARGE_NEXTATTACK)
		set_player_nextattack(id, CHARGE_NEXTATTACK)
		
		g_charging[id] = 0
		g_charged[id] = 0
		g_chargeattack[id] = 0
		
		remove_task(id+TASK_CHARGE_STARTING)
		remove_task(id+TASK_CHARGING)
						
		return
	}
	
	g_charging[id] = 2
	g_chargeattack[id] = 1
	g_charged[id] = 0
		
	set_weapons_timeidle(id, CHARGE_TIME + 0.25)
	set_player_nextattack(id, CHARGE_TIME + 0.25)
		
	set_weapon_anim(id, BALROG9_ANIM_CHARGE_IDLE1)	
}

public fw_TraceLine(Float:vector_start[3], Float:vector_end[3], ignored_monster, id, handle)
{
	if (!is_user_alive(id))
		return FMRES_IGNORED	
	if (get_user_weapon(id) != CSW_KNIFE)
		return FMRES_IGNORED
	if(!g_had_balrog9[id])
		return FMRES_IGNORED
	
	static Float:vecStart[3], Float:vecEnd[3], Float:v_angle[3], Float:v_forward[3], Float:view_ofs[3], Float:fOrigin[3]
	
	pev(id, pev_origin, fOrigin)
	pev(id, pev_view_ofs, view_ofs)
	xs_vec_add(fOrigin, view_ofs, vecStart)
	pev(id, pev_v_angle, v_angle)
	
	engfunc(EngFunc_MakeVectors, v_angle)
	get_global_vector(GL_v_forward, v_forward)

	if(g_attack_mode[id] == MODE_NORMAL)
		xs_vec_mul_scalar(v_forward, ATTACKDIS_SLASH, v_forward)
	else if(g_attack_mode[id] == MODE_CHARGE)
		xs_vec_mul_scalar(v_forward, ATTACKDIS_CHARGE, v_forward)
	
	xs_vec_add(vecStart, v_forward, vecEnd)
	engfunc(EngFunc_TraceLine, vecStart, vecEnd, ignored_monster, id, handle)
	
	return FMRES_SUPERCEDE
}

public fw_TraceHull(Float:vector_start[3], Float:vector_end[3], ignored_monster, hull, id, handle)
{
	if (!is_user_alive(id))
		return FMRES_IGNORED
	if (get_user_weapon(id) != CSW_KNIFE)
		return FMRES_IGNORED
	if(!g_had_balrog9[id])
		return FMRES_IGNORED
	
	static Float:vecStart[3], Float:vecEnd[3], Float:v_angle[3], Float:v_forward[3], Float:view_ofs[3], Float:fOrigin[3]
	
	pev(id, pev_origin, fOrigin)
	pev(id, pev_view_ofs, view_ofs)
	xs_vec_add(fOrigin, view_ofs, vecStart)
	pev(id, pev_v_angle, v_angle)
	
	engfunc(EngFunc_MakeVectors, v_angle)
	get_global_vector(GL_v_forward, v_forward)

	if(g_attack_mode[id] == MODE_NORMAL)
		xs_vec_mul_scalar(v_forward, ATTACKDIS_SLASH, v_forward)
	else if(g_attack_mode[id] == MODE_CHARGE)
		xs_vec_mul_scalar(v_forward, ATTACKDIS_CHARGE, v_forward)
		
	xs_vec_add(vecStart, v_forward, vecEnd)
	engfunc(EngFunc_TraceHull, vecStart, vecEnd, ignored_monster, hull, id, handle)
	
	return FMRES_SUPERCEDE
}

stock get_position(ent, 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(ent, pev_origin, vOrigin)
	pev(ent, pev_view_ofs,vUp) //for player
	xs_vec_add(vOrigin,vUp,vOrigin)
	pev(ent, 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 set_weapons_timeidle(id, Float:TimeIdle)
{
	if(!is_user_alive(id))
		return
		
	new entwpn = fm_get_user_weapon_entity(id, CSW_KNIFE)
	if (pev_valid(entwpn)) 
	{
		set_pdata_float(entwpn, 46, TimeIdle, 4)
		set_pdata_float(entwpn, 47, TimeIdle, 4)
		set_pdata_float(entwpn, 48, TimeIdle + 1.0, 4)
	}
}

stock set_player_nextattack(id, Float:nexttime)
{
	if(!is_user_alive(id))
		return
		
	const m_flNextAttack = 83
	set_pdata_float(id, m_flNextAttack, nexttime, 5)
}

stock set_weapon_anim(id, anim)
{
	if(!is_user_alive(id))
		return
		
	set_pev(id, pev_weaponanim, anim)
	
	message_begin(MSG_ONE_UNRELIABLE, SVC_WEAPONANIM, _, id)
	write_byte(anim)
	write_byte(0)
	message_end()	
}

stock hook_ent2(ent, Float:VicOrigin[3], Float:speed, type)
{
	static Float:fl_Velocity[3]
	static Float:EntOrigin[3]
	
	pev(ent, pev_origin, EntOrigin)
	static Float:distance_f
	distance_f = get_distance_f(EntOrigin, VicOrigin)
	
	new Float:fl_Time = distance_f / speed
	
	VicOrigin[2] -= 36.0
	
	if(type == 1)
	{
		fl_Velocity[0] = ((VicOrigin[0] - EntOrigin[0]) / fl_Time) * 1.5
		fl_Velocity[1] = ((VicOrigin[1] - EntOrigin[1]) / fl_Time) * 1.5
		fl_Velocity[2] = ((VicOrigin[2] - EntOrigin[2]) / fl_Time) * 1.5
	} else if(type == 2) {
		fl_Velocity[0] = ((EntOrigin[0] - VicOrigin[0]) / fl_Time) * 1.5
		fl_Velocity[1] = ((EntOrigin[1] - VicOrigin[1]) / fl_Time) * 1.5
		fl_Velocity[2] = ((EntOrigin[2] - VicOrigin[2]) / fl_Time) * 1.5
	}

	entity_set_vector(ent, EV_VEC_velocity, fl_Velocity)
}
Here is the gxm_shop Inc.

Код за потвърждение: Избери целия код

#if defined _gxm_shop_included
    #endinput
#endif

#define _gxm_shop_included

native gxm_register_gun( const Name[ ], const XP, const Level = 0, const VIP = 0, const Round = 0, const Type[ ] = 0);
native gxm_register_item( const Name[ ], const XP, const Level = 0, const VIP = 0, const Round = 0, const Type[ ] = 0);
native gxm_register_pistol( const Name[ ], const XP, const Level = 0, const VIP = 0, const Round = 0, const Type[ ] = 0);
native gxm_register_knife( const Name[ ], const XP, const Level = 0, const VIP = 0, const Round = 0, const Type[ ] = 0);
native gxm_register_grenade( const Name[ ], const XP, const Level = 0, const VIP = 0, const Round = 0, const Type[ ] = 0);



forward gxm_gun_selected( Player, ItemIndex);
forward gxm_item_selected( Player, ItemIndex);
forward gxm_pistol_selected( Player, ItemIndex);
forward gxm_knife_selected( Player, ItemIndex);
forward gxm_grenade_selected( Player, ItemIndex);

  • Подобни теми
    Отговори
    Преглеждания
     Последно мнение

Обратно към “Заявки за плъгини”

Кой е на линия

Потребители разглеждащи този форум: Google [Bot] и 13 госта