Как запустить сценарий в arma 3

Обновлено: 03.07.2024

Моя волшебная комбинация – переход через препятствие – W+X. Как и предыдущая комбинация, эта умная связка поможет вам не
конфликтовать с другими значениями клавиш (для меня, кнопка X – задержать дыхание) и
займет у вас не больше секунды на выполнение.

Стандартное значение БРОСКА гранаты в Arma3 привязано к клавише ‘G’. Если вы пришли из предыдущей части франчайзы, то вы может
представлять некоторую опасность для других игроков… Я настоятельно рекомендую заменить стандартное значение броска на двойное нажатие клавиши ‘G’. Прошу обратить внимание, что для открытия инвентаря теперь используется
кнопка ‘I’ (английская буква ‘Ай’)

То, что следует убрать

Следует отметить, что некоторые вещи я советую убрать для того, чтобы вам было удобнее играть. Убедитесь, что кнопки Q,W и E не
имеют привязок к другим функциям в виде двойного нажатия (2xQ, 2xW, 2xE). По умолчанию, кнопки Q и E отвечают за уклонение и они будут иметь значение двойного нажатия в
опциях игры. Удалите двойные значения. Это обезопасит вас от случайных вставаний, уклонений и тд, когда вам того не требуется.
Клавиша W по умолчанию выставлена для спринта – как вы уже могли заметить, я порекомендовал вас заменить это значение на связку W+S – удалите. И вообще, любое
двойное нажатие может спровоцировать лаг в виде залипания (возможно отключить распознавание залипания в Windows). Просмотрите значения опций выхода из техники, переключения режима стрельбы,
смены стойки и др. и постарайтесь удалить те двойные значения, которые вам не требуются.

Перейдем к настройке вашей мышки. По умолчанию, использование ПКМ переводит вас в режим зума и прицеливания. Достаточно
проблематично – ведь при включении режима увеличения, после нажатия ПКМ проходит около
половины секунды до перехода в сам режим. Не знаю как вы, но меня это удручает. Я повесил данную функцию на дополнительные клавиши своей мышки. Я использую этот метод еще с Arma2. Попробуйте сами. Если не понравится, вернетесь к обычному значению.

Используем колесико мышки Существует еще 2 привязки, которые я повесил на свою мышку. Вам было бы тоже неплохо о них задуматься. У
меня Logitech G9x, поэтому у вас возможно нет такого же функционала – однако если у вас такая же мышка, то это самое лучшее решение. Если же нет, то я рекомендую вам приобрести
данный девайс. G9x имеет подвижное колесик. По умолчанию эти кнопки позволяют вам прокручивать страницы влево и вправо, однако вы можете модифицировать стандартные значения с помощью SetPoint (*я так понимаю, что там есть готовый профиль для Армы). В третьей части Arma присутствует множество оружия с увеличенным количеством примочек. На левый скроллинг своей мышки я поставил включение/отключение лазерного целеуказателя и фонарика. Сами подумайте, ведь они не всегда нужны вам включенными. Я могу
включить лазер, когда он мне нужен, а затем быстро его отключить. В настройках управления эта опция называется ‘Lights’ ( от англ. свет ).
Однако зачастую более важно успеть вовремя включить/выключить фонарик. Любой идиот сможет увидеть фонарь в темноте… Даже очки ночного видения не понадобятся. Если вам потребуется освещение, просто дерните колесико мышки влево, подсветите нужный объект и быстро отрубите ваш фонарь…. А дальше сваливайте. Этот способ поможет вам избежать смерти в реальном мире. Так что не стоит слишком удивляться, что в Арме такие же принципы выживания.

Что ж, я рассказал вам о некоторых базовых способах управления для того, чтобы увеличить качество вашей игры за пехоту.

Для начала расскажу, что все скрипты требуют запуска, т.е. их ещё нужно запустить, но все скрипты с именем init запуститься сразу и начнут своё выполнение после старта игры.

