|
|
Модератор форума: Slon |
Форум РЕДАКТОР - ArmA 2 Operation Arrowhead Скрипты Захват точек |
Захват точек |
› Среда
› 08.05.2013
› 19:11
› Сообщение #
Я делаю мисси PVE и мне нужно сделать захват точек.Каким образом это можно сделать ? Знаю что с варфаре но как ? помогите плиз
|
› Среда
› 08.05.2013
› 19:38
› Сообщение #
Strogino,
привет! захват точек делай с помощью триггеров Добавлено (08.05.2013, 19:37) Добавлено (08.05.2013, 19:38)
Мой сайт The red fox studio
скипты Сброс ящиков на парашюте! Меню помощи техники арма 2 оа мои видеоуроки , по максу и кислороду !!! видео урок разрезка модели в максе и юви для фотошопа Развертка модели в 3ds max !!!! Наложение текстуры в кислороде 2 Видео урок кислород2 геометрия разлёт деталей в максе при экспорте в кислый экспорт модели из кислорода в игру |
› Среда
› 08.05.2013
› 19:40
› Сообщение #
Цитата gerasimow9смотри тут http://arma.at.ua/forum/47-2788-1
Не нашел мне нужно вот именно уничтожить врага и захватить конт точку и дальше идти воевать Сообщение отредактировал Strogino - Среда, 08.05.2013, 19:41
|
› Четверг
› 09.05.2013
› 03:15
› Сообщение #
Ты мой пример смотрел? Там есть захват точек с помощью триггеров. Переделай под своё и всё.
Сообщение отредактировал Dim@s535 - Пятница, 10.05.2013, 13:17
|
› Воскресенье
› 16.06.2013
› 09:54
› Сообщение #
Привет всем как сделать захват точек.Чтоб например в определённом городе стоял пустой флагшток и например красный игрок подходил и нажимал на флагшток, появлялась анимация действия (как у ремонтирования или лечения) секунды на 3-4.Потом флагшток от красного игрока становился флагом России и точка на карте светилась красным цветом задание за этот город у красных выполнялось а у синих проваливалось.(для синих тоже самое только с флагом США и синей точной) Так нужно хотя бы города 3 с возможностью захвата обратно.И пока все точки не будут захвачены 1 стороной игра не закончится.
Можно миссию пример? |
› Воскресенье
› 16.06.2013
› 10:49
› Сообщение #
weqtor, насчёт флагов: это врядли, но можно сделать "simple" (простой) захват точек, т.е. поставить триггер, подсчитывающий кол-во юнитов всех сторон в зоне, в общем, посмотрите в моей подписи ссылку на мой пример, там вы найдёте миссию-пример с простым захватом точек.
Добавлено (16.06.2013, 10:49) --------------------------------------------- Если возникнут вопросы, обращайтесь. Сообщение отредактировал Dim@s535 - Воскресенье, 16.06.2013, 10:50
|
› Воскресенье
› 16.06.2013
› 14:24
› Сообщение #
Посмотри тут захват флага
http://arma.at.ua/forum/28-1473-20619-16-1235757088 |
› Четверг
› 09.10.2014
› 17:16
› Сообщение #
Вопрос действительно важный и распространенный ведь какая к черту война без захватов и капитуляций?.
Не так давно столкнулся (уже во второй раз) с этой задачей, и решил подробно отписать свое решение здесь: Что имеем: В редакторе я разместил маркер точки ("point1") с радиусом 100м, вокруг нее разместил 3 отряда разных сторон с вейпоинтом на точку. Что хотим: Покрасить маркер в цвет стороны имеющей абсолютное влияние в пределах маркера Вызов принят, поехали: init.sqf Код _markerPos = getMarkerPos "point1"; _markerRadius = getMarkerSize "point1"; Создаем тригер по маркеру Код _trg=createTrigger["EmptyDetector", _markerPos]; _trg setTriggerArea[_markerRadius select 0, _markerRadius select 1, 0, false]; Важно чтобы активация была ANY ("Кто-угодно") потому, что команда list возвращает количество юнитов по этому условию По активации запускам сам скрипт Код _trg setTriggerActivation["ANY","PRESENT", true]; _trg setTriggerStatements["this", "thisTrigger execVM ""capture.sqf""", ""]; Записываем 2 свойства триггеру: 1. Имя маркера к которому он (псевдо)привязан 2. Набор свойств для того, чтобы можно было узнать о том, что творится на точке по триггеру из любого другого скрипта: 1. Доминирующая сторона (side) 2. Процент захвата точки (number) 3. Точка захватывается (bool) 4. Точка захвачена (bool) Код _trg setVariable ["assignedMarker", "point1"]; _trg setVariable ["properties", [civilian, 0, false, false]]; Теперь сам скрипт: capture.sqf Скрипт представляет из себя бесконечный цикл запускающийся, когда кто-то появляется в радиусе триггера Код while{true}do{ [color=#ff0000][color=#1e84cc]//Обьявляем переменные : _sclr = 0.75; [color=#9fc5e8][color=#1e84cc]// содержит процент влияния (1- абсолютное влияние, 0 - полное отсутствие) при котором инициируется процесс захвата _units = list _this; [color=#1e84cc]//массив всех юнитов в радиусе триггера [color=#1e84cc]//Читаем те самые свойства триггера _marker = _this getVariable "assignedMarker"; _properties = _this getVariable "properties"; _impactSide = _properties select 0; _captureDelay = _properties select 1; _capturing = _properties select 2; _captured = _properties select 3; [color=#1e84cc]//Обозначаем здесь область видимости для переменной см.ниже private ["_impactPerc"]; [color=#1e84cc]//Проверяем переменную всех юнитов (дело в том, что триггер при создании из скрипта инициализируется не сразу, а где-то в течении секунды - перестраховывамся) if(!isNil "_units")then{ _sides = [east, west, resistance, civilian]; [color=#1e84cc]//Стороны которые могут захватить точку _impactPerc = 0; [color=#1e84cc]//Сбрасываем процент влияния сторон [color=#1e84cc]//Вычисляем данные: //Вычисляем сторону с наибольшим влиянием, для простоты восприятия я беру в расчет только пехоту, если необходимо учитывать что-то еще (технику) то измените соответсвующие условия для _listCnt и _sideCnt { _side = _x; [color=#1e84cc]//Общее количество юнитов-участников _listCnt = {_x isKindOf "CAManBase"} count _units; [color=#1e84cc]//Количество юнитов-участников текущей стороны _sideCnt = {_side == side _x and _x isKindOf "CAManBase"} count _units; [color=#1e84cc]//Процент влияния текущей стороны _perc = if(_listCnt > 0 and _sideCnt > 0)then{_sideCnt / _listCnt}else{0}; [color=#1e84cc]//Записываем сторону и процент с наибольшим влиянием if(_impactPerc < _perc)then{_impactPerc = _perc; _impactSide = _side}; }foreach _sides; [color=#1e84cc]//Далее сама логика: //Если процент влияния доминирующей стороны соответсвует проценту инициализации захвата if(_impactPerc >= _sclr)then{ [color=#1e84cc]//Если процесс захвата завершен и точка еще не захвачена if(_captureDelay == 100 and !_captured)then{ [color=#1e84cc]//Обновляем переменные, красим маркер _captured = true; _capturing = false; _color = switch(_impactSide)do{case west : {"colorBlue"};case east : {"colorRed"};case resistance : {"colorBlack"};default {"colorWhite"}}; _marker setMarkerColor _color; hint format ["Точка под контролем %1", str _impactSide]; }else{ [color=#1e84cc]//Иначе - процесс захвата if(_captureDelay < 100)then{ _capturing = true; _captureDelay = _captureDelay + 10; }; }; [color=#1e84cc]//Иначе - сбрасываем счетчик захвата }else{ if(count _units > 0)then{ _captured = false; _captureDelay = 0; }; }; [color=#1e84cc]//Обновляем свойства триггеру _this setVariable ["properties", [_impactSide, _captureDelay, _capturing, _captured]]; }; sleep 5; }; *Cheers* Миссию - пример прикрепить к посту не могу, попробую скинуть на файлобменник но ничего не гарантирую! Добавлено (09.10.2014, 17:16)
Cтруктуры данных важнее кода!
Список команд | Список оружия | Список техники | Список юнитов | Список объектов Armstalker Online |
| |||
| |||
Чат сайта |