Forum.iFiction.Ru

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

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

Вы не зашли.

0    0    #1
30.04.2011 23:38

Pirate
Участник (+2)
Зарегистрирован: 30.04.2011
Сообщений: 26

описание комнаты и др вопросы от Pirate

Мануал я почитал кусками, вроде что-то понял. На форум ваш иногда заглядываю. Я так гляжу, нубские вопросы выливаются обычно в тему посвящённую не какому-то конкретному вопросу, а какому-то конкретному нубу. Я тоже такую тему себе хочу:)

Сразу скажу, что терпения и фантазии мне не хватает, зато я точно знаю, что хочу написать. Это- небольшие куски англоязычных квестов. Я хочу сделать из них фанские демки на русском.

проблемы две:

Код:

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)

Неактивен

0    0    #2
03.05.2011 06:30

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

меньше слов

Re: описание комнаты и др вопросы от Pirate

насколько я помню, нельзя переопределять свойства, представляющие собой функцию с выводом (двойными кавычками). Нужно изменить флаг/свойство, по которому будет произведен условный выбор в нужном свойстве. ldesc ли это, north или что-то еще.
Возможно дебагер не жалуется напрямую, но могут происходить совершенно непонятные вещи

Неактивен

0    0    #3
03.05.2011 09:29

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

меньше слов

Re: описание комнаты и др вопросы от Pirate

Вот фрагменты кода, которые могут быть интересны

Код:

Так одно направление перемещение приравнивается к другому
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);}

Уж и не помню почему так

Неактивен

Powered by PunBB
© copyright 2001–2024 iFiction.Ru