Removed old garbage collection

This commit is contained in:
Wyqer 2019-07-01 17:27:26 +02:00
parent d676bf996e
commit 3bcc659f2b
No known key found for this signature in database
GPG Key ID: D7E2F8BD7F1E48FA
2 changed files with 0 additions and 252 deletions

View File

@ -1,251 +0,0 @@
/*
File: clean.sqf
Author:
Quiksilver
Last modified:
10/12/2014 ArmA 1.36 by Quiksilver
Description:
Maintain healthy quantity of some mission objects created during scenarios, including some created by the engine.
- Dead bodies
- Dead vehicles
- Craters
- Weapon holders (ground garbage)
- Mines
- Static weapons
- Ruins
- Orphaned MP Triggers http://feedback.arma3.com/view.php?id=19231
- Empty Groups
* Ruins can be excluded by setPos [0,0,0] on them, this script will not touch them in that case. Could be done for JIP/locality reasons, since Ruins can be fiddly with JIP.
* Note: Please do not place any triggers at nullPos [0,0,0]. This script by default removes all triggers at nullPos.
Instructions:
ExecVM from initServer.sqf or init.sqf in your mission directory.
[] execVM "clean.sqf"; // If you put the file in mission directory
[] execVM "scripts\clean.sqf"; // If you put the file in a folder, in this case called "scripts"
_________________________________________________________________________*/
sleep 15;
private ["_isHidden","_checkPlayerCount","_checkFrequencyDefault","_checkFrequencyAccelerated","_playerThreshold","_deadMenLimit","_deadMenDistCheck","_deadMenDist","_deadVehiclesLimit","_deadVehicleDistCheck","_deadVehicleDist","_craterLimit","_craterDistCheck","_craterDist","_ruins","_ruinsLimit","_ruinsDistCheck","_ruinsDist","_weaponHolderLimit","_weaponHolderDistCheck","_weaponHolderDist","_minesLimit","_minesDistCheck","_minesDist","_staticsLimit","_staticsDistCheck","_staticsDist","_orphanedTriggers","_emptyGroups"];
//==================== HIDDEN-FROM-PLAYERS FUNCTION
_isHidden = compileFinal "
private [""_c""];
_c = FALSE;
if (({(((_this select 0) distance _x) < (_this select 1))} count (_this select 2)) isEqualTo 0) then {
_c = TRUE;
};
_c;
";
//================================================================ CONFIG
deleteManagerPublic = TRUE; // To terminate script via debug console
_checkPlayerCount = TRUE; // dynamic sleep. Set TRUE to have sleep automatically adjust based on # of players.
_checkFrequencyDefault = 180; // sleep default
_checkFrequencyAccelerated = 60; // sleep accelerated
_playerThreshold = 20; // How many players before accelerated cycle kicks in?
_deadMenLimit = 50; // Bodies. Set -1 to disable.
_deadMenDistCheck = TRUE; // TRUE to delete any bodies that are far from players.
_deadMenDist = 2000; // Distance (meters) from players that bodies are not deleted if below max.
_deadVehiclesLimit = 20; // Wrecks. Set -1 to disable.
_deadVehicleDistCheck = TRUE; // TRUE to delete any destroyed vehicles that are far from players.
_deadVehicleDist = 2000; // Distance (meters) from players that destroyed vehicles are not deleted if below max.
_craterLimit = 20; // Craters. Set -1 to disable.
_craterDistCheck = TRUE; // TRUE to delete any craters that are far from players.
_craterDist = 2000; // Distance (meters) from players that craters are not deleted if below max.
_weaponHolderLimit = 50; // Weapon Holders. Set -1 to disable.
_weaponHolderDistCheck = TRUE; // TRUE to delete any weapon holders that are far from players.
_weaponHolderDist = 500; // Distance (meters) from players that ground garbage is not deleted if below max.
_minesLimit = -1; // Land mines. Set -1 to disable.
_minesDistCheck = TRUE; // TRUE to delete any mines that are far from ANY UNIT (not just players).
_minesDist = 3000; // Distance (meters) from players that land mines are not deleted if below max.
_staticsLimit = -1; // Static weapons. Set -1 to disable.
_staticsDistCheck = TRUE; // TRUE to delete any static weapon that is far from ANY UNIT (not just players.
_staticsDist = 3000; // Distance (meters) from players that static weapons are not deleted if below max.
_ruinsLimit = 20; // Ruins. Set -1 to disable.
_ruinsDistCheck = TRUE; // TRUE to delete any ruins that are far from players.
_ruinsDist = 3000; // Distance (meters) from players that ruins are not deleted if below max.
_orphanedTriggers = TRUE; // Clean orphaned triggers in MP.
_emptyGroups = TRUE; // Set FALSE to not delete empty groups.
//================================================================ LOOP
while {deleteManagerPublic} do {
//================================= DEAD MEN
if (!(_deadMenLimit isEqualTo -1)) then {
if ((count allDeadMen) > _deadMenLimit) then {
while {(((count allDeadMen) - _deadMenLimit) > 0)} do {
detach (allDeadMen select 0);
deleteVehicle (allDeadMen select 0);
sleep 0.5;
};
} else {
if (_deadMenDistCheck) then {
{
if ([_x,_deadMenDist,(playableUnits + switchableUnits)] call _isHidden) then {
detach _x;
deleteVehicle _x;
};
} count allDeadMen;
};
};
};
sleep 1;
//================================= VEHICLES
if (!(_deadVehiclesLimit isEqualTo -1)) then {
if ((count (allDead - allDeadMen)) > _deadVehiclesLimit) then {
while {(((count (allDead - allDeadMen)) - _deadVehiclesLimit) > 0)} do {
deleteVehicle ((allDead - allDeadMen) select 0);
sleep 0.5;
};
} else {
if (_deadVehicleDistCheck) then {
{
if ([_x,_deadVehicleDist,(playableUnits + switchableUnits)] call _isHidden) then {
deleteVehicle _x;
};
} count (allDead - allDeadMen);
};
};
};
sleep 1;
//================================= CRATERS
if (!(_craterLimit isEqualTo -1)) then {
if ((count (allMissionObjects "CraterLong")) > _craterLimit) then {
while {(((count (allMissionObjects "CraterLong")) - _craterLimit) > 0)} do {
deleteVehicle ((allMissionObjects "CraterLong") select 0);
sleep 0.5;
};
} else {
if (_craterDistCheck) then {
{
if ([_x,_craterDist,(playableUnits + switchableUnits)] call _isHidden) then {
deleteVehicle _x;
};
} count (allMissionObjects "CraterLong");
};
};
};
sleep 1;
//================================= WEAPON HOLDERS
if (!(_weaponHolderLimit isEqualTo -1)) then {
if ((count (allMissionObjects "WeaponHolder")) > _weaponHolderLimit) then {
while {(((count (allMissionObjects "WeaponHolder")) - _weaponHolderLimit) > 0)} do {
deleteVehicle ((allMissionObjects "WeaponHolder") select 0);
sleep 0.5;
};
} else {
if (_weaponHolderDistCheck) then {
{
if ([_x,_weaponHolderDist,(playableUnits + switchableUnits)] call _isHidden) then {
deleteVehicle _x;
};
} count (allMissionObjects "WeaponHolder");
};
};
};
sleep 1;
//================================= MINES
if (!(_minesLimit isEqualTo -1)) then {
if ((count allMines) > _minesLimit) then {
while {(((count allMines) - _minesLimit) > 0)} do {
deleteVehicle (allMines select 0);
sleep 0.5;
};
} else {
if (_minesDistCheck) then {
{
if ([_x,_minesDist,allUnits] call _isHidden) then {
deleteVehicle _x;
};
} count allMines;
};
};
};
sleep 1;
//================================= STATIC WEAPONS
if (!(_staticsLimit isEqualTo -1)) then {
if ((count (allMissionObjects "StaticWeapon")) > _staticsLimit) then {
while {(((count (allMissionObjects "StaticWeapon")) - _staticsLimit) > 0)} do {
deleteVehicle ((allMissionObjects "StaticWeapon") select 0);
sleep 0.5;
};
} else {
if (_staticsDistCheck) then {
{
if ([_x,_staticsDist,allUnits] call _isHidden) then {
deleteVehicle _x;
};
} count (allMissionObjects "StaticWeapon");
};
};
};
sleep 1;
//================================= RUINS
if (!(_ruinsLimit isEqualTo -1)) then {
_ruins = [];
{
if ((_x distance [0,0,0]) > 100) then {
0 = _ruins pushBack _x;
sleep 0.1;
};
} count (allMissionObjects "Ruins");
if ((count _ruins) > _ruinsLimit) then {
while {(((count _ruins) - _ruinsLimit) > 0)} do {
_ruins resize (count _ruins - 1);
deleteVehicle (_ruins select 0);
sleep 0.5;
};
} else {
if (_ruinsDistCheck) then {
{
if ([_x,_ruinsDist,(playableUnits + switchableUnits)] call _isHidden) then {
deleteVehicle _x;
};
} count (allMissionObjects "Ruins");
};
};
};
sleep 1;
//================================= ORPHANED MP TRIGGERS.
if (_orphanedTriggers) then {
{
if ((_x distance [0,0,0]) < 1) then {
deleteVehicle _x;
};
} count (allMissionObjects "EmptyDetector");
};
sleep 1;
//================================= EMPTY GROUPS
if (_emptyGroups) then {
{
if ((count units _x) isEqualTo 0) then {
deleteGroup _x;
};
} count allGroups;
};
sleep 1;
//================================= SLEEP
if (_checkPlayerCount) then {
if ((count (playableUnits + switchableUnits)) >= _playerThreshold) then {
sleep _checkFrequencyAccelerated;
} else {
sleep _checkFrequencyDefault;
};
} else {
sleep _checkFrequencyDefault;
};
};

View File

@ -43,7 +43,6 @@ execVM "scripts\server\battlegroup\random_battlegroups.sqf";
execVM "scripts\server\battlegroup\readiness_increase.sqf";
execVM "scripts\server\game\apply_default_permissions.sqf";
execVM "scripts\server\game\capture_vehicles.sqf";
execVM "scripts\server\game\clean.sqf";
execVM "scripts\server\game\cleanup_vehicles.sqf";
execVM "scripts\server\game\fucking_set_fog.sqf";
execVM "scripts\server\game\manage_time.sqf";