109 lines
4.0 KiB
Plaintext
109 lines
4.0 KiB
Plaintext
/*
|
|
File: fn_checkGear.sqf
|
|
Author: KP Liberation Dev Team - https://github.com/KillahPotatoes
|
|
Date: 2017-11-22
|
|
Last Update: 2019-12-03
|
|
License: MIT License - http://www.opensource.org/licenses/MIT
|
|
|
|
Description:
|
|
Checks the players gear for blacklisted items and report these items.
|
|
Also returns if the player check was fine (true) or if he had bad items (false).
|
|
|
|
Parameter(s):
|
|
_backpack - Backpack classname of the players backpack as he entered the arsenal / load a loadout [STRING, defaults to ""]
|
|
|
|
Returns:
|
|
Player checked without findings [BOOL]
|
|
*/
|
|
// TODO
|
|
params [["_backpack", ""]];
|
|
|
|
private _return = true;
|
|
private _removedItems = [];
|
|
|
|
if !(toLower (headgear player) in KP_liberation_allowed_items) then {
|
|
_removedItems pushBack (headgear player);
|
|
removeHeadgear player;
|
|
};
|
|
if !(toLower (goggles player) in KP_liberation_allowed_items) then {
|
|
_removedItems pushBack (goggles player);
|
|
removeGoggles player;
|
|
};
|
|
if !(toLower (uniform player) in KP_liberation_allowed_items) then {
|
|
_removedItems pushBack (uniform player);
|
|
removeUniform player;
|
|
};
|
|
if !(toLower (vest player) in KP_liberation_allowed_items) then {
|
|
_removedItems pushBack (vest player);
|
|
removeVest player;
|
|
};
|
|
if (!(toLower (backpack player) in KP_liberation_allowed_items) && ((backpack player) != _backpack)) then {
|
|
_removedItems pushBack (backpack player);
|
|
removeBackpack player;
|
|
};
|
|
|
|
private _playerItems = assignedItems player;
|
|
_playerItems append ((getItemCargo (uniformContainer player)) select 0);
|
|
_playerItems append ((getItemCargo (vestContainer player)) select 0);
|
|
_playerItems append ((getItemCargo (backpackContainer player)) select 0);
|
|
_playerItems = _playerItems apply {toLower _x};
|
|
{
|
|
_removedItems pushBack _x;
|
|
player unassignItem _x;
|
|
player removeItems _x;
|
|
} forEach (((_playerItems arrayIntersect _playerItems) - KP_liberation_allowed_items) select {!([_x] call KPLIB_fnc_isRadio)});
|
|
|
|
private _playerMagazines = ((getMagazineCargo (uniformContainer player)) select 0);
|
|
_playerMagazines append ((getMagazineCargo (vestContainer player)) select 0);
|
|
_playerMagazines append ((getMagazineCargo (backpackContainer player)) select 0);
|
|
_playerMagazines = _playerMagazines apply {toLower _x};
|
|
{
|
|
_removedItems pushBack _x;
|
|
player removeMagazines _x;
|
|
} forEach ((_playerMagazines arrayIntersect _playerMagazines) - KP_liberation_allowed_items);
|
|
|
|
_removedItems append ([uniformContainer player] call KPLIB_fnc_removeWeaponCargo);
|
|
_removedItems append ([vestContainer player] call KPLIB_fnc_removeWeaponCargo);
|
|
_removedItems append ([backpackContainer player] call KPLIB_fnc_removeWeaponCargo);
|
|
|
|
private _weapons = weapons player;
|
|
_weapons = _weapons apply {toLower _x};
|
|
{
|
|
player removeWeapon _x;
|
|
_removedItems pushBack _x;
|
|
} forEach (_weapons - KP_liberation_allowed_items);
|
|
|
|
private _weaponItems = primaryWeaponItems player;
|
|
_weaponItems append primaryWeaponMagazine player;
|
|
_weaponItems = _weaponItems apply {toLower _x};
|
|
{
|
|
player removePrimaryWeaponItem _x;
|
|
_removedItems pushBack _x;
|
|
} forEach (_weaponItems - KP_liberation_allowed_items);
|
|
|
|
_weaponItems = secondaryWeaponItems player;
|
|
_weaponItems append secondaryWeaponMagazine player;
|
|
_weaponItems = _weaponItems apply {toLower _x};
|
|
{
|
|
player removeSecondaryWeaponItem _x;
|
|
_removedItems pushBack _x;
|
|
} forEach (_weaponItems - KP_liberation_allowed_items);
|
|
|
|
_weaponItems = handgunItems player;
|
|
_weaponItems append handgunMagazine player;
|
|
_weaponItems = _weaponItems apply {toLower _x};
|
|
{
|
|
player removeHandgunItem _x;
|
|
_removedItems pushBack _x;
|
|
} forEach (_weaponItems - KP_liberation_allowed_items);
|
|
|
|
_removedItems = (_removedItems arrayIntersect _removedItems) - [""];
|
|
if !(_removedItems isEqualTo []) then {
|
|
private _text = format ["[KP LIBERATION] [BLACKLIST] Found %1 at Player %2", (_removedItems), name player];
|
|
_text remoteExec ["diag_log",2];
|
|
hint format [localize "STR_BLACKLISTED_ITEM_FOUND", _removedItems joinString "\n"];
|
|
_return = false;
|
|
};
|
|
|
|
_return
|