noname написал:
что ещё мне нужно знать, что бы написать для ТОМ свой интерфейс?
Скачать файлик ConTOM_s.rar (есть в Вики на страничке ТОМа). Там разобраться с constom.cpp - это весь интерфейс одним модулем, правда на С.
Все что тебе надо от ТОМа - это 3 функции:
char* RunFile(char*FileName);
char* RunText(char*Text );
char* Command(char*Input);
Отредактировано ASBer (16.12.2008 14:39)
Неактивен
не видны в инвентаре не только взятые очки. стручок гороха не виден ни в инвентаре, ни на полу, ни в описании персонажа. это уже наводит на нехорошие мысли. кстати, команды сорвать тоже в хелпе нет. мож задавать командам какое-то свойство, отвечающее за то, будут они отображаться в списке хелпа, или нет. по умолчанию- будут. а хелп-таки составлять программно? иначе несоответсвие хелпа игровой реальности может стать 'болезнью' ТОМ, когда на нём будет писать много народа.
язык ТОМ явно не для 'чайников', важно подготовить простых примеров и мини-демок на самые всякие случаи.
Nex, если повезёт- свою платформу писать не прийдётся. сейчас пишу квестец для 'операция с Новым Годом' на urql. давно хотел написать что-то законченное. после- планирую мини-дему на ТОМ, и мини-игру на QSP.
Отредактировано noname (16.12.2008 16:17)
Неактивен
Стручок гороха просто бессовестно недоделан!
Чтобы он отображался в инвентаре необходимо прописать свойство .ВКармане = "..."
для комнаты свойство .ЛежитВКомнате = "..."
для двора свойство .ВиденВоДворе = "..."
(очки кстати добавил в инвентарь)
Действие "сорвать" почти что синоним действия "взять" также как "положить" или "бросить".
Я не думаю что в хелпе должны быть описаны ВСЕ действия. Пусть автор игры сам решает что подсказывать игроку, а что нет.
Для "чайников" примеры писать нужно после того как появится стандартная библиотека.
Примеры должны использовать эту библиотеку. Иначе просто нереально.
Неактивен
свежий баг:
раньше запускались и работали, как умели, все примеры. а сейчас пример "Диалоги на меню.tom" не выводит сообщений, кроме сообщений об ошибках. я уж и их архива заново доставал. по-моему это случилось как раз после того, как я вместо старой версии ТОМ скачал свежайшую. а старую удалил.
ASBer, глянь плиззз, как у тебя поведёт себя этот пример на выложенной на вики последней версии ТОМ.
Неактивен
noname написал:
свежий баг:
сейчас пример "Диалоги на меню.tom" не выводит сообщений, кроме сообщений об ошибках. я уж и их архива заново доставал. по-моему это случилось как раз после того, как я вместо старой версии ТОМ скачал свежайшую. а старую удалил.
Да, это моя вина. Персонажам в примере необходимо добавить метод .onChangePers()
location Комната.title="Комната" .description="в комнате Вася и Петя (для разговора с Васей введите 'говорить с Васей')" unique Вася.title="Вася" unique Петя.title="Петя" .onChangePers(OldPers) { // При смене персонажа показываем локацию if(.loc <> OldPers.loc) { %<location> %{.loc}</location> %{.loc.description} } } unique Петя_говорящий_с_Васей.title="Петя" .onChangePers(OldPers) { // При смене персонажа показываем локацию if(.loc <> OldPers.loc) { %<location> %{.loc}</location> %{.loc.description} } } pers=Петя
Этот метод - обработчик нового события, возникающего при смене персонажа.
Теперь вывод локации не производится автоматически. Это теперь нужно программировать.
Я посчитал это более гибким, например, может понадобится изменить способ показа локации при входе в темную комнату.
Неактивен
угу. теперь работает. итак, на ТОМе, если кто не знает, легко реализуется диалог с выбором вариантов ответа. впрочем, для начала хорошо бы просто посмотреть его в действии: пример "Диалоги на меню"(надеюсь архив исправлен?).
как это выглядит:
Комната В комнате Вася и Петя (для разговора с Васей введите 'говорить с Васей') > говорить с Васей Разговор с Васей Слушай, Вася, давно тебя хотел спросить... (для выбора вопроса наберите начальные буквы строки) а где ты храниш свои сокровища? про рыбалку прощай. > п - Вася, а как ты относишься к рыбалке? - да не рыбак я совсем... - жаль, очень жаль. Продолжаем разговор а где ты храниш свои сокровища? про рыбалку прощай. > прощ - пока Вася, было приятно поболтать. - пока Петя. Комната В комнате Вася и Петя (для разговора с Васей введите 'говорить с Васей') >
т е в режиме диалога игроку предлагается выбор из нескольких вариантов ответа, но выбор осуществляется не стрелочками, а воодом с клавиатуры. ввод пользователя проверяется на совпадение с началом одного из вариантов: можно ввести одну букву, а можно и целую фразу. в досовском консольном интерфейсе подобраны приятные цвета, оформление- понравилось.
вкратце моё ИМХО о недостатках и достоинствах диалогов в ТОМ:
НЕДОСТАТКИ:
1) пока не вижу реакции на ключевые слова. допустим, ввод 'сокровища' будет непонят
2) дурацкий текст сообщения об ошибке в режиме диалога: 'Петя не может этого сделать'. собственно, Петя в этом режиме ничего не может сделать. в случае непонятой фразы( а любой ввод в этом режиме воспринимается как фраза, обращённая к собеседнику) хорошо бы выводить соответствующее сообщение.
3) игрок может искренне полагать, что ввод 'пр' бует понят как 'прощай', а это не так. т е система подбирает подходящую фразу сверху вниз до первого соответствия. впрочем, это тот момент, который лучше переложить на плечи авторов квестов: или пусть фразы тщательно подбирают, или игрока предупреждают, или надеются, что игрок поймёт принцип сам.
поднатужившись, смог высосать из пальца только 3-и недостатка.
ДОСТОИНСТВА:
1) выбор варианта производится привычным глазу парсерщика вводом с клавиатуры, что является несомненным достоинством для парсерного квеста.
2) теоретически возможна (ASBer, подтверди) реакция и на другие, не перечисленные фразы. т е редложенные варианты не запрещают(теоретически) игроку ввести другое понятное ответчику слово, и получить соотв ответ
3) эта форма диалогов, естественно, не запрещает реализации обычных парсерных 'спросить Васю об ...', т е если кто из авторов хочет классических парсерных диалогов- наздоровье.
4) при этом рассматриваемая форма реализации диалогов привносит таки дополнительный элемент литературности в квест. ну, точнее- позволяет авторам это сделать.
пожалуй, всё.
Неактивен
noname> 1) пока не вижу реакции на ключевые слова. допустим, ввод 'сокровища' будет непонят
ASBer: В ТОМе реализованы 2а способа реализации диалогов - менюшный и парсерный. В рассмотренном примере используется только менюшный способ, но самым интересным мне видится сочитание обоих методов. Тогда будет и реакция на ключевые слова в том числе.
noname> 2) дурацкий текст сообщения об ошибке в режиме диалога: 'Петя не может этого сделать'. собственно, Петя в этом режиме ничего не может сделать. в случае непонятой фразы( а любой ввод в этом режиме воспринимается как фраза, обращённая к собеседнику) хорошо бы выводить соответствующее сообщение.
ASBer: для объекта Петя_говорящий_с_Васей можно определить специальное свойство сan_not_execute. Например:
Петя_говорящий_с_Васей.сan_not_execute = "Вася тебя не понял."
(есть ряд подобных свойств, задокументирую их в ближайшее время)
noname> 3) игрок может искренне полагать, что ввод 'пр' бует понят как 'прощай', а это не так. т е система подбирает подходящую фразу сверху вниз до первого соответствия. впрочем, это тот момент, который лучше переложить на плечи авторов квестов: или пусть фразы тщательно подбирают, или игрока предупреждают, или надеются, что игрок поймёт принцип сам.
ASBer: Сейчас сортировка ответов по алфавиту. Скорее всего переделаю. Будет по порядку их объявления в коде игры. Т.е. фразы, которые должны быть сверху, нужно будет описывать раньше фраз, распологающихся ниже. Также в планах сделать автонумерацию пунктов меню. Вобщем есть над чем работать.
noname> 2) теоретически возможна (ASBer, подтверди) реакция и на другие, не перечисленные фразы. т е предложенные варианты не запрещают(теоретически) игроку ввести другое понятное ответчику слово, и получить соотв ответ
ASBer: да, такая возможность есть.
noname> 3) эта форма диалогов, естественно, не запрещает реализации обычных парсерных 'спросить Васю об ...', т е если кто из авторов хочет классических парсерных диалогов- наздоровье.
ASBer: парсерные диалоги базируются на специальном операторе:
Персонаж > "произносимая фраза"
где Персонаж - объект, а "произносимая фраза" - строка.
noname> надеюсь архив исправлен?
ASBer: Мне стало понятно что этот пример требует доработки.
Попробую добавить туда парсерные возможности, и выложу все примеры отдельным архивом.
Отредактировано ASBer (22.12.2008 10:30)
Неактивен
Предлагаю вниманию сообщества первую попытку портации стандартной библиотеки рТАДС на платформу ТОМ.
В архиве вы найдете библиотечные файлы (пока только 3) и демоигру - золотой череп.
Портация только начата и большинство глаголов все еще не переработано. Но все действия, необходимые для прохождения игры, работают.
Хотелось бы услышать ваши мнения и пожелания.
P.S. Разрешение у GrAndrey на эксперименты с портацией библиотеки получено.
P.S.S. Разрешения у Michael J. Roberts не запрашивал, но условия лицензии, насколько я понимаю, подобной модификацией не нарушаются.
--------------------------------------------------------------------------------
Прикрепленные файлы:
TOMrTADS.rar, Размер: 236,863 байт, Скачано: 54
Неактивен
Сюда можно вставлять вступление. Моя игра Просто новая игра. Наберите ПОМОЩЬ при необходимости. Написал Я. Версия 0.0 У пещеры Ты стоишь на ярко освещенном месте прямо перед большой, темной и мрачной пещерой, лежащей к северу. > с Пещера Ты находишься внутри темной и затхлой пещеры. Солнечный свет прорывается через проход, расположенный к югу. Ты видишь здесь пьедестал и мелкий камень. > взять камень Взят. > сесть на пьедестал Я не понимаю это предложение. > положить камень на пьедестал Готово. > взять череп Взят. > ю У пещеры _ tot - переменная не определена! >
по-моему концовка должна быть не такой
p.s.
to GrAndrey & to ASBer - респект и уважуха!
С момента публикации альфы прошло много времени. Платформа была полностью переработана.
Все примеры в этой ветке более недействительны, а прикрепленные файлы окончательно устарели!
ASBer
Отредактировано noname (24.12.2008 21:51)
Неактивен