Here! Let me tell you why you're when when I am literally not physically capable of doing so!
ZSNO. Wait until you get onto a computer before trying to forget with me.
I'll accept your criticism (which I doubt you'll be able to produce) when it's accurate.
Your first sentence doesn't make sense at all.
Anyway you don't want to use loops when you can easily accomplish the same thing in image states, plus is makes it easier on the game.
Why do you always blow your top when someone tells you you're wrong?
datablock ShapeBaseImageData(drugsmokeImage)
{
shapeFile = "base/data/shapes/empty.dts"; //Replace with cig model
emap = false;
mountPoint = 1; //Change this value to whatever slot you want it to mount to. hint: $headslot
stateName[0] = "Ready"; //state called when image is mounted
stateTransitionOnTimeout[0] = "FireA"; //This calls the "FireA" state when the TimeoutValue is done
stateTimeoutValue[0] = 0.01; //this tells how long before calling the "FireA" state
stateName[1] = "FireA"; //This is the transition name used to identify it in other states
stateTransitionOnTimeout[1] = "Ready"; //when this times out, swith to Ready state
stateWaitForTimeout[1] = True; //this tells the state to wait until timeout to transition to ready
stateTimeoutValue[1] = 0.350; // seconds until timeout
stateEmitter[1] = FireHandEmitterA; //emitter, replace with smoke emitter
stateEmitterTime[1] = 0.350; //how long the emitter stays for
};
So when the cigarette is mounted, it calls Ready, then ready calls FireA which makes the smoke and then goes back to ready to call fireA again.
If you want to put a little script somewhere in the states, just add something like statescript[1] = flash;
Then define it like
function drugsmokeimage::flash(%this)
{
/do something
}
Have fun.