Forum.iFiction.Ru

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

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

Вы не зашли.

0    0    #1
07.01.2009 21:03

IO
Участник
Зарегистрирован: 07.01.2009
Сообщений: 15

Новичок. Несколько вопросв.

1) Каким образом можно "осмотреть себя"?
2) Как всучить глав.герою предмет в начале игры (т.е. чтобы игра начиналась уже с этим предметом в инвентаре)?
2.1) Как вообще что-либо вручать герою?
3) Как на RTADS'е написать что-то вроде

Код:

если (БатареяЗаряжена=ложь, то сказать "эй, заряди батарею!")
иначе
(сказать "батарея уже заряжена")

4) Как в одной локации осуществить следующее:

Код:

взять книгу со стола
-стол слишком далеко
подойти к столу
-ты стоишь возле стола
взять книгу
-ты взял книгу

Или для этого нужно создавать несколько локаций?
5) Как избавиться от

Код:

ты стоишь в северной комнате
ты видишь на столе книгу

хотя в

Код:

someroom:room
ldesc="ты стоишь в северной комнате";

Заранее немерено благодарен.

Неактивен

0    0    #2
08.01.2009 10:56

IO
Участник
Зарегистрирован: 07.01.2009
Сообщений: 15

Re: Новичок. Несколько вопросв.

Огромное спасибо!

Я сделал описание себя через

modify Me
ldesc = "Ты - Горбунков Семен Семенович"
;

Другая проблема: я ввожу новый глагол

Код:

ChargeVerb: deepverb
    vorp="Что "
    sdesc="зарядить"
    verb='зарядить' 'подзарядить' 'наполнить'
doAction = 'Charge'
;

и

Код:

Battery: item
    sdesc = "батарея"
    rdesc = "батареи"
    ddesc = "батарее"
    vdesc = "батарею"
    tdesc = "батареей"
    pdesc = "батарее"
    noun = 'батарея' 'батареи' 'батарее' 'батарею' 'батареей' 'батарее#d' 'батареей#t'
    location=Me
    ldesc={"Твоя аккумуляторная батарея.\n ";
            if(not self.IsCharge)
              {"Кажется, ее требуется зарядить.";
              }
            else
              {"Похоже, она полностью заряжена.";
              }
         }
    IsCharge=nil 
    isHim = nil
;

зарядить батарею
-я не знаю как зарядить батарею

(я полагаю) нужно ввести еще само событие заряжания (такое вообще существует?), а вот как это сделать?

Неактивен

0    0    #3
08.01.2009 11:30

IO
Участник
Зарегистрирован: 07.01.2009
Сообщений: 15

Re: Новичок. Несколько вопросв.

Мануал огромен и я пока не разобрался что где лежит.
Однако,

Код:

Battery: item
    location=Me
    sdesc = "батарея"
    rdesc = "батареи"
    ddesc = "батарее"
    vdesc = "батарею"
    tdesc = "батареей"
    pdesc = "батарее"
    noun = 'батарея' 'батареи' 'батарее' 'батарею' 'батареей' 'батарее#d' 'батареей#t'
    
    verDoCharge(actor) = {
            if (self.IsCharge)
            "Она уже заряжена.";
            }
    doCharge(actor) = {
            "Батарея теперь заряжена.";
            self.IsCharge = true; 
            }
    
    ldesc={"Твоя аккумуляторная батарея, она обеспечивает твою жизнедеятельность. Ешь хорошо, железяка!\n ";
            if(not self.IsCharge)
              {"Кажется, ее требуется зарядить.";
              }
            else
              {"Похоже, она полностью заряжена.";
              }
         }
    IsCharge=nil 
    isHim = nil
;

Код:

>о батарею
Твоя аккумуляторная батарея.
Кажется, ее требуется зарядить. 

>зарядить батарею
Батарея теперь заряжена. 

>о батарею
Твоя аккумуляторная батарея.
Кажется, ее требуется зарядить. 

>зарядить батарею
Батарея теперь заряжена. 

>

Неактивен

0    0    #4
08.01.2009 21:46

IO
Участник
Зарегистрирован: 07.01.2009
Сообщений: 15

Re: Новичок. Несколько вопросв.

Код:

someitem:item /* это индикатор заряда батрей*/
ldesc={"Заряд батарей - ";  
       
if(Battery.IsCharge)
{"100%\n";} 

else
{"17%\n";}

}
;

Работает.
Но когда я делаю вот так:

Код:

someitem:item /* это индикатор заряда батрей*/
ldesc="<b>строка 1</b>\n
строка 2\n
строка 3\n"
{"Заряд батарей - ";   
      
if(Battery.IsCharge)
{"100%\n";} 

else
{"17%\n";}

}
;

То:

Код:

error TADS-301: expected a symbol

Мозги отказываются это понимать.


P.S. Благодарю за совет, от этой затеи с многими-локацями-в-одной отказался.

Отредактировано IO (08.01.2009 21:49)

Неактивен

0    0    #5
09.01.2009 09:57

IO
Участник
Зарегистрирован: 07.01.2009
Сообщений: 15

Re: Новичок. Несколько вопросв.

Вчера, когда я ставил фигурную скобку после ldesc=, вылезала та же ошибка. Сегодня работает. Мне страшно.

Неактивен

0    0    #6
09.01.2009 21:10

IO
Участник
Зарегистрирован: 07.01.2009
Сообщений: 15

Re: Новичок. Несколько вопросв.

Код:

Uniform: item
location = Chest
ldesc = "Твоя униформа"
doWear (actor)={
 if (Uniform.location=Me)
{"Ты одеваешь свою униформу";}
else
{"Сначало нужно взять униформу с полки";}
}
;

Код:

взять униформу
-взято
надеть униформу
-ты не можешь надеть униформу!

............................. вашими молитвами скоро первая локация будет готова!

Страшно, когда ты с системой один бьешься, без помощи.

Panic! Panic! Panic! yikes

Отредактировано IO (09.01.2009 21:11)

Неактивен

0    0    #7
10.01.2009 14:34

IO
Участник
Зарегистрирован: 07.01.2009
Сообщений: 15

Re: Новичок. Несколько вопросв.

Код:

Chest : qcontainer, fixeditem, openable
    isopen=nil
    iscontainer = true
    location = startroom
    sdesc = "железный шкафчик"
    rdesc = "железного шкафчика"
    ddesc = "железному шкафчику"
    vdesc = "железный шкафчик"
    tdesc = "железным шкафчиком"
    pdesc = "железном шкафчике"
    adjective = 'железный' 'железный#t' 'железного' 'железному' 'железному#d' 'железным' 'железным#t' 'железном'
    noun = 'шкафчик' 'шкафчика' 'шкафчику' 'шкафчиком' 'шкафчике' 'шкафчику#d' 'шкафчиком#t'
    ldesc = "Железный шкафчик, в нем хранятся твои невеликие пожитки."
    isHim = true
    doOpen(actor)={
        if(Uniform.location:=Me){"Ты видишь здесь свою униформу.";}}
;

Код:

Uniform : clothingItem
    isworn = nil
    location = Chest
    sdesc = "униформа"
    rdesc = "униформы"
    ddesc = "униформе"
    vdesc = "униформу"
    tdesc = "униформой"
    pdesc = "униформе"
    noun = 'униформа' 'униформы' 'униформе' 'униформу' 'униформой' 'униформою' 'униформе#d' 'униформой#t' 'униформою#t'
    ldesc = {"Твоя униформа курьера. Из-за того, что на ней не предусмотрены карманы, тебе приходится везде таскать с собой рюкзак.";
        if(Bag.location:=Me){" Кстати, где он?";}}
    doWear(actor)={
        if(Uniform.location=Me){"Ты одеваешь свою униформу";}
        else{"Сначала ее нужно достать из шкафчика";}}
    isHim = nil
;

Код:

>открыть шкафчик
Ты видишь здесь свою униформу. 

>взять униформу
Я не вижу здесь объект "униформу". 

