mirror of
https://github.com/EpochModTeam/DayZ-Epoch.git
synced 2025-12-14 04:02:37 +03:00
70 lines
1.9 KiB
Plaintext
70 lines
1.9 KiB
Plaintext
private ["_event","_groupUIDs","_kickedUID","_name","_newGroup","_player","_playerUID","_save","_unit"];
|
|
|
|
_event = _this select 0;
|
|
_player = _this select 1;
|
|
_kickedUID = ["0",_this select 2] select (count _this > 2);
|
|
_name = ["unknown",name _player] select (alive _player);
|
|
_playerUID = getPlayerUID _player;
|
|
|
|
if (_event < 3) then {
|
|
//Small delay needed for group changes to propagate to server
|
|
uiSleep 1;
|
|
};
|
|
|
|
//Do not update if calling player is dead. Prevent saving dayz_firstGroup.
|
|
if (damage _player >= 1) exitWith {};
|
|
|
|
if (_event == -1) exitWith {
|
|
//Promote _player
|
|
PVDZ_groupInvite = [-1,_player];
|
|
(owner (leader group _player)) publicVariableClient "PVDZ_groupInvite";
|
|
};
|
|
|
|
_groupUIDs = [];
|
|
{
|
|
if (damage _x < 1 && {isPlayer _x}) then {
|
|
_groupUIDs set [count _groupUIDs,getPlayerUID _x];
|
|
};
|
|
} count (units group _player);
|
|
|
|
_newGroup = [];
|
|
_newGroup = call {
|
|
//Join
|
|
if (_event == 1) exitwith {_groupUIDs};
|
|
//Kick (target was already kicked from group)
|
|
if (_event == 2) exitwith {
|
|
_name = _kickedUID;
|
|
format["CHILD:204:%1:%2:%3:",_name,dayZ_instance,[]] call server_hiveWrite;
|
|
_groupUIDs
|
|
};
|
|
//Leave
|
|
if (_event == 3) exitwith {
|
|
dayz_groupLeft = true;
|
|
(owner _player) publicVariableClient "dayz_groupLeft";
|
|
(_groupUIDs - [_playerUID])
|
|
};
|
|
//Disband
|
|
if (_event == 4) exitwith {
|
|
_name = 0; //Not needed
|
|
dayz_groupDisbanded = true;
|
|
(owner _player) publicVariableClient "dayz_groupDisbanded";
|
|
[]
|
|
};
|
|
};
|
|
|
|
//Update all group members' saved group in DB
|
|
{
|
|
_save = [_newGroup,[]] select (_event == 3 && {_x == _playerUID});
|
|
format["CHILD:204:%1:%2:%3:",_x,dayZ_instance,_save] call server_hiveWrite;
|
|
} count _groupUIDs;
|
|
|
|
//Notify group members of the change
|
|
PVDZ_groupInvite = [_event,_name];
|
|
_groupUIDs set [count _groupUIDs,_kickedUID];
|
|
{
|
|
_unit = getPlayerUID _x;
|
|
if (_unit in _groupUIDs && {_unit != _playerUID}) then {
|
|
owner _x publicVariableClient "PVDZ_groupInvite";
|
|
};
|
|
} count allUnits;
|