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


Фотография

Рандом


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

#1 OFFLINE   romylq

romylq

    Ефрейтор

  • Пользователи
  • 72 сообщений

Отправлено 26 July 2017 - 18:23

нужно что бы появился один или несколько из поставленных объектов, допустим нужно доставить машину с из точки А в точку В, а этих машин на карте поставлены в редакторе 10 штук, как сделать что бы при старте появилась одна или несколько? 


  • 0

#2 OFFLINE   Schatten

Schatten

    Капитан

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

Отправлено 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

  • 0

#3 OFFLINE   SteelRat

SteelRat

    Полковник

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

Отправлено 31 July 2017 - 01:13

Есть ещё более простой способ. В редакторе в свойствах поставленного объекта есть поле, "условие появления", в русскоязычной версии, в это поле и вписываете условие, то есть некое скриптовое выражение, которое и определяет условие при котором данный объект будет создан при старте миссии, или не создан, если результат выражения в условии примет ложный результат.


  • 0

#4 OFFLINE   Schatten

Schatten

    Капитан

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

Отправлено 31 July 2017 - 01:38

SteelRat, вот только в самом простом случае это условие появления ОДНОГО объекта, и может случиться так, что появятся или все, или ни одного объекта. В моём же решении, как и нужно автору, учитывается группа объектов, и останутся столько объектов, сколько задано константой VEHICLES_TO_SHOW.


  • 0

#5 OFFLINE   vlad333000

vlad333000

    Полковник

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

Отправлено 31 July 2017 - 13:37

Schatten, эм, ставим один объект, и в его ините пишем скрипт выбора случайной позиции (Нужно два объекта >> ставим два, и т. д.). Да и в условие появления можно вписать подсчет текущего числа объектов заданного типа
  • 0

#6 OFFLINE   Schatten

Schatten

    Капитан

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

Отправлено 31 July 2017 - 20:07

vlad333000, то есть не всё так просто оказывается, и моё решение становится не таким уж сложным. :)


Сообщение отредактировал Schatten: 31 July 2017 - 20:36

  • 0

#7 OFFLINE   susamin

susamin

    Сержант

  • Пользователи
  • 245 сообщений

Отправлено 26 October 2017 - 15:59

Schatten, эм, ставим один объект, и в его ините пишем скрипт выбора случайной позиции (Нужно два объекта >> ставим два, и т. д.). Да и в условие появления можно вписать подсчет текущего числа объектов заданного типа


Как прописать в ините объекта чтоб он рандомно выбрал одну из 10 позиций.
  • 0

#8 OFFLINE   Schatten

Schatten

    Капитан

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

Отправлено 26 October 2017 - 20:53

susamin,

this setPos (selectRandom [<позиция1>, ...]);

  • 0

#9 OFFLINE   susamin

susamin

    Сержант

  • Пользователи
  • 245 сообщений

Отправлено 26 October 2017 - 21:55

Где позиция один вписать 3 цыфры координат или можно "гетпос маркер" ?


  • 0

#10 OFFLINE   Schatten

Schatten

    Капитан

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

Отправлено 26 October 2017 - 22:08

susamin, как угодно.
Для маркеров, если они имеют однотипные названия (например, marker1, marker2...), пожалуй, лучше так:

this setPos (getMarkerPos ("marker" + (str ([<номер первого маркера>, <номер последнего маркера>] call BIS_fnc_randomInt))));

Сообщение отредактировал Schatten: 26 October 2017 - 22:13

  • 0

#11 OFFLINE   susamin

susamin

    Сержант

  • Пользователи
  • 245 сообщений

Отправлено 26 October 2017 - 22:22

спасибо большое


  • 0

#12 OFFLINE   susamin

susamin

    Сержант

  • Пользователи
  • 245 сообщений

Отправлено 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

  • 0

#13 OFFLINE   susamin

susamin

    Сержант

  • Пользователи
  • 245 сообщений

Отправлено 27 October 2017 - 19:58

Все оказалось до безобразия просто. Ставим столько маркеров сколько надо, я сделал 5, и связываем объект с ними посредством задать случайный старт, как обычно синхронизируем. Никаких скриптов.


Сообщение отредактировал susamin: 27 October 2017 - 19:59

  • 0




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