Перейти к публикации
Поиск в
  • Дополнительно...
Искать результаты, содержащие...
Искать результаты в...
  • Нужна помощь?

    Создайте тему в соответствующем разделе
    Не нужно писать всё в чат!
  • Загляните на торговую площадку

    Там вы можете купить
    всё что касается игровых серверов
  • Не хотите бан?

    Пожалуйста, ознакомьтесь с нашими правилами
    Не нарушайте порядок!
  • Продаёте или покупаете?

    Пользуйтесь услугами гаранта
    Мы сделаем вашу сделку безопасной
  • 0
ka3ant1p

исключения для BIS_fnc_findSafePos

могу ли я как то задать исключения при использовании функции BIS_fnc_findSafePos???
к примеру я спавню миссию _position = [getMarkerPos "center",0,5500,10,0,2000,0] call BIS_fnc_findSafePos;
как внести исключения по координатам и радиусе где ее не должно спавнить даже при том что оно соответствует параметрам [getMarkerPos "center",0,5500,10,0,2000,0]???

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Рекомендованные сообщения

  • 0
 

Начни с простого, а то арма и ее работа с массивами мне много крови попортила.

 

safePositions = [
[4880.2402, 9699.0859,  50]
];

 

{_distance = [(_x select 0),(_x select 1),0] distance _posit;
if (_distance < (_x select 2)) exitWith {_Safepos = true;};
} forEach safePositions;

 

или так

 

 

{_distance = [4880.2402, 9699.0859,0] distance _posit;
if (_distance < 50) exitWith {_Safepos = true;};
} forEach [0];

 

В общем сначала убедится что кусок кода рабочий, а потом уже рюшечки прикручивать.

Изменено пользователем Golgofinyanin (история изменений)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
MagicByte MagicByte MagicByte
  • 0

Не работает =(
При чем я вообще не отстреливаю почему....
Вот пробовал и так:
 

private ["_triger","_position","_type","_safePos","_distance","_safePositions"];
		_triger = _this select 0;
titleText ["Начало работы скрипта", "PLAIN DOWN", 1];	

_safePositions = [
[4880.2402, 9699.0859]
];


	for "_i" from 1 to 10 do {
		_position = [(getPosATL _triger), 0, 20, 10, 0, 2000, 0] call BIS_fnc_findSafePos;
		titleText ["Позиция получена", "PLAIN DOWN", 1];	
		
		{_distance = [(_x select 0),(_x select 1),0] distance _position;
			titleText ["Расстояние замеряно", "PLAIN DOWN", 1];
			if (_distance < 10) exitWith {_safePos = true; titleText ["Попадение в сейфзону", "PLAIN DOWN", 1];};
		} forEach _safePositions;
		
			titleText ["Начинается проверка", "PLAIN DOWN", 1];
			if (_safePos) then {
				titleText ["Добавление цикла", "PLAIN DOWN", 1];
			} else {
				titleText ["Спаун", "PLAIN DOWN", 1];
			};
		};

и так:
 

private ["_triger","_position","_type","_safePos","_distance"];
		_triger = _this select 0;
titleText ["Начало работы скрипта", "PLAIN DOWN", 1];	

	for "_i" from 1 to 10 do {
		_position = [(getPosATL _triger), 0, 20, 10, 0, 2000, 0] call BIS_fnc_findSafePos;
		titleText ["Позиция получена", "PLAIN DOWN", 1];	
		
		{_distance = [4880.2402, 9699.0859, 0] distance _position;
			titleText ["Расстояние замеряно", "PLAIN DOWN", 1];
			if (_distance < 10) exitWith {_safePos = true; titleText ["Попадение в сейфзону", "PLAIN DOWN", 1];};
		} forEach [0];
		
			titleText ["Начинается проверка", "PLAIN DOWN", 1];
			
			if (_safePos) then {
				titleText ["Добавление цикла", "PLAIN DOWN", 1];
			} else {
				titleText ["Спаун", "PLAIN DOWN", 1];
			};
		};

		

При чем проверку пробовал делать в том числе if (!_safePos), результат не меняется, во всех случаях выбивает сообщение "Начинается проверка", если после блока добавить выдачу текса - то его выдает, то есть тупо пропускает этот блок с проверкой непонятно почему

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
  • 0

все нашел проблему =)
Я это делал в новой миссии через редактор, а там не работают бис функции, которые я забыл скомпилировать =)
Ну и помимо всего нужно было задавать изначальное значение для _safePos так как если оно не попало в диапазон позиций то у него просто _safePos  отсутсвует как таковое

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
  • 0
 

попробуй в самом верху добавить _safePos = false; потому что если в цикле _safePos не получает труе то переменная не понятно о чем и наверно из-за этого и не срабатывает if (!_safePos).

 

и попробуй в _distance = [4880.2402, 9699.0859, 0] distance _position; поигратся с _position задай ей конкретные координаты сам.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
  • 0

 

 

попробуй в самом верху добавить _safePos = false; потому что если в цикле _safePos не получает труе то переменная не понятно о чем и наверно из-за этого и не срабатывает if (!_safePos).

 

и попробуй в _distance = [4880.2402, 9699.0859, 0] distance _position; поигратся с _position задай ей конкретные координаты сам.

Я же говорю уже так и сделал и все заработало =)

Я просто значение каждой переменной выводил в хинт и так обнаружил где проблема, ну и с сейфПос тоже попробовал добавить начальное значение что бы отследить как изменяется

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
  • 0
 

да я просто пока писал, ты уже ответил)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас

×
×
  • Создать...

Важная информация

Используя этот сайт, вы автоматически обязуетесь соблюдать наши Правила и Политика конфиденциальности.
Чтобы сделать этот веб-сайт лучше, мы разместили cookies на вашем устройстве. Вы можете изменить свои настройки cookies, в противном случае мы будем считать, что вы согласны с этим.

Поддержка