Forum.iFiction.Ru

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

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

Вы не зашли.

   #1
27.11.2008 10:54

balakshin
Участник
Откуда: Санкт-Петербург
Зарегистрирован: 17.12.2007
Сообщений: 5
Вебсайт

Проблема с reachable объектом

Ситуация следующая:
есть диван (chairitem), рядом с ним стоит столик (fixeditem, surface), на столике лежит газета (item, readable).
Сидя на диване, при попытке взять (именно взять) газету со столика выдает фразу - "Ты не дост%ать% газета с диванчика." и газету не удается взять. Если газета уже есть с собой, то, сидя на диване, можно успешно положить ее на столик.

Столик есть в списке reachable для дивана. Не могу понять почему нельзя именно взять газету sad

Приведу сразу кусок своего кода, чтобы не быть голословным:

Код:

stolik: fixeditem, surface // журнальный столик [декорация, поверхность]
    location = room2
    sdesc = "журнальный столик"
    rdesc = "журнального столика"
    ddesc = "журнальному столику"
    vdesc = "журнальный столик"
    tdesc = "журнальным столиком"
    pdesc = "журнальном столике"
    adjective = 'журнальный' 'журнальный#t' 'журнального' 'журнальному' 'журнальному#d' 'журнальным' 'журнальным#t' 'журнальном'
    noun = 'столик' 'столика' 'столику' 'столиком' 'столике' 'столику#d' 'столиком#t'
    ldesc = "\tЖурнальный столик"
    isHim = true
;

gazyeta: item, readable // газета [предмет, читаемый предмет]
    location = stolik
    sdesc = "газета"
    rdesc = "газеты"
    ddesc = "газете"
    vdesc = "газету"
    tdesc = "газетой"
    pdesc = "газете"
    noun = 'газета' 'газеты' 'газете' 'газету' 'газетой' 'газетою' 'газете#d' 'газетой#t' 'газетою#t'
    ldesc = "\t\"Вестник Н-ска\". Единственная пресса в этом городе. Издается в ближайшем райцентре. "
    readdesc = "\tНикаких особенных статей нет. Все как обычно: у Марьванны увели корову, драка на дискотеке и т.п. Единственное более-менее интересное сообщение находится в разделе \"Объявления\" - \"Куплю антиквариат\". В контактах указан адрес этого дома."
    isHer = true
    bulk = 2
;

divanchik: chairitem //диван [декорация, объект стул]
    location = room2
    sdesc = "диванчик"
    rdesc = "диванчика"
    ddesc = "диванчику"
    vdesc = "диванчик"
    tdesc = "диванчиком"
    pdesc = "диванчике"
    noun = 'диванчик' 'диванчика' 'диванчику' 'диванчиком' 'диванчике' 'диванчику#d' 'диванчиком#t'
           'диван' 'дивана' 'дивану' 'диваном' 'диване' 'дивану#d' 'диваном#t'
    ldesc = "\tКлассический образчик кованой мебели - на хитро выкованных ножках, с деревянным сиденьем и ажурной спинкой."
    isHim = true
    reachable = [pyepyelnitsa, stolik]
;

Неактивен

   #2
27.11.2008 19:35

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

меньше слов

Re: Проблема с reachable объектом

1. Преобразовал код к виду с использованием генератора.

2. Не забывайте дабавлять в список доступного и сам предмет (выделено голубым)

3. Нужно прописать canReachContents = true, потому что:

/*
     *   For compatibility with past versions of adv.t, we do not allow
     *   the player to reach objects that are inside objects that are in
     *   the reachable list.  This behavior probably doesn't make a lot of
     *   sense in most cases, and isn't consistent with other types of
     *   nested rooms, so many games will probably want to modify
     *   chairItem and set canReachContents = true.  However, since it
     *   worked this way in the past, the default is still nil, so that
     *   any games that (intentionally or otherwise) depended on this
     *   behavior will continue to work the same way they used to. 
     */
    canReachContents = nil

Пожалуй, избавлюсь от этой тяжелой наследственности.


Вот итоговый код:

stolik: fixeditem, surface // журнальный столик [декорация, поверхность]
    location = room2
    desc = 'журнальный/1am столик/1m'
    noun = 'стол/1m'
    ldesc = "\tЖурнальный столик"
    isHim = true
;

gazyeta: item, readable // газета [предмет, читаемый предмет]
    location = stolik
    desc = 'газета/1f'
    ldesc = "\t\"Вестник Н-ска\". Единственная пресса в этом городе. Издается в ближайшем райцентре. "
    readdesc = "\tНикаких особенных статей нет. Все как обычно: у Марьванны увели корову, драка на дискотеке и т.п. Единственное более-менее интересное сообщение находится в разделе \"Объявления\" - \"Куплю антиквариат\". В контактах указан адрес этого дома."
    isHer = true
    bulk = 2
;

divanchik: chairitem //диван [декорация, объект стул]
    location = room2
    desc = 'диванчик/1m'
    noun = 'диван/1m'
    ldesc = "\tКлассический образчик кованой мебели - на хитро выкованных ножках, с деревянным сиденьем и ажурной спинкой."
    isHim = true
    reachable = [pyepyelnitsa stolik divanchik]
    canReachContents = true
;

Неактивен

   #3
27.11.2008 20:20

balakshin
Участник
Откуда: Санкт-Петербург
Зарегистрирован: 17.12.2007
Сообщений: 5
Вебсайт

Re: Проблема с reachable объектом

О, большое спасибо за оперативную помощь smile
Генератор я правда пока не стал подключать. Лучше сначала разобраться с основами.

По поводу canReachContents в мануале вроде нет упоминания, по крайней мере я не нашел. Поэтому и встрял smile

Неактивен

Powered by PunBB
© copyright 2001–2018 iFiction.Ru