1. Решила попробовать себя в написании текстового квеста в TADS. Скачала набор для автора, новую библиотеку и обучалки. Все установила.
Но новая версия обучалки про козу и капусту у меня не компилируется, а старая - все ок. Библиотеку libr25 в папку TADS Tools скинула. Что же не так?
2. На основе старой версии обучалки попробовала сделать что-то свое. Взяла игрока, ворону и сыр в стартовой локации. Описания сыра, вороны и тп. написала, все ок. Пробую позволить игроку спросить ворону о сыре. Когда спрашиваешь ворону и затем после подсказки ситемы уточняешь, что спрашиваешь о сыре, все работает. А когда сразу в одном предложении спрашиваешь про сыр, получаешь ответ: "Я не знаю слова сворона". В чем тут моя ошибка. Для написания кода я ориентировалась на руководство по TADS.
Заранее спасибо. И не судите, пожалуйста, строго я новичок и не программист, а любитель:)
Неактивен
по своему, более чем скромному, опыту могу сказать:
1. проще писать с нуля, чем переделывать готовую прогу. а ещё лучше- переделывать совсем маленькую прогу. напр 'золотой череп'
2. хотелось бы увидеть код. я-то щазз помочь не смогу, но когда сюда заглянет кто-нить умный, код проги может помочь ему 'вычислить' суть проблемы с 'свороной'. новую версию обучалки не смотрел
Неактивен
Так, начинаем наконец отвечать на вопросы.
Natalka написал:
1. Решила попробовать себя в написании текстового квеста в TADS. Скачала набор для автора, новую библиотеку и обучалки. Все установила.
Но новая версия обучалки про козу и капусту у меня не компилируется, а старая - все ок. Библиотеку libr25 в папку TADS Tools скинула. Что же не так?
Попробовал - у меня тоже не компилируется, сообщение об ошибке такое:
generator.t(8): error TADS-117: #define symbol already defined -- redefinition ignored
Похоже, в игре просто случайно продублирована команда
#define GENERATOR_INCLUDED
один раз в файле generator.t, а другой - в vkkpuzl.t. Достаточно закомментировать (или удалить) любое из этих определений, и все заработает.
(Natalka, убедительная просьба на будущее - когда задаете вопрос, по возможности указывайте и сообщение об ошибке - это сильно облегчает ее поиск).
Неактивен
uux написал:
(Natalka, убедительная просьба на будущее - когда задаете вопрос, по возможности указывайте и сообщение об ошибке - это сильно облегчает ее поиск).
Конечно, учту. Я больше так не буду:)
Неактивен
Natalka написал:
2. На основе старой версии обучалки попробовала сделать что-то свое. Взяла игрока, ворону и сыр в стартовой локации. Описания сыра, вороны и тп. написала, все ок. Пробую позволить игроку спросить ворону о сыре. Когда спрашиваешь ворону и затем после подсказки ситемы уточняешь, что спрашиваешь о сыре, все работает. А когда сразу в одном предложении спрашиваешь про сыр, получаешь ответ: "Я не знаю слова сворона". В чем тут моя ошибка. Для написания кода я ориентировалась на руководство по TADS.
Да, действительно глюк системных библиотек. Выход - пока перейти на более старую версию (23 или 24, можно попросить у ГрАнда, а в принципе и у меня они где-то валяются;). А может, ГрАнд чего-то присоветует...
Дальше то, что написано рыжим, пропустите - это сленг разработчиков, который я и сам без принятия поллитры внутрь едва понимаю;).
Андрей, проверь работу preparse. Похоже, там, где ты добавил функционал "вводим возможность вводить фразы типа "попросить Ваню взять пилу"", и кроется источник проблемы: система воспринимает "спросить" как "просить" и выдает на выходе барахло. При уточняющем вопросе этот момент как-то обходится.
Natalka написал:
Заранее спасибо. И не судите, пожалуйста, строго я новичок и не программист, а любитель:)
Natalka, Вам спасибо за интерес к ТАДСу;).
Неактивен
Я снова с вопросами:) Решила написать тут же, чтоб форум не засорять.
У меня снова есть ворона, есть сыр. Сыр я хочу выдать вороне. Для сыра я прописала location=vorona.
Подскажите, пожалуйста, как сделать так, чтобы при осмотре вороны, автоматом сообщалось, что у нее есть сыр или что-то еще.
Неактивен
Natalka написал:
Я снова с вопросами:) Решила написать тут же, чтоб форум не засорять.
У меня снова есть ворона, есть сыр. Сыр я хочу выдать вороне. Для сыра я прописала location=vorona.
Подскажите, пожалуйста, как сделать так, чтобы при осмотре вороны, автоматом сообщалось, что у нее есть сыр или что-то еще.
Если нужно проверять только сыр, то проще всего сделать так:
vorona: Actor ldesc={"На ветке дерева сидит ворона. "; // Стандартное описание if(self.isCarrying(syr)) // Проверяем, есть ли у вороны сыр - self ссылается на объект, которому принадлежит текущий метод; // isCarrying - более общая проверка, чем syr.location=vorona, т. к. учитывает случаи, когда // у вороны в клюве лукошко, а уже в лукошке лежит сыр {"Она держит в клюве сыр."; } else // Вариант, когда у вороны ничего нет {"Она недовольно щелкает клювом."; } } ;
Если в принципе нужно выводить предметы, которые есть у актера, можно поступить так (это посложнее):
vorona: Actor ldesc={"На ветке дерева сидит ворона. "; // Стандартное описание if (itemcnt(self.contents)) // itemcnt - возвращает число элементов в списке; // self.contents - это и есть список содержимого (инвентарь) self'а, т. е. вороны {"У вороны есть "; global.vinpadcont:=0; // Флаг для правильного отображения винительного падежа listcont(self);". "; // listcont - перечисляет инвентарь актера global.vinpadcont:=1; // Возвращаем флаг в исходное состояние } else {"Она недовольно щелкает клювом."; } }
Отредактировано uux (05.03.2009 18:37)
Неактивен