Как сделать?
Re: Как сделать?
Извините за такое количество сообщений подряд...
у меня такая проблема:
Взял за основу пример с объектами. Кое-как добавил запись в html. При нажатии на текст появляется необходимое меню.
Но, при этом, кнопки не работают.
Самое интересное, что кнопка с названием предмета в окне действий и в окне предметов работает, а запись в главном окне - ну никак...
Re: Как сделать?
*выполняет роль нуба, который полазив в программе решил предложить свои гениальные идеи, за что и будет послан в известном направлении...*
Потратив 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(число, $массив, $значение)
п.с. В свое оправдание скажу лишь то, что когда я задолбался сам пытаться это сделать - меня и посетили подобные мысли))
Re: Как сделать?
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
Re: Как сделать?
Это я уже умею. Спасибо игре 7.40. Речь-то сейчас о другом... речь именно о том, чтобы было одинаково просто сделать игру без использования ACT и с использованием данного оператора... надеюсь это оператор.
Ну просто реально... я тут подумал, что так было бы намного удобнее... я понимаю, что на данный момент obj является скорее визуальной составляющей, чем информационной) Но мне хочется именно понавешать действий на объекты в локации... как-то так...
Re: Как сделать?
Если хочешь сделать игру "чисто на ссылках", тебе необходимо очень хорошее знание QSP.
Въехать "с ходу" во все тонкости вряд ли выйдет, даже с нашей помощью.
Попробуй сначала сделать игру попроще, со стандартными действиями (ACT), получишь базовые навыки, тогда и за технические ухищрения можно будет браться.
Пока что, из твоих сообщений я даже не понимаю, в чем именно проблема.
Информация
- Статистика форума:
- Всего тем:
- 1062
- Всего опросов:
- 14
- Всего сообщений:
- 16791271
- Бездействующий:
- Пользователи форума:
- Всего пользователей:
- 2905
- Последним зарегистрировался:
- themuxalych
