Forum.iFiction.Ru

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

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

Вы не зашли.

0    0    #1
06.02.2009 21:15

noname
Участник (+36, -9)
Зарегистрирован: 04.04.2008
Сообщений: 729

noname

Спрашивайте, - отвечаем!

ОК!

ещё вопрос насчёт этих классов-категорий:

каждый объект игры(от переменных до локаций) принадлежит ровно одному классу, и относится не более чем  ровно к одной категории?

Отредактировано noname (06.02.2009 21:20)

Неактивен

0    0    #2
27.08.2009 15:44

Cheshire
Участник (+136, -23)
Зарегистрирован: 01.07.2009
Сообщений: 338
Вебсайт

Утлый парсер ©

Re: Спрашивайте, - отвечаем!

Вопрос. Нужно, чтобы какое-то из стандартных действий меняло глобальную переменную, например, осмотр предмета добавлял несколько секунд к глобальному таймеру. Как это реализовать? Можно ли просто дополнить стандартное действие или придется полностью переписывать его в своем файле и там менять?

Пожелание. Неплохо бы ввести сокращенное описание (как в больших языках wink. В первый раз посмотрел, выдает полное описание, в последующие разы выдает сокращенное.

Неактивен

0    0    #3
01.09.2009 20:03

Cheshire
Участник (+136, -23)
Зарегистрирован: 01.07.2009
Сообщений: 338
Вебсайт

Утлый парсер ©

Re: Спрашивайте, - отвечаем!

Возникла одна проблема, связанная с заменой реакции парсера на ввод библиотечных действий. Покажу на примерах.

Код:

%<clear>
include "std.lib\Main.tml"
include "std.lib\UnusVerb.tml"
location начало
{
    cls = место
    title = "Поле боя"
    this + ГГ
    unique флаг
    {
        cls = предмет
        title = "флаг%; МрЕч; Ип; Ип=; Вп=;"
    }
}
action поднял_флаг
{
    pat = "поднять=взметнуть @Что:флаг*Вп"
}
ГГ.поднял_флаг()
{
    %огромный, красный с золотом флаг реет над войском.
}

При таком коде получится следующий лог:

> поднять флаг

ты не можешь взять флаг!

> взметнуть флаг

огромный, красный с золотом флаг реет над войском.

В ветке про "Спелеолога" нашел ответ - авторское действие перекрывает библиотечное, то оно должно быть описано ДО подключения библиотеки. Меняю код:

Код:

%<clear>
action поднял_флаг
{
    pat = "поднять=взметнуть @Что:флаг*Вп"
}
ГГ.поднял_флаг()
{
    %огромный, красный с золотом флаг реет над войском.
}
include "std.lib\Main.tml"
include "std.lib\UnusVerb.tml"
location начало
{
    cls = место
    title = "Поле боя"
    this + ГГ
    unique флаг
    {
        cls = предмет
        title = "флаг%; МрЕч; Ип; Ип=; Вп=;"
    }
}

НО. Результат еще хуже:

> поднять флаг

ты не можешь взять флаг!

> взметнуть флаг

это невозможно сделать!

Т.е. парсер даже не знает глагола взметнуть

Два вывода: либо я что-то не то делаю, либо для объявления новых действий нужно, чтобы парсер сначала прочел файл Main.tml.

Неактивен

Powered by PunBB
© copyright 2001–2022 iFiction.Ru