Плагин для OBSE который, расширяет возможности стандартного редактора TES IV: ConstructionSet
Скажите, кто из вас не мечтал, чтобы это ужасное окно редактора скриптов само проставляло табуляцию? Кому из вас не мешали в работе постоянные окошки с предупреждениями от конструктора? А не приходилось ли вам сталкиваться с тем, чтобы конструктор закрывался от одного вашего небрежного действия и ваша полуторачасовая работа летела коту под хвост?
Так или иначе вы не сможете не оценить вклад автора этого замечательного плагина: shadeMe, за что ему респект и уважуха большой поклон.
Нововведения
- Теперь можно загружать мастер-файлы в конструктор для редактирования
- Можно менять заголовочную информацию о мастер-файле:
- Улучшен инструмент «Поиск текста»:
- Дважды кликнув по выбранному результату поиска, откроется соответствующее окошко для его редактирования, или, если это ссылка на объект, то он загрузится в окне визуализатора.
- Теперь можно загружать плагины с отсутствующими мастер-файлами:
- Отныне все предупреждения не выскакиваю в диалоговых окнах, а тихо и мирно выводятся в консоль
- Быстрый выход из CS.
- Сохранения плагинов как мастер-файлов:
- Теперь плагин можно сохранить как ESM или как ESP, на выбор.
- Теперь диалоговое окно которое выскакивает при закрытии окна редактора скриптов с подтверждением о сохранении скрипта имеет кнопку "Отмена", что позволяет вернутся к редактированию скрипта, как, например, в Ворде.
- Улучшенная команда рекомпиляции скриптов:
- Теперь при вызове команды «Рекомпилировать все скрипты» они будут рекоплилированы только в активном плагине.
- Лог компиляции:
- Результаты рекомпиляции выводятся в консоль.
- Неизвестные записи и типы групп:
- Результаты рекомпиляции выводятся в консоль.Если при загрузке, в плагине, будут обнаружены неизвестные записи или типы групп, то это не вызовет ошибки и, как следствие, закрытие окна «Конструктора».
- Удвоен максимальный размер скомпилированного скрипта:
- Теперь размер байт-кода скомпилированного скрипта может быть равен 32KB.
- Ошибки компиляции:
- Теперь ошибки компиляции выводятся в соответствующую область окна редактора скриптов.
- Сохранение плагина при открытых окнах «Конструктора»:
- Теперь не обязательно закрывать все диалоговые окна перед сохранением плагина.
- BSA архивы больше не загружаются выборочно:
- Все BSA архивы в папке Data загружаются при старте «Конструктора».
Установка
Скачать плагин можно по ссылке в нашей базе.
- Для установки плагина извлеките содержимое плагина в папку Oblivion.
Также рекомендуется скачать и распаковать в папку Oblivion архив CS 10 Executable, ссылка на который дана всё на той же странице. Затем откройте файлик ConstructionSet.ini, найдите в нём строку bAllowMultipleEditors и присвойте ей значение 1.
Он был написан с нуля и превосходит стандартный редактор во всех отношениях.
Новый редактор скриптов
Рис.1 Окно редактора скриптов
Новый редактор полностью заменил старый и вплотную приблизился к редакторам кода в понимании современного человека, единственное, чего ему не хватает, на мой взгляд, так это подсветки синтаксиса, будем надеяться, что автор не забудет реализовать эту приятную мелочь в последующих версиях своего творения.
Панель инструментов редактора скриптов
- создать новую вкладку
- создать новый скрипт.
- открыть скрипт.
Выбор скрипта
Рис.2 Диалоговое окно для выбора скрипта
Окошко для выбора загружаемого в редактор скрипта также стало более информативным, в перечне скриптов появилась колонка с типом скрипта, а также появился предпросмотр. Теперь можно загружать сразу несколько скриптов в редактор: к списку скриптов применимы уже привычные комбинации клавиш системы Windows - Shift и Control, внизу окошка, под перечнем скриптов, расположена текстовая строка которая служит для быстрого поиска по списку.
- сохранить скрипт.
- сохранить, но не компилировать.
- сохранить и скрипт и активный плагин.
- загрузить предыдущий по списку скрипт.
- загрузить следующий по списку скрипт.
- перекомпилировать все скрипты в активном плагине.
- перекомпилировать зависимые скрипты.
- удалить скрипт.
- сохранить скрипты во всех открытых вкладках.
- вызвать меню настроек.
Меню настроек
Рис.3,4,5,6,7 Меню настроек редактора скриптов
Вкладка General
Auto-Indent Script Lines ((рус.) "Авто сдвиг строк кода") - При включённой опции программа будет автоматически вставлять отступ (символ табуляции) после открытия и убирать его после закрытия следующих блоков:
0 Begin - End
0 If - ElseIf - EndIf
0 While - Loop
0 ForEach - Loop
Show Editor As Child Window - если этот флажок установлен, то окно редактора скриптов будет открыто как дочерное окно главного окна CS. Вся разница заключается в том, что если этот пункт не отмечен, то открытое окно редактора скриптов будет занимать дополнительную вкладку в панели задач.
Save Caret Position With Script - если этот флажок установлен, то программа будет сохранять положение курсора при переходе на новую строку таким же как оно было на начале предыдущей строки. Говоря простым языком, курсор не будет постоянно перепрыгивать на начало строки, как это было в стандартном редакторе.
Close Editor With Last Tab ((рус.) "Закрыть редактор с последней вкладкой")- ну тут всё предельно ясно, когда мы закроем последнюю вкладку, то и окошко редактора закроется.
- показать или спрятать область окна редактора скриптов, куда выводятся сообщения и ошибки при компиляции скриптов.
- показать или спрятать область окна редактора скриптов, куда выводятся результаты поиска и замены в тексте скрипта.
- показать или спрятать область окна редактора скриптов со списком закладок.
- экспортировать текущий скрипт в текстовый документ
- экспортировать все загруженные в редактор скрипты в текстовые документы (на один скрипт - один документ)
- импортировать текст скрипта из текстового документа
- импортировать текст скриптов из нескольких текстовых документов (из одного документа - один скрипт, каждый будет открыт в новой вкладке)
- показать или спрятать список переменых используемых в текущем скрипте.
- выделяет следующие блоки отступами для читаемости кода:
Begin - End
If - ElseIf - EndIf
While - Loop
ForEach - Loop
- привязать скрипт к существующей или новой записи.
Назначение скрипта
Рис.8 Окно назначения скриптов
В новом редакторе появилась возможность задавать скрипты существующим или новым записям в плагине, которые имеют поле "Скрипт".
Для тог чтобы "прилепить" скрипт к существующей записи - просто выбираем её из разворачивающегося списка размещённого напротив переключателя Bind To Existing Form. Для того, чтобы создать новую форму - устанавливаем переключатель в позицию Bind To New Form, задаём тип, параметры и имя формы. Если вы всё сделали правильно, то будет создана новая форма с указанным именем указанного типа.
Контекстное меню
Copy
Paste
Find
Toogle Comment - закомментировать выделеные строки
Toogle Bookmark - создать закладку на выбранной строке
Рис.9 Диалоговое окно вызванное командой Toogle Bookmark
Add Message - команда позволяет написать сообщение самому себе, которое будет выведено... Кто Где бы вы думали? Волшебный кролик! Конечно же в области уведомлений, куда, например, выводит сообщения об ошибке программа при компиляции скриптов. Не знаю зачем shadeMe предусмотрел такую возможность, пожалуй он просто решил насадить лишнюю гайку на лишний болт.
Рис.10 Диалоговое окно вызванное командой Add Message
Copy To Edit Box - копирует текст в окошко расположенное в нижнем левом углу окна редактора скриптов. В разворачивающемся списке правее можно выбрать необходимое действие над этим фрагментом, как то искать, заменять и т.д.
Look up on the Wiki
Look up on the OBSE Dok
Lookup on Google
Препроцессор
"Как в лучших домах Ландона и Порижа", — Остап Бендер.
Ещё одно новшество в CSE. Препроцессор обрабатывает данные перед компиляцией, позволяя "скармливать" последнему (этому самому, компилятору, которому) только определённую часть кода в определённых ситуациях. А зачем он нужен? Тяжело объяснить козе зачем ей баян, но согласитесь, если она баянистка, то и вопросы как-то сами отпадают. Правда?! Но давайте будем конкретнее и рассмотрим пример "на кошечках":
Кто делал сам, или разбирал чужие плагины, не трусы, разумеется, тот не мог не встретить закомментированные сообщения с отладочной информацией. Допустим у вас плагин в котором не пять и не десять скриптов, в каждом из которых сотня - полторы строк, каждый из которых должен быть отлажен. Доводя до конечного пользователя вся эта информация должна быть скрыта или вычещена. И тут вы понимаете что вам нужно перелопатить добрую тыщу строк в поисках своих месседжбоксов... А можно ли это как-то... малой кровью? Ну разумеется! К чему же я тогда веду?! Но для начала ознакомимся с самим командами препроцессора:
Команды препроцессора
Все команды препроцессора должны быть закомментированны, т.е. перед ними должна стоять точка с запятой (";").
Команды могут быть однострочными или многострочными, для отделения одних от других перед командой должен стоять символ "#" в случае, если это однострочная команда, или "@" - если многострочная.
- DEFINE - определяет константу
Синтаксис: ;#DEFINE <ИМЯ_КОНСТАНТЫ> <значение_константы>
Например следующая команда определяет константу с именем X и значением 3
1. ;#DEFINE X 3
Перед компиляцией скрипт будет пропущен через препроцессор, и всякий раз, как он встретит этот самый X, он заменит его на его значение, т.е. на 3. Например имеется следующий элементарный скрипт:
;#DEFINE X 3
ScriptName PreprocessorTestingScript
short Y
Begin GameMode
Set Y to Y + X
End
Пропущенный через препроцессор он поступит на компиляцию уже в следующем виде:
ScriptName PreprocessorTestingScript
short Y
Begin GameMode
Set Y to Y + 3
End
- IMPORT - импортирует в то место, где стоит эта команда указанный скрипт, который находится в папке Oblivion\Data\Scripts\
Синтаксис: ;#IMPORT "<Название_файла>"
<Название_файла> - это название текстового документа в папке Oblivion\Data\Scripts\ без расширения. Например в папке Oblivion\Data\Scripts\ лежит файлик с названием Part1.txt, пускай в нём написано:
short a
float b
ref c
А мы хотим засунуть его содержимое в наш скрипт. Пишем:
ScriptName PreprocessorTestingScript
;#INCLUDE "Part1"
Begin GameMode
Set a to 10
Set b to .015
Set c to GetSelf
End
Получаем:
ScriptName PreprocessorTestingScript
short a
float b
ref c
Begin GameMode
Set a to 10
Set b to .015
Set c to GetSelf
End
- ENUM - определяет перечисление
Синтаксис: ;#ENUM { = = ... = } или
;@ENUM
;{
; =
; =
; ...
; =
;}
В следствии того, что элементы перечисления могут принимать только численные значения, то вся польза от этой конструкции исходит на нет. По сути перечисление (ENUM), в том виде, в котором мы имеем его здесь, является более громоздкой и менее гибкой формой определения (DEFINE). Вполне возможно что автор просто не довёл её до ума, т.к. даже в официальной документации ей посвящено всего пару строк.
Да, и ещё очень важное замечание: между именем элемента перечисления, знаком равенства и значением не может быть пробелов, т.к. это вызывает ошибку.
- IF - условный оператор.
Синтаксис:
;@IF ()
;{
;
;}
В условии можно применять логические операторы:
- [==] - Равно
- [!=] - Не равно
- [>] - Строго больше
- [<] - Строго меньше
- [>=] - Больше или равно
- [<=] - Меньше или равно
- [&&] - Логическое И
- [||] - Логическое ИЛИ
В следующем примере показано, как избавится от отладочной информации о которой мы говорили в начале:
;#DEFINE _DEBUG_MODE 1
ScriptName PreprocessorTestingScript
; ...
Begin GameMode
; Многабукаф
;@IF(_DEBUG_MODE==1) ;{
; Message "Debug mode is ON"
;}
End
Таким образом просто присвоив константе _DEBUG_MODE значение 0 и перекомпилировав скрипт мы избавимся от ненужных частей кода. Легко и просто.
Редактор заметок
Редактор заметок позволяет сопровождать процесс разработки разнообразными комментариями, из которых можно ссылаться на записи плагина. Вы что-то делали, но были вынуждены это забросить на неопределённое время, потом вы об этом забыли... Теперь можно оставить себе напоминание.
В левой области редактора заметок вызываем контекстное меню и выбираем пункт Add Tag и обзываем его как хотим.
Для того чтобы прикрепить какой-то объект к записи в комментариях, нужно вызвать на нём контекстное меню в окне объектов и выбрать пункт Add To Active Tag.
Чтобы вызвать редактор заметок, выберете пункт View -> Tag Browser в главном меню.
Редактор ссылок
Редактор ссылок позволяет комбинировано управлять свойствами объектов помещённых в загруженную ячейку. Ничего принципиально нового тут нет, по этому особо на этом не останавливаемся.
Чтобы вызвать редактор ссылок, выберете пункт World -> Batch Edit References в главном меню.
Информация о файле плагина
Рис.13 Окно информации о плагине
Находится в Gameplay -> Use Info Listing. Тут можно более подробно ознакомится со всеми записями в плагине и проследить их связи.
Консоль
Отныне программа выводит лог в консоль, благодаря этому элементу исчезли многочисленные навязчивые окна с предупреждением от "Конструктора". Также существует несколько консольных команд.
Консольные команды
- LoadPlugin - загружает указанный плагин. Синтаксис:
LoadPlugin string:
Где plugin_name.extension - название плагина,
SetAsActive - Указывает, сделать ли загружаемый плагин активным. 1 - если ДА, 0 - если НЕТ.
- LoadForm - открывает соответствующее окно для редактирования указанной формы. Синтаксис:
LoadForm string:
- SavePlugin - сохраняет плагин. Команда без параметров.
- AutoSave - делает резервную копию плагина в каталог Data\Backup\. Команда без параметров.
- Exit - Выход из "Конструктора". Команда без параметров.
Настройки CSE
Панель настроек CSE (рис.15) находится в главном меню File -> CSE Preferences. Редактировать настройки CSE можно как с помощью этой панели, так и вручную через файл \Oblivion\Data\OBSE\Plugins\Construction Set Extender.ini. Далее привожу список параметров:
Относится к | Имя | За что отвечает |
Консоль | Top | Растояние от верхнего края экрана |
Консоль | Left | Растояние от левого края экрана |
Консоль | Right | Растояние от правого края экрана |
Консоль | Bottom | Растояние от нижнего края экрана |
Консоль | LogCSWarnings | Выводить ли лог ошибок "Конструктора" в консоль? 1 - ДА; 0 - НЕТ. |
Консоль | LogAssertions | Выводить ли сообщений ошибок "Конструктора" в консоль? 1 - ДА; 0 - НЕТ. |
Консоль | HideOnStartup | Прятать ли окно консоли при запуске? 1 - ДА; 0 - НЕТ. |
Консоль | ConsoleUpdatePeriod | Время обновления консоли в миллисекундах |
CSE | LoadPluginOnStartup | Загружать ли плагин указанный в поле StartupPluginName при старте конструктора автоматически? 1 - ДА; 0 - НЕТ. |
CSE | StartupPluginName | Название файла плагина, который будет загружен при старте конструктора, если установлен параметр LoadPluginOnStartup |
CSE | OpenScriptWindowOnStartup | Открывать ли окно редактора скриптов при старте конструктора автоматически? 1 - ДА; 0 - НЕТ. |
CSE | StartupScriptEditorID | Название скрипта, который будет открыт в о редакторе скриптов при старте "Конструктора". Трубует включённого параметра OpenScriptWindowOnStartup |
CSE | ShowNumericEditorIDWarning | |
CSE | SetWorkspaseOnStartup | Выбрать рабочей директорию заданую параметром DefaultWorkspasePath? 1 - ДА; 0 - НЕТ. |
CSE | DefaultWorkspasePath | Путь к рабочей директории |
Визуализатор | UpdatePeriod | Время обновления окна визуализатора в миллисекундах |
Визуализатор | DisplaySelectionStats | Выводить информацию о выбранном объекте в окне визуализаторы? 1 - ДА; 0 - НЕТ. |
Визуализатор | UpdateViewPortAsync | Разрешить обновление картинки в окне визуализатора, если оно не активно? 1 - ДА; 0 - НЕТ. |
Комментарии