You need to Precache this first with the weapon''s Precache code
CODE
m_iSpriteTexture = PRECACHE_MODEL( "sprites/shockwave.spr" );
Add this to the attack code. ex. PrimaryAttack, SecondaryAttack
CODE
MESSAGE_BEGIN( MSG_PAS, SVC_TEMPENTITY, m_pPlayer->pev->origin );
WRITE_BYTE( TE_BEAMCYLINDER );
WRITE_COORD( m_pPlayer->pev->origin.x);
WRITE_COORD( m_pPlayer->pev->origin.y);
WRITE_COORD( m_pPlayer->pev->origin.z + 5);
WRITE_COORD( m_pPlayer->pev->origin.x);
WRITE_COORD( m_pPlayer->pev->origin.y);
WRITE_COORD( m_pPlayer->pev->origin.z + 16 + ( 100 / 2 ) / .2);
WRITE_SHORT( m_iSpriteTexture );
WRITE_BYTE( 0 ); // startframe
WRITE_BYTE( 0 ); // framerate
WRITE_BYTE( 1 ); // life
WRITE_BYTE( 16 ); // width
WRITE_BYTE( 0 ); // noise
WRITE_BYTE( 255 ); //r
WRITE_BYTE( 184 ); //g
WRITE_BYTE( 51 ); //b
WRITE_BYTE( 200 ); //brightness
WRITE_BYTE( 0 ); // speed
MESSAGE_END();
Its cooler to boom out 2 sonic circles so we kind of copy the same thing over here again.
CODE
MESSAGE_BEGIN( MSG_PAS, SVC_TEMPENTITY, m_pPlayer->pev->origin );
WRITE_BYTE( TE_BEAMCYLINDER );
WRITE_COORD( m_pPlayer->pev->origin.x);
WRITE_COORD( m_pPlayer->pev->origin.y);
WRITE_COORD( m_pPlayer->pev->origin.z + 5);
WRITE_COORD( m_pPlayer->pev->origin.x);
WRITE_COORD( m_pPlayer->pev->origin.y);
WRITE_COORD( m_pPlayer->pev->origin.z + 16 + ( 100 / 2 ) / .2);
WRITE_SHORT( m_iSpriteTexture );
WRITE_BYTE( 0 ); // startframe
WRITE_BYTE( 0 ); // framerate
WRITE_BYTE( 2 ); // life
WRITE_BYTE( 16 ); // width
WRITE_BYTE( 0 ); // noise
WRITE_BYTE( 255 ); //r
WRITE_BYTE( 184 ); //g
WRITE_BYTE( 51 ); //b
WRITE_BYTE( 100 ); //alpha
WRITE_BYTE( 0 ); // speed
MESSAGE_END();