Заявка за направа на зомби клас - RadioActive

В този раздел можете да подавате всякакви заявки за намиране, изработка или преработка на плъгини/модове.
Аватар
The Pain
Извън линия
Потребител
Потребител
Мнения: 91
Регистриран на: 06 Дек 2021, 17:10
Се отблагодари: 18 пъти
Получена благодарност: 6 пъти

Заявка за направа на зомби клас - RadioActive

Мнение от The Pain » 10 Апр 2022, 16:08

Тъй като не намерих подходящ плъгин в нета реших да пиша тук, идеята ми е да се направи зомби клас RadioActive за Zombie Plague,
който да има следният ефект - когато е в близост до човек (да има радиус) да взима някакво количество кръв което да се контролира от cvar , а на играча попаднал в радиуса на така наречената радиация да показва с dhud -
- --\^n| %d Warning Radiation zombie nearby|^n\----- , както и glowa на зомбито да е зелен. Ще предоставя примерен плъгин в когото може човекът който се заеме да добавя променя и т.н

Код за потвърждение: Избери целия код

#include <amxmodx>
#include <zombieplague>
#include <fun>

// Zombie Attributes 
new const zclass_name[] = { "Rage Zombie" } // name 
new const zclass_info[] = { "RadioActive" } // description 
new const zclass_model[] = { "rage_Zombie" } // model 
new const zclass_clawmodel[] = { "v_uctt_knife2.mdl" } // claw model 
const zclass_health = 4999 // health 
const zclass_speed = 220 // speed 
const Float:zclass_gravity = 1.0 // gravity 
const Float:zclass_knockback = 0.5 // knockback 

// Class IDs
new g_zclassid1

public plugin_init() register_plugin("[ZP] Zombie Class: Rage Zombie", "1.1", "test") 
public plugin_precache() g_zclassid1 = zp_register_zombie_class(zclass_name, zclass_info, zclass_model, zclass_clawmodel, zclass_health, zclass_speed, zclass_gravity, zclass_knockback)

public zp_user_infected_post(id) 
{ 
	if (zp_get_user_zombie_class(id) != g_zclassid1 || zp_get_user_nemesis(id))
		return
	
	set_user_rendering(id,kRenderFxGlowShell,0,250,0,kRenderNormal,0)
} 
public zp_user_unfrozen(id)
{ 
	if (zp_get_user_zombie_class(id) != g_zclassid1 || zp_get_user_nemesis(id))
		return
	
	set_user_rendering(id,kRenderFxGlowShell,0,250,0,kRenderNormal,0) 
} 
Извън темата
Знам, че не е лесно обаче плъгина ще е от голяма полза не само на мен гарантирано! Благодаря на отзовалият се!

Аватар
YankoNL
Извън линия
Потребител
Потребител
Мнения: 163
Регистриран на: 06 Апр 2017, 09:07
Местоположение: Варна
Се отблагодари: 22 пъти
Получена благодарност: 9 пъти

Заявка за направа на зомби клас - RadioActive

Мнение от YankoNL » 19 Май 2022, 02:39

Не съм го тествал. На теория трябва да работи.

Радиоактивно зомби - през 2 секунди сваля кръвта на хората намиращи се в близост до него и зарежда своята. Кръвта на хората не може да падне под 5HP.
Може да зареди двойно кръвта си. Ако базово е зададено с 2200HP - може да зареди до 4400HP, не повече. Опция да заразява моментално при докосване или да убива последния жив човек.

Код за потвърждение: Избери целия код

#include <amxmodx>
#include <fakemeta_util>
#include <hamsandwich>
#include <zombieplague>

new g_zclassid1, bool:off, g_msgDeathMsg, cvar_ammoinfect, g_msgScreenFade
new const zclass_name[] = { "Radio Active Zombie" } // name
new const zclass_info[] = { "Drains health and heals" } // description
new const zclass_model[] = { "zombie_mdl" } // model
new const zclass_clawmodel[] = { "v_zombie.mdl" } // claw model
const zclass_health = 3800 // health
const zclass_speed = 260 // speed
const Float:zclass_gravity = 0.9 // gravity
const Float:zclass_knockback = 0.6 // knockback	

#define RADIATION_WARNING "!!!! WARNING !!!!^nRadiation Detected^n!!!! WARNING !!!!"

new cvar_zp_inf_kill, cvar_zp_radius, cvar_zp_damage, cvar_zp_heal

public plugin_init()
{
	register_forward(FM_Touch, "fwd_touch")
	cvar_ammoinfect = get_cvar_pointer("zp_zombie_infect_reward")
	g_msgDeathMsg = get_user_msgid("DeathMsg")
	g_msgScreenFade = get_user_msgid("ScreenFade")

	cvar_zp_inf_kill = register_cvar("zp_touch_infect_kill", "1")	// 1 = instantly infect or kill(last human) with touch | 0 = normal
	cvar_zp_damage = register_cvar("zp_aura_damage", "5")		// Aura damage
	cvar_zp_radius = register_cvar("zp_aura_radius", "250.0")	// Aura radius
	cvar_zp_heal = register_cvar("zp_aura_healing", "25")		// Aura healing
	
	register_event("Damage","event_pain_zombie","be","2!0","3=0")
}

public plugin_precache()
{
	register_plugin("[ZP] ZM Class: Radioactive", "1.2", "jr_acn [Junin] & YankoNL") 
	g_zclassid1 = zp_register_zombie_class(zclass_name, zclass_info, zclass_model, zclass_clawmodel, zclass_health, zclass_speed, zclass_gravity, zclass_knockback)
}

public plugin_natives()
{
	register_native("zp_is_zombie_class_rage", "native_is_zombie_class_rage", 1)
}

