MasamuneDate

Zeus

Apr 6th, 2018
210
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 6.98 KB | None | 0 0
  1. /* Plugin generated by AMXX-Studio */
  2.  
  3. #include <amxmodx>
  4. #include <codmod>
  5. #include <hamsandwich>
  6. #include <fakemeta>
  7. #include <fakemeta_util>
  8. #include <engine>
  9. #include <xs>
  10. #include <amxmisc>
  11.  
  12. #define TIME_SHOT 10.0
  13. #define RANGE 100.0
  14. #define DAMAGE 55.0
  15.  
  16. #define write_coord_f(%0)  ( engfunc( EngFunc_WriteCoord, %0 ) )
  17.  
  18. new const v_model[]     =   "models/v_palec.mdl";
  19. new const iWeapon   =   CSW_P228;
  20. new const szWeapon[]    =   "weapon_p228";
  21.  
  22. new Float:fShot[33];
  23.  
  24. new gmsgShake
  25.  
  26. new gLaserSprite;
  27.  
  28. new bool:ma_klase[33]
  29.  
  30. new const nazwa[] = "Zeus";
  31. new const opis[] = "M4A1 and a finger of Zeus";
  32. new const bronie = (1<<CSW_M4A1) | 1<<CSW_P228;
  33. new const zdrowie = 10;
  34. new const kondycja = 45;
  35. new const inteligencja = 0;
  36. new const wytrzymalosc = 20;
  37.  
  38. public plugin_init() {
  39.     register_plugin(nazwa, "1.0", "QTM_Peyote");
  40.    
  41.     cod_register_class(nazwa, opis, bronie, zdrowie, kondycja, inteligencja, wytrzymalosc);
  42.     RegisterHam(Ham_Item_Deploy,szWeapon,"fwDeploy",1)
  43.     RegisterHam(Ham_Spawn,"player","fwSpawned",1)
  44.    
  45.     register_forward(FM_PlayerPreThink, "PlayerPreThink")
  46.     register_forward(FM_UpdateClientData, "UpdateClientData_Post", 1)
  47.    
  48.     gmsgShake = get_user_msgid("ScreenShake");
  49. }  
  50. public plugin_precache(){
  51.     precache_model(v_model)
  52.    
  53.     gLaserSprite = precache_model("sprites/laserbeam.spr")
  54.    
  55.     precache_sound("palec_zeusa/thunder.wav")
  56. }
  57.  
  58. public client_connect(id){
  59.     fShot[id] = get_gametime();
  60. }
  61.  
  62. public fwSpawned(id){
  63.     if(!is_user_alive(id) || !ma_klase[id])
  64.         return HAM_IGNORED;
  65.    
  66.     fm_give_item(id,szWeapon);
  67.    
  68.     return HAM_IGNORED;
  69. }
  70.  
  71. public cod_class_enabled(id){
  72.    
  73.     fm_give_item(id,szWeapon);
  74.    
  75.     ma_klase[id] = true;
  76. }
  77.  
  78. public cod_class_disabled(id){
  79.    
  80.     fm_strip_user_gun(id,iWeapon);
  81.    
  82.     ma_klase[id] = false;
  83. }
  84.  
  85. public fwDeploy(wpn){
  86.     static iOwner;
  87.     iOwner = pev(wpn,pev_owner);
  88.    
  89.     if(!is_user_alive(iOwner) || !ma_klase[iOwner])
  90.         return ;
  91.    
  92.     set_pev(iOwner,pev_viewmodel2,v_model)
  93.    
  94.     setWeaponAnim(iOwner,5);
  95. }
  96.  
  97. public PlayerPreThink( id )
  98. {
  99.    
  100.     if( !is_user_alive(id) || get_user_weapon(id) != iWeapon || !ma_klase[id])
  101.         return FMRES_IGNORED;
  102.    
  103.     new buttons = pev(id,pev_button);
  104.     new oldbuttons = pev(id,pev_oldbuttons)
  105.    
  106.     if(buttons & IN_ATTACK && !(oldbuttons & IN_ATTACK) && fShot[id] <= get_gametime()){
  107.        
  108.         fShot[id] = get_gametime() + TIME_SHOT;
  109.        
  110.         new Float:fOrigin[3],Float:fView[3],Float:fAngles[3]
  111.        
  112.         pev(id,pev_origin,fOrigin)
  113.         pev(id,pev_view_ofs,fView);
  114.        
  115.         xs_vec_add(fOrigin,fView,fOrigin);
  116.        
  117.         pev(id,pev_v_angle,fAngles);
  118.         angle_vector(fAngles,ANGLEVECTOR_FORWARD,fAngles);
  119.        
  120.         xs_vec_mul_scalar(fAngles,999.0,fAngles);
  121.        
  122.         xs_vec_add(fOrigin,fAngles,fAngles);
  123.        
  124.         new ptr = create_tr2()
  125.        
  126.         engfunc(EngFunc_TraceLine,fOrigin,fAngles,DONT_IGNORE_MONSTERS,id,ptr)
  127.        
  128.         new Float:fEnd[3];
  129.         get_tr2(ptr,TR_vecEndPos,fEnd)
  130.        
  131.         new pHit = get_tr2(ptr,TR_pHit)
  132.        
  133.         free_tr2(ptr);
  134.        
  135.         message_begin( MSG_BROADCAST, SVC_TEMPENTITY );
  136.         write_byte (TE_BEAMENTPOINT)
  137.         write_short(id | 0x1000)
  138.         /*write_byte( TE_BEAMPOINTS  )
  139.         write_coord_f( fOrigin[0] );
  140.         write_coord_f( fOrigin[1] );
  141.         write_coord_f( fOrigin[2] );*/
  142.         write_coord_f( fEnd[0] );
  143.         write_coord_f( fEnd[1] );
  144.         write_coord_f( fEnd[2] );
  145.         write_short( gLaserSprite );
  146.         write_byte( 255 );    //Start frame 0
  147.         write_byte( 255 );    //Frame rate 0
  148.         write_byte( 3 );    //Life 10
  149.         write_byte( 10);    //Width 20
  150.         write_byte( 30);    //noise 300
  151.         write_byte( 0 );    //R
  152.         write_byte( 127 );    //G
  153.         write_byte( 255 );    //B
  154.         write_byte( 255 );    //brightness 200
  155.         write_byte( 5 );    //Scroll 30
  156.         message_end();        //End
  157.        
  158.         setWeaponAnim(id,random_num(1,3));
  159.        
  160.         message_begin(MSG_ONE, gmsgShake, {0,0,0}, id)
  161.         write_short(255<< 14 ) //ammount
  162.         write_short((1<<12)) //lasts this long
  163.         write_short(255<< 14) //frequency
  164.         message_end()
  165.        
  166.         emit_sound(id,CHAN_VOICE,"palec_zeusa/thunder.wav",VOL_NORM, ATTN_NORM, 0, PITCH_NORM)
  167.        
  168.         if(is_user_alive(pHit) && get_user_team(pHit) != get_user_team(id)){
  169.            
  170.             message_begin(MSG_ONE, gmsgShake, {0,0,0}, pHit)
  171.             write_short(255<< 14 ) //ammount
  172.             write_short((1<<12)) //lasts this long
  173.             write_short(255<< 14) //frequency
  174.             message_end()
  175.            
  176.             new bool:bAttacked[33];
  177.            
  178.             bAttacked[pHit] = true;
  179.            
  180.             cod_inflict_damage(id,pHit,DAMAGE,1.0)
  181.             Display_Fade(pHit,(1<<12),(1<<12),0x0000,0,127,255,200);
  182.            
  183.             new Array:iFinded = ArrayCreate(1,1);
  184.             ArrayPushCell(iFinded,pHit);
  185.            
  186.             new iPos = 0;
  187.            
  188.             while(ArraySize(iFinded) > iPos){
  189.                 new Float:fOriginTmp[3];
  190.                 pev(ArrayGetCell(iFinded,iPos),pev_origin,fOriginTmp);
  191.                
  192.                 new iEnt = -1
  193.                
  194.                 while((iEnt = find_ent_in_sphere(iEnt,fOriginTmp,RANGE)) != 0){
  195.                     if(is_user_alive(iEnt) && get_user_team(iEnt) != get_user_team(id) && !bAttacked[iEnt]){
  196.                         bAttacked[iEnt] = true;
  197.                        
  198.                         ArrayPushCell(iFinded,iEnt);
  199.                        
  200.                         cod_inflict_damage(id,iEnt,DAMAGE,1.0)
  201.                         Display_Fade(iEnt,(1<<12),(1<<12),0x0000,0,127,255,200);
  202.                        
  203.                         message_begin( MSG_BROADCAST, SVC_TEMPENTITY );
  204.                         write_byte(TE_BEAMENTS)
  205.                         write_short(ArrayGetCell(iFinded,iPos))
  206.                         write_short(iEnt)
  207.                         write_short( gLaserSprite );
  208.                         write_byte( 255 );    //Start frame 0
  209.                         write_byte( 255 );    //Frame rate 0
  210.                         write_byte( 3 );    //Life 10
  211.                         write_byte( 10);    //Width 20
  212.                         write_byte( 30);    //noise 300
  213.                         write_byte( 0 );    //R
  214.                         write_byte( 127 );    //G
  215.                         write_byte( 255 );    //B
  216.                         write_byte( 255 );    //brightness 200
  217.                         write_byte( 5 );    //Scroll 30
  218.                         message_end();        //End
  219.                        
  220.                         message_begin(MSG_ONE, gmsgShake, {0,0,0}, iEnt)
  221.                         write_short(255<< 14 ) //ammount
  222.                         write_short((1<<12)) //lasts this long
  223.                         write_short(255<< 14) //frequency
  224.                         message_end()
  225.                     }
  226.                 }
  227.                 iPos++;
  228.             }
  229.            
  230.             ArrayDestroy(iFinded)
  231.         }
  232.     }
  233.    
  234.     buttons = buttons & ~IN_ATTACK;
  235.     buttons = buttons & ~IN_ATTACK2;
  236.    
  237.     set_pev( id, pev_button, buttons );
  238.    
  239.     return FMRES_HANDLED;
  240. }
  241.  
  242. public UpdateClientData_Post( id, sendweapons, cd_handle )
  243. {
  244.    
  245.     if ( !is_user_alive(id) || get_user_weapon(id) != iWeapon || !ma_klase[id])
  246.         return FMRES_IGNORED;
  247.    
  248.     set_cd(cd_handle, CD_flNextAttack, halflife_time() + 0.001 );
  249.     return FMRES_HANDLED;
  250. }
  251.  
  252. stock setWeaponAnim(id, anim) {
  253.     set_pev(id, pev_weaponanim, anim)
  254.    
  255.     message_begin(MSG_ONE, SVC_WEAPONANIM, {0, 0, 0}, id)
  256.     write_byte(anim)
  257.     write_byte(pev(id, pev_body))
  258.     message_end()
  259. }
  260.  
  261. stock Display_Fade(id,duration,holdtime,fadetype,red,green,blue,alpha)
  262. {
  263.     if(!is_user_alive(id)){
  264.         return ;
  265.     }
  266.     message_begin( MSG_ONE, get_user_msgid("ScreenFade"),{0,0,0},id );
  267.     write_short( duration );        // Duration of fadeout
  268.     write_short( holdtime );        // Hold time of color
  269.     write_short( fadetype );        // Fade type
  270.     write_byte ( red );             // Red
  271.     write_byte ( green );           // Green
  272.     write_byte ( blue );            // Blue
  273.     write_byte ( alpha );   // Alpha
  274.     message_end();
  275. }
Advertisement
Add Comment
Please, Sign In to add comment