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


Фотография

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

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

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

#1281 OFFLINE   SteelRat

SteelRat

    Полковник

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

Отправлено 20 June 2018 - 17:05

Да и вообще само появление армы 3 связано лишь с одной причиной, до бесов дошло что сидеть на девятом иксе в 2013 году это уже совсем не серьёзно, даже для чехов. По мне это единственное, что серьёзно изменило движок, и то можно поговорить на сколько изменило. Больше я не вижу ни какой разницы между двумя версиями, ну такой разницы ради которой можно сказать что, вау, это да, это действительно новая версия игры.


  • 0

#1282 OFFLINE   lopster102

lopster102

    Ст.сержант

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

Отправлено 22 June 2018 - 03:23

всем привет!недавно нужно было по кнопке сделать ротацию чисел в массиве по возрастанию    и  в голову лезет только один вариант вот такой

currentSelect = selectRandom [1,2,3,4];
for "_i" to 10e10 do {
  uisleep 1;
 currentSelect = [1,2,3,4]select( [1,2,3,0] select ([1,2,3,4] find currentSelect))

};

соответственно если вам нужно в обратную сторону то выбираем массив [3,0,1,2] и тоже самое будет в обратку

но хотел чисто арифметическим способ это делать но  пока что не сообразил.....может у кого то есть математический талант как вариант   по формуле это высчитать если это будет возможно?чисто задачка на скилл.....

 

P.S цикл это пример абстрактный для симуляции спама кнопки.....


Сообщение отредактировал lopster102: 22 June 2018 - 10:45

  • 0

#1283 OFFLINE   SteelRat

SteelRat

    Полковник

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

Отправлено 22 June 2018 - 09:06

Syntax:seed random [x,y]        (Since Arma 3 v1.67.139663)
Parameters:
	seed: Number
	[x, y]: Array
	x: Number
	y: Number
Return Value:Number

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


Сообщение отредактировал SteelRat: 22 June 2018 - 09:16

  • 0

#1284 OFFLINE   SteelRat

SteelRat

    Полковник

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

Отправлено 22 June 2018 - 09:40

ЗЫ

Для понимания, кто не в танке.

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

Вещь полезная, например в подобных реализациях, естественно можно рандомить и сам seed.

 


  • 0

#1285 OFFLINE   NoNameUltima

NoNameUltima

    Сержант

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

Отправлено 22 June 2018 - 09:40

SteelRat,

Кстати, вопрос такой, - в sqm файле миссии(mission.sqm), есть такое -

randomSeed = 12032465;

У богемии, о randomSeed ни слова.

Насколько понял мой телепатор, это - инициализация генератора случайных чисел, с указанием стартовой точки?

Если это так, то второй вопрос -

А накой в mission.sqm он включается?


  • 0

#1286 OFFLINE   SteelRat

SteelRat

    Полковник

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

Отправлено 22 June 2018 - 09:41

выше)


  • 0

#1287 OFFLINE   NoNameUltima

NoNameUltima

    Сержант

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

Отправлено 22 June 2018 - 09:46

постоянную рандомную последовательность.

Это если генератор не включен.(на сколько я знаю)

Такую же постоянность будут выдавать и Си и Дельфи, если после подключения юнита Math, перед генерированием случайного числа, не написать - randomize();


выше)

Так seed random, и randomSeed вроде не одно и тоже? И второй то вопрос - на кой это в мишн.скм?)


  • 0

#1288 OFFLINE   SteelRat

SteelRat

    Полковник

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

Отправлено 22 June 2018 - 09:53

Если класс рандомайзера, в любом движке, предусматривает инициализацию рандома, то можно и инициализировать, в противном случае применяется seed, по умолчанию, определённый в классе рандомайзера.


а так как синтаксис конструкции приведённой выше требует сид значит и указываем сид, эта технология работает везде одинаково.


И в юнити есть свой рандом, работающий абсолютно так же как и виндовый системный.


  • 0

#1289 OFFLINE   SteelRat

SteelRat

    Полковник

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

Отправлено 22 June 2018 - 10:02

 

