Модератор форума: GUNNER161, Panikaha |
Форум РЕДАКТОР - ArmA 3 Скрипты Скриптовые команды (всякая всячина) |
Скриптовые команды |
› Четверг
› 03.04.2014
› 16:18
› Сообщение #
А в одном триггере ни как? Просто очень удобно в триггере указать активация кто угодно, это позволило обойтись одним триггером и оперировать юнитами трех сторон сразу. В принципе третью сторону можно и отбросить дабы не усложнять. Остается вопрос
как из массива трех фракций _ls, только юнитов сопротивления (resistance countSide _ls) заставить выполнить команду отступления на триггер alamo. Что то вроде этого кода из скрипта Arigato обороны города. В нем если потери велики, все юниты проигрывающей стороны бегут на последний рубеж обороны { if ( side _x == west ) then { {_x setunitpos "up"} foreach units _x; _x move getmarkerpos "alamo"; _x setbehaviour "CARELESS"; _x setspeedmode "FULL"; }; } foreach allgroups |
› Четверг
› 03.04.2014
› 17:05
› Сообщение #
|
› Суббота
› 05.04.2014
› 23:15
› Сообщение #
Slon, подскажите пожалуйста, если знаете, решение данной проблемы. Писал в общие вопросы, но проблема достаточно специфическая на мой взгляд. Так вот, если в миссии загружать сохранения, то при загрузке у некоторых юнитов появляются дефолтные очки, причем они заменяют ранее установленные мной, либо просто появляются. Каким нибудь образом можно это отключить? Либо создать какой нибудь скрипт, чтобы он активировался при загрузке сохранений? Перечитал не один забугорный форум там тоже с этим сталкивались, некоторые предлагали решения, но ни одно так и не помогло.
|
› Суббота
› 05.04.2014
› 23:24
› Сообщение #
dm90210, сделать дополнительную систему сохранения можно. , например в переменных объекта setVariable
надо определиться что хранить, для каких объектов итд. с системой восстановления данных придётся повозиться. |
› Воскресенье
› 06.04.2014
› 02:44
› Сообщение #
|
› Воскресенье
› 06.04.2014
› 03:27
› Сообщение #
dm90210, Эти параметры не сохраняются стандартной системой (при восстановлении система просто не знает что там было) , потому и создаются рандомные. т.е. отключать там нечего.
|
› Воскресенье
› 06.04.2014
› 09:50
› Сообщение #
|
› Пятница
› 11.04.2014
› 15:04
› Сообщение #
del
Сообщение отредактировал AleksSan - Суббота, 12.04.2014, 01:17
|
› Понедельник
› 05.05.2014
› 20:06
› Сообщение #
Пытаюсь создать скрипт самонаведения снаряда на цель. Работает почему-то только по лодкам, а по транспорту - нет. Как исправить?
Сам скрипт большой, поэтому приведу интересующую часть: // НАВЕДЕНИЕ НА ЦЕЛЬ // пока снаряд жив, выполнять: while {alive _shell} do { // текущий вектор снаряда _vectorShell = vectorDir _shell; // если снаряд начал снижаться, if (_vectorShell select 2 < 0) // то then { // текущая позиция снаряда _posShell = getPosASL _shell; // текущая позиция цели _posTarget = getPosASL (_targets select 0); // текущая скорость снаряда _speed = (speed _shell)/3.6; // ОПРЕДЕЛЕНИЕ УГЛОВ НАПРАВЛЕНИЯ СНАРЯДА НА ЦЕЛЬ // фактическое расстояние до цели _disF = _posShell distance _posTarget; // расстояние до цели в плоскости YZ _disX = [_posShell select 1, _posShell select 2] distance [_posTarget select 1, _posTarget select 2]; // угол между прямой от снаряда до цели и плоскостью YZ _dirX = acos (_disX / _disF); // расстояние до цели в плоскости XZ _disY = [_posShell select 0, _posShell select 2] distance [_posTarget select 0, _posTarget select 2]; // угол между прямой от снаряда до цели и плоскостью XZ _dirY = acos (_disY / _disF); // расстояние до цели в плоскости XY _disZ = [_posShell select 0, _posShell select 1] distance [_posTarget select 0, _posTarget select 1]; // угол между прямой от снаряда до цели и плоскостью XY _dirZ = acos (_disZ / _disF); _anglX = 0; _anglY = 0; _anglZ = 0; // если составляющие вектора скорости имеют знак на "-", то заменить знак на "+" if (_vectorShell select 0 < 0) then {_anglX = 0 - _dirX} else {_anglX = _dirX}; if (_vectorShell select 1 < 0) then {_anglY = 0 - _dirY} else {_anglY = _dirY}; if (_vectorShell select 2 < 0) then {_anglZ = 0 - _dirZ} else {_anglZ = _dirZ}; // направляем вектор скорости снаряда на цель _shell setVelocity [_speed * sin _anglX, _speed * sin _anglY, _speed * sin _anglZ]; }; sleep 0.1; }; |
› Понедельник
› 05.05.2014
› 20:28
› Сообщение #
|
› Понедельник
› 05.05.2014
› 21:24
› Сообщение #
СашаDON, по задумке снаряд перехватывается в момент выстрела:
// Активация: _id = this addEventHandler ["fired", {_as = _this execVM "excalibur.sqf"}] затем, по ориентации снаряда расчитывается место его падения, от него (от места) в заданном радиусе определяются все враждебные объекты и, по текущим координатам первой в списке цели, производится коррекция падения снаряда. Что гарантирует 100% попадание в цель. При тестировании в лодки попадает влет, а по танкам - нет! Почему??? Проще привести первую часть скрипта: // имя снаряда _shell = _this select 6; //начальная позиция снаряда _pos = getPos _shell; //начальная скорость снаряда _Vo = (speed _shell)/3.6; // вектор снаряда _vector = vectorDir _shell; // угол возвышения _a = acos (_vector select 2); // ОПРЕДЕЛЕНИЕ ЦЕЛИ // дальность полета снаряда _L = (_Vo^2 / 9.81)* sin (2*_a); /* начальный угол ориентации снаряда в горизонтальной плоскости от севера по часовой стрелке */ _DIRo = direction _shell; // долгота предполагаемого места падения снаряда _X = (_pos select 0) + (_L*sin _DIRo); // широта предполагаемого места падения снаряда _Y = (_pos select 1) + (_L*cos _DIRo); // высота предполагаемого места падения снаряда _Z = _pos select 2; // координаты предполагаемого места падения снаряда _center = [_X,_Y,_Z]; // список объектов в выбранном радиусе от предполагаемого места падения снаряда _objects = nearestObjects [_center, ["tank","car", "ship"], 500]; // резервируем массив целей _targets = []; //если сторона объекта ЗАПАД, то добавить имя объекта в массив целей {if (side _x == west) then {_targets set [count _targets, _x]}} forEach _objects; далее см. первую часть сообщения |
› Понедельник
› 05.05.2014
› 21:59
› Сообщение #
Доброго времени суток,
Столкнулся с такой проблемой, задача, условие в скрипте по достижению которого скрипт продолжит работу. stolb removeaction stolb1 ; _BOX1 = createVehicle ["Box_NATO_AmmoVeh_F",getpos VAS_BOX, [], 0, ""]; hint "!!BOX CREATED!!"; _BOX1 addAction ["Virtual Ammobox", "VAS\open.sqf"]; hint "test1" ; ~ 5 hint "test2" ; @((_BOx1) select 0) distance VAS_BOX >5; \\ Именно это не работает, если дистанция коробки дальше места появления 5 метров, то должно появиться повторное действие на создание. hint "test3" ; stolb1 = stolb addAction ["Create BOX", "VASB.sqs"]; hint "test4" ;
Ты можешь медлить: Время медлить не станет. - Бенджамин Франклин.
|
› Понедельник
› 05.05.2014
› 22:40
› Сообщение #
Gunnerman, возможно нужно заменить
@((_BOx1) select 0) distance VAS_BOX >5; на if (((_BOX1) select 0) distance VAS_BOX >5) then {... |
› Понедельник
› 05.05.2014
› 23:58
› Сообщение #
Индеец, Нет, увы не помогло, всё равно ошибку выдаёт
Ты можешь медлить: Время медлить не станет. - Бенджамин Франклин.
|
› Вторник
› 06.05.2014
› 00:42
› Сообщение #
Gunnerman, условие @((_BOx1) select 0) distance VAS_BOX избыточно. Не надо выделять первую координату, достаточно _BOx1 distance VAS_BOX
|
| |||
Чат сайта |