Raised This Month: $32 Target: $400
 8% 

help with force field.zp


Post New Thread Reply   
 
Thread Tools Display Modes
Author Message
Firuz
Member
Join Date: Dec 2014
Location: Tajikistan
Old 02-19-2018 , 21:43   help with force field.zp
Reply With Quote #1

Help with
PLUGIN: [ZP] Extra Item : Force Field Grenade for Humans. by Lucas

How to make What would an infectious bomb not work
In the force field?

Thanks in advance.
Firuz is offline
Firuz
Member
Join Date: Dec 2014
Location: Tajikistan
Old 02-19-2018 , 23:01   Re: help with force field.zp
Reply With Quote #2

UP
Firuz is offline
Firuz
Member
Join Date: Dec 2014
Location: Tajikistan
Old 02-20-2018 , 15:06   Re: help with force field.zp
Reply With Quote #3

help omg
Firuz is offline
WAR3DM
Senior Member
Join Date: Mar 2016
Old 02-20-2018 , 22:23   Re: help with force field.zp
Reply With Quote #4

Add a true statement to any players within the forcefield, and a false statement to players outside of it.

Then add an if (player = true) statement to the infection bomb to block damage.
WAR3DM is offline
Firuz
Member
Join Date: Dec 2014
Location: Tajikistan
Old 02-21-2018 , 05:27   Re: help with force field.zp
Reply With Quote #5

Maybe an example?
Firuz is offline
Firuz
Member
Join Date: Dec 2014
Location: Tajikistan
Old 02-21-2018 , 05:28   Re: help with force field.zp
Reply With Quote #6

Force Field Grenade

Code:
#include <amxmodx>
#include <engine>
#include <zombieplague>
#include <hamsandwich>
#include <fun>
#include <fakemeta_util>

#define PLUGIN "[ZP] Extra Item: Force Field Grenade"
#define VERSION "v2.3"
#define AUTHOR "lucas_7_94" // Thanks To Users in credits too!.

#define CAMPO_ROUND_NAME "Force Shield (Complete Round)"
#define CAMPO_TIME_NAME "Force Shield (Short-Time)"
#define ValidTouch(%1) ( is_user_alive(%1) && ( zp_get_user_zombie(%1) || zp_get_user_nemesis(%1) ) )

/*=============================[Plugin Customization]=============================*/
//#define CAMPO_TASK
#define CAMPO_ROUND

//#define RANDOM_COLOR
#define ONE_COLOR

new const NADE_TYPE_CAMPO = 6545

#if defined ONE_COLOR
new Float:CampoColors[ 3 ] = { 255.0 , 0.0 ,   0.0  }
#endif

new TrailColor[ 3 ] = { 000, 255, 255 }
new Float:Maxs[ 3 ] = { 100.0 , 100.0 , 100.0 }
new Float:Mins[ 3 ] = { -100.0, -100.0, -100.0 }

new const model_grenade[] = "models/zombie_plague/v_auragren.mdl"
new const model[] = "models/zombie_plague/aura8.mdl"
new const w_model[] = "models/zombie_plague/w_aura.mdl"
new const sprite_grenade_trail[] = "sprites/laserbeam.spr"
new const entclas[] = "campo_grenade_forze"

new cvar_flaregrenades, g_trailSpr, g_SayText, g_itemID

new gBomb
const Float:Push = 15.0

const item_cost = 15
/*=============================[End Customization]=============================*/

public plugin_init()
{
	register_plugin(PLUGIN, VERSION, AUTHOR)
	
	RegisterHam(Ham_Think, "grenade", "fw_ThinkGrenade")
	
	RegisterHam(Ham_Killed, "player", "fw_PlayerKilled")
	
	cvar_flaregrenades = get_cvar_pointer("zp_flare_grenades")
	
	register_forward(FM_SetModel, "fw_SetModel")
	
	RegisterHam(Ham_Item_Deploy, "weapon_smokegrenade", "shield_deploy", 1)
	
	register_event("HLTV", "event_round_start", "a", "1=0", "2=0")
	
	register_forward(FM_Touch, "fw_touch")
	
	g_SayText = get_user_msgid("SayText")
	
	register_cvar("zp_shield_creator", "lucas_7_94", FCVAR_SERVER|FCVAR_PROTECTED)
	
	#if defined CAMPO_ROUND
	g_itemID = zp_register_extra_item ( CAMPO_ROUND_NAME , item_cost * 2 , ZP_TEAM_HUMAN )
	#else 
	g_itemID = zp_register_extra_item ( CAMPO_TIME_NAME , item_cost , ZP_TEAM_HUMAN )
	#endif		
}

