Модератор форума: Slon |
Форум РЕДАКТОР - ArmA 2 Operation Arrowhead Скрипты Бесконечная битва для ARMA2 (OA) |
Бесконечная битва для ARMA2 (OA) |
› Понедельник
› 09.03.2015
› 20:02
› Сообщение #
Добавить список для учёта респа групп, респить после проверки ))
вот текс файла Bots.sqf зелёным выделено условие респа ну а синим сам респ _Bots = []; _Deds = AllUnits; {_Bots set [count _Bots, typeOf _x]} forEach (units Grp_0); private ["_ps","_gr"]; _a = 0; While {true} do { { if ({alive _x} count units _x < 3) then { _ps = waypointPosition [_x, 0]; _gr = _x; {_un = _gr createUnit [_x,_ps, [], 30, "FORM"]; _Deds set [count _Deds, _un]} forEach _Bots; _x setCurrentWaypoint [_x,1]; }; sleep 1; } forEach [Grp_0,Grp_1,Grp_2,Grp_3,Grp_4,Grp_5,Grp_6]; sleep 5;hint str (count _Deds); if (_a < 5) then {_a=_a+1} else {{if !(alive _x) then {deleteVehicle _x}} forEach _Deds; _a = 0; _Deds = _Deds - [objNull];}; }; Сообщение отредактировал Slon - Понедельник, 09.03.2015, 20:05
|
› Понедельник
› 09.03.2015
› 21:21
› Сообщение #
Slon, я, как и господин ЕРоХ, со скриптами не дружу вообще. У нас с ними война. Можете сделать мисию пример, что бы, допустим спавн повторялся 5 раз?
|
› Вторник
› 10.03.2015
› 00:32
› Сообщение #
_groups = [Grp_0,Grp_1,Grp_2,Grp_3,Grp_4,Grp_5,Grp_6];
_con_resp = [0,0,0,0,0,0,0]; // колво групп должно соответствовать колву нулей, так будет подсчитываться кол-во респов _Bots = []; _Deds = AllUnits; {_Bots set [count _Bots, typeOf _x]} forEach (units Grp_0); private ["_ps","_gr"]; _a = 0; While {true} do { { if ({alive _x} count units _x < 3) then { if ((_con_resp select _forEachIndex) < 4) then { - проверка кол-ва респов _ps = waypointPosition [_x, 0]; _gr = _x; {_un = _gr createUnit [_x,_ps, [], 30, "FORM"]; _Deds set [count _Deds, _un]} forEach _Bots; _x setCurrentWaypoint [_x,1]; _con_resp set [_forEachIndex, (_con_resp select _forEachIndex) + 1]; }; }; sleep 1; } forEach _groups; sleep 5;hint str (count _Deds); if (_a < 5) then {_a=_a+1} else {{if !(alive _x) then {deleteVehicle _x}} forEach _Deds; _a = 0; _Deds = _Deds - [objNull];}; }; Сообщение отредактировал Slon - Вторник, 10.03.2015, 14:03
|
› Понедельник
› 16.03.2015
› 14:07
› Сообщение #
Скрипт для пополнения отрядов стороны игрока
список ролей может быть любого размера пополняются группы с кол-вом < 3 , добовляет 9 ботов _rol = Switch PlayerSide do { case East :{["RU_Soldier_SL","RU_Soldier_MG","RU_Soldier_AT","RU_Soldier_LAT","RU_Soldier_GL","RU_Soldier_Marksman"]}; case West :{["USMC_Soldier","USMC_Soldier","USMC_Soldier","USMC_Soldier","USMC_Soldier","USMC_Soldier","USMC_Soldier"]}; case Resistance :{["GUE_Soldier_CO","GUE_Soldier_GL","GUE_Soldier_AR","GUE_Soldier_1","GUE_Soldier_3","GUE_Soldier_GL","GUE_Soldier_2"]}; }; { if (Side _x == PlayerSide) then { if (( count units _x) < 3) then { _ps = getPos Leader _x; for "" from 0 to 8 do { _r = _rol select floor (random (count _rol)); _un = _x createUnit [_r, _ps, [], 20, "NONE"]; }; }; }; } forEach allGroups; выделенное можно заменить , тогда будут пополняться ВСЕ отряды ДО 10 ботов _ps = getPos Leader _x; While {( count units _x) < 10} do { _r = _rol select floor (random (count _rol)); _un = _x createUnit [_r, _ps, [], 20, "NONE"]; }; |
› Понедельник
› 16.03.2015
› 23:56
› Сообщение #
Они пополняются! Но,не совсем так как виделось. В общем поясню для чего оно надо мне вдруг стало. Есть модули в редакторе командир \подчиненный вот с их помощью можно командовать отрядами по всей карте в тактическом режиме(в реальном времени задавать скорость и построение отрядов,а так же режим боя или вообще задать во время боя вейпоинт отдельной группе"найти и уничтожить" например или задачу на оборону позиции и т.д).Довольно интересная штука эти модули для тех, кто играет в редакторе не заморачиваясь со скриптописанием. Так вот,я играю как в шахматы по всей карте сам против себя командуя отрядами обоих сторон переключаясь то на командующего синей стороны то красной и от их лица делаю ходы за ту или другую сторону. Вот в связи с таким типом игры и возникла необходимость пополнений групп время от времени. Т.е. в идеале группа игрока Не пополняется,а пополняются только группы той стороны которой в настоящий момент командует игрок и то только возле какого то объекта(палатки например) приблизившись к нему скажем метров на 50(имитация отвода отрядов в тыл от линии фронта на переформировку так сказать)
|
› Вторник
› 17.03.2015
› 01:12
› Сообщение #
какая из групп пополняется зависит от этого условия. тут _х - проверяемая группа. Сравнивается её сторона с стороной Игрока. можеш сделать несколько файлов где эта строка будет разной например if (Side _x == East) - пополнит только Красную сторону. главное не забыть список названий в _rol - должен соответствовать задаче чтобы исключить из пополнения группу Игрока, надо исправить тут на } forEach (allGroups - [group Player]); |
› Вторник
› 17.03.2015
› 08:04
› Сообщение #
Чтобы пополнять группу в тригере.
тригеру нужно дать название. например Trg_East присутствуют Красные, повторяемый. чтобы сделать файл более универсальным, вводим входные параметры [имяТриггера, сторона] as = [Trg_East, East] execVM "file.sqf" текст файла "file.sqf" (условное название) _trig = _this select 0; _side = _this select 1; // сначала выявляем все группы в зоне триггера _gr = []; { if (Side _x == _side) then { if !(group _x in _gr) then { _gr set [count _gr, group _x] }}} forEach (List _trig); // списки ролей _rol = Switch _side do { case East :{["RU_Soldier_SL","RU_Soldier_MG","RU_Soldier_AT"]}; case West :{["USMC_Soldier","USMC_Soldier","USMC_Soldier"]}; case Resistance :{["GUE_Soldier_CO","GUE_Soldier_GL"]}; }; // пополняем на территории тригера _ps = getPos _trig; { While {( count units _x) < 10} do { _r = _rol select floor (random (count _rol)); _un = _x createUnit [_r, _ps, [], 20, "NONE"]; }; } forEach _gr; // для каждой группы. |
› Вторник
› 17.03.2015
› 20:52
› Сообщение #
Все работает,Спасибо! Триггером лучше,но плееру лучше в него не лезть,а то 10 рыл как штык будут в команде игрока)))
при чем почему то не с первого захода в него а со второго,третьего арма командой телохранителей одаривает Не хочу показаться назойливым но,вот вопросик еще,как то можно восстановить потерянную под ноль в боях группу? В офп помню с этим был знатный гемор, только один DAC знал как это делать можно . А как с этим в Арме2 дела обстоят? |
› Вторник
› 17.03.2015
› 21:12
› Сообщение #
Сами группы не исчезают. если модуль не озабочен очисткой то восстановить не проблема
в первом варианте такая возможность существует http://arma.at.ua/forum/76-5825-166956-16-1426504041 и если этот скрипт не восстанавливает численность групп с Нуля, то я не знаю как новые всунуть в игру. допиши аналогично - [group Player] |
› Среда
› 18.03.2015
› 16:45
› Сообщение #
Цитата в первом варианте такая возможность существует А всё,дошло.Спасибо еще раз! Добавлено (18.03.2015, 16:45) |
› Среда
› 18.03.2015
› 17:27
› Сообщение #
чтобы внести изменения в модуль, нужно скопировать текст функции, сделать из него файл с изменениями и запускать этот файл вместо модуля.
|
› Среда
› 18.03.2015
› 19:05
› Сообщение #
да нет не в модуль,в файл init в папке с миссией.Вот выше скрипт из такого файла как раз,а имя модулей помещяемых на карту в редакторе присваивается им автоматом от BIS_coin_0,BIS_coin_1 и т.д. - за счет этого можно вносить скриптами изменения в работе модуля через файл init в папке с миссией.Только вот знать бы что туда написать,что бы можно было объекты располагать вплотную друг к другу при строительстве :)
Добавлено (18.03.2015, 19:05) |
› Среда
› 18.03.2015
› 19:09
› Сообщение #
вvbdnmjs, это не скрипт(программа), это набор данных(список) для функции.
вот тут может что есть https://community.bistudio.com/wiki/Construction_Interface |
› Среда
› 18.03.2015
› 22:25
› Сообщение #
Нет там ничего об этом,я искал и раньше - бедный гугл весь до дыр протер
Поигрался с командой createdistance - безрезультатно. Мда... как вариант ковырять сам модуль только и остается. |
› Среда
› 18.03.2015
› 22:49
› Сообщение #
когда объект создаётся командой
_heli = "AH1Z" createVehicle getMarkerPos "hspawn"; движок пытается избежать наложений объектов. чтобы поставить его точно на нужное место надо применить команду _heli SetPos getMarkerPos "hspawn"; или создавать объект командой -\\- с пометкой - CAN_COLLIDE _heli = createVehicle ["AH1Z", getMarkerPos "hspawn", [], 0, "CAN_COLLIDE"] |
| |||
Чат сайта |