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

ESFKAMI

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

ESFX

ESF: Xenoverse

ESF123

ESF1.2.3

EVM2.1

EVM2.1

ECXSSJ

ECX: TeamSSJ

ECX2.2

ECX RC2

ECX2.3

ECX RC3

查看: 559|回复: 0

[特殊技|SX]魔人贝吉塔|Majin Vegeta

[复制链接]

206

主题

211

帖子

893

积分

ESFKAMI

Rank: 8Rank: 8

积分
893
发表于 2017-8-6 09:22:57 | 显示全部楼层 |阅读模式

  1. #include <xtension/special>
  2. #include <ipci/fxlib>
  3. #include <ipci/ascend>

  4. stock SpecialXtension:sxMajin;
  5. stock ChargeStateLock[33] = {0, ...};

  6. public plugin_init ()
  7. {
  8.     register_plugin( "Majin", "1.0", "core | Raven" );
  9. }


  10. public @SpecialCreation ()
  11. {
  12.     beginSpecialCreation( "Majin", "", "callbackMajin", "special_majin" );     
  13.     addSpecialCharge( IN_ATTACK, 22.0, 3.0, false );
  14.     sxMajin = endSpecialCreation();
  15. }

  16. public callbackMajin ( Client, CSpecialState:Status, Control, Float:Charge )
  17. {
  18.     switch ( Status )
  19.     {
  20.         case ssCharge: // called every 0.1 secs
  21.         {
  22.             
  23.             // allways including isDead, inTransform
  24.             if ( ( getClientPOWERUP( Client ) && !getClientXFROZEN( Client ) )
  25.               || getClientTURBO( Client )
  26.               || getClientMELEE( Client )
  27.               || getClientWALLGND( Client )
  28.               || getClientSWOOPING( Client )
  29.               || getClientMELEEPUSHBACK( Client )
  30.               || getClientATKSHOOT( Client )
  31.               || getClientTHROWAWAY( Client )
  32.               || getClientBLOCK( Client )
  33.               || getClientTHROW( Client )
  34.                )
  35.             {
  36.                 //client_print( Client, print_chat, "< Sample > ssCharge > Denied %.2f", Charge );                 
  37.                 return 0; // > ssChargeAborted if Charge > 0.0
  38.             }
  39.             
  40.                         
  41.             if ( Charge == 0.0 && Control == IN_ATTACK )
  42.             {
  43.                 ChargeStateLock[ Client ] = 1;
  44.                 emitClientSOUND( Client, CHAN_ITEM, "*/majin.wav");
  45.                 AddFx( Client, "fxAvatar", "create", 100, 0.46875 );
  46.                 //setClientANIMATION(Client,100,0.2);
  47.                 fxMajin( Client );
  48.                  
  49.             }
  50.             
  51.             else if ( Charge == 1.0 && Control == IN_ATTACK && ChargeStateLock[ Client ] < 5 )
  52.             {
  53.                 ChargeStateLock[ Client ] = 5;
  54.                 //client_print( Client, print_chat, "//go Majin" );
  55.                 goMajin( Client );                 
  56.             }            
  57.             
  58.             return 1;
  59.         }
  60.          
  61.         case ssChargeReleased:
  62.         {
  63.             if ( Charge < 1.0 )
  64.             {
  65.                 abortMajin( Client );
  66.             }
  67.         }
  68.          
  69.         // Called when Charge > 0.0 by Death, Disconnect, IconSwitch to another Weapon, Out of Ki
  70.         case ssChargeAborted:
  71.         {
  72.             abortMajin( Client );
  73.             return 0;
  74.         }
  75.          
  76.                  
  77.         // Called when Specialstate = true by Death, Disconnect, IconSwitch to another Weapon
  78.         case ssForceAbort:
  79.         {
  80.             abortMajin( Client );
  81.         }
  82.     }
  83.      
  84.     return 1;
  85. }


  86. abortMajin( Client )
  87. {

  88.     stopClientSOUND( Client, CHAN_ITEM );
  89.     setClientSPECIALCOOLDOWN( Client, sxMajin, 2.0 );
  90.     setClientSPECIALSTATE( Client, sxMajin, false );
  91.     ChargeStateLock[ Client ] = 0;
  92.      
  93.     RemFx( Client, "fxAvatar", 0 );
  94.     //setClientANIMATION(Client,-1);
  95.     fxMajinOff( Client );
  96. }

  97. goMajin( Client )
  98. {
  99.     setClientSPECIALSTATE( Client, sxMajin, true );
  100.     forceClientCLASS( Client, getClientCLASS( Client ), 3, true, false );
  101.     setClientPL( Client, floatround ( float( getClientPL( Client ) ) * 1.5 ) );
  102.      
  103.     static Float:HP;
  104.     HP = getClientHP( Client )*0.5 -50.0;
  105.      
  106.     if( floatround(HP) <= 0 )
  107.     {
  108.         silentClientKILL( Client );
  109.         message_begin    ( MSG_ALL, get_user_msgid("DeathMsg") );
  110.         write_byte    ( Client );
  111.         write_byte    ( Client );
  112.         write_string    ( "Majin Transformation" );
  113.         message_end    ();
  114.     }
  115.     else
  116.         setClientHP( Client, floatround(HP));
  117.      
  118.     client_cmd( Client, "weapon_melee" );
  119.     AddFx( Client, "fxBlow" );

  120. }


  121. fxMajin( Client )
  122. {
  123.     new CORE[ 1 ];
  124.     CORE[ 0 ] = Client;
  125.      
  126.     AddFx( Client, "fxPowerup", 0,0,0);
  127.     stopClientSOUND( Client, CHAN_WEAPON );     
  128.      
  129.     for ( new Float:i=0.0; i<=20.0; i++ )
  130.             set_task( i, "fxLight", uniqueTaskID( Client,100 ), CORE, 1, "a",1 );
  131.      
  132.      
  133.     set_task( 5.0, "fxPwUp", uniqueTaskID( Client,100 ), CORE, 1, "a",1 );         
  134.     set_task( 21.5, "fxFinalBlow", uniqueTaskID( Client,100 ), CORE, 1, "a",1 );
  135.      

  136. }


  137. public fxLight( Core[] )
  138. {
  139.     AddFx( Core[0], "fxWorldLight", 40, 70, 10, 10, 2.1, 0.5);
  140.     return 1;
  141. }

  142. public fxPwUp( Core[] )
  143. {
  144.     AddFx( Core[0], "fxPowerup", 150,60,50);
  145.     return 1;
  146. }

  147. public fxFinalBlow( Core[] )
  148. {
  149.     AddFx( Core[0], "fxPowerWave", "sprites/white.spr", 255, 100, 10, 30, 250);
  150.     AddFx( Core[0], "fxSpriteRays", "sprites/xsmoke1.spr", 5, 15, 0, 255, 100, 10, 255, 25, 350, 0, 25 );
  151.     AddFx( Core[0], "fxBlow" );
  152.     AddFx( Core[0], "fxBlow" );
  153.     AddFx( Core[0], "fxBlow" );

  154.     return 1;
  155. }

  156. fxMajinOff(Client)
  157. {     
  158.     remove_task( uniqueTaskID( Client, 100 ) );
  159.     RemFx( Client, "fxPowerup", 0);
  160. }  
复制代码
回复

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|ESFKAMI    

GMT+8, 2017-10-22 03:14 , Processed in 2.740664 second(s), 21 queries .

Powered by Discuz! X3

© 2001-2013 Comsenz Inc.

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