public event_round_start() {
	
	#if defined CAMPO_ROUND
	remove_entity_name(entclas)
	#endif
	
	gBomb = 0
}

public plugin_precache() {
	
	g_trailSpr = engfunc(EngFunc_PrecacheModel, sprite_grenade_trail)
	engfunc(EngFunc_PrecacheModel, model_grenade)
	engfunc(EngFunc_PrecacheModel, model)
	engfunc(EngFunc_PrecacheModel, w_model)
}

public client_disconnect(id) 
	gBomb &= ~( 1 << ( id % 32 ) )

public zp_extra_item_selected(player, itemid) {
	
	if(itemid == g_itemID)
	{
		if( gBomb & ( 1 << ( player % 32 ) ) )
			Color(player, "!g[Shield]!y You already have a force field")
		else 
		{
			gBomb |= ( 1 << ( player % 32 ) )
			
			if( !user_has_weapon( player, CSW_SMOKEGRENADE ) )
				give_item(player,"weapon_smokegrenade")
			
			
			#if defined CAMPO_ROUND
			Color(player, "!g[Shield]!y You Bought a force field!. This, lasts 1 round complete.")
			#else
			Color(player, "!g[Shield]!y You Bought a force field!. This, lasts very little!")
			#endif
		}
		
		
	}
	
}
public fw_PlayerKilled(victim, attacker, shouldgib)
{
	if( ( 1 <= attacker <= 32 ) && ( gBomb & ( 1 << ( victim % 32 ) ) ) ) 
		gBomb &= ~( 1 << ( victim % 32 ) )
}

public fw_ThinkGrenade(entity) {   
	
	if(!pev_valid(entity)) return HAM_IGNORED
	
	static Float:dmgtime   
	pev(entity, pev_dmgtime, dmgtime)
	
	if (dmgtime > get_gametime())
		return HAM_IGNORED   
	
	if(pev(entity, pev_flTimeStepSound) == NADE_TYPE_CAMPO)
		crear_ent(entity)
	
	return HAM_SUPERCEDE
}


public fw_SetModel(entity, const model[]) {	
	
	static Float:dmgtime
	pev(entity, pev_dmgtime, dmgtime)
	
	if (dmgtime == 0.0)
		return FMRES_IGNORED;
	
	if (equal(model[7], "w_sm", 4))
	{		
		new owner = pev(entity, pev_owner)		
		
		if( is_user_alive(owner) && !zp_get_user_zombie(owner) && ( gBomb & ( 1 << ( owner % 32 ) ) ) ) 
		{
			set_pcvar_num(cvar_flaregrenades,0)			
			
			fm_set_rendering(entity, kRenderFxGlowShell, 000, 255, 255, kRenderNormal, 16)
			
			message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
			write_byte(TE_BEAMFOLLOW) // TE id
			write_short(entity) // entity
			write_short(g_trailSpr) // sprite
			write_byte(10) // life
			write_byte(10) // width
			write_byte(TrailColor[ 0 ]) // r
			write_byte(TrailColor[ 1 ]) // g
			write_byte(TrailColor[ 2 ]) // b
			write_byte(500) // brightness
			message_end()
			
			set_pev(entity, pev_flTimeStepSound, NADE_TYPE_CAMPO)
			
			set_task(6.0, "DeleteEntityGrenade" ,entity)
			gBomb &= ~( 1 << ( owner % 32 ) )
			entity_set_model(entity, w_model)
			return FMRES_SUPERCEDE
		}
	}
	return FMRES_IGNORED
	
}

