Отбираем тепловизоры (или ещё что)

Автор скрипта: BlackTok[BT] (участник нашего Discord)

Итак. Набросал скрипт проверку и удаления у игрока Тепловизора и прицела с тепловизором.
Первая часть — это сама проверка на наличие тепловизора.
Вторая часть — условие для начала проверки. В моем случае при закрытии инвентаря.

Так же можно сделать при подборе предмета с земли. Либо вообще через while {} do {} (что увеличит нагрузку на сервер) или же как вам больше понравится.
Создаем файл, например teplak.sqf и помещаем в него код проверки:

_player = _this select 0;

//список тепловизоров
_teplak1 = "NVGogglesB_grn_F";
_teplak2 = "NVGogglesB_blk_F";
_teplak3 = "NVGogglesB_gry_F";

//список прицелов с тепловизором
_pricel1 = "optic_Nightstalker";

_items = assignedItems _player;
_pricel = (primaryWeaponItems _player) select 2;

//проверка тепловизора
if (_teplak1 in _items) then
{
_player unlinkItem _teplak1;
hint "Тепловизоры запрещены";
}
else
{
if (_teplak2 in _items) then
{
_player unlinkItem _teplak2;
hint "Тепловизоры запрещены";
}
else
{
if (_teplak3 in _items) then
{
_player unlinkItem _teplak3;
hint "Тепловизоры запрещены";
};
};
};

//проверка прицела с тепловизором
if (_pricel1 == _pricel) then
{
_player removePrimaryWeaponItem _pricel1;
hint "Прицелы с тепловизором запрещены";
};

В init.sqf добавляем условие для проверки

sleep 1;
fnc_teplak = compile preprocessFile "teplak.sqf";

//запускаем проверку при закрытии инвентаря игроком
player addEventHandler ["InventoryClosed",
{
_player = _this select 0;
[_player] call fnc_teplak;
}];

Правка от kkcat (участник нашего Discord)

Тот же скрипт, но сделан проще через массив. Массив можно дополнить

_player = _this select 0; 

//список тепловизоров 
_twp = ["nvgogglesb_grn_f","nvgogglesb_blk_f","nvgogglesb_gry_f"]; 

//список прицелов с тепловизором 
_pricel1 = "optic_Nightstalker"; 

_items = []; 
_pricel = (primaryWeaponItems _player) select 2; 

//проверка тепловизора 
{ 
_items pushback toLower(_x); 
} forEach (assignedItems player); 

{ 
if (_x in _items) exitWith { 
_player unlinkItem _x; 
hint "Тепловизоры запрещены"; 
}; 
} forEach _twp; 


//проверка прицела с тепловизором 
if (_pricel1 == _pricel) then 
{ 
_player removePrimaryWeaponItem _pricel1; 
hint "Прицелы с тепловизором запрещены"; 
};

Обсудить этот метод можно в нашем Discord канале