Поиск
Показаны результаты для тегов 'arma3'.
Найдено 13 результатов
-
Работа с объектом Одно из удобных (на мой взгляд) я бы выделил взаимодействие, вызывая SQF файл this addaction ["Ваш_текст","файл.sqf"]; Подобрать "объект" (можно подбирать что захотите) В инициализации объекта прописываем следующее: this addAction ["Take Intel", {hint format ["Intel Taken"]; DeleteVehicle (_this select 0) select 0;}, [], 6, true, true, "", "", 6]; Take Intel и Intel Taken - ваш текст "Подышать на объект" this addAction ["Подышать на стол", {hint format ["Успешно"]; RemoveAllActions (_this select 0) select 0;}, [], 6, true, true, "", "", 6]; Закрыть двери в объекте this setVariable ["bis_disabled_Door_1", 1, true]; Повреждение объекта unit setdammage 0.8; 0.9 - состояние когда объект сильно поврежден, но не уничтожен - 1 – полностью уничтожена Удаление Удаление экипажа и любого объекта (кроме Простых объектов) heli - имя переменной deleteVehicleCrew heli; deleteVehicle heli; Урон по объекту unit allowdammage Значение; Имя Значение True Включен False Выключен Увеличить или уменьшить объект В инициализации объекта пишем следующее this setObjectScale ЧИСЛО; Прикрепить флаг к чему либо Устанавливает флагу "this" текстуру и прикрепляет его к технике this setFlagTexture "a3\data_f_orange\flags\flag_idap_co.paa"; [this, aa] call BIS_fnc_attachToRelative aa - имя переменной машины Прикрепить объект, транспорт, турель к чему либо Делаем как хотим и что хотим Вбиваем предмету с которым вы хотите работать(машина например) имя переменной и просто ставим в редакторе как вам угодно, затем пишем волшебную команду в инициализации предметах которые будут на машине [this, aa] call BIS_fnc_attachToRelative aa - имя переменной машины Например - можно делать вот такие танки Динамическая прорисовка объектов Возможно повышает FPS. Полезно для сценариев которые состоят из несколько частей в одной миссии, чтобы не мешаться друг другу, либо же архитектура сценария полностью самодельна. Создаем триггер Создаем объект и сохраняем его в композиции - называем ее например Mis В триггере пишем следующее В активацию {_x enableSimulation false;_x hideObjectGlobal true;} forEach (getMissionLayerEntities "Mis" select 0); В диактивацию {_x enableSimulation true;_x hideObjectGlobal false;} forEach (getMissionLayerEntities "Mis" select 0); Повторяемый. Сервер. Теперь спавним нашу композицию. И далее просто заносим наши вновь поставленные объекты в папочку Mis ВАЖНО! Перенос объектов в композицию происходит только в левом окне с элементами. То есть жмем на объект один раз - он выделяется(можно выделять несколько), а далее зажав ЛКМ мы его переносим. Переносы работают криво, объяснять думаю нет смысла - сами поймете когда будете этим заниматься Анимация движения объекта Создаем 4 модуля Ключ расширенной кривой Создаем 2 модуля Отрезок Создаем 2 модуля Расширенная кривая Тепловоз (Train) И так. Представим, что мы делаем анимацию тепловоза, который просто едет вперед. Определяем для себя какая точка будет началом. Ставим туда в друг друга 2 ключа(один будет работать в точку А, другой в точку В). ПИШЕМ для себя чтобы не путаться имя переменной им! и так же ставим в точке В 2 ключа (Так же в друг дружке!) У меня так. a1 и a1_2 и другая пара b1 и b1_2 Наименование Значение Время 50 и 0 Режим EaseInOut Тангенс 10 Поле зрения 0.75 b1 и b1_2 аналогично только поменяйте местами их в написании "внутрянки" Далее ставим 2 отрезка и 2 расширенных кривых Синхронизируем между собой по паре (Отрезок -> кривая) Далее делаем следующее с 2 отрезками и называем их line1 и line2 Событие у меня свое, в данном случае когда поезд начинает движение он гудит Значение длины и скорости воспроизведения тоже подогнаны под свой вкус Синхронизируем кривые с ключами И ОБЯЗАТЕЛЬНО с тепловозом (им.перем Train) a1 и b1 синхронизируем с кривой которая идет на line2 a1_2 и b1_2 синхронизируем с кривой которая идет на line1 Наименование Значение Длина 600 Скорость 0.5 Режим EaseInOut В итоге должно получится что кривая соединяет 2 ключа, поезд и отрезок Далее, чтобы запустить движение - создаем 2 "консоли" . Одна движение в точку B, другая реверс. Если так нужен будет поворот, снижение и повышение высот, то попробуйте просто полетать рядом с анимационной линией с зажатым шифтом. Игра вам предложит сделать там точку следующего отталкивания, а там уже легко подогнать все. Синхронизирует оно само (оно умное). Не забывайте сделать это и на реверсе!! Выглядят они так Обнаружение цели от Vivian Создаем триггер Создаем "Создать задание" и синхронизируем В условиях триггера пишем currentWeapon Player == "binocular" and cursorObject == VIP VIP - имя переменной мужика binocular - бинокль (ванильный). Чтобы заменить его - выбираем в арсенале другой бинокль и жмем CTRL+C и меняем значение бинокля. Как только перекрестие бинокля пересекается с моделькой нужного персонажа, триггер срабатывает. Либо альтернатива Создаем триггер В условиях триггера пишем !(gg1 KnowsAbout t1 <1) Как только игрок(gg1) сможет увидеть t1, триггер срабатывает. Работа с текстом Список команд globalChat groupChat vehicleChat commandChat systemChat hint hintC hintSilent BIS_fnc_guiMessage BIS_fnc_dynamicText BIS_fnc_infoText BIS_fnc_textTiles BIS_fnc_typeText BIS_fnc_typeText2 BIS_fnc_EXP_camp_SITREP BIS_fnc_showNotification BIS_fnc_showSubtitle BIS_fnc_WLSmoothText Примеры некоторых команд №1 ["ОПЕРАЦИЯ ПЕРДЕЖ",-1,-1,4,1,0,789] spawn BIS_fnc_dynamicText; №2 ["<t color='ffffff' font='PuristaMedium' size = '0.7'>Глава 2: Ты мне друг или враг? </t>",-0,0.92,7,0,0,789] spawn BIS_fnc_dynamicText; Можно менять шрифт, см https://community.bistudio.com/wiki/FXY_File_Format №3 titletext ["Штаб: Старший Прапорщик Головнюк убит в бою.","plain down"]; №4 call {cutText ["<t color='#00bfff'size='1.4'>Гражданский: </t> <t size='1.4'>Неплохая погодка да?<br/> Самое время чтобы погулять!</t>", "PLAIN DOWN", -1, true, true];} Если нужно чтобы тот кто говорит был жив пишем в условие это call{player inArea thistrigger && alive имя перем;} №5 Текст пишется слева снизу (Там где чат, ну так у меня) "Stratis, 2035-07-14 0130<br />A dark night ahead…" call BIS_fnc_titleText; №6 Примерно такие еще есть в 3den(мод), но там их мало [ [ ["После попадания в голову 50 калибром, ", "align = 'center' shadow = '1' size = '0.7' font='PuristaBold'"], ["Морг", "align = 'center' shadow = '1' size = '0.7'", "#aaaaaa"], ["","<br/>"], ["10 минут спустя...","align = 'center' shadow = '1' size = '1.0'"] ] ] spawn BIS_fnc_typeText2; №7 ["Пульс потерян", 2, 3, [1,0,0,1], true] spawn BIS_fnc_WLSmoothText; №8 Выводит подсказочное сообщение справа от экрана со звуком. Для разделения сообщения на несколько строк используйте \n. hint "Чтобы убрать оружие из рук.\nВозьми рпг в руки и резко упади на землю." Можно добавить картинку hint parseText "<img image='ваша_картинка.paa' <img size='20' /><br/><br/><t size='1.2'>Ваш_текст.</t>"; Цветной текст Пример <font color='#00FF00' size=18>ОЙ</font> что-то <font color='#0000FF'>Бу-бухноло</font> и <font color='#FF0000' size=28>Все погибли</font> Цвет и размер можно настраивать под свой вкус. Статья AAN(новости) Можно вписывать в sqf или триггер, кому как удобно. [ [ ["title","My Title"], ["meta",["Katherine Bishop",[2035,2,24,11,38],"CET"]], ["textbold","This is a bold text"], ["image",["\a3\Missions_F_Orange\Data\Img\orange_overview_ca.paa","Some image description"]], ["box",["\a3\Missions_F_Orange\Data\Img\Faction_IDAP_overview_CA.paa","You won't believe how playing Showcase Laws of War can change your life!"]], ["text","Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi tincidunt pretium ultricies. Etiam ac ornare est, quis posuere nisl. Mauris facilisis lectus eu turpis maximus consequat. Donec ut metus nec risus tristique mattis. Ut posuere rutrum tellus, ut molestie orci mattis id. Cras ultrices euismod diam, in venenatis nunc commodo eget. Interdum et malesuada fames ac ante ipsum primis in faucibus. Morbi congue dolor rutrum lectus euismod, ac faucibus magna molestie. Aliquam in libero sit amet eros sagittis tristique. Nam pellentesque dignissim aliquam."], ["textlocked",["Sed non est risus. Nulla condimentum at leo sed bibendum. Phasellus laoreet sit amet leo tincidunt consequat. Curabitur nec hendrerit purus. Nam massa nisi, mattis in aliquet consectetur, ornare eget nibh. Nunc dignissim, nibh sit amet ultrices tincidunt, mi nulla fermentum quam, non condimentum dolor eros vulputate massa.","SUBSCRIBE PLZ"]], ["author",["\a3\Missions_F_Orange\Data\Img\avatar_journalist_ca.paa","Katherine Bishop is a journalist"]] ] ] call BIS_fnc_showAANArticle; Это мой вариант Работа с картинками Своя картинка на объекте Ну тут все просто Кидаем в папку с миссией свою картинку в формате .jpg, но желательно в paa. Далее указываем путь к ней Своя картинка на задании либо в "разведки" миссии Создаем модуль "Создать задание" Пишем и делаем все как вам удобно и в описании пишем следующее: Ваш текст(если нужно) <img image="pictuk.jpg" width="270" height="270"/> pictuk.jpg - в моем случае это название моей пикчи в папке миссии width и height можно менять Вот так выглядит у меня Своя картинка и текст на листе, газете и прочее или интел с картинкой В имени пишем например myLeaflet sna.jpg - картинка, которая будет видна при приближении Если вместо картинки нужен просто цвет, то например #(argb,8,8,3)color(1,0,1,1) Пишем дальше в инициализацию того же объекта [myLeaflet, "sna.jpg", "Ваш текст"] call BIS_fnc_initInspectable; Либо так [myLeaflet, ["sna.jpg", -1, -1], "Ваш текст."] call BIS_fnc_initInspectable; Текст с картинкой Делаем все как было описано раннее Пишем: ["<img size='5' image='путь_к_картинке' />",0,0.5,38,3,0,9459] spawn bis_fnc_dynamicText; call {cutText ["<t color='#284e26'size='1.4'>Майор Порошко: </t> <t size='1.4'>Удачи, бойцы!</t>", "PLAIN DOWN", -1, true, true];} [текст(в данном случае картинка), x, y, длительность, время затухания, задержка, rsclayer] Большой акцент на числа 38 и 3 - именно столько идет(в секундах) монолог в моем сценарии Плавное появление картинки на экране Исчезает так же плавно ["path\to\image.paa"] spawn BIS_fnc_textTiles; Нашивка Картинка(желательно в .paa вообще любую картинку можно впаять) Триггер(необязательно) description.ext class CfgUnitInsignia { class ork { displayName = "ORK"; author = "Lastick"; texture = "ork.paa"; material = "\A3\Ui_f\data\GUI\Cfg\UnitInsignia\default_insignia.rvmat"; textureVehicle = ""; }; }; Пишем в триггере либо юните [Kulo, "ork"] call BIS_fnc_setUnitInsignia; Kulo - имя переменной юнита Маркер Маркер-указатель Создаем сам маркер и называем его. В моем случае Paros, маркер можно брать любой. В любом из разделов инструктажа или задачи пишем <marker name="Paros">Ваш текст</marker> Выглядит это вот так До и после этого может стоять ваш текст. По нажатию на подсвеченное слово желтым, камера будет вас перемещать на маркер Динамические маркеры Init.sqf Пишем следующее "one" setMarkerAlpha 0; "two" setMarkerAlpha 0; one и two - имя переменной маркера В триггере пишем следующее "one" setMarkerAlpha 1; "two" setMarkerAlpha 1; (актуально использовать, как какие-нибудь разведданные) Телепорт на заданный маркер В триггере пишем следующее: В условие player in thisList В активацию player setPos GetMarkerPos "MyMarker"; Создаем сам маркер(я брал "Пусто" чтобы его не было видно) и пишем в нем имя переменной MyMarker Альтернатива (с затемнением) this addAction ["Переход", { 1 cutText ["","BLACK OUT",1]; sleep 2; player setPosASL (getPosASL mine2); player setDir 181; sleep 0.5; 1 cutText ["","BLACK IN",1]; }, nil, 1.5, true, true, "", "true", 5, false, "", ""]; Динамическая точка возрождения Создаем Точку возрождения (ТВ) (любую, хоть маркер) Триггер Прописываем имя переменной ТВ, в моем случае respawn_east Далее в триггере пишем _marker = createMarker ["respawn_east_2", position pos1]; "respawn_east_2" setMarkerAlpha 0; deleteMarker "respawn_east"; pos1 - переменная объекта чьи координаты будут использованы для создания нового маркера Другие фракции east west guerrila Экран Эффект будто резко встал с дивана В активацию [1, "BLACK", 5, 1] spawn BIS_fnc_fadeEffect; Можно поменять на WHITE 1 - затухание (0 - обратное) 5 - длительность 1 - размытие (0 - нету) Затемнение экрана titleCut ["", "BLACK FADED", 999]; titleCut ["", "BLACK IN", 5]; Убирает интерфейс и делает черный экран ["BIS_fnc_quotations_blackScreen", false] call BIS_fnc_blackOut; Можно накладывать текст ["BIS_fnc_quotations_blackScreen", false] call BIS_fnc_blackOut; ["Вас ♥♥♥♥♥♥♥♥анули черенком от лопаты - вы погибли.",-1,-1,4,1,0,789] spawn bis_fnc_dynamicText; Вернуть экран обратно ["BIS_fnc_quotations_blackScreen", false] call BIS_fnc_blackIn; Рамки как в кино Очень рекомендую использовать с "черным экраном", который выше Включить [0, 20, true, true ] call BIS_fnc_cinemaBorder Выключить [1, 20, true, true ] call BIS_fnc_cinemaBorder Наименование Значение Выкл и Вкл 1 и 0 Продолжительность 20 Звук true и false Блокировка первого лица true и false Эффект синего ПНВ эффекты помимо синего фильтра - асе Создаем следующие файлы в папке с миссией nvg.sqf init.sqf init.sqf [] execVM "nvg.sqf"; nvg.sqf if (isDedicated) exitWith {}; if (player != player) then {waitUntil {player == player};}; while {true} do { waitUntil {(currentVisionMode player) == 1}; PP_radial = ppEffectCreate ["radialBlur",100]; PP_radial ppEffectEnable true; PP_radial ppEffectAdjust [0.02,0.13,0.21,0.36]; PP_radial ppEffectCommit 0; PP_dynamic = ppEffectCreate ["DynamicBlur",100]; PP_dynamic ppEffectEnable true; PP_dynamic ppEffectAdjust [0.35]; PP_dynamic ppEffectCommit 0; PP_film = ppEffectCreate ["FilmGrain",2000]; PP_film ppEffectEnable true; PP_film ppEffectAdjust [0.14,1,1,0.5,0.5,true]; PP_film ppEffectCommit 0; pp_Color = ppEffectCreate ["ColorCorrections", 1502]; pp_Color ppEffectEnable true; pp_Color ppEffectAdjust [1, 0.6, 0, [0, 0.1, 0.2, 0], [0, 1, 1.2, 0], [1, 1, 1, 0]]; pp_Color ppEffectCommit 0; pp_Color ppEffectForceInNVG true; waitUntil {(currentVisionMode player) != 1}; ppEffectDestroy PP_radial; ppEffectDestroy PP_dynamic; ppEffectDestroy pp_Color; }; Концовка Создаем модуль Закончить сценарий и триггер Делаем свои условия и пишем в модуле "Задаваемый тип" - End1 description.ext class CfgDebriefing { class End1 { title = "Задача выполнена"; subtitle = "Конец 1 миссии"; description = "Вы отлично зачистили пригород<br/>Готовьтесь к следующей атаке."; picture = "n_inf"; pictureColor[] = {0.0,0.5,0.0,1}; }; }; picture - это маркер (F6 в редакторе, наводим на любой маркер и ниже пишется его название) Маркеры тут https://community.bistudio.com/wiki/Arma_3:_CfgMarkers Что получается Загрузочный экран Текст заполнения слева сверху и снизу(типа подсказки) egl_lv426flat - название вашей карты (см.название файла вашей миссии, после точки) description.ext class CfgWorlds { class egl_lv426flat { author = "Территория: Восточная Европа"; description = "Психиатрическая больница"; pictureMap = "ваша_картинка.jpg"; pictureShot = "ваша_картинка.jpg"; loadingTexts[] = { "Ваш_текст.", "Ваш_текст.", "Ваш_текст.", "Ваш_текст.", "Ваш_текст." }; }; }; Пример Эффект будто вас ранило call BIS_fnc_indicateBleeding; Землетрясение [1] call BIS_fnc_earthquake; Существуют от 1 до 4. Музыка Можно прописывать музыку, как через CfgSounds, так и CfgMusic Но первый вариант будет накладываться друг на друга, если ваша первая музыка не закончила играть. description.ext class CfgSounds { class boevoirubej { name = "boevoirubej"; sound[] = {"sound\boevoirubej.ogg", 1,1}; titles[] = {}; }; } Или class CfgMusic { class theend { name = ""; sound[] = {\sound\theend.ogg, 4.0, 1.0}; }; } Это имя - название вашей музыки Теперь идем дальше - нам нужна сама музыка. Создаем в папочке миссии папку и называем ее sound И теперь кидаем туда музыку, НО. Название должно строго соответствовать как в Description(или наоборот) Формат файла должен быть .ogg С этим мы закончили. Теперь в арме создаем триггер и пишем в нем playsound "название вашей музыки в Description"; Вызов музыки можно делать в зависимости, как вы приписали ее выше. 3 вариантами. playsound "boevoirubej"; playmusic "theend"; Ob1 say3D ["music", 50]; ^- последний вариант запускается через триггер и включается на объекте "Ob1".ЯВЛЯЕТСЯ ЗВУКОМ! И все. Заходим проверяем, слушаем. Музыка "радио" Работает так же как выше, просто имеет другое написание От Братишки В инициализацию объекта пишем: this addAction ["Включить радиостанцию", { params ["_target", "_caller", "_actionId", "_arguments"]; _target say3D ["music", 50]; removeAllActions _target; }, nil, 6, true, true, "", "", 6]; description.ext class CfgSounds { sounds[] = {}; class music { name = "music"; sound[] = {"sound\music.ogg", 1, 1}; titles[] = {0,""}; }; }; Не забываем закинуть саму музыку Музыка "радио" альт Создаем в папочке миссии папку и называем ее sounds Кидаем туда нашу музыку description.ext class CfgSounds { sounds[] = {}; class вашамузыка { name = "вашамузыка"; sound[] = {"\sounds\вашамузыка.ogg", 300, 1}; titles[] = {0,""}; }; }; ТЕПЕРЬ! Задаем имя переменной объекту (в моем случае c1) И в инициализации вбиваем это c1 addAction ["Включить музыку" , {c1 say3D [ "3Dsound", 50, 1]; RemoveAllActions (_this select 0) select 0;}, [], 6, true, true, "", "", 6]; Транспорт Закрыть двери у транспорта Человек будучи в этом транспорте не сможет вылезти или пересесть vehicleName lock lockstate - ПРИМЕР jeep lock 2 vehicleName - имя переменной у машины lockstate: 0-разблокировано 1-по умолчанию 2-заперто 3-заблокирован для игрока Заблокировать инвентарь транспорта Невозможно залутать транспорт this lockInventory true; Частичное ограничение дверей транспорта Человек может сесть только за водителя, пересаживаться или садиться в другие места нельзя this lockCargo true; Очистить инвентарь транспорта Каждый код удаляет определенный вид того или иного лута clearWeaponCargoGlobal this; clearMagazineCargoGlobal this; clearItemCargoGlobal this; clearBackpackCargoGlobal this; Ограничение водительской двери транспорта Человек может пересесть или выйти, но обратно за водителя - нет this lockDriver true; Бесконечные патроны В инициализации БЕЗ ПЕРЕЗАРЯДКИ this addEventHandler ["fired",{(vehicle (_this select 0)) setvehicleammo 1;}]; Бесконечный боезапас помощь комментария от An!s!mov В инициализации С ПЕРЕЗАРЯДКОЙ this addEventHandler ["reloaded", {(_this select 0) addMagazine ((_this select 3) select 0);}]; Фонарики, фары, лампы Фонарик у бота 3 вида использования для удобств: this enableGunLights "forceOn"; - только включает фонарик.Добавлять надо ручками! this addPrimaryWeaponItem "acc_flashlight"; this enableGunLights "forceOn"; - добавляет И включает фонарик юниту. this unassignItem "NVGoggles"; this removeItem "NVGoggles"; this addPrimaryWeaponItem "acc_flashlight"; this enableGunLights "forceOn"; - убирает ПНВ, добавляет и включает фонарик. Включаем фары у транспорта Транспорт - ПУСТОЙ this switchLight "ON"; помощь комментария от Snezhok this setPilotLight true; - прописываем в инициализации технике this disableAI "LIGHTS"; - прописываем пилоту/водиле Мерцающие фонари В инициализации пишем Лампы if (isServer) then { l13 = this spawn { while {alive _this} do { _this switchLight "OFF"; sleep (random 4); _this switchLight "ON"; sleep (random 4); }; }; }; Фонарик на оружии if (isServer) then { l13 = this spawn { while {alive _this} do { _this enableGunLights "ForceOff"; sleep (random 4); _this enableGunLights "ForceOn"; sleep (random 4); }; }; }; CfgIdentities Изменение лиц у игроков у ботов можно в идентификации редактора поменять У игроков по умолчанию ставится его лицо в настройках В инициализации пишется следующая команда: this setFace "лицо"; Узнаем тут Или тут https://community.bistudio.com/wiki/Arma_3_CfgIdentities Изменение голоса у игроков У игроков по умолчанию ЕСЛИ с модом АСЕ голос - отсутствует В инициализации пишется следующая команда: this setspeaker "голос"; Узнаем тут Индивидуальность персонажей Выше изложен 1 вариант, но тут будет конкретно тот случай, когда это будет работать в мультиплеере всегда. Лицо, голос, позывной группы, тон голоса, маска(ну то что на лице игрока) Выглядит это вот так: description.ext class CfgIdentities { class Pawel { name = "Pawel"; nameSound = "None"; face = "CamoHead_White_09_F"; glasses = "None"; speaker = "Male01ENGB"; pitch = 0.9; }; class Wel { name = "Wel"; nameSound = "None"; face = "CamoHead_Greek_07_F"; glasses = "None"; speaker = "Male04ENGB"; pitch = 1.1; }; } Там где "None" это не значит что его нету, просто это означает, что оно не используется !!!Важно - обязательно следите за расстановкой скобочек. Можете даже покликать на них и понять какая скобка с какой связывается, если "конечной" нету, то в миссии вам скорее всего выдаст ошибку, мол на такой то линии у вас некорректно и тд. Теперь, мы молодцы поставили эти значения - что дальше? Дальше мы создаем триггер(можете хоть на всю карту) и указываем в нем Повторение !Пишем нашим юнитам имя переменной - например solda В триггере пишем следующее: solda setIdentity "Pawel"; solda2 setIdentity "Wel"; И все. Проверяем, умераем - смотрим, что все работает прекрасно и радуемся что теперь в нашем африканском сценарии не белые воюют друзья,а темные. Анимации Лично я использую обе команды this switchMove "анимация_01"; ^- используется имя переменной 0 = this spawn{_this switchMove "анимация_01";}; Одну на юните, а другую в триггере. POLPOX (для удобств) Пример this switchMove "Acts_AidlPercMstpSnonWnonDnon_warmup_2_loop"; Анимация - смерть (для ботов) Убираем хп Выключаем моделирование 0 = this spawn{_this switchMove "Acts_StaticDeath_04";}; Анимация - брифинг либо введение Триггер POLPOX (для удобств) Даем юнитам которые будут в анимации имя переменной (gg1 gg2 gg3 и тд) Создаем 2 триггера Пишем в первом например gg1 switchMove "Acts_C_in1_briefing"; gg2 switchMove "Acts_Executioner_StandingLoop"; gg3 switchMove "Acts_AidlPercMstpSnonWnonDnon_warmup_1_loop"; Во втором пишем (выход из анимации, не забываем про время после которого он активируется) gg1 call BIS_fnc_ambientAnim__terminate; gg1 switchMove ""; gg2 call BIS_fnc_ambientAnim__terminate; gg2 switchMove ""; gg3 call BIS_fnc_ambientAnim__terminate; gg3 switchMove ""; Рекомендую использовать на переходах затемнение экрана Использование POLPOX позволяет вам точно определить и затестить прямо в редакторе как будет двигаться или стоять юнит, выбор анимаций можете делать прям там, инструкция по применению есть в моде. Необязательно включать его в пресет, все работает без него после теста и без ошибок Примеры анимаций Анимация Анимация HubBriefing_loop Acts_AidlPercMstpSloWWrflDnon_warmup_8_loop Acts_AidlPercMstpSloWWrflDnon_warmup_1_loop Acts_AidlPercMstpSloWWpstDnon_warmup_2_loop Acts_passenger_flatground_leanright Acts_Briefing_SA_StartLoop Анимация - ранение (для ботов) от SHMEL При получении урона, бот падает, бросает основное оружие. Триггер bot_ranen.sqf LOP - имя бота sq - игрок Условие триггера (getDammage LOP) > 0.0000001 Активация null = [] execVM "bot_ranen.sqf" bot_ranen.sqf _weapon = currentWeapon LOP; LOP RemoveWeapon (currentWeapon LOP); sleep .1; _weaponHolder = "WeaponHolderSimulated" createVehicle [0,0,0]; _weaponHolder addWeaponCargoGlobal [_weapon,1]; _weaponHolder setPos (LOP modelToWorld [0,.2,1.2]); _weaponHolder disableCollisionWith LOP; _dir = random(360); _speed = 1.5; _weaponHolder setVelocity [_speed * sin(_dir), _speed * cos(_dir),4]; sleep .2; LOP lookAt sq; LOP switchMove "Acts_CivilInjuredLegs_1"; Беседы с ботом от Dominion1859 Бот параллельно звуковому файлу шевелит губами, имитируя речь. Триггер Duckspeak.sqf Пример активации: [Vasya, "VasyaSpeech", false] execVM "Duckspeak.sqf" Примечание: Если для звука нужны субтитры, лучше их сразу прописать в description.ext Duckspeak.sqf params ["_boy", "_sound", ["_is3D", true]]; // _boy - имя бота // _sound - класснейм звука // _is3D - true/false. Если true, то звук будет проигран в 3D. По-умолчанию true. if (_is3D) then // Код для 3D-звука { _sound = _boy say3D _sound; _boy setRandomLip true; waitUntil {isNull _sound}; _boy setRandomLip false; } else // Код для звука, не в 3D { _sound = playSound _sound; // Используется playSound, так как его состояние можно отследить (т.е у него есть return value), в отличие от say. _boy setRandomLip true; waitUntil {isNull _sound || !alive _boy}; // Из-за того, что playSound не привязан к объектам (в отличие от say), приходится добавлять условие на отслеживание состояния "говорящего" _boy setRandomLip false; if (!alive _boy) then {deleteVehicle _sound}; } Триггеры, условие, задача и Description Служит базой для: Скриптов; Воспроизведения звука, голоса, музыки, окружения, слоев интерфейса; Окончания или поражения для сценария; И прочего.. Активатором может быть как любой объект(проп) так и человек, игрок, ИИ, группа людей(задать владельца триггера) С объектами на сценарии можно взаимодействовать как на прямую через команду "this" так и через имя переменной - второй в основном используется если подключается триггер для активации. Создание задания "Создать дневниковую запись" - означает Инструктаж, боевая сводка и прочая хрень описывающая действия в которые попали бойцы "Создать задание" - логично задание,в него входит описание задания и название. Единица, указанная в триггере описанная выше - активирует его и задание будет не выполнено вплоть до того пока не сделаешь условия другого триггера (Да, их нужно минимум 2). Например: Тебе нужно взорвать дом. Ставишь 2 триггера - 1 на месте активации, другой на месте выполнения задания. 1 - триггер создает задание, а условия выполнения задания(2 триггера) это отсутствия данного объекта.(Т.е после ПОВРЕЖДЕНИЯ или УНИЧТОЖЕНИЯ объекта задание будет выполнено) "Установить назначения задания и Установить описание задания" - не знаю зачем это существует, расширенная функция Создание и состояние задания нужно синхронизовывать между собой, чтобы оно РАБОТАЛО. Если нужно чтобы триггер активировался не сразу - делаем следующее: Значение идет в секундах, в данном случае через 10 секунд активируется триггер. Так можно строить целые разговоры из нескольких триггеров и текста. Главная задача Создаем 3 задачи Первая будет как "Заголовок" Идентификатор род.задачи ставим имя - task1 Номер задания - task1 Вторая и третья как задачи и так далее Идентификатор род.задачи ставим имя - task1 Номер задания - task2 и task3 Для того чтобы сделать вторую главную задачу, делаем тоже самое, только просто меняем имя (task1). Аналогично. Выполнения задач и самой главной задачи - это условия вашего триггера. У меня выполнение главной задачи - условие, что все цели ликвидированы. Условия Значения логики Логическое ИЛИ || или or Логическое И && или and Логическое НЕ ! или not Соответственно к примеру !alive name Условие активируется когда объект \ юнит уничтожен - обратное значение alive name Можно так же задавать условия чтобы активация была засчитана при уничтожении нескольких объектов \ юнитов. Игрок в зоне триггера player in thislist Игрок сел в машину (jeep) player in jeep У игрока винтовка в руках player hasWeapon "класс оружия" Если необходимо, чтобы триггер был активен сразу то. call{true} Рекомендую для сцен в начале сценария, текста, выдачи заданий, либо для анимаций, например, смерть бота и тд. Description Является конфигом для вашей миссии. Крутая вещь, можно проводить в ней работы от простой замены лица, до каких-нибудь кастомных вещей, например музыки. Заниматься этим можно непосредственно сидя в сценарии, да даже не можно, а нужно Переходим в папку с миссией(там должна быть ваша миссия - mission.sqm) и в этой папочке создаем Текстовой документ и теперь переименовываем его. Пишем - description.ext - файл становится "белым", либо нет. Теперь открываем его через Notepad++ или любую другую программу которая в принципе выполняет такую же роль(можете даже вообще не парится и писать все в Текстовом документе и только потом прописать description.ext) Вот ссылка на Description https://community.bistudio.com/wiki/Description.ext Прочие настройки Сейв зона Создаем триггер на карте В условиях this && player in thisList Активация inZoneH = [] execVm "inSafeZone.sqf"; Деактивация null = [] execVM "leftSafeZone.sqf"; Повторяемый Далее переходим в файлы миссии и создаем inSafeZone.sqf leftSafeZone.sqf inSafeZone.sqf hint "Безопасная зона"; player allowDamage false; while {true} do { player action ["SwitchWeapon", player, player, 299]; sleep 1; }; leftSafeZone.sqf terminate inZoneH; hint "Отправляемся в рейд"; player allowDamage true; player action ["SwitchWeapon", player, player, 0]; Сохраняем. Заходим в обратно в арму и запускаем. Персонаж будучи в триггере не должен брать оружие и наносить урон другим. ВАЖНОЕ ПРИМЕЧАНИЕ! данные актуальны с модом асе! Для простой версии - напишите вместо 299 - 100, это в inSafeZone Сохранение инвентаря после смерти Данный скрипт сохраняет вещи, патроны, гранаты и прочее, которые были перед смертью игрока. (Актуально с возрождениями, но не актуально с модом ace, т.к там эта ф-ция есть) В файлах миссии создаем: onPlayerKilled.sqf onPlayerRespawn.sqf onPlayerKilled.sqf player setVariable ["Saved_Loadout",getUnitLoadout player]; removeAllActions player; player setVariable ["SHF_Enabled",nil,true]; playerDeadBody = player; onPlayerRespawn.sqf player setUnitLoadout (player getVariable ["Saved_Loadout",[]]); Либо альтернатива В файлах миссии создаем: initPlayerLocal.sqf initPlayerLocal.sqf player addEventHandler ["Killed", {loadout = getUnitLoadout player; true}]; player addEventHandler ["Respawn", {player setUnitLoadout loadout; loadout = nil; true}]; Радиомолчание группы Данный скрипт отключает переговоры группы. В файлах миссии создаем: InitPlayerLocal.sqf Init.sqf InitPlayerLocal.sqf enableRadio false; enableSentences false; 1 fadeRadio 1; Init.sqf if ((!isServer) && (player != player)) then {waitUntil {player == player};}; enableRadio false; enableSentences false; 1 fadeRadio 1; Поведение ботов Отношения сторон Данная команда нужна, чтобы изменить отношения фракций во время сценария. west = blufor east = opfor resistance = independent Пример, делает дружелюбие между Независимыми и Блюфоровцами resistance setFriend [west, 1]; west setFriend [resistance, 1]; Обратное значение west setFriend [resistance, 0]; resistance setFriend [west, 0]; Больше информации тут: https://community.bistudio.com/wiki/Side_Relations "Вызов подкрепления" у противника Создаем такой триггер, например на 500м. Тип - Пропустить точку, активация - в моем случае любой Блюфоровец, в типе активации - обнаружен Независимыми(т.е юнит обнаружил солдата BLUFOR в данном триггере). Логично что в триггере должны быть как те и другие юниты(Кто-то же должен их обнаружить) Наименование Значение Тип Пропустить точку Активация BLUFOR Тип активации Обнаружен независимыми Создаем группу бомжей И указываем у них(ЕСЛИ связаны с техникой!(Т.е приедут на ней)) 4 маршрутные точки: 1 Точка - ОСТАНОВИТЬСЯ - к ней мы прикрепляем триггер через "Задать активацию точки" 2 Точка - СЕСТЬ - юниты войдут в технику после активации триггера(пока триггер не активен, они будут стоять на 1 точке) 3 Точка - ВЫЙТИ - т.е любое место где вам угодно чтобы юниты высадились 4 Точка - НАЙТИ И УНИЧТОЖИТЬ - либо если что-то далеко то ПЕРЕМЕЩЕНИЕ, а потом НАЙТИ И УНИЧТОЖИТЬ. Засада Создаем группу ботов - поведение и положение тела указываем следующие: Наименование Значение Режим боя Не стрелять, даже если не стреляют Поведение Скрытно либо Беспечно Боевой порядок Любой Скоростной режим Любой Положение юнита Лежа либо сидя Создаем модуль - "Установить режим" и делаем в нем следующее: Наименование Значение Применить Группы Режим боя Открыть огонь Поведение Бой Позиция Пригнуться либо встать Создаем триггер - любой который нравится, а там указываем кто его активирует! И теперь самое простое: синхронизировать между собой это все - группы ботов с модулем "Установить режим" - а модуль с триггером. Итого что имеем - активатор делает активацию триггера, и боты выходят из пассивного режима в боевой. Контроль и атака от Vivian Заставляет бота целиться в заданную цель unit1 doTarget unit2; Заставляет выбрать оружие unit1 fireAtTarget [unit2, "wea" ] wea это код оружия Заставляет стрелять по выбранной цели unit1 doFire unit2; Движение юнита в бою Не двигаться doStop this; - бот останется на месте Альтернатива. call{this disableAI "move";} - бот останется на месте и НЕ будет поворачиваться (только 40 градусный сектор перед ним) Альтернатива. this DisableAi "PATH" - бот останется на месте и будет поворачиваться на 360 градусов Задать скорость юниту Имя Значение бег this forcespeed 8; трусцой this forcespeed 4; ходьба this forcespeed 2; Задать скорость для транспорта jeep setCruiseControl [скорость, true/false]; jeep - имя переменной транспорта Имя Значение True транспорт сам будет поддерживать заданную скорость, если водитель не будет жать тормоз/назад (можно увеличивать газ и превысить заданный минимум). False транспорт получит максимальное значение скорости и не сможет превысит его независимо, от тормоза/газа который прожимает водитель. Задать высоту полёта MyHeli FlyInHeight 100; (MyHeli - имя переменной) (100 - высота(Пример для вертолета:Сначала идет подъем на нужную высоту, а только потом движение)) Либо задаем напрямую через this Принудительная посадка вертолета от Dominion1859 Скрипт, который заставляет вертолет сразу садиться, а не кружить над посадочной площадкой до бесконечности Триггер Landing.sqf Landing.sqf params ["_heli", "_helipad", ["_mode", "LAND"]]; // _heli - имя вертолета // _heipad - имя посадочной площадки (желательно невидимой) // _mode - String. Режимы посадки. Доступны "LAND", "GET IN", "GET OUT". По-умолчанию "LAND". _heli move getPosATL _helipad; sleep 3; while { alive _heli && not unitReady _heli } do{ sleep 1;}; if (alive _heli) then{ _heli land _mode;}; Активация где угодно: [_heli, helipad, "LAND"] execVM "Landing.sqf" Запрещает юниту отступать this allowfleeing 0; если 1 - разрешает Стрельба по объектам strelok1 doSuppressiveFire (getposASL target1); strelok1 - стрелок target1 - имя переменной(цель) Альтернатива s doTarget t; s doSuppressiveFire t; Альтернатива от Dominion1859 Отменяет приказ на движение и заставляет юнит начать стрелять. params ["_target", "_shooter", ["_infinite", false], ["_ammomode", false]]; // _target - объект-цель. Можно сделать невидимым // _shooter - тот, кто будет стрелять. Можно указать несколько юнитов (как массив), но только если они входят в одну группу // _infinte - true или false. Если true, то стрельба будет вестись до исчерпания боезапаса. По-умолчанию false. // _ammomode - true или false. Если true, то боезапас у стрелка станет бесконечным. _i = 1; _target2 = getPosASL _target; if (_infinite) then { for "_i" from 1 to 10 do { _shooter doSuppressiveFire _target2; sleep 1; _i = 1; if (_ammomode) then {_shooter addEventHandler ["reloaded", {_shooter setVehicleAmmo 1}]}; }; } else { _shooter doSuppressiveFire _target2; if (_ammomode) then {_shooter addEventHandler ["reloaded", {_shooter setVehicleAmmo 1}]} } Поведение ботов ч2 Подавляющий огонь от Dominion1859 Боевая машина начинает стрелять по цели, пока цель либо техника(сам стрелок) не будет уничтожена. Триггер Firemis.sqf Пример в триггере [BTR, Tar, currentMuzzle (gunner (BTR)), 60, true] execVM "Firemis.sqf" Firemis.sqf params ["_shooter", "_target", "_muzzle", ["_RPM", 60], ["_infinite", false]]; // _shooter - имя техники, который будет стрелять. // _target - имя цели. Или AGL-координаты цели // _muzzle - класснейм ствола. Также можно использовать currentMuzzle (gunner (BTR)) // _RPM - число. Кол-во выстрелов в минуту. По-умолчанию 60. //_infinite - true или false. Если true, то боезапас у техники станет бесконечным. По-умолчанию false. _i = 0; _RPM = 60/_RPM; for "_i" from 0 to 2 do { _cel = _target call BIS_fnc_position; gunner _shooter lookAt _cel; [_shooter, _muzzle] call BIS_fnc_fire; sleep _RPM; if (_infinite) then {_shooter setVehicleAmmo 1}; hint str _i; _i = _i-1; if (!alive _target) exitWith {}; // Условие на прекращение стрельбы. По-умолчанию это условие смерти цели, но можно вписать что угодно, лишь бы было true. }; Если заменить lookAt на doWatch, то скрипт будет работать и на пехоту тоже. Правда, пехтура тогда будет в землю стрелять, а не в цель. Подавляющий огонь.Альтернатива Можно прямо при вызове скрипта писать условие на прекращение стрельбы Пример в триггере [BTR, Tar, currentMuzzle (gunner (BTR)), 60, true, "!alive BTRD"] execVM "Firemis.sqf" Firemis.sqf params ["_shooter", "_target", "_muzzle", ["_RPM", 60], ["_infinite", false], ["_condition", "!alive _target"]]; // _shooter - имя техники, который будет стрелять. // _target - имя цели. Или AGL-координаты цели // _muzzle - класснейм ствола. Также можно использовать currentMuzzle (gunner (BTR)) // _RPM - число. Кол-во выстрелов в минуту. По-умолчанию 60. // _infinite - true или false. Если true, то боезапас у техники станет бесконечным. По-умолчанию false. // _condition - строка. Условие, при котором прекратится стрельба. По-умолчанию "!alive _target" _RPM = 60/_RPM; _condition = compile _condition; for "_i" from 0 to 2 do { _cel = _target call BIS_fnc_position; gunner _shooter lookAt _cel; [_shooter, _muzzle] call BIS_fnc_fire; sleep _RPM; _i = _i - 1; if (_infinite) then {_shooter setVehicleAmmo 1}; if (call _condition) exitWith {}; }; Полезные ссылки 3den Enhanced Работа из мастерской для Arma 3 Автор: R3vo Description This modification adds new functionalities to the Eden Editor without creating any dependencies for players. That means scenario editors can use this mod to make their life easier without making the life of... Achilles Работа из мастерской для Arma 3 Автор: Kex DEPRECATION NOTICE ACHILLES IS NO LONGER UNDER ACTIVE DEVELOPMENT BY THE CORE DEV TEAM. PLEASE CHECK OUT ZEUS ENHANCED (ZEN) INSTEAD. Либо это(Не рекомендую использовать Ахилес и Зевс одновременно, функции они выполняют одинаковые, а некоторые панели будут только мешать(будут накладываться друг на друга)) Zeus Enhanced Работа из мастерской для Arma 3 Автор: mharis001 Zeus Enhanced Zeus Enhanced, also known as ZEN, is an Arma 3 mod aimed at improving and expanding the functionality of the Zeus real-time editor. Дополнение к Ахилесу либо к Зевсу Additional Zeus Things (Zeus Enhanced & Ares Achilles) Работа из мастерской для Arma 3 Автор: icdb / cineafx Both ZEN as well as Ares Achilles are supported! Adds to zeus action menu: Check units gear (currently disabled) Open units ace arsenal ACE Configure pylons (with extended all pylons mode) Disable certain sensors on a... Мод добавляющий скрытые предметы O&T Expansion Eden Работа из мастерской для Arma 3 Автор: Trager Make it easy for yourself to access hidden content and content without classes in configurations. A lot of content created for official missions will be available to you in the Eden editor. Для анимаций POLPOX's Artwork Supporter Работа из мастерской для Arma 3 Автор: POLPOX This is the must-have MOD to take a still image. Tutorial article available! Enhanced version is available! Thanks to: A3 Hub Discord Server for making this happened! ConservativeJustice for the two pictures in the top! Полезные модули Простые модули Закрыть карту Модуль позволяет закрасить ненужные участки карты темным цветом. Размер можно настроить в трансформации, либо нажать клавишу "5" предварительно нажав на модуль. Скрыть объекты ландшафта Ну тут все логично, скрывает не нужные объекты - редактируется так же. Животные Существует 2 модуля - один из них более редактируемый(там можно настроить радиус размещения в районе) Показать\скрыть объект Одна подфункция скрывает объекты, другая показывает. Постобработка Крутая вещь, можно накладывать другой тон атмосфере Ускорение времени Устанавливает с какой скоростью идет время на сценарии Диапазон 0.1 ... 120 Пропустить время Комбинация модулей Вызов поддержки Обязательно синхронизируем между собой! -Вроде перестает работать если человек умерает(для сетевых режимов с воскрешением) Сектор Создаем модуль Сектор Далее переходим к логическим элементам. Стороны > Выбираем стороны Например OPFOR и BLUFOR Далее сам сектор. Настраивайте под свой вкус и цвет Мой пример Обязательно синхронизируйте между собой! Два элемента к сектору! Управление группами Создаем модуль "Управление группами - командир" и "Управление группами - подчиненный" Синхронизируем между собой их Далее Синхронизируем с условным командиром (игрок) модуль командира и синхронизируем модуль подчиненных с нпс\техникой\группами. Каждый модуль подчиненных идет на свою группу\нпс\технику. И все. Заходим на игровой слот и жмем сочетание клавиш CTRL + SPACE Ниже появляются группы в моем случае это танк и группа пехоты Цифра соответствует клавишам F1...F10, но так же можно выбирать группы через мышку. Далее просто жмем на нужную группу и даем ей задачу.Управлять можно и через карту (Будет показан количественный процент группы) Виртуальный Зевс Практически ничем не отличается от телесного, но как по мне удобнее этот вариант Создаем модуль Мастер игры Переходим в панель Логические элементы - Виртуальные объекты - создаем любого Зевса Ставим обоих и прописываем имя переменной у логики и владельца у модуля Плюсы Можно подслушивать разговоры игроков и так же говорить по рации (TaskForceRadio) Минусы Взаимодействие с триггерами, а именно - если у вас есть триггеры где используется условие Любой игрок - Зевс тоже игрок - соответственно он может задеть триггер Ограничение по зоне Создаем триггер Создаем модуль "Ограничение по зоне" Триггер > Повторяемый Модуль настраиваем под себя. Применяем для игровых групп / юнита Инвертированная граница: Нет > работает если вне триггера; Да > работает если в триггере. Предупреждение: можно написать что будет предупреждением. Я писал так hint "Вы покидаете территорию сценария. Вас поглотит пустошь." Санкции: по умолчанию это спаун мины под ногами. Я же пишу так _this setdamage 1; Синхронизируем. Триггер > модуль > игроки / группы Погода Туман time setFog fog time - переход к новому значению(туману) fog - плотность тумана. Диапазон 0...1 Пример 15 setFog 0.5; Горный туман, начинается с 70 м ASL и сгущается тем больше, чем выше вы поднимаетесь: 0 setFog [1, -1, 70]; Долина тумана, начинается с 60 м ASL и сгущается больше, чем ниже вы спускаетесь: 0 setFog [1, 1, 60]; Туман на воде: 0 setFog [1, 1, 0]; Убираем траву В инициализации газонокосилки пишем следующее: setTerrainGrid 50; Постобработка Здесь буду собирать что-то вроде каталога, чтобы не тратить свое время на поиски по интернету и использования модов. Init.sqf "Ближний восток, сухость, песчаная буря" [] spawn { grain_sand = 0; while {grain_sand<2} do { effect_screen = ppEffectCreate ["FilmGrain", 2000]; effect_screen ppEffectEnable true; effect_screen ppEffectAdjust [0.1,0.1,grain_sand,0.1,0.1,true]; effect_screen ppEffectCommit 0; grain_sand = grain_sand + 0.1; sleep 0.5; }; }; [] spawn { sleep 5; col_fct =1; while {col_fct>0.86} do { "colorCorrections" ppEffectAdjust[col_fct, 1, 0.01, [-0.14, 0.17, 0.33, col_fct-1],[col_fct, -0.4, col_fct, col_fct],[-0.57, col_fct, -1.2, col_fct]]; "colorCorrections" ppEffectCommit 0; "colorCorrections" ppEffectEnable true; col_fct = col_fct-0.001; sleep 0.1; }; }; "Реализм" "ColorCorrections" ppEffectEnable true; "ColorCorrections" ppEffectAdjust [0.88, 0.88, 0, [0.2, 0.29, 0.4, -0.22], [1, 1, 1, 1.3], [0.15, 0.09, 0.09, 0.0]]; "ColorCorrections" ppEffectCommit 0; "Постапокалипсис" "colorCorrections" ppEffectEnable true; "colorCorrections" ppEffectAdjust [1, 0.9, -0.002, [0.0, 0.0, 0.0, 0.0], [1.0, 0.6, 0.4, 0.6], [0.199, 0.587, 0.114, 0.0]]; "colorCorrections" ppEffectCommit 0; "Ночной охотник" "colorCorrections" ppEffectEnable true; "colorCorrections" ppEffectAdjust [1, 1.1, 0.0, [0.0, 0.0, 0.0, 0.0], [1.0,0.7, 0.6, 0.60], [0.200, 0.600, 0.100, 0.0]]; "colorCorrections" ppEffectCommit 0; "Золотая осень" "colorCorrections" ppEffectEnable true; "colorCorrections" ppEffectAdjust [1, 1, 0, [0.0, 0.0, 0.0, 0.0], [1.8, 1.8, 0.3, 0.7], [0.199, 0.587, 0.114, 0.0]]; "colorCorrections" ppEffectCommit 0; "Африка" "colorCorrections" ppEffectEnable true; "colorCorrections" ppEffectAdjust [1, 1.3, 0.001, [-0.11, -0.65, -0.76, 0.015],[-5, -1.74, 0.09, 0.86],[-1.14, -0.73, 1.14, -0.09]]; "colorCorrections" ppEffectCommit 0; "Афган" "colorCorrections" ppEffectEnable true; "colorCorrections" ppEffectAdjust [0.9, 0.9, 0, [0, 0.1, 0.25, -0.14], [1, 1, 1, 1.26], [0.15, 0.09, 0.09, 0.0]]; "colorCorrections" ppEffectCommit 0; "Ближний восток v2" "colorCorrections" ppEffectEnable true; "colorCorrections" ppEffectAdjust [0.9, 1, 0, [0.1, 0.1, 0.1, -0.1], [1, 1, 0.8, 0.528], [1, 0.2, 0, 0]]; "colorCorrections" ppEffectCommit 0; "Коричневый" "colorCorrections" ppEffectEnable true; "colorCorrections" ppEffectAdjust [1,1,0,[0.1,0.2,0.3,-0.3],[1,1,1,0.5],[0.5,0.2,0,1]]; "colorCorrections" ppEffectCommit 0; "Серый" "colorCorrections" ppEffectEnable true; "colorCorrections" ppEffectAdjust [1.0, 1.0, 0.0,[1.0, 1.0, 1.0, 0.0],[1.0, 1.0, 0.9, 0.35],[0.3,0.3,0.3,-0.1]]; "colorCorrections" ppEffectCommit 0; "Холод, два варианта" "colorCorrections" ppEffectEnable true; "colorCorrections" ppEffectAdjust [1.0, 1.0, 0.0,[0.2, 0.2, 1.0, 0.0],[0.4, 0.75, 1.0, 0.60],[0.5,0.3,1.0,-0.1]]; "colorCorrections" ppEffectCommit 0; "colorCorrections" ppEffectEnable true; "colorCorrections" ppEffectAdjust [1, 1, 0, [0.0, 0.0, 0.0, 0.0], [0.6, 1.4, 0.6, 0.7], [0.199, 0.587, 0.114, 0.0]]; "colorCorrections" ppEffectCommit 0; "Зимний голубой и белый" "colorCorrections" ppEffectEnable true; "colorCorrections" ppEffectAdjust [1.1, 1.3, 0.0, [0.5, 0.5, 0.1, -0.1], [0.4, 0.75, 1.0, 0.60], [0.5,0.3,1.0,-0.1]]; "colorCorrections" ppEffectCommit 0; "colorCorrections" ppEffectEnable true; "colorCorrections" ppEffectAdjust [1, 1, 0, [0.31, 0.31, 1.0, 0.1], [0.85, 0.85, 0.92, 0.48], [1 , 1, 1, 0.03]]; "colorCorrections" ppEffectCommit 0; "Перенасыщение" "colorCorrections" ppEffectEnable true; "colorCorrections" ppEffectAdjust [1.01, 1.18, -0.04, [1.0, 1.4, 0.8, -0.04], [0.55, 0.55, 0.72, 1.35], [0.699, 1.787, 0.314, 20.03]]; "colorCorrections" ppEffectCommit 0; Вызов поддержки Артобстрел от Dominion1859 Триггер Artobstrel.sqf Пример в триггере [[1497.998, 6609.139, 150], 15, 50, 15, "BO_GBU12_LGB", [1,2]] execVM "Artobstrel.sqf"; Объяснение [[X, Y, Z], радиус, высота, количество, "BO_GBU12_LGB", [1,5]] execVM "Artobstrel.sqf"; [X, Y, Z] - координаты цели радиус - разброс спавна, по-умолчанию 100 метров высота - высота спавна снарядов, по-умолчанию 200 метров количество - количество выпускаемых снарядов (по-умолчанию 5) BO_GBU12_LGB - класс снаряда (технически можно использовать любой объект), по-умолчанию "стреляем" авиабомбой; 1,5 - минимальная и максимальная задержка в спавне снарядов, по-умолчанию задержка от 1 до 5 секунд; Artobstrel.sqf params ["_target",["_rad", 100], ["_alt", 200], ["_colvo", 5], ["_snar", "BO_GBU12_LGB"], ["_time", [1,5]]]; _i = 1; for "_i" from 1 to _colvo do { _result = _target vectorAdd [random _rad, random _rad, _alt]; _result2 = _result vectorDiff [random _rad, random _rad]; // Метод задания точки падения ублюдский, зато прост как пробка _timeMin = _time select 0; _timeMax = _time select 1; _timeRes = _timeMax - _timeMin; sleep (_timeMin + random _timeRes); _bomb = _snar createVehicle _result2; _bomb setVectorDirAndUp [[0, 0, -1], [0, 1, 0]]; // Спавн снаряда "головой" вниз _bomb setVelocity [0, 0, -200]; // Даем саряду пинка. При желании таким образом можно сделать снос в сторону } Пуск крылатой ракеты от Dominion1859 Триггер CruiseMissileLaunch.sqf Пример в триггере [Tonk, VLS, 3, 300, false, false, 35] execVM "CruiseMissileLaunch.sqf" Объяснение Tonk - название цели, в которую будет запущена ракета VLS - название конкретной установки VLS "3" - количество выстрелов, которое сделает VLS. По-умолчанию 1. Максимальный боезапас установки VLS - 36 ракет. 18 обычных и 18 кассетных. "300" - время, которое ракета будет знать, где находится цель. Если время выйдет до того, как ракета поразит цель - она укнется в землю. По-умолчанию 1000 секунд. "false" - true или false. Если true, то следующая ракета будет запущена только после попадания предыдущей По-умолчанию true. "false" - true или false. Если true, то боезапас установки VLS не закончится (логично). "35" - задержка между запусками. Не может быть меньше 20 секунд (время перезарядки). CruiseMissileLaunch.sqf params ["_target", "_ust", ["_salvo", 1], ["_time", 1000], ["_wait", true], ["_infinite", true], ["_delay", 30]]; _i = 1; for "_i" from 1 to _salvo do { west reportRemoteTarget [_target, _time]; // ВСЯ сторона BLUFOR видит цель на радаре _target confirmSensorTarget [west, true]; // ВСЯ сторона BLUFOR узнает о новообноруженном объекте, как о цели _ust fireAtTarget [_target, "weapon_vls_01"]; if (_wait == true) then // Если выставлено условие ожидания, то следующий запуск ракеты произойдет только после погибели предыдущей { _rocket = nearestObject [_ust, "ammo_Missile_Cruise_01_Cluster"]; waitUntil {not alive _rocket}; } else { sleep _delay; // Эта часть срабатывает, если не выставлено условие ожидания }; if (not alive _target) exitWith {hint "Target destroyed"}; // Если цель уничтожена, VLS прекратит стрельбу. Добавлял hint для отладки. Можно ее обыграть повесив на ее место реплику, или вообще удалить if (_infinite == true) then {_ust setVehicleAmmo 1;} else {}; // Восстанавливает боекомплект ракетной установки }; Пуск крылатой ракеты v.2 от Dominion1859 Триггер CruiseMissileLaunch.sqf Пример в триггере [Tonk, VLS, 3, 300, false, 35, 1] execVM "CruiseMissileLaunch.sqf" CruiseMissileLaunch.sqf params ["_target", "_ust", ["_salvo", 1], ["_time", 1000], ["_infinite", true], ["_delay", 16], ["_wait", 0]]; // _target - название цели, или координаты // _ust - название установки VLS // _salvo - количество выстрелов, которое сделает VLS. По-умолчанию 1. Максимальный боезапас установки VLS - 36 ракет. 18 обычных и 18 кассетных. // _time - время, которое ракета будет знать, где находится цель. Если время выйдет до того, как ракета поразит цель - она укнется в землю. По-умолчанию 1000 секунд. // _infinite - true или false. Если true, то боезапас установки VLS не закончится (логично) // _delay - задержка между запусками. Не может быть меньше 16 секунд (время перезарядки) // _wait - 0, 1 или 2. 0 - ракета будет выпущена после окончания _delay (по-умолчанию). 1 - ракета будет выпущена после "смерти" предыдущей. 2 - ракета будет выпущена после "смерти" предыдущей + _delay. Примечание 1: Стрельба по объектам возможна если это юниты, техника (включая турели), и другие объекты, кроме тех, что находятся в группе "Структуры" (при игре без модов) Примечание 2: Почти все объекты из модов (почти!) могут быть целью сами по себе. Объекты из CUP и Q&T Expansion (даже деревья и здания) спокойно работают мишенями. Примечание 3: Если хочется использовать ракеты в качестве поддержки, то в _target прописывать cursorObject или cursorTarget. Примечание 4: Для стрельбы кластерными ракетами нужно где-нибудь прописать турели смену магазина (перезарядка будет долгой, очень долгой) CruiseMissileLaunch.sqf _i = 1; // Блок удара по координатам. По ним обстрел можно вести хоть до посинения if (_target isEqualType []) then { // Создается череп Йорика, на который навешивается неуязвимость, невидимость и неподвижность _skull = createVehicle ["Land_HumanSkull_F", _target, [], 0, "NONE"]; _skull allowDamage false; _skull enableSimulation false; _skull hideObject true; // Собственно запуск ракет for "_i" from 1 to _salvo do { west reportRemoteTarget [_skull, _time]; // ВСЯ сторона BLUFOR видит цель на радаре _skull confirmSensorTarget [west, true]; // ВСЯ сторона BLUFOR узнает о новообноруженном объекте, как о цели _ust fireAtTarget [_skull, "weapon_vls_01"]; if (_infinite) then {_ust setVehicleAmmo 1}; // Восстановление боекомплекта установки // Блок слежения за полетом ракеты switch (_wait) do { case 0: {sleep _delay;}; case 1: { _snar = nearestObjects [_ust, ["ammo_Missile_Cruise_01", "ammo_Missile_Cruise_01_Cluster"], 10]; _rocket = _snar select 0; waitUntil {sleep 1; !alive _rocket}; // Sleep добавлен, дабы не слишком сильно нагружать систему. Паузу можно сделать меньше (не стоит ставить меньше 0.1) }; case 2: { _snar = nearestObjects [_ust, ["ammo_Missile_Cruise_01", "ammo_Missile_Cruise_01_Cluster"], 10]; _rocket = _snar select 0; waitUntil {sleep 1; !alive _rocket}; sleep _delay; }; }; }; } // Блок удара по объекту else { for "_i" from 1 to _salvo do { west reportRemoteTarget [_target, _time]; _target confirmSensorTarget [west, true]; _ust fireAtTarget [_target, "weapon_vls_01"]; if (_infinite) then {_ust setVehicleAmmo 1}; switch (_wait) do { case 0: {sleep _delay;}; case 1: { _snar = nearestObjects [_ust, ["ammo_Missile_Cruise_01", "ammo_Missile_Cruise_01_Cluster"], 10]; _rocket = _snar select 0; waitUntil {sleep 1; !alive _rocket}; }; case 2: { _snar = nearestObjects [_ust, ["ammo_Missile_Cruise_01", "ammo_Missile_Cruise_01_Cluster"], 10]; _rocket = _snar select 0; waitUntil {sleep 1; !alive _rocket}; sleep _delay; }; }; if (!alive _target) exitWith {}; // Прекращение стрельбы в случае уничтожения цели. Необязательная строчка Вызов поддержки ч2 Артобстрел v.2 от Dominion1859 Добавлено условие на досрочное окончание Триггер Artobstrel.sqf Artobstrel.sqf // Скрипт артобстрела с заданными параметрами params ["_target", ["_rad", 100], ["_colvo", 5], ["_snar", "BO_GBU12_LGB"], ["_timer", [1,5]], ["_alt", 200], ["_cond", "false"], ["_update", false]]; // _target - массив или имя юнита/предмета, точка центра зоны спавна снарядов; // _rad - разброс спавна, по-умолчанию 100 метров; // _colvo - количество выпускаемых снарядов (по-умолчанию 5); // _snar - класс снаряда (технически можно использовать любой объект), по-умолчанию "стреляем" авиабомбой; // _timer - массив - минимальная и максимальная задержка в спавне снарядов, по-умолчанию задержка от 1 до 5 секунд; // _alt - высота спавна снарядов, по-умолчанию 200 метров; // _cond - строка. Условие, при котором артобстрел прекратится. По-умолчанию "false"; // _update - true или false. Если true, то зона обстрела будет перемещаться вслед за целью (если в _target указан движущийся объект); // Активация: [[50, 100, 150], 150, 15, "Rocket_04_HE_F", [1,2], 50 true] execVM "Artobstrel.sqf"; // Примечание: если _colvo приравнять к нулю, то обстрел будет вестись бесконечно _pos = _target call BIS_fnc_position; _cond = compile _cond; _timeMin = _timer select 0; _timeMax = _timer select 1; _timeRes = abs _timeMax - _timeMin; // Костыль, который позволяет писать в _time (почти) любые числа в любом порядке. if (_timeRes == 0) then {_timeMin = 1}; // Костыль, делающий минимальную задержку между спавном в 1 секунду. Если не нужно, то эту строчку можно (почти) смело удалить if (_colvo == 0) then { while {true} do { if (_update) then {_pos = _target call BIS_fnc_position}; // Обновление точки спавна снарядов _angle = random 360; // Определение азимута _distance = random _rad * sqrt random 1; // Определение дальности с выравниванием _result = _pos getPos [_distance, _angle]; // Вычисление координат точки _result = _result vectorAdd [0,0,_alt]; sleep (_timeMin + random _timeRes); _bomb = _snar createVehicle _result; _bomb setVectorDirAndUp [[0, 0, -1], [0, 1, 0]]; // Спавн снаряда "головой" вниз _bomb setVelocity [0, 0, -200]; // Даем саряду пинка. При желании таким образом можно сделать снос в сторону if (call _condition) exitWith {}; // Выход из цикла при выполнении условия }; } else { for "_i" from 1 to _colvo do { if (_update) then {_pos = _target call BIS_fnc_position}; // Обновление точки спавна снарядов _angle = random 360; // Определение азимута _distance = random _rad * sqrt random 1; // Определение дальности с выравниванием _result = _pos getPos [_distance, _angle]; // Вычисление координат точки _result = _result vectorAdd [0,0,_alt]; sleep (_timeMin + random _timeRes); _bomb = _snar createVehicle _result; _bomb setVectorDirAndUp [[0, 0, -1], [0, 1, 0]]; // Спавн снаряда "головой" вниз _bomb setVelocity [0, 0, -200]; // Даем саряду пинка. При желании таким образом можно сделать снос в сторону if (call _condition) exitWith {}; // Выход из цикла при выполнении условия }; }; Пуск ракеты по лазеру от Dominion1859 Триггер CruiseMissileGuided.sqf Пример в триггере [Spotter, VLS, false] execVM "CruiseMissileGuided.sqf"; Примечание 1: Скрипт строго одноразовый. То есть для возможности повторного пуска ракеты нужно запустить его еще раз Примечание 2: Минимальное время между запусками - 16 секунд. Если активировать скрипт еще раз до завершения перезарядки, то ничего не произойдет В теории screenToWorld можно заменить на getPosASL laserTarget CruiseMissileGuided.sqf params ["_boyz", "_ust", ["_infinite", true]]; // _boyz - имя персонажа-игрока (ИИ эту вещь лучше не давать), который будет наводчиком // _ust - имя установки, которая будет запускать ракеты // _infnite - делает бесконечным боезапас ракет для установки _i = 0; waitUntil {sleep 1; !(isNull laserTarget _boyz)}; // Ракета не будет запущена до тех пор, пока _boyz не включит лазерный целеуказатель _pos = screenToWorld [0.5, 0.5]; // Заносятся координаты поверхности (или объекта), на который смотрит _boyz _tar = "Land_HumanSkull_F" createVehicle _pos; // Создается череп Йорика, которому прописана невидимость и неуязвимость _tar hideObject true; _tar allowDamage false; west reportRemoteTarget [_tar, 1000]; // На череп наводится ракета _ust fireAtTarget [_tar, "weapon_vls_01"]; if (_infinite) then {_ust setVehicleAmmo 1}; // Восстановление боекомплекта // Отслеживание полета ракеты и проверка на то, не выключил ли _boyz целеуказатель. Покуда целеуказатель включен, череп будет следовать за лучом лазера. _sna = nearestObjects [_ust, ["ammo_Missile_Cruise_01", "ammo_Missile_Cruise_01_Cluster"], 10]; _mis = _sna select 0; while {alive _mis and !(isNull laserTarget _boyz)} do { sleep 0.05; // Тик можно делать еще меньше, но это ударит по производительности _pos = getPosASL laserTarget _boyz; _tar setPos _pos; } deleteVehicle _tar; // Удаление черепа Сброс ящиков/турелей/транспорта с парашютом от Dominion1859 Триггер Paradrop.sqf Пример в триггере [getPos player, "B_MRAP_01_F", 50, 0, [["arifle_MX_SW_F", 5], ["B_Carryall_ocamo", 5]], true] execVM "Paradrop.sqf"; Paradrop.sqf params ["_pos", "_veh", ["_alt", 100], ["_rad", 0], ["_cargo", []], ["_invul", false]]; // _pos - координаты точки, над которой произойдет спавн, либо имя объекта; // _veh - класснейм сбрасываемого объекта; // _alt - число. Определяет высоту спавна; // _rad - число. Определяет радиус спавна; // _cargo - массив массивов вида [класснейм_предмета, количество]. Спавнит предметы внутрь _veh; // _invul - true/false. Если true, то парашют и спавнимый предмет станут неуничтожимыми во время спуска; // Примечание 1: если пользоваться маркерами, у которых есть z-координата, то спавн произойдет именно на этой z-координате; // Примечание 2: если пользоваться _cargo, то все спавнимые по-умолчанию в инвентарь техники предметы исчезают; _pos = _pos call BIS_fnc_position; // Вычисляем координаты (так надо) _pos = _pos vectorAdd [0, 0, _alt]; // Вычисляем высоту _para = createVehicle ["B_Parachute_02_F", _pos, [], _rad, ""]; // Создаем парашют _veh = createVehicle [_veh, getPos _para, [], 0, ""]; // Создаем предмет _veh attachTo [_para, [0, 0, -1]]; // Цепляем предмет к парашюту if (_invul) then // Делаем парашют и предмет бессмертными { _veh allowDamage false; _para allowDamage false }; // Добавление предметов в инвентарь предмета if (count _cargo != 0) then { clearWeaponCargoGlobal _veh; clearMagazineCargoGlobal _veh; clearBackpackCargoGlobal _veh; clearItemCargoGlobal _veh; for "_i" from 0 to (count _cargo - 1) do { _item = _cargo select _i; // Рюкзаки приходится спавнить особо извращенным способом if (_item select 0 isKindOf "Bag_Base") then { _veh addBackpackCargoGlobal [_item select 0, _item select 1]; } else { _veh addItemCargoGlobal [_item select 0, _item select 1]; }; }; }; waitUntil {(getPos _veh select 2) < 5}; // Ждем, когда предмет окажется у земли detach _veh; // Отцепляем _para setVelocity [3,3,0.5]; // Даем парашюту пинка, чтоб на землю упал и сложился if (_invul) then // Снимаем неуязвимость { _veh allowDamage true; _para allowDamage true; }; Вызов поддержки ч3 Десант от Dominion1859 Триггер Paratroop.sqf Пример в триггере [Paragroup, "B_T_VTOL_01_infantry_F", player, 180, 500, 300, 1000] execVM "Paratroop.sqf"; Пример в ините одного из юнитов группы [group this] execVM "Paratroop.sqf" Paratroop.sqf params ["_paraGr", ["_veh", "B_T_VTOL_01_infantry_F"], ["_LZ", getPos player], ["_dir", getDir player], ["_alt", 300], ["_acc", 300], ["_dis", 3000]]; // _paraGr - имя группы юнитов, которая будет сброшена с паращютом; // _veh - класснейм транспорта, который будет использован для выброски десанта; // _LZ - координаты точки посадки, либо имя объекта; // _dir - направление полета _veh; // _alt - высота полета _veh; // _acc - число. Определяет расстояние, на котором начнется десантирование. По-умолчанию 300 метров; // _dis - расстояние на котором _veh заспавнится от _LZ; // Примечание: если _acc выставлять на значения меньше 100, то выброс десанта может и не произойти; // Костыль, позволяющий указывать в _LZ имена объектов _LZ = _LZ call BIS_fnc_position; // Расчет траектории полета: точки спавна и точки, куда полетит транспорт _DirX = _dis * sin (_dir - 180); _DirY = _dis * cos (_dir - 180); _SpX = _LZ select 0; _SpY = _LZ select 1; _SpZ = _LZ select 2; _SpPos = [_SpX + _DirX, _SpY + _DirY, _SpZ + _alt]; VehWpPos = [_SpX - _DirX, _SpY - _DirY, _SpZ + _alt]; // Создание транспорта и перемещение в него десантников _veh = createVehicle [_veh, _SpPos, [], 0, "FLY"]; _veh allowDamage false; // Если не прописать транспорту неуязвимость, то он взорвется при попытке поместить в него десантников и экипаж _crew = side _paraGr createVehicleCrew _veh; _veh setDir _dir; _veh flyInHeight _alt; {_x moveInCargo _veh} forEach units _paraGr; // Создание вейпоинта для транспорта, и задание ботам поведения _WP =_crew addWaypoint [VehWpPos, 1, -1, ""]; _WP setWaypointType "MOVE"; _WP setWaypointStatements ["true", "deleteVehicle vehicle this; {deleteVehicle _x} forEach units group this"]; // По достижении конца маршрута, транспорт будет удален _crew setCurrentWaypoint _WP; _veh allowDamage true; // Снятие неуязвимости с транспорта {_x setSkill ["courage", 1]; _x allowFleeing 0;} forEach units _crew; _crew deleteGroupWhenEmpty true; // Высадка десанта при приближении к точке высадки. waitUntil {_veh distance2D _LZ < _acc}; _units = units _paraGr; for "_i" from 0 to count units _paraGr - 1 do { _boy = _units select _i; unassignVehicle _boy; _boy moveOut _veh; sleep 0.5; _para = createVehicle ["Steerable_Parachute_F", getPos _boy, [], 0, "CAN_COLLIDE"]; _boy moveInDriver _para; unassignVehicle _boy; // Включение ботам неуязвимости у земли, а то они подозрительно часто бьются или ноги ломают _boy spawn { waitUntil {getPos vehicle _this select 2 < 2}; _this allowDamage false; unassignVehicle _this; waitUntil {getPos _this select 2 == 0}; _this allowDamage true; }; }; Таймер Обратный отсчет Пишем в инициализации LM_fnc_timeoutCountdown = { params []], ["_colour", "#FFFFFF", [""]] ]; private _timeout = time + _time; RscFiringDrillTime_done = false; 1 cutRsc ["RscFiringDrillTime", "PLAIN"]; while { time < _timeout } do { private _remainingTime = _timeout - time; private _timeFormat = [_remainingTime, "MM:SS.MS", true] call BIS_fnc_secondsToString; private _text = format ["<t align='left' color='%1'><img image='%2' />%3:%4<t size='0.8'>.%5</t>", _colour, "A3\Modules_F_Beta\data\FiringDrills\timer_ca", _timeFormat select 0, _timeFormat select 1, _timeFormat select 2 ]; RscFiringDrillTime_current = parseText _text; sleep 0.01; }; private _timeFormat = [0, "MM:SS.MS", true] call BIS_fnc_secondsToString; RscFiringDrillTime_current = parseText format ["<t align='left' color='%1'><img image='%2' />%3:%4<t size='0.8'>.%5</t>", _colour, "A3\Modules_F_Beta\data\FiringDrills\timer_ca", _timeFormat select 0, _timeFormat select 1, _timeFormat select 2]; sleep 4; RscFiringDrillTime_done = true; }; [10, "#FF5500"] spawn LM_fnc_timeoutCountdown; 10 - секунды, можно настраивать; #FF5500 - цвет таймера (!) Стим ворует какой-то символ, поэтому данный скрипт некорректно копируется Стратегическая карта от Usually Папка scripts osm.sqf 1. На предмете, на котором будет кнопка «Открыть стратегическую карту» вешаем это: this addAction ["Открыть стратегическую карту","scripts\osm.sqf",[false],1,false,true,"","(_target distance _this) < 3"]; 2. Перед тем как открыть «Стратегическая карта» , надо дать команду показать на ней места заданий, иначе ошибка. Можно сделать триггер и в "При активации" добавить это : showAAATask = true; showArtyTask = true; showHeloTask = true; 3. Далее создаем 7 маркеров(в моем случае) (я выбирал пустые, чтобы их не было видно на простой карте) Теперь вписываем в имя переменной mrk_AAA, mrk_Arty, mrk_Helo, base (откуда вы будете стартовать) это для заданий Так же вписываем в оставшиеся 3 маркера - mrk_startAAA, mrk_startArty, mrk_startHelo это для позиций куда телепортировать игрока. 4. Теперь сам скрипт osm.sqf startAAA = { player enableSimulation false; // Отключаем симуляцию у игрока "mrk_startAAA" setMarkerSize [1,1]; // Устанавливаем размер маркера player setpos getmarkerpos "mrk_startAAA"; // Переносим игрока к маркеру mrk_startAAA player setdir 64; // Поворачиваем игрока на 64* player enableSimulation true; //Включаем симуляцию у игрока }; startArty = { player enableSimulation false; "mrk_startArty" setMarkerSize [1,1]; player setpos getmarkerpos "mrk_startArty"; player setdir 124; player enableSimulation true; }; startHelo = { player enableSimulation false; "mrk_startHelo" setMarkerSize [1,1]; player setpos getmarkerpos "mrk_startHelo"; player setdir 57; player enableSimulation true; }; Далее само задание для карты(пишем туда же) _missionsData = []; if (showAAATask) then { _missionsData pushBack [getmarkerpos "mrk_AAA",startAAA,"Позиция зенитки","Второстепенная задача: выведите их зенитку из строя","","",1,[]] }; if (showArtyTask) then { _missionsData pushBack [getmarkerpos "mrk_Arty",startArty,"Название задания","Описание задания, при наведении мыши на него.","","",1,[]]}; if (showHeloTask) then { _missionsData pushBack [getmarkerpos "mrk_Helo",startHelo,"Украсть документы","Найдите и украдите документы","","",1,[]]}; disableserialization; _parentDisplay = [] call bis_fnc_displayMission; _mapCenter = getmarkerpos "base"; // На каком месте откроется карта. Если не прописать - укажет координаты 0,0,0 (левый нижний угол) _ORBAT = []; // Боевое расписание. Если надо. _markers = []; // Маркера. Если надо. _images = []; // Картинки. Если надо. _overcast = overcast; // Погода _isNight = !((dayTime > 6) && (dayTime < 20)); //Проверка ночь ли это. ХЗ зачем, не стал вникать _scale = 1.5; // Масштаб отображаемой карты (по умолчанию = 1) _simul = true; [ findDisplay 46, _mapCenter, _missionsData, _ORBAT,_markers, _images, _overcast, _isNight, _scale, _simul ] call Bis_fnc_strategicMapOpen; В редакторе На карте Статью писал Lastick, взята из Стима
-
В связи с праздником Нового года и начала третьего десятилетия 21 века, все провинившиеся и опустившиеся с читами лошары - помилованы!
-
У многих становится затруднением управлять не то, что пехотинцами в игре, но и своим персонажем. А они (боты) ох как выручают в уличных боях, ну а их чёткому взаимодействию со всякими командами и ругательствами уж точно можно позавидовать, складывается ощущение, что ты играешь с живыми людьми. Думаю для тех, кто играет в Арму ещё со времён Флешпоинта (Operation Flashpoint - первоначальное название игры) с 2001г. - затруднением с управлением не станет!
-
Версия 2.16.151618 Build 13820368
300 раз скачали
Жанр: Экшен, Симулятор, Шутер, Стратегия, Песочница Разработчик: Bohemia Interactive Тип издания: Неофициальный Язык интерфейса: Русский, Английский, Французский, Итальянский, Немецкий, Испанский, Чешский, Польский, Португальский (Бр.), Японский, Корейский, Китайский (упр.), Китайский (трад.), Турецкий Язык озвучки: Английский Таблэтка: Присутствует (RUNE + CODEX Steam Emu.) Размер: 146 гб. Системные требования: Операционная система: Windows 7 SP1 + (x64) Процессор: двуядерный Intel 2,4 ГГц или AMD Athlon 2,5 ГГц Оперативная память: 4 ГБ Видеокарта: NVIDIA GeForce 9800GT / AMD Radeon HD 5670 / Intel HD Graphics 4000 с 512 МБ видеопамяти, DirectX®: 10 Место на диске: 110 ГБ Описание: Встречайте, пожалуй, самый полный комплект для Arma 3 из всех существующих. Arma 3 Ultimate Edition — это именно то, что вам нужно: Arma 3 вместе со всеми выпущенными дополнениями от Bohemia Interactive. Реалистичный крупномасштабный общевойсковой бой в сочетании с целым рядом официальных дополнений и контентом от игроков делают Arma 3 одной из лучших военных игр на ПК. Комплект Ultimate Edition вобрал в себя все обновления и дополнения за последние пять лет, что делает его самым ценным предложением для всех игроков Arma 3. Steam Database: СсылкаБесплатный -
Адрес сервера: a3.zonats.ru:2302 или ip 95.163.230.224:2302 Требуется мод: RHS AFRF, RHS USAF и RHS GREF Основноя миссия - Доминация 4 (RHS - PVE) на Малдене и Алтисе! В данном ролике используется звуковой мод - Голосовой мод для фракций RHS
-
УПРАВЛЕНИЕ СЕРВЕРОМ ЧЕРЕЗ КОНСОЛЬ КОМАНДАМИ АДМИНИСТРАТОРА ВНИМАНИЕ ⚠ Рекомендуется использовать BattlEye's RCon инструмент для администрирования сервера; он использует пользовательский порт, который можно легко защитить правилами брандмауэра! (RCON не может быть затронут в игре сценариев) HowTo Вы можете получить доступ к командной строке, нажав клавишу чата ( по умолчанию: / ). В окне ввода чата вы можете ввести любую из следующих команд и подтвердить их клавишей enter. Вы должны добавить символ # перед командой. Эти команды могут быть использованы в сценариях SQF с помощью serverCommand. Устранение неполадок: все команды подтверждаются сообщением в консоли. Если вы вводите команду, которая правильно отформатирована, и не видите подтверждения этой команды, то произошла ошибка. Проверьте лог-файл вашего сервера для получения дополнительной информации (например, один или несколько файлов ваших миссий повреждены или имеют ошибку, которая мешает загрузке лобби миссий или может помешать выполнению других команд, таких как #restart или #reassign). Команды После подключения к серверу вам будут доступны следующие команды: Администратор сервера Команды Пример Описание #login #login #login #login adminPW Войдите в систему как администратор. Без пароля возможно только в том случае, если вы указаны как admin[] в server.cfg#Server_Options #logout Выход из администрирования сервером. # filename # filenamedifficulty #mission myDM.intro #mission myDM.intro Veteran Выберите миссию с названием и установите сложность. Параметр сложности является необязательным, и если он не установлен, то текущая сложность сохраняется. #missions Возврат в лобби игры для выбора мисии. #restart Рестарт миссии. #reassign Начать всё сначала и переназначить роли. #shutdown Выключение сервера, запуск только с хостинга сервера #restartserver Немедленно выключает и перезапускает сервер (работает с Arma 3 v1.65.138168) #shutdownserveraftermission Выключает сервер после завершения миссии, запуск только с хостинга сервера (работает с Arma 3 1.72.142200) #restartserveraftermission Выключает и перезапускает сервер после завершения миссии (работает с Arma 3 1.72.142200) #init Перезагрузка файла конфигурации сервера, прописанный в строке запуска параметром -config. #exec ban name #exec ban ID #exec ban Player# #exec ban nickName #exec ban 47114712 #exec ban 3 Позволяет забанить игрока. Их ID будет добавлен в ban.txt # name #kick ID #kick Player# #kick nickName #kick 47114712 #kick 3 Позволяет кикнуть игрока. #monitor (interval in sec) #monitor 1 Показывает информацию о производительности сервера. Интервал 0 - значит, прекратить наблюдение. Описание значений Traffic G Гарантированные сообщения NG Негарантированные сообщения Player info L лобби игры R выбор ролей B брифинг G in-game D разбор полетов (debriefing) #monitords (interval in sec) #monitords 1 Shows performance information in the dedicated server console. Interval 0 means to stop monitoring. (работает с Arma 3 v1.64) #debug off #debug off Disables debugging. #debug (interval in sec) #debug 30 Default interval is - 10 seconds. #debug (command) (param) #debug checkFile expansion\Dta\ui.pbo #debug userSent <username> #debug userInfo <username> #debug userQueue <username> #debug JIPQueue <username> #debug totalSent 10 Доступны следующие команды: checkFile userSent userInfo userQueue totalSent JIPQueue Each command can be disabled by the use of the off parameter e.g. #debug userSent off Each command differs a bit; some output to screen, some to log file etc. You need some debugger capable of catching OutputDebugString running on the client machine (one very small and easy to use is available at SysInternals website). You launch this debugger, then launch ARMA client, connect to the server, and issue any of the commands. #debug (command) #debug von #debug console Доступны следующие команды: console Send to submitter what's on server console. Works as DebugAnswer for all writes into the console. von Outputs into logFile defined in server.cfg as e.g. logFile = "server_console.log"; Каждая из этих команд должна показывать подтверждение в каналах чата. Новые команды администратора после Armed Assault: Команды Описание #exec команда на стороне сервера Выполнить команду скрипта администрирования. #lock Закрывает сервер, предотвращает присоединение новых игроков. #unlock Разблокирует сервер, позволяет новым игрокам присоединиться. "#debug von" пример server_console.log *** VoN Topology Diagnostics ((*** =Player=: #2 P2PManager: Time: 13:38:48 waiting edges: 0, active negotiations: 0 Matrix: 3056006: #2 #2: 3056006 Cliques: 3056006,#2 Version: 1.60.86277 Private: 192.168.178.21 Connections: 3056006: Direct P2P, 5 KA, snd: 10 sec, rcv: 10 sec, (192.168.178.21:2317) snd=0 rcv=0(0) Repl(-5,0,0) Cliques: 3056006,Unknown =Player=: 3056006 Version: 1.60.86277 Private: 192.168.178.21 Public: 77.4.35.154 Connections: #2: Direct P2P, 5 KA, snd: 10 sec, rcv: 10 sec, (192.168.178.21:2305) snd=0 rcv=0(0) Repl(-5,0,0) Cliques: 3056006,Unknown *** VoN Topology Diagnostics ))*** "#debug (command)" пример DebugView #debug console 1508] Debug: console #debug totalSent [1508] Debug: totalSent [1508] ** Total: sent 1447 bps (2.10 Msgps), received 3788 bps (6.10 Msgps) #debug userSent playerName [1508] Debug: userSent [1508] playerName: sent 1531 bps (2.30 Msgps), received 1259 bps (1.70 Msgps) #debug userInfo playerName [1508] Debug: userInfo [1508] __SERVER__: Info Unknown player ID = 2 [1508] playerName: Info ping 0ms( 0, 1) BWfee 286Kb( 3, 204, 3) lost22.2%%( 2) queue 0B( 0) ackWait 0(0.0,0.0) #debug userQueue playerName [1508] Debug: userQueue [1508] __SERVER__: Queue 0 B (0) 0 B Guaranteed (0), Desync 0 [1508] playerName: Queue 0 B (0) 222 B Guaranteed (3), Desync 0 Команды игрока Команды Пример Описание #vote missions Users can vote for the mission selection. #vote mission (name) #vote mission myD.intro Users can vote on a particular mission to loaded. #vote admin (name/ID/PLR#) #vote admin nickName #vote admin 47114712 #vote admin 3 Users can vote an admin to control the server. #vote kick (name, ID or Player#) #vote kick nickName #vote kick 47114712 #vote kick 3 Users can vote to kick off an individual. #vote restart Vote to restart the mission. #vote reassign Vote to reassign. #userlist Displays the list of users on the server (use PgUp to scroll up). Battleye Команды Описание #beclient players Отображается список GUID всех игроков на сервере. #beclient guid Показать свой собственный GUID. Arma 3 В Arma 3 #exec kick и #exec ban команды требуют кавычек (string) для имени, UID или Player#. Чтобы сделать это для UID или Player#, используйте команду format, чтобы превратить идентификатор пользователя в строку. #exec kick "5" #exec ban "imah4x0r" #exec kick "938679499494" #kick команда все еще может быть использована: #kick imah4x0r #kick "imah4x0r" В случае Бана, ban.txt файл создается в корневом каталоге Arma 3, который содержит список забаненных uid. Разбанить пользователя с идентификатором uid (uid-это уникальный номер игрока) или вручную очистить ban.txt: #exec unban "98749837498374" #exec clearbans В Arma 3 были добавлены еще 2 диагностические команды: #logEntities (see also logEntities) #exportJIPqueue (see also exportJIPMessages) Также новые команды в Arma 3: #restartServer #monitorDS
-
Спустя семь лет и десятки обновлений после выхода версии 1.0 мы с гордостью представляем версию 2.0. Подробнее
-
RHS Обзор на МиГ 29 RHS Обзор на Су 25
-
ArmA 3 редактор пошагово - плейлист вверху справа Шаг 1 - План Шаг 2 - ИИ водителя Шаг 3 - Атмосфера Шаг 4 - смена места действия Шаг 5 - затемнение экрана при телепортации Шаг 6 - добавляем свои звуки в игру Маршрутные точки (Waypoints)
-
Как пользоваться миномётом Mk6
-
Просмотреть файл Территория Спецназа Тип раздаваемого файла: Прогорамма Поддерживаемая ОС: Android 2.2+ Тип установщика: apk Разработчик: ТС Официальный сайт: ссылка Язык интерфейса: Русский Права Root: Не требуются Описание: Программа для смартфонов и планшетов от игрового сообщества "Территория Спецназа". Аппарат будет вас оповещать об активности на портале. Где Вы можете общаться с пользователями и своевременно получать новую информацию. Автор PiratRu Добавлен 08.03.2016 Категория Мобильный Софт и Планшеты
-
Просмотр файла Arma III: Ultimate Edition (+23 DLC) Жанр: Экшен, Симулятор, Шутер, Стратегия, Песочница Разработчик: Bohemia Interactive Тип издания: Неофициальный Язык интерфейса: Русский, Английский, Французский, Итальянский, Немецкий, Испанский, Чешский, Польский, Португальский (Бр.), Японский, Корейский, Китайский (упр.), Китайский (трад.), Турецкий Язык озвучки: Английский Таблэтка: Присутствует (RUNE + CODEX Steam Emu.) Системные требования: Операционная система: Windows 7 SP1 + (x64) Процессор: двуядерный Intel 2,4 ГГц или AMD Athlon 2,5 ГГц Оперативная память: 4 ГБ Видеокарта: NVIDIA GeForce 9800GT / AMD Radeon HD 5670 / Intel HD Graphics 4000 с 512 МБ видеопамяти, DirectX®: 10 Место на диске: 110 ГБ Описание: Встречайте, пожалуй, самый полный комплект для Arma 3 из всех существующих. Arma 3 Ultimate Edition — это именно то, что вам нужно: Arma 3 вместе со всеми выпущенными дополнениями от Bohemia Interactive. Реалистичный крупномасштабный общевойсковой бой в сочетании с целым рядом официальных дополнений и контентом от игроков делают Arma 3 одной из лучших военных игр на ПК. Комплект Ultimate Edition вобрал в себя все обновления и дополнения за последние пять лет, что делает его самым ценным предложением для всех игроков Arma 3. Steam Database: Ссылка Добавил Кодер Добавлено 08.03.2016 Обновлено 29.03.2024 Категория Arma 3
-
Обзор на Ми 24 Крокодил из мода RHS Обзор на Ми 48 Кайман (Mi 48 Kajman) Воздушный бой. Тактика вертолетного боя. Как cтрелять!?
ПОЛЕЗНЫЕ ССЫЛКИ
ИНФОРМАЦИЯ
О ПОРТАЛЕ
Приветствуем Вас в игровом сообществе - ТЕРРИТОРИЯ СПЕЦНАЗА! Начните играть у нас и Вы поймёте, что слабые здесь не задерживаются! Игровые онлайн сервера различных жанров и их uptime состовляет 100%.