Cerere Arma CSO[rezolvat]

Categoria cu cereri de pluginuri si nu numai.

Moderators: Moderatori ajutatori, Moderatori, Echipa eXtreamCS.com

Forum rules
Accesează link-ul pentru a putea vedea regulile forumului

Daca doriti sa vi se modifice un plugin, va rugam postati aici .
Post Reply
PyKw
Membru, skill 0
Membru, skill 0
Posts: 71
Joined: 05 Aug 2010, 23:04
Detinator Steam: Nu
CS Status: Citesc forumul eXtreamCS.com!
Has thanked: 11 times
Been thanked: 2 times
Contact:

20 Jul 2014, 02:52

Descriere plugin cerut: Sa dorii si eu pluginul acela pentru arma aia CSO: Dual Barrel
Alte informatii: Precizez inca odata Dual Barrel nu cel Quad Barrel.
RoyalServer
User avatar
Chris Duskblade
Utilizator neserios (tepar)
Utilizator neserios (tepar)
Posts: 2780
Joined: 18 Jun 2013, 16:46
Detinator Steam: Da
Reputatie: Fost super moderator
Nume anterior: Cristinel.
Utilizator neserios (tepar)
Location: Timișoara
Has thanked: 62 times
Been thanked: 15 times
Contact:

20 Jul 2014, 06:22

zombie-mod.ru are tot ce iti doresti .
User avatar
EuSemakka
Membru, skill +1
Membru, skill +1
Posts: 301
Joined: 26 Nov 2013, 17:40
Detinator Steam: Da
Detinator server CS: Furien.FaraLaG.Ro
Has thanked: 38 times
Been thanked: 7 times

20 Jul 2014, 14:03

| Afiseaza codul
/////////////////////////////////////////////////////////////////////////////////////////////////////////////
//--------------------------------------| Dual Barrel |-------------------------------------------------------
//======================================= sDs|Aragon* =======================================================
#if defined DUALBARREL
DualBarrel_Init() {
	register_clcmd("furien30_dualbarrel", "Hook_DualBarrel");
	
	register_message(get_user_msgid("DeathMsg"), "DualBarrel_DeathMsg");
	
	register_event("CurWeapon", "DualBarrel_ViewModel", "be", "1=1");
	register_event("WeapPickup","DualBarrel_ViewModel","b","1=19");
	
	register_forward(FM_SetModel, "DualBarrel_WorldModel");
	register_forward(FM_UpdateClientData, "DualBarrel_UpdateClientData", 1);
	register_forward(FM_PlaybackEvent, "DualBarrel_PlaybackEvent");
	register_forward(FM_CmdStart, "DualBarrel_CmdStart");	
	
	RegisterHam(Ham_TakeDamage, "player", "DualBarrel_TakeDamage");
	RegisterHam(Ham_TraceAttack, "worldspawn", "DualBarrel_TraceAttack_Post", 1);
	RegisterHam(Ham_TraceAttack, "player", "DualBarrel_TraceAttack_Post", 1);
	RegisterHam(Ham_TraceAttack, "func_breakable", "DualBarrel_TraceAttack_Post", 1);
	RegisterHam(Ham_TraceAttack, "func_wall", "DualBarrel_TraceAttack_Post", 1);
	RegisterHam(Ham_TraceAttack, "func_door", "DualBarrel_TraceAttack_Post", 1);
	RegisterHam(Ham_TraceAttack, "func_door_rotating", "DualBarrel_TraceAttack_Post", 1);
	RegisterHam(Ham_TraceAttack, "func_plat", "DualBarrel_TraceAttack_Post", 1);
	RegisterHam(Ham_TraceAttack, "func_rotating", "DualBarrel_TraceAttack_Post", 1);
	RegisterHam(Ham_Item_Deploy , weapon_dualbarrel, "DualBarrel_Deploy_Post", 1);
	RegisterHam(Ham_Weapon_PrimaryAttack, weapon_dualbarrel, "DualBarrel_PrimaryAttack");
	RegisterHam(Ham_Weapon_PrimaryAttack, weapon_dualbarrel, "DualBarrel_PrimaryAttack_Post", 1);
	RegisterHam(Ham_Item_AddToPlayer, weapon_dualbarrel, "DualBarrel_AddToPlayer");
	RegisterHam(Ham_Weapon_Reload, weapon_dualbarrel, "DualBarrel_Reload");
	RegisterHam(Ham_Weapon_Reload, weapon_dualbarrel, "DualBarrel_Reload_Post", 1);
	RegisterHam(Ham_Item_PostFrame, weapon_dualbarrel, "DualBarrel_PostFrame");
	
	dualbarreldamage = register_cvar("furien30_dualbarrel_damage", "3");		//| DualBarrel Damage |//
	dualbarrelreloadtime = register_cvar("furien30_dualbarrel_reload_time", "1.67");	//| DualBarrel Reload Time |//
	dualbarrelrecoil = register_cvar("furien30_dualbarrel_recoil", "0.8");		//| DualBarrel Recoil |//
}

