Solved Janus 7 change

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

Janus 7 change

#1

Post by czirimbolo » 5 years ago

Can someone change (lower) the duration of electricity mode or tell me where I can change it? Also can someone block this electricty mode from damaging zombies in freeze time?

Code: Select all

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

#define get_bit(%1,%2)		(%1 & (1 << (%2 & 31)))
#define set_bit(%1,%2)		%1 |= (1 << (%2 & 31))
#define reset_bit(%1,%2)	%1 &= ~(1 << (%2 & 31))

#define EV_INT_WEAPONKEY	EV_INT_impulse
#define WEAPONKEY 7
#define JANUS7_CLIPAMMO	200
#define JANUS7_BPAMMO	200
#define JANUS7_DAMAGE	50
#define SHOTS_NEED	8
#define RELOAD_TIME 4.7
#define wId CSW_M249

#define JANUS7_VMODEL "models/zombie_escape/v_janus7.mdl"
#define JANUS7_PMODEL "models/zombie_escape/p_janus7.mdl"
#define JANUS7_WMODEL "models/zombie_escape/w_janus7.mdl"  

new g_SmokePuff_SprId
new id 
new const Fire_snd[][] = {"weapons/janus7-1.wav", "weapons/janus7-2.wav"};
new const went[] ="weapon_m249";
new const GUNSHOT_DECALS[] = { 41, 42, 43, 44, 45 };

new  g_iItemID,g_mode[33], g_shots[33], g_sprite, g_sprite1, g_target[33],
          g_sound[33],g_has_janus7[33],g_orig_event_janus7, g_clip_ammo[33],
          Float:cl_pushangle[33][3], m_iBlood[2], g_janus7_TmpClip[33], g_bitsMuzzleFlash, g_iEntity;

public plugin_init()
{
	register_plugin("Janus-7",		"1.0",		"kademik");
	register_clcmd("weapon_janus7", "Hook_Select");
	
	register_event("CurWeapon",	"CurrentWeapon",	"be","1=1");
	g_iItemID = ze_register_item("Janus 7", 50, 0)  
	
	RegisterHam(Ham_Item_AddToPlayer,	went,	 	"fw_janus7_AddToPlayer");
	RegisterHam(Ham_Item_Deploy,		went,	 	"fw_Item_Deploy_Post", 1);
	RegisterHam(Ham_Weapon_PrimaryAttack,	went,	 	"fw_janus7_PrimaryAttack");
	RegisterHam(Ham_Weapon_PrimaryAttack,	went,	 	"fw_janus7_PrimaryAttack_Post", 1);
	RegisterHam(Ham_Item_PostFrame,		went,	 	"janus7__ItemPostFrame");
	RegisterHam(Ham_Weapon_Reload,		went, 		"janus7__Reload");
	RegisterHam(Ham_Weapon_Reload,		went, 		"janus7__Reload_Post", 1);
	RegisterHam(Ham_TakeDamage, 		"player",	 "fw_TakeDamage");
	
	register_forward(FM_AddToFullPack,	 "CPlayer__AddToFullPack_post", 1);
	register_forward(FM_CheckVisibility,	 "CEntity__CheckVisibility");
	register_forward(FM_SetModel,		 "fw_SetModel");
	register_forward(FM_UpdateClientData,	 "fw_UpdateClientData_Post", 1);
	register_forward(FM_PlaybackEvent,	 "fwPlaybackEvent"); 	
}

