Solved crow 7

Unpaid Requests, Public Plugins
Post Reply
czirimbolo
Veteran Member
Veteran Member
Poland
Posts: 598
Joined: 7 years ago
Contact:

crow 7

#1

Post by czirimbolo » 5 years ago

Hello, I converted this but have small problem. Gun is in my menu but after buying gun dont show up

Code: Select all

//Plugin Coded by YunusReyiz..

#include <zombie_escape>
#include <engine>
#include <fakemeta_util>
#include <fun>
#include <xs>
#include <cstrike>


#define write_coord_f(%1)	engfunc(EngFunc_WriteCoord,%1)

#define Reload_Time	1.0
#define Reload_Time7	1.4
#define CROW_Time7	1.5
#define Normal_Time7	3.3

#define	CSW_CROW7	CSW_M249
#define	weapon_crow7	"weapon_m249"
#define	oldevent_crow7	"events/m249.sc"
#define	oldmodel_crow7 	"models/w_m249.mdl"

#define CROW7_V_Model 	"models/v_crow7.mdl"
#define CROW7_P_Model 	"models/p_crow7.mdl"
#define CROW7_W_Model 	"models/w_crow7.mdl"
#define C7_Fire_Sound 	"weapons/crow7-1.wav"

#define	CROW7_NAME "CROW-7"
#define	CROW7_COST	22
#define CROW7_CLIP 100
#define CROW7_AMMO 200
#define CROW7_RECOIL 1.0
#define CROW7_DAMAGE 1.0

new mode[33]
enum
{
	reloading = 0,
	normal,
	crow
}

new const GUNSHOT_DECALS[] = { 41, 42, 43, 44, 45 }

//CROW-7
new g_has_crow7[33], g_event_crow7, g_crow7_zoom[33], Float:g_flNextUseTime[33]

new g_isprimary, Float:recoil[33], g_crow7
new g_clip_ammo[33], g_clip[33], oldweap[33]

public plugin_init()
{
	register_plugin("[Weapon]: CROW Weapons [Beta Version]", "1.0", "YunusReyiz")
	register_event("CurWeapon","CurrentWeapon","be","1=1")
	
	register_forward(FM_SetModel, "SetModel")
	register_forward(FM_UpdateClientData, "UpdateClientData_Post", 1)
	register_forward(FM_PlaybackEvent, "PlaybackEvent")
	
	RegisterHam(Ham_TraceAttack, "worldspawn", "TraceAttack", 1)
	RegisterHam(Ham_TraceAttack, "player", "TraceAttack")
	
	RegisterHam(Ham_Item_AddToPlayer, weapon_crow7, "AddToPlayer")
	
	RegisterHam(Ham_Weapon_Reload, weapon_crow7, "Reload7")
	RegisterHam(Ham_Weapon_Reload, weapon_crow7, "Reload_Post7", 1)
	
	RegisterHam(Ham_Weapon_PrimaryAttack, weapon_crow7, "PrimaryAttack7")
	RegisterHam(Ham_Weapon_PrimaryAttack, weapon_crow7, "PrimaryAttack_Post7", 1)
	
	RegisterHam(Ham_Item_PostFrame, weapon_crow7, "ItemPostFrame7")
	
	RegisterHam(Ham_Item_Holster, weapon_crow7, "HolsterPost", 1)
	
	g_crow7 = ze_register_item("CROW7", 150, 0)
	register_forward(FM_CmdStart, "CmdStart")
}

public plugin_precache()
{	
	precache_model(CROW7_V_Model)
	precache_model(CROW7_P_Model)
	precache_model(CROW7_W_Model)
	precache_sound(C7_Fire_Sound)
	
	register_forward(FM_PrecacheEvent, "PrecacheEvent_Post", 1)
}

public ze_select_item_pre(id, itemid)
{
    // Return Available and we will block it in Post, So it dosen't affect other plugins
    if (itemid != g_crow7)
        return ZE_ITEM_AVAILABLE
   
    // Available for Humans only, So don't show it for zombies
    if (ze_is_user_zombie(id))
        return ZE_ITEM_DONT_SHOW
   
    return ZE_ITEM_AVAILABLE
}

public ze_select_item_post(id, itemid)
{
	if (itemid != g_crow7) 
		give_crow7(id)
}

public ze_user_humanized(id)
{
	client_connect(id)
}
public ze_user_infected(id, iInfector)
{
	client_connect(id)
}


