Raised This Month: $ Target: $400
 0% 

Help minigun


Post New Thread Reply   
 
Thread Tools Display Modes
Author Message
M E R T
Junior Member
Join Date: Jan 2019
Old 01-29-2019 , 09:56   Help minigun
Reply With Quote #1

Hello guys please help me..

below code how to add minigun weapon?

i don't give "weapon_m249"

i want to give minigun but how to add this code??

end below minigun plugin have.

Last edited by M E R T; 01-29-2019 at 16:07.
M E R T is offline
OciXCrom
Veteran Member
Join Date: Oct 2013
Location: Macedonia
Old 01-29-2019 , 15:46   Re: Help minigun
Reply With Quote #2

Put your code in [php] or [code] tags in order to make it readable.
__________________
OciXCrom is offline
Send a message via Skype™ to OciXCrom
M E R T
Junior Member
Join Date: Jan 2019
Old 01-29-2019 , 16:07   Re: Help minigun
Reply With Quote #3

This rambo mode code.

Code:
// Credits: Eriurias
#include <amxmodx>
#include <cstrike>
#include <fun>
#include <fakemeta>
#include <hamsandwich>
#include <deathrun_modes>

#pragma semicolon 1

#define PLUGIN "Deathrun Mode: Rambo"
#define VERSION "1.0.0"
#define AUTHOR "Mistrick"

#define MIN_DIFF 8.0
#define MAX_OVERHEAT 200
#define BIG_HEAT 4
#define SMALL_HEAT 2

const XO_CBASEPLAYERWEAPON = 4;
const m_pPlayer = 41;
const m_iClip = 51;

enum (+=100)
{
	TASK_OVERHEAT_TICK = 150
};

enum _:Hooks
{
	Hook_AddToFullPack,
	Hook_CS_Item_CanDrop,
	Hook_Weapon_PrimaryAttack,
	Hook_Spawn,
	Hook_Player_PreThink
};

new HamHook:g_hHooks[Hooks];
new g_bEnabled, g_iModeRambo, g_iCurMode;
new g_iOverHeat[33], Float:g_fOldAngles[33][3];

public plugin_init()
{
	register_plugin(PLUGIN, VERSION, AUTHOR);
	
	DisableHamForward(HamHook:g_hHooks[Hook_CS_Item_CanDrop] = RegisterHam(Ham_CS_Item_CanDrop, "weapon_m249", "Ham_Minigun_CanDrop_Pre", false));
	DisableHamForward(HamHook:g_hHooks[Hook_Weapon_PrimaryAttack] = RegisterHam(Ham_Weapon_PrimaryAttack, "weapon_m249", "Ham_Minigun_PrimaryAttack_Pre", false));
	DisableHamForward(HamHook:g_hHooks[Hook_Spawn] = RegisterHam(Ham_Spawn, "player", "Ham_PlayerSpawn_Post", true));
	DisableHamForward(HamHook:g_hHooks[Hook_Player_PreThink] = RegisterHam(Ham_Player_PreThink, "player", "Ham_Player_PreThink_Pre", false));
	
	register_event("HLTV", "Event_NewRound", "a", "1=0", "2=0");
	register_message(get_user_msgid("CurWeapon"), "Message_CurWeapon");
	
	g_iModeRambo = dr_register_mode
	(
		.Name = "DRM_MODE_RAMBO",
		.Mark = "rambo",
		.RoundDelay = 0,
		.CT_BlockWeapons = 0,
		.TT_BlockWeapons = 1,
		.CT_BlockButtons = 0,
		.TT_BlockButtons = 1,
		.Bhop = 1,
		.Usp = 1,
		.Hide = 0
	);
}
public client_disconnect(id)
{
	remove_task(id + TASK_OVERHEAT_TICK);
}
public Event_NewRound()
{
	DisableHooks();
}
public Ham_PlayerSpawn_Post(id)
{
	if(is_user_alive(id) && cs_get_user_team(id) == CS_TEAM_T)
	{
		give_item(id, "weapon_m249");
		g_iOverHeat[id] = 0;
		set_task(0.1, "Task_OverHeat_Tick", id + TASK_OVERHEAT_TICK, .flags = "b");
	}
}
public Message_CurWeapon(msg, dest, id)
{
	if(g_iCurMode == g_iModeRambo && get_msg_arg_int(1) && get_msg_arg_int(2) == CSW_M249 && cs_get_user_team(id) == CS_TEAM_T)
	{
		set_msg_arg_int(2, ARG_BYTE, CSW_KNIFE);
		set_msg_arg_int(3, ARG_BYTE, -1);
	}
}
public Ham_Minigun_CanDrop_Pre(weapon)
{
	new player = get_pdata_cbase(weapon, m_pPlayer, XO_CBASEPLAYERWEAPON);
	
	if(cs_get_user_team(player) == CS_TEAM_T)
	{
		SetHamReturnInteger(false);
		return HAM_SUPERCEDE;
	}
	return HAM_IGNORED;
}
public Ham_Minigun_PrimaryAttack_Pre(weapon)
{
	new player = get_pdata_cbase(weapon, m_pPlayer, XO_CBASEPLAYERWEAPON);
	
	if(cs_get_user_team(player) != CS_TEAM_T) return HAM_IGNORED;
	
	cs_set_weapon_ammo(weapon, 100);
	
	new Float:angles[3]; pev(player, pev_angles, angles);
	new Float:diff = get_distance_f(angles, g_fOldAngles[player]);
	g_fOldAngles[player] = angles;
	
	g_iOverHeat[player] += (diff < MIN_DIFF) ? BIG_HEAT : SMALL_HEAT;
	
	SendMessage_BarTime2(player, MAX_OVERHEAT / 10, 100 - g_iOverHeat[player] * 100 / MAX_OVERHEAT);
	
	return HAM_IGNORED;
}
public Task_OverHeat_Tick(id)
{
	id -= TASK_OVERHEAT_TICK;
	
	if(g_iOverHeat[id] > 0)
	{
		g_iOverHeat[id]--;
	}
}
public Ham_Player_PreThink_Pre(id)
{
	if(g_iOverHeat[id] > MAX_OVERHEAT)
	{
		set_pev(id, pev_button, pev(id,pev_button) & ~IN_ATTACK);
	}
}
public FM_AddToFullPack_Post(es, e, ent, host, flags, player, pSet)
{
	if(player && host != ent)
	{
		if(cs_get_user_team(host) == CS_TEAM_T && cs_get_user_team(ent) == CS_TEAM_CT)
		{
			set_es(es, ES_RenderAmt, false);
			set_es(es, ES_RenderMode, kRenderTransAlpha);
		}
	}
}
public dr_selected_mode(id, mode)
{
	if(g_iCurMode == g_iModeRambo)
	{
		for(new i = 1; i < 33; i++)
		{
			remove_task(i + TASK_OVERHEAT_TICK);
			if(is_user_alive(i)) SendMessage_BarTime2(i, 0, 100);
		}
		DisableHooks();
	}
	
	g_iCurMode = mode;
	
	if(mode == g_iModeRambo)
	{
		EnableHooks();
		
		give_item(id, "weapon_m249");
		g_iOverHeat[id] = 0;
		set_task(0.1, "Task_OverHeat_Tick", id + TASK_OVERHEAT_TICK, .flags = "b");
	}
}
EnableHooks()
{
	g_bEnabled = true;
	
	g_hHooks[Hook_AddToFullPack] = HamHook:register_forward(FM_AddToFullPack, "FM_AddToFullPack_Post", true);
	for(new i = Hook_CS_Item_CanDrop; i < Hooks; i++)
	{
		EnableHamForward(g_hHooks[i]);
	}
}
DisableHooks()
{
	if(g_bEnabled)
	{
		g_bEnabled = false;
		
		unregister_forward(FM_AddToFullPack, _:g_hHooks[Hook_AddToFullPack], true);
		for(new i = Hook_CS_Item_CanDrop; i < Hooks; i++)
		{
			DisableHamForward(g_hHooks[i]);
		}
	}
}
stock SendMessage_BarTime2(id, duration, startpercent)
{
	static BarTime2; if(!BarTime2) BarTime2 = get_user_msgid("BarTime2");
	
	message_begin(MSG_ONE, BarTime2, .player = id);
	write_short(duration);
	write_short(startpercent);
	message_end();
}

This minigun code:

