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

Modificari necesare ale pluginurilor

Moderators: Moderatori ajutatori, Moderatori, Echipa eXtreamCS.com

Post Reply
Infamous2017
Membru, skill +1
Membru, skill +1
Posts: 228
Joined: 11 Feb 2017, 12:13
Detinator Steam: Nu
CS Status: Citesc forumul eXtreamCS.com...!
Fond eXtream: 0
Has thanked: 2 times
Contact:

29 May 2020, 00:19

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

here is the code:

Code: Select all

#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], pentru, 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], pentru, 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.

Code: Select all

#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);
RoyalServer
User avatar
levin
Scripter eXtreamCS
Scripter eXtreamCS
Posts: 3844
Joined: 24 Aug 2011, 12:24
Detinator Steam: Da
CS Status:
Detinator server CS: ☯∴
SteamID: riseofevo
Reputatie: Scripter eXtreamCS
Nume anterior: Adryyy
Location: ҳ̸Ҳ̸ҳ
Discord: devilclass
Has thanked: 36 times
Been thanked: 594 times
Contact:

29 May 2020, 14:53

add condition if get_user_team(index)!=your team return handled / 1 - t , 2 - ct \ in forward where gun is selected
Pentru ajutor, faceți cerere bine detaliată, completând și respectând modelul corespunzător.
Nu-mi mai dați cereri doar pentru a mă avea în lista de prieteni.
Dacă te ajut, și mă ignori/etc > te adaug în „foe”.
Aveți grijă la cei ce încearcă să mă copieze sau să dea drept mine..Puteți lua legătura cu mine prin STEAM dacă aveți o problemă/nelămurire în acest caz! Cont de forum am doar aici.
În cazul în care utilizați ceva din ce am postat(ex: aici), e bine să fiți la curent cu modificările aduse și de aici, iar dacă sunt ceva probleme nu ezitați să luați legătura cu mine. Actualizarea unor coduri nu se vor afișa public, doar dacă se găsește ceva critic/urgent de remediat, unele fiind coduri vechi iar unele refăcute chiar recent dar private.
* Nume pe cs1.6: eVoLuTiOn \ Nume vechi: eVo
* Atelierul meu - post2819572.html#p2819572 (închis, click link ca să vedeți de ce)
Post Reply

Return to “Modificari pluginuri”

  • Information