public TraceAttack(ent, attacker, Float:Damage, Float:fDir[3], ptr, iDamageType)
{
	if(!is_user_alive(attacker))
		return

	new g_currentweapon = get_user_weapon(attacker)

	if((g_currentweapon != CSW_CROW7) 
	|| (g_currentweapon == CSW_CROW7 && !g_has_crow7[attacker])) return;
	static Float:flEnd[3]
	get_tr2(ptr, TR_vecEndPos, flEnd)
	
	if(ent)
	{
		message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
		write_byte(TE_DECAL)
		write_coord_f(flEnd[0])
		write_coord_f(flEnd[1])
		write_coord_f(flEnd[2])
		write_byte(GUNSHOT_DECALS[random_num (0, sizeof GUNSHOT_DECALS -1)])
		write_short(ent)
		message_end()
	}
	else
	{
		message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
		write_byte(TE_WORLDDECAL)
		write_coord_f(flEnd[0])
		write_coord_f(flEnd[1])
		write_coord_f(flEnd[2])
		write_byte(GUNSHOT_DECALS[random_num (0, sizeof GUNSHOT_DECALS -1)])
		message_end()
	}
	if(g_has_crow7[attacker])
	{
		SetHamParamFloat(3, Damage * CROW7_DAMAGE)
	}
	
	message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
	write_byte(TE_GUNSHOTDECAL)
	write_coord_f(flEnd[0])
	write_coord_f(flEnd[1])
	write_coord_f(flEnd[2])
	write_short(attacker)
	write_byte(GUNSHOT_DECALS[random_num (0, sizeof GUNSHOT_DECALS -1)])
	message_end()
}

public PrecacheEvent_Post(type, const name[])
{
	if (equal(oldevent_crow7, name)) g_event_crow7 = get_orig_retval()
}

public client_connect(id)
{
	g_crow7_zoom[id] = 0
	g_has_crow7[id] = 0
}

public CmdStart(id, uc_handle, seed)
{
	if(!g_has_crow7[id])
		return

	if(!is_user_alive(id))
		return
		
	new iButtons = get_uc(uc_handle, UC_Buttons)

	if((iButtons & IN_ATTACK2) && !(pev(id, pev_oldbuttons) & IN_ATTACK2))
	{
		new szClip, szAmmo
		new szWeapID = get_user_weapon(id, szClip, szAmmo)
		
		if(szWeapID == CSW_CROW7 && g_has_crow7[id] && !g_crow7_zoom[id] == true)
		{
			g_crow7_zoom[id] = 1
			cs_set_user_zoom(id, CS_SET_AUGSG552_ZOOM, 1)
			emit_sound(id, CHAN_ITEM, "weapons/zoom.wav", 0.20, 2.40, 0, 100)
		}
		else if(szWeapID == CSW_CROW7 && g_has_crow7[id] && g_crow7_zoom[id])
		{
				g_crow7_zoom[id] = false
				cs_set_user_zoom(id, CS_RESET_ZOOM, 0)	
		}
	}
}

public SetModel(ent, model[])
{
	if(!is_valid_ent(ent))
		return FMRES_IGNORED
	
	static szcn[33]
	entity_get_string(ent, EV_SZ_classname, szcn, charsmax(szcn))
		
	if(!equal(szcn, "weaponbox"))
		return FMRES_IGNORED
	
	static own
	
	own = entity_get_edict(ent, EV_ENT_owner)
	//CROW-7 w_model
	if(equal(model, oldmodel_crow7))
	{
		static id
		
		id = find_ent_by_owner(-1, weapon_crow7, ent)
	
		if(!is_valid_ent(id))
			return FMRES_IGNORED
	
		if(g_has_crow7[own])
		{
			entity_set_int(id, EV_INT_impulse, 3315784)
			
			g_has_crow7[own] = false
			
			entity_set_model(ent, CROW7_W_Model)
			
			return FMRES_SUPERCEDE
		}
	}

	return FMRES_IGNORED
}

//Added CROW-7
public give_crow7(id)
{
	new iWep2 = give_item(id, weapon_crow7)
	if( iWep2 > 0 )
	{
		cs_set_weapon_ammo(iWep2, CROW7_CLIP)
		cs_set_user_bpammo (id, CSW_CROW7, CROW7_AMMO)	
		set_anim(id, 6)
		set_pdata_float(id, 83, 1.0, 5)
	}
	g_has_crow7[id] = true
}

