Jump to content


Photo

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

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

  • Please log in to reply
1486 replies to this topic

#1281 OFFLINE   SteelRat

SteelRat

    Полковник

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

Posted 20 June 2018 - 17:05

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


  • 0

#1282 OFFLINE   lopster102

lopster102

    Ст.сержант

  • Пользователи
  • 267 posts
  • Откуда:mscw

Posted 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 цикл это пример абстрактный для симуляции спама кнопки.....


Edited by lopster102, 22 June 2018 - 10:45.

  • 0

#1283 OFFLINE   SteelRat

SteelRat

    Полковник

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

Posted 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

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


Edited by SteelRat, 22 June 2018 - 09:16.

  • 0

#1284 OFFLINE   SteelRat

SteelRat

    Полковник

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

Posted 22 June 2018 - 09:40

ЗЫ

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

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

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

 


  • 0

#1285 OFFLINE   NoNameUltima

NoNameUltima

    Сержант

  • Пользователи
  • 189 posts
  • Откуда:SPB

Posted 22 June 2018 - 09:40

SteelRat,

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

randomSeed = 12032465;

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

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

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

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


  • 0

#1286 OFFLINE   SteelRat

SteelRat

    Полковник

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

Posted 22 June 2018 - 09:41

выше)


  • 0

#1287 OFFLINE   NoNameUltima

NoNameUltima

    Сержант

  • Пользователи
  • 189 posts
  • Откуда:SPB

Posted 22 June 2018 - 09:46

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

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

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


выше)

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


  • 0

#1288 OFFLINE   SteelRat

SteelRat

    Полковник

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

Posted 22 June 2018 - 09:53

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


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


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


  • 0

#1289 OFFLINE   SteelRat

SteelRat

    Полковник

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

Posted 22 June 2018 - 10:02

 

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

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


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

_rndVal = random(100);

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


  • 0

#1290 OFFLINE   vlad333000

vlad333000

    Полковник

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

Posted 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

Edited by vlad333000, 12 July 2018 - 15:25.

  • 0

#1291 OFFLINE   SteelRat

SteelRat

    Полковник

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

Posted 12 July 2018 - 18:30

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

 

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


ЗЫ

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


  • 0

#1292 OFFLINE   vlad333000

vlad333000

    Полковник

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

Posted 13 July 2018 - 02:02

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


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

#1293 OFFLINE   SteelRat

SteelRat

    Полковник

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

Posted 13 July 2018 - 07:20

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


  • 0

#1294 OFFLINE   vlad333000

vlad333000

    Полковник

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

Posted 23 July 2018 - 01:31

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

#1295 OFFLINE   lopster102

lopster102

    Ст.сержант

  • Пользователи
  • 267 posts
  • Откуда:mscw

Posted 25 July 2018 - 19:00

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


Edited by lopster102, 25 July 2018 - 19:01.

  • 0

#1296 OFFLINE   vlad333000

vlad333000

    Полковник

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

Posted 25 July 2018 - 19:13

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

#1297 OFFLINE   lopster102

lopster102

    Ст.сержант

  • Пользователи
  • 267 posts
  • Откуда:mscw

Posted 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";
  };
};
};
};
};

Edited by lopster102, 25 July 2018 - 19:17.

  • 0

#1298 OFFLINE   vlad333000

vlad333000

    Полковник

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

Posted 25 July 2018 - 19:48

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

#1299 OFFLINE   vlad333000

vlad333000

    Полковник

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

Posted 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 Ну и дальше чисто оптимизация и повышение точности:
* Проверять только наличие крыши над головой
* Ленивую проверку пересечений
* Длину линии проверки
* Больше линий проверки (В разные стороны, со сдвигом в сторону и т. д.)
* и т. д.

Edited by vlad333000, 25 July 2018 - 20:03.

  • 0

#1300 OFFLINE   NoNameUltima

NoNameUltima

    Сержант

  • Пользователи
  • 189 posts
  • Откуда:SPB

Posted 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




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