请选择 进入手机版 | 继续访问电脑版
设为首页收藏本站

ESFKAMI

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz

ESFX

ESF: Xenoverse

ESF123

ESF1.2.3

EVM2.1

EVM2.1

ECXSSJ

ECX: TeamSSJ

ECX2.2

ECX RC2

ECX2.3

ECX RC3

查看: 1400|回复: 0

[特殊技|SX]龙拳|Dragonfist

[复制链接]

212

主题

217

帖子

1195

积分

ESFKAMI

Rank: 8Rank: 8

积分
1195
发表于 2017-7-13 16:58:04 | 显示全部楼层 |阅读模式

  1. #include < xtension/special >

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

  4. stock SpecialXtension: sxDragonfist;
  5. new DragonHead[ 33 ];

  6. public plugin_init ()
  7. {
  8.         register_plugin( "Dragonfist", "1.0", "ESFKAMI" );

  9.         RegisterHam( Ham_TakeDamage, "bot", "@TakeDamage" );
  10.         RegisterHam( Ham_TakeDamage, "player", "@TakeDamage" );
  11. }

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

  13. public client_PostThink( Client )
  14. {
  15.         if( getClientSWOOPDIRECTION( Client ) == SWOOP_FORWARD ) return;

  16.         if( getClientSPECIALSTATE( Client, sxDragonfist ) )
  17.         {
  18.                 if( is_valid_ent( DragonHead[ Client ] ) )
  19.                         remove_entity( DragonHead[ Client ] );
  20.                 DragonHead[ Client ] = 0;

  21.                 setClientPROTECT( Client, false );
  22.                 setClientSPEEDMP( Client, 1.000_000 );
  23.                 setClientSPECIALSTATE( Client, sxDragonfist, false );
  24.                 setClientSPECIALCOOLDOWN( Client, sxDragonfist, 60.000_000 );
  25.         }
  26. }

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

  34. public @Dragonfist ( Client, CSpecialState:Status, Control, Float:Charge )
  35. {
  36.         switch ( Status )
  37.         {
  38.                 case ssCharge: // called every 0.1 secs
  39.                 {
  40.                        
  41.                         if( getClientSWOOPDIRECTION( Client ) != SWOOP_FORWARD ) return false;

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

  43.                         return true;
  44.                 }
  45.                
  46.                 case ssChargeReleased:
  47.                 {
  48.                         if ( Charge >= 1.0 )
  49.                         {
  50.                                 setClientPROTECT( Client, true );
  51.                                 //setClientKI( Client, 1000.000_000 );
  52.                                 setClientSPEEDMP( Client, 10.000_000 );
  53.                                 setClientSWOOPTIME( Client, getClientSWOOPTIME( Client ) + 10.000_000 );
  54.                                 emitClientSOUND( Client, CHAN_WEAPON, "*/w_dragonfist.wav" );

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

  61.                                 setClientSPECIALSTATE( Client, sxDragonfist, true );
  62.                         }
  63.                 }
  64.                
  65.                 // Called when Charge > 0.0 by Death, Disconnect, IconSwitch to another Weapon, Out of Ki
  66.                 case ssChargeAborted: return false;
  67.                
  68.                 case ssControlInvocation:
  69.                 {
  70.                         if ( Control == IN_JUMP )
  71.                         {
  72.                                 if( is_valid_ent( DragonHead[ Client ] ) )
  73.                                         remove_entity( DragonHead[ Client ] );
  74.                                 DragonHead[ Client ] = 0;

  75.                                 setClientPROTECT( Client, false );
  76.                                 setClientSPEEDMP( Client, 1.000_000 );
  77.                                 setClientSPECIALSTATE( Client, sxDragonfist, false );
  78.                                 setClientSPECIALCOOLDOWN( Client, sxDragonfist, 60.000_000 );
  79.                         }

  80.                         return false;
  81.                 }
  82.                
  83.                 // Called when Specialstate = true by Death, Disconnect, IconSwitch to another Weapon
  84.                 case ssForceAbort:
  85.                 {
  86.                         if( is_valid_ent( DragonHead[ Client ] ) )
  87.                                 remove_entity( DragonHead[ Client ] );
  88.                         DragonHead[ Client ] = 0;

  89.                         setClientPROTECT( Client, false );
  90.                         setClientSPEEDMP( Client, 1.000_000 );
  91.                         setClientSPECIALCOOLDOWN( Client, sxDragonfist, 60.000_000 );

  92.                         return false;
  93.                 }
  94.         }

  95.         return true;
  96. }

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

  100.         if( getClientSPECIALSTATE( Attacker, sxDragonfist ) )
  101.         {
  102.                 SetHamParamFloat( 4, 256.000_000 );

  103.                 if( is_valid_ent( DragonHead[ Attacker ] ) )
  104.                         remove_entity( DragonHead[ Attacker ] );
  105.                 DragonHead[ Attacker ] = 0;

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

  108.                 message_begin( MSG_PVS, SVC_TEMPENTITY );
  109.                 write_byte( TE_SPRITE );
  110.                 engfunc( EngFunc_WriteCoord, org[ 0 ] );
  111.                 engfunc( EngFunc_WriteCoord, org[ 1 ] );
  112.                 engfunc( EngFunc_WriteCoord, org[ 2 ] );
  113.                 write_short( engfunc( EngFunc_ModelIndex, "sprites/xflare1.spr" ) );
  114.                 write_byte( 20 );
  115.                 write_byte( 255 );
  116.                 message_end();

  117.                 setClientPROTECT( Attacker, false );
  118.                 setClientSPEEDMP( Attacker, 1.000_000 );
  119.                 setClientSPECIALSTATE( Attacker, sxDragonfist, false );
  120.                 setClientSPECIALCOOLDOWN( Attacker, sxDragonfist, 60.000_000 );

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

  122.                 message_begin( MSG_ALL, get_user_msgid( "DeathMsg" ) );
  123.                 write_byte( Attacker );
  124.                 write_byte( Victim );
  125.                 write_string( "Dragonfist" );
  126.                 message_end();
  127.         }
  128. }
复制代码
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|ESFKAMI    

GMT+8, 2018-7-16 12:49 , Processed in 0.335068 second(s), 22 queries .

Powered by Discuz! X3

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表