[CCI SX]Dragonfist

YEA
✔️ HL Verified
Joined
Oct 31, 2014
Messages
201
Best answers
0
Location
CHINA
just made for my server >.>
PHP:
#include < xtension/special >

#include "amxx/hamsandwich" // >>Remember to Enable this module in "addons\amxmodx\configs\modules.ini"
#include "ipci/ascend"

stock SpecialXtension: sxDragonfist;
new DragonHead[ 33 ];

public plugin_init ()
{
	register_plugin( "Dragonfist", "1.0", "ESFKAMI" );

	RegisterHam( Ham_TakeDamage, "bot", "@TakeDamage" );
	RegisterHam( Ham_TakeDamage, "player", "@TakeDamage" );
}

public plugin_precache() precache_model( "models/evolution/dragonfist.mdl" );

public client_PostThink( Client )
{
	if( getClientSWOOPDIRECTION( Client ) == SWOOP_FORWARD ) return;

	if( getClientSPECIALSTATE( Client, sxDragonfist ) )
	{
		if( is_valid_ent( DragonHead[ Client ] ) )
			remove_entity( DragonHead[ Client ] );
		DragonHead[ Client ] = 0;

		setClientPROTECT( Client, false );
		setClientSPEEDMP( Client, 1.000_000 );
		setClientSPECIALSTATE( Client, sxDragonfist, false );
		setClientSPECIALCOOLDOWN( Client, sxDragonfist, 60.000_000 );
	}
}

public @SpecialCreation ()
{
	beginSpecialCreation( "Dragonfist", "www.esfkami.net", "@Dragonfist", "special_dragonfist", true );
	addSpecialCharge( IN_ATTACK, 0.500_000, 80.000_000, true );
	addSpecialControl( IN_JUMP );
	sxDragonfist = endSpecialCreation();
}

public @Dragonfist ( Client, CSpecialState:Status, Control, Float:Charge )
{
	switch ( Status )
	{
		case ssCharge: // called every 0.1 secs
		{
			
			if( getClientSWOOPDIRECTION( Client ) != SWOOP_FORWARD ) return false;

			if( Charge == -1.000_000 ) emitClientSOUND( Client, CHAN_BODY, "*/wc_dragonfist.wav" );

			return true;
		}
		
		case ssChargeReleased:
		{
			if ( Charge >= 1.0 )
			{
				setClientPROTECT( Client, true );
				//setClientKI( Client, 1000.000_000 );
				setClientSPEEDMP( Client, 10.000_000 );
				setClientSWOOPTIME( Client, getClientSWOOPTIME( Client ) + 10.000_000 );
				emitClientSOUND( Client, CHAN_WEAPON, "*/w_dragonfist.wav" );

				DragonHead[ Client ] = create_entity( "env_model" );
				engfunc( EngFunc_SetModel, DragonHead[ Client ], "models/evolution/dragonfist.mdl" );
				set_rendering( DragonHead[ Client ], kRenderFxNone, 0, 0, 0, kRenderTransAdd, 100 );
				set_pev( DragonHead[ Client ], pev_aiment, Client );
				set_pev( DragonHead[ Client ], pev_movetype , MOVETYPE_FOLLOW );
				set_pev( DragonHead[ Client ], pev_scale, 0.200_000 );

				setClientSPECIALSTATE( Client, sxDragonfist, true );
			}
		}
		
		// Called when Charge > 0.0 by Death, Disconnect, IconSwitch to another Weapon, Out of Ki
		case ssChargeAborted: return false;
		
		case ssControlInvocation:
		{
			if ( Control == IN_JUMP )
			{
				if( is_valid_ent( DragonHead[ Client ] ) )
					remove_entity( DragonHead[ Client ] );
				DragonHead[ Client ] = 0;

				setClientPROTECT( Client, false );
				setClientSPEEDMP( Client, 1.000_000 );
				setClientSPECIALSTATE( Client, sxDragonfist, false );
				setClientSPECIALCOOLDOWN( Client, sxDragonfist, 60.000_000 );
			}

			return false;
		}
		
		// Called when Specialstate = true by Death, Disconnect, IconSwitch to another Weapon
		case ssForceAbort:
		{
			if( is_valid_ent( DragonHead[ Client ] ) )
				remove_entity( DragonHead[ Client ] );
			DragonHead[ Client ] = 0;

			setClientPROTECT( Client, false );
			setClientSPEEDMP( Client, 1.000_000 );
			setClientSPECIALCOOLDOWN( Client, sxDragonfist, 60.000_000 );

			return false;
		}
	}

	return true;
}

public @TakeDamage( Victim, Inflictor, Attacker, Float: Damage, DamageType )
{
	if( !is_valid_ent( Attacker ) ) return;

	if( getClientSPECIALSTATE( Attacker, sxDragonfist ) )
	{
		SetHamParamFloat( 4, 256.000_000 );

		if( is_valid_ent( DragonHead[ Attacker ] ) )
			remove_entity( DragonHead[ Attacker ] );
		DragonHead[ Attacker ] = 0;

		new Float: org[ 3 ];
		pev( Victim, pev_origin, org );

		message_begin( MSG_PVS, SVC_TEMPENTITY );
		write_byte( TE_SPRITE );
		engfunc( EngFunc_WriteCoord, org[ 0 ] );
		engfunc( EngFunc_WriteCoord, org[ 1 ] );
		engfunc( EngFunc_WriteCoord, org[ 2 ] );
		write_short( engfunc( EngFunc_ModelIndex, "sprites/xflare1.spr" ) );
		write_byte( 20 );
		write_byte( 255 );
		message_end();

		setClientPROTECT( Attacker, false );
		setClientSPEEDMP( Attacker, 1.000_000 );
		setClientSPECIALSTATE( Attacker, sxDragonfist, false );
		setClientSPECIALCOOLDOWN( Attacker, sxDragonfist, 60.000_000 );

		set_msg_block( get_user_msgid( "DeathMsg" ), BLOCK_ONCE );

		message_begin( MSG_ALL, get_user_msgid( "DeathMsg" ) );
		write_byte( Attacker );
		write_byte( Victim );
		write_string( "Dragonfist" );
		message_end();
	}
}
 
Last edited:

Users who are viewing this thread

Top Bottom