Для начала было бы неплохо выяснить, что вообще нужно для написания скриптов в Doom3. Тем более, что нужно не очень много:
Любой текстовый редактор, умеющий сохранять в формате txt. Например Блокнот.
Более-менее хорошая память или листочек, её заменяющий
Вот и всё, что требуется для того, чтобы начать.
И, начали!
Итак, будем разбираться, что же такое скрипт на самом деле и как его содержимое соотносится с картой. Во первых скрипт состоит из функций, переменных и операторов. Что есть что:
Переменная - эдакий шкафчик, в ней может храниться число, объект карты или что-нибудь ещё
Оператор - позволяет выполнять математическую операцю с переменными
Функция - Обычно потребляет некоторое количество переменных и производит действие. Ещё может давать результат, который может быть размещён в переменной.
Метод - Может быть только у объекта, обычно нужен для выполнения операций с объектом.
На первый взгляд страшновато, но сейчас всё встанет на свои места.
Переменные.
В переменных можно хранить что-то. В думе все переменные имеют какой-либо тип, который определяет, что именно может быть в переменной.
Возможные типы:
string - текст, записать в переменную с таким типом текст можно так: переменная = "текст";
float - число, записать число можно так: переменная = 123456;
entity - игровой объект, например монстр или кусок стены
boolean - логическая переменная, может принимать значения true(да) и false(нет)
Для чего нужны эти самые переменные, вы скоро увидите в примере.
Немного функций
Итак, даже в самом начале изучения скриптов было бы неплохо знать несколько функций, просто для того, чтобы получить от системы что-то внятное. Вот эти функции:
sys.print( string ) - эта функция печатает какой-либо текст в консоль игры. В скобках у функций идут параметры. У этой функции только один параметр - строка, которую надо напечатать в консоли. Теперь смотрим на переменные и сопоставляем.
Ну, для начала хватит и этого.
Оформляем скрипт
Теперь попробуем использовать эту функцию во благо человечества. Для начала нам нужна более-менее компилирующаяся карта. Надеюсь, у вас такая есть. Если нет - быстренько склепайте, а если есть - создайте рядом с ней такой файл: имя_карты.script - имя_карты, естественно, нужно заменить названием файла с вашей картой.
Теперь попробуем сделать скрипт, который бы написал в консоли, что эту карту сделали именно вы, и никто другой. Это, конечно, на способ защиты карт не тянет, но на пример по скриптам - вполне. Логичнее всего, если скрипт напишет какой-то текст сразу после запуска вашей карты. Для этого добрые разработчики предоставили нам следующую возможность: напишите в файле такой текст
void main() { }
Вас наверняка заинтересовало, что же вы такое написали... Только что незаметно для себя вы создали свою собственную функцию (вот этой строкой: void main() ). В скриптах дума нет программного кода, находящегося за пределами какой - либо функции. Если вам нужно выполнить какой-то скрипт - нужно сначала создать функцию с кодом скрипта. Что мы и делаем. Итак, теперь текст функции, его пишут между скобочками {,}
void main() { sys.print( "Эту карту сделал Я" ); }
Опять же, что мы написали? sys.print () - это та самая функция, которая печатает в консоль. А напечатали мы текст "Эту карту сделал Я". Обратите внимание на ; в конце строки. В скриптах этим знаком разделяют операции. Попробуйте запустить карту. Если всё удалось - в консоли вы увидите свой текст (Если у вас английская версия дума - пишите текст по английски). Но есть один недочёт - то, что идёт в консоли после вашего текста, начинается не с новой строки... Для исправления нужно вставить перевод строки в конец текста, но как это сделать? В думе есть специальная комбинация для этого: "\n". Исправим текст соответственным образом:
void main()
{
sys.print( "Эту карту сделал Я\n" );
}
Ну вот, теперь всё ОК. Можно напечатать ещё пару строк:
void main()
{
sys.print( "Эту карту сделал Я\n" );
sys.print( "И написал про это в консоли с помощью скрипта\n" );
}
Ответ: Просто файл скрипта должен называться так же, как и файл карты, только иметь расширение .script То есть если карта называется somemap.map то скрипт должен называться somemap.script.
Добавлять комментарии могут только зарегистрированные пользователи. [ Регистрация | Вход ]