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


Фотография

Несколько несложных нубских вопросов


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

#1 OFFLINE   blade

blade

    Ефрейтор

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

Отправлено 09 August 2014 - 06:04

Если не трудно, ответьте на что сможете.
Знаю, что всё это можно где-то найти, но своим ходом я к октябрю не разберусь... а так может наберусь опыта и дальше проще пойдёт :)

1) Как заставить триггеры срабатывать на конкретного юнита или группу юнитов?  
Например условием является вход/выход из зоны триггера или уничтожение на карте:
  а) определённого юнита,
  B) определённого количества юнитов с одной общей меткой,

  c) несколько определённых юнитов с разными метками.
2) Как сделать задержку между выполнением скриптовых команд?
(Для примера: после того как пилот сядет в вертолёт он скажет три сообщения, но не сразу, а по очереди с определённым интервалом)
3) Как прописать, чтоб вещь в инвентаре появлялась с определённой вероятностью? Желательно в процентах. И если таких строчек вписать несколько одинаковых подряд, уживутся ли они вместе? Например три строчки что с сорокапроцентной вероятностью добавления бинта. Смысл в том чтоб инвентарь был не 100% предсказуемым.

4) Как давать рандомную вещь юниту и можно ли объединить это в наборы? Типа солдат одевается в один из случайных, заранее подготовленных наборов снаряжения.
5) Скажите есть ли какая-нибудь разница между разными солдами (стрелок, разведчик, офицер, аквалангист) или они различаются только снаряжением и можно даже "выжившего" нарядить в кого угодно и не будет никакой разницы?
6) "Независимые" такая же полноценная играбельная сторона как красные и синие, за них можно делать миссию?
7) Можно ли в редакторе отредактировать сразу несколько юнитов одновременно, например сделать их играбельными, изменить высоту, ранг и тд? Хочется застрелиться, когда узнаёшь, что расставил 20 человек на высоте вертолёта...

8) Как спаунить скриптами юнитов и группы юнитов?
 


Сообщение отредактировал blade: 09 August 2014 - 06:08

  • 0

#2 OFFLINE   vlad333000

vlad333000

    Полковник

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

Отправлено 09 August 2014 - 15:00

1
2

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

6. Да, но они еще могут быть в союзе со всеми или с одной из команд

7. В редакторе нет, для такого массового редактирования надо открывать файл mission.sqm(текстовый редактор, не ворд!), искать нужные юниты и функцией "заменить все" заменять нужное

8. Сначала

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

Потом

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

Или

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


Сообщение отредактировал vlad333000: 09 August 2014 - 15:00

  • 1

#3 OFFLINE   SteelRat

SteelRat

    Полковник

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

Отправлено 09 August 2014 - 18:24

3, 4

это примерный вариант

// определение наборов, вариант 1
_nabor_1 = [
	["item_1", 0.01],		// "item_1" класс вещи, 0.01 вероятность спавна 1 %, или 1 вероятность спавна 100 %
	["item_2", 0.01],
	[["mag_1", 5], 0.01],	// магазин с определённым количеством патронов
	...
];

_nabor_2 = [
	["item_1", 0.01],
	["item_2", 0.01],
	...
];

// определение наборов, вариант 2, шанс определяющий выбор набора
_nabor_1 = [
	[
		["item_1", 0.01],
		["item_2", 0.01]
	],
	0.5	// шанс выбора набора 50 %
];

_nabor_2 = [
	[
		["item_1", 0.01],
		["item_2", 0.01]
	],
	0.55	// шанс выбора набора 55 %
];

// определяем рандомный набор, для варианта 1
_rndNabor = [_nabor_1, _nabor_2] call BIS_fnc_selectRandom;

// определяем рандомный набор, для варианта 2
_rndNabor = [];
_testNabors = [];
{
	if (random 1 <= (_x select 1)) then {_testNabors set [count _testNabors, (_x select 0)]};
} foreach [_nabor_1, _nabor_2];
_rndNabor = _testNabors call BIS_fnc_selectRandom;

// кидаем в инвентарь
_unit = player;	// ну, или как у вас там)
{
	_item   = _x select 0;
	_chance = _x select 1;

	if (random 1 <= _chance) then {
		// Вариант 1 ------------------------------------------------------
		if (isClass (configFile >> "CfgWeapons" >> _item)) then {
			_unit addWeapon _item;
		} else {
			if (isClass (configFile >> "CfgMagazines" >> _item)) then {
				_unit addMagazine _item;
			} else {
				// итд, определение типа и добавление в инвентарь
			};
		};
		// ----------------------------------------------------------------
		
		// Вариант 2 ------------------------------------------------------
		switch true do {
			case (isClass (configFile >> "CfgWeapons" >> _item)): {_unit addWeapon _item};
			case (isClass (configFile >> "CfgMagazines" >> _item)): {_unit addMagazine _item};
			... // итд, определение типа и добавление в инвентарь
			
			default {};
		};
		// ----------------------------------------------------------------
	};
} foreach _rndNabor;

Сообщение отредактировал SteelRat: 09 August 2014 - 18:27

  • 2

#4 OFFLINE   Djon