И второй то вопрос - на кой это в мишн.скм?)

Мой друг! Хоть бесы и чехи они тоже не чураются немножко играться с рандомизацией)


кстати меня ни сколько не удивит если результат этого вызова

_rndVal = random(100);

напрямую зависит от значения randomSeed указанного в миссии.


  • 0

#1290 OFFLINE   vlad333000

vlad333000

    Полковник

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

Отправлено 12 July 2018 - 15:21

кстати меня ни сколько не удивит если результат этого вызова

_rndVal = random(100);
напрямую зависит от значения randomSeed указанного в миссии.

Вот пару раз запустил одну и ту же миссию (Одинаковый randomSeed) и в ее начале создавал массив из 10 чисел:
[0.167042, 0.514623, 0.984254, 0.754689, 0.510202,  0.517924, 0.733236,  0.722151,   0.746007,  0.360086];
[0.440528, 0.872701, 0.602455, 0.699479, 0.896608,  0.577708, 0.828884,  0.341693,   0.765238,  0.509733];
[0.222335, 0.50986,  0.911277, 0.348554, 0.844052,  0.253146, 0.389069,  0.177569,   0.800369,  0.991833];
[0.655154, 0.62281,  0.389609, 0.333163, 0.231396,  0.100373, 0.257022,  0.91128,    0.0702176, 0.738485];
[0.483555, 0.516674, 0.55292,  0.902555, 0.266113,  0.946917, 0.0998348, 0.577595,   0.88646,   0.19547];
[0.498068, 0.224422, 0.197162, 0.998352, 0.0722236, 0.414136, 0.693351,  0.882537,   0.0791603, 0.06654];
[0.105839, 0.324799, 0.797724, 0.831862, 0.792262,  0.655092, 0.840425,  0.60264,    0.927442,  0.746534];
[0.986392, 0.344154, 0.844283, 0.811914, 0.59757,   0.616421, 0.926218,  0.765731,   0.907304,  0.636299];
[0.361619, 0.475687, 0.791007, 0.396702, 0.473474,  0.75068,  0.805692,  0.725264,   0.375492,  0.696104];
[0.774427, 0.748357, 0.341061, 0.36795,  0.0707266, 0.631804, 0.936696,  0.00957992, 0.372784,  0.839227];
Как можно заметить - все они разные, а значит randomSeed не очень то и связан с командой random

Сообщение отредактировал vlad333000: 12 July 2018 - 15:25

  • 0

#1291 OFFLINE   SteelRat

SteelRat

    Полковник

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

Отправлено 12 July 2018 - 18:30

В таком случае я вижу смыслом существования параметра randomSeed с файле миссии, с одной целью, если нужно в какой то момент использовать возможность получить при каждой очередной сессии именно постоянную последовательность рандомов, при вызовах рандома из разных мест в самом движке, то этот параметр и выступает в качестве статической переменной для всех вызовов.

 

Я как то вообще не задавался вопросом, а вообще как то можно получить из скриптов доступ к контенту который находится в файле миссии? Всмысле если банально не парсить сам файл через какой ни будь плагин.


ЗЫ

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


  • 0

#1292 OFFLINE   vlad333000

vlad333000

    Полковник

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

Отправлено 13 July 2018 - 02:02

Я как то вообще не задавался вопросом, а вообще как то можно получить из скриптов доступ к контенту который находится в файле миссии? Всмысле если банально не парсить сам файл через какой ни будь плагин.


Ну если он не забинарен, то можно через include включить содержимое .sqm в .ext в какой-нибудь класс, там структура должна быть правильной для файла конфигурации, ну а дальше как и с остальным
  • 0

#1293 OFFLINE   SteelRat

SteelRat

    Полковник

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

Отправлено 13 July 2018 - 07:20

ХМ, а что ведь вариант, пойдёт как миленький :good:


  • 0

#1294 OFFLINE   vlad333000

vlad333000

    Полковник

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

Отправлено 23 July 2018 - 01:31

Может кому-нибудь и пригодиться SQF для VS Code
  • 0

