[Cerere] Modificare sursa

Modificari necesare ale pluginurilor

Moderators: Moderatori ajutatori, Moderatori, Echipa eXtreamCS.com

Post Reply
Raca
Membru, skill 0
Membru, skill 0
Posts: 11
Joined: 26 Jul 2019, 17:04
Detinator Steam: Nu
CS Status: Citesc forumul eXtreamCS.com...!
Fond eXtream: 0
Has thanked: 2 times

03 Jun 2020, 16:23

Plugin Cerut: Modificarea
Descriere (adica ce face el mai exact): O abilitata extrasa din Wa3rft , creeaza o spirala pe inamic.
Serverul impune conditii strict HLDS/REHLDS?: REHLDS
Ai cautat pluginul?(daca da, precizeaza cum):
Necesita mod special?: Da, zombie plague
Doresc modificarea acestui plugin, in asa fel incat abilitatea sa se puna pe mai multe persoane
| Afiseaza codul
#include <amxmodx>
#include <fakemeta>
#include <fun>
#include <cstrike>
#include <hamsandwich>
#include <zombieplague>
#include <engine>
#include <ColorChat>
#include <fakemeta_util>

new SPR_TRAIL, SPR_BEAM
#define	ENTANGLE_TIME		3.0
#define	TASK_RESETSPEED		512
#define TASK_SEARCHING		1738
#define	TASK_ENTANGLEWAIT	928
#define SOUND_ENTANGLING	"zombie_plague/humans/entanglingrootstarget1.wav"						
new IsStunned[33], Float:LastSpeed[33], entangle_can[33], Float:g_cenCooldown[33], gCvarEnCoolDown
new g_maxplayers

public plugin_init()
{
	register_plugin("[ZP] Human Power", "1.0", "Daniel")
	gCvarEnCoolDown = register_cvar("zp_entangle_cooldown", "35")
	register_clcmd("radio3", "ulteng")
	register_event("HLTV", "NewRound", "a", "1=0", "2=0")
	g_maxplayers = get_maxplayers()
	register_forward(FM_PlayerPreThink, "FW_playerprethink")
}
public plugin_precache()
{
	SPR_TRAIL = precache_model("sprites/smoke.spr");
	SPR_BEAM = precache_model("sprites/ef_shockwave.spr");
	precache_sound(SOUND_ENTANGLING)
}
public NewRound()
{
	for (new id = 1; id <= g_maxplayers; id++)
	{
		if(entangle_can[id])
			entangle_can[id] = false
	}	
}

public FW_playerprethink(id)
{
	if(!zp_get_user_zombie(id)) 
	{
		new Target, Body;
		get_user_aiming(id, Target, Body, 9999999);
		
		// Entangle Power
		if(is_user_alive(Target) && !zp_get_user_first_zombie(Target) && is_user_alive(id) && zp_has_round_started()) 
		{
			if(entangle_can[id] && !IsStunned[Target]) 
			{
				if(zp_get_user_zombie(id) && zp_get_user_zombie(Target))
				{
					return 0;
				}

				if(!zp_get_user_zombie(id) && !zp_get_user_zombie(Target))
				{
					return 0;
				}
				Ultimate_Entangle(id, Target)
				entangle_can[id] = false
			}
		}
	}

	if(is_user_alive(id) && IsStunned[id])
	{
		set_pev(id, pev_maxspeed, 1.0);
		set_pev(id, pev_velocity, Float:{0.0,0.0,0.0})
	}
	return PLUGIN_CONTINUE
}
public ulteng(id)
{	
	if(is_user_alive(id) && !entangle_can[id] && !zp_get_user_zombie(id)) 
	{
		static Float: gametime ; gametime = get_gametime();
		if(gametime - float(get_pcvar_num(gCvarEnCoolDown)) > g_cenCooldown[id])
		{
			entangle_can[id] = true;
			ColorChat(id, GREEN, "[ZC]^x01 Put^x04 your crosshair^x01 on a^x04 victim!")
			g_cenCooldown[id] = gametime
		}
		else
		{
			ColorChat(id, GREEN, "[ZC]^x01 Your power will charge in:^x04 %.1f seconds !", float(get_pcvar_num(gCvarEnCoolDown)) - (gametime - g_cenCooldown[id]))
			return;
		}	
	}
}

public Ultimate_Entangle(Caster, Enemy) 
{
	new qRed, qGreen, qBlue
	if(get_user_team(Enemy) == 1)
		qRed = 0, qGreen = 0, qBlue = 200
	else
		qRed = 200, qGreen = 0, qBlue = 0
	
	message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
	write_byte(TE_BEAMFOLLOW)
	write_short(Enemy)			// entity
	write_short(SPR_TRAIL)			// model
	write_byte(10)				// life
	write_byte(5)				// width
	write_byte(qRed)			// red
	write_byte(qGreen)			// green
	write_byte(qBlue)			// blue
	write_byte(200)				// brightness
	message_end()
	
	IsStunned[Enemy] = true;
	pev(Enemy, pev_maxspeed, LastSpeed[Enemy])
	set_pev(Enemy, pev_maxspeed, 1.0);
	set_pev(Enemy, pev_movetype, MOVETYPE_NONE);
	
	new parm[4];
	parm[0] = Enemy;
	parm[1] = 0;
	parm[2] = 0;
	parm[3] = 0;
	EntangleWait(parm);
}

public EntangleWait(parm[4]) 
{
	new id = parm[0];
	
	if(id >= TASK_ENTANGLEWAIT)
		id -= TASK_ENTANGLEWAIT;
	
	if(is_user_connected(id)) {	
		new Origin[3];
		get_user_origin(id, Origin);
		
		if(Origin[0] == parm[1] && Origin[1] == parm[2] && Origin[2] == parm[3] && (pev(id, pev_flags))) {
			set_task(ENTANGLE_TIME, "Entangle_ResetMaxSpeed", TASK_RESETSPEED + id);
			EntangleEffect(id)
		}
		else {
			parm[1] = Origin[0];
			parm[2] = Origin[1];
			parm[3] = Origin[2];
			set_task(0.001, "EntangleWait", TASK_ENTANGLEWAIT + id, parm, 4);
		}
	}
}

public EntangleEffect(id) 
{
	new Origin[3];
	get_user_origin(id, Origin);
	
	emit_sound(id, CHAN_STATIC, SOUND_ENTANGLING, 1.0, ATTN_NORM, 0, PITCH_NORM);
	
	new Start[3], End[3], Height;
	new Radius = 20, Counter = 0;
	new x1, y1, x2, y2;
	
	while(Counter <= 7) {
		if(Counter == 0 || Counter == 8)
			x1 = -Radius;
		else if(Counter == 1 || Counter == 7)
			x1 = -Radius * 100/141;
		else if(Counter == 2 || Counter == 6)
			x1 = 0;
		else if(Counter == 3 || Counter == 5)
			x1 = Radius*100/141
		else if(Counter == 4)
			x1 = Radius
		
		if(Counter <= 4)
			y1 = sqroot(Radius*Radius-x1*x1);
		else
			y1 = -sqroot(Radius*Radius-x1*x1);
		
		++Counter;
		
		if(Counter == 0 || Counter == 8)
			x2 = -Radius;
		else if(Counter == 1 || Counter==7)
			x2 = -Radius*100/141;
		else if(Counter == 2 || Counter==6)
			x2 = 0;
		else if(Counter == 3 || Counter==5)
			x2 = Radius*100/141;
		else if(Counter == 4)
			x2 = Radius;
		
		if(Counter <= 4)
			y2 = sqroot(Radius*Radius-x2*x2);
		else
			y2 = -sqroot(Radius*Radius-x2*x2);
		
		Height = 16 + 2 * Counter;
		
		while(Height > -40) 
		{
			Start[0]	= Origin[0] + (x1 * 2);
			Start[1]	= Origin[1] + (y1 * 2);
			Start[2]	= Origin[2] + (Height * 2);
			End[0]		= Origin[0] + (x2 * 2);
			End[1]		= Origin[1] + (y2 * 2);
			End[2]		= Origin[2] + (Height * 2);
			
			new qRed, qGreen, qBlue
			if(get_user_team(id) == 1)
				qRed = 0, qGreen = 0, qBlue = 200
			else
				qRed = 200, qGreen = 0, qBlue = 0
			message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
			write_byte(TE_BEAMPOINTS)
			write_coord(Start[0])
			write_coord(Start[1])
			write_coord(Start[2])
			write_coord(End[0])
			write_coord(End[1])
			write_coord(End[2])
			write_short(SPR_BEAM)				// model
			write_byte(0)					// start frame
			write_byte(0)					// framerate
			write_byte((floatround(ENTANGLE_TIME) * 10));	// life
			write_byte(30)					// width
			write_byte(15)					// noise
			write_byte(qRed)				// red
			write_byte(qGreen)				// green
			write_byte(qBlue)				// blue
			write_byte(200)					// brightness
			write_byte(0)					// speed
			message_end()
			
			Height -= 16;
		}
	}
}

public Entangle_ResetMaxSpeed(id) {
	if(id >= TASK_RESETSPEED)
		id -= TASK_RESETSPEED;
	
	task_exists(TASK_ENTANGLEWAIT + id) ? remove_task(TASK_ENTANGLEWAIT + id) : 0;
	IsStunned[id] = false;
	if(is_user_alive(id))
		set_pev(id, pev_maxspeed, LastSpeed[id]);
}
Post Reply

Return to “Modificari pluginuri”

  • Information
  • Who is online

    Users browsing this forum: No registered users and 8 guests