
ACTIVATE LIGHTS IN VEHICLES
To activate green or red lights inside vehicles, follow theses steps :
​
Make init.sqf file inside your mission folder and past inside :
​
nul=[] execVM "IntLight.sqf";
​
Make IntLight.sqf file inside your mission folder and past inside :
​
// // // // // // // // // //
// Interior Light script
// Version 1.653
// Date: 2015.03.14
// Authors: Lala14, Tajin
// // // // // // // // // //
// init line:
// nul=[] execVM "IntLight.sqf";
/*Definable*/
if (isNil {IL_Debug}) then {
IL_Debug = false; //Enable Debug Mode
};
if (isNil {IL_Balls}) then {
IL_Balls = false; //Show the attach points (requires Debug mode)
};
if (isNil {IL_Crew_Only}) then {
IL_Crew_Only = false; //Only allow Pilot/Driver/Co-Pilot/Gunner/Commander (does not include left & right gunners for choppers) to change the light
};
if (isNil {IL_Red_On_Always}) then {
IL_Red_On_Always = true; //When true, when light is turned off then on the light will be reset to red else it will never be reset if false
};
if (isNil {IL_Action_Night}) then {
IL_Action_Night = false; //Only allow the action to come up during the Dark times
};
/*End Definable*/
/*Start Script*/
IL_Loaded = false;
if (isDedicated) exitWith {};
waitUntil {!isNull player};
systemChat "Interior Lighting: Loading";
diag_log "IL starting";
// light colors:
IL_c_white = [255,255,255];
IL_c_red = [255,0,0];
IL_c_green = [0,255,0];
IL_c_blue = [0,0,255];
IL_c_yellow = [255,200,0];
IL_c_orange = [255,75,0];
// predefined default values used in the config below
IL_attenuation = [0.3,0,0,500];
IL_att_soft = [0,10,10,10];
IL_att_tiny = [0,0,0,0,0.2,0.4];
IL_intensity = 50;
// To make all lights brighter or darker, simply adjust the following multiplier.
IL_intensity_mult = 1;
diag_log "IL config loading";
/*config
["kindOf classnames", "First person only",[
["position in modelspace","lightcolor","attentuation","intensity"]
],"Allow Colour Change",(optional - if not present but there is 2 it will change it) which lights to be able to change to green *first to number* ]*/
if (isnil "IL_config") then { IL_config = [] };
IL_config = IL_config + [
[["Heli_Light_01_base_F"], false, [
[ [0,1,0.5], IL_c_red, IL_attenuation, IL_intensity ]
],true],
[["RHS_Mi8AMT_VVS_Base"], false, [
[ [0,1.7,-0.1], IL_c_red, IL_attenuation, IL_intensity ]
],true],
[["Heli_Light_02_base_F"], false, [
[ [0,0,-0.4], IL_c_red, IL_attenuation, IL_intensity ],
[ [0,2.5,-0.4], IL_c_red, IL_attenuation, IL_intensity ]
],true],
[["UH60_Base","RHS_UH60_Base"], false, [
[ [0,1.5,-0.7], IL_c_red, IL_att_soft, 0.5 ]
],true],
[["Heli_Transport_01_base_F"], false, [
[ [0,2,0], IL_c_red, IL_attenuation, IL_intensity ]
],true],
[["I_Heli_light_03_unarmed_base_F","I_Heli_light_03_base_F","I_Heli_light_03_F","I_Heli_light_03_unarmed_F"], false, [
[ [0,2.5,0.5], IL_c_red, IL_attenuation, IL_intensity ]
],true],
[["CH_47F_base","RHS_CH_47F"], false, [
[ [0,-2,-1], IL_c_red, IL_att_soft, 0.5 ],
[ [0,3,-0.83], IL_c_red, IL_att_soft, 0.5 ]
],true,2],
[["Heli_Transport_02_base_F"], false, [
[ [0,1.5,-0.4], IL_c_red, IL_attenuation, IL_intensity ]
],true],
[["B_Heli_Transport_03_base_F"], false, [
[ [0,-2,0.3], IL_c_red, IL_att_soft, 0.5 ],
[ [0,4,0.3], IL_c_red, IL_att_soft, 0.5 ]
],true,2],
[["O_Heli_Transport_04_covered_F","O_Heli_Transport_04_medevac_F"],false, [
[ [0.2,-1.95,-0.1], IL_c_red, IL_att_soft, 0.5 ],
[ [-0.4,-1.95,-0.1], IL_c_red, IL_att_soft, 0.5 ],
[ [0.2,0.93,-0.1], IL_c_red, IL_att_soft, 0.5 ],
[ [-0.4,0.93,-0.1], IL_c_red, IL_att_soft, 0.5 ],
[ [-0.13,3.13,0.35], IL_c_red, IL_att_soft, 0.5 ]
],true,5],
[["Land_Pod_Heli_Transport_04_covered_F","Land_Pod_Heli_Transport_04_medevac_F"],false, [
[ [0.3,-0.86,0.5], IL_c_red, IL_att_soft, 0.5 ],
[ [-0.3,-0.86,0.5], IL_c_red, IL_att_soft, 0.5 ],
[ [0.3,2.02,0.5], IL_c_red, IL_att_soft, 0.5 ],
[ [-0.3,2.02,0.5], IL_c_red, IL_att_soft, 0.5 ]
],true,4],
[["Heli_Transport_04_base_F"],false, [
[ [-0.13,3.13,0.1], IL_c_red, IL_att_soft, 0.5 ]
],true],
[["RHS_AH64D"], false, [
[ [0,3.3,0], IL_c_green, [0,0,0,0,0.2,0.4], 0.05 ],
[ [0,4.8,-0.5], IL_c_green, [0,0,0,0,0.2,0.4], 0.05 ]
],false],
[["Heli_Attack_01_base_F"], false, [
[ [-0.04,4.3,-0.3], IL_c_green, [0,0,0,0,0.2,0.4], 0.05 ],
[ [-0.04,2.89,0.15], IL_c_green, [0,0,0,0,0.2,0.4], 0.05 ]
],false],
[["RHS_Ka52_base"], false, [
[ [-0.4,3.3,-0.6], IL_c_green, [0,0,0,0,0.2,0.4], 0.05 ],
[ [0,3.3,-0.6], IL_c_green, [0,0,0,0,0.2,0.4], 0.05 ],
[ [0.4,3.3,-0.6], IL_c_green, [0,0,0,0,0.2,0.4], 0.05 ]
],false],
[["RHS_Mi24P_VVS_Base"], false, [
[ [0.6,2,-0.6], IL_c_red, IL_attenuation, 5 ],
[ [0.6,3.5,-0.6], IL_c_red, IL_attenuation, 5 ],
[ [0.6,6.5,-0.6], IL_c_green, [0,0,0,0,0.2,0.4], 0.05 ],
[ [0.6,8,-1.3], IL_c_green, [0,0,0,0,0.2,0.4], 0.05 ]
],true,2],
[["RHS_Mi24V_Base"], false, [
[ [-0.1,2,-0.6], IL_c_red, IL_attenuation, 5 ],
[ [-0.1,3.5,-0.6], IL_c_red, IL_attenuation, 5 ],
[ [-0.1,6.5,-0.6], IL_c_green, [0,0,0,0,0.2,0.4], 0.05 ],
[ [-0.1,8,-1.3], IL_c_green, [0,0,0,0,0.2,0.4], 0.05 ]
],true,2],
[["Heli_Attack_02_base_F"], false, [
[ [0,1.5,-1.5], IL_c_red, IL_attenuation, 5 ],
[ [0,0.5,-1.5], IL_c_red, IL_attenuation, 5 ],
[ [0.07,3.4,-0.05], IL_c_green, [0,0,0,0,0.2,0.4], 0.05 ],
[ [0,4.4,-0.3], IL_c_green, [0,0,0,0,0.2,0.4], 0.05 ]
],true,2],
[["c130J_base","sab_C130_J_Base"], false, [
[ [0,6,-2], IL_c_red, IL_attenuation, IL_intensity ]
],true],
[["sab_an2_BASE"], false, [
[ [0,-1,1.5], IL_c_red, IL_attenuation, IL_intensity ]
],true],
[["kyo_MH47E_base"], false, [
[ [0,2,-0.07], IL_c_red, IL_attenuation, IL_intensity ]
],true],
[["globemaster_c17"], false, [
[ [0,8,2.44], IL_c_red, IL_attenuation, IL_intensity ]
],true],
[["APC_Wheeled_01_base_F"], true, [
[ [0,-3,-0.4], IL_c_red, IL_attenuation, IL_intensity ]
],true],
[["APC_Wheeled_02_base_F"], true, [
[ [0.3,-2.7,-0.2], IL_c_red, IL_attenuation, IL_intensity ]
],true],
[["APC_Wheeled_03_base_F"], true, [
[ [0.5,-2.6,-0.7], IL_c_red, IL_attenuation, IL_intensity ]
],true],
[["MBT_01_base_F"], true, [
[ [0,-2.7,-0.9], IL_c_red, IL_attenuation, IL_intensity ]
],true],
[["APC_Tracked_01_base_F"], true, [
[ [0,-2.4,-0.7], IL_c_red, IL_attenuation, IL_intensity ]
],true],
[["rhsusf_m113tank_base"], true, [
[ [0.5,-0.5,-0.9], IL_c_red, IL_attenuation, IL_intensity ]
],false],
[["APC_Tracked_02_base_F"], true, [
[ [0,-3.1,-0.6], IL_c_red, IL_attenuation, IL_intensity ]
],true],
[["RHS_M2A2_Base"], true, [
[ [0,2,2], IL_c_red, IL_attenuation, IL_intensity ]
],true],
[["APC_Tracked_03_base_F"], true, [
[ [0,-2,-0.6], IL_c_red, IL_attenuation, IL_intensity ]
],true],
[["B_Truck_01_mover_F"],false, [
[ [0,3.6,0.71], IL_c_orange, IL_att_soft, 10]
], false],
[["B_Truck_01_covered_F","B_Truck_01_medical_F"], false, [
[ [0,0,1], IL_c_orange, IL_att_soft, 10 ],
[ [0,4,0.42], IL_c_orange, IL_att_soft, 10]
],false],
[["B_Truck_01_transport_F","Truck_01_base_F"], false, [
[ [0,4,0.42], IL_c_orange, IL_att_soft, 10]
],false],
[["O_Truck_03_covered_F","O_Truck_03_medical_F"], false, [
[ [0,-2,1.2], IL_c_orange, IL_att_soft, 10 ],
[ [0,2.7,0.85], IL_c_orange, IL_att_soft, 10]
],false],
[["Truck_03_base_F"], false, [
[ [0,2.7,0.85], IL_c_orange, IL_att_soft, 10]
],false],
[["I_Truck_02_covered_F","I_Truck_02_medical_F","O_Truck_02_covered_F","O_Truck_02_medical_F"], false, [
[ [0,-0.5,0.89], IL_c_orange, IL_att_soft, 10 ],
[ [0,1.5,0.41], IL_c_orange, IL_att_soft, 10]
],false],
[["I_Truck_02_box_F","I_Truck_02_fuel_F","I_Truck_02_ammo_F","O_Truck_02_box_F","O_Truck_02_fuel_F","O_Truck_02_ammo_F"], false,[
[ [0,1.5,0.41], IL_c_orange, IL_att_soft, 10]
],false],
[["Truck_02_base_F"], false,[
[ [0,3,0.41], IL_c_orange, IL_att_soft, 10]
],false],
[["rhs_tigr_base"],false, [
[ [0,-1.5,2.15], IL_c_orange, IL_att_soft, 10]
],false],
[["rhsusf_m1025_w","rhsusf_m998_w_4dr_fulltop"],false,[
[ [0,-1.2,1.69], IL_c_orange, IL_att_soft, 0.5 ]
]],
[["rhsusf_m998_w_2dr_fulltop"],false,[
[ [0,-2,0.5], IL_c_orange, IL_att_soft, 0.5 ]
]],
[["rhsusf_m998_w_2dr","rhsusf_m998_w_4dr","rhsusf_hmmwe_base"],false,[
[ [-0.5,0.1,0.04], IL_c_orange, IL_att_soft, 0.5 ],
[ [0.5,0.1,0.04], IL_c_orange, IL_att_soft, 0.5 ]
]],
[["MRAP_01_base_F"], false, [
[ [0,0,1], IL_c_orange, IL_att_soft, 0.5 ]
],false],
[["MRAP_02_base_F"], false, [
[ [0,0,1], IL_c_orange, IL_att_soft, 0.5 ]
],false],
[["MRAP_03_base_F"], false, [
[ [0,0,0.3], IL_c_orange, IL_att_soft, 0.5 ]
],false],
[["rhs_uaz_open_MSV_Base"], false, [
[ [0.1,0.3,1.8], IL_c_orange, IL_att_soft, 0.5 ]
],false],
[["RHS_UAZ_Base"], false, [
[ [0,-0.6,1.9], IL_c_red, IL_att_soft, 0.5 ]
],false],
[["rhs_bmp_base"], false, [
[ [0,-2,-0.5], IL_c_red, IL_att_soft, 0.5 ]
],true],
[["rhs_gaz66_vmf"], false, [
[ [0,0,1.2], IL_c_orange, IL_att_soft, 0.5 ]
],false],
[["RHS_Ural_BaseTurret"], false, [
[ [0,1.8,0.8], IL_c_orange, IL_att_soft, 0.5 ]
],false],
[["Offroad_01_base_F"], false, [
[ [0,0,0.3], IL_c_orange, IL_att_soft, 0.5 ]
],false],
[["SUV_01_base_F"], false, [
[ [0,-0.7,0], IL_c_orange, IL_att_soft, 0.5 ]
],false],
[["VAN_01_base_F"], false, [
[ [0,0,0.6], IL_c_orange, IL_att_soft, 0.5 ]
],false],
[["Hatchback_01_base_F"], false, [
[ [0,0,0.3], IL_c_orange, IL_att_soft, 0.5 ]
],false],
[["UH1H_base"], false, [
[ [0,0.7,-0.25], IL_c_red, IL_att_soft, 0.5 ]
],true],
[["UH1_Base"], false, [
[ [0,0,-0.1], IL_c_red, IL_att_soft, 0.5 ]
],true],
[["rhs_btr60_base"], true, [
[ [-0.5,-1.5,-0.19], IL_c_red, IL_attenuation, IL_intensity ]
],true],
[["rhs_btr80a_msv"], true, [
[ [-0.25,-1.5,0.33], IL_c_red, IL_attenuation, IL_intensity ]
],true],
[["rhs_btr80_msv"], true, [
[ [-0.25,-1.5,0.6], IL_c_red, IL_attenuation, IL_intensity ]
],true],
[["rhs_btr70_vmf"], true, [
[ [-0.5,-1.5,-0.15], IL_c_red, IL_attenuation, IL_intensity ]
],true],
[["rhs_btr_base"], true, [
[ [0,0,-0.15], IL_c_red, IL_attenuation, IL_intensity ]
],true],
[["ADF_S70A_BASE_F"], false, [
[ [0,2.2,0.2], IL_c_red, IL_attenuation, IL_intensity ]
],true],
[["ADF_ASLAV_base_F"], true, [
[ [0.2,-2.5,-0.5], IL_c_red, IL_attenuation, IL_intensity ]
],true]
];
// The config-array can be modified at runtime. This also allows modautors to append their own settings without having to edit this script.
diag_log "IL config done";
// vars
if (isNil {IL_typelist}) then { IL_typelist = []; };
if (isNil {IL_lights}) then { IL_lights = []; };
if (isNil {IL_varname}) then { IL_varname = "interiorlight"; };
if (isNil {IL_text_ON}) then { IL_text_ON = "<t color='#FF0000'>Turn Interior Light ON</t>"; };
if (isNil {IL_text_OFF}) then { IL_text_OFF = "<t color='#FF0000'>Turn Interior Light OFF</t>"; };
if (isNil {IL_Green_Text}) then { IL_Green_Text = "<t color='#00FF00'>Change Light to Green</t>"; };
if (isNil {IL_Red_Text}) then { IL_Red_Text = "<t color='#FF0000'>Change Light to Red</t>"; };
if (isNil {IL_action}) then { IL_action = -1; };
if (isNil {IL_action2}) then { IL_action2 = -1; };
if (isNil {IL_eventHandler}) then { IL_eventHandler = -1; };
if (isNil {IL_lastchange}) then { IL_lastchange = 0; };
// functions
IL_fnc_inList = {
_found = false;
_index = -1;
{
_types = _x select 0;
{
if (_this isKindOf _x) exitWith { _found = true; };
} forEach _types;
if _found exitWith {_index = _forEachIndex;};
} forEach IL_config;
_index
};
IL_fnc_returnTurretUnits = {
_peeps = [];
_turrets = allTurrets [_this,false];
{
if (!isNull (_this turretUnit _x)) then {_peeps pushBack (_this turretUnit _x)};
}forEach _turrets;
_peeps;
};
IL_fnc_attachTo = {
_light = _this select 0;
_veh = _this select 1;
_pos = _this select 2;
waitUntil{_light setPos (_veh modelToWorld _pos); isNull _light};
};
IL_fnc_addAction = {
if (IL_action > -1) then {
player removeAction IL_action;
if (IL_Debug) then {player sideChat 'action removed'};
};
IL_action = player addAction [
IL_text_ON,
"
_veh = vehicle player;
_ison = _veh getVariable [IL_varname,false];
if (_ison) then {
_veh setVariable[IL_varname,false,true];
} else {
_veh setVariable[IL_varname,true,true];
};
if (IL_Debug) then {player sideChat format ['vehicle was chosen because of this classname %1', IL_config select (_veh call IL_fnc_inList) select 0]};
",
"",
0.999,
false,
false,
"",
"
_veh = vehicle player;
_show = false;
if ( (_veh != player) ) then {
_vehtype = typeOf _veh;
_i = _veh call IL_fnc_inList;
if (_i > -1) then {
_show = true;
_ison = _veh getVariable [IL_varname,false];
if (_ison) then {
player setUserActionText[IL_action,IL_text_OFF];
if ( (cameraView != 'INTERNAL') && ((IL_config select _i) select 1) ) then {
if (count IL_lights > 0) then {
if (IL_Debug) then {player sideChat 'Lights being removed because in third person'};
if ((IL_Debug) && (IL_Balls) && !(isNil {_veh getVariable 'il_balls'})) then {
{
deleteVehicle _x;
} forEach (_veh getVariable 'il_balls');
_veh setVariable ['il_balls',nil,true];
if (IL_Debug) then {player sideChat format ['Balls being removed because in third person %1',str IL_lights];};
};
{
IL_lights = IL_lights - [_x];
deleteVehicle _x;
} forEach IL_lights;
};
} else {
_lights = (IL_config select _i) select 2;
_timestamp = _veh getVariable ['IL_timestamp',IL_lastchange];
if (count IL_lights == 0) then {
if (IL_Debug) then {player sideChat 'lights added, hint displayed for the array'; hintSilent str _lights;};
{
_light = '#lightpoint' createVehicleLocal [0,0,0];
_light attachTo [_veh,(_x select 0)];
_light setLightColor (_x select 1);
_light setLightAttenuation (_x select 2);
_light setLightIntensity (_x select 3) * IL_intensity_mult;
if (IL_Debug && IL_Balls) then {
if (isNil {_veh getVariable 'il_balls'}) then {
_ball = 'Sign_Sphere10cm_F' createVehicle [0,0,0];
_ball attachTo [_light,[0,0,0]];
_veh setVariable ['il_balls',[_ball],true];
} else {
_ball = 'Sign_Sphere10cm_F' createVehicle [0,0,0];
_ball attachTo [_veh,(_x select 0)];
_veh setVariable ['il_balls',(_veh getVariable 'il_balls') + [_ball],true];
};
};
IL_lights pushBack _light;
IL_lastchange = 0;
} forEach _lights;
};
if (_timestamp != IL_lastchange) then {
_override = _veh getVariable ['IL_override',_lights];
if (IL_Debug) then {player sideChat format ['light colour changed',str _override];};
{
_o = _override select _forEachIndex;
_x attachTo [_veh,(_o select 0)];
_x setLightColor (_o select 1);
_x setLightAttenuation (_o select 2);
_x setLightIntensity (_o select 3) * IL_intensity_mult;
} forEach IL_lights;
IL_lastchange = _timestamp;
};
};
} else {
if (IL_Red_On_Always) then { _veh setVariable ['IL_override',nil,true]; };
player setUserActionText[IL_action,IL_text_ON];
if (count IL_lights > 0) then {
if (IL_Debug) then {player sideChat format ['removing lights because lights are off %1',str IL_lights];};
{
IL_lights = IL_lights - [_x];
deleteVehicle _x;
} forEach IL_lights;
if ((IL_Debug) && (IL_Balls) && !(isNil {_veh getVariable 'il_balls'})) then {
{
deleteVehicle _x;
} forEach (_veh getVariable 'il_balls');
_veh setVariable ['il_balls',nil,true];
if (IL_Debug) then {player sideChat format ['removing balls because lights are off %1',str IL_lights];};
};
};
};
};
} else {
if (count IL_lights > 0) then {
if (IL_Debug) then {player sideChat format ['removing lights because you are not in a vehicle %1',str IL_lights];};
{
IL_lights = IL_lights - [_x];
deleteVehicle _x;
} forEach IL_lights;
};
};
if (IL_Crew_Only) then { _show = (_show && ((_this == driver _target) OR (_this == gunner _target) OR (_this == commander _target) OR (_this in (vehicle _target call IL_fnc_returnTurretUnits)))) };
if (IL_Action_Night && sunOrMoon == 1) then { _show = (_show && (vehicle _target getVariable [IL_varname,false] )) };
_show
"];
if (IL_Debug) then {player sideChat 'action added'};
if (IL_action2 > -1) then {
player removeAction IL_action2;
if (IL_Debug) then {player sideChat 'action2 removed'};
};
IL_action2 = player addAction [
IL_Green_Text,
"
_veh = vehicle player;
_i = _veh call IL_fnc_inList;
_lights = + (IL_config select _i) select 2;
_lighter = _lights select 0;
_lightamount = (IL_config select _i) select 4;
if (isNil {_veh getVariable 'IL_override'}) then {
_lighter set [1,IL_c_green];
if (count _lights > 1 && isNil {_lightamount}) then {
_lighters = _lights select 1;
_lighters set [1,IL_c_green];
_lights set [1,_lighters];
};
if (!isNil {_lightamount}) then {
{
_x set [1,IL_c_green];
_lights set [_forEachIndex,_x];
}forEach _lights;
};
_lights set [0,_lighter];
_veh setVariable ['IL_override',_lights,true];
_veh setVariable ['IL_timestamp',time,true];
} else {
_veh setVariable ['IL_override',nil,true];
_veh setVariable ['IL_timestamp',time,true];
};
",
"",
0.99,
false,
false,
"",
"
_veh = vehicle player;
_i = _veh call IL_fnc_inList;
_show = false;
if (!(isNil {_veh getVariable 'IL_override'}) && (IL_c_green in ((_veh getVariable 'IL_override') select 0))) then { player setUserActionText[IL_action2,IL_Red_Text];};
if (isNil {_veh getVariable 'IL_override'}) then { player setUserActionText[IL_action2,IL_Green_Text];};
if ((_veh != player) && (_i > -1)) then { _show = ((_i > -1) && ((IL_config select _i) select 3)) };
if (IL_Crew_Only) then { _show = (_show && ((_this == driver _target) OR (_this == gunner _target) OR (_this == commander _target) OR (_this in (vehicle _target call IL_fnc_returnTurretUnits)))) };
_veh getVariable [IL_varname,false] &&
_show
"];
if (IL_Debug) then {player sideChat 'action2 added'};
if (IL_Debug && IL_Crew_Only) then {player sideChat "IL_Crew_Only Active"};
if (IL_Debug && IL_Red_On_Always) then {player sideChat "IL_Red_On_Always Active"};
};
diag_log "IL func loaded";
// init
if (IL_eventHandler > -1) then {
player removeEventHandler ["Respawn",IL_eventHandler];
if (IL_Debug) then {player sideChat "IL Respawn EventHandler Removed"};
};
[] spawn IL_fnc_addAction;
IL_eventHandler = player addEventHandler ["Respawn", {
[] spawn IL_fnc_addAction;
if (IL_Debug) then {player sideChat "IL Respawn EventHandler Executed!";};
}];
if (IL_Debug) then {player sideChat format ["IL Respawn EventHandler Added, #%1",IL_eventHandler];};
IL_Loaded = true;
diag_log "IL ready";
systemChat "Interior Lighting: Initialized";
​
​
​
Go inside any vehicle and you can activate or not red or green light inside