RSS
Меню сайта

Категории каталога
Doom3 [11]
Статьи о разработке карт к Doom3
Общее [7]
Статьи про общие моменты маппинга

Наш опрос
Навигация в "Файлах"
Всего ответов: 21

Copyright C4TNT© 2008

Главная » Статьи » Маппинг » Doom3

Скриптуем #1

Итак, начнём наше заседание.


Для начала было бы неплохо выяснить, что вообще нужно для написания скриптов в Doom3.
Тем более, что нужно не очень много:
  1. Любой текстовый редактор, умеющий сохранять в формате txt. Например Блокнот.
  2. Более-менее хорошая память или листочек, её заменяющий
Вот и всё, что требуется для того, чтобы начать.

И, начали!


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

  • Переменная - эдакий шкафчик, в ней может храниться число, объект карты или что-нибудь ещё
  • Оператор - позволяет выполнять математическую операцю с переменными
  • Функция - Обычно потребляет некоторое количество переменных и производит действие. Ещё может давать результат, который может быть размещён в переменной.
  • Метод - Может быть только у объекта, обычно нужен для выполнения операций с объектом.
На первый взгляд страшновато, но сейчас всё встанет на свои места.

Переменные.


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

Возможные типы:
  • 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" );
}

На сегодня всё...
Категория: Doom3 | Добавил: c4tnt (05.11.2008)
Просмотров: 1253 | Комментарии: 4 | Рейтинг: 0.0/0
Всего комментариев: 4
1 Rajvo  
1
Во! Вот это полезная штука. WarlorD доволен теперь, думаю smile

2 Archi  
1
Це легко, ожидайте потруднее статьи smile

3 Rajvo  
1
Ждем, ждем, ждем, мешаем водку гвоздем... wacko

4 intel  
0
как понять имя_карты.script - имя_карты sad
Ответ: Просто файл скрипта должен называться так же, как и файл карты, только иметь расширение .script То есть если карта называется somemap.map то скрипт должен называться somemap.script.

Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Вход:

Поиск

Ссылки


Статистика

Онлайн всего: 3
Гостей: 3
Пользователей: 0


Работаем на керосине