I dont have time to tweak it more, but here's what I've came up with in 10 mins.
Code:
#include <acknex.h>
#include <default.c>

function part_ev(PARTICLE *p)
{
	p->alpha -= random(25) * p->vel_z * time_step;
	p->size += 0.005 * time_step;
	
	if(p->alpha <= 0)
		p->lifespan = 0;
}

function part(PARTICLE *p)
{
	p->vel_x = 0;
	p->vel_y = 0;
	p->vel_z = random(0.01) + 0.09;
	p->gravity = 0;
	p->size = random(0.1) + 0.3;
	p->flags = MOVE | TRANSLUCENT;
	p->event = part_ev;
}

function main()
{
	fps_max = 60;
	video_mode = 10;
	level_load(NULL);
	
	ENTITY *pGun = ent_create("m4a1.MDL", camera.x, NULL);
	ent_animate(pGun, "Take", 100, 0);
	camera.clip_near = 1;
	camera.arc = 85;
	
	int i = 0;
	
	while(1)
	{
		proc_mode = PROC_LATE;
		vec_set(pGun.pan, camera.pan);
		vec_set(pGun.x, camera.x);
		
		VECTOR v1, v2;
		vec_for_vertex(v1, pGun, 39);
		//vec_for_vertex(v2, pGun, 1788);
		//vec_add(v1, v2);
		//vec_scale(v1, 0.5);
		
		effect(part, 10, vector(v1.x, v1.y, v1.z), nullvector);
		
		/*for(i = 0; i < 50; i++)
		{
			effect(part, 1, vector(vPos.x, vPos.y, vPos.z + i*time_step), nullvector);
		}*/
		
		wait(1);
	}
}



Fix your MDL name and, I've commented one of the vertices, because you really need only one...
Include a sprite image for the particles, it'll look better.

PS.: Tested with 1600 particles. Doesnt look like in the video, but in slower movements it appears smooth. Faster movements separate the particles too much, so you might need even more particles for the players gun.


Extensive Multiplayer tutorial:
http://mesetts.com/index.php?page=201