private ["_allItems", "_class", "_lastIndex", "_i", "_role", "_items", "_restricted", "_primary", "_secondary", "_base", "_x", "_name"]; _allItems = []; _restricted = []; _lastRole = ""; _currentRole = ""; _class = missionConfigFile >> "CfgRespawnInventory"; _lastIndex = ((count _class) - 1); for "_i" from 0 to _lastIndex do { _role = _class select _i; _items = getArray (_role >> "restrictions"); { if (!(_x in _allItems)) then { _allItems = _allItems + [_x]; }; } forEach _items; }; while { true } do { sleep 2; _currentRole = player getVariable ["role", "none"]; if (_lastRole != _currentRole) then { _lastRole = _currentRole; _safeItems = getArray (missionConfigFile >> "CfgRespawnInventory" >> _lastRole >> "restrictions"); _restricted = (_allItems - _safeItems); }; _primary = primaryWeapon player; _secondary = secondaryWeapon player; _backpack = backpack player; _uniform = uniform player; _headgear = headgear player; { _item = _x select 0; _config = _x select 1; _command = _x select 2; _class = configName (inheritsFrom (configFile >> _config >> _item)); _base = configName (inheritsFrom (configFile >> _config >> _class)); if ((_item in _restricted) || (_class in _restricted) || (_base in _restricted)) then { call compile format["%1", _command]; _name = getText (configFile >> _config >> _item >> "displayName"); hint parseText format["Restricted
Item

--------------------
You class you have selected is not qualified to use the %1.

Make sure to play your class!", _name]; }; } forEach [ [_primary, "CfgWeapons", "player removeWeapon _item"], [_secondary, "CfgWeapons", "player removeWeapon _item"], [_backpack, "CfgBackpacks", "removeBackpack player"], [_uniform, "CfgWeapons", "removeUniform player"], [_headgear, "CfgWeapons", "removeHeadgear player"] ]; };