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;
*Дополнительные настройки, для радиуса поиска, и точки старта поиска, находятся внутри скрипта, и прокомментированы.**В инфистар, правки вносить не надо(по крайней мере, в моей версии, не было необходимости, что либо править - но если у Вас запрещено создание локальных маркеров для игроков, - то необходимо будет удалить данный запрет.).











