Инструменты пользователя

Инструменты сайта


help:txt2gam

Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

Both sides previous revision Предыдущая версия
Следущая версия
Предыдущая версия
help:txt2gam [2023/01/03 15:03]
aleks_versus
help:txt2gam [2026/02/14 17:34] (текущий)
aleks_versus [Дополнительная информация и полезные ссылки:]
Строка 3: Строка 3:
 ====== TXT2GAM. Краткое руководство ====== ====== TXT2GAM. Краткое руководство ======
  
-Утилита "​**TXT2GAM**"​ ("''​txt2gam.exe''"​) предназначена для конвертирования текстовых файлов,​ написанных в специальном формате,​ в файлы QSP-игр "''​.qsp''"​. Таким образом вы можете создавать игры в обычном текстовом редакторе,​ а затем конвертировать их в приемлемые для плееров файлы.+Утилита "​**TXT2GAM**"​ ("''​txt2gam.exe''"​) предназначена для конвертирования текстовых файлов,​ написанных в специальном формате,​ в файлы QSP-игр "''​.qsp''"​. Таким образом вы можете создавать игры в обычном текстовом редакторе,​ а затем конвертировать их в обычные игры.
  
-[[https://​qsp.org/​attachments/​txt2gam011.zip|Скачать утилиту для Windows]]+[[https://​qsp.org/​attachments/​txt2gam011.zip|Скачать утилиту для Windows]]
  
-[[help:​txt2gam_linux|Сборка TXT2GAM на Linux]]+[[help:​txt2gam_linux|Сборка TXT2GAM на Linux]]
  
 ===== Формат TXT2GAM (QSPS) ===== ===== Формат TXT2GAM (QSPS) =====
Строка 14: Строка 14:
  
 Использовать qsps-файлы предпочтительнее по трём причинам:​ Использовать qsps-файлы предпочтительнее по трём причинам:​
- * воспроизведение таких файлов поддерживается плеером **qSpider**;​ + * воспроизведение таких файлов поддерживается плеером **[[help:​qspider|qSpider]]**; 
- * расширение для **MS Visual Studio Code** поддерживает подсветку синтаксиса qsps-файлов;​ + * расширение для **[[https://​github.com/​gretmn102/​QSP-VSCode/​blob/​master/​README.md|MS Visual Studio Code]]** поддерживает подсветку синтаксиса qsps-файлов;​ 
- * в пакете для ​**Sublime Text** встроена подсветка синтаксиса qsps-файлов.+ * в **[[https://​github.com/​AleksVersus/​JAD_for_QSP|пакете для Sublime Text]]** встроена подсветка синтаксиса qsps-файлов.
  
 Как было отмечено выше, файлы в формате **TXT2GAM** — это обычные текстовые файлы, в которых мы размещаем код QSP, при этом данный код нужно записывать по определённым правилам. Как было отмечено выше, файлы в формате **TXT2GAM** — это обычные текстовые файлы, в которых мы размещаем код QSP, при этом данный код нужно записывать по определённым правилам.
 +
 +==== Начало и конец локации ====
  
 Начало локации отмечается символом ''​**#​**''​ (решётка/​диез),​ после которого должен стоять пробел и название локации. Например так: Начало локации отмечается символом ''​**#​**''​ (решётка/​диез),​ после которого должен стоять пробел и название локации. Например так:
Строка 26: Строка 28:
 </​sxh>​ </​sxh>​
  
-Конец локации обозначается символом ''​**-**'' ​(дефис) ​в отдельной строке. После этого ​символа ​в той же строке могут идти любые символы,​ например,​ снова название локации:​+Конец локации обозначается двумя символами "​дефис" ​''​--''​ в отдельной строке. После этого в той же строке могут идти любые символы,​ например,​ снова название локации:​
  
 <sxh qsp> <sxh qsp>
-- начало+-- начало
 </​sxh>​ </​sxh>​
  
Строка 41: Строка 43:
    goto '​next'​    goto '​next'​
 end end
-- (конец локации)+-- (конец локации)
    
 # next # next
 $s='​Это последняя локация примера.'​ $s='​Это последняя локация примера.'​
-i=1 +loop local i = 1 while i<​=len($s) ​step i += 1:
-:loop +
-if i<​=len($s):​+
    *p $mid($s,​i,​1)    *p $mid($s,​i,​1)
    wait 200    wait 200
-   i=i+1 
-   jump '​loop'​ 
 end end
 *nl & '​Это всё.'​ *nl & '​Это всё.'​
--+--
 </​sxh>​ </​sxh>​
  
 Между локациями в таком файле может быть записан любой текст, он не попадёт в конечный файл игры. Поэтому вы можете помещать туда различные комментарии,​ команды препроцессора и другой сопроводительный текст. Между локациями в таком файле может быть записан любой текст, он не попадёт в конечный файл игры. Поэтому вы можете помещать туда различные комментарии,​ команды препроцессора и другой сопроводительный текст.
  
-Поскольку концом локации считается символ ''​**-**''​ в начале отдельно ​стоящей ​строкимогут возникнуть ошибки, ​если вы напишете команду, наподобие этой:+Поскольку концом локации считается строка, начинающаяся с ''​--''​будьте внимательны при написании игры.
  
-<sxh qsp> +Так как, если вы пишете код в **Quest Generator**, такая строка,​ записанная ​в коде локации, хотя и будет ​вызывать ошибку, но всё же не сломает локацию. Однакоесли вы сконвертируете игру с подобной ошибкой в qsps, а затем — обратно в игру, весь код ​локации после ​такой ошибочной строки потеряется.
--(x+23) +
-</​sxh>​ +
- +
-Записанная в поле "​Выполнить при посещении"​ редактора **Quest Generator** ​данная команда будет ​нормально работать ​в итоговой ​игреоднако если эту команду записать в файле формата **TXT2GAM**, конвертер посчитает её окончанием локации, и все ​последующие за данной командой строки ​вплоть до начала следующей локации будут проигнорированы.+
  
 <sxh qsp> <sxh qsp>
 +# начало
 # начало # начало
 "​Какой-то код. Много-много кода "​Какой-то код. Много-много кода
 Этот код попадёт в локацию"​ Этот код попадёт в локацию"​
-! пытаемся вывести произведение 45 и 9 умноженное на -+--
--(45*9)+
 "А вот этот код не попадёт в локацию"​ "А вот этот код не попадёт в локацию"​
-- начало (хотим,​ чтобы конец локации был здесь) +-- начало (хотим,​ чтобы конец локации был здесь) 
-Все строки от -(45*9) будут проигнорированы + 
 # локация 2 # локация 2
 ! какой-то код ! какой-то код
-- локация 2+-- локация 2
 </​sxh>​ </​sxh>​
  
-Если не закрыть локацию строкой начинающейся с ''​**-**'',​ новую локацию открыть будет нельзя,​ а значит строка,​ начинающаяся с символа ''​**#​**''​ может вызвать ошибку "​Неизвестное действие"​ в конечной игре:+Если не закрыть локацию строкойначинающейся с ''​**--**'',​ новую локацию открыть будет нельзя,​ а значит строка,​ начинающаяся с символа ''​**#​**''​ может вызвать ошибку "​Неизвестное действие"​ в конечной игре:
  
 <sxh qsp> <sxh qsp>
Строка 92: Строка 85:
 </​sxh>​ </​sxh>​
  
-Внимание! Для формата **TXT2GAM** не предусмотрено редактирование базового описания и базовых действий. ​Поэтому ​при экспорте игры из **Quest Generator** в формат **TXT2GAM** будьте внимательнывсе базовые описания и базовые действия ​будут ​экспортированы ​в основной код локаций. Если впоследствии вы импортируете игру обратно из TXT2GAM-файла ​в **Quest Generator**, то поля "Описание" ​и "Базовые действия" во всех ​локациях ​окажутся пустыми.+==== Базовое описание и базовые действия ==== 
 + 
 +Если в **Quest Generator** вы использовали не только поле "​Выполнить при посещении",​ но так же поля "​Базовое описание"​ и "​Базовые действия",​ содержимое этих полей при экспорте игры в формат **TXT2GAM** ​будет сконвертировано в обычный код QSP, но размещённый между комментариями ''​! BASE''​ и ''​! END BASE''​ в самом начале кода локации. При этом: 
 + 
 + * Каждое действие из поля "​Базовые действия"​ преобразуется в многострочное действие,​ как если бы оно было записано в поле "​Выполнить при посещении"​. 
 + * Весь текст из поля "​Базовое описание"​ будет строкой для оператора "''​*P''"​. 
 + 
 +Вот как это может ​выглядеть:​ 
 + 
 +<sxh qsp> 
 +# Начало 
 +! BASE 
 +*P '​Укузя 1.2 
 + 
 +Привет! Вашему вниманию предоставляется небольшой квест про Укузю. Кто она такая, неизвестно
 + 
 +Если Вы прошли первую часть игры, то можно загрузиться.'​ 
 +ACT '​Начать!':​ 
 +   gosub '​menu'​ 
 +   goto '​norka'​ 
 +END 
 +ACT 'Проект':​ 
 +   goto '​proect'​ 
 +END 
 +ACT '​Загрузить':​ 
 +   goto '​saves'​ 
 +END 
 +! END BASE 
 +Fcolor = RGB(248,​194,​240) 
 +Bcolor = RGB(1,​0,​0) 
 +if nach = 0: msg '​Совет:​ Разверните окно на весь экран'​ & nach=1 
 + 
 +-- Начало --------------------------------- 
 +</​sxh>​ 
 + 
 +Как видите,​ в базовом ​описании ​был текст из нескольких строк, а в базовых действиях было создано три действияВсё ​это ​сконвертировалось в обычный QSP-код, заключённый ​между комментариями ''​! BASE''​ и ''​! END BASE''​. 
 + 
 +Далее для удобства мы этот ​код с комментариями будем называть //​Базовым блоком//​. 
 + 
 +При конвертировании ​из формата **TXT2GAM** ​обратно в игру, происходит обратный процесс. 
 + 
 +Если в коде локации присутствовал //​Базовый блок// (комментарии ''​! BASE''​ и ''​! END BASE'',​ между которыми вы разместили код QSP), код этого блока будет преобразован в базовое описание и базовые действия ​локации в конечной игре. 
 + 
 +Однако, тут есть нюанс. 
 + 
 +Конвертер распознаёт только действия и оператор ''​*P'',​ добавленные в //​Базовый блок//. То есть все остальные операторы и выражения будут проигнорированы
 + 
 +Более того, будут проигнорированы все строки для оператора ''​*P'',​ заключённые не в кавычки, а так же все действия, названия которых не заключены в кавычки,​ или формируются динамическим способом. 
 + 
 +Вот наглядный пример:​ 
 + 
 +<sxh qsp> 
 +! BASE 
 +*PL "​Этот текст не попадёт в Базовое описание, потому что используется неверный оператор." 
 +*P {Оператор верный, но текст записан в фигурных скобках.} 
 +*P "А этот текст попадёт в Базовое описание."​ 
 + 
 +ACT $action_name:​ 
 +   ! Это действие не попадёт в Базовые действия,​ потому что 
 +   ! его название указано не константой 
 +END 
 +! END BASE 
 +</​sxh>​ 
 + 
 +Если в файле формата **TXT2GAM** в коде локации вы создали несколько //​Базовых блоков//​, то — при конвертировании — в Базовое ​описание и Базовые действия ​будут добавлены только текст и действия из первого //​Базового блока//​.
  
 ===== Использование утилиты TXT2GAM ===== ===== Использование утилиты TXT2GAM =====
Строка 150: Строка 207:
 ==== Опции. [Options] ==== ==== Опции. [Options] ====
  
- * ''​a'',​ ''​A''​ — режим ANSI. По-умолчанию утилита работает в режиме Unicode (**UCS-2** / **UTF-16**). + * ''​a'',​ ''​A''​ — режим ANSI. По умолчанию утилита работает в режиме Unicode (**UTF-8**, **UCS-2** / **UTF-16**).
- * ''​u''​''​U''​ — режим Unicode (**UCS-2 ​LE**/ **UTF-16 ​LE**).+
  * ''​o'',​ ''​O''​ — сохранить игру в старом формате ("''​.gam''"​). По умолчанию используется новый формат ("''​.qsp''"​).  * ''​o'',​ ''​O''​ — сохранить игру в старом формате ("''​.gam''"​). По умолчанию используется новый формат ("''​.qsp''"​).
- * ''​s[char]'',​ ''​S[char]''​ — вместо ''​[char]''​ нужно указать символ, с которого начинаются ваши локации. Т.е. это символ, который вы можете использовать вместо ''​**#**'',​ если это необходимо. + * ''​s[string]'',​ ''​S[string]''​ — вместо ''​[string]''​ нужно указать строку, с которой начинаются ваши локации. Т.е. это строка, которую вы можете использовать вместо ''#'',​ если это необходимо. 
- * ''​e[char]'',​ ''​E[char]''​ — вместо ''​[char]''​ нужно указать символ, которым будет отмечаться конец локации. Т.е. это символ, который вы можете использовать вместо ''​**-**'',​ если это необходимо.+ * ''​e[string]'',​ ''​E[string]''​ — вместо ''​[string]''​ нужно указать строку, которой будет отмечаться конец локации. Т.е. это строка, которую вы можете использовать вместо ''​--'',​ если это необходимо.
  * ''​p[pass]'',​ ''​P[pass]''​ — вместо ''​[pass]''​ укажите пароль,​ который хотите установить на игру. По умолчанию ''​**NO**''​. Если пароль содержит пробелы,​ заключите его в кавычки.  * ''​p[pass]'',​ ''​P[pass]''​ — вместо ''​[pass]''​ укажите пароль,​ который хотите установить на игру. По умолчанию ''​**NO**''​. Если пароль содержит пробелы,​ заключите его в кавычки.
- * ''​t'',​ ''​T''​ — извлечь строки из текста. + * ''​c'',​ ''​C''​ — конвертировать текстовый файл в игру (режим по умолчанию). 
- * ''​q'',​ ''​Q''​ - извлечь ​q-строки из текста.+ * ''​d'',​ ''​D''​ — конвертировать игру в текстовый файл формата **TXT2GAM**. 
 + * ''​t'',​ ''​T''​ — извлечь строки из текста. ​    
 + * ''​q'',​ ''​Q''​ - извлечь строки ​кода (между "​{"​ и "​}"​) ​из текста.
  
 ==== Примеры вызова:​ ==== ==== Примеры вызова:​ ====
Строка 164: Строка 222:
 txt2gam.exe file.txt gamefile.qsp pMyPassword txt2gam.exe file.txt gamefile.qsp pMyPassword
 txt2gam.exe file.txt gamefile.qsp txt2gam.exe file.txt gamefile.qsp
-txt2gam.exe file.txt gamefile.qsp ​u+txt2gam.exe file.txt gamefile.qsp ​
 +txt2gam.exe gamefile.qsp file.txt d pMyPassword
 txt2gam.exe file.txt gamefile.qsp o pMyPassword txt2gam.exe file.txt gamefile.qsp o pMyPassword
 txt2gam.exe file.txt gamefile.qsp o e@ pMyPassword txt2gam.exe file.txt gamefile.qsp o e@ pMyPassword
Строка 175: Строка 234:
 </​sxh>​ </​sxh>​
  
-===== Подключение утилиты к текстовому редактору ===== 
  
-При разработке игр в текстовом редакторе,​ очень полезным может оказаться создание специального действия / кнопки для автоматической компиляции файла в "''​.qsp''"​ и запуска плеера сразу с редактируемым файлом. 
- 
-То есть пишете текст игры в редакторе,​ нажимаете некое сочетание клавиш и получаете запущенную в плеере игру. 
- 
-Данное руководство,​ на примере **[[http://​www.emeditor.com|EmEditor]]**а , описывает,​ как это сделать. 
- 
-Для начала,​ создайте папку (допустим,​ "''​D:​\Games\QSP''"​),​ распаковав в неё базовый архив плеера ("''​qspgui.exe''"​ + все **DLL**ки) и архив утилиты **TXT2GAM**. 
- 
-Далее, создайте в этой папке (рядом с "''​qspgui.exe''",​ "''​txt2gam.exe''"​) файл "''​start.bat''"​ со следующим содержимым:​ 
- 
-<sxh> 
-txt2gam %1 %2 
-start qspgui %2 
-</​sxh>​ 
- 
-Теперь нужно в редакторе добавить действие/​кнопку,​ при нажатии на которую будет запущен файл "''​start.bat''"​ с двумя аргументами - указанием исходного TXT-файла и конечного "''​.qsp''"​-файла. 
- 
- - Запустите EmEditor, выберите в меню **Tools / External Tools / Customize Tools...** 
- - В появившемся окошке нажмите кнопку **New**. 
- - В поле **Title** впишите название действия (например,​ "​QSP"​). 
- - В поле **Command** строку ''​D:​\Games\QSP\start.bat''​ 
- - В поле **Arguments** строку ''"​$(Path)"​ "​$(Dir)\$(Filename).gam"''​ (сохраняя кавычки) 
- - В поле **Initial Directory** строчку ''​D:​\Games\QSP''​ 
- - Затем поставьте флажок напротив **Save File**, и нажмите **OK**. 
- - На панели инструментов появится новая кнопка с подписью "​QSP",​ при нажатии на которую будут произведены требуемые действия. 
- 
-Теперь нужно назначить сочетание клавиш для кнопки. 
- 
- - Выберите пункт меню **Help / Keyboard Map...**. В категории **External Tools** найдите пункт **QSP** (обычно,​ в самом низу) и щелкните по нему 2 раза. 
- - Установите курсор в поле **Press New Shortcut Key** и нажмите желаемое сочетание клавиш (к примеру,​ F1). Станет доступной кнопка **Assign**. Нажимаем. 
- - Далее жмём **OK** и пишем игры в формате TXT2GAM :-) 
- 
-Чтобы установить пароль на файл, создаваемый утилитой TXT2GAM, замените в файле **''​start.bat''​** строчку 
- 
-<sxh> 
-txt2gam.exe %1 %2 
-</​sxh>​ 
- 
-на 
- 
-<sxh> 
-txt2gam.exe %1 %2 pMyPassword 
-</​sxh>​ 
- 
-где ''​MyPassword''​ - устанавливаемый пароль. Для задания паролей с пробелами,​ строчка ''​pMyPassword''​ должна быть указана в кавычках:​ 
- 
-<sxh> 
-txt2gam.exe %1 %2 "pMy Pass word" 
-</​sxh>​ 
  
 ===== Дополнительная информация и полезные ссылки:​ ===== ===== Дополнительная информация и полезные ссылки:​ =====
  
  - В настоящий момент общепринятым расширением для текстовых файлов формата **TXT2GAM** можно считать "''​.qsps''"​. "​Просто потому что"​ (с) [[https://​github.com/​gretmn102/​QSP-VSCode#​допустим-я-хочу-попробовать|Pseudopod]].  - В настоящий момент общепринятым расширением для текстовых файлов формата **TXT2GAM** можно считать "''​.qsps''"​. "​Просто потому что"​ (с) [[https://​github.com/​gretmn102/​QSP-VSCode#​допустим-я-хочу-попробовать|Pseudopod]].
 + - Есть готовая [[help:​txt2gam_emeditor|инструкция]] по подключению утилиты **TXT2GAM** к редактору **EmEditor**.
  - Существует утилита **qsp2txt** для конвертирования игр в обратную сторону — из файлов игр "''​.qsp''"​ в текстовые файлы формата **TXT2GAM**. Исходная ссылка утеряна,​ можно скачать в [[https://​mega.nz/​folder/​jXwXlSRJ#​TF7P-soOJOWIC8MrBA-L1A|архиве программ QSP от Aleks Versus]].  - Существует утилита **qsp2txt** для конвертирования игр в обратную сторону — из файлов игр "''​.qsp''"​ в текстовые файлы формата **TXT2GAM**. Исходная ссылка утеряна,​ можно скачать в [[https://​mega.nz/​folder/​jXwXlSRJ#​TF7P-soOJOWIC8MrBA-L1A|архиве программ QSP от Aleks Versus]].
  - Существовали разные [[https://​qsp.org/​index.php?​option=com_agora&​task=topic&​id=686&​Itemid=57|подсветки синтаксиса для **Notepad++** и **AkelPad**]],​ но были утеряны.  - Существовали разные [[https://​qsp.org/​index.php?​option=com_agora&​task=topic&​id=686&​Itemid=57|подсветки синтаксиса для **Notepad++** и **AkelPad**]],​ но были утеряны.
- - Подсветка синтаксиса для Sublime Text входит в [[https://​github.com/​AleksVersus/​JAD_for_QSP|пакет ​JAD на QSP для Sublime Text]].+ - Подсветка синтаксиса для Sublime Text входит в **[[https://​github.com/​AleksVersus/​JAD_for_QSP|пакет QSP для Sublime Text]]**. В этот же пакет встроен плагин с конвертерами qsps и QSP-файлов в любую сторону.
  - Существует подсветка для [[https://​qsp.org/​components/​com_agora/​img/​members/​20/​notepad-qsp.zip|Notepad++ от Олегуса]]. С этой подсветкой ассоциируются текстовые файлы с расширением "''​.tqsp''",​ однако вы можете отредактировать файл подсветки,​ указав нужное вам расширение.  - Существует подсветка для [[https://​qsp.org/​components/​com_agora/​img/​members/​20/​notepad-qsp.zip|Notepad++ от Олегуса]]. С этой подсветкой ассоциируются текстовые файлы с расширением "''​.tqsp''",​ однако вы можете отредактировать файл подсветки,​ указав нужное вам расширение.
  - Werewolf разработал утилиту для конвертирования QSP-файла в текстовый формат (аналог **qsp2txt**),​ которая работает онлайн:​ [[https://​codepen.io/​srg-kostyrko/​full/​QWqdwxv|https://​codepen.io/​srg-kostyrko/​full/​QWqdwxv]]. Так же он разработал специальные пакеты для конвертирования файлов в любую сторону:​ [[https://​github.com/​QSPFoundation/​converters|https://​github.com/​QSPFoundation/​converters]].  - Werewolf разработал утилиту для конвертирования QSP-файла в текстовый формат (аналог **qsp2txt**),​ которая работает онлайн:​ [[https://​codepen.io/​srg-kostyrko/​full/​QWqdwxv|https://​codepen.io/​srg-kostyrko/​full/​QWqdwxv]]. Так же он разработал специальные пакеты для конвертирования файлов в любую сторону:​ [[https://​github.com/​QSPFoundation/​converters|https://​github.com/​QSPFoundation/​converters]].
Строка 239: Строка 249:
  
 [[help:​analyzer|Вперёд:​ Анализатор кода]] [[help:​analyzer|Вперёд:​ Анализатор кода]]
- 
- 
- 
- 
- 
- 
- 
- 
  
help/txt2gam.1672758184.txt.gz · Последние изменения: 2023/01/03 15:03 (внешнее изменение)