Jump to content


Photo

Тушинский таймер


  • Please log in to reply
9 replies to this topic

#1 OFFLINE   Александр Муслаков

Александр Муслаков

    Рядовой

  • Пользователи
  • 5 posts
  • Откуда:Санкт-Петербург

Posted 30 July 2017 - 02:32

Доброй ночи (в данное время 1:24 МСК, 30.07.2017)

Мне нужна помощь со скриптом.

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

То-есть нужен такой же скрипт как и на тушино только без особого дизайна.

Как это выглядит в игре:

1. Игрок зашёл в игру.

2. Игрок видит таймер (00:15:00) -> 15 минут. Пошёл отсчёт 15-ти минут.

3. Игрок пытается выйти из триггера и его телепортирует назад на точку респавна.

4. Игрок может сидеть в любой технике но если он уйдёт за триггер на этой технике, техника пропадёт а игрока телепортирует назад на точку респавна.

5. Таймер не должен исчезать после того как игрок заходит в инвентарь, арсенал, садиться в технику и т.п.
6. Таймер закончился, вместо таймера появился текст "СТАРТ!", прозвучал звук и игроки теперь могут выходить из своих триггеров и приступать к своим задачам.


  • 0

#2 OFFLINE   Schatten

Schatten

    Капитан

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

Posted 30 July 2017 - 12:49

Александр Муслаков, насчёт таймера не подскажу, а вот насчёт триггера могу предложить такую функцию:

#define	MARKERS [ \
	"marker1", \
	"marker2", \
	... \
]
#define	TRIGGER_HEIGHT 50

private ["_marker", "_markerSize", "_trigger"];

_marker = "";
_trigger = objNull;

{
	if (player inArea _x) exitWith {
		_marker = _x;
	};
} forEach MARKERS;

if ((_marker == "") or {!((markerShape _marker) in ["ELLIPSE", "RECTANGLE"])}) exitWith {_trigger};

_trigger = createTrigger ["EmptyDetector", getMarkerPos _marker, false];

_trigger setTriggerActivation ["VEHICLE", "NOT PRESENT", true];

_markerSize = getMarkerSize _marker;

_trigger setTriggerArea [
	_markerSize select 0,
	_markerSize select 1,
	markerDir _marker,
	(markerShape _marker) == "RECTANGLE",
	TRIGGER_HEIGHT / 2
];
_trigger setTriggerStatements [
	"this",
	"
		_vehicle = vehicle player;

		if (_vehicle != player) then {
			if ((effectiveCommander _vehicle) == player) then {
				{moveOut _x;} forEach (crew _vehicle);

				deleteVehicle _vehicle;
			} else {
				moveOut player;
			};
		};

		player setVehiclePosition [
			getPosASL thisTrigger,
			[],
			selectMin ((triggerArea thisTrigger) select [0, 2]),
			'NONE'
		];
	",
	""
];

_trigger triggerAttachVehicle [player];

_trigger

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


Edited by Schatten, 30 July 2017 - 13:14.

  • 0

#3 OFFLINE   Александр Муслаков

Александр Муслаков

    Рядовой

  • Пользователи
  • 5 posts
  • Откуда:Санкт-Петербург

Posted 31 July 2017 - 04:14

Александр Муслаков, насчёт таймера не подскажу, а вот насчёт триггера могу предложить такую функцию:

#define	MARKERS [ \
	"marker1", \
	"marker2", \
	... \
]
#define	TRIGGER_HEIGHT 50

private ["_marker", "_markerSize", "_trigger"];

_marker = "";
_trigger = objNull;

{
	if (player inArea _x) exitWith {
		_marker = _x;
	};
} forEach MARKERS;

if ((_marker == "") or {!((markerShape _marker) in ["ELLIPSE", "RECTANGLE"])}) exitWith {_trigger};

_trigger = createTrigger ["EmptyDetector", getMarkerPos _marker, false];

_trigger setTriggerActivation ["VEHICLE", "NOT PRESENT", true];

_markerSize = getMarkerSize _marker;

