Coming straight from the decompiled resistance mission:
Script For Fire:
_posDrop = _this select 0
_velocity = _this select 1
_lifeTime = _this select 2
_intensity = _this select 3
_object = _this select 4
_delay = 0.3
_lifeTicks = _lifeTime / _delay
_lifeTick = _lifeTicks
#Begin
drop ["cl_fire", "", "Billboard", 1, 1.5, _posDrop, [(_velocity select 0) + random 0.3, (_velocity select 1) + random 0.3, (_velocity select 2) + random 0.3], 1, 0.004, 0.004, 0.1, [(0.1 + 0.2 * _lifeTick/_lifeTicks) * _intensity, (0.1 + 0.5 * _lifeTick/_lifeTicks) * _intensity, (0.1 + 0.1 * _lifeTick/_lifeTicks) * intensity], [[1,1,1,0], [1,1,1,1], [1,1,1,0.6], [1,1,1,0]], [0,1,0], 0.5, 0.05, "", "", _object]
~_delay
_lifeTick = _lifeTick - 1
?_lifeTick > 0 : goto "Begin"
;WOULD BE CALLED USING A LINE LIKE:
;[[2402.607,9740.151,0], [0,0,1], 100, 5, "" ] exec "fire.sqs"
Script For Smoke:
_posDrop = _this select 0
_velocity = _this select 1
_lifeTime = _this select 2
_object = _this select 3
_delay = 0.3
_lifeTicks = _lifeTime / _delay
_lifeTick = _lifeTicks
#Begin
drop ["cl_basic", "", "Billboard", 1, 10, _posDrop, _velocity, 1, 0.005, 0.0042, 0.5, [0.2,10], [[0,0,0,0], [0.3,0.3,0.3,1 * _lifeTick/_lifeTicks], [0.8,0.8,0.8,0.1 * _lifeTick/_lifeTicks], [0.8,0.8,0.8,0]], [0,1,0,1,0,1], 0.2, 0.2, "", "", _object]
~_delay
_lifeTick = _lifeTick - 1
?_lifeTick > 0 : goto "Begin"
;WOULD BE CALLED USING A LINE LIKE (to create smoke for the above fire):
;[[2402.607,9740.151,0], [0,0,1], 100, "" ] exec "smoke.sqs"
General Drop Command:
These scripts, as u can see, use the drop command, which works like:
drop [ShapeName, AnimationName, Type, TimerPeriod, LifeTime, Position, MoveVelocity, RotationVelocity, Weight, Volume, Rubbing, Size, Color, AnimationPhase, RandomDirectionPeriod, RandomDirectionIntensity, OnTimer, BeforeDestroy, Object]
And now the info about all these 'bits' that you need to enter, straight from the comref.
General Parameters
ShapeName - Name of the shape associated with the particle.
AnimationName - Name of the animation of the shape.
Type - Type of the particle (either "Billboard" or "SpaceObject").
TimerPeriod - The period of calling the "OnTimer" event (in sec).
LifeTime - Life time of the particle (in sec).
Physical parameters:
Position - Either 3D coordinate (xzy) or name of the selection - in this case the Object property must be set.
MoveVelocity - 3D vector (xyz) which describes the velocity vector of the particle (direction and speed in m/s).
RotationVelocity - Float number which determines number of rotations in one second.
Weight - Weight of the particle (in kg).
Volume - Volume of the particle (in m^3).
Rubbing - Float number without dimension which determines the impact of the density od the enviroment on this particle. 0 - no impact (vacuum).
Render parameters:
Size - Size of the particle in time to render (m).
Color - Color of the particle in time to render (RGBA).
AnimationPhase - Phase of the animation in time.
Note that all these values are set as arrays to show their development in time. F.I. if you set the array [1,2] as a size then at the beginning the size of the particle will be 1 and at the end of the life time of the particle it's size will be 2. The rest od the values during the life time will be lineary interpolated.
Random parameters:
RandomDirectionPeriod - Period of changing the velocity vector (s).
RandomDirectionIntensity - Each MoveVelocity component will be changed with random value from interval <0, RandomDirectionIntensity>.
OnTimer - Name of the script to run every period determined by TimerPeriod property. Position of the particle is stored in "this" variable.
BeforeDestroy - Name of the script to run right before destroying the particle. Position of the particle is stored in "this" variable.
Object - Object to bind this particle to.
Sorry i didnt have time to do any kind of example or explain it better, but i hope its moderately useful...