mirror of
https://github.com/EpochModTeam/DayZ-Epoch.git
synced 2025-12-14 12:12:34 +03:00
103 lines
4.4 KiB
Plaintext
103 lines
4.4 KiB
Plaintext
/*
|
|
DayZ Epoch Lighting System - House Lights
|
|
Made for DayZ Epoch by axeman please ask permission to use/edit/distribute email gregory.andrew@gmail.com or vbawol@veteranbastards.com.
|
|
*/
|
|
private ["_objLightPoint","_pos","_objHouse","_dir","_rng","_lpDist","_nrstTrig","_rndLights","_lmpCol","_hsAnimPer","_brtns","_lightPcnt","_hsLPDist","_hsTime","_hsCount","_litCount","_hsAnimPer2","_chnGCount","_debug"];
|
|
_hsCount = 0;
|
|
_litCount = 0;
|
|
_chnGCount = 0;
|
|
//_debug = false;
|
|
|
|
_rng = _this select 0;//player range to light windows
|
|
_nrstTrig = _this select 1;
|
|
_rndLights = _this select 2;
|
|
_lmpCol = _this select 3;
|
|
_lpDist = _this select 4;//Range to create lightpoints at
|
|
_hsLPDist = 2; //Distance to dettect local lightpoint from house center
|
|
_objHouse = nearestObjects [_nrstTrig, ["House"], _rng];
|
|
if(!isNil "_objHouse")then{
|
|
_hsTime = time;
|
|
{
|
|
//axeDiagLog = format["HL:ATTEMPT typeof _x:%1 | _x:%2",typeof _x,_x];
|
|
//publicVariable "axeDiagLog";
|
|
_hsAnimPer = getNumber (configFile >> "CfgVehicles" >> (typeof _x) >> "AnimationSources" >> "Lights_1" >> "animPeriod");
|
|
_hsAnimPer2 = getNumber (configFile >> "CfgVehicles" >> (typeof _x) >> "AnimationSources" >> "Lights_2" >> "animPeriod");
|
|
//axeDiagLog = format["HL:CONFIG:%1 | Base:%2 | MLight Bright:%3 | MLight Blink:%4 | Alive:%5 | Lights_2:%6",_hsAnimPer,_base,_mLights,_mLightsBlink, alive _x,_hsAnimPer2];
|
|
//publicVariable "axeDiagLog";
|
|
if(_hsAnimPer>0 && alive _x)then{//Is house with window
|
|
|
|
_brtns = 0.0025;
|
|
_lightPcnt = (player distance _x)/10;
|
|
_brtns = _brtns * _lightPcnt;//Light brightness by percentage
|
|
//Min / Max Levels
|
|
if (_brtns > 0.06)then{_brtns = 0.06;};
|
|
if (_brtns < 0.015)then{_brtns = 0.015;};
|
|
|
|
_objLightPoint = nearestObject [_x, "#lightpoint"];
|
|
_pos = getPos _x;
|
|
_dir = getDir _x;
|
|
|
|
if(_x getVariable ["axeHLight", 0]<1)then{
|
|
if(_rndLights>random 100)then{
|
|
_litCount = _litCount +1;
|
|
if(_x animationPhase "Lights_1"==0) then{
|
|
_x animate ["Lights_1",1];
|
|
if(_hsAnimPer2>0)then{
|
|
if(42 > random 100) then{_x animate ["Lights_2",1];};//Randomly light second set of windows if house has the option
|
|
};
|
|
//Wait for animation phase
|
|
while{true}do{sleep .1;if (_x animationPhase "Lights_1"==1) exitWith {};};
|
|
};
|
|
//axeDiagLog = format["HL: animPhase:%1",_x animationPhase "Lights_1"];
|
|
//publicVariable "axeDiagLog";
|
|
if((_x animationPhase "Lights_1">0))then{
|
|
|
|
if((abs ([_pos, _objLightPoint] call BIS_fnc_distance2D))>_hsLPDist)then{
|
|
if(player distance _x < _lpDist)then{
|
|
//if(_debug)then{axeDiagLog = format["HL:NEW LP:%1 | _brtns:%2",_x,_brtns];publicVariable "axeDiagLog";};
|
|
//[_lmpCol,0.01,_lmpCol,[_pos select 0,_pos select 1,1],_dir,[0,0,-1]] call axe_newLightPoint;
|
|
[_lmpCol,_brtns,_lmpCol,getPos _x,_dir,[0,0,-2.6]] call axe_newLightPoint;
|
|
_x setVariable ["brtns", _brtns, false];
|
|
_x setVariable ["axeHLight", 1, false];
|
|
};
|
|
}else{
|
|
if(player distance _x < _lpDist)then{
|
|
//if(_debug)then{axeDiagLog = format["HL:EXISTS LP:%1 | _brtns:%2",_x,_brtns];publicVariable "axeDiagLog";};
|
|
//[_lmpCol,_brtns,_lmpCol,_objLightPoint] call axe_lightPoint;
|
|
_objLightPoint setLightColor _lmpCol;
|
|
_objLightPoint setLightBrightness _brtns;
|
|
_objLightPoint setLightAmbient _lmpCol;
|
|
_chnGCount = _chnGCount + 1;
|
|
_x setVariable ["brtns", _brtns, false];
|
|
_x setVariable ["axeHLight", 1, false];
|
|
};
|
|
};
|
|
};
|
|
};
|
|
}else{//change brightness
|
|
if(player distance _x < _lpDist)then{
|
|
if((abs ([_pos, _objLightPoint] call BIS_fnc_distance2D))<_hsLPDist)then{
|
|
_litCount = _litCount +1;
|
|
//if(_debug)then{axeDiagLog = format["HL:EXISTS LP:%1 | _brtns:%2",_x,_brtns];publicVariable "axeDiagLog";};
|
|
_chnGCount = _chnGCount + 1;
|
|
_x setVariable ["brtns", _brtns, false];
|
|
//[_lmpCol,_brtns,_lmpCol,_objLightPoint] call axe_lightPoint;
|
|
_objLightPoint setLightColor _lmpCol;
|
|
_objLightPoint setLightBrightness _brtns;
|
|
_objLightPoint setLightAmbient _lmpCol;
|
|
};
|
|
}else{
|
|
deleteVehicle _objLightPoint;
|
|
_x setVariable ["axeHLight", 0, false];
|
|
};
|
|
};
|
|
};
|
|
//axeDiagLog = "-------------------------------------------";
|
|
_hsCount = _hsCount + 1;
|
|
} forEach _objHouse;
|
|
if(_debug)then{
|
|
//axeDiagLog = format["HL:FINISHED: Time:%1 | Total Houses:%2 | Lit Houses:%3",time - _hsTime,_hsCount,_litCount];
|
|
//publicVariable "axeDiagLog";
|
|
};
|
|
};
|