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


Фотография

Рандомная позиция юнита


Лучший Ответ Володя , 24 September 2017 - 10:56

 

Володя, странная ситуация: если заменить _unit на TEST, то ошибки не будет, но юнит всё равно никуда не переместится.

Могу предложить создавать юнита:

RandomList = [
	[[4000, 4000, 0],90],
	[[4026.13,4000.15,0],270]
] call BIS_fnc_SelectRandom;

_unit = (createGroup civilian) createUnit ["C_man_p_fugitive_F", RandomList select 0, [], 0, "NONE"];

_unit setDir (RandomList select 1);
_unit setPos (RandomList select 0);
RandomList = [
[[4000, 4000, 0],90],
[[4026.13,4000.15,0],270]
] call BIS_fnc_SelectRandom;


TEST setDir (RandomList select 1);
TEST setPos (RandomList select 0);

:give_rose:

Перейти к сообщению


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

#1 OFFLINE   Володя

Володя

    Рядовой

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

Отправлено 15 September 2017 - 19:13

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

Вот что есть:

_unit = TEST
SpawnUnitPosDir = {
    _pos = _this select 0;
_dir = _this select 1;
_unit setPos _pos
_unit setDir _dir
​};


_RandomList = {
    [[4000, 4000, 0],180],
[[5000, 5000, 0],270]
} call BIS_fnc_SelectRandom;


_PreSpawn = {
    _RandomList
} call SpawnUnitPosDir;

 


  • 0

#2 OFFLINE   vlad333000

vlad333000

    Полковник

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

Отправлено 18 September 2017 - 13:05

Володя, ну для начала фигурные скобки замените на квадратные при вызове функций... и в функции поставьте ; там где ее нету

Сообщение отредактировал vlad333000: 18 September 2017 - 13:08

  • 0

#3 OFFLINE   Володя

Володя

    Рядовой

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

Отправлено 18 September 2017 - 19:04

Володя, ну для начала фигурные скобки замените на квадратные при вызове функций... и в функции поставьте ; там где ее нету

Скобки забыл, заново все это писал, уже бошка не варила. А вот разве квадратные скобки обязательны при вызове функции  ?

Изменил и так же ничего...
 

_unit = TEST  
SpawnUnitPosDir = {  
    _pos = _this select 0;  
_dir = _this select 1;
hint format ["%1",_pos]; 
_unit setPos _pos; 
_unit setDir _dir;  
​};  
  
  
_RandomList = [  
    [[4000, 4000, 0],180],  
[[5000, 5000, 0],270]  
] call BIS_fnc_SelectRandom;  
  
  
_PreSpawn = [  
    _RandomList  
] call SpawnUnitPosDir;

  • 0

#4 OFFLINE   vlad333000

vlad333000

    Полковник

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

Отправлено 19 September 2017 - 11:37

Володя, теперь, в функции вы предполагаете что в _this будет передан массив:
[<pos>, <dir>]
Но передаете в функцию:
[[<pos>, <dir>]]
Т. к. массив _RandomList, который уже имеет формат:
[<pos>, <dir>]
Вы перед вызовом функции "вставляете" в массив (Раньше в код):
[_RandomList]
Володя, квадратные скобки не обязательны, но я не думаю что вы хотели передать тип CODE (Фигурные скобки это и есть тип CODE - код, который еще потом нужно вызвать как-нибудь) в функцию в место ARRAY (Массив) с нужными элементами
  • 0

#5 OFFLINE   Володя

Володя

    Рядовой

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

Отправлено 19 September 2017 - 18:45

Володя, теперь, в функции вы предполагаете что в _this будет передан массив:

[<pos>, <dir>]
Но передаете в функцию:
[[<pos>, <dir>]]
Т. к. массив _RandomList, который уже имеет формат:
[<pos>, <dir>]
Вы перед вызовом функции "вставляете" в массив (Раньше в код):
[_RandomList]
Володя, квадратные скобки не обязательны, но я не думаю что вы хотели передать тип CODE (Фигурные скобки это и есть тип CODE - код, который еще потом нужно вызвать как-нибудь) в функцию в место ARRAY (Массив) с нужными элементами

 

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


  • 0

#6 OFFLINE   Володя

Володя

    Рядовой

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

Отправлено 22 September 2017 - 06:58

Володя, теперь, в функции вы предполагаете что в _this будет передан массив:

[<pos>, <dir>]
Но передаете в функцию:
[[<pos>, <dir>]]
Т. к. массив _RandomList, который уже имеет формат:
[<pos>, <dir>]
Вы перед вызовом функции "вставляете" в массив (Раньше в код):
[_RandomList]
Володя, квадратные скобки не обязательны, но я не думаю что вы хотели передать тип CODE (Фигурные скобки это и есть тип CODE - код, который еще потом нужно вызвать как-нибудь) в функцию в место ARRAY (Массив) с нужными элементами

 

Так что, поможете с моим вопросом ?


  • 0

#7 OFFLINE   vlad333000

vlad333000

    Полковник

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

Отправлено 22 September 2017 - 12:14

Володя, т. е. с 19 сентября вы ничего не попробовали сделать? Даже самое простое действие: убрать лишние скобки при вызове функции?
  • 0

