нужно что бы появился один или несколько из поставленных объектов, допустим нужно доставить машину с из точки А в точку В, а этих машин на карте поставлены в редакторе 10 штук, как сделать что бы при старте появилась одна или несколько?
Рандом
#1 OFFLINE
Отправлено 26 July 2017 - 18:23
#2 OFFLINE
Отправлено 29 July 2017 - 17:07
машин на карте поставлены в редакторе 10 штук, как сделать что бы при старте появилась одна или несколько?
Код написать.
Думаю, лучше сделать не так, чтобы тачки появились, а наоборот -- были скрыты ненужные. Например:
#define VEHICLE_NAME "vehicle" // Часть названия тачки #define VEHICLES_AMOUNT 10 // Общее количество тачек #define VEHICLES_TO_SHOW 2 // Количество тачек, которые не нужно скрывать private _numbers = []; waitUntil { _numbers pushBackUnique ([1, VEHICLES_AMOUNT] call BIS_fnc_randomInt); (count _numbers) == VEHICLES_TO_SHOW }; for "_number" from 1 to VEHICLES_AMOUNT do { if (!(_number in _numbers)) then { call (compile (format ["hideObject %1_%2;", VEHICLE_NAME, _number])); }; };
Здесь подразумевается, что тачки обозваны как "vehicle_N", где N = 1..VEHICLES_AMOUNT (в данном случае 1..10).
Запускать можно из init.sqf.
Сообщение отредактировал Schatten: 30 July 2017 - 14:27
#3 OFFLINE
Отправлено 31 July 2017 - 01:13
Есть ещё более простой способ. В редакторе в свойствах поставленного объекта есть поле, "условие появления", в русскоязычной версии, в это поле и вписываете условие, то есть некое скриптовое выражение, которое и определяет условие при котором данный объект будет создан при старте миссии, или не создан, если результат выражения в условии примет ложный результат.
#4 OFFLINE
Отправлено 31 July 2017 - 01:38
SteelRat, вот только в самом простом случае это условие появления ОДНОГО объекта, и может случиться так, что появятся или все, или ни одного объекта. В моём же решении, как и нужно автору, учитывается группа объектов, и останутся столько объектов, сколько задано константой VEHICLES_TO_SHOW.
#6 OFFLINE
Отправлено 31 July 2017 - 20:07
vlad333000, то есть не всё так просто оказывается, и моё решение становится не таким уж сложным.
Сообщение отредактировал Schatten: 31 July 2017 - 20:36
#7 OFFLINE
Отправлено 26 October 2017 - 15:59
Schatten, эм, ставим один объект, и в его ините пишем скрипт выбора случайной позиции (Нужно два объекта >> ставим два, и т. д.). Да и в условие появления можно вписать подсчет текущего числа объектов заданного типа
Как прописать в ините объекта чтоб он рандомно выбрал одну из 10 позиций.
#9 OFFLINE
Отправлено 26 October 2017 - 21:55
Где позиция один вписать 3 цыфры координат или можно "гетпос маркер" ?
#10 OFFLINE
Отправлено 26 October 2017 - 22:08
susamin, как угодно.
Для маркеров, если они имеют однотипные названия (например, marker1, marker2...), пожалуй, лучше так:
this setPos (getMarkerPos ("marker" + (str ([<номер первого маркера>, <номер последнего маркера>] call BIS_fnc_randomInt))));
Сообщение отредактировал Schatten: 26 October 2017 - 22:13
#11 OFFLINE
Отправлено 26 October 2017 - 22:22
спасибо большое
#12 OFFLINE
Отправлено 26 October 2017 - 23:18
this setPos (getMarkerPos ("marker" + (str ([<номер первого маркера>, <номер последнего маркера>] call BIS_fnc_randomInt))));
Что то рандом странный, то ли у меня руки кривые, поставил код в инит цели (бтр)
this setPos (getMarkerPos ("marker" + (str ([1,2,3,4] call BIS_fnc_randomInt))));
раз 50 миссию перезапустил, рандомит на 1 и 2 маркер, а 3 и 4 маркер игнорируется напроч. Что не так делаю? ВСЕ СДЕЛАЛ РАБОТАЕТ.
this setPos (getMarkerPos ("marker" + (str ([1,4] call BIS_fnc_randomInt))));
СПАСИБО
Сообщение отредактировал susamin: 26 October 2017 - 23:21
#13 OFFLINE
Отправлено 27 October 2017 - 19:58
Все оказалось до безобразия просто. Ставим столько маркеров сколько надо, я сделал 5, и связываем объект с ними посредством задать случайный старт, как обычно синхронизируем. Никаких скриптов.
Сообщение отредактировал susamin: 27 October 2017 - 19:59