You probably just needed to play more with some values laugh
Here, grab this demo:
Smoke Trail
Here is the code itself:
Code:
// include lib:
#include <acknex.h>
#include <default.c>

// game paths:
#define PRAGMA_PATH "data"

// define test level's name:
STRING* levelStr = "";

// particle bmap:
BMAP* smoke_tga = "smoke.tga";

// helper function:
function vec_randomize(VECTOR* vec, var range){
	vec_set(vec, vector(random(1) - 0.5, random(1) - 0.5, random(1) - 0.5));
	vec_normalize(vec, random(range));
}

// fade particles:
function fadeSmoke(PARTICLE* p){
	// decrease alpha:
	p.alpha -= (2 + random(2)) * time_step;
	// increase size:
	p.size += (1 + random(2)) * time_step;
	// if alpha is low enough, kill particle:
	if(p.alpha < 0){ p.lifespan = 0; }
}

// simple smoke particle effect:
function smokeEffect(PARTICLE* p){
	// vector for particle's movement:
	VECTOR vTemp;
	// randomize movement of smoke:
	vec_randomize(vTemp, 1);
	// add calculated movement to particle itself:
	vec_add(p.vel_x, vTemp);
	// define random size for smoke:
	p.size = 1 + random(2); 
	// define random alpha for smoke:
	p.alpha = 65 + random(10);
	// define smoke bmap:
	p.bmap = smoke_tga;
	// define gravity for smoke:
	p.gravity = 0.5; // play with this, or even remove
	// setup some flags:
	set(p, MOVE | BRIGHT | TRANSLUCENT);
	// define fading event for smoke:
	p.event = fadeSmoke;
}
// simple rocket going in circles:
action actRocket(){
	// flags:
	set(my, PASSABLE | BRIGHT | UNLIT);
	// run this loop until we exist:
	while(my){
		// calulate new position each frame:
		my.x = my.skill1 + fsin(total_ticks * 10, 200);
		my.y = my.skill2 + fcos(total_ticks * 10, 200);
		// spawn one smoke particle each frame from my position:
		effect(smokeEffect, 1, my.x, nullvector);
		// wait one frame:
		wait(1);
	}
}

// fog, sky color setup:
void fogSkySetup(){
	// set camera positions/angles:
	vec_set(camera.x, vector(-40, -444, 370));
	vec_set(camera.pan, vector(85, -42, 0));
	// lods:
	vec_set(d3d_lodfactor, vector(12.5, 25, 50)); 
	// sunlight:
	sun_light = 100;
	// camera clipping parameters:
	camera.clip_near = 1;
	camera.clip_far = 3000;
	// fog parameters:
	camera.fog_start = 250; 
	camera.fog_end = 2500; 
	// fog and sky colors:
	fog_color = 4;
	// change fog color:
	vec_set(d3d_fogcolor4.blue, vector(120, 120, 120));
	// change sky color:
	vec_set(sky_color.blue, d3d_fogcolor4.blue);
}

// main game function:
void main(){
	// disable v-sync:
	d3d_triplebuffer = 1;
	// turn doppler effect OFF:
	doppler_factor = 0;	
	// preload in buffer all created models:
	preload_mode = 3;
	// show all errors:
	warn_level = 6;
	// set maximal framerate:
	fps_max = 60;
	// smooth time step:
	time_smooth = 0.5;
	// window title:
	video_window(NULL, NULL, NULL, "Test");	
	// video modes:
	video_set(800, 600, 16, 2);
	video_set(0, 0, 16, 2);
	// no wide-screen:
	video_aspect = 1.333;
	// freeze the game:
	freeze_mode = 1;
	// load the level:
	level_load(levelStr);
	// wait three frames:
	wait(1);
	// unfreeze the game:
	freeze_mode = 0;
	// adjust weather:
	fogSkySetup();
	// seed the random sequence:
	random_seed(0);
	// create a model:
	ENTITY* testEnt = ent_create("bbox.mdl", nullvector, actRocket);
}

And a screen, to show you how does it looks like:



Greets!


Looking for free stuff?? Take a look here: http://badcom.at.ua
Support me on: https://boosty.to/3rung