public AddToPlayer(ent, id)
{
	if(!is_valid_ent(ent) || !is_user_connected(id))
		return HAM_IGNORED
	
	if(entity_get_int(ent, EV_INT_impulse) == 3315784)
	{
		g_has_crow7[id] = true
		
		entity_set_int(ent, EV_INT_impulse, 0)
	}

	return HAM_IGNORED
}

public CurrentWeapon(id) replace_weapon_models(id, read_data(2))

replace_weapon_models(id, weaponid)
{
	switch (weaponid)
	{
		case CSW_CROW7:
		{
			if (ze_is_user_zombie(id))
				return
			if(g_has_crow7[id])
			{
				set_pev(id, pev_viewmodel2, CROW7_V_Model)
				set_pev(id, pev_weaponmodel2, CROW7_P_Model)
				if(oldweap[id] != CSW_CROW7) 
				{
					set_anim(id, 6)
					set_pdata_float(id, 83, 1.0, 5)
				}
			}
		}
	}
	oldweap[id] = weaponid
}

public UpdateClientData_Post(id, SendWeapons, CD_Handle)
{
	//if(!is_user_alive(id) || (get_user_weapon(id) != CSW_CROW1 || !g_has_crow1[id]))
	if(!is_user_alive(id) 
	|| ((get_user_weapon(id) != CSW_CROW7) 
	|| (get_user_weapon(id) == CSW_CROW7 && !g_has_crow7[id])))
		return FMRES_IGNORED
	
	set_cd(CD_Handle, CD_flNextAttack, halflife_time () + 0.001)
	return FMRES_HANDLED
}

public fwPlaybackEvent(flags, invoker, eventid, Float:delay, Float:origin[3], Float:angles[3], Float:fparam1, Float:fparam2, iParam1, iParam2, bParam1, bParam2)
{
	if ((eventid != g_event_crow7) || !g_isprimary)
		return FMRES_IGNORED
	if (!(1 <= invoker <= get_maxplayers()))
	return FMRES_IGNORED

	playback_event(flags | FEV_HOSTONLY, invoker, eventid, delay, origin, angles, fparam1, fparam2, iParam1, iParam2, bParam1, bParam2)
	return FMRES_SUPERCEDE
}

//CROW-7 PrimaryAttack and Post

public PrimaryAttack7(id)
{
	new ent = get_pdata_cbase(id, 41, 4)
	
	if (!g_has_crow7[ent])
		return
	
	g_isprimary = 1
	
	g_clip_ammo[ent] = cs_get_weapon_ammo(id)

}

public PrimaryAttack_Post7(id)
{
	g_isprimary = 0
	new ent = get_pdata_cbase(id, 41, 4)
	
	new szClip, szAmmo
	get_user_weapon(ent, szClip, szAmmo)
	
	if(!is_user_alive(ent))
		return
		
	if(g_has_crow7[ent])
	{
		if (!g_clip_ammo[ent])
			return
		
		new Float:push[3]
		pev(ent,pev_punchangle,push)
		xs_vec_sub(push,recoil[ent],push)
		
		xs_vec_mul_scalar(push,CROW7_RECOIL,push)
		xs_vec_add(push,recoil[ent],push)
		set_pev(ent,pev_punchangle,push)
		
		emit_sound(ent, CHAN_WEAPON, C7_Fire_Sound, VOL_NORM, ATTN_NORM, 0, PITCH_NORM)
		set_anim(ent, 1)
	}
}

stock set_anim(const Player, const Sequence)
{
	set_pev(Player, pev_weaponanim, Sequence)
	
	message_begin(MSG_ONE_UNRELIABLE, SVC_WEAPONANIM, .player = Player)
	write_byte(Sequence)
	write_byte(pev(Player, pev_body))
	message_end()
}

public ItemPostFrame7(wpn, uc_handle) 
{
	new id = pev(wpn, pev_owner)
	if (!is_user_connected(id))
		return HAM_IGNORED

	if (!g_has_crow7[id])
		return HAM_IGNORED

	static iClipExtra
     
	iClipExtra = CROW7_CLIP
	new Float:flNextAttack = get_pdata_float(id, 83, 5)

	new iBpAmmo = cs_get_user_bpammo(id, CSW_CROW7)
	new iClip = get_pdata_int(wpn, 51, 4)

	new fInReload = get_pdata_int(wpn, 54, 4)
	
	if( fInReload && flNextAttack <= 0.0 )
	{	if(mode[id] == reloading && get_gametime() - Reload_Time && /*get_uc(uc_handle, UC_Buttons) & IN_RELOAD &&*/ (pev(id, pev_oldbuttons) & IN_RELOAD))
		{
			set_pdata_float(wpn, 48, CROW_Time7, 4)
			mode[id] = crow
			set_anim(id, 4)
			set_pdata_float(id, 83, CROW_Time7, 5)
			set_pdata_int(wpn, 51, g_clip[id], 4)

		}
		else if(mode[id] == reloading || get_gametime() - Reload_Time && !(pev(id, pev_oldbuttons) & IN_RELOAD))
		{
			set_pdata_float(wpn, 48, Normal_Time7, 4)

			mode[id] = normal
			set_anim(id, 5)
			set_pdata_float(id, 83, Normal_Time7, 5)
			set_pdata_int(wpn, 51, g_clip[id], 4)
		}
		new j = min(iClipExtra - iClip, iBpAmmo)

		set_pdata_int(wpn, 51, iClip + j, 4)
		cs_set_user_bpammo(id, CSW_CROW7, iBpAmmo-j)
		
		set_pdata_int(wpn, 54, 0, 4)

		fInReload = 0
		
	}
	return HAM_IGNORED
}

public Reload7(wpn) 
{
	new id = pev(wpn, pev_owner)
	if (!is_user_connected(id))
		return HAM_IGNORED

	if (!g_has_crow7[id])
		return HAM_IGNORED

	static iClipExtra

	iClipExtra = CROW7_CLIP

	g_clip[id] = -1
	
	new iClip = get_pdata_int(wpn, 51, 4)
	new iBpAmmo = cs_get_user_bpammo(id, CSW_CROW7)
		
	if (iBpAmmo <= 0)
		return HAM_SUPERCEDE

	if (iClip >= iClipExtra)
		return HAM_SUPERCEDE

	g_clip[id] = iClip

	return HAM_IGNORED
}

public Reload_Post7(wpn) 
{
	new id = pev(wpn, pev_owner)
	if (!is_user_connected(id))
		return HAM_IGNORED

	if (!g_has_crow7[id])
		return HAM_IGNORED

	if (g_clip[id] == -1)
		return HAM_IGNORED

	mode[id] = reloading
	g_crow7_zoom[id] = 0
	cs_set_user_zoom(id, CS_RESET_ZOOM, 0)
	
	set_pdata_float(wpn, 48, Reload_Time7, 4)
	set_pdata_float(id, 83, Reload_Time7, 5)

	set_pdata_int(wpn, 51, g_clip[id], 4)
	set_pdata_int(wpn, 54, 1, 4)

	if(mode[id] == reloading) set_anim(id, 3)

	return HAM_IGNORED
}

public HolsterPost(wpn)
{
	static id
	id = get_pdata_cbase(wpn, 41, 4)
	
	g_flNextUseTime[id] = 0.0

	if(!g_has_crow7[id])
		return;

	if(g_has_crow7[id])
	{
		g_crow7_zoom[id] = 0
		cs_set_user_zoom(id, CS_RESET_ZOOM, 1)
	}
}


//Plugin Coded by YunusReyiz..
/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1055\\ f0\\ fs16 \n\\ par }
*/
Image

User avatar
Night Fury
Mod Developer
Mod Developer
Posts: 677
Joined: 7 years ago
Contact:

#2

Post by Night Fury » 5 years ago

Code: Select all

public ze_select_item_post(id, itemid)
{
	if (itemid != g_crow7) 
		give_crow7(id)
}
-->

Code: Select all

public ze_select_item_post(id, itemid)
{
	if (itemid == g_crow7) 
		give_crow7(id)
}
Want your own mod edition? PM me.
Accepting private projects.
Discord: Fury#7469
Image

czirimbolo
Veteran Member
Veteran Member
Poland
Posts: 598
Joined: 7 years ago
Contact:

#3

Post by czirimbolo » 5 years ago

Thanks, solved
Image

Post Reply

Create an account or sign in to join the discussion

You need to be a member in order to post a reply

Create an account

Not a member? register to join our community
Members can start their own topics & subscribe to topics
It’s free and only takes a minute

Register

Sign in

Who is online

Users browsing this forum: No registered users and 2 guests