public native_is_zombie_class_rage(id)
{
	return zp_get_user_zombie_class(id) == g_zclassid1;
}

public zp_user_infected_post(id, infector)
{
	if(zp_get_user_zombie_class(id) != g_zclassid1 || zp_get_user_nemesis(id))
		return;
	
	fm_set_rendering(id, kRenderFxGlowShell, 100, 255, 0, kRenderNormal, 5);
	radius_damage(id)
	
	set_task(5.0, "zm_idle", id)
}

public zm_idle(id)
{
	if (!is_user_connected(id) || !zp_get_user_zombie(id)
	|| zp_get_user_zombie_class(id) != g_zclassid1
	|| zp_get_user_nemesis(id) || !is_user_alive(id))
		return;
	
	set_task(5.0, "zm_idle", id)
}

public event_pain_zombie(id)
{
	if (!is_user_connected(id) || !zp_get_user_zombie(id)
	|| zp_get_user_zombie_class(id) != g_zclassid1
	|| zp_get_user_nemesis(id) || !is_user_alive(id))
		return;
}


public zp_user_unfrozen(id)
{
	if(!is_user_alive(id) || !zp_get_user_zombie(id) 
	|| zp_get_user_nemesis(id) || zp_get_user_zombie_class(id) != g_zclassid1)
		return;
	
	fm_set_rendering(id, kRenderFxGlowShell, 100, 255, 0, kRenderNormal, 5);
}

public zp_user_stop_madness(id)
{
	if(zp_get_user_zombie_class(id) != g_zclassid1)
		return;
	
	fm_set_rendering(id, kRenderFxGlowShell, 100, 255, 0, kRenderNormal, 5);
}

public aura(id)
{
	if(!is_user_alive(id) || !zp_get_user_zombie(id) || zp_get_user_nemesis(id)
	|| zp_get_user_zombie_class(id) != g_zclassid1)
		return;
	{
		// Retrieve player origin
		static iOrigin[3]            
		get_user_origin(id, iOrigin)
		
		// Colored Aura
		message_begin(MSG_PVS, SVC_TEMPENTITY, iOrigin)
		write_byte(TE_DLIGHT) // TE id
		write_coord(iOrigin[0]) // x
		write_coord(iOrigin[1]) // y
		write_coord(iOrigin[2]) // z
		write_byte(10) // radius
		write_byte(100) // r
		write_byte(255) // g
		write_byte(0)  // b 
		write_byte(2) // life
		write_byte(0) // decay rate
		message_end()
	}
	
	set_task(0.1, "aura", id)
}

public fwd_touch(victim, attacker)
{
	if (get_pcvar_num(cvar_zp_inf_kill) == 1)
	{
		if(!is_user_alive(victim) || !is_user_alive(attacker) || !zp_get_user_zombie(attacker) || zp_get_user_zombie(victim)
		|| zp_get_user_nemesis(attacker) || zp_get_user_nemesis(victim) || zp_get_user_survivor(victim)
		|| zp_get_user_zombie_class(attacker) != g_zclassid1 || !is_user_connected(attacker) || off )
			return;
	
		set_msg_block(g_msgDeathMsg, BLOCK_SET)
		ExecuteHamB(Ham_Killed, victim, attacker, 0); // set last param to 2 if you want victim to gib
		set_msg_block(g_msgDeathMsg, BLOCK_NOT)
		make_deathmsg(attacker, victim, 1, "none");
		zp_set_user_ammo_packs(attacker, zp_get_user_ammo_packs(attacker) + get_pcvar_num(cvar_ammoinfect))
	}
}

public radius_damage(id)
{
	if(!is_user_alive(id) || !zp_get_user_zombie(id) || zp_get_user_nemesis(id)
	|| zp_get_user_zombie_class(id) != g_zclassid1)
		return;
	
	static Float:iOrigin[3], player
	pev(id, pev_origin, iOrigin)
	
	player = -1
	while((player = engfunc(EngFunc_FindEntityInSphere, player, iOrigin, get_pcvar_float(cvar_zp_radius))) != 0)
	{
		if(player != id && is_user_alive(player) && !zp_get_user_zombie(player)) 
		{
			set_hudmessage(0, 200, 0, -1.00, 0.30, 1, 0.0, 2.0)
			show_hudmessage(player, RADIATION_WARNING)
			
			message_begin (MSG_ONE_UNRELIABLE, g_msgScreenFade, {0,0,0}, player)
			write_short(1 * 2024)
			write_short(1 * 1524)
			write_short(0x0001)
			write_byte(0)
			write_byte(200)
			write_byte(0)
			write_byte(150)
			message_end()
			
			if(get_user_health(player) > 5) fm_set_user_health(player, get_user_health(player) - get_pcvar_num(cvar_zp_damage))
			if(get_user_health(id) < zclass_health * 2) fm_set_user_health(id, get_user_health(id) + get_pcvar_num(cvar_zp_heal))
		}
	}
	
	set_task(2.0, "radius_damage", id)
}

public zp_round_started() off = false
public zp_round_ended()	off = true

Аватар
The Pain
Извън линия
Потребител
Потребител
Мнения: 91
Регистриран на: 06 Дек 2021, 17:10
Се отблагодари: 18 пъти
Получена благодарност: 6 пъти

Заявка за направа на зомби клас - RadioActive

Мнение от The Pain » 19 Май 2022, 11:51

Зомбито работи перфектно, благодаря много за играчката, надявам се да послужи и на някой друг :beer:

Заключено
  • Подобни теми
    Отговори
    Преглеждания
     Последно мнение

Обратно към “Заявки за плъгини”

Кой е на линия

Потребители разглеждащи този форум: 0 регистрирани и 29 госта