Code:
#include <amxmodx>
#include <engine>
#include <fakemeta_util>
#include <cstrike>
#include <hamsandwich>
#include <amxmisc>

#define MAX_PLAYERS 32
#define MAX_BLOOD_DISTANCE	64
#define LOADUP_TIME		0.75
#define SHUTDOWN_TIME	1.7
#define SHAKE_FORCE		-5.0 //(must be negative value)
new const GUNSHOT_DECALS[] = {41, 42, 43, 44, 45}	// Gunshot decal list
new Float:cl_pushangle[MAX_PLAYERS + 1][3]
// Plugin information
new const PLUGIN[] = "WPN Minigun"
new const VERSION[] = "1.31"
new const AUTHOR[] = "CLLlAgOB"
// other
new bool:super_p_m249[33], m249, bool:atk2[33], bool:atk1[33],
bool:delay[33],bool:oldCLIP[33], clipp[33],clipstart,
mcost,msg[128],bool:frstCLIP[33],msgtext,g_MaxPlayers, 
Float:g_lastShot[33], Float:g_nextSound[33], g_plAction[33],
bool:canfire[33],oneround,only_adminCB,MsgSayText
// Blood
new g_blood
new g_bloodspray
// Models
new P_MODEL[] = "models/wpnmod/m134/p_minigun.mdl"
new V_MODEL[] = "models/wpnmod/m134/v_minigun.mdl"
new W_MODEL[] = "models/wpnmod/m134/w_minigun.mdl"
// Sounds
new m_SOUND[][] = {"wpnmod/minigun/hw_shoot1.wav", "wpnmod/minigun/hw_spin.wav", "wpnmod/minigun/hw_spinup.wav", "wpnmod/minigun/hw_spindown.wav"}
new g_noammo_sounds[][] = {"weapons/dryfire_rifle.wav"}

enum {
	anim_idle,
	anim_idle2,
	anim_gentleidle,
	anim_stillidle,
	anim_draw,
	anim_holster,
	anim_spinup,
	anim_spindown,
	anim_spinidle,
	anim_spinfire,
	anim_spinidledown
}

// Types
enum {
	act_none,
	act_load_up,
	act_run
}

public plugin_init() {
	register_plugin(PLUGIN, VERSION, AUTHOR)
	register_dictionary("minigun.txt")
	MsgSayText = get_user_msgid("SayText")
	clipstart = 	register_cvar("amx_ammo_mini","50")
	m249 = 			register_cvar("amx_speed_mini","0.9")
	oneround = 		register_cvar("amx_oneround","0")
	mcost = 		register_cvar("amx_cost_mini","16000")
	only_adminCB =	register_cvar("amx_only_adm_buy","0")
	register_forward(FM_PlayerPreThink,"PreThink")
	new weapon_name[20], wpn = CSW_M249
	get_weaponname( wpn , weapon_name, charsmax(weapon_name))
	RegisterHam(Ham_Weapon_PrimaryAttack, weapon_name, "fw_primary_attack")
	RegisterHam(Ham_Weapon_PrimaryAttack, weapon_name, "fw_primary_attack_post",1)
	register_forward(FM_StartFrame, "fwd_StartFrame")
	register_forward(FM_EmitSound,"fwd_emitsound")
	register_forward(FM_UpdateClientData, "UpdateClientData_Post", 1)
	register_event("CurWeapon","event_curweapon","be", "1=1")
	register_event("DeathMsg","unminigun","a")
	register_clcmd("say /minigun","buymini")
	register_concmd("amx_minigun_give", "cmdMinigun_give", ADMIN_LEVEL_A, "<@all or name/id> <ammo>") 
	register_clcmd("drop","dropcmd")
	msgtext = get_user_msgid("StatusText")
	g_MaxPlayers = get_maxplayers()
	//events
	register_logevent("event_start", 2, "1=Round_Start")
	register_event("TextMsg", "fwEvGameWillRestartIn", "a", "2=#Game_will_restart_in")
	register_event("HLTV", "event_start_freezetime", "a", "1=0", "2=0")
}

public plugin_precache() {
	precache_model(P_MODEL)
	precache_model(V_MODEL)
	precache_model(W_MODEL)
	precache_sound(m_SOUND[0])
	precache_sound(m_SOUND[1])
	precache_sound(m_SOUND[2])
	precache_sound(m_SOUND[3])
	g_blood = precache_model("sprites/blood.spr")
	g_bloodspray = precache_model("sprites/bloodspray.spr")
}
public unminigun(){
	new id = read_data(2) 
	if(super_p_m249[id] && !is_user_alive(id)) {
		new Float:Aim[3],Float:origin[3]
		VelocityByAim(id, 64, Aim)
		entity_get_vector(id,EV_VEC_origin,origin)
		
		origin[0] += Aim[0]
		origin[1] += Aim[1]
		
		new minigun = create_entity("info_target")
		entity_set_string(minigun,EV_SZ_classname,"minigun")
		entity_set_model(minigun,W_MODEL)	
		
		entity_set_size(minigun,Float:{-2.0,-2.0,-2.0},Float:{5.0,5.0,5.0})
		entity_set_int(minigun,EV_INT_solid,1)
		
		entity_set_int(minigun,EV_INT_movetype,6)
		entity_set_int(minigun, EV_INT_iuser1, clipp[id])
		entity_set_vector(minigun,EV_VEC_origin,origin)
		super_p_m249[id] = false
		ammo_hud(id,0)
		return PLUGIN_HANDLED
	}
	return PLUGIN_CONTINUE
}

public cmdMinigun_give(id, level, cid) {
	if (!cmd_access(id, level, cid, 3)) {
		return PLUGIN_HANDLED
	}
	
	new arg[32], arg2[8], name2[32], bool:ammo, argument2
	read_argv(1,arg,31)
	read_argv(2,arg2,7)
	argument2 = str_to_num(arg2)
	if(argument2>0) ammo = false
	else argument2 = get_pcvar_num(clipstart)
	if ( equali(arg,"@all") ){
		new plist[32],pnum
		get_players(plist,pnum,"a")
		if (pnum==0)
			{
			console_print(id,"[Minigun] This client is invalid")
			return PLUGIN_HANDLED
		}
		for (new i=0; i<pnum; i++)
			{
			give_weapon(plist[i], argument2, ammo)
			client_print(plist[i], print_chat, "[Minigun] %L", LANG_PLAYER, "MINIGUN_ADMIN_GIVE_ALL",argument2)
		}
	}
	else
	{
		get_user_name(id,name2,31)
		new player = cmd_target(id,arg,7)
		if (!player)
			{
			console_print(id,"[Minigun] Give Minigun Failed") 
			return PLUGIN_HANDLED
		}
		new name[32]
		get_user_name(player,name,31)
		give_weapon(player, argument2, ammo) 
		client_print(0, print_chat, "[Minigun] %L", LANG_PLAYER,"MINIGUN_ADMIN_GIVE",name,argument2)
		return PLUGIN_HANDLED
	}
	return PLUGIN_HANDLED
}

public buymini(id) {
	if ((!(get_user_flags(id) & ADMIN_IMMUNITY) || !(get_user_flags(id) & ADMIN_RESERVATION)) && get_pcvar_num(only_adminCB)) {
		format(msg,256,"[Minigun] %L", LANG_PLAYER,"MINIGUN_ADMIN_BUY")
		message_begin(MSG_ONE,MsgSayText,{0,0,0},id)
		write_byte(id)
		write_string(msg)
		message_end()
		return PLUGIN_HANDLED
	}
	new money = cs_get_user_money(id)
	new price = get_pcvar_num(mcost)
	if(!is_user_alive(id))
		
		client_print(id, print_chat, "[Minigun] %L", LANG_PLAYER,"MINIGUN_ALIVE")
	else if(super_p_m249[id])
		client_print(id, print_chat, "[Minigun] %L", LANG_PLAYER,"MINIGUN_ALREADY")
	else if(money < price)
		client_print(id, print_chat, "[Minigun] %L", LANG_PLAYER,"MINIGUN_NO_MONEY")
	else{		
		cs_set_user_money(id, money - price)  
		give_weapon(id, 0, 1)
		client_print(id, print_chat, "[Minigun] %L", LANG_PLAYER,"MINIGUN_BUY",price) 
	}
	return PLUGIN_HANDLED
}

public dropcmd(id) {
	new weapon = get_user_weapon(id)
	if(super_p_m249[id] && weapon == CSW_M249 && is_user_alive(id)) {
		new Float:Aim[3],Float:origin[3]
		VelocityByAim(id, 64, Aim)
		entity_get_vector(id,EV_VEC_origin,origin)
		
		origin[0] += Aim[0]
		origin[1] += Aim[1]
		
		new minigun = create_entity("info_target")
		entity_set_string(minigun,EV_SZ_classname,"minigun")
		entity_set_model(minigun,W_MODEL)	
		
		entity_set_size(minigun,Float:{-2.0,-2.0,-2.0},Float:{5.0,5.0,5.0})
		entity_set_int(minigun,EV_INT_solid,1)
		
		entity_set_int(minigun,EV_INT_movetype,6)
		entity_set_int(minigun, EV_INT_iuser1, clipp[id])
		entity_set_vector(minigun,EV_VEC_origin,origin)
		super_p_m249[id] = false
		canfire[id] = false
		remowegun(id)
		ammo_hud(id,0)
		g_plAction[id] = false
		return PLUGIN_HANDLED
	} 
	return PLUGIN_CONTINUE
}

public pfn_touch(ptr, ptd) {
	if(is_valid_ent(ptr)) {
		new classname[32]
		entity_get_string(ptr,EV_SZ_classname,classname,31)
		
		if(equal(classname, "minigun")) {
			if(is_valid_ent(ptd)) {
				new id = ptd
				if(id > 0 && id < 34) {
					if(!super_p_m249[id] && is_user_alive(id)) {
						give_weapon(id,entity_get_int(ptr, EV_INT_iuser1), 0)
						canfire[id] = true
						remove_entity(ptr)
					}
				}
			}
		}
	}
}

public remove_miniguns() {
	new nextitem  = find_ent_by_class(-1,"minigun")
	while(nextitem) {
		remove_entity(nextitem)
		nextitem = find_ent_by_class(-1,"minigun")
	}
	return PLUGIN_CONTINUE
}
public event_start_freezetime(){
	remove_miniguns()
	static iPlayers[32], iPlayersNum, i 
	get_players(iPlayers, iPlayersNum, "a")
	
	if(!get_pcvar_num(only_adminCB)){
		for (i = 0; i < iPlayersNum; ++i){
			if(!super_p_m249[iPlayers[i]]){
				set_task(random_float(0.1,1.0),"msghelp",iPlayers[i])
			}
		}
	}
	if(get_pcvar_num(oneround)){
		for (i = 0; i < iPlayersNum; ++i){
			if(super_p_m249[iPlayers[i]]){
				super_p_m249[iPlayers[i]] = false 
				remowegun(iPlayers[i])
			}
		}
	} else { 
		for (i = 0; i < iPlayersNum; ++i){
			g_plAction[iPlayers[i]] = false
			canfire[iPlayers[i]] = false
			frstCLIP[iPlayers[i]] = true	
			set_task(0.1,"event_curweapon",iPlayers[i])
			}
	}
}
// remove gun M249 and save all guns
public remowegun(id) { 
	new wpnList[32] 
	new number,weapname[24]
	get_user_weapons(id,wpnList,number) 
	fm_strip_user_weapons(id)
	for (new i = 0;i < number ;i++) { 
		if (wpnList[i] != CSW_M249) {
		get_weaponname(wpnList[i], weapname, 23)
		fm_give_item(id,weapname)
		}
	}
} 

public msghelp(id){
	client_print(id, print_chat, "[Minigun] %L", LANG_PLAYER,"MINIGUN_FOR_BUY")
	client_print(id, print_chat, "[Minigun] %L", LANG_PLAYER,"MINIGUN_PRICE",get_pcvar_num(mcost))
}

public event_start(){
	static iPlayers[32], iPlayersNum, i 
	get_players(iPlayers, iPlayersNum, "a") 
	for (i = 0; i < iPlayersNum; ++i)
		canfire[iPlayers[i]] = true
}



public fwEvGameWillRestartIn() { 
	static iPlayers[32], iPlayersNum, i 
	get_players(iPlayers, iPlayersNum, "a") 
	for (i = 0; i < iPlayersNum; ++i) 
		super_p_m249[iPlayers[i]] = false
}
public client_connect(id){
	canfire[id]= false
	super_p_m249[id] = false
}

