Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
Евгений Туголуков
Зарегистрирован: 23.09.2003 Сообщения: 5 Откуда: г.Екатеринбург
|
Добавлено: Пт Янв 16, 2004 2:00 pm Заголовок сообщения: Вопросы "чайников" и ответы "знатоков" |
|
|
[/b]Предлагаю создать FAQ-тему для дурацких ( и умных разумеется) вопросов новичков по RTADS и созданию игр. [b]
Первые вопросы задам сам (ибо новичок)
1. У меня в игре есть вода (fooditem). Как сделать, чтобы ее можно было пить, но не есть? Ведь drinkitem отсутствует?
2. Как сделать, чтобы радио, если его включить, выдавало несколько сообщений, по одному за ход, но не подряд, а с промежутком в 2-3 хода, а потом выдавало сообщение "радио молчит"?
С уважением, Корвин.[/list]
P.S. Почему в рубрике "материалы" "Руководство по RTADS" on-line не работают страницы приложений? _________________ Korwin |
|
Вернуться к началу |
|
 |
GrAnd Site Admin
Зарегистрирован: 04.02.2003 Сообщения: 299 Откуда: Россия, Москва
|
Добавлено: Пт Янв 16, 2004 3:11 pm Заголовок сообщения: |
|
|
"У меня в игре есть вода (fooditem). Как сделать, чтобы ее можно было пить, но не есть? "
obj: fooditem
verDoEat(actor) = "Это нельзя есть."
verDoDrink(actor) = {}
doDrink(actor)={"<<ZAG(actor,&sdesc)>> выпил<<iao(actor)>> <<self.vdesc>>"; self.moveInto(nil);}
;
"Почему в рубрике "материалы" "Руководство по RTADS" on-line не работают страницы приложений?"
Валентин Коптельцев ещё их не перевёл. Последние части он делает медленно, но обещал закончить, чему есть основания верить. |
|
Вернуться к началу |
|
 |
GrAnd Site Admin
Зарегистрирован: 04.02.2003 Сообщения: 299 Откуда: Россия, Москва
|
Добавлено: Сб Янв 17, 2004 11:19 am Заголовок сообщения: |
|
|
Радио:
radio: item
mes = ['Сообщ1' 'Сообщ2' 'Сообщ3' 'Сообщ4']
radiomsg =
{
local curmes;
if (rand (3)=1)
{
// Выбираем случайное сообщение
curmes := rand(length(mes));
// Выводим на экран сообщение
say(curmes);
// Удаляем из сиска
mes := mes - curmes;
}
} |
|
Вернуться к началу |
|
 |
Krol Главный флеймер
Зарегистрирован: 05.05.2003 Сообщения: 56 Откуда: Набережные Челны
|
Добавлено: Сб Янв 17, 2004 7:22 pm Заголовок сообщения: |
|
|
Гранд как всегда умный!!!  _________________ Нет войне! Даёшь ROCK'N'ROLL !!! |
|
Вернуться к началу |
|
 |
Евгений Туголуков
Зарегистрирован: 23.09.2003 Сообщения: 5 Откуда: г.Екатеринбург
|
Добавлено: Ср Янв 21, 2004 10:01 am Заголовок сообщения: |
|
|
Большое спасибо, GrAnd! _________________ Korwin |
|
Вернуться к началу |
|
 |
Korwin Гость
|
Добавлено: Ср Июн 20, 2007 4:20 pm Заголовок сообщения: |
|
|
Так. Нигде не могу найти нормально работающий пример типа:
инв: Весло, Нож, Веревка.
> Привязать нож к веслу
(Веревкой)
Вы получили самодельное копье.
Как это реализовать?
Как вариант годится и без учета веревки. >Прикрепить нож к веслу
(я знаю как проверить, чтобы веревка была в инвентаре ) |
|
Вернуться к началу |
|
 |
uux
Зарегистрирован: 18.03.2007 Сообщения: 25 Откуда: Москва
|
Добавлено: Пт Июн 22, 2007 10:31 pm Заголовок сообщения: |
|
|
Сделать распознаваемой фразу "привязать нож к палке веревкой" - задача выполнимая, но очень непростая. Обычно делают проще - проверяют наличие в близком доступе (или, что проще, в инвентаре игрока) веревки и в зависимости от этого формируют команду.
Вот пример (используем глагол attachVerb - определен в advr.t):
Код: |
Rope: thing
noun='веревка'
sdesc="веревка"
location=startroom
;
Knife: thing
noun='нож'
sdesc="нож"
location=startroom
verDoAttachTo(actor, iobj) = {if(not actor.isCarrying(self))
{"Сначала нож надо взять!";
}
else
{if(not actor.isCarrying(Rope))
{"Нечем привязывать нож.";
}
}
}
;
Pole: thing
noun='палка'
sdesc="палка"
location=startroom
verIoAttachTo(actor)={if(not actor.isCarrying(self))
{"Сначала палку надо взять!";
}
}
ioAttachTo(actor, dobj)={if(dobj<>Knife)
{"Ну, и на фига привязывать к палке <<dobj.rdesc>>?";
}
else
{"Ты привязываешь нож к палке. Получается копье.";
Pole.moveInto(nil);
Knife.moveInto(nil);
Rope.moveInto(nil);
Spear.moveInto(actor);
}
}
;
Spear: thing
noun='копье'
sdesc="копье"
; |
Для команды
> ПРИКРЕПИТЬ НОЖ К ПАЛКЕ
верификаторы будут вызываться в следующей последовательности:
Knife.verDoAttachTo(actor, iobj)
Pole.verIoAttachTo(actor)
Pole.ioAttachTo(actor, dobj)
Если нужно, чтобы распознавался глагол привязать, можно добавить его в синонимы для к attachVerb. Если надо, чтобы "прикрепить" и "привязать" не были синонимами, надо определить глагол для слова "привязать" примерно так:
Код: | TieVerb: deepverb
verb='привязать'
sdesc="привязать"
prepDefault = toPrep
ioAction(toPrep) = 'AttachTo'
; |
Соответственно, для фразы "привязать палку к ножу" верификаторы надо поменять объектами - ну, ты понял .
Будут непонятки по примеру - пиши. |
|
Вернуться к началу |
|
 |
