Столкнулся с такой проблемой когда начал делать карту под мод RHS, а специальные модули к сожалению заселяют вышки только солдатами стандартных фракций. Десяток человек я бы смог расставить вручную, но нужно заселить все базы Алтиса, а это сотни человек.
Можно как-нибудь заселить базы не выравнивая каждого солдата вручную?

Как расставить солдат по вышкам без помощи модуля?
#1
OFFLINE
Отправлено 09 January 2016 - 13:55
#2
OFFLINE
Отправлено 09 January 2016 - 15:41
В инит командиру
[this, 1014851, 3] execvm "moveinBUILDpos.sqf";
this - можно заменить на имя юнита
1014851 - id здания
3 - с какой позиции начать расставлять
Сам скрипт moveinBUILDpos.sqf
_group = group leader (_this select 0); _house = if ( count _this > 1 ) then {getposasl (leader _group) nearestobject (_this select 1)} else {nearestbuilding leader _group}; _bpos = if ( count _this > 2 ) then {_this select 2} else {0}; { _pos = _house buildingpos _bpos; if ( str _pos == "[0,0,0]" ) exitwith {}; _x setposatl _pos; // расставит по позициям _x setdir random 360; // рандомно развернёт их в разные стороны _bpos = _bpos + 1; // прибавит значение для позиции, чтобы не поставилось два бойца на одно место _bpos = _bpos + random 3; // можно сделать так, т.е. верхняя строка тогда не нужна dostop _x; // остановит бойцов на позициях _x setnitpos "UP"; // установит положение бойцов: сидя, лёжа, стоя [_x] join grpnull; // не обязательно, но я отсоединяю от командира иногда, чтобы бойцы оставались на позиции // можно добавлять поведение бойцов, агрессию, setskill и т.д. и т.п. } foreach units _group;
===========
Полный скрипт с созданием бойцов, который использую я для сингла.
_side = createCenter east; _grpINFunitUSA=[getmarkerPos "crPirgUSA",east, (configfile >> "CfgGroups" >> "West" >> "Guerilla" >> "Infantry" >> "IRG_InfSquad")] call BIS_fnc_spawnGroup; _leader = leader _grpINFunitUSA; _mark = markerPos "log"; { _x setSkill 1; _x setSkill ["aimingAccuracy", 0.003]; dostop _x; _x forcespeed 0; _x setunitpos "UP"; } forEach units _grpINFunitUSA; [_leader, 1014851, 3] execvm "crinf\moveinBUILDpos.sqf"; waitUntil {sleep 5;(tmsq distance _mark < 70)}; // если игрок подходит к зданию, то заставляем ботов выходить из здания. А т.к. ИИ медленно всё это делает, то будет более менее реалистично { _x setSkill 1; _x setSkill ["aimingAccuracy", 0.008]; _x doFollow _leader; _x forcespeed 5; _x setunitpos "auto"; } forEach units _grpINFunitUSA; _leader move getpos tmsq;
Я так делаю.
Другие могут посоветовать что-то другое.
Сообщение отредактировал TankiSD: 09 January 2016 - 15:41
#3
OFFLINE
Отправлено 09 January 2016 - 16:57
TankiSD,
Создал скрипт,
выбрал одну из двух строчек ( _bpos = _bpos + 1; ) вторую удалил,
поставил отряд около вышки,
в инит командиру вписал [this, 929892, 3] execvm "moveinBUILDpos.sqf", на что выскочила ошибка "тип script, ожидается ничего"
дописал 0 = [this, 929892, 3] execvm "moveinBUILDpos.sqf"
Но ничего не происходит =\
Сообщение отредактировал blade: 09 January 2016 - 17:14
#4
OFFLINE
Отправлено 09 January 2016 - 20:27
Если вышка, то начни с единички.
Весь отряд может туда не поместиться.
И да, этот скрипт не раскинет по всем вышкам солдат.
И да, можешь запустить скрипт так
_group = group leader (_this select 0); _house = if ( count _this > 1 ) then {getposasl (leader _group) nearestobject (_this select 1)} else {nearestbuilding leader _group}; _bpos = if ( count _this > 2 ) then {_this select 2} else {0}; { _pos = _house buildingpos _bpos; if ( str _pos == "[0,0,0]" ) exitwith {}; _x setposatl _pos; _x setdir random 360; _bpos = _bpos + 1; } foreach units _group;
Должен лежать отдельно.
Попробуй это, для начала, а дальше сам поймёшь.
План действий.
Создаёшь в папке с миссией файл moveinBUILDpos.sqf с писаниной выше.
Заходишь в игру, загружаешь свою миссию, ставишь бойцов, командиру в инит пишешь
as= [this, 1014851, 1] execvm "moveinBUILDpos.sqf";
Запускаешь миссию, радуешься.
Ах да, лучше запускать такие файлы через init.sqf либо через триггер, ибо АрмА может не прочитать скрипт.
Т.е. лучше поставить триггер и там прописать
где InfCom1 это имя командира группы.
И затем активируй тригер.
Если что, можешь задержку на секунду поставить.
К слову, твоя идея, напихать бойцов по всем базам, приведёт к диким лагам на всём серваке\миссии.
Лучше сделать так.
Боец подходит к базе, спавнятся юниты, боец отходит от базы, юниты пропадают.
Это если сингл.
==========
вот тебе тест миссия в общем. Думаю понятен принцип.
Прикрепленные файлы
Сообщение отредактировал TankiSD: 09 January 2016 - 20:34