//block sound no ammo in atack
public fwd_emitsound(id, channel, sample[], Float:volume, Float:attn, flag, pitch)
{	
	if(!is_user_connected(id) || !is_user_alive(id))
		return FMRES_IGNORED
	new clip, ammo, weapon = get_user_weapon(id, clip, ammo)
	if(equal(sample, g_noammo_sounds[0]) && super_p_m249[id] && weapon == CSW_M249) 
		{
		return FMRES_SUPERCEDE
		}	
	return FMRES_IGNORED
}

//give wpn
public give_weapon(id, ammo, frst){
	super_p_m249[id] = true
	fm_give_item(id,"weapon_m249")
	canfire[id] = true
	clipp[id] = ammo
	frstCLIP[id] = false
	if(frst) frstCLIP[id] = true
	
}

//set models
public event_curweapon(id){
	if(!is_user_alive(id) || !is_user_connected(id) || is_user_bot(id)) 
		return PLUGIN_CONTINUE		
	new weapon1[32]
	new clip, ammo, weapon = get_user_weapon(id, clip, ammo)
	if((super_p_m249[id]) && (weapon == CSW_M249)){
		entity_set_string(id,EV_SZ_viewmodel,V_MODEL)
		entity_set_string(id,EV_SZ_weaponmodel,P_MODEL)
		new Gun = read_data(2)
		get_weaponname(Gun,weapon1,31)
		new Ent = fm_find_ent_by_owner(-1,weapon1,id)	
		new Float:N_Speed
		if(Ent)
			{
			N_Speed = get_pcvar_float(m249)
			new Float:Delay = get_pdata_float( Ent, 46, 4) * N_Speed	
			if (Delay > 0.0){
				set_pdata_float( Ent, 46, Delay, 4)
			}
		}
		ammo_hud(id, 1)
	} 
	else ammo_hud(id, 0)
	if((super_p_m249[id]) && (weapon != CSW_M249)) g_plAction[id] = false
	return PLUGIN_CONTINUE
 }

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

public PreThink(id){
	if(!super_p_m249[id]) return FMRES_HANDLED
	if(!canfire[id]){
		atk1[id] = false
		atk2[id] = false
		return FMRES_HANDLED
	}
	new weapon = get_user_weapon(id)
	if(weapon == CSW_M249){
		new buttons = entity_get_int(id,EV_INT_button)
		if(buttons&IN_ATTACK){ 
			fire_mode(id, 0)
		}
		else if(buttons&IN_ATTACK2){ 
			fire_mode(id, 1)
		} 
		if(g_plAction[id] != act_run){
				new weaponid, clip, ammo
				weaponid = get_user_weapon(id, clip, ammo)
				new ent = get_weapon_ent(id,weaponid)
				if(frstCLIP[id]){
					clipp[id] = get_pcvar_num(clipstart)
					frstCLIP[id] = false
				}
				oldCLIP[id] = true
				if(clip > 0 ){
					cs_set_weapon_ammo(ent, 0)
					cs_set_user_bpammo(id, weaponid,0)
				}
			}
		if(g_plAction[id] == act_run){
			new weaponid, clip, ammo
			weaponid = get_user_weapon(id, clip, ammo)
			new ent = get_weapon_ent(id,weaponid)
			if(oldCLIP[id]){
				clip = clipp[id]
				cs_set_weapon_ammo(ent, clip)
				cs_set_user_bpammo(id, weaponid,0)
				oldCLIP[id] = false
			}
			clipp[id] = clip
		}
	}
	return FMRES_HANDLED
 }

 //marks on hit
 public native_gi_get_gunshot_decal()
{
	return GUNSHOT_DECALS[random_num(0, sizeof(GUNSHOT_DECALS) - 1)]
}

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


//block anim standart wpn 
public UpdateClientData_Post( id, sendweapons, cd_handle ){
	if ( !is_user_alive(id) ) return FMRES_IGNORED;
	new weapon = get_user_weapon(id)
	if(weapon == CSW_M249 && super_p_m249[id]) set_cd(cd_handle, CD_flNextAttack, halflife_time() + 0.001 );      
	return FMRES_HANDLED;
}

