Discord sunucumuz açılmıştır, hepinizi bekleriz

https://discord.gg/43gGDQe6tS

Silah ses...

Moderatör: Moderatörler

Forum kuralları
[font size=20] DİKKAT [/font]

Silinmiş konu içerikleri hiçbir şekilde kontrol edlimemektedir. İndirdiğiniz dosyaların sorumluluğu tamamiyle size aittir.
Mutlaka indirdiğiniz dosyaları antivirüs ile taratınız.
Kullanıcı avatarı

Konu Sahibi
CsKolik
Mesajlar: 429
Kayıt: Çrş Şub 01, 2017 3:42 pm

Silah ses...

Mesaj gönderen CsKolik »

The​ Professiona͏l yazdı:Bakıyorumda herkes bilmediği bir konuda hoca kesilmiş...

Silahın atış sesleri hariç diğer sesleri degiştirilebilir fakat atış sesleri degiştirilemez.. Modelin .qc dosyasına atış sesi eklemeye kalkarsanız eklediğiniz ses ile orjinal ses aynı anda cikar ve sesler karışır... Bunun yanında pazeenin dediği gibi eklenti ile tek tek tıpkı bir ekstra item silahı gibi ayarlanabilir bu da uğraştırır...
Yardimci olursaniz tek tek ugrasabilirim

Link:
Linklerini gizle
Linki Kopyala

PaZee
Mesajlar: 1761
Kayıt: Çrş Şub 22, 2017 11:28 pm
Konum: Istanbul
Server Ip/DNS: Cs.teknoklan.com
Clan İsmi: TeknoKlan
İletişim:

Silah ses...

Mesaj gönderen PaZee »

@TunnS[C] telefondayim senin ekstra silahlarindan 1 tane atarsan arkadasa ornek olabilir..

Tesekkurler

Link:
Linklerini gizle
Linki Kopyala
Kullanıcı avatarı

Konu Sahibi
CsKolik
Mesajlar: 429
Kayıt: Çrş Şub 01, 2017 3:42 pm

Silah ses...

Mesaj gönderen CsKolik »

PaZee yazdı:@TunnS[C] telefondayim senin ekstra silahlarindan 1 tane atarsan arkadasa ornek olabilir..

Tesekkurler
Demek istediginiz sey extra item pluginlerimi orda modelini sesini tek tek ayarlicaz plugin gibi her silah icin

Link:
Linklerini gizle
Linki Kopyala
Kullanıcı avatarı

TunnS[C]
Mesajlar: 3971
Kayıt: Prş Oca 05, 2017 12:38 pm
Konum: Ordu
Server Ip/DNS: 213.238.173.78
Clan İsmi: CapitaLL |
İletişim:

Silah ses...

Mesaj gönderen TunnS[C] »

PaZee yazdı:@TunnS[C] telefondayim senin ekstra silahlarindan 1 tane atarsan arkadasa ornek olabilir..

Tesekkurler
Olurmu ?
Bu mesaja eklenen dosyaları görüntülemek için gerekli izinlere sahip değilsiniz.

Link:
Linklerini gizle
Linki Kopyala
Kullanıcı avatarı

seypa
Mesajlar: 1390
Kayıt: Cmt Ağu 13, 2016 12:49 pm
Konum: Pendik/İstanbul
İletişim:

Silah ses...

Mesaj gönderen seypa »

The​ Professiona͏l yazdı:Bakıyorumda herkes bilmediği bir konuda hoca kesilmiş...

Silahın atış sesleri hariç diğer sesleri degiştirilebilir fakat atış sesleri degiştirilemez.. Modelin .qc dosyasına atış sesi eklemeye kalkarsanız eklediğiniz ses ile orjinal ses aynı anda cikar ve sesler karışır... Bunun yanında pazeenin dediği gibi eklenti ile tek tek tıpkı bir ekstra item silahı gibi ayarlanabilir bu da uğraştırır...

:))))))

Link:
Linklerini gizle
Linki Kopyala

PaZee
Mesajlar: 1761
Kayıt: Çrş Şub 22, 2017 11:28 pm
Konum: Istanbul
Server Ip/DNS: Cs.teknoklan.com
Clan İsmi: TeknoKlan
İletişim:

Silah ses...

Mesaj gönderen PaZee »

Ben eve gidince gerekli ayarlari yapip yanlarina not birakicam editlemesini yaparsin.

Link:
Linklerini gizle
Linki Kopyala
Kullanıcı avatarı

Konu Sahibi
CsKolik
Mesajlar: 429
Kayıt: Çrş Şub 01, 2017 3:42 pm

Silah ses...

Mesaj gönderen CsKolik »

PaZee yazdı:Ben eve gidince gerekli ayarlari yapip yanlarina not birakicam editlemesini yaparsin.
tşkler saolun

Link:
Linklerini gizle
Linki Kopyala

PaZee
Mesajlar: 1761
Kayıt: Çrş Şub 22, 2017 11:28 pm
Konum: Istanbul
Server Ip/DNS: Cs.teknoklan.com
Clan İsmi: TeknoKlan
İletişim:

Silah ses...

Mesaj gönderen PaZee »

buyur dene.

Kod: Tümünü seç

#include <amxmodx>
#include <fakemeta>
#include <fakemeta_util>
#include <hamsandwich>
#include <cstrike>
#include <colorchat>


// yaptigim ayarlar m4a1 ayarlari hasarini ellemedim.           Buyuk ihtimal m4a1 kendi akisiyla olmayacak . scsini felan yaptik ama bakicaz.

#define PLUGIN "M4a1-III"
#define VERSION "1.0"
#define AUTHOR "Dias & Optimist"

#define V_MODEL "models/v_m4a1.mdl" // Oyuncunun gorecegi model
#define P_MODEL "models/p_m4a1.mdl" // disardan biri oyuncunun elinde gorecegi model
#define W_MODEL "models/w_m4a1.mdl" // dunyada yerde gozukucek model

#define DAMAGE 30 // hasari
#define BPAMMO 240 // mermisi
#define ACTIVE_CLIP 15

#define CSW_M4A13 CSW_MP5NAVY
#define weapon_m4a13 "weapon_mp5navy"

#define WEAPON_SECRETCODE 4962
#define WEAPON_EVENT "events/m4a1.sc"
#define OLD_W_MODEL "models/w_m4a1.mdl"

new const M4a13_Sounds[6][] =
{
	"weapons/balrig3-1.wav", // sesleri kendin ayarlarsin
	"weapons/balrig3-2.wav",
	"weapons/balrig3_boltpull.wav",
	"weapons/balrig3_clipin.wav",
	"weapons/balrig3_clipout.wav",
	"weapons/balrig3_draw.wav"
}

#define EXPLOSE_SPR "sprites/rifle_smoke1.spr" // silah ucundan cikacak efekt

enum
{                              
	ANIM_IDLE = 0, // HLMW ile yapacagin silahin dosyasini ac efe sequanceye bas animation sequancenin altinda idle felan yazar ne yaziyorsa buraya ANIM_IDLE yaz diyelim ismi ATES1 Buraya ANIM_ATES1 yaz butun 
	ANIM_DRAW, // silahi baska mermi cekme efekti                                     yeni bir efekt ekleme sadece burdakilere gore silahtaki efektleri sec ctrlf degistir ANIM_DRAW ve butun smadaki ANIM_DRAW lari kendi hlmvde yazanla degistir yoksa akisi bozar ve sv coker.
	ANIM_RELOAD, // silah degistirme
	ANIM_SHOOT1, // ates 1
	ANIM_SHOOT2 // ates 2
}

new g_Had_M4a13[33], g_Shoot_Special[33], g_Holding_Attack[33], g_Shoot_Count[33], g_Old_Weapon[33], g_Current_Weapon[33]
new g_Exp_SprId, g_m4a13_event, g_ShellId, g_SmokePuff_SprId, cvar_m4a1_fiyat

public plugin_init() 
{
	register_plugin(PLUGIN, VERSION, AUTHOR)
	
	register_event("CurWeapon", "Event_CurWeapon", "be", "1=1")
	register_event("HLTV", "YeniTur", "a", "1=0", "2=0")
	register_clcmd("say /m4a1","bio_extra_item_selected")
	register_clcmd("say_team /m4a1","bio_extra_item_selected")
	
	register_forward(FM_UpdateClientData, "fw_UpdateClientData_Post", 1)	
	register_forward(FM_PlaybackEvent, "fw_PlaybackEvent")	
	register_forward(FM_SetModel, "fw_SetModel")
	register_forward(FM_CmdStart, "fw_CmdStart")		
	
	RegisterHam(Ham_TraceAttack, "worldspawn", "fw_TraceAttack")
	RegisterHam(Ham_TraceAttack, "player", "fw_TraceAttack")	
	RegisterHam(Ham_Weapon_PrimaryAttack, weapon_m4a13, "fw_Weapon_PrimaryAttack")
	RegisterHam(Ham_Weapon_PrimaryAttack, weapon_m4a13, "fw_Weapon_PrimaryAttack_Post", 1)
	RegisterHam(Ham_Item_AddToPlayer, weapon_m4a13, "fw_Item_AddToPlayer_Post", 1)

	cvar_m4a1_fiyat = register_cvar("bio_m4a1_fiyat", "16000") // alacaklari para degerini gir.
}

public plugin_precache()
{
	engfunc(EngFunc_PrecacheModel, V_MODEL)
	engfunc(EngFunc_PrecacheModel, P_MODEL)
	engfunc(EngFunc_PrecacheModel, W_MODEL)
	
	for(new i = 0; i < sizeof(M4a13_Sounds); i++)
		engfunc(EngFunc_PrecacheSound, M4a13_Sounds[i])
		
	g_Exp_SprId = engfunc(EngFunc_PrecacheModel, EXPLOSE_SPR)
	g_SmokePuff_SprId = engfunc(EngFunc_PrecacheModel, "sprites/wall_puff1.spr")
	g_ShellId = engfunc(EngFunc_PrecacheModel, "models/pshell.mdl")
	
	register_forward(FM_PrecacheEvent, "fw_PrecacheEvent_Post", 1)
}

