exile@ just off the topic, related to the code you've posted in the first post. I'm not trying to be a smart ass, but make sure that you delete/reset (ent_remove and pointer = NULL) those 'afterimage' and 'cloner' entity pointers in 'trail' action. Maybe you just simplified the code, for us to read more ealisy, I don't know.


My best regards (btw keep your awesome multiplayer game up! laugh )

Edit: BTW, try this code, I tried to make smoke effect with particles, and it works pretty good, but it needs to be framerate independent... I tried what manual said, but it doesn't work for me:
Quote:
For keeping the particle number independent of the frame rate on continuous particle generation, multiply the number of generated particles with time_step (see example).


Just run it, press ENTER and you'll see how how the number of particles goes up.
Code:
// fade smoke away:
function fadeSmokeTrailPar(PARTICLE* p){
	// decrease alpha:
	p.alpha -= p.skill_x * time_step;
	// if we don't have alpha, kill particle:
	if(p.alpha <= 0){ p.lifespan = 0; }
}

// smoke trail particle:
function smokeTrailPar(PARTICLE* p){
	// set color to white:
	vec_set(p.blue, COLOR_GREY);
	// set size:
	p.size = 4;
	// set gravity:
	p.gravity = -0.4;
	// set alpha:
	p.alpha = 30;
	// set fading speed:
	p.skill_x = 1;
	// set flags:
	set(p, MOVE | BRIGHT | BEAM | TRANSLUCENT);
	// set event:
	p.event = fadeSmokeTrailPar;
}

// main function:
void main(){
	// set framerate limit:
	fps_max = 500;
	// empty level:
	level_load("");
	// wait 3 frames:
	wait(3);
	// set camera positions/angles:
	vec_set(camera.x, vector(-140, 0, 90));
	vec_set(camera.pan, vector(0, -13, 0));
	// vectors:
	VECTOR vectexVec;
	// reset vectors:
	vec_fill(vectexVec.x, 0);
	// create smoke emmiter:
	ENTITY* smokeEnt = ent_create(CUBE_MDL, vector(200, 0, 0), NULL);
	// scale it down:
	vec_fill(smokeEnt.scale_x, 0.35);
	// set it's flags:
	set(smokeEnt, PASSABLE | TRANSLUCENT);
	// save position:
	vec_set(smokeEnt.skill1, smokeEnt.x);
	// loop:
	while(1){
		// reset framerate limit:
		fps_max = 500;
		// if ENTER is pressed:
		if(key_enter){
			// decrease framerate limit:
			fps_max = 60;
		}
		// show framerate:
		DEBUG_VAR(fps_max, 30);
		DEBUG_VAR(num_particles, 50);
		// show text:
		draw_text("PRESS <ENTER> TO LOWER FRAMERATE!", 10, 10, COLOR_WHITE);
		// rotate smoke emitter:
		smokeEnt.pan = cycle(smokeEnt.pan + 30 * time_step, 0, 360);
		// move it:
		smokeEnt.z = smokeEnt.skill3 + fsin(total_ticks * 8, 64);
		smokeEnt.y = smokeEnt.skill2 + fcos(total_ticks * 8, 64);
		// get position of upper left vertex:
		vec_for_vertex(vectexVec.x, smokeEnt, 3);
		// create smoke trail with particles:
		effect(smokeTrailPar, maxv(1, 40 * time_step), vectexVec.x, nullvector);
		// wait one frame:
		wait(1);
	}
}



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