I think there are several ways:
order an unit to "fire" (i mean throw) a smokeshell;
CamCreate a smoke shell;
etc...
---
How to make a unit throw the shell:
_myofficer fire ["smokeshell",1] //Check out the syntax, may not work
---
CamCreate the smoke:
_smoke = "smokeshell" CamCreate MyPos
Where MyPos are the coordinates of the place u wanna create the smoke.
MyPos= GetPos _object
Mypos=[2040,4004,2] // [x,y,z]
---
Note: If u use these commands on the Activ. Field or Init Field, remove the 'underscore' - _ - from the variables!
FX:
I'm working with smoke effects to. If you want to simulate a town on fire, place a jeep wreck inside of a closed house and then use a trigger combination to repair and destroy the wreck every 15s. It will burn until the game is finished (or a certain variable becomes permanently false).
You could also place a 'fire' object inside that house and at the INIT Field type < this inflame true >, and it will be burning. I wouldn't use it as the player could put out the fire and realize that the burning house is just a stupid simulation.
Last hour: i have never tried this but i think it works: Place the jeep wreck (or tank or anything which burns) at the "smoking" place, use the trigger combo to make it burn and set its height 2 or 3 meters underground - This setpos [getpos this select 0, getpos this select 1, (getpos this select 2) -2].