public plugin_precache()
{
	precache_model(JANUS7_VMODEL);
	precache_model(JANUS7_PMODEL);
	precache_model(JANUS7_WMODEL);
	g_sprite = precache_model("sprites/ls/lgtning.spr");
	g_sprite1 = precache_model("sprites/ls/colflare.spr");
	precache_generic( "sprites/weapon_janus7.txt" );
	precache_generic( "sprites/ls/640hud7.spr" );
	precache_generic( "sprites/ls/640hud12.spr" );
	precache_generic( "sprites/ls/640hud99.spr" );

	precache_sound(Fire_snd[0]);
	precache_sound(Fire_snd[1]);
	precache_sound("weapons/janus7_change1.wav");
	precache_sound("weapons/janus7_change2.wav");
	
	m_iBlood[0] = precache_model("sprites/blood.spr");
	m_iBlood[1] = precache_model("sprites/bloodspray.spr");
	precache_model("sprites/ls/muzzleflash_janus7.spr");
	g_SmokePuff_SprId = engfunc(EngFunc_PrecacheModel, "sprites/wall_puff1.spr");
	g_iEntity = create_entity("info_target");
	
	entity_set_model(g_iEntity, "sprites/ls/muzzleflash_janus7.spr");
	
	entity_set_float(g_iEntity, EV_FL_scale, 0.1);
	
	entity_set_int(g_iEntity, EV_INT_rendermode, kRenderTransTexture);
	entity_set_float(g_iEntity, EV_FL_renderamt, 0.0);

	
	register_forward(FM_PrecacheEvent, "fwPrecacheEvent_Post", 1);
	
}

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

public Hook_Select(id)
{
	engclient_cmd(id, went);
	return PLUGIN_HANDLED;
}


public client_connect(id)
{
	g_has_janus7[id] = false;
}

public client_disconnected(id)
{
	g_has_janus7[id] = false;
} 

public ze_user_infected(iVictim, iInfector) 
{
	if (ze_is_user_zombie(id)) 
	{
		g_has_janus7[id] = false;
		g_sound[id] = false;
		emit_sound(id, CHAN_WEAPON, Fire_snd[g_mode[id]], 0.0, ATTN_NORM, 0, PITCH_NORM);
		g_mode[id] = false;
		g_shots[id] = false;
	}
}

public fw_SetModel(entity, model[])
{
	if(!is_valid_ent(entity))
		return FMRES_IGNORED;
		
	static szClassName[33];
	entity_get_string(entity, EV_SZ_classname, szClassName, charsmax(szClassName));
	if(!equal(szClassName, "weaponbox"))
		return FMRES_IGNORED;
	static iOwner;
	iOwner = entity_get_edict(entity, EV_ENT_owner);
	if(equal(model, "models/w_m249.mdl"))
	{
		static iStoredSVDID;
		iStoredSVDID = find_ent_by_owner(-1, went, entity);
		if(!is_valid_ent(iStoredSVDID))
			return FMRES_IGNORED;
		if(g_has_janus7[iOwner])
		{
			entity_set_int(iStoredSVDID, EV_INT_WEAPONKEY, WEAPONKEY);
			g_has_janus7[iOwner] = false;
			entity_set_model(entity, JANUS7_WMODEL);
			g_mode[iOwner] = false;
			g_shots[iOwner] = false;
			remove_task(iOwner+1231);
			return FMRES_SUPERCEDE;
		}
	}
	return FMRES_IGNORED;
}

public CEntity__CheckVisibility(iEntity, pSet)
{
	if (iEntity != g_iEntity)
		return FMRES_IGNORED;
	
	forward_return(FMV_CELL, 1);
	
	return FMRES_SUPERCEDE;
}


public give_janus7(id)
{
	drop_weapons(id, 1);
	new iWep2 = fm_give_item(id,went);
	if( iWep2 > 0 )
	{
		cs_set_weapon_ammo(iWep2, JANUS7_CLIPAMMO);
		cs_set_user_bpammo (id, wId, JANUS7_BPAMMO);
	}
	g_has_janus7[id] = true;
	g_shots[id] = 0;
	g_mode[id] = false;
	Sprite(id, 1);
}

public ze_select_item_pre(id, itemid) 
{
    // This not our item?
    if (itemid != g_iItemID)
        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
   
    // Finally return that it's available
    return ZE_ITEM_AVAILABLE
} 

public ze_select_item_post(id, itemid)
{
    // This is not our item, Block it here and don't execute the blew code
    if (itemid != g_iItemID)
        return
	
    give_janus7(id);        
}

public fw_janus7_AddToPlayer(janus7, id)
{
	if(!is_valid_ent(janus7) || !is_user_connected(id))
		return HAM_IGNORED;
		
	if(entity_get_int(janus7, EV_INT_WEAPONKEY) == WEAPONKEY)
	{
		g_has_janus7[id] = true;
		g_mode[id] = false;
		g_shots[id] = 0;
		g_sound[id] = 0;
		entity_set_int(janus7, EV_INT_WEAPONKEY, 0);
		Sprite(id, 1);
		return HAM_HANDLED;
	}
	else Sprite(id, 0);
	return HAM_IGNORED;
}

public fw_Item_Deploy_Post(weapon_ent)
{
	static owner;
	owner = pev(weapon_ent, pev_owner);
	static weaponid;
	weaponid = cs_get_weapon_id(weapon_ent);
	replace_weapon_models(owner, weaponid);
}

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

replace_weapon_models(id, weaponid)
{
    static g_wpn[33];
    switch (weaponid)
    {
        case wId:
        {
            if(is_user_alive(id) && is_user_connected(id) && g_has_janus7[id])
            {
                if (ze_is_user_zombie(id))
                    return;
               
                if(g_wpn[id] != CSW_M249){
                    if( g_mode[id]) UTIL_PlayWeaponAnimation(id, 8);
                    else UTIL_PlayWeaponAnimation(id, g_shots[id]>50?14:2);
                }
                set_pev(id, pev_viewmodel2, JANUS7_VMODEL);
                set_pev(id, pev_weaponmodel2, JANUS7_PMODEL);
            }
        }
    }
    if(is_user_alive(id))g_wpn[id] = get_user_weapon(id); 
} 

public fw_UpdateClientData_Post(Player, SendWeapons, CD_Handle)
{
	if(!is_user_alive(Player) || (get_user_weapon(Player) != wId) || !g_has_janus7[Player])
		return FMRES_IGNORED;
		
	set_cd(CD_Handle, CD_flNextAttack, halflife_time () + 0.001);
	return FMRES_HANDLED;
}

public fw_janus7_PrimaryAttack(Weapon)
{
	new Player = get_pdata_cbase(Weapon, 41, 4);
	if (!g_has_janus7[Player])
		return HAM_IGNORED;
	pev(Player,pev_punchangle,cl_pushangle[Player]);
	g_clip_ammo[Player] = cs_get_weapon_ammo(Weapon);
	
	if( g_mode[Player] ) return HAM_SUPERCEDE;
	return HAM_IGNORED;
}

public fwPlaybackEvent(flags, invoker, eventid, Float:delay, Float:origin[3], Float:angles[3], Float:fparam1, Float:fparam2, iParam1, iParam2, bParam1, bParam2)
{
	if ((eventid != g_orig_event_janus7))
		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;
}

