personally I wouldn't suggest using particles, as they are very slow on low-spec systems. I think you should make a semi-transparent smoke texture (tga or png file), which you can put on a simple plane.
have a smoke system built, which is basically the following:
TYPE SmokeParticle
objnum as integer
alive as boolean
x as float
y as float
z as float
age as integer
lifespan as integer
ENDTYPE
at the top of your program, put this:
global NumOfSmokeParticles = 100
dim Smoke(NumOfSmokeParticles) as SmokeParticle
for i=1 to NumOfSmokeParticles
Smoke(i).alive = 0
Smoke(i).lifespan = 50
Smoke(i).Objnum = i
make object plane i, (put appropriate sizes here)
next i
...now you have a simple smoke system. to update it in the game loop, maybe you would use a function like this:
function UpdateSmoke()
for i=1 to NumOfSmokeParticles
if Smoke(i).alive = 1
inc Smoke(i).age,1
if Smoke(i).age > Smoke(i).lifespan then Smoke(i).age = Smoke(i).lifespan : Smoke(i).alive = 0
fade object Smoke(i).ObjNum,(100 - ((Smoke(i).age/Smoke(i).lifespan)*100))
position object Smoke(i).ObjNum,Smoke(i).x,Smoke(i).y,Smole(i).z
endif
next i
endfunction
this would slowly fade the smoke objects away until they dissapear, and kill themselves (top be reused)
then to add smoke, all you have to do is something like this:
function MakeSmoke(x as integer y as integer z as integer)
` This finds the next open smoke particle
for i=1 to NumOfSmokeParticles
if Smoke(i).alive = 0 then exit
next i
Smoke(i).alive = 1
Smoke(i).x = x#
Smoke(i).y = y#
Smoke(i).z = z#
Smoke(i).age = 1
endfunction
in your game loop, you call this function using your player's location.
MakeSmoke(Playerx#,Playery#,Playerz#)
then just add an appropriate delay between creating smoke particles, and you should have a pretty nice looking smoke system!
you might also want to use the "set object to camera orientation" command to make sure the smoke faces the camera. you could also add things like velocity and rotation to make the smoke look better.
NOTE: although the code in this post is DBPro code, none of it has been tested, as it was written off the top of my head here at work, where I have no access to DBPro to test the results!
however I think it should work if you give it a go!
good luck!
Go Go Gadget DBPRO!