Автор скрипта: 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 канале