Jump to content


Photo

Вопросы по скриптингу

Arma3 как плотформа для созда Скритпы

  • Please log in to reply
1486 replies to this topic

#261 OFFLINE   SteelRat

SteelRat

    Полковник

  • Пользователи
  • 3241 posts
  • Откуда:РФ

Posted 26 August 2015 - 20:50

 

Но все таки хотелось бы 10 метров т.к. 5 метров от Камаза неудобно, остается мало места для осмотра игрока, ай ладно, не парьтесь!!! коробку поставлю.

 

Зы: а если весь этот код пихнуть и инит Камаза и поменять с 5 на 10 , будет работать?

 

Если в лом исправить одну строку в ванильной функции, и назвать её по своему, типа

myTag_fnc_arsenal

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

Подходим сзади, и отовариваемся!


  • 0

#262 OFFLINE   susamin

susamin

    Сержант

  • Пользователи
  • 245 posts

Posted 26 August 2015 - 21:06

Не лень ! Я не знаю как!
  • 0

#263 OFFLINE   Schatten

Schatten

    Капитан

  • Пользователи
  • 1831 posts

Posted 26 August 2015 - 22:28

Не лень ! Я не знаю как!

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


 
Можно попробовать этот код:
_boxes = missionNamespace getVariable ["bis_fnc_arsenal_boxes", []];

{
	_actionId = _x getVariable ["bis_fnc_arsenal_action", -1];

	if (_actionId != -1) then {
		_x removeAction _actionId;

		_actionId = _x addAction [
			localize "STR_A3_Arsenal",
			{
				_box = _this select 0;
				_unit = _this select 1;

				["Open", [nil, _box]] call BIS_fnc_arsenal;
			},
			nil,
			6,
			true,
			false,
			"",
			"
				_cargo = _target getVariable ['bis_addVirtualWeaponCargo_cargo', [[], [], [], []]];

				if (({(count _x) > 0} count _cargo) == 0) then {
					_target removeAction (_target getVariable ['bis_fnc_arsenal_action', -1]);

					_target setVariable ['bis_fnc_arsenal_action', nil];
				};

				_condition = _target getVariable ['bis_fnc_arsenal_condition', {true}];

				(alive _target) and {call _condition}
			"
		];

		_x setVariable ["bis_fnc_arsenal_action", _actionId];
	};
}
forEach _boxes;
Этот код у всех объектов, которым добавлено действие запуска арсенала, удаляет это действие и добавляет аналогичное, только без "_target distance _this < 5".
  • 0

#264 OFFLINE   SteelRat

SteelRat

    Полковник

  • Пользователи
  • 3241 posts
  • Откуда:РФ

Posted 27 August 2015 - 00:56

Отличное предложение!


  • 0

#265 OFFLINE   Schatten

Schatten

    Капитан

  • Пользователи
  • 1831 posts

Posted 27 August 2015 - 01:01

Отличное предложение!

Ну, я бы всё-таки так не делал, а переписал бы функцию BIS_fnc_arsenal. :)


  • 0

#266 OFFLINE   susamin

susamin

    Сержант

  • Пользователи
  • 245 posts

Posted 09 September 2015 - 16:19

Какой командой отключить усталость у бойца?

 

Нашел команду enableFatigue работает, но надо впихнуть ее в 50 солдат. Написал код 

{ _x enableFatigue false; } forEach allunits; 

но надо сделать это не всем юнитам а только стороне west, но я не могу найти такую команду.


Edited by susamin, 09 September 2015 - 16:45.

  • 0

#267 OFFLINE   HarryWorner

HarryWorner

    Лейтенант

  • Модераторы
  • 1035 posts

Posted 09 September 2015 - 16:48

susamin

{ if(side _x == west)then{ _x enableFatigue false} } forEach allunits;

  • 0

#268 OFFLINE   SteelRat

SteelRat

    Полковник

  • Пользователи
  • 3241 posts
  • Откуда:РФ

Posted 09 September 2015 - 18:37

 

Отличное предложение!

Ну, я бы всё-таки так не делал, а переписал бы функцию BIS_fnc_arsenal. :)

 

 

По идее ваше предложение не плохо само по себе.

Модифицировать не всегда удобно и к месту, так что ваш вариант однозначно в копилку.


Edited by SteelRat, 09 September 2015 - 18:44.

  • 0

#269 OFFLINE   vlad333000

vlad333000

    Полковник

  • Пользователи
  • 3224 posts
  • Откуда:Кострома

Posted 08 October 2015 - 20:30

Вопрос назрел: кто-нибудь знает как скриптом правильно "открыть" меню паузы? А то мне пока что удалось его только открыть с работающей дебаг-консолью и кнопкой продолжить. Все остальное не фурычит


Да! Да! Да! Спустя с*к* почти пол года, я нашел как это сделать, и это оказалось пздц как легко!!!! Вот код, если кому нужно:
findDisplay 46 createDisplay "RscDisplayInterrupt"
PS Работает где-угодно: хоть в редакторе, хоть в SP, хоть в MP (Так же появляется и дебаг-консоль, если разрешена)

Edited by vlad333000, 08 October 2015 - 21:31.

  • 0

#270 OFFLINE   blade

blade

    Ефрейтор

  • Пользователи
  • 53 posts

Posted 13 October 2015 - 05:52

Хочу немного оптимизировать строчку, объединив несколько условий в один массив, но у меня не получается.
Смысл скрипта в том, что он ждёт пока указанные юниты не окажутся в зоне триггера, после чего посылает их дальше по делам.

Это то, что я пытаюсь состряпать, но у меня не работает.
  waitUntil { [man1, man2, man3] in list trig1 };
  man1 assignAsCommander sokor; man2 assignAsDriver sokor; man3 assignAsGunner sokor;
  [man1, man2, man3] orderGetIn true;

