Хм, столкнулся с проблемой. У протагониста уже есть предмет, пусть "пузырек с ядом". Исследуя отдаленные районы квеста он находит второй точно такой же "пузырек с ядом". Предметы по идее абсолютно идентичны (массовое производство приводит к этому), более того это контейнеры, и их содержимое отличается (в одном из пузырьков на самом деле простая вода), однако об этом нельзя узнать, если не попробовать (а умный протагонист не станет пить из пузырька с ядом, чтоб не почувствовать легкого недомогания).
Собственно есть ли выход из ситуации:
Вы имеете в виду "пузырек с ядом" или "пузырек с ядом"?
Кроме как поменять сценарий?
Самое страшное - таких предметов на самом деле на два, а четыре ![]()
Неактивен
- VampirE - написал:
PS Что за многоточия в аргументах функции? Это что-то вроде необязательных параметров или как?
Да, это именно они и есть.
Неактивен
Hind написал:
Меня сейчас интересует, как изменить свойство adjective... Что оно вообще такое? Ему ничего не присваивается, оно только задается при создании объекта...
adjective - это лексическое свойство-прилагательные, соответственно. Проще говоря, оно определяет набор прилагательных (или существительных-определительных), с помощью которых игрок может обращаться к объекту. Для изменения лексических свойств (добавления/удаления) используются функции addword/delword. Далее см. в мануале (в "Справочнике по языку программирования" или, по-моему, где-то есть в главах про парсер - что-то вроде "Динамический словарный запас").
Отредактировано uux (06.12.2007 06:10)
Неактивен
- VampirE - написал:
Ну что? Кто-то знает как избежать смены предлога на "of"? Когда Гранд писал о "некоторых экзотических случаях" он это имел ввиду?
Есть идея (правда, без кода, код предоставляю написать ГрАнду, так как оптимизация системных библиотек - его епархия): в parseDisambig перед выводом запроса просматривать переменную str на предмет вхождения в нее подстроки ' of ' и безжалостно заменять оную на пробел. На мой взгляд, единственная проблема, которая может возникнуть - это случай, когда в русскоязычной игре активно используются англоязычные словосочетания, но уж это-то совершенно точно экзотика. Других побочных эффектов придумать не могу. Может, ГрАнд меня поправит.
Неактивен
- VampirE - написал:
А вот еще пример: игрок встречает какого-то персонажа. Так как его имени он не знает, то может обращаться к нему как "человек" и т.д. А вот если персонаж узнает имя собеседника, возможно ли потом изменять значение переменных с падежами vdesc, pdesc и т.д. на имя персонажа?
ГрАндовский пример в принципе дает ответ на этот вопрос, но вот еще одна прямая подсказка: vdesc, pdesc и т. д. - это не переменные, а методы. Соответственно, их можно оформить в виде кусков кода в фигурных скобках и включить туда условные операторы. До остального, думаю, догадаешься сам;).
Неактивен
- VampirE - написал:
Есть идея (правда, без кода, код предоставляю написать ГрАнду, так как оптимизация системных библиотек - его епархия): в parseDisambig перед выводом запроса просматривать переменную str на предмет вхождения в нее подстроки ' of ' и безжалостно заменять оную на пробел.
Это-то понятно. Но будет не очень красиво смотреться. По смылсу там все равно должен будет стоять какой-то предлог.
В случае с of это не так.
Эту конструкцию ГрАнд специально придумал для случаев, когда определяющее существительное в родительном падеже следует за определяемым (конструкции вида "дверь гаража", которая будет заменена на "дверь of гаража"). Поэтому тут-то как раз никаких предлогов (с точки зрения русского человека, а не TADS;) не требуется. Больше такое представление, насколько я понимаю, нигде не используется.
To GrAnd: Андрей, поправь меня, если я ошибаюсь.
Неактивен
AlsoKorwin написал:
1. А если это будут зеленый, синий, лиловый, грязный, пузырек с ядом - это повредит сюжету? Они действительно долждны быть совершенно одинаковыми?
Я думаю - да, иначе Гор не спрашивал бы;).
Неактивен
GrAndrey написал:
uux написал:
Эту конструкцию ГрАнд специально придумал для случаев, когда определяющее существительное в родительном падеже следует за определяемым (конструкции вида "дверь гаража", которая будет заменена на "дверь of гаража"). Поэтому тут-то как раз никаких предлогов (с точки зрения русского человека, а не TADS;) не требуется. Больше такое представление, насколько я понимаю, нигде не используется.
To GrAnd: Андрей, поправь меня, если я ошибаюсь.Совершенно верно. ТАДС по умолчанию ожидает увидеть определяемое существительное после прилагательного, и делает исключение лишь при наличии предлога 'of'. В русском языке на его месте могут быть самые разные предлоги, что задается в specialWords строкой 'of'='для'='против'='типа'='из'='под'='от'='на'='в'='с'. Но предлога может не быть, так как он будет "заложен" в родительном падеже определения. Для этих случаев создается дополнительная лексема прилагательного с меткой #r. Предпарсер переделывает такие конструкции к виду "существительное для прилагательное" К сожалению, парсер все предлоги приводит к одному коду, и может вернуть только 'of'. Уж коль пошла такая пьянка, то можно сохранть предлоги для дальнейшего использования, ...
Пришел в голову обходной путь. Поскольку предлоги "из", "под", "от" и т. д. (а) и сами по себе встречаются в играх довольно редко, и (б) еще реже может возникнуть вариант, когда одному и тому же объекту соответствует сразу несколько таких предлогов, можно ввести для объекта специальное свойство, содержащее этот предлог-связку, например:
Letter: item noun='письмо' adjective='военкомата' predlog='из' sdesc="письмо из военкомата" ; Groove: fixeditem noun='канава' adjective='забором' predlog='под' sdesc="канава под забором" ; Clock: item noun='часы' adjective='брата' 'брата#r' sdesc="часы брата" predlog='' ;
и при запросе игроку вместо "of" подставлять свойство predlog.
GrAndrey написал:
но у меня уже голова идет кругом от последних программерских изысков
Да уж, активность на нашем форуме, какой давно уже не наблюдалось - практически со времен Гоуту Неубиваемого;).
Отредактировано uux (07.12.2007 01:08)
Неактивен