// delay play sound and anim
public delaysound(id){
	delay[id] = false
}

// in fire
fire_mode(id, type) {
	static Float:gtime
	gtime = get_gametime()
	g_lastShot[id] = gtime
	
	if(g_nextSound[id] <= gtime && canfire[id]) {
		switch(g_plAction[id]) {
			case act_none: {
				native_playanim(id, anim_spinup)
				emit_sound(id, CHAN_WEAPON, m_SOUND[2], 1.0, ATTN_NORM, 0, PITCH_NORM)
				g_nextSound[id] = gtime + LOADUP_TIME
				g_plAction[id] = act_load_up
			}
			case act_load_up: {
				g_nextSound[id] = gtime
				g_plAction[id] = act_run
			}
		}
	}
	
	if(g_plAction[id] == act_run) {
		new clip
		get_user_weapon(id, clip)
		if(type == 0 && clipp[id]>0){
			if(clip == clipp[id]-1){
				if(clipp[id]!=0){ 
					emsnd(id)
				}
					
			}
		} 
		else {
			if(!delay[id]) {
				ammo_hud(id, 1)
				emit_sound(id, CHAN_WEAPON, m_SOUND[1], 1.0, ATTN_NORM, 0, PITCH_NORM)
				native_playanim(id, anim_spinidle)
				set_task(0.1,"delaysound",id)
				delay[id] = true
			}
		}
	}
}

//play sounds and set marks and set ammo clip on monitor
public emsnd(id){
	emit_sound(id, CHAN_WEAPON, m_SOUND[0], 1.0, ATTN_NORM, 0, PITCH_NORM)
	native_playanim(id, anim_spinfire)
	testbulet(id)
	ammo_hud(id, 1)
}

//sound and anim
public fwd_StartFrame() {
	static Float:gtime, id
	
	gtime = get_gametime()
	
	for(id = 1; id < g_MaxPlayers; id++) {
		if(g_plAction[id] != act_none) {
			
			if((!(pev(id, pev_button) & IN_ATTACK) && g_lastShot[id] + 0.2 < gtime)) {
				native_playanim(id, anim_spinidledown)
				emit_sound(id, CHAN_WEAPON, m_SOUND[3], 1.0, ATTN_NORM, 0, PITCH_NORM)
				g_nextSound[id] = gtime + SHUTDOWN_TIME
				g_plAction[id] = act_none
			}
		}
	}
}
// No recoil stuff
public fw_primary_attack(ent)
{

	new id = pev(ent,pev_owner)
	if(super_p_m249[id])
		pev(id,pev_punchangle,cl_pushangle[id])
	return HAM_IGNORED
}

public fw_primary_attack_post(ent)
{
	new id = pev(ent,pev_owner)
	if(super_p_m249[id]){
		new Float:push[3]
		pev(id,pev_punchangle,push)
		xs_vec_mul_scalar(push,0.0,push)
		xs_vec_add(push,cl_pushangle[id],push)
		set_pev(id,pev_punchangle,push)
	}
	return HAM_IGNORED
}
// show ammo clip
public ammo_hud(id, show) {
	new AmmoHud[65]
	if (show) {
		new clip = clipp[id]
		format(AmmoHud, 64, "Ammo: %i", clip)
		message_begin(MSG_ONE, msgtext, {0,0,0}, id)
		write_byte(0)
		write_string(AmmoHud)
		message_end()
	
	 }else {
		
		message_begin(MSG_ONE, get_user_msgid("StatusText"), {0,0,0}, id)
		write_byte(0)
		write_string("")
		message_end()
		
	}
	
}
//get weapon id
stock get_weapon_ent(id,wpnid=0,wpnName[]="")
{
	// who knows what wpnName will be
	static newName[24];

	// need to find the name
	if(wpnid) get_weaponname(wpnid,newName,23);

	// go with what we were told
	else formatex(newName,23,"%s",wpnName);

	// prefix it if we need to
	if(!equal(newName,"weapon_",7))
		format(newName,23,"weapon_%s",newName);

	return fm_find_ent_by_owner(get_maxplayers(),newName,id);
}
M E R T is offline
Reply



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 07:32.


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