-
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
1934e11
commit 39d36d6
Showing
1 changed file
with
38 additions
and
21 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,30 +1,47 @@ | ||
private["_time","_grp"]; | ||
/*скрипт ищет пустые неиспользуемые группы и удаляет их | ||
*/ | ||
|
||
waitUntil {!isNil "group_system_units"}; | ||
// _t time, _g group, _rm remove | ||
private["_t","_g","_rm"]; | ||
|
||
while{true}do{ | ||
// group_system_units это специальная группа в которой создаются боты единоразово, например для единичного выстрела | ||
waitUntil {!isNil "group_system_units"}; // TODO: нужна приставка к переменной | ||
|
||
sleep 5; | ||
diag_log format ["Log: [while_gc_groups.sqf] start %1", time]; | ||
|
||
while{true}do{ | ||
sleep 5; // performance | ||
{ | ||
_grp = _x; | ||
|
||
_time = (_grp getVariable "grp_created_time"); | ||
if ( isNil "_time" ) then { | ||
_time = time; | ||
_grp setVariable ["grp_created_time", _time]; | ||
diag_log format ["Group_gc.sqf %1 grp_created_time %2", _grp, _time ]; | ||
_g = _x; | ||
// время создания группам нужно чтобы они не удалялись до формирования отряда | ||
// время создания обычно уже установленно при формировании отряда | ||
_t = (_g getVariable "grp_created_time"); // TODO: нужна приставка к переменной | ||
if ( isNil "_t" ) then { | ||
//--- время еще не установленно, группа еще не готова, проверяется в следующем заходе | ||
_t = time; | ||
_g setVariable ["grp_created_time", _t]; | ||
diag_log format ["Log: [while_gc_groups.sqf] %1 grp_created_time %2", _g, _t ]; | ||
} else { | ||
//--- времени с момента создания группы прошло достаточно для проверки | ||
if(_t < (time - 10))then{ | ||
_rm = true; | ||
|
||
//--- проверка живых юнитов в группе | ||
{ | ||
if(alive _x)exitWith{_rm = false}; | ||
} forEach units _g; | ||
|
||
//--- удаление | ||
if(_rm)then{ | ||
diag_log format ["Log: [while_gc_groups.sqf] deleteGroup %1, count alive %2", _g, {alive _x} count units _g]; | ||
deleteGroup _g; | ||
}; | ||
}; | ||
}; | ||
|
||
sleep 0.01; // FIXME: эта команда сама по себе не нагружает cpu ?? performance | ||
|
||
if((_time < (time - 10)) && ({alive _x} count units _grp == 0))then{ | ||
|
||
diag_log format ["Group_gc.sqf deleteGroup %1, count alive %2", _grp, {alive _x} count units _grp]; | ||
|
||
deleteGroup _grp; | ||
|
||
diag_log format ["Group_gc.sqf deletedGroup %1", _grp]; | ||
|
||
}; | ||
} forEach allGroups-[group_system_units]; | ||
|
||
}; | ||
|
||
diag_log format ["Log: [while_gc_groups.sqf] done %1", time]; |