Jump to content


Photo

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

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

  • Please log in to reply
1486 replies to this topic

#421 OFFLINE   Ilias

Ilias

    Прапорщик

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

Posted 17 August 2016 - 01:28

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

Не имел ввиду как стороны в игре, просто контролировать поведение.

 

Может кто нибудь объяснить почему если if(..)==false

case'cargo':{|#|_u moveincargo[

undefined variable in expression _u

 

/*i

o=object;

*/

 

_a=[|o|,|o|]

_la=[

[[-1,[]],"B_soldier_AR_F",[7008.88,7570.15,0.00143886]],
[[-1,[]],"B_Soldier_A_F",[7034.17,7564.84,0.00143886]],
[[0,["cargo"]],"B_medic_F",[6990.94,7553.2,1.63494]]
];
	{_u=objnull;if(_x select 0 select 0==-1)then{_u=_x select 1 createunit[_x select 2,_g]}
	else{_u=_x select 1 createunit[[0,0,0],_g];switch(_x select 0 select 1 select 0)do{
			case'driver':{_u moveInDriver(_a select(_x select 0 select 0))};
			case'turret':{_u moveInturret[_a select(_x select 0 select 0),_x select 0 select 1 select 1]};
			case'commander':{_u moveIncommander(_a select(_x select 0 select 0))};
			case'cargo':{_u moveIncargo[_a select(_x select 0 select 0),_x select 0 select 1 select 1]};
	}};
	/*|__w__|*/
	}foreach _la

Edited by Ilias, 17 August 2016 - 01:31.

  • 0

#422 OFFLINE   vlad333000

vlad333000

    Полковник

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

Posted 17 August 2016 - 09:24

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

знаете? Посмотрите повнимательней на строку Return Value
  • 0

#423 OFFLINE   Ilias

Ilias

    Прапорщик

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

Posted 17 August 2016 - 19:05

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

знаете? Посмотрите повнимательней на строку Return Value

damn.., если if(..)==true нет действий с _u , не обратил внимание (чтобы проверить), спасибо

  • 0

#424 OFFLINE   Ilias

Ilias

    Прапорщик

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

Posted 22 August 2016 - 05:17

Как сменить одну букву в тексте оставив остальное?


  • 0

#425 OFFLINE   A2012V

A2012V

    Ефрейтор

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

Posted 22 August 2016 - 08:47

Подскажите
Имеем: массив (координаты мест поиска)
Массив =
 [
 [12308.035,1787.6019,0],
 ...
 [12338.912,3929.0295,0],
 [10609.141,3601.5747,0]
 ];
Заданное число N(1,10,...90,100)
Вопрос:
Как перетряхнуть массив
и собрать его заново?
Случайными не повторяющимися
элементами из этого Массива
с кол-вом N(1,10,...90,100)
элементов.

  • 0

#426 OFFLINE   HarryWorner

HarryWorner

    Лейтенант

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

Posted 22 August 2016 - 09:29


Как перетряхнуть массив

Имеете ввиду перемешать существующие числа местами в массивах? Не могу вникнуть в описание. Не могли бы вы наглядно продемонстрировать еще на одном примере?

 

 

 

 

 


Как сменить одну букву в тексте оставив остальное?

 

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

.


  • 0

#427 OFFLINE   A2012V

A2012V

    Ефрейтор

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

Posted 22 August 2016 - 09:59

 

Как перетряхнуть массив

Имеете ввиду перемешать существующие числа местами в массивах? Не могу вникнуть в описание. Не могли бы вы наглядно продемонстрировать еще на одном примере?

 

Выбрать несколько (N) случайных не повторяющихся элементов из массива (M) и записать их в тот же массив (M).


  • 0

#428 OFFLINE   HarryWorner

HarryWorner

    Лейтенант

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

Posted 22 August 2016 - 10:32


Выбрать несколько (N) случайных не повторяющихся элементов из массива (M) и записать их в тот же массив (M).

 

 

Набросал, должно работать. Надеюсь не допустил ошибок. Не могу проверить так как сейчас на работе.

p.s. Функция работает с любым размером массива.

FUNC_Peremechivanie =
{
	private["_M","_this","_C","_i","_X", "_M2", "_RESULT"];

	_M = _this;
	_M2 = _M;
	_RESULT = []; 

	for [{_i=1},{_i<= count _M},{_i=_i+1}] do //
	{
		_C = count _M2;
		if(_C > 1)then
		{
			_X = _M select ( (round random _C) - 1);
			_M2 = _M2 - [_X];
			_RESULT = _RESULT + [_X];
		}
		else
		{
			_X = _M select 0;
			_M2 = _M2 - [_X];
			_RESULT = _RESULT + [_X];
		};
	};		

	_RESULT// <---- ВОЗВРАЩАЕМ РЕЗУЛЬТАТ
};

// _MyMassive <---- СВОЙ МАССИВ
_MyMassive= [_MyMassive] call FUNC_Peremechivanie; // <---- вызываем функцию

  • 0

#429 OFFLINE   A2012V

A2012V

    Ефрейтор

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

Posted 22 August 2016 - 12:20

Что то слишком (7 переменых из них 3 массива и куча вычислений)
Неужели
Выбрать три любых яблока из корзины с 10-ю яблоками.
... это ...
​Я правильно мыслю:

для одного яблока
Массив = Массив select (floor (random (count Массив)));
 
для 10 можно ничего не делать
Массив = Массив
 
для 3-???

Вот ни как не найду решение.


  • 0

#430 OFFLINE   wolf2285

wolf2285

    Ефрейтор

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

Posted 22 August 2016 - 15:02


Что то слишком (7 переменых из них 3 массива и куча вычислений)
Неужели
Выбрать три любых яблока из корзины с 10-ю яблоками.
... это ...
​Я правильно мыслю:

для одного яблока
Массив = Массив select (floor (random (count Массив)));

для 10 можно ничего не делать
Массив = Массив

для 3-???
Вот ни как не найду решение.

for "_i" from 1 to 3 do {}; может помочь
  • 0

#431 OFFLINE   SteelRat

SteelRat

    Полковник

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

Posted 22 August 2016 - 15:14

 

Выбрать несколько (N) случайных не повторяющихся элементов из массива (M) и записать их в тот же массив (M).

А каков вообще смысл?

 

1 Имеем миссив координат

2 Вытаскиваем из массива 3 рандомных координаты

 

Теперь не понятное

Заменить текущий массив новыми данными, содержащими 3 выбранных рандомных координаты?

 

или

Добавить 3 выбранные рандомно координаты в текущий массив? Какой смысл такого действия?


  • 0

#432 OFFLINE   wolf2285

wolf2285

    Ефрейтор

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

Posted 22 August 2016 - 16:03

Ну я думаю человек хочет каждый раз иметь рандомные координаты в рандомном количестве.тогда выбирать нужное число допустим рандомно из 10.подставлять его в выше приведенный цикл вместо 3.А в цикле выбирать рандомные координаты.добавить в новый отдельный массив.а из предыдущего массива удалить.и будет новый массив с нужным количеством координат.С новым массивом уже работать.
  • 0

#433 OFFLINE   A2012V

A2012V

    Ефрейтор

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

Posted 22 August 2016 - 18:36

 

 

Выбрать несколько (N) случайных не повторяющихся элементов из массива (M) и записать их в тот же массив (M).

...

 

Теперь не понятное

Заменить текущий массив новыми данными, содержащими 3 выбранных рандомных координаты?

 

...

 

Именно
...
Заменить текущий массив новыми данными, содержащими 3 выбранных рандомных координаты?
...
из этого массива взять N выбранных рандомных не повторяющихся данных
Пример было
1,2,3,4,5,6,7,8,9,10
для N=3 стало
3,7,1
для N=8 стало
6,3,8,1,10,4,7,2
и тд

вроде бы все понятно пишу.


  • 0

#434 OFFLINE   HarryWorner

HarryWorner

    Лейтенант

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

Posted 22 August 2016 - 18:47


Именно ... Заменить текущий массив новыми данными, содержащими 3 выбранных рандомных координаты? ... из этого массива взять N выбранных рандомных не повторяющихся данных Пример было 1,2,3,4,5,6,7,8,9,10 для N=3 стало 3,7,1 для N=8 стало 6,3,8,1,10,4,7,2 и тд вроде бы все понятно пишу.

 

Нужно было сразу так и написать.


_rand = round random count _MyMassive;// <------ N   свое число либо оставить рандомайзер
_MyMassiveFINAL = [];

for [{_i=1},{_i<= _rand},{_i=_i+1}] do
    {
		_element = _MyMassive select (round random (count _MyMassive - 1));
		_MyMassiveFINAL = _MyMassiveFINAL +  [_element];
		_MyMassive = _MyMassive - [_element];
	}
	
	
	
	_MyMassiveFINAL //<--- результат

  • 0

#435 OFFLINE   A2012V

A2012V

    Ефрейтор

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

Posted 22 August 2016 - 19:25

Одна голова хорошо, а форум лучше,

Всем спасибо.

 

_rand = N;
_i = count MyMassive;
while {_i > _rand} do
        {
        _randomIndex = floor (random _i);
        MyMassive set [_randomIndex,0];
        MyMassive = MyMassive - [0]; 
        _i = _i - 1;
        };
 
HarryWorner​ спасибо!

 


  • 0

#436 OFFLINE   SteelRat

SteelRat

    Полковник

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

Posted 22 August 2016 - 21:58

_rand = N;
 _i = count MyMassive;

while {_i > _rand} do {
	_randomIndex = floor (random _i);
	MyMassive set [_randomIndex,0];
	
	// Вы не предполагаете такой ситуации, когда в следующем цикле окажется выбранным индекс
	// который уже будет больше чем реальная длинна массива? Ибо вы каждый цикл меняете размер массива
	MyMassive = MyMassive - [0];
	
	
	_i = _i - 1;
};

  • 0

#437 OFFLINE   A2012V

A2012V

    Ефрейтор

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

Posted 22 August 2016 - 22:58

 

_rand = N;
 _i = count MyMassive;

while {_i > _rand} do {
	_randomIndex = floor (random _i);
	MyMassive set [_randomIndex,0];
	
	// Вы не предполагаете такой ситуации, когда в следующем цикле окажется выбранным индекс
	// который уже будет больше чем реальная длинна массива? Ибо вы каждый цикл меняете размер массива
	MyMassive = MyMassive - [0];
	
	
	_i = _i - 1;
};

 

Цикл

Вроде выкидываем один элемент (случайный)

уменьшаем на единицу кол- во элементов

Цикл

или я что то упустил?

 

 


  • 0

#438 OFFLINE   SOUignat

SOUignat

    Рядовой

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

Posted 23 August 2016 - 00:00

Всем привет. У меня есть несложный (для знающих людей) вопрос: как правильно писать продвинутые EventHandler`ы? С простыми - понятно, а примеров продвинутых EH я не нашёл. Вот я начирикал команду как себе её представлял:

 

[player, currentweapon vehicle player, currentMuzzle player, currentWeaponMode player, player ammo currentMuzzle player, currentMagazine vehicle player, "FxCartridge_762"] addEventHandler ["Extended_FiredBIS_Eventhandlers", {hint "fire!";}];

Но, как и ожидалось, ничего не заработало. Пожалуйста, напишите, как будет правильно.


  • 0

#439 OFFLINE   vlad333000

vlad333000

    Полковник

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

Posted 23 August 2016 - 02:03

SOUignat, вы их из каких источников надыбали?
  • 0

#440 OFFLINE   dos622

dos622

    Ст. Прапорщик

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

Posted 23 August 2016 - 09:30


Extended_FiredBIS_Eventhandlers
 Extended перевели как "продвинутые" очевидно:)

 

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

, там все EventHandler`ы живут:)


  • 0




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