1) Каким образом можно "осмотреть себя"?
2) Как всучить глав.герою предмет в начале игры (т.е. чтобы игра начиналась уже с этим предметом в инвентаре)?
2.1) Как вообще что-либо вручать герою?
3) Как на RTADS'е написать что-то вроде
если (БатареяЗаряжена=ложь, то сказать "эй, заряди батарею!") иначе (сказать "батарея уже заряжена")
4) Как в одной локации осуществить следующее:
взять книгу со стола -стол слишком далеко подойти к столу -ты стоишь возле стола взять книгу -ты взял книгу
Или для этого нужно создавать несколько локаций?
5) Как избавиться от
ты стоишь в северной комнате ты видишь на столе книгу
хотя в
someroom:room ldesc="ты стоишь в северной комнате";
Заранее немерено благодарен.
Неактивен
Огромное спасибо!
Я сделал описание себя через
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 ;
зарядить батарею
-я не знаю как зарядить батарею
(я полагаю) нужно ввести еще само событие заряжания (такое вообще существует?), а вот как это сделать?
Неактивен
Мануал огромен и я пока не разобрался что где лежит.
Однако,
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 ;
>о батарею Твоя аккумуляторная батарея. Кажется, ее требуется зарядить. >зарядить батарею Батарея теперь заряжена. >о батарею Твоя аккумуляторная батарея. Кажется, ее требуется зарядить. >зарядить батарею Батарея теперь заряжена. >
Неактивен
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)
Неактивен
Вчера, когда я ставил фигурную скобку после ldesc=, вылезала та же ошибка. Сегодня работает. Мне страшно.
Неактивен
Uniform: item location = Chest ldesc = "Твоя униформа" doWear (actor)={ if (Uniform.location=Me) {"Ты одеваешь свою униформу";} else {"Сначало нужно взять униформу с полки";} } ;
взять униформу -взято надеть униформу -ты не можешь надеть униформу!
............................. вашими молитвами скоро первая локация будет готова!
Страшно, когда ты с системой один бьешься, без помощи.
Panic! Panic! Panic!
Отредактировано IO (09.01.2009 21:11)
Неактивен
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)
Неактивен
То, что я неправильно и с ошибками использую инструментарий, я думаю это нормально, поскольку сижу в TADS три дня.
Я ковырял advr.t и мануал по clothingItem и doWear(), но там не написано почему TADS не "видит" униформу. Поэтому я обращаюсь за помощью сюда.
P.S. У меня есть небольшой опыт программирования на С++ и с основами ООП я знаком.
Неактивен
Мозговой глюк - изначально я откуда то взял, что ":=" это неравно (видимо это похоже на "!=" ).
Поковырял поглубже адвр.т, теперь все выглядит так:
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 { " Пусто."; } } ;
Однако,
>открыть шкафчик Ты открываешь шкафчик. На полке лежит твоя униформа. >о униформу Я не вижу здесь объект "униформу". >взять униформу Я не вижу здесь объект "униформу". >одеть униформу Я не вижу здесь объект "униформу".
Действительно, с разметкой читать стало гораздо легче!
Неактивен
Функцию удалил. Заработало. (нервно смеюсь).
Неактивен
Необходимо:
игрок может выйти из комнаты только если одет в униформу, несет с собой рюкзак и батарейка заряжена. При чем если не соблюдено какое-то из требований, то текст разный для каждого.
У меня получилось что-то невразумительное (и естественно не рабочее):
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)
Неактивен
35 огромных спасибо всем!
Пишу в поте лица!
Неактивен