#8 OFFLINE   Володя

Володя

    Рядовой

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

Отправлено 22 September 2017 - 21:46

Володя, т. е. с 19 сентября вы ничего не попробовали сделать? Даже самое простое действие: убрать лишние скобки при вызове функции?

Пробовал, но ничего так и не получилось. Все таже проблема. А как убрать скобки, не очень понимаю.


Сообщение отредактировал Володя: 22 September 2017 - 21:48

  • 0

#9 OFFLINE   Schatten

Schatten

    Капитан

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

Отправлено 22 September 2017 - 22:05

 

Володя, т. е. с 19 сентября вы ничего не попробовали сделать? Даже самое простое действие: убрать лишние скобки при вызове функции?

Пробовал, но ничего так и не получилось. Все таже проблема. А как убрать скобки, не очень понимаю.

 

И как же ты пробовал? И где отчёт с ошибками?
 

Изменил и так же ничего...
 

_unit = TEST  
SpawnUnitPosDir = {  
    _pos = _this select 0;  
_dir = _this select 1;
hint format ["%1",_pos]; 
_unit setPos _pos; 
_unit setDir _dir;  
​};  
  
  
_RandomList = [  
    [[4000, 4000, 0],180],  
[[5000, 5000, 0],270]  
] call BIS_fnc_SelectRandom;  
  
  
_PreSpawn = [  
    _RandomList  
] call SpawnUnitPosDir;

Во-первых, в конце первой строки не хватает точки с запятой.
Во-вторых, исходя из

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

, сначала нужно поменять направление, а потом установить позицию.
В-третьих, BIS_fnc_SelectRandom -- устаревшая функция, есть команда

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

.
И в-четвёртых, в SpawnUnitPosDir _this -- это массив из одного элемента -- массива, первый элемент которого позиция, а второй -- направление. Читаем

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

.


Сообщение отредактировал Schatten: 22 September 2017 - 22:10

  • 0

#10 OFFLINE   Володя

Володя

    Рядовой

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

Отправлено 22 September 2017 - 22:42

 

 

Володя, т. е. с 19 сентября вы ничего не попробовали сделать? Даже самое простое действие: убрать лишние скобки при вызове функции?

Пробовал, но ничего так и не получилось. Все таже проблема. А как убрать скобки, не очень понимаю.

 

И как же ты пробовал? И где отчёт с ошибками?
 

Изменил и так же ничего...
 

_unit = TEST  
SpawnUnitPosDir = {  
    _pos = _this select 0;  
_dir = _this select 1;
hint format ["%1",_pos]; 
_unit setPos _pos; 
_unit setDir _dir;  
​};  
  
  
_RandomList = [  
    [[4000, 4000, 0],180],  
[[5000, 5000, 0],270]  
] call BIS_fnc_SelectRandom;  
  
  
_PreSpawn = [  
    _RandomList  
] call SpawnUnitPosDir;

Во-первых, в конце первой строки не хватает точки с запятой.
Во-вторых, исходя из

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

, сначала нужно поменять направление, а потом установить позицию.
В-третьих, BIS_fnc_SelectRandom -- устаревшая функция, есть команда

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

.
И в-четвёртых, в SpawnUnitPosDir _this -- это массив из одного элемента -- массива, первый элемент которого позиция, а второй -- направление. Читаем

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

.

 

1. Писал все это по новой, при тестах она у меня стоит в редакторе.
2. Уже читал и поменял.
3. Думаю разница не велика.
4. Знаю.
А по поводу результатов: Не думал что нужны все результаты тестов и их ошибки. Буду знать.


  • 0

#11 OFFLINE   Schatten

Schatten

    Капитан

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

Отправлено 22 September 2017 - 23:14

Не думал что нужны все результаты тестов и их ошибки.

А все не нужны -- достаточно тех, которые относятся к коду: https://arma3.ru/for...ikh/#entry76459.

И да, раз "знаю", то в чём тогда проблема?


  • 0

#12 OFFLINE   Володя

Володя

    Рядовой

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

Отправлено 22 September 2017 - 23:19

 

Не думал что нужны все результаты тестов и их ошибки.

А все не нужны -- достаточно тех, которые относятся к коду: https://arma3.ru/for...ikh/#entry76459.

И да, раз "знаю", то в чём тогда проблема?

 

Не получается ничего, позже скину код и ошибки.


  • 0

#13 OFFLINE   Володя

Володя

    Рядовой

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

Отправлено 23 September 2017 - 08:57

Вот что получилось:

_unit = TEST;
SpawnUnitPosDir = {  
    _pos = _this select 0;  
    _dir = _this select 1;
_unit setDir _dir;
    _unit setPos _pos; 
​};  
  
  
RandomList = [  
    [[4000, 4000, 0],180],  
[[5000, 5000, 0],270]  
] call BIS_fnc_SelectRandom;  
  
  
_PreSpawn = RandomList call SpawnUnitPosDir; //Передача массива без доп. Квадратных скобок.

И ошибки:

