Вот неплохая функция дыма. Ищешь координату детонирования дымовой грены, и ставишь функцией дым. Создаешь таймер и по истечению делаешь TurnOff дыма.
Код
CreateSmoke(const Float:ground_pos[3])
{
new smoke = CreateEntityByName("env_smokestack");
if (smoke < 1)
{
LogError("env_smokestack error");
return -1;
}
DispatchKeyValueVector(smoke, "origin", ground_pos);
decl String:smoke_name[20];
Format(smoke_name, 20, "smoke_%d", smoke);
DispatchKeyValue(smoke, "targetname", smoke_name);
DispatchKeyValue(smoke,"BaseSpread", "100");
DispatchKeyValue(smoke,"SpreadSpeed", "70");
DispatchKeyValue(smoke,"Speed", "80");
DispatchKeyValue(smoke,"StartSize", "100");
DispatchKeyValue(smoke,"EndSize", "2");
DispatchKeyValue(smoke,"Rate", "30");
DispatchKeyValue(smoke,"JetLength", "400");
DispatchKeyValue(smoke,"Twist", "20");
DispatchKeyValue(smoke,"RenderColor", "255, 255, 255");
DispatchKeyValue(smoke,"RenderAmt", "255");
DispatchKeyValue(smoke,"SmokeMaterial", "particle/particle_smokegrenade1.vmt");
DispatchSpawn(smoke);
AcceptEntityInput(smoke, "TurnOn");
return smoke;
}
Если хочешь увеличить плотность дыма, поиграйся со значением "Rate"