From d9c40751433907bdce4fb95daad23bf2a1af0b5d Mon Sep 17 00:00:00 2001 From: worldwidesorrow Date: Fri, 15 Sep 2023 14:09:18 -0500 Subject: [PATCH] Add Object A2 sensor with light and sound SFX Added sensor to mission.sqm to trigger Sumrak's custom lighting and sound effects when entering Object A2. The config position in mission.sqm doesn't want to work correctly with the distance command so I used the original position from Sumrak's file. The trigger activates when you get down the ladder about 2 meters. --- SQF/dayz_code/compile/player_objectA2.sqf | 59 +++++++++++++++++++ SQF/dayz_code/init/compiles.sqf | 1 + SQF/dayz_code/stringtable.xml | 6 ++ .../DZE_Server_Config/BattlEye/scripts.txt | 2 +- .../DayZ_Epoch_15.namalsk/configVariables.sqf | 3 + .../DayZ_Epoch_15.namalsk/mission.sqm | 13 +++- 6 files changed, 81 insertions(+), 3 deletions(-) create mode 100644 SQF/dayz_code/compile/player_objectA2.sqf diff --git a/SQF/dayz_code/compile/player_objectA2.sqf b/SQF/dayz_code/compile/player_objectA2.sqf new file mode 100644 index 000000000..63852b677 --- /dev/null +++ b/SQF/dayz_code/compile/player_objectA2.sqf @@ -0,0 +1,59 @@ + /* + * AII module light system + * intensity variable DZE_ObjectA2lightIntensity (RECOMMENDED VALUE = 0.10, 0 = off (dark), 1 = fully on (not recommended)) + * + * AII module SFX system + * parallel procedure to the light system + * enabling / disabling environment sounds + * ominous sound effect + */ + +local _showText = _this select 0; +local _status = _this select 1; +DZE_AII_Lights = []; + +// Do not show message when player changes clothes in object A2. +if ((dayz_lastClothesChange + 3 > diag_tickTime) || {(player distance respawn_west_original < 100)}) then { + _showText = false; +}; + +if (_status == "enter") then { + if (_showText) then { + localize "STR_OBJECTA2_ENTER" call dayz_rollingMessages; + }; + + enableEnvironment false; + + // create light sources + { + local _light = "#LightPoint" createVehicleLocal _x; + _light setLightBrightness DZE_ObjectA2lightIntensity; + _light setLightAmbient [0.5, 0.5, 0.5]; + _light setLightColor [1.0, 1.0, 1.0]; + _light setPos _x; + DZE_AII_Lights = DZE_AII_Lights + [_light]; + } count [[4978.8086,6630.834,0],[4983.9385,6614.6343,0],[4975.1152,6606.9126,0]]; + + // Four second sound effect gets repeated until leaving. + [] spawn { + while {count DZE_AII_Lights > 0} do { + playSound "ns_fx_aii_underground"; + uiSleep 4; + }; + //diag_log "Object A2 Sound loop has ended"; + }; + +} else { + if (_showText) then { + localize "STR_OBJECTA2_LEAVE" call dayz_rollingMessages; + }; + + // remove light sources + { + _x setLightBrightness 0; + deleteVehicle _x; + } count DZE_AII_Lights; + + DZE_AII_Lights = []; + enableEnvironment true; +}; \ No newline at end of file diff --git a/SQF/dayz_code/init/compiles.sqf b/SQF/dayz_code/init/compiles.sqf index 30e8ba255..8e280919d 100644 --- a/SQF/dayz_code/init/compiles.sqf +++ b/SQF/dayz_code/init/compiles.sqf @@ -752,6 +752,7 @@ if (!isDedicated) then { dayz_EjectPlayer = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\dze_ejectPlayer.sqf"; fnc_isInsideBuilding = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\fn_isInsideBuilding.sqf"; //_isInside = [_unit,_building] call fnc_isInsideBuilding; fnc_setCombat = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\fn_setCombat.sqf"; + if (worldName == "namalsk") then {player_objectAII = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\player_objectA2.sqf";}; }; //Both diff --git a/SQF/dayz_code/stringtable.xml b/SQF/dayz_code/stringtable.xml index 32139f307..64e1d00a3 100644 --- a/SQF/dayz_code/stringtable.xml +++ b/SQF/dayz_code/stringtable.xml @@ -37225,6 +37225,12 @@ Haufen Erde Кучка земли + + Entering Object AII + + + Leaving Object AII + diff --git a/Server Files/DZE_Server_Config/BattlEye/scripts.txt b/Server Files/DZE_Server_Config/BattlEye/scripts.txt index 104fa77b1..585ecfa4f 100644 --- a/Server Files/DZE_Server_Config/BattlEye/scripts.txt +++ b/Server Files/DZE_Server_Config/BattlEye/scripts.txt @@ -34,7 +34,7 @@ 5 displaySetEventHandler 1 DZE_doorManagementAdmins !="00, \nfalse, \n2 \n];\n\nDZE_PlotManagementAdmins = []; \nDZE_doorManagementAdmins = []; \n\nDZE_disableThermal = []; \nDZE_clearStaticAm" !="true; };\n} count _doorFriends;\n\n\n\n\nif(_playerUID in DZE_DoorManagementAdmins) then { _isDoorAdmin = true; };\n};\n\n\n[ _isOwner\n, _" 1 DZE_PlotManagementAdmins !="3, \n.25, \n1, \n1, \n.2,\n10, \n0, \n400, \nfalse, \n2 \n];\n\nDZE_PlotManagementAdmins = []; \nDZE_doorManagementAdmins = []; \n\nDZE_disable" !="ay = []; \nlocal _isAdmin = dayz_playerUID in DZE_PlotManagementAdmins;\n\nlocal _dir = 0; \nlocal _vector = []; " !="_Pole_EP1_DZ\");\nlocal _isAdmin = dayz_playerUID in DZE_PlotManagementAdmins;\nlocal _canBuild = false;\nlocal _plotPoles = 0;\nlo" !="true; };\n} count _plotFriends;\n\n\n\n\nif(_playerUID in DZE_PlotManagementAdmins) then { _isPlotAdmin = true; };\n};\n\n\nif(_targetType" !="ove select 0) == _ownerPUID && (!(dayz_playerUID in DZE_PlotManagementAdmins) && !(dayz_playerUID == _ownerPUID))) exitWith {sys" -5 enableEnvironment +5 enableEnvironment !="ze \"STR_OBJECTA2_ENTER\" call dayz_rollingMessages;\n};\n\nenableEnvironment false;\n\n\n{\nlocal _light = \"#LightPoint\" createVehicleLo" 5 endMission !"rendMission" !"clearWeaponCargo\",\n\"endMission\"," !"enablesimulation\", \"endMission\"," !"lize \"str_player_login_timeout\", \"PLAIN DOWN\"];\nuiSleep 5;\nendMission" !"\npublicVariableServer \"PVDZ_sec_atp\";\nendMission \"LOSER\";\n};\n" !"Terminate\",\"BACK\"];\ncamDestroy _camera;\n\nendMission" !"endMission \"END1\";\n\n\ndayz_authed = true" 5 entities !"nearEntities" !="\n if (isnil 'BIS_fnc_sceneCreateSoundEntities' || false) then {\n BIS_fnc_sceneCreateSoundEntities = {\n i" !="_loginCompleted = true;\n\n\ndayz_currentGlobalZombies = count entities \"zZombie_Base\";\n\n{\ncall compile preprocessFileLineNumbers (" !="haracterID)) then {\n_plotPoles = _plotPoles +1;\n};\n} count (entities \"Plastic_Pole_EP1_DZ\");\n};\n} else {\n_plotcheck = [player, f" !="VDZ_sec_atp\";\n};\n};\n\nif (isNull _grp) then { _grp = group ((entities 'FunctionsManager') select 0); };\nif (!isNull _grp) then {\n" !="_playerUID) then {\n_plotPoles = _plotPoles + 1;\n};\n} count (entities \"Plastic_Pole_EP1_DZ\"); \n};\n\nif ((DZE_limitPlots > 0) && (_" 1 execVM !"rexecVM" !"\"execVM\", " !="[] execVM \"initJIPcompatible.sqf\";" !="_script = [] execVM (BIS_MP_Path + BIS_PATH_SQF + \"JIPWaitFor.sqf\");" !"execVM \"\\ca\\Data\\" !"execVM '\\ca\\Data\\" !"execVM \"\\ca\\missions" !"execVM 'ca\\modules\\" !"execVM \"ca\\modules\\" !"'\\ca\\ui\\" !"\"\\ca\\ui\\" !"scriptName \"MP\\data\\script" !"_handle\"];\n_handle = [_display] execVM _script;\n}" !"execVM '\\z\\addons\\dayz_code\\" !"execVM 'z\\addons\\dayz_code\\" !"execVM \"z\\addons\\dayz_code\\" !"execVM \"\\z\\addons\\dayz_code\\" !"execVM (\"\\z\\addons\\dayz_code\\" !="dayz_rulesHandle = execVM \"rules.sqf\";" !"execvm '\\ASC\\" !"\\usec_ch53\\scripts\\" !"execVM (_actionDir + \"warn.sqf" !="_this execVM \"\\GNT_C185\\scr\\C185_Exhaust.sqf\";[_this select 0] execvm \"\\GNT_C185\\scr\\G_CheckEngine.sqf\";" !="dummy = _this execVM \"ca\\characters2\\OTHER\\scripts\\fly.sqf\"" diff --git a/Server Files/MPMissions/DayZ_Epoch_15.namalsk/configVariables.sqf b/Server Files/MPMissions/DayZ_Epoch_15.namalsk/configVariables.sqf index 0cc2cd3ed..2a45c508c 100644 --- a/Server Files/MPMissions/DayZ_Epoch_15.namalsk/configVariables.sqf +++ b/Server Files/MPMissions/DayZ_Epoch_15.namalsk/configVariables.sqf @@ -551,6 +551,9 @@ if (!isDedicated) then { DZE_EVRBloodLoss = [4000,8000]; // Random number of blood loss if a player does not have an APSI and/or is not inside a building [min, max]. Player will not die, there is a minimum of 1000 after the calculation DZE_EVRSafezoneExempt = true; // Players in safe zones are exempt from the effects of the EVR storms. }; + + // Namalsk Object AII Light Intensity + DZE_ObjectA2lightIntensity = .10; // (RECOMMENDED VALUE = 0.10, 0 = off (dark), 1 = fully on (not recommended)) // Garage Door Opener DZE_GarageDoor_Opener = false; // Enables the option to open Garage Doors from the inside of a vehicle. diff --git a/Server Files/MPMissions/DayZ_Epoch_15.namalsk/mission.sqm b/Server Files/MPMissions/DayZ_Epoch_15.namalsk/mission.sqm index ff0149bfa..7eb0c5edb 100644 --- a/Server Files/MPMissions/DayZ_Epoch_15.namalsk/mission.sqm +++ b/Server Files/MPMissions/DayZ_Epoch_15.namalsk/mission.sqm @@ -319,7 +319,7 @@ class Mission class Sensors { - items=4; + items=5; #define TRGDEF a=100;b=100;activationBy="WEST";repeating=1;interruptable=1;age="UNKNOWN";class Effects{}; class Item0 { @@ -356,7 +356,16 @@ class Mission expCond="(player distance zonedock) < 100;"; expActiv="[""Dock Trader"",true,""enter""] call player_traderCity;"; expDesactiv="[""Dock Trader"",true,""leave""] call player_traderCity;"; - }; + }; + class Item4 + { + position[]={4977.15,4.74,6624.89}; + TRGDEF + name="zoneAII"; + expCond="(player distance [4977.15,6624.89,0.74293]) < 41;"; + expActiv="[true,""enter""] call player_objectAII;"; + expDesactiv="[true,""leave""] call player_objectAII;"; + }; }; }; class Intro