diff --git a/SQF/dayz_code/actions/modular_build.sqf b/SQF/dayz_code/actions/modular_build.sqf index 1b4275c68..82755911d 100644 --- a/SQF/dayz_code/actions/modular_build.sqf +++ b/SQF/dayz_code/actions/modular_build.sqf @@ -1578,6 +1578,10 @@ if (_canBuild) then { }; publicVariableServer "PVDZ_obj_Publish"; }; + + if (_builtObject isKindOf "StaticWeapon" || {_classname in DZE_StaticWeapons}) then { + [_builtObject,DZE_clearStaticAmmo,false] call fn_vehicleAddons; + }; }; if (DZE_GodModeBase && {!(_classname in DZE_GodModeBaseExclude)}) then { _builtObject addEventHandler ["HandleDamage", {0}]; diff --git a/SQF/dayz_server/compile/server_clearTurrets.sqf b/SQF/dayz_code/compile/fn_clearTurrets.sqf similarity index 100% rename from SQF/dayz_server/compile/server_clearTurrets.sqf rename to SQF/dayz_code/compile/fn_clearTurrets.sqf diff --git a/SQF/dayz_server/compile/server_fillTurrets.sqf b/SQF/dayz_code/compile/fn_fillTurrets.sqf similarity index 100% rename from SQF/dayz_server/compile/server_fillTurrets.sqf rename to SQF/dayz_code/compile/fn_fillTurrets.sqf diff --git a/SQF/dayz_server/compile/server_vehicleAddons.sqf b/SQF/dayz_code/compile/fn_vehicleAddons.sqf similarity index 91% rename from SQF/dayz_server/compile/server_vehicleAddons.sqf rename to SQF/dayz_code/compile/fn_vehicleAddons.sqf index ad4636680..78339156f 100644 --- a/SQF/dayz_server/compile/server_vehicleAddons.sqf +++ b/SQF/dayz_code/compile/fn_vehicleAddons.sqf @@ -11,12 +11,12 @@ if (_type in DZE_disableThermal) then { }; if (_clearAmmo && {!(_type in _skipAmmoClear)}) then { - _vehicle call server_clearTurrets; + _vehicle call fn_clearTurrets; }; if (_addAmmo && {!(_type in _skipAmmoFill)}) then { local _countMags = 2; // Number of how many magazines will be added to the vehicle - [_vehicle,_countMags] call server_fillTurrets; + [_vehicle,_countMags] call fn_fillTurrets; }; diff --git a/SQF/dayz_code/configVariables.sqf b/SQF/dayz_code/configVariables.sqf index c8823b097..7618b1a6e 100644 --- a/SQF/dayz_code/configVariables.sqf +++ b/SQF/dayz_code/configVariables.sqf @@ -94,6 +94,12 @@ DZE_WeatherVariables = [ DZE_PlotManagementAdmins = []; //Array of admin PlayerUIDs. UIDs in this list are able to access every pole's management menu and delete or build any buildable with a pole nearby. DZE_doorManagementAdmins = []; //Array of admin PlayerUIDs. UIDs in this list are able to access every door's management menu and open it. +DZE_disableThermal = []; // Array of vehicle classnames to disable thermal on when being spawned. i.e: ["AH1Z","MTVR"]; +DZE_clearStaticAmmo = true; // Clears the ammo of all built and spawned static guns +DZE_clearVehicleAmmo = true; // Clears the ammo of vehicles spawned, bought, claimed and upgraded during the same restart +DZE_clearVehicleFlares = false; // Clears the flares of vehicles during the same restart, DZE_clearVehicleAmmo must be true in order to work +DZE_addVehicleAmmo = false; // Adds ammo to all spawned, bought, claimed and upgraded vehicles during the same restart + // Uncomment the lines below to change the default loadout //DefaultMagazines = ["HandRoadFlare","ItemBandage","ItemPainkiller","8Rnd_9x18_Makarov","8Rnd_9x18_Makarov"]; //DefaultWeapons = ["Makarov_DZ","ItemFlashlight"]; @@ -120,10 +126,6 @@ if (isServer) then { MaxVehicleLimit = 50; // Max number of random vehicles to spawn around the map dayz_enableGhosting = false; dayz_ghostTimer = 120; - DZE_disableThermal = []; // Array of vehicle classnames to disable thermal on when being spawned. i.e: ["AH1Z","MTVR"]; - DZE_clearVehicleAmmo = true; // Clears the ammo of vehicles spawned, bought, claimed and upgraded during the same restart - DZE_clearVehicleFlares = false; // Clears the flares of vehicles during the same restart, DZE_clearVehicleAmmo must be true in order to work - DZE_addVehicleAmmo = false; // Adds ammo to all spawned, bought, claimed and upgraded vehicles during the same restart // ZSC Z_globalBankingTraders = false; // Enable banking NPCs at trader cities. diff --git a/SQF/dayz_code/init/compiles.sqf b/SQF/dayz_code/init/compiles.sqf index b28b8e92e..20a713a21 100644 --- a/SQF/dayz_code/init/compiles.sqf +++ b/SQF/dayz_code/init/compiles.sqf @@ -799,6 +799,10 @@ object_getHit = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\o object_setHit = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\object_setHit.sqf"; //process the hit as a NORMAL damage (useful for persistent vehicles) object_processHit = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\object_processHit.sqf"; //process the hit in the REVO damage system (records and sets hit) +fn_vehicleAddons = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\fn_vehicleAddons.sqf"; +fn_clearTurrets = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\fn_clearTurrets.sqf"; +fn_fillTurrets = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\fn_fillTurrets.sqf"; + // Vehicle damage fix fnc_veh_handleDam = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\veh_handleDam.sqf"; fnc_veh_handleKilled = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\veh_handleKilled.sqf"; diff --git a/SQF/dayz_server/compile/garage/server_spawnVehicle.sqf b/SQF/dayz_server/compile/garage/server_spawnVehicle.sqf index c7c58405f..95a646d5d 100644 --- a/SQF/dayz_server/compile/garage/server_spawnVehicle.sqf +++ b/SQF/dayz_server/compile/garage/server_spawnVehicle.sqf @@ -90,7 +90,7 @@ if (_outcome != "PASS") then { [_object,"all",true] call server_updateObject; - [_object,vg_clearAmmo,false] call server_vehicleAddons; + [_object,vg_clearAmmo,false] call fn_vehicleAddons; dayz_serverObjectMonitor set [count dayz_serverObjectMonitor,_object]; diff --git a/SQF/dayz_server/compile/server_publishObject.sqf b/SQF/dayz_server/compile/server_publishObject.sqf index 6ac1dc191..7d73813d5 100644 --- a/SQF/dayz_server/compile/server_publishObject.sqf +++ b/SQF/dayz_server/compile/server_publishObject.sqf @@ -1,6 +1,6 @@ #include "\z\addons\dayz_server\compile\server_toggle_debug.hpp" -private ["_type","_objectUID","_characterID","_object","_worldspace","_key","_ownerArray","_inventory","_clientKey","_exitReason","_player","_playerUID"]; +private ["_isStatic","_type","_objectUID","_characterID","_object","_worldspace","_key","_ownerArray","_inventory","_clientKey","_exitReason","_player","_playerUID"]; if (count _this < 6) exitWith {diag_log "Server_PublishObj error: Wrong parameter format";}; @@ -36,6 +36,7 @@ if ([_object, "Server"] call check_publishobject) then { _object addMPEventHandler ["MPKilled",{if !(isServer) exitWith {};_this call vehicle_handleServerKilled;}]; }; }; + // Test disabling simulation server side on buildables only. _object enableSimulation false; diff --git a/SQF/dayz_server/compile/server_publishVehicle.sqf b/SQF/dayz_server/compile/server_publishVehicle.sqf index 61ac64ced..e0bb47ac3 100644 --- a/SQF/dayz_server/compile/server_publishVehicle.sqf +++ b/SQF/dayz_server/compile/server_publishVehicle.sqf @@ -80,7 +80,7 @@ if (_outcome != "PASS") then { [_object,"all",true] call server_updateObject; - [_object,DZE_clearVehicleAmmo,DZE_addVehicleAmmo] call server_vehicleAddons; + [_object,DZE_clearVehicleAmmo,DZE_addVehicleAmmo] call fn_vehicleAddons; _object call fnc_veh_ResetEH; diff --git a/SQF/dayz_server/compile/server_publishVehicle2.sqf b/SQF/dayz_server/compile/server_publishVehicle2.sqf index 73657cdb9..40d678421 100644 --- a/SQF/dayz_server/compile/server_publishVehicle2.sqf +++ b/SQF/dayz_server/compile/server_publishVehicle2.sqf @@ -94,7 +94,7 @@ if (_outcome != "PASS") then { }; }; - [_object,DZE_clearVehicleAmmo,DZE_addVehicleAmmo] call server_vehicleAddons; + [_object,DZE_clearVehicleAmmo,DZE_addVehicleAmmo] call fn_vehicleAddons; _object call fnc_veh_ResetEH; diff --git a/SQF/dayz_server/compile/server_publishVehicle3.sqf b/SQF/dayz_server/compile/server_publishVehicle3.sqf index e9aefaa4c..c0b125bcd 100644 --- a/SQF/dayz_server/compile/server_publishVehicle3.sqf +++ b/SQF/dayz_server/compile/server_publishVehicle3.sqf @@ -130,7 +130,7 @@ if (_outcome != "PASS") then { [_object,"all",true] call server_updateObject; - [_object,DZE_clearVehicleAmmo,false] call server_vehicleAddons; + [_object,DZE_clearVehicleAmmo,false] call fn_vehicleAddons; _object call fnc_veh_ResetEH; // for non JIP users this should make sure everyone has eventhandlers for vehicles. diff --git a/SQF/dayz_server/compile/server_publishVehicle3_vkc.sqf b/SQF/dayz_server/compile/server_publishVehicle3_vkc.sqf index 982990595..5dae2fc54 100644 --- a/SQF/dayz_server/compile/server_publishVehicle3_vkc.sqf +++ b/SQF/dayz_server/compile/server_publishVehicle3_vkc.sqf @@ -159,7 +159,7 @@ if (_outcome != "PASS") then { [_object,"all",true] call server_updateObject; - [_object,DZE_clearVehicleAmmo,false] call server_vehicleAddons; + [_object,DZE_clearVehicleAmmo,false] call fn_vehicleAddons; _object call fnc_veh_ResetEH; // for non JIP users this should make sure everyone has eventhandlers for vehicles. diff --git a/SQF/dayz_server/init/server_functions.sqf b/SQF/dayz_server/init/server_functions.sqf index 055ff1d9d..36a84a931 100644 --- a/SQF/dayz_server/init/server_functions.sqf +++ b/SQF/dayz_server/init/server_functions.sqf @@ -24,9 +24,6 @@ server_onPlayerDisconnect = compile preprocessFileLineNumbers "\z\addons\dayz_se call compile preprocessFileLineNumbers "\z\addons\dayz_server\compile\updateObject_functions.sqf"; server_updateObject = compile preprocessFileLineNumbers "\z\addons\dayz_server\compile\server_updateObject.sqf"; server_setHitpoints = compile preprocessFileLineNumbers "\z\addons\dayz_server\compile\server_setHitpoints.sqf"; -server_vehicleAddons = compile preprocessFileLineNumbers "\z\addons\dayz_server\compile\server_vehicleAddons.sqf"; -server_clearTurrets = compile preprocessFileLineNumbers "\z\addons\dayz_server\compile\server_clearTurrets.sqf"; -server_fillTurrets = compile preprocessFileLineNumbers "\z\addons\dayz_server\compile\server_fillTurrets.sqf"; server_playerDied = compile preprocessFileLineNumbers "\z\addons\dayz_server\compile\server_playerDied.sqf"; server_publishObj = compile preprocessFileLineNumbers "\z\addons\dayz_server\compile\server_publishObject.sqf"; //Creates the object in DB server_deleteObj = compile preprocessFileLineNumbers "\z\addons\dayz_server\compile\server_deleteObj.sqf"; //Removes the object from the DB diff --git a/SQF/dayz_server/system/server_monitor.sqf b/SQF/dayz_server/system/server_monitor.sqf index 783e38e21..00e053bce 100644 --- a/SQF/dayz_server/system/server_monitor.sqf +++ b/SQF/dayz_server/system/server_monitor.sqf @@ -102,7 +102,7 @@ if ((playersNumber west + playersNumber civilian) == 0) exitWith { _damage = _x select 8; _storageMoney = _x select 9; - if ((_type isKindOf "AllVehicles") && !(_type isKindOf "StaticWeapon")) then { + if ((_type isKindOf "AllVehicles") && {!(_type isKindOf "StaticWeapon") && {!(_type in DZE_StaticWeapons)}}) then { _VehicleQueue set [_vQty,_x]; _vQty = _vQty + 1; } else { @@ -263,6 +263,11 @@ if ((playersNumber west + playersNumber civilian) == 0) exitWith { }; }; }; + + if (_type isKindOf "StaticWeapon" || {_type in DZE_StaticWeapons}) then { + [_object,DZE_clearStaticAmmo,false] call fn_vehicleAddons; + }; + _setGlobal = [false,true] select ((_type in DZE_LockedStorage) || (_type in DZE_DoorsLocked)); _object setVariable ["CharacterID", _ownerID, _setGlobal]; if (_isSafeObject && !_isTrapItem) then { @@ -373,7 +378,7 @@ if ((playersNumber west + playersNumber civilian) == 0) exitWith { [_object,"all",true] call server_updateObject; - [_object,DZE_clearVehicleAmmo,DZE_addVehicleAmmo] call server_vehicleAddons; + [_object,DZE_clearVehicleAmmo,DZE_addVehicleAmmo] call fn_vehicleAddons; _object call fnc_veh_ResetEH; if (_ownerID != "0" && {!(_object isKindOf "Bicycle")}) then {_object setVehicleLock "locked";};