Forum.iFiction.Ru

iFiction.Ru · ifHub · FAQ · IFWiki · QSP · URQ · INSTEAD · AXMA

форум об interactive fiction, текстовых приключенческих играх и всём таком...

Вы не зашли.

0    0    #1
05.12.2007 15:13

goraph
Участник (+650, -225)
Зарегистрирован: 16.04.2007
Сообщений: 531

Основная добродетель гражданина есть недоверие.

Два одинаковый предмета

Хм, столкнулся с проблемой. У протагониста уже есть предмет, пусть "пузырек с ядом". Исследуя отдаленные районы квеста он находит второй точно такой же "пузырек с ядом". Предметы по идее абсолютно идентичны (массовое производство приводит к этому), более того это контейнеры, и их содержимое отличается (в одном из пузырьков на самом деле простая вода), однако об этом нельзя узнать, если не попробовать (а умный протагонист не станет пить из пузырька с ядом, чтоб не почувствовать легкого недомогания).
Собственно есть ли выход из ситуации:
   Вы имеете в виду "пузырек с ядом" или "пузырек с ядом"?
Кроме как поменять сценарий? smile
Самое страшное - таких предметов на самом деле на два, а четыре smile

Неактивен

0    0    #2
05.12.2007 21:31

uux
Участник (+887, -80)
Откуда: Москва
Зарегистрирован: 02.12.2006
Сообщений: 1625

Re: Два одинаковый предмета

- VampirE - написал:

PS Что за многоточия в аргументах функции? Это что-то вроде необязательных параметров или как?

Да, это именно они и есть.

Неактивен

0    0    #3
06.12.2007 05:14

uux
Участник (+887, -80)
Откуда: Москва
Зарегистрирован: 02.12.2006
Сообщений: 1625

Re: Два одинаковый предмета

Hind написал:

Меня сейчас интересует, как изменить свойство adjective... Что оно вообще такое? Ему ничего не присваивается, оно только задается при создании объекта...

adjective - это лексическое свойство-прилагательные, соответственно. Проще говоря, оно определяет набор прилагательных (или существительных-определительных), с помощью которых игрок может обращаться к объекту. Для изменения лексических свойств (добавления/удаления) используются функции addword/delword. Далее см. в мануале (в "Справочнике по языку программирования" или, по-моему, где-то есть в главах про парсер - что-то вроде "Динамический словарный запас").

Отредактировано uux (06.12.2007 06:10)

Неактивен

0    0    #4
06.12.2007 06:08

uux
Участник (+887, -80)
Откуда: Москва
Зарегистрирован: 02.12.2006
Сообщений: 1625

Re: Два одинаковый предмета

- VampirE - написал:

Ну что? Кто-то знает как избежать смены предлога на "of"? Когда Гранд писал о "некоторых экзотических случаях" он это имел ввиду? wink

Есть идея (правда, без кода, код предоставляю написать ГрАнду, так как оптимизация системных библиотек - его епархия): в parseDisambig перед выводом запроса просматривать переменную str на предмет вхождения в нее подстроки ' of ' и безжалостно заменять оную на пробел. На мой взгляд, единственная проблема, которая может возникнуть  - это случай, когда в русскоязычной игре активно используются англоязычные словосочетания, но уж это-то совершенно точно экзотика. Других побочных эффектов придумать не могу. Может, ГрАнд меня поправит.

Неактивен

0    0    #5
06.12.2007 06:14

uux
Участник (+887, -80)
Откуда: Москва
Зарегистрирован: 02.12.2006
Сообщений: 1625

Re: Два одинаковый предмета

- VampirE - написал:

А вот еще пример: игрок встречает какого-то персонажа. Так как его имени он не знает, то может обращаться к нему как "человек" и т.д. А вот если персонаж узнает имя собеседника, возможно ли потом изменять значение переменных с падежами vdesc, pdesc и т.д. на имя персонажа?

ГрАндовский пример в принципе дает ответ на этот вопрос, но вот еще одна прямая подсказка: vdesc, pdesc и т. д. - это не переменные, а методы. Соответственно, их можно оформить в виде кусков кода в фигурных скобках и включить туда условные операторы. До остального, думаю, догадаешься сам;).

Неактивен

0    0    #6
06.12.2007 13:37

uux
Участник (+887, -80)
Откуда: Москва
Зарегистрирован: 02.12.2006
Сообщений: 1625

Re: Два одинаковый предмета

- VampirE - написал:

Есть идея (правда, без кода, код предоставляю написать ГрАнду, так как оптимизация системных библиотек - его епархия): в parseDisambig перед выводом запроса просматривать переменную str на предмет вхождения в нее подстроки ' of ' и безжалостно заменять оную на пробел.

Это-то понятно. Но будет не очень красиво смотреться. По смылсу там все равно должен будет стоять какой-то предлог.

В случае с of это не так.

Эту конструкцию ГрАнд специально придумал для случаев, когда определяющее существительное в родительном падеже следует за определяемым (конструкции вида "дверь гаража", которая будет заменена на "дверь of гаража"). Поэтому тут-то как раз никаких предлогов (с точки зрения русского человека, а не TADS;) не требуется. Больше такое представление, насколько я понимаю, нигде не используется.

To GrAnd: Андрей, поправь меня, если я ошибаюсь.

Неактивен

0    0    #7
06.12.2007 13:39

uux
Участник (+887, -80)
Откуда: Москва
Зарегистрирован: 02.12.2006
Сообщений: 1625

Re: Два одинаковый предмета

AlsoKorwin написал:

1. А если это будут  зеленый, синий, лиловый, грязный, пузырек с ядом - это повредит сюжету? Они действительно долждны быть совершенно одинаковыми?

Я думаю - да, иначе Гор не спрашивал бы;).

Неактивен

0    0    #8
07.12.2007 01:07

uux
Участник (+887, -80)
Откуда: Москва
Зарегистрирован: 02.12.2006
Сообщений: 1625

Re: Два одинаковый предмета

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 написал:

но у меня уже голова идет кругом от последних программерских изысков smile

Да уж, активность на нашем форуме, какой давно уже не наблюдалось - практически со времен Гоуту Неубиваемого;).

Отредактировано uux (07.12.2007 01:08)

Неактивен

Powered by PunBB
© copyright 2001–2026 iFiction.Ru