_trigger setTriggerArea [
	_markerSize select 0,
	_markerSize select 1,
	markerDir _marker,
	(markerShape _marker) == "RECTANGLE",
	TRIGGER_HEIGHT / 2
];
_trigger setTriggerStatements [
	"this",
	"
		_vehicle = vehicle player;

		if (_vehicle != player) then {
			if ((effectiveCommander _vehicle) == player) then {
				{moveOut _x;} forEach (crew _vehicle);

				deleteVehicle _vehicle;
			} else {
				moveOut player;
			};
		};

		player setVehiclePosition [
			getPosASL thisTrigger,
			[],
			selectMin ((triggerArea thisTrigger) select [0, 2]),
			'NONE'
		];
	",
	""
];

_trigger triggerAttachVehicle [player];

_trigger

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

Я буду благодарен если ты доработаешь систему с таймером. С другого форума (arma.at.ua) мне помог знаток под ником "Slon" но после многих изменений ему надоело помогать (я и сам понимаю что постоянно переписывать один и тот же скрипт - сложно)

Вот ссылка на скрипт: 

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


 


  • 0

#4 OFFLINE   vlad333000

vlad333000

    Полковник

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

Posted 31 July 2017 - 13:39

Александр Муслаков, берете скачиваете тушинскую сборку или любую другую (Почти во всех них используется плфторма Atrium, этот таймер в этой платформе), ищите нужные .pbo распаковывайте и ищите файл фриз-таймера, по своему опыту скажу что он вполне себе самостоятельный и для него не нужна платформа целиком

Edited by vlad333000, 31 July 2017 - 13:40.

  • 0

#5 OFFLINE   Александр Муслаков

Александр Муслаков

    Рядовой

  • Пользователи
  • 5 posts
  • Откуда:Санкт-Петербург

Posted 31 July 2017 - 17:33

Александр Муслаков, берете скачиваете тушинскую сборку или любую другую (Почти во всех них используется плфторма Atrium, этот таймер в этой платформе), ищите нужные .pbo распаковывайте и ищите файл фриз-таймера, по своему опыту скажу что он вполне себе самостоятельный и для него не нужна платформа целиком

Проблема в том, что я не знаю какие именно есть и нужны PBO мне. Их там может быть несколько, а я возьму например... один.


  • 0

#6 OFFLINE   vlad333000

vlad333000

    Полковник

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

Posted 31 July 2017 - 21:49

Александр Муслаков, если не изменяет мне память то он будет называться "A3A_core"
  • 0

#7 OFFLINE   Александр Муслаков

Александр Муслаков

    Рядовой

  • Пользователи
  • 5 posts
  • Откуда:Санкт-Петербург

Posted 01 August 2017 - 22:27

Александр Муслаков, если не изменяет мне память то он будет называться "A3A_core"

Не могу найти эту тушинскую сборку :C
Захожу на сайт тушино и там не ясно что именно и где скачать...


  • 0

#8 OFFLINE   BlackGM

BlackGM

    Рядовой

  • Пользователи
  • 1 posts
  • Откуда:Russia
  • Отряд:-

Posted 11 September 2017 - 11:34

 

Александр Муслаков, если не изменяет мне память то он будет называться "A3A_core"

Не могу найти эту тушинскую сборку :C
Захожу на сайт тушино и там не ясно что именно и где скачать...

 

Здравия желаю. Тушинскую сборку можно загрузить с официального сайта. Вкладка "Требование к играм на ArmA III". Далее, будет окно с надписью Актуальные Аддоны для Тушино.(Торрент) -( предоставил [Katastrofa]

А сразу после

=Скачать при помощи торрента=
И ссылка, собственно, на торрент файл буквально на следующей строке. Надеюсь, помог вам.


  • 0

#9 OFFLINE   Chekist1918

Chekist1918

    Рядовой

  • Пользователи
  • 3 posts
  • Откуда:Подольск

Posted 15 September 2019 - 18:45

Народ, подскажите пожалуйста что прописать в условии триггера. Создаю миссию со след. задачей - нужно доставить не меньше 3 ящиков со стингером (всего 5),в один из двух маркеров на выбор. Ну вообщем при попадании минимум трех миссия заканчивалась победой стороны которая должна доставить их.


  • 0

#10 OFFLINE   Schatten

Schatten

    Капитан

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

Posted 15 September 2019 - 21:05

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


  • 0




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