Скрипты запускаются определенными командами и имеют такой вид:

[boolean] Exec "scrip.sqs"
variable = [boolean] ExecVM "scrip.sqf"
variable = [boolean] ExecFSM "scrip.fsm"

Рассмотрим на примере использования нашего скрипта перевооружения

Итак, мы создали наш первый скрипт sqs, вот он лежит на рабочем столе:


Открываем папку с миссией (как найти читай здесь) закидываем в нее скрипт.

Дмитрий Заничковский запись закреплена
ребят как открыть миссию в редакторе? для замены юнитов

Егор Просвирин

Евгений Кулинский

2) Распакуй pbo_manager_v14 и установи (там лежит 2 архива один x64, другой x86 выбери под свою систему).

4) В появившемся окне нажми на открыть файл (сверху).. Зайди в папку где установлена игра,
Далее в папку addons.

5) Там найдёшь файлы (missions_f_epa
missions_f_epb
missions_f_epc)
Это и есть мисии кампании, там есть ещё с добавками data и video их не открывайте там мисий нету.

6) Открываешь один из перечислинных, ну например "missions_f_epa"
Нажимаешь на + рядом с названием, и там открывается список файлов заходишь по (Campaing > Missions)
И тут копируешь любую папку с окончанием *.Stratis
В (документы > Arma 3 > missions).

Дмитрий Андраханов

В данной теме я буду постепенно выкладывать свои наработки в Arma 3 по сталкеру, что у меня, как новичка, в итоге получилось.

Возможно, кто-то из вас найдет интересным для себя эту информацию и воспользуется ей.

Дмитрий Андраханов

Повторюсь, что использую только мод ArmStalker, так как в нем есть все необходимое.

Первым делом после попадания на остров мы должны подойти к торговцу и получить от него задание, за выполнение которого он введет нас в курс дела и даст что-нибудь в награду. Для расстановки заданий я воспользовался обучающим видео Злого - Видео 1.

Начальным заданием от торговца будет избавиться от мутанта (слепого пса), который объявился в окрестностях и распугивает новичков, тем самым портя бизнес торговцу.

Для получения задания нам нужно поставить триггер около торговца, запитанный на присутствие в нем ГГ и прописать в активацию триггера выполнение скрипта: Hero1 exec "S1.sqs"; Hero1 addWeapon "av_Obrez"; for "_i" from 1 to 2 do ;.

Подробнее о триггерах и вызове скриптов объяснено в видео Злого: Видео 2.

Имя переменной в редакторе для ГГ зададим – Hero1.
Имя переменной в редакторе для торговца зададим – Trader01.

Дмитрий Андраханов

Мы получаем от торговца задание + обрез с патронами и идем убивать мутанта. Для выполнения первого задания на карте можно поставить маркер с примерной зоной, где нужно найти собаку.

Направляемся туда, ищем собачку, которая носится как угорелая (такая у нее преднастроенная логика АрмСталкера) и убиваем ее. Для того чтобы первое задание было выполнено, нам нужно поставить триггер и синхронизировать его с собачкой. В условии выбрать, чтобы триггер активировался, когда владелец триггера (т.е. собачка) отсутствует в нем (убежит из зоны этого триггера или будет убита). Когда мы убьем собачку триггер активируется, первое задание будет считаться выполненным и сразу же активируется второе задание «вернуться к торговцу за наградой».

Мы возвращаемся к торговцу, подходим к нему, активируется еще один триггер на наше присутствие в нем (Hero1 exec "S2.sqs";) и запускается скрипт с получением награды от торговца в виде денюжки в 5000 руб.

Всё, два коротеньких задания мы реализовали (как говорит Злой, сделали скелет нашей миссии ).

Теперь нужно сделать много разных «фич», чтобы обогатить эту мини- миссию. Придется активно поработать со скриптами.

