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


Фотография

Маркер


Лучший Ответ Schatten , 21 November 2016 - 02:09

Это можно решить запуском сценария без передачи ему аргументов. Если влом, то попробуй этот код:

Перейти к сообщению


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

#1 OFFLINE   Yami

Yami

    Рядовой

  • Пользователи
  • 15 сообщений
  • Откуда:Ru

Отправлено 20 November 2016 - 23:23

Нашел в инете скрипт,показывающий маркеры на игроках.Но надо что бы показывал только на тех,кто в группе.Вопрос:что изменить?

*/
				   
if (isDedicated) exitWith {}; // is server  
if (!isNil{aero_player_markers_pos}) exitWith {}; // already running
				   
private ["_marker","_markerText","_temp","_unit","_vehicle","_markerNumber","_show","_injured","_text","_num","_getNextMarker","_getMarkerColor","_showAllSides","_showPlayers","_showAIs","_l"];

_showAllSides=false;
_showPlayers=false;
_showAIs=false;

if(count _this==0) then {
	_showAllSides=false;
	_showPlayers=true;
	_showAIs=!isMultiplayer;
};
                         
{
	_l=toLower _x;
	if(_l in ["player","players"]) then {
		_showPlayers=true;
	};
	if(_l in ["ai","ais"]) then {
		_showAIs=true;
	};
	if(_l in ["allside","allsides"]) then {
		_showAllSides=true;
	};
} forEach _this;

aero_player_markers_pos = [0,0];
onMapSingleClick "aero_player_markers_pos=_pos;";

_getNextMarker = {
	private ["_marker"]; 
	_markerNumber = _markerNumber + 1;
	_marker = format["um%1",_markerNumber];	
	if(getMarkerType _marker == "") then {
		createMarkerLocal [_marker, _this];
	} else {
		_marker setMarkerPosLocal _this;
	};
	_marker;
};

_getMarkerColor = {	
	[(((side _this) call bis_fnc_sideID) call bis_fnc_sideType),true] call bis_fnc_sidecolor;
};