В таком виде строчка работает как надо, но условие получается длинное.
  waitUntil { man1 in list trig1 and man2 in list trig1 and man3 in list trig1 };
  man1 assignAsCommander sokor; man2 assignAsDriver sokor; man3 assignAsGunner sokor;
  [man1, man2, man3] orderGetIn true;

Да и я давно уже хочу научиться объединять такие условия в массивы, а то порой надо отслеживать по 5-10 объектов и условия получаются очень длинными.


Edited by blade, 13 October 2015 - 06:24.

  • 0

#271 OFFLINE   blade

blade

    Ефрейтор

  • Пользователи
  • 53 posts

Posted 13 October 2015 - 06:22

И ещё вопрос.
Как отследить появление солдата в зоне триггера если этот солдат заехал туда сев перед этим в машину?

То есть условие man1 in thislist вписанное в триггер не работает если man1 заехал в триггер на машине.


Edited by blade, 13 October 2015 - 06:25.

  • 0

#272 OFFLINE   vlad333000

vlad333000

    Полковник

  • Пользователи
  • 3224 posts
  • Откуда:Кострома

Posted 13 October 2015 - 09:55

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

- возвращается массив с элементами, которые есть в обоих массивах, а потом останется подсчитать их командой

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

и сравнить полученное число, с необходимым кол-вом в вашем случае "== 3"
Во втором случае - пройтись по всем объектам в тригере, найти технику и в этой технике найти вашего подопытного в экипаже

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


  • 0

#273 OFFLINE   Schatten

Schatten

    Капитан

  • Пользователи
  • 1831 posts

Posted 13 October 2015 - 12:30

Как отследить появление солдата в зоне триггера если этот солдат заехал туда сев перед этим в машину?

То есть условие man1 in thislist вписанное в триггер не работает если man1 заехал в триггер на машине.

А что, разве триггер, настроенный на отслеживание игрока, не различает, в машине он или нет?


  • 0

#274 OFFLINE   vlad333000

vlad333000

    Полковник

  • Пользователи
  • 3224 posts
  • Откуда:Кострома

Posted 13 October 2015 - 13:03

Как отследить появление солдата в зоне триггера если этот солдат заехал туда сев перед этим в машину?

То есть условие man1 in thislist вписанное в триггер не работает если man1 заехал в триггер на машине.

А что, разве триггер, настроенный на отслеживание игрока, не различает, в машине он или нет?
да, только триггер синхронизированный возвращает в лист седиячих. Все остальные возвращают технику + не сидячих, а дальше сам выковыриваешь сидячих из техники
  • 0

#275 OFFLINE   blade

blade

    Ефрейтор

  • Пользователи
  • 53 posts

Posted 17 October 2015 - 16:40

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

- возвращается массив с элементами, которые есть в обоих массивах, а потом останется подсчитать их командой

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

и сравнить полученное число, с необходимым кол-вом в вашем случае "== 3"
Во втором случае - пройтись по всем объектам в тригере, найти технику и в этой технике найти вашего подопытного в экипаже

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

Для меня это пока кажется сложновато ))
У меня получилось выйти из положения таким образом -  50>man1 distance объект в центре триггера

Ваш пример обязательно узучу когда созрею  ))


  • 0

#276 OFFLINE   Schatten

Schatten

    Капитан

  • Пользователи
  • 1831 posts

Posted 17 October 2015 - 17:06

У меня получилось выйти из положения таким образом -  50>man1 distance объект в центре триггера

(man1 distance thisTrigger) < 50

Кто такой man1? Игрок, управляемый ИИ?


  • 1

#277 OFFLINE   blade

blade

    Ефрейтор

  • Пользователи
  • 53 posts

Posted 17 October 2015 - 17:17

 

Кто такой man1? Игрок, управляемый ИИ?

 

По разному. В моём случае man1 это конкретное имя конкретного солдана, а уж вселится в него игрок или он останется под ИИ, это как получится. 
Тестил на работоспособность я будучи в теле этого солдата. У меня distance сработала даже через транспорт.


Спасибо за пример! (man1 distance thisTrigger) < 50, не знал что так можно ))


Edited by blade, 17 October 2015 - 17:21.

  • 0

#278 OFFLINE   Schatten

Schatten

    Капитан

  • Пользователи
  • 1831 posts

Posted 17 October 2015 - 17:41

В моём случае man1 это конкретное имя конкретного солдана, а уж вселится в него игрок или он останется под ИИ, это как получится.

А что должно произойти, если man1 окажется в зоне действия триггера?


Edited by Schatten, 17 October 2015 - 17:44.

  • 0

#279 OFFLINE   blade

blade

    Ефрейтор

  • Пользователи
  • 53 posts

Posted 17 October 2015 - 19:40

А что должно произойти, если man1 окажется в зоне действия триггера?

 

 

По сюжету, когда персонаж оказывается в определённом месте он связывается по рации и его выходят встречать пара разведчиков.
Для реализации мне не обязательно действовать через зону триггера, я отделался дистанцией до разведчиков  ))


  • 0

#280 OFFLINE   Schatten

Schatten

    Капитан

  • Пользователи
  • 1831 posts

Posted 17 October 2015 - 19:52

По сюжету, когда персонаж оказывается в определённом месте он связывается по рации и его выходят встречать пара разведчиков.
Для реализации мне не обязательно действовать через зону триггера, я отделался дистанцией до разведчиков  ))

Тогда можно настроить триггер на слежение за этим man1 и поменять условие активации на this. В этом случае триггер сработает, если man1 окажется в его зоне действия. Однако триггер нужно настроить командами на сервере, хотя создать можно в редакторе.


  • 0




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