Дмитрий Андраханов

Начал я с идеи о том, чтобы после жестокого убийства бедной слепой собачки, у нас была возможность срезать с нее хвостик для продажи торговцу.

Для этого назовем собачку «Dog1» и в ее инициализации пропишем вызов действия «Отрезать часть мутанта» (this addAction ["Отрезать часть мутанта","cut_dog.sqs",[],6,false,false,"","(Player distance cursorTarget<=3)"];).

Тогда при выборе этого действия (а выбирается оно путем прокручивания колесика мышки рядом с мутантом) у нас запустится скрипт, где будет проиграна анимация срезания части мутанта и добавления той самой части в инвентарь ГГ. Анимацию долго не выбирал, при желании можно прописать другую.

Хотя триггер все таки срабатывает на отсутствие собачки в его зоне, когда мы ее убиваем. Т.е. данное действие можно повесить на активацию триггера, при желании, но я уже так не заморачивался. Все таки в реале можно попытаться срезать хвостик и с живой собачки, если она даст вам это сделать и не загрызет до того :).

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

Дмитрий Андраханов

Сначала реализуем виртуальные деньги у ГГ.

Для этого нужно в папке с миссией создать скрипт Init.sqf. Если такой скрипт у вас уже есть, то тогда просто в него нужно записать следующие строчки:
_bablo = 5000;
player setVariable ["Bablo", _bablo, true];

Скрипт с названием Init.sqf система запускает сразу после начала миссии, таким образом вызов этого скрипта прописывать нигде не нужно. Просто он должен быть в папке с миссией.
В этом скрипте мы задаем глобальную переменную (Bablo), к которой потом сможем обращаться из любого другого скрипта или команды.

Подробнее о глобальных и локальных переменных можно узнать из статьи: Ссылка 2 (в самом начале).

Итак, мы задали первичное значение переменной Bablo, равным 5000. Это означает, что в начале миссии у нашего ГГ на виртуальном счете будет 5000 р.

Чтобы проверить, сколько денег у ГГ на счете, можем добавить действие «Статус». Прописываем данную команду в инициализацию нашего ГГ (Hero1), либо в файл Init.sqf:

Дмитрий Андраханов

Далее сделаем сам магазин у торговца, где, при покупке/продаже вещей, у ГГ деньги будут пополняться или уменьшаться.
Порывшись на просторах интернета и найдя некоторые примеры, мне, все таки, удалось сделать простой магазин.
Скрипт магазина пока достаточно примитивен и сделан на базе командного меню, но, на начальном уровне знаний, пойдет.

Пропишем в инициализацию торговцу два действия:
this addAction ["Купить товар","TradeBuy.sqf",[],6,false,false,"","(Player distance cursorTarget<=3.5)"];
this addAction ["Продать товар","TradeSell.sqf",[],5,false,false,"","(Player distance cursorTarget<=3.5)"];

Действия можно будет вызвать, когда мы стоим не дальше 3,5 метров от торговца и смотрим на него.

Вещи, которые мы продаем, просто будут удаляться из инвентаря ГГ.

Всё, магазин у нас готов, денежки списываются и начисляются. Проверяем по действию "Статус".

Дмитрий Андраханов

Так как у торговца мы теперь можем покупать различного вида еду и питье, следующим этапом я решил реализовать голод и жажду и возможность есть и пить.

Сразу скажу, что я не стал устанавливать уже существующие моды на голод и жажду потому, что решил для себя сначала научиться все делать самому, пусть и в примитивном виде.

Дмитрий Андраханов

Дмитрий Андраханов

Дальше сделаем возможность есть и пить.

Добавим ГГ (Hero1) еще одно действие (player addAction ["Еда","Eat.sqf",[],3,false];). Его можно прописать либо в инициализацию, либо в файл Init.sqf.

В нем можно будет выбрать раздел «Есть» или «Пить». Если у ГГ в инвентаре будет соответствующая еда, то в разделе у нас отобразится ее название и кол-во. При выборе конкретного типа еды выполнится ряд команд: удалится этот тип еды из инвентаря ГГ и уменьшится уровень голода или жажды, проиграется анимация и звук еды. Файлы анимации и звука нужно сохранить в папку с миссией. Так же не забудьте ваш звук на еду прописать в дескрипшне.

В дальнейшем можно будет реализовать еду и питье прямо из инвентаря ГГ путем двойного нажатия на конкретный тип еды, но это в планах.
Пока меня вполне устраивает и так.

Всё, голод и жажду сделали. Дальше очередь за медициной.

Дмитрий Андраханов

Для медицины я решил использовать пока только бинты и аптечку (медицинские инструменты).
Бинты будут останавливать кровотечение, а аптечка увеличивать здоровье.

Здоровье определяем командой «getDammage player» или «damage player». Измеряется в промежутке от 0 (жив) до 1 (мертв).
Кровотечение определяем командой «isBleeding player» и «getBleedingRemaining player». Кровотечение измеряется в длительности (в секундах).

Теперь при выборе действия «Статус» мы получим информацию не только о кол-ве денег на счете, голоде и жажде, но и о здоровье ГГ.

При перестрелках с ботами, если мы получим ранение от пуль, то в нашем «Статусе» мы сможем увидеть оставшееся кол-во здоровья у ГГ после ранения и идет ли кровотечение или нет.

С отслеживанием повреждений от мутантов по нам не все так просто, и вышеназванными командами это не получится сделать на данном этапе. Как я решил проблему с отслеживанием повреждений от мутантов я расскажу позже.

Это будет означать, что если у ГГ по каким-то причинам возникнет кровотечение, то каждую секунду ГГ будет терять по «капельке» здоровья (Dammage) пока длится кровотечение.

Дмитрий Андраханов

Теперь реализуем способность лечиться от ранений.
Для этого добавим нашему ГГ в инициализацию или пропишем в файле «Init.sqf» еще одно действие «Медицина»: player addAction ["Медицина","Medicine.sqf",[],2,false];

Скрипт выводит на экран меню «Медицина». Если у ГГ в инвентаре будет бинт или аптечка (не забудьте прописать в скрипте продажи у торговца эти предметы), то в меню «Медицина» мы сможем увидеть список команд: «Использовать бинт» или «Использовать аптечку» и кол-во этих самых вещей. При выборе одной из команд, используемая вещь будет удаляться из инвентаря ГГ, будет проигрываться анимация и звук лечения и уменьшаться время кровотечения или увеличиваться уровень здоровья.

На этом с медициной пока все. Воюем с кем-нибудь =>Получаем ранение => Лечимся с помощью действия «Медицина» => Контролируем наше здоровье с помощью действия «Статус».

Дмитрий Андраханов

Дмитрий Андраханов

Теперь поговорим немного о нанесении повреждения мутантам.

Прописываем команду в init.sqf. Здоровье так же указано от 0 до 1. 0 - жив, 1 - мертв.

И с помощью этой команды я увидел интересную вещь. При достижении параметра Damage = 1 собака не умирает (хотя должна по логике)) и продолжает носиться и атаковать ГГ. Умирает же она после еще нескольких точных выстрелов. Получается, что здоровье мутантов в АрмСталкере каким-то пока не известным мне образом увеличено сверх параметра равным 1.

В итоге данной информации мне хватило, чтобы реализовать следующую логику: как только показатель Damage у мутанта становится равным 1, то мы принудительно убиваем мутанта командой: _mutant setDammage 1.

Как я это прописал? Добавил в файл init.sqf строчку

Дмитрий Андраханов

С отслеживанием получения повреждений от мутанта по ГГ у меня было все сложнее.

