Pagina 1 din 1

ZP Extra Item: Electro Weapon

Scris: Joi Noi 28, 2024 8:50 pm
de Diliul
Descriere: Electrocutează zombi


Descarcare: LINK RESURSE

Cod: Selectaţi tot

#include <amxmodx>
#include <cstrike>
#include <fakemeta>
#include <fun>
#include <engine>
#include <hamsandwich>
#include <zombie_plague_special>

new g_item, ElectroSpr, g_electro[33], g_Weapon[33] 
new bool:g_electroweapon[33]
new g_iMaxPlayers

public plugin_init() 
{
	register_plugin("Electro Weapon", "1.0", "Zapds1")
	g_item = zp_register_extra_item("Electro MP5", 40, ZP_TEAM_HUMAN)
	
	register_event("HLTV", "event_round_start", "a", "1=0", "2=0")
	register_event("CurWeapon", "event_CurWeapon", "b", "1=1") 
	register_forward(FM_PlayerPreThink, "fw_PlayerPreThink")
	RegisterHam(Ham_TakeDamage, "player", "fw_TakeDamage")
	
	g_iMaxPlayers = get_maxplayers()
}

public plugin_precache() 
{
	precache_model("models/zombie_plague/arme_hm_zm/v_zpelectromp5.mdl"); 
	precache_sound("zombie_plague/spark6.wav");
	ElectroSpr = precache_model("sprites/spark1.spr");
}

public event_round_start()
{
	for (new i = 1; i <= g_iMaxPlayers; i++)
	{
		if (!is_user_connected(i))
			continue
		
		if (g_electroweapon[i])
		{
			g_electroweapon[i] = false
		}
		if(g_electro[i])
		{
			g_electro[i] = false
		}
	}
}

public zp_extra_item_selected(player, itemid)
{
	if (itemid == g_item) 
	{
		//client_print(player, print_chat, "Puneti o Arma Electrica!") 
		
		g_electroweapon[player] = true
		
		strip_user_weapons(player)
		
		give_item(player, "weapon_mp5navy")
		
		cs_set_user_bpammo(player, CSW_MP5NAVY, 120)  
		
		//set_hudmessage(255, 255, 0, -1.0, -1.0, 0, 6.0, 5.0)
		//show_hudmessage(player, "Puterea Electrica Este Activata!")
		
	}
}

public zp_user_infected_post(infected, infector)
{
	if (g_electroweapon[infected])
	{
		g_electroweapon[infected] = false
	}
}

public fw_TakeDamage(victim, inflictor, attacker, Float:damage, damage_type)
{
	if(!is_user_connected(attacker) || !is_user_connected(victim) || zp_get_user_nemesis(victim) || attacker == victim || !attacker)
		return HAM_IGNORED
	
	static Float:originF[3]
	pev(victim, pev_origin, originF)
	
	static originF2[3] 
	get_user_origin(victim, originF2)
	
	if (g_electroweapon[attacker] && get_user_weapon(attacker) == CSW_MP5NAVY)
	{	
		ElectroRing(originF) 
		
		ElectroSound(originF2)  
	}
	
	if(zp_get_user_nemesis(victim))
	{	
		return HAM_IGNORED
	}
	return PLUGIN_HANDLED;
}

public event_CurWeapon(id)
{
	if (!is_user_alive(id))
		return PLUGIN_CONTINUE
	
	g_Weapon[id] = read_data(2)
	
	if(zp_get_user_zombie(id) || zp_get_user_survivor(id))
		return PLUGIN_CONTINUE
	
	if(!g_electroweapon[id] || g_Weapon[id] != CSW_MP5NAVY) 
		return PLUGIN_CONTINUE
	
	entity_set_string(id, EV_SZ_viewmodel, "models/zombie_plague/arme_hm_zm/v_zpelectromp5.mdl") 
	
	return PLUGIN_CONTINUE
}

public fw_PlayerPreThink(id)
{
	if (!is_user_alive(id))
		return;
} 

public ElectroSound(iOrigin[3])
{
	new Entity = create_entity("info_target")
	
	new Float:flOrigin[3]
	IVecFVec(iOrigin, flOrigin)
	
	entity_set_origin(Entity, flOrigin)
	
	emit_sound(Entity, CHAN_WEAPON, "zombie_plague/spark6.wav", VOL_NORM, ATTN_NORM, 0, PITCH_NORM)
	
	remove_entity(Entity)
}

// Frost Effect Ring
ElectroRing(const Float:originF3[3])
{
// Largest ring
engfunc(EngFunc_MessageBegin, MSG_PVS, SVC_TEMPENTITY, originF3, 0)
write_byte(TE_BEAMCYLINDER) 
engfunc(EngFunc_WriteCoord, originF3[0]) 
engfunc(EngFunc_WriteCoord, originF3[1]) 
engfunc(EngFunc_WriteCoord, originF3[2]) 
engfunc(EngFunc_WriteCoord, originF3[0])
engfunc(EngFunc_WriteCoord, originF3[1]) 
engfunc(EngFunc_WriteCoord, originF3[2]+100.0) 
write_short(ElectroSpr) 
write_byte(0)
write_byte(0) 
write_byte(4) 
write_byte(60)
write_byte(0) 
write_byte(41) 
write_byte(138) 
write_byte(255) 
write_byte(200)
write_byte(0) 
message_end()
}

public client_putinserver(id)
{
g_electroweapon[id] = false
g_electro[id] = false 
}

public client_disconnect(id)
{
g_electroweapon[id] = false
g_electro[id] = false
}
Nume: Electro Weapon
Versiune: 1.0
Link oficial: -


Instalare:
1. Fisierul zp_extra_electro_weapon.sma il puneti in addons/amxmodx/scripting
2. Fisierul zp_extra_electro_weapon.amxx il puneti in addons/amxmodx/plugins
3. Intrati in fisierul addons/amxmodx/configs/plugins-zplague.ini si adaugati la urma:

Cod: Selectaţi tot

zp_extra_electro_weapon.amxx
4. Alti pasi necesari....

Cvar-uri (se adauga in fisierul amxmodx\configs\amxx.cfg): -


Imagini: