2118
правок
Изменения
м
__NOTOC__
Текстовый квест в [[QSP]] состоит из отдельных [[локация|локаций]], на которых могут выполняться различные игровые действия. Каждая локация имеет начало (тут же указывается имя локации), код локации (середину) и конец (знак «-», минус).
Нет описания правки
==Вводное слово, Комментарии==
[[QSP]] - программа для игры в текстовые квесты специального формата. Для того, чтобы написать свой текстовый квест, вам понадобится любой текстовый редактор и программа [[TXT2GAM]]. Для более удобного использования этой программы я написал специальную оболочку [[GAMConv]], которой вы можете пользоваться для конвертирования кода уроков.<br>
В примерах будут использоваться комментарии - строки, которые игрок не увидит и которые служат для того, чтобы можно было делать в коде игры различные заметки. Комментарий начинается с восклицательного знака «!».
''Пример:''
<prewidth="80">! эта строка видна только создателю квеста, игрок её не увидит</pre><!-- О других применениях комментариев смотрите в Уроке 5.-->
==Урок 1. Локации, Действия, Переходы==
''Пример:''
<prewidth="80">#Имя_локации
! тут идёт код локации
-</pre>
Проигрывание квеста начинается с самой первой локации. Традиционно эта локация называется "Начало".
Для того, чтобы вывести в игре текст , вы просто пишете строку в коде локации, заключённую в апострофы кавычки («'»или «"»).
''Пример (1.txt):''
<prewidth="80">#Начало
'Привет мир!'
-</pre>
''Пример (2.txt):''
<prewidth="80">#Начало
'Привет мир!'
ACT 'Перейти в другую локацию':
ACT 'Вернуться обратно':GOTO 'Начало'
-</pre>
Вторая локация создаётся точно так же, как и первая. Как можно заметить, действие создаётся командой «ACT», после которой идёт название действия в виде строки , заключённой в апострофы кавычки и двоеточие. После двоеточия пишутся инструкции, которые игра выполнит после того, как игрок попытается выполнить действие. А после инструкций ставится команда «END», которая означает конец цействиядействия. Если инструкция одна, то мы можем писать её сразу после двоеточия, на той же строке, в этом случае «END» ставить не обязательно (см. Вторая_локация). В нашем случае инструкциями является переход на другую локацию. Он осуществляется командой «GOTO», после которой идёт имя новой локации, заключённой в апострофыкавычки.<br>Как вы уже заметили, все строки в [[QSP]] заключены в апострофыкавычки («'» или «"»), это специфика синтаксиса, которую необходимо соблюдать.<br>
Отконвертировав этот пример, вы сможете походить по двум локациям.<br>
Это основа всех квестов на [[QSP]]. Дальше мы попробуем неспеша сделать небольшой квест, в каждом новом уроке добавляя ему новые элементы, пока не охватим все возможности [[QSP]].
''Пример (3.txt):''
<prewidth="80">#Начало
' Ваша цель - зарабатывать деньги, покупать на них подарки и дарить своим близким.'
ACT 'Начать игру':GOTO 'Дом'
-
#Дом
' Дома всегда очень уютно. И вкусно пахнет едой. Мама, сидя в кресле, вяжет носки. Отец с вашим братом чинит скворечник. Сестра хлопочит хлопочет на кухне. Дома всегда хорошо.'
ACT 'Идти в порт':GOTO 'Работа'
ACT 'Идти в магазин':GOTO 'Магазин'
''Пример:''
<prewidth="80">Имя_переменной = 10</pre>
Сам механизм зарабатывания денег будет у нас очень простым. Нужно будет перенести 3 ящика и тогда бригадир будет давать игроку 5 монет. Для этого нужно будет сделать ещё одну переменную, в которой будет указано число перенесённых игроком ящиков и если их 3, то добавлять игроку деньги, и очищать счётчик ящиков. Наш квест станет таким:
''Пример (4.txt):''
<prewidth="80">#Начало
' Ваша цель - зарабатывать деньги, покупать на них подарки и дарить своим близким.'
ACT 'Начать игру':GOTO 'Дом'
-
#Дом
' Дома всегда очень уютно. И вкусно пахнет едой. Мама, сидя в кресле, вяжет носки. Отец с вашим братом чинит скворечник. Сестра хлопочит хлопочет на кухне. Дома всегда хорошёхорошо.'
' У вас <<Деньги>> монет.'
ACT 'Идти в порт':GOTO 'Работа'
''Пример (5.txt):''
<prewidth="80">#Начало
' Ваша цель - зарабатывать деньги, покупать на них подарки и дарить своим близким.'
ACT 'Начать игру':GOTO 'Дом'
-
#Дом
' Дома всегда очень уютно. И вкусно пахнет едой. Мама, сидя в кресле, вяжет носки. Отец с вашим братом чинит скворечник. Сестра хлопочит хлопочет на кухне. Дома всегда хорошёхорошо.'
' У вас <<Деньги>> монет.'
ACT 'Идти в порт':GOTO 'Работа'
''Пример (6.txt):''
<prewidth="80">#Начало
' Ваша цель - зарабатывать деньги, покупать на них подарки и дарить своим близким.'
ACT 'Начать игру':GOTO 'Дом'
-
#Дом
' Дома всегда очень уютно. И вкусно пахнет едой. Мама, сидя в кресле, вяжет носки. Отец с вашим братом чинит скворечник. Сестра хлопочит хлопочет на кухне. Дома всегда хорошёхорошо.'
' У вас <<Деньги>> монет.'
IF OBJ 'Конструктор':
Конструкция «IF OBJ 'имя_предмета'» проверяет, есть ли у игрока в инвентаре указанный предмет. В нашем случае мы проверяем наличие тех предметов, которые мы можем купить в магазине. И если у игрока есть такие предметы - создаём действие «дарения» этих предметов. Когда игрок совершит действие, мы заберем у него тот предмет, который он хочет подарить и выводим диалог благодарности за подарок. К тому же, мы используем команду «DELACT», которой удаляем действие, указанное после этой команды.
==Урок 4. Настройки, Форматирование==
В этом уроке мы рассмотрим, как сделать наш квест более привлекательным. В первую очередь следует настроить интерфейс так, чтобы в нём не оставалось ничего лишнего, отвлекающего от игры. Если вы сейчас запустите наш пример, то увидите, что мы не используем "поле дополнительного описания" (справа внизу) и "командную строку" (внизу). Чтобы они нам не мешали, их нужно отключить. Делается это следующим образом:
''Пример (7.txt):''
<pre width="80">#Начало
SHOWSTAT 0
SHOWINPUT 0
-</pre>
Мы передаём в функцию «SHOWSTAT» значение 0 для того, чтобы отключить "поле дополнительного описания". Если бы мы передали что-либо отличное от 0, то поле было бы видимым. То же самое и с «SHOWINPUT». Так же мы можем отключить инвентарь - «SHOWOBJS», и список действий - «SHOWACTS».
Теперь нам нужно сделать так, чтобы наш текст был более подходящим для нашего квеста. Для этого есть 4 переменные.
''Пример (8.txt):''
<pre width="80">#Начало
BCOLOR = RGB(0, 0, 0)
FCOLOR = RGB(255, 0, 0)
FSIZE = 14
$FNAME = 'Arial'
'Этот текст написан красным цветом, четырнадцатым размером и шрифтом Arial на чёрном фоне.'
-</pre>
Цвет в QSP задаётся с помощью функции «RGB», в которую мы передаём значения его отдельных компонент - красного (Red), зелёного (Green) и синего (Blue). Отсюда и название функции.<br />
Если вы не знакомы с таким способом задания цветов, то вам может помочь программа '''MS Paint''', которая входит в стандартную поставку Windows. Для этого запустите программу, щёлкните два раза по любому цвету в палитре (внизу) и затем нажмите кнопку "Определить цвет". Появится расширенная палитра, на которой можно выбрать нужный вам цвет. Под палитрой снизу будет 3 поля (Красный, Зелёный, Синий), значениями из этих полей вам и нужно заполнить функцию RGB.<br />
Переменная «BCOLOR» устанавливает цвет заднего фона, «FCOLOR» - цвет текста.<br />
Следует учесть, что если присвоить переменной цвета значение 0 (к примеру, «BCOLOR = 0»), то проигрыватель квестов заменит указанный цвет на цвет из настроек самого плеера.<br />
Чтобы изменить размер текста, используется переменная «FSIZE», шрифт текста задётся строковой переменной «$FNAME».
Многие игроки не любят, когда автор задаёт свои визуальные параметры для текстовых квестов. "На вкус и цвет фломастеры разные", кто-то привык читать зелёные буквы на чёрном фоне, а кто-то предпочитает классический вариант чёрного на белом. У кого-то большой монитор - маленькие буквы читать на нём неудобно и т.д. Проигрыватель квестов [[QSP]] позволяет настроить такие параметры индивидуально для каждого игрока, но только в том случае, если автор игры не заменил их на свои. Поэтому я рекомендовал бы вам не менять эти настройки для вашего квеста.
Есть ещё один, наилучший, на мой взгляд, способ сделать ваш текст внешне более привлекательным. Использование HTML. Язык гипертекстовой разметки документов очень хорошо подходит для этой цели. С помощью него можно не только задавать цвет, размер и шрифт текста, но и делать это для отдельных слов, фраз или даже букв, а так же позиционировать текст на экране. Например, можно расположить заголовки по-центру строки, или справа. Для этого нужно переменной USEHTML задать значение, отличное от 0, например 1. В следующем примере я приведу лишь небольшую часть возможностей, которых, впрочем, будет достаточно для оформления игры.
''Пример (9.txt):''
<pre width="80">#Начало
USEHTML=1
BCOLOR = RGB(255, 255, 255)
'<center><font size="20" color="#FF0000" face="Times New Roman"><b>Текстовый квест</b></font></center><br>'
' <b>Ваша цель</b> - зарабатывать <i>деньги</i>, покупать на них <i>подарки</i> и дарить своим <i>близким</i>.'
ACT '<b>Начать игру</b>':GOTO 'Дом'
-
#Работа
'<center><b>Порт</b></center><br>'
' Порт находится на самой южной окраине города. Здесь постоянно загружаются и разгружаются различные суда. Рабочих рук не хватает и складской бригадир всегда рад заплатить <i>деньги</i> за помощь.'
' У вас <font size="16"><b><<Деньги>></b></font> монет.'
' Вам нужно перенести <font size="16" color="#00AA00"><b><<3-Ящик>></b></font> ящика.'
ACT 'Идти домой':GOTO 'Дом'
ACT 'Идти в магазин':GOTO 'Магазин'
ACT 'Перенести ящик':
Ящик = Ящик + 1
IF Ящик = 3:
Деньги = Деньги + 5
Ящик = 0
END
GOTO 'Работа'
END
-
#Магазин
'<center><b>Магазин</b></center><br>'
' Магазин небольшой, но тут обычно есть всё, что нужно простому горожанину. Витрины заставлены различными товарами. У кассы стоит полная женщина и хмуро смотрит на вас.'
' У вас <font size="16"><b><<Деньги>></b></font> монет.'
IF Деньги >= 3:
ACT 'Купить конструктор':
Деньги = Деньги - 3
ADDOBJ 'Конструктор'
GOTO 'Магазин'
END
END
IF Деньги >= 5:
ACT 'Купить плюшевого медведя':
Деньги = Деньги - 5
ADDOBJ 'Плюшевый медведь'
GOTO 'Магазин'
END
ACT 'Купить вязальный набор':
Деньги = Деньги - 5
ADDOBJ 'Вязальный набор'
GOTO 'Магазин'
END
END
IF Деньги >= 7:
ACT 'Купить инструменты':
Деньги = Деньги - 7
ADDOBJ 'Инструменты'
GOTO 'Магазин'
END
END
ACT 'Идти домой':GOTO 'Дом'
ACT 'Идти в порт':GOTO 'Работа'
-
#Дом
'<center><b>Дом</b></center><br>'
' Дома всегда очень уютно. И вкусно пахнет едой. Мама, сидя в кресле, вяжет носки. Отец с вашим братом чинит скворечник. Сестра хлопочет на кухне. Дома всегда хорошо.'
' У вас <font size="16"><b><<Деньги>></b></font> монет.'
IF OBJ 'Конструктор':
ACT 'Подарить конструктор брату':
DELOBJ 'Конструктор'
' - Вот тебе конструктор.'
' - Спасибо, брат.'
DELACT 'Подарить конструктор брату'
END
END
IF OBJ 'Плюшевый медведь':
ACT 'Подарить медведя сестре':
DELOBJ 'Плюшевый медведь'
' - Вот тебе плюшевый медведь.'
' - Спасибо, брат.'
DELACT 'Подарить медведя сестре'
END
END
IF OBJ 'Вязальный набор':
ACT 'Подарить набор маме':
DELOBJ 'Вязальный набор'
' - Вот тебе вязальный набор.'
' - Спасибо, сынок.'
DELACT 'Подарить набор маме'
END
END
IF OBJ 'Инструменты':
ACT 'Подарить инструменты отцу':
DELOBJ 'Инструменты'
' - Вот тебе инструменты.'
' - Спасибо, сын.'
DELACT 'Подарить инструменты отцу'
END
END
ACT 'Идти в порт':GOTO 'Работа'
ACT 'Идти в магазин':GOTO 'Магазин'
-</pre>
'''''Продолжение следует...'''''
[[Категория:Для разработчиков игрДокументация QSP]]