while {true} do {
	  
	waitUntil {
		sleep 0.025;
		true;
	};
	
	_markerNumber = 0; 
	
	// show players or player's vehicles
	{
		_show = false;
		_injured = false;
		_unit = _x;
		
		if(
			(
				(_showAIs && {!isPlayer _unit} && {0=={ {_x==_unit} count crew _x>0} count allUnitsUav}) ||
				(_showPlayers && {isPlayer _unit})
			) && {
				_showAllSides || side _unit==side player
			}
		) then {	
			if((crew vehicle _unit) select 0 == _unit) then {
				_show = true;
			};		
			if(!alive _unit || damage _unit > 0.9) then {
				_injured = true;
			};	  
			if(!isNil {_unit getVariable "hide"}) then {
				_show = false;
			};  
			if(_unit getVariable ["BTC_need_revive",-1] == 1) then {
				_injured = true;
				_show = false;
			};		  
			if(_unit getVariable ["NORRN_unconscious",false]) then {
				_injured = true;
			};	  			
		};
			  	 
		if(_show) then {
			_vehicle = vehicle _unit;  				  	
			_pos = getPosATL _vehicle;		  					
			_color = _unit call _getMarkerColor;  

			_markerText = _pos call _getNextMarker;						
			_markerText setMarkerColorLocal _color;	 						 				
 			_markerText setMarkerTypeLocal "c_unknown";		  			   
			_markerText setMarkerSizeLocal [0.8,0];

			_marker = _pos call _getNextMarker;			
			_marker setMarkerColorLocal _color;
			_marker setMarkerDirLocal getDir _vehicle;
			_marker setMarkerTypeLocal "mil_triangle";
			_marker setMarkerTextLocal "";			
			if(_vehicle == vehicle player) then {
				_marker setMarkerSizeLocal [0.8,1];
			} else {
				_marker setMarkerSizeLocal [0.5,0.7];
			};
			
 			if(_vehicle != _unit && !(_vehicle isKindOf "ParachuteBase")) then {			 						
				_text = format["[%1]", getText(configFile>>"CfgVehicles">>typeOf _vehicle>>"DisplayName")];
				if(!isNull driver _vehicle) then {
					_text = format["%1 %2", name driver _vehicle, _text];	
				};							 						
				
				if((aero_player_markers_pos distance getPosATL _vehicle) < 50) then {
					aero_player_markers_pos = getPosATL _vehicle;
					_num = 0;
					{
						if(alive _x && isPlayer _x && _x != driver _vehicle) then {						
							_text = format["%1%2 %3", _text, if(_num>0)then{","}else{""}, name _x];
							_num = _num + 1;
						};						
					} forEach crew _vehicle; 
				} else { 
					_num = {alive _x && isPlayer _x && _x != driver _vehicle} count crew _vehicle;
					if (_num>0) then {					
						if (isNull driver _vehicle) then {
							_text = format["%1 %2", _text, name (crew _vehicle select 0)];
							_num = _num - 1;
						};
						if (_num>0) then {
							_text = format["%1 +%2", _text, _num];
						};
					};
				};	 					
			} else {
				_text = name _x;			
			};
			_markerText setMarkerTextLocal _text;
		};
		
	} forEach allUnits;


	// show player controlled uavs
	{
		if(isUavConnected _x) then {	
			_unit=(uavControl _x) select 0;
			if(
				(				
					(_showAIs && {!isPlayer _unit}) || 
					(_showPlayers && {isPlayer _unit})
				) && {
					_showAllSides || side _unit==side player
				}
			) then {
				_color = _x call _getMarkerColor;								  										  				
				_pos = getPosATL _x;
				
				_marker = _pos call _getNextMarker;			
				_marker setMarkerColorLocal _color;
				_marker setMarkerDirLocal getDir _x;
				_marker setMarkerTypeLocal "mil_triangle";			
				_marker setMarkerTextLocal "";
				if(_unit == player) then {
					_marker setMarkerSizeLocal [0.8,1];
				} else {
					_marker setMarkerSizeLocal [0.5,0.7];
				};
									  		
				_markerText = _pos call _getNextMarker;	
				_markerText setMarkerColorLocal _color;	   
				_markerText setMarkerTypeLocal "c_unknown";
				_markerText setMarkerSizeLocal [0.8,0];
				_markerText setMarkerTextLocal format["%1 [%2]", name _unit, getText(configFile>>"CfgVehicles">>typeOf _x>>"DisplayName")];	
			};
		};
	} forEach allUnitsUav; 
	
	
	

	_markerNumber = _markerNumber + 1;
	_marker = format["um%1",_markerNumber];	
	while {(getMarkerType _marker) != ""} do {
		deleteMarkerLocal _marker;
		_markerNumber = _markerNumber + 1;
		_marker = format["um%1",_markerNumber];
	};
	 
};


  • 0

#2 OFFLINE   Schatten

Schatten

    Капитан

  • Пользователи
  • 1792 сообщений
  • Откуда:Тбилиси, Грузия

Отправлено 21 November 2016 - 00:03

Попробовать в 68-й строке во второе условие ИЛИ дописать это:

&& {_unit in (units (group player))}

  • 0

#3 OFFLINE   Yami

Yami

    Рядовой

  • Пользователи
  • 15 сообщений
  • Откуда:Ru

Отправлено 21 November 2016 - 00:34

Ничего не изменилось.

Кхм,возможно я неправильно сформулировал.Мне надо,что бы маркеры на карте игрок видел только на тех,кто в его группе.Возможно ли вообще так переделать данный скрипт?И может у кого есть готовый?Заранее спасибо.


  • 0

#4 OFFLINE   Schatten

Schatten

    Капитан

  • Пользователи
  • 1792 сообщений
  • Откуда:Тбилиси, Грузия

Отправлено 21 November 2016 - 00:44

Как сценарий запускается?
Если не передавать аргументы, то должно работать, поскольку полностью условие после ИЛИ будет таким:

(_showPlayers && {isPlayer _unit} && {_unit in (units (group player))})

Т. е. если разрешено отображение игроков, юнит является игроком и юнит входит в группу игрока.


  • 0

#5 OFFLINE   Yami

Yami

    Рядовой

  • Пользователи
  • 15 сообщений
  • Откуда:Ru

Отправлено 21 November 2016 - 01:18

А можешь полностью отредактированный код скинуть?Просто как минимум не исключено что я делаю что-то не так.


  • 0

#6 OFFLINE   Schatten

Schatten

    Капитан

  • Пользователи
  • 1792 сообщений
  • Откуда:Тбилиси, Грузия

Отправлено 21 November 2016 - 01:39


