Ok, try passing variables to the vehicles.
Run the following script in the init.sqs
// mando_vehvars.sqf
private ["_vehicle"];
mando_vehvar_vehiclew = objNull;
mando_vehvar_requestw = false;
mando_vehvar_valuew = 0;
mando_vehvar_w = "";
mando_vehvar_vehicler = objNull;
mando_vehvar_requestr = false;
mando_vehvar_r = "";
while {true} do
{
waitUntil {mando_vehvar_requestw || mando_vehvar_requestr};
if (mando_vehvar_requestw) then
{
mando_vehvar_requestw = false;
_vehicle = mando_vehvar_vehiclew;
mando_vehvar_vehiclew setVariable [mando_vehvar_W, mando_vehvar_valuew];
};
if (mando_vehvar_requestr) then
{
mando_vehvar_requestr = false;
_vehicle = mando_vehvar_vehicler;
if (local server) then
{
mando_vehvar_vehiclew = _vehicle;
mando_vehvar_valuew = _vehicle getVariable mando_vehvar_r;
if (!isNil "mando_vehvar_valuew") then
{
mando_vehvar_w = mando_vehvar_r;
mando_vehvar_requestw = true;
{publicVariable _x} forEach ["mando_vehvar_vehiclew", "mando_vehvar_w", "mando_vehvar_valuew", "mando_vehvar_requestw"];
};
};
};
};
Then to write and publish a variable, for example skomeonoff set to true:
mando_vehvar_vehiclew = _plane;
mando_vehvar_w = "skomeonoff";
mando_vehvar_valuew = true;
mando_vehvar_requestw = true;
{publicVariable _x} forEach ["mando_vehvar_vehiclew", "mando_vehvar_w", "mando_vehvar_valuew", "mando_vehvar_requestw"];
Sleep 0.5;
Then you have a script running per each vehicle and you pass the name of the vehicle as argument:
// SmokeControl
_plane = _this select 0;
mando_vehvar_vehicler = _plane;
mando_vehvar_r = "skomeonoff";
mando_vehvar_requestr = true;
{publicVariable _x} forEach ["mando_vehvar_vehicler", "mando_vehvar_r", "mando_vehvar_requestr"];
_var = _plane getVariable "skomeonoff";
if (isNil "_var") then
{
mando_vehvar_vehiclew = _plane;
mando_vehvar_w = "skomeonoff";
mando_vehvar_valuew = false;
mando_vehvar_requestw = true;
{publicVariable _x} forEach ["mando_vehvar_vehiclew", "mando_vehvar_w", "mando_vehvar_valuew", "mando_vehvar_requestw"];
Sleep 0.5;
};
Sleep 1;
_var = _plane getVariable "skomeonoff";
while {true} do
{
while {!(_plane getVariable "skomeonoff")} do
{
Sleep 1;
};
// Create the smoke and light with createVehicleLocal
// The smoke is "alive" while next while is true
while {(_plane getVariable "skomeonoff")} do
{
Sleep 1;
};
// Delete particle and light vehicles here
};