>одеть униформу
Я не вижу здесь объект "униформу".

Почему так? В упор не могу найти ошибку.

Отредактировано IO (10.01.2009 14:35)

Неактивен

0    0    #8
10.01.2009 18:36

IO
Участник
Зарегистрирован: 07.01.2009
Сообщений: 15

Re: Новичок. Несколько вопросв.

То, что я неправильно и с ошибками использую инструментарий, я думаю это нормально, поскольку сижу в TADS три дня.
Я ковырял advr.t и мануал по clothingItem и doWear(), но там не написано почему TADS не "видит" униформу. Поэтому я обращаюсь за помощью сюда.

P.S. У меня есть небольшой опыт программирования на С++ и с основами ООП я знаком.

Неактивен

0    0    #9
10.01.2009 21:00

IO
Участник
Зарегистрирован: 07.01.2009
Сообщений: 15

Re: Новичок. Несколько вопросв.

Мозговой глюк - изначально я откуда то взял, что ":=" это неравно (видимо это похоже на "!=" lol).

Поковырял поглубже адвр.т, теперь все выглядит так:

Код:

Uniform : item
    location = Chest
/*тут все тоже самое*/
    ldesc = 
    {
        "Твоя униформа. Из-за того, что на ней не предусмотрены карманы, тебе приходится везде таскать с собой рюкзак.";
        if(Bag.location != Me)
        {
            " Кстати, где он?";
        }
    }
    isHim =nil
;

Код:

Chest : container, fixeditem, openable
    isopen = nil
    iscontainer = true
    location = startroom
/*тут все тоже самое*/
    ldesc = "Железный шкафчик, в нем хранятся твои невеликие пожитки."
    isHim = true
    doOpen(actor) =
    {
        "Ты открываешь шкафчик.";
        if(Uniform.location = Chest)
        {
            " На полке лежит твоя униформа.";
        }
        else 
        {
            " Пусто.";
        }
    }
;

Однако,

Код:

>открыть шкафчик
Ты открываешь шкафчик. На полке лежит твоя униформа. 

>о униформу
Я не вижу здесь объект "униформу". 

>взять униформу
Я не вижу здесь объект "униформу". 

>одеть униформу
Я не вижу здесь объект "униформу".

Действительно, с разметкой читать стало гораздо легче!

Неактивен

0    0    #10
11.01.2009 09:38

IO
Участник
Зарегистрирован: 07.01.2009
Сообщений: 15

Re: Новичок. Несколько вопросв.

Функцию удалил. Заработало. (нервно смеюсь).

Неактивен

0    0    #11
11.01.2009 18:06

IO
Участник
Зарегистрирован: 07.01.2009
Сообщений: 15

Re: Новичок. Несколько вопросв.

Необходимо:
игрок может выйти из комнаты только если одет в униформу, несет с собой рюкзак и батарейка заряжена. При чем если не соблюдено какое-то из требований, то текст разный для каждого.

У меня получилось что-то невразумительное (и естественно не рабочее):

Код:

CellDoor : lockableDoorway
    locked = true
    closed = true
    location = startroom
    doOpen(actor) = "красивый текст''

    if (Bag.location != Me)
    {
    "текст";
    CellDoor.setIslocked(true)
    else
    CellDoor.setIslocked(nil)
    }

    if (Uniform.IsWear = nil) 
    {
    "текст";
    CellDoor.setIslocked(true)
    else
    CellDoor.setIslocked(nil)
    }

    if (Battery.IsCharge = nil)
    {
    "текст";
    CellDoor.setIslocked(true)
    else
    CellDoor.setIslocked(nil)
    }
    ldesc = "красивый текст"
;

Отредактировано IO (11.01.2009 18:07)

Неактивен

0    0    #12
14.01.2009 21:27

IO
Участник
Зарегистрирован: 07.01.2009
Сообщений: 15

Re: Новичок. Несколько вопросв.

35 огромных спасибо всем!
Пишу в поте лица!

Неактивен

Powered by PunBB
© copyright 2001–2024 iFiction.Ru