public DeleteEntityGrenade(entity) 
	if( is_valid_ent( entity ) )
		remove_entity(entity)

public crear_ent(id) {
		
	set_pcvar_num(cvar_flaregrenades,1)
	
	// Create entitity
	new iEntity = create_entity("info_target")
	
	if(!is_valid_ent(iEntity))
		return PLUGIN_HANDLED
	
	new Float: Origin[3] 
	entity_get_vector(id, EV_VEC_origin, Origin) 
	
	entity_set_string(iEntity, EV_SZ_classname, entclas)
	
	entity_set_vector(iEntity,EV_VEC_origin, Origin)
	entity_set_model(iEntity,model)
	entity_set_int(iEntity, EV_INT_solid, SOLID_TRIGGER)
	entity_set_size(iEntity, Mins, Maxs )
	entity_set_int(iEntity, EV_INT_renderfx, kRenderFxGlowShell)
	entity_set_int(iEntity, EV_INT_rendermode, kRenderTransAlpha)
	entity_set_float(iEntity, EV_FL_renderamt, 50.0)
	
	#if defined RANDOM_COLOR
	if(is_valid_ent(iEntity))
	{
		new Float:vColor[3]
		
		for(new i; i < 3; i++)
			vColor[i] = random_float(0.0, 255.0)
		
		entity_set_vector(iEntity, EV_VEC_rendercolor, vColor)
	}
	#endif
	
	#if defined ONE_COLOR
	entity_set_vector(iEntity, EV_VEC_rendercolor, CampoColors)
	#endif
	
	#if defined CAMPO_TASK
	set_task(15.0, "DeleteEntity", iEntity)
	#endif
	
	
	return PLUGIN_CONTINUE;
}

public zp_user_infected_post(infected, infector) 
	if ( gBomb & ( 1 << ( infected % 32 ) ) ) 
		gBomb &= ~( 1 << ( infected % 32 ) ) 

public fw_touch(ent, touched)
{
	if ( !pev_valid(ent) ) return FMRES_IGNORED;
	static entclass[32];
	pev(ent, pev_model, entclass, 31);
	
	if ( strcmp( entclass, model ) == 0 )
	{	
		if( ValidTouch(touched) )
		{
			static Float:pos_ptr[3], Float:pos_ptd[3]
			
			pev(ent, pev_origin, pos_ptr)
			pev(touched, pev_origin, pos_ptd)
			
			for(new i = 0; i < 3; i++)
			{
				pos_ptd[i] -= pos_ptr[i]
				pos_ptd[i] *= Push
			}
			set_pev(touched, pev_velocity, pos_ptd)
			set_pev(touched, pev_impulse, pos_ptd)
		}
	}
	return FMRES_HANDLED
}


public DeleteEntity( entity )  // Thanks xPaw For The Code =D
	if( is_valid_ent( entity ) ) 
	remove_entity( entity );

stock Color(const id, const input[], any:...)
{
	static msg[191]
	vformat(msg, 190, input, 3)
	
	replace_all(msg, 190, "!g", "^4")
	replace_all(msg, 190, "!y", "^1")
	replace_all(msg, 190, "!t", "^3")
	
	message_begin(MSG_ONE_UNRELIABLE, g_SayText, _, id)
	write_byte(id)
	write_string(msg)
	message_end()
}

public shield_deploy( shield_ent )
{
	if( pev_valid( shield_ent ) != 2 )
		return HAM_IGNORED;
	
	static const mPlayer = 41
	
	new id = get_pdata_cbase( shield_ent, mPlayer, 4 );
	
	if( ( gBomb & ( 1 << ( id % 32 ) ) ) && !zp_get_user_zombie( id ) )
		set_pev( id, pev_viewmodel2, model_grenade );
	
	return HAM_IGNORED;
}

Last edited by Firuz; 02-21-2018 at 05:31.
Firuz is offline
Reply


Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT -4. The time now is 19:51.


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