Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скрипты Morrowind.doc
Скачиваний:
92
Добавлен:
29.10.2018
Размер:
2.81 Mб
Скачать

Советы и трюки Маленькие помощники: поиск, копирование и вставка текста

Хорошая функция для начинающего скриптера – это поиск текста в главном меню TES CS. Ее можно использовать для поиска скриптов, например, для нужной функции, которую вы хотите использовать и желаете узнать примеры ее использования.

Можно также использовать любые текстовые редакторы или альтернативные редакторы, указанные ниже, чтобы писать скрипты и копировать их в/из TES CS с помощью ctrl-c / ctrl-v.

Чтобы сделать копию скрипта, который вы хотите изменить, не меняйте имя, это просто перепишет старый скрипт. Вместо этого копируйте оригинальный скрипт (ctrl-a, ctrl-c), создайте новый, вставьте старый (ctrl-v) в него, переименуйте скрипт и изменяйте в нем что угодно.

Альтернативные скриптовые редакторы

1) MentalElf создал EMACS, который поддерживает табуляцию if-блоков и поддержку цветов:

http://www.aloha.net/~frann/rsg/

EMACS доступен под лицензией gnu (ссылка на страницу MetalElf)

2) Dave Humphrey создал MWEdit, альтернативный редактор с улучшенной поддержкой скриптов (Это только бета. Я ее быстро просмотрел, и она хорошо смотрится) http://mwedit.sourceforge.net/

Касательно скриптов, Dave приводит следующие фишки:

- Цветовая кодировка слов. Можно использовать обычную белую или синюю цветовую схему или любую другую, чтобы обозначать различные типы слов. Это может быть отключено. (см тригонометрический скрипт для примера)

- Выбрать шрифт в окне скриптов.

- Новый компилятор скриптов обнаруживает большее количество ошибок.

- Три уровня сообщений о предупреждениях / ошибках, что позволяет вам отрегулировать количество сообщений от компилятора.

- Компилятор добавляет пробелы в скрипт там, где они могут потребоваться (например, в конструкциях if)

- Типы объектов в функциях проверяются более строго. Если функция требует NPC, вы получите сообщение об ошибке, если используете другой тип.

- Компилирует скрипт при сохранении (без показа сообщений об ошибках)

- Экспортирует и импортирует скрипты в текстовые файлы.

- Показывает подробную справку по скриптовым функциям.

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

- Показывает подробную информацию на сообщения компилятора.

- Компилятор не позволяет использовать зарезервированные слова как имена переменных (такие как as end, X, Y44 и т.д.)

- Использование функций, которые известны как неработающие, приведет к появлению сообщения компилятора.

- Простые помощники по функциям могут быть показаны для более быстрого написания скриптов.

Используйте стиль для написания нормальных скриптов

Это ограничение довольно спорное, ибо у каждого вырабатывается свой личный стиль.

И это звучит немного заносчиво. Однако, я думаю это может быть полезно для новичков, и вот несколько моих замечаний по поводу стиля и безопасности скриптования:

  • Используйте комментарии. В коротком скрипте это может показаться бесполезным, но даже здесь вы можете захотеть указать к какому моду/квесту/объекту относится этот скрипт, какое у него предназначение и т.д. Для длинных скриптов это становится необходимым для вас самих, если вы перестали работать на несколько дней, а также для тех, кто захочет поучиться на ваших скриптах. Объясняйте свои переменные, вставляйте заголовки в главные части скрипта, комментируйте главные части кода и т.д.

  • Используйте переменные состояния со стилем. В общем, из-за природы скриптов «выполнения единожды за кадр», это ваш главный путь структурирования скрипта на последовательные части. Вот несколько советов по этому поводу. A) Ограничивайте себя минимумом того, что необходимо для вашего скрипта. B) Используйте конструкции elseif, чтобы связать разные состояния одной переменной, а не раздельные if-блоки – это должно стать главным структурным элементом вашего скрипта (такое не всегда возможно, да и не необходимо, но, придерживаясь этого, вы избежите кучи проблем). C) Проверяйте, чтобы elseif были расположены от нижнего к верхнему и в логическом порядке событий – это поможет вам хранить все организовано, и тем самым избегать багов. Беспорядочные прыжки по состояниям переменной сравнимы с неумелым использованием GOTO в старом добром Бейсике. D) Используйте их обширно, делайте маленькие шаги. Не могу сказать сколько раз неработающие скрипты начинали работать только потому, что я передвинул некоторые функции в отдельные блоки. Иногда это вообще кажется нелогичным, но если вы можете безопасно сделать следующий шаг — делайте.

  • Определитесь со своим собственным стилем.TES относительно спокойно смотрит на синтаксис. Вы можете писать функции маленькими буквами или начиная с большой буквы, как в этом документе, или все большими буквами. Вы можете использовать ( if SomeFunction == 1 ) или if (somefunction). Но чтобы вы не выбрали, постарайтесь придерживаться этого в дельнейшем.

  • Используйте «говорящие» имена переменных. Имя, которое отражает функцию этой переменной, делает скрипт более читаемым. Если вы используете глобальные переменные, то давайте им уникальные имена, к примеру помещайте свои инициалы в ее название — просто старайтесь минимизировать шанс того, что другой мод будет содержать глобальную переменную с таким же именем – потому что это перемешает все полностью.

  • Следите за использованием функции Return. Функция Return очень опасна — помните, что она остановит все в этом скрипте ниже содержащей ее строки. Используйте ее, но умеренно. Если вы чувствуете, что вам придется использовать ее в одном скрипте много раз, возможно лучше ввести переменную состояния.