GrAnd Site Admin
Зарегистрирован: 04.02.2003 Сообщения: 299 Откуда: Россия, Москва
|
Добавлено: Пт Июн 22, 2007 11:53 pm Заголовок сообщения: |
|
|
uux, Спасибо за пример!
Я уже помог Евгению по аське.
В принципе, я за пару часов могу написать хак, позволяющий вводить "привязать нож к палке веревкой". В результате он будет читаться как: "привязать веревку к ножу, привязать веревку к палке"
Но для того, чтобы сделать хак более универсальным, придется придумывать специальные флаги для глаголов. Не знаю, стоит ли того. |
|
Вернуться к началу |
|
 |
uux
Зарегистрирован: 18.03.2007 Сообщения: 25 Откуда: Москва
|
Добавлено: Сб Июн 23, 2007 2:14 am Заголовок сообщения: |
|
|
GrAnd писал(а): | Но для того, чтобы сделать хак более универсальным, придется придумывать специальные флаги для глаголов. Не знаю, стоит ли того. |
На данном этапе однозначно не стоит .
Кстати, наверное, можно сделать проще: определить предлог "веревкой" и глагол "привязать веревкой". Правда, это тоже сильно неуниверсально... |
|
Вернуться к началу |
|
 |
AlsoKorwin Гость
|
Добавлено: Сб Июн 23, 2007 7:05 pm Заголовок сообщения: |
|
|
uux писал(а): | GrAnd писал(а): | Но для того, чтобы сделать хак более универсальным, придется придумывать специальные флаги для глаголов. Не знаю, стоит ли того. |
На данном этапе однозначно не стоит .
Кстати, наверное, можно сделать проще: определить предлог "веревкой" и глагол "привязать веревкой". Правда, это тоже сильно неуниверсально... |
Насчет предлога - оригинальная идея (для меня).
uux, GrAnd - большое спасибо. Проблема решена. Мне кажется что этот пример неплохо было бы включить в документацию. |
|
Вернуться к началу |
|
 |
uux
Зарегистрирован: 18.03.2007 Сообщения: 25 Откуда: Москва
|
Добавлено: Вс Июн 24, 2007 10:49 pm Заголовок сообщения: |
|
|
Спасибо на добром слове. У меня в примере про глагол "привязать" ошибка, конечно. Имелось в виду
"Если надо, чтобы "прикрепить" и "привязать" не были синонимами, надо определить глагол для слова "привязать" примерно так: "
Код: | TieVerb: deepverb
verb='привязать'
sdesc="привязать"
prepDefault = toPrep
ioAction(toPrep) = 'TieTo'
; |
Первоначальный вариант (с ioAction(toPrep) = 'AttachTo') как раз сделает их синонимами. Понятно, что для нового глагола надо будет определять verIoTieTo и прочую лабуду . |
|
Вернуться к началу |
|
 |
beat_swamp
Зарегистрирован: 31.01.2006 Сообщения: 20
|
Добавлено: Пт Мар 07, 2008 2:18 pm Заголовок сообщения: |
|
|
новый вопрос "чайника":
есть:
Код: |
my_room : room
;
stul : chairItem
location = my_room
;
4el : Actor
location = stul
;
|
почему при команде "осмотреться" (находясь в комнате my_room) не выводится автоматом, что в комнате есть стул на котором сидит человек ??? |
|
Вернуться к началу |
|
 |
fireton
Зарегистрирован: 20.08.2005 Сообщения: 22 Откуда: оттуда
|
Добавлено: Вс Мар 09, 2008 8:06 pm Заголовок сообщения: |
|
|
beat_swamp, потому что chairItem является fixedItem, а их описания не выводятся при осмотре локаций. _________________ Тон |
|
Вернуться к началу |
|
 |
beat_swamp
Зарегистрирован: 31.01.2006 Сообщения: 20
|
Добавлено: Вс Мар 09, 2008 8:29 pm Заголовок сообщения: |
|
|
fireton писал(а): | beat_swamp, потому что chairItem является fixedItem, а их описания не выводятся при осмотре локаций. |
а как поправить дело?
неужто просто в лдеск описании локации писать "... так же тут стоит стул а на стуле сидит вася" ???!!! |
|
Вернуться к началу |
|
 |
uux
Зарегистрирован: 18.03.2007 Сообщения: 25 Откуда: Москва
|
Добавлено: Пн Мар 10, 2008 5:15 pm Заголовок сообщения: |
|
|
beat_swamp писал(а): | fireton писал(а): | beat_swamp, потому что chairItem является fixedItem, а их описания не выводятся при осмотре локаций. |
а как поправить дело?
неужто просто в лдеск описании локации писать "... так же тут стоит стул а на стуле сидит вася" ???!!! |
Можно и в ldesc прописать в конце (после проверки соответствующего условия):
Код: |
if((stul.location=my_room) and (4el.location=stul))
{"\bТакже тут стоит стул, а на стуле сидит Вася.";
}
|
А можно установить свойство isListed для стула и персонажа в true. Именно это свойство-флаг определяет, будет ли объект упоминаться в описании комнаты, или нет. |
|
Вернуться к началу |
|
 |
|