eyes: fixeditem, floatingItem noun = 'глаза' 'глаз' 'глазам' 'глазами' 'глазах' 'глазою' 'глазам#d' 'глазами#t' 'глазою#t' sdesc = "глаза" rdesc = "глаз" ddesc = "глазам" vdesc = "глаза" tdesc = "глазами" pdesc = "глазах" ldesc = "Поблизости нет зеркала" ;
Я проверял дебаггером, объект eyes
присутствует в списке global.floatingList
, наряду с Me
и theFloor
. Но те объекты откликаются, а на команду "осм глаза" я получаю "Я не вижу здесь объект "глаза".
Я так понимаю, ошибку возвращает сам интерпретатор TADS, как это исправить я вообще не понимаю...
Помогите!
Неактивен
Это нужно спрашивать у Майка Робертса. Вот как он сам это описал.
/* * floatingItem: object * * This class doesn't do anything apart from mark an object as having a * variable location property. It is necessary to mark all such * items by making them a member of this class, so that the objects are * added to global.floatingList, which is necessary so that floating * objects are included in validDoList and validIoList values (see * the deepverb class for a description of these methods). */ class floatingItem: object ;
Почему он сразу не добавил скрипт с локацией, могу только догадываться. Например, кому может быть нужно, чтобы объект был не там где ГП, а там где его нет.
Неактивен
ИМХО, то, что вы ожидаете от floatingItem, следует прописать в новый класс и назвать его omnipresent.
floatingItem лучше оставить как есть. Вот что может случиться, если изменить код указанным fireton'ом образом : главного персонажа Янека Изельдорфа из вступления мы меняем на Ивана Дубинина, которого продолжают преследовать глаза и уши Янека. После чего автор приходит на форум и спрашивает в чем причина этого незадокументированного в мануале ужастика.
Лучше недописать и оставить автору пространство для маневра. Чаще всего предмет присутствует не везде, а только в определенных местах, что и прописывается в методе location.
Кстати, кто знает, что выдает parserGetMe(), когда команду выполняет NPC?
Неактивен
fireton написал:
Например, мне так и не удалось модифицировать theFloor таким образом, чтобы внутри помещений мне писали "ты сидишь на полу", а на открытых пространствах - "ты сидишь на земле"...
Делаешь
class openroom: room isopen=true ; modify theFloor location = { if (!parserGetMe().location.isopen) { if (parserGetMe().location = self && ) return self.sitloc; else return parserGetMe().location; } else return nil; } ;
И прописываешь theGround, аналогичный земле, только название с сообщениями другие, а "if (!parserGetMe().location.isopen)" без восклицательного знака.
Неактивен