Запуск кода

Как выясняется, не все понимают самые базовые моменты.
Например —  запуск кода.

То есть, бывает такое, что человек использует скрипт на спаун ботов, которые будут где-тов конце его миссии — пихает в init.sqf

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

 



 

Начнём пожалуй.

Код может запускаться разными способами:

  • Из поля инициализации объекта
  • Из триггера
  • По условию прописанному в скрипте

1.) Из поля инициализации объекта.


Код прописывается в поле инициализации объекта, и он срабатывает сразу при запуске миссии.

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

Пример:

this addAction ["<t color='#00ff00'>Арсенал</t>", {call BIS_fnc_arsenal;},[false],1,false,true,"","(_target distance _this) < 3"];

А так же другие варианты кода, если нужно его срабатывание сразу при старте миссии.

 


2.) Из триггера


 

Код сработает при выполнении условия активации триггера.

Например, это может быть миномётный обстрел или прилёт вертолёта при активации триггера.

 


3.) По условию прописанному в скрипте


Код запускается по разному, и из разных источников.

Как один из вариантов — это файл созданный своими руками, типа ИМЯ_ФАЙЛА.sqf
И в данном случае, вы можете обращаться к нему (файлу) как вам хочется. Можно из другого файла, можно из триггера, или ещё как придумаете.

Так же есть файлы, которые тоже создаются руками, но в движке армы они имеют своё, заранее определённое значение.

Они всегда кладутся в корень папки с миссией.

Например:

init.sqf

initPlayerLocal.sqf

onPlayerRespawn.sqf

и т.д. , о которых можно прочитать тут https://community.bistudio.com/wiki/Event_Scripts

Поэтому, вам надо прочитать описание по ссылке выше, и осознать откуда вам надо запускать ваш код.

В данном случае, условие прописано в каком либо скрипте, и ожидает своего выполнения.
Например, это может выглядеть так:

waitUntil {uiSleep 0.5; (!alive ustr1)};

Где ожидается, что объект ustr1 будет уничтожено, то есть условие !alive (not alive).

Или же это может ожидание сокращения дистанции между объектом и контрольной точкой координат (можно с объектом):

waitUntil {
sleep 5;
(_heli distance [5027.46,5904.23,0]) <= 300
};

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

Если же что-то непонятно, то можно спросить / уточнить в нашем Discord канале