RU 📌 Pinned

Как сделать?

Dark[Ol(U23)leneri] #34 18.04.2010 22:57 6408 comments 2431294 views

SV_fep,
если бы плеер работал так, то как можно было бы добавить более одного действия?

Nex,

Nex:

если бы плеер работал так, то как можно было бы добавить более одного действия?

Ну да…

Nex:

Я сужу по тому что ты опубликовал на форуме. Может в своей игре ты уже исправил на латиницу, но в сообщении форума было именно так как я сказал.

Интересно, вроде ctrl+c, ctrl+v.

Ладно, буду знать, что так нельзя делать. Спасибо за помощь))

Гмм. Пардон за столь простой вопрос(наверно) но:
Как сделать, чтобы после нажатия на действие игрока отбрасывало не на начало локации, а на шаг назад, когда ‘Действие’ уже выполнено. Русским языком: Локация, на ней действие ‘Действие’, игрок нажимает, высвечивается новый текст и новый список действий ’1’,’2’. Игрок нажимает на одно из этих действий, снова появляется новое описание и кнопка ‘Продолжить’. Надо чтобы при нажатии на эту кнопку игрока выбрасывало на ‘Локацию’, где уже выполнилось ‘Действие’.
Майндфак, извиняюсь ;(

RealCrazyMan,
чтобы всё это было на одной локации? Задача похожа на организацию диалога с персонажем.

Заводим одну переменную, в ней “переключаем” состояние локации. В зависимости от её значения выводим разное описание и действия.

IF вахтёрша = 0:
	'На проходной сидит вахтёрша.'
	ACT 'Подойти к вахтёрше':
		вахтёрша = 1
		GOTO $CURLOC
	END
ELSEIF вахтёрша = 1:
	'Вахтёрша внимательно смотрит на вас. Просто так она вас не пропустит, это видно сразу.'
	ACT 'Пройти мимо неё с наглым видом':
		вахтёрша = 2
		GOTO $CURLOC
	END
	ACT 'Придумать причину':
		вахтёрша = 3
		GOTO $CURLOC
	END
ELSEIF вахтёрша = 2:
	'Вахтёрша хватает вас за рукав. - Куда это ты, малец, собрался?!'
	ACT 'Продолжить':
		вахтёрша = 1
		GOTO $CURLOC
	END
ELSEIF вахтёрша = 3:
	'- Мне к Семён Семёнычу, срочно! - Вахтёрша с умным видом кивает. Вам повезло, путь свободен.'
	ACT 'Пройти':
		вахтёрша = 0
		GOTO 'Коридор'
	END
END

Я с вами новенький, есть пару вопросов:
1)Если у меня получается слишком много условий, которые необходимо проверить(пускай около 7), что бы произошло какое-то событие, какие пути реализации этого есть? Я вижу только два: стандартный со вложенными if или сделать переменную-флаг, которая фиг знает где высчитывается (где меньше всего кода) и потом просто используется для проверки в действиях. Просто первый вариант слишком сильно нагромождает код.
2)Уже относительно среды разработки.
Чем новая версия, которую пишут местные разработчики отличается от старой? Я скачал новую - там нет автодополнения, невозможно запустить игру из редактора. Получилось своего рода итерация назад. В этом есть причина? Т.е. старый содержит критические ошибки и т.д.?
3)Тоже относительно QGen
Могу ли я получить исходники к примеру старой версии? Ну или, если есть явные преимущества у новой версии, то принять участие в разработке. Поведу альтернативную ветку.
На самом деле мне бы хотелось добавить такие вещи:
1)Вкладка с переменными - в ней описаны все переменные, которые игрок использует в своей игре (т.е. он их там может посмотреть, добавляются они по прежнему в любом месте)
2)Подсветка новых и уже существующих переменных - пока не особо представляю алгоритм. Но идея такая - как-то показать пользователю, что он использует существующую переменную или создаёт новую. К примеру, пока переменная используется 1 раз, она подсвечена зеленым, как мы прибегаем к ней 2 и более раз, она становится темнокрасной. Заметил, что переменные никак не инициализируются, то можно запросто допустить ошибку, перепутав случайно букву в слове.
3)Попробовал бы на уровне компилятора ввести такую конструкцию, как дизъюнкция и коньюнкция.
т.е. можно использовать if(x & i & c &…& s). Удобно же?
4)Если третий вариант слишком сложен для реализации или по каким-то причинам невозможен, использовать такую вещь, как вызовы функций. Создать отдельную вкладку, где можно описать функцию (тут тоже надо грамотно все продумать). Ведь тоже удобная штука?
Или все эти плюшки удобны только мне, как про-ту, который привык к всяким мощным IDE?))

MoonGuard:

1)Если у меня получается слишком много условий, которые необходимо проверить(пускай около 7), что бы произошло какое-то событие, какие пути реализации этого есть? Я вижу только два: стандартный со вложенными if или сделать переменную-флаг, которая фиг знает где высчитывается (где меньше всего кода) и потом просто используется для проверки в действиях. Просто первый вариант слишком сильно нагромождает код.

if A=A0 AND B=B0 AND C=C0 AND D=D0 AND E=E0:

MoonGuard:

3)Попробовал бы на уровне компилятора ввести такую конструкцию, как дизъюнкция и коньюнкция.
т.е. можно использовать if(x & i & c &…& s). Удобно же?

А можно в терминах логического/побитового И/ИЛИ? В QSP есть побитовое И и побитовое ИЛИ.

MoonGuard:

4)Если третий вариант слишком сложен для реализации или по каким-то причинам невозможен, использовать такую вещь, как вызовы функций. Создать отдельную вкладку, где можно описать функцию (тут тоже надо грамотно все продумать). Ведь тоже удобная штука?

http://wiki.qsp.su/help:func - оператор FUNC - не то, что ты имеется в виду?

По QGen не могу ответить, знаю только, что его переделывают с нуля под QT. Времени у людей не хватает, поэтому разработка может затянуться. По поводу исходников и участия в разработке лучше обратиться в тему по QGen 5

стандартный со вложенными if

Нет. Стандартный - это перечислить условия, объединив их оператором AND (не путать с END!).

Пример. Нам нужно, чтобы для срабатывания кода выполнялось одновременно три условия: a = 1, b = 2, c = 3.

IF (a = 1) AND (b = 2) AND (c = 3):
    ...
END

Скобки не обязательны, но так нагляднее.

Чем новая версия, которую пишут местные разработчики отличается от старой?

Новая версия была начата, так как старую дорабатывать практически невозможно. На данный момент в новой версии все ещё нет многих возможностей старой, так что использовать её можно в экспериментальном режиме. В будущем, перенесём все нужные возможности из старой, добавим новых возможностей, сделаем удобнее.

Могу ли я получить исходники к примеру старой версии? Ну или, если есть явные преимущества у новой версии, то принять участие в разработке. Поведу альтернативную ветку.

Исходники QGen4: http://my-trac.assembla.com/q-gen
Исходники QGen5: https://github.com/rrockru/QtQGen

Вкладка с переменными - в ней описаны все переменные, которые игрок использует в своей игре

Это запланировано, в качестве переноса функционала Анализатора.

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

Аналогично.

Попробовал бы на уровне компилятора ввести такую конструкцию, как дизъюнкция и коньюнкция.

QSP-игры не компилируются. Синтаксис относится не к возможностям редактора, а к возможностям плеера.
Логическое сложение и умножение уже есть, операторы AND и OR.
Например, “10 OR 6” будет равняться 14.

Nex:

Нет. Стандартный - это перечислить условия, объединив их оператором AND (не путать с END!).

Спасибо, просто в учебнике базовым об этом не говорилось, а я по привычке попытался использовать &&, ||. Просто практически никакого опыта в паскале, бейсике и прочем, поэтому и не задумался даже над такими словами)). В основном все на шарпе, java, с++.

MoonGuard:

Спасибо, просто в учебнике базовым об этом не говорилось,

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

Можно ли в QGen как-то в одну папку вложить другую?

MoonGuard:

Можно ли в QGen как-то в одну папку вложить другую?

Скорее всего нет. При грамотной разработке это и не требуется. Если только игра не ну очень навороченный долгострой. И то можно разбить файл qsp на несколько. См. ADDQST.

MoonGuard,
нет.

Папки нужны по большей части, чтобы спрятать с глаз долой редко используемые автором локации. Ещё чтобы разбить повествование на несколько глав. Для этого вполне достаточно одного уровня.

Для быстрого поиска локаций, если их очень много, мы собирались сделать фильтры и метки. То есть, чтобы автор мог как-то помечать, например, недописанные локации, цветом или флажком, а потом когда понадобится, включить фильтр и наглядно увидеть все недописанные в одном списке.

Версия html 5.0? Или более ранние?
А насчёт локаций - вопрос двоякий. К примеру ты делишь игру по главам, а в каждой главе свои города, где в городе каждая локация может разбиваться на несколько логических (К примеру Глава1-Город А - Магазин-Подвал магазина).
Насчёт загрузки модулей - он картинки тоже с собой тянет? К примеру к локациям прикрепляются картинки, а потом ты загружаешь проект, но ведь картинки не в самом файле .qsp

MoonGuard,
да никакая в классическом плеере версия HTML. Просто ограниченный самодельный рендер.

насчёт локаций - вопрос двоякий. К примеру ты делишь игру по главам, а в каждой главе свои города, где в городе каждая локация может разбиваться на несколько логических (К примеру Глава1-Город А - Магазин-Подвал магазина).

Кто задаётся такими вопросами, игру не заканчивает.

Насчёт загрузки модулей - он картинки тоже с собой тянет?

Нет, только код. Картинки грузятся прямо с диска и в файл игры не встраиваются.

MoonGuard:

А насчёт локаций - вопрос двоякий. К примеру ты делишь игру по главам, а в каждой главе свои города, где в городе каждая локация может разбиваться на несколько логических (К примеру Глава1-Город А - Магазин-Подвал магазина).

Есть один способ: ‘^’ в именах вложенных локаций.

Глава 1 - папка
 Город А
 ^Магазин А
 ^^Подвал магазина А
 Город Б
 ^Магазин Б
 ^^Подвал магазина Б

Log in or Register to post comments.