public fw_PrecacheEvent_Post(type, const name[])
{
	if(equal(WEAPON_EVENT, name))
		g_m4a13_event = get_orig_retval()		
}
public YeniTur() {
	new players[32],inum;
	get_players(players,inum)
	for(new id;id<inum;id++) {
		g_Had_M4a13[id] = 0
	}
}
public bio_extra_item_selected(id, itemid) {
	if (!is_user_alive(id)) {
		ColorChat(id,NORMAL,"^4[Ses]:^1 ^3M4a1 Silahini^1 Alamabilmek Icin ^4Hayatta Olmaniz^1 Gereklidir.!")
		return PLUGIN_HANDLED
	}
	
	new para = cs_get_user_money(id)
	
	if (para >= get_pcvar_num(cvar_m4a1_fiyat)){
		cs_set_user_money(id, para - get_pcvar_num(cvar_m4a1_fiyat))
		Get_M4a13(id)
		ColorChat(id,NORMAL,"^4[Ses]:^1 ^3M4a1 Silahini^1 Satin Aldiniz.!")
	}else {
		ColorChat(id,NORMAL,"^4[Ses]:^1 M4a1 Silahini Almak Icin ^4Yeterli Paraniz^1 Yok. ^4Silahin Degeri: ^1^3%d^1 TL ", get_pcvar_num(cvar_m4a1_fiyat))
	}
	return PLUGIN_HANDLED
}
public event_infect(id) Remove_M4a13(id)
public Get_M4a13(id) {
	if(!is_user_alive(id))
		return
		
	g_Had_M4a13[id] = 1
	g_Shoot_Special[id] = 0
	g_Holding_Attack[id] = 0
	g_Shoot_Count[id] = 0
	
	fm_give_item(id, weapon_m4a13)
	
	cs_set_user_bpammo(id, CSW_M4A13, BPAMMO)
}
public Remove_M4a13(id) {
	if(!is_user_connected(id))
		return
		
	g_Had_M4a13[id] = 0
	g_Shoot_Special[id] = 0	
}
public Event_CurWeapon(id) {
	if(!is_user_alive(id))
		return
	
	if(get_user_weapon(id) != g_Current_Weapon[id]) g_Current_Weapon[id] = get_user_weapon(id)
	
	if(get_user_weapon(id) == CSW_M4A13 && g_Had_M4a13[id]) {
		if(g_Old_Weapon[id] != CSW_M4A13) {
			set_pev(id, pev_viewmodel2, V_MODEL)
			set_pev(id, pev_weaponmodel2, P_MODEL)
		}
	}
	
	g_Old_Weapon[id] = get_user_weapon(id)
}
public fw_UpdateClientData_Post(id, sendweapons, cd_handle) {
	if(!is_user_alive(id) || !is_user_connected(id))
		return FMRES_IGNORED	
	if(get_user_weapon(id) == CSW_M4A13 && g_Had_M4a13[id])
		set_cd(cd_handle, CD_flNextAttack, get_gametime() + 0.001) 
	
	return FMRES_HANDLED
}
public fw_PlaybackEvent(flags, invoker, eventid, Float:delay, Float:origin[3], Float:angles[3], Float:fparam1, Float:fparam2, iParam1, iParam2, bParam1, bParam2) {
	if (!is_user_connected(invoker))
		return FMRES_IGNORED	
	if(get_user_weapon(invoker) != CSW_M4A13 || !g_Had_M4a13[invoker])
		return FMRES_IGNORED
	if(eventid != g_m4a13_event)
		return FMRES_IGNORED
	
	engfunc(EngFunc_PlaybackEvent, flags | FEV_HOSTONLY, invoker, eventid, delay, origin, angles, fparam1, fparam2, iParam1, iParam2, bParam1, bParam2)
	
	if(!g_Shoot_Special[invoker] && cs_get_user_bpammo(invoker, CSW_M4A13) > 0) {
		g_Shoot_Count[invoker]++
		if(g_Shoot_Count[invoker] >= ACTIVE_CLIP) {
			g_Shoot_Special[invoker] = 1
			
			static Ent; Ent = fm_get_user_weapon_entity(invoker, CSW_M4A13)
			if(pev_valid(Ent)) g_Shoot_Count[invoker] = cs_get_weapon_ammo(Ent)
		}
	} else if(g_Shoot_Special[invoker]) {
		cs_set_user_bpammo(invoker, CSW_M4A13, cs_get_user_bpammo(invoker, CSW_M4A13) - 1)
		
		if(cs_get_user_bpammo(invoker, CSW_M4A13) <= 0) {
			g_Shoot_Special[invoker] = 0
			g_Shoot_Count[invoker] = 0
		}
	}
	
	set_weapon_anim(invoker, g_Shoot_Special[invoker] == 1 ? ANIM_SHOOT2 : ANIM_SHOOT1)
	emit_sound(invoker, CHAN_WEAPON, g_Shoot_Special[invoker] == 1 ? M4a13_Sounds[1] : M4a13_Sounds[0], VOL_NORM, ATTN_NORM, 0, PITCH_NORM)
	
	Eject_Shell(invoker, g_ShellId, 0.0)
		
	return FMRES_SUPERCEDE
}
public fw_SetModel(entity, model[]) {
	if(!pev_valid(entity))
		return FMRES_IGNORED
	
	static Classname[32]
	pev(entity, pev_classname, Classname, sizeof(Classname))
	
	if(!equal(Classname, "weaponbox"))
		return FMRES_IGNORED
	
	static iOwner
	iOwner = pev(entity, pev_owner)
	
	if(equal(model, OLD_W_MODEL)) {
		static weapon; weapon = fm_find_ent_by_owner(-1, weapon_m4a13, entity)
		
		if(!pev_valid(weapon))
			return FMRES_IGNORED;
		
		if(g_Had_M4a13[iOwner]) {
			Remove_M4a13(iOwner)
			
			set_pev(weapon, pev_impulse, WEAPON_SECRETCODE)
			engfunc(EngFunc_SetModel, entity, W_MODEL)
			
			return FMRES_SUPERCEDE
		}
	}

	return FMRES_IGNORED;
}
public fw_CmdStart(id, uc_handle, seed) {
	if(!is_user_alive(id))
		return
	if(g_Current_Weapon[id] != CSW_M4A13 || !g_Had_M4a13[id])
		return
		
	static NewButton; NewButton = get_uc(uc_handle, UC_Buttons)
	static OldButton; OldButton = pev(id, pev_oldbuttons)
	
	if(NewButton & IN_ATTACK) {
		if(!g_Holding_Attack[id]) g_Holding_Attack[id] = 1
	} else if((NewButton & IN_ATTACK2) && !(OldButton & IN_ATTACK2)) {
		if(cs_get_user_zoom(id) == 1) cs_set_user_zoom(id, CS_SET_AUGSG552_ZOOM, 1)
		else cs_set_user_zoom(id, CS_SET_NO_ZOOM, 1)
	} else {
		if(OldButton & IN_ATTACK)
		{
			if(g_Holding_Attack[id]) 
			{
				g_Holding_Attack[id] = 0
				g_Shoot_Count[id] = 0
				g_Shoot_Special[id] = 0
			}
		}
	}
}
public fw_TraceAttack(Victim, Attacker, Float:Damage, Float:Direction[3], Ptr, DamageBits) {
	if(!is_user_alive(Attacker))
		return HAM_IGNORED	
	if(get_user_weapon(Attacker) != CSW_M4A13 || !g_Had_M4a13[Attacker])
		return HAM_IGNORED
		
	static Float:flEnd[3], Float:vecPlane[3]
	
	get_tr2(Ptr, TR_vecEndPos, flEnd)
	get_tr2(Ptr, TR_vecPlaneNormal, vecPlane)		
		
	if(!is_user_alive(Victim)) {
		Make_BulletHole(Attacker, flEnd, Damage)
		Make_BulletSmoke(Attacker, Ptr)
	}
	
	if(g_Shoot_Special[Attacker]) {
		Make_M4a1Effect(Attacker, Ptr)
		radius_damage(Attacker, flEnd, float(DAMAGE), 96.0)
	}
	
	SetHamParamFloat(3, float(DAMAGE))
	
	return HAM_IGNORED
}
public fw_Weapon_PrimaryAttack(Ent) {
	if(!pev_valid(Ent))
		return
	static Id; Id = pev(Ent, pev_owner)
	if(!g_Had_M4a13[Id])
		return
	
	if(g_Shoot_Special[Id]) set_pdata_float(Ent, 62, 0.4, 4)
	else set_pdata_float(Ent, 62, 0.2, 4)
}
public fw_Weapon_PrimaryAttack_Post(Ent) {
	if(!pev_valid(Ent))
		return
	static Id; Id = pev(Ent, pev_owner)
	if(!g_Had_M4a13[Id])
		return
	
	if(g_Shoot_Special[Id] && cs_get_weapon_ammo(Ent) > 0) {
		cs_set_weapon_ammo(Ent, g_Shoot_Count[Id])
		set_pdata_float(Ent, 46, get_pdata_float(Ent, 46, 4) * 0.75, 4)	
	}
}
public fw_Item_AddToPlayer_Post(ent, id) {
	if(!pev_valid(ent))
		return HAM_IGNORED
		
	if(pev(ent, pev_impulse) == WEAPON_SECRETCODE) {
		g_Had_M4a13[id] = 1
		set_pev(ent, pev_impulse, 0)
	}		

	return HAM_HANDLED	
}
stock Make_BulletHole(id, Float:Origin[3], Float:Damage) {
	// Find target
	static Decal; Decal = random_num(41, 45)
	static LoopTime; 
	
	if(Damage > 100.0) LoopTime = 2
	else LoopTime = 1
	
	for(new i = 0; i < LoopTime; i++) {
		// Put decal on "world" (a wall)
		message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
		write_byte(TE_WORLDDECAL)
		engfunc(EngFunc_WriteCoord, Origin[0])
		engfunc(EngFunc_WriteCoord, Origin[1])
		engfunc(EngFunc_WriteCoord, Origin[2])
		write_byte(Decal)
		message_end()
		
		// Show sparcles
		message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
		write_byte(TE_GUNSHOTDECAL)
		engfunc(EngFunc_WriteCoord, Origin[0])
		engfunc(EngFunc_WriteCoord, Origin[1])
		engfunc(EngFunc_WriteCoord, Origin[2])
		write_short(id)
		write_byte(Decal)
		message_end()
	}
}
public Make_BulletSmoke(id, TrResult) {
	static Float:vecSrc[3], Float:vecEnd[3], TE_FLAG
	
	get_weapon_attachment(id, vecSrc)
	global_get(glb_v_forward, vecEnd)
    
	xs_vec_mul_scalar(vecEnd, 8192.0, vecEnd)
	xs_vec_add(vecSrc, vecEnd, vecEnd)

	get_tr2(TrResult, TR_vecEndPos, vecSrc)
	get_tr2(TrResult, TR_vecPlaneNormal, vecEnd)
    
	xs_vec_mul_scalar(vecEnd, 2.5, vecEnd)
	xs_vec_add(vecSrc, vecEnd, vecEnd)
    
	TE_FLAG |= TE_EXPLFLAG_NODLIGHTS
	TE_FLAG |= TE_EXPLFLAG_NOSOUND
	TE_FLAG |= TE_EXPLFLAG_NOPARTICLES
	
	engfunc(EngFunc_MessageBegin, MSG_PAS, SVC_TEMPENTITY, vecEnd, 0)
	write_byte(TE_EXPLOSION)
	engfunc(EngFunc_WriteCoord, vecEnd[0])
	engfunc(EngFunc_WriteCoord, vecEnd[1])
	engfunc(EngFunc_WriteCoord, vecEnd[2] - 10.0)
	write_short(g_SmokePuff_SprId)
	write_byte(2)
	write_byte(50)
	write_byte(TE_FLAG)
	message_end()
}
public Make_M4a1Effect(id, TrResult) {
	static Float:vecSrc[3], Float:vecEnd[3], TE_FLAG
	
	get_weapon_attachment(id, vecSrc)
	global_get(glb_v_forward, vecEnd)
    
	xs_vec_mul_scalar(vecEnd, 8192.0, vecEnd)
	xs_vec_add(vecSrc, vecEnd, vecEnd)

	get_tr2(TrResult, TR_vecEndPos, vecSrc)
	get_tr2(TrResult, TR_vecPlaneNormal, vecEnd)
    
	xs_vec_mul_scalar(vecEnd, 5.0, vecEnd)
	xs_vec_add(vecSrc, vecEnd, vecEnd)
    
	TE_FLAG |= TE_EXPLFLAG_NODLIGHTS
	TE_FLAG |= TE_EXPLFLAG_NOSOUND
	TE_FLAG |= TE_EXPLFLAG_NOPARTICLES
	
	engfunc(EngFunc_MessageBegin, MSG_PAS, SVC_TEMPENTITY, vecEnd, 0)
	write_byte(TE_EXPLOSION)
	engfunc(EngFunc_WriteCoord, vecEnd[0])
	engfunc(EngFunc_WriteCoord, vecEnd[1])
	engfunc(EngFunc_WriteCoord, vecEnd[2])
	write_short(g_Exp_SprId)
	write_byte(5)
	write_byte(30)
	write_byte(TE_FLAG)
	message_end()
}
stock get_weapon_attachment(id, Float:output[3], Float:fDis = 40.0) { 
	new Float:vfEnd[3], viEnd[3] 
	get_user_origin(id, viEnd, 3)  
	IVecFVec(viEnd, vfEnd) 
	
	new Float:fOrigin[3], Float:fAngle[3]
	
	pev(id, pev_origin, fOrigin) 
	pev(id, pev_view_ofs, fAngle)
	
	xs_vec_add(fOrigin, fAngle, fOrigin) 
	
	new Float:fAttack[3]
	
	xs_vec_sub(vfEnd, fOrigin, fAttack)
	xs_vec_sub(vfEnd, fOrigin, fAttack) 
	
	new Float:fRate
	
	fRate = fDis / vector_length(fAttack)
	xs_vec_mul_scalar(fAttack, fRate, fAttack)
	
	xs_vec_add(fOrigin, fAttack, output)
}
stock radius_damage(id, Float:Origin[3], Float:Damage, Float:Radius) {
	static Victim; Victim = -1

	while((Victim = engfunc(EngFunc_FindEntityInSphere, Victim, Origin, Radius)) != 0) {
		if(!is_user_alive(Victim) || id == Victim) 
			continue

		ExecuteHamB(Ham_TakeDamage, Victim, fm_get_user_weapon_entity(id, get_user_weapon(id)), id, Damage, DMG_BULLET)
	}
}
stock Eject_Shell(id, Shell_ModelIndex, Float:Time)  {
	static Ent; Ent = get_pdata_cbase(id, 373, 5)
	if(!pev_valid(Ent))
		return

        set_pdata_int(Ent, 57, Shell_ModelIndex, 4)
        set_pdata_float(id, 111, get_gametime() + Time)
}
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, {0, 0, 0}, id)
	write_byte(anim)
	write_byte(pev(id, pev_body))
	message_end()
}



