Ultima_Custom
Внутри папки Ultima_Custom, создаем файл:
Ultima_Custom.sqf
В файл:
Ultima_Custom.sqf
Добавляем:
Ultima_Find_Vehicles_by_Keys = call compile preprocessFileLineNumbers "Ultima_Custom\Ultima_Find_Vehicles_by_Keys.sqf";
В файл:
init.sqf
В самый низ, добавляем:
[] execVM "Ultima_Custom\Ultima_Custom.sqf";У кого уже есть ExtraRC - ПКМ
Скрытый текст
У кого нет ExtraRC - ПКМ
Скрытый текст
Внутри папки Ultima_Custom,Cоздаем файл:
Ultima_Find_Vehicles_by_Keys.sqf
Копируем код ниже, в данный файл:
if !(isNil "Ultima_Find_Vehicles_by_Keys_TMP_VAR") exitWith {systemChat "Поиск уже идет. Дождитесь завершения...";}; Ultima_Find_Vehicles_by_Keys_TMP_VAR = true; Private ["_findRadius", "_findByMapCenter", "_markers_timer", "_i", "_inv", "_keys", "_searchString", "_color", "_id", "_keyName", "_position", "_vehicleName", "_vehicleMarker", "_find", "_vehObjs", "_findID"]; _findRadius = 40000; // Радиус поиска техники по ключам. _findByMapCenter = true; // Если - true - поиск техники производится от центра карты. Если - false - поиск техники производится от позиции игрока. _markers_timer = 3; // Время в минутах, через которое необходимо очищать карту от маркеров найденой техники, после последнего поиска. for "_i" from 0 to 10 do {deleteMarkerLocal ("Ultima_Marker_VehObj_by_Key_" + (str _i));}; _inv = [player] call BIS_fnc_invString; _keys = []; { for "_i" from 1 to 2500 do { _searchString = format ["ItemKey%1%2", _x, str(_i)]; if ((_searchString in _inv)) then {_keys set [(count _keys), [_x, _i]];}; }; } forEach ["Black", "Yellow", "Blue", "Green", "Red"]; if ( (count _keys) <= 0 ) exitWith { systemChat "У Вас отсутствуют ключи к технике!"; Ultima_Find_Vehicles_by_Keys_TMP_VAR = nil; }; systemChat format["Найдено: %1 ключей.", (count _keys)]; if (_findByMapCenter) then {_vehObjs = (getMarkerPos "center") nearEntities [["LandVehicle", "Air", "Ship"], _findRadius];} else {_vehObjs = (getPos (vehicle player)) nearEntities [["LandVehicle", "Air", "Ship"], _findRadius];}; _i = 0; { _color = (_x select 0); _id = (_x select 1); _keyName = getText (configFile >> "CfgWeapons" >> (format["ItemKey%1%2", _color, _id]) >> "displayName"); switch (_color) do { case "Red" : {_id = _id + 2500;}; case "Blue" : {_id = _id + 5000;}; case "Yellow" : {_id = _id + 7500;}; case "Black" : {_id = _id + 10000;}; }; _id = str(_id); _find = false; { _findID = _x getVariable ["CharacterID", "0"]; if ( _findID == _id ) exitWith { _position = getPos _x; _vehicleName = gettext (configFile >> "CfgVehicles" >> (typeof _x) >> "displayName"); _vehicleMarker = createMarkerLocal ["Ultima_Marker_VehObj_by_Key_" + (str _i), [(_position select 0), (_position select 1)]]; _vehicleMarker setMarkerShapeLocal "ICON"; _vehicleMarker setMarkerTypeLocal "DOT"; _vehicleMarker setMarkerColorLocal "ColorOrange"; _vehicleMarker setMarkerSizeLocal [1.0, 1.0]; _vehicleMarker setMarkerTextLocal format ["Ваша техника: %1", _vehicleName]; systemChat format ["По ключу: %1, найдена техника: %2", _keyName, _vehicleName]; _find = true; _i = _i + 1; }; } forEach _vehObjs; if !(_find) then {systemChat format ["Техника для ключа: %1, отсутствует в БД!", _keyName];}; } forEach _keys; Ultima_Marker_VehObj_by_Key_Timer_Var = _markers_timer; if (isNil "Ultima_Marker_VehObj_by_Key_Timer") then { Ultima_Marker_VehObj_by_Key_Timer = true; [] spawn { Private ["_i"]; while {Ultima_Marker_VehObj_by_Key_Timer_Var > 0} do { uiSleep 60; Ultima_Marker_VehObj_by_Key_Timer_Var = Ultima_Marker_VehObj_by_Key_Timer_Var - 1; }; for "_i" from 0 to 10 do {deleteMarkerLocal ("Ultima_Marker_VehObj_by_Key_" + (str _i));}; Ultima_Marker_VehObj_by_Key_Timer = nil; }; }; Ultima_Find_Vehicles_by_Keys_TMP_VAR = nil;*Дополнительные настройки, для радиуса поиска, и точки старта поиска, находятся внутри скрипта, и прокомментированы.
**В инфистар, правки вносить не надо(по крайней мере, в моей версии, не было необходимости, что либо править - но если у Вас запрещено создание локальных маркеров для игроков, - то необходимо будет удалить данный запрет.).