Forum.iFiction.Ru

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

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

Вы не зашли.

0    0    #1
05.12.2007 15:13

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

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

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

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

Неактивен

0    0    #2
05.12.2007 17:37

GrAndrey
папа RTADS и Бяка (+49, -2)
Откуда: Москва
Зарегистрирован: 15.09.2002
Сообщений: 1198
Вебсайт

меньше слов

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

Есть класс нумерованных предметов - numberedObject. Никогда не использовал, но судя по описанию, может подойти.
Указанный метод тоже может пройти, но только сам подумай - если они одинаковые, как их различает ГП?

Неактивен

0    0    #3
05.12.2007 23:14

GrAndrey
папа RTADS и Бяка (+49, -2)
Откуда: Москва
Зарегистрирован: 15.09.2002
Сообщений: 1198
Вебсайт

меньше слов

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

С нумерацией все понятно - лучше всего вводить в момент входа в локацию с пузырьком (вбить скрипт в функцию осмотра комнаты). Впрочем, дело вкуса.
А вот нумерация может появляться если у игрока в кармане есть маркер. Это даже можно сделать пазлом. А ещё, актер может отказываться брать пузырек, мотивируя риском ошибки. Тут очень много вариантов, которые могут сделать игру только интереснее!

Неактивен

0    0    #4
06.12.2007 00:46

GrAndrey
папа RTADS и Бяка (+49, -2)
Откуда: Москва
Зарегистрирован: 15.09.2002
Сообщений: 1198
Вебсайт

меньше слов

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

Пример манипуляций с лексемами и пару других фишек из Дримора.

Код:

class monster: Actor,living
...
death(killer)=               //  !!!!!!!!!!!!!!! DEATH !!!!!!!!!!!!!!!
{
// создаем объект класса "труп"
 local corp := new trup;
// список существительных
 local nnouns:=[];
// список прилагательных и пара переменных
 local adj:=[],z,i;

// вынос трупа на сцену
 corp.moveInto(self.location);
// уносим актера
 self.moveInto(nil);
//обозначаем кем был этот труп
 corp.monstr:=self;
// вес трупа зависит от макс хитов хозяина
 corp.weight:=self.mhp/4;
// сообщение о смерти в зависимости от персонажей, оружия и оверкила
 killer.curweapon.killmess(killer,self,self.hp*(-1));
// скока лута в актере
 z:=length(self.contents);
// перебрасываем лут в труп
 for(i:=1; i<=z;i++) self.contents[1].moveInto(corp);
// берем список имен погибшего
 nnouns:=getwords(self, &noun);
// присваиваем их свежему трупу
 for (i:=1;i<=length(nnouns);i++) addword(corp,&noun,nnouns[i]) ;
// собираем список прилагательных
 adj:=getwords(self, &adjective);
// их тоже приписываем тушке
 for (i:=1;i<=length(adj);i++) addword(corp,&adjective,adj[i]) ;
// тельце будет отзывается на "он, она, оно" по обстоятельствам
// ударить его -> Злодей умер -> ударить его -> Он уже мертв.
 setit(corp);
}
;

class trup: surface        //!!!!!!!!!!!!!!!!!Trup!!!!!!!!!!!!!!!!
...
monstr= nil
sdesc ="труп <<monstr.rdesc>>"
...
pdesc ="трупе <<monstr.rdesc>>"
noun ='трупа' 'трупу' 'трупу#d' 'труп' 'трупом' 'трупом#t' 'трупе'
      'тело' 'тела' 'телу' 'телу#d' 'телом' 'телом#t' 'теле' 
adjective='трупа' 'трупа#r'  
isHim = true
;

По аналогии с addword() работает и delword()

Неактивен

0    0    #5
06.12.2007 14:24

GrAndrey
папа RTADS и Бяка (+49, -2)
Откуда: Москва
Зарегистрирован: 15.09.2002
Сообщений: 1198
Вебсайт

меньше слов

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

uux написал:

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

Совершенно верно. ТАДС по умолчанию ожидает увидеть определяемое существительное после прилагательного, и делает исключение лишь при наличии предлога 'of'.  В русском языке на его месте могут быть самые разные предлоги, что задается в specialWords строкой  'of'='для'='против'='типа'='из'='под'='от'='на'='в'='с'. Но предлога может не быть, так как он будет "заложен" в родительном падеже определения.  Для этих случаев создается дополнительная лексема прилагательного с меткой #r. Предпарсер переделывает такие конструкции к виду "существительное для прилагательное" К сожалению, парсер все предлоги приводит к одному коду, и может вернуть только 'of'. Уж коль пошла такая пьянка, то можно сохранть предлоги для дальнейшего использования, но у меня уже голова идет кругом от последних программерских изысков smile

Неактивен

Powered by PunBB
© copyright 2001–2024 iFiction.Ru