Мануал я почитал кусками, вроде что-то понял. На форум ваш иногда заглядываю. Я так гляжу, нубские вопросы выливаются обычно в тему посвящённую не какому-то конкретному вопросу, а какому-то конкретному нубу. Я тоже такую тему себе хочу:)
Сразу скажу, что терпения и фантазии мне не хватает, зато я точно знаю, что хочу написать. Это- небольшие куски англоязычных квестов. Я хочу сделать из них фанские демки на русском.
проблемы две:
Plateau_3: room sdesc = "Плато" ldesc = { "Плоская вершина круглого каменного образования около тысячи метров в диаметре. Отсюда вы можете обозревать поверхность планеты на многие километры во все стороны, но везде всё та же знакомая картина. Пыльная равнина, тридцатью метрами ниже, простирается во все стороны. Ваш корабль виден прямо на юг отсюда. Край скалы продолжается на восток и на запад."; if (boulder.location = Plateau_3) { " \b Вы заметили здоровенный валун к югу. Он около трёх метров в диаметре и, похоже, расположен на самом краешке скалы."; } } north = { "Туда идти незачем."; return nil; } nw = { "Туда идти незачем."; return nil; } ne = { "Туда идти незачем."; return nil; } west = Plateau_2 east = { "Вы прошли несколько сотен метров вдоль края плато, ничего особенного не обнаружили, и вернулись."; return nil; } // s, sw or se - impossible // in, out, up or down - impossible ;
boulder: item location= Plateau_3 desc = 'валун/м' noun = 'валун/м' adjective= 'большой/м' 'валуна' 'валуна#r' ldesc= "Большой валун." isHer = true verDoPush(actor) = { } doPush(actor) = { "Вы налегли на валун, и толкнули изо всех сил. Камень пришёл в движение. Перевалившись через край, он медленно покатился, набирая скорость. Несколькими метрами ниже он задел другой валун, который покатился, сбивая всё на своём пути. Цепная реакция продолжалась до тех пор, пока значительная часть навеса не рухнула вниз, в пыль у основания скалы. Пыль огромным облаком поднялась в вакууме, и начала медленно оседать."; self.moveInto(nil); BelowCave.ldesc := 'другое, изменившееся описание'; BelowCave.north := startroom; } ;
1.
Забираюсь я на Plateau_3, и вижу описание комнаты, описание валуна(которое я предусмотрел в описании комнаты), и фразу: "А видишь здесь валун." И эта фраза- лишняя.
2.
Толкаю оттуда валун, и всё бы хорошо, но когда я иду к BelowCave, оказывается, что ldesc не то, чтобы изменилось, а вместо него выводится пустой текст. Это из-за того, что я поставил одинарные кавычки? С двойными кавычками новое описание BelowCave выводится сразу после сталкивания валуна, что мне совсем не надо.
Пробовал я убрать эту строку из doPush, и сделать два описания ldesc внутри объявления BelowCave:room, через if(boulder.location=Plateau_3){}else{}. Не компилится. Грит, каких-то символов ему не хватает.
Отредактировано Pirate (30.04.2011 23:39)
Неактивен
насколько я помню, нельзя переопределять свойства, представляющие собой функцию с выводом (двойными кавычками). Нужно изменить флаг/свойство, по которому будет произведен условный выбор в нужном свойстве. ldesc ли это, north или что-то еще.
Возможно дебагер не жалуется напрямую, но могут происходить совершенно непонятные вещи
Неактивен
Вот фрагменты кода, которые могут быть интересны
Так одно направление перемещение приравнивается к другому up={Me.travelTo(north);} Также есть функции enterRoom(actor) и leaveRoom( actor ) Так описание меняется флагами: ldesc = { if (gobliny.naMost) "Гоблины спешно переходят мост. "; else ... Можно также как нибудь так: в определении объекта oneobj ldesc = "<<sldesc>>"; в другом месте oneobj.sldesc:='lorem ipsum'; Так я делал возможность войти в объект "дыра" doEnter(actor) = {actor.location.in; actor.travelTo(actor.location.in);} Уж и не помню почему так
Неактивен