ИнформАрхив QSP
Тем, кто применяет TXT2GAM (использование препроцессора)
При написании игры без использования QGen, исходный текст не зашифрован и может редактироваться любым текстовым редактором.
Это также дает возможность обработать текстовый файл игры перед тем, как он будет превращен в QSP-файл - например, удалить отладочный код или неиспользуемые фрагменты текста, а также собрать один файл из нескольких мелких.
В мире программирования на Си эта возможность называется "препроцессинг" и выполняется утилитой cpp, которая идет в пакете с компиляторами C.
В нашем случае удобно использовать утилиту, которая не привязана к языку С и и может быть использована отдельно от компилятора — GPP для Win32.
Чтобы воспользоваться этим, нужно добавить в текст специальные инструкции и обработать текст утилитой GPP. После такой обработки текст уже не будет содержать инструкции и может быть преобразован в QSP-файл без ошибок.
Инструкции (основные)
#mode quote
— отключает обработку символа "\" как служебного, рекомендуется поставить первой строчкой файла
#define
<имя> — определить флажок, на который можно будет позже ссылаться
#define
<имя> <значение> — определить значение, на которое можно будет позже ссылаться
#undef
<имя> — удаление значения или флажка
#ifdef
<имя> — если флаг или значение определены, то весь текст после этого условия до #endif
или до #else
будет выведен в итоговый файл
#else
— окончание фрагмента, регулируемого инструкцией #ifdef
- последующий текст выводится, если условие в #ifdef
не выполнено
#endif
— окончание фрагмента, регулируемого инструкцией #ifdef
или #else
#ifndef
— аналогично #ifdef,
однако проверяется, что флаг или значение не определены - весь текст после этого условия до #endif
или до #else
будет выведен в итоговый файл
#include
"<имя файла>" — в выходной файл вставляет текст из указанного файла (из той же папки) - если файл содержит инструкции, то он также будет обработан
Поскольку в txt2gam
, по умолчанию, для обозначения начала локации используется символ "#", то важно, чтобы имена локаций не назывались по имени инструкции (define
, ifdef
, и т.п.). Также не стоит включать инструкции в комментарии и строки, лучше их записывать на отдельных строчках.
Доступны также и другие инструкции, о них можно узнать в документации или спросить на форуме.
Для запуска текста игры на обработку нужно открыть консоль и набрать команду:
gpp.exe <входной файл> -o <выходной файл>
Другие ключи запуска можно узнать, запустив как: gpp.exe --help
Пример использования
Исходный файл:
# Start
#ifdef HTML
USEHTML=1
#endif
- Start
После обработки в выходной файл запишется:
USEHTML=1
- Start
Если же убрать инструкцию #define
- например, заменив на #undef,
то после обработки в выходной файл запишется:
- Start
То есть текст, регулируемый инструкцией #ifdef,
был удален из конечного результата.
Прошу задавать вопросы на форуме.
Ссылки:
АВТОР: NTROPY
07.04.2010 18:47