Редактор карт
Содержание
Объекты
карты
Идентификаторы
Простейшая
карта
Свойства
объектов
Слоты
редактора
Тип
объекта
Интерфейс
Сохранение
и загрузка карты
Удаление
объектов
Заливка
карты
Создание
дополнительной графики и анимации
Редактор
триггеров
Сообщения
Привязка
к определенному ходу
Условия
Победа
и поражение
Цели
миссии
Герои
Переменные
Разговоры
Продавцы
и магазины
Ограничение
заклинаний
Повторяющиеся
триггеры
Незамкнутые
карты
Описание
вещей
Опыт
Подключаемые
файлы
Полная документация по
триггерам
Номера некоторых звуков и
изображений
Объекты карты
Вся карта состоит из объектов,
размещенных в клетках игрового поля.
Объекты бывают трех видов –
территории, существа и вещи.
Территории могут быть основными
– трава, пол, земля, вода и второстепенными – деревья, стены, кусты,
пентаграммы и др. На каждой клетке поля может находиться одна основная
территория и сколько угодно второстепенных.
На каждой клетке может
находиться одно существо.
На каждой клетке может
находиться сколько угодно вещей.
Идентификаторы
Игра включает в себя множество
ресурсов – изображения, анимации, звуки.
Каждый ресурс имеет
идентификатор 0..20000.
Каждый объект имеет изображение
(или анимацию – для анимированных объектов), которое имеет идентификатор.
Стандартные объекты имеют
идентификаторы 0..14999.
Создатель карты может также
подгрузить свои ресурсы, задав им идентификаторы 15000…19999.
В качестве ресурсов могут
выступать также текстовые файлы.
Простейшая карта
Простейшая карта создается для Вас
при запуске редактора или при изменении размеров карты.
Карта имеет также простейший
набор триггеров, обеспечивающий возможность играть.
Свойства объектов
Каждый объект характеризуется
многочисленными параметрами.
Например, объекты-территории
характеризуются проходимостью, они могут повреждать, могут быть прозрачными или
нет и т.д.
Объекты-существа характеризуются
силой, защитой и пр.
Объекты-вещи – весом, могут
увеличивать силу, быть съедобными и пр.
Эти параметры, а также
идентификатор изображения объекта называются свойствами.
Нажав правую кнопку на карте –
Вы откроете окно, в котором будет весь список объектов на данной клетке.
Выбрав любой из них левой
кнопкой мыши, Вы попадете в окно свойств объекта – для каждого свое.
Слоты редактора
При редактировании слева
находится карта, а справа – большой список слотов.
Слоты – важный инструмент
редактирования. В слоте находятся объекты, выбранные Вами в данный момент для
установки на карту.
Нажав на слот левой кнопкой, Вы
выбираете этот слот.
Нажав на слот правой кнопкой, Вы
сможете выбрать другой объект из стандартных.
Вы можете сохранить любой из
модернизированных Вами объектов в текущий слот.
Тогда (вместе со всеми его
свойствами) Вы сможете устанавливать этот объект, создавая тем самым несколько
совершенно одинаковых объектов. Это удобно, потому что не надо каждый раз
залезать в свойства и редактировать их.
Уникальные номера
Каждый объект имеет уникальный
номер, который присваивается ему при помещении на карту.
Не существует двух объектов с
одинаковыми номерами.
Уникальные номера нельзя
изменять.
Ранее, их использовали в
триггерах – теперь появился более удобный способ.
Тип объекта
Каждый объект имеет тип.
Например, два одинаковых котла
имеют один и тот же тип, но разные уникальные номера.
Тип объекта нельзя изменить.
Интерфейс
Сохранение и загрузка карты
Для того,
чтобы сохранить карту – Вам надо выбрать меню Опции\Свойства и задать имя
карты. После этого, выбрав Опции\Сохранить, Вы
сохраняете карту под заданным именем.
Для загрузки карты – Вам надо
выбрать меню Опции\Загрузить.
Учитывайте, что карты бывают
многопользовательские и однопользовательские. Для изменения возможного
количества игроков на карте, используйте пункт меню “ИГРОКИ”.
Карты могут иметь пароль,
предотвращающий несанкционированное редактирование миссий. Вы должны помнить
пароль и вводить его при каждой загрузке карты в редактор. Если пароль
отсутствует – ничего вводить не требуется.
Удаление объектов
Удаление объектов производится
двумя путями.
1. При установке любой базовой
территории (трава, снег и пр.) – все другие объекты на клетке удаляются.
2. Нажмите правую кнопку мыши.
Выделите мышью нужный объект и нажмите кнопку DEL.
Заполнение карты
Вы можете видеть 4 кнопки “
Нажмите, например, “
Это весьма полезно для быстрого
заполнения карты, например, травой.
Создание дополнительной графики и
анимации
Для добавления дополнительной
графики и анимации используется специальная программа-компилятор. Она находится
в каталоге utils.
Добавление графики пользователя
в карту осуществляется в 3 этапа.
Этап 1. Создание графики
Игра поддерживает 4 вида ресурсов:
1. Файлы в формате BMP –
статичные картинки. Черный цвет является прозрачным.
2. Файлы в формате WAV – звуки и
музыка
3. Совокупность файлов BMP – анимация
(тип ANI)
Совокупность
файлов BMP состоит из
множества файлов вида:
<имя><число>.bmp, например, an0000.bmp, an0001.bmp, an0002.bmp, …..
Такие
последовательности файлов BMP может формировать, например, программа 3D Studio Max.
4. Текстовые файлы TXT, используемые для сообщений и описаний вещей.
5. Ресурс типа BMP2 – аналогичен типу 1,
но можно задавать прозрачный цвет.
6. Ресурс типа ANI2 – аналогичен типу 3,
но можно задавать прозрачный цвет.
7. Ресурс типа MBMP, описывающий мультитайловое изображение.
8. Ресурс типа TXT2 – аналогичен типу 4,
но текст задается не в новом файле, а прямо в файле .me.
Стандартный размер всех объектов игры: 52x52.
Каждый
ресурс (картинка, анимация или звук) имеет свой номер. Настоятельно
рекомендуется использовать номера 15000..29000 во избежание конфликтов со стандартными ресурсами.
Этап 2. Компиляция ресурсов
Перед компиляцией необходимо
создать файл с расширением .me. Это обычный
текстовый файл, который можно редактировать, например, в “Блокноте”.
Формат
файла .me
<имя_файла.bpf> <пароль>
<ресурс1>
<ресурс2>
………
END
Пример описания ресурса BMP в файле .me:
BMP 15000 picture1.bmp
Эта
строка устанавливает соответствие ресурсу под номером 15000 некой картинки из
файла picture1.bmp.
При
этом прозрачным цветом считается черный.
BMP2 15000 picture1.bmp 0 255 0
Эта
строка устанавливает соответствие ресурсу под номером 15000 некой картинки из
файла picture1.bmp.
При
этом прозрачным цветом считается цвет RGB=(0,255,0).
Пример описания ресурса WAV в файле .me:
WAV 15001 sound1.wav
Пример описания анимации в файле
.me:
ANI 15002 Орк2\Норма\an .bmp 2 15
Где:
15002
– номер ресурса
Орк2\Норма\an – имя файлов BMP, не включая
цифры
.bmp – обратите
внимание, что между предыдущим именем и расширением стоит пробел
2
– сколько картинок будут пропущены, т.е. в данном случае д.б. взята каждая
вторая картинка
15
– скорость анимации 1..20 (20 – большая скорость)
При
этом прозрачным цветом считается черный.
ANI2 15002 Орк2\Норма\an .bmp 2 15 255 0
0
Все
параметры аналогичны предыдущему случаю.
При
этом прозрачным цветом считается цвет RGB=(255,0,0).
Пример описания текстового файла
в файле .me:
TXT 15003 mytext.txt
Пример описания текстового файла
TXT2 в файле .me:
TXT2 15003 Это текст
сообщения. endtext
Пример описания мультитайлового
изображения в файле .me:
BMP 15000
grass1.bmp
BMP 15001 grass2.bmp
BMP 15002
grass3.bmp
MBMP 15003 15000
15001 15002 0
Мультитайловые
изображения служат, в основном, для создания ландшафтов типа травы и пр. Вы
можете задать несколько изображений, из которых на карту будет случайным
образом устанавливаться какое-то одно, создавая неравномерную территорию.
Дополнительные параметры
изображений:
OFFS x y
Строка
такого вида укажет смещение, которое надо использовать для вывода следующих
изображений. По умолчанию смещение отсутствует,
т.е. объект привязывается к краю клетки, в которую выводится.
Компилятор при запуске запросит
Вас открыть файл с расширением .me. Укажите
созданный Вами файл и на выходе появится файл с расширением .bpf. Именно отсюда и будет читать ресурсы карта.
Если при компиляции были выданы
ошибки – скорее всего, Вы задали неправильные имена файлов.
Возможен вариант с неправильным
форматом файлов WAV или BMP. Попробуйте в
этом случае открыть и сохранить такие файлы любым из известных редакторов.
Обратите внимание, что поддерживается только PCM-формат WAV-файлов.
Этап 3. Использование триггеров для подключения графики и
звуков
Когда Вы создадите файл
ресурсов, скопируйте его в папку maps. Мы
рекомендуем также создавать для каждой карты свою папку внутри папки maps.
После копирования, запустите
игру.
В редакторе карт, зайдите в
раздел триггеры и в первых строчках (в самом верху) напишите следующие
триггеры:
#usebpf 1 <имя_файла_BPF> <пароль>
#loadbpf 1
Например, Ваша карта называется
‘BATTLE’. Вы хотите подключить к ней некоторые анимации.
Файл .me,
который Вы будете использовать выглядит таким образом:
battle1.bpf 145
BMP 15000 picture1.bmp
WAV 15001 sound1.wav
ANI 15002
Орк2\Норма\an .bmp 2
15
END
После компиляции – появится файл
battle1.bpf.
Создайте в папке maps новую
папку battle и
скопируйте туда battle1.bpf.
Запустите игру.
В редакторе карт войдите в
редактор триггеров.
В первых строчках введите:
#usebpf 1 maps\battle\battle1.bpf 0
#loadbpf 1
Теперь нажмите кнопку <Загрузить BPF> (не выходя из редактора триггеров).
После выхода из редактора
триггеров, Ваш файл ресурсов будет загружен и Вы уже можете менять графику
объектов.
Редактор триггеров
Наиболее интересной особенностью
редактора является возможность создания сложных нелинейных сценариев, зависящих
от событий, происходящих на карте. Для этого служат триггеры.
С помощью триггеров можно
выводить сообщения в нужные моменты времени.
Можно при определенных условиях
изменять карту, загружая в нее новые объекты извне.
Можно также запускать другую
карту, создавая таким образом, связанную кампанию.
Триггеров очень много и список
возможностей необъятен.
Полный их список и описание
каждого можно найти в самом редакторе триггеров, нажав на <СПРАВКА>.
Далее мы рассмотрим наиболее
интересные особенности триггеров.
Сообщения
Итак, научимся создавать
сообщения.
Для этого можно использовать
текстовый ресурс из специально подготовленного файла, но мы сделаем это проще.
Создайте стандартную карту.
Создайте такой триггер
#text 88
Это сообщение номер 88! endtext
#trigger 95
#message 88
Такой триггер выведет текстовое
сообщение.
Номер 88 указывает номер ресурса
сообщения.
С помощью триггера #text Вы можете
задавать номера 0..99.
В сложных миссиях рекомендуется использовать
текстовые ресурсы.
Тогда сообщений может быть сколь
угодно много.
Текст можно переносить на другую
строку, указав в его теле # (с обеих сторон отделить пробелами).
Привязка к определенному ходу
Предположим, Вы хотите, чтобы
сообщение появилось не сразу, а на втором ходу.
Для этого служит триггер #turn.
Например,
#trigger 95
#turn 2
#message 88
Имеется также аналогичный
триггер #mapturn, который надо использовать в кампаниях. Этот триггер использует
ход, прошедший от момента загрузки данной миссии.
Условия
Имеются другие условия, кроме
триггеров #turn.
Например, условие #player сработает
во время хода определенного игрока.
* Внимание ! Все триггеры
срабатывают только во время хода игрока-человека. Они не срабатывают во время
хода компьютера.
#text 88 Ходит игрок 1 endtext
#text 89 Ходит игрок 2 endtext
#trigger 95
#player 1
#message 88
#trigger 96
#player 2
#message 89
Существуют и другие условия,
полный список ищите в справке редактора триггеров.
Победа и поражение
Победа и поражение являются
очень простыми триггерами #victory и #loose.
Например, победа на 30 ходу.
#trigger 95
#turn 30
#victory
Или поражение при условии, что
нет живых колдунов.
#trigger 96
#nowiz
#loose
Цели миссии
Итак, научимся задавать цель
миссии. Цели можно посмотреть во время игры и рекомендуется задавать их, чтобы
игрок знал – чего от него хотят.
#text 88 Ваша цель – уничтожить паука! endtext
#trigger 95
#setobjective 88
Этот триггер задаст цель,
использовав для этого текст 88.
Опять же рекомендуется применять
текстовые ресурсы для задания целей, для чего их необходимо предварительно
скомпилировать.
Герои
Для указания в триггерах
определенного существа применяют свойство “Герой”.
Вы можете указать любому
существу способность <ГЕРОЙ> с определенным номером.
Тогда этот номер можно применить
в триггерах – он не изменится ни при каких обстоятельствах.
Например, если герой с номером 5
мертв – поражение.
#trigger 95
#heroisdead 5
#loose
Существует целый набор триггеров
для работы с героями, например, можно учесть, достигли ли герои определенного
места, живы ли они и пр.
Кроме того, можно легко загружать и сохранять героев в файлы – для передачи их
в другую карту.
Для этого служат триггеры #saveheroslot и #loadheroslot.
Переменные
Довольно часто могут
понадобиться переменные – зачастую намного удобнее обращаться с ними.
Например, существуют два
создания-героя с номерами 10 и 20, одного из которых надо убить и тогда должно
быть выведено сообщение и победа.
#text 10 Победа! endtext
#trigger 10
#varnotexists 1 Этот
триггер – условие – существует ли переменная
#setvar 1 0
Записываем в переменную 1 значение 0
#trigger 20
#heroisdead 10 Если
герой 10 убит
#setvar 1 1
То в переменную записываем 1
#trigger 30
#heroisdead 20
#setvar 1 1
#trigger 40
#varequal 1 1 Если в переменной 1, то
#message 10
Сообщение
#victory
Победа
Вы можете использовать
переменные в других триггерах, вместо чисел. Для этого их просто обозначают
так: v<номер переменной>
Например:
#text 10 Победа! endtext
#trigger 10
#setvar 1 10
#setvar 2 30
#trigger 20
#heroisdead v2 Вместо v2 подставляется текущее значение переменной номер 2,
которое равно 30
#message v1 Вместо v1 подставляется текущее значение переменной номер 1,
которое равно 10
#victory
Для работы с переменными очень удобны
также 2 специальных триггера.
#varoper – позволяет производить
любые арифметические действия
#varif – позволяет сравнивать
Примеры:
#varoper 1 + 2 Прибавляет
к переменной номер 1 число 2
#varoper 1 * v200 Умножает
переменную 1 на переменную 200
#varif 1 > v2 Условие
сработает, если переменная 1 больше, чем переменная 2
#varif 1 <> v200 Условие сработает, если значения
переменных 1 и 200 отличаются
Разговоры
Разговоры – инструмент для
создания сложных диалогов.
Любому существу можно задать
способность поговорить (для этого надо только знать идентификатор уже
скомпилированной заранее фразы).
Здесь Вам придется изучить
подключение текстовых файлов.
Основным инструментом здесь
является триггер #talkaddanswer.
Предположим, мы уже
скомпилировали и подключили файл с 3 текстовыми файлами, имеющими такие
идентификаторы:
16000 “Что вы выбираете ?”
16001 “Победа”
16002 “Поражение”
Тогда создайте такую
последовательность триггеров
#trigger 10
#talkaddanswer 16000 16001 0
#talkaddanswer 16000 16002 0
#trigger 20
#talkstart 16000
#trigger 25
#lastanswer 16001
#victory
#trigger 30
#lastanswer 16002
#loose
Внимание! Если
Вы хотите сделать, чтобы ответ занимал на экране несколько строк – поставьте
символы ‘#’ в начале ответа.
Например, так:
---- Файл answer1.txt ----
##Неужели
Вы хотите, чтобы я сдался?
---
Этот ответ займет 3 строки на
экране.
Продавцы и магазины
Начиная с версии 2.04 появилось
понятие золота. Каждый игрок обладает золотыми монетами, общими для всех существ.
Создание продавцов – не очень
легкое дело.
Во-первых, список продаваемых
вещей составляется на основе идентов их рисунков.
Необходимо посмотреть эти номера
в свойствах вещей.
Во-вторых, надо создать так
называемый слот магазина.
#settradingplace 1 3000
3004 0
Этот триггер создает слот
магазина с номером 1. В этом слоте продаются вещи с рисунками 3000 и 3004 (т.е.
эти вещи продавец согласен продавать и покупать).
Чтобы магазин стал доступным
надо в свойствах существа задать ему способность продавец и присвоить этой
способности номер слота магазина.
В процессе игры можно поменять
ассортимент в магазине.
Ограничение заклинаний
Триггер #spelllist ограничивает
список заклинаний текущего главного колдуна.
Список номеров заклинаний можно
найти в самом конце СПРАВКИ по триггерам в редакторе триггеров.
#trigger 60
#spelllist 43 45 0 Ограничиваем список заклинаний
гоблином и троллем
Повторяющиеся триггеры
Вы, наверное, заметили, что
после срабатывания один раз, триггеры более не срабатывают.
Зачастую возникает необходимость
в повторяющихся триггерах.
Например, при создании диалогов.
Здесь нам поможет триггер #repeat.
Пример:
Имеется 3 скомпилированных
текстовых файла:
16000 “Повторяю !”
16001 “Почему?”
16002 “Потому!”
Задайте какому-нибудь существу
разговор с идентификатором 16000.
#trigger 30
#talkaddanswer 16000 16001 0
#trigger 40
#lastanswer 16001
#message 16002
#repeat
Если бы триггера #repeat в конце не
было – то ответ “Потому!” сработал бы всего один раз, а так – работает каждый
раз.
Создание незамкнутых карт
Карты, как правило, замкнуты, но
вам может понадобиться сделать незамкнутую карту.
Для этого применяйте триггер #border. Не забывайте перед использованием правильно
позиционировать карту с помощью #centermap.
Пример – ограничение
определенной области карты.
#centermap 10 10
#border 2 2 20 20
Этот триггер ограничит область
карты размером 20х20 клеток, начиная с координат 2,2.
Описание вещей
Когда Вы создаете новые вещи,
необходимо также создать для них описание. Описание надо сделать в виде
текстового ресурса, подключив его в файле BPF. Затем в свойствах вещи можно присвоить описанию идентификатор
текстового ресурса.
Опыт
Вы можете ввести понятие опыта в
свои карты.
Для этого существуют свойства
существ "Бонус опыта" и "Опыт-переменная".
Бонус Опыта установит количество
опыта, получаемое при гибели этого существа.
Опыт добавляется к значению
специальной переменной. Ее номер
указывает "Опыт-переменная".
Существует также триггер #setexpvariable, который может присвоить всем существам игрока одну и ту
же "Опыт-переменную".
Это нужно, если вы не хотите
каждый раз задавать эту переменную в свойствах существ.
После того, как вы задали всем
существам "Бонус Опыта", можно делать со значением этой переменной
что угодно.
Можете сравнивать ее с
каким-нибудь значением, вычитать из нее и так далее.
Подключаемые файлы
С помощью триггера #include вы можете
подключить текстовый ресурс в качестве дополнительных триггеров.
Это означает, что строки из
текстового ресурса будут подключены к триггерам в том месте, где встретится #include.
Подключение происходит при
загрузке карты.
Пример:
#include 16000
В этом месте в триггеры будет
вставлен текстовый ресурс со строчками триггеров.