ANIM yeri biraz kafani karistiracak diger arkadaslara sorarsin olmadi umarim aciklayici anlatmisindir baktik anlamadin daha detayli anlatirim pek zamanim yok. iyi oyunlar

Link:
Linklerini gizle
Linki Kopyala
Kullanıcı avatarı

Menedit
Mesajlar: 149
Kayıt: Pzt Eki 15, 2018 5:58 pm
Konum: Angara
Server Ip/DNS: 213.238.173.17
Clan İsmi: LiekabLe* > Pro

Silah ses...

Mesaj gönderen Menedit »

PaZee yazdı: Pzt Mar 13, 2017 4:53 pm buyur dene.

Kod: Tümünü seç

#include <amxmodx>
#include <fakemeta>
#include <fakemeta_util>
#include <hamsandwich>
#include <cstrike>
#include <colorchat>


// yaptigim ayarlar m4a1 ayarlari hasarini ellemedim.           Buyuk ihtimal m4a1 kendi akisiyla olmayacak . scsini felan yaptik ama bakicaz.

#define PLUGIN "M4a1-III"
#define VERSION "1.0"
#define AUTHOR "Dias & Optimist"

#define V_MODEL "models/v_m4a1.mdl" // Oyuncunun gorecegi model
#define P_MODEL "models/p_m4a1.mdl" // disardan biri oyuncunun elinde gorecegi model
#define W_MODEL "models/w_m4a1.mdl" // dunyada yerde gozukucek model

#define DAMAGE 30 // hasari
#define BPAMMO 240 // mermisi
#define ACTIVE_CLIP 15

#define CSW_M4A13 CSW_MP5NAVY
#define weapon_m4a13 "weapon_mp5navy"

#define WEAPON_SECRETCODE 4962
#define WEAPON_EVENT "events/m4a1.sc"
#define OLD_W_MODEL "models/w_m4a1.mdl"

new const M4a13_Sounds[6][] =
{
	"weapons/balrig3-1.wav", // sesleri kendin ayarlarsin
	"weapons/balrig3-2.wav",
	"weapons/balrig3_boltpull.wav",
	"weapons/balrig3_clipin.wav",
	"weapons/balrig3_clipout.wav",
	"weapons/balrig3_draw.wav"
}

#define EXPLOSE_SPR "sprites/rifle_smoke1.spr" // silah ucundan cikacak efekt

enum
{                              
	ANIM_IDLE = 0, // HLMW ile yapacagin silahin dosyasini ac efe sequanceye bas animation sequancenin altinda idle felan yazar ne yaziyorsa buraya ANIM_IDLE yaz diyelim ismi ATES1 Buraya ANIM_ATES1 yaz butun 
	ANIM_DRAW, // silahi baska mermi cekme efekti                                     yeni bir efekt ekleme sadece burdakilere gore silahtaki efektleri sec ctrlf degistir ANIM_DRAW ve butun smadaki ANIM_DRAW lari kendi hlmvde yazanla degistir yoksa akisi bozar ve sv coker.
	ANIM_RELOAD, // silah degistirme
	ANIM_SHOOT1, // ates 1
	ANIM_SHOOT2 // ates 2
}

new g_Had_M4a13[33], g_Shoot_Special[33], g_Holding_Attack[33], g_Shoot_Count[33], g_Old_Weapon[33], g_Current_Weapon[33]
new g_Exp_SprId, g_m4a13_event, g_ShellId, g_SmokePuff_SprId, cvar_m4a1_fiyat

public plugin_init() 
{
	register_plugin(PLUGIN, VERSION, AUTHOR)
	
	register_event("CurWeapon", "Event_CurWeapon", "be", "1=1")
	register_event("HLTV", "YeniTur", "a", "1=0", "2=0")
	register_clcmd("say /m4a1","bio_extra_item_selected")
	register_clcmd("say_team /m4a1","bio_extra_item_selected")
	
	register_forward(FM_UpdateClientData, "fw_UpdateClientData_Post", 1)	
	register_forward(FM_PlaybackEvent, "fw_PlaybackEvent")	
	register_forward(FM_SetModel, "fw_SetModel")
	register_forward(FM_CmdStart, "fw_CmdStart")		
	
	RegisterHam(Ham_TraceAttack, "worldspawn", "fw_TraceAttack")
	RegisterHam(Ham_TraceAttack, "player", "fw_TraceAttack")	
	RegisterHam(Ham_Weapon_PrimaryAttack, weapon_m4a13, "fw_Weapon_PrimaryAttack")
	RegisterHam(Ham_Weapon_PrimaryAttack, weapon_m4a13, "fw_Weapon_PrimaryAttack_Post", 1)
	RegisterHam(Ham_Item_AddToPlayer, weapon_m4a13, "fw_Item_AddToPlayer_Post", 1)

	cvar_m4a1_fiyat = register_cvar("bio_m4a1_fiyat", "16000") // alacaklari para degerini gir.
}

public plugin_precache()
{
	engfunc(EngFunc_PrecacheModel, V_MODEL)
	engfunc(EngFunc_PrecacheModel, P_MODEL)
	engfunc(EngFunc_PrecacheModel, W_MODEL)
	
	for(new i = 0; i < sizeof(M4a13_Sounds); i++)
		engfunc(EngFunc_PrecacheSound, M4a13_Sounds[i])
		
	g_Exp_SprId = engfunc(EngFunc_PrecacheModel, EXPLOSE_SPR)
	g_SmokePuff_SprId = engfunc(EngFunc_PrecacheModel, "sprites/wall_puff1.spr")
	g_ShellId = engfunc(EngFunc_PrecacheModel, "models/pshell.mdl")
	
	register_forward(FM_PrecacheEvent, "fw_PrecacheEvent_Post", 1)
}

public fw_PrecacheEvent_Post(type, const name[])
{
	if(equal(WEAPON_EVENT, name))
		g_m4a13_event = get_orig_retval()		
}
public YeniTur() {
	new players[32],inum;
	get_players(players,inum)
	for(new id;id<inum;id++) {
		g_Had_M4a13[id] = 0
	}
}
public bio_extra_item_selected(id, itemid) {
	if (!is_user_alive(id)) {
		ColorChat(id,NORMAL,"^4[Ses]:^1 ^3M4a1 Silahini^1 Alamabilmek Icin ^4Hayatta Olmaniz^1 Gereklidir.!")
		return PLUGIN_HANDLED
	}
	
	new para = cs_get_user_money(id)
	
	if (para >= get_pcvar_num(cvar_m4a1_fiyat)){
		cs_set_user_money(id, para - get_pcvar_num(cvar_m4a1_fiyat))
		Get_M4a13(id)
		ColorChat(id,NORMAL,"^4[Ses]:^1 ^3M4a1 Silahini^1 Satin Aldiniz.!")
	}else {
		ColorChat(id,NORMAL,"^4[Ses]:^1 M4a1 Silahini Almak Icin ^4Yeterli Paraniz^1 Yok. ^4Silahin Degeri: ^1^3%d^1 TL ", get_pcvar_num(cvar_m4a1_fiyat))
	}
	return PLUGIN_HANDLED
}
public event_infect(id) Remove_M4a13(id)
public Get_M4a13(id) {
	if(!is_user_alive(id))
		return
		
	g_Had_M4a13[id] = 1
	g_Shoot_Special[id] = 0
	g_Holding_Attack[id] = 0
	g_Shoot_Count[id] = 0
	
	fm_give_item(id, weapon_m4a13)
	
	cs_set_user_bpammo(id, CSW_M4A13, BPAMMO)
}
public Remove_M4a13(id) {
	if(!is_user_connected(id))
		return
		
	g_Had_M4a13[id] = 0
	g_Shoot_Special[id] = 0	
}
public Event_CurWeapon(id) {
	if(!is_user_alive(id))
		return
	
	if(get_user_weapon(id) != g_Current_Weapon[id]) g_Current_Weapon[id] = get_user_weapon(id)
	
	if(get_user_weapon(id) == CSW_M4A13 && g_Had_M4a13[id]) {
		if(g_Old_Weapon[id] != CSW_M4A13) {
			set_pev(id, pev_viewmodel2, V_MODEL)
			set_pev(id, pev_weaponmodel2, P_MODEL)
		}
	}
	
	g_Old_Weapon[id] = get_user_weapon(id)
}
public fw_UpdateClientData_Post(id, sendweapons, cd_handle) {
	if(!is_user_alive(id) || !is_user_connected(id))
		return FMRES_IGNORED	
	if(get_user_weapon(id) == CSW_M4A13 && g_Had_M4a13[id])
		set_cd(cd_handle, CD_flNextAttack, get_gametime() + 0.001) 
	
	return FMRES_HANDLED
}
public fw_PlaybackEvent(flags, invoker, eventid, Float:delay, Float:origin[3], Float:angles[3], Float:fparam1, Float:fparam2, iParam1, iParam2, bParam1, bParam2) {
	if (!is_user_connected(invoker))
		return FMRES_IGNORED	
	if(get_user_weapon(invoker) != CSW_M4A13 || !g_Had_M4a13[invoker])
		return FMRES_IGNORED
	if(eventid != g_m4a13_event)
		return FMRES_IGNORED
	
	engfunc(EngFunc_PlaybackEvent, flags | FEV_HOSTONLY, invoker, eventid, delay, origin, angles, fparam1, fparam2, iParam1, iParam2, bParam1, bParam2)
	
	if(!g_Shoot_Special[invoker] && cs_get_user_bpammo(invoker, CSW_M4A13) > 0) {
		g_Shoot_Count[invoker]++
		if(g_Shoot_Count[invoker] >= ACTIVE_CLIP) {
			g_Shoot_Special[invoker] = 1
			
			static Ent; Ent = fm_get_user_weapon_entity(invoker, CSW_M4A13)
			if(pev_valid(Ent)) g_Shoot_Count[invoker] = cs_get_weapon_ammo(Ent)
		}
	} else if(g_Shoot_Special[invoker]) {
		cs_set_user_bpammo(invoker, CSW_M4A13, cs_get_user_bpammo(invoker, CSW_M4A13) - 1)
		
		if(cs_get_user_bpammo(invoker, CSW_M4A13) <= 0) {
			g_Shoot_Special[invoker] = 0
			g_Shoot_Count[invoker] = 0
		}
	}
	
	set_weapon_anim(invoker, g_Shoot_Special[invoker] == 1 ? ANIM_SHOOT2 : ANIM_SHOOT1)
	emit_sound(invoker, CHAN_WEAPON, g_Shoot_Special[invoker] == 1 ? M4a13_Sounds[1] : M4a13_Sounds[0], VOL_NORM, ATTN_NORM, 0, PITCH_NORM)
	
	Eject_Shell(invoker, g_ShellId, 0.0)
		
	return FMRES_SUPERCEDE
}
public fw_SetModel(entity, model[]) {
	if(!pev_valid(entity))
		return FMRES_IGNORED
	
	static Classname[32]
	pev(entity, pev_classname, Classname, sizeof(Classname))
	
	if(!equal(Classname, "weaponbox"))
		return FMRES_IGNORED
	
	static iOwner
	iOwner = pev(entity, pev_owner)
	
	if(equal(model, OLD_W_MODEL)) {
		static weapon; weapon = fm_find_ent_by_owner(-1, weapon_m4a13, entity)
		
		if(!pev_valid(weapon))
			return FMRES_IGNORED;
		
		if(g_Had_M4a13[iOwner]) {
			Remove_M4a13(iOwner)
			
			set_pev(weapon, pev_impulse, WEAPON_SECRETCODE)
			engfunc(EngFunc_SetModel, entity, W_MODEL)
			
			return FMRES_SUPERCEDE
		}
	}

	return FMRES_IGNORED;
}
public fw_CmdStart(id, uc_handle, seed) {
	if(!is_user_alive(id))
		return
	if(g_Current_Weapon[id] != CSW_M4A13 || !g_Had_M4a13[id])
		return
		
	static NewButton; NewButton = get_uc(uc_handle, UC_Buttons)
	static OldButton; OldButton = pev(id, pev_oldbuttons)
	
	if(NewButton & IN_ATTACK) {
		if(!g_Holding_Attack[id]) g_Holding_Attack[id] = 1
	} else if((NewButton & IN_ATTACK2) && !(OldButton & IN_ATTACK2)) {
		if(cs_get_user_zoom(id) == 1) cs_set_user_zoom(id, CS_SET_AUGSG552_ZOOM, 1)
		else cs_set_user_zoom(id, CS_SET_NO_ZOOM, 1)
	} else {
		if(OldButton & IN_ATTACK)
		{
			if(g_Holding_Attack[id]) 
			{
				g_Holding_Attack[id] = 0
				g_Shoot_Count[id] = 0
				g_Shoot_Special[id] = 0
			}
		}
	}
}
public fw_TraceAttack(Victim, Attacker, Float:Damage, Float:Direction[3], Ptr, DamageBits) {
	if(!is_user_alive(Attacker))
		return HAM_IGNORED	
	if(get_user_weapon(Attacker) != CSW_M4A13 || !g_Had_M4a13[Attacker])
		return HAM_IGNORED
		
	static Float:flEnd[3], Float:vecPlane[3]
	
	get_tr2(Ptr, TR_vecEndPos, flEnd)
	get_tr2(Ptr, TR_vecPlaneNormal, vecPlane)		
		
	if(!is_user_alive(Victim)) {
		Make_BulletHole(Attacker, flEnd, Damage)
		Make_BulletSmoke(Attacker, Ptr)
	}
	
	if(g_Shoot_Special[Attacker]) {
		Make_M4a1Effect(Attacker, Ptr)
		radius_damage(Attacker, flEnd, float(DAMAGE), 96.0)
	}
	
	SetHamParamFloat(3, float(DAMAGE))
	
	return HAM_IGNORED
}
public fw_Weapon_PrimaryAttack(Ent) {
	if(!pev_valid(Ent))
		return
	static Id; Id = pev(Ent, pev_owner)
	if(!g_Had_M4a13[Id])
		return
	
	if(g_Shoot_Special[Id]) set_pdata_float(Ent, 62, 0.4, 4)
	else set_pdata_float(Ent, 62, 0.2, 4)
}
public fw_Weapon_PrimaryAttack_Post(Ent) {
	if(!pev_valid(Ent))
		return
	static Id; Id = pev(Ent, pev_owner)
	if(!g_Had_M4a13[Id])
		return
	
	if(g_Shoot_Special[Id] && cs_get_weapon_ammo(Ent) > 0) {
		cs_set_weapon_ammo(Ent, g_Shoot_Count[Id])
		set_pdata_float(Ent, 46, get_pdata_float(Ent, 46, 4) * 0.75, 4)	
	}
}
public fw_Item_AddToPlayer_Post(ent, id) {
	if(!pev_valid(ent))
		return HAM_IGNORED
		
	if(pev(ent, pev_impulse) == WEAPON_SECRETCODE) {
		g_Had_M4a13[id] = 1
		set_pev(ent, pev_impulse, 0)
	}		

	return HAM_HANDLED	
}
stock Make_BulletHole(id, Float:Origin[3], Float:Damage) {
	// Find target
	static Decal; Decal = random_num(41, 45)
	static LoopTime; 
	
	if(Damage > 100.0) LoopTime = 2
	else LoopTime = 1
	
	for(new i = 0; i < LoopTime; i++) {
		// Put decal on "world" (a wall)
		message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
		write_byte(TE_WORLDDECAL)
		engfunc(EngFunc_WriteCoord, Origin[0])
		engfunc(EngFunc_WriteCoord, Origin[1])
		engfunc(EngFunc_WriteCoord, Origin[2])
		write_byte(Decal)
		message_end()
		
		// Show sparcles
		message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
		write_byte(TE_GUNSHOTDECAL)
		engfunc(EngFunc_WriteCoord, Origin[0])
		engfunc(EngFunc_WriteCoord, Origin[1])
		engfunc(EngFunc_WriteCoord, Origin[2])
		write_short(id)
		write_byte(Decal)
		message_end()
	}
}
public Make_BulletSmoke(id, TrResult) {
	static Float:vecSrc[3], Float:vecEnd[3], TE_FLAG
	
	get_weapon_attachment(id, vecSrc)
	global_get(glb_v_forward, vecEnd)
    
	xs_vec_mul_scalar(vecEnd, 8192.0, vecEnd)
	xs_vec_add(vecSrc, vecEnd, vecEnd)

	get_tr2(TrResult, TR_vecEndPos, vecSrc)
	get_tr2(TrResult, TR_vecPlaneNormal, vecEnd)
    
	xs_vec_mul_scalar(vecEnd, 2.5, vecEnd)
	xs_vec_add(vecSrc, vecEnd, vecEnd)
    
	TE_FLAG |= TE_EXPLFLAG_NODLIGHTS
	TE_FLAG |= TE_EXPLFLAG_NOSOUND
	TE_FLAG |= TE_EXPLFLAG_NOPARTICLES
	
	engfunc(EngFunc_MessageBegin, MSG_PAS, SVC_TEMPENTITY, vecEnd, 0)
	write_byte(TE_EXPLOSION)
	engfunc(EngFunc_WriteCoord, vecEnd[0])
	engfunc(EngFunc_WriteCoord, vecEnd[1])
	engfunc(EngFunc_WriteCoord, vecEnd[2] - 10.0)
	write_short(g_SmokePuff_SprId)
	write_byte(2)
	write_byte(50)
	write_byte(TE_FLAG)
	message_end()
}
public Make_M4a1Effect(id, TrResult) {
	static Float:vecSrc[3], Float:vecEnd[3], TE_FLAG
	
	get_weapon_attachment(id, vecSrc)
	global_get(glb_v_forward, vecEnd)
    
	xs_vec_mul_scalar(vecEnd, 8192.0, vecEnd)
	xs_vec_add(vecSrc, vecEnd, vecEnd)

	get_tr2(TrResult, TR_vecEndPos, vecSrc)
	get_tr2(TrResult, TR_vecPlaneNormal, vecEnd)
    
	xs_vec_mul_scalar(vecEnd, 5.0, vecEnd)
	xs_vec_add(vecSrc, vecEnd, vecEnd)
    
	TE_FLAG |= TE_EXPLFLAG_NODLIGHTS
	TE_FLAG |= TE_EXPLFLAG_NOSOUND
	TE_FLAG |= TE_EXPLFLAG_NOPARTICLES
	
	engfunc(EngFunc_MessageBegin, MSG_PAS, SVC_TEMPENTITY, vecEnd, 0)
	write_byte(TE_EXPLOSION)
	engfunc(EngFunc_WriteCoord, vecEnd[0])
	engfunc(EngFunc_WriteCoord, vecEnd[1])
	engfunc(EngFunc_WriteCoord, vecEnd[2])
	write_short(g_Exp_SprId)
	write_byte(5)
	write_byte(30)
	write_byte(TE_FLAG)
	message_end()
}
stock get_weapon_attachment(id, Float:output[3], Float:fDis = 40.0) { 
	new Float:vfEnd[3], viEnd[3] 
	get_user_origin(id, viEnd, 3)  
	IVecFVec(viEnd, vfEnd) 
	
	new Float:fOrigin[3], Float:fAngle[3]
	
	pev(id, pev_origin, fOrigin) 
	pev(id, pev_view_ofs, fAngle)
	
	xs_vec_add(fOrigin, fAngle, fOrigin) 
	
	new Float:fAttack[3]
	
	xs_vec_sub(vfEnd, fOrigin, fAttack)
	xs_vec_sub(vfEnd, fOrigin, fAttack) 
	
	new Float:fRate
	
	fRate = fDis / vector_length(fAttack)
	xs_vec_mul_scalar(fAttack, fRate, fAttack)
	
	xs_vec_add(fOrigin, fAttack, output)
}
stock radius_damage(id, Float:Origin[3], Float:Damage, Float:Radius) {
	static Victim; Victim = -1

	while((Victim = engfunc(EngFunc_FindEntityInSphere, Victim, Origin, Radius)) != 0) {
		if(!is_user_alive(Victim) || id == Victim) 
			continue

		ExecuteHamB(Ham_TakeDamage, Victim, fm_get_user_weapon_entity(id, get_user_weapon(id)), id, Damage, DMG_BULLET)
	}
}
stock Eject_Shell(id, Shell_ModelIndex, Float:Time)  {
	static Ent; Ent = get_pdata_cbase(id, 373, 5)
	if(!pev_valid(Ent))
		return

        set_pdata_int(Ent, 57, Shell_ModelIndex, 4)
        set_pdata_float(id, 111, get_gametime() + Time)
}
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, {0, 0, 0}, id)
	write_byte(anim)
	write_byte(pev(id, pev_body))
	message_end()
}



ANIM yeri biraz kafani karistiracak diger arkadaslara sorarsin olmadi umarim aciklayici anlatmisindir baktik anlamadin daha detayli anlatirim pek zamanim yok. iyi oyunlar
denendimi bu konu sahibi bilgi verebilirmi

Link:
Linklerini gizle
Linki Kopyala
Kullanıcı avatarı

ByBuLuT ☪
Mesajlar: 2368
Kayıt: Sal Oca 26, 2016 3:54 pm
Konum: Samsun
Clan İsmi: -
İletişim:

Silah ses...

Mesaj gönderen ByBuLuT ☪ »

Menedit yazdı: Pzt Mar 11, 2019 11:54 am
PaZee yazdı: Pzt Mar 13, 2017 4:53 pm buyur dene.

Kod: Tümünü seç

#include <amxmodx>
#include <fakemeta>
#include <fakemeta_util>
#include <hamsandwich>
#include <cstrike>
#include <colorchat>


// yaptigim ayarlar m4a1 ayarlari hasarini ellemedim.           Buyuk ihtimal m4a1 kendi akisiyla olmayacak . scsini felan yaptik ama bakicaz.

#define PLUGIN "M4a1-III"
#define VERSION "1.0"
#define AUTHOR "Dias & Optimist"

#define V_MODEL "models/v_m4a1.mdl" // Oyuncunun gorecegi model
#define P_MODEL "models/p_m4a1.mdl" // disardan biri oyuncunun elinde gorecegi model
#define W_MODEL "models/w_m4a1.mdl" // dunyada yerde gozukucek model

#define DAMAGE 30 // hasari
#define BPAMMO 240 // mermisi
#define ACTIVE_CLIP 15

#define CSW_M4A13 CSW_MP5NAVY
#define weapon_m4a13 "weapon_mp5navy"

#define WEAPON_SECRETCODE 4962
#define WEAPON_EVENT "events/m4a1.sc"
#define OLD_W_MODEL "models/w_m4a1.mdl"

new const M4a13_Sounds[6][] =
{
	"weapons/balrig3-1.wav", // sesleri kendin ayarlarsin
	"weapons/balrig3-2.wav",
	"weapons/balrig3_boltpull.wav",
	"weapons/balrig3_clipin.wav",
	"weapons/balrig3_clipout.wav",
	"weapons/balrig3_draw.wav"
}

#define EXPLOSE_SPR "sprites/rifle_smoke1.spr" // silah ucundan cikacak efekt

enum
{                              
	ANIM_IDLE = 0, // HLMW ile yapacagin silahin dosyasini ac efe sequanceye bas animation sequancenin altinda idle felan yazar ne yaziyorsa buraya ANIM_IDLE yaz diyelim ismi ATES1 Buraya ANIM_ATES1 yaz butun 
	ANIM_DRAW, // silahi baska mermi cekme efekti                                     yeni bir efekt ekleme sadece burdakilere gore silahtaki efektleri sec ctrlf degistir ANIM_DRAW ve butun smadaki ANIM_DRAW lari kendi hlmvde yazanla degistir yoksa akisi bozar ve sv coker.
	ANIM_RELOAD, // silah degistirme
	ANIM_SHOOT1, // ates 1
	ANIM_SHOOT2 // ates 2
}

new g_Had_M4a13[33], g_Shoot_Special[33], g_Holding_Attack[33], g_Shoot_Count[33], g_Old_Weapon[33], g_Current_Weapon[33]
new g_Exp_SprId, g_m4a13_event, g_ShellId, g_SmokePuff_SprId, cvar_m4a1_fiyat

public plugin_init() 
{
	register_plugin(PLUGIN, VERSION, AUTHOR)
	
	register_event("CurWeapon", "Event_CurWeapon", "be", "1=1")
	register_event("HLTV", "YeniTur", "a", "1=0", "2=0")
	register_clcmd("say /m4a1","bio_extra_item_selected")
	register_clcmd("say_team /m4a1","bio_extra_item_selected")
	
	register_forward(FM_UpdateClientData, "fw_UpdateClientData_Post", 1)	
	register_forward(FM_PlaybackEvent, "fw_PlaybackEvent")	
	register_forward(FM_SetModel, "fw_SetModel")
	register_forward(FM_CmdStart, "fw_CmdStart")		
	
	RegisterHam(Ham_TraceAttack, "worldspawn", "fw_TraceAttack")
	RegisterHam(Ham_TraceAttack, "player", "fw_TraceAttack")	
	RegisterHam(Ham_Weapon_PrimaryAttack, weapon_m4a13, "fw_Weapon_PrimaryAttack")
	RegisterHam(Ham_Weapon_PrimaryAttack, weapon_m4a13, "fw_Weapon_PrimaryAttack_Post", 1)
	RegisterHam(Ham_Item_AddToPlayer, weapon_m4a13, "fw_Item_AddToPlayer_Post", 1)

	cvar_m4a1_fiyat = register_cvar("bio_m4a1_fiyat", "16000") // alacaklari para degerini gir.
}

public plugin_precache()
{
	engfunc(EngFunc_PrecacheModel, V_MODEL)
	engfunc(EngFunc_PrecacheModel, P_MODEL)
	engfunc(EngFunc_PrecacheModel, W_MODEL)
	
	for(new i = 0; i < sizeof(M4a13_Sounds); i++)
		engfunc(EngFunc_PrecacheSound, M4a13_Sounds[i])
		
	g_Exp_SprId = engfunc(EngFunc_PrecacheModel, EXPLOSE_SPR)
	g_SmokePuff_SprId = engfunc(EngFunc_PrecacheModel, "sprites/wall_puff1.spr")
	g_ShellId = engfunc(EngFunc_PrecacheModel, "models/pshell.mdl")
	
	register_forward(FM_PrecacheEvent, "fw_PrecacheEvent_Post", 1)
}

public fw_PrecacheEvent_Post(type, const name[])
{
	if(equal(WEAPON_EVENT, name))
		g_m4a13_event = get_orig_retval()		
}
public YeniTur() {
	new players[32],inum;
	get_players(players,inum)
	for(new id;id<inum;id++) {
		g_Had_M4a13[id] = 0
	}
}
public bio_extra_item_selected(id, itemid) {
	if (!is_user_alive(id)) {
		ColorChat(id,NORMAL,"^4[Ses]:^1 ^3M4a1 Silahini^1 Alamabilmek Icin ^4Hayatta Olmaniz^1 Gereklidir.!")
		return PLUGIN_HANDLED
	}
	
	new para = cs_get_user_money(id)
	
	if (para >= get_pcvar_num(cvar_m4a1_fiyat)){
		cs_set_user_money(id, para - get_pcvar_num(cvar_m4a1_fiyat))
		Get_M4a13(id)
		ColorChat(id,NORMAL,"^4[Ses]:^1 ^3M4a1 Silahini^1 Satin Aldiniz.!")
	}else {
		ColorChat(id,NORMAL,"^4[Ses]:^1 M4a1 Silahini Almak Icin ^4Yeterli Paraniz^1 Yok. ^4Silahin Degeri: ^1^3%d^1 TL ", get_pcvar_num(cvar_m4a1_fiyat))
	}
	return PLUGIN_HANDLED
}
public event_infect(id) Remove_M4a13(id)
public Get_M4a13(id) {
	if(!is_user_alive(id))
		return
		
	g_Had_M4a13[id] = 1
	g_Shoot_Special[id] = 0
	g_Holding_Attack[id] = 0
	g_Shoot_Count[id] = 0
	
	fm_give_item(id, weapon_m4a13)
	
	cs_set_user_bpammo(id, CSW_M4A13, BPAMMO)
}
public Remove_M4a13(id) {
	if(!is_user_connected(id))
		return
		
	g_Had_M4a13[id] = 0
	g_Shoot_Special[id] = 0	
}
public Event_CurWeapon(id) {
	if(!is_user_alive(id))
		return
	
	if(get_user_weapon(id) != g_Current_Weapon[id]) g_Current_Weapon[id] = get_user_weapon(id)
	
	if(get_user_weapon(id) == CSW_M4A13 && g_Had_M4a13[id]) {
		if(g_Old_Weapon[id] != CSW_M4A13) {
			set_pev(id, pev_viewmodel2, V_MODEL)
			set_pev(id, pev_weaponmodel2, P_MODEL)
		}
	}
	
	g_Old_Weapon[id] = get_user_weapon(id)
}
public fw_UpdateClientData_Post(id, sendweapons, cd_handle) {
	if(!is_user_alive(id) || !is_user_connected(id))
		return FMRES_IGNORED	
	if(get_user_weapon(id) == CSW_M4A13 && g_Had_M4a13[id])
		set_cd(cd_handle, CD_flNextAttack, get_gametime() + 0.001) 
	
	return FMRES_HANDLED
}
public fw_PlaybackEvent(flags, invoker, eventid, Float:delay, Float:origin[3], Float:angles[3], Float:fparam1, Float:fparam2, iParam1, iParam2, bParam1, bParam2) {
	if (!is_user_connected(invoker))
		return FMRES_IGNORED	
	if(get_user_weapon(invoker) != CSW_M4A13 || !g_Had_M4a13[invoker])
		return FMRES_IGNORED
	if(eventid != g_m4a13_event)
		return FMRES_IGNORED
	
	engfunc(EngFunc_PlaybackEvent, flags | FEV_HOSTONLY, invoker, eventid, delay, origin, angles, fparam1, fparam2, iParam1, iParam2, bParam1, bParam2)
	
	if(!g_Shoot_Special[invoker] && cs_get_user_bpammo(invoker, CSW_M4A13) > 0) {
		g_Shoot_Count[invoker]++
		if(g_Shoot_Count[invoker] >= ACTIVE_CLIP) {
			g_Shoot_Special[invoker] = 1
			
			static Ent; Ent = fm_get_user_weapon_entity(invoker, CSW_M4A13)
			if(pev_valid(Ent)) g_Shoot_Count[invoker] = cs_get_weapon_ammo(Ent)
		}
	} else if(g_Shoot_Special[invoker]) {
		cs_set_user_bpammo(invoker, CSW_M4A13, cs_get_user_bpammo(invoker, CSW_M4A13) - 1)
		
		if(cs_get_user_bpammo(invoker, CSW_M4A13) <= 0) {
			g_Shoot_Special[invoker] = 0
			g_Shoot_Count[invoker] = 0
		}
	}
	
	set_weapon_anim(invoker, g_Shoot_Special[invoker] == 1 ? ANIM_SHOOT2 : ANIM_SHOOT1)
	emit_sound(invoker, CHAN_WEAPON, g_Shoot_Special[invoker] == 1 ? M4a13_Sounds[1] : M4a13_Sounds[0], VOL_NORM, ATTN_NORM, 0, PITCH_NORM)
	
	Eject_Shell(invoker, g_ShellId, 0.0)
		
	return FMRES_SUPERCEDE
}
public fw_SetModel(entity, model[]) {
	if(!pev_valid(entity))
		return FMRES_IGNORED
	
	static Classname[32]
	pev(entity, pev_classname, Classname, sizeof(Classname))
	
	if(!equal(Classname, "weaponbox"))
		return FMRES_IGNORED
	
	static iOwner
	iOwner = pev(entity, pev_owner)
	
	if(equal(model, OLD_W_MODEL)) {
		static weapon; weapon = fm_find_ent_by_owner(-1, weapon_m4a13, entity)
		
		if(!pev_valid(weapon))
			return FMRES_IGNORED;
		
		if(g_Had_M4a13[iOwner]) {
			Remove_M4a13(iOwner)
			
			set_pev(weapon, pev_impulse, WEAPON_SECRETCODE)
			engfunc(EngFunc_SetModel, entity, W_MODEL)
			
			return FMRES_SUPERCEDE
		}
	}

	return FMRES_IGNORED;
}
public fw_CmdStart(id, uc_handle, seed) {
	if(!is_user_alive(id))
		return
	if(g_Current_Weapon[id] != CSW_M4A13 || !g_Had_M4a13[id])
		return
		
	static NewButton; NewButton = get_uc(uc_handle, UC_Buttons)
	static OldButton; OldButton = pev(id, pev_oldbuttons)
	
	if(NewButton & IN_ATTACK) {
		if(!g_Holding_Attack[id]) g_Holding_Attack[id] = 1
	} else if((NewButton & IN_ATTACK2) && !(OldButton & IN_ATTACK2)) {
		if(cs_get_user_zoom(id) == 1) cs_set_user_zoom(id, CS_SET_AUGSG552_ZOOM, 1)
		else cs_set_user_zoom(id, CS_SET_NO_ZOOM, 1)
	} else {
		if(OldButton & IN_ATTACK)
		{
			if(g_Holding_Attack[id]) 
			{
				g_Holding_Attack[id] = 0
				g_Shoot_Count[id] = 0
				g_Shoot_Special[id] = 0
			}
		}
	}
}
public fw_TraceAttack(Victim, Attacker, Float:Damage, Float:Direction[3], Ptr, DamageBits) {
	if(!is_user_alive(Attacker))
		return HAM_IGNORED	
	if(get_user_weapon(Attacker) != CSW_M4A13 || !g_Had_M4a13[Attacker])
		return HAM_IGNORED
		
	static Float:flEnd[3], Float:vecPlane[3]
	
	get_tr2(Ptr, TR_vecEndPos, flEnd)
	get_tr2(Ptr, TR_vecPlaneNormal, vecPlane)		
		
	if(!is_user_alive(Victim)) {
		Make_BulletHole(Attacker, flEnd, Damage)
		Make_BulletSmoke(Attacker, Ptr)
	}
	
	if(g_Shoot_Special[Attacker]) {
		Make_M4a1Effect(Attacker, Ptr)
		radius_damage(Attacker, flEnd, float(DAMAGE), 96.0)
	}
	
	SetHamParamFloat(3, float(DAMAGE))
	
	return HAM_IGNORED
}
public fw_Weapon_PrimaryAttack(Ent) {
	if(!pev_valid(Ent))
		return
	static Id; Id = pev(Ent, pev_owner)
	if(!g_Had_M4a13[Id])
		return
	
	if(g_Shoot_Special[Id]) set_pdata_float(Ent, 62, 0.4, 4)
	else set_pdata_float(Ent, 62, 0.2, 4)
}
public fw_Weapon_PrimaryAttack_Post(Ent) {
	if(!pev_valid(Ent))
		return
	static Id; Id = pev(Ent, pev_owner)
	if(!g_Had_M4a13[Id])
		return
	
	if(g_Shoot_Special[Id] && cs_get_weapon_ammo(Ent) > 0) {
		cs_set_weapon_ammo(Ent, g_Shoot_Count[Id])
		set_pdata_float(Ent, 46, get_pdata_float(Ent, 46, 4) * 0.75, 4)	
	}
}
public fw_Item_AddToPlayer_Post(ent, id) {
	if(!pev_valid(ent))
		return HAM_IGNORED
		
	if(pev(ent, pev_impulse) == WEAPON_SECRETCODE) {
		g_Had_M4a13[id] = 1
		set_pev(ent, pev_impulse, 0)
	}		

	return HAM_HANDLED	
}
stock Make_BulletHole(id, Float:Origin[3], Float:Damage) {
	// Find target
	static Decal; Decal = random_num(41, 45)
	static LoopTime; 
	
	if(Damage > 100.0) LoopTime = 2
	else LoopTime = 1
	
	for(new i = 0; i < LoopTime; i++) {
		// Put decal on "world" (a wall)
		message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
		write_byte(TE_WORLDDECAL)
		engfunc(EngFunc_WriteCoord, Origin[0])
		engfunc(EngFunc_WriteCoord, Origin[1])
		engfunc(EngFunc_WriteCoord, Origin[2])
		write_byte(Decal)
		message_end()
		
		// Show sparcles
		message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
		write_byte(TE_GUNSHOTDECAL)
		engfunc(EngFunc_WriteCoord, Origin[0])
		engfunc(EngFunc_WriteCoord, Origin[1])
		engfunc(EngFunc_WriteCoord, Origin[2])
		write_short(id)
		write_byte(Decal)
		message_end()
	}
}
public Make_BulletSmoke(id, TrResult) {
	static Float:vecSrc[3], Float:vecEnd[3], TE_FLAG
	
	get_weapon_attachment(id, vecSrc)
	global_get(glb_v_forward, vecEnd)
    
	xs_vec_mul_scalar(vecEnd, 8192.0, vecEnd)
	xs_vec_add(vecSrc, vecEnd, vecEnd)

	get_tr2(TrResult, TR_vecEndPos, vecSrc)
	get_tr2(TrResult, TR_vecPlaneNormal, vecEnd)
    
	xs_vec_mul_scalar(vecEnd, 2.5, vecEnd)
	xs_vec_add(vecSrc, vecEnd, vecEnd)
    
	TE_FLAG |= TE_EXPLFLAG_NODLIGHTS
	TE_FLAG |= TE_EXPLFLAG_NOSOUND
	TE_FLAG |= TE_EXPLFLAG_NOPARTICLES
	
	engfunc(EngFunc_MessageBegin, MSG_PAS, SVC_TEMPENTITY, vecEnd, 0)
	write_byte(TE_EXPLOSION)
	engfunc(EngFunc_WriteCoord, vecEnd[0])
	engfunc(EngFunc_WriteCoord, vecEnd[1])
	engfunc(EngFunc_WriteCoord, vecEnd[2] - 10.0)
	write_short(g_SmokePuff_SprId)
	write_byte(2)
	write_byte(50)
	write_byte(TE_FLAG)
	message_end()
}
public Make_M4a1Effect(id, TrResult) {
	static Float:vecSrc[3], Float:vecEnd[3], TE_FLAG
	
	get_weapon_attachment(id, vecSrc)
	global_get(glb_v_forward, vecEnd)
    
	xs_vec_mul_scalar(vecEnd, 8192.0, vecEnd)
	xs_vec_add(vecSrc, vecEnd, vecEnd)

	get_tr2(TrResult, TR_vecEndPos, vecSrc)
	get_tr2(TrResult, TR_vecPlaneNormal, vecEnd)
    
	xs_vec_mul_scalar(vecEnd, 5.0, vecEnd)
	xs_vec_add(vecSrc, vecEnd, vecEnd)
    
	TE_FLAG |= TE_EXPLFLAG_NODLIGHTS
	TE_FLAG |= TE_EXPLFLAG_NOSOUND
	TE_FLAG |= TE_EXPLFLAG_NOPARTICLES
	
	engfunc(EngFunc_MessageBegin, MSG_PAS, SVC_TEMPENTITY, vecEnd, 0)
	write_byte(TE_EXPLOSION)
	engfunc(EngFunc_WriteCoord, vecEnd[0])
	engfunc(EngFunc_WriteCoord, vecEnd[1])
	engfunc(EngFunc_WriteCoord, vecEnd[2])
	write_short(g_Exp_SprId)
	write_byte(5)
	write_byte(30)
	write_byte(TE_FLAG)
	message_end()
}
stock get_weapon_attachment(id, Float:output[3], Float:fDis = 40.0) { 
	new Float:vfEnd[3], viEnd[3] 
	get_user_origin(id, viEnd, 3)  
	IVecFVec(viEnd, vfEnd) 
	
	new Float:fOrigin[3], Float:fAngle[3]
	
	pev(id, pev_origin, fOrigin) 
	pev(id, pev_view_ofs, fAngle)
	
	xs_vec_add(fOrigin, fAngle, fOrigin) 
	
	new Float:fAttack[3]
	
	xs_vec_sub(vfEnd, fOrigin, fAttack)
	xs_vec_sub(vfEnd, fOrigin, fAttack) 
	
	new Float:fRate
	
	fRate = fDis / vector_length(fAttack)
	xs_vec_mul_scalar(fAttack, fRate, fAttack)
	
	xs_vec_add(fOrigin, fAttack, output)
}
stock radius_damage(id, Float:Origin[3], Float:Damage, Float:Radius) {
	static Victim; Victim = -1

	while((Victim = engfunc(EngFunc_FindEntityInSphere, Victim, Origin, Radius)) != 0) {
		if(!is_user_alive(Victim) || id == Victim) 
			continue

		ExecuteHamB(Ham_TakeDamage, Victim, fm_get_user_weapon_entity(id, get_user_weapon(id)), id, Damage, DMG_BULLET)
	}
}
stock Eject_Shell(id, Shell_ModelIndex, Float:Time)  {
	static Ent; Ent = get_pdata_cbase(id, 373, 5)
	if(!pev_valid(Ent))
		return

        set_pdata_int(Ent, 57, Shell_ModelIndex, 4)
        set_pdata_float(id, 111, get_gametime() + Time)
}
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, {0, 0, 0}, id)
	write_byte(anim)
	write_byte(pev(id, pev_body))
	message_end()
}



ANIM yeri biraz kafani karistiracak diger arkadaslara sorarsin olmadi umarim aciklayici anlatmisindir baktik anlamadin daha detayli anlatirim pek zamanim yok. iyi oyunlar
denendimi bu konu sahibi bilgi verebilirmi
2 yıl geçmiş ama pazee yazdıysa çalışmıştır

Link:
Linklerini gizle
Linki Kopyala
Kilitli