public fw_janus7_PrimaryAttack_Post(Weapon) {
	
	new Player = get_pdata_cbase(Weapon, 41, 4);
	new szClip, szAmmo;
	get_user_weapon(Player, szClip, szAmmo);
	if(Player > 0 && Player < 33)
	{
		if(g_has_janus7[Player])
		{
			if(szClip > 0 && !g_sound[Player]) {
				emit_sound(Player, CHAN_WEAPON, Fire_snd[g_mode[Player]], VOL_NORM, ATTN_NORM, 0, PITCH_NORM);
				if(g_mode[Player])g_sound[Player] = true;
			}
		}
		if(g_has_janus7[Player])
		{
			new Float:push[3];
			pev(Player,pev_punchangle,push);
			xs_vec_sub(push,cl_pushangle[Player],push);
			xs_vec_mul_scalar(push,0.6,push);
			xs_vec_add(push,cl_pushangle[Player],push);
			set_pev(Player,pev_punchangle,push);
			if (!g_clip_ammo[Player])
				return;
			set_pdata_float(Player, 83, g_mode[Player]?0.05:0.1);
			if(g_mode[Player]) UTIL_PlayWeaponAnimation(Player, random_num(9,10));
			else UTIL_PlayWeaponAnimation(Player, g_shots[Player]>=SHOTS_NEED?5:random_num(3,4));
			if( !g_mode[Player])make_blood_and_bulletholes(Player);
			new Float:origin1[3], targ, body;
			if( g_target[Player] ) {
				pev(g_target[Player], pev_origin, origin1);
			}
			else fm_get_aim_origin(Player, origin1);
			get_user_aiming(Player, targ, body);
			
			if( !g_mode[Player]) set_bit(g_bitsMuzzleFlash, Player);
			if(g_mode[Player]) {
				message_begin( MSG_BROADCAST,SVC_TEMPENTITY);
				write_byte (TE_BEAMENTPOINT);
				write_short(Player | 0x1000);
				write_coord(floatround(origin1[0]));
				write_coord(floatround(origin1[1]));
				write_coord(floatround(origin1[2]));
				write_short( g_sprite );
				write_byte( 1 ); // framestart
				write_byte( 100 ); // framerate
				write_byte( 1 ); // life
				write_byte( 15 ); // width
				write_byte( 20 ); // noise
				write_byte( 255 ); // r, g, b
				write_byte( 165 ); // r, g, b
				write_byte( 0 ); // r, g, b
				write_byte( 250 ); // brightness
				write_byte( 255 ); // speed
				message_end();      
				if( targ && is_user_alive(targ) && ze_is_user_zombie(targ) && !g_target[Player]) {
					remove_task(targ+324);
					pev(targ, pev_origin, origin1);
					ExecuteHam(Ham_TakeDamage, targ, Player, Player, JANUS7_DAMAGE*2.0, DMG_SLASH);
					fm_set_user_rendering(targ, kRenderFxGlowShell, 255, 165, 0, kRenderNormal, 10);
					set_task(0.2, "delete_effect", targ+324);
					g_target[Player] = targ;
					message_begin(MSG_BROADCAST, SVC_TEMPENTITY);
					write_byte(TE_EXPLOSION);
					write_coord(floatround(origin1[0]));
					write_coord(floatround(origin1[1]));
					write_coord(floatround(origin1[2]));
					write_short(g_sprite1);
					write_byte(10);
					write_byte(10);
					write_byte(TE_EXPLFLAG_NOSOUND|TE_EXPLFLAG_NOPARTICLES | TE_EXPLFLAG_NODLIGHTS);
					message_end(); 
					
				}
				else if( g_target[Player] && is_user_alive(g_target[Player]) && ze_is_user_zombie(g_target[Player]) ) {
					remove_task(g_target[Player]+324);
					ExecuteHam(Ham_TakeDamage, g_target[Player], Player, Player, JANUS7_DAMAGE*2.0, DMG_SLASH);
					pev(g_target[Player], pev_origin, origin1);
					fm_set_user_rendering(g_target[Player], kRenderFxGlowShell, 255, 165, 0, kRenderNormal, 10);
					set_task(0.2, "delete_effect", g_target[Player]+324);
					message_begin(MSG_BROADCAST, SVC_TEMPENTITY);
					write_byte(TE_EXPLOSION);
					write_coord(floatround(origin1[0]));
					write_coord(floatround(origin1[1]));
					write_coord(floatround(origin1[2]));
					write_short(g_sprite1);
					write_byte(10);
					write_byte(10);
					write_byte(TE_EXPLFLAG_NOSOUND|TE_EXPLFLAG_NOPARTICLES | TE_EXPLFLAG_NODLIGHTS);
					message_end(); 

					
				}
			}
			
		}
	}
}

public delete_effect(id) {
	id-=324;
	fm_set_user_rendering(id);
}

public fw_TakeDamage(victim, inflictor, attacker, Float:damage)
{
	if (victim != attacker && is_user_connected(attacker))
	{
		if(get_user_weapon(attacker) == wId)
		{
			if(g_has_janus7[attacker]) {
				if( g_mode[attacker] ) return;
				g_shots[attacker] ++;
				SetHamParamFloat(4, JANUS7_DAMAGE*(g_mode[attacker]?2.0:1.0));
			}
		}
	}
}

public CPlayer__AddToFullPack_post(esState, iE, iEnt, iHost, iHostFlags, iPlayer, pSet)
{
	if (iEnt != g_iEntity)
		return;
	
	if (get_bit(g_bitsMuzzleFlash, iHost))
	{
		set_es(esState, ES_Frame, float(random_num(0, 2)));
			
		set_es(esState, ES_RenderMode, kRenderTransAdd);
		set_es(esState, ES_RenderAmt, 250.0);
		
		reset_bit(g_bitsMuzzleFlash, iHost);
	}
		
	set_es(esState, ES_Skin, iHost);
	set_es(esState, ES_Body, 1);
	set_es(esState, ES_AimEnt, iHost);
	set_es(esState, ES_MoveType, MOVETYPE_FOLLOW);
}

