Да и вообще само появление армы 3 связано лишь с одной причиной, до бесов дошло что сидеть на девятом иксе в 2013 году это уже совсем не серьёзно, даже для чехов. По мне это единственное, что серьёзно изменило движок, и то можно поговорить на сколько изменило. Больше я не вижу ни какой разницы между двумя версиями, ну такой разницы ради которой можно сказать что, вау, это да, это действительно новая версия игры.
#1281 OFFLINE
Posted 20 June 2018 - 17:05
#1282 OFFLINE
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.
#1283 OFFLINE
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.
#1284 OFFLINE
Posted 22 June 2018 - 09:40
ЗЫ
Для понимания, кто не в танке.
Параметр seed понимайте как волшебное число с помощью которого, вы можете получать, прозвучит дико, на первый взгляд, постоянную рандомную последовательность. Суть такова, если вы определяете некую конкретную константу в параметре seed, то вам всегда будет возвращена постоянная последовательность рандомов.
Вещь полезная, например в подобных реализациях, естественно можно рандомить и сам seed.
#1285 OFFLINE
Posted 22 June 2018 - 09:40
Кстати, вопрос такой, - в sqm файле миссии(mission.sqm), есть такое -
randomSeed = 12032465;
У богемии, о randomSeed ни слова.
Насколько понял мой телепатор, это - инициализация генератора случайных чисел, с указанием стартовой точки?
Если это так, то второй вопрос -
А накой в mission.sqm он включается?
#1286 OFFLINE
Posted 22 June 2018 - 09:41
выше)
#1287 OFFLINE
Posted 22 June 2018 - 09:46
постоянную рандомную последовательность.
Это если генератор не включен.(на сколько я знаю)
Такую же постоянность будут выдавать и Си и Дельфи, если после подключения юнита Math, перед генерированием случайного числа, не написать - randomize();
выше)
Так seed random, и randomSeed вроде не одно и тоже? И второй то вопрос - на кой это в мишн.скм?)
#1288 OFFLINE
Posted 22 June 2018 - 09:53
Если класс рандомайзера, в любом движке, предусматривает инициализацию рандома, то можно и инициализировать, в противном случае применяется seed, по умолчанию, определённый в классе рандомайзера.
а так как синтаксис конструкции приведённой выше требует сид значит и указываем сид, эта технология работает везде одинаково.
И в юнити есть свой рандом, работающий абсолютно так же как и виндовый системный.
#1289 OFFLINE
Posted 22 June 2018 - 10:02
И второй то вопрос - на кой это в мишн.скм?)
Мой друг! Хоть бесы и чехи они тоже не чураются немножко играться с рандомизацией)
кстати меня ни сколько не удивит если результат этого вызова
_rndVal = random(100);
напрямую зависит от значения randomSeed указанного в миссии.
#1290 OFFLINE
Posted 12 July 2018 - 15:21
Вот пару раз запустил одну и ту же миссию (Одинаковый randomSeed) и в ее начале создавал массив из 10 чисел:кстати меня ни сколько не удивит если результат этого вызова
_rndVal = random(100);напрямую зависит от значения randomSeed указанного в миссии.
[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.
#1291 OFFLINE
Posted 12 July 2018 - 18:30
В таком случае я вижу смыслом существования параметра randomSeed с файле миссии, с одной целью, если нужно в какой то момент использовать возможность получить при каждой очередной сессии именно постоянную последовательность рандомов, при вызовах рандома из разных мест в самом движке, то этот параметр и выступает в качестве статической переменной для всех вызовов.
Я как то вообще не задавался вопросом, а вообще как то можно получить из скриптов доступ к контенту который находится в файле миссии? Всмысле если банально не парсить сам файл через какой ни будь плагин.
ЗЫ
Да и собственно сам этот параметр можно так же определить как атавизм из прошлых времён, уже не имеющий какого либо применения, но тем не менее, в силу ленивости бесов обязан присутствовать в данных миссии.
#1292 OFFLINE
Posted 13 July 2018 - 02:02
Я как то вообще не задавался вопросом, а вообще как то можно получить из скриптов доступ к контенту который находится в файле миссии? Всмысле если банально не парсить сам файл через какой ни будь плагин.
Ну если он не забинарен, то можно через include включить содержимое .sqm в .ext в какой-нибудь класс, там структура должна быть правильной для файла конфигурации, ну а дальше как и с остальным
#1293 OFFLINE
Posted 13 July 2018 - 07:20
ХМ, а что ведь вариант, пойдёт как миленький
#1294 OFFLINE
#1295 OFFLINE
Posted 25 July 2018 - 19:00
здрв всем!такой вопрос появился а возможно ли проверить коллизией зашел юнит в дом или нет?
Edited by lopster102, 25 July 2018 - 19:01.
#1296 OFFLINE
Posted 25 July 2018 - 19:13
#1297 OFFLINE
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.
#1298 OFFLINE
#1299 OFFLINE
Posted 25 July 2018 - 19:58
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.
#1300 OFFLINE
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