Перейти к содержанию

Apach

Боец
  • Постов

    189
  • Зарегистрирован

  • Посещение

Весь контент Apach

  1. Версия v. 436

    2 раза скачали

    Издатель: GSC Game World Источник: Digital Тип издания: Лицензия Релиз: GOG Таблэтка: не требуется *Меняется в настройках игры Системные требования: МИНИМАЛЬНЫЕ: - Требуются 64-разрядные процессор и операционная система - ОС: Windows 10 - Процессор: Intel Core i7-7700K / AMD Ryzen 5 1600X - Оперативная память: 16 GB ОЗУ - Видеокарта: Nvidia GeForce GTX 1060 6 GB / AMD Radeon RX 580 8 GB / Intel Arc A750, DirectX 12 - Место на диске (SSD): 155 GB Описание: Исследуйте Чернобыльскую Зону Отчуждения полную опасных врагов, смертельных аномалий и мощных артефактов. Напишите собственную эпическую историю, прокладывая тропы к Сердцу Чернобыля. Выбирайте свой путь обдуманно, ведь он определит вашу судьбу в конце.
    Бесплатный
  2. Просмотр файла S.T.A.L.K.E.R. 2: Heart of Chornobyl - Ultimate Edition Издатель: GSC Game World Источник: Digital Тип издания: Лицензия Релиз: GOG Таблэтка: не требуется *Меняется в настройках игры Системные требования: МИНИМАЛЬНЫЕ: - Требуются 64-разрядные процессор и операционная система - ОС: Windows 10 - Процессор: Intel Core i7-7700K / AMD Ryzen 5 1600X - Оперативная память: 16 GB ОЗУ - Видеокарта: Nvidia GeForce GTX 1060 6 GB / AMD Radeon RX 580 8 GB / Intel Arc A750, DirectX 12 - Место на диске (SSD): 155 GB Описание: Исследуйте Чернобыльскую Зону Отчуждения полную опасных врагов, смертельных аномалий и мощных артефактов. Напишите собственную эпическую историю, прокладывая тропы к Сердцу Чернобыля. Выбирайте свой путь обдуманно, ведь он определит вашу судьбу в конце. Добавил Apach Добавлено 22.11.2024 Обновлено 22.11.2024 Категория 3D-action + Шутеры + Стрелялки Платформа Windows Язык Русский Озвучка Английский Лекарство В наличии Размер контента 159 гиг.
  3. А зачем тебе одежда? Я в смысле... итак вроде всякого шмотья полно. Я на ней не загоняюсь - оружие и техника главное.
  4. Работа с объектом Одно из удобных (на мой взгляд) я бы выделил взаимодействие, вызывая 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, взята из Стима
  5. Если честно, лучше включить дополнительный пак CUP Terrains - Maps 2.0 и будет щасте!
  6. Насколько я знаю, в Cup есть карты, но он вроде как прожорлив.
  7. Apach

    Fire Man - MiyaGi

    Исполнитель: MiyaGi
  8. Apach

    Utopia - MiyaGi

    Исполнитель: MiyaGi
  9. Apach

    Там ревели горы - MiyaGi

    Исполнитель: MiyaGi
  10. А у пиндоских трупов брать не пробовал? Там вроде как по званиям будет открыто.
  11. Запад не далеко ушёл, думаю к этому и придут они все вместе!
  12. Версия 1.05 (Build 14609657)

    11 раз скачали

    Год выпуска: 20 марта 2024 Жанр: Action / Adventure Разработчик: Pieces Interactive Издатель: THQ Nordic Тип издания: Неофициальный Таблэтка: вшита (FAIRLIGHT Steam emu.) *Меняется в настройках игры Системные требования: МИНИМАЛЬНЫЕ: - Требуются 64-разрядные процессор и операционная система - ОС: Windows 10 - Процессор: Ryzen 3 3100 / Core i3-8300 - Оперативная память: 8 GB ОЗУ - Видеокарта: GeForce GTX 1050 Ti / Radeon RX 570, DirectX 12 - Место на диске: 30 GB - Дополнительно: рекомендуется использовать SSD носитель Описание: Психологический хоррор переплетается с шармом южной готики в леденящем душу переосмыслении культовой Alone in the Dark, ставшей эталоном жанра. Вам приоткроется дверь в мир безумия, где каждая встреча может оказаться последней. Вы ощутите, как с каждым шагом, что приближает вас к разгадке тайны Дерсето, взирающие из тьмы глаза становятся все голоднее. Каждая пуля чертит грань между выживанием и страшной смертью. Каждая следующая дверь может сулить беспросветный ужас, где нет ничего, кроме когтей, цепких щупалец и помешательства. Погрузитесь в межвоенную Луизиану, где эра упадка стала завесой для мрачной истории бегства от прошлых потрясений и бездушного общества в объятия чего-то темного — чего-то, что долгие века терпеливо ждало своего часа. Это Alone in the Dark, какой вы ее еще не видели, — искусный сплав элегантности южной готики и потустороннего безумия, отдающий дань уважения истокам, одновременно вознося нарратив жанра на новый уровень. Alone in the Dark (2024): Прохождение
    Бесплатный
  13. Просмотр файла Alone in the Dark - Digital Deluxe Edition Год выпуска: 20 марта 2024 Жанр: Action / Adventure Разработчик: Pieces Interactive Издатель: THQ Nordic Тип издания: Неофициальный Таблэтка: вшита (FAIRLIGHT Steam emu.) *Меняется в настройках игры Системные требования: МИНИМАЛЬНЫЕ: - Требуются 64-разрядные процессор и операционная система - ОС: Windows 10 - Процессор: Ryzen 3 3100 / Core i3-8300 - Оперативная память: 8 GB ОЗУ - Видеокарта: GeForce GTX 1050 Ti / Radeon RX 570, DirectX 12 - Место на диске: 30 GB - Дополнительно: рекомендуется использовать SSD носитель Описание: Психологический хоррор переплетается с шармом южной готики в леденящем душу переосмыслении культовой Alone in the Dark, ставшей эталоном жанра. Вам приоткроется дверь в мир безумия, где каждая встреча может оказаться последней. Вы ощутите, как с каждым шагом, что приближает вас к разгадке тайны Дерсето, взирающие из тьмы глаза становятся все голоднее. Каждая пуля чертит грань между выживанием и страшной смертью. Каждая следующая дверь может сулить беспросветный ужас, где нет ничего, кроме когтей, цепких щупалец и помешательства. Погрузитесь в межвоенную Луизиану, где эра упадка стала завесой для мрачной истории бегства от прошлых потрясений и бездушного общества в объятия чего-то темного — чего-то, что долгие века терпеливо ждало своего часа. Это Alone in the Dark, какой вы ее еще не видели, — искусный сплав элегантности южной готики и потустороннего безумия, отдающий дань уважения истокам, одновременно вознося нарратив жанра на новый уровень. Alone in the Dark (2024): Прохождение Добавил Apach Добавлено 09.04.2024 Обновлено 23.11.2024 Категория Квесты + Логика + Приключения Платформа Windows Язык Русский + Многоязычный Озвучка Английский Лекарство Размер контента
  14. Просмотр файла The Callisto Protocol Жанр: Action, adventure Разработчик: Striking Distance Studios Выпущено: KRAFTON, Inc. Тип издания: Неофициальный Таблэтка: Вшита (RUNE) Размер: 56.32 гб. СИСТЕМНЫЕ ТРЕБОВАНИЯ Операционная система: Windows 10/11 64-бит Процессор: Core i5-8400 / Ryzen 5 2600 Память: 8 ГБ Видеокарта: GeForce GTX 1060 / Radeon RX 580, DirectX 11 Аудиокарта: Совместимая с ОС Свободное место: 79 ГБ ОПИСАНИЕ В этой игре-ужастике от третьего лица, действие которой происходит через 300 лет, игроку предстоит взять на себя роль Джейкоба Ли - жертвы судьбы, заброшенной в тюрьму "Black Iron", исправительное учреждение строгого режима, расположенное на луне Юпитера, Каллисто. Когда заключенные начинают превращаться в чудовищных существ, тюрьма погружается в хаос. Чтобы выжить, Джейкоб должен проложить себе путь к спасению и сбежать из тюрьмы Black Iron, раскрывая темные и тревожные тайны, погребенные под поверхностью Каллисто. Используя уникальную смесь стрельбы и ближнего боя, Джейкоб должен будет адаптировать свою тактику для борьбы с быстро развивающимися существами, одновременно собирая мусор, чтобы разблокировать новое оружие, снаряжение и способности, чтобы опередить растущую угрозу и спастись от ужасов Мертвой Луны Юпитера. Прохождение игры... Добавил Apach Добавлено 09.04.2024 Обновлено 22.11.2024 Категория 3D-action + Шутеры + Стрелялки Платформа Windows Язык Русский + Многоязычный Озвучка Русский + анлийский Лекарство Размер контента
  15. Версия Build 14745831

    13 раз скачали

    Разработчик: Striking Distance Studios Выпущено: KRAFTON, Inc. Тип издания: Неофициальный СИСТЕМНЫЕ ТРЕБОВАНИЯ Операционная система: Windows 10/11 64-бит Процессор: Core i5-8400 / Ryzen 5 2600 Память: 8 ГБ Видеокарта: GeForce GTX 1060 / Radeon RX 580, DirectX 11 Аудиокарта: Совместимая с ОС Свободное место: 79 ГБ ОПИСАНИЕ В этой игре-ужастике от третьего лица, действие которой происходит через 300 лет, игроку предстоит взять на себя роль Джейкоба Ли - жертвы судьбы, заброшенной в тюрьму "Black Iron", исправительное учреждение строгого режима, расположенное на луне Юпитера, Каллисто. Когда заключенные начинают превращаться в чудовищных существ, тюрьма погружается в хаос. Чтобы выжить, Джейкоб должен проложить себе путь к спасению и сбежать из тюрьмы Black Iron, раскрывая темные и тревожные тайны, погребенные под поверхностью Каллисто. Используя уникальную смесь стрельбы и ближнего боя, Джейкоб должен будет адаптировать свою тактику для борьбы с быстро развивающимися существами, одновременно собирая мусор, чтобы разблокировать новое оружие, снаряжение и способности, чтобы опередить растущую угрозу и спастись от ужасов Мертвой Луны Юпитера. Прохождение игры...
    Бесплатный
  16. Версия 1.0.10

    16 раз скачали

    Год выпуска: 4 апреля 2024 года Жанр: RPG Разработчик: Cyberia Nova Издатель: Cyberia Nova Тип издания: Неофициальный Размер: 26.51 гб. СИСТЕМНЫЕ ТРЕБОВАНИЯ Минимальные ОС: Windows 10 Процессор: Intel i3 / Ryzen 3 Память: 16Gb Место на диске: 24 Gb Видеокарта: Nvidia GTX 980/1060 Другое: DirectX 12 ОПИСАНИЕ «Никогда Россия не была в столь бедственном положении, как в начале семнадцатого столетия. Внешние враги, внутренние раздоры, смуты бояр, а более всего совершенное безначалие - все угрожало неизбежной погибелью земле русской.» М. Загоскин Россия, 1612 год, Смутное время. Страна разорена голодом и войнами. На трон рвутся самозванцы. В Кремле засел польский гарнизон. Казалось, надежды нет. Но в это тяжелейшее время всем Московским царством ценой огромных усилий собирались народные Ополчения. Войско Второго Ополчения, под предводительством Дмитрия Пожарского и Кузьмы Минина, выдвинулось из Нижнего Новгорода на Москву. Мы последуем за ним вместе с молодым боярином Юрием Милославским. Прохождение
    Бесплатный
  17. Просмотр файла СМУТА Год выпуска: 4 апреля 2024 года Жанр: RPG Разработчик: Cyberia Nova Издатель: Cyberia Nova Тип издания: Неофициальный Размер: 27.51 гб. СИСТЕМНЫЕ ТРЕБОВАНИЯ Минимальные ОС: Windows 10 Процессор: Intel i3 / Ryzen 3 Память: 16Gb Место на диске: 24 Gb Видеокарта: Nvidia GTX 980/1060 Другое: DirectX 12 ОПИСАНИЕ «Никогда Россия не была в столь бедственном положении, как в начале семнадцатого столетия. Внешние враги, внутренние раздоры, смуты бояр, а более всего совершенное безначалие - все угрожало неизбежной погибелью земле русской.» М. Загоскин Россия, 1612 год, Смутное время. Страна разорена голодом и войнами. На трон рвутся самозванцы. В Кремле засел польский гарнизон. Казалось, надежды нет. Но в это тяжелейшее время всем Московским царством ценой огромных усилий собирались народные Ополчения. Войско Второго Ополчения, под предводительством Дмитрия Пожарского и Кузьмы Минина, выдвинулось из Нижнего Новгорода на Москву. Мы последуем за ним вместе с молодым боярином Юрием Милославским. Прохождение Добавил Apach Добавлено 09.04.2024 Обновлено 02.08.2024 Категория Стратегии + RPG + Фэнтези Платформа Windows Linux Язык Русский Озвучка Русский Лекарство Вылечено
  18. Зеленоградская команда "Играющие Кошки" делает стратегию про Российскую армию с возможностью повоевать в уже знакомых всем локациях. В игру уже можно поиграть, всем желающим открыт доступ к скачиванию, которую можно забрать отсюда: Стратегия в реальном времени в современном сеттинге с высокой долей реалистичности. Игра даёт возможность игрокам сразиться друг с другом (в режимах 1vs1, 2vs1 и 2vs2), либо в режиме Схватка с компьютерным противником. Изначально в игре доступны две армии, это Россия и США, в дальнейшем возможно добавление других армий. Сражение на картах происходит за ключевые точки, задача игроков на момент окончания времени матча контролировать большее количество ключевых точек на карте. В случае захвата всех точек одним из игроков (одной из команд) матч завершается досрочно. Игроки могут вызывать подкрепления в ходе игры используя Командные Очки (КО) накапливаемые со временем. Изначально игрокам доступны стандартные наборы техники и пехоты, но в дальнейшем игроки могут получить в свой "гарнизон" уникальные отряды и экземпляры техники которые могут переходить из боя в бой накапливая опыт и имея возможность устанавливать и использовать различные улучшения и тактики. Игра в изначально будет содержать только базовый игровой процесс общевойскового боя, который в дальнейшем будет активно развиваться с добавлением новых механизмов активно сейчас появляющихся в реальной жизни (например коптеры со сбросом, FPV дроны и т.д.). Игра рассматривается как базовая платформа которая в дальнейшем будет развиваться с добавлением механик, новых видов техники, тактик ведения боя, карт. Планируется полностью открытый процесс разработки/развития игры, с максимальным привлечением игроков и сочувствующих. В дальнейшем игра может послужить базой для создания одиночных игровых кампаний по различным современным и предполагаемым конфликтам.
  19. А в чём интерес вообще ехать туда к дикарям? Там развита туриндустрия? Париж - город любви, этот бренд клеился десятки лет, но так и не прижился.
  20. Версия 1.1.11f1

    23 раза скачали

    Разработчик: Colossal Order Ltd. Издатель: Paradox Interactive Тип издания: Неофициальный Таблэтка: вшита (Goldberg Steam emu.) *Меняется в настройках игры Системные требования: МИНИМАЛЬНЫЕ: - Требуются 64-разрядные процессор и операционная система - ОС: Windows 10 - Процессор: Intel Core i7-6700K / AMD Ryzen 5 2600X - Оперативная память: 8 GB ОЗУ - Видеокарта: Nvidia GeForce GTX 970 (4 GB) / AMD Radeon RX 480 (8 GB) - Место на диске: 56 GB Описание: Начните строить город с нуля и превратите его в процветающий мегаполис. Такого симулятора строительства еще не было! Cities: Skylines II — это живая экономическая система, позволяющая создать целый мир. Просто начните строить свой город. Прокладывайте дороги и разрабатывайте инфраструктуру, обеспечивающую повседневную жизнь. Все зависит только от вас. Жизнь города в ваших руках, так что планируйте все наперед. У каждого решения есть последствия. Сможете подтолкнуть промышленность и использовать торговлю для развития экономики? Как сделать жилые районы процветающими, не снизив активность делового центра? Как дать людям то, чего они хотят, оставшись в рамках бюджета? Ваш город никогда не спит. Это живой дышащий мир, который постоянно меняется. Некоторые изменения происходят медленно и постепенно, а другие могут быть крайне внезапными. День сменяет ночь, а лето — зиму. Вы должны быть готовы к любым неожиданностям! Наше сообщество постоянно растет, и благодаря множеству модов вы сможете сделать свой город еще интереснее. Использовать моды в Cities: Skylines II стало проще. Cities: Skylines II — это невероятно реалистичный и детализированный градостроительный симулятор, дающий еще больше простора для творчества. Отличная графика с высоким разрешением дополнительно вдохновляет на строительство города мечты. Глубокая симуляция. Благодаря ИИ и тщательно продуманной экономической системе ваши решения по-настоящему меняют город. Помните об этом, выбирая стратегию, решая проблемы и реагируя на перемены. Масштабность и бесконечные возможности. В Cities: Skylines II можно творить без компромиссов. Стройте ввысь и вширь без границ! А почему нет? Ваш город — ваши правила. Ожившие города. Ваши решения влияют на жизнь каждого горожанина, создавая цепочки событий, что по кирпичику формируют личность каждого из них. От любви и потерь до здоровья и богатства. Динамичный мир. Выбор карты определит климат вашего города. Расширяясь, вам придется считаться с силами природы, изменчивой погодой и сезонными трудностями.
    Бесплатный
  21. Просмотр файла Cities: Skylines II - Ultimate Edition Разработчик: Colossal Order Ltd. Издатель: Paradox Interactive Тип издания: Неофициальный Таблэтка: вшита (Goldberg Steam emu.) *Меняется в настройках игры Системные требования: МИНИМАЛЬНЫЕ: - Требуются 64-разрядные процессор и операционная система - ОС: Windows 10 - Процессор: Intel Core i7-6700K / AMD Ryzen 5 2600X - Оперативная память: 8 GB ОЗУ - Видеокарта: Nvidia GeForce GTX 970 (4 GB) / AMD Radeon RX 480 (8 GB) - Место на диске: 56 GB Описание: Начните строить город с нуля и превратите его в процветающий мегаполис. Такого симулятора строительства еще не было! Cities: Skylines II — это живая экономическая система, позволяющая создать целый мир. Просто начните строить свой город. Прокладывайте дороги и разрабатывайте инфраструктуру, обеспечивающую повседневную жизнь. Все зависит только от вас. Жизнь города в ваших руках, так что планируйте все наперед. У каждого решения есть последствия. Сможете подтолкнуть промышленность и использовать торговлю для развития экономики? Как сделать жилые районы процветающими, не снизив активность делового центра? Как дать людям то, чего они хотят, оставшись в рамках бюджета? Ваш город никогда не спит. Это живой дышащий мир, который постоянно меняется. Некоторые изменения происходят медленно и постепенно, а другие могут быть крайне внезапными. День сменяет ночь, а лето — зиму. Вы должны быть готовы к любым неожиданностям! Наше сообщество постоянно растет, и благодаря множеству модов вы сможете сделать свой город еще интереснее. Использовать моды в Cities: Skylines II стало проще. Cities: Skylines II — это невероятно реалистичный и детализированный градостроительный симулятор, дающий еще больше простора для творчества. Отличная графика с высоким разрешением дополнительно вдохновляет на строительство города мечты. Глубокая симуляция. Благодаря ИИ и тщательно продуманной экономической системе ваши решения по-настоящему меняют город. Помните об этом, выбирая стратегию, решая проблемы и реагируя на перемены. Масштабность и бесконечные возможности. В Cities: Skylines II можно творить без компромиссов. Стройте ввысь и вширь без границ! А почему нет? Ваш город — ваши правила. Ожившие города. Ваши решения влияют на жизнь каждого горожанина, создавая цепочки событий, что по кирпичику формируют личность каждого из них. От любви и потерь до здоровья и богатства. Динамичный мир. Выбор карты определит климат вашего города. Расширяясь, вам придется считаться с силами природы, изменчивой погодой и сезонными трудностями. Добавил Apach Добавлено 02.02.2024 Обновлено 23.11.2024 Категория Стратегии + RPG + Фэнтези Платформа Windows Язык Русский + Многоязычный Озвучка Отсутствует Лекарство Вылечено Размер контента 36.44 гиг.
  22. Версия 1.2.11.45697

    28 раз скачали

    Жанр: Action / RPG / Strategy Издатель: TaleWorlds Entertainment Тип издания: Лицензия Релиз: GOG Таблэтка: не требуется (DRM-Free) *Меняется в настройках игры (Options - Gameplay - Language) Системные требования: МИНИМАЛЬНЫЕ: - Требуются 64-разрядные процессор и операционная система - ОС: Windows 7 (64-bit only) - Процессор: Intel Core™ i3-8100 / AMD Ryzen™ 3 1200 - Оперативная память: 6 GB ОЗУ - Видеокарта: Intel UHD Graphics 630 / NVIDIA GeForce GTX 660 2GB / AMD Radeon HD 7850 2GB - Место на диске: 50 GB - Дополнительно: При использовании интегрированной видеокарты требуется 2 ГБ дополнительной оперативной памяти. Описание: Mount & Blade II: Bannerlord представляет собой долгожданное продолжение знаменитой ролевой игры и симулятора средневековых войн Mount & Blade: Warband. Действие этой игры происходит за 200 лет до начала первой части. Улучшения коснулись как боевой системы, так и самой Кальрадии. Штурмуйте горные твердыни с помощью осадных орудий, создавайте тайные преступные империи на задворках городов или ищите славу в хаосе ожесточенных битв. Выбор за вами!
    Бесплатный
  23. Просмотр файла Mount & Blade II: Bannerlord Жанр: Action / RPG / Strategy Издатель: TaleWorlds Entertainment Тип издания: Лицензия Релиз: GOG Таблэтка: не требуется (DRM-Free) *Меняется в настройках игры (Options - Gameplay - Language) Системные требования: МИНИМАЛЬНЫЕ: - Требуются 64-разрядные процессор и операционная система - ОС: Windows 7 (64-bit only) - Процессор: Intel Core™ i3-8100 / AMD Ryzen™ 3 1200 - Оперативная память: 6 GB ОЗУ - Видеокарта: Intel UHD Graphics 630 / NVIDIA GeForce GTX 660 2GB / AMD Radeon HD 7850 2GB - Место на диске: 50 GB - Дополнительно: При использовании интегрированной видеокарты требуется 2 ГБ дополнительной оперативной памяти. Описание: Mount & Blade II: Bannerlord представляет собой долгожданное продолжение знаменитой ролевой игры и симулятора средневековых войн Mount & Blade: Warband. Действие этой игры происходит за 200 лет до начала первой части. Улучшения коснулись как боевой системы, так и самой Кальрадии. Штурмуйте горные твердыни с помощью осадных орудий, создавайте тайные преступные империи на задворках городов или ищите славу в хаосе ожесточенных битв. Выбор за вами! Добавил Apach Добавлено 02.02.2024 Обновлено 23.11.2024 Категория Стратегии + RPG + Фэнтези Платформа Windows Язык Русский Озвучка Английский Лекарство Не требуется Размер контента 41.37 гиг
×
×
  • Создать...

Важная информация

Пользуясь этим сайтом, вы соглашаетесь с использованием им Политика конфиденциальности.