RandomList = [   
    [>
 7:55:12   Error position: <​};   
 
RandomList = [   
    [>
 7:55:12   Error Неверное число в выражении
 7:55:12 Error in expression < setDir _dir; 
    _unit setPos _pos;  
​};   
 
RandomList = [   
    [>
 7:55:12   Error position: <​};   
 
RandomList = [   
    [>
 7:55:12   Error Неверное число в выражении

Сообщение отредактировал Володя: 23 September 2017 - 08:59

  • 0

#14 OFFLINE   Володя

Володя

    Рядовой

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

Отправлено 23 September 2017 - 09:14

Поучилось сделать только так, но это не очень правильный способ.

private ["_unit","_lamp","_pos","_pos1","_pos2","_pos3","_pos4","_pos5","_pos6","_pos7","_pos8","_pos9","_pos10","_pos11","_pos12","_pos13","_pos14","_dir"];
_unit = TEST;
_lamp = TEST_LAMP;


SpawnPosDir = {  
    _pos = _this select 0;  
    _dir = _this select 1;
    _posL = _this select 2;
    _unit setDir _dir;
    _unit setPos _pos;
    _lamp setPos _posL;
};  


RANDOMSPAWN = random 15;
if (RANDOMSPAWN >= 1) then {  
 _pos1 = [[1464.46,7090.46,0],270,[1464.11,7091.94,0.730924]] call SpawnPosDir;  
};  
  
if (RANDOMSPAWN >= 2) then {  
 _pos2 = [[454.832,6586.49,0.0190001],220,[454.708,6585.09,0.831713]] call SpawnPosDir;  
};  
  
if (RANDOMSPAWN >= 3) then {  
 _pos3 = [[2353.91,4834.73,0.65599],0,[2354.99,4835.8,1.53029]] call SpawnPosDir;  
};
и т.д

Сообщение отредактировал Володя: 23 September 2017 - 09:15

  • 0

#15 OFFLINE   vlad333000

vlad333000

    Полковник

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

Отправлено 23 September 2017 - 10:49

Володя сказал(а) 23 Сен 2017 - 07:57:
Вот что получилось:

_unit = TEST;
SpawnUnitPosDir = {  
    _pos = _this select 0;  
    _dir = _this select 1;
_unit setDir _dir;
    _unit setPos _pos; 
​};  
  
  
RandomList = [  
    [[4000, 4000, 0],180],  
[[5000, 5000, 0],270]  
] call BIS_fnc_SelectRandom;  
  
  
_PreSpawn = RandomList call SpawnUnitPosDir; //Передача массива без доп. Квадратных скобок.
И ошибки:
RandomList = [
[&gt;
7:55:12 Error position: &lt;​};

RandomList = [
[&gt;
7:55:12 Error Неверное число в выражении
7:55:12 Error in expression &lt; setDir _dir;
_unit setPos _pos;
​};

RandomList = [
[&gt;
7:55:12 Error position: &lt;​};

RandomList = [
[&gt;
7:55:12 Error Неверное число в выражении

Вы это писали САМИ в РЕДАТКОРЕ ИХСОДНОГО КОДА (notepad++, atom, sublime text...), а не копировали откуда-то?
  • 0

#16 OFFLINE   Володя

Володя

    Рядовой

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

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

 

Володя сказал(а) 23 Сен 2017 - 07:57:
Вот что получилось:
 

_unit = TEST;
SpawnUnitPosDir = {  
    _pos = _this select 0;  
    _dir = _this select 1;
_unit setDir _dir;
    _unit setPos _pos; 
​};  
  
  
RandomList = [  
    [[4000, 4000, 0],180],  
[[5000, 5000, 0],270]  
] call BIS_fnc_SelectRandom;  
  
  
_PreSpawn = RandomList call SpawnUnitPosDir; //Передача массива без доп. Квадратных скобок.
И ошибки:
RandomList = [
[&gt;
7:55:12 Error position: &lt;​};

RandomList = [
[&gt;
7:55:12 Error Неверное число в выражении
7:55:12 Error in expression &lt; setDir _dir;
_unit setPos _pos;
​};

RandomList = [
[&gt;
7:55:12 Error position: &lt;​};

RandomList = [
[&gt;
7:55:12 Error Неверное число в выражении
 
Вы это писали САМИ в РЕДАТКОРЕ ИХСОДНОГО КОДА (notepad++, atom, sublime text...), а не копировали откуда-то?

 

Сам в notepad++


  • 0

#17 OFFLINE   Schatten

Schatten

    Капитан

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

Отправлено 24 September 2017 - 00:02

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

или

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

.


  • 0

#18 OFFLINE   Володя

Володя

    Рядовой

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

Отправлено 24 September 2017 - 00:09

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

или

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

.

Подходят, за пределы не вышли.


  • 0

#19 OFFLINE   Schatten

Schatten

    Капитан

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

Отправлено 24 September 2017 - 00:15

Володя, я не вижу ошибок (здесь). Скинь миссию -- посмотрю.


  • 0

#20 OFFLINE   Володя

Володя

    Рядовой

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

Отправлено 24 September 2017 - 00:37

Володя, я не вижу ошибок (здесь). Скинь миссию -- посмотрю.

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


  • 0




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