Как сделать?
…
Nex,спасибо
Друзья! Я пока новичок в qsp. Делаю потихоньку свой проект, и у меня такая проблема: не могу найти хороший вариант реализации диалогов. Может кто-то что-то подскажет? Про пример с Арагорном я знаю, но он мне не подходит из-за того, что у меня в диалогах прописаны описания каких-то действий героев. Выкинув их, как мне кажется, игра потеряет долю описания, и, как следствие, атмосферы. Заранее благодарю всех. :)
Кусочек диалога, чтобы было нагляднее видно суть проблемы.
Spoiler
- Что притащил?! - Раздраженно Спросил Сидорович, оторвав взгляд от монитора ноутбука. - Если опять какой-то хлам, то можешь считать, что на этом наш разговор закончен!
- Хлам таскают новички. - Сдержанно ответил Крест, бросив на стол сумку с хабаром. - Посмотришь?
- А чего не посмотреть-то? - Сидорович запустил руки в сумку, что-то бормотая себе под нос. - Не плохо, хороший товар! Сколько ты хочешь?
- Тридцать тысяч. - Твердо ответил Крест, не отводя взгляд с сумки. - У меня с пацанами большие планы на старый завод, а для этого нужны деньги.
Нашел решение своей проблемы. Если кому-то будет интересно, то выкладываю кусок игры с кодом. :) 27112017-1842_stalker.qsp
loony25,
если весь вопрос в оформлении, дизайне, посмотри примеры вот в этих трёх темах:
Как в QSP вставить GIF файл ?
Можно ли вообще это сделать ?
Серый Кардинал,
С гифками всё ровно то же самое, что и с обычными картинками. Есть два способа:
1. HTML-тэги.
Spoiler
На первой локации ставишь:
! тут может быть твой код
usehtml = 1
! и тут тоже может быть твой код
В остальных локациях (или даже в названиях объектов и действий) теперь можно ставить вот это:
'(тут может быть текст и HTML-теги)<img src="папка\папка\путь_к_твоей_гифке.gif">(тут может быть текст и HTML-теги)'
2. Команда “VIEW”
Spoiler
В нужном месте вставляешь этот кусок кода:
view 'папка\папка\путь_к_гифке.gif'
Правда, у этого способа есть ограничения. В названиях объектов\действий его использовать нельзя. Для этого есть первый вариант.
Вроде как-то так. Если я что-то напутал или недосказал - старожилы помогут.
Ребята, что за фигня эти “массивы” и как их использовать? Я кучу времени копаюсь в коде разных игр, и часто вижу их.
Приветствую всех разработчиков. Я недавно начал погружаться в это все дело и у меня несколько простых вопросов.
1. Как сделать переход по локациям следующим образом: При посещение определенной локации, определенное количество раз. Скрытая локация появляется в строке локаций после выполнения условия.
2. Каким образом сделать диалог с выбором ответов, после которых так же открываются определенные локации. (Вариант1: После диалога и выборе нужного ответа, появляется новая строка с новой локацией куда можно перейти, либо не переходить. Вариант2: После выбора ответа тебя автоматом кидает в новую локацию.)
3. Прошу совета: Как размещать множественные локации и как их называть для максимально комфортной работы с ними в дальнейшем, если их много.
Спасибо.
D31M0S,
http://aleksversus.narod.ru/index/peremennye_i_massivy_v_qsp/0-28
waganwils,
1. Действие по условию
В поле “выполнить при посещении” локации пишешь примерно следующее.
Spoiler
*p "Я нахожусь на поляне, окружённой плотной стеной кустарника. "
здесь_был_поляна+=1 & ! увеличиваем число посещений на 1
! если число посещений меньше 5, нет доступа к локации "болото"
if здесь_был_поляна<5:
*pl "Но так и не вижу пути к болоту, о котором мне рассказывал гном."
! в противном случае (если число посещений 5 и больше)
else
*pl "И кажется я вижу тропку между двух шиповниковых кустов, которая ведёт к болоту"
! начало действия
act "Идти к болоту":
goto "болото"
! конец действия
end
! конец условия
end
! действие, которое выводится всегда
act "Вернуться в чащобу":
goto "лес_чащоба"
!конец действия вернуться в чащобу
end
2. То же самое, что и предыдущее. Диалог реализуется в виде действий по условию, просто в некоторых действиях вставляешь команды перехода.Есть примеры диалогов.
3. Во-первых, в QuestGenerator есть папки. Это очень облегчает написание кода.
Во-вторых, можно разбить игру на модули/части. Допустим у меня разбито: вводные данные, движок (служебные локации), библиотеки (оружие, броня, предметы и прочее), сама игра. Потом уже на самой первой локации в игре подключаешь всё это с помощью команды addqst (inclib для Quest Navigator), типа:
addqst 'drive.qsp'
addqst 'base.qsp'
addqst 'intro.qsp'
естественно, приходится работать в нескольких окнах.
Ну и в-третьих, я как-то со временем взял себе за правило локациям с разным назначением задавать разные шаблоны имён. Например, служебные локации состоят у меня из двух-трёх (четырёх, пяти, но это реже) слов, разделённых точкой get.daughter.obj. Локации мест имеют вид место;название_локации. Локации сюжетные (т.е. где воспроизводятся большие отбивки сюжета) как-то так: 0.1_пролог 0.2_пролог 1.1_сцена_в_баре 1.2_сцена_в_баре 1.3.1_поражение_в_баре 1.3.2_победа_в_баре. Локации различных инфо-листов и прочие информационные имеют в начале и конце названия квадратные скобки: [start] [info] [thanks] [credits] [end] [death].
Большое спасибо!
Можно пожалуйста пояснения по поводу отступлений в коде, какую роль они играют?
waganwils,
никакой. Только удобство чтения.
Однако следует различать однострочную:
act "войти в лес": goto "лес"
if a<6: b=7 else b=8
И многострочную формы записей операторов:
act "войти в лес":
goto "лес"
end
if a<6:
b=7
else
b=8
end
Разбиение строк играет значительную роль в понимании кода плеером.
Как добавлять условия разобрался. Теперь всплыл вопрос как удалять(изменять) msg, act и gt после выполнения определенных условий. Пример: Если на одной локации есть одно действие и с игроком идет диалог, после окончания которого это действие удаляется или заменяется другим. И то же самое про текст выводящийся командой *p. Так же прошу поделиться примером как создать локацию в которой игроку нужно подобрать пароль для дальнейшего прохождения. Например перед вами дверь с паролем из 3 цифр > подобрать пароль > пустая графа куда вводить цифры > в случае выполнения условия перемещает в следующую локацию. Спасибо.
waganwils,
В учебнике QGen есть пример “действия по условию”. Изучай.
Суть в том, что каждое действие, MSG, вывод текста и прочее, что мы желаем в будущем скрыть, “обёртывается” в условие, потом мы меняем переменную, условие перестаёт выполняться, делаем перезаход на локацию - вуаля, действие скрыто.