stock UTIL_PlayWeaponAnimation(const Player, const Sequence)
{
	set_pev(Player, pev_weaponanim, Sequence);
	message_begin(MSG_ONE_UNRELIABLE, SVC_WEAPONANIM, .player = Player);
	write_byte(Sequence);
	write_byte(0);
	message_end();
}

stock 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(3);
	write_byte(70);
	write_byte(TE_EXPLFLAG_NODLIGHTS | TE_FLAG | TE_EXPLFLAG_NODLIGHTS);
	message_end();
}

stock Sprite(id, type)
{
    
	message_begin(MSG_ONE, get_user_msgid("WeaponList"), {0,0,0}, id);
	write_string(type?"weapon_janus7":"weapon_m249");
	write_byte(3);
	write_byte(200);
	write_byte(-1);
	write_byte(-1);
	write_byte(0);
	write_byte(4);
	write_byte(20);
	write_byte(0);
	message_end();

}

	
stock get_weapon_attachment(id, Float:output[3], Float:fDis = 40.0)
{ 
	new Float:vfEnd[3] 
	fm_get_aim_origin(id, 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 make_blood_and_bulletholes(id)
{
	new aimOrigin[3], target, body;
	get_user_origin(id, aimOrigin, 3);
	get_user_aiming(id, target, body);
	if(target > 0 && target <= get_maxplayers() && ze_is_user_zombie(target))
	{
		new Float:fStart[3], Float:fEnd[3], Float:fRes[3], Float:fVel[3];
		pev(id, pev_origin, fStart);
		velocity_by_aim(id, 64, fVel);
		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];
		new res;
		engfunc(EngFunc_TraceLine, fStart, fEnd, 0, target, res);
		get_tr2(res, TR_vecEndPos, fRes);
		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( m_iBlood [ 1 ]);
		write_short( m_iBlood [ 0 ] );
		write_byte(70);
		write_byte(random_num(1,2));
		message_end();
	}
	else if(!is_user_connected(target))
	{
		for(new i = 0; i <= 1; i ++) {
			if(target)
			{
				message_begin(MSG_BROADCAST, SVC_TEMPENTITY);
				write_byte(TE_DECAL);
				write_coord(aimOrigin[0]);
				write_coord(aimOrigin[1]);
				write_coord(aimOrigin[2]);
				write_byte(GUNSHOT_DECALS[random_num ( 0, sizeof GUNSHOT_DECALS -1 ) ] );
				write_short(target);
				message_end();
			}
			else
			{
				message_begin(MSG_BROADCAST, SVC_TEMPENTITY);
				write_byte(TE_WORLDDECAL);
				write_coord(aimOrigin[0]);
				write_coord(aimOrigin[1]);
				write_coord(aimOrigin[2]);
				write_byte(GUNSHOT_DECALS[random_num ( 0, sizeof GUNSHOT_DECALS -1 ) ] );
				message_end();
			}
			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(GUNSHOT_DECALS[random_num ( 0, sizeof GUNSHOT_DECALS -1 ) ] );
			message_end();
		}
		Make_BulletSmoke(id, 0);
	}
}

public janus7__ItemPostFrame(weapon_entity) {
	new id = pev(weapon_entity, pev_owner);
	if (!is_user_connected(id))
		return HAM_IGNORED;
		
	if (!g_has_janus7[id])
		return HAM_IGNORED;
		
	new Float:flNextAttack = get_pdata_float(id, 83, 5);
	new iBpAmmo = cs_get_user_bpammo(id, wId);
	new iClip = get_pdata_int(weapon_entity, 51, 4);
	new fInReload = get_pdata_int(weapon_entity, 54, 4);
	if( fInReload && flNextAttack <= 0.0 )
	{
		new j = min(JANUS7_CLIPAMMO- iClip, iBpAmmo);
		set_pdata_int(weapon_entity, 51, iClip + j, 4);
		cs_set_user_bpammo(id, wId, iBpAmmo-j);
		set_pdata_int(weapon_entity, 54, 0, 4);
		fInReload = 0;
	}
	new Float:origin[3];
	pev(g_target[id], pev_origin, origin);
	
	if( g_shots[id] >= SHOTS_NEED && flNextAttack <= 0.0 && !g_mode[id] ) {
		
		UTIL_PlayWeaponAnimation(id, 12);
		
		if( get_user_button(id) & IN_ATTACK2 && flNextAttack <= 0.0 && iClip > 0) {
			
			UTIL_PlayWeaponAnimation(id, 6);
			set_pdata_float( id, 83, 2.0);
			g_mode[id] = 1;
			g_shots[id] = 0;
			set_task( 20.0, "remove_mode", id+1231 );
		}
			
	
	}
	else if (g_mode[id] && flNextAttack <= 0.0 ) {
		
		if( !(get_user_button(id) & IN_ATTACK) ) {
			g_target[id] = 0;
			emit_sound(id, CHAN_WEAPON, Fire_snd[g_mode[id]], 0.0, ATTN_NORM, 0, PITCH_NORM);
			g_sound[id] = 0;
		}
		if( !is_user_alive(g_target[id]) || !ze_is_user_zombie(g_target[id])  || !can_see_fm(id,g_target[id]) || entity_range(id, g_target[id]) > 400.0 || !is_in_viewcone(id, origin))
			g_target[id] = 0;
		
		UTIL_PlayWeaponAnimation(id, 7);
		
	}
	return HAM_IGNORED;
}

public remove_mode(id) {
	id-=1231;
	if(!g_mode[id]) return;
	g_mode[id] = false;
	g_shots[id] = false;
	g_sound[id] = false;
	emit_sound(id, CHAN_WEAPON, Fire_snd[g_mode[id]], 0.0, ATTN_NORM, 0, PITCH_NORM);
	UTIL_PlayWeaponAnimation(id, 11);
	set_pdata_float(id, 83, 2.0);
}
	
public janus7__Reload(weapon_entity) {
	new id = pev(weapon_entity, pev_owner);
	if (!is_user_connected(id))
		return HAM_IGNORED;
	if (!g_has_janus7[id])
		return HAM_IGNORED;
	if(g_mode[id])
		return HAM_SUPERCEDE;
	g_janus7_TmpClip[id] = -1;
	new iBpAmmo = cs_get_user_bpammo(id, wId);
	new iClip = get_pdata_int(weapon_entity, 51, 4);
	if (iBpAmmo <= 0)
		return HAM_SUPERCEDE;
	if (iClip >= JANUS7_CLIPAMMO)
		return HAM_SUPERCEDE;
	g_janus7_TmpClip[id] = iClip;
	return HAM_IGNORED;
}
public janus7__Reload_Post(weapon_entity) {
	new id = pev(weapon_entity, pev_owner);
	if (!is_user_connected(id))
		return HAM_IGNORED;
	if (!g_has_janus7[id])
		return HAM_IGNORED;
	if (g_janus7_TmpClip[id] == -1)
		return HAM_IGNORED;
	if(g_mode[id])
		return HAM_SUPERCEDE;
	set_pdata_int(weapon_entity, 51, g_janus7_TmpClip[id], 4);
	set_pdata_float(weapon_entity, 48, RELOAD_TIME, 4);
	set_pdata_float(id, 83, RELOAD_TIME, 5);
	set_pdata_int(weapon_entity, 54, 1, 4);
	if( g_mode[id]) g_mode[id] = 0;
	UTIL_PlayWeaponAnimation(id, g_shots[id]>50?13:1);
	return HAM_IGNORED;
}

stock drop_weapons(id, dropwhat)
{
	static weapons[32], num, i, weaponid;
	num = 0;
	get_user_weapons(id, weapons, num);
	for (i = 0; i < num; i++)
	{
		weaponid = weapons[i];
		const PRIMARY_WEAPONS_BIT_SUM = (1<<CSW_SCOUT)|(1<<CSW_XM1014)|(1<<CSW_MAC10)|(1<<CSW_AUG)|(1<<CSW_UMP45)|
		(1<<CSW_SG550)|(1<<CSW_GALIL)|(1<<CSW_FAMAS)|(1<<CSW_AWP)|(1<<CSW_MP5NAVY)| (1<<CSW_M249)|(1<<CSW_M3)|
		(1<<CSW_M4A1)|(1<<CSW_TMP)|(1<<CSW_G3SG1)|(1<<CSW_SG552)|(1<<CSW_AK47)|(1<<CSW_P90);
		if (dropwhat == 1 && ((1<<weaponid) & PRIMARY_WEAPONS_BIT_SUM))
		{
			static wname[32];
			get_weaponname(weaponid, wname, sizeof wname - 1);
			engclient_cmd(id, "drop", wname);
		}
	}
}

public bool:can_see_fm(entindex1, entindex2)
{
	if (!entindex1 || !entindex2)
		return false;

	if (pev_valid(entindex1) && pev_valid(entindex1))
	{
		new flags = pev(entindex1, pev_flags);
		if (flags & EF_NODRAW || flags & FL_NOTARGET)
		{
			return false;
		}

		new Float:lookerOrig[3];
		new Float:targetBaseOrig[3];
		new Float:targetOrig[3];
		new Float:temp[3];

		pev(entindex1, pev_origin, lookerOrig);
		pev(entindex1, pev_view_ofs, temp);
		lookerOrig[0] += temp[0];
		lookerOrig[1] += temp[1];
		lookerOrig[2] += temp[2];

		pev(entindex2, pev_origin, targetBaseOrig);
		pev(entindex2, pev_view_ofs, temp);
		targetOrig[0] = targetBaseOrig [0] + temp[0];
		targetOrig[1] = targetBaseOrig [1] + temp[1];
		targetOrig[2] = targetBaseOrig [2] + temp[2];

		engfunc(EngFunc_TraceLine, lookerOrig, targetOrig, 0, entindex1, 0);//  checks the had of seen player
		if (get_tr2(0, TraceResult:TR_InOpen) && get_tr2(0, TraceResult:TR_InWater))
		{
			return false;
		} 
		else 
		{
			new Float:flFraction;
			get_tr2(0, TraceResult:TR_flFraction, flFraction);
			if (flFraction == 1.0 || (get_tr2(0, TraceResult:TR_pHit) == entindex2))
			{
				return true;
			}
			else
			{
				targetOrig[0] = targetBaseOrig [0];
				targetOrig[1] = targetBaseOrig [1];
				targetOrig[2] = targetBaseOrig [2];
				engfunc(EngFunc_TraceLine, lookerOrig, targetOrig, 0, entindex1, 0); //  checks the body of seen player
				get_tr2(0, TraceResult:TR_flFraction, flFraction);
				if (flFraction == 1.0 || (get_tr2(0, TraceResult:TR_pHit) == entindex2))
				{
					return true;
				}
				else
				{
					targetOrig[0] = targetBaseOrig [0];
					targetOrig[1] = targetBaseOrig [1];
					targetOrig[2] = targetBaseOrig [2] - 17.0;
					engfunc(EngFunc_TraceLine, lookerOrig, targetOrig, 0, entindex1, 0); //  checks the legs of seen player
					get_tr2(0, TraceResult:TR_flFraction, flFraction);
					if (flFraction == 1.0 || (get_tr2(0, TraceResult:TR_pHit) == entindex2))
					{
						return true;
					}
				}
			}
		}
	}
	return false;
} 
Image

User avatar
Raheem
Mod Developer
Mod Developer
Posts: 2214
Joined: 7 years ago
Contact:

#2

Post by Raheem » 5 years ago

Change from this line:
  • Code: Select all

    set_task( 20.0, "remove_mode", id+1231 );
This means that the electricity mode will last for 20.0 seconds then will be removed. You can change the 20.0 to anything. Make sure to make value floating point like: 1.0, 10.0 but not 1 or 10

Blocking damage during pre-release time or madness: viewtopic.php?f=15&p=7677
He who fails to plan is planning to fail

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

#3

Post by czirimbolo » 5 years ago

Thanks Raheem!
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 5 guests