#1295 OFFLINE   lopster102

lopster102

    Ст.сержант

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

Отправлено 25 July 2018 - 19:00

здрв всем!такой вопрос появился а  возможно ли проверить коллизией  зашел юнит в дом или нет?


Сообщение отредактировал lopster102: 25 July 2018 - 19:01

  • 0

#1296 OFFLINE   vlad333000

vlad333000

    Полковник

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

Отправлено 25 July 2018 - 19:13

lopster102, ну есть вариант с boundingBox, а есть вариант с lineIntersaction? Вам какой?
  • 0

#1297 OFFLINE   lopster102

lopster102

    Ст.сержант

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

Отправлено 25 July 2018 - 19:15

lopster102, ну есть вариант с boundingBox, а есть вариант с lineIntersaction? Вам какой?

=))мне тот что посоветуете))

 

а желательно чтонибудь лучше этого а  пока в голову другое не лезет

[]spawn{
for "_i"  to 10e10 do
{
  uisleep 0.6;
  _build = nearestObject [player, "building"];

  if (cameraOn == player && (_build distance player)  < 6) then
{
  if(cameraView != "Internal")then{
    if(cameraView != "GUNNER" )then{
    player switchCamera "Internal";
  };
};
}else{
 if(cameraView != "External")then{
    if(cameraView != "GUNNER" )then{
    player switchCamera "External";
  };
};
};
};
};

Сообщение отредактировал lopster102: 25 July 2018 - 19:17

  • 0

#1298 OFFLINE   vlad333000

vlad333000

    Полковник

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

Отправлено 25 July 2018 - 19:48

lopster102, вам нужно в любое здание я так понял?
  • 0

#1299 OFFLINE   vlad333000

vlad333000

    Полковник

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

Отправлено 25 July 2018 - 19:58

lopster102, тогда на мой взгляд лучшим способом будет:
private _up = lineIntersectsWith [eyePos player, eyePos player vectorAdd [0, 0, 100], player, objNull, false];
private _down = lineIntersectsWith [eyePos player, eyePos player vectorAdd [0, 0, -100], player, objNull, false];
private _inside = !((_up arrayIntersect _down) isEqualTo []);
Суть в том, что: т. к. здание имеет крышу и пол, то логично предположить, что если линия вверх и линия вниз пересекли один и тот же объект, то мы как минимум находимся в беседке :), так же тут нужно еще проверить, а не находиться ли игрок в технике (Т. к. она тоже как ни странно имеет крышу и пол), и по возможность отфильтровать объекты с которыми мы не хотим взаимодействовать

PS Ну и дальше чисто оптимизация и повышение точности:
* Проверять только наличие крыши над головой
* Ленивую проверку пересечений
* Длину линии проверки
* Больше линий проверки (В разные стороны, со сдвигом в сторону и т. д.)
* и т. д.

Сообщение отредактировал vlad333000: 25 July 2018 - 20:03

  • 0

#1300 OFFLINE   NoNameUltima

NoNameUltima

    Сержант

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

Отправлено 25 July 2018 - 20:08

private["_unit", "_inside", "_building", "_relPos", "_boundingBox", "_min", "_max", "_myX", "_myY", "_myZ"];
_unit		=	(_this select 0);
_inside		=	false;
_building	=	nearestObject [_unit, "HouseBase"];
if (isNull _building) exitWith
	{_inside};
_relPos		=	_building worldToModel (getPosATL _unit);
_boundingBox	=	boundingBox _building;
_min		=	_boundingBox select 0;
_max 		=	_boundingBox select 1;
_myX		=	_relPos select 0;
_myY		=	_relPos select 1;
_myZ		=	_relPos select 2;
if ( (_myX > (_min select 0)) and (_myX < (_max select 0)) ) then
	{
		if ( (_myY > (_min select 1)) and (_myY < (_max select 1)) ) then
			{
				if ( (_myZ > (_min select 2)) and (_myZ < (_max select 2)) ) then
					{_inside	=	true;};
			};
	};
_inside

  • 0




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