ОК!
ещё вопрос насчёт этих классов-категорий:
каждый объект игры(от переменных до локаций) принадлежит ровно одному классу, и относится не более чем ровно к одной категории?
Отредактировано 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.
Неактивен