На примере слепого пса, собака подбегает к ГГ, кусает его и. ничего не происходит. Никакими командами отловить нанесение урона по ГГ мне не удалось. Ни getDammage, ни getHit, ни разнообразными обработчиками событий.

Я поковырял скрипты АрмСталкера, где прописана логика нанесения дамага мутантами и разобрался, что это отслеживается какой-то локальной переменной, которая при достижении определенного числа наносит ГГ урон командой "player setDammage 1", т.е. сразу убивает ГГ.

Тогда я решил реализовать нанесение урона от мутантов по ГГ немного по другому. Я попробовал отловить момент проигрывания анимации атаки у слепого пса и прописать условие, что если проигрывается анимация атаки у мутанта и мутант находится не дальше 2,5 метров от ГГ, то тогда наносить какой-то определенный урон ГГ командой setDammage. Например, я захотел, чтобы собака убивала ГГ с 6 укусов. Тогда setDammage player при каждом укусе мы будем задавать + 0.17.

Таким образом для каждого мутанта отдельно мы сможем прописать со скольких ударов он сможет нас убить.

Теперь с мутантами стало сражаться реальнее и интереснее.

Дмитрий Андраханов

Дмитрий Андраханов

Итак, ребята, аномалии готовы. Пришлось конечно с ними повозиться, так как изучал этот вопрос с нуля и, естественно, были проблемы (особенно с партиклами).
Значит, что у меня получилось сделать.
Как я писал выше, за основу я взял одну, реализованную в миссии разработчиков ArmStalker, аномалию "Грави", которая реагировала на армсталкеровские болты. И взял пять аномалий, которые Злой использовал в "Панацее", и которые были разработаны командой RedBear, вроде.
Попробовал я эти пять аномалий переработать на основе вышеназванной "Грави" и вроде более менее у меня получилось это сделать. Конечно, аномалии достаточно примитивны, но для меня и это результат. Может и вам они тоже будут интересны.
Итак, что за аномалии я сделал:
1. Грави (Gravy) - оставил оригинальную аномалию от АрмСталкера и убрал некоторые визуальные эффекты, чтобы аномалию было сложнее заметить без болта. Аномалию можно определить в спокойном состоянии только по кружащейся около земли листве и звуке аномалии. При попадании в нее игрока наносится 50% урона.
2. Электра (Electra) - аномалия визуально видна четко. При приближении к ней издает звук. Убивает игрока сразу.
3.Трамплин (Tramplin) - аномалия визуально определяется по поднимающимся вверх частям травы. При активации подбрасывает игрока и при падении он умирает.
4. Жарка (Jarka) - визуально определяется по небольшому клубу дыма на земле и легкому звуку пламени или потрескивания. При активации убивает игрока.
5. Жгучий пух (Puh) - визуально определяется по мелким белым пушинкам, которые летают около земли. При попадании в аномалию игрок теряет 10% жизни каждую секунду.

Аномалии создаются вызовом двух функций:
1. 0=["Jarka",getPos thisTrigger] call fnc_anomaly_create_one; — добавил эту функцию для создания одной аномалии конкретного названия (название можно прописать любое из вышеописанных пяти аномалий) по координатам поставленного триггера. Эту команду нужно прописать в инициализации триггера.
2. 0=[thisTrigger, [["Gravy", 7]]] call fnc_anomaly_generate; — функция АрмСталкера, которая создает в районе координат и радиуса поставленного триггера сразу несколько (в нашем случае 7, как прописано) аномалий конкретного названия "Gravy". Так же прописывается в инициализацию триггера.

Уточню, что данные аномалии реагируют на бросание в них болта (по кнопке G, болты должны быть в инвентаре игрока) и работают только при использовании мода ArmStalker (так как там реализованы эти самые болты).

Теоретически болты можно вырезать из мода АрмСталкера, и тогда можно использовать аномалии и без использовании этого мода, но я этим вопросом не занимался, так как нет необходимости.

Читайте также: