ОК!
ещё вопрос насчёт этих классов-категорий:
каждый объект игры(от переменных до локаций) принадлежит ровно одному классу, и относится не более чем ровно к одной категории?
Отредактировано noname (06.02.2009 21:20)
Неактивен
Вопрос. Нужно, чтобы какое-то из стандартных действий меняло глобальную переменную, например, осмотр предмета добавлял несколько секунд к глобальному таймеру. Как это реализовать? Можно ли просто дополнить стандартное действие или придется полностью переписывать его в своем файле и там менять?
Пожелание. Неплохо бы ввести сокращенное описание (как в больших языках
. В первый раз посмотрел, выдает полное описание, в последующие разы выдает сокращенное.
Неактивен
Возникла одна проблема, связанная с заменой реакции парсера на ввод библиотечных действий. Покажу на примерах.
%<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.
Неактивен