<<<Назад <<<

Хотите взрыв?

Иногда же вам хотелось сделать миссию более эффектной с помощью артобстрела? Или с помощью бомбардировки? Вот собственно два скрипта с подробным обьяснением.

  1. Бомбардировка
    идет относительно самолета(кто захочет - можно и вертолета, но это нереально будет, товарищи)

    ;находим самолет и записываем его в переменную _plane
    _plane = this select 0
    ;берем название заряда и записываем его в переменную _gun
    _gun = this select 1
    ;записываем кол-во зарядов в переменную _countgun
    _countgun = this select 2
    ;начало цикла
    #bomba
    ;помещаем бомбу ниже самолета на полметра
    _bomb = _gun camcreate[(getpos _plane select 0), (getpos _plane select 1), (getpos _plane select 2)-0.5]
    ;ожидаем полсекунды и уменьшаем кол-во зарядов на 1-цу
    ~0.5
    _countgun = _countgun - 1
    ;проверяем кол-во зарядов:
    ;если > 0, то возвращаемся в начало цикла
    ;если нет, то идем к концу
    ?(_countgun>0): goto "bomba"
    exit
    ;запуск скрипта:
    ;[ваш_самолет,"ваш_заряд",кол-во_зарядов]
    ;exec "ваше_название_скрипта.sqs"
  2. Артобстрел: !ОБНОВЛЕН!(! - обновление в скрипте)
    идет относительно какого-либо маркера

    ;берем название заряда и записываем его в переменную _gun
    _gun = this select 0
    ;берем название маркера и записываем его в переменную _marka
    _marka = this select _coord
    ;кол-во переменных в массиве записываем в переменную _coord
    ;отнимаем от кол-ва переменных в массиве 1-цу для того,
    ;чтобы не было ошибки при взятии координатов,
    ;например: у вас 15 эл. в массиве. _gun нам брать не надо, а
    ;из-за считывания координат без 0-вого эл-та
    ;программа найдет несуществующую переменную. Нам
    ;этого не надо.
    _coord=(count _this) - 1
    ;берем название маркера и записываем его в переменную _marka
    _marka = this select _coord
    ;начало цикла
    #artob
    ;обождем время от 1 до 5 секунд
    ~random 5

    ;захват случайным образом координат из массива _this с помощью
    ;переменной _coord

    ;координата x
    _xc = _this select (random _coord)
    ;!проверяем номер рендома, чтобы он не взял имя маркера на x
    ;а взял последнюю координату
    ?(_xc == _coord): _xc = _coord - 1
    ;координата y
    _yc = _this select (random _coord)
    ;!проверяем номер рандома, чтобы он не взял имя маркера на y,
    ;а взял последнюю координату
    ?(_yc == _coord): _yc = _coord - 1

    ;создаем заряд относительно маркера плюс координат х и у
    _bang = _gun camcreate[(getmarkerpos _marka select 0) + _xc, (getmarkerpos _marka select 1) + _yc]

    ;проверяем выполнена ли задача (obj правда или ложь)
    ;правда - переходим к концу
    ;ложь - возвращаемся в начало цикла
    ?(obj): exit
    goto "artob"
    ;если хотите, можете сделать так, как и в бомбардировании - определить
    ;кол-во зарядов, а потом проверить его: 0 зарядов или еще есть

    ;для запуска скрипта
    ;["ваш_заряд",...разные_координаты...,"ваш_маркер"]
    ;exec "ваше_название_скрипта.sqs"
    ;не забудьте кроме положительных координат еще и отрицательные
  3. Артобстрел 2. Сокращение.!НОВОЕ!
    идет относительно какого-либо маркера

    ;берем название заряда и записываем его в переменную _gun
    _gun = _this select 0
    ;берем максимальное значение координат и записываем его
    ;в переменную _coordsmax
    _coordsmax = _this select 1
    ;берем название маркера и записываем его в переменную _marka
    _marka = _this select 2
    ;берем максимальное ожидание заряда оружия
    _vrema = _this select 3

    ;начинам цикл
    #artobstrel
    ;ожидаем от одной до _vrema секунд
    ~random vrema

    ;захватываем одну из координат максимально до _coordsmax в переменную _xc
    _xc = random _coordsmax
    ;захватываем одну из координат максимально до _coordsmax в переменную _yc
    _yc = random _coordsmax

    ;создаем заряд относительно маркера _marka плюс координаты x и y
    _bang = _gun camcreate[(getmarkerpos _marka select 0) + _xc, (getmarkerpos _marka select 1) + _yc]

    ;проверяем выполнена ли задача (obj правда или ложь)
    ;правда - переходим к концу
    ;ложь - возвращаемся в начало цикла
    ?(obj): exit
    goto "artobstrel"
    ;если хотите, можете сделать так, как и в бомбардировании - определить
    ;кол-во зарядов, а потом проверить его: 0 зарядов или еще есть

    ;для запуска скрипта
    ;["ваш_заряд",максимальная_координата,"ваш_маркер"]
    ;exec "ваше_название_скрипта.sqs"
Но в Артобстреле 2 будут только макс-корды(отрицательные не пробовал), но в написании он значительно легче, чем обычный Артобстрел(лучше использовать обычный Артобстрел, в нем может быть огромное кол-во координат)
<<<Назад <<<