Сообщение отредактировал Schatten: 21 November 2016 - 02:10

  • 0

#7 OFFLINE   Yami

Yami

    Рядовой

  • Пользователи
  • 15 сообщений
  • Откуда:Ru

Отправлено 21 November 2016 - 01:59

По-прежнему вижу тех кто не в группе.


  • 0

#8 OFFLINE   Schatten

Schatten

    Капитан

  • Пользователи
  • 1792 сообщений
  • Откуда:Тбилиси, Грузия

Отправлено 21 November 2016 - 02:09   Лучший Ответ

Это можно решить запуском сценария без передачи ему аргументов. Если влом, то попробуй этот код:


  • 0

#9 OFFLINE   Yami

Yami

    Рядовой

  • Пользователи
  • 15 сообщений
  • Откуда:Ru

Отправлено 21 November 2016 - 02:23

Неа,опять все так же.

Мне то не влом,просто я бум-бум в этом, от слова совсем.


  • 0

#10 OFFLINE   Schatten

Schatten

    Капитан

  • Пользователи
  • 1792 сообщений
  • Откуда:Тбилиси, Грузия

Отправлено 21 November 2016 - 02:48


Если ты этот код нашёл, то как его запускаешь?

Сообщение отредактировал Schatten: 21 November 2016 - 02:51

  • 0

#11 OFFLINE   Yami

Yami

    Рядовой

  • Пользователи
  • 15 сообщений
  • Откуда:Ru

Отправлено 21 November 2016 - 02:55

Как и любой скрипт,в папку с миссией и через редактор.
А нашел тут - 

Пожалуйста Войдите или Зарегистрируйтесь чтобы увидеть скрытое содержание


  • 0

#12 OFFLINE   Schatten

Schatten

    Капитан

  • Пользователи
  • 1792 сообщений
  • Откуда:Тбилиси, Грузия

Отправлено 21 November 2016 - 03:01

Последний вариант работает?

 

Как и любой скрипт,в папку с миссией и через редактор.

Какой командой?


  • 0

#13 OFFLINE   Yami

Yami

    Рядовой

  • Пользователи
  • 15 сообщений
  • Откуда:Ru

Отправлено 21 November 2016 - 03:04

"Играть в сетевую игру"


  • 0

#14 OFFLINE   Schatten

Schatten

    Капитан

  • Пользователи
  • 1792 сообщений
  • Откуда:Тбилиси, Грузия

Отправлено 21 November 2016 - 21:26

При запуске сценария передавать пустой массив.


Сообщение отредактировал Schatten: 21 November 2016 - 21:28

  • 0

#15 OFFLINE   Yami

Yami

    Рядовой

  • Пользователи
  • 15 сообщений
  • Откуда:Ru

Отправлено 21 November 2016 - 21:43

Заработало,оказывается это я чутка не так делал.Спасибо.

Как ты уже наверное догадался,скрипты я могу только копировать и вставлять).Не мог бы помочь вставить кнопку(бинд) в этот код(если это вообще возможно)

/*
	Добавляет юнитам экшен "Убрать оружие"
	
	auhtor: SteelRat
*/

_unit = _this;

//	Убрать оружие
_unit addAction [localize "a3units_str_Hide_weapon", 
	{
		_callerUnit	= _this select 1;
		
		_callerUnit action ["SwitchWeapon", _callerUnit, _callerUnit, 100];
		
		if !(primaryWeapon _callerUnit == "") then {
			_callerUnit setUserActionText [actionSelectPrimaryWeaponID, format ["%1 %2", localize "a3units_str_weapon", ((configfile/"CfgWeapons"/(primaryWeapon _callerUnit)/"displayName") call BIS_fnc_getCfgData)]];
		};
	},
	"",0,false,true,"",
	"(_this == _target) && (vehicle _this == _this) && !(currentWeapon _this == '')"
];

//	Добавить экшен выбирающий оружие размещённое в Primary weapon слоте
actionSelectPrimaryWeaponID = _unit addAction ["", 
	{
		_callerUnit	= _this select 1;
		
		_callerUnit selectWeapon primaryWeapon _callerUnit;
	},
	"",0,false,true,"",
	"(_this == _target) && (vehicle _this == _this) && (currentWeapon _this == '') && !(primaryWeapon _this == '')"
];

  • 0




Яндекс.Метрика