Djon

    Старшина

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

Отправлено 09 August 2014 - 20:26

 

7) Можно ли в редакторе отредактировать сразу несколько юнитов одновременно, например сделать их играбельными, изменить высоту, ранг и тд? Хочется застрелиться, когда узнаёшь, что расставил 20 человек на высоте вертолёта...

8) Как спаунить скриптами юнитов и группы юнитов?
 

Хочется застрелиться когда более 500 ботов 40 танков и 8 вертушек скриптом сделал, задал им поведение, маршруты, сделал 12 магазинов, кучу всякой мелочи и понимаешь, что движок не вывозит всего этого.))) Но не застрелился))) А скрипт по спавну я уже писал, может не идеал но есть http://arma3.ru/foru...=+скрипт +спавн

Посмотришь образцы которые тебе дали уже и на мой взглянешь, так проще усвоится.


Сообщение отредактировал Djon: 09 August 2014 - 20:28

  • 2

#5 OFFLINE   blade

blade

    Ефрейтор

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

Отправлено 04 September 2014 - 09:09

 

3, 4

это примерный вариант

// определение наборов, вариант 1
_nabor_1 = [
	["item_1", 0.01],		// "item_1" класс вещи, 0.01 вероятность спавна 1 %, или 1 вероятность спавна 100 %
	["item_2", 0.01],
	[["mag_1", 5], 0.01],	// магазин с определённым количеством патронов
	...
];

_nabor_2 = [
	["item_1", 0.01],
	["item_2", 0.01],
	...
];

// определение наборов, вариант 2, шанс определяющий выбор набора
_nabor_1 = [
	[
		["item_1", 0.01],
		["item_2", 0.01]
	],
	0.5	// шанс выбора набора 50 %
];

_nabor_2 = [
	[
		["item_1", 0.01],
		["item_2", 0.01]
	],
	0.55	// шанс выбора набора 55 %
];

// определяем рандомный набор, для варианта 1
_rndNabor = [_nabor_1, _nabor_2] call BIS_fnc_selectRandom;

// определяем рандомный набор, для варианта 2
_rndNabor = [];
_testNabors = [];
{
	if (random 1 <= (_x select 1)) then {_testNabors set [count _testNabors, (_x select 0)]};
} foreach [_nabor_1, _nabor_2];
_rndNabor = _testNabors call BIS_fnc_selectRandom;

// кидаем в инвентарь
_unit = player;	// ну, или как у вас там)
{
	_item   = _x select 0;
	_chance = _x select 1;

	if (random 1 <= _chance) then {
		// Вариант 1 ------------------------------------------------------
		if (isClass (configFile >> "CfgWeapons" >> _item)) then {
			_unit addWeapon _item;
		} else {
			if (isClass (configFile >> "CfgMagazines" >> _item)) then {
				_unit addMagazine _item;
			} else {
				// итд, определение типа и добавление в инвентарь
			};
		};
		// ----------------------------------------------------------------
		
		// Вариант 2 ------------------------------------------------------
		switch true do {
			case (isClass (configFile >> "CfgWeapons" >> _item)): {_unit addWeapon _item};
			case (isClass (configFile >> "CfgMagazines" >> _item)): {_unit addMagazine _item};
			... // итд, определение типа и добавление в инвентарь
			
			default {};
		};
		// ----------------------------------------------------------------
	};
} foreach _rndNabor;

Я минут сорок насиловал мозг...  но это слишком сложный пример, работу которого я не в силах переварить  (

А можно пример функции процентного выпадения в голом виде?  Без переменных, без лишнего функционала, просто голый пример выпадения бинта в инвентарь с вероятностью 30 %.


  • 0

#6 OFFLINE   vlad333000

vlad333000

    Полковник

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

Отправлено 04 September 2014 - 09:57

blade, кроме как настолько простого варианта придумать не могу:
_chance = [1,0,0,0,1,0,0,0,1,0]; // грубо говоря 30% (3/10)
_select = _chance select floor random count _chance;
If (_select == 1) then {
player addItem "FirstAidKit";
};

Сообщение отредактировал vlad333000: 04 September 2014 - 10:03

  • 0

#7 OFFLINE   SteelRat

SteelRat

    Полковник

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

Отправлено 04 September 2014 - 18:01

 

blade, кроме как настолько простого варианта придумать не могу:
_chance = [1,0,0,0,1,0,0,0,1,0]; // грубо говоря 30% (3/10)
_select = _chance select floor random count _chance;
If (_select == 1) then {
player addItem "FirstAidKit";
};

 

if ((random 100) <= 30) then {player addItem "FirstAidKit"};

Сообщение отредактировал SteelRat: 04 September 2014 - 18:01

  • 2

#8 OFFLINE   vlad333000

vlad333000

    Полковник

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

Отправлено 04 September 2014 - 18:17

SteelRat, :D
  • 0

#9 OFFLINE   SteelRat

SteelRat

    Полковник

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

Отправлено 04 September 2014 - 18:26

Отдам вам должное), почти бинарный оператор

_chance = [1,0,0,0,1,0,0,0,1,0];

  • 1




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