Как сделать?
…
*выполняет роль нуба, который полазив в программе решил предложить свои гениальные идеи, за что и будет послан в известном направлении…*
Потратив 2 дня, а может даже намного больше на попытки хоть как-то организовать предметы, я пришел к следующему:
Начало:
usehtml=1
$действие_дождь[0]=‘open:open’
$действие_дождь[1]=‘pick:pick’$действие_ветер[0]=‘open:open1’
$действие_ветер[1]=‘pick:pick1’$предмет[0]=‘Дождь’
$предмет[1]=‘Ветер’$описание[0]=‘Дождик продолжает капать. Обычный летний дождь.’
$описание[1]=‘Ветерок приятно освежает’if no obj ‘Дождь’: ‘<a class = ‘‘plain’’ href=“EXEC: menu ‘‘$действие_дождь’’ “><<$предмет[0]>></a>’
if no obj ‘Ветер’: ‘<a class = ‘‘plain’’ href=“EXEC: menu ‘‘$действие_ветер’’ “><<$предмет[1]>></a>’
pick:
add obj ‘Дождь’
goto ‘Начало’
pick1:
add obj ‘Ветер’
goto ‘Начало’
open:
‘<<$описание[0]>>’
open1:
‘<<$описание[1]>>’
И это только, чтобы предметы работали в основном окне… Для инвентаря можно взять пример…
А надо ли? я тут подумал… выходит, что add obj добавляет не obj, а всего-лишь строку в инвентаре. Бессмысленную бесполезную строку…
Не лучше ли сделать например так:
Добавить оператор create obj со следующим синтексом
create obj ($Название_объекта:локация_обработчик, число=кол-во_действий, перечисление_действий_через_запятую )
А после этого создавалась бы локация_обработчик, где шаблоном бы вставлялись например:
if seloption (забыл сказать… пусть это будет функция выбранного действия) =‘название_действия’: ну и соответственно что происходит. end
А еще желательно добавление библеотек шаблонов, а не отдельных примеров…
И все-таки сделайте меню быстрого вызова команд… чтобы нажимаешь и он тебе сам выводит arros(число, $массив, $значение)
п.с. В свое оправдание скажу лишь то, что когда я задолбался сам пытаться это сделать - меня и посетили подобные мысли))
Dark,
“строка в инвентаре” нужна, в первую очередь, для того, чтобы игрок видел, какие предметы у него с собой;
во вторую очередь, для упрощенного “учета” игровых предметов - спец. операторы ADDOBJ, DELOBJ и функция проверки наличия предмета OBJ не только экономят код, но и делают его более понятным, читаемым.
OBJ - не “объект” в программерском понимании этого слова, а просто “предмет”, вещь в заплечном мешке, единица игрового мира.
Ты не с того конца взялся за использование предметов. HTML, exec и прочие технические ухищрения тебе поначалу не нужны, делай как проще.
Обычная игровая логика, поясню на примере:
Есть игровая локация “Комната”. Будем считать, что эту локацию можно посетить многократно(распространенная ситуация).
На локации есть предмет “ключ”. Наличие предмета на локации хранится в переменной “комната_ключ”.
#Комната
! описание локации:
*PL ‘В комнате пусто.’
! часть описания локации, которая зависит от наличия предмета:
IF комната_ключ=0:
*PL ‘На полу лежит ключ.’
END
! действия:
! переход на соседнюю локацию
ACT ‘Подойти к двери’: GOTO ‘Дверь’
! если ключ находится на локации, игрок может его подобрать:
IF комната_ключ=0:
ACT ‘Взять ключ’:
! добавляем предмет в инвентарь
ADDOBJ ‘ключ’
! не забываем установить переменную
комната_ключ=1
! делаем переход на эту же локацию, чтобы обновилось описание и список действий
GOTO $CURLOC
END
END
-
#Дверь
*PL ‘Вы подошли к двери. Дверь заперта.’
ACT ‘Вернуться’: GOTO ‘Комната’
! если у игрока есть с собой ключ, можно открыть дверь и выйти
IF OBJ ‘ключ’:
ACT ‘Открыть дверь и выйти’: GOTO ‘коридор’
END
Это я уже умею. Спасибо игре 7.40. Речь-то сейчас о другом… речь именно о том, чтобы было одинаково просто сделать игру без использования ACT и с использованием данного оператора… надеюсь это оператор.
Ну просто реально… я тут подумал, что так было бы намного удобнее… я понимаю, что на данный момент obj является скорее визуальной составляющей, чем информационной) Но мне хочется именно понавешать действий на объекты в локации… как-то так…
Если хочешь сделать игру “чисто на ссылках”, тебе необходимо очень хорошее знание QSP.
Въехать “с ходу” во все тонкости вряд ли выйдет, даже с нашей помощью.
Попробуй сначала сделать игру попроще, со стандартными действиями (ACT), получишь базовые навыки, тогда и за технические ухищрения можно будет браться.
Пока что, из твоих сообщений я даже не понимаю, в чем именно проблема.
Всем привет. Я полный новичёк в роли разработчика игр. Сейчас я пытаюсь сделать игру по “Вселенной Метро 2033” только в Минске. У меня очень много вопросов=)
Начну с того для чего нужно поле “Выполнить при посещении”? И для чего “Базовые действия”?
Лично я использую раздел “Базовые действия” для вставки кода на переход в другую локацию.
Nex:
Если хочешь сделать игру “чисто на ссылках”, тебе необходимо очень хорошее знание QSP.
Въехать “с ходу” во все тонкости вряд ли выйдет, даже с нашей помощью.
Да уже вышло хД
Nex:
Попробуй сначала сделать игру попроще, со стандартными действиями (ACT), получишь базовые навыки, тогда и за технические ухищрения можно будет браться.
7.40 - на мой взгляд достаточно опыта.
Nex:
Пока что, из твоих сообщений я даже не понимаю, в чем именно проблема.
я предлагаю добавить функцию Предмета, которая была бы одинаково активна как и в инвентаре так и в описаниях… ну в самом тексте игры)
Максим:
Всем привет. Я полный новичёк в роли разработчика игр. Сейчас я пытаюсь сделать игру по “Вселенной Метро 2033” только в Минске. У меня очень много вопросов
Начну с того для чего нужно поле “Выполнить при посещении”? И для чего “Базовые действия”?
Лично я использую раздел “Базовые действия” для вставки кода на переход в другую локацию.
Максим, советую для начала скачать примеры и, также для начала, можно скачивать легкие игры с открытым кодом - это очень помогает.
Например, для обучения отлично подойдут игры с конкурсов “Вжжж” и “TWIFcomp”. Говорю как новичек новичку)
Оператор “create obj” не нужен.
:D :D :D
я ведь знал, что пошлете… блин… а ведь на деле получается, что QGen - это не прога для писателей, а прога для программистов.
Dark,
я подразумевал не опыт ковыряния в чужой игре, а опыт создания своей собственной.
добавить функцию Предмета, которая была бы одинаково активна как и в инвентаре так и в описаниях… ну в самом тексте игры)
Не понимаю.
Максим,
Написал тебе в ЛС.
Dark,
QGen - для авторов текстовых игр, а они, как правило, немножко писатели и немножко программисты.
Давай придерживаться темы - вопросы “как сделать?”
Nex:
QGen - для авторов текстовых игр, а они, как правило, немножко писатели и немножко программисты.
Не надо ровнять всех под одну гребенку. Тем более что любая программа для создания чего-либо в первую очередь должна быть простой в использовании.
Nex:
Давай придерживаться темы - вопросы “как сделать?”
Окей
После просмотра примеров на сайте заинтересовала реализация одного из них но более интересным способом
В примере rpg.gam в начале есть момент повышения скила в зависимости от количества очков. Все прекрасно работает только есть проблема
Проблема: как сделать чтобы после выбора скила он пропадал. (не пойму пока я тут массивы IF)
Объяснение : Есть переменная Скилл=0. При нажатии на выбор скила она изменяется на if Скилл=0: cls & Скилл=Скилл+1 в результате чего он должен пропасть из доступного выбора.
Не пойму этот момент.
=======================Вопрос снят решение найдено================
gr1mm3r,
Для того, чтобы наличие действия на локации зависело от переменной, в твоем случае следует задать действия в коде - область “выполнить при посещении”.
Например, у тебя есть базовое действие “Выбрать скилл мечника”, с кодом “Скилл=Скилл+1 & XGOTO $CURLOC”.
Записываем его в коде локации:
ACT ‘Выбрать скилл мечника’:
Скилл=Скилл+1 & XGOTO $CURLOC
END
Оборачиваем его в условие, чтобы действие появлялось только если Скилл=0
IF Скилл=0:
ACT ‘Выбрать скилл мечника’:
Скилл=Скилл+1 & XGOTO $CURLOC
END
END
Можно в коде действия написать if скилл=0:delact $selact
Byte,
вернее,
if скилл=0: скилл=1 & delact $selact
Этот способ хорош, но подходит только для локаций, посещаемых один раз за всю игру.
Впрочем, можно и так, и так.