Перейти к содержимому

DustBlue IPB Skin by CodeGame Networks

Поиск техники по ключу. (Измененный)


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 6

#1 NoNameUltima

NoNameUltima

    Администратор

  • Администраторы
  • 191 сообщений
  • ГородСанкт-Петербург

Отправлено 23 декабря 2015 - 22:23

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

#2 kisling

kisling

    Новичок

  • Проверенные
  • Pip
  • 6 сообщений

Отправлено 24 июня 2016 - 17:20

Все работает отлично! А как то можно подправить этот скрипт, что бы искал всю технику, которая числится за ключом?

#3 NoNameUltima

NoNameUltima

    Администратор

  • Администраторы
  • 191 сообщений
  • ГородСанкт-Петербург

Отправлено 25 июня 2016 - 12:14

Просмотр сообщенияkisling (24 июня 2016 - 17:20) писал:

Все работает отлично! А как то можно подправить этот скрипт, что бы искал всю технику, которая числится за ключом?

if ( _findID == _id ) exitWith
заменить на
if ( _findID == _id ) then


#4 kisling

kisling

    Новичок

  • Проверенные
  • Pip
  • 6 сообщений

Отправлено 27 июня 2016 - 01:55

Спасибо друг,очень помог! Все работает просто отлично! :)

#5 janys99

janys99

    Новичок

  • Пользователи
  • Pip
  • 1 сообщений

Отправлено 11 июля 2016 - 10:29

Скажите а почему не ищет машины на карте напф??  вызникает ошибка когда создаешь вот это У кого нет ExtraRC - ПКМ  
class ExtraRc
{
         class ItemGPS
                 {
                         class locate
                                
{
                                         text   =       "Поиск техники по ключам";
                                         script =       "[] spawn Ultima_Find_Vehicles_by_Keys;";
                                 };
                 };
};

#6 NoNameUltima

NoNameUltima

    Администратор

  • Администраторы
  • 191 сообщений
  • ГородСанкт-Петербург

Отправлено 12 июля 2016 - 21:20

Просмотр сообщенияjanys99 (11 июля 2016 - 10:29) писал:

Скажите а почему не ищет машины на карте напф??  вызникает ошибка когда создаешь вот это У кого нет ExtraRC - ПКМ  
class ExtraRc
{
class ItemGPS
{
class locate
{
text   =    "Поиск техники по ключам";
script =    "[] spawn Ultima_Find_Vehicles_by_Keys;";
};
};
};
Надо еще сам extraRC создать.
Например по данному гайду( с п1. до п.6 - п.6 включтельно)
http://s-platoon.ru/...-rc/?hl=extrarc

позже дополню тему ссылкой на extraRC

#7 КенГуру

КенГуру

    Продвинутый пользователь

  • Проверенные
  • PipPipPip
  • 42 сообщений
  • ГородЧелябинск

Отправлено 13 июля 2016 - 09:10

Спасибо, пожалуй тоже воткну в свой мод.. А то из-за разрывов порой откатывает и сложно искать технику..
С уважением, и всё такое..




Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных