Skip to content

Commit 3339bb5

Browse files
authored
Major Cleanup rework (#611)
* move cleanup fsm vehicle stuff ton entitykilled evh * add missing brackets * fix environment and syntax * add missing parameters and proximity check * refactor cleanup.sqf & remove cleanup.fsm * remove remaining cleanup.fsm mentions * DB -> HC, add missing private declaration, remove groundweaponholder deletion * automatic group deletion with deleteGroupWhenEmpty * make sure all groups get deleted when empty * set constants before looping, set vars only if needed * remove spare brackets * _killed cannot be nil * call instead of spawn asyncCall * move var assignment into thread
1 parent 82aacba commit 3339bb5

13 files changed

Lines changed: 138 additions & 445 deletions

File tree

Altis_Life.Altis/config/Config_Master.hpp

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,14 @@ class Life_Settings {
1515
player_moneyLog = false; //False [default] - No money logging. True - Logs player bank deposits, withdraws, and transfers, gang bank deposits and withdraws, money picked up off of the ground, and player robbery. Search for: money_log
1616
player_deathLog = false; //False [default] - No death logging. True - Logs victim and killer, and vehicle or weapon if used, when a player dies. Search for: death_log
1717

18+
/* Performance Settings */
19+
/* Vehicle Wrecks */
20+
dead_vehicles_despawn_delay = 30; //delay in seconds before despawning dead vehicles
21+
dead_vehicles_max_units_distance = 300; //maximum distance between wreck and nearest player before despawning (vehicle despawns anyway after specified delay!)
22+
23+
/* Cleanup */
24+
vehicles_despawn_max_distance = 1000; //maximum distance between a vehicle and the nearest player, before server puts it back to garage
25+
1826
/* Database Related Settings */
1927
/* Player Data Saving */
2028
save_virtualItems = true; //Save Virtual items (all sides)?
@@ -77,7 +85,7 @@ class Life_Settings {
7785
gang_price = 75000; //Gang creation price. --Remember they are persistent so keep it reasonable to avoid millions of gangs.
7886
gang_upgradeBase = 10000; //The base cost for purchasing additional slots in a gang
7987
gang_upgradeMultiplier = 2.5; //CURRENTLY NOT IN USE
80-
gang_area[] = {"gang_area_1","gang_area_2","gang_area_3"}; //Variable of gang zone markers
88+
gang_area[] = {"gang_area_1","gang_area_2","gang_area_3"}; //Variable of gang zone markers
8189

8290
/* Housing System Configurations */
8391
house_limit = 5; //Maximum number of houses a player can own.
@@ -212,11 +220,11 @@ class Life_Settings {
212220
{"STR_Crime_24","10000","24"},
213221
{"STR_Crime_25","20000","25"}
214222
};
215-
223+
216224
/* ! --- Do not change --- ! */
217225
framework_version = "6.0.0";
218226
/* ------------------------- */
219-
227+
220228
};
221229

222230
#include "Config_Clothing.hpp"
@@ -229,4 +237,4 @@ class Life_Settings {
229237
#include "Config_Process.hpp"
230238
#include "Config_Housing.hpp"
231239
#include "Config_Garages.hpp"
232-
#include "Config_Loadouts.hpp"
240+
#include "Config_Loadouts.hpp"

Altis_Life.Altis/core/gangs/fn_gangDisbanded.sqf

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,4 +11,7 @@ if (isNull _group) exitWith {}; //Fail horn please.
1111
if (!isNull (findDisplay 2620)) then {closeDialog 2620};
1212

1313
hint localize "STR_GNOTF_DisbandWarn_2";
14-
[player] joinSilent (createGroup civilian);
14+
15+
private _newGroup = createGroup civilian;
16+
[player] joinSilent _newGroup;
17+
_newGroup deleteGroupWhenEmpty true;

Altis_Life.Altis/core/gangs/fn_initGang.sqf

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ if (!isNil "_group") then {
3434
};
3535
} else {
3636
_group = group player;
37+
_group deleteGroupWhenEmpty true;
3738
_group setVariable ["gang_id",(life_gangData select 0),true];
3839
_group setVariable ["gang_owner",(life_gangData select 1),true];
3940
_group setVariable ["gang_name",(life_gangData select 2),true];

Altis_Life.Altis/core/init.sqf

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@ switch (playerSide) do {
5252
case civilian: {
5353
life_paycheck = LIFE_SETTINGS(getNumber,"paycheck_civ");
5454
[] call life_fnc_initCiv;
55+
(group player) deleteGroupWhenEmpty true;
5556
};
5657
case independent: {
5758
life_paycheck = LIFE_SETTINGS(getNumber,"paycheck_med");

life_hc/FSM/cleanup.fsm

Lines changed: 0 additions & 145 deletions
This file was deleted.

life_hc/MySQL/General/fn_cleanup.sqf

Lines changed: 24 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -9,61 +9,43 @@
99
Server-side cleanup script on vehicles.
1010
Sort of a lame way but whatever.
1111
*/
12-
private "_deleted";
13-
_deleted = false;
12+
private _saveFuel = LIFE_SETTINGS(getNumber,"save_vehicle_fuel") isEqualTo 1;
13+
private _minUnitDistance = LIFE_SETTINGS(getNumber,"vehicles_despawn_max_distance");
14+
1415
for "_i" from 0 to 1 step 0 do {
15-
private ["_veh","_units","_fuel"];
16-
sleep (60 * 60);
16+
uiSleep (60 * 60);
1717
{
18-
_protect = false;
19-
_veh = _x;
20-
_vehicleClass = getText(configFile >> "CfgVehicles" >> (typeOf _veh) >> "vehicleClass");
21-
_fuel = 1;
22-
23-
if (!isNil {_veh getVariable "NPC"} && {_veh getVariable "NPC"}) then {_protect = true;};
18+
private _vehicleClass = getText(configFile >> "CfgVehicles" >> (typeOf _x) >> "vehicleClass");
19+
private _protect = _x getVariable ["NPC",false];
2420

2521
if ((_vehicleClass in ["Car","Air","Ship","Armored","Submarine"]) && {!(_protect)}) then {
26-
if (LIFE_SETTINGS(getNumber,"save_vehicle_fuel") isEqualTo 1) then {_fuel = (fuel _veh);};
27-
_dbInfo = _veh getVariable ["dbInfo",[]];
28-
_units = {(_x distance _veh < 300)} count playableUnits;
29-
if (crew _x isEqualTo []) then {
30-
switch (true) do {
31-
case ((_x getHitPointDamage "HitEngine") > 0.7 && _units isEqualTo 0) : {deleteVehicle _x; _deleted = true;};
32-
case ((_x getHitPointDamage "HitLFWheel") > 0.98 && _units isEqualTo 0) : {deleteVehicle _x; _deleted = true;};
33-
case ((_x getHitPointDamage "HitLF2Wheel") > 0.98 && _units isEqualTo 0) : {deleteVehicle _x; _deleted = true;};
34-
case ((_x getHitPointDamage "HitRFWheel") > 0.98 && _units isEqualTo 0) : {deleteVehicle _x; _deleted = true;};
35-
case ((_x getHitPointDamage "HitRF2Wheel") > 0.98 && _units isEqualTo 0) : {deleteVehicle _x; _deleted = true;};
36-
case (_units isEqualTo 0): {deleteVehicle _x; _deleted = true;};
37-
};
38-
};
22+
private _noUnitsNear = ((nearestObjects [_x, ["CAManBase"], _minUnitDistance]) findIf {isPlayer _x && {alive _x}} isEqualTo -1);
3923

40-
if (_deleted) then {
41-
waitUntil {isNull _veh};
42-
_deleted = false;
43-
};
24+
if (crew _x isEqualTo [] && {_noUnitsNear}) then {
25+
private _fuel = if (_saveFuel) then {fuel _x} else {1};
26+
private _dbInfo = _x getVariable "dbInfo";
4427

45-
if (isNull _veh) then {
46-
if (count _dbInfo > 0) then {
47-
_uid = _dbInfo select 0;
48-
_plate = _dbInfo select 1;
28+
deleteVehicle _x;
4929

50-
_query = format ["cleanupVehicle:%1:%2:%3", _fuel, _uid, _plate];
30+
if (isNil "_dbInfo") exitWith {};
5131

52-
[_query,1] call HC_fnc_asyncCall;
53-
};
32+
waitUntil {uiSleep 1; isNull _x};
33+
34+
_dbInfo params [
35+
"_uid",
36+
"_plate"
37+
];
38+
39+
private _query = format ["cleanupVehicle:%1:%2:%3", _fuel, _uid, _plate];
40+
[_query, 1] call HC_fnc_asyncCall;
5441
};
5542
};
5643
} forEach vehicles;
5744

58-
sleep (3 * 60); //3 minute cool-down before next cycle.
5945
{
60-
if ((typeOf _x) in ["Land_BottlePlastic_V1_F","Land_TacticalBacon_F","Land_Can_V3_F","Land_CanisterFuel_F", "Land_Can_V3_F","Land_Money_F","Land_Suitcase_F"]) then {
46+
if (!isNil {_x getVariable "item"}) then {
6147
deleteVehicle _x;
6248
};
63-
} forEach (allMissionObjects "Thing");
64-
65-
sleep (2 * 60);
66-
{
67-
deleteVehicle _x;
68-
} forEach (allMissionObjects "GroundWeaponHolder");
49+
true
50+
} count (allMissionObjects "Thing");
6951
};

life_hc/initHC.sqf

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -59,8 +59,6 @@ diag_log "------------------------------------ Starting Altis Life HC Init -----
5959
diag_log format["-------------------------------------------- Version %1 -----------------------------------------",(LIFE_SETTINGS(getText,"framework_version"))];
6060
diag_log "----------------------------------------------------------------------------------------------------";
6161

62-
[] execFSM "\life_hc\FSM\cleanup.fsm";
63-
6462
[] spawn HC_fnc_cleanup;
6563

6664
/* Initialize hunting zone(s) */

0 commit comments

Comments
 (0)