<<<Назад <<< | <<<Меню>>> | >>> Далее>>> |
Внимательно всмотритесь в следующий текст:
_unit = _this select 0
У новичков в "науке" :) скриптописания возникнет вопрос - "ЧТО ЭТО?" Если вы хотя бы чуть-чуть знаете английский, то вы поймёте.
Вот как это выглядит в переводе на русский:
_unittwo = _this select 1
_unit DoWatch _unittwo
_unittwo DoWatch _unit
~2
_unit playmove "effectstandsalute"
_unittwo playmove "effectstandsalute"
_юнит = _это выбирает 0
_юнитдва = _это выбирает 1
_юнит смотрит_на _юнитдва
_юнитдва смотрит_на _юнит
~2 (проходит 2 секунды)
_юнит играет_движение "ОтдатьЧесть"
_юнитдва играет_движение "ОтдатьЧесть"
Это очень простой скрипт - Salute.sqs. Если понять это правильно, то сразу понимаешь о чём речь:
"1 юнит смотрит в сторону 2-го , 2-й смотрит в сторону 1-го и они оба отдают друг другу честь".
Правильно.
Обратите внимание на знак " _ "! Такое встречается в большинстве скриптов. Например, скрипт взрывающихся бочек Немца (В папке "ПРИМЕРЫ"). Там есть такая строка:
_bochka = _this select 0
В тестовой миссии, для правильной активации скрипта нужно в init (инициализации) бочки с ЛЮБЫМ НАЗВАНИЕМ написать:
[unit-Bochka-name] exec "Bum.sqs"
Без этого никуда. А особенно посмотрите порядок вписывания имён. _this select 0 - на первом месте, _this select 1 - на втором и т.д. Потренируйтесь в написании похожих простеньких скриптов и только потом переходите к следующей главе...
В примере, приведённом выше вы заметили знак ~ (там даже было пояснение) Этот знак (~) обозначает промежуток времени, который разделяет два действия. Зубрить это НЕ надо. Можно привести огромное количество примеров, но мне кажется всё и так понятно. Время можно также уточнять вплоть до не знаю каких чисел.
Например:
~0.32466484232884568931
Конечно, такая точность не требуется в скриптах. Самые часто употребляемые числа: это 1 - 20 и 1 - 0.01. Другие числа редко используются в скриптах. Ну ... может быть в видеороликах (?) ... Идём дальше.
Очень часто нужно написать условие в скрипте. Вариантов условий очень много.
Условия бывают 2-х видов:
1) ?(условие): эффект
2) @(условие)
Первый вариант используется в том случае, если нужно написать один эффект или часть скрипта (см. ниже) Например:
?(not(alive _Man)):goto "Trevoga"
или ещё:
?(_aP distance _Target < 100):aP sidechat "Ya uzhe blizko!"
Второй вариант используется реже, совершенно противоположен первому. Если нужно написать несколько эффектов или "вживить" в это условие часть скрипта. Иногда используется вместе с первым вариантом.
Бывает также главным условием скрипта, при активации которого скрипт активизируется. Вот пример употребления второго варианта:
#Presledovanie
_enemy move getpos _Player
@(unitready _enemy)
~2
?(alive _Player):goto "Presledovanie"
В этом примере используется оба варианта условия. Получается так:
#Преследование
Это простой скрипт Follow.sqs. Могу также привести ещё пример главного условия, при активации которого скрипт активизируется:
_враг бежит к _игроку
@(юнит готов "_враг")
~2
?(живой _игрок):активировать "Преследование"
@(_Man distance _AntiInfantryMine < 2)
Всё элементарно, Ватсон! Потренируйтесь в написании скриптов с условиями и переходите к следующей главе под названием...
~0.5
_Bum = "MortarShell" camcreate getpos _AntiInfantryMine
exit
Эффекты бывают разные - простые, средние, сложные ... Ну, в общем, это развёрнутая тема, она же одна из самых важных. В качестве эффектов используются действия, т.е. движение юнита, взрывы на земле, в воздухе, перемещение объектов, координаты, появление на карте объектов, сохранение игры, и т.д. и т.п.
Вот возможные движения людей.
Для тех, у кого нет стажа по картостроению пишу пример:
@(_Man in _UAZ)
~0.5
_Man move getpos _T
~10
_UAZ setdammage 0.6
_Man setdammage 0.8
_Man switchmove "UazDriverDying"
Последняя строчка и является действием. Некоторые говорят, что разницы в playmove и switchmove нет. И не правильно говорят. Дело в том, что switchmove - моментальное действие, а playmove - действие с анимацией.
Кстати, строчка _Man move getpos _T
командует юниту идти (бежать, лететь, ехать ...) к нужному объекту или координатам.
Как сделать взрыв?
Просто.
chto_hochesh = "imia_vzriva" camcreate [x,y,z]
Можно также сделать взрыв относительно какого-либо объекта, например:
chto_hochesh = "imia_vzriva" camcreate getpos Unit
Тогда взрыв произойдёт на месте определённого юнита (объекта)
Только надо знать название этого взрыва. Не пытайтесь для взрыва писать стандартное название боеприпасов, типа ZsuCannon, Rocket57x192 и т.д Вот, что можно писать на месте "imia_vzriva":
Есть ещё много разных эффектов.
Например, чтобы как бы сделать WayPoint "MOVE" (Указатель "движение") нужно в скрипте или в On activation ("при активации") триггера писать:
Unit_name move [x,y,z]
Опять же, если надо сделать перемещение объекта относительно другого - надо добавить getpos:
Unit_name move getpos Other_unit
Если надо моментально "телепортировать" юнит куда нибудь, то тогда пишите в скрипте или в On activation ("при активации") триггера:
Unit_name setpos [x, y, z]; Unit_name setpos ( getpos Other_unit)
Есть ещё несколько вариантов перемещений юнитов, которые описаны тут. Там также описываются большинство эффектов.
Как сохранить игру скриптом или триггером?
Очень просто: нужно только в скрипте или в On activation ("при активации") триггера писать:
savegame
Употребляйте эту команду по назначению. Не советую её часто использовать в скриптах или миссиях - теряется играбельность . А вот перед "большой дракой" или второй частью миссии его
(savegame) как раз лучше использовать, для удобства. Если вы делаете сложно проходимую миссию, то тогда вообще забудьте про команду savegame.
Cоздать юнит в процессе игры?
Это немного сложно. Тоже делается через команду camcreate, которая используется при взрывах. Тогда, пишите в скрипте или в On activation ("при активации") триггера:
chto_hochesh = "Nazvanie_unita" camcreate [x,y,z]; chto_hochesh = "Nazvanie_unita" camcreate getpos Other_unit
Например:
US_IFV = "M113" camcreate getpos X_unit
Правда это весьма неудобно тем, что объект не двигается, ко всему относится скептически (даже если в него пущена ракета :)) не имеет ни союзников, ни врагов, в него нельзя влезть (если это танк или машина) и т.д.
В общем, юнит получается бесполезным. Правда, если писать это в On activation ("при активации") триггера, то тогда он перейдёт на ту сторону, которая активировала триггер.
AI созданного в процессе игры юнита можно немного расшевелить используя некоторые команды, которые описаны тут.
В скрипте пишите:
playmusic "music_name"
Большинство названий музыки - от "track1" до "track16". И ещё "7thlifeless" и "7thdecide". Есть также несколько названий, но я их не помню
(хотя они реже употребляются. Для большей информации о музыке зайдите сюда.
Чтобы сделать музыку громче или тише - пишите: 10 fademusic 1
Где 10 - это время, за которое громкость повышается/понижается, а 1 - это громкость музыки. Соответственно 0 - выключенный звук, а 1 - полная громкость. Если потом надо
вставить другую музыку, то не забывайте опять написать fademusic но с 1 вместо нуля, это включит звук.
Звуки включаются так:
playsound "sound_name"
Звуки чаще всего употребляются с помощью триггеров в меню (нижний правый угол) "эффекты". Там и настраиваются звуки. Названия звуков можно определить так:
Делаете любой триггер и устанавливаете в меню "эффекты" нужный звук. Сохраняете миссию под любым названием. Выходите из игры или нажимаете на клавиатуре Alt+Tab . Открываете блокнот (NotePad) . Ищете свою
миссию (*.sqm файл в папке с её названием) и открываете блокнотом. Ищете тот триггер в тексте. И внимательно читаете все его эффекты. Затем копируете (выделяйте , затем нажмите Ctrl+C )название этого звука в playsound "sound_name", то есть вместо sound_name (для вставки нажмите Ctrl+V). Это, пожалуй, всё по звукам.
<<<Назад <<< | <<<Меню>>> | >>> Далее>>> |