DualBarrel_Precache() {
	register_forward(FM_PrecacheEvent, "DualBarrel_Precache_PrecacheEvent_Post", 1);
	
	precache_model(DualBarrelModel_V);
	precache_model(DualBarrelModel_P);
	precache_model(DualBarrelModel_W);
	for(new i = 0; i < sizeof(DualBarrel_Sound); i++)
		engfunc(EngFunc_PrecacheSound, DualBarrel_Sound);	
	for(new i = 0; i < sizeof(DualBarrel_Generic); i++)
		engfunc(EngFunc_PrecacheGeneric, DualBarrel_Generic);
}

DualBarrel_Natives() {
	register_native("get_user_dualbarrel", "get_user_dualbarrel", 1);
	register_native("set_user_dualbarrel", "set_user_dualbarrel", 1);
}

DualBarrel_Menu( const Num[] = "1") {
	new DualBarrel[64];
	formatex(DualBarrel,sizeof(DualBarrel)-1,"\wDual Barrel");
	menu_additem(Menu, DualBarrel, Num, 0);
}

public DualBarrel_DeathMsg(msg_id, msg_dest, id) {
	static TruncatedWeapon[33], Attacker, Victim;
	
	get_msg_arg_string(4, TruncatedWeapon, charsmax(TruncatedWeapon));
	
	Attacker = get_msg_arg_int(1);
	Victim = get_msg_arg_int(2);
	
	if(!is_user_connected(Attacker) || Attacker == Victim)
		return PLUGIN_CONTINUE;
	
	if(equal(TruncatedWeapon, "m3") && get_user_weapon(Attacker) == CSW_DUALBARREL) {
		if(get_user_dualbarrel(Attacker))
			set_msg_arg_string(4, "DualBarrel");
	}
	return PLUGIN_CONTINUE;
}

public DualBarrel_ViewModel(id) {
	if(get_user_weapon(id) == CSW_DUALBARREL && get_user_dualbarrel(id)) {
		set_pev(id, pev_viewmodel2, DualBarrelModel_V);
		set_pev(id, pev_weaponmodel2, DualBarrelModel_P);
	}
}

public DualBarrel_WorldModel(entity, model[]) {
	if(!is_valid_ent(entity))
		return FMRES_IGNORED;
	
	static ClassName[33];
	entity_get_string(entity, EV_SZ_classname, ClassName, charsmax(ClassName));
	
	if(!equal(ClassName, "weaponbox"))
		return FMRES_IGNORED;
	
	new Owner = entity_get_edict(entity, EV_ENT_owner);	
	new DualBarrel = find_ent_by_owner(-1, weapon_dualbarrel, entity);
	
	if(get_user_dualbarrel(Owner) && is_valid_ent(DualBarrel) && equal(model, "models/w_m3.mdl")) {
		entity_set_int(DualBarrel, EV_INT_impulse, DUALBARREL_WEAPONKEY);
		HaveDualBarrel[Owner] = false;
		entity_set_model(entity, DualBarrelModel_W);
		return FMRES_SUPERCEDE;
	}
	return FMRES_IGNORED;
}

public DualBarrel_UpdateClientData(id, sendweapons, cd_handle) {
	if(is_user_alive(id) && is_user_connected(id)) {
		if(get_user_weapon(id) == CSW_DUALBARREL && get_user_dualbarrel(id))	
			set_cd(cd_handle, CD_flNextAttack, halflife_time() + 0.001);
	}
}

public DualBarrel_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(eventid != dualbarrel_event)
		return FMRES_IGNORED;
	
	playback_event(flags | FEV_HOSTONLY, invoker, eventid, delay, origin, angles, fparam1, fparam2, iParam1, iParam2, bParam1, bParam2);
	
	return FMRES_SUPERCEDE;
}

public DualBarrel_PrecacheEvent_Post(type, const name[]) {
	if(equal("events/m3.sc", name)) {
		dualbarrel_event = get_orig_retval();
		return FMRES_HANDLED;
	}
	return FMRES_IGNORED;
}

public DualBarrel_CmdStart(id, uc_handle, seed) {
	if(is_user_alive(id) && is_user_connected(id)) {
		static CurButton;
		CurButton = get_uc(uc_handle, UC_Buttons);
		new Float:NextAttack = get_pdata_float(id, 83, 5);
		new DualBarrel = find_ent_by_owner(-1, weapon_dualbarrel, id);
		
		if(CurButton & IN_ATTACK) {
			if(get_user_weapon(id) == CSW_DUALBARREL && get_user_dualbarrel(id)) {
				if(cs_get_weapon_ammo(DualBarrel) > 0 && !dualbarrel_reload[id] && NextAttack <= 0.0) {
					emit_sound(id, CHAN_WEAPON, DualBarrel_Sound[0], 1.0, ATTN_NORM, 0, PITCH_NORM);
					
					ExecuteHamB(Ham_Weapon_PrimaryAttack, DualBarrel);
					set_weapon_anim(id, random_num(1, 2));
					if(cs_get_weapon_ammo(DualBarrel) > 0 && !dualbarrel_reload[id] && NextAttack <= 0.0)
						set_pdata_float(id, 83, dualbarrel_shotdelay, 5);
				}
			}
		}
		if(CurButton & IN_ATTACK2) {
			if(get_user_weapon(id) == CSW_DUALBARREL && get_user_dualbarrel(id)) {
				if(cs_get_weapon_ammo(DualBarrel) > 0 && !dualbarrel_reload[id] && NextAttack <= 0.0) {
					static Ammo;
					Ammo = cs_get_weapon_ammo(DualBarrel);
					emit_sound(id, CHAN_WEAPON, DualBarrel_Sound[0], 1.0, ATTN_NORM, 0, PITCH_NORM);
					for(new i = 0; i < Ammo; i++) {
						ExecuteHamB(Ham_Weapon_PrimaryAttack, DualBarrel);
					}
					set_weapon_anim(id, random_num(1, 2));	
					if(cs_get_weapon_ammo(DualBarrel) > 0 && !dualbarrel_reload[id] && NextAttack <= 0.0)
						set_pdata_float(id, 83, dualbarrel_shotdelay, 5);
				}
			}
		}
	}
}

public DualBarrel_TakeDamage(victim, inflictor, attacker, Float:damage, damagetype) {
	if(is_user_connected(attacker) && !(damagetype & DMG_HEGRENADE)) {
		if(get_user_weapon(attacker) == CSW_DUALBARREL && get_user_dualbarrel(attacker)) {
			SetHamParamFloat(4, damage * get_pcvar_float(dualbarreldamage));
		}
	}
}

public DualBarrel_TraceAttack_Post(ent, attacker, Float:Damage, Float:Dir[3], pentru, DamageType) {
	if(!is_user_alive(attacker) || !is_user_connected(attacker))
		return HAM_IGNORED;
	if(get_user_weapon(attacker) != CSW_DUALBARREL)
		return HAM_IGNORED;
	if(!get_user_dualbarrel(attacker))
		return HAM_IGNORED;
	
	static Float:End[3];
	get_tr2(pentru, TR_vecEndPos, End);
	
	make_bullet(attacker, End);
	
	return HAM_HANDLED;
}

public DualBarrel_AddToPlayer(Weapon, id) {
	if(is_valid_ent(Weapon) && is_user_connected(id) && entity_get_int(Weapon, EV_INT_impulse) == DUALBARREL_WEAPONKEY) {
		HaveDualBarrel[id] = true;
		entity_set_int(Weapon, EV_INT_impulse, 0);
		WeaponList(id, DUALBARREL_WEAPONKEY)
	}
}

public DualBarrel_Deploy_Post(entity) {
	static Owner;
	Owner = get_pdata_cbase(entity, 41, 4);
	if(get_user_dualbarrel(Owner)) {
		set_pev(Owner, pev_viewmodel2, DualBarrelModel_V);
		set_pev(Owner, pev_weaponmodel2, DualBarrelModel_P);
		set_pdata_float(Owner, 83, 1.1, 5);
		set_weapon_anim(Owner, 4);
		static clip;
		clip = cs_get_weapon_ammo(entity);
		if(clip > 0)
			dualbarrel_reload[Owner] = 0;
	}
}

public DualBarrel_PrimaryAttack(Weapon) {
	new id = get_pdata_cbase(Weapon, 41, 4);
	
	if(get_user_dualbarrel(id)) {
		pev(id,pev_punchangle,cl_pushangle[id]);
		dualbarrel_clip[id] = cs_get_weapon_ammo(Weapon);
	}
}

public DualBarrel_PrimaryAttack_Post(Weapon) {
	new id = get_pdata_cbase(Weapon, 41, 4);
	new ActiveItem = get_pdata_cbase(id, 373);
	
	if(dualbarrel_clip[id] > 0 && pev_valid(ActiveItem)) {
		if(is_user_alive(id) && get_user_dualbarrel(id)) {
			set_pdata_int(ActiveItem, 57, Shell, 4) ;
			set_pdata_float(id, 111, get_gametime());
			
			new Float:Push[3];
			pev(id,pev_punchangle,Push);
			xs_vec_sub(Push,cl_pushangle[id],Push);
			
			xs_vec_mul_scalar(Push,get_pcvar_float(dualbarrelrecoil),Push);
			xs_vec_add(Push,cl_pushangle[id],Push);
			set_pev(id,pev_punchangle,Push);
			
			emit_sound(id, CHAN_WEAPON, DualBarrel_Sound[0], VOL_NORM, ATTN_NORM, 0, PITCH_NORM);
			set_weapon_anim(id, random_num(1,2));
		}
	}
}

public DualBarrel_Reload(ent) {
	if(!pev_valid(ent))
		return HAM_IGNORED;
	
	new id;
	id = pev(ent, pev_owner);
	
	if(!is_user_alive(id) || !get_user_dualbarrel(id))
		return HAM_IGNORED;
	
	dualbarrel_clip[id] = -1;
	
	new Ammo = cs_get_user_bpammo(id, CSW_DUALBARREL);
	if(Ammo <= 0)
		return HAM_SUPERCEDE;
	
	new Clip = get_pdata_int(ent, 51, 4);
	if(Clip >= 2)
		return HAM_SUPERCEDE;
	
	dualbarrel_clip[id] = Clip;
	dualbarrel_reload[id] = 1;
	
	return HAM_IGNORED;
}

public DualBarrel_Reload_Post(ent) {
	if(!pev_valid(ent))
		return HAM_IGNORED;
	
	new id;
	id = pev(ent, pev_owner);
	
	if(!is_user_alive(id) || !get_user_dualbarrel(id))
		return HAM_IGNORED;
	
	if(dualbarrel_clip[id] == -1)
		return HAM_IGNORED;
	
	new Float:reload_time = get_pcvar_float(dualbarrelreloadtime);
	
	set_pdata_int(ent, 51, dualbarrel_clip[id], 4);
	set_pdata_float(ent, 48, reload_time, 4);
	set_pdata_float(id, 83, reload_time, 5);
	set_pdata_int(ent, 54, 1, 4);
	set_weapon_anim(id, 3);
	return HAM_IGNORED;
}

public DualBarrel_PostFrame(ent) {
	if(!pev_valid(ent))
		return HAM_IGNORED;
	
	new id;
	id = pev(ent, pev_owner);
	
	if(!is_user_alive(id) || !get_user_dualbarrel(id))
		return HAM_IGNORED;
	
	new Float:NextAttack = get_pdata_float(id, 83, 5);
	new Ammo = cs_get_user_bpammo(id, CSW_DUALBARREL);
	
	new Clip = get_pdata_int(ent, 51, 4);
	new InReload = get_pdata_int(ent, 54, 4);
	
	if(InReload && NextAttack <= 0.0) {
		new Temp = min(2 - Clip, Ammo);
		
		set_pdata_int(ent, 51, Clip + Temp, 4);
		cs_set_user_bpammo(id, CSW_DUALBARREL, Ammo - Temp);		
		set_pdata_int(ent, 54, 0, 4);
		
		InReload = 0;
		dualbarrel_reload[id] = 0;
	}		
	
	return HAM_IGNORED;
}

public Hook_DualBarrel(id) {
	engclient_cmd(id, weapon_dualbarrel);
}

public get_user_dualbarrel(id) {
	return HaveDualBarrel[id];
}

public set_user_dualbarrel(id, dualbarrel) {
	if(dualbarrel) {
		if(!HaveDualBarrel[id]) {
			drop_primary_weapons(id);
			HaveDualBarrel[id] = true;
			dualbarrel_reload[id] = 0;
			WeaponList(id, DUALBARREL_WEAPONKEY)
			fm_give_item(id, weapon_dualbarrel);
			new clip = fm_get_user_weapon_entity(id, CSW_DUALBARREL);
			cs_set_weapon_ammo(clip, 2);
		}
	}
	else {
		if(HaveDualBarrel[id]) {
			HaveDualBarrel[id] = false;
		}
	}
}
#endif
PyKw
Membru, skill 0
Membru, skill 0
Posts: 71
Joined: 05 Aug 2010, 23:04
Detinator Steam: Nu
CS Status: Citesc forumul eXtreamCS.com!
Has thanked: 11 times
Been thanked: 2 times
Contact:

20 Jul 2014, 15:44

Am cautat pe zombie-mod.ru, dar nu am gasit ceea ce vreau eu. Am vazut pe un server de furien (furien.*****.ro) ca au un dual barrel care atunci cand apesi pe click stanga trage toate gloantele deodata. Ala il vreau si eu. Daca poate cineva sa imi lase sursa, multumesc.
Last edited by Cosmin on 20 Jul 2014, 15:46, edited 1 time in total.
Reason: #Editat,ai grija cu reclamele !
PyKw
Membru, skill 0
Membru, skill 0
Posts: 71
Joined: 05 Aug 2010, 23:04
Detinator Steam: Nu
CS Status: Citesc forumul eXtreamCS.com!
Has thanked: 11 times
Been thanked: 2 times
Contact:

20 Jul 2014, 17:45

Rezolvat, puteti da T/C.
Post Reply

Return to “Cereri”

  • Information
  